@prosekit/core 0.7.10 → 0.7.12

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.
@@ -32,7 +32,6 @@ import type { ResolvedPos } from '@prosekit/pm/model';
32
32
  import { Schema } from '@prosekit/pm/model';
33
33
  import { SchemaSpec } from '@prosekit/pm/model';
34
34
  import { Selection as Selection_2 } from '@prosekit/pm/state';
35
- import { Selection as Selection_3 } from 'prosemirror-state';
36
35
  import type { Simplify } from 'type-fest';
37
36
  import { Slice } from '@prosekit/pm/model';
38
37
  import type { TagParseRule } from '@prosekit/pm/model';
@@ -87,6 +86,13 @@ declare type AnyAttrs = Attrs;
87
86
  export { AnyAttrs }
88
87
  export { AnyAttrs as AnyAttrs_alias_1 }
89
88
 
89
+ /**
90
+ * @internal
91
+ */
92
+ declare type AnyFunction = (...args: any[]) => any;
93
+ export { AnyFunction }
94
+ export { AnyFunction as AnyFunction_alias_1 }
95
+
90
96
  export declare function applyAction(operator: Action): Command;
91
97
 
92
98
  export declare const applyMarkForTest: ApplyMarkFunction;
@@ -165,6 +171,7 @@ declare type BaseCommandsExtension = Extension<{
165
171
  insertNode: [options: InsertNodeOptions];
166
172
  removeNode: [options: RemoveNodeOptions];
167
173
  wrap: [options: WrapOptions];
174
+ toggleWrap: [options: ToggleWrapOptions];
168
175
  setBlockType: [options: SetBlockTypeOptions];
169
176
  setNodeAttrs: [options: SetNodeAttrsOptions];
170
177
  insertDefaultBlock: [options?: InsertDefaultBlockOptions];
@@ -295,7 +302,10 @@ declare function collectNodes(content: NodeContent): ProseMirrorNode[];
295
302
  export { collectNodes }
296
303
  export { collectNodes as collectNodes_alias_1 }
297
304
 
298
- export declare function combineEventHandlers<Handler extends (...args: any[]) => boolean | void, Args extends Parameters<Handler> = Parameters<Handler>>(): readonly [(eventHandlers: Handler[]) => void, (...args: Args) => boolean];
305
+ export declare function combineEventHandlers<Handler extends (...args: any[]) => boolean | void, Args extends Parameters<Handler> = Parameters<Handler>>(): [
306
+ setHandlers: (eventHandlers: Handler[]) => void,
307
+ combinedEventHandler: (...args: Args) => boolean
308
+ ];
299
309
 
300
310
  /**
301
311
  * A function to apply a command to the editor. It will return `true` if the command was applied, and `false` otherwise.
@@ -331,7 +341,7 @@ export declare interface CommandCreators {
331
341
  [name: string]: CommandCreator;
332
342
  }
333
343
 
334
- export declare const commandFacet: Facet<CommandCreators, RootPayload>;
344
+ export declare const commandFacet: Facet<CommandPayload, RootPayload>;
335
345
 
336
346
  export declare type CommandPayload = CommandCreators;
337
347
 
@@ -457,7 +467,7 @@ export { defineBaseKeymap as defineBaseKeymap_alias_1 }
457
467
  *
458
468
  * See {@link https://prosemirror.net/docs/ref/#view.EditorProps.handleClick}
459
469
  */
460
- declare function defineClickHandler(handler: ClickHandler): Extension<ExtensionTyping<any, any, any>>;
470
+ declare function defineClickHandler(handler: ClickHandler): PlainExtension;
461
471
  export { defineClickHandler }
462
472
  export { defineClickHandler as defineClickHandler_alias_1 }
463
473
 
@@ -466,7 +476,7 @@ export { defineClickHandler as defineClickHandler_alias_1 }
466
476
  *
467
477
  * See {@link https://prosemirror.net/docs/ref/#view.EditorProps.handleClickOn}
468
478
  */
469
- declare function defineClickOnHandler(handler: ClickOnHandler): Extension<ExtensionTyping<any, any, any>>;
479
+ declare function defineClickOnHandler(handler: ClickOnHandler): PlainExtension;
470
480
  export { defineClickOnHandler }
471
481
  export { defineClickOnHandler as defineClickOnHandler_alias_1 }
472
482
 
@@ -505,12 +515,17 @@ declare function defineDocChangeHandler(handler: DocChangeHandler): PlainExtensi
505
515
  export { defineDocChangeHandler }
506
516
  export { defineDocChangeHandler as defineDocChangeHandler_alias_1 }
507
517
 
518
+ /**
519
+ * @internal
520
+ */
521
+ export declare function defineDomEventFacetPayload(...payloads: DOMEventPayload[]): PlainExtension;
522
+
508
523
  /**
509
524
  * Register a new event handler for the given event type.
510
525
  *
511
526
  * @public
512
527
  */
513
- declare function defineDOMEventHandler<Event extends keyof DOMEventMap = string>(event: Event, handler: DOMEventHandler<Event>): Extension<ExtensionTyping<any, any, any>>;
528
+ declare function defineDOMEventHandler<Event extends keyof DOMEventMap = string>(event: Event, handler: DOMEventHandler<Event>): PlainExtension;
514
529
  export { defineDOMEventHandler }
515
530
  export { defineDOMEventHandler as defineDOMEventHandler_alias_1 }
516
531
 
@@ -519,7 +534,7 @@ export { defineDOMEventHandler as defineDOMEventHandler_alias_1 }
519
534
  *
520
535
  * See {@link https://prosemirror.net/docs/ref/#view.EditorProps.handleDoubleClick}
521
536
  */
522
- declare function defineDoubleClickHandler(handler: DoubleClickHandler): Extension<ExtensionTyping<any, any, any>>;
537
+ declare function defineDoubleClickHandler(handler: DoubleClickHandler): PlainExtension;
523
538
  export { defineDoubleClickHandler }
524
539
  export { defineDoubleClickHandler as defineDoubleClickHandler_alias_1 }
525
540
 
@@ -528,7 +543,7 @@ export { defineDoubleClickHandler as defineDoubleClickHandler_alias_1 }
528
543
  *
529
544
  * See {@link https://prosemirror.net/docs/ref/#view.EditorProps.handleDoubleClickOn}
530
545
  */
531
- declare function defineDoubleClickOnHandler(handler: DoubleClickOnHandler): Extension<ExtensionTyping<any, any, any>>;
546
+ declare function defineDoubleClickOnHandler(handler: DoubleClickOnHandler): PlainExtension;
532
547
  export { defineDoubleClickOnHandler }
533
548
  export { defineDoubleClickOnHandler as defineDoubleClickOnHandler_alias_1 }
534
549
 
@@ -537,7 +552,7 @@ export { defineDoubleClickOnHandler as defineDoubleClickOnHandler_alias_1 }
537
552
  *
538
553
  * See {@link https://prosemirror.net/docs/ref/#view.EditorProps.handleDrop}
539
554
  */
540
- declare function defineDropHandler(handler: DropHandler): Extension<ExtensionTyping<any, any, any>>;
555
+ declare function defineDropHandler(handler: DropHandler): PlainExtension;
541
556
  export { defineDropHandler }
542
557
  export { defineDropHandler as defineDropHandler_alias_1 }
543
558
 
@@ -580,7 +595,7 @@ export { defineFacetPayload as defineFacetPayload_alias_1 }
580
595
  *
581
596
  * @public
582
597
  */
583
- declare function defineFocusChangeHandler(handler: FocusChangeHandler): Extension<ExtensionTyping<any, any, any>>;
598
+ declare function defineFocusChangeHandler(handler: FocusChangeHandler): PlainExtension;
584
599
  export { defineFocusChangeHandler }
585
600
  export { defineFocusChangeHandler as defineFocusChangeHandler_alias_1 }
586
601
 
@@ -600,7 +615,7 @@ export { defineHistory as defineHistory_alias_1 }
600
615
  *
601
616
  * See {@link https://prosemirror.net/docs/ref/#view.EditorProps.handleKeyDown}
602
617
  */
603
- declare function defineKeyDownHandler(handler: KeyDownHandler): Extension<ExtensionTyping<any, any, any>>;
618
+ declare function defineKeyDownHandler(handler: KeyDownHandler): PlainExtension;
604
619
  export { defineKeyDownHandler }
605
620
  export { defineKeyDownHandler as defineKeyDownHandler_alias_1 }
606
621
 
@@ -616,7 +631,7 @@ export { defineKeymap as defineKeymap_alias_1 }
616
631
  *
617
632
  * See {@link https://prosemirror.net/docs/ref/#view.EditorProps.handleKeyPress}
618
633
  */
619
- declare function defineKeyPressHandler(handler: KeyPressHandler): Extension<ExtensionTyping<any, any, any>>;
634
+ declare function defineKeyPressHandler(handler: KeyPressHandler): PlainExtension;
620
635
  export { defineKeyPressHandler }
621
636
  export { defineKeyPressHandler as defineKeyPressHandler_alias_1 }
622
637
 
@@ -718,7 +733,7 @@ export declare function defineParagraphSpec(): ParagraphSpecExtension;
718
733
  *
719
734
  * See {@link https://prosemirror.net/docs/ref/#view.EditorProps.handlePaste}
720
735
  */
721
- declare function definePasteHandler(handler: PasteHandler): Extension<ExtensionTyping<any, any, any>>;
736
+ declare function definePasteHandler(handler: PasteHandler): PlainExtension;
722
737
  export { definePasteHandler }
723
738
  export { definePasteHandler as definePasteHandler_alias_1 }
724
739
 
@@ -741,7 +756,7 @@ export { definePlugin as definePlugin_alias_1 }
741
756
  *
742
757
  * See {@link https://prosemirror.net/docs/ref/#view.EditorProps.handleScrollToSelection}
743
758
  */
744
- declare function defineScrollToSelectionHandler(handler: ScrollToSelectionHandler): Extension<ExtensionTyping<any, any, any>>;
759
+ declare function defineScrollToSelectionHandler(handler: ScrollToSelectionHandler): PlainExtension;
745
760
  export { defineScrollToSelectionHandler }
746
761
  export { defineScrollToSelectionHandler as defineScrollToSelectionHandler_alias_1 }
747
762
 
@@ -766,7 +781,7 @@ export { defineText as defineText_alias_1 }
766
781
  *
767
782
  * See {@link https://prosemirror.net/docs/ref/#view.EditorProps.handleTextInput}
768
783
  */
769
- declare function defineTextInputHandler(handler: TextInputHandler): Extension<ExtensionTyping<any, any, any>>;
784
+ declare function defineTextInputHandler(handler: TextInputHandler): PlainExtension;
770
785
  export { defineTextInputHandler }
771
786
  export { defineTextInputHandler as defineTextInputHandler_alias_1 }
772
787
 
@@ -775,7 +790,7 @@ export { defineTextInputHandler as defineTextInputHandler_alias_1 }
775
790
  *
776
791
  * See {@link https://prosemirror.net/docs/ref/#view.EditorProps.handleTripleClick}
777
792
  */
778
- declare function defineTripleClickHandler(handler: TripleClickHandler): Extension<ExtensionTyping<any, any, any>>;
793
+ declare function defineTripleClickHandler(handler: TripleClickHandler): PlainExtension;
779
794
  export { defineTripleClickHandler }
780
795
  export { defineTripleClickHandler as defineTripleClickHandler_alias_1 }
781
796
 
@@ -784,7 +799,7 @@ export { defineTripleClickHandler as defineTripleClickHandler_alias_1 }
784
799
  *
785
800
  * See {@link https://prosemirror.net/docs/ref/#view.EditorProps.handleTripleClickOn}
786
801
  */
787
- declare function defineTripleClickOnHandler(handler: TripleClickOnHandler): Extension<ExtensionTyping<any, any, any>>;
802
+ declare function defineTripleClickOnHandler(handler: TripleClickOnHandler): PlainExtension;
788
803
  export { defineTripleClickOnHandler }
789
804
  export { defineTripleClickOnHandler as defineTripleClickOnHandler_alias_1 }
790
805
 
@@ -994,6 +1009,35 @@ declare class Editor<E extends Extension = any> {
994
1009
  export { Editor }
995
1010
  export { Editor as Editor_alias_1 }
996
1011
 
1012
+ /**
1013
+ * @internal
1014
+ */
1015
+ declare const editorEventFacet: Facet<EditorEventPayload, PluginPayload>;
1016
+ export { editorEventFacet }
1017
+ export { editorEventFacet as editorEventFacet_alias_1 }
1018
+
1019
+ declare interface EditorEventMap {
1020
+ keyDown: KeyDownHandler;
1021
+ keyPress: KeyPressHandler;
1022
+ textInput: TextInputHandler;
1023
+ clickOn: ClickOnHandler;
1024
+ click: ClickHandler;
1025
+ doubleClickOn: DoubleClickOnHandler;
1026
+ doubleClick: DoubleClickHandler;
1027
+ tripleClickOn: TripleClickOnHandler;
1028
+ tripleClick: TripleClickHandler;
1029
+ paste: PasteHandler;
1030
+ drop: DropHandler;
1031
+ scrollToSelection: ScrollToSelectionHandler;
1032
+ }
1033
+
1034
+ /**
1035
+ * @internal
1036
+ */
1037
+ declare type EditorEventPayload = ObjectEntries<EditorEventMap>;
1038
+ export { EditorEventPayload }
1039
+ export { EditorEventPayload as EditorEventPayload_alias_1 }
1040
+
997
1041
  /**
998
1042
  * An internal class to make TypeScript generic type easier to use.
999
1043
  *
@@ -1298,7 +1342,7 @@ export declare function findBrowserDocument(options?: {
1298
1342
 
1299
1343
  export declare function findBrowserWindow(options?: {
1300
1344
  document?: Document;
1301
- }): (Window & typeof globalThis) | null | undefined;
1345
+ }): (Window & typeof globalThis) | undefined;
1302
1346
 
1303
1347
  /**
1304
1348
  * Find the closest parent node that satisfies the predicate.
@@ -1377,7 +1421,7 @@ export declare function getBrowserWindow(options?: {
1377
1421
  document?: Document;
1378
1422
  }): Window & typeof globalThis;
1379
1423
 
1380
- export declare function getCustomSelection(state: EditorState, from?: number | null, to?: number | null): Selection_3;
1424
+ export declare function getCustomSelection(state: EditorState, from?: number | null, to?: number | null): Selection_2;
1381
1425
 
1382
1426
  export declare function getEditorContentDoc(schema: Schema, content: NodeJSON | string | HTMLElement | ProseMirrorNode): ProseMirrorNode;
1383
1427
 
@@ -1614,7 +1658,7 @@ export { isFragment as isFragment_alias_1 }
1614
1658
  *
1615
1659
  * @internal
1616
1660
  */
1617
- declare function isInCodeBlock(selection: Selection_2): boolean | undefined;
1661
+ declare function isInCodeBlock(selection: Selection_2): boolean;
1618
1662
  export { isInCodeBlock }
1619
1663
  export { isInCodeBlock as isInCodeBlock_alias_1 }
1620
1664
 
@@ -1767,7 +1811,7 @@ export { Keymap as Keymap_alias_1 }
1767
1811
  /**
1768
1812
  * @internal
1769
1813
  */
1770
- declare const keymapFacet: Facet<Keymap, PluginPayload>;
1814
+ declare const keymapFacet: Facet<KeymapPayload, PluginPayload>;
1771
1815
  export { keymapFacet }
1772
1816
  export { keymapFacet as keymapFacet_alias_1 }
1773
1817
 
@@ -1880,7 +1924,7 @@ export { MarkTyping as MarkTyping_alias_1 }
1880
1924
  /**
1881
1925
  * @internal
1882
1926
  */
1883
- declare function maybeRun<T, R = T extends (...args: any[]) => void ? ReturnType<T> : T>(value: T, ...args: T extends (...args: any[]) => void ? Parameters<T> : never): R;
1927
+ declare function maybeRun<MaybeFn, Result = MaybeFn extends (...args: any[]) => void ? ReturnType<MaybeFn> : MaybeFn>(value: MaybeFn, ...args: MaybeFn extends (...args: any[]) => void ? Parameters<MaybeFn> : never): Result;
1884
1928
  export { maybeRun }
1885
1929
  export { maybeRun as maybeRun_alias_1 }
1886
1930
 
@@ -2284,9 +2328,9 @@ export declare type RootPayload = {
2284
2328
  view?: Omit<DirectEditorProps, 'state'>;
2285
2329
  };
2286
2330
 
2287
- export declare const schemaFacet: Facet<SchemaSpec<any, any>, RootPayload>;
2331
+ export declare const schemaFacet: Facet<SchemaSpec, RootPayload>;
2288
2332
 
2289
- export declare const schemaSpecFacet: Facet<SchemaSpec<any, any>, SchemaSpec<any, any>>;
2333
+ export declare const schemaSpecFacet: Facet<SchemaSpec, SchemaSpec>;
2290
2334
 
2291
2335
  declare type ScrollToSelectionHandler = (view: EditorView) => boolean;
2292
2336
  export { ScrollToSelectionHandler }
@@ -2366,7 +2410,9 @@ declare interface SetNodeAttrsOptions {
2366
2410
  export { SetNodeAttrsOptions }
2367
2411
  export { SetNodeAttrsOptions as SetNodeAttrsOptions_alias_1 }
2368
2412
 
2369
- export declare function setSelectionAround(tr: Transaction, pos: number): void;
2413
+ declare function setSelectionAround(tr: Transaction, pos: number): void;
2414
+ export { setSelectionAround }
2415
+ export { setSelectionAround as setSelectionAround_alias_1 }
2370
2416
 
2371
2417
  /**
2372
2418
  * @internal
@@ -2628,6 +2674,31 @@ declare interface ToggleNodeOptions {
2628
2674
  export { ToggleNodeOptions }
2629
2675
  export { ToggleNodeOptions as ToggleNodeOptions_alias_1 }
2630
2676
 
2677
+ /**
2678
+ * Toggle between wrapping an inactive node with the provided node type, and
2679
+ * lifting it up into it's parent.
2680
+ *
2681
+ * @param options
2682
+ *
2683
+ * @public
2684
+ */
2685
+ declare function toggleWrap(options: ToggleWrapOptions): Command;
2686
+ export { toggleWrap }
2687
+ export { toggleWrap as toggleWrap_alias_1 }
2688
+
2689
+ declare interface ToggleWrapOptions {
2690
+ /**
2691
+ * The type of the node to toggle.
2692
+ */
2693
+ type: string | NodeType;
2694
+ /**
2695
+ * The attributes of the node to toggle.
2696
+ */
2697
+ attrs?: Attrs | null;
2698
+ }
2699
+ export { ToggleWrapOptions }
2700
+ export { ToggleWrapOptions as ToggleWrapOptions_alias_1 }
2701
+
2631
2702
  /**
2632
2703
  * @internal
2633
2704
  */
@@ -145,11 +145,7 @@ function rootReducer(inputs) {
145
145
  const state = schema && ((_a = stateFunc == null ? void 0 : stateFunc({ schema })) != null ? _a : { schema });
146
146
  return { schema, state, commands, view };
147
147
  }
148
- var rootFacet = new Facet(
149
- null,
150
- true,
151
- rootReducer
152
- );
148
+ var rootFacet = new Facet(null, true, rootReducer);
153
149
 
154
150
  // src/facets/schema.ts
155
151
  var schemaFacet = defineFacet({
@@ -396,8 +392,8 @@ function findBrowserDocument(options) {
396
392
  return (_c = (_a = options == null ? void 0 : options.document) != null ? _a : findGlobalBrowserDocument()) != null ? _c : (_b = findGlobalBrowserWindow()) == null ? void 0 : _b.document;
397
393
  }
398
394
  function findBrowserWindow(options) {
399
- var _a, _b, _c, _d;
400
- return (_d = (_b = (_a = options == null ? void 0 : options.document) == null ? void 0 : _a.defaultView) != null ? _b : findGlobalBrowserWindow()) != null ? _d : (_c = findBrowserDocument(options)) == null ? void 0 : _c.defaultView;
395
+ var _a, _b, _c, _d, _e;
396
+ return (_e = (_d = (_b = (_a = options == null ? void 0 : options.document) == null ? void 0 : _a.defaultView) != null ? _b : findGlobalBrowserWindow()) != null ? _d : (_c = findBrowserDocument(options)) == null ? void 0 : _c.defaultView) != null ? _e : void 0;
401
397
  }
402
398
  function getBrowserDocument(options) {
403
399
  const doc = findBrowserDocument(options);
@@ -6,7 +6,7 @@ import {
6
6
  createNodeActions,
7
7
  isProseMirrorNode,
8
8
  setupEditorExtension
9
- } from "./chunk-RNBMCB5M.js";
9
+ } from "./chunk-LAFNHJDR.js";
10
10
 
11
11
  // src/test/test-editor.ts
12
12
  import {
@@ -2,10 +2,10 @@ export { addMark } from './_tsup-dts-rollup';
2
2
  export { AddMarkOptions } from './_tsup-dts-rollup';
3
3
  export { expandMark } from './_tsup-dts-rollup';
4
4
  export { ExpandMarkOptions } from './_tsup-dts-rollup';
5
- export { insertNode } from './_tsup-dts-rollup';
6
- export { InsertNodeOptions } from './_tsup-dts-rollup';
7
5
  export { insertDefaultBlock } from './_tsup-dts-rollup';
8
6
  export { InsertDefaultBlockOptions } from './_tsup-dts-rollup';
7
+ export { insertNode } from './_tsup-dts-rollup';
8
+ export { InsertNodeOptions } from './_tsup-dts-rollup';
9
9
  export { removeMark } from './_tsup-dts-rollup';
10
10
  export { RemoveMarkOptions } from './_tsup-dts-rollup';
11
11
  export { removeNode } from './_tsup-dts-rollup';
@@ -18,6 +18,8 @@ export { toggleMark } from './_tsup-dts-rollup';
18
18
  export { ToggleMarkOptions } from './_tsup-dts-rollup';
19
19
  export { toggleNode } from './_tsup-dts-rollup';
20
20
  export { ToggleNodeOptions } from './_tsup-dts-rollup';
21
+ export { toggleWrap } from './_tsup-dts-rollup';
22
+ export { ToggleWrapOptions } from './_tsup-dts-rollup';
21
23
  export { unsetBlockType } from './_tsup-dts-rollup';
22
24
  export { UnsetBlockTypeOptions } from './_tsup-dts-rollup';
23
25
  export { unsetMark } from './_tsup-dts-rollup';
@@ -71,6 +73,8 @@ export { ScrollToSelectionHandler } from './_tsup-dts-rollup';
71
73
  export { TextInputHandler } from './_tsup-dts-rollup';
72
74
  export { TripleClickHandler } from './_tsup-dts-rollup';
73
75
  export { TripleClickOnHandler } from './_tsup-dts-rollup';
76
+ export { editorEventFacet } from './_tsup-dts-rollup';
77
+ export { EditorEventPayload } from './_tsup-dts-rollup';
74
78
  export { defineFocusChangeHandler } from './_tsup-dts-rollup';
75
79
  export { FocusChangeHandler } from './_tsup-dts-rollup';
76
80
  export { defineMountHandler } from './_tsup-dts-rollup';
@@ -112,6 +116,7 @@ export { TextExtension } from './_tsup-dts-rollup';
112
116
  export { defineFacet } from './_tsup-dts-rollup';
113
117
  export { Facet } from './_tsup-dts-rollup';
114
118
  export { defineFacetPayload } from './_tsup-dts-rollup';
119
+ export { AnyFunction } from './_tsup-dts-rollup';
115
120
  export { AnyAttrs } from './_tsup-dts-rollup';
116
121
  export { AttrSpec } from './_tsup-dts-rollup';
117
122
  export { BaseNodeViewOptions } from './_tsup-dts-rollup';
@@ -176,6 +181,7 @@ export { DOMDocumentOptions } from './_tsup-dts-rollup';
176
181
  export { DOMParserOptions } from './_tsup-dts-rollup';
177
182
  export { DOMSerializerOptions } from './_tsup-dts-rollup';
178
183
  export { JSONParserOptions } from './_tsup-dts-rollup';
184
+ export { setSelectionAround } from './_tsup-dts-rollup';
179
185
  export { isAllSelection } from './_tsup-dts-rollup';
180
186
  export { isFragment } from './_tsup-dts-rollup';
181
187
  export { isMark } from './_tsup-dts-rollup';
@@ -39,7 +39,7 @@ import {
39
39
  stateFromJSON,
40
40
  toReversed,
41
41
  union
42
- } from "./chunk-RNBMCB5M.js";
42
+ } from "./chunk-LAFNHJDR.js";
43
43
 
44
44
  // src/commands/add-mark.ts
45
45
  function addMark(options) {
@@ -109,41 +109,8 @@ function expandMarkAfter($pos, predicate) {
109
109
  return $pos.posAtIndex(boundaryIndex) + parent.child(boundaryIndex).nodeSize;
110
110
  }
111
111
 
112
- // src/commands/insert-node.ts
113
- import { insertPoint } from "@prosekit/pm/transform";
114
-
115
- // src/utils/set-selection-around.ts
116
- import { TextSelection as TextSelection2 } from "@prosekit/pm/state";
117
- function setSelectionAround(tr, pos) {
118
- const docSize = tr.doc.content.size;
119
- const $pos = tr.doc.resolve(pos > docSize ? docSize : pos < 0 ? 0 : pos);
120
- const selection = TextSelection2.between($pos, $pos);
121
- tr.setSelection(selection);
122
- }
123
-
124
- // src/commands/insert-node.ts
125
- function insertNode(options) {
126
- return (state, dispatch) => {
127
- var _a;
128
- const node = options.node ? options.node : options.type ? getNodeType(state.schema, options.type).createAndFill(options.attrs) : null;
129
- assert(node, "You must provide either a node or a type");
130
- const insertPos = insertPoint(
131
- state.doc,
132
- (_a = options.pos) != null ? _a : state.selection.anchor,
133
- node.type
134
- );
135
- if (insertPos == null) return false;
136
- if (dispatch) {
137
- const tr = state.tr.insert(insertPos, node);
138
- setSelectionAround(tr, insertPos + node.nodeSize);
139
- dispatch(tr);
140
- }
141
- return true;
142
- };
143
- }
144
-
145
112
  // src/commands/insert-default-block.ts
146
- import { TextSelection as TextSelection3 } from "@prosekit/pm/state";
113
+ import { TextSelection as TextSelection2 } from "@prosekit/pm/state";
147
114
 
148
115
  // src/utils/default-block-at.ts
149
116
  function defaultBlockAt(match) {
@@ -168,7 +135,7 @@ function insertDefaultBlock(options) {
168
135
  const node = type.createAndFill();
169
136
  if (!node) return false;
170
137
  const tr = state.tr.insert(pos, node);
171
- const selection = TextSelection3.findFrom(tr.doc.resolve(pos), 1);
138
+ const selection = TextSelection2.findFrom(tr.doc.resolve(pos), 1);
172
139
  if (!selection) return false;
173
140
  tr.setSelection(selection);
174
141
  dispatch(tr.scrollIntoView());
@@ -177,6 +144,39 @@ function insertDefaultBlock(options) {
177
144
  };
178
145
  }
179
146
 
147
+ // src/commands/insert-node.ts
148
+ import { insertPoint } from "@prosekit/pm/transform";
149
+
150
+ // src/utils/set-selection-around.ts
151
+ import { TextSelection as TextSelection3 } from "@prosekit/pm/state";
152
+ function setSelectionAround(tr, pos) {
153
+ const docSize = tr.doc.content.size;
154
+ const $pos = tr.doc.resolve(pos > docSize ? docSize : pos < 0 ? 0 : pos);
155
+ const selection = TextSelection3.between($pos, $pos);
156
+ tr.setSelection(selection);
157
+ }
158
+
159
+ // src/commands/insert-node.ts
160
+ function insertNode(options) {
161
+ return (state, dispatch) => {
162
+ var _a;
163
+ const node = options.node ? options.node : options.type ? getNodeType(state.schema, options.type).createAndFill(options.attrs) : null;
164
+ assert(node, "You must provide either a node or a type");
165
+ const insertPos = insertPoint(
166
+ state.doc,
167
+ (_a = options.pos) != null ? _a : state.selection.anchor,
168
+ node.type
169
+ );
170
+ if (insertPos == null) return false;
171
+ if (dispatch) {
172
+ const tr = state.tr.insert(insertPos, node);
173
+ setSelectionAround(tr, insertPos + node.nodeSize);
174
+ dispatch(tr);
175
+ }
176
+ return true;
177
+ };
178
+ }
179
+
180
180
  // src/commands/remove-mark.ts
181
181
  function removeMark(options) {
182
182
  return (state, dispatch) => {
@@ -224,7 +224,9 @@ function removeNode(options) {
224
224
  }
225
225
 
226
226
  // src/utils/get-custom-selection.ts
227
- import { TextSelection as TextSelection4 } from "@prosekit/pm/state";
227
+ import {
228
+ TextSelection as TextSelection4
229
+ } from "@prosekit/pm/state";
228
230
  function getCustomSelection(state, from, to) {
229
231
  const pos = from != null ? from : to;
230
232
  if (pos != null) {
@@ -347,6 +349,35 @@ function toggleNode({ type, attrs }) {
347
349
  };
348
350
  }
349
351
 
352
+ // src/commands/toggle-wrap.ts
353
+ import { lift } from "@prosekit/pm/commands";
354
+
355
+ // src/commands/wrap.ts
356
+ import { findWrapping } from "@prosekit/pm/transform";
357
+ function wrap(options) {
358
+ return (state, dispatch) => {
359
+ const { $from, $to } = state.selection;
360
+ const range = $from.blockRange($to);
361
+ if (!range) return false;
362
+ const nodeType = getNodeType(state.schema, options.nodeType || options.type);
363
+ const wrapping = findWrapping(range, nodeType, options.attrs);
364
+ if (!wrapping) return false;
365
+ dispatch == null ? void 0 : dispatch(state.tr.wrap(range, wrapping));
366
+ return true;
367
+ };
368
+ }
369
+
370
+ // src/commands/toggle-wrap.ts
371
+ function toggleWrap(options) {
372
+ const { type, attrs } = options;
373
+ return (state, dispatch) => {
374
+ if (isNodeActive(state, type, attrs)) {
375
+ return lift(state, dispatch);
376
+ }
377
+ return wrap({ type, attrs })(state, dispatch);
378
+ };
379
+ }
380
+
350
381
  // src/commands/unset-block-type.ts
351
382
  import { Fragment, Slice } from "@prosekit/pm/model";
352
383
  import { ReplaceAroundStep } from "@prosekit/pm/transform";
@@ -401,21 +432,6 @@ function unsetMark(options) {
401
432
  };
402
433
  }
403
434
 
404
- // src/commands/wrap.ts
405
- import { findWrapping } from "@prosekit/pm/transform";
406
- function wrap(options) {
407
- return (state, dispatch) => {
408
- const { $from, $to } = state.selection;
409
- const range = $from.blockRange($to);
410
- if (!range) return false;
411
- const nodeType = getNodeType(state.schema, options.nodeType || options.type);
412
- const wrapping = findWrapping(range, nodeType, options.attrs);
413
- if (!wrapping) return false;
414
- dispatch == null ? void 0 : dispatch(state.tr.wrap(range, wrapping));
415
- return true;
416
- };
417
- }
418
-
419
435
  // src/editor/with-priority.ts
420
436
  function withPriority(extension, priority) {
421
437
  const result = union(extension);
@@ -462,6 +478,7 @@ function defineBaseCommands() {
462
478
  insertNode,
463
479
  removeNode,
464
480
  wrap,
481
+ toggleWrap,
465
482
  setBlockType,
466
483
  setNodeAttrs,
467
484
  insertDefaultBlock,
@@ -828,88 +845,100 @@ function combineEventHandlers() {
828
845
  }
829
846
 
830
847
  // src/extensions/events/dom-event.ts
848
+ function defineDomEventFacetPayload(...payloads) {
849
+ return defineFacetPayload(
850
+ domEventFacet,
851
+ payloads
852
+ );
853
+ }
831
854
  function defineDOMEventHandler(event, handler) {
832
- return defineFacetPayload(domEventFacet, [
833
- [event, handler]
855
+ return defineDomEventFacetPayload([
856
+ event,
857
+ handler
834
858
  ]);
835
859
  }
836
- var domEventFacet = defineFacet({
837
- reduce: () => {
838
- const setHandlersMap = {};
839
- const combinedHandlerMap = {};
840
- let plugin;
841
- const update = (payloads) => {
842
- var _a;
843
- let hasNewEvent = false;
844
- for (const [event] of payloads) {
845
- if (!setHandlersMap[event]) {
846
- hasNewEvent = true;
847
- const [setHandlers, combinedHandler] = combineEventHandlers();
848
- setHandlersMap[event] = setHandlers;
849
- const e = (view, eventObject) => {
850
- return combinedHandler(view, eventObject);
851
- };
852
- combinedHandlerMap[event] = e;
860
+ var domEventFacet = defineFacet(
861
+ {
862
+ reduce: () => {
863
+ const setHandlersMap = {};
864
+ const combinedHandlerMap = {};
865
+ let plugin;
866
+ const update = (payloads) => {
867
+ var _a;
868
+ let hasNewEvent = false;
869
+ for (const [event] of payloads) {
870
+ if (!setHandlersMap[event]) {
871
+ hasNewEvent = true;
872
+ const [setHandlers, combinedHandler] = combineEventHandlers();
873
+ setHandlersMap[event] = setHandlers;
874
+ const e = (view, eventObject) => {
875
+ return combinedHandler(view, eventObject);
876
+ };
877
+ combinedHandlerMap[event] = e;
878
+ }
853
879
  }
854
- }
855
- const map = groupEntries(payloads);
856
- for (const [event, setHandlers] of Object.entries(setHandlersMap)) {
857
- const handlers = (_a = map[event]) != null ? _a : [];
858
- setHandlers(handlers);
859
- }
860
- if (hasNewEvent) {
861
- plugin = new ProseMirrorPlugin2({
862
- key: new PluginKey2("prosekit-dom-event-handler"),
863
- props: { handleDOMEvents: combinedHandlerMap }
864
- });
865
- }
866
- };
867
- return function reducer(inputs) {
868
- update(inputs);
869
- return plugin != null ? plugin : [];
870
- };
871
- },
872
- parent: pluginFacet,
873
- singleton: true
874
- });
880
+ const map = groupEntries(payloads);
881
+ for (const [event, setHandlers] of Object.entries(setHandlersMap)) {
882
+ const handlers = (_a = map[event]) != null ? _a : [];
883
+ setHandlers(handlers);
884
+ }
885
+ if (hasNewEvent) {
886
+ plugin = new ProseMirrorPlugin2({
887
+ key: new PluginKey2("prosekit-dom-event-handler"),
888
+ props: { handleDOMEvents: combinedHandlerMap }
889
+ });
890
+ }
891
+ };
892
+ return function reducer(inputs) {
893
+ update(inputs);
894
+ return plugin != null ? plugin : [];
895
+ };
896
+ },
897
+ parent: pluginFacet,
898
+ singleton: true
899
+ }
900
+ );
875
901
 
876
902
  // src/extensions/events/editor-event.ts
877
903
  import { PluginKey as PluginKey3, ProseMirrorPlugin as ProseMirrorPlugin3 } from "@prosekit/pm/state";
904
+ function defineEventFacetPayload(payload) {
905
+ return defineFacetPayload(editorEventFacet, [payload]);
906
+ }
878
907
  function defineKeyDownHandler(handler) {
879
- return defineFacetPayload(editorEventFacet, [["keyDown", handler]]);
908
+ return defineEventFacetPayload(["keyDown", handler]);
880
909
  }
881
910
  function defineKeyPressHandler(handler) {
882
- return defineFacetPayload(editorEventFacet, [["keyPress", handler]]);
911
+ return defineEventFacetPayload(["keyPress", handler]);
883
912
  }
884
913
  function defineTextInputHandler(handler) {
885
- return defineFacetPayload(editorEventFacet, [["textInput", handler]]);
914
+ return defineEventFacetPayload(["textInput", handler]);
886
915
  }
887
916
  function defineClickOnHandler(handler) {
888
- return defineFacetPayload(editorEventFacet, [["clickOn", handler]]);
917
+ return defineEventFacetPayload(["clickOn", handler]);
889
918
  }
890
919
  function defineClickHandler(handler) {
891
- return defineFacetPayload(editorEventFacet, [["click", handler]]);
920
+ return defineEventFacetPayload(["click", handler]);
892
921
  }
893
922
  function defineDoubleClickOnHandler(handler) {
894
- return defineFacetPayload(editorEventFacet, [["doubleClickOn", handler]]);
923
+ return defineEventFacetPayload(["doubleClickOn", handler]);
895
924
  }
896
925
  function defineDoubleClickHandler(handler) {
897
- return defineFacetPayload(editorEventFacet, [["doubleClick", handler]]);
926
+ return defineEventFacetPayload(["doubleClick", handler]);
898
927
  }
899
928
  function defineTripleClickOnHandler(handler) {
900
- return defineFacetPayload(editorEventFacet, [["tripleClickOn", handler]]);
929
+ return defineEventFacetPayload(["tripleClickOn", handler]);
901
930
  }
902
931
  function defineTripleClickHandler(handler) {
903
- return defineFacetPayload(editorEventFacet, [["tripleClick", handler]]);
932
+ return defineEventFacetPayload(["tripleClick", handler]);
904
933
  }
905
934
  function definePasteHandler(handler) {
906
- return defineFacetPayload(editorEventFacet, [["paste", handler]]);
935
+ return defineEventFacetPayload(["paste", handler]);
907
936
  }
908
937
  function defineDropHandler(handler) {
909
- return defineFacetPayload(editorEventFacet, [["drop", handler]]);
938
+ return defineEventFacetPayload(["drop", handler]);
910
939
  }
911
940
  function defineScrollToSelectionHandler(handler) {
912
- return defineFacetPayload(editorEventFacet, [["scrollToSelection", handler]]);
941
+ return defineEventFacetPayload(["scrollToSelection", handler]);
913
942
  }
914
943
  var editorEventFacet = defineFacet({
915
944
  reduce: () => {
@@ -975,10 +1004,10 @@ function setupEditorEventPlugin() {
975
1004
  function defineFocusChangeHandler(handler) {
976
1005
  const handleFocus = () => handler(true);
977
1006
  const handleBlur = () => handler(false);
978
- return defineFacetPayload(domEventFacet, [
1007
+ return defineDomEventFacetPayload(
979
1008
  ["focus", handleFocus],
980
1009
  ["blur", handleBlur]
981
- ]);
1010
+ );
982
1011
  }
983
1012
 
984
1013
  // src/extensions/history.ts
@@ -1088,10 +1117,7 @@ var customBaseKeymap = {
1088
1117
  function defineBaseKeymap(options) {
1089
1118
  var _a;
1090
1119
  const priority = (_a = options == null ? void 0 : options.priority) != null ? _a : 1 /* low */;
1091
- return withPriority(
1092
- defineKeymap(customBaseKeymap),
1093
- priority
1094
- );
1120
+ return withPriority(defineKeymap(customBaseKeymap), priority);
1095
1121
  }
1096
1122
 
1097
1123
  // src/extensions/mark-spec.ts
@@ -1313,7 +1339,7 @@ function isAtBlockStart(state, view) {
1313
1339
 
1314
1340
  // src/utils/is-in-code-block.ts
1315
1341
  function isCodeBlockType(type) {
1316
- return type.spec.code && type.isBlock;
1342
+ return !!(type.spec.code && type.isBlock);
1317
1343
  }
1318
1344
  function isInCodeBlock(selection) {
1319
1345
  return isCodeBlockType(selection.$from.parent.type) || isCodeBlockType(selection.$to.parent.type);
@@ -1389,6 +1415,7 @@ export {
1389
1415
  defineTripleClickOnHandler,
1390
1416
  defineUnmountHandler,
1391
1417
  defineUpdateHandler,
1418
+ editorEventFacet,
1392
1419
  elementFromJSON,
1393
1420
  elementFromNode,
1394
1421
  expandMark,
@@ -1426,9 +1453,11 @@ export {
1426
1453
  removeNode,
1427
1454
  setBlockType,
1428
1455
  setNodeAttrs,
1456
+ setSelectionAround,
1429
1457
  stateFromJSON,
1430
1458
  toggleMark,
1431
1459
  toggleNode,
1460
+ toggleWrap,
1432
1461
  union,
1433
1462
  unsetBlockType,
1434
1463
  unsetMark,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@prosekit/core",
3
3
  "type": "module",
4
- "version": "0.7.10",
4
+ "version": "0.7.12",
5
5
  "private": false,
6
6
  "author": {
7
7
  "name": "ocavue",
@@ -45,14 +45,14 @@
45
45
  "just-map-values": "^3.2.0",
46
46
  "orderedmap": "^2.1.1",
47
47
  "prosemirror-splittable": "^0.1.1",
48
- "type-fest": "^4.25.0",
48
+ "type-fest": "^4.26.1",
49
49
  "@prosekit/pm": "^0.1.8"
50
50
  },
51
51
  "devDependencies": {
52
- "@vitest/browser": "^2.0.5",
53
- "tsup": "^8.2.4",
54
- "typescript": "^5.5.4",
55
- "vitest": "^2.0.5",
52
+ "@vitest/browser": "^2.1.3",
53
+ "tsup": "^8.3.0",
54
+ "typescript": "^5.6.3",
55
+ "vitest": "^2.1.3",
56
56
  "@prosekit/dev": "0.0.0"
57
57
  },
58
58
  "scripts": {