mirror of
https://github.com/ianstormtaylor/slate.git
synced 2025-07-31 04:20:26 +02:00
Customize get dirty paths (#5069)
* Move getDirtyPaths to the Editor object to allow for customization * Add changeset for getDirtyPaths customization Co-authored-by: Tom Krenzke <tom@daybreakhealth.com>
This commit is contained in:
5
.changeset/spotty-mirrors-matter.md
Normal file
5
.changeset/spotty-mirrors-matter.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'slate': patch
|
||||
---
|
||||
|
||||
Expose getDirtyPaths method on Editor object to allow for customization
|
@@ -71,7 +71,7 @@ export const createEditor = (): Editor => {
|
||||
dirtyPathKeys = oldDirtyPathKeys
|
||||
}
|
||||
|
||||
const newDirtyPaths = getDirtyPaths(op)
|
||||
const newDirtyPaths = editor.getDirtyPaths(op)
|
||||
for (const path of newDirtyPaths) {
|
||||
add(path)
|
||||
}
|
||||
@@ -296,16 +296,12 @@ export const createEditor = (): Editor => {
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
return editor
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* Get the "dirty" paths generated from an operation.
|
||||
*/
|
||||
|
||||
const getDirtyPaths = (op: Operation): Path[] => {
|
||||
getDirtyPaths: (op: Operation): Path[] => {
|
||||
switch (op.type) {
|
||||
case 'insert_text':
|
||||
case 'remove_text':
|
||||
@@ -375,4 +371,8 @@ const getDirtyPaths = (op: Operation): Path[] => {
|
||||
return []
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
return editor
|
||||
}
|
||||
|
@@ -77,6 +77,7 @@ export interface BaseEditor {
|
||||
insertNode: (node: Node) => void
|
||||
insertText: (text: string) => void
|
||||
removeMark: (key: string) => void
|
||||
getDirtyPaths: (op: Operation) => Path[]
|
||||
}
|
||||
|
||||
export type Editor = ExtendedType<'Editor', BaseEditor>
|
||||
@@ -626,6 +627,7 @@ export const Editor: EditorInterface = {
|
||||
typeof value.normalizeNode === 'function' &&
|
||||
typeof value.onChange === 'function' &&
|
||||
typeof value.removeMark === 'function' &&
|
||||
typeof value.getDirtyPaths === 'function' &&
|
||||
(value.marks === null || isPlainObject(value.marks)) &&
|
||||
(value.selection === null || Range.isRange(value.selection)) &&
|
||||
Node.isNodeList(value.children) &&
|
||||
|
@@ -20,6 +20,7 @@ export const input = {
|
||||
normalizeNode() {},
|
||||
onChange() {},
|
||||
removeMark() {},
|
||||
getDirtyPaths() {},
|
||||
}
|
||||
export const test = value => {
|
||||
return Element.isElement(value)
|
||||
|
@@ -21,6 +21,7 @@ export const input = [
|
||||
normalizeNode() {},
|
||||
onChange() {},
|
||||
removeMark() {},
|
||||
getDirtyPaths() {},
|
||||
},
|
||||
]
|
||||
export const test = value => {
|
||||
|
Reference in New Issue
Block a user