1
0
mirror of https://github.com/ianstormtaylor/slate.git synced 2025-08-15 11:44:05 +02:00

Add insertFragmentData and insertTextData to the ReactEditor API (#4614)

* Add insertFragmentData and insertTextData to the ReactEditor API

* Add patch changeset

* Docs for insertFragment and insertTextData
This commit is contained in:
Eric Charles
2021-10-22 15:44:56 +02:00
committed by GitHub
parent b186d3ea12
commit 72160fac08
4 changed files with 23 additions and 1 deletions

View File

@@ -0,0 +1,5 @@
---
'slate-react': patch
---
Add insertFragmentData and insertTextData to the ReactEditor API

View File

@@ -138,7 +138,15 @@ Check if a DOM node is within the editor.
### `insertData(editor: ReactEditor, data: DataTransfer)` ### `insertData(editor: ReactEditor, data: DataTransfer)`
Insert data from a `DataTransfer` into the editor. Insert data from a `DataTransfer` into the editor. This is a proxy method to call in this order `insertFragmentData(editor: ReactEditor, data: DataTransfer)` and then `insertTextData(editor: ReactEditor, data: DataTransfer)`.
### `insertFragmentData(editor: ReactEditor, data: DataTransfer)`
Insert fragment data from a `DataTransfer` into the editor.
### `insertTextData(editor: ReactEditor, data: DataTransfer)`
Insert text data from a `DataTransfer` into the editor.
### `setFragmentData(editor: ReactEditor, data: DataTransfer)` ### `setFragmentData(editor: ReactEditor, data: DataTransfer)`

View File

@@ -32,6 +32,8 @@ import { IS_CHROME, IS_FIREFOX } from '../utils/environment'
export interface ReactEditor extends BaseEditor { export interface ReactEditor extends BaseEditor {
insertData: (data: DataTransfer) => void insertData: (data: DataTransfer) => void
insertFragmentData: (data: DataTransfer) => void
insertTextData: (data: DataTransfer) => void
setFragmentData: (data: DataTransfer) => void setFragmentData: (data: DataTransfer) => void
hasRange: (editor: ReactEditor, range: Range) => boolean hasRange: (editor: ReactEditor, range: Range) => boolean
} }

View File

@@ -195,6 +195,11 @@ export const withReact = <T extends Editor>(editor: T) => {
} }
e.insertData = (data: DataTransfer) => { e.insertData = (data: DataTransfer) => {
e.insertFragmentData(data)
e.insertTextData(data)
}
e.insertFragmentData = (data: DataTransfer) => {
/** /**
* Checking copied fragment from application/x-slate-fragment or data-slate-fragment * Checking copied fragment from application/x-slate-fragment or data-slate-fragment
*/ */
@@ -208,7 +213,9 @@ export const withReact = <T extends Editor>(editor: T) => {
e.insertFragment(parsed) e.insertFragment(parsed)
return return
} }
}
e.insertTextData = (data: DataTransfer) => {
const text = data.getData('text/plain') const text = data.getData('text/plain')
if (text) { if (text) {