Merge pull request #30524 from sgreav/master

[Slate, Slate-React] Add commands to Slate React
This commit is contained in:
Benjamin Lichtman
2018-11-20 06:49:03 -08:00
committed by GitHub
3 changed files with 1037 additions and 278 deletions
+256 -22
View File
@@ -12,7 +12,7 @@
// TypeScript Version: 2.8
import {
Document,
Editor as Controller,
Editor as CoreEditor,
Mark,
Node,
Block,
@@ -22,6 +22,14 @@ import {
Stack,
Value,
Operation,
MarkProperties,
BlockProperties,
InlineProperties,
Path,
RangeProperties,
NodeProperties,
Range,
Controller
} from "slate";
import * as Immutable from "immutable";
import * as React from "react";
@@ -34,7 +42,7 @@ export interface RenderAttributes {
export interface RenderMarkProps {
attributes: RenderAttributes;
children: React.ReactNode;
editor: Controller;
editor: CoreEditor;
mark: Mark;
marks: Immutable.Set<Mark>;
node: Node;
@@ -45,7 +53,7 @@ export interface RenderMarkProps {
export interface RenderNodeProps {
attributes: RenderAttributes;
children: React.ReactNode;
editor: Controller;
editor: CoreEditor;
isFocused: boolean;
isSelected: boolean;
key: string;
@@ -55,23 +63,23 @@ export interface RenderNodeProps {
}
export interface RenderPlaceholderProps {
editor: Controller;
editor: CoreEditor;
readOnly: boolean;
}
export type EventHook = (
event: Event,
editor: Controller,
editor: CoreEditor,
next: () => any
) => any;
export interface Plugin {
decorateNode?: (node: Node, editor: Controller, next: () => any) => any;
renderEditor?: (props: EditorProps, editor: Controller, next: () => any) => any;
renderMark?: (props: RenderMarkProps, editor: Controller, next: () => any) => any;
renderNode?: (props: RenderNodeProps, editor: Controller, next: () => any) => any;
renderPlaceholder?: (props: RenderPlaceholderProps, editor: Controller, next: () => any) => any;
shouldNodeComponentUpdate?: (previousProps: RenderNodeProps, props: RenderNodeProps, editor: Controller, next: () => any) => any;
decorateNode?: (node: Node, editor: CoreEditor, next: () => any) => any;
renderEditor?: (props: EditorProps, editor: CoreEditor, next: () => any) => any;
renderMark?: (props: RenderMarkProps, editor: CoreEditor, next: () => any) => any;
renderNode?: (props: RenderNodeProps, editor: CoreEditor, next: () => any) => any;
renderPlaceholder?: (props: RenderPlaceholderProps, editor: CoreEditor, next: () => any) => any;
shouldNodeComponentUpdate?: (previousProps: RenderNodeProps, props: RenderNodeProps, editor: CoreEditor, next: () => any) => any;
onBeforeInput?: EventHook;
onBlur?: EventHook;
@@ -118,8 +126,8 @@ export interface EditorState {
stack: Stack;
}
export class Editor extends React.Component<EditorProps, EditorState> {
controller: Controller;
export class Editor extends React.Component<EditorProps, EditorState> implements Controller {
controller: CoreEditor;
schema: Schema;
stack: Stack;
@@ -128,16 +136,242 @@ export class Editor extends React.Component<EditorProps, EditorState> {
readonly readOnly: boolean;
readonly value: Value;
// Instance Methods
applyOperation(...args: any[]): Controller;
blur(): void;
command(...args: any[]): Controller;
focus(): void;
normalize(...args: any[]): Controller;
query(...args: any[]): Controller;
// Instance methods
resolveController(plugins: Plugin[], schema: Schema, commands: any[], queries: any[]): void;
run(...args: any[]): any;
withoutNormalizing(...args: any[]): Controller;
// Controller
addMark: CoreEditor['addMark'];
delete: CoreEditor['delete'];
deleteBackward: CoreEditor['deleteBackward'];
deleteForward: CoreEditor['deleteForward'];
insertBlock: CoreEditor['insertBlock'];
insertFragment: CoreEditor['insertFragment'];
insertInline: CoreEditor['insertInline'];
insertText: CoreEditor['insertText'];
setBlocks: CoreEditor['setBlocks'];
setInlines: CoreEditor['setInlines'];
splitBlock: CoreEditor['splitBlock'];
splitInline: CoreEditor['splitInline'];
removeMark: CoreEditor['removeMark'];
replaceMark: CoreEditor['replaceMark'];
toggleMark: CoreEditor['toggleMark'];
unwrapBlock: CoreEditor['unwrapBlock'];
unwrapInline: CoreEditor['unwrapInline'];
wrapBlock: CoreEditor['wrapBlock'];
wrapInline: CoreEditor['wrapInline'];
wrapText: CoreEditor['wrapText'];
blur: CoreEditor['blur'];
deselect: CoreEditor['deselect'];
flip: CoreEditor['flip'];
focus: CoreEditor['focus'];
moveAnchorBackward: CoreEditor['moveAnchorBackward'];
moveAnchorForward: CoreEditor['moveAnchorForward'];
moveAnchorTo: CoreEditor['moveAnchorTo'];
moveAnchorToEndOfBlock: CoreEditor['moveAnchorToEndOfBlock'];
moveAnchorToEndOfInline: CoreEditor['moveAnchorToEndOfInline'];
moveAnchorToEndOfDocument: CoreEditor['moveAnchorToEndOfDocument'];
moveAnchorToEndOfNextBlock: CoreEditor['moveAnchorToEndOfNextBlock'];
moveAnchorToEndOfNextInline: CoreEditor['moveAnchorToEndOfNextInline'];
moveAnchorToEndOfNextText: CoreEditor['moveAnchorToEndOfNextText'];
moveAnchorEndOfNode: CoreEditor['moveAnchorEndOfNode'];
moveAnchorToEndOfPreviousBlock: CoreEditor['moveAnchorToEndOfPreviousBlock'];
moveAnchorToEndOfPreviousInline: CoreEditor['moveAnchorToEndOfPreviousInline'];
moveAnchorToEndOfPreviousText: CoreEditor['moveAnchorToEndOfPreviousText'];
moveAnchorToEndOfText: CoreEditor['moveAnchorToEndOfText'];
moveAnchorToStartOfBlock: CoreEditor['moveAnchorToStartOfBlock'];
moveAnchorToStartOfDocument: CoreEditor['moveAnchorToStartOfDocument'];
moveAnchorToStartOfInline: CoreEditor['moveAnchorToStartOfInline'];
moveAnchorToStartOfNextBlock: CoreEditor['moveAnchorToStartOfNextBlock'];
moveAnchorToStartOfNextInline: CoreEditor['moveAnchorToStartOfNextInline'];
moveAnchorToStartOfNextText: CoreEditor['moveAnchorToStartOfNextText'];
moveAnchorToStartOfNode: CoreEditor['moveAnchorToStartOfNode'];
moveAnchorToStartOfPreviousBlock: CoreEditor['moveAnchorToStartOfPreviousBlock'];
moveAnchorToStartOfPreviousInline: CoreEditor['moveAnchorToStartOfPreviousInline'];
moveAnchorToStartOfPreviousText: CoreEditor['moveAnchorToStartOfPreviousText'];
moveAnchorToStartOfText: CoreEditor['moveAnchorToStartOfText'];
moveEndBackward: CoreEditor['moveEndBackward'];
moveEndForward: CoreEditor['moveEndForward'];
moveEndTo: CoreEditor['moveEndTo'];
moveEndToEndOfBlock: CoreEditor['moveEndToEndOfBlock'];
moveEndToEndOfDocument: CoreEditor['moveEndToEndOfDocument'];
moveEndToEndOfInline: CoreEditor['moveEndToEndOfInline'];
moveEndToEndOfNextBlock: CoreEditor['moveEndToEndOfNextBlock'];
moveEndToEndOfNextInline: CoreEditor['moveEndToEndOfNextInline'];
moveEndToEndOfNextText: CoreEditor['moveEndToEndOfNextText'];
moveEndToEndOfNode: CoreEditor['moveEndToEndOfNode'];
moveEndToEndOfPreviousBlock: CoreEditor['moveEndToEndOfPreviousBlock'];
moveEndToEndOfPreviousInline: CoreEditor['moveEndToEndOfPreviousInline'];
moveEndToEndOfPreviousText: CoreEditor['moveEndToEndOfPreviousText'];
moveEndToEndOfText: CoreEditor['moveEndToEndOfText'];
moveEndToStartOfBlock: CoreEditor['moveEndToStartOfBlock'];
moveEndToStartOfDocument: CoreEditor['moveEndToStartOfDocument'];
moveEndToStartOfInline: CoreEditor['moveEndToStartOfInline'];
moveEndToStartOfNextBlock: CoreEditor['moveEndToStartOfNextBlock'];
moveEndToStartOfNextInline: CoreEditor['moveEndToStartOfNextInline'];
moveEndToStartOfNextText: CoreEditor['moveEndToStartOfNextText'];
moveEndToStartOfNode: CoreEditor['moveEndToStartOfNode'];
moveEndToStartOfPreviousBlock: CoreEditor['moveEndToStartOfPreviousBlock'];
moveEndToStartOfPreviousInline: CoreEditor['moveEndToStartOfPreviousInline'];
moveEndToStartOfPreviousText: CoreEditor['moveEndToStartOfPreviousText'];
moveEndToStartOfText: CoreEditor['moveEndToStartOfText'];
moveFocusBackward: CoreEditor['moveFocusBackward'];
moveFocusForward: CoreEditor['moveFocusForward'];
moveFocusTo: CoreEditor['moveFocusTo'];
moveFocusToEndOfBlock: CoreEditor['moveFocusToEndOfBlock'];
moveFocusToEndOfDocument: CoreEditor['moveFocusToEndOfDocument'];
moveFocusToEndOfInline: CoreEditor['moveFocusToEndOfInline'];
moveFocusToEndOfNextBlock: CoreEditor['moveFocusToEndOfNextBlock'];
moveFocusToEndOfNextInline: CoreEditor['moveFocusToEndOfNextInline'];
moveFocusToEndOfNextText: CoreEditor['moveFocusToEndOfNextText'];
moveFocusToEndOfNode: CoreEditor['moveFocusToEndOfNode'];
moveFocusToEndOfPreviousBlock: CoreEditor['moveFocusToEndOfPreviousBlock'];
moveFocusToEndOfPreviousInline: CoreEditor['moveFocusToEndOfPreviousInline'];
moveFocusToEndOfPreviousText: CoreEditor['moveFocusToEndOfPreviousText'];
moveFocusToEndOfText: CoreEditor['moveFocusToEndOfText'];
moveFocusToStartOfBlock: CoreEditor['moveFocusToStartOfBlock'];
moveFocusToStartOfDocument: CoreEditor['moveFocusToStartOfDocument'];
moveFocusToStartOfInline: CoreEditor['moveFocusToStartOfInline'];
moveFocusToStartOfNextBlock: CoreEditor['moveFocusToStartOfNextBlock'];
moveFocusToStartOfNextInline: CoreEditor['moveFocusToStartOfNextInline'];
moveFocusToStartOfNextText: CoreEditor['moveFocusToStartOfNextText'];
moveFocusToStartOfNode: CoreEditor['moveFocusToStartOfNode'];
moveFocusToStartOfPreviousBlock: CoreEditor['moveFocusToStartOfPreviousBlock'];
moveFocusToStartOfPreviousInline: CoreEditor['moveFocusToStartOfPreviousInline'];
moveFocusToStartOfPreviousText: CoreEditor['moveFocusToStartOfPreviousText'];
moveFocusToStartOfText: CoreEditor['moveFocusToStartOfText'];
moveStartForward: CoreEditor['moveStartForward'];
moveStartBackward: CoreEditor['moveStartBackward'];
moveStartTo: CoreEditor['moveStartTo'];
moveStartToEndOfBlock: CoreEditor['moveStartToEndOfBlock'];
moveStartToEndOfDocument: CoreEditor['moveStartToEndOfDocument'];
moveStartToEndOfInline: CoreEditor['moveStartToEndOfInline'];
moveStartToEndOfNextBlock: CoreEditor['moveStartToEndOfNextBlock'];
moveStartToEndOfNextInline: CoreEditor['moveStartToEndOfNextInline'];
moveStartToEndOfNextText: CoreEditor['moveStartToEndOfNextText'];
moveStartToEndOfNode: CoreEditor['moveStartToEndOfNode'];
moveStartToEndOfPreviousBlock: CoreEditor['moveStartToEndOfPreviousBlock'];
moveStartToEndOfPreviousInline: CoreEditor['moveStartToEndOfPreviousInline'];
moveStartToEndOfPreviousText: CoreEditor['moveStartToEndOfPreviousText'];
moveStartToEndOfText: CoreEditor['moveStartToEndOfText'];
moveStartToStartOfBlock: CoreEditor['moveStartToStartOfBlock'];
moveStartToStartOfDocument: CoreEditor['moveStartToStartOfDocument'];
moveStartToStartOfInline: CoreEditor['moveStartToStartOfInline'];
moveStartToStartOfNextBlock: CoreEditor['moveStartToStartOfNextBlock'];
moveStartToStartOfNextInline: CoreEditor['moveStartToStartOfNextInline'];
moveStartToStartOfNextText: CoreEditor['moveStartToStartOfNextText'];
moveStartToStartOfNode: CoreEditor['moveStartToStartOfNode'];
moveStartToStartOfPreviousBlock: CoreEditor['moveStartToStartOfPreviousBlock'];
moveStartToStartOfPreviousInline: CoreEditor['moveStartToStartOfPreviousInline'];
moveStartToStartOfPreviousText: CoreEditor['moveStartToStartOfPreviousText'];
moveStartToStartOfText: CoreEditor['moveStartToStartOfText'];
moveBackward: CoreEditor['moveBackward'];
moveForward: CoreEditor['moveForward'];
moveTo: CoreEditor['moveTo'];
moveToAnchor: CoreEditor['moveToAnchor'];
moveToFocus: CoreEditor['moveToFocus'];
moveToStart: CoreEditor['moveToStart'];
moveToEnd: CoreEditor['moveToEnd'];
moveToEndOfBlock: CoreEditor['moveToEndOfBlock'];
moveToEndOfDocument: CoreEditor['moveToEndOfDocument'];
moveToEndOfInline: CoreEditor['moveToEndOfInline'];
moveToEndOfNextBlock: CoreEditor['moveToEndOfNextBlock'];
moveToEndOfNextInline: CoreEditor['moveToEndOfNextInline'];
moveToEndOfNextText: CoreEditor['moveToEndOfNextText'];
moveToEndOfNode: CoreEditor['moveToEndOfNode'];
moveToEndOfPreviousBlock: CoreEditor['moveToEndOfPreviousBlock'];
moveToEndOfPreviousInline: CoreEditor['moveToEndOfPreviousInline'];
moveToEndOfPreviousText: CoreEditor['moveToEndOfPreviousText'];
moveToEndOfText: CoreEditor['moveToEndOfText'];
moveToStartOfBlock: CoreEditor['moveToStartOfBlock'];
moveToStartOfDocument: CoreEditor['moveToStartOfDocument'];
moveToStartOfInline: CoreEditor['moveToStartOfInline'];
moveToStartOfNextBlock: CoreEditor['moveToStartOfNextBlock'];
moveToStartOfNextInline: CoreEditor['moveToStartOfNextInline'];
moveToStartOfNextText: CoreEditor['moveToStartOfNextText'];
moveToStartOfNode: CoreEditor['moveToStartOfNode'];
moveToStartOfPreviousBlock: CoreEditor['moveToStartOfPreviousBlock'];
moveToStartOfPreviousInline: CoreEditor['moveToStartOfPreviousInline'];
moveToStartOfPreviousText: CoreEditor['moveToStartOfPreviousText'];
moveToStartOfText: CoreEditor['moveToStartOfText'];
moveToRangeOfDocument: CoreEditor['moveToRangeOfDocument'];
moveToRangeOf: CoreEditor['moveToRangeOf'];
select: CoreEditor['select'];
addMarkAtRange: CoreEditor['addMarkAtRange'];
deleteAtRange: CoreEditor['deleteAtRange'];
deleteCharBackwardAtRange: CoreEditor['deleteCharBackwardAtRange'];
deleteLineBackwardAtRange: CoreEditor['deleteLineBackwardAtRange'];
deleteWordBackwardAtRange: CoreEditor['deleteWordBackwardAtRange'];
deleteBackwardAtRange: CoreEditor['deleteBackwardAtRange'];
deleteCharForwardAtRange: CoreEditor['deleteCharForwardAtRange'];
deleteLineForwardAtRange: CoreEditor['deleteLineForwardAtRange'];
deleteWordForwardAtRange: CoreEditor['deleteWordForwardAtRange'];
deleteForwardAtRange: CoreEditor['deleteForwardAtRange'];
insertBlockAtRange: CoreEditor['insertBlockAtRange'];
insertFragmentAtRange: CoreEditor['insertFragmentAtRange'];
insertInlineAtRange: CoreEditor['insertInlineAtRange'];
insertTextAtRange: CoreEditor['insertTextAtRange'];
setBlocksAtRange: CoreEditor['setBlocksAtRange'];
setInlinesAtRange: CoreEditor['setInlinesAtRange'];
splitBlockAtRange: CoreEditor['splitBlockAtRange'];
splitInlineAtRange: CoreEditor['splitInlineAtRange'];
removeMarkAtRange: CoreEditor['removeMarkAtRange'];
toggleMarkAtRange: CoreEditor['toggleMarkAtRange'];
unwrapBlockAtRange: CoreEditor['unwrapBlockAtRange'];
unwrapInlineAtRange: CoreEditor['unwrapInlineAtRange'];
wrapBlockAtRange: CoreEditor['wrapBlockAtRange'];
wrapInlineAtRange: CoreEditor['wrapInlineAtRange'];
wrapTextAtRange: CoreEditor['wrapTextAtRange'];
addMarkByKey: CoreEditor['addMarkByKey'];
addMarkByPath: CoreEditor['addMarkByPath'];
insertNodeByKey: CoreEditor['insertNodeByKey'];
insertNodeByPath: CoreEditor['insertNodeByPath'];
insertFragmentByKey: CoreEditor['insertFragmentByKey'];
insertFragmentByPath: CoreEditor['insertFragmentByPath'];
insertTextByKey: CoreEditor['insertTextByKey'];
insertTextByPath: CoreEditor['insertTextByPath'];
mergeNodeByKey: CoreEditor['mergeNodeByKey'];
mergeNodeByPath: CoreEditor['mergeNodeByPath'];
moveNodeByKey: CoreEditor['moveNodeByKey'];
moveNodeByPath: CoreEditor['moveNodeByPath'];
removeMarkByKey: CoreEditor['removeMarkByKey'];
removeMarkByPath: CoreEditor['removeMarkByPath'];
removeNodeByKey: CoreEditor['removeNodeByKey'];
removeNodeByPath: CoreEditor['removeNodeByPath'];
replaceNodeByKey: CoreEditor['replaceNodeByKey'];
replaceNodeByPath: CoreEditor['replaceNodeByPath'];
removeTextByKey: CoreEditor['removeTextByKey'];
removeTextByPath: CoreEditor['removeTextByPath'];
setMarkByKey: CoreEditor['setMarkByKey'];
setMarksByPath: CoreEditor['setMarksByPath'];
setNodeByKey: CoreEditor['setNodeByKey'];
setNodeByPath: CoreEditor['setNodeByPath'];
splitNodeByKey: CoreEditor['splitNodeByKey'];
splitNodeByPath: CoreEditor['splitNodeByPath'];
unwrapInlineByKey: CoreEditor['unwrapInlineByKey'];
unwrapInlineByPath: CoreEditor['unwrapInlineByPath'];
unwrapBlockByKey: CoreEditor['unwrapBlockByKey'];
unwrapBlockByPath: CoreEditor['unwrapBlockByPath'];
unwrapNodeByKey: CoreEditor['unwrapNodeByKey'];
unwrapNodeByPath: CoreEditor['unwrapNodeByPath'];
wrapInlineByKey: CoreEditor['wrapInlineByKey'];
wrapInlineByPath: CoreEditor['wrapInlineByPath'];
wrapBlockByKey: CoreEditor['wrapBlockByKey'];
wrapBlockByPath: CoreEditor['wrapBlockByPath'];
wrapNodeByKey: CoreEditor['wrapNodeByKey'];
wrapNodeByPath: CoreEditor['wrapNodeByPath'];
normalize: CoreEditor['normalize'];
withoutNormalizing: CoreEditor['withoutNormalizing'];
withoutSaving: CoreEditor['withoutSaving'];
withoutMerging: CoreEditor['withoutMerging'];
redo: CoreEditor['redo'];
undo: CoreEditor['undo'];
snapshotSelection: CoreEditor['snapshotSelection'];
command: CoreEditor['command'];
query: CoreEditor['query'];
registerCommand: CoreEditor['registerCommand'];
registerQuery: CoreEditor['registerQuery'];
applyOperation: CoreEditor['applyOperation'];
run: CoreEditor['run'];
}
export type SlateType =
+251 -2
View File
@@ -1,5 +1,5 @@
import { Editor, Plugin, EditorProps, RenderNodeProps } from "slate-react";
import { Value, Editor as Controller, Operation } from "slate";
import { Value, Editor as Controller, Operation, Point, Range, Inline, Mark, Document } from "slate";
import * as React from "react";
import * as Immutable from "immutable";
@@ -28,11 +28,13 @@ interface MyEditorState {
value: Value;
}
const value = Value.create();
class MyEditor extends React.Component<EditorProps, MyEditorState> {
constructor(props: EditorProps) {
super(props);
this.state = {
value: Value.create()
value
};
}
render() {
@@ -42,3 +44,250 @@ class MyEditor extends React.Component<EditorProps, MyEditorState> {
onChange={ myPlugin.onChange }/>;
}
}
const editor = new Editor({ value });
const point = Point.create({ key: "a", offset: 0 });
const range = Range.create({ anchor: point, focus: point });
const inline = Inline.create("text");
const mark = Mark.create("bold");
const doc = Document.fromJSON({
object: "document",
data: {},
nodes: []
});
editor
.addMark("bold")
.addMarkAtRange(range, "italic")
.addMarkByKey("a", 0, 1, "bold")
.addMarkByPath("a", 0, 1, "bold")
.blur()
.delete()
.deleteAtRange(range)
.deleteBackward(0)
.deleteBackwardAtRange(range, 0)
.deleteCharBackwardAtRange(range)
.deleteCharForwardAtRange(range)
.deleteForward(0)
.deleteForwardAtRange(range, 0)
.deleteLineBackwardAtRange(range)
.deleteLineForwardAtRange(range)
.deleteWordBackwardAtRange(range)
.deleteWordForwardAtRange(range)
.deselect()
.flip()
.focus()
.insertBlock({
type: "image",
key: "b",
data: {
src: "http://placekitten.com/200/300",
alt: "Kittens",
className: "img-responsive"
}
})
.insertBlockAtRange(range, "text")
.insertFragment(doc)
.insertFragmentAtRange(range, doc)
.insertFragmentByKey("a", 0, doc)
.insertFragmentByPath("a", 0, doc)
.insertInline(inline)
.insertInlineAtRange(range, inline)
.insertNodeByKey("a", 0, inline)
.insertNodeByPath("a", 0, inline)
.insertText("A bit of rich text, followed by...")
.insertTextAtRange(range, "More text")
.insertTextByKey("a", 0, "text")
.insertTextByPath("a", 0, "text")
.mergeNodeByKey("b")
.mergeNodeByPath("b")
.moveAnchorBackward()
.moveAnchorEndOfNode(inline)
.moveAnchorForward()
.moveAnchorTo("a", 0)
.moveAnchorToEndOfBlock()
.moveAnchorToEndOfDocument()
.moveAnchorToEndOfInline()
.moveAnchorToEndOfNextBlock()
.moveAnchorToEndOfNextInline()
.moveAnchorToEndOfNextText()
.moveAnchorToEndOfPreviousBlock()
.moveAnchorToEndOfPreviousInline()
.moveAnchorToEndOfPreviousText()
.moveAnchorToEndOfText()
.moveAnchorToStartOfBlock()
.moveAnchorToStartOfDocument()
.moveAnchorToStartOfInline()
.moveAnchorToStartOfNextBlock()
.moveAnchorToStartOfNextInline()
.moveAnchorToStartOfNextText()
.moveAnchorToStartOfNode(inline)
.moveAnchorToStartOfPreviousBlock()
.moveAnchorToStartOfPreviousInline()
.moveAnchorToStartOfPreviousText()
.moveAnchorToStartOfText()
.moveBackward()
.moveEndBackward()
.moveEndForward()
.moveEndTo("a", 0)
.moveEndToEndOfBlock()
.moveEndToEndOfDocument()
.moveEndToEndOfInline()
.moveEndToEndOfNextBlock()
.moveEndToEndOfNextInline()
.moveEndToEndOfNextText()
.moveEndToEndOfNode(inline)
.moveEndToEndOfPreviousBlock()
.moveEndToEndOfPreviousInline()
.moveEndToEndOfPreviousText()
.moveEndToEndOfText()
.moveEndToStartOfBlock()
.moveEndToStartOfDocument()
.moveEndToStartOfInline()
.moveEndToStartOfNextBlock()
.moveEndToStartOfNextInline()
.moveEndToStartOfNextText()
.moveEndToStartOfNode(inline)
.moveEndToStartOfPreviousBlock()
.moveEndToStartOfPreviousInline()
.moveEndToStartOfPreviousText()
.moveEndToStartOfText()
.moveFocusBackward()
.moveFocusForward()
.moveFocusTo("a", 0)
.moveFocusToEndOfBlock()
.moveFocusToEndOfDocument()
.moveFocusToEndOfInline()
.moveFocusToEndOfNextBlock()
.moveFocusToEndOfNextInline()
.moveFocusToEndOfNextText()
.moveFocusToEndOfNode(inline)
.moveFocusToEndOfPreviousBlock()
.moveFocusToEndOfPreviousInline()
.moveFocusToEndOfPreviousText()
.moveFocusToEndOfText()
.moveFocusToStartOfBlock()
.moveFocusToStartOfDocument()
.moveFocusToStartOfInline()
.moveFocusToStartOfNextBlock()
.moveFocusToStartOfNextInline()
.moveFocusToStartOfNextText()
.moveFocusToStartOfNode(inline)
.moveFocusToStartOfPreviousBlock()
.moveFocusToStartOfPreviousInline()
.moveFocusToStartOfPreviousText()
.moveFocusToStartOfText()
.moveForward()
.moveNodeByKey("b", "c", 2)
.moveNodeByPath("c", "b", 1)
.moveStartBackward()
.moveStartForward()
.moveStartTo("a", 0)
.moveStartToEndOfBlock()
.moveStartToEndOfDocument()
.moveStartToEndOfInline()
.moveStartToEndOfNextBlock()
.moveStartToEndOfNextInline()
.moveStartToEndOfNextText()
.moveStartToEndOfNode(inline)
.moveStartToEndOfPreviousBlock()
.moveStartToEndOfPreviousInline()
.moveStartToEndOfPreviousText()
.moveStartToEndOfText()
.moveStartToStartOfBlock()
.moveStartToStartOfDocument()
.moveStartToStartOfInline()
.moveStartToStartOfNextBlock()
.moveStartToStartOfNextInline()
.moveStartToStartOfNextText()
.moveStartToStartOfNode(inline)
.moveStartToStartOfPreviousBlock()
.moveStartToStartOfPreviousInline()
.moveStartToStartOfPreviousText()
.moveStartToStartOfText()
.moveTo("a", 0)
.moveToAnchor()
.moveToEnd()
.moveToEndOfBlock()
.moveToEndOfDocument()
.moveToEndOfInline()
.moveToEndOfNextBlock()
.moveToEndOfNextInline()
.moveToEndOfNextText()
.moveToEndOfNode(inline)
.moveToEndOfPreviousBlock()
.moveToEndOfPreviousInline()
.moveToEndOfPreviousText()
.moveToEndOfText()
.moveToFocus()
.moveToRangeOf(inline)
.moveToRangeOfDocument()
.moveToStart()
.moveToStartOfBlock()
.moveToStartOfDocument()
.moveToStartOfInline()
.moveToStartOfNextBlock()
.moveToStartOfNextInline()
.moveToStartOfNextText()
.moveToStartOfNode(inline)
.moveToStartOfPreviousBlock()
.moveToStartOfPreviousInline()
.moveToStartOfPreviousText()
.moveToStartOfText()
.normalize()
.redo()
.removeMark("bold")
.removeMarkAtRange(range, "bold")
.removeMarkByKey("a", 0, 1, "bold")
.removeMarkByPath("a", 0, 1, "bold")
.removeNodeByKey("b")
.removeNodeByPath("b")
.removeTextByKey("a", 0, 1)
.removeTextByPath("a", 0, 1)
.replaceMark("bold", "italic")
.replaceNodeByKey("a", inline)
.replaceNodeByPath("a", inline)
.select(range)
.setBlocks("paragraph")
.setBlocksAtRange(range, "paragraph")
.setInlines("paragraph")
.setInlinesAtRange(range, "paragraph")
.setMarkByKey("a", 0, 1, mark, { type: "bold" })
.setMarksByPath("a", 0, 1, mark, { type: "bold" })
.setNodeByKey("a", "paragraph")
.setNodeByPath("a", "paragraph")
.snapshotSelection()
.splitBlock(0)
.splitBlockAtRange(range, 0)
.splitInline(0)
.splitInlineAtRange(range, 0)
.splitNodeByKey("a", 0)
.splitNodeByPath("a", 0)
.toggleMark("bold")
.toggleMarkAtRange(range, "bold")
.undo()
.unwrapBlock("paragraph")
.unwrapBlockAtRange(range, "paragraph")
.unwrapBlockByKey("a", "paragraph")
.unwrapBlockByPath("a", "paragraph")
.unwrapInline("paragraph")
.unwrapInlineAtRange(range, "paragraph")
.unwrapInlineByKey("a", "paragraph")
.unwrapInlineByPath("a", "paragraph")
.unwrapNodeByKey("a")
.unwrapNodeByPath("a")
.withoutMerging(() => { /* noop */ })
.withoutNormalizing(() => { /* noop */ })
.withoutSaving(() => { /* noop */ })
.wrapBlock("paragraph")
.wrapBlockAtRange(range, "paragraph")
.wrapBlockByKey("a", "paragraph")
.wrapBlockByPath("a", "paragraph")
.wrapInline("paragraph")
.wrapInlineAtRange(range, "paragraph")
.wrapInlineByKey("a", "paragraph")
.wrapInlineByPath("a", "paragraph")
.wrapNodeByKey("a", inline)
.wrapNodeByPath("a", inline)
.wrapText("a", "b")
.wrapTextAtRange(range, "a");
+530 -254
View File
File diff suppressed because it is too large Load Diff