@portabletext/editor 2.13.2 → 2.13.4

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.
Files changed (191) hide show
  1. package/lib/_chunks-cjs/{selector.is-selection-expanded.cjs → selector.get-selection-text.cjs} +25 -25
  2. package/lib/_chunks-cjs/selector.get-selection-text.cjs.map +1 -0
  3. package/lib/_chunks-cjs/selector.get-text-before.cjs +4 -4
  4. package/lib/_chunks-cjs/selector.get-text-before.cjs.map +1 -1
  5. package/lib/_chunks-cjs/{selector.is-selecting-entire-blocks.cjs → selector.is-active-style.cjs} +408 -399
  6. package/lib/_chunks-cjs/selector.is-active-style.cjs.map +1 -0
  7. package/lib/_chunks-cjs/util.child-selection-point-to-block-offset.cjs +3 -3
  8. package/lib/_chunks-cjs/util.child-selection-point-to-block-offset.cjs.map +1 -1
  9. package/lib/_chunks-cjs/{util.slice-blocks.cjs → util.get-text-block-text.cjs} +25 -26
  10. package/lib/_chunks-cjs/util.get-text-block-text.cjs.map +1 -0
  11. package/lib/_chunks-cjs/{util.is-selection-collapsed.cjs → util.is-empty-text-block.cjs} +9 -9
  12. package/lib/_chunks-cjs/util.is-empty-text-block.cjs.map +1 -0
  13. package/lib/_chunks-cjs/util.merge-text-blocks.cjs +2 -2
  14. package/lib/_chunks-cjs/util.merge-text-blocks.cjs.map +1 -1
  15. package/lib/_chunks-cjs/util.slice-text-block.cjs +5 -5
  16. package/lib/_chunks-cjs/util.slice-text-block.cjs.map +1 -1
  17. package/lib/_chunks-dts/behavior.types.action.d.cts +270 -270
  18. package/lib/_chunks-dts/behavior.types.action.d.ts +273 -273
  19. package/lib/_chunks-es/{selector.is-selection-expanded.js → selector.get-selection-text.js} +20 -20
  20. package/lib/_chunks-es/selector.get-selection-text.js.map +1 -0
  21. package/lib/_chunks-es/selector.get-text-before.js +2 -2
  22. package/lib/_chunks-es/selector.get-text-before.js.map +1 -1
  23. package/lib/_chunks-es/{selector.is-selecting-entire-blocks.js → selector.is-active-style.js} +385 -376
  24. package/lib/_chunks-es/selector.is-active-style.js.map +1 -0
  25. package/lib/_chunks-es/util.child-selection-point-to-block-offset.js +1 -1
  26. package/lib/_chunks-es/util.child-selection-point-to-block-offset.js.map +1 -1
  27. package/lib/_chunks-es/{util.slice-blocks.js → util.get-text-block-text.js} +25 -26
  28. package/lib/_chunks-es/util.get-text-block-text.js.map +1 -0
  29. package/lib/_chunks-es/{util.is-selection-collapsed.js → util.is-empty-text-block.js} +8 -8
  30. package/lib/_chunks-es/util.is-empty-text-block.js.map +1 -0
  31. package/lib/_chunks-es/util.merge-text-blocks.js +1 -1
  32. package/lib/_chunks-es/util.merge-text-blocks.js.map +1 -1
  33. package/lib/_chunks-es/util.slice-text-block.js +1 -1
  34. package/lib/_chunks-es/util.slice-text-block.js.map +1 -1
  35. package/lib/index.cjs +429 -363
  36. package/lib/index.cjs.map +1 -1
  37. package/lib/index.js +225 -159
  38. package/lib/index.js.map +1 -1
  39. package/lib/plugins/index.cjs +21 -21
  40. package/lib/plugins/index.cjs.map +1 -1
  41. package/lib/plugins/index.d.cts +4 -4
  42. package/lib/plugins/index.d.ts +4 -4
  43. package/lib/plugins/index.js +3 -3
  44. package/lib/plugins/index.js.map +1 -1
  45. package/lib/selectors/index.cjs +52 -52
  46. package/lib/selectors/index.cjs.map +1 -1
  47. package/lib/selectors/index.d.cts +4 -1
  48. package/lib/selectors/index.d.ts +4 -1
  49. package/lib/selectors/index.js +5 -5
  50. package/lib/selectors/index.js.map +1 -1
  51. package/lib/utils/index.cjs +14 -14
  52. package/lib/utils/index.cjs.map +1 -1
  53. package/lib/utils/index.d.ts +2 -2
  54. package/lib/utils/index.js +3 -3
  55. package/lib/utils/index.js.map +1 -1
  56. package/package.json +12 -12
  57. package/src/behaviors/behavior.abstract.annotation.ts +3 -3
  58. package/src/behaviors/behavior.abstract.decorator.ts +2 -2
  59. package/src/behaviors/behavior.abstract.delete.ts +25 -16
  60. package/src/behaviors/behavior.abstract.deserialize.ts +4 -3
  61. package/src/behaviors/behavior.abstract.insert.ts +6 -7
  62. package/src/behaviors/behavior.abstract.keyboard.ts +7 -8
  63. package/src/behaviors/behavior.abstract.list-item.ts +2 -1
  64. package/src/behaviors/behavior.abstract.move.ts +2 -1
  65. package/src/behaviors/behavior.abstract.select.ts +4 -2
  66. package/src/behaviors/behavior.abstract.split.ts +33 -24
  67. package/src/behaviors/behavior.abstract.style.ts +2 -1
  68. package/src/behaviors/behavior.abstract.ts +8 -7
  69. package/src/behaviors/behavior.core.annotations.ts +8 -7
  70. package/src/behaviors/behavior.core.block-element.ts +7 -5
  71. package/src/behaviors/behavior.core.block-objects.ts +25 -27
  72. package/src/behaviors/behavior.core.dnd.ts +10 -8
  73. package/src/behaviors/behavior.core.insert-break.ts +45 -36
  74. package/src/behaviors/behavior.core.lists.ts +31 -25
  75. package/src/behaviors/behavior.decorator-pair.ts +26 -23
  76. package/src/behaviors/behavior.markdown.ts +26 -21
  77. package/src/converters/converter.portable-text.ts +3 -3
  78. package/src/converters/converter.text-html.serialize.test.ts +1 -1
  79. package/src/converters/converter.text-html.ts +3 -3
  80. package/src/converters/converter.text-plain.test.ts +1 -1
  81. package/src/converters/converter.text-plain.ts +3 -3
  82. package/src/editor/Editable.tsx +18 -78
  83. package/src/editor/components/render-span.tsx +3 -5
  84. package/src/editor/create-editor.ts +2 -2
  85. package/src/editor/create-slate-editor.tsx +1 -4
  86. package/src/editor/editor-dom.ts +2 -2
  87. package/src/editor/plugins/createWithEditableAPI.ts +5 -10
  88. package/src/editor/plugins/createWithMaxBlocks.ts +2 -2
  89. package/src/editor/plugins/createWithObjectKeys.ts +2 -2
  90. package/src/editor/plugins/createWithPatches.ts +3 -10
  91. package/src/editor/plugins/createWithPlaceholderBlock.ts +2 -2
  92. package/src/editor/plugins/createWithPortableTextMarkModel.ts +2 -2
  93. package/src/editor/plugins/createWithSchemaTypes.ts +1 -1
  94. package/src/editor/plugins/createWithUndoRedo.ts +6 -6
  95. package/src/editor/plugins/slate-plugin.update-selection.ts +1 -1
  96. package/src/editor/sync-machine.ts +2 -5
  97. package/src/editor/validate-selection-machine.test.ts +47 -0
  98. package/src/editor/validate-selection-machine.ts +149 -0
  99. package/src/{internal-utils → editor}/weakMaps.ts +1 -1
  100. package/src/editor/with-undo-step.ts +1 -1
  101. package/src/index.ts +1 -1
  102. package/src/internal-utils/applyPatch.ts +2 -2
  103. package/src/internal-utils/build-index-maps.test.ts +1 -1
  104. package/src/internal-utils/create-test-snapshot.ts +1 -1
  105. package/src/internal-utils/event-position.ts +11 -9
  106. package/src/internal-utils/operation-to-patches.test.ts +1 -1
  107. package/src/internal-utils/portable-text-node.ts +1 -1
  108. package/src/internal-utils/selection-block-keys.ts +1 -1
  109. package/src/internal-utils/selection-focus-text.ts +1 -1
  110. package/src/internal-utils/to-slate-range.ts +4 -4
  111. package/src/operations/behavior.operation.annotation.add.ts +1 -1
  112. package/src/operations/behavior.operation.block.set.ts +1 -1
  113. package/src/operations/behavior.operation.block.unset.ts +2 -2
  114. package/src/operations/behavior.operation.decorator.add.ts +11 -9
  115. package/src/operations/behavior.operation.delete.ts +1 -1
  116. package/src/operations/behavior.operation.insert.block.ts +2 -2
  117. package/src/operations/behavior.operation.insert.child.ts +1 -1
  118. package/src/operations/behavior.operation.move.block.ts +1 -1
  119. package/src/plugins/plugin.behavior.tsx +1 -1
  120. package/src/plugins/plugin.decorator-shortcut.ts +3 -3
  121. package/src/plugins/plugin.internal.auto-close-brackets.ts +2 -1
  122. package/src/plugins/plugin.one-line.tsx +11 -11
  123. package/src/priority/priority.types.ts +1 -1
  124. package/src/{internal-utils → selectors}/drag-selection.test.ts +1 -1
  125. package/src/{internal-utils → selectors}/drag-selection.ts +26 -19
  126. package/src/selectors/index.ts +1 -1
  127. package/src/selectors/selector.get-anchor-block.ts +1 -1
  128. package/src/selectors/selector.get-anchor-child.ts +1 -1
  129. package/src/selectors/selector.get-block-offsets.ts +3 -3
  130. package/src/selectors/selector.get-caret-word-selection.test.ts +1 -1
  131. package/src/selectors/selector.get-focus-block.ts +1 -1
  132. package/src/selectors/selector.get-focus-child.ts +1 -1
  133. package/src/selectors/selector.get-focus-list-block.ts +1 -1
  134. package/src/selectors/selector.get-list-state.test.ts +1 -1
  135. package/src/selectors/selector.get-mark-state.ts +4 -1
  136. package/src/selectors/selector.get-next-inline-object.ts +1 -1
  137. package/src/selectors/selector.get-next-span.ts +1 -1
  138. package/src/selectors/selector.get-previous-inline-object.ts +1 -1
  139. package/src/selectors/selector.get-previous-span.ts +1 -1
  140. package/src/selectors/selector.get-selected-blocks.ts +1 -1
  141. package/src/selectors/selector.get-selected-spans.test.ts +1 -1
  142. package/src/selectors/selector.get-selected-spans.ts +2 -2
  143. package/src/selectors/selector.get-selected-text-blocks.ts +3 -2
  144. package/src/selectors/selector.get-selected-value.test.ts +87 -1
  145. package/src/selectors/selector.get-selected-value.ts +4 -6
  146. package/src/selectors/selector.get-selection-end-point.ts +1 -1
  147. package/src/selectors/selector.get-selection-start-point.ts +1 -1
  148. package/src/selectors/selector.get-selection-text.test.ts +1 -1
  149. package/src/selectors/selector.get-selection.ts +1 -1
  150. package/src/selectors/selector.get-text-before.ts +1 -1
  151. package/src/selectors/selector.get-trimmed-selection.test.ts +1 -1
  152. package/src/selectors/selector.get-trimmed-selection.ts +5 -7
  153. package/src/selectors/selector.is-active-decorator.test.ts +2 -1
  154. package/src/selectors/selector.is-at-the-end-of-block.ts +4 -3
  155. package/src/selectors/selector.is-at-the-start-of-block.ts +4 -3
  156. package/src/selectors/selector.is-overlapping-selection.test.ts +1 -1
  157. package/src/selectors/selector.is-overlapping-selection.ts +1 -1
  158. package/src/selectors/selector.is-point-after-selection.ts +3 -3
  159. package/src/selectors/selector.is-point-before-selection.ts +3 -3
  160. package/src/selectors/selector.is-selecting-entire-blocks.ts +7 -5
  161. package/src/test/gherkin-parameter-types.ts +1 -1
  162. package/src/test/vitest/step-definitions.tsx +19 -9
  163. package/src/types/paths.ts +4 -1
  164. package/src/utils/util.at-the-beginning-of-block.ts +1 -1
  165. package/src/utils/util.block-offset.ts +4 -4
  166. package/src/utils/util.block-offsets-to-selection.ts +1 -1
  167. package/src/utils/util.child-selection-point-to-block-offset.ts +3 -3
  168. package/src/utils/util.get-selection-end-point.ts +1 -1
  169. package/src/utils/util.get-selection-start-point.ts +1 -1
  170. package/src/utils/util.merge-text-blocks.ts +2 -2
  171. package/src/utils/util.selection-point-to-block-offset.ts +1 -1
  172. package/src/{selection/selection-point.ts → utils/util.selection-point.ts} +1 -1
  173. package/src/utils/util.slice-blocks.ts +6 -6
  174. package/src/utils/util.slice-text-block.test.ts +3 -1
  175. package/src/utils/util.slice-text-block.ts +3 -3
  176. package/src/utils/util.split-text-block.ts +1 -1
  177. package/lib/_chunks-cjs/selector.is-selecting-entire-blocks.cjs.map +0 -1
  178. package/lib/_chunks-cjs/selector.is-selection-expanded.cjs.map +0 -1
  179. package/lib/_chunks-cjs/util.is-selection-collapsed.cjs.map +0 -1
  180. package/lib/_chunks-cjs/util.slice-blocks.cjs.map +0 -1
  181. package/lib/_chunks-es/selector.is-selecting-entire-blocks.js.map +0 -1
  182. package/lib/_chunks-es/selector.is-selection-expanded.js.map +0 -1
  183. package/lib/_chunks-es/util.is-selection-collapsed.js.map +0 -1
  184. package/lib/_chunks-es/util.slice-blocks.js.map +0 -1
  185. /package/src/{internal-utils → editor}/withChanges.ts +0 -0
  186. /package/src/{internal-utils → editor}/withUndoRedo.ts +0 -0
  187. /package/src/{internal-utils → editor}/withoutPatching.ts +0 -0
  188. /package/src/{internal-utils → utils}/asserters.ts +0 -0
  189. /package/src/{editor → utils}/key-generator.ts +0 -0
  190. /package/src/{internal-utils → utils}/parse-blocks.test.ts +0 -0
  191. /package/src/{internal-utils → utils}/parse-blocks.ts +0 -0
package/lib/index.js CHANGED
@@ -5,16 +5,16 @@ import { jsx, jsxs, Fragment } from "react/jsx-runtime";
5
5
  import { useSelector, useActorRef } from "@xstate/react";
6
6
  import noop from "lodash/noop.js";
7
7
  import { Element as Element$1, Text, Range, Editor, Node, Point, Path, Transforms, Operation, deleteText, setSelection, createEditor } from "slate";
8
- import { useSelected, useSlateSelector, useSlateStatic, useSlate, Editable, ReactEditor, withReact, Slate } from "slate-react";
9
- import debug$f from "debug";
8
+ import { useSelected, useSlateSelector, useSlateStatic, ReactEditor, useSlate, Editable, withReact, Slate } from "slate-react";
9
+ import debug$g from "debug";
10
10
  import { DOMEditor, isDOMNode, EDITOR_TO_PENDING_SELECTION, IS_FOCUSED, IS_READ_ONLY } from "slate-dom";
11
- import { getBlockStartPoint, getBlockKeyFromSelectionPoint, getChildKeyFromSelectionPoint, blockOffsetToSpanSelectionPoint, defaultKeyGenerator, parseBlocks, parseBlock, parseAnnotation, parseSpan, parseInlineObject, isKeyedSegment, isListBlock, isTypedObject, getSelectionStartPoint, getSelectionEndPoint, getTextBlockText } from "./_chunks-es/util.slice-blocks.js";
12
- import { getBlockEndPoint, isSelectionCollapsed, isEqualSelectionPoints, isEmptyTextBlock } from "./_chunks-es/util.is-selection-collapsed.js";
11
+ import { getBlockEndPoint, isSelectionCollapsed, isEqualSelectionPoints, isEmptyTextBlock } from "./_chunks-es/util.is-empty-text-block.js";
12
+ import { getBlockStartPoint, getBlockKeyFromSelectionPoint, getChildKeyFromSelectionPoint, blockOffsetToSpanSelectionPoint, defaultKeyGenerator, parseBlocks, parseBlock, parseAnnotation, parseSpan, parseInlineObject, isKeyedSegment, isListBlock, isTypedObject, getSelectionStartPoint, getSelectionEndPoint, getTextBlockText } from "./_chunks-es/util.get-text-block-text.js";
13
13
  import isEqual from "lodash/isEqual.js";
14
14
  import { isTextBlock, isSpan, compileSchema } from "@portabletext/schema";
15
15
  import { defineSchema } from "@portabletext/schema";
16
- import { isSelectionCollapsed as isSelectionCollapsed$1, getFocusTextBlock, getFocusSpan as getFocusSpan$1, isSelectionExpanded, getFocusBlock as getFocusBlock$1, getSelectedValue, getSelectionStartPoint as getSelectionStartPoint$1, getFocusChild as getFocusChild$1 } from "./_chunks-es/selector.is-selection-expanded.js";
17
- import { getFocusInlineObject, getSelectedBlocks, getSelectionStartBlock as getSelectionStartBlock$1, getSelectionEndBlock as getSelectionEndBlock$1, isOverlappingSelection, isSelectingEntireBlocks, getMarkState, getActiveDecorators, getTrimmedSelection, isActiveAnnotation, getCaretWordSelection, getFocusBlockObject, getPreviousBlock, getNextBlock, getActiveAnnotationsMarks, isAtTheEndOfBlock, isAtTheStartOfBlock, getFirstBlock as getFirstBlock$1, getLastBlock as getLastBlock$1, getFocusListBlock, getSelectionEndPoint as getSelectionEndPoint$1, isActiveDecorator, getActiveAnnotations, getSelectedTextBlocks, isActiveListItem, isActiveStyle } from "./_chunks-es/selector.is-selecting-entire-blocks.js";
16
+ import { getFocusInlineObject, getSelectedBlocks, getSelectionStartBlock as getSelectionStartBlock$1, getSelectionEndBlock as getSelectionEndBlock$1, isOverlappingSelection, isSelectingEntireBlocks, getMarkState, getActiveDecorators, getTrimmedSelection, isActiveAnnotation, getCaretWordSelection, getFocusBlockObject, getPreviousBlock, getNextBlock, getActiveAnnotationsMarks, isAtTheEndOfBlock, isAtTheStartOfBlock, getFirstBlock as getFirstBlock$1, getLastBlock as getLastBlock$1, getFocusListBlock, getSelectionEndPoint as getSelectionEndPoint$1, isActiveDecorator, getActiveAnnotations, getSelectedTextBlocks, isActiveListItem, isActiveStyle } from "./_chunks-es/selector.is-active-style.js";
17
+ import { isSelectionCollapsed as isSelectionCollapsed$1, getFocusTextBlock, getFocusSpan as getFocusSpan$1, isSelectionExpanded, getFocusBlock as getFocusBlock$1, getSelectedValue, getSelectionStartPoint as getSelectionStartPoint$1, getFocusChild as getFocusChild$1 } from "./_chunks-es/selector.get-selection-text.js";
18
18
  import { defineBehavior, forward, raise, effect } from "./behaviors/index.js";
19
19
  import uniq from "lodash/uniq.js";
20
20
  import { setup, fromCallback, assign, and, enqueueActions, emit, assertEvent, raise as raise$1, not, createActor } from "xstate";
@@ -45,10 +45,10 @@ function EditorEventListener(props) {
45
45
  }, t1 = [editor, props.on], $[0] = editor, $[1] = props.on, $[2] = t0, $[3] = t1) : (t0 = $[2], t1 = $[3]), useEffect(t0, t1), null;
46
46
  }
47
47
  const rootName = "sanity-pte:";
48
- debug$f(rootName);
48
+ debug$g(rootName);
49
49
  function debugWithName(name) {
50
50
  const namespace = `${rootName}${name}`;
51
- return debug$f && debug$f.enabled(namespace) ? debug$f(namespace) : debug$f(rootName);
51
+ return debug$g && debug$g.enabled(namespace) ? debug$g(namespace) : debug$g(rootName);
52
52
  }
53
53
  const VOID_CHILD_KEY = "void-child";
54
54
  function keepObjectEquality(object, keyMap) {
@@ -654,7 +654,7 @@ function toSlateSelectionPoint(snapshot, selectionPoint, direction) {
654
654
  offset: isSpan(snapshot.context, pathChild) ? Math.min(pathChild.text.length, offset) : offset
655
655
  };
656
656
  }
657
- const IS_PROCESSING_REMOTE_CHANGES = /* @__PURE__ */ new WeakMap(), KEY_TO_SLATE_ELEMENT = /* @__PURE__ */ new WeakMap(), KEY_TO_VALUE_ELEMENT = /* @__PURE__ */ new WeakMap(), SLATE_TO_PORTABLE_TEXT_RANGE = /* @__PURE__ */ new WeakMap(), EditorActorContext = createContext({});
657
+ const EditorActorContext = createContext({});
658
658
  function DropIndicator() {
659
659
  const $ = c(1);
660
660
  let t0;
@@ -696,6 +696,16 @@ function RenderDefaultInlineObject(props) {
696
696
  "]"
697
697
  ] }), $[1] = props.inlineObject._key, $[2] = props.inlineObject._type, $[3] = t1) : t1 = $[3], t1;
698
698
  }
699
+ function createEditorPriority(config) {
700
+ return {
701
+ id: defaultKeyGenerator(),
702
+ name: config?.name,
703
+ reference: config?.reference
704
+ };
705
+ }
706
+ const corePriority = createEditorPriority({
707
+ name: "core"
708
+ });
699
709
  function getDragSelection({
700
710
  eventSelection,
701
711
  snapshot
@@ -765,16 +775,6 @@ function getDragSelection({
765
775
  }
766
776
  return dragSelection;
767
777
  }
768
- function createEditorPriority(config) {
769
- return {
770
- id: defaultKeyGenerator(),
771
- name: config?.name,
772
- reference: config?.reference
773
- };
774
- }
775
- const corePriority = createEditorPriority({
776
- name: "core"
777
- });
778
778
  function createCoreBlockElementBehaviorsConfig({
779
779
  key,
780
780
  onSetDragPositionBlock
@@ -1568,7 +1568,7 @@ function toKeyName(name) {
1568
1568
  const keyName = name.toLowerCase();
1569
1569
  return aliases[keyName] ?? keyName;
1570
1570
  }
1571
- const debug$e = debugWithName("plugin:withHotKeys");
1571
+ const debug$f = debugWithName("plugin:withHotKeys");
1572
1572
  function createWithHotkeys(editorActor, portableTextEditor, hotkeysFromOptions) {
1573
1573
  const reservedHotkeys = ["enter", "tab", "shift", "delete", "end"], activeHotkeys = hotkeysFromOptions ?? {};
1574
1574
  return function(editor) {
@@ -1583,7 +1583,7 @@ function createWithHotkeys(editorActor, portableTextEditor, hotkeysFromOptions)
1583
1583
  const possibleMark = activeHotkeys[cat];
1584
1584
  if (possibleMark) {
1585
1585
  const mark = possibleMark[hotkey];
1586
- debug$e(`HotKey ${hotkey} to toggle ${mark}`), editorActor.send({
1586
+ debug$f(`HotKey ${hotkey} to toggle ${mark}`), editorActor.send({
1587
1587
  type: "behavior event",
1588
1588
  behaviorEvent: {
1589
1589
  type: "decorator.toggle",
@@ -1912,8 +1912,85 @@ function createDecorate(schema, slateEditor) {
1912
1912
  }) || Range.includes(decoratedRange, path));
1913
1913
  };
1914
1914
  }
1915
- const RelayActorContext = createContext({}), debug$d = debugWithName("component:Editable"), PortableTextEditable = forwardRef(function(props, forwardedRef) {
1916
- const $ = c(172);
1915
+ const RelayActorContext = createContext({}), debug$e = debugWithName("validate selection machine"), validateSelectionSetup = setup({
1916
+ types: {
1917
+ context: {},
1918
+ input: {},
1919
+ events: {}
1920
+ },
1921
+ guards: {
1922
+ "pending operations": ({
1923
+ context
1924
+ }) => context.slateEditor.operations.length > 0
1925
+ }
1926
+ }), validateSelectionAction = validateSelectionSetup.createAction(({
1927
+ context,
1928
+ event
1929
+ }) => {
1930
+ validateSelection(context.slateEditor, event.editorElement);
1931
+ }), validateSelectionMachine = validateSelectionSetup.createMachine({
1932
+ id: "validate selection",
1933
+ context: ({
1934
+ input
1935
+ }) => ({
1936
+ slateEditor: input.slateEditor
1937
+ }),
1938
+ initial: "idle",
1939
+ states: {
1940
+ idle: {
1941
+ on: {
1942
+ "validate selection": [{
1943
+ guard: "pending operations",
1944
+ target: "waiting"
1945
+ }, {
1946
+ actions: [validateSelectionAction],
1947
+ target: "idle"
1948
+ }]
1949
+ }
1950
+ },
1951
+ waiting: {
1952
+ after: {
1953
+ 0: [{
1954
+ guard: "pending operations",
1955
+ target: ".",
1956
+ reenter: !0
1957
+ }, {
1958
+ target: "idle",
1959
+ actions: [validateSelectionAction]
1960
+ }]
1961
+ },
1962
+ on: {
1963
+ "validate selection": {
1964
+ target: ".",
1965
+ reenter: !0
1966
+ }
1967
+ }
1968
+ }
1969
+ }
1970
+ });
1971
+ function validateSelection(slateEditor, editorElement) {
1972
+ if (!slateEditor.selection)
1973
+ return;
1974
+ let root;
1975
+ try {
1976
+ root = ReactEditor.findDocumentOrShadowRoot(slateEditor);
1977
+ } catch {
1978
+ }
1979
+ if (!root || editorElement !== root.activeElement)
1980
+ return;
1981
+ const domSelection = ReactEditor.getWindow(slateEditor).getSelection();
1982
+ if (!domSelection || domSelection.rangeCount === 0)
1983
+ return;
1984
+ const existingDOMRange = domSelection.getRangeAt(0);
1985
+ try {
1986
+ const newDOMRange = ReactEditor.toDOMRange(slateEditor, slateEditor.selection);
1987
+ (newDOMRange.startOffset !== existingDOMRange.startOffset || newDOMRange.endOffset !== existingDOMRange.endOffset) && (debug$e("DOM range out of sync, validating selection"), domSelection?.removeAllRanges(), domSelection.addRange(newDOMRange));
1988
+ } catch {
1989
+ debug$e("Could not resolve selection, selecting top document"), Transforms.deselect(slateEditor), slateEditor.children.length > 0 && Transforms.select(slateEditor, Editor.start(slateEditor, [])), slateEditor.onChange();
1990
+ }
1991
+ }
1992
+ const IS_PROCESSING_REMOTE_CHANGES = /* @__PURE__ */ new WeakMap(), KEY_TO_SLATE_ELEMENT = /* @__PURE__ */ new WeakMap(), KEY_TO_VALUE_ELEMENT = /* @__PURE__ */ new WeakMap(), SLATE_TO_PORTABLE_TEXT_RANGE = /* @__PURE__ */ new WeakMap(), debug$d = debugWithName("component:Editable"), PortableTextEditable = forwardRef(function(props, forwardedRef) {
1993
+ const $ = c(174);
1917
1994
  let hotkeys, onBeforeInput, onBlur, onClick, onCopy, onCut, onDrag, onDragEnd, onDragEnter, onDragLeave, onDragOver, onDragStart, onDrop, onFocus, onPaste, propsSelection, rangeDecorations, renderAnnotation, renderBlock, renderChild, renderDecorator, renderListItem, renderPlaceholder, renderStyle, restProps, scrollSelectionIntoView, spellCheck;
1918
1995
  $[0] !== props ? ({
1919
1996
  hotkeys,
@@ -1946,50 +2023,57 @@ const RelayActorContext = createContext({}), debug$d = debugWithName("component:
1946
2023
  } = props, $[0] = props, $[1] = hotkeys, $[2] = onBeforeInput, $[3] = onBlur, $[4] = onClick, $[5] = onCopy, $[6] = onCut, $[7] = onDrag, $[8] = onDragEnd, $[9] = onDragEnter, $[10] = onDragLeave, $[11] = onDragOver, $[12] = onDragStart, $[13] = onDrop, $[14] = onFocus, $[15] = onPaste, $[16] = propsSelection, $[17] = rangeDecorations, $[18] = renderAnnotation, $[19] = renderBlock, $[20] = renderChild, $[21] = renderDecorator, $[22] = renderListItem, $[23] = renderPlaceholder, $[24] = renderStyle, $[25] = restProps, $[26] = scrollSelectionIntoView, $[27] = spellCheck) : (hotkeys = $[1], onBeforeInput = $[2], onBlur = $[3], onClick = $[4], onCopy = $[5], onCut = $[6], onDrag = $[7], onDragEnd = $[8], onDragEnter = $[9], onDragLeave = $[10], onDragOver = $[11], onDragStart = $[12], onDrop = $[13], onFocus = $[14], onPaste = $[15], propsSelection = $[16], rangeDecorations = $[17], renderAnnotation = $[18], renderBlock = $[19], renderChild = $[20], renderDecorator = $[21], renderListItem = $[22], renderPlaceholder = $[23], renderStyle = $[24], restProps = $[25], scrollSelectionIntoView = $[26], spellCheck = $[27]);
1947
2024
  const portableTextEditor = usePortableTextEditor(), [hasInvalidValue, setHasInvalidValue] = useState(!1), editorActor = useContext(EditorActorContext), relayActor = useContext(RelayActorContext), readOnly = useSelector(editorActor, _temp), slateEditor = useSlate();
1948
2025
  let t0;
1949
- $[28] !== rangeDecorations ? (t0 = rangeDecorations ?? [], $[28] = rangeDecorations, $[29] = t0) : t0 = $[29];
2026
+ $[28] !== slateEditor ? (t0 = {
2027
+ input: {
2028
+ slateEditor
2029
+ }
2030
+ }, $[28] = slateEditor, $[29] = t0) : t0 = $[29];
2031
+ const validateSelectionActor = useActorRef(validateSelectionMachine, t0);
1950
2032
  let t1;
1951
- $[30] !== editorActor ? (t1 = editorActor.getSnapshot(), $[30] = editorActor, $[31] = t1) : t1 = $[31];
1952
- const t2 = !editorActor.getSnapshot().matches({
2033
+ $[30] !== rangeDecorations ? (t1 = rangeDecorations ?? [], $[30] = rangeDecorations, $[31] = t1) : t1 = $[31];
2034
+ let t2;
2035
+ $[32] !== editorActor ? (t2 = editorActor.getSnapshot(), $[32] = editorActor, $[33] = t2) : t2 = $[33];
2036
+ const t3 = !editorActor.getSnapshot().matches({
1953
2037
  setup: "setting up"
1954
2038
  });
1955
- let t3;
1956
- $[32] !== readOnly || $[33] !== slateEditor || $[34] !== t0 || $[35] !== t1.context.schema || $[36] !== t2 ? (t3 = {
2039
+ let t4;
2040
+ $[34] !== readOnly || $[35] !== slateEditor || $[36] !== t1 || $[37] !== t2.context.schema || $[38] !== t3 ? (t4 = {
1957
2041
  input: {
1958
- rangeDecorations: t0,
2042
+ rangeDecorations: t1,
1959
2043
  readOnly,
1960
- schema: t1.context.schema,
2044
+ schema: t2.context.schema,
1961
2045
  slateEditor,
1962
- skipSetup: t2
2046
+ skipSetup: t3
1963
2047
  }
1964
- }, $[32] = readOnly, $[33] = slateEditor, $[34] = t0, $[35] = t1.context.schema, $[36] = t2, $[37] = t3) : t3 = $[37];
1965
- const rangeDecorationsActor = useActorRef(rangeDecorationsMachine, t3), decorate = useSelector(rangeDecorationsActor, _temp2);
1966
- let t4, t5;
1967
- $[38] !== rangeDecorationsActor || $[39] !== readOnly ? (t4 = () => {
2048
+ }, $[34] = readOnly, $[35] = slateEditor, $[36] = t1, $[37] = t2.context.schema, $[38] = t3, $[39] = t4) : t4 = $[39];
2049
+ const rangeDecorationsActor = useActorRef(rangeDecorationsMachine, t4), decorate = useSelector(rangeDecorationsActor, _temp2);
2050
+ let t5, t6;
2051
+ $[40] !== rangeDecorationsActor || $[41] !== readOnly ? (t5 = () => {
1968
2052
  rangeDecorationsActor.send({
1969
2053
  type: "update read only",
1970
2054
  readOnly
1971
2055
  });
1972
- }, t5 = [rangeDecorationsActor, readOnly], $[38] = rangeDecorationsActor, $[39] = readOnly, $[40] = t4, $[41] = t5) : (t4 = $[40], t5 = $[41]), useEffect(t4, t5);
1973
- let t6, t7;
1974
- $[42] !== rangeDecorations || $[43] !== rangeDecorationsActor ? (t6 = () => {
2056
+ }, t6 = [rangeDecorationsActor, readOnly], $[40] = rangeDecorationsActor, $[41] = readOnly, $[42] = t5, $[43] = t6) : (t5 = $[42], t6 = $[43]), useEffect(t5, t6);
2057
+ let t7, t8;
2058
+ $[44] !== rangeDecorations || $[45] !== rangeDecorationsActor ? (t7 = () => {
1975
2059
  rangeDecorationsActor.send({
1976
2060
  type: "range decorations updated",
1977
2061
  rangeDecorations: rangeDecorations ?? []
1978
2062
  });
1979
- }, t7 = [rangeDecorationsActor, rangeDecorations], $[42] = rangeDecorations, $[43] = rangeDecorationsActor, $[44] = t6, $[45] = t7) : (t6 = $[44], t7 = $[45]), useEffect(t6, t7);
2063
+ }, t8 = [rangeDecorationsActor, rangeDecorations], $[44] = rangeDecorations, $[45] = rangeDecorationsActor, $[46] = t7, $[47] = t8) : (t7 = $[46], t8 = $[47]), useEffect(t7, t8);
1980
2064
  bb0: {
1981
2065
  if (readOnly)
1982
2066
  break bb0;
1983
2067
  createWithHotkeys(editorActor, portableTextEditor, hotkeys)(slateEditor);
1984
2068
  }
1985
- let t9;
1986
- $[46] !== readOnly || $[47] !== renderBlock || $[48] !== renderChild || $[49] !== renderListItem || $[50] !== renderStyle || $[51] !== spellCheck ? (t9 = (eProps) => /* @__PURE__ */ jsx(RenderElement, { ...eProps, readOnly, renderBlock, renderChild, renderListItem, renderStyle, spellCheck }), $[46] = readOnly, $[47] = renderBlock, $[48] = renderChild, $[49] = renderListItem, $[50] = renderStyle, $[51] = spellCheck, $[52] = t9) : t9 = $[52];
1987
- const renderElement = t9;
1988
2069
  let t10;
1989
- $[53] !== readOnly || $[54] !== renderAnnotation || $[55] !== renderChild || $[56] !== renderDecorator || $[57] !== renderPlaceholder ? (t10 = (leafProps) => /* @__PURE__ */ jsx(RenderLeaf, { ...leafProps, readOnly, renderAnnotation, renderChild, renderDecorator, renderPlaceholder }), $[53] = readOnly, $[54] = renderAnnotation, $[55] = renderChild, $[56] = renderDecorator, $[57] = renderPlaceholder, $[58] = t10) : t10 = $[58];
1990
- const renderLeaf = t10, renderText = _temp3;
2070
+ $[48] !== readOnly || $[49] !== renderBlock || $[50] !== renderChild || $[51] !== renderListItem || $[52] !== renderStyle || $[53] !== spellCheck ? (t10 = (eProps) => /* @__PURE__ */ jsx(RenderElement, { ...eProps, readOnly, renderBlock, renderChild, renderListItem, renderStyle, spellCheck }), $[48] = readOnly, $[49] = renderBlock, $[50] = renderChild, $[51] = renderListItem, $[52] = renderStyle, $[53] = spellCheck, $[54] = t10) : t10 = $[54];
2071
+ const renderElement = t10;
1991
2072
  let t11;
1992
- $[59] !== editorActor || $[60] !== propsSelection || $[61] !== slateEditor ? (t11 = () => {
2073
+ $[55] !== readOnly || $[56] !== renderAnnotation || $[57] !== renderChild || $[58] !== renderDecorator || $[59] !== renderPlaceholder ? (t11 = (leafProps) => /* @__PURE__ */ jsx(RenderLeaf, { ...leafProps, readOnly, renderAnnotation, renderChild, renderDecorator, renderPlaceholder }), $[55] = readOnly, $[56] = renderAnnotation, $[57] = renderChild, $[58] = renderDecorator, $[59] = renderPlaceholder, $[60] = t11) : t11 = $[60];
2074
+ const renderLeaf = t11, renderText = _temp3;
2075
+ let t12;
2076
+ $[61] !== editorActor || $[62] !== propsSelection || $[63] !== slateEditor ? (t12 = () => {
1993
2077
  if (propsSelection) {
1994
2078
  debug$d(`Selection from props ${JSON.stringify(propsSelection)}`);
1995
2079
  const normalizedSelection = normalizeSelection(propsSelection, fromSlateValue(slateEditor.children, editorActor.getSnapshot().context.schema.block.name));
@@ -2009,10 +2093,10 @@ const RelayActorContext = createContext({}), debug$d = debugWithName("component:
2009
2093
  }), slateEditor.onChange());
2010
2094
  }
2011
2095
  }
2012
- }, $[59] = editorActor, $[60] = propsSelection, $[61] = slateEditor, $[62] = t11) : t11 = $[62];
2013
- const restoreSelectionFromProps = t11;
2014
- let t12, t13;
2015
- $[63] !== editorActor || $[64] !== rangeDecorationsActor || $[65] !== restoreSelectionFromProps ? (t12 = () => {
2096
+ }, $[61] = editorActor, $[62] = propsSelection, $[63] = slateEditor, $[64] = t12) : t12 = $[64];
2097
+ const restoreSelectionFromProps = t12;
2098
+ let t13, t14;
2099
+ $[65] !== editorActor || $[66] !== rangeDecorationsActor || $[67] !== restoreSelectionFromProps ? (t13 = () => {
2016
2100
  const onReady = editorActor.on("ready", () => {
2017
2101
  rangeDecorationsActor.send({
2018
2102
  type: "ready"
@@ -2025,13 +2109,13 @@ const RelayActorContext = createContext({}), debug$d = debugWithName("component:
2025
2109
  return () => {
2026
2110
  onReady.unsubscribe(), onInvalidValue.unsubscribe(), onValueChanged.unsubscribe();
2027
2111
  };
2028
- }, t13 = [rangeDecorationsActor, editorActor, restoreSelectionFromProps], $[63] = editorActor, $[64] = rangeDecorationsActor, $[65] = restoreSelectionFromProps, $[66] = t12, $[67] = t13) : (t12 = $[66], t13 = $[67]), useEffect(t12, t13);
2029
- let t14, t15;
2030
- $[68] !== hasInvalidValue || $[69] !== propsSelection || $[70] !== restoreSelectionFromProps ? (t14 = () => {
2112
+ }, t14 = [rangeDecorationsActor, editorActor, restoreSelectionFromProps], $[65] = editorActor, $[66] = rangeDecorationsActor, $[67] = restoreSelectionFromProps, $[68] = t13, $[69] = t14) : (t13 = $[68], t14 = $[69]), useEffect(t13, t14);
2113
+ let t15, t16;
2114
+ $[70] !== hasInvalidValue || $[71] !== propsSelection || $[72] !== restoreSelectionFromProps ? (t15 = () => {
2031
2115
  propsSelection && !hasInvalidValue && restoreSelectionFromProps();
2032
- }, t15 = [hasInvalidValue, propsSelection, restoreSelectionFromProps], $[68] = hasInvalidValue, $[69] = propsSelection, $[70] = restoreSelectionFromProps, $[71] = t14, $[72] = t15) : (t14 = $[71], t15 = $[72]), useEffect(t14, t15);
2033
- let t16;
2034
- $[73] !== editorActor || $[74] !== onCopy || $[75] !== slateEditor ? (t16 = (event) => {
2116
+ }, t16 = [hasInvalidValue, propsSelection, restoreSelectionFromProps], $[70] = hasInvalidValue, $[71] = propsSelection, $[72] = restoreSelectionFromProps, $[73] = t15, $[74] = t16) : (t15 = $[73], t16 = $[74]), useEffect(t15, t16);
2117
+ let t17;
2118
+ $[75] !== editorActor || $[76] !== onCopy || $[77] !== slateEditor ? (t17 = (event) => {
2035
2119
  if (onCopy)
2036
2120
  onCopy(event) !== void 0 && event.preventDefault();
2037
2121
  else if (event.nativeEvent.clipboardData) {
@@ -2060,10 +2144,10 @@ const RelayActorContext = createContext({}), debug$d = debugWithName("component:
2060
2144
  nativeEvent: event
2061
2145
  });
2062
2146
  }
2063
- }, $[73] = editorActor, $[74] = onCopy, $[75] = slateEditor, $[76] = t16) : t16 = $[76];
2064
- const handleCopy = t16;
2065
- let t17;
2066
- $[77] !== editorActor || $[78] !== onCut || $[79] !== slateEditor ? (t17 = (event_0) => {
2147
+ }, $[75] = editorActor, $[76] = onCopy, $[77] = slateEditor, $[78] = t17) : t17 = $[78];
2148
+ const handleCopy = t17;
2149
+ let t18;
2150
+ $[79] !== editorActor || $[80] !== onCut || $[81] !== slateEditor ? (t18 = (event_0) => {
2067
2151
  if (onCut)
2068
2152
  onCut(event_0) !== void 0 && event_0.preventDefault();
2069
2153
  else if (event_0.nativeEvent.clipboardData) {
@@ -2088,10 +2172,10 @@ const RelayActorContext = createContext({}), debug$d = debugWithName("component:
2088
2172
  nativeEvent: event_0
2089
2173
  });
2090
2174
  }
2091
- }, $[77] = editorActor, $[78] = onCut, $[79] = slateEditor, $[80] = t17) : t17 = $[80];
2092
- const handleCut = t17;
2093
- let t18;
2094
- $[81] !== editorActor || $[82] !== onPaste || $[83] !== portableTextEditor || $[84] !== relayActor || $[85] !== slateEditor ? (t18 = (event_1) => {
2175
+ }, $[79] = editorActor, $[80] = onCut, $[81] = slateEditor, $[82] = t18) : t18 = $[82];
2176
+ const handleCut = t18;
2177
+ let t19;
2178
+ $[83] !== editorActor || $[84] !== onPaste || $[85] !== portableTextEditor || $[86] !== relayActor || $[87] !== slateEditor ? (t19 = (event_1) => {
2095
2179
  const value = fromSlateValue(slateEditor.children, editorActor.getSnapshot().context.schema.block.name, KEY_TO_VALUE_ELEMENT.get(slateEditor)), path = (slateEditor.selection ? slateRangeToSelection({
2096
2180
  schema: editorActor.getSnapshot().context.schema,
2097
2181
  editor: slateEditor,
@@ -2175,18 +2259,18 @@ const RelayActorContext = createContext({}), debug$d = debugWithName("component:
2175
2259
  });
2176
2260
  }
2177
2261
  debug$d("No result from custom paste handler, pasting normally");
2178
- }, $[81] = editorActor, $[82] = onPaste, $[83] = portableTextEditor, $[84] = relayActor, $[85] = slateEditor, $[86] = t18) : t18 = $[86];
2179
- const handlePaste = t18;
2180
- let t19;
2181
- $[87] !== editorActor || $[88] !== onFocus || $[89] !== relayActor || $[90] !== slateEditor ? (t19 = (event_2) => {
2262
+ }, $[83] = editorActor, $[84] = onPaste, $[85] = portableTextEditor, $[86] = relayActor, $[87] = slateEditor, $[88] = t19) : t19 = $[88];
2263
+ const handlePaste = t19;
2264
+ let t20;
2265
+ $[89] !== editorActor || $[90] !== onFocus || $[91] !== relayActor || $[92] !== slateEditor ? (t20 = (event_2) => {
2182
2266
  onFocus && onFocus(event_2), event_2.isDefaultPrevented() || (relayActor.send({
2183
2267
  type: "focused",
2184
2268
  event: event_2
2185
2269
  }), !slateEditor.selection && isEqualToEmptyEditor(slateEditor.children, editorActor.getSnapshot().context.schema) && (Transforms.select(slateEditor, Editor.start(slateEditor, [])), slateEditor.onChange()));
2186
- }, $[87] = editorActor, $[88] = onFocus, $[89] = relayActor, $[90] = slateEditor, $[91] = t19) : t19 = $[91];
2187
- const handleOnFocus = t19;
2188
- let t20;
2189
- $[92] !== editorActor || $[93] !== onClick || $[94] !== slateEditor ? (t20 = (event_3) => {
2270
+ }, $[89] = editorActor, $[90] = onFocus, $[91] = relayActor, $[92] = slateEditor, $[93] = t20) : t20 = $[93];
2271
+ const handleOnFocus = t20;
2272
+ let t21;
2273
+ $[94] !== editorActor || $[95] !== onClick || $[96] !== slateEditor ? (t21 = (event_3) => {
2190
2274
  if (onClick && onClick(event_3), event_3.isDefaultPrevented() || event_3.isPropagationStopped())
2191
2275
  return;
2192
2276
  const position_3 = getEventPosition({
@@ -2203,23 +2287,23 @@ const RelayActorContext = createContext({}), debug$d = debugWithName("component:
2203
2287
  editor: slateEditor,
2204
2288
  nativeEvent: event_3
2205
2289
  });
2206
- }, $[92] = editorActor, $[93] = onClick, $[94] = slateEditor, $[95] = t20) : t20 = $[95];
2207
- const handleClick = t20;
2208
- let t21;
2209
- $[96] !== onBlur || $[97] !== relayActor ? (t21 = (event_4) => {
2290
+ }, $[94] = editorActor, $[95] = onClick, $[96] = slateEditor, $[97] = t21) : t21 = $[97];
2291
+ const handleClick = t21;
2292
+ let t22;
2293
+ $[98] !== onBlur || $[99] !== relayActor ? (t22 = (event_4) => {
2210
2294
  onBlur && onBlur(event_4), event_4.isPropagationStopped() || relayActor.send({
2211
2295
  type: "blurred",
2212
2296
  event: event_4
2213
2297
  });
2214
- }, $[96] = onBlur, $[97] = relayActor, $[98] = t21) : t21 = $[98];
2215
- const handleOnBlur = t21;
2216
- let t22;
2217
- $[99] !== onBeforeInput ? (t22 = (event_5) => {
2218
- onBeforeInput && onBeforeInput(event_5);
2219
- }, $[99] = onBeforeInput, $[100] = t22) : t22 = $[100];
2220
- const handleOnBeforeInput = t22;
2298
+ }, $[98] = onBlur, $[99] = relayActor, $[100] = t22) : t22 = $[100];
2299
+ const handleOnBlur = t22;
2221
2300
  let t23;
2222
- $[101] !== editorActor || $[102] !== props || $[103] !== slateEditor ? (t23 = (event_6) => {
2301
+ $[101] !== onBeforeInput ? (t23 = (event_5) => {
2302
+ onBeforeInput && onBeforeInput(event_5);
2303
+ }, $[101] = onBeforeInput, $[102] = t23) : t23 = $[102];
2304
+ const handleOnBeforeInput = t23;
2305
+ let t24;
2306
+ $[103] !== editorActor || $[104] !== props || $[105] !== slateEditor ? (t24 = (event_6) => {
2223
2307
  props.onKeyDown && props.onKeyDown(event_6), event_6.isDefaultPrevented() || slateEditor.pteWithHotKeys(event_6), event_6.isDefaultPrevented() || editorActor.send({
2224
2308
  type: "behavior event",
2225
2309
  behaviorEvent: {
@@ -2236,10 +2320,10 @@ const RelayActorContext = createContext({}), debug$d = debugWithName("component:
2236
2320
  editor: slateEditor,
2237
2321
  nativeEvent: event_6
2238
2322
  });
2239
- }, $[101] = editorActor, $[102] = props, $[103] = slateEditor, $[104] = t23) : t23 = $[104];
2240
- const handleKeyDown = t23;
2241
- let t24;
2242
- $[105] !== editorActor || $[106] !== props || $[107] !== slateEditor ? (t24 = (event_7) => {
2323
+ }, $[103] = editorActor, $[104] = props, $[105] = slateEditor, $[106] = t24) : t24 = $[106];
2324
+ const handleKeyDown = t24;
2325
+ let t25;
2326
+ $[107] !== editorActor || $[108] !== props || $[109] !== slateEditor ? (t25 = (event_7) => {
2243
2327
  props.onKeyUp && props.onKeyUp(event_7), event_7.isDefaultPrevented() || editorActor.send({
2244
2328
  type: "behavior event",
2245
2329
  behaviorEvent: {
@@ -2256,26 +2340,26 @@ const RelayActorContext = createContext({}), debug$d = debugWithName("component:
2256
2340
  editor: slateEditor,
2257
2341
  nativeEvent: event_7
2258
2342
  });
2259
- }, $[105] = editorActor, $[106] = props, $[107] = slateEditor, $[108] = t24) : t24 = $[108];
2260
- const handleKeyUp = t24;
2261
- let t25;
2343
+ }, $[107] = editorActor, $[108] = props, $[109] = slateEditor, $[110] = t25) : t25 = $[110];
2344
+ const handleKeyUp = t25;
2345
+ let t26;
2262
2346
  bb1: {
2263
2347
  if (scrollSelectionIntoView === void 0) {
2264
- t25 = void 0;
2348
+ t26 = void 0;
2265
2349
  break bb1;
2266
2350
  }
2267
2351
  if (scrollSelectionIntoView === null) {
2268
- t25 = noop;
2352
+ t26 = noop;
2269
2353
  break bb1;
2270
2354
  }
2271
- let t262;
2272
- $[109] !== portableTextEditor || $[110] !== scrollSelectionIntoView ? (t262 = (_editor, domRange) => {
2355
+ let t272;
2356
+ $[111] !== portableTextEditor || $[112] !== scrollSelectionIntoView ? (t272 = (_editor, domRange) => {
2273
2357
  scrollSelectionIntoView(portableTextEditor, domRange);
2274
- }, $[109] = portableTextEditor, $[110] = scrollSelectionIntoView, $[111] = t262) : t262 = $[111], t25 = t262;
2358
+ }, $[111] = portableTextEditor, $[112] = scrollSelectionIntoView, $[113] = t272) : t272 = $[113], t26 = t272;
2275
2359
  }
2276
- const scrollSelectionIntoViewToSlate = t25;
2277
- let t26, t27;
2278
- $[112] !== editorActor || $[113] !== slateEditor ? (t26 = () => {
2360
+ const scrollSelectionIntoViewToSlate = t26;
2361
+ let t27, t28;
2362
+ $[114] !== editorActor || $[115] !== slateEditor ? (t27 = () => {
2279
2363
  const window2 = ReactEditor.getWindow(slateEditor), onDragEnd_0 = () => {
2280
2364
  editorActor.send({
2281
2365
  type: "dragend"
@@ -2288,9 +2372,9 @@ const RelayActorContext = createContext({}), debug$d = debugWithName("component:
2288
2372
  return window2.document.addEventListener("dragend", onDragEnd_0), window2.document.addEventListener("drop", onDrop_0), () => {
2289
2373
  window2.document.removeEventListener("dragend", onDragEnd_0), window2.document.removeEventListener("drop", onDrop_0);
2290
2374
  };
2291
- }, t27 = [slateEditor, editorActor], $[112] = editorActor, $[113] = slateEditor, $[114] = t26, $[115] = t27) : (t26 = $[114], t27 = $[115]), useEffect(t26, t27);
2292
- let t28;
2293
- $[116] !== editorActor || $[117] !== onDragStart || $[118] !== slateEditor ? (t28 = (event_8) => {
2375
+ }, t28 = [slateEditor, editorActor], $[114] = editorActor, $[115] = slateEditor, $[116] = t27, $[117] = t28) : (t27 = $[116], t28 = $[117]), useEffect(t27, t28);
2376
+ let t29;
2377
+ $[118] !== editorActor || $[119] !== onDragStart || $[120] !== slateEditor ? (t29 = (event_8) => {
2294
2378
  if (onDragStart?.(event_8), event_8.isDefaultPrevented() || event_8.isPropagationStopped())
2295
2379
  return;
2296
2380
  const position_4 = getEventPosition({
@@ -2318,10 +2402,10 @@ const RelayActorContext = createContext({}), debug$d = debugWithName("component:
2318
2402
  },
2319
2403
  editor: slateEditor
2320
2404
  }), !0;
2321
- }, $[116] = editorActor, $[117] = onDragStart, $[118] = slateEditor, $[119] = t28) : t28 = $[119];
2322
- const handleDragStart = t28;
2323
- let t29;
2324
- $[120] !== editorActor || $[121] !== onDrag || $[122] !== slateEditor ? (t29 = (event_9) => {
2405
+ }, $[118] = editorActor, $[119] = onDragStart, $[120] = slateEditor, $[121] = t29) : t29 = $[121];
2406
+ const handleDragStart = t29;
2407
+ let t30;
2408
+ $[122] !== editorActor || $[123] !== onDrag || $[124] !== slateEditor ? (t30 = (event_9) => {
2325
2409
  if (onDrag?.(event_9), !(event_9.isDefaultPrevented() || event_9.isPropagationStopped() || !getEventPosition({
2326
2410
  editorActor,
2327
2411
  slateEditor,
@@ -2337,10 +2421,10 @@ const RelayActorContext = createContext({}), debug$d = debugWithName("component:
2337
2421
  },
2338
2422
  editor: slateEditor
2339
2423
  }), !0;
2340
- }, $[120] = editorActor, $[121] = onDrag, $[122] = slateEditor, $[123] = t29) : t29 = $[123];
2341
- const handleDrag = t29;
2342
- let t30;
2343
- $[124] !== editorActor || $[125] !== onDragEnd || $[126] !== slateEditor ? (t30 = (event_10) => {
2424
+ }, $[122] = editorActor, $[123] = onDrag, $[124] = slateEditor, $[125] = t30) : t30 = $[125];
2425
+ const handleDrag = t30;
2426
+ let t31;
2427
+ $[126] !== editorActor || $[127] !== onDragEnd || $[128] !== slateEditor ? (t31 = (event_10) => {
2344
2428
  if (onDragEnd?.(event_10), !(event_10.isDefaultPrevented() || event_10.isPropagationStopped()))
2345
2429
  return editorActor.send({
2346
2430
  type: "behavior event",
@@ -2352,10 +2436,10 @@ const RelayActorContext = createContext({}), debug$d = debugWithName("component:
2352
2436
  },
2353
2437
  editor: slateEditor
2354
2438
  }), !0;
2355
- }, $[124] = editorActor, $[125] = onDragEnd, $[126] = slateEditor, $[127] = t30) : t30 = $[127];
2356
- const handleDragEnd = t30;
2357
- let t31;
2358
- $[128] !== editorActor || $[129] !== onDragEnter || $[130] !== slateEditor ? (t31 = (event_11) => {
2439
+ }, $[126] = editorActor, $[127] = onDragEnd, $[128] = slateEditor, $[129] = t31) : t31 = $[129];
2440
+ const handleDragEnd = t31;
2441
+ let t32;
2442
+ $[130] !== editorActor || $[131] !== onDragEnter || $[132] !== slateEditor ? (t32 = (event_11) => {
2359
2443
  if (onDragEnter?.(event_11), event_11.isDefaultPrevented() || event_11.isPropagationStopped())
2360
2444
  return;
2361
2445
  const position_6 = getEventPosition({
@@ -2375,10 +2459,10 @@ const RelayActorContext = createContext({}), debug$d = debugWithName("component:
2375
2459
  },
2376
2460
  editor: slateEditor
2377
2461
  }), !0;
2378
- }, $[128] = editorActor, $[129] = onDragEnter, $[130] = slateEditor, $[131] = t31) : t31 = $[131];
2379
- const handleDragEnter = t31;
2380
- let t32;
2381
- $[132] !== editorActor || $[133] !== onDragOver || $[134] !== slateEditor ? (t32 = (event_12) => {
2462
+ }, $[130] = editorActor, $[131] = onDragEnter, $[132] = slateEditor, $[133] = t32) : t32 = $[133];
2463
+ const handleDragEnter = t32;
2464
+ let t33;
2465
+ $[134] !== editorActor || $[135] !== onDragOver || $[136] !== slateEditor ? (t33 = (event_12) => {
2382
2466
  if (onDragOver?.(event_12), event_12.isDefaultPrevented() || event_12.isPropagationStopped())
2383
2467
  return;
2384
2468
  const position_7 = getEventPosition({
@@ -2400,10 +2484,10 @@ const RelayActorContext = createContext({}), debug$d = debugWithName("component:
2400
2484
  editor: slateEditor,
2401
2485
  nativeEvent: event_12
2402
2486
  }), !0;
2403
- }, $[132] = editorActor, $[133] = onDragOver, $[134] = slateEditor, $[135] = t32) : t32 = $[135];
2404
- const handleDragOver = t32;
2405
- let t33;
2406
- $[136] !== editorActor || $[137] !== onDrop || $[138] !== slateEditor ? (t33 = (event_13) => {
2487
+ }, $[134] = editorActor, $[135] = onDragOver, $[136] = slateEditor, $[137] = t33) : t33 = $[137];
2488
+ const handleDragOver = t33;
2489
+ let t34;
2490
+ $[138] !== editorActor || $[139] !== onDrop || $[140] !== slateEditor ? (t34 = (event_13) => {
2407
2491
  if (onDrop?.(event_13), event_13.isDefaultPrevented() || event_13.isPropagationStopped())
2408
2492
  return;
2409
2493
  const position_8 = getEventPosition({
@@ -2428,10 +2512,10 @@ const RelayActorContext = createContext({}), debug$d = debugWithName("component:
2428
2512
  editor: slateEditor,
2429
2513
  nativeEvent: event_13
2430
2514
  }), !0;
2431
- }, $[136] = editorActor, $[137] = onDrop, $[138] = slateEditor, $[139] = t33) : t33 = $[139];
2432
- const handleDrop = t33;
2433
- let t34;
2434
- $[140] !== editorActor || $[141] !== onDragLeave || $[142] !== slateEditor ? (t34 = (event_14) => {
2515
+ }, $[138] = editorActor, $[139] = onDrop, $[140] = slateEditor, $[141] = t34) : t34 = $[141];
2516
+ const handleDrop = t34;
2517
+ let t35;
2518
+ $[142] !== editorActor || $[143] !== onDragLeave || $[144] !== slateEditor ? (t35 = (event_14) => {
2435
2519
  if (onDragLeave?.(event_14), !(event_14.isDefaultPrevented() || event_14.isPropagationStopped() || !getEventPosition({
2436
2520
  editorActor,
2437
2521
  slateEditor,
@@ -2447,15 +2531,18 @@ const RelayActorContext = createContext({}), debug$d = debugWithName("component:
2447
2531
  },
2448
2532
  editor: slateEditor
2449
2533
  }), !0;
2450
- }, $[140] = editorActor, $[141] = onDragLeave, $[142] = slateEditor, $[143] = t34) : t34 = $[143];
2451
- const handleDragLeave = t34;
2452
- let t35;
2453
- $[144] !== forwardedRef || $[145] !== slateEditor ? (t35 = (node) => {
2454
- if (typeof forwardedRef == "function" ? forwardedRef(node) : forwardedRef && (forwardedRef.current = node), node) {
2534
+ }, $[142] = editorActor, $[143] = onDragLeave, $[144] = slateEditor, $[145] = t35) : t35 = $[145];
2535
+ const handleDragLeave = t35;
2536
+ let t36;
2537
+ $[146] !== forwardedRef || $[147] !== validateSelectionActor ? (t36 = (editorElement) => {
2538
+ if (typeof forwardedRef == "function" ? forwardedRef(editorElement) : forwardedRef && (forwardedRef.current = editorElement), editorElement) {
2455
2539
  const mutationObserver = new MutationObserver(() => {
2456
- validateSelection(slateEditor, node);
2540
+ validateSelectionActor.send({
2541
+ type: "validate selection",
2542
+ editorElement
2543
+ });
2457
2544
  });
2458
- return mutationObserver.observe(node, {
2545
+ return mutationObserver.observe(editorElement, {
2459
2546
  attributeOldValue: !1,
2460
2547
  attributes: !1,
2461
2548
  characterData: !1,
@@ -2465,35 +2552,14 @@ const RelayActorContext = createContext({}), debug$d = debugWithName("component:
2465
2552
  mutationObserver.disconnect();
2466
2553
  };
2467
2554
  }
2468
- }, $[144] = forwardedRef, $[145] = slateEditor, $[146] = t35) : t35 = $[146];
2469
- const callbackRef = t35;
2555
+ }, $[146] = forwardedRef, $[147] = validateSelectionActor, $[148] = t36) : t36 = $[148];
2556
+ const callbackRef = t36;
2470
2557
  if (!portableTextEditor)
2471
2558
  return null;
2472
- let t36;
2473
- return $[147] !== callbackRef || $[148] !== decorate || $[149] !== handleClick || $[150] !== handleCopy || $[151] !== handleCut || $[152] !== handleDrag || $[153] !== handleDragEnd || $[154] !== handleDragEnter || $[155] !== handleDragLeave || $[156] !== handleDragOver || $[157] !== handleDragStart || $[158] !== handleDrop || $[159] !== handleKeyDown || $[160] !== handleKeyUp || $[161] !== handleOnBeforeInput || $[162] !== handleOnBlur || $[163] !== handleOnFocus || $[164] !== handlePaste || $[165] !== hasInvalidValue || $[166] !== readOnly || $[167] !== renderElement || $[168] !== renderLeaf || $[169] !== restProps || $[170] !== scrollSelectionIntoViewToSlate ? (t36 = hasInvalidValue ? null : /* @__PURE__ */ jsx(Editable, { ...restProps, ref: callbackRef, "data-read-only": readOnly, autoFocus: !1, className: restProps.className || "pt-editable", decorate, onBlur: handleOnBlur, onCopy: handleCopy, onCut: handleCut, onClick: handleClick, onDOMBeforeInput: handleOnBeforeInput, onDragStart: handleDragStart, onDrag: handleDrag, onDragEnd: handleDragEnd, onDragEnter: handleDragEnter, onDragOver: handleDragOver, onDrop: handleDrop, onDragLeave: handleDragLeave, onFocus: handleOnFocus, onKeyDown: handleKeyDown, onKeyUp: handleKeyUp, onPaste: handlePaste, readOnly, renderPlaceholder: void 0, renderElement, renderLeaf, renderText, scrollSelectionIntoView: scrollSelectionIntoViewToSlate }), $[147] = callbackRef, $[148] = decorate, $[149] = handleClick, $[150] = handleCopy, $[151] = handleCut, $[152] = handleDrag, $[153] = handleDragEnd, $[154] = handleDragEnter, $[155] = handleDragLeave, $[156] = handleDragOver, $[157] = handleDragStart, $[158] = handleDrop, $[159] = handleKeyDown, $[160] = handleKeyUp, $[161] = handleOnBeforeInput, $[162] = handleOnBlur, $[163] = handleOnFocus, $[164] = handlePaste, $[165] = hasInvalidValue, $[166] = readOnly, $[167] = renderElement, $[168] = renderLeaf, $[169] = restProps, $[170] = scrollSelectionIntoViewToSlate, $[171] = t36) : t36 = $[171], t36;
2559
+ let t37;
2560
+ return $[149] !== callbackRef || $[150] !== decorate || $[151] !== handleClick || $[152] !== handleCopy || $[153] !== handleCut || $[154] !== handleDrag || $[155] !== handleDragEnd || $[156] !== handleDragEnter || $[157] !== handleDragLeave || $[158] !== handleDragOver || $[159] !== handleDragStart || $[160] !== handleDrop || $[161] !== handleKeyDown || $[162] !== handleKeyUp || $[163] !== handleOnBeforeInput || $[164] !== handleOnBlur || $[165] !== handleOnFocus || $[166] !== handlePaste || $[167] !== hasInvalidValue || $[168] !== readOnly || $[169] !== renderElement || $[170] !== renderLeaf || $[171] !== restProps || $[172] !== scrollSelectionIntoViewToSlate ? (t37 = hasInvalidValue ? null : /* @__PURE__ */ jsx(Editable, { ...restProps, ref: callbackRef, "data-read-only": readOnly, autoFocus: !1, className: restProps.className || "pt-editable", decorate, onBlur: handleOnBlur, onCopy: handleCopy, onCut: handleCut, onClick: handleClick, onDOMBeforeInput: handleOnBeforeInput, onDragStart: handleDragStart, onDrag: handleDrag, onDragEnd: handleDragEnd, onDragEnter: handleDragEnter, onDragOver: handleDragOver, onDrop: handleDrop, onDragLeave: handleDragLeave, onFocus: handleOnFocus, onKeyDown: handleKeyDown, onKeyUp: handleKeyUp, onPaste: handlePaste, readOnly, renderPlaceholder: void 0, renderElement, renderLeaf, renderText, scrollSelectionIntoView: scrollSelectionIntoViewToSlate }), $[149] = callbackRef, $[150] = decorate, $[151] = handleClick, $[152] = handleCopy, $[153] = handleCut, $[154] = handleDrag, $[155] = handleDragEnd, $[156] = handleDragEnter, $[157] = handleDragLeave, $[158] = handleDragOver, $[159] = handleDragStart, $[160] = handleDrop, $[161] = handleKeyDown, $[162] = handleKeyUp, $[163] = handleOnBeforeInput, $[164] = handleOnBlur, $[165] = handleOnFocus, $[166] = handlePaste, $[167] = hasInvalidValue, $[168] = readOnly, $[169] = renderElement, $[170] = renderLeaf, $[171] = restProps, $[172] = scrollSelectionIntoViewToSlate, $[173] = t37) : t37 = $[173], t37;
2474
2561
  });
2475
2562
  PortableTextEditable.displayName = "ForwardRef(PortableTextEditable)";
2476
- function validateSelection(slateEditor, activeElement) {
2477
- if (!slateEditor.selection)
2478
- return;
2479
- let root;
2480
- try {
2481
- root = ReactEditor.findDocumentOrShadowRoot(slateEditor);
2482
- } catch {
2483
- }
2484
- if (!root || activeElement !== root.activeElement)
2485
- return;
2486
- const domSelection = ReactEditor.getWindow(slateEditor).getSelection();
2487
- if (!domSelection || domSelection.rangeCount === 0)
2488
- return;
2489
- const existingDOMRange = domSelection.getRangeAt(0);
2490
- try {
2491
- const newDOMRange = ReactEditor.toDOMRange(slateEditor, slateEditor.selection);
2492
- (newDOMRange.startOffset !== existingDOMRange.startOffset || newDOMRange.endOffset !== existingDOMRange.endOffset) && (debug$d("DOM range out of sync, validating selection"), domSelection?.removeAllRanges(), domSelection.addRange(newDOMRange));
2493
- } catch {
2494
- debug$d("Could not resolve selection, selecting top document"), Transforms.deselect(slateEditor), slateEditor.children.length > 0 && Transforms.select(slateEditor, [0, 0]), slateEditor.onChange();
2495
- }
2496
- }
2497
2563
  function _temp(s) {
2498
2564
  return s.matches({
2499
2565
  "edit mode": "read only"
@@ -9369,7 +9435,7 @@ const abstractAnnotationBehaviors = [defineBehavior({
9369
9435
  on: "split",
9370
9436
  guard: ({
9371
9437
  snapshot
9372
- }) => isSelectionCollapsed$1(snapshot) && getFocusInlineObject(snapshot),
9438
+ }) => isSelectionCollapsed(snapshot.context.selection) && getFocusInlineObject(snapshot),
9373
9439
  actions: []
9374
9440
  }),
9375
9441
  /**
@@ -9379,7 +9445,7 @@ const abstractAnnotationBehaviors = [defineBehavior({
9379
9445
  on: "split",
9380
9446
  guard: ({
9381
9447
  snapshot
9382
- }) => isSelectionCollapsed$1(snapshot) && getFocusBlockObject(snapshot),
9448
+ }) => isSelectionCollapsed(snapshot.context.selection) && getFocusBlockObject(snapshot),
9383
9449
  actions: []
9384
9450
  }),
9385
9451
  defineBehavior({