@portabletext/editor 1.15.1 → 1.15.3

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 (69) hide show
  1. package/lib/_chunks-cjs/behavior.core.cjs +496 -0
  2. package/lib/_chunks-cjs/behavior.core.cjs.map +1 -0
  3. package/lib/_chunks-cjs/selector.get-text-before.cjs +0 -231
  4. package/lib/_chunks-cjs/selector.get-text-before.cjs.map +1 -1
  5. package/lib/_chunks-cjs/selectors.cjs +234 -0
  6. package/lib/_chunks-cjs/selectors.cjs.map +1 -0
  7. package/lib/_chunks-es/behavior.core.js +498 -0
  8. package/lib/_chunks-es/behavior.core.js.map +1 -0
  9. package/lib/_chunks-es/selector.get-text-before.js +2 -233
  10. package/lib/_chunks-es/selector.get-text-before.js.map +1 -1
  11. package/lib/_chunks-es/selectors.js +235 -0
  12. package/lib/_chunks-es/selectors.js.map +1 -0
  13. package/lib/behaviors/index.cjs +460 -0
  14. package/lib/behaviors/index.cjs.map +1 -0
  15. package/lib/behaviors/index.d.cts +869 -0
  16. package/lib/behaviors/index.d.ts +869 -0
  17. package/lib/behaviors/index.js +464 -0
  18. package/lib/behaviors/index.js.map +1 -0
  19. package/lib/index.cjs +51 -1035
  20. package/lib/index.cjs.map +1 -1
  21. package/lib/index.d.cts +146 -669
  22. package/lib/index.d.ts +146 -669
  23. package/lib/index.js +44 -1027
  24. package/lib/index.js.map +1 -1
  25. package/lib/selectors/index.cjs +16 -16
  26. package/lib/selectors/index.cjs.map +1 -1
  27. package/lib/selectors/index.d.cts +8 -12
  28. package/lib/selectors/index.d.ts +8 -12
  29. package/lib/selectors/index.js +3 -2
  30. package/lib/selectors/index.js.map +1 -1
  31. package/package.json +11 -5
  32. package/src/{editor/behavior → behavior-actions}/behavior.action-utils.insert-block.ts +4 -6
  33. package/src/{editor/behavior → behavior-actions}/behavior.action.insert-block-object.ts +1 -1
  34. package/src/{editor/behavior → behavior-actions}/behavior.action.insert-break.ts +1 -1
  35. package/src/{editor/behavior → behavior-actions}/behavior.action.insert-inline-object.ts +1 -1
  36. package/src/{editor/behavior → behavior-actions}/behavior.action.list-item.ts +2 -2
  37. package/src/{editor/behavior → behavior-actions}/behavior.action.text-block.set.ts +1 -1
  38. package/src/{editor/behavior → behavior-actions}/behavior.action.text-block.unset.ts +1 -1
  39. package/src/{editor/behavior → behavior-actions}/behavior.actions.ts +20 -20
  40. package/src/{editor/behavior → behavior-actions}/behavior.guards.ts +2 -6
  41. package/src/{editor/behavior → behaviors}/behavior.code-editor.ts +4 -4
  42. package/src/{editor/behavior → behaviors}/behavior.core.block-objects.ts +6 -6
  43. package/src/{editor/behavior → behaviors}/behavior.core.decorators.ts +6 -16
  44. package/src/{editor/behavior → behaviors}/behavior.core.lists.ts +17 -17
  45. package/src/{editor/behavior → behaviors}/behavior.links.ts +5 -5
  46. package/src/{editor/behavior → behaviors}/behavior.markdown.ts +25 -43
  47. package/src/{editor/behavior → behaviors}/behavior.types.ts +39 -46
  48. package/src/behaviors/index.ts +29 -0
  49. package/src/editor/PortableTextEditor.tsx +2 -2
  50. package/src/{utils/getPortableTextMemberSchemaTypes.ts → editor/create-editor-schema.ts} +3 -3
  51. package/src/editor/create-editor.ts +28 -48
  52. package/src/editor/define-schema.ts +8 -3
  53. package/src/editor/editor-machine.ts +21 -36
  54. package/src/editor/editor-selector.ts +1 -13
  55. package/src/editor/editor-snapshot.ts +4 -6
  56. package/src/editor/plugins/createWithEditableAPI.ts +3 -3
  57. package/src/editor/plugins/createWithPortableTextMarkModel.ts +1 -1
  58. package/src/editor/utils/utils.block-offset.ts +1 -1
  59. package/src/index.ts +14 -31
  60. package/src/selectors/index.ts +2 -4
  61. package/src/selectors/selector.get-active-list-item.ts +1 -1
  62. package/src/selectors/selectors.ts +1 -1
  63. package/src/type-utils.ts +17 -0
  64. package/src/utils/__tests__/operationToPatches.test.ts +3 -3
  65. package/src/utils/__tests__/patchToOperations.test.ts +3 -3
  66. package/src/utils/__tests__/values.test.ts +2 -2
  67. /package/src/{editor/behavior → behavior-actions}/behavior.action.insert-span.ts +0 -0
  68. /package/src/{editor/behavior → behavior-actions}/behavior.action.style.ts +0 -0
  69. /package/src/{editor/behavior → behaviors}/behavior.core.ts +0 -0
@@ -0,0 +1,869 @@
1
+ import type {
2
+ ArraySchemaType,
3
+ BlockDecoratorDefinition,
4
+ BlockListDefinition,
5
+ BlockStyleDefinition,
6
+ KeyedSegment,
7
+ ObjectSchemaType,
8
+ Path,
9
+ PortableTextBlock,
10
+ PortableTextTextBlock,
11
+ } from '@sanity/types'
12
+ import type {TextUnit} from 'slate'
13
+ import type {TextInsertTextOptions} from 'slate/dist/interfaces/transforms/text'
14
+
15
+ /**
16
+ * @alpha
17
+ */
18
+ export declare type Behavior<
19
+ TBehaviorEventType extends BehaviorEvent['type'] = BehaviorEvent['type'],
20
+ TGuardResponse = true,
21
+ > = {
22
+ /**
23
+ * The internal editor event that triggers this behavior.
24
+ */
25
+ on: TBehaviorEventType
26
+ /**
27
+ * Predicate function that determines if the behavior should be executed.
28
+ * Returning a non-nullable value from the guard will pass the value to the
29
+ * actions and execute them.
30
+ */
31
+ guard?: BehaviorGuard<
32
+ PickFromUnion<BehaviorEvent, 'type', TBehaviorEventType>,
33
+ TGuardResponse
34
+ >
35
+ /**
36
+ * Array of behavior action sets.
37
+ */
38
+ actions: Array<BehaviorActionIntendSet<TBehaviorEventType, TGuardResponse>>
39
+ }
40
+
41
+ /**
42
+ * @alpha
43
+ */
44
+ export declare type BehaviorActionIntend =
45
+ | SyntheticBehaviorEvent
46
+ | {
47
+ type: 'insert.span'
48
+ text: string
49
+ annotations?: Array<{
50
+ name: string
51
+ value: {
52
+ [prop: string]: unknown
53
+ }
54
+ }>
55
+ decorators?: Array<string>
56
+ }
57
+ | {
58
+ type: 'insert.text block'
59
+ placement: 'auto' | 'after' | 'before'
60
+ textBlock?: {
61
+ children?: PortableTextTextBlock['children']
62
+ }
63
+ }
64
+ | {
65
+ type: 'list item.add'
66
+ listItem: string
67
+ }
68
+ | {
69
+ type: 'list item.remove'
70
+ listItem: string
71
+ }
72
+ | {
73
+ type: 'move.block'
74
+ at: [KeyedSegment]
75
+ to: [KeyedSegment]
76
+ }
77
+ | {
78
+ type: 'move.block down'
79
+ at: [KeyedSegment]
80
+ }
81
+ | {
82
+ type: 'move.block up'
83
+ at: [KeyedSegment]
84
+ }
85
+ | {
86
+ type: 'noop'
87
+ }
88
+ | {
89
+ type: 'delete.block'
90
+ blockPath: [KeyedSegment]
91
+ }
92
+ | {
93
+ type: 'delete.text'
94
+ anchor: BlockOffset
95
+ focus: BlockOffset
96
+ }
97
+ | {
98
+ type: 'effect'
99
+ effect: () => void
100
+ }
101
+ | {
102
+ type: 'reselect'
103
+ }
104
+ | {
105
+ type: 'select'
106
+ selection: EditorSelection
107
+ }
108
+ | {
109
+ type: 'select.previous block'
110
+ }
111
+ | {
112
+ type: 'select.next block'
113
+ }
114
+ | {
115
+ type: 'style.add'
116
+ style: string
117
+ }
118
+ | {
119
+ type: 'style.remove'
120
+ style: string
121
+ }
122
+ | {
123
+ type: 'text block.set'
124
+ at: [KeyedSegment]
125
+ level?: number
126
+ listItem?: string
127
+ style?: string
128
+ }
129
+ | {
130
+ type: 'text block.unset'
131
+ at: [KeyedSegment]
132
+ props: Array<'level' | 'listItem' | 'style'>
133
+ }
134
+
135
+ /**
136
+ * @alpha
137
+ */
138
+ export declare type BehaviorActionIntendSet<
139
+ TBehaviorEventType extends BehaviorEvent['type'] = BehaviorEvent['type'],
140
+ TGuardResponse = true,
141
+ > = (
142
+ {
143
+ context,
144
+ event,
145
+ }: {
146
+ context: EditorContext
147
+ event: PickFromUnion<BehaviorEvent, 'type', TBehaviorEventType>
148
+ },
149
+ guardResponse: TGuardResponse,
150
+ ) => Array<BehaviorActionIntend>
151
+
152
+ /**
153
+ * @alpha
154
+ */
155
+ export declare type BehaviorEvent = SyntheticBehaviorEvent | NativeBehaviorEvent
156
+
157
+ /**
158
+ * @alpha
159
+ */
160
+ export declare type BehaviorGuard<
161
+ TBehaviorEvent extends BehaviorEvent,
162
+ TGuardResponse,
163
+ > = ({
164
+ context,
165
+ event,
166
+ }: {
167
+ context: EditorContext
168
+ event: TBehaviorEvent
169
+ }) => TGuardResponse | false
170
+
171
+ /**
172
+ * @alpha
173
+ */
174
+ export declare type BlockOffset = {
175
+ path: [KeyedSegment]
176
+ offset: number
177
+ }
178
+
179
+ /**
180
+ * @alpha
181
+ */
182
+ export declare type CodeEditorBehaviorsConfig = {
183
+ moveBlockUpShortcut: string
184
+ moveBlockDownShortcut: string
185
+ }
186
+
187
+ /**
188
+ * @alpha
189
+ */
190
+ export declare const coreBehavior: {
191
+ softReturn: Behavior<
192
+ | 'annotation.add'
193
+ | 'annotation.remove'
194
+ | 'annotation.toggle'
195
+ | 'blur'
196
+ | 'decorator.add'
197
+ | 'decorator.remove'
198
+ | 'decorator.toggle'
199
+ | 'delete.backward'
200
+ | 'delete.forward'
201
+ | 'focus'
202
+ | 'insert.block object'
203
+ | 'insert.inline object'
204
+ | 'insert.break'
205
+ | 'insert.soft break'
206
+ | 'insert.text'
207
+ | 'list item.toggle'
208
+ | 'style.toggle'
209
+ | 'copy'
210
+ | 'key.down'
211
+ | 'key.up'
212
+ | 'paste',
213
+ true
214
+ >
215
+ decorators: {
216
+ decoratorAdd: Behavior<
217
+ | 'annotation.add'
218
+ | 'annotation.remove'
219
+ | 'annotation.toggle'
220
+ | 'blur'
221
+ | 'decorator.add'
222
+ | 'decorator.remove'
223
+ | 'decorator.toggle'
224
+ | 'delete.backward'
225
+ | 'delete.forward'
226
+ | 'focus'
227
+ | 'insert.block object'
228
+ | 'insert.inline object'
229
+ | 'insert.break'
230
+ | 'insert.soft break'
231
+ | 'insert.text'
232
+ | 'list item.toggle'
233
+ | 'style.toggle'
234
+ | 'copy'
235
+ | 'key.down'
236
+ | 'key.up'
237
+ | 'paste',
238
+ true
239
+ >
240
+ decoratorRemove: Behavior<
241
+ | 'annotation.add'
242
+ | 'annotation.remove'
243
+ | 'annotation.toggle'
244
+ | 'blur'
245
+ | 'decorator.add'
246
+ | 'decorator.remove'
247
+ | 'decorator.toggle'
248
+ | 'delete.backward'
249
+ | 'delete.forward'
250
+ | 'focus'
251
+ | 'insert.block object'
252
+ | 'insert.inline object'
253
+ | 'insert.break'
254
+ | 'insert.soft break'
255
+ | 'insert.text'
256
+ | 'list item.toggle'
257
+ | 'style.toggle'
258
+ | 'copy'
259
+ | 'key.down'
260
+ | 'key.up'
261
+ | 'paste',
262
+ true
263
+ >
264
+ decoratorToggle: Behavior<
265
+ | 'annotation.add'
266
+ | 'annotation.remove'
267
+ | 'annotation.toggle'
268
+ | 'blur'
269
+ | 'decorator.add'
270
+ | 'decorator.remove'
271
+ | 'decorator.toggle'
272
+ | 'delete.backward'
273
+ | 'delete.forward'
274
+ | 'focus'
275
+ | 'insert.block object'
276
+ | 'insert.inline object'
277
+ | 'insert.break'
278
+ | 'insert.soft break'
279
+ | 'insert.text'
280
+ | 'list item.toggle'
281
+ | 'style.toggle'
282
+ | 'copy'
283
+ | 'key.down'
284
+ | 'key.up'
285
+ | 'paste',
286
+ true
287
+ >
288
+ }
289
+ blockObjects: {
290
+ arrowDownOnLonelyBlockObject: Behavior<
291
+ | 'annotation.add'
292
+ | 'annotation.remove'
293
+ | 'annotation.toggle'
294
+ | 'blur'
295
+ | 'decorator.add'
296
+ | 'decorator.remove'
297
+ | 'decorator.toggle'
298
+ | 'delete.backward'
299
+ | 'delete.forward'
300
+ | 'focus'
301
+ | 'insert.block object'
302
+ | 'insert.inline object'
303
+ | 'insert.break'
304
+ | 'insert.soft break'
305
+ | 'insert.text'
306
+ | 'list item.toggle'
307
+ | 'style.toggle'
308
+ | 'copy'
309
+ | 'key.down'
310
+ | 'key.up'
311
+ | 'paste',
312
+ true
313
+ >
314
+ arrowUpOnLonelyBlockObject: Behavior<
315
+ | 'annotation.add'
316
+ | 'annotation.remove'
317
+ | 'annotation.toggle'
318
+ | 'blur'
319
+ | 'decorator.add'
320
+ | 'decorator.remove'
321
+ | 'decorator.toggle'
322
+ | 'delete.backward'
323
+ | 'delete.forward'
324
+ | 'focus'
325
+ | 'insert.block object'
326
+ | 'insert.inline object'
327
+ | 'insert.break'
328
+ | 'insert.soft break'
329
+ | 'insert.text'
330
+ | 'list item.toggle'
331
+ | 'style.toggle'
332
+ | 'copy'
333
+ | 'key.down'
334
+ | 'key.up'
335
+ | 'paste',
336
+ true
337
+ >
338
+ breakingBlockObject: Behavior<
339
+ | 'annotation.add'
340
+ | 'annotation.remove'
341
+ | 'annotation.toggle'
342
+ | 'blur'
343
+ | 'decorator.add'
344
+ | 'decorator.remove'
345
+ | 'decorator.toggle'
346
+ | 'delete.backward'
347
+ | 'delete.forward'
348
+ | 'focus'
349
+ | 'insert.block object'
350
+ | 'insert.inline object'
351
+ | 'insert.break'
352
+ | 'insert.soft break'
353
+ | 'insert.text'
354
+ | 'list item.toggle'
355
+ | 'style.toggle'
356
+ | 'copy'
357
+ | 'key.down'
358
+ | 'key.up'
359
+ | 'paste',
360
+ true
361
+ >
362
+ deletingEmptyTextBlockAfterBlockObject: Behavior<
363
+ | 'annotation.add'
364
+ | 'annotation.remove'
365
+ | 'annotation.toggle'
366
+ | 'blur'
367
+ | 'decorator.add'
368
+ | 'decorator.remove'
369
+ | 'decorator.toggle'
370
+ | 'delete.backward'
371
+ | 'delete.forward'
372
+ | 'focus'
373
+ | 'insert.block object'
374
+ | 'insert.inline object'
375
+ | 'insert.break'
376
+ | 'insert.soft break'
377
+ | 'insert.text'
378
+ | 'list item.toggle'
379
+ | 'style.toggle'
380
+ | 'copy'
381
+ | 'key.down'
382
+ | 'key.up'
383
+ | 'paste',
384
+ true
385
+ >
386
+ deletingEmptyTextBlockBeforeBlockObject: Behavior<
387
+ | 'annotation.add'
388
+ | 'annotation.remove'
389
+ | 'annotation.toggle'
390
+ | 'blur'
391
+ | 'decorator.add'
392
+ | 'decorator.remove'
393
+ | 'decorator.toggle'
394
+ | 'delete.backward'
395
+ | 'delete.forward'
396
+ | 'focus'
397
+ | 'insert.block object'
398
+ | 'insert.inline object'
399
+ | 'insert.break'
400
+ | 'insert.soft break'
401
+ | 'insert.text'
402
+ | 'list item.toggle'
403
+ | 'style.toggle'
404
+ | 'copy'
405
+ | 'key.down'
406
+ | 'key.up'
407
+ | 'paste',
408
+ true
409
+ >
410
+ }
411
+ lists: {
412
+ clearListOnBackspace: Behavior<
413
+ | 'annotation.add'
414
+ | 'annotation.remove'
415
+ | 'annotation.toggle'
416
+ | 'blur'
417
+ | 'decorator.add'
418
+ | 'decorator.remove'
419
+ | 'decorator.toggle'
420
+ | 'delete.backward'
421
+ | 'delete.forward'
422
+ | 'focus'
423
+ | 'insert.block object'
424
+ | 'insert.inline object'
425
+ | 'insert.break'
426
+ | 'insert.soft break'
427
+ | 'insert.text'
428
+ | 'list item.toggle'
429
+ | 'style.toggle'
430
+ | 'copy'
431
+ | 'key.down'
432
+ | 'key.up'
433
+ | 'paste',
434
+ true
435
+ >
436
+ unindentListOnBackspace: Behavior<
437
+ | 'annotation.add'
438
+ | 'annotation.remove'
439
+ | 'annotation.toggle'
440
+ | 'blur'
441
+ | 'decorator.add'
442
+ | 'decorator.remove'
443
+ | 'decorator.toggle'
444
+ | 'delete.backward'
445
+ | 'delete.forward'
446
+ | 'focus'
447
+ | 'insert.block object'
448
+ | 'insert.inline object'
449
+ | 'insert.break'
450
+ | 'insert.soft break'
451
+ | 'insert.text'
452
+ | 'list item.toggle'
453
+ | 'style.toggle'
454
+ | 'copy'
455
+ | 'key.down'
456
+ | 'key.up'
457
+ | 'paste',
458
+ true
459
+ >
460
+ clearListOnEnter: Behavior<
461
+ | 'annotation.add'
462
+ | 'annotation.remove'
463
+ | 'annotation.toggle'
464
+ | 'blur'
465
+ | 'decorator.add'
466
+ | 'decorator.remove'
467
+ | 'decorator.toggle'
468
+ | 'delete.backward'
469
+ | 'delete.forward'
470
+ | 'focus'
471
+ | 'insert.block object'
472
+ | 'insert.inline object'
473
+ | 'insert.break'
474
+ | 'insert.soft break'
475
+ | 'insert.text'
476
+ | 'list item.toggle'
477
+ | 'style.toggle'
478
+ | 'copy'
479
+ | 'key.down'
480
+ | 'key.up'
481
+ | 'paste',
482
+ true
483
+ >
484
+ indentListOnTab: Behavior<
485
+ | 'annotation.add'
486
+ | 'annotation.remove'
487
+ | 'annotation.toggle'
488
+ | 'blur'
489
+ | 'decorator.add'
490
+ | 'decorator.remove'
491
+ | 'decorator.toggle'
492
+ | 'delete.backward'
493
+ | 'delete.forward'
494
+ | 'focus'
495
+ | 'insert.block object'
496
+ | 'insert.inline object'
497
+ | 'insert.break'
498
+ | 'insert.soft break'
499
+ | 'insert.text'
500
+ | 'list item.toggle'
501
+ | 'style.toggle'
502
+ | 'copy'
503
+ | 'key.down'
504
+ | 'key.up'
505
+ | 'paste',
506
+ true
507
+ >
508
+ unindentListOnShiftTab: Behavior<
509
+ | 'annotation.add'
510
+ | 'annotation.remove'
511
+ | 'annotation.toggle'
512
+ | 'blur'
513
+ | 'decorator.add'
514
+ | 'decorator.remove'
515
+ | 'decorator.toggle'
516
+ | 'delete.backward'
517
+ | 'delete.forward'
518
+ | 'focus'
519
+ | 'insert.block object'
520
+ | 'insert.inline object'
521
+ | 'insert.break'
522
+ | 'insert.soft break'
523
+ | 'insert.text'
524
+ | 'list item.toggle'
525
+ | 'style.toggle'
526
+ | 'copy'
527
+ | 'key.down'
528
+ | 'key.up'
529
+ | 'paste',
530
+ true
531
+ >
532
+ }
533
+ }
534
+
535
+ /**
536
+ * @alpha
537
+ */
538
+ export declare const coreBehaviors: Behavior<
539
+ | 'annotation.add'
540
+ | 'annotation.remove'
541
+ | 'annotation.toggle'
542
+ | 'blur'
543
+ | 'decorator.add'
544
+ | 'decorator.remove'
545
+ | 'decorator.toggle'
546
+ | 'delete.backward'
547
+ | 'delete.forward'
548
+ | 'focus'
549
+ | 'insert.block object'
550
+ | 'insert.inline object'
551
+ | 'insert.break'
552
+ | 'insert.soft break'
553
+ | 'insert.text'
554
+ | 'list item.toggle'
555
+ | 'style.toggle'
556
+ | 'copy'
557
+ | 'key.down'
558
+ | 'key.up'
559
+ | 'paste',
560
+ true
561
+ >[]
562
+
563
+ /**
564
+ * @alpha
565
+ */
566
+ export declare function createCodeEditorBehaviors(
567
+ config: CodeEditorBehaviorsConfig,
568
+ ): Behavior<
569
+ | 'annotation.add'
570
+ | 'annotation.remove'
571
+ | 'annotation.toggle'
572
+ | 'blur'
573
+ | 'decorator.add'
574
+ | 'decorator.remove'
575
+ | 'decorator.toggle'
576
+ | 'delete.backward'
577
+ | 'delete.forward'
578
+ | 'focus'
579
+ | 'insert.block object'
580
+ | 'insert.inline object'
581
+ | 'insert.break'
582
+ | 'insert.soft break'
583
+ | 'insert.text'
584
+ | 'list item.toggle'
585
+ | 'style.toggle'
586
+ | 'copy'
587
+ | 'key.down'
588
+ | 'key.up'
589
+ | 'paste',
590
+ true
591
+ >[]
592
+
593
+ /**
594
+ * @alpha
595
+ */
596
+ export declare function createLinkBehaviors(
597
+ config: LinkBehaviorsConfig,
598
+ ): Behavior<
599
+ | 'annotation.add'
600
+ | 'annotation.remove'
601
+ | 'annotation.toggle'
602
+ | 'blur'
603
+ | 'decorator.add'
604
+ | 'decorator.remove'
605
+ | 'decorator.toggle'
606
+ | 'delete.backward'
607
+ | 'delete.forward'
608
+ | 'focus'
609
+ | 'insert.block object'
610
+ | 'insert.inline object'
611
+ | 'insert.break'
612
+ | 'insert.soft break'
613
+ | 'insert.text'
614
+ | 'list item.toggle'
615
+ | 'style.toggle'
616
+ | 'copy'
617
+ | 'key.down'
618
+ | 'key.up'
619
+ | 'paste',
620
+ true
621
+ >[]
622
+
623
+ /**
624
+ * @alpha
625
+ */
626
+ export declare function createMarkdownBehaviors(
627
+ config: MarkdownBehaviorsConfig,
628
+ ): Behavior<
629
+ | 'annotation.add'
630
+ | 'annotation.remove'
631
+ | 'annotation.toggle'
632
+ | 'blur'
633
+ | 'decorator.add'
634
+ | 'decorator.remove'
635
+ | 'decorator.toggle'
636
+ | 'delete.backward'
637
+ | 'delete.forward'
638
+ | 'focus'
639
+ | 'insert.block object'
640
+ | 'insert.inline object'
641
+ | 'insert.break'
642
+ | 'insert.soft break'
643
+ | 'insert.text'
644
+ | 'list item.toggle'
645
+ | 'style.toggle'
646
+ | 'copy'
647
+ | 'key.down'
648
+ | 'key.up'
649
+ | 'paste',
650
+ true
651
+ >[]
652
+
653
+ /**
654
+ * @alpha
655
+ */
656
+ export declare function defineBehavior<
657
+ TAnyBehaviorEventType extends BehaviorEvent['type'],
658
+ TGuardResponse = true,
659
+ >(behavior: Behavior<TAnyBehaviorEventType, TGuardResponse>): Behavior
660
+
661
+ /**
662
+ * @alpha
663
+ */
664
+ export declare type EditorContext = {
665
+ keyGenerator: () => string
666
+ schema: EditorSchema
667
+ selection: EditorSelection
668
+ value: Array<PortableTextBlock>
669
+ }
670
+
671
+ /**
672
+ * @alpha
673
+ */
674
+ export declare type EditorSchema = PortableTextMemberSchemaTypes
675
+
676
+ /** @beta */
677
+ export declare type EditorSelection = {
678
+ anchor: EditorSelectionPoint
679
+ focus: EditorSelectionPoint
680
+ backward?: boolean
681
+ } | null
682
+
683
+ /** @beta */
684
+ export declare type EditorSelectionPoint = {
685
+ path: Path
686
+ offset: number
687
+ }
688
+
689
+ /**
690
+ * @alpha
691
+ */
692
+ export declare type LinkBehaviorsConfig = {
693
+ linkAnnotation?: (context: {schema: EditorSchema; url: string}) =>
694
+ | {
695
+ name: string
696
+ value: {
697
+ [prop: string]: unknown
698
+ }
699
+ }
700
+ | undefined
701
+ }
702
+
703
+ /**
704
+ * @alpha
705
+ */
706
+ export declare type MarkdownBehaviorsConfig = {
707
+ horizontalRuleObject?: (context: {schema: EditorSchema}) =>
708
+ | {
709
+ name: string
710
+ value?: {
711
+ [prop: string]: unknown
712
+ }
713
+ }
714
+ | undefined
715
+ defaultStyle?: (context: {schema: EditorSchema}) => string | undefined
716
+ headingStyle?: (context: {
717
+ schema: EditorSchema
718
+ level: number
719
+ }) => string | undefined
720
+ blockquoteStyle?: (context: {schema: EditorSchema}) => string | undefined
721
+ unorderedListStyle?: (context: {schema: EditorSchema}) => string | undefined
722
+ orderedListStyle?: (context: {schema: EditorSchema}) => string | undefined
723
+ }
724
+
725
+ /**
726
+ * @alpha
727
+ */
728
+ export declare type NativeBehaviorEvent =
729
+ | {
730
+ type: 'copy'
731
+ data: DataTransfer
732
+ }
733
+ | {
734
+ type: 'key.down'
735
+ keyboardEvent: Pick<
736
+ KeyboardEvent,
737
+ 'key' | 'code' | 'altKey' | 'ctrlKey' | 'metaKey' | 'shiftKey'
738
+ >
739
+ }
740
+ | {
741
+ type: 'key.up'
742
+ keyboardEvent: Pick<
743
+ KeyboardEvent,
744
+ 'key' | 'code' | 'altKey' | 'ctrlKey' | 'metaKey' | 'shiftKey'
745
+ >
746
+ }
747
+ | {
748
+ type: 'paste'
749
+ data: DataTransfer
750
+ }
751
+
752
+ /**
753
+ * @alpha
754
+ */
755
+ export declare type PickFromUnion<
756
+ TUnion,
757
+ TTagKey extends keyof TUnion,
758
+ TPickedTags extends TUnion[TTagKey],
759
+ > = TUnion extends Record<TTagKey, TPickedTags> ? TUnion : never
760
+
761
+ /** @internal */
762
+ export declare type PortableTextMemberSchemaTypes = {
763
+ annotations: (ObjectSchemaType & {
764
+ i18nTitleKey?: string
765
+ })[]
766
+ block: ObjectSchemaType
767
+ blockObjects: ObjectSchemaType[]
768
+ decorators: BlockDecoratorDefinition[]
769
+ inlineObjects: ObjectSchemaType[]
770
+ portableText: ArraySchemaType<PortableTextBlock>
771
+ span: ObjectSchemaType
772
+ styles: BlockStyleDefinition[]
773
+ lists: BlockListDefinition[]
774
+ }
775
+
776
+ /**
777
+ * @alpha
778
+ */
779
+ export declare type SyntheticBehaviorEvent =
780
+ | {
781
+ type: 'annotation.add'
782
+ annotation: {
783
+ name: string
784
+ value: {
785
+ [prop: string]: unknown
786
+ }
787
+ }
788
+ }
789
+ | {
790
+ type: 'annotation.remove'
791
+ annotation: {
792
+ name: string
793
+ }
794
+ }
795
+ | {
796
+ type: 'annotation.toggle'
797
+ annotation: {
798
+ name: string
799
+ value: {
800
+ [prop: string]: unknown
801
+ }
802
+ }
803
+ }
804
+ | {
805
+ type: 'blur'
806
+ }
807
+ | {
808
+ type: 'decorator.add'
809
+ decorator: string
810
+ }
811
+ | {
812
+ type: 'decorator.remove'
813
+ decorator: string
814
+ }
815
+ | {
816
+ type: 'decorator.toggle'
817
+ decorator: string
818
+ }
819
+ | {
820
+ type: 'delete.backward'
821
+ unit: TextUnit
822
+ }
823
+ | {
824
+ type: 'delete.forward'
825
+ unit: TextUnit
826
+ }
827
+ | {
828
+ type: 'focus'
829
+ }
830
+ | {
831
+ type: 'insert.block object'
832
+ placement: 'auto' | 'after' | 'before'
833
+ blockObject: {
834
+ name: string
835
+ value?: {
836
+ [prop: string]: unknown
837
+ }
838
+ }
839
+ }
840
+ | {
841
+ type: 'insert.inline object'
842
+ inlineObject: {
843
+ name: string
844
+ value?: {
845
+ [prop: string]: unknown
846
+ }
847
+ }
848
+ }
849
+ | {
850
+ type: 'insert.break'
851
+ }
852
+ | {
853
+ type: 'insert.soft break'
854
+ }
855
+ | {
856
+ type: 'insert.text'
857
+ text: string
858
+ options?: TextInsertTextOptions
859
+ }
860
+ | {
861
+ type: 'list item.toggle'
862
+ listItem: string
863
+ }
864
+ | {
865
+ type: 'style.toggle'
866
+ style: string
867
+ }
868
+
869
+ export {}