@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
@@ -1,70 +0,0 @@
1
- import {getSelectedTextBlocks} from '../selectors/selector.get-selected-text-blocks'
2
- import {isActiveListItem} from '../selectors/selector.is-active-list-item'
3
- import {raise} from './behavior.types.action'
4
- import {defineBehavior} from './behavior.types.behavior'
5
-
6
- export const abstractListItemBehaviors = [
7
- defineBehavior({
8
- on: 'list item.add',
9
- guard: ({snapshot, event}) => {
10
- if (
11
- !snapshot.context.schema.lists.some(
12
- (list) => list.name === event.listItem,
13
- )
14
- ) {
15
- return false
16
- }
17
-
18
- const selectedTextBlocks = getSelectedTextBlocks(snapshot)
19
-
20
- return {selectedTextBlocks}
21
- },
22
- actions: [
23
- ({event}, {selectedTextBlocks}) =>
24
- selectedTextBlocks.map((block) =>
25
- raise({
26
- type: 'block.set',
27
- at: block.path,
28
- props: {
29
- level: block.node.level ?? 1,
30
- listItem: event.listItem,
31
- },
32
- }),
33
- ),
34
- ],
35
- }),
36
- defineBehavior({
37
- on: 'list item.remove',
38
- guard: ({snapshot}) => {
39
- const selectedTextBlocks = getSelectedTextBlocks(snapshot)
40
-
41
- return {selectedTextBlocks}
42
- },
43
- actions: [
44
- (_, {selectedTextBlocks}) =>
45
- selectedTextBlocks.map((block) =>
46
- raise({
47
- type: 'block.unset',
48
- at: block.path,
49
- props: ['level', 'listItem'],
50
- }),
51
- ),
52
- ],
53
- }),
54
- defineBehavior({
55
- on: 'list item.toggle',
56
- guard: ({snapshot, event}) => isActiveListItem(event.listItem)(snapshot),
57
- actions: [
58
- ({event}) => [
59
- raise({type: 'list item.remove', listItem: event.listItem}),
60
- ],
61
- ],
62
- }),
63
- defineBehavior({
64
- on: 'list item.toggle',
65
- guard: ({snapshot, event}) => !isActiveListItem(event.listItem)(snapshot),
66
- actions: [
67
- ({event}) => [raise({type: 'list item.add', listItem: event.listItem})],
68
- ],
69
- }),
70
- ]
@@ -1,79 +0,0 @@
1
- import {getNextBlock} from '../selectors/selector.get-next-block'
2
- import {getPreviousBlock} from '../selectors/selector.get-previous-block'
3
- import {raise} from './behavior.types.action'
4
- import {defineBehavior} from './behavior.types.behavior'
5
-
6
- export const abstractMoveBehaviors = [
7
- defineBehavior({
8
- on: 'move.block up',
9
- guard: ({snapshot, event}) => {
10
- const previousBlock = getPreviousBlock({
11
- ...snapshot,
12
- context: {
13
- ...snapshot.context,
14
- selection: {
15
- anchor: {
16
- path: event.at,
17
- offset: 0,
18
- },
19
- focus: {
20
- path: event.at,
21
- offset: 0,
22
- },
23
- },
24
- },
25
- })
26
-
27
- if (previousBlock) {
28
- return {previousBlock}
29
- }
30
-
31
- return false
32
- },
33
- actions: [
34
- ({event}, {previousBlock}) => [
35
- raise({
36
- type: 'move.block',
37
- at: event.at,
38
- to: previousBlock.path,
39
- }),
40
- ],
41
- ],
42
- }),
43
- defineBehavior({
44
- on: 'move.block down',
45
- guard: ({snapshot, event}) => {
46
- const nextBlock = getNextBlock({
47
- ...snapshot,
48
- context: {
49
- ...snapshot.context,
50
- selection: {
51
- anchor: {
52
- path: event.at,
53
- offset: 0,
54
- },
55
- focus: {
56
- path: event.at,
57
- offset: 0,
58
- },
59
- },
60
- },
61
- })
62
-
63
- if (nextBlock) {
64
- return {nextBlock}
65
- }
66
-
67
- return false
68
- },
69
- actions: [
70
- ({event}, {nextBlock}) => [
71
- raise({
72
- type: 'move.block',
73
- at: event.at,
74
- to: nextBlock.path,
75
- }),
76
- ],
77
- ],
78
- }),
79
- ]
@@ -1,118 +0,0 @@
1
- import {getFocusBlock} from '../selectors/selector.get-focus-block'
2
- import {getNextBlock} from '../selectors/selector.get-next-block'
3
- import {getPreviousBlock} from '../selectors/selector.get-previous-block'
4
- import {getBlockEndPoint} from '../utils/util.get-block-end-point'
5
- import {raise} from './behavior.types.action'
6
- import {defineBehavior} from './behavior.types.behavior'
7
-
8
- export const abstractSelectBehaviors = [
9
- defineBehavior({
10
- on: 'select.block',
11
- guard: ({snapshot, event}) => {
12
- if (event.select !== 'end') {
13
- return false
14
- }
15
-
16
- const block = getFocusBlock({
17
- ...snapshot,
18
- context: {
19
- ...snapshot.context,
20
- selection: {
21
- anchor: {
22
- path: event.at,
23
- offset: 0,
24
- },
25
- focus: {
26
- path: event.at,
27
- offset: 0,
28
- },
29
- },
30
- },
31
- })
32
-
33
- if (!block) {
34
- return false
35
- }
36
-
37
- const blockEndPoint = getBlockEndPoint({
38
- context: snapshot.context,
39
- block,
40
- })
41
-
42
- return {blockEndPoint}
43
- },
44
- actions: [
45
- (_, {blockEndPoint}) => [
46
- raise({
47
- type: 'select',
48
- at: {
49
- anchor: blockEndPoint,
50
- focus: blockEndPoint,
51
- },
52
- }),
53
- ],
54
- ],
55
- }),
56
- defineBehavior({
57
- on: 'select.block',
58
- actions: [
59
- ({event}) => [
60
- raise({
61
- type: 'select',
62
- at: {
63
- anchor: {
64
- path: event.at,
65
- offset: 0,
66
- },
67
- focus: {
68
- path: event.at,
69
- offset: 0,
70
- },
71
- },
72
- }),
73
- ],
74
- ],
75
- }),
76
- defineBehavior({
77
- on: 'select.previous block',
78
- guard: ({snapshot}) => {
79
- const previousBlock = getPreviousBlock(snapshot)
80
-
81
- if (!previousBlock) {
82
- return false
83
- }
84
-
85
- return {previousBlock}
86
- },
87
- actions: [
88
- ({event}, {previousBlock}) => [
89
- raise({
90
- type: 'select.block',
91
- at: previousBlock.path,
92
- select: event.select,
93
- }),
94
- ],
95
- ],
96
- }),
97
- defineBehavior({
98
- on: 'select.next block',
99
- guard: ({snapshot}) => {
100
- const nextBlock = getNextBlock(snapshot)
101
-
102
- if (!nextBlock) {
103
- return false
104
- }
105
-
106
- return {nextBlock}
107
- },
108
- actions: [
109
- ({event}, {nextBlock}) => [
110
- raise({
111
- type: 'select.block',
112
- at: nextBlock.path,
113
- select: event.select,
114
- }),
115
- ],
116
- ],
117
- }),
118
- ]
@@ -1,96 +0,0 @@
1
- import {raise} from './behavior.types.action'
2
- import {defineBehavior} from './behavior.types.behavior'
3
-
4
- export const abstractSerializeBehaviors = [
5
- defineBehavior({
6
- on: 'serialize',
7
- actions: [
8
- ({event}) => [
9
- raise({
10
- type: 'serialize.data',
11
- mimeType: 'application/x-portable-text',
12
- originEvent: event.originEvent,
13
- }),
14
- raise({
15
- type: 'serialize.data',
16
- mimeType: 'application/json',
17
- originEvent: event.originEvent,
18
- }),
19
- raise({
20
- type: 'serialize.data',
21
- mimeType: 'text/markdown',
22
- originEvent: event.originEvent,
23
- }),
24
- raise({
25
- type: 'serialize.data',
26
- mimeType: 'text/html',
27
- originEvent: event.originEvent,
28
- }),
29
- raise({
30
- type: 'serialize.data',
31
- mimeType: 'text/plain',
32
- originEvent: event.originEvent,
33
- }),
34
- ],
35
- ],
36
- }),
37
- defineBehavior({
38
- on: 'serialize.data',
39
- guard: ({snapshot, event}) => {
40
- const converter = snapshot.context.converters.find(
41
- (converter) => converter.mimeType === event.mimeType,
42
- )
43
-
44
- if (!converter) {
45
- return false
46
- }
47
-
48
- return converter.serialize({
49
- snapshot,
50
- event: {
51
- type: 'serialize',
52
- originEvent: event.originEvent.type,
53
- },
54
- })
55
- },
56
- actions: [
57
- ({event}, serializeEvent) => [
58
- raise({
59
- ...serializeEvent,
60
- originEvent: event.originEvent,
61
- }),
62
- ],
63
- ],
64
- }),
65
- defineBehavior({
66
- on: 'serialization.success',
67
- actions: [
68
- ({event}) => [
69
- {
70
- type: 'effect',
71
- effect: () => {
72
- event.originEvent.originEvent.dataTransfer.setData(
73
- event.mimeType,
74
- event.data,
75
- )
76
- },
77
- },
78
- ],
79
- ],
80
- }),
81
- defineBehavior({
82
- on: 'serialization.failure',
83
- actions: [
84
- ({event}) => [
85
- {
86
- type: 'effect',
87
- effect: () => {
88
- console.warn(
89
- `Serialization of ${event.mimeType} failed with reason "${event.reason}"`,
90
- )
91
- },
92
- },
93
- ],
94
- ],
95
- }),
96
- ]
@@ -1,170 +0,0 @@
1
- import {isTextBlock} from '@portabletext/schema'
2
- import {isSelectionExpanded} from '../selectors'
3
- import {getFocusBlockObject} from '../selectors/selector.get-focus-block-object'
4
- import {getFocusInlineObject} from '../selectors/selector.get-focus-inline-object'
5
- import {getFocusTextBlock} from '../selectors/selector.get-focus-text-block'
6
- import {getSelectionEndBlock} from '../selectors/selector.get-selection-end-block'
7
- import {getSelectionStartBlock} from '../selectors/selector.get-selection-start-block'
8
- import {isEqualSelectionPoints} from '../utils'
9
- import {parseBlock} from '../utils/parse-blocks'
10
- import {getBlockEndPoint} from '../utils/util.get-block-end-point'
11
- import {getBlockStartPoint} from '../utils/util.get-block-start-point'
12
- import {getSelectionEndPoint} from '../utils/util.get-selection-end-point'
13
- import {getSelectionStartPoint} from '../utils/util.get-selection-start-point'
14
- import {isSelectionCollapsed} from '../utils/util.is-selection-collapsed'
15
- import {sliceTextBlock} from '../utils/util.slice-text-block'
16
- import {raise} from './behavior.types.action'
17
- import {defineBehavior} from './behavior.types.behavior'
18
-
19
- export const abstractSplitBehaviors = [
20
- /**
21
- * You can't split an inline object.
22
- */
23
- defineBehavior({
24
- on: 'split',
25
- guard: ({snapshot}) =>
26
- isSelectionCollapsed(snapshot.context.selection) &&
27
- getFocusInlineObject(snapshot),
28
- actions: [],
29
- }),
30
-
31
- /**
32
- * You can't split a block object.
33
- */
34
- defineBehavior({
35
- on: 'split',
36
- guard: ({snapshot}) =>
37
- isSelectionCollapsed(snapshot.context.selection) &&
38
- getFocusBlockObject(snapshot),
39
- actions: [],
40
- }),
41
-
42
- defineBehavior({
43
- on: 'split',
44
- guard: ({snapshot}) => {
45
- const selection = snapshot.context.selection
46
-
47
- if (!selection || isSelectionCollapsed(selection)) {
48
- return false
49
- }
50
-
51
- const startPoint = getSelectionStartPoint(selection)
52
- const endPoint = getSelectionEndPoint(selection)
53
-
54
- if (!startPoint || !endPoint) {
55
- return false
56
- }
57
-
58
- const startBlock = getSelectionStartBlock(snapshot)
59
- const endBlock = getSelectionEndBlock(snapshot)
60
-
61
- if (!startBlock || !endBlock) {
62
- return false
63
- }
64
-
65
- const startBlockStartPoint = getBlockStartPoint({
66
- context: snapshot.context,
67
- block: startBlock,
68
- })
69
- const endBlockEndPoint = getBlockEndPoint({
70
- context: snapshot.context,
71
- block: endBlock,
72
- })
73
-
74
- if (
75
- isTextBlock(snapshot.context, startBlock.node) &&
76
- isTextBlock(snapshot.context, endBlock.node) &&
77
- !isEqualSelectionPoints(startPoint, startBlockStartPoint) &&
78
- !isEqualSelectionPoints(endPoint, endBlockEndPoint)
79
- ) {
80
- return true
81
- }
82
-
83
- return false
84
- },
85
- actions: [() => [raise({type: 'delete'}), raise({type: 'split'})]],
86
- }),
87
-
88
- defineBehavior({
89
- on: 'split',
90
- guard: ({snapshot}) => {
91
- return isSelectionExpanded(snapshot)
92
- },
93
- actions: [() => [raise({type: 'delete'})]],
94
- }),
95
-
96
- defineBehavior({
97
- on: 'split',
98
- guard: ({snapshot}) => {
99
- const selection = snapshot.context.selection
100
-
101
- if (!selection || !isSelectionCollapsed(selection)) {
102
- return false
103
- }
104
-
105
- const selectionStartPoint = getSelectionStartPoint(selection)
106
-
107
- const focusTextBlock = getFocusTextBlock(snapshot)
108
-
109
- if (!focusTextBlock) {
110
- return false
111
- }
112
-
113
- const blockEndPoint = getBlockEndPoint({
114
- context: snapshot.context,
115
- block: focusTextBlock,
116
- })
117
-
118
- const newTextBlockSelection = {
119
- anchor: selectionStartPoint,
120
- focus: blockEndPoint,
121
- }
122
-
123
- const newTextBlock = parseBlock({
124
- block: sliceTextBlock({
125
- context: {
126
- ...snapshot.context,
127
- selection: newTextBlockSelection,
128
- },
129
- block: focusTextBlock.node,
130
- }),
131
- context: snapshot.context,
132
- options: {
133
- normalize: false,
134
- removeUnusedMarkDefs: true,
135
- validateFields: false,
136
- },
137
- })
138
-
139
- if (!newTextBlock) {
140
- return false
141
- }
142
-
143
- return {
144
- newTextBlock,
145
- newTextBlockSelection,
146
- }
147
- },
148
- actions: [
149
- (_, {newTextBlock, newTextBlockSelection}) =>
150
- isSelectionCollapsed(newTextBlockSelection)
151
- ? [
152
- raise({
153
- type: 'insert.block',
154
- block: newTextBlock,
155
- placement: 'after',
156
- select: 'start',
157
- }),
158
- ]
159
- : [
160
- raise({type: 'delete', at: newTextBlockSelection}),
161
- raise({
162
- type: 'insert.block',
163
- block: newTextBlock,
164
- placement: 'after',
165
- select: 'start',
166
- }),
167
- ],
168
- ],
169
- }),
170
- ]
@@ -1,55 +0,0 @@
1
- import {getSelectedTextBlocks} from '../selectors/selector.get-selected-text-blocks'
2
- import {isActiveStyle} from '../selectors/selector.is-active-style'
3
- import {raise} from './behavior.types.action'
4
- import {defineBehavior} from './behavior.types.behavior'
5
-
6
- export const abstractStyleBehaviors = [
7
- defineBehavior({
8
- on: 'style.add',
9
- guard: ({snapshot}) => {
10
- const selectedTextBlocks = getSelectedTextBlocks(snapshot)
11
-
12
- return {selectedTextBlocks}
13
- },
14
- actions: [
15
- ({event}, {selectedTextBlocks}) =>
16
- selectedTextBlocks.map((block) =>
17
- raise({
18
- type: 'block.set',
19
- at: block.path,
20
- props: {
21
- style: event.style,
22
- },
23
- }),
24
- ),
25
- ],
26
- }),
27
- defineBehavior({
28
- on: 'style.remove',
29
- guard: ({snapshot}) => {
30
- const selectedTextBlocks = getSelectedTextBlocks(snapshot)
31
-
32
- return {selectedTextBlocks}
33
- },
34
- actions: [
35
- (_, {selectedTextBlocks}) =>
36
- selectedTextBlocks.map((block) =>
37
- raise({
38
- type: 'block.unset',
39
- at: block.path,
40
- props: ['style'],
41
- }),
42
- ),
43
- ],
44
- }),
45
- defineBehavior({
46
- on: 'style.toggle',
47
- guard: ({snapshot, event}) => isActiveStyle(event.style)(snapshot),
48
- actions: [({event}) => [raise({type: 'style.remove', style: event.style})]],
49
- }),
50
- defineBehavior({
51
- on: 'style.toggle',
52
- guard: ({snapshot, event}) => !isActiveStyle(event.style)(snapshot),
53
- actions: [({event}) => [raise({type: 'style.add', style: event.style})]],
54
- }),
55
- ]