diff --git a/.changeset/fast-shrimps-begin.md b/.changeset/fast-shrimps-begin.md new file mode 100644 index 000000000..9bda348da --- /dev/null +++ b/.changeset/fast-shrimps-begin.md @@ -0,0 +1,19 @@ +--- +'slate-hyperscript': patch +--- + +createEditor is now exported from slate-hyperscript, making it easier to set up custom editor tests + +For example: + +``` +const jsx = createHyperscript({ + creators: { + editor: createEditor(aFunctionThatReturnsAnEditorObject) + }, + elements: { + block: { type: 'block' }, + inline: { type: 'inline' } + } +}) +``` diff --git a/packages/slate-hyperscript/src/creators.ts b/packages/slate-hyperscript/src/creators.ts index d0ef89e3e..cf7c7dc6b 100644 --- a/packages/slate-hyperscript/src/creators.ts +++ b/packages/slate-hyperscript/src/creators.ts @@ -1,12 +1,4 @@ -import { - Element, - Descendant, - Node, - Range, - Text, - Editor, - createEditor as makeEditor, -} from 'slate' +import { Element, Descendant, Node, Range, Text, Editor } from 'slate' import { AnchorToken, FocusToken, @@ -217,11 +209,11 @@ export function createText( * Create a top-level `Editor` object. */ -export function createEditor( +export const createEditor = (makeEditor: () => Editor) => ( tagName: string, attributes: { [key: string]: any }, children: any[] -): Editor { +): Editor => { const otherChildren: any[] = [] let selectionChild: Range | undefined diff --git a/packages/slate-hyperscript/src/hyperscript.ts b/packages/slate-hyperscript/src/hyperscript.ts index b460c89c3..d52172132 100644 --- a/packages/slate-hyperscript/src/hyperscript.ts +++ b/packages/slate-hyperscript/src/hyperscript.ts @@ -1,5 +1,5 @@ import { isPlainObject } from 'is-plain-object' -import { Element } from 'slate' +import { Element, createEditor as makeEditor } from 'slate' import { createAnchor, createCursor, @@ -18,7 +18,7 @@ import { const DEFAULT_CREATORS = { anchor: createAnchor, cursor: createCursor, - editor: createEditor, + editor: createEditor(makeEditor), element: createElement, focus: createFocus, fragment: createFragment, diff --git a/packages/slate-hyperscript/src/index.ts b/packages/slate-hyperscript/src/index.ts index a8c387623..750bff584 100644 --- a/packages/slate-hyperscript/src/index.ts +++ b/packages/slate-hyperscript/src/index.ts @@ -3,6 +3,7 @@ import { HyperscriptCreators, HyperscriptShorthands, } from './hyperscript' +import { createEditor } from './creators' /** * The default hyperscript factory that ships with Slate, without custom tags. @@ -10,4 +11,10 @@ import { const jsx = createHyperscript() -export { jsx, createHyperscript, HyperscriptCreators, HyperscriptShorthands } +export { + jsx, + createHyperscript, + createEditor, + HyperscriptCreators, + HyperscriptShorthands, +}