@portabletext/editor 3.3.2 → 3.3.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 (307) hide show
  1. package/lib/_chunks-dts/index.d.ts +7 -1
  2. package/package.json +16 -19
  3. package/src/behaviors/_exports/index.ts +0 -1
  4. package/src/behaviors/behavior.abstract.annotation.ts +0 -77
  5. package/src/behaviors/behavior.abstract.decorator.ts +0 -39
  6. package/src/behaviors/behavior.abstract.delete.ts +0 -273
  7. package/src/behaviors/behavior.abstract.deserialize.ts +0 -232
  8. package/src/behaviors/behavior.abstract.insert.ts +0 -525
  9. package/src/behaviors/behavior.abstract.keyboard.ts +0 -189
  10. package/src/behaviors/behavior.abstract.list-item.ts +0 -70
  11. package/src/behaviors/behavior.abstract.move.ts +0 -79
  12. package/src/behaviors/behavior.abstract.select.ts +0 -118
  13. package/src/behaviors/behavior.abstract.serialize.ts +0 -96
  14. package/src/behaviors/behavior.abstract.split.ts +0 -170
  15. package/src/behaviors/behavior.abstract.style.ts +0 -55
  16. package/src/behaviors/behavior.abstract.ts +0 -139
  17. package/src/behaviors/behavior.config.ts +0 -7
  18. package/src/behaviors/behavior.core.annotations.ts +0 -62
  19. package/src/behaviors/behavior.core.block-element.ts +0 -116
  20. package/src/behaviors/behavior.core.block-objects.ts +0 -285
  21. package/src/behaviors/behavior.core.decorators.ts +0 -44
  22. package/src/behaviors/behavior.core.dnd.ts +0 -356
  23. package/src/behaviors/behavior.core.insert-break.ts +0 -266
  24. package/src/behaviors/behavior.core.insert.ts +0 -52
  25. package/src/behaviors/behavior.core.lists.ts +0 -691
  26. package/src/behaviors/behavior.core.ts +0 -44
  27. package/src/behaviors/behavior.perform-event.ts +0 -354
  28. package/src/behaviors/behavior.types.action.ts +0 -102
  29. package/src/behaviors/behavior.types.behavior.ts +0 -83
  30. package/src/behaviors/behavior.types.event.ts +0 -667
  31. package/src/behaviors/behavior.types.guard.ts +0 -11
  32. package/src/behaviors/index.ts +0 -17
  33. package/src/converters/converter.json.ts +0 -53
  34. package/src/converters/converter.portable-text.deserialize.test.ts +0 -680
  35. package/src/converters/converter.portable-text.ts +0 -75
  36. package/src/converters/converter.text-html.deserialize.test.ts +0 -406
  37. package/src/converters/converter.text-html.serialize.test.ts +0 -246
  38. package/src/converters/converter.text-html.ts +0 -87
  39. package/src/converters/converter.text-markdown.ts +0 -67
  40. package/src/converters/converter.text-plain.test.ts +0 -245
  41. package/src/converters/converter.text-plain.ts +0 -126
  42. package/src/converters/converter.types.ts +0 -72
  43. package/src/converters/converters.core.ts +0 -18
  44. package/src/editor/Editable.tsx +0 -1012
  45. package/src/editor/PortableTextEditor.tsx +0 -791
  46. package/src/editor/components/drop-indicator.tsx +0 -17
  47. package/src/editor/components/render-block-object.tsx +0 -121
  48. package/src/editor/components/render-default-object.tsx +0 -21
  49. package/src/editor/components/render-element.tsx +0 -88
  50. package/src/editor/components/render-inline-object.tsx +0 -129
  51. package/src/editor/components/render-leaf.tsx +0 -64
  52. package/src/editor/components/render-span.tsx +0 -303
  53. package/src/editor/components/render-text-block.tsx +0 -265
  54. package/src/editor/components/render-text.tsx +0 -18
  55. package/src/editor/components/use-core-block-element-behaviors.ts +0 -39
  56. package/src/editor/create-editor.ts +0 -323
  57. package/src/editor/create-slate-editor.tsx +0 -64
  58. package/src/editor/editor-actor-context.ts +0 -4
  59. package/src/editor/editor-context.tsx +0 -7
  60. package/src/editor/editor-dom.ts +0 -220
  61. package/src/editor/editor-machine.ts +0 -751
  62. package/src/editor/editor-provider.tsx +0 -111
  63. package/src/editor/editor-schema.ts +0 -6
  64. package/src/editor/editor-selector.ts +0 -89
  65. package/src/editor/editor-snapshot.ts +0 -68
  66. package/src/editor/event-to-change.tsx +0 -49
  67. package/src/editor/hooks/usePortableTextEditor.ts +0 -25
  68. package/src/editor/hooks/usePortableTextEditorSelection.tsx +0 -28
  69. package/src/editor/mutation-machine.ts +0 -322
  70. package/src/editor/plugins/create-with-event-listeners.ts +0 -271
  71. package/src/editor/plugins/createWithEditableAPI.ts +0 -529
  72. package/src/editor/plugins/createWithHotKeys.ts +0 -68
  73. package/src/editor/plugins/createWithObjectKeys.ts +0 -289
  74. package/src/editor/plugins/createWithPatches.ts +0 -272
  75. package/src/editor/plugins/createWithPortableTextMarkModel.ts +0 -559
  76. package/src/editor/plugins/createWithSchemaTypes.ts +0 -121
  77. package/src/editor/plugins/slate-plugin.update-selection.ts +0 -51
  78. package/src/editor/plugins/slate-plugin.update-value.ts +0 -46
  79. package/src/editor/plugins/with-plugins.ts +0 -69
  80. package/src/editor/range-decorations-machine.ts +0 -421
  81. package/src/editor/relay-actor-context.ts +0 -4
  82. package/src/editor/relay-machine.ts +0 -152
  83. package/src/editor/sync-machine.ts +0 -961
  84. package/src/editor/use-editor.ts +0 -27
  85. package/src/editor/validate-selection-machine.test.ts +0 -47
  86. package/src/editor/validate-selection-machine.ts +0 -149
  87. package/src/editor/weakMaps.ts +0 -15
  88. package/src/editor/with-normalizing-node.ts +0 -14
  89. package/src/editor/with-performing-behavior-operation.ts +0 -21
  90. package/src/editor/withChanges.ts +0 -13
  91. package/src/editor/without-normalizing-conditional.ts +0 -13
  92. package/src/editor/withoutPatching.ts +0 -14
  93. package/src/editor.ts +0 -59
  94. package/src/history/behavior.operation.history.redo.ts +0 -67
  95. package/src/history/behavior.operation.history.undo.ts +0 -71
  96. package/src/history/event.history.undo.test.tsx +0 -672
  97. package/src/history/history.preserving-keys.test.tsx +0 -112
  98. package/src/history/remote-patches.ts +0 -20
  99. package/src/history/slate-plugin.history.ts +0 -142
  100. package/src/history/slate-plugin.redoing.ts +0 -21
  101. package/src/history/slate-plugin.undoing.ts +0 -21
  102. package/src/history/slate-plugin.without-history.ts +0 -23
  103. package/src/history/transform-operation.ts +0 -245
  104. package/src/history/undo-redo-collaboration.test.tsx +0 -541
  105. package/src/history/undo-redo.feature +0 -125
  106. package/src/history/undo-redo.test.tsx +0 -195
  107. package/src/history/undo-step.ts +0 -148
  108. package/src/index.ts +0 -98
  109. package/src/internal-utils/__tests__/ranges.test.ts +0 -23
  110. package/src/internal-utils/__tests__/values.test.ts +0 -110
  111. package/src/internal-utils/apply-operation-to-portable-text.test.ts +0 -1861
  112. package/src/internal-utils/apply-operation-to-portable-text.ts +0 -615
  113. package/src/internal-utils/applyPatch.ts +0 -644
  114. package/src/internal-utils/block-keys.ts +0 -9
  115. package/src/internal-utils/build-index-maps.test.ts +0 -464
  116. package/src/internal-utils/build-index-maps.ts +0 -131
  117. package/src/internal-utils/collapse-selection.ts +0 -36
  118. package/src/internal-utils/compound-client-rect.ts +0 -28
  119. package/src/internal-utils/create-placeholder-block.ts +0 -21
  120. package/src/internal-utils/create-test-snapshot.ts +0 -28
  121. package/src/internal-utils/debug.ts +0 -12
  122. package/src/internal-utils/editor-selection.test.ts +0 -44
  123. package/src/internal-utils/editor-selection.ts +0 -56
  124. package/src/internal-utils/event-position.ts +0 -318
  125. package/src/internal-utils/global-scope.ts +0 -27
  126. package/src/internal-utils/globally-scoped-context.ts +0 -39
  127. package/src/internal-utils/is-hotkey.test.ts +0 -114
  128. package/src/internal-utils/is-hotkey.ts +0 -209
  129. package/src/internal-utils/mime-type.ts +0 -1
  130. package/src/internal-utils/move-range-by-operation.ts +0 -19
  131. package/src/internal-utils/operation-to-patches.test.ts +0 -522
  132. package/src/internal-utils/operation-to-patches.ts +0 -571
  133. package/src/internal-utils/portable-text-node.ts +0 -209
  134. package/src/internal-utils/schema.ts +0 -8
  135. package/src/internal-utils/selection-block-keys.ts +0 -20
  136. package/src/internal-utils/selection-focus-text.ts +0 -40
  137. package/src/internal-utils/selection-text.test.ts +0 -32
  138. package/src/internal-utils/selection-text.ts +0 -21
  139. package/src/internal-utils/selection.ts +0 -77
  140. package/src/internal-utils/sibling-utils.ts +0 -55
  141. package/src/internal-utils/slate-utils.test.tsx +0 -121
  142. package/src/internal-utils/slate-utils.ts +0 -417
  143. package/src/internal-utils/split-string.ts +0 -12
  144. package/src/internal-utils/stop-actor.ts +0 -43
  145. package/src/internal-utils/string-overlap.test.ts +0 -14
  146. package/src/internal-utils/string-overlap.ts +0 -28
  147. package/src/internal-utils/string-utils.ts +0 -7
  148. package/src/internal-utils/text-block-key.test.ts +0 -41
  149. package/src/internal-utils/text-block-key.ts +0 -26
  150. package/src/internal-utils/text-marks.test.ts +0 -41
  151. package/src/internal-utils/text-marks.ts +0 -22
  152. package/src/internal-utils/text-selection.test.ts +0 -211
  153. package/src/internal-utils/text-selection.ts +0 -121
  154. package/src/internal-utils/to-slate-range.test.ts +0 -278
  155. package/src/internal-utils/to-slate-range.ts +0 -171
  156. package/src/internal-utils/validateValue.ts +0 -443
  157. package/src/internal-utils/value-annotations.ts +0 -33
  158. package/src/internal-utils/values.test.ts +0 -282
  159. package/src/internal-utils/values.ts +0 -266
  160. package/src/keyboard-shortcuts/default-keyboard-shortcuts.ts +0 -146
  161. package/src/operations/behavior.operation.annotation.add.ts +0 -99
  162. package/src/operations/behavior.operation.annotation.remove.ts +0 -150
  163. package/src/operations/behavior.operation.block.set.ts +0 -104
  164. package/src/operations/behavior.operation.block.unset.ts +0 -54
  165. package/src/operations/behavior.operation.child.set.ts +0 -107
  166. package/src/operations/behavior.operation.child.unset.ts +0 -116
  167. package/src/operations/behavior.operation.decorator.add.ts +0 -131
  168. package/src/operations/behavior.operation.delete.ts +0 -294
  169. package/src/operations/behavior.operation.insert.block.ts +0 -495
  170. package/src/operations/behavior.operation.insert.child.ts +0 -129
  171. package/src/operations/behavior.operation.insert.text.ts +0 -8
  172. package/src/operations/behavior.operation.move.backward.ts +0 -12
  173. package/src/operations/behavior.operation.move.block.ts +0 -44
  174. package/src/operations/behavior.operation.move.forward.ts +0 -11
  175. package/src/operations/behavior.operation.select.ts +0 -27
  176. package/src/operations/behavior.operations.ts +0 -221
  177. package/src/plugins/_exports/index.ts +0 -1
  178. package/src/plugins/index.ts +0 -3
  179. package/src/plugins/plugin.behavior.tsx +0 -24
  180. package/src/plugins/plugin.editor-ref.tsx +0 -17
  181. package/src/plugins/plugin.event-listener.tsx +0 -68
  182. package/src/plugins/plugin.internal.auto-close-brackets.test.tsx +0 -71
  183. package/src/plugins/plugin.internal.auto-close-brackets.ts +0 -62
  184. package/src/plugins/plugin.internal.change-ref.tsx +0 -19
  185. package/src/plugins/plugin.internal.portable-text-editor-ref.tsx +0 -16
  186. package/src/plugins/plugin.internal.slate-editor-ref.tsx +0 -15
  187. package/src/priority/priority.core.ts +0 -3
  188. package/src/priority/priority.sort.test.ts +0 -319
  189. package/src/priority/priority.sort.ts +0 -123
  190. package/src/priority/priority.types.ts +0 -24
  191. package/src/selectors/_exports/index.ts +0 -1
  192. package/src/selectors/drag-selection.test.ts +0 -578
  193. package/src/selectors/drag-selection.ts +0 -118
  194. package/src/selectors/index.ts +0 -54
  195. package/src/selectors/selector.get-active-annotation-marks.ts +0 -12
  196. package/src/selectors/selector.get-active-annotations.ts +0 -36
  197. package/src/selectors/selector.get-active-decorators.ts +0 -29
  198. package/src/selectors/selector.get-active-list-item.ts +0 -38
  199. package/src/selectors/selector.get-active-style.ts +0 -38
  200. package/src/selectors/selector.get-anchor-block.ts +0 -22
  201. package/src/selectors/selector.get-anchor-child.ts +0 -36
  202. package/src/selectors/selector.get-anchor-span.ts +0 -17
  203. package/src/selectors/selector.get-anchor-text-block.ts +0 -18
  204. package/src/selectors/selector.get-block-offsets.ts +0 -34
  205. package/src/selectors/selector.get-caret-word-selection.test.ts +0 -284
  206. package/src/selectors/selector.get-caret-word-selection.ts +0 -134
  207. package/src/selectors/selector.get-first-block.ts +0 -14
  208. package/src/selectors/selector.get-focus-block-object.ts +0 -18
  209. package/src/selectors/selector.get-focus-block.ts +0 -23
  210. package/src/selectors/selector.get-focus-child.ts +0 -36
  211. package/src/selectors/selector.get-focus-inline-object.ts +0 -17
  212. package/src/selectors/selector.get-focus-list-block.ts +0 -18
  213. package/src/selectors/selector.get-focus-span.ts +0 -18
  214. package/src/selectors/selector.get-focus-text-block.ts +0 -18
  215. package/src/selectors/selector.get-last-block.ts +0 -16
  216. package/src/selectors/selector.get-mark-state.test.ts +0 -325
  217. package/src/selectors/selector.get-mark-state.ts +0 -263
  218. package/src/selectors/selector.get-next-block.ts +0 -29
  219. package/src/selectors/selector.get-next-inline-object.ts +0 -53
  220. package/src/selectors/selector.get-next-inline-objects.ts +0 -50
  221. package/src/selectors/selector.get-next-span.ts +0 -56
  222. package/src/selectors/selector.get-previous-block.ts +0 -29
  223. package/src/selectors/selector.get-previous-inline-object.ts +0 -50
  224. package/src/selectors/selector.get-previous-inline-objects.ts +0 -47
  225. package/src/selectors/selector.get-previous-span.ts +0 -53
  226. package/src/selectors/selector.get-selected-blocks.ts +0 -61
  227. package/src/selectors/selector.get-selected-spans.test.ts +0 -347
  228. package/src/selectors/selector.get-selected-spans.ts +0 -155
  229. package/src/selectors/selector.get-selected-text-blocks.ts +0 -73
  230. package/src/selectors/selector.get-selected-value.test.ts +0 -834
  231. package/src/selectors/selector.get-selected-value.ts +0 -66
  232. package/src/selectors/selector.get-selection-end-block.ts +0 -33
  233. package/src/selectors/selector.get-selection-end-child.ts +0 -33
  234. package/src/selectors/selector.get-selection-end-point.ts +0 -17
  235. package/src/selectors/selector.get-selection-start-block.ts +0 -33
  236. package/src/selectors/selector.get-selection-start-child.ts +0 -33
  237. package/src/selectors/selector.get-selection-start-point.ts +0 -17
  238. package/src/selectors/selector.get-selection-text.test.ts +0 -421
  239. package/src/selectors/selector.get-selection-text.ts +0 -27
  240. package/src/selectors/selector.get-selection.ts +0 -9
  241. package/src/selectors/selector.get-text-after.ts +0 -46
  242. package/src/selectors/selector.get-text-before.ts +0 -46
  243. package/src/selectors/selector.get-value.ts +0 -11
  244. package/src/selectors/selector.is-active-annotation.test.ts +0 -320
  245. package/src/selectors/selector.is-active-annotation.ts +0 -52
  246. package/src/selectors/selector.is-active-decorator.test.ts +0 -136
  247. package/src/selectors/selector.is-active-decorator.ts +0 -24
  248. package/src/selectors/selector.is-active-list-item.ts +0 -13
  249. package/src/selectors/selector.is-active-style.ts +0 -13
  250. package/src/selectors/selector.is-at-the-end-of-block.ts +0 -30
  251. package/src/selectors/selector.is-at-the-start-of-block.ts +0 -30
  252. package/src/selectors/selector.is-overlapping-selection.test.ts +0 -304
  253. package/src/selectors/selector.is-overlapping-selection.ts +0 -181
  254. package/src/selectors/selector.is-point-after-selection.ts +0 -97
  255. package/src/selectors/selector.is-point-before-selection.ts +0 -97
  256. package/src/selectors/selector.is-selecting-entire-blocks.ts +0 -43
  257. package/src/selectors/selector.is-selection-collapsed.ts +0 -17
  258. package/src/selectors/selector.is-selection-expanded.test.ts +0 -63
  259. package/src/selectors/selector.is-selection-expanded.ts +0 -9
  260. package/src/test/_exports/index.ts +0 -1
  261. package/src/test/gherkin-parameter-types.ts +0 -112
  262. package/src/test/index.ts +0 -1
  263. package/src/test/vitest/_exports/index.ts +0 -1
  264. package/src/test/vitest/index.ts +0 -3
  265. package/src/test/vitest/step-context.ts +0 -13
  266. package/src/test/vitest/step-definitions.tsx +0 -960
  267. package/src/test/vitest/test-editor.tsx +0 -198
  268. package/src/type-utils.ts +0 -29
  269. package/src/types/block-offset.ts +0 -9
  270. package/src/types/block-with-optional-key.ts +0 -25
  271. package/src/types/editor.ts +0 -509
  272. package/src/types/options.ts +0 -13
  273. package/src/types/paths.ts +0 -35
  274. package/src/types/slate-editor.ts +0 -50
  275. package/src/types/slate.ts +0 -27
  276. package/src/utils/_exports/index.ts +0 -1
  277. package/src/utils/asserters.ts +0 -9
  278. package/src/utils/index.ts +0 -24
  279. package/src/utils/key-generator.ts +0 -33
  280. package/src/utils/parse-blocks.test.ts +0 -836
  281. package/src/utils/parse-blocks.ts +0 -504
  282. package/src/utils/util.at-the-beginning-of-block.ts +0 -32
  283. package/src/utils/util.block-offset-to-block-selection-point.ts +0 -28
  284. package/src/utils/util.block-offset-to-selection-point.ts +0 -33
  285. package/src/utils/util.block-offset.test.ts +0 -375
  286. package/src/utils/util.block-offset.ts +0 -136
  287. package/src/utils/util.block-offsets-to-selection.ts +0 -38
  288. package/src/utils/util.child-selection-point-to-block-offset.ts +0 -51
  289. package/src/utils/util.get-block-end-point.ts +0 -35
  290. package/src/utils/util.get-block-start-point.ts +0 -31
  291. package/src/utils/util.get-selection-end-point.ts +0 -20
  292. package/src/utils/util.get-selection-start-point.ts +0 -20
  293. package/src/utils/util.get-text-block-text.ts +0 -8
  294. package/src/utils/util.is-empty-text-block.ts +0 -21
  295. package/src/utils/util.is-equal-selection-points.ts +0 -13
  296. package/src/utils/util.is-equal-selections.ts +0 -20
  297. package/src/utils/util.is-keyed-segment.ts +0 -8
  298. package/src/utils/util.is-selection-collapsed.ts +0 -16
  299. package/src/utils/util.is-selection-expanded.ts +0 -13
  300. package/src/utils/util.merge-text-blocks.ts +0 -40
  301. package/src/utils/util.reverse-selection.ts +0 -26
  302. package/src/utils/util.selection-point-to-block-offset.ts +0 -30
  303. package/src/utils/util.selection-point.ts +0 -22
  304. package/src/utils/util.slice-blocks.ts +0 -221
  305. package/src/utils/util.slice-text-block.test.ts +0 -190
  306. package/src/utils/util.slice-text-block.ts +0 -89
  307. package/src/utils/util.split-text-block.ts +0 -54
@@ -2926,6 +2926,12 @@ type BlockOffset = {
2926
2926
  path: BlockPath;
2927
2927
  offset: number;
2928
2928
  };
2929
+ declare global {
2930
+ type DOMNode = typeof globalThis.Node;
2931
+ type DOMRange = typeof globalThis.Range;
2932
+ type DOMSelection = typeof globalThis.Selection;
2933
+ type DOMStaticRange = typeof globalThis.StaticRange;
2934
+ }
2929
2935
  type TextBlockWithOptionalKey = Omit<PortableTextTextBlock$1, '_key'> & {
2930
2936
  _key?: PortableTextTextBlock$1['_key'];
2931
2937
  };
@@ -3299,7 +3305,7 @@ declare const editorMachine: xstate228.StateMachine<{
3299
3305
  }, xstate228.AnyEventObject>;
3300
3306
  }) => {
3301
3307
  behaviors: Set<{
3302
- behavior: Behavior<"*" | "split" | `custom.${string}` | "annotation.add" | "annotation.remove" | "block.set" | "block.unset" | "child.set" | "child.unset" | "decorator.add" | "decorator.remove" | "delete" | "history.redo" | "history.undo" | "insert.block" | "insert.child" | "insert.text" | "move.backward" | "move.block" | "move.forward" | "select" | "annotation.set" | "annotation.toggle" | "decorator.toggle" | "delete.backward" | "delete.block" | "delete.child" | "delete.forward" | "delete.text" | "deserialize" | "deserialize.data" | "deserialization.success" | "deserialization.failure" | "insert.blocks" | "insert.break" | "insert.inline object" | "insert.soft break" | "insert.span" | "list item.add" | "list item.remove" | "list item.toggle" | "move.block down" | "move.block up" | "select.block" | "select.previous block" | "select.next block" | "serialize" | "serialize.data" | "serialization.success" | "serialization.failure" | "style.add" | "style.remove" | "style.toggle" | "clipboard.copy" | "clipboard.cut" | "clipboard.paste" | "drag.dragstart" | "drag.drag" | "drag.dragend" | "drag.dragenter" | "drag.dragover" | "drag.dragleave" | "drag.drop" | "input.*" | "keyboard.keydown" | "keyboard.keyup" | "mouse.click" | "history.*" | "split.*" | "delete.*" | "select.*" | "deserialize.*" | "serialize.*" | "annotation.*" | "block.*" | "child.*" | "decorator.*" | "insert.*" | "move.*" | "deserialization.*" | "list item.*" | "serialization.*" | "style.*" | "clipboard.*" | "drag.*" | "keyboard.*" | "mouse.*", true, {
3308
+ behavior: Behavior<"*" | "split" | `custom.${string}` | "annotation.add" | "annotation.remove" | "block.set" | "block.unset" | "child.set" | "child.unset" | "decorator.add" | "decorator.remove" | "delete" | "history.redo" | "history.undo" | "insert.block" | "insert.child" | "insert.text" | "move.backward" | "move.block" | "move.forward" | "select" | "annotation.set" | "annotation.toggle" | "decorator.toggle" | "delete.backward" | "delete.block" | "delete.child" | "delete.forward" | "delete.text" | "deserialize" | "deserialize.data" | "deserialization.success" | "deserialization.failure" | "insert.blocks" | "insert.break" | "insert.inline object" | "insert.soft break" | "insert.span" | "list item.add" | "list item.remove" | "list item.toggle" | "move.block down" | "move.block up" | "select.block" | "select.previous block" | "select.next block" | "serialize" | "serialize.data" | "serialization.success" | "serialization.failure" | "style.add" | "style.remove" | "style.toggle" | "clipboard.copy" | "clipboard.cut" | "clipboard.paste" | "drag.dragstart" | "drag.drag" | "drag.dragend" | "drag.dragenter" | "drag.dragover" | "drag.dragleave" | "drag.drop" | "input.*" | "keyboard.keydown" | "keyboard.keyup" | "mouse.click" | "style.*" | "history.*" | "split.*" | "delete.*" | "select.*" | "deserialize.*" | "serialize.*" | "annotation.*" | "block.*" | "child.*" | "decorator.*" | "insert.*" | "move.*" | "deserialization.*" | "list item.*" | "serialization.*" | "clipboard.*" | "drag.*" | "keyboard.*" | "mouse.*", true, {
3303
3309
  type: StrictExtract<"split" | "annotation.add" | "annotation.remove" | "block.set" | "block.unset" | "child.set" | "child.unset" | "decorator.add" | "decorator.remove" | "delete" | "history.redo" | "history.undo" | "insert.block" | "insert.child" | "insert.text" | "move.backward" | "move.block" | "move.forward" | "select" | "annotation.set" | "annotation.toggle" | "decorator.toggle" | "delete.backward" | "delete.block" | "delete.child" | "delete.forward" | "delete.text" | "deserialize" | "deserialize.data" | "deserialization.success" | "deserialization.failure" | "insert.blocks" | "insert.break" | "insert.inline object" | "insert.soft break" | "insert.span" | "list item.add" | "list item.remove" | "list item.toggle" | "move.block down" | "move.block up" | "select.block" | "select.previous block" | "select.next block" | "serialize" | "serialize.data" | "serialization.success" | "serialization.failure" | "style.add" | "style.remove" | "style.toggle", "annotation.add">;
3304
3310
  annotation: {
3305
3311
  name: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@portabletext/editor",
3
- "version": "3.3.2",
3
+ "version": "3.3.4",
4
4
  "description": "Portable Text Editor made in React",
5
5
  "keywords": [
6
6
  "sanity",
@@ -58,28 +58,27 @@
58
58
  "main": "./lib/index.js",
59
59
  "types": "./lib/index.d.ts",
60
60
  "files": [
61
- "lib",
62
- "src"
61
+ "lib"
63
62
  ],
64
63
  "dependencies": {
65
64
  "@portabletext/to-html": "^4.0.1",
65
+ "@sanity/schema": "^4.20.3",
66
+ "@sanity/types": "^4.20.3",
66
67
  "@xstate/react": "^6.0.0",
67
68
  "debug": "^4.4.3",
68
69
  "lodash": "^4.17.21",
69
70
  "lodash.startcase": "^4.4.0",
70
- "react-compiler-runtime": "1.0.0",
71
+ "react-compiler-runtime": "^1.0.0",
71
72
  "xstate": "^5.24.0",
72
- "@portabletext/block-tools": "^4.1.7",
73
- "@portabletext/keyboard-shortcuts": "^2.1.0",
74
- "@portabletext/markdown": "^1.0.3",
75
- "@portabletext/patches": "^2.0.0",
76
- "@portabletext/schema": "^2.0.0"
73
+ "@portabletext/block-tools": "^4.1.9",
74
+ "@portabletext/keyboard-shortcuts": "^2.1.1",
75
+ "@portabletext/markdown": "^1.0.4",
76
+ "@portabletext/patches": "^2.0.1",
77
+ "@portabletext/schema": "^2.0.1"
77
78
  },
78
79
  "devDependencies": {
79
80
  "@sanity/diff-match-patch": "^3.2.0",
80
81
  "@sanity/pkg-utils": "^10.1.1",
81
- "@sanity/schema": "^4.20.3",
82
- "@sanity/types": "^4.20.3",
83
82
  "@types/debug": "^4.1.12",
84
83
  "@types/lodash": "^4.17.20",
85
84
  "@types/lodash.startcase": "^4.4.9",
@@ -90,10 +89,10 @@
90
89
  "@vitest/browser": "^4.0.14",
91
90
  "@vitest/browser-playwright": "^4.0.14",
92
91
  "@vitest/coverage-istanbul": "^4.0.14",
93
- "babel-plugin-react-compiler": "1.0.0",
92
+ "babel-plugin-react-compiler": "^1.0.0",
94
93
  "eslint": "^9.39.1",
95
94
  "eslint-formatter-gha": "^1.6.0",
96
- "eslint-plugin-react-hooks": "7.0.1",
95
+ "eslint-plugin-react-hooks": "^7.0.1",
97
96
  "jsdom": "^27.0.0",
98
97
  "react": "^19.2.1",
99
98
  "react-dom": "^19.2.1",
@@ -106,14 +105,12 @@
106
105
  "vite": "^7.1.12",
107
106
  "vitest": "^4.0.14",
108
107
  "vitest-browser-react": "^2.0.2",
109
- "@portabletext/sanity-bridge": "1.2.10",
110
- "@portabletext/test": "^1.0.0",
111
- "racejar": "2.0.0"
108
+ "@portabletext/sanity-bridge": "1.2.12",
109
+ "@portabletext/test": "^1.0.2",
110
+ "racejar": "2.0.1"
112
111
  },
113
112
  "peerDependencies": {
114
- "@portabletext/sanity-bridge": "^1.2.10",
115
- "@sanity/schema": "^4.20.3",
116
- "@sanity/types": "^4.20.3",
113
+ "@portabletext/sanity-bridge": "^1.2.12",
117
114
  "react": "^18.3 || ^19",
118
115
  "rxjs": "^7.8.2"
119
116
  },
@@ -1 +0,0 @@
1
- export * from '../index'
@@ -1,77 +0,0 @@
1
- import {getFocusTextBlock} from '../selectors/selector.get-focus-text-block'
2
- import {isActiveAnnotation} from '../selectors/selector.is-active-annotation'
3
- import {raise} from './behavior.types.action'
4
- import {defineBehavior} from './behavior.types.behavior'
5
-
6
- export const abstractAnnotationBehaviors = [
7
- defineBehavior({
8
- on: 'annotation.set',
9
- guard: ({snapshot, event}) => {
10
- const blockKey = event.at[0]._key
11
- const markDefKey = event.at[2]._key
12
-
13
- const block = getFocusTextBlock({
14
- ...snapshot,
15
- context: {
16
- ...snapshot.context,
17
- selection: {
18
- anchor: {
19
- path: [{_key: blockKey}],
20
- offset: 0,
21
- },
22
- focus: {
23
- path: [{_key: blockKey}],
24
- offset: 0,
25
- },
26
- },
27
- },
28
- })
29
-
30
- if (!block) {
31
- return false
32
- }
33
-
34
- const updatedMarkDefs = block.node.markDefs?.map((markDef) => {
35
- if (markDef._key === markDefKey) {
36
- return {
37
- ...markDef,
38
- ...event.props,
39
- }
40
- }
41
-
42
- return markDef
43
- })
44
-
45
- return {blockKey, updatedMarkDefs}
46
- },
47
- actions: [
48
- (_, {blockKey, updatedMarkDefs}) => [
49
- raise({
50
- type: 'block.set',
51
- at: [{_key: blockKey}],
52
- props: {markDefs: updatedMarkDefs},
53
- }),
54
- ],
55
- ],
56
- }),
57
- defineBehavior({
58
- on: 'annotation.toggle',
59
- guard: ({snapshot, event}) =>
60
- isActiveAnnotation(event.annotation.name)(snapshot),
61
- actions: [
62
- ({event}) => [
63
- raise({type: 'annotation.remove', annotation: event.annotation}),
64
- ],
65
- ],
66
- }),
67
- defineBehavior({
68
- on: 'annotation.toggle',
69
- guard: ({snapshot, event}) =>
70
- !isActiveAnnotation(event.annotation.name)(snapshot),
71
- actions: [
72
- ({event}) => [
73
- raise({type: 'annotation.add', annotation: event.annotation}),
74
- ],
75
- ],
76
- }),
77
- ]
@@ -1,39 +0,0 @@
1
- import {isActiveDecorator} from '../selectors/selector.is-active-decorator'
2
- import {raise} from './behavior.types.action'
3
- import {defineBehavior} from './behavior.types.behavior'
4
-
5
- export const abstractDecoratorBehaviors = [
6
- defineBehavior({
7
- on: 'decorator.toggle',
8
- guard: ({snapshot, event}) => isActiveDecorator(event.decorator)(snapshot),
9
- actions: [
10
- ({event}) => [
11
- raise({type: 'decorator.remove', decorator: event.decorator}),
12
- ],
13
- ],
14
- }),
15
- defineBehavior({
16
- on: 'decorator.toggle',
17
- guard: ({snapshot, event}) => {
18
- if (event.at) {
19
- return !isActiveDecorator(event.decorator)({
20
- ...snapshot,
21
- context: {
22
- ...snapshot.context,
23
- selection: event.at,
24
- },
25
- })
26
- }
27
-
28
- return !isActiveDecorator(event.decorator)(snapshot)
29
- },
30
- actions: [
31
- ({event}) => [
32
- raise({
33
- ...event,
34
- type: 'decorator.add',
35
- }),
36
- ],
37
- ],
38
- }),
39
- ]
@@ -1,273 +0,0 @@
1
- import {isSpan, isTextBlock} from '@portabletext/schema'
2
- import {getFocusChild} from '../selectors/selector.get-focus-child'
3
- import {getFocusTextBlock} from '../selectors/selector.get-focus-text-block'
4
- import {getNextBlock} from '../selectors/selector.get-next-block'
5
- import {getPreviousBlock} from '../selectors/selector.get-previous-block'
6
- import {isAtTheEndOfBlock} from '../selectors/selector.is-at-the-end-of-block'
7
- import {isAtTheStartOfBlock} from '../selectors/selector.is-at-the-start-of-block'
8
- import {getBlockEndPoint} from '../utils/util.get-block-end-point'
9
- import {getBlockStartPoint} from '../utils/util.get-block-start-point'
10
- import {isEmptyTextBlock} from '../utils/util.is-empty-text-block'
11
- import {raise} from './behavior.types.action'
12
- import {defineBehavior} from './behavior.types.behavior'
13
-
14
- export const abstractDeleteBehaviors = [
15
- defineBehavior({
16
- on: 'delete.backward',
17
- guard: ({snapshot}) => {
18
- return snapshot.context.selection
19
- },
20
- actions: [
21
- ({event}) => [
22
- raise({
23
- type: 'delete',
24
- direction: 'backward',
25
- unit: event.unit,
26
- }),
27
- ],
28
- ],
29
- }),
30
- defineBehavior({
31
- on: 'delete',
32
- guard: ({snapshot, event}) => {
33
- if (event.direction !== 'backward') {
34
- return false
35
- }
36
-
37
- const previousBlock = getPreviousBlock(snapshot)
38
- const focusTextBlock = getFocusTextBlock(snapshot)
39
-
40
- if (!previousBlock || !focusTextBlock) {
41
- return false
42
- }
43
-
44
- if (!isAtTheStartOfBlock(focusTextBlock)(snapshot)) {
45
- return false
46
- }
47
-
48
- const previousBlockEndPoint = getBlockEndPoint({
49
- context: snapshot.context,
50
- block: previousBlock,
51
- })
52
-
53
- if (!isTextBlock(snapshot.context, previousBlock.node)) {
54
- return false
55
- }
56
-
57
- return {previousBlockEndPoint, focusTextBlock}
58
- },
59
- actions: [
60
- (_, {previousBlockEndPoint, focusTextBlock}) => [
61
- raise({
62
- type: 'delete.block',
63
- at: focusTextBlock.path,
64
- }),
65
- raise({
66
- type: 'select',
67
- at: {
68
- anchor: previousBlockEndPoint,
69
- focus: previousBlockEndPoint,
70
- },
71
- }),
72
- raise({
73
- type: 'insert.block',
74
- block: focusTextBlock.node,
75
- placement: 'auto',
76
- select: 'start',
77
- }),
78
- ],
79
- ],
80
- }),
81
- defineBehavior({
82
- on: 'delete.forward',
83
- guard: ({snapshot}) => {
84
- return snapshot.context.selection
85
- },
86
- actions: [
87
- ({event}) => [
88
- raise({
89
- type: 'delete',
90
- direction: 'forward',
91
- unit: event.unit,
92
- }),
93
- ],
94
- ],
95
- }),
96
- defineBehavior({
97
- on: 'delete',
98
- guard: ({snapshot, event}) => {
99
- if (event.direction !== 'forward') {
100
- return false
101
- }
102
-
103
- const at = event.at ?? snapshot.context.selection
104
-
105
- if (!at) {
106
- return false
107
- }
108
-
109
- const nextBlock = getNextBlock({
110
- ...snapshot,
111
- context: {
112
- ...snapshot.context,
113
- selection: at,
114
- },
115
- })
116
- const focusTextBlock = getFocusTextBlock({
117
- ...snapshot,
118
- context: {
119
- ...snapshot.context,
120
- selection: at,
121
- },
122
- })
123
-
124
- if (!nextBlock || !focusTextBlock) {
125
- return false
126
- }
127
-
128
- if (!isEmptyTextBlock(snapshot.context, focusTextBlock.node)) {
129
- return false
130
- }
131
-
132
- const nextBlockStartPoint = getBlockStartPoint({
133
- context: snapshot.context,
134
- block: nextBlock,
135
- })
136
-
137
- return {focusTextBlock, nextBlockStartPoint}
138
- },
139
- actions: [
140
- (_, {focusTextBlock, nextBlockStartPoint}) => [
141
- raise({
142
- type: 'delete.block',
143
- at: focusTextBlock.path,
144
- }),
145
- raise({
146
- type: 'select',
147
- at: {
148
- anchor: nextBlockStartPoint,
149
- focus: nextBlockStartPoint,
150
- },
151
- }),
152
- ],
153
- ],
154
- }),
155
- defineBehavior({
156
- on: 'delete',
157
- guard: ({snapshot, event}) => {
158
- if (event.direction !== 'forward') {
159
- return false
160
- }
161
-
162
- const nextBlock = getNextBlock(snapshot)
163
- const focusTextBlock = getFocusTextBlock(snapshot)
164
-
165
- if (!nextBlock || !focusTextBlock) {
166
- return false
167
- }
168
-
169
- if (!isAtTheEndOfBlock(focusTextBlock)(snapshot)) {
170
- return false
171
- }
172
-
173
- if (!isTextBlock(snapshot.context, nextBlock.node)) {
174
- return false
175
- }
176
-
177
- return {nextBlock}
178
- },
179
- actions: [
180
- (_, {nextBlock}) => [
181
- raise({
182
- type: 'delete.block',
183
- at: nextBlock.path,
184
- }),
185
- raise({
186
- type: 'insert.block',
187
- block: nextBlock.node,
188
- placement: 'auto',
189
- select: 'none',
190
- }),
191
- ],
192
- ],
193
- }),
194
- defineBehavior({
195
- on: 'delete.block',
196
- actions: [
197
- ({event}) => [
198
- raise({
199
- type: 'delete',
200
- at: {
201
- anchor: {
202
- path: event.at,
203
- offset: 0,
204
- },
205
- focus: {
206
- path: event.at,
207
- offset: 0,
208
- },
209
- },
210
- unit: 'block',
211
- }),
212
- ],
213
- ],
214
- }),
215
- defineBehavior({
216
- on: 'delete.child',
217
- guard: ({snapshot, event}) => {
218
- const focusChild = getFocusChild({
219
- ...snapshot,
220
- context: {
221
- ...snapshot.context,
222
- selection: {
223
- anchor: {
224
- path: event.at,
225
- offset: 0,
226
- },
227
- focus: {
228
- path: event.at,
229
- offset: 0,
230
- },
231
- },
232
- },
233
- })
234
-
235
- if (!focusChild) {
236
- return false
237
- }
238
-
239
- if (isSpan(snapshot.context, focusChild.node)) {
240
- return {
241
- selection: {
242
- anchor: {
243
- path: event.at,
244
- offset: 0,
245
- },
246
- focus: {
247
- path: event.at,
248
- offset: focusChild.node.text.length,
249
- },
250
- },
251
- }
252
- }
253
-
254
- return {
255
- selection: {
256
- anchor: {
257
- path: event.at,
258
- offset: 0,
259
- },
260
- focus: {
261
- path: event.at,
262
- offset: 0,
263
- },
264
- },
265
- }
266
- },
267
- actions: [(_, {selection}) => [raise({type: 'delete', at: selection})]],
268
- }),
269
- defineBehavior({
270
- on: 'delete.text',
271
- actions: [({event}) => [raise({...event, type: 'delete'})]],
272
- }),
273
- ]