mirror of
https://github.com/ianstormtaylor/slate.git
synced 2025-08-16 12:14:14 +02:00
refactor onBeforeChange
This commit is contained in:
@@ -102,17 +102,21 @@ class Editor extends React.Component {
|
||||
}
|
||||
|
||||
/**
|
||||
* When the `props` are updated, recompute the plugins.
|
||||
* When the `props` are updated, recompute the state and plugins.
|
||||
*
|
||||
* @param {Object} props
|
||||
*/
|
||||
|
||||
componentWillReceiveProps = (props) => {
|
||||
this.state.state = this.onBeforeChange(props.state)
|
||||
|
||||
if (props.plugins != this.props.plugins) {
|
||||
this.setState({ plugins: this.resolvePlugins(props) })
|
||||
this.setState({
|
||||
plugins: this.resolvePlugins(props)
|
||||
})
|
||||
}
|
||||
|
||||
this.setState({
|
||||
state: this.onBeforeChange(props.state)
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -151,6 +155,26 @@ class Editor extends React.Component {
|
||||
return this.state.state
|
||||
}
|
||||
|
||||
/**
|
||||
* When the editor receives a new 'state'
|
||||
*
|
||||
* @param {State} state
|
||||
* @return {State} newState
|
||||
*/
|
||||
|
||||
onBeforeChange = (state) => {
|
||||
if (state == this.state.state) return
|
||||
|
||||
for (const plugin of this.state.plugins) {
|
||||
if (!plugin.onBeforeChange) continue
|
||||
const newState = plugin.onBeforeChange(state, this)
|
||||
if (newState == null) continue
|
||||
state = newState
|
||||
}
|
||||
|
||||
return state
|
||||
}
|
||||
|
||||
/**
|
||||
* When the `state` changes, pass through plugins, then bubble up.
|
||||
*
|
||||
@@ -182,26 +206,6 @@ class Editor extends React.Component {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* When the editor receives a new 'state'
|
||||
*
|
||||
* @param {State} state
|
||||
* @return {State} newState
|
||||
*/
|
||||
|
||||
onBeforeChange = (state) => {
|
||||
if (state == this.state.state) return
|
||||
|
||||
for (const plugin of this.state.plugins) {
|
||||
if (!plugin.onBeforeChange) continue
|
||||
const newState = plugin.onBeforeChange(state, this)
|
||||
if (newState == null) continue
|
||||
state = newState
|
||||
}
|
||||
|
||||
return state
|
||||
}
|
||||
|
||||
/**
|
||||
* When an event by `name` fires, pass it through the plugins, and update the
|
||||
* state if one of them chooses to.
|
||||
|
@@ -21,7 +21,6 @@ const debug = Debug('slate:core')
|
||||
* @property {Element} placeholder
|
||||
* @property {String} placeholderClassName
|
||||
* @property {Object} placeholderStyle
|
||||
* @property {Function} onBeforeChange
|
||||
* @return {Object}
|
||||
*/
|
||||
|
||||
@@ -30,7 +29,6 @@ function Plugin(options = {}) {
|
||||
placeholder,
|
||||
placeholderClassName,
|
||||
placeholderStyle,
|
||||
onBeforeChange
|
||||
} = options
|
||||
|
||||
/**
|
||||
@@ -614,7 +612,6 @@ function Plugin(options = {}) {
|
||||
*/
|
||||
|
||||
return {
|
||||
onBeforeChange,
|
||||
onBeforeInput,
|
||||
onBlur,
|
||||
onCopy,
|
||||
|
Reference in New Issue
Block a user