@prosekit/core 0.5.1 → 0.5.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.
@@ -2,7 +2,6 @@ import { AllSelection } from '@prosekit/pm/state';
2
2
  import { Attrs } from '@prosekit/pm/model';
3
3
  import { Attrs as Attrs_2 } from 'prosemirror-model';
4
4
  import { Command } from '@prosekit/pm/state';
5
- import type { ConditionalExcept } from 'type-fest';
6
5
  import type { ContentMatch } from '@prosekit/pm/model';
7
6
  import type { DirectEditorProps } from '@prosekit/pm/view';
8
7
  import type { DOMEventMap } from '@prosekit/pm/view';
@@ -11,7 +10,6 @@ import { DOMSerializer } from '@prosekit/pm/model';
11
10
  import { EditorState } from '@prosekit/pm/state';
12
11
  import type { EditorStateConfig } from '@prosekit/pm/state';
13
12
  import { EditorView } from '@prosekit/pm/view';
14
- import type { EmptyObject } from 'type-fest';
15
13
  import type { IsEqual } from 'type-fest';
16
14
  import { Mark } from '@prosekit/pm/model';
17
15
  import type { MarkSpec } from '@prosekit/pm/model';
@@ -183,15 +181,6 @@ export declare interface CommandApplier<Args extends any[] = any[]> {
183
181
  canApply(...args: Args): boolean;
184
182
  }
185
183
 
186
- /**
187
- * @internal
188
- */
189
- declare interface CommandArgs {
190
- [name: string]: any[];
191
- }
192
- export { CommandArgs }
193
- export { CommandArgs as CommandArgs_alias_1 }
194
-
195
184
  export declare type CommandCreator<Args extends any[] = any[]> = (...arg: Args) => Command;
196
185
 
197
186
  export declare interface CommandCreators {
@@ -202,6 +191,15 @@ export declare const commandFacet: Facet<CommandCreators, RootPayload>;
202
191
 
203
192
  export declare type CommandPayload = CommandCreators;
204
193
 
194
+ /**
195
+ * @internal
196
+ */
197
+ declare interface CommandTyping {
198
+ [name: string]: any[];
199
+ }
200
+ export { CommandTyping }
201
+ export { CommandTyping as CommandTyping_alias_1 }
202
+
205
203
  /**
206
204
  * @public
207
205
  */
@@ -256,7 +254,7 @@ export { DefaultStateOptions as DefaultStateOptions_alias_1 }
256
254
  * @public
257
255
  */
258
256
  declare function defineBaseCommands(): Extension<{
259
- COMMAND_ARGS: {
257
+ Commands: {
260
258
  insertText: [{
261
259
  text: string;
262
260
  from?: number | undefined;
@@ -302,6 +300,8 @@ declare function defineBaseCommands(): Extension<{
302
300
  to?: number | undefined;
303
301
  }];
304
302
  };
303
+ Nodes: never;
304
+ Marks: never;
305
305
  }>;
306
306
  export { defineBaseCommands }
307
307
  export { defineBaseCommands as defineBaseCommands_alias_1 }
@@ -318,7 +318,7 @@ declare function defineBaseKeymap(options?: {
318
318
  * @default Priority.low
319
319
  */
320
320
  priority?: Priority;
321
- }): Extension<ExtensionTyping<string, string, CommandArgs>>;
321
+ }): Extension<any>;
322
322
  export { defineBaseKeymap }
323
323
  export { defineBaseKeymap as defineBaseKeymap_alias_1 }
324
324
 
@@ -327,7 +327,7 @@ export { defineBaseKeymap as defineBaseKeymap_alias_1 }
327
327
  *
328
328
  * See {@link https://prosemirror.net/docs/ref/#view.EditorProps.handleClick}
329
329
  */
330
- declare function defineClickHandler(handler: ClickHandler): Extension<ExtensionTyping<string, string, CommandArgs>>;
330
+ declare function defineClickHandler(handler: ClickHandler): Extension<any>;
331
331
  export { defineClickHandler }
332
332
  export { defineClickHandler as defineClickHandler_alias_1 }
333
333
 
@@ -336,14 +336,16 @@ export { defineClickHandler as defineClickHandler_alias_1 }
336
336
  *
337
337
  * See {@link https://prosemirror.net/docs/ref/#view.EditorProps.handleClickOn}
338
338
  */
339
- declare function defineClickOnHandler(handler: ClickOnHandler): Extension<ExtensionTyping<string, string, CommandArgs>>;
339
+ declare function defineClickOnHandler(handler: ClickOnHandler): Extension<any>;
340
340
  export { defineClickOnHandler }
341
341
  export { defineClickOnHandler as defineClickOnHandler_alias_1 }
342
342
 
343
343
  declare function defineCommands<T extends Record<string, CommandCreator> = Record<string, CommandCreator>>(commands: T): Extension<{
344
- COMMAND_ARGS: {
344
+ Commands: {
345
345
  [K in keyof T]: Parameters<T[K]>;
346
346
  };
347
+ Nodes: never;
348
+ Marks: never;
347
349
  }>;
348
350
  export { defineCommands }
349
351
  export { defineCommands as defineCommands_alias_1 }
@@ -356,7 +358,9 @@ export { defineDefaultState as defineDefaultState_alias_1 }
356
358
  * @public
357
359
  */
358
360
  declare function defineDoc(): Extension< {
359
- NODES: "doc";
361
+ Nodes: "doc";
362
+ Marks: never;
363
+ Commands: never;
360
364
  }>;
361
365
  export { defineDoc }
362
366
  export { defineDoc as defineDoc_alias_1 }
@@ -366,7 +370,7 @@ export { defineDoc as defineDoc_alias_1 }
366
370
  *
367
371
  * @public
368
372
  */
369
- declare function defineDocChangeHandler(handler: DocChangeHandler): Extension<ExtensionTyping<string, string, CommandArgs>>;
373
+ declare function defineDocChangeHandler(handler: DocChangeHandler): Extension<any>;
370
374
  export { defineDocChangeHandler }
371
375
  export { defineDocChangeHandler as defineDocChangeHandler_alias_1 }
372
376
 
@@ -375,7 +379,7 @@ export { defineDocChangeHandler as defineDocChangeHandler_alias_1 }
375
379
  *
376
380
  * @public
377
381
  */
378
- declare function defineDOMEventHandler<Event extends keyof DOMEventMap = string>(event: Event, handler: DOMEventHandler<Event>): Extension<ExtensionTyping<string, string, CommandArgs>>;
382
+ declare function defineDOMEventHandler<Event extends keyof DOMEventMap = string>(event: Event, handler: DOMEventHandler<Event>): Extension<any>;
379
383
  export { defineDOMEventHandler }
380
384
  export { defineDOMEventHandler as defineDOMEventHandler_alias_1 }
381
385
 
@@ -384,7 +388,7 @@ export { defineDOMEventHandler as defineDOMEventHandler_alias_1 }
384
388
  *
385
389
  * See {@link https://prosemirror.net/docs/ref/#view.EditorProps.handleDoubleClick}
386
390
  */
387
- declare function defineDoubleClickHandler(handler: DoubleClickHandler): Extension<ExtensionTyping<string, string, CommandArgs>>;
391
+ declare function defineDoubleClickHandler(handler: DoubleClickHandler): Extension<any>;
388
392
  export { defineDoubleClickHandler }
389
393
  export { defineDoubleClickHandler as defineDoubleClickHandler_alias_1 }
390
394
 
@@ -393,7 +397,7 @@ export { defineDoubleClickHandler as defineDoubleClickHandler_alias_1 }
393
397
  *
394
398
  * See {@link https://prosemirror.net/docs/ref/#view.EditorProps.handleDoubleClickOn}
395
399
  */
396
- declare function defineDoubleClickOnHandler(handler: DoubleClickOnHandler): Extension<ExtensionTyping<string, string, CommandArgs>>;
400
+ declare function defineDoubleClickOnHandler(handler: DoubleClickOnHandler): Extension<any>;
397
401
  export { defineDoubleClickOnHandler }
398
402
  export { defineDoubleClickOnHandler as defineDoubleClickOnHandler_alias_1 }
399
403
 
@@ -402,7 +406,7 @@ export { defineDoubleClickOnHandler as defineDoubleClickOnHandler_alias_1 }
402
406
  *
403
407
  * See {@link https://prosemirror.net/docs/ref/#view.EditorProps.handleDrop}
404
408
  */
405
- declare function defineDropHandler(handler: DropHandler): Extension<ExtensionTyping<string, string, CommandArgs>>;
409
+ declare function defineDropHandler(handler: DropHandler): Extension<any>;
406
410
  export { defineDropHandler }
407
411
  export { defineDropHandler as defineDropHandler_alias_1 }
408
412
 
@@ -445,7 +449,7 @@ export { defineFacetPayload as defineFacetPayload_alias_1 }
445
449
  *
446
450
  * @public
447
451
  */
448
- declare function defineFocusChangeHandler(handler: FocusChangeHandler): Extension<ExtensionTyping<string, string, CommandArgs>>;
452
+ declare function defineFocusChangeHandler(handler: FocusChangeHandler): Extension<any>;
449
453
  export { defineFocusChangeHandler }
450
454
  export { defineFocusChangeHandler as defineFocusChangeHandler_alias_1 }
451
455
 
@@ -453,9 +457,10 @@ export { defineFocusChangeHandler as defineFocusChangeHandler_alias_1 }
453
457
  * Add undo/redo history to the editor.
454
458
  */
455
459
  declare function defineHistory(): Extension< {
456
- COMMAND_ARGS: {
457
- undo: [];
458
- redo: [];
460
+ Nodes: any;
461
+ Marks: any;
462
+ Commands: {
463
+ [x: string]: any;
459
464
  };
460
465
  }>;
461
466
  export { defineHistory }
@@ -466,7 +471,7 @@ export { defineHistory as defineHistory_alias_1 }
466
471
  *
467
472
  * See {@link https://prosemirror.net/docs/ref/#view.EditorProps.handleKeyDown}
468
473
  */
469
- declare function defineKeyDownHandler(handler: KeyDownHandler): Extension<ExtensionTyping<string, string, CommandArgs>>;
474
+ declare function defineKeyDownHandler(handler: KeyDownHandler): Extension<any>;
470
475
  export { defineKeyDownHandler }
471
476
  export { defineKeyDownHandler as defineKeyDownHandler_alias_1 }
472
477
 
@@ -482,7 +487,7 @@ export { defineKeymap as defineKeymap_alias_1 }
482
487
  *
483
488
  * See {@link https://prosemirror.net/docs/ref/#view.EditorProps.handleKeyPress}
484
489
  */
485
- declare function defineKeyPressHandler(handler: KeyPressHandler): Extension<ExtensionTyping<string, string, CommandArgs>>;
490
+ declare function defineKeyPressHandler(handler: KeyPressHandler): Extension<any>;
486
491
  export { defineKeyPressHandler }
487
492
  export { defineKeyPressHandler as defineKeyPressHandler_alias_1 }
488
493
 
@@ -497,7 +502,9 @@ export { defineMarkAttr as defineMarkAttr_alias_1 }
497
502
  * @public
498
503
  */
499
504
  declare function defineMarkSpec<Mark extends string>(options: MarkSpecOptions<Mark>): Extension<{
500
- MARKS: Mark;
505
+ Marks: Mark;
506
+ Nodes: never;
507
+ Commands: never;
501
508
  }>;
502
509
  export { defineMarkSpec }
503
510
  export { defineMarkSpec as defineMarkSpec_alias_1 }
@@ -507,7 +514,7 @@ export { defineMarkSpec as defineMarkSpec_alias_1 }
507
514
  *
508
515
  * @public
509
516
  */
510
- declare function defineMountHandler(handler: MountHandler): Extension<ExtensionTyping<string, string, CommandArgs>>;
517
+ declare function defineMountHandler(handler: MountHandler): Extension<any>;
511
518
  export { defineMountHandler }
512
519
  export { defineMountHandler as defineMountHandler_alias_1 }
513
520
 
@@ -525,8 +532,10 @@ export { defineNodeAttr as defineNodeAttr_alias_1 }
525
532
  *
526
533
  * @public
527
534
  */
528
- declare function defineNodeSpec<NodeName extends string>(options: NodeSpecOptions<NodeName>): Extension<{
529
- NODES: NodeName;
535
+ declare function defineNodeSpec<Node extends string>(options: NodeSpecOptions<Node>): Extension<{
536
+ Nodes: Node;
537
+ Marks: never;
538
+ Commands: never;
530
539
  }>;
531
540
  export { defineNodeSpec }
532
541
  export { defineNodeSpec as defineNodeSpec_alias_1 }
@@ -548,7 +557,9 @@ export { defineNodeViewFactory as defineNodeViewFactory_alias_1 }
548
557
  * Defines a paragraph node spec as the highest priority, because it should be the default block node for most cases.
549
558
  */
550
559
  declare function defineParagraph(): Extension< {
551
- NODES: "paragraph";
560
+ Nodes: "paragraph";
561
+ Marks: never;
562
+ Commands: never;
552
563
  }>;
553
564
  export { defineParagraph }
554
565
  export { defineParagraph as defineParagraph_alias_1 }
@@ -559,7 +570,9 @@ export { defineParagraph as defineParagraph_alias_1 }
559
570
  * Defines a paragraph node spec.
560
571
  */
561
572
  export declare function defineParagraphSpec(): Extension< {
562
- NODES: "paragraph";
573
+ Nodes: "paragraph";
574
+ Marks: never;
575
+ Commands: never;
563
576
  }>;
564
577
 
565
578
  /**
@@ -567,7 +580,7 @@ NODES: "paragraph";
567
580
  *
568
581
  * See {@link https://prosemirror.net/docs/ref/#view.EditorProps.handlePaste}
569
582
  */
570
- declare function definePasteHandler(handler: PasteHandler): Extension<ExtensionTyping<string, string, CommandArgs>>;
583
+ declare function definePasteHandler(handler: PasteHandler): Extension<any>;
571
584
  export { definePasteHandler }
572
585
  export { definePasteHandler as definePasteHandler_alias_1 }
573
586
 
@@ -590,7 +603,7 @@ export { definePlugin as definePlugin_alias_1 }
590
603
  *
591
604
  * See {@link https://prosemirror.net/docs/ref/#view.EditorProps.handleScrollToSelection}
592
605
  */
593
- declare function defineScrollToSelectionHandler(handler: ScrollToSelectionHandler): Extension<ExtensionTyping<string, string, CommandArgs>>;
606
+ declare function defineScrollToSelectionHandler(handler: ScrollToSelectionHandler): Extension<any>;
594
607
  export { defineScrollToSelectionHandler }
595
608
  export { defineScrollToSelectionHandler as defineScrollToSelectionHandler_alias_1 }
596
609
 
@@ -598,7 +611,9 @@ export { defineScrollToSelectionHandler as defineScrollToSelectionHandler_alias_
598
611
  * @public
599
612
  */
600
613
  declare function defineText(): Extension< {
601
- NODES: "text";
614
+ Nodes: "text";
615
+ Marks: never;
616
+ Commands: never;
602
617
  }>;
603
618
  export { defineText }
604
619
  export { defineText as defineText_alias_1 }
@@ -608,7 +623,7 @@ export { defineText as defineText_alias_1 }
608
623
  *
609
624
  * See {@link https://prosemirror.net/docs/ref/#view.EditorProps.handleTextInput}
610
625
  */
611
- declare function defineTextInputHandler(handler: TextInputHandler): Extension<ExtensionTyping<string, string, CommandArgs>>;
626
+ declare function defineTextInputHandler(handler: TextInputHandler): Extension<any>;
612
627
  export { defineTextInputHandler }
613
628
  export { defineTextInputHandler as defineTextInputHandler_alias_1 }
614
629
 
@@ -617,7 +632,7 @@ export { defineTextInputHandler as defineTextInputHandler_alias_1 }
617
632
  *
618
633
  * See {@link https://prosemirror.net/docs/ref/#view.EditorProps.handleTripleClick}
619
634
  */
620
- declare function defineTripleClickHandler(handler: TripleClickHandler): Extension<ExtensionTyping<string, string, CommandArgs>>;
635
+ declare function defineTripleClickHandler(handler: TripleClickHandler): Extension<any>;
621
636
  export { defineTripleClickHandler }
622
637
  export { defineTripleClickHandler as defineTripleClickHandler_alias_1 }
623
638
 
@@ -626,7 +641,7 @@ export { defineTripleClickHandler as defineTripleClickHandler_alias_1 }
626
641
  *
627
642
  * See {@link https://prosemirror.net/docs/ref/#view.EditorProps.handleTripleClickOn}
628
643
  */
629
- declare function defineTripleClickOnHandler(handler: TripleClickOnHandler): Extension<ExtensionTyping<string, string, CommandArgs>>;
644
+ declare function defineTripleClickOnHandler(handler: TripleClickOnHandler): Extension<any>;
630
645
  export { defineTripleClickOnHandler }
631
646
  export { defineTripleClickOnHandler as defineTripleClickOnHandler_alias_1 }
632
647
 
@@ -635,7 +650,7 @@ export { defineTripleClickOnHandler as defineTripleClickOnHandler_alias_1 }
635
650
  *
636
651
  * @public
637
652
  */
638
- declare function defineUnmountHandler(handler: UnmountHandler): Extension<ExtensionTyping<string, string, CommandArgs>>;
653
+ declare function defineUnmountHandler(handler: UnmountHandler): Extension<any>;
639
654
  export { defineUnmountHandler }
640
655
  export { defineUnmountHandler as defineUnmountHandler_alias_1 }
641
656
 
@@ -644,7 +659,7 @@ export { defineUnmountHandler as defineUnmountHandler_alias_1 }
644
659
  *
645
660
  * @public
646
661
  */
647
- declare function defineUpdateHandler(handler: UpdateHandler): Extension<ExtensionTyping<string, string, CommandArgs>>;
662
+ declare function defineUpdateHandler(handler: UpdateHandler): Extension<any>;
648
663
  export { defineUpdateHandler }
649
664
  export { defineUpdateHandler as defineUpdateHandler_alias_1 }
650
665
 
@@ -838,10 +853,6 @@ declare function elementFromNode(node: ProseMirrorNode, options?: DOMSerializerO
838
853
  export { elementFromNode }
839
854
  export { elementFromNode as elementFromNode_alias_1 }
840
855
 
841
- declare type EmptyValue = undefined | null | EmptyObject;
842
-
843
- export declare type ExceptEmptyValue<T> = ConditionalExcept<T, EmptyValue>;
844
-
845
856
  /**
846
857
  * Expands the selection to include the entire mark at the current position.
847
858
  *
@@ -859,7 +870,7 @@ export { expandMark as expandMark_alias_1 }
859
870
  /**
860
871
  * @public
861
872
  */
862
- declare interface Extension<T extends ExtensionTyping = ExtensionTyping> {
873
+ declare interface Extension<T extends ExtensionTyping<any, any, any> = any> {
863
874
  extension: Extension | Extension[];
864
875
  priority?: Priority;
865
876
  _type?: T;
@@ -876,10 +887,10 @@ export { Extension as Extension_alias_1 }
876
887
  /**
877
888
  * @internal
878
889
  */
879
- declare interface ExtensionTyping<Node extends string = string, Mark extends string = string, Commands extends CommandArgs = CommandArgs> {
880
- NODES?: Node;
881
- MARKS?: Mark;
882
- COMMAND_ARGS?: Commands;
890
+ declare interface ExtensionTyping<N extends string | never = never, M extends string | never = never, C extends CommandTyping | never = never> {
891
+ Nodes: N;
892
+ Marks: M;
893
+ Commands: C;
883
894
  }
884
895
  export { ExtensionTyping }
885
896
  export { ExtensionTyping as ExtensionTyping_alias_1 }
@@ -887,47 +898,36 @@ export { ExtensionTyping as ExtensionTyping_alias_1 }
887
898
  /**
888
899
  * @public
889
900
  */
890
- declare type ExtractCommandAppliers<E extends Extension> = ToCommandApplier<ExtractCommandArgs<E>>;
901
+ declare type ExtractCommandAppliers<E extends Extension> = ToCommandApplier<ExtractCommands<E>>;
891
902
  export { ExtractCommandAppliers }
892
903
  export { ExtractCommandAppliers as ExtractCommandAppliers_alias_1 }
893
904
 
894
- /**
895
- * @internal
896
- */
897
- export declare type ExtractCommandArgs<E extends Extension> = ExtractCommandArgsFromTyping<ExtractTyping<E>>;
898
-
899
- export declare type ExtractCommandArgsFromTyping<T extends ExtensionTyping> = ExtractKey<T, 'COMMAND_ARGS'>;
900
-
901
905
  /**
902
906
  * @public
903
907
  */
904
- declare type ExtractCommandCreators<E extends Extension> = ToCommandCreators<ExtractCommandArgs<E>>;
908
+ declare type ExtractCommandCreators<E extends Extension> = ToCommandCreators<ExtractCommands<E>>;
905
909
  export { ExtractCommandCreators }
906
910
  export { ExtractCommandCreators as ExtractCommandCreators_alias_1 }
907
911
 
908
912
  /**
909
- * @intneral
913
+ * @internal
910
914
  */
911
- export declare type ExtractKey<T, K extends string> = Extract<T, Record<K, any>>[K];
915
+ export declare type ExtractCommands<E extends Extension> = SimplifyUnion<ExtractTyping<E>['Commands']>;
912
916
 
913
917
  /**
914
918
  * @public
915
919
  */
916
- declare type ExtractMarks<E extends Extension> = ExtractMarksFromTyping<ExtractTyping<E>>;
920
+ declare type ExtractMarks<E extends Extension> = ExtractTyping<E>['Marks'];
917
921
  export { ExtractMarks }
918
922
  export { ExtractMarks as ExtractMarks_alias_1 }
919
923
 
920
- export declare type ExtractMarksFromTyping<T extends ExtensionTyping> = ExtractKey<T, 'MARKS'>;
921
-
922
924
  /**
923
925
  * @public
924
926
  */
925
- declare type ExtractNodes<E extends Extension> = ExtractNodesFromTyping<ExtractTyping<E>>;
927
+ declare type ExtractNodes<E extends Extension> = ExtractTyping<E>['Nodes'];
926
928
  export { ExtractNodes }
927
929
  export { ExtractNodes as ExtractNodes_alias_1 }
928
930
 
929
- export declare type ExtractNodesFromTyping<T extends ExtensionTyping> = ExtractKey<T, 'NODES'>;
930
-
931
931
  /**
932
932
  * @internal
933
933
  */
@@ -1651,17 +1651,6 @@ export declare function setSelectionAround(tr: Transaction, pos: number): void;
1651
1651
  */
1652
1652
  export declare type Setter<T> = (value: T) => void;
1653
1653
 
1654
- /**
1655
- * @internal
1656
- */
1657
- declare type SimplifyExtension<E extends Extension | Extension[]> = E extends Extension[] ? Extension<ExceptEmptyValue<{
1658
- NODES: ExtractNodes<E[number]>;
1659
- MARKS: ExtractMarks<E[number]>;
1660
- COMMAND_ARGS: SimplifyUnion<ExtractCommandArgs<E[number]>>;
1661
- }>> : E;
1662
- export { SimplifyExtension }
1663
- export { SimplifyExtension as SimplifyExtension_alias_1 }
1664
-
1665
1654
  /**
1666
1655
  * @intneral
1667
1656
  */
@@ -1669,13 +1658,6 @@ declare type SimplifyUnion<T> = Simplify<UnionToIntersection<T>>;
1669
1658
  export { SimplifyUnion }
1670
1659
  export { SimplifyUnion as SimplifyUnion_alias_1 }
1671
1660
 
1672
- export declare function splitBlockAs(splitNode?: (node: ProseMirrorNode, deflt: NodeType | null, atEnd: boolean) => {
1673
- type: NodeType;
1674
- attrs?: Attrs;
1675
- } | null): Command;
1676
-
1677
- export declare const splitBlockEnter: Command;
1678
-
1679
1661
  export declare const stateFacet: Facet<StatePayload, RootPayload>;
1680
1662
 
1681
1663
  /**
@@ -1715,15 +1697,11 @@ declare type TextInputHandler = (view: EditorView, from: number, to: number, tex
1715
1697
  export { TextInputHandler }
1716
1698
  export { TextInputHandler as TextInputHandler_alias_1 }
1717
1699
 
1718
- export declare type ToCommandApplier<T extends CommandArgs> = {
1700
+ export declare type ToCommandApplier<T extends CommandTyping> = {
1719
1701
  [K in keyof T]: CommandApplier<T[K]>;
1720
1702
  };
1721
1703
 
1722
- export declare type ToCommandArgs<T extends CommandCreators> = {
1723
- [K in keyof T]: Parameters<T[K]>;
1724
- };
1725
-
1726
- export declare type ToCommandCreators<T extends CommandArgs> = {
1704
+ export declare type ToCommandCreators<T extends CommandTyping> = {
1727
1705
  [K in keyof T]: CommandCreator<T[K]>;
1728
1706
  };
1729
1707
 
@@ -1772,10 +1750,21 @@ export declare type Tuple5<T> = [T, T, T, T, T];
1772
1750
  *
1773
1751
  * @public
1774
1752
  */
1775
- declare function union<E extends Extension | Extension[]>(extension: E): SimplifyExtension<E>;
1753
+ declare function union<E extends Extension | Extension[]>(extension: E): UnionExtension<E>;
1776
1754
  export { union }
1777
1755
  export { union as union_alias_1 }
1778
1756
 
1757
+ /**
1758
+ * @internal
1759
+ */
1760
+ declare type UnionExtension<E extends Extension | Extension[]> = E extends Extension[] ? Extension<{
1761
+ Nodes: ExtractNodes<E[number]>;
1762
+ Marks: ExtractMarks<E[number]>;
1763
+ Commands: ExtractCommands<E[number]>;
1764
+ }> : E;
1765
+ export { UnionExtension }
1766
+ export { UnionExtension as UnionExtension_alias_1 }
1767
+
1779
1768
  export declare class UnionExtensionImpl<T extends ExtensionTyping = ExtensionTyping> extends BaseExtension<T> implements Extension<T> {
1780
1769
  extension: BaseExtension[];
1781
1770
  /**
@@ -81,14 +81,14 @@ export { defineFacet } from './_tsup-dts-rollup';
81
81
  export { Facet } from './_tsup-dts-rollup';
82
82
  export { defineFacetPayload } from './_tsup-dts-rollup';
83
83
  export { BaseNodeViewOptions } from './_tsup-dts-rollup';
84
- export { CommandArgs } from './_tsup-dts-rollup';
84
+ export { CommandTyping } from './_tsup-dts-rollup';
85
85
  export { Extension } from './_tsup-dts-rollup';
86
+ export { ExtensionTyping } from './_tsup-dts-rollup';
86
87
  export { ExtractCommandAppliers } from './_tsup-dts-rollup';
87
88
  export { ExtractCommandCreators } from './_tsup-dts-rollup';
88
89
  export { ExtractMarks } from './_tsup-dts-rollup';
89
90
  export { ExtractNodes } from './_tsup-dts-rollup';
90
- export { SimplifyExtension } from './_tsup-dts-rollup';
91
- export { ExtensionTyping } from './_tsup-dts-rollup';
91
+ export { UnionExtension } from './_tsup-dts-rollup';
92
92
  export { NodeJSON } from './_tsup-dts-rollup';
93
93
  export { SelectionJSON } from './_tsup-dts-rollup';
94
94
  export { StateJSON } from './_tsup-dts-rollup';
@@ -463,7 +463,7 @@ function subtractInput(a, b) {
463
463
  if (!a)
464
464
  return null;
465
465
  if (!b)
466
- return [];
466
+ return [...a];
467
467
  return arraySubstract(a, b);
468
468
  }
469
469
  function unionChildren(a, b) {
@@ -478,7 +478,9 @@ function subtractChildren(a, b) {
478
478
  const merged = new Map(a);
479
479
  for (const [key, valueB] of b.entries()) {
480
480
  const valueA = a.get(key);
481
- merged.set(key, valueA ? subtractFacetNode(valueA, valueB) : valueB);
481
+ if (valueA) {
482
+ merged.set(key, subtractFacetNode(valueA, valueB));
483
+ }
482
484
  }
483
485
  return merged;
484
486
  }
@@ -1435,7 +1437,10 @@ var nodeSpecFacet = defineFacet({
1435
1437
  if (!spec.attrs) {
1436
1438
  spec.attrs = {};
1437
1439
  }
1438
- spec.attrs[attr] = { default: defaultValue, splittable };
1440
+ spec.attrs[attr] = {
1441
+ default: defaultValue,
1442
+ splittable
1443
+ };
1439
1444
  if (toDOM && spec.toDOM) {
1440
1445
  const existingToDom = spec.toDOM;
1441
1446
  spec.toDOM = (node) => {
@@ -1829,103 +1834,14 @@ import {
1829
1834
  } from "@prosekit/pm/commands";
1830
1835
  import { keydownHandler } from "@prosekit/pm/keymap";
1831
1836
  import { Plugin as Plugin3, PluginKey as PluginKey4 } from "@prosekit/pm/state";
1832
-
1833
- // src/commands/split-block-as.ts
1834
- import {
1835
- AllSelection as AllSelection3,
1836
- NodeSelection as NodeSelection2,
1837
- TextSelection as TextSelection6
1838
- } from "@prosekit/pm/state";
1839
- import { canSplit } from "@prosekit/pm/transform";
1840
-
1841
- // src/utils/default-block-at.ts
1842
- function defaultBlockAt(match) {
1843
- for (let i = 0; i < match.edgeCount; i++) {
1844
- const { type } = match.edge(i);
1845
- if (type.isTextblock && !type.hasRequiredAttrs())
1846
- return type;
1847
- }
1848
- return null;
1849
- }
1850
-
1851
- // src/commands/split-block-as.ts
1852
- function splitBlockAs(splitNode) {
1853
- return (state, dispatch) => {
1854
- const { $from, $to } = state.selection;
1855
- if (state.selection instanceof NodeSelection2 && state.selection.node.isBlock) {
1856
- if (!$from.parentOffset || !canSplit(state.doc, $from.pos))
1857
- return false;
1858
- if (dispatch)
1859
- dispatch(state.tr.split($from.pos).scrollIntoView());
1860
- return true;
1861
- }
1862
- if (!$from.parent.isBlock)
1863
- return false;
1864
- if (dispatch) {
1865
- const atEnd = $to.parentOffset == $to.parent.content.size;
1866
- const tr = state.tr;
1867
- if (state.selection instanceof TextSelection6 || state.selection instanceof AllSelection3)
1868
- tr.deleteSelection();
1869
- const deflt = $from.depth == 0 ? null : defaultBlockAt($from.node(-1).contentMatchAt($from.indexAfter(-1)));
1870
- const splitType = splitNode && splitNode($from.parent, deflt, atEnd);
1871
- let types = splitType ? [splitType] : atEnd && deflt ? [{ type: deflt }] : void 0;
1872
- let can = canSplit(tr.doc, tr.mapping.map($from.pos), 1, types);
1873
- if (!types && !can && canSplit(
1874
- tr.doc,
1875
- tr.mapping.map($from.pos),
1876
- 1,
1877
- deflt ? [{ type: deflt }] : void 0
1878
- )) {
1879
- if (deflt)
1880
- types = [{ type: deflt }];
1881
- can = true;
1882
- }
1883
- if (can) {
1884
- tr.split(tr.mapping.map($from.pos), 1, types);
1885
- if (!atEnd && !$from.parentOffset && $from.parent.type != deflt) {
1886
- const first = tr.mapping.map($from.before()), $first = tr.doc.resolve(first);
1887
- if (deflt && $from.node(-1).canReplaceWith($first.index(), $first.index() + 1, deflt))
1888
- tr.setNodeMarkup(tr.mapping.map($from.before()), deflt);
1889
- }
1890
- }
1891
- dispatch(tr.scrollIntoView());
1892
- }
1893
- return true;
1894
- };
1895
- }
1896
-
1897
- // src/commands/split-block-enter.ts
1898
- var splitBlockEnter = splitBlockAs((node, deflt, atEnd) => {
1899
- if (atEnd && deflt) {
1900
- const attrs = pickSplittableAttrs(node, deflt);
1901
- if (attrs) {
1902
- return { type: deflt, attrs };
1903
- }
1904
- }
1905
- return null;
1906
- });
1907
- function pickSplittableAttrs(node, type) {
1908
- var _a;
1909
- const attrs = {};
1910
- let found = false;
1911
- for (const [attr, value] of Object.entries(node.attrs)) {
1912
- const spec = (_a = type.spec.attrs) == null ? void 0 : _a[attr];
1913
- if (spec && spec.default !== value && spec.splittable === true) {
1914
- attrs[attr] = value;
1915
- found = true;
1916
- }
1917
- }
1918
- return found ? attrs : null;
1919
- }
1920
-
1921
- // src/extensions/keymap.ts
1837
+ import { splitSplittableBlock } from "prosemirror-splittable";
1922
1838
  var customBaseKeymap = {
1923
1839
  ...baseKeymap,
1924
1840
  Enter: chainCommands(
1925
1841
  newlineInCode,
1926
1842
  createParagraphNear,
1927
1843
  liftEmptyBlock,
1928
- splitBlockEnter
1844
+ splitSplittableBlock
1929
1845
  )
1930
1846
  };
1931
1847
  function defineKeymap(keymap) {
@@ -2199,6 +2115,16 @@ var canUseRegexLookbehind = cache(() => {
2199
2115
  import clsxLite from "clsx/lite";
2200
2116
  var clsx = clsxLite;
2201
2117
 
2118
+ // src/utils/default-block-at.ts
2119
+ function defaultBlockAt(match) {
2120
+ for (let i = 0; i < match.edgeCount; i++) {
2121
+ const { type } = match.edge(i);
2122
+ if (type.isTextblock && !type.hasRequiredAttrs())
2123
+ return type;
2124
+ }
2125
+ return null;
2126
+ }
2127
+
2202
2128
  // src/utils/get-id.ts
2203
2129
  var id = 0;
2204
2130
  function getId() {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@prosekit/core",
3
3
  "type": "module",
4
- "version": "0.5.1",
4
+ "version": "0.5.3",
5
5
  "private": false,
6
6
  "author": {
7
7
  "name": "ocavue",
@@ -38,7 +38,8 @@
38
38
  "@prosekit/pm": "^0.1.4",
39
39
  "clsx": "^2.1.1",
40
40
  "orderedmap": "^2.1.1",
41
- "type-fest": "^4.18.2"
41
+ "prosemirror-splittable": "^0.1.1",
42
+ "type-fest": "^4.18.3"
42
43
  },
43
44
  "devDependencies": {
44
45
  "tsup": "^8.0.2",