@contember/react-slate-editor-base 2.0.0-alpha.15 → 2.0.0-alpha.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -17,7 +17,7 @@ const RichTextEditor = reactBinding.Component(
17
17
  () => reactBinding.QueryLanguage.desugarRelativeSingleField(props, environment),
18
18
  [environment, props]
19
19
  );
20
- const fieldAccessor = React.useMemo(() => entity.getRelativeSingleField(desugaredField), [entity, desugaredField]);
20
+ const fieldAccessor = React.useMemo(() => entity.getField(desugaredField), [entity, desugaredField]);
21
21
  const [contemberFieldElementCache] = React.useState(() => /* @__PURE__ */ new WeakMap());
22
22
  const [editor] = React.useState(() => {
23
23
  const { editor: editor2 } = createEditor.createEditor({
@@ -71,14 +71,14 @@ const RichTextEditor = reactBinding.Component(
71
71
  const onChange = React.useCallback(
72
72
  (value) => {
73
73
  getParent().batchUpdates((getAccessor) => {
74
- const fieldAccessor2 = getAccessor().getRelativeSingleField(desugaredField);
74
+ const fieldAccessor2 = getAccessor().getField(desugaredField);
75
75
  if (Slate.Node.string({ type: "dummy", children: value }) === "" && fieldAccessor2.valueOnServer === null) {
76
76
  fieldAccessor2.updateValue(null);
77
77
  return;
78
78
  }
79
79
  if (Slate.Element.isElement(value[0])) {
80
80
  fieldAccessor2.updateValue(serialize(value[0].children));
81
- contemberFieldElementCache.set(getAccessor().getRelativeSingleField(desugaredField), value);
81
+ contemberFieldElementCache.set(getAccessor().getField(desugaredField), value);
82
82
  }
83
83
  });
84
84
  },
@@ -1 +1 @@
1
- {"version":3,"file":"RichTextEditor.cjs","sources":["../../../../../packages/react-slate-editor-base/src/components/RichTextEditor.tsx"],"sourcesContent":["import { Component, Field, FieldAccessor, FieldBasicProps, QueryLanguage, useEntity } from '@contember/react-binding'\nimport { FunctionComponent, useCallback, useMemo, useState } from 'react'\nimport { Descendant, Editor, Element as SlateElement, Node as SlateNode, NodeEntry, Transforms } from 'slate'\nimport { Slate } from 'slate-react'\nimport { createEditor, CreateEditorPublicOptions } from '../editor'\nimport { paragraphElementType } from '../plugins'\nimport { useRichTextFieldNodes } from '../internal/hooks/useRichTextFieldNodes'\n\nexport type RichTextEditorProps =\n\t& FieldBasicProps\n\t& CreateEditorPublicOptions\n\t& {\n\t\tchildren: React.ReactNode\n\t}\n\n/**\n * Rich text field supports more advanced formatting capabilities. Output of this field is a JSON.\n *\n * @group Form Fields\n */\nexport const RichTextEditor: FunctionComponent<RichTextEditorProps> = Component(\n\tprops => {\n\t\tconst entity = useEntity()\n\t\tconst environment = entity.environment\n\t\tconst getParent = entity.getAccessor\n\n\t\tconst desugaredField = useMemo(\n\t\t\t() => QueryLanguage.desugarRelativeSingleField(props, environment),\n\t\t\t[environment, props],\n\t\t)\n\t\tconst fieldAccessor = useMemo(() => entity.getRelativeSingleField<string>(desugaredField), [entity, desugaredField])\n\n\t\t// The cache is questionable, really.\n\t\tconst [contemberFieldElementCache] = useState(() => new WeakMap<FieldAccessor<string>, SlateElement[]>())\n\n\n\t\tconst [editor] = useState(() => {\n\t\t\tconst { editor } = createEditor({\n\t\t\t\tplugins: props.plugins,\n\t\t\t\tdefaultElementType: paragraphElementType,\n\t\t\t\tentity,\n\t\t\t\tenvironment,\n\t\t\t\tchildren: props.children,\n\t\t\t})\n\n\t\t\tconst { normalizeNode } = editor\n\t\t\tObject.assign(editor, {\n\t\t\t\tinsertBreak: () => {\n\t\t\t\t\tTransforms.insertText(editor, '\\n')\n\t\t\t\t},\n\t\t\t\tnormalizeNode: (nodeEntry: NodeEntry) => {\n\t\t\t\t\tconst [node, path] = nodeEntry\n\t\t\t\t\tif (path.length === 0 && SlateElement.isAncestor(node)) {\n\t\t\t\t\t\t// Enforce that there's exactly one child and that it's\n\t\t\t\t\t\tif (node.children.length > 1) {\n\t\t\t\t\t\t\treturn Editor.withoutNormalizing(editor, () => {\n\t\t\t\t\t\t\t\tconst targetPath = [0, (editor.children[0] as SlateElement).children.length]\n\t\t\t\t\t\t\t\tTransforms.moveNodes(editor, {\n\t\t\t\t\t\t\t\t\tat: [1],\n\t\t\t\t\t\t\t\t\tto: targetPath,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\tTransforms.unwrapNodes(editor, { at: targetPath })\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (SlateElement.isElement(node.children[0]) && !editor.isDefaultElement(node.children[0])) {\n\t\t\t\t\t\t\treturn Editor.withoutNormalizing(editor, () => {\n\t\t\t\t\t\t\t\tTransforms.wrapNodes(editor, editor.createDefaultElement([{ text: '' }]), {\n\t\t\t\t\t\t\t\t\tat: path,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\tTransforms.unwrapNodes(editor, { at: [0, 0] })\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (SlateElement.isElement(node) && Editor.isBlock(editor, node) && path.length > 1) {\n\t\t\t\t\t\treturn Transforms.unwrapNodes(editor, { at: path })\n\t\t\t\t\t}\n\t\t\t\t\tnormalizeNode(nodeEntry)\n\t\t\t\t},\n\t\t\t})\n\n\t\t\treturn editor\n\t\t})\n\n\t\tconst valueNodes = useRichTextFieldNodes({\n\t\t\teditor,\n\t\t\tfieldAccessor,\n\t\t\tcontemberFieldElementCache,\n\t\t})\n\n\t\tconst serialize = editor.serializeNodes\n\t\tconst onChange = useCallback(\n\t\t\t(value: Descendant[]) => {\n\t\t\t\tgetParent().batchUpdates(getAccessor => {\n\t\t\t\t\tconst fieldAccessor = getAccessor().getRelativeSingleField(desugaredField)\n\n\t\t\t\t\tif (SlateNode.string({ type: 'dummy', children: value }) === '' && fieldAccessor.valueOnServer === null) {\n\t\t\t\t\t\tfieldAccessor.updateValue(null)\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\n\t\t\t\t\tif (SlateElement.isElement(value[0])) {\n\t\t\t\t\t\tfieldAccessor.updateValue(serialize(value[0].children))\n\t\t\t\t\t\tcontemberFieldElementCache.set(getAccessor().getRelativeSingleField(desugaredField), value as SlateElement[])\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t},\n\t\t\t[getParent, contemberFieldElementCache, desugaredField, serialize],\n\t\t)\n\n\t\treturn (\n\t\t\t<Slate editor={editor} initialValue={valueNodes} onChange={onChange}>\n\t\t\t\t{props.children}\n\t\t\t</Slate>\n\t\t)\n\t},\n\tprops => (\n\t\t<>\n\t\t\t<Field defaultValue={props.defaultValue} field={props.field} isNonbearing={props.isNonbearing} />\n\t\t</>\n\t),\n\t'RichTextEditor',\n)\n\n"],"names":["Component","useEntity","useMemo","QueryLanguage","useState","editor","createEditor","paragraphElementType","Transforms","SlateElement","Editor","useRichTextFieldNodes","useCallback","fieldAccessor","SlateNode","Slate","this","jsxDEV","Fragment","Field"],"mappings":"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"}
1
+ {"version":3,"file":"RichTextEditor.cjs","sources":["../../../../../packages/react-slate-editor-base/src/components/RichTextEditor.tsx"],"sourcesContent":["import { Component, Field, FieldAccessor, FieldBasicProps, QueryLanguage, useEntity } from '@contember/react-binding'\nimport { FunctionComponent, useCallback, useMemo, useState } from 'react'\nimport { Descendant, Editor, Element as SlateElement, Node as SlateNode, NodeEntry, Transforms } from 'slate'\nimport { Slate } from 'slate-react'\nimport { createEditor, CreateEditorPublicOptions } from '../editor'\nimport { paragraphElementType } from '../plugins'\nimport { useRichTextFieldNodes } from '../internal/hooks/useRichTextFieldNodes'\n\nexport type RichTextEditorProps =\n\t& FieldBasicProps\n\t& CreateEditorPublicOptions\n\t& {\n\t\tchildren: React.ReactNode\n\t}\n\n/**\n * Rich text field supports more advanced formatting capabilities. Output of this field is a JSON.\n *\n * @group Form Fields\n */\nexport const RichTextEditor: FunctionComponent<RichTextEditorProps> = Component(\n\tprops => {\n\t\tconst entity = useEntity()\n\t\tconst environment = entity.environment\n\t\tconst getParent = entity.getAccessor\n\n\t\tconst desugaredField = useMemo(\n\t\t\t() => QueryLanguage.desugarRelativeSingleField(props, environment),\n\t\t\t[environment, props],\n\t\t)\n\t\tconst fieldAccessor = useMemo(() => entity.getField<string>(desugaredField), [entity, desugaredField])\n\n\t\t// The cache is questionable, really.\n\t\tconst [contemberFieldElementCache] = useState(() => new WeakMap<FieldAccessor<string>, SlateElement[]>())\n\n\n\t\tconst [editor] = useState(() => {\n\t\t\tconst { editor } = createEditor({\n\t\t\t\tplugins: props.plugins,\n\t\t\t\tdefaultElementType: paragraphElementType,\n\t\t\t\tentity,\n\t\t\t\tenvironment,\n\t\t\t\tchildren: props.children,\n\t\t\t})\n\n\t\t\tconst { normalizeNode } = editor\n\t\t\tObject.assign(editor, {\n\t\t\t\tinsertBreak: () => {\n\t\t\t\t\tTransforms.insertText(editor, '\\n')\n\t\t\t\t},\n\t\t\t\tnormalizeNode: (nodeEntry: NodeEntry) => {\n\t\t\t\t\tconst [node, path] = nodeEntry\n\t\t\t\t\tif (path.length === 0 && SlateElement.isAncestor(node)) {\n\t\t\t\t\t\t// Enforce that there's exactly one child and that it's\n\t\t\t\t\t\tif (node.children.length > 1) {\n\t\t\t\t\t\t\treturn Editor.withoutNormalizing(editor, () => {\n\t\t\t\t\t\t\t\tconst targetPath = [0, (editor.children[0] as SlateElement).children.length]\n\t\t\t\t\t\t\t\tTransforms.moveNodes(editor, {\n\t\t\t\t\t\t\t\t\tat: [1],\n\t\t\t\t\t\t\t\t\tto: targetPath,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\tTransforms.unwrapNodes(editor, { at: targetPath })\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (SlateElement.isElement(node.children[0]) && !editor.isDefaultElement(node.children[0])) {\n\t\t\t\t\t\t\treturn Editor.withoutNormalizing(editor, () => {\n\t\t\t\t\t\t\t\tTransforms.wrapNodes(editor, editor.createDefaultElement([{ text: '' }]), {\n\t\t\t\t\t\t\t\t\tat: path,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\tTransforms.unwrapNodes(editor, { at: [0, 0] })\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (SlateElement.isElement(node) && Editor.isBlock(editor, node) && path.length > 1) {\n\t\t\t\t\t\treturn Transforms.unwrapNodes(editor, { at: path })\n\t\t\t\t\t}\n\t\t\t\t\tnormalizeNode(nodeEntry)\n\t\t\t\t},\n\t\t\t})\n\n\t\t\treturn editor\n\t\t})\n\n\t\tconst valueNodes = useRichTextFieldNodes({\n\t\t\teditor,\n\t\t\tfieldAccessor,\n\t\t\tcontemberFieldElementCache,\n\t\t})\n\n\t\tconst serialize = editor.serializeNodes\n\t\tconst onChange = useCallback(\n\t\t\t(value: Descendant[]) => {\n\t\t\t\tgetParent().batchUpdates(getAccessor => {\n\t\t\t\t\tconst fieldAccessor = getAccessor().getField(desugaredField)\n\n\t\t\t\t\tif (SlateNode.string({ type: 'dummy', children: value }) === '' && fieldAccessor.valueOnServer === null) {\n\t\t\t\t\t\tfieldAccessor.updateValue(null)\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\n\t\t\t\t\tif (SlateElement.isElement(value[0])) {\n\t\t\t\t\t\tfieldAccessor.updateValue(serialize(value[0].children))\n\t\t\t\t\t\tcontemberFieldElementCache.set(getAccessor().getField(desugaredField), value as SlateElement[])\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t},\n\t\t\t[getParent, contemberFieldElementCache, desugaredField, serialize],\n\t\t)\n\n\t\treturn (\n\t\t\t<Slate editor={editor} initialValue={valueNodes} onChange={onChange}>\n\t\t\t\t{props.children}\n\t\t\t</Slate>\n\t\t)\n\t},\n\tprops => (\n\t\t<>\n\t\t\t<Field defaultValue={props.defaultValue} field={props.field} isNonbearing={props.isNonbearing} />\n\t\t</>\n\t),\n\t'RichTextEditor',\n)\n\n"],"names":["Component","useEntity","useMemo","QueryLanguage","useState","editor","createEditor","paragraphElementType","Transforms","SlateElement","Editor","useRichTextFieldNodes","useCallback","fieldAccessor","SlateNode","Slate","this","jsxDEV","Fragment","Field"],"mappings":"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"}
@@ -15,7 +15,7 @@ const RichTextEditor = Component(
15
15
  () => QueryLanguage.desugarRelativeSingleField(props, environment),
16
16
  [environment, props]
17
17
  );
18
- const fieldAccessor = useMemo(() => entity.getRelativeSingleField(desugaredField), [entity, desugaredField]);
18
+ const fieldAccessor = useMemo(() => entity.getField(desugaredField), [entity, desugaredField]);
19
19
  const [contemberFieldElementCache] = useState(() => /* @__PURE__ */ new WeakMap());
20
20
  const [editor] = useState(() => {
21
21
  const { editor: editor2 } = createEditor({
@@ -69,14 +69,14 @@ const RichTextEditor = Component(
69
69
  const onChange = useCallback(
70
70
  (value) => {
71
71
  getParent().batchUpdates((getAccessor) => {
72
- const fieldAccessor2 = getAccessor().getRelativeSingleField(desugaredField);
72
+ const fieldAccessor2 = getAccessor().getField(desugaredField);
73
73
  if (Node.string({ type: "dummy", children: value }) === "" && fieldAccessor2.valueOnServer === null) {
74
74
  fieldAccessor2.updateValue(null);
75
75
  return;
76
76
  }
77
77
  if (Element.isElement(value[0])) {
78
78
  fieldAccessor2.updateValue(serialize(value[0].children));
79
- contemberFieldElementCache.set(getAccessor().getRelativeSingleField(desugaredField), value);
79
+ contemberFieldElementCache.set(getAccessor().getField(desugaredField), value);
80
80
  }
81
81
  });
82
82
  },
@@ -1 +1 @@
1
- {"version":3,"file":"RichTextEditor.js","sources":["../../../../../packages/react-slate-editor-base/src/components/RichTextEditor.tsx"],"sourcesContent":["import { Component, Field, FieldAccessor, FieldBasicProps, QueryLanguage, useEntity } from '@contember/react-binding'\nimport { FunctionComponent, useCallback, useMemo, useState } from 'react'\nimport { Descendant, Editor, Element as SlateElement, Node as SlateNode, NodeEntry, Transforms } from 'slate'\nimport { Slate } from 'slate-react'\nimport { createEditor, CreateEditorPublicOptions } from '../editor'\nimport { paragraphElementType } from '../plugins'\nimport { useRichTextFieldNodes } from '../internal/hooks/useRichTextFieldNodes'\n\nexport type RichTextEditorProps =\n\t& FieldBasicProps\n\t& CreateEditorPublicOptions\n\t& {\n\t\tchildren: React.ReactNode\n\t}\n\n/**\n * Rich text field supports more advanced formatting capabilities. Output of this field is a JSON.\n *\n * @group Form Fields\n */\nexport const RichTextEditor: FunctionComponent<RichTextEditorProps> = Component(\n\tprops => {\n\t\tconst entity = useEntity()\n\t\tconst environment = entity.environment\n\t\tconst getParent = entity.getAccessor\n\n\t\tconst desugaredField = useMemo(\n\t\t\t() => QueryLanguage.desugarRelativeSingleField(props, environment),\n\t\t\t[environment, props],\n\t\t)\n\t\tconst fieldAccessor = useMemo(() => entity.getRelativeSingleField<string>(desugaredField), [entity, desugaredField])\n\n\t\t// The cache is questionable, really.\n\t\tconst [contemberFieldElementCache] = useState(() => new WeakMap<FieldAccessor<string>, SlateElement[]>())\n\n\n\t\tconst [editor] = useState(() => {\n\t\t\tconst { editor } = createEditor({\n\t\t\t\tplugins: props.plugins,\n\t\t\t\tdefaultElementType: paragraphElementType,\n\t\t\t\tentity,\n\t\t\t\tenvironment,\n\t\t\t\tchildren: props.children,\n\t\t\t})\n\n\t\t\tconst { normalizeNode } = editor\n\t\t\tObject.assign(editor, {\n\t\t\t\tinsertBreak: () => {\n\t\t\t\t\tTransforms.insertText(editor, '\\n')\n\t\t\t\t},\n\t\t\t\tnormalizeNode: (nodeEntry: NodeEntry) => {\n\t\t\t\t\tconst [node, path] = nodeEntry\n\t\t\t\t\tif (path.length === 0 && SlateElement.isAncestor(node)) {\n\t\t\t\t\t\t// Enforce that there's exactly one child and that it's\n\t\t\t\t\t\tif (node.children.length > 1) {\n\t\t\t\t\t\t\treturn Editor.withoutNormalizing(editor, () => {\n\t\t\t\t\t\t\t\tconst targetPath = [0, (editor.children[0] as SlateElement).children.length]\n\t\t\t\t\t\t\t\tTransforms.moveNodes(editor, {\n\t\t\t\t\t\t\t\t\tat: [1],\n\t\t\t\t\t\t\t\t\tto: targetPath,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\tTransforms.unwrapNodes(editor, { at: targetPath })\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (SlateElement.isElement(node.children[0]) && !editor.isDefaultElement(node.children[0])) {\n\t\t\t\t\t\t\treturn Editor.withoutNormalizing(editor, () => {\n\t\t\t\t\t\t\t\tTransforms.wrapNodes(editor, editor.createDefaultElement([{ text: '' }]), {\n\t\t\t\t\t\t\t\t\tat: path,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\tTransforms.unwrapNodes(editor, { at: [0, 0] })\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (SlateElement.isElement(node) && Editor.isBlock(editor, node) && path.length > 1) {\n\t\t\t\t\t\treturn Transforms.unwrapNodes(editor, { at: path })\n\t\t\t\t\t}\n\t\t\t\t\tnormalizeNode(nodeEntry)\n\t\t\t\t},\n\t\t\t})\n\n\t\t\treturn editor\n\t\t})\n\n\t\tconst valueNodes = useRichTextFieldNodes({\n\t\t\teditor,\n\t\t\tfieldAccessor,\n\t\t\tcontemberFieldElementCache,\n\t\t})\n\n\t\tconst serialize = editor.serializeNodes\n\t\tconst onChange = useCallback(\n\t\t\t(value: Descendant[]) => {\n\t\t\t\tgetParent().batchUpdates(getAccessor => {\n\t\t\t\t\tconst fieldAccessor = getAccessor().getRelativeSingleField(desugaredField)\n\n\t\t\t\t\tif (SlateNode.string({ type: 'dummy', children: value }) === '' && fieldAccessor.valueOnServer === null) {\n\t\t\t\t\t\tfieldAccessor.updateValue(null)\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\n\t\t\t\t\tif (SlateElement.isElement(value[0])) {\n\t\t\t\t\t\tfieldAccessor.updateValue(serialize(value[0].children))\n\t\t\t\t\t\tcontemberFieldElementCache.set(getAccessor().getRelativeSingleField(desugaredField), value as SlateElement[])\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t},\n\t\t\t[getParent, contemberFieldElementCache, desugaredField, serialize],\n\t\t)\n\n\t\treturn (\n\t\t\t<Slate editor={editor} initialValue={valueNodes} onChange={onChange}>\n\t\t\t\t{props.children}\n\t\t\t</Slate>\n\t\t)\n\t},\n\tprops => (\n\t\t<>\n\t\t\t<Field defaultValue={props.defaultValue} field={props.field} isNonbearing={props.isNonbearing} />\n\t\t</>\n\t),\n\t'RichTextEditor',\n)\n\n"],"names":["editor","SlateElement","fieldAccessor","SlateNode","this"],"mappings":"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"}
1
+ {"version":3,"file":"RichTextEditor.js","sources":["../../../../../packages/react-slate-editor-base/src/components/RichTextEditor.tsx"],"sourcesContent":["import { Component, Field, FieldAccessor, FieldBasicProps, QueryLanguage, useEntity } from '@contember/react-binding'\nimport { FunctionComponent, useCallback, useMemo, useState } from 'react'\nimport { Descendant, Editor, Element as SlateElement, Node as SlateNode, NodeEntry, Transforms } from 'slate'\nimport { Slate } from 'slate-react'\nimport { createEditor, CreateEditorPublicOptions } from '../editor'\nimport { paragraphElementType } from '../plugins'\nimport { useRichTextFieldNodes } from '../internal/hooks/useRichTextFieldNodes'\n\nexport type RichTextEditorProps =\n\t& FieldBasicProps\n\t& CreateEditorPublicOptions\n\t& {\n\t\tchildren: React.ReactNode\n\t}\n\n/**\n * Rich text field supports more advanced formatting capabilities. Output of this field is a JSON.\n *\n * @group Form Fields\n */\nexport const RichTextEditor: FunctionComponent<RichTextEditorProps> = Component(\n\tprops => {\n\t\tconst entity = useEntity()\n\t\tconst environment = entity.environment\n\t\tconst getParent = entity.getAccessor\n\n\t\tconst desugaredField = useMemo(\n\t\t\t() => QueryLanguage.desugarRelativeSingleField(props, environment),\n\t\t\t[environment, props],\n\t\t)\n\t\tconst fieldAccessor = useMemo(() => entity.getField<string>(desugaredField), [entity, desugaredField])\n\n\t\t// The cache is questionable, really.\n\t\tconst [contemberFieldElementCache] = useState(() => new WeakMap<FieldAccessor<string>, SlateElement[]>())\n\n\n\t\tconst [editor] = useState(() => {\n\t\t\tconst { editor } = createEditor({\n\t\t\t\tplugins: props.plugins,\n\t\t\t\tdefaultElementType: paragraphElementType,\n\t\t\t\tentity,\n\t\t\t\tenvironment,\n\t\t\t\tchildren: props.children,\n\t\t\t})\n\n\t\t\tconst { normalizeNode } = editor\n\t\t\tObject.assign(editor, {\n\t\t\t\tinsertBreak: () => {\n\t\t\t\t\tTransforms.insertText(editor, '\\n')\n\t\t\t\t},\n\t\t\t\tnormalizeNode: (nodeEntry: NodeEntry) => {\n\t\t\t\t\tconst [node, path] = nodeEntry\n\t\t\t\t\tif (path.length === 0 && SlateElement.isAncestor(node)) {\n\t\t\t\t\t\t// Enforce that there's exactly one child and that it's\n\t\t\t\t\t\tif (node.children.length > 1) {\n\t\t\t\t\t\t\treturn Editor.withoutNormalizing(editor, () => {\n\t\t\t\t\t\t\t\tconst targetPath = [0, (editor.children[0] as SlateElement).children.length]\n\t\t\t\t\t\t\t\tTransforms.moveNodes(editor, {\n\t\t\t\t\t\t\t\t\tat: [1],\n\t\t\t\t\t\t\t\t\tto: targetPath,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\tTransforms.unwrapNodes(editor, { at: targetPath })\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (SlateElement.isElement(node.children[0]) && !editor.isDefaultElement(node.children[0])) {\n\t\t\t\t\t\t\treturn Editor.withoutNormalizing(editor, () => {\n\t\t\t\t\t\t\t\tTransforms.wrapNodes(editor, editor.createDefaultElement([{ text: '' }]), {\n\t\t\t\t\t\t\t\t\tat: path,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\tTransforms.unwrapNodes(editor, { at: [0, 0] })\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (SlateElement.isElement(node) && Editor.isBlock(editor, node) && path.length > 1) {\n\t\t\t\t\t\treturn Transforms.unwrapNodes(editor, { at: path })\n\t\t\t\t\t}\n\t\t\t\t\tnormalizeNode(nodeEntry)\n\t\t\t\t},\n\t\t\t})\n\n\t\t\treturn editor\n\t\t})\n\n\t\tconst valueNodes = useRichTextFieldNodes({\n\t\t\teditor,\n\t\t\tfieldAccessor,\n\t\t\tcontemberFieldElementCache,\n\t\t})\n\n\t\tconst serialize = editor.serializeNodes\n\t\tconst onChange = useCallback(\n\t\t\t(value: Descendant[]) => {\n\t\t\t\tgetParent().batchUpdates(getAccessor => {\n\t\t\t\t\tconst fieldAccessor = getAccessor().getField(desugaredField)\n\n\t\t\t\t\tif (SlateNode.string({ type: 'dummy', children: value }) === '' && fieldAccessor.valueOnServer === null) {\n\t\t\t\t\t\tfieldAccessor.updateValue(null)\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\n\t\t\t\t\tif (SlateElement.isElement(value[0])) {\n\t\t\t\t\t\tfieldAccessor.updateValue(serialize(value[0].children))\n\t\t\t\t\t\tcontemberFieldElementCache.set(getAccessor().getField(desugaredField), value as SlateElement[])\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t},\n\t\t\t[getParent, contemberFieldElementCache, desugaredField, serialize],\n\t\t)\n\n\t\treturn (\n\t\t\t<Slate editor={editor} initialValue={valueNodes} onChange={onChange}>\n\t\t\t\t{props.children}\n\t\t\t</Slate>\n\t\t)\n\t},\n\tprops => (\n\t\t<>\n\t\t\t<Field defaultValue={props.defaultValue} field={props.field} isNonbearing={props.isNonbearing} />\n\t\t</>\n\t),\n\t'RichTextEditor',\n)\n\n"],"names":["editor","SlateElement","fieldAccessor","SlateNode","this"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"createEditor.cjs","sources":["../../../../../packages/react-slate-editor-base/src/editor/createEditor.ts"],"sourcesContent":["import { createEditorWithEssentials } from './createEditorWithEssentials'\nimport { Editor } from 'slate'\nimport { EditorPlugin, EditorPluginWrapperProps } from '../types'\nimport { createElement, FunctionComponent, ReactNode } from 'react'\nimport { EntityAccessor } from '@contember/binding'\nimport { Environment } from '@contember/react-binding'\n\n\nexport interface CreateEditorPublicOptions {\n\tplugins?: EditorPlugin[]\n}\n\nexport interface CreateEditorOptions extends CreateEditorPublicOptions {\n\tdefaultElementType: string\n\tentity: EntityAccessor\n\tenvironment: Environment\n\tchildren: ReactNode\n}\n\nexport const createEditor = ({\n\tplugins = [],\n\tdefaultElementType,\n\tentity,\n\tenvironment,\n\tchildren,\n}: CreateEditorOptions): {\n\teditor: Editor\n\tOuterWrapper: FunctionComponent<{ children: ReactNode }>\n\tInnerWrapper: FunctionComponent<{ children: ReactNode }>\n} => {\n\tconst editor = createEditorWithEssentials({ defaultElementType })\n\tconst outerWrappers: FunctionComponent<EditorPluginWrapperProps>[] = []\n\tconst innerWrappers: FunctionComponent<EditorPluginWrapperProps>[] = []\n\tplugins?.forEach(plugin => {\n\t\tif (typeof plugin === 'function') {\n\t\t\tplugin(editor)\n\t\t\treturn\n\t\t}\n\t\tplugin.extendEditor?.({ editor, children, environment, entity })\n\t\tif (plugin?.OuterWrapper) {\n\t\t\touterWrappers.push(plugin.OuterWrapper)\n\t\t}\n\t\tif (plugin?.InnerWrapper) {\n\t\t\tinnerWrappers.push(plugin.InnerWrapper)\n\t\t}\n\t})\n\treturn {\n\t\teditor,\n\t\tOuterWrapper: ({ children }) => outerWrappers.reduceRight((acc, Wrapper) => createElement(Wrapper, { editor }, acc), children),\n\t\tInnerWrapper: ({ children }) => innerWrappers.reduceRight((acc, Wrapper) => createElement(Wrapper, { editor }, acc), children),\n\t}\n}\n"],"names":["createEditorWithEssentials","children","createElement"],"mappings":";;;;AAmBO,MAAM,eAAe,CAAC;AAAA,EAC5B,UAAU,CAAC;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,MAIK;AACJ,QAAM,SAASA,2BAAAA,2BAA2B,EAAE,mBAAoB,CAAA;AAChE,QAAM,gBAA+D,CAAA;AACrE,QAAM,gBAA+D,CAAA;AACrE,WAAS,QAAQ,CAAU,WAAA;AACtB,QAAA,OAAO,WAAW,YAAY;AACjC,aAAO,MAAM;AACb;AAAA,IACD;AACA,WAAO,eAAe,EAAE,QAAQ,UAAU,aAAa,QAAQ;AAC/D,QAAI,QAAQ,cAAc;AACX,oBAAA,KAAK,OAAO,YAAY;AAAA,IACvC;AACA,QAAI,QAAQ,cAAc;AACX,oBAAA,KAAK,OAAO,YAAY;AAAA,IACvC;AAAA,EAAA,CACA;AACM,SAAA;AAAA,IACN;AAAA,IACA,cAAc,CAAC,EAAE,UAAAC,UAAS,MAAM,cAAc,YAAY,CAAC,KAAK,YAAYC,MAAAA,cAAc,SAAS,EAAE,UAAU,GAAG,GAAGD,SAAQ;AAAA,IAC7H,cAAc,CAAC,EAAE,UAAAA,UAAS,MAAM,cAAc,YAAY,CAAC,KAAK,YAAYC,MAAAA,cAAc,SAAS,EAAE,UAAU,GAAG,GAAGD,SAAQ;AAAA,EAAA;AAE/H;;"}
1
+ {"version":3,"file":"createEditor.cjs","sources":["../../../../../packages/react-slate-editor-base/src/editor/createEditor.ts"],"sourcesContent":["import { createEditorWithEssentials } from './createEditorWithEssentials'\nimport { Editor } from 'slate'\nimport { EditorPlugin, EditorPluginWrapperProps } from '../types'\nimport { createElement, FunctionComponent, ReactNode } from 'react'\nimport { EntityAccessor } from '@contember/react-binding'\nimport { Environment } from '@contember/react-binding'\n\n\nexport interface CreateEditorPublicOptions {\n\tplugins?: EditorPlugin[]\n}\n\nexport interface CreateEditorOptions extends CreateEditorPublicOptions {\n\tdefaultElementType: string\n\tentity: EntityAccessor\n\tenvironment: Environment\n\tchildren: ReactNode\n}\n\nexport const createEditor = ({\n\tplugins = [],\n\tdefaultElementType,\n\tentity,\n\tenvironment,\n\tchildren,\n}: CreateEditorOptions): {\n\teditor: Editor\n\tOuterWrapper: FunctionComponent<{ children: ReactNode }>\n\tInnerWrapper: FunctionComponent<{ children: ReactNode }>\n} => {\n\tconst editor = createEditorWithEssentials({ defaultElementType })\n\tconst outerWrappers: FunctionComponent<EditorPluginWrapperProps>[] = []\n\tconst innerWrappers: FunctionComponent<EditorPluginWrapperProps>[] = []\n\tplugins?.forEach(plugin => {\n\t\tif (typeof plugin === 'function') {\n\t\t\tplugin(editor)\n\t\t\treturn\n\t\t}\n\t\tplugin.extendEditor?.({ editor, children, environment, entity })\n\t\tif (plugin?.OuterWrapper) {\n\t\t\touterWrappers.push(plugin.OuterWrapper)\n\t\t}\n\t\tif (plugin?.InnerWrapper) {\n\t\t\tinnerWrappers.push(plugin.InnerWrapper)\n\t\t}\n\t})\n\treturn {\n\t\teditor,\n\t\tOuterWrapper: ({ children }) => outerWrappers.reduceRight((acc, Wrapper) => createElement(Wrapper, { editor }, acc), children),\n\t\tInnerWrapper: ({ children }) => innerWrappers.reduceRight((acc, Wrapper) => createElement(Wrapper, { editor }, acc), children),\n\t}\n}\n"],"names":["createEditorWithEssentials","children","createElement"],"mappings":";;;;AAmBO,MAAM,eAAe,CAAC;AAAA,EAC5B,UAAU,CAAC;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,MAIK;AACJ,QAAM,SAASA,2BAAAA,2BAA2B,EAAE,mBAAoB,CAAA;AAChE,QAAM,gBAA+D,CAAA;AACrE,QAAM,gBAA+D,CAAA;AACrE,WAAS,QAAQ,CAAU,WAAA;AACtB,QAAA,OAAO,WAAW,YAAY;AACjC,aAAO,MAAM;AACb;AAAA,IACD;AACA,WAAO,eAAe,EAAE,QAAQ,UAAU,aAAa,QAAQ;AAC/D,QAAI,QAAQ,cAAc;AACX,oBAAA,KAAK,OAAO,YAAY;AAAA,IACvC;AACA,QAAI,QAAQ,cAAc;AACX,oBAAA,KAAK,OAAO,YAAY;AAAA,IACvC;AAAA,EAAA,CACA;AACM,SAAA;AAAA,IACN;AAAA,IACA,cAAc,CAAC,EAAE,UAAAC,UAAS,MAAM,cAAc,YAAY,CAAC,KAAK,YAAYC,MAAAA,cAAc,SAAS,EAAE,UAAU,GAAG,GAAGD,SAAQ;AAAA,IAC7H,cAAc,CAAC,EAAE,UAAAA,UAAS,MAAM,cAAc,YAAY,CAAC,KAAK,YAAYC,MAAAA,cAAc,SAAS,EAAE,UAAU,GAAG,GAAGD,SAAQ;AAAA,EAAA;AAE/H;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"createEditor.js","sources":["../../../../../packages/react-slate-editor-base/src/editor/createEditor.ts"],"sourcesContent":["import { createEditorWithEssentials } from './createEditorWithEssentials'\nimport { Editor } from 'slate'\nimport { EditorPlugin, EditorPluginWrapperProps } from '../types'\nimport { createElement, FunctionComponent, ReactNode } from 'react'\nimport { EntityAccessor } from '@contember/binding'\nimport { Environment } from '@contember/react-binding'\n\n\nexport interface CreateEditorPublicOptions {\n\tplugins?: EditorPlugin[]\n}\n\nexport interface CreateEditorOptions extends CreateEditorPublicOptions {\n\tdefaultElementType: string\n\tentity: EntityAccessor\n\tenvironment: Environment\n\tchildren: ReactNode\n}\n\nexport const createEditor = ({\n\tplugins = [],\n\tdefaultElementType,\n\tentity,\n\tenvironment,\n\tchildren,\n}: CreateEditorOptions): {\n\teditor: Editor\n\tOuterWrapper: FunctionComponent<{ children: ReactNode }>\n\tInnerWrapper: FunctionComponent<{ children: ReactNode }>\n} => {\n\tconst editor = createEditorWithEssentials({ defaultElementType })\n\tconst outerWrappers: FunctionComponent<EditorPluginWrapperProps>[] = []\n\tconst innerWrappers: FunctionComponent<EditorPluginWrapperProps>[] = []\n\tplugins?.forEach(plugin => {\n\t\tif (typeof plugin === 'function') {\n\t\t\tplugin(editor)\n\t\t\treturn\n\t\t}\n\t\tplugin.extendEditor?.({ editor, children, environment, entity })\n\t\tif (plugin?.OuterWrapper) {\n\t\t\touterWrappers.push(plugin.OuterWrapper)\n\t\t}\n\t\tif (plugin?.InnerWrapper) {\n\t\t\tinnerWrappers.push(plugin.InnerWrapper)\n\t\t}\n\t})\n\treturn {\n\t\teditor,\n\t\tOuterWrapper: ({ children }) => outerWrappers.reduceRight((acc, Wrapper) => createElement(Wrapper, { editor }, acc), children),\n\t\tInnerWrapper: ({ children }) => innerWrappers.reduceRight((acc, Wrapper) => createElement(Wrapper, { editor }, acc), children),\n\t}\n}\n"],"names":["children"],"mappings":";;AAmBO,MAAM,eAAe,CAAC;AAAA,EAC5B,UAAU,CAAC;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,MAIK;AACJ,QAAM,SAAS,2BAA2B,EAAE,mBAAoB,CAAA;AAChE,QAAM,gBAA+D,CAAA;AACrE,QAAM,gBAA+D,CAAA;AACrE,WAAS,QAAQ,CAAU,WAAA;AACtB,QAAA,OAAO,WAAW,YAAY;AACjC,aAAO,MAAM;AACb;AAAA,IACD;AACA,WAAO,eAAe,EAAE,QAAQ,UAAU,aAAa,QAAQ;AAC/D,QAAI,QAAQ,cAAc;AACX,oBAAA,KAAK,OAAO,YAAY;AAAA,IACvC;AACA,QAAI,QAAQ,cAAc;AACX,oBAAA,KAAK,OAAO,YAAY;AAAA,IACvC;AAAA,EAAA,CACA;AACM,SAAA;AAAA,IACN;AAAA,IACA,cAAc,CAAC,EAAE,UAAAA,UAAS,MAAM,cAAc,YAAY,CAAC,KAAK,YAAY,cAAc,SAAS,EAAE,UAAU,GAAG,GAAGA,SAAQ;AAAA,IAC7H,cAAc,CAAC,EAAE,UAAAA,UAAS,MAAM,cAAc,YAAY,CAAC,KAAK,YAAY,cAAc,SAAS,EAAE,UAAU,GAAG,GAAGA,SAAQ;AAAA,EAAA;AAE/H;"}
1
+ {"version":3,"file":"createEditor.js","sources":["../../../../../packages/react-slate-editor-base/src/editor/createEditor.ts"],"sourcesContent":["import { createEditorWithEssentials } from './createEditorWithEssentials'\nimport { Editor } from 'slate'\nimport { EditorPlugin, EditorPluginWrapperProps } from '../types'\nimport { createElement, FunctionComponent, ReactNode } from 'react'\nimport { EntityAccessor } from '@contember/react-binding'\nimport { Environment } from '@contember/react-binding'\n\n\nexport interface CreateEditorPublicOptions {\n\tplugins?: EditorPlugin[]\n}\n\nexport interface CreateEditorOptions extends CreateEditorPublicOptions {\n\tdefaultElementType: string\n\tentity: EntityAccessor\n\tenvironment: Environment\n\tchildren: ReactNode\n}\n\nexport const createEditor = ({\n\tplugins = [],\n\tdefaultElementType,\n\tentity,\n\tenvironment,\n\tchildren,\n}: CreateEditorOptions): {\n\teditor: Editor\n\tOuterWrapper: FunctionComponent<{ children: ReactNode }>\n\tInnerWrapper: FunctionComponent<{ children: ReactNode }>\n} => {\n\tconst editor = createEditorWithEssentials({ defaultElementType })\n\tconst outerWrappers: FunctionComponent<EditorPluginWrapperProps>[] = []\n\tconst innerWrappers: FunctionComponent<EditorPluginWrapperProps>[] = []\n\tplugins?.forEach(plugin => {\n\t\tif (typeof plugin === 'function') {\n\t\t\tplugin(editor)\n\t\t\treturn\n\t\t}\n\t\tplugin.extendEditor?.({ editor, children, environment, entity })\n\t\tif (plugin?.OuterWrapper) {\n\t\t\touterWrappers.push(plugin.OuterWrapper)\n\t\t}\n\t\tif (plugin?.InnerWrapper) {\n\t\t\tinnerWrappers.push(plugin.InnerWrapper)\n\t\t}\n\t})\n\treturn {\n\t\teditor,\n\t\tOuterWrapper: ({ children }) => outerWrappers.reduceRight((acc, Wrapper) => createElement(Wrapper, { editor }, acc), children),\n\t\tInnerWrapper: ({ children }) => innerWrappers.reduceRight((acc, Wrapper) => createElement(Wrapper, { editor }, acc), children),\n\t}\n}\n"],"names":["children"],"mappings":";;AAmBO,MAAM,eAAe,CAAC;AAAA,EAC5B,UAAU,CAAC;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,MAIK;AACJ,QAAM,SAAS,2BAA2B,EAAE,mBAAoB,CAAA;AAChE,QAAM,gBAA+D,CAAA;AACrE,QAAM,gBAA+D,CAAA;AACrE,WAAS,QAAQ,CAAU,WAAA;AACtB,QAAA,OAAO,WAAW,YAAY;AACjC,aAAO,MAAM;AACb;AAAA,IACD;AACA,WAAO,eAAe,EAAE,QAAQ,UAAU,aAAa,QAAQ;AAC/D,QAAI,QAAQ,cAAc;AACX,oBAAA,KAAK,OAAO,YAAY;AAAA,IACvC;AACA,QAAI,QAAQ,cAAc;AACX,oBAAA,KAAK,OAAO,YAAY;AAAA,IACvC;AAAA,EAAA,CACA;AACM,SAAA;AAAA,IACN;AAAA,IACA,cAAc,CAAC,EAAE,UAAAA,UAAS,MAAM,cAAc,YAAY,CAAC,KAAK,YAAY,cAAc,SAAS,EAAE,UAAU,GAAG,GAAGA,SAAQ;AAAA,IAC7H,cAAc,CAAC,EAAE,UAAAA,UAAS,MAAM,cAAc,YAAY,CAAC,KAAK,YAAY,cAAc,SAAS,EAAE,UAAU,GAAG,GAAGA,SAAQ;AAAA,EAAA;AAE/H;"}
@@ -17,7 +17,7 @@ const RichTextEditor = reactBinding.Component(
17
17
  () => reactBinding.QueryLanguage.desugarRelativeSingleField(props, environment),
18
18
  [environment, props]
19
19
  );
20
- const fieldAccessor = React.useMemo(() => entity.getRelativeSingleField(desugaredField), [entity, desugaredField]);
20
+ const fieldAccessor = React.useMemo(() => entity.getField(desugaredField), [entity, desugaredField]);
21
21
  const [contemberFieldElementCache] = React.useState(() => /* @__PURE__ */ new WeakMap());
22
22
  const [editor] = React.useState(() => {
23
23
  const { editor: editor2 } = createEditor.createEditor({
@@ -71,14 +71,14 @@ const RichTextEditor = reactBinding.Component(
71
71
  const onChange = React.useCallback(
72
72
  (value) => {
73
73
  getParent().batchUpdates((getAccessor) => {
74
- const fieldAccessor2 = getAccessor().getRelativeSingleField(desugaredField);
74
+ const fieldAccessor2 = getAccessor().getField(desugaredField);
75
75
  if (Slate.Node.string({ type: "dummy", children: value }) === "" && fieldAccessor2.valueOnServer === null) {
76
76
  fieldAccessor2.updateValue(null);
77
77
  return;
78
78
  }
79
79
  if (Slate.Element.isElement(value[0])) {
80
80
  fieldAccessor2.updateValue(serialize(value[0].children));
81
- contemberFieldElementCache.set(getAccessor().getRelativeSingleField(desugaredField), value);
81
+ contemberFieldElementCache.set(getAccessor().getField(desugaredField), value);
82
82
  }
83
83
  });
84
84
  },
@@ -1 +1 @@
1
- {"version":3,"file":"RichTextEditor.cjs","sources":["../../../../../packages/react-slate-editor-base/src/components/RichTextEditor.tsx"],"sourcesContent":["import { Component, Field, FieldAccessor, FieldBasicProps, QueryLanguage, useEntity } from '@contember/react-binding'\nimport { FunctionComponent, useCallback, useMemo, useState } from 'react'\nimport { Descendant, Editor, Element as SlateElement, Node as SlateNode, NodeEntry, Transforms } from 'slate'\nimport { Slate } from 'slate-react'\nimport { createEditor, CreateEditorPublicOptions } from '../editor'\nimport { paragraphElementType } from '../plugins'\nimport { useRichTextFieldNodes } from '../internal/hooks/useRichTextFieldNodes'\n\nexport type RichTextEditorProps =\n\t& FieldBasicProps\n\t& CreateEditorPublicOptions\n\t& {\n\t\tchildren: React.ReactNode\n\t}\n\n/**\n * Rich text field supports more advanced formatting capabilities. Output of this field is a JSON.\n *\n * @group Form Fields\n */\nexport const RichTextEditor: FunctionComponent<RichTextEditorProps> = Component(\n\tprops => {\n\t\tconst entity = useEntity()\n\t\tconst environment = entity.environment\n\t\tconst getParent = entity.getAccessor\n\n\t\tconst desugaredField = useMemo(\n\t\t\t() => QueryLanguage.desugarRelativeSingleField(props, environment),\n\t\t\t[environment, props],\n\t\t)\n\t\tconst fieldAccessor = useMemo(() => entity.getRelativeSingleField<string>(desugaredField), [entity, desugaredField])\n\n\t\t// The cache is questionable, really.\n\t\tconst [contemberFieldElementCache] = useState(() => new WeakMap<FieldAccessor<string>, SlateElement[]>())\n\n\n\t\tconst [editor] = useState(() => {\n\t\t\tconst { editor } = createEditor({\n\t\t\t\tplugins: props.plugins,\n\t\t\t\tdefaultElementType: paragraphElementType,\n\t\t\t\tentity,\n\t\t\t\tenvironment,\n\t\t\t\tchildren: props.children,\n\t\t\t})\n\n\t\t\tconst { normalizeNode } = editor\n\t\t\tObject.assign(editor, {\n\t\t\t\tinsertBreak: () => {\n\t\t\t\t\tTransforms.insertText(editor, '\\n')\n\t\t\t\t},\n\t\t\t\tnormalizeNode: (nodeEntry: NodeEntry) => {\n\t\t\t\t\tconst [node, path] = nodeEntry\n\t\t\t\t\tif (path.length === 0 && SlateElement.isAncestor(node)) {\n\t\t\t\t\t\t// Enforce that there's exactly one child and that it's\n\t\t\t\t\t\tif (node.children.length > 1) {\n\t\t\t\t\t\t\treturn Editor.withoutNormalizing(editor, () => {\n\t\t\t\t\t\t\t\tconst targetPath = [0, (editor.children[0] as SlateElement).children.length]\n\t\t\t\t\t\t\t\tTransforms.moveNodes(editor, {\n\t\t\t\t\t\t\t\t\tat: [1],\n\t\t\t\t\t\t\t\t\tto: targetPath,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\tTransforms.unwrapNodes(editor, { at: targetPath })\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (SlateElement.isElement(node.children[0]) && !editor.isDefaultElement(node.children[0])) {\n\t\t\t\t\t\t\treturn Editor.withoutNormalizing(editor, () => {\n\t\t\t\t\t\t\t\tTransforms.wrapNodes(editor, editor.createDefaultElement([{ text: '' }]), {\n\t\t\t\t\t\t\t\t\tat: path,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\tTransforms.unwrapNodes(editor, { at: [0, 0] })\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (SlateElement.isElement(node) && Editor.isBlock(editor, node) && path.length > 1) {\n\t\t\t\t\t\treturn Transforms.unwrapNodes(editor, { at: path })\n\t\t\t\t\t}\n\t\t\t\t\tnormalizeNode(nodeEntry)\n\t\t\t\t},\n\t\t\t})\n\n\t\t\treturn editor\n\t\t})\n\n\t\tconst valueNodes = useRichTextFieldNodes({\n\t\t\teditor,\n\t\t\tfieldAccessor,\n\t\t\tcontemberFieldElementCache,\n\t\t})\n\n\t\tconst serialize = editor.serializeNodes\n\t\tconst onChange = useCallback(\n\t\t\t(value: Descendant[]) => {\n\t\t\t\tgetParent().batchUpdates(getAccessor => {\n\t\t\t\t\tconst fieldAccessor = getAccessor().getRelativeSingleField(desugaredField)\n\n\t\t\t\t\tif (SlateNode.string({ type: 'dummy', children: value }) === '' && fieldAccessor.valueOnServer === null) {\n\t\t\t\t\t\tfieldAccessor.updateValue(null)\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\n\t\t\t\t\tif (SlateElement.isElement(value[0])) {\n\t\t\t\t\t\tfieldAccessor.updateValue(serialize(value[0].children))\n\t\t\t\t\t\tcontemberFieldElementCache.set(getAccessor().getRelativeSingleField(desugaredField), value as SlateElement[])\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t},\n\t\t\t[getParent, contemberFieldElementCache, desugaredField, serialize],\n\t\t)\n\n\t\treturn (\n\t\t\t<Slate editor={editor} initialValue={valueNodes} onChange={onChange}>\n\t\t\t\t{props.children}\n\t\t\t</Slate>\n\t\t)\n\t},\n\tprops => (\n\t\t<>\n\t\t\t<Field defaultValue={props.defaultValue} field={props.field} isNonbearing={props.isNonbearing} />\n\t\t</>\n\t),\n\t'RichTextEditor',\n)\n\n"],"names":["Component","useEntity","useMemo","QueryLanguage","useState","editor","createEditor","paragraphElementType","Transforms","SlateElement","Editor","useRichTextFieldNodes","useCallback","fieldAccessor","SlateNode","Slate","jsx","Fragment","Field"],"mappings":"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"}
1
+ {"version":3,"file":"RichTextEditor.cjs","sources":["../../../../../packages/react-slate-editor-base/src/components/RichTextEditor.tsx"],"sourcesContent":["import { Component, Field, FieldAccessor, FieldBasicProps, QueryLanguage, useEntity } from '@contember/react-binding'\nimport { FunctionComponent, useCallback, useMemo, useState } from 'react'\nimport { Descendant, Editor, Element as SlateElement, Node as SlateNode, NodeEntry, Transforms } from 'slate'\nimport { Slate } from 'slate-react'\nimport { createEditor, CreateEditorPublicOptions } from '../editor'\nimport { paragraphElementType } from '../plugins'\nimport { useRichTextFieldNodes } from '../internal/hooks/useRichTextFieldNodes'\n\nexport type RichTextEditorProps =\n\t& FieldBasicProps\n\t& CreateEditorPublicOptions\n\t& {\n\t\tchildren: React.ReactNode\n\t}\n\n/**\n * Rich text field supports more advanced formatting capabilities. Output of this field is a JSON.\n *\n * @group Form Fields\n */\nexport const RichTextEditor: FunctionComponent<RichTextEditorProps> = Component(\n\tprops => {\n\t\tconst entity = useEntity()\n\t\tconst environment = entity.environment\n\t\tconst getParent = entity.getAccessor\n\n\t\tconst desugaredField = useMemo(\n\t\t\t() => QueryLanguage.desugarRelativeSingleField(props, environment),\n\t\t\t[environment, props],\n\t\t)\n\t\tconst fieldAccessor = useMemo(() => entity.getField<string>(desugaredField), [entity, desugaredField])\n\n\t\t// The cache is questionable, really.\n\t\tconst [contemberFieldElementCache] = useState(() => new WeakMap<FieldAccessor<string>, SlateElement[]>())\n\n\n\t\tconst [editor] = useState(() => {\n\t\t\tconst { editor } = createEditor({\n\t\t\t\tplugins: props.plugins,\n\t\t\t\tdefaultElementType: paragraphElementType,\n\t\t\t\tentity,\n\t\t\t\tenvironment,\n\t\t\t\tchildren: props.children,\n\t\t\t})\n\n\t\t\tconst { normalizeNode } = editor\n\t\t\tObject.assign(editor, {\n\t\t\t\tinsertBreak: () => {\n\t\t\t\t\tTransforms.insertText(editor, '\\n')\n\t\t\t\t},\n\t\t\t\tnormalizeNode: (nodeEntry: NodeEntry) => {\n\t\t\t\t\tconst [node, path] = nodeEntry\n\t\t\t\t\tif (path.length === 0 && SlateElement.isAncestor(node)) {\n\t\t\t\t\t\t// Enforce that there's exactly one child and that it's\n\t\t\t\t\t\tif (node.children.length > 1) {\n\t\t\t\t\t\t\treturn Editor.withoutNormalizing(editor, () => {\n\t\t\t\t\t\t\t\tconst targetPath = [0, (editor.children[0] as SlateElement).children.length]\n\t\t\t\t\t\t\t\tTransforms.moveNodes(editor, {\n\t\t\t\t\t\t\t\t\tat: [1],\n\t\t\t\t\t\t\t\t\tto: targetPath,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\tTransforms.unwrapNodes(editor, { at: targetPath })\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (SlateElement.isElement(node.children[0]) && !editor.isDefaultElement(node.children[0])) {\n\t\t\t\t\t\t\treturn Editor.withoutNormalizing(editor, () => {\n\t\t\t\t\t\t\t\tTransforms.wrapNodes(editor, editor.createDefaultElement([{ text: '' }]), {\n\t\t\t\t\t\t\t\t\tat: path,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\tTransforms.unwrapNodes(editor, { at: [0, 0] })\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (SlateElement.isElement(node) && Editor.isBlock(editor, node) && path.length > 1) {\n\t\t\t\t\t\treturn Transforms.unwrapNodes(editor, { at: path })\n\t\t\t\t\t}\n\t\t\t\t\tnormalizeNode(nodeEntry)\n\t\t\t\t},\n\t\t\t})\n\n\t\t\treturn editor\n\t\t})\n\n\t\tconst valueNodes = useRichTextFieldNodes({\n\t\t\teditor,\n\t\t\tfieldAccessor,\n\t\t\tcontemberFieldElementCache,\n\t\t})\n\n\t\tconst serialize = editor.serializeNodes\n\t\tconst onChange = useCallback(\n\t\t\t(value: Descendant[]) => {\n\t\t\t\tgetParent().batchUpdates(getAccessor => {\n\t\t\t\t\tconst fieldAccessor = getAccessor().getField(desugaredField)\n\n\t\t\t\t\tif (SlateNode.string({ type: 'dummy', children: value }) === '' && fieldAccessor.valueOnServer === null) {\n\t\t\t\t\t\tfieldAccessor.updateValue(null)\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\n\t\t\t\t\tif (SlateElement.isElement(value[0])) {\n\t\t\t\t\t\tfieldAccessor.updateValue(serialize(value[0].children))\n\t\t\t\t\t\tcontemberFieldElementCache.set(getAccessor().getField(desugaredField), value as SlateElement[])\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t},\n\t\t\t[getParent, contemberFieldElementCache, desugaredField, serialize],\n\t\t)\n\n\t\treturn (\n\t\t\t<Slate editor={editor} initialValue={valueNodes} onChange={onChange}>\n\t\t\t\t{props.children}\n\t\t\t</Slate>\n\t\t)\n\t},\n\tprops => (\n\t\t<>\n\t\t\t<Field defaultValue={props.defaultValue} field={props.field} isNonbearing={props.isNonbearing} />\n\t\t</>\n\t),\n\t'RichTextEditor',\n)\n\n"],"names":["Component","useEntity","useMemo","QueryLanguage","useState","editor","createEditor","paragraphElementType","Transforms","SlateElement","Editor","useRichTextFieldNodes","useCallback","fieldAccessor","SlateNode","Slate","jsx","Fragment","Field"],"mappings":"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"}
@@ -15,7 +15,7 @@ const RichTextEditor = Component(
15
15
  () => QueryLanguage.desugarRelativeSingleField(props, environment),
16
16
  [environment, props]
17
17
  );
18
- const fieldAccessor = useMemo(() => entity.getRelativeSingleField(desugaredField), [entity, desugaredField]);
18
+ const fieldAccessor = useMemo(() => entity.getField(desugaredField), [entity, desugaredField]);
19
19
  const [contemberFieldElementCache] = useState(() => /* @__PURE__ */ new WeakMap());
20
20
  const [editor] = useState(() => {
21
21
  const { editor: editor2 } = createEditor({
@@ -69,14 +69,14 @@ const RichTextEditor = Component(
69
69
  const onChange = useCallback(
70
70
  (value) => {
71
71
  getParent().batchUpdates((getAccessor) => {
72
- const fieldAccessor2 = getAccessor().getRelativeSingleField(desugaredField);
72
+ const fieldAccessor2 = getAccessor().getField(desugaredField);
73
73
  if (Node.string({ type: "dummy", children: value }) === "" && fieldAccessor2.valueOnServer === null) {
74
74
  fieldAccessor2.updateValue(null);
75
75
  return;
76
76
  }
77
77
  if (Element.isElement(value[0])) {
78
78
  fieldAccessor2.updateValue(serialize(value[0].children));
79
- contemberFieldElementCache.set(getAccessor().getRelativeSingleField(desugaredField), value);
79
+ contemberFieldElementCache.set(getAccessor().getField(desugaredField), value);
80
80
  }
81
81
  });
82
82
  },
@@ -1 +1 @@
1
- {"version":3,"file":"RichTextEditor.js","sources":["../../../../../packages/react-slate-editor-base/src/components/RichTextEditor.tsx"],"sourcesContent":["import { Component, Field, FieldAccessor, FieldBasicProps, QueryLanguage, useEntity } from '@contember/react-binding'\nimport { FunctionComponent, useCallback, useMemo, useState } from 'react'\nimport { Descendant, Editor, Element as SlateElement, Node as SlateNode, NodeEntry, Transforms } from 'slate'\nimport { Slate } from 'slate-react'\nimport { createEditor, CreateEditorPublicOptions } from '../editor'\nimport { paragraphElementType } from '../plugins'\nimport { useRichTextFieldNodes } from '../internal/hooks/useRichTextFieldNodes'\n\nexport type RichTextEditorProps =\n\t& FieldBasicProps\n\t& CreateEditorPublicOptions\n\t& {\n\t\tchildren: React.ReactNode\n\t}\n\n/**\n * Rich text field supports more advanced formatting capabilities. Output of this field is a JSON.\n *\n * @group Form Fields\n */\nexport const RichTextEditor: FunctionComponent<RichTextEditorProps> = Component(\n\tprops => {\n\t\tconst entity = useEntity()\n\t\tconst environment = entity.environment\n\t\tconst getParent = entity.getAccessor\n\n\t\tconst desugaredField = useMemo(\n\t\t\t() => QueryLanguage.desugarRelativeSingleField(props, environment),\n\t\t\t[environment, props],\n\t\t)\n\t\tconst fieldAccessor = useMemo(() => entity.getRelativeSingleField<string>(desugaredField), [entity, desugaredField])\n\n\t\t// The cache is questionable, really.\n\t\tconst [contemberFieldElementCache] = useState(() => new WeakMap<FieldAccessor<string>, SlateElement[]>())\n\n\n\t\tconst [editor] = useState(() => {\n\t\t\tconst { editor } = createEditor({\n\t\t\t\tplugins: props.plugins,\n\t\t\t\tdefaultElementType: paragraphElementType,\n\t\t\t\tentity,\n\t\t\t\tenvironment,\n\t\t\t\tchildren: props.children,\n\t\t\t})\n\n\t\t\tconst { normalizeNode } = editor\n\t\t\tObject.assign(editor, {\n\t\t\t\tinsertBreak: () => {\n\t\t\t\t\tTransforms.insertText(editor, '\\n')\n\t\t\t\t},\n\t\t\t\tnormalizeNode: (nodeEntry: NodeEntry) => {\n\t\t\t\t\tconst [node, path] = nodeEntry\n\t\t\t\t\tif (path.length === 0 && SlateElement.isAncestor(node)) {\n\t\t\t\t\t\t// Enforce that there's exactly one child and that it's\n\t\t\t\t\t\tif (node.children.length > 1) {\n\t\t\t\t\t\t\treturn Editor.withoutNormalizing(editor, () => {\n\t\t\t\t\t\t\t\tconst targetPath = [0, (editor.children[0] as SlateElement).children.length]\n\t\t\t\t\t\t\t\tTransforms.moveNodes(editor, {\n\t\t\t\t\t\t\t\t\tat: [1],\n\t\t\t\t\t\t\t\t\tto: targetPath,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\tTransforms.unwrapNodes(editor, { at: targetPath })\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (SlateElement.isElement(node.children[0]) && !editor.isDefaultElement(node.children[0])) {\n\t\t\t\t\t\t\treturn Editor.withoutNormalizing(editor, () => {\n\t\t\t\t\t\t\t\tTransforms.wrapNodes(editor, editor.createDefaultElement([{ text: '' }]), {\n\t\t\t\t\t\t\t\t\tat: path,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\tTransforms.unwrapNodes(editor, { at: [0, 0] })\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (SlateElement.isElement(node) && Editor.isBlock(editor, node) && path.length > 1) {\n\t\t\t\t\t\treturn Transforms.unwrapNodes(editor, { at: path })\n\t\t\t\t\t}\n\t\t\t\t\tnormalizeNode(nodeEntry)\n\t\t\t\t},\n\t\t\t})\n\n\t\t\treturn editor\n\t\t})\n\n\t\tconst valueNodes = useRichTextFieldNodes({\n\t\t\teditor,\n\t\t\tfieldAccessor,\n\t\t\tcontemberFieldElementCache,\n\t\t})\n\n\t\tconst serialize = editor.serializeNodes\n\t\tconst onChange = useCallback(\n\t\t\t(value: Descendant[]) => {\n\t\t\t\tgetParent().batchUpdates(getAccessor => {\n\t\t\t\t\tconst fieldAccessor = getAccessor().getRelativeSingleField(desugaredField)\n\n\t\t\t\t\tif (SlateNode.string({ type: 'dummy', children: value }) === '' && fieldAccessor.valueOnServer === null) {\n\t\t\t\t\t\tfieldAccessor.updateValue(null)\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\n\t\t\t\t\tif (SlateElement.isElement(value[0])) {\n\t\t\t\t\t\tfieldAccessor.updateValue(serialize(value[0].children))\n\t\t\t\t\t\tcontemberFieldElementCache.set(getAccessor().getRelativeSingleField(desugaredField), value as SlateElement[])\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t},\n\t\t\t[getParent, contemberFieldElementCache, desugaredField, serialize],\n\t\t)\n\n\t\treturn (\n\t\t\t<Slate editor={editor} initialValue={valueNodes} onChange={onChange}>\n\t\t\t\t{props.children}\n\t\t\t</Slate>\n\t\t)\n\t},\n\tprops => (\n\t\t<>\n\t\t\t<Field defaultValue={props.defaultValue} field={props.field} isNonbearing={props.isNonbearing} />\n\t\t</>\n\t),\n\t'RichTextEditor',\n)\n\n"],"names":["editor","SlateElement","fieldAccessor","SlateNode"],"mappings":"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"}
1
+ {"version":3,"file":"RichTextEditor.js","sources":["../../../../../packages/react-slate-editor-base/src/components/RichTextEditor.tsx"],"sourcesContent":["import { Component, Field, FieldAccessor, FieldBasicProps, QueryLanguage, useEntity } from '@contember/react-binding'\nimport { FunctionComponent, useCallback, useMemo, useState } from 'react'\nimport { Descendant, Editor, Element as SlateElement, Node as SlateNode, NodeEntry, Transforms } from 'slate'\nimport { Slate } from 'slate-react'\nimport { createEditor, CreateEditorPublicOptions } from '../editor'\nimport { paragraphElementType } from '../plugins'\nimport { useRichTextFieldNodes } from '../internal/hooks/useRichTextFieldNodes'\n\nexport type RichTextEditorProps =\n\t& FieldBasicProps\n\t& CreateEditorPublicOptions\n\t& {\n\t\tchildren: React.ReactNode\n\t}\n\n/**\n * Rich text field supports more advanced formatting capabilities. Output of this field is a JSON.\n *\n * @group Form Fields\n */\nexport const RichTextEditor: FunctionComponent<RichTextEditorProps> = Component(\n\tprops => {\n\t\tconst entity = useEntity()\n\t\tconst environment = entity.environment\n\t\tconst getParent = entity.getAccessor\n\n\t\tconst desugaredField = useMemo(\n\t\t\t() => QueryLanguage.desugarRelativeSingleField(props, environment),\n\t\t\t[environment, props],\n\t\t)\n\t\tconst fieldAccessor = useMemo(() => entity.getField<string>(desugaredField), [entity, desugaredField])\n\n\t\t// The cache is questionable, really.\n\t\tconst [contemberFieldElementCache] = useState(() => new WeakMap<FieldAccessor<string>, SlateElement[]>())\n\n\n\t\tconst [editor] = useState(() => {\n\t\t\tconst { editor } = createEditor({\n\t\t\t\tplugins: props.plugins,\n\t\t\t\tdefaultElementType: paragraphElementType,\n\t\t\t\tentity,\n\t\t\t\tenvironment,\n\t\t\t\tchildren: props.children,\n\t\t\t})\n\n\t\t\tconst { normalizeNode } = editor\n\t\t\tObject.assign(editor, {\n\t\t\t\tinsertBreak: () => {\n\t\t\t\t\tTransforms.insertText(editor, '\\n')\n\t\t\t\t},\n\t\t\t\tnormalizeNode: (nodeEntry: NodeEntry) => {\n\t\t\t\t\tconst [node, path] = nodeEntry\n\t\t\t\t\tif (path.length === 0 && SlateElement.isAncestor(node)) {\n\t\t\t\t\t\t// Enforce that there's exactly one child and that it's\n\t\t\t\t\t\tif (node.children.length > 1) {\n\t\t\t\t\t\t\treturn Editor.withoutNormalizing(editor, () => {\n\t\t\t\t\t\t\t\tconst targetPath = [0, (editor.children[0] as SlateElement).children.length]\n\t\t\t\t\t\t\t\tTransforms.moveNodes(editor, {\n\t\t\t\t\t\t\t\t\tat: [1],\n\t\t\t\t\t\t\t\t\tto: targetPath,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\tTransforms.unwrapNodes(editor, { at: targetPath })\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (SlateElement.isElement(node.children[0]) && !editor.isDefaultElement(node.children[0])) {\n\t\t\t\t\t\t\treturn Editor.withoutNormalizing(editor, () => {\n\t\t\t\t\t\t\t\tTransforms.wrapNodes(editor, editor.createDefaultElement([{ text: '' }]), {\n\t\t\t\t\t\t\t\t\tat: path,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\tTransforms.unwrapNodes(editor, { at: [0, 0] })\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (SlateElement.isElement(node) && Editor.isBlock(editor, node) && path.length > 1) {\n\t\t\t\t\t\treturn Transforms.unwrapNodes(editor, { at: path })\n\t\t\t\t\t}\n\t\t\t\t\tnormalizeNode(nodeEntry)\n\t\t\t\t},\n\t\t\t})\n\n\t\t\treturn editor\n\t\t})\n\n\t\tconst valueNodes = useRichTextFieldNodes({\n\t\t\teditor,\n\t\t\tfieldAccessor,\n\t\t\tcontemberFieldElementCache,\n\t\t})\n\n\t\tconst serialize = editor.serializeNodes\n\t\tconst onChange = useCallback(\n\t\t\t(value: Descendant[]) => {\n\t\t\t\tgetParent().batchUpdates(getAccessor => {\n\t\t\t\t\tconst fieldAccessor = getAccessor().getField(desugaredField)\n\n\t\t\t\t\tif (SlateNode.string({ type: 'dummy', children: value }) === '' && fieldAccessor.valueOnServer === null) {\n\t\t\t\t\t\tfieldAccessor.updateValue(null)\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\n\t\t\t\t\tif (SlateElement.isElement(value[0])) {\n\t\t\t\t\t\tfieldAccessor.updateValue(serialize(value[0].children))\n\t\t\t\t\t\tcontemberFieldElementCache.set(getAccessor().getField(desugaredField), value as SlateElement[])\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t},\n\t\t\t[getParent, contemberFieldElementCache, desugaredField, serialize],\n\t\t)\n\n\t\treturn (\n\t\t\t<Slate editor={editor} initialValue={valueNodes} onChange={onChange}>\n\t\t\t\t{props.children}\n\t\t\t</Slate>\n\t\t)\n\t},\n\tprops => (\n\t\t<>\n\t\t\t<Field defaultValue={props.defaultValue} field={props.field} isNonbearing={props.isNonbearing} />\n\t\t</>\n\t),\n\t'RichTextEditor',\n)\n\n"],"names":["editor","SlateElement","fieldAccessor","SlateNode"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"createEditor.cjs","sources":["../../../../../packages/react-slate-editor-base/src/editor/createEditor.ts"],"sourcesContent":["import { createEditorWithEssentials } from './createEditorWithEssentials'\nimport { Editor } from 'slate'\nimport { EditorPlugin, EditorPluginWrapperProps } from '../types'\nimport { createElement, FunctionComponent, ReactNode } from 'react'\nimport { EntityAccessor } from '@contember/binding'\nimport { Environment } from '@contember/react-binding'\n\n\nexport interface CreateEditorPublicOptions {\n\tplugins?: EditorPlugin[]\n}\n\nexport interface CreateEditorOptions extends CreateEditorPublicOptions {\n\tdefaultElementType: string\n\tentity: EntityAccessor\n\tenvironment: Environment\n\tchildren: ReactNode\n}\n\nexport const createEditor = ({\n\tplugins = [],\n\tdefaultElementType,\n\tentity,\n\tenvironment,\n\tchildren,\n}: CreateEditorOptions): {\n\teditor: Editor\n\tOuterWrapper: FunctionComponent<{ children: ReactNode }>\n\tInnerWrapper: FunctionComponent<{ children: ReactNode }>\n} => {\n\tconst editor = createEditorWithEssentials({ defaultElementType })\n\tconst outerWrappers: FunctionComponent<EditorPluginWrapperProps>[] = []\n\tconst innerWrappers: FunctionComponent<EditorPluginWrapperProps>[] = []\n\tplugins?.forEach(plugin => {\n\t\tif (typeof plugin === 'function') {\n\t\t\tplugin(editor)\n\t\t\treturn\n\t\t}\n\t\tplugin.extendEditor?.({ editor, children, environment, entity })\n\t\tif (plugin?.OuterWrapper) {\n\t\t\touterWrappers.push(plugin.OuterWrapper)\n\t\t}\n\t\tif (plugin?.InnerWrapper) {\n\t\t\tinnerWrappers.push(plugin.InnerWrapper)\n\t\t}\n\t})\n\treturn {\n\t\teditor,\n\t\tOuterWrapper: ({ children }) => outerWrappers.reduceRight((acc, Wrapper) => createElement(Wrapper, { editor }, acc), children),\n\t\tInnerWrapper: ({ children }) => innerWrappers.reduceRight((acc, Wrapper) => createElement(Wrapper, { editor }, acc), children),\n\t}\n}\n"],"names":["createEditorWithEssentials","children","createElement"],"mappings":";;;;AAmBO,MAAM,eAAe,CAAC;AAAA,EAC5B,UAAU,CAAC;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,MAIK;AACJ,QAAM,SAASA,2BAAAA,2BAA2B,EAAE,mBAAoB,CAAA;AAChE,QAAM,gBAA+D,CAAA;AACrE,QAAM,gBAA+D,CAAA;AACrE,WAAS,QAAQ,CAAU,WAAA;AACtB,QAAA,OAAO,WAAW,YAAY;AACjC,aAAO,MAAM;AACb;AAAA,IACD;AACA,WAAO,eAAe,EAAE,QAAQ,UAAU,aAAa,QAAQ;AAC/D,QAAI,QAAQ,cAAc;AACX,oBAAA,KAAK,OAAO,YAAY;AAAA,IACvC;AACA,QAAI,QAAQ,cAAc;AACX,oBAAA,KAAK,OAAO,YAAY;AAAA,IACvC;AAAA,EAAA,CACA;AACM,SAAA;AAAA,IACN;AAAA,IACA,cAAc,CAAC,EAAE,UAAAC,UAAS,MAAM,cAAc,YAAY,CAAC,KAAK,YAAYC,MAAAA,cAAc,SAAS,EAAE,UAAU,GAAG,GAAGD,SAAQ;AAAA,IAC7H,cAAc,CAAC,EAAE,UAAAA,UAAS,MAAM,cAAc,YAAY,CAAC,KAAK,YAAYC,MAAAA,cAAc,SAAS,EAAE,UAAU,GAAG,GAAGD,SAAQ;AAAA,EAAA;AAE/H;;"}
1
+ {"version":3,"file":"createEditor.cjs","sources":["../../../../../packages/react-slate-editor-base/src/editor/createEditor.ts"],"sourcesContent":["import { createEditorWithEssentials } from './createEditorWithEssentials'\nimport { Editor } from 'slate'\nimport { EditorPlugin, EditorPluginWrapperProps } from '../types'\nimport { createElement, FunctionComponent, ReactNode } from 'react'\nimport { EntityAccessor } from '@contember/react-binding'\nimport { Environment } from '@contember/react-binding'\n\n\nexport interface CreateEditorPublicOptions {\n\tplugins?: EditorPlugin[]\n}\n\nexport interface CreateEditorOptions extends CreateEditorPublicOptions {\n\tdefaultElementType: string\n\tentity: EntityAccessor\n\tenvironment: Environment\n\tchildren: ReactNode\n}\n\nexport const createEditor = ({\n\tplugins = [],\n\tdefaultElementType,\n\tentity,\n\tenvironment,\n\tchildren,\n}: CreateEditorOptions): {\n\teditor: Editor\n\tOuterWrapper: FunctionComponent<{ children: ReactNode }>\n\tInnerWrapper: FunctionComponent<{ children: ReactNode }>\n} => {\n\tconst editor = createEditorWithEssentials({ defaultElementType })\n\tconst outerWrappers: FunctionComponent<EditorPluginWrapperProps>[] = []\n\tconst innerWrappers: FunctionComponent<EditorPluginWrapperProps>[] = []\n\tplugins?.forEach(plugin => {\n\t\tif (typeof plugin === 'function') {\n\t\t\tplugin(editor)\n\t\t\treturn\n\t\t}\n\t\tplugin.extendEditor?.({ editor, children, environment, entity })\n\t\tif (plugin?.OuterWrapper) {\n\t\t\touterWrappers.push(plugin.OuterWrapper)\n\t\t}\n\t\tif (plugin?.InnerWrapper) {\n\t\t\tinnerWrappers.push(plugin.InnerWrapper)\n\t\t}\n\t})\n\treturn {\n\t\teditor,\n\t\tOuterWrapper: ({ children }) => outerWrappers.reduceRight((acc, Wrapper) => createElement(Wrapper, { editor }, acc), children),\n\t\tInnerWrapper: ({ children }) => innerWrappers.reduceRight((acc, Wrapper) => createElement(Wrapper, { editor }, acc), children),\n\t}\n}\n"],"names":["createEditorWithEssentials","children","createElement"],"mappings":";;;;AAmBO,MAAM,eAAe,CAAC;AAAA,EAC5B,UAAU,CAAC;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,MAIK;AACJ,QAAM,SAASA,2BAAAA,2BAA2B,EAAE,mBAAoB,CAAA;AAChE,QAAM,gBAA+D,CAAA;AACrE,QAAM,gBAA+D,CAAA;AACrE,WAAS,QAAQ,CAAU,WAAA;AACtB,QAAA,OAAO,WAAW,YAAY;AACjC,aAAO,MAAM;AACb;AAAA,IACD;AACA,WAAO,eAAe,EAAE,QAAQ,UAAU,aAAa,QAAQ;AAC/D,QAAI,QAAQ,cAAc;AACX,oBAAA,KAAK,OAAO,YAAY;AAAA,IACvC;AACA,QAAI,QAAQ,cAAc;AACX,oBAAA,KAAK,OAAO,YAAY;AAAA,IACvC;AAAA,EAAA,CACA;AACM,SAAA;AAAA,IACN;AAAA,IACA,cAAc,CAAC,EAAE,UAAAC,UAAS,MAAM,cAAc,YAAY,CAAC,KAAK,YAAYC,MAAAA,cAAc,SAAS,EAAE,UAAU,GAAG,GAAGD,SAAQ;AAAA,IAC7H,cAAc,CAAC,EAAE,UAAAA,UAAS,MAAM,cAAc,YAAY,CAAC,KAAK,YAAYC,MAAAA,cAAc,SAAS,EAAE,UAAU,GAAG,GAAGD,SAAQ;AAAA,EAAA;AAE/H;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"createEditor.js","sources":["../../../../../packages/react-slate-editor-base/src/editor/createEditor.ts"],"sourcesContent":["import { createEditorWithEssentials } from './createEditorWithEssentials'\nimport { Editor } from 'slate'\nimport { EditorPlugin, EditorPluginWrapperProps } from '../types'\nimport { createElement, FunctionComponent, ReactNode } from 'react'\nimport { EntityAccessor } from '@contember/binding'\nimport { Environment } from '@contember/react-binding'\n\n\nexport interface CreateEditorPublicOptions {\n\tplugins?: EditorPlugin[]\n}\n\nexport interface CreateEditorOptions extends CreateEditorPublicOptions {\n\tdefaultElementType: string\n\tentity: EntityAccessor\n\tenvironment: Environment\n\tchildren: ReactNode\n}\n\nexport const createEditor = ({\n\tplugins = [],\n\tdefaultElementType,\n\tentity,\n\tenvironment,\n\tchildren,\n}: CreateEditorOptions): {\n\teditor: Editor\n\tOuterWrapper: FunctionComponent<{ children: ReactNode }>\n\tInnerWrapper: FunctionComponent<{ children: ReactNode }>\n} => {\n\tconst editor = createEditorWithEssentials({ defaultElementType })\n\tconst outerWrappers: FunctionComponent<EditorPluginWrapperProps>[] = []\n\tconst innerWrappers: FunctionComponent<EditorPluginWrapperProps>[] = []\n\tplugins?.forEach(plugin => {\n\t\tif (typeof plugin === 'function') {\n\t\t\tplugin(editor)\n\t\t\treturn\n\t\t}\n\t\tplugin.extendEditor?.({ editor, children, environment, entity })\n\t\tif (plugin?.OuterWrapper) {\n\t\t\touterWrappers.push(plugin.OuterWrapper)\n\t\t}\n\t\tif (plugin?.InnerWrapper) {\n\t\t\tinnerWrappers.push(plugin.InnerWrapper)\n\t\t}\n\t})\n\treturn {\n\t\teditor,\n\t\tOuterWrapper: ({ children }) => outerWrappers.reduceRight((acc, Wrapper) => createElement(Wrapper, { editor }, acc), children),\n\t\tInnerWrapper: ({ children }) => innerWrappers.reduceRight((acc, Wrapper) => createElement(Wrapper, { editor }, acc), children),\n\t}\n}\n"],"names":["children"],"mappings":";;AAmBO,MAAM,eAAe,CAAC;AAAA,EAC5B,UAAU,CAAC;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,MAIK;AACJ,QAAM,SAAS,2BAA2B,EAAE,mBAAoB,CAAA;AAChE,QAAM,gBAA+D,CAAA;AACrE,QAAM,gBAA+D,CAAA;AACrE,WAAS,QAAQ,CAAU,WAAA;AACtB,QAAA,OAAO,WAAW,YAAY;AACjC,aAAO,MAAM;AACb;AAAA,IACD;AACA,WAAO,eAAe,EAAE,QAAQ,UAAU,aAAa,QAAQ;AAC/D,QAAI,QAAQ,cAAc;AACX,oBAAA,KAAK,OAAO,YAAY;AAAA,IACvC;AACA,QAAI,QAAQ,cAAc;AACX,oBAAA,KAAK,OAAO,YAAY;AAAA,IACvC;AAAA,EAAA,CACA;AACM,SAAA;AAAA,IACN;AAAA,IACA,cAAc,CAAC,EAAE,UAAAA,UAAS,MAAM,cAAc,YAAY,CAAC,KAAK,YAAY,cAAc,SAAS,EAAE,UAAU,GAAG,GAAGA,SAAQ;AAAA,IAC7H,cAAc,CAAC,EAAE,UAAAA,UAAS,MAAM,cAAc,YAAY,CAAC,KAAK,YAAY,cAAc,SAAS,EAAE,UAAU,GAAG,GAAGA,SAAQ;AAAA,EAAA;AAE/H;"}
1
+ {"version":3,"file":"createEditor.js","sources":["../../../../../packages/react-slate-editor-base/src/editor/createEditor.ts"],"sourcesContent":["import { createEditorWithEssentials } from './createEditorWithEssentials'\nimport { Editor } from 'slate'\nimport { EditorPlugin, EditorPluginWrapperProps } from '../types'\nimport { createElement, FunctionComponent, ReactNode } from 'react'\nimport { EntityAccessor } from '@contember/react-binding'\nimport { Environment } from '@contember/react-binding'\n\n\nexport interface CreateEditorPublicOptions {\n\tplugins?: EditorPlugin[]\n}\n\nexport interface CreateEditorOptions extends CreateEditorPublicOptions {\n\tdefaultElementType: string\n\tentity: EntityAccessor\n\tenvironment: Environment\n\tchildren: ReactNode\n}\n\nexport const createEditor = ({\n\tplugins = [],\n\tdefaultElementType,\n\tentity,\n\tenvironment,\n\tchildren,\n}: CreateEditorOptions): {\n\teditor: Editor\n\tOuterWrapper: FunctionComponent<{ children: ReactNode }>\n\tInnerWrapper: FunctionComponent<{ children: ReactNode }>\n} => {\n\tconst editor = createEditorWithEssentials({ defaultElementType })\n\tconst outerWrappers: FunctionComponent<EditorPluginWrapperProps>[] = []\n\tconst innerWrappers: FunctionComponent<EditorPluginWrapperProps>[] = []\n\tplugins?.forEach(plugin => {\n\t\tif (typeof plugin === 'function') {\n\t\t\tplugin(editor)\n\t\t\treturn\n\t\t}\n\t\tplugin.extendEditor?.({ editor, children, environment, entity })\n\t\tif (plugin?.OuterWrapper) {\n\t\t\touterWrappers.push(plugin.OuterWrapper)\n\t\t}\n\t\tif (plugin?.InnerWrapper) {\n\t\t\tinnerWrappers.push(plugin.InnerWrapper)\n\t\t}\n\t})\n\treturn {\n\t\teditor,\n\t\tOuterWrapper: ({ children }) => outerWrappers.reduceRight((acc, Wrapper) => createElement(Wrapper, { editor }, acc), children),\n\t\tInnerWrapper: ({ children }) => innerWrappers.reduceRight((acc, Wrapper) => createElement(Wrapper, { editor }, acc), children),\n\t}\n}\n"],"names":["children"],"mappings":";;AAmBO,MAAM,eAAe,CAAC;AAAA,EAC5B,UAAU,CAAC;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,MAIK;AACJ,QAAM,SAAS,2BAA2B,EAAE,mBAAoB,CAAA;AAChE,QAAM,gBAA+D,CAAA;AACrE,QAAM,gBAA+D,CAAA;AACrE,WAAS,QAAQ,CAAU,WAAA;AACtB,QAAA,OAAO,WAAW,YAAY;AACjC,aAAO,MAAM;AACb;AAAA,IACD;AACA,WAAO,eAAe,EAAE,QAAQ,UAAU,aAAa,QAAQ;AAC/D,QAAI,QAAQ,cAAc;AACX,oBAAA,KAAK,OAAO,YAAY;AAAA,IACvC;AACA,QAAI,QAAQ,cAAc;AACX,oBAAA,KAAK,OAAO,YAAY;AAAA,IACvC;AAAA,EAAA,CACA;AACM,SAAA;AAAA,IACN;AAAA,IACA,cAAc,CAAC,EAAE,UAAAA,UAAS,MAAM,cAAc,YAAY,CAAC,KAAK,YAAY,cAAc,SAAS,EAAE,UAAU,GAAG,GAAGA,SAAQ;AAAA,IAC7H,cAAc,CAAC,EAAE,UAAAA,UAAS,MAAM,cAAc,YAAY,CAAC,KAAK,YAAY,cAAc,SAAS,EAAE,UAAU,GAAG,GAAGA,SAAQ;AAAA,EAAA;AAE/H;"}
@@ -1,7 +1,7 @@
1
1
  import { Editor } from 'slate';
2
2
  import { EditorPlugin } from '../types';
3
3
  import { FunctionComponent, ReactNode } from 'react';
4
- import { EntityAccessor } from '@contember/binding';
4
+ import { EntityAccessor } from '@contember/react-binding';
5
5
  import { Environment } from '@contember/react-binding';
6
6
  export interface CreateEditorPublicOptions {
7
7
  plugins?: EditorPlugin[];
@@ -1 +1 @@
1
- {"version":3,"file":"createEditor.d.ts","sourceRoot":"","sources":["../../../src/editor/createEditor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,YAAY,EAA4B,MAAM,UAAU,CAAA;AACjE,OAAO,EAAiB,iBAAiB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAGtD,MAAM,WAAW,yBAAyB;IACzC,OAAO,CAAC,EAAE,YAAY,EAAE,CAAA;CACxB;AAED,MAAM,WAAW,mBAAoB,SAAQ,yBAAyB;IACrE,kBAAkB,EAAE,MAAM,CAAA;IAC1B,MAAM,EAAE,cAAc,CAAA;IACtB,WAAW,EAAE,WAAW,CAAA;IACxB,QAAQ,EAAE,SAAS,CAAA;CACnB;AAED,eAAO,MAAM,YAAY,oEAMtB,mBAAmB,KAAG;IACxB,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,iBAAiB,CAAC;QAAE,QAAQ,EAAE,SAAS,CAAA;KAAE,CAAC,CAAA;IACxD,YAAY,EAAE,iBAAiB,CAAC;QAAE,QAAQ,EAAE,SAAS,CAAA;KAAE,CAAC,CAAA;CAuBxD,CAAA"}
1
+ {"version":3,"file":"createEditor.d.ts","sourceRoot":"","sources":["../../../src/editor/createEditor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,YAAY,EAA4B,MAAM,UAAU,CAAA;AACjE,OAAO,EAAiB,iBAAiB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAGtD,MAAM,WAAW,yBAAyB;IACzC,OAAO,CAAC,EAAE,YAAY,EAAE,CAAA;CACxB;AAED,MAAM,WAAW,mBAAoB,SAAQ,yBAAyB;IACrE,kBAAkB,EAAE,MAAM,CAAA;IAC1B,MAAM,EAAE,cAAc,CAAA;IACtB,WAAW,EAAE,WAAW,CAAA;IACxB,QAAQ,EAAE,SAAS,CAAA;CACnB;AAED,eAAO,MAAM,YAAY,oEAMtB,mBAAmB,KAAG;IACxB,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,iBAAiB,CAAC;QAAE,QAAQ,EAAE,SAAS,CAAA;KAAE,CAAC,CAAA;IACxD,YAAY,EAAE,iBAAiB,CAAC;QAAE,QAAQ,EAAE,SAAS,CAAA;KAAE,CAAC,CAAA;CAuBxD,CAAA"}