@portabletext/editor 1.20.0 → 1.21.1

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 (128) hide show
  1. package/lib/_chunks-cjs/behavior.core.cjs +8 -68
  2. package/lib/_chunks-cjs/behavior.core.cjs.map +1 -1
  3. package/lib/_chunks-cjs/selector.get-text-before.cjs +11 -39
  4. package/lib/_chunks-cjs/selector.get-text-before.cjs.map +1 -1
  5. package/lib/_chunks-cjs/util.get-block-start-point.cjs +30 -0
  6. package/lib/_chunks-cjs/util.get-block-start-point.cjs.map +1 -0
  7. package/lib/_chunks-cjs/util.is-empty-text-block.cjs +71 -0
  8. package/lib/_chunks-cjs/util.is-empty-text-block.cjs.map +1 -0
  9. package/lib/_chunks-cjs/util.is-keyed-segment.cjs +6 -0
  10. package/lib/_chunks-cjs/util.is-keyed-segment.cjs.map +1 -0
  11. package/lib/_chunks-es/behavior.core.js +7 -66
  12. package/lib/_chunks-es/behavior.core.js.map +1 -1
  13. package/lib/_chunks-es/selector.get-text-before.js +5 -31
  14. package/lib/_chunks-es/selector.get-text-before.js.map +1 -1
  15. package/lib/_chunks-es/util.get-block-start-point.js +31 -0
  16. package/lib/_chunks-es/util.get-block-start-point.js.map +1 -0
  17. package/lib/_chunks-es/util.is-empty-text-block.js +73 -0
  18. package/lib/_chunks-es/util.is-empty-text-block.js.map +1 -0
  19. package/lib/_chunks-es/util.is-keyed-segment.js +7 -0
  20. package/lib/_chunks-es/util.is-keyed-segment.js.map +1 -0
  21. package/lib/behaviors/index.cjs +7 -7
  22. package/lib/behaviors/index.cjs.map +1 -1
  23. package/lib/behaviors/index.d.cts +179 -119
  24. package/lib/behaviors/index.d.ts +179 -119
  25. package/lib/behaviors/index.js +3 -2
  26. package/lib/behaviors/index.js.map +1 -1
  27. package/lib/index.cjs +112 -21
  28. package/lib/index.cjs.map +1 -1
  29. package/lib/index.d.cts +870 -141
  30. package/lib/index.d.ts +870 -141
  31. package/lib/index.js +111 -19
  32. package/lib/index.js.map +1 -1
  33. package/lib/selectors/index.cjs +73 -1
  34. package/lib/selectors/index.cjs.map +1 -1
  35. package/lib/selectors/index.d.cts +14 -0
  36. package/lib/selectors/index.d.ts +14 -0
  37. package/lib/selectors/index.js +73 -0
  38. package/lib/selectors/index.js.map +1 -1
  39. package/lib/utils/index.cjs +11 -0
  40. package/lib/utils/index.cjs.map +1 -0
  41. package/lib/utils/index.d.cts +87 -0
  42. package/lib/utils/index.d.ts +87 -0
  43. package/lib/utils/index.js +13 -0
  44. package/lib/utils/index.js.map +1 -0
  45. package/package.json +15 -9
  46. package/src/behavior-actions/behavior.action-utils.insert-block.ts +1 -1
  47. package/src/behavior-actions/behavior.action.insert-block-object.ts +1 -1
  48. package/src/behavior-actions/behavior.action.insert-inline-object.ts +1 -1
  49. package/src/behavior-actions/behavior.action.text-block.set.ts +1 -1
  50. package/src/behavior-actions/behavior.action.text-block.unset.ts +1 -1
  51. package/src/behavior-actions/behavior.actions.ts +5 -5
  52. package/src/behaviors/behavior.code-editor.ts +1 -1
  53. package/src/behaviors/behavior.core.block-objects.ts +2 -2
  54. package/src/behaviors/behavior.core.decorators.ts +1 -1
  55. package/src/behaviors/behavior.core.lists.ts +2 -2
  56. package/src/behaviors/behavior.emoji-picker.ts +1 -1
  57. package/src/behaviors/behavior.links.ts +1 -1
  58. package/src/behaviors/behavior.markdown.ts +2 -2
  59. package/src/behaviors/behavior.types.ts +52 -19
  60. package/src/behaviors/index.ts +1 -0
  61. package/src/editor/Editable.tsx +12 -12
  62. package/src/editor/PortableTextEditor.tsx +2 -2
  63. package/src/editor/components/DraggableBlock.tsx +2 -2
  64. package/src/editor/components/Element.tsx +3 -3
  65. package/src/editor/components/Leaf.tsx +1 -1
  66. package/src/editor/components/Synchronizer.tsx +1 -1
  67. package/src/editor/create-editor.ts +22 -20
  68. package/src/editor/create-slate-editor.tsx +5 -2
  69. package/src/editor/editor-machine.ts +115 -23
  70. package/src/editor/get-value.ts +2 -2
  71. package/src/editor/hooks/usePortableTextEditorSelection.tsx +1 -1
  72. package/src/editor/mutation-machine.ts +2 -2
  73. package/src/editor/plugins/create-with-event-listeners.ts +50 -4
  74. package/src/editor/plugins/createWithEditableAPI.ts +7 -7
  75. package/src/editor/plugins/createWithHotKeys.ts +2 -2
  76. package/src/editor/plugins/createWithInsertData.ts +7 -7
  77. package/src/editor/plugins/createWithMaxBlocks.ts +2 -2
  78. package/src/editor/plugins/createWithObjectKeys.ts +2 -2
  79. package/src/editor/plugins/createWithPatches.ts +10 -10
  80. package/src/editor/plugins/createWithPlaceholderBlock.ts +3 -3
  81. package/src/editor/plugins/createWithPortableTextBlockStyle.ts +1 -1
  82. package/src/editor/plugins/createWithPortableTextMarkModel.ts +4 -4
  83. package/src/editor/plugins/createWithPortableTextSelections.ts +6 -6
  84. package/src/editor/plugins/createWithSchemaTypes.ts +1 -1
  85. package/src/editor/plugins/createWithUndoRedo.ts +5 -5
  86. package/src/editor/plugins/createWithUtils.ts +2 -2
  87. package/src/editor/plugins/with-plugins.ts +1 -1
  88. package/src/editor/sync-machine.ts +8 -5
  89. package/src/index.ts +5 -1
  90. package/src/selectors/index.ts +2 -0
  91. package/src/selectors/selector.get-selection-text.test.ts +75 -0
  92. package/src/selectors/selector.get-selection-text.ts +3 -3
  93. package/src/selectors/selector.get-text-before.ts +7 -4
  94. package/src/selectors/selector.is-point-after-selection.ts +82 -0
  95. package/src/selectors/selector.is-point-before-selection.ts +82 -0
  96. package/src/utils/_exports/index.ts +1 -0
  97. package/src/utils/index.ts +11 -0
  98. package/src/{editor/utils/utils.block-offset.test.ts → utils/util.block-offset.test.ts} +1 -1
  99. package/src/{editor/utils/utils.block-offset.ts → utils/util.block-offset.ts} +23 -7
  100. package/src/{editor/utils/utils.get-start-point.ts → utils/util.get-block-start-point.ts} +5 -2
  101. package/src/utils/util.get-text-block-text.ts +8 -0
  102. package/src/{editor/utils/utils.ts → utils/util.is-empty-text-block.ts} +4 -5
  103. package/src/{editor/utils/utils.is-keyed-segment.ts → utils/util.is-keyed-segment.ts} +3 -0
  104. package/src/{editor/utils/utils.reverse-selection.ts → utils/util.reverse-selection.ts} +4 -1
  105. /package/src/{utils → internal-utils}/__tests__/dmpToOperations.test.ts +0 -0
  106. /package/src/{utils → internal-utils}/__tests__/operationToPatches.test.ts +0 -0
  107. /package/src/{utils → internal-utils}/__tests__/patchToOperations.test.ts +0 -0
  108. /package/src/{utils → internal-utils}/__tests__/ranges.test.ts +0 -0
  109. /package/src/{utils → internal-utils}/__tests__/valueNormalization.test.tsx +0 -0
  110. /package/src/{utils → internal-utils}/__tests__/values.test.ts +0 -0
  111. /package/src/{utils → internal-utils}/applyPatch.ts +0 -0
  112. /package/src/{utils → internal-utils}/debug.ts +0 -0
  113. /package/src/{utils → internal-utils}/is-hotkey.test.ts +0 -0
  114. /package/src/{utils → internal-utils}/is-hotkey.ts +0 -0
  115. /package/src/{utils → internal-utils}/looks-like-url.test.ts +0 -0
  116. /package/src/{utils → internal-utils}/looks-like-url.ts +0 -0
  117. /package/src/{utils → internal-utils}/operationToPatches.ts +0 -0
  118. /package/src/{utils → internal-utils}/paths.ts +0 -0
  119. /package/src/{utils → internal-utils}/ranges.ts +0 -0
  120. /package/src/{utils → internal-utils}/schema.ts +0 -0
  121. /package/src/{utils → internal-utils}/selection.ts +0 -0
  122. /package/src/{utils → internal-utils}/sibling-utils.ts +0 -0
  123. /package/src/{utils → internal-utils}/validateValue.ts +0 -0
  124. /package/src/{utils → internal-utils}/values.ts +0 -0
  125. /package/src/{utils → internal-utils}/weakMaps.ts +0 -0
  126. /package/src/{utils → internal-utils}/withChanges.ts +0 -0
  127. /package/src/{utils → internal-utils}/withUndoRedo.ts +0 -0
  128. /package/src/{utils → internal-utils}/withoutPatching.ts +0 -0
@@ -11,6 +11,10 @@ import type {
11
11
  } from '@sanity/types'
12
12
  import type {TextUnit} from 'slate'
13
13
  import type {TextInsertTextOptions} from 'slate/dist/interfaces/transforms/text'
14
+ import {
15
+ Behavior as Behavior_2,
16
+ BehaviorEvent as BehaviorEvent_2,
17
+ } from './behavior.types'
14
18
 
15
19
  /**
16
20
  * @beta
@@ -18,6 +22,7 @@ import type {TextInsertTextOptions} from 'slate/dist/interfaces/transforms/text'
18
22
  export declare type Behavior<
19
23
  TBehaviorEventType extends BehaviorEvent['type'] = BehaviorEvent['type'],
20
24
  TGuardResponse = true,
25
+ TBehaviorEvent extends BehaviorEvent = BehaviorEvent,
21
26
  > = {
22
27
  /**
23
28
  * The internal editor event that triggers this behavior.
@@ -28,14 +33,11 @@ export declare type Behavior<
28
33
  * Returning a non-nullable value from the guard will pass the value to the
29
34
  * actions and execute them.
30
35
  */
31
- guard?: BehaviorGuard<
32
- PickFromUnion<BehaviorEvent, 'type', TBehaviorEventType>,
33
- TGuardResponse
34
- >
36
+ guard?: BehaviorGuard<TBehaviorEvent, TGuardResponse>
35
37
  /**
36
38
  * Array of behavior action sets.
37
39
  */
38
- actions: Array<BehaviorActionIntendSet<TBehaviorEventType, TGuardResponse>>
40
+ actions: Array<BehaviorActionIntendSet<TBehaviorEvent, TGuardResponse>>
39
41
  }
40
42
 
41
43
  /**
@@ -45,7 +47,7 @@ export declare type BehaviorActionIntend =
45
47
  | SyntheticBehaviorEvent
46
48
  | {
47
49
  type: 'raise'
48
- event: SyntheticBehaviorEvent
50
+ event: SyntheticBehaviorEvent | CustomBehaviorEvent
49
51
  }
50
52
  | {
51
53
  type: 'annotation.toggle'
@@ -149,16 +151,13 @@ export declare type BehaviorActionIntend =
149
151
  /**
150
152
  * @beta
151
153
  */
152
- export declare type BehaviorActionIntendSet<
153
- TBehaviorEventType extends BehaviorEvent['type'] = BehaviorEvent['type'],
154
- TGuardResponse = true,
155
- > = (
154
+ export declare type BehaviorActionIntendSet<TBehaviorEvent, TGuardResponse> = (
156
155
  {
157
156
  context,
158
157
  event,
159
158
  }: {
160
159
  context: EditorContext
161
- event: PickFromUnion<BehaviorEvent, 'type', TBehaviorEventType>
160
+ event: TBehaviorEvent
162
161
  },
163
162
  guardResponse: TGuardResponse,
164
163
  ) => Array<BehaviorActionIntend>
@@ -166,15 +165,15 @@ export declare type BehaviorActionIntendSet<
166
165
  /**
167
166
  * @beta
168
167
  */
169
- export declare type BehaviorEvent = SyntheticBehaviorEvent | NativeBehaviorEvent
168
+ export declare type BehaviorEvent =
169
+ | SyntheticBehaviorEvent
170
+ | NativeBehaviorEvent
171
+ | CustomBehaviorEvent
170
172
 
171
173
  /**
172
174
  * @beta
173
175
  */
174
- export declare type BehaviorGuard<
175
- TBehaviorEvent extends BehaviorEvent,
176
- TGuardResponse,
177
- > = ({
176
+ export declare type BehaviorGuard<TBehaviorEvent, TGuardResponse> = ({
178
177
  context,
179
178
  event,
180
179
  }: {
@@ -202,340 +201,370 @@ export declare type CodeEditorBehaviorsConfig = {
202
201
  * @beta
203
202
  */
204
203
  export declare const coreBehavior: {
205
- softReturn: Behavior<
204
+ softReturn: Behavior_2<
205
+ | 'focus'
206
+ | 'select'
206
207
  | 'annotation.add'
207
208
  | 'annotation.remove'
208
209
  | 'blur'
209
210
  | 'decorator.toggle'
210
211
  | 'delete.backward'
211
212
  | 'delete.forward'
212
- | 'focus'
213
213
  | 'insert.block object'
214
214
  | 'insert.inline object'
215
215
  | 'insert.break'
216
216
  | 'insert.soft break'
217
217
  | 'insert.text'
218
218
  | 'list item.toggle'
219
- | 'select'
220
219
  | 'style.toggle'
221
220
  | 'copy'
222
221
  | 'key.down'
223
222
  | 'key.up'
224
- | 'paste',
225
- true
223
+ | 'paste'
224
+ | `custom.${string}`,
225
+ true,
226
+ BehaviorEvent_2
226
227
  >
227
228
  decorators: {
228
- strongShortcut: Behavior<
229
+ strongShortcut: Behavior_2<
230
+ | 'focus'
231
+ | 'select'
229
232
  | 'annotation.add'
230
233
  | 'annotation.remove'
231
234
  | 'blur'
232
235
  | 'decorator.toggle'
233
236
  | 'delete.backward'
234
237
  | 'delete.forward'
235
- | 'focus'
236
238
  | 'insert.block object'
237
239
  | 'insert.inline object'
238
240
  | 'insert.break'
239
241
  | 'insert.soft break'
240
242
  | 'insert.text'
241
243
  | 'list item.toggle'
242
- | 'select'
243
244
  | 'style.toggle'
244
245
  | 'copy'
245
246
  | 'key.down'
246
247
  | 'key.up'
247
- | 'paste',
248
- true
248
+ | 'paste'
249
+ | `custom.${string}`,
250
+ true,
251
+ BehaviorEvent_2
249
252
  >
250
- emShortcut: Behavior<
253
+ emShortcut: Behavior_2<
254
+ | 'focus'
255
+ | 'select'
251
256
  | 'annotation.add'
252
257
  | 'annotation.remove'
253
258
  | 'blur'
254
259
  | 'decorator.toggle'
255
260
  | 'delete.backward'
256
261
  | 'delete.forward'
257
- | 'focus'
258
262
  | 'insert.block object'
259
263
  | 'insert.inline object'
260
264
  | 'insert.break'
261
265
  | 'insert.soft break'
262
266
  | 'insert.text'
263
267
  | 'list item.toggle'
264
- | 'select'
265
268
  | 'style.toggle'
266
269
  | 'copy'
267
270
  | 'key.down'
268
271
  | 'key.up'
269
- | 'paste',
270
- true
272
+ | 'paste'
273
+ | `custom.${string}`,
274
+ true,
275
+ BehaviorEvent_2
271
276
  >
272
- underlineShortcut: Behavior<
277
+ underlineShortcut: Behavior_2<
278
+ | 'focus'
279
+ | 'select'
273
280
  | 'annotation.add'
274
281
  | 'annotation.remove'
275
282
  | 'blur'
276
283
  | 'decorator.toggle'
277
284
  | 'delete.backward'
278
285
  | 'delete.forward'
279
- | 'focus'
280
286
  | 'insert.block object'
281
287
  | 'insert.inline object'
282
288
  | 'insert.break'
283
289
  | 'insert.soft break'
284
290
  | 'insert.text'
285
291
  | 'list item.toggle'
286
- | 'select'
287
292
  | 'style.toggle'
288
293
  | 'copy'
289
294
  | 'key.down'
290
295
  | 'key.up'
291
- | 'paste',
292
- true
296
+ | 'paste'
297
+ | `custom.${string}`,
298
+ true,
299
+ BehaviorEvent_2
293
300
  >
294
- codeShortcut: Behavior<
301
+ codeShortcut: Behavior_2<
302
+ | 'focus'
303
+ | 'select'
295
304
  | 'annotation.add'
296
305
  | 'annotation.remove'
297
306
  | 'blur'
298
307
  | 'decorator.toggle'
299
308
  | 'delete.backward'
300
309
  | 'delete.forward'
301
- | 'focus'
302
310
  | 'insert.block object'
303
311
  | 'insert.inline object'
304
312
  | 'insert.break'
305
313
  | 'insert.soft break'
306
314
  | 'insert.text'
307
315
  | 'list item.toggle'
308
- | 'select'
309
316
  | 'style.toggle'
310
317
  | 'copy'
311
318
  | 'key.down'
312
319
  | 'key.up'
313
- | 'paste',
314
- true
320
+ | 'paste'
321
+ | `custom.${string}`,
322
+ true,
323
+ BehaviorEvent_2
315
324
  >
316
325
  }
317
326
  blockObjects: {
318
- arrowDownOnLonelyBlockObject: Behavior<
327
+ arrowDownOnLonelyBlockObject: Behavior_2<
328
+ | 'focus'
329
+ | 'select'
319
330
  | 'annotation.add'
320
331
  | 'annotation.remove'
321
332
  | 'blur'
322
333
  | 'decorator.toggle'
323
334
  | 'delete.backward'
324
335
  | 'delete.forward'
325
- | 'focus'
326
336
  | 'insert.block object'
327
337
  | 'insert.inline object'
328
338
  | 'insert.break'
329
339
  | 'insert.soft break'
330
340
  | 'insert.text'
331
341
  | 'list item.toggle'
332
- | 'select'
333
342
  | 'style.toggle'
334
343
  | 'copy'
335
344
  | 'key.down'
336
345
  | 'key.up'
337
- | 'paste',
338
- true
346
+ | 'paste'
347
+ | `custom.${string}`,
348
+ true,
349
+ BehaviorEvent_2
339
350
  >
340
- arrowUpOnLonelyBlockObject: Behavior<
351
+ arrowUpOnLonelyBlockObject: Behavior_2<
352
+ | 'focus'
353
+ | 'select'
341
354
  | 'annotation.add'
342
355
  | 'annotation.remove'
343
356
  | 'blur'
344
357
  | 'decorator.toggle'
345
358
  | 'delete.backward'
346
359
  | 'delete.forward'
347
- | 'focus'
348
360
  | 'insert.block object'
349
361
  | 'insert.inline object'
350
362
  | 'insert.break'
351
363
  | 'insert.soft break'
352
364
  | 'insert.text'
353
365
  | 'list item.toggle'
354
- | 'select'
355
366
  | 'style.toggle'
356
367
  | 'copy'
357
368
  | 'key.down'
358
369
  | 'key.up'
359
- | 'paste',
360
- true
370
+ | 'paste'
371
+ | `custom.${string}`,
372
+ true,
373
+ BehaviorEvent_2
361
374
  >
362
- breakingBlockObject: Behavior<
375
+ breakingBlockObject: Behavior_2<
376
+ | 'focus'
377
+ | 'select'
363
378
  | 'annotation.add'
364
379
  | 'annotation.remove'
365
380
  | 'blur'
366
381
  | 'decorator.toggle'
367
382
  | 'delete.backward'
368
383
  | 'delete.forward'
369
- | 'focus'
370
384
  | 'insert.block object'
371
385
  | 'insert.inline object'
372
386
  | 'insert.break'
373
387
  | 'insert.soft break'
374
388
  | 'insert.text'
375
389
  | 'list item.toggle'
376
- | 'select'
377
390
  | 'style.toggle'
378
391
  | 'copy'
379
392
  | 'key.down'
380
393
  | 'key.up'
381
- | 'paste',
382
- true
394
+ | 'paste'
395
+ | `custom.${string}`,
396
+ true,
397
+ BehaviorEvent_2
383
398
  >
384
- deletingEmptyTextBlockAfterBlockObject: Behavior<
399
+ deletingEmptyTextBlockAfterBlockObject: Behavior_2<
400
+ | 'focus'
401
+ | 'select'
385
402
  | 'annotation.add'
386
403
  | 'annotation.remove'
387
404
  | 'blur'
388
405
  | 'decorator.toggle'
389
406
  | 'delete.backward'
390
407
  | 'delete.forward'
391
- | 'focus'
392
408
  | 'insert.block object'
393
409
  | 'insert.inline object'
394
410
  | 'insert.break'
395
411
  | 'insert.soft break'
396
412
  | 'insert.text'
397
413
  | 'list item.toggle'
398
- | 'select'
399
414
  | 'style.toggle'
400
415
  | 'copy'
401
416
  | 'key.down'
402
417
  | 'key.up'
403
- | 'paste',
404
- true
418
+ | 'paste'
419
+ | `custom.${string}`,
420
+ true,
421
+ BehaviorEvent_2
405
422
  >
406
- deletingEmptyTextBlockBeforeBlockObject: Behavior<
423
+ deletingEmptyTextBlockBeforeBlockObject: Behavior_2<
424
+ | 'focus'
425
+ | 'select'
407
426
  | 'annotation.add'
408
427
  | 'annotation.remove'
409
428
  | 'blur'
410
429
  | 'decorator.toggle'
411
430
  | 'delete.backward'
412
431
  | 'delete.forward'
413
- | 'focus'
414
432
  | 'insert.block object'
415
433
  | 'insert.inline object'
416
434
  | 'insert.break'
417
435
  | 'insert.soft break'
418
436
  | 'insert.text'
419
437
  | 'list item.toggle'
420
- | 'select'
421
438
  | 'style.toggle'
422
439
  | 'copy'
423
440
  | 'key.down'
424
441
  | 'key.up'
425
- | 'paste',
426
- true
442
+ | 'paste'
443
+ | `custom.${string}`,
444
+ true,
445
+ BehaviorEvent_2
427
446
  >
428
447
  }
429
448
  lists: {
430
- clearListOnBackspace: Behavior<
449
+ clearListOnBackspace: Behavior_2<
450
+ | 'focus'
451
+ | 'select'
431
452
  | 'annotation.add'
432
453
  | 'annotation.remove'
433
454
  | 'blur'
434
455
  | 'decorator.toggle'
435
456
  | 'delete.backward'
436
457
  | 'delete.forward'
437
- | 'focus'
438
458
  | 'insert.block object'
439
459
  | 'insert.inline object'
440
460
  | 'insert.break'
441
461
  | 'insert.soft break'
442
462
  | 'insert.text'
443
463
  | 'list item.toggle'
444
- | 'select'
445
464
  | 'style.toggle'
446
465
  | 'copy'
447
466
  | 'key.down'
448
467
  | 'key.up'
449
- | 'paste',
450
- true
468
+ | 'paste'
469
+ | `custom.${string}`,
470
+ true,
471
+ BehaviorEvent_2
451
472
  >
452
- unindentListOnBackspace: Behavior<
473
+ unindentListOnBackspace: Behavior_2<
474
+ | 'focus'
475
+ | 'select'
453
476
  | 'annotation.add'
454
477
  | 'annotation.remove'
455
478
  | 'blur'
456
479
  | 'decorator.toggle'
457
480
  | 'delete.backward'
458
481
  | 'delete.forward'
459
- | 'focus'
460
482
  | 'insert.block object'
461
483
  | 'insert.inline object'
462
484
  | 'insert.break'
463
485
  | 'insert.soft break'
464
486
  | 'insert.text'
465
487
  | 'list item.toggle'
466
- | 'select'
467
488
  | 'style.toggle'
468
489
  | 'copy'
469
490
  | 'key.down'
470
491
  | 'key.up'
471
- | 'paste',
472
- true
492
+ | 'paste'
493
+ | `custom.${string}`,
494
+ true,
495
+ BehaviorEvent_2
473
496
  >
474
- clearListOnEnter: Behavior<
497
+ clearListOnEnter: Behavior_2<
498
+ | 'focus'
499
+ | 'select'
475
500
  | 'annotation.add'
476
501
  | 'annotation.remove'
477
502
  | 'blur'
478
503
  | 'decorator.toggle'
479
504
  | 'delete.backward'
480
505
  | 'delete.forward'
481
- | 'focus'
482
506
  | 'insert.block object'
483
507
  | 'insert.inline object'
484
508
  | 'insert.break'
485
509
  | 'insert.soft break'
486
510
  | 'insert.text'
487
511
  | 'list item.toggle'
488
- | 'select'
489
512
  | 'style.toggle'
490
513
  | 'copy'
491
514
  | 'key.down'
492
515
  | 'key.up'
493
- | 'paste',
494
- true
516
+ | 'paste'
517
+ | `custom.${string}`,
518
+ true,
519
+ BehaviorEvent_2
495
520
  >
496
- indentListOnTab: Behavior<
521
+ indentListOnTab: Behavior_2<
522
+ | 'focus'
523
+ | 'select'
497
524
  | 'annotation.add'
498
525
  | 'annotation.remove'
499
526
  | 'blur'
500
527
  | 'decorator.toggle'
501
528
  | 'delete.backward'
502
529
  | 'delete.forward'
503
- | 'focus'
504
530
  | 'insert.block object'
505
531
  | 'insert.inline object'
506
532
  | 'insert.break'
507
533
  | 'insert.soft break'
508
534
  | 'insert.text'
509
535
  | 'list item.toggle'
510
- | 'select'
511
536
  | 'style.toggle'
512
537
  | 'copy'
513
538
  | 'key.down'
514
539
  | 'key.up'
515
- | 'paste',
516
- true
540
+ | 'paste'
541
+ | `custom.${string}`,
542
+ true,
543
+ BehaviorEvent_2
517
544
  >
518
- unindentListOnShiftTab: Behavior<
545
+ unindentListOnShiftTab: Behavior_2<
546
+ | 'focus'
547
+ | 'select'
519
548
  | 'annotation.add'
520
549
  | 'annotation.remove'
521
550
  | 'blur'
522
551
  | 'decorator.toggle'
523
552
  | 'delete.backward'
524
553
  | 'delete.forward'
525
- | 'focus'
526
554
  | 'insert.block object'
527
555
  | 'insert.inline object'
528
556
  | 'insert.break'
529
557
  | 'insert.soft break'
530
558
  | 'insert.text'
531
559
  | 'list item.toggle'
532
- | 'select'
533
560
  | 'style.toggle'
534
561
  | 'copy'
535
562
  | 'key.down'
536
563
  | 'key.up'
537
- | 'paste',
538
- true
564
+ | 'paste'
565
+ | `custom.${string}`,
566
+ true,
567
+ BehaviorEvent_2
539
568
  >
540
569
  }
541
570
  }
@@ -543,27 +572,29 @@ export declare const coreBehavior: {
543
572
  /**
544
573
  * @beta
545
574
  */
546
- export declare const coreBehaviors: Behavior<
575
+ export declare const coreBehaviors: Behavior_2<
576
+ | 'focus'
577
+ | 'select'
547
578
  | 'annotation.add'
548
579
  | 'annotation.remove'
549
580
  | 'blur'
550
581
  | 'decorator.toggle'
551
582
  | 'delete.backward'
552
583
  | 'delete.forward'
553
- | 'focus'
554
584
  | 'insert.block object'
555
585
  | 'insert.inline object'
556
586
  | 'insert.break'
557
587
  | 'insert.soft break'
558
588
  | 'insert.text'
559
589
  | 'list item.toggle'
560
- | 'select'
561
590
  | 'style.toggle'
562
591
  | 'copy'
563
592
  | 'key.down'
564
593
  | 'key.up'
565
- | 'paste',
566
- true
594
+ | 'paste'
595
+ | `custom.${string}`,
596
+ true,
597
+ BehaviorEvent_2
567
598
  >[]
568
599
 
569
600
  /**
@@ -571,27 +602,29 @@ export declare const coreBehaviors: Behavior<
571
602
  */
572
603
  export declare function createCodeEditorBehaviors(
573
604
  config: CodeEditorBehaviorsConfig,
574
- ): Behavior<
605
+ ): Behavior_2<
606
+ | 'focus'
607
+ | 'select'
575
608
  | 'annotation.add'
576
609
  | 'annotation.remove'
577
610
  | 'blur'
578
611
  | 'decorator.toggle'
579
612
  | 'delete.backward'
580
613
  | 'delete.forward'
581
- | 'focus'
582
614
  | 'insert.block object'
583
615
  | 'insert.inline object'
584
616
  | 'insert.break'
585
617
  | 'insert.soft break'
586
618
  | 'insert.text'
587
619
  | 'list item.toggle'
588
- | 'select'
589
620
  | 'style.toggle'
590
621
  | 'copy'
591
622
  | 'key.down'
592
623
  | 'key.up'
593
- | 'paste',
594
- true
624
+ | 'paste'
625
+ | `custom.${string}`,
626
+ true,
627
+ BehaviorEvent_2
595
628
  >[]
596
629
 
597
630
  /**
@@ -599,27 +632,29 @@ export declare function createCodeEditorBehaviors(
599
632
  */
600
633
  export declare function createEmojiPickerBehaviors<TEmojiMatch>(
601
634
  config: EmojiPickerBehaviorsConfig<TEmojiMatch>,
602
- ): Behavior<
635
+ ): Behavior_2<
636
+ | 'focus'
637
+ | 'select'
603
638
  | 'annotation.add'
604
639
  | 'annotation.remove'
605
640
  | 'blur'
606
641
  | 'decorator.toggle'
607
642
  | 'delete.backward'
608
643
  | 'delete.forward'
609
- | 'focus'
610
644
  | 'insert.block object'
611
645
  | 'insert.inline object'
612
646
  | 'insert.break'
613
647
  | 'insert.soft break'
614
648
  | 'insert.text'
615
649
  | 'list item.toggle'
616
- | 'select'
617
650
  | 'style.toggle'
618
651
  | 'copy'
619
652
  | 'key.down'
620
653
  | 'key.up'
621
- | 'paste',
622
- true
654
+ | 'paste'
655
+ | `custom.${string}`,
656
+ true,
657
+ BehaviorEvent_2
623
658
  >[]
624
659
 
625
660
  /**
@@ -627,27 +662,29 @@ export declare function createEmojiPickerBehaviors<TEmojiMatch>(
627
662
  */
628
663
  export declare function createLinkBehaviors(
629
664
  config: LinkBehaviorsConfig,
630
- ): Behavior<
665
+ ): Behavior_2<
666
+ | 'focus'
667
+ | 'select'
631
668
  | 'annotation.add'
632
669
  | 'annotation.remove'
633
670
  | 'blur'
634
671
  | 'decorator.toggle'
635
672
  | 'delete.backward'
636
673
  | 'delete.forward'
637
- | 'focus'
638
674
  | 'insert.block object'
639
675
  | 'insert.inline object'
640
676
  | 'insert.break'
641
677
  | 'insert.soft break'
642
678
  | 'insert.text'
643
679
  | 'list item.toggle'
644
- | 'select'
645
680
  | 'style.toggle'
646
681
  | 'copy'
647
682
  | 'key.down'
648
683
  | 'key.up'
649
- | 'paste',
650
- true
684
+ | 'paste'
685
+ | `custom.${string}`,
686
+ true,
687
+ BehaviorEvent_2
651
688
  >[]
652
689
 
653
690
  /**
@@ -655,36 +692,59 @@ export declare function createLinkBehaviors(
655
692
  */
656
693
  export declare function createMarkdownBehaviors(
657
694
  config: MarkdownBehaviorsConfig,
658
- ): Behavior<
695
+ ): Behavior_2<
696
+ | 'focus'
697
+ | 'select'
659
698
  | 'annotation.add'
660
699
  | 'annotation.remove'
661
700
  | 'blur'
662
701
  | 'decorator.toggle'
663
702
  | 'delete.backward'
664
703
  | 'delete.forward'
665
- | 'focus'
666
704
  | 'insert.block object'
667
705
  | 'insert.inline object'
668
706
  | 'insert.break'
669
707
  | 'insert.soft break'
670
708
  | 'insert.text'
671
709
  | 'list item.toggle'
672
- | 'select'
673
710
  | 'style.toggle'
674
711
  | 'copy'
675
712
  | 'key.down'
676
713
  | 'key.up'
677
- | 'paste',
678
- true
714
+ | 'paste'
715
+ | `custom.${string}`,
716
+ true,
717
+ BehaviorEvent_2
679
718
  >[]
680
719
 
720
+ /**
721
+ * @beta
722
+ */
723
+ export declare type CustomBehaviorEvent<
724
+ TPayload extends Record<string, unknown> = Record<string, unknown>,
725
+ TType extends string = string,
726
+ TInternalType extends `custom.${TType}` = `custom.${TType}`,
727
+ > = {
728
+ type: TInternalType
729
+ } & TPayload
730
+
681
731
  /**
682
732
  * @beta
683
733
  */
684
734
  export declare function defineBehavior<
685
- TBehaviorEventType extends BehaviorEvent['type'],
735
+ TPayload extends Record<string, unknown>,
736
+ TBehaviorEventType extends
737
+ BehaviorEvent['type'] = CustomBehaviorEvent['type'],
686
738
  TGuardResponse = true,
687
- >(behavior: Behavior<TBehaviorEventType, TGuardResponse>): Behavior
739
+ >(
740
+ behavior: Behavior<
741
+ TBehaviorEventType,
742
+ TGuardResponse,
743
+ TBehaviorEventType extends `custom.${infer TType}`
744
+ ? CustomBehaviorEvent<TPayload, TType>
745
+ : PickFromUnion<BehaviorEvent, 'type', TBehaviorEventType>
746
+ >,
747
+ ): Behavior
688
748
 
689
749
  /**
690
750
  * @public
@@ -822,7 +882,7 @@ export declare type PortableTextMemberSchemaTypes = {
822
882
  * @beta
823
883
  */
824
884
  export declare function raise(
825
- event: SyntheticBehaviorEvent,
885
+ event: SyntheticBehaviorEvent | CustomBehaviorEvent,
826
886
  ): PickFromUnion<BehaviorActionIntend, 'type', 'raise'>
827
887
 
828
888
  /**