@prosekit/core 0.8.6 → 0.9.0
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.
- package/dist/{editor-M9OimMiI.d.ts → editor-4lgGc3CY.d.ts} +20 -60
- package/dist/editor-4lgGc3CY.d.ts.map +1 -0
- package/dist/{editor-D2iEkgO8.js → editor-DGNUXn-u.js} +99 -116
- package/dist/editor-DGNUXn-u.js.map +1 -0
- package/dist/prosekit-core-test.d.ts +1 -1
- package/dist/prosekit-core-test.js +1 -1
- package/dist/prosekit-core.d.ts +89 -180
- package/dist/prosekit-core.d.ts.map +1 -1
- package/dist/prosekit-core.js +322 -381
- package/dist/prosekit-core.js.map +1 -1
- package/package.json +7 -8
- package/src/commands/select-all.ts +3 -8
- package/src/commands/select-block.spec.ts +83 -0
- package/src/commands/select-block.ts +59 -0
- package/src/commands/wrap.ts +1 -6
- package/src/editor/action.ts +1 -11
- package/src/editor/editor.ts +20 -32
- package/src/extensions/command.ts +4 -0
- package/src/extensions/default-state.spec.ts +0 -4
- package/src/extensions/default-state.ts +4 -24
- package/src/extensions/events/dom-event.ts +1 -4
- package/src/extensions/events/editor-event.ts +1 -1
- package/src/extensions/history.ts +1 -1
- package/src/extensions/keymap-base.spec.ts +98 -0
- package/src/extensions/keymap-base.ts +37 -13
- package/src/extensions/keymap.spec.ts +74 -1
- package/src/extensions/keymap.ts +19 -31
- package/src/extensions/mark-spec.ts +32 -29
- package/src/extensions/node-spec.ts +28 -19
- package/src/extensions/plugin.ts +1 -2
- package/src/facets/command.ts +8 -2
- package/src/facets/state.spec.ts +6 -6
- package/src/facets/state.ts +1 -2
- package/src/index.ts +3 -23
- package/src/types/extension-command.ts +0 -7
- package/src/types/extension.ts +0 -16
- package/src/utils/array-grouping.spec.ts +1 -11
- package/src/utils/array-grouping.ts +1 -14
- package/src/utils/array.ts +0 -4
- package/src/utils/combine-event-handlers.ts +4 -6
- package/src/utils/editor-content.ts +3 -3
- package/src/utils/env.ts +2 -0
- package/src/utils/output-spec.ts +11 -0
- package/src/utils/parse.ts +9 -9
- package/dist/editor-D2iEkgO8.js.map +0 -1
- package/dist/editor-M9OimMiI.d.ts.map +0 -1
- package/src/extensions/doc.ts +0 -31
- package/src/extensions/paragraph.ts +0 -61
- package/src/extensions/text.ts +0 -34
- package/src/types/base-node-view-options.ts +0 -33
- package/src/types/object-entries.ts +0 -13
- package/src/utils/collect-children.ts +0 -21
- package/src/utils/collect-nodes.ts +0 -37
- package/src/utils/deep-equals.spec.ts +0 -26
- package/src/utils/deep-equals.ts +0 -29
- package/src/utils/get-id.spec.ts +0 -14
- package/src/utils/get-id.ts +0 -13
|
@@ -90,14 +90,6 @@ interface MarkAction<Attrs$1 extends AnyAttrs = AnyAttrs> {
|
|
|
90
90
|
*/
|
|
91
91
|
isActive: (attrs?: Attrs$1) => boolean;
|
|
92
92
|
}
|
|
93
|
-
/**
|
|
94
|
-
* @deprecated Use type {@link NodeAction} instead.
|
|
95
|
-
*/
|
|
96
|
-
type NodeBuilder = NodeAction;
|
|
97
|
-
/**
|
|
98
|
-
* @deprecated Use type {@link MarkAction} instead.
|
|
99
|
-
*/
|
|
100
|
-
type MarkBuilder = MarkAction;
|
|
101
93
|
//#endregion
|
|
102
94
|
//#region src/types/extension-command.d.ts
|
|
103
95
|
/**
|
|
@@ -118,12 +110,6 @@ interface CommandAction<Args extends any[] = any[]> {
|
|
|
118
110
|
* can be executed, otherwise `false`.
|
|
119
111
|
*/
|
|
120
112
|
canExec(...args: Args): boolean;
|
|
121
|
-
/**
|
|
122
|
-
* An alias for `canExec`.
|
|
123
|
-
*
|
|
124
|
-
* @deprecated Use `canExec` instead.
|
|
125
|
-
*/
|
|
126
|
-
canApply(...args: Args): boolean;
|
|
127
113
|
}
|
|
128
114
|
type CommandCreator<Args extends any[] = any[]> = (...arg: Args) => Command;
|
|
129
115
|
/**
|
|
@@ -277,10 +263,6 @@ type ExtractNodeActions<E extends Extension> = ToNodeAction<ExtractNodes<E>>;
|
|
|
277
263
|
* @public
|
|
278
264
|
*/
|
|
279
265
|
type ExtractMarkActions<E extends Extension> = ToMarkAction<ExtractMarks<E>>;
|
|
280
|
-
/**
|
|
281
|
-
* @deprecated Use `ExtractCommandActions` instead.
|
|
282
|
-
*/
|
|
283
|
-
type ExtractCommandAppliers<E extends Extension> = ExtractCommandActions<E>;
|
|
284
266
|
/**
|
|
285
267
|
* @internal
|
|
286
268
|
*/
|
|
@@ -289,15 +271,6 @@ type Union<E extends readonly Extension[]> = Extension<{
|
|
|
289
271
|
Marks: ExtractMarks<E[number]>;
|
|
290
272
|
Commands: ExtractCommands<E[number]>;
|
|
291
273
|
}>;
|
|
292
|
-
/**
|
|
293
|
-
* @deprecated Use `Union` instead.
|
|
294
|
-
* @internal
|
|
295
|
-
*/
|
|
296
|
-
type UnionExtension<E extends Extension | readonly Extension[]> = E extends readonly Extension[] ? Extension<{
|
|
297
|
-
Nodes: ExtractNodes<E[number]>;
|
|
298
|
-
Marks: ExtractMarks<E[number]>;
|
|
299
|
-
Commands: ExtractCommands<E[number]>;
|
|
300
|
-
}> : E;
|
|
301
274
|
//#endregion
|
|
302
275
|
//#region src/types/model.d.ts
|
|
303
276
|
/**
|
|
@@ -436,7 +409,7 @@ declare function jsonFromNode(node: ProseMirrorNode): NodeJSON;
|
|
|
436
409
|
*/
|
|
437
410
|
declare function nodeFromJSON(json: NodeJSON, options: JSONParserOptions): ProseMirrorNode;
|
|
438
411
|
/**
|
|
439
|
-
* Parse a
|
|
412
|
+
* Parse a DOM node to a ProseMirror node.
|
|
440
413
|
*
|
|
441
414
|
* @public
|
|
442
415
|
*
|
|
@@ -449,7 +422,7 @@ declare function nodeFromJSON(json: NodeJSON, options: JSONParserOptions): Prose
|
|
|
449
422
|
*/
|
|
450
423
|
declare function nodeFromElement(element: DOMNode, options: DOMParserOptions & JSONParserOptions): ProseMirrorNode;
|
|
451
424
|
/**
|
|
452
|
-
* Serialize a ProseMirror node to
|
|
425
|
+
* Serialize a ProseMirror node to an HTML element.
|
|
453
426
|
*
|
|
454
427
|
* @public
|
|
455
428
|
*
|
|
@@ -462,7 +435,7 @@ declare function nodeFromElement(element: DOMNode, options: DOMParserOptions & J
|
|
|
462
435
|
*/
|
|
463
436
|
declare function elementFromNode(node: ProseMirrorNode, options?: DOMSerializerOptions & DOMDocumentOptions): HTMLElement;
|
|
464
437
|
/**
|
|
465
|
-
* Parse
|
|
438
|
+
* Parse an HTML string to a ProseMirror node.
|
|
466
439
|
*
|
|
467
440
|
* @public
|
|
468
441
|
*
|
|
@@ -475,7 +448,7 @@ declare function elementFromNode(node: ProseMirrorNode, options?: DOMSerializerO
|
|
|
475
448
|
*/
|
|
476
449
|
declare function nodeFromHTML(html: string, options: DOMParserOptions & JSONParserOptions & DOMDocumentOptions): ProseMirrorNode;
|
|
477
450
|
/**
|
|
478
|
-
* Serialize a ProseMirror node to
|
|
451
|
+
* Serialize a ProseMirror node to an HTML string
|
|
479
452
|
*
|
|
480
453
|
* @public
|
|
481
454
|
*
|
|
@@ -488,7 +461,7 @@ declare function nodeFromHTML(html: string, options: DOMParserOptions & JSONPars
|
|
|
488
461
|
*/
|
|
489
462
|
declare function htmlFromNode(node: ProseMirrorNode, options?: DOMSerializerOptions & DOMDocumentOptions): string;
|
|
490
463
|
/**
|
|
491
|
-
* Parse a ProseMirror document JSON object to
|
|
464
|
+
* Parse a ProseMirror document JSON object to an HTML element.
|
|
492
465
|
*
|
|
493
466
|
* @public
|
|
494
467
|
*
|
|
@@ -501,7 +474,7 @@ declare function htmlFromNode(node: ProseMirrorNode, options?: DOMSerializerOpti
|
|
|
501
474
|
*/
|
|
502
475
|
declare function elementFromJSON(json: NodeJSON, options: JSONParserOptions & DOMSerializerOptions & DOMDocumentOptions): HTMLElement;
|
|
503
476
|
/**
|
|
504
|
-
* Parse
|
|
477
|
+
* Parse an HTML string to a ProseMirror document JSON object.
|
|
505
478
|
*
|
|
506
479
|
* @public
|
|
507
480
|
*
|
|
@@ -514,7 +487,7 @@ declare function elementFromJSON(json: NodeJSON, options: JSONParserOptions & DO
|
|
|
514
487
|
*/
|
|
515
488
|
declare function jsonFromHTML(html: string, options: DOMDocumentOptions & DOMParserOptions & JSONParserOptions): NodeJSON;
|
|
516
489
|
/**
|
|
517
|
-
* Parse a ProseMirror document JSON object to
|
|
490
|
+
* Parse a ProseMirror document JSON object to an HTML string.
|
|
518
491
|
*
|
|
519
492
|
* @public
|
|
520
493
|
*
|
|
@@ -538,23 +511,9 @@ interface EditorOptions<E extends Extension> {
|
|
|
538
511
|
extension: E;
|
|
539
512
|
/**
|
|
540
513
|
* The starting document to use when creating the editor. It can be a
|
|
541
|
-
* ProseMirror node JSON object,
|
|
542
|
-
*/
|
|
543
|
-
defaultContent?: NodeJSON | string | HTMLElement;
|
|
544
|
-
/**
|
|
545
|
-
* A JSON object representing the starting document to use when creating the
|
|
546
|
-
* editor.
|
|
547
|
-
*
|
|
548
|
-
* @deprecated Use `defaultContent` instead.
|
|
549
|
-
*/
|
|
550
|
-
defaultDoc?: NodeJSON;
|
|
551
|
-
/**
|
|
552
|
-
* A HTML element or a HTML string representing the starting document to use
|
|
553
|
-
* when creating the editor.
|
|
554
|
-
*
|
|
555
|
-
* @deprecated Use `defaultContent` instead.
|
|
514
|
+
* ProseMirror node JSON object, an HTML string, or a DOM element instance.
|
|
556
515
|
*/
|
|
557
|
-
|
|
516
|
+
defaultContent?: NodeJSON | string | Element;
|
|
558
517
|
/**
|
|
559
518
|
* A JSON object representing the starting selection to use when creating the
|
|
560
519
|
* editor. It's only used when `defaultContent` is also provided.
|
|
@@ -589,13 +548,13 @@ declare class EditorInstance {
|
|
|
589
548
|
private getProp;
|
|
590
549
|
updateState(state: EditorState): void;
|
|
591
550
|
private dispatch;
|
|
592
|
-
setContent(content: NodeJSON | string |
|
|
551
|
+
setContent(content: NodeJSON | string | Element | ProseMirrorNode, selection?: SelectionJSON | Selection | 'start' | 'end'): void;
|
|
593
552
|
/**
|
|
594
553
|
* Return a JSON object representing the editor's current document.
|
|
595
554
|
*/
|
|
596
555
|
getDocJSON: () => NodeJSON;
|
|
597
556
|
/**
|
|
598
|
-
* Return
|
|
557
|
+
* Return an HTML string representing the editor's current document.
|
|
599
558
|
*/
|
|
600
559
|
getDocHTML: (options?: getDocHTMLOptions) => string;
|
|
601
560
|
private updateExtension;
|
|
@@ -641,10 +600,11 @@ declare class Editor<E extends Extension = any> {
|
|
|
641
600
|
*/
|
|
642
601
|
get focused(): boolean;
|
|
643
602
|
/**
|
|
644
|
-
* Mount the editor to the given HTML element.
|
|
645
|
-
*
|
|
603
|
+
* Mount the editor to the given HTML element. Pass `null` or `undefined` to
|
|
604
|
+
* unmount the editor. When an element is passed, this method returns a
|
|
605
|
+
* function to unmount the editor.
|
|
646
606
|
*/
|
|
647
|
-
mount: (place: HTMLElement | null | undefined) => void;
|
|
607
|
+
mount: (place: HTMLElement | null | undefined) => void | VoidFunction;
|
|
648
608
|
/**
|
|
649
609
|
* Unmount the editor. This is equivalent to `mount(null)`.
|
|
650
610
|
*/
|
|
@@ -678,20 +638,20 @@ declare class Editor<E extends Extension = any> {
|
|
|
678
638
|
* - A ProseMirror node instance
|
|
679
639
|
* - A ProseMirror node JSON object
|
|
680
640
|
* - An HTML string
|
|
681
|
-
* -
|
|
641
|
+
* - A DOM element instance
|
|
682
642
|
* @param selection - Optional. Specifies the new selection. It can be one of the following:
|
|
683
643
|
* - A ProseMirror selection instance
|
|
684
644
|
* - A ProseMirror selection JSON object
|
|
685
645
|
* - The string "start" (to set selection at the beginning, default value)
|
|
686
646
|
* - The string "end" (to set selection at the end)
|
|
687
647
|
*/
|
|
688
|
-
setContent: (content: ProseMirrorNode | NodeJSON | string |
|
|
648
|
+
setContent: (content: ProseMirrorNode | NodeJSON | string | Element, selection?: SelectionJSON | Selection | "start" | "end") => void;
|
|
689
649
|
/**
|
|
690
650
|
* Return a JSON object representing the editor's current document.
|
|
691
651
|
*/
|
|
692
652
|
getDocJSON: () => NodeJSON;
|
|
693
653
|
/**
|
|
694
|
-
* Return
|
|
654
|
+
* Return an HTML string representing the editor's current document.
|
|
695
655
|
*/
|
|
696
656
|
getDocHTML: (options?: getDocHTMLOptions) => string;
|
|
697
657
|
/**
|
|
@@ -718,5 +678,5 @@ declare class Editor<E extends Extension = any> {
|
|
|
718
678
|
get marks(): ExtractMarkActions<E>;
|
|
719
679
|
}
|
|
720
680
|
//#endregion
|
|
721
|
-
export {
|
|
722
|
-
//# sourceMappingURL=editor-
|
|
681
|
+
export { ExtractMarks as A, NodeTyping as B, StepJSON as C, ExtractCommandCreators as D, ExtractCommandActions as E, Union as F, CommandCreator as G, MarkTyping as H, SimplifyUnion as I, NodeAction as J, CommandTyping as K, SimplifyDeeper as L, ExtractNodes as M, ExtractTyping as N, ExtractCommands as O, PlainExtension as P, Priority as R, StateJSON as S, ExtensionTyping as T, ToMarkAction as U, ToNodeAction as V, CommandAction as W, AnyAttrs as X, NodeChild as Y, AttrSpec as Z, nodeFromHTML as _, DOMDocumentOptions as a, NodeJSON as b, JSONParserOptions as c, htmlFromJSON as d, htmlFromNode as f, nodeFromElement as g, jsonFromState as h, createEditor as i, ExtractNodeActions as j, ExtractMarkActions as k, elementFromJSON as l, jsonFromNode as m, EditorInstance as n, DOMParserOptions as o, jsonFromHTML as p, MarkAction as q, EditorOptions as r, DOMSerializerOptions as s, Editor as t, elementFromNode as u, nodeFromJSON as v, Extension as w, SelectionJSON as x, stateFromJSON as y, PickSubType as z };
|
|
682
|
+
//# sourceMappingURL=editor-4lgGc3CY.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"editor-4lgGc3CY.d.ts","names":[],"sources":["../src/types/attrs.ts","../src/editor/action.ts","../src/types/extension-command.ts","../src/types/extension-mark.ts","../src/types/extension-node.ts","../src/types/pick-sub-type.ts","../src/types/pick-string-literal.ts","../src/types/priority.ts","../src/types/simplify-deeper.ts","../src/types/simplify-union.ts","../src/types/extension.ts","../src/types/model.ts","../src/types/dom-node.ts","../src/utils/parse.ts","../src/editor/editor.ts"],"sourcesContent":[],"mappings":"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vCmB,CQuCP,CRvCO,EQuCJ,URvCI,CAAA,EQwCnB,WRxCmB,CQwCP,CRxCO,EQwCJ,aRxCI,CAAA,CAAA,GAAA,KAAA;AAGvB;AAOA;AAQA;;;AACiC,KQ8BrB,cAAA,GAAiB,SR9BI,CAAA;EAAE,KAAA,EAAA,KAAA;EAAjB,KAAA,EAAA,KAAA;EAAc,QAAA,EAAA,KAAA;AAGhC,CAAA,CAAA;;;;AACkC,KQmCtB,YRnCsB,CAAA,UQmCC,SRnCD,CAAA,GQmCc,cRnCd,CQoChC,aRpCgC,CQoClB,aRpCkB,CQoCJ,CRpCI,CAAA,CAAA,OAAA,CAAA,CAAA,CAAA;;;;KQ0CtB,2BAA2B,aAAa,wBAC5C,aAAa;;APjFrB;AAOA;AAAmC,KOgFvB,YPhFuB,CAAA,UOgFA,SPhFA,CAAA,GOgFa,cPhFb,COiFjC,aPjFiC,COiFnB,aPjFmB,COiFL,CPjFK,CAAA,CAAA,OAAA,CAAA,CAAA,CAAA;;;;AACjB,KOsFN,gBPtFM,CAAA,UOsFqB,SPtFrB,CAAA,GOsFkC,iBPtFlC,CAAA,MOuFV,YPvFU,COuFG,CPvFH,CAAA,CAAA;;;;KO6FN,0BAA0B,aAAa,cACjD,cAAc;ANtGhB;AAOA;;AACc,KMoGF,sBNpGE,CAAA,UMoG+B,SNpG/B,CAAA,GMoG4C,iBNpG5C,CMqGZ,eNrGY,CMqGI,CNrGJ,CAAA,CAAA;;;;;;KM6GF,gCAAgC,aAAa,gBACvD,gBAAgB;;ALxHlB;;;;AAA4F,KKgIhF,kBLhIgF,CAAA,UKgInD,SLhImD,CAAA,GKgItC,YLhIsC,CKiI1F,YLjI0F,CKiI7E,CLjI6E,CAAA,CAAA;;;;;;ACEhF,KIuIA,kBJvIiB,CAAA,UIuIY,SJvIN,CAAA,GIuImB,YJvIR,CIwI5C,YJxI4C,CIwI/B,CJxI+B,CAAA,CAAA;;;;ACAlC,KG8IA,KH9IQ,CAAA,UAAA,SG8IiB,SH9IjB,EAAA,CAAA,GG8IgC,SH9IhC,CAAA;SG+IX,aAAa;SACb,aAAa;YACV,gBAAgB;AFjJ5B,CAAA,CAAA;;;;;;;;UGAiB,QAAA;EXEL,IAAA,EAAA,MAAQ;EAKR,KAAA,CAAA,EWLF,KXKU,CAAA;;YWLoB;;EVgB5B,IAAA,CAAA,EAAA,MAAS;EAWJ,OAAA,CAAA,EUzBL,QVyBe,EAAA;EAAe,KAAA,CAAA,EUxBhC,MVwBgC,CAAA,MAAA,EAAA,GAAA,CAAA;;;;;;;AAgBrB,UUhCJ,aAAA,CVgCI;EAAK,MAAA,EAAA,MAAA;EAYT,IAAA,EAAA,MAAA;EAAyB,IAAA,EAAA,MAAA;;;;;;;AAgBrB,UUjDJ,SAAA,CViDI;EAAK;;;OU7CnB;ETxBU;AAcjB;AAOA;EAQY,SAAA,ESAC,aTAgB;;;;;;;AAIjB,USIK,QAAA,CTJU;EAAW;;;EACJ,QAAA,EAAA,MAAA;EAAhB,CAAA,CAAA,EAAA,MAAA,CAAA,EAAA,OAAA;;;;KU3CN,OAAA,GAAU,oBAAoB,MAAA,CAAO;;;;UCqBhC,gBAAA,SAAyB;Ebd9B,SAAA,CAAA,EAAQ,OaeC,SbfE;AAKvB;;UaciB,oBAAA;;IZHL,UAAS,EAAA,OYIkB,aAAA,CAAc,UZJF;EAWlC,CAAA;;;AAIP,UYPO,kBAAA,CZOP;EAA2B;;;;;EAYX,QAAA,CAAA,EYbb,QZaa;AAY1B;;AAAqD,UYrBpC,iBAAA,CZqBoC;EAI3C;;;EAKM,MAAA,EY1BN,MZ0BM;;;;;;;AC9DhB;AAcA;AAOA;AAQA;;;;AACmC,iBWuBnB,aAAA,CXvBmB,KAAA,EWuBE,WXvBF,CAAA,EWuBgB,SXvBhB;;;AAGnC;;;;;;;;;;ACrCiB,iBUyED,aAAA,CVxEQ,IAAA,EUyEhB,SVzEgB,EAAA,OAAA,EU0Eb,iBV1Ea,CAAA,EU2ErB,WV3EqB;AAMxB;;;;;;;;;;ACPA;AAOA;AAAmC,iBSuFnB,YAAA,CTvFmB,IAAA,ESuFA,eTvFA,CAAA,ESuFkB,QTvFlB;;;;;;;;;ACTnC;;;;AAA4F,iBQgH5E,YAAA,CRhH4E,IAAA,EQiHpF,QRjHoF,EAAA,OAAA,EQkHjF,iBRlHiF,CAAA,EQmHzF,eRnHyF;;;;;;ACE5F;;;;ACAA;;;iBMmIgB,eAAA,UACL,kBACA,mBAAmB,oBAC3B;ALtIH;;;;;;;;;ACGA;;;AACE,iBIqJc,eAAA,CJrJd,IAAA,EIsJM,eJtJN,EAAA,OAAA,CAAA,EIuJU,oBJvJV,GIuJiC,kBJvJjC,CAAA,EIwJC,WJxJD;;;;;;;;AC4BF;;;;;AAIa,iBG+KG,YAAA,CH/KH,IAAA,EAAA,MAAA,EAAA,OAAA,EGiLF,gBHjLE,GGiLiB,iBHjLjB,GGiLqC,kBHjLrC,CAAA,EGkLV,eHlLU;;;;AAgBb;;;;;;;;;AAEmB,iBGgLH,YAAA,CHhLG,IAAA,EGiLX,eHjLW,EAAA,OAAA,CAAA,EGkLP,oBHlLO,GGkLgB,kBHlLhB,CAAA,EAAA,MAAA;;AA0BnB;;;;;;AAOA;;;;;AAAgD,iBGuLhC,eAAA,CHvLgC,IAAA,EGwLxC,QHxLwC,EAAA,OAAA,EGyLrC,iBHzLqC,GGyLjB,oBHzLiB,GGyLM,kBHzLN,CAAA,EG0L7C,WH1L6C;;AAOhD;;;;;;AAOA;;;;;AAAgE,iBG8LhD,YAAA,CH9LgD,IAAA,EAAA,MAAA,EAAA,OAAA,EGgMrD,kBHhMqD,GGgMhC,gBHhMgC,GGgMb,iBHhMa,CAAA,EGiM7D,QHjM6D;AAOhE;;;;;;AASA;;;;;;AASY,iBGwLI,YAAA,CHxLc,IAAA,EGyLtB,QHzLsB,EAAA,OAAA,EG0LnB,iBH1LmB,GG0LC,oBH1LD,GG0LwB,kBH1LxB,CAAA,EAAA,MAAA;;;;;;AT5GlB,UayCK,abzCO,CAAA,UayCiB,SbzCU,CAAA,CAAA;EAWlC;;;EAIP,SAAA,Ea8BG,Cb9BH;EAA2B;;;;EAYhB,cAAA,CAAA,EawBF,QbxBE,GAAA,MAAA,GawBkB,ObxBlB;EAAK;AAY1B;;;EAIU,gBAAA,CAAA,EacW,abdX;;;;;AAYW,UaQJ,iBAAA,SAA0B,kBbRtB,CAAA;ACvDrB;AAOA;AAQA;AAAwC,iBYoExB,YZpEwB,CAAA,UYoED,SZpEC,CAAA,CAAA,OAAA,EYqE7B,aZrE6B,CYqEf,CZrEe,CAAA,CAAA,EYsErC,MZtEqC,CYsE9B,CZtE8B,CAAA;;;;;;AAI5B,cY6EC,cAAA,CZ7Ec;EAAW,IAAA,EY8E9B,UZ9E8B,GAAA,IAAA;EACxB,MAAA,EY8EJ,MZ9EI;EAAkB,KAAA,EY+EvB,MZ/EuB,CAAA,MAAA,EY+ER,UZ/EQ,CAAA;EAAE,KAAA,EYgFzB,MZhFyB,CAAA,MAAA,EYgFV,UZhFU,CAAA;EAAhB,QAAA,EYiFN,MZjFM,CAAA,MAAA,EYiFS,aZjFT,CAAA;EAAa,QAAA,IAAA;;;yBYuFN;EX7HR,QAAA,EAAA,GAAU,GWqJH,WXpJN;EAMN,QAAA,MAAA;EAAuB,QAAA,OAAA;EACrB,WAAA,CAAA,KAAA,EWyJc,WXzJd,CAAA,EAAA,IAAA;EAAe,QAAA,QAAA;EAAE,UAAA,CAAA,OAAA,EW0KlB,QX1KkB,GAAA,MAAA,GW0KE,OX1KF,GW0KY,eX1KZ,EAAA,SAAA,CAAA,EW2Kf,aX3Ke,GW2KC,SX3KD,GAAA,OAAA,GAAA,KAAA,CAAA,EAAA,IAAA;EAAb;;;oBWiMQ;;AVzM1B;AAOA;EAAmC,UAAA,EAAA,CAAA,OAAA,CAAA,EU0MF,iBV1ME,EAAA,GAAA,MAAA;EACrB,QAAA,eAAA;EAAe,GAAA,CAAA,SAAA,EU8PL,SV9PK,CAAA,EU8PO,YV9PP;EAAE,KAAA,CAAA,KAAA,EUqRT,WVrRS,CAAA,EAAA,IAAA;EAAb,OAAA,CAAA,CAAA,EAAA,IAAA;EAAU,IAAA,OAAA,CAAA,CAAA,EAAA,OAAA;oBU6SD;kCAOc;kCAQA;ETtU7B,IAAA,CAAA,OAAA,ESgVI,OThVO,CAAA,EAAA,OAAA;EAAqB,OAAA,CAAA,OAAA,ESqVzB,OTrVyB,CAAA,EAAA,OAAA;EAAa,aAAA,CAAA,aAAA,GAAA,EAAA,GAAA,GAAA,EAAA,CAAA,CAAA,IAAA,EAAA,MAAA,EAAA,cAAA,ES4VrC,cT5VqC,CS4VtB,IT5VsB,CAAA,CAAA,EAAA,IAAA;EAAc,aAAA,CAAA,IAAA,EAAA,MAAA,CAAA,EAAA,IAAA;;;;;cSqX1D,iBAAiB;;ERnXlB;;;wBQyXY;EPzXZ;;;;ECAA;;;EAAuD,IAAA,IAAA,CAAA,CAAA,EM0YrD,UN1YqD;EAAX;;;gBMiZxC,OAAO,iBAAiB,IAAI,iBAAiB;;AL9Y7D;;EACoD,IAAA,KAAA,CAAA,CAAA,EKoZrC,WLpZqC;EAAlD;;;;;;ACeF;;;EAGY,KAAA,EAAA,CAAA,KAAA,EIkZM,WJlZN,GAAA,IAAA,GAAA,SAAA,EAAA,GAAA,IAAA,GIkZ8C,YJlZ9C;EAEF;;;EAEI,OAAA,EAAA,GAAA,GAAA,IAAA;EAMG;;;EAGJ,KAAA,EAAA,GAAA,GAAA,IAAA;EAAY;;;EAWf,IAAA,EAAA,GAAA,GAAA,IAAA;EAAC;AAMX;;;EAAqE,GAAA,EAAA,CAAA,SAAA,EIsZjD,SJtZiD,EAAA,GIsZrC,YJtZqC;EAAV;;;;;;;;EAGxC,WAAA,EAAA,CAAA,KAAA,EI+ZK,WJ/ZL,EAAA,GAAA,IAAA;EAAf;;;AASJ;AASA;;;;;;;AAOA;;;EACQ,UAAA,EAAA,CAAA,OAAA,EIwZK,eJxZL,GIwZuB,QJxZvB,GAAA,MAAA,GIwZ2C,OJxZ3C,EAAA,SAAA,CAAA,EIyZQ,aJzZR,GIyZwB,SJzZxB,GAAA,OAAA,GAAA,KAAA,EAAA,GAAA,IAAA;EAD4C;;AAOpD;EAAmC,UAAA,EAAA,GAAA,GI2ZT,QJ3ZS;EACL;;;EADkB,UAAA,EAAA,CAAA,OAAA,CAAA,EIkaf,iBJlae,EAAA,GAAA,MAAA;EAAc;AAO9D;;;EACQ,IAAA,EAAA,CAAA,OAAA,EIkaW,OJlaX,EAAA,GAAA,OAAA;EAD4C;;AAOpD;;EACgB,OAAA,EAAA,CAAA,OAAA,EImaM,OJnaN,EAAA,GAAA,OAAA;EAAd;;;EAMU,IAAA,QAAA,CAAA,CAAA,EIoaM,qBJpagB,CIoaM,CJpaN,CAAA;EAAW;;;EAAa,IAAA,KAAA,CAAA,CAAA,EI2a3C,kBJ3a2C,CI2axB,CJ3awB,CAAA;EAAiB;AAS3E;;EACkB,IAAA,KAAA,CAAA,CAAA,EIwaH,kBJxaG,CIwagB,CJxahB,CAAA"}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import { AllSelection, EditorState, NodeSelection, Selection, TextSelection } from "@prosekit/pm/state";
|
|
2
2
|
import { DOMParser, DOMSerializer, Fragment, Mark, ProseMirrorNode, Schema, Slice } from "@prosekit/pm/model";
|
|
3
|
+
import { isDeepEqual, isElementLike, mapValues } from "@ocavue/utils";
|
|
3
4
|
import { EditorView } from "@prosekit/pm/view";
|
|
4
|
-
import { isElementLike } from "@ocavue/utils";
|
|
5
|
-
import OrderedMap from "orderedmap";
|
|
6
|
-
import mapValues from "just-map-values";
|
|
7
5
|
|
|
8
6
|
//#region src/error.ts
|
|
9
7
|
/**
|
|
@@ -66,6 +64,77 @@ function getNodeType(schema, type) {
|
|
|
66
64
|
return type;
|
|
67
65
|
}
|
|
68
66
|
|
|
67
|
+
//#endregion
|
|
68
|
+
//#region src/utils/type-assertion.ts
|
|
69
|
+
/**
|
|
70
|
+
* Checks if the given object is a {@link ProseMirrorNode} instance.
|
|
71
|
+
*/
|
|
72
|
+
function isProseMirrorNode(value) {
|
|
73
|
+
return value instanceof ProseMirrorNode;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Checks if the given object is a {@link Mark} instance.
|
|
77
|
+
*
|
|
78
|
+
* @public
|
|
79
|
+
*/
|
|
80
|
+
function isMark(value) {
|
|
81
|
+
return value instanceof Mark;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Checks if the given object is a {@link Fragment} instance.
|
|
85
|
+
*
|
|
86
|
+
* @public
|
|
87
|
+
*/
|
|
88
|
+
function isFragment(value) {
|
|
89
|
+
return value instanceof Fragment;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Checks if the given object is a {@link Slice} instance.
|
|
93
|
+
*
|
|
94
|
+
* @public
|
|
95
|
+
*/
|
|
96
|
+
function isSlice(value) {
|
|
97
|
+
return value instanceof Slice;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Checks if the given object is a {@link Selection} instance.
|
|
101
|
+
*
|
|
102
|
+
* @public
|
|
103
|
+
*/
|
|
104
|
+
function isSelection(value) {
|
|
105
|
+
return value instanceof Selection;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Checks if the given object is a {@link TextSelection} instance.
|
|
109
|
+
*
|
|
110
|
+
* @public
|
|
111
|
+
*/
|
|
112
|
+
function isTextSelection(value) {
|
|
113
|
+
return value instanceof TextSelection;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Checks if the given object is a {@link NodeSelection} instance.
|
|
117
|
+
*
|
|
118
|
+
* @public
|
|
119
|
+
*/
|
|
120
|
+
function isNodeSelection(value) {
|
|
121
|
+
return value instanceof NodeSelection;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Checks if the given object is a {@link AllSelection} instance.
|
|
125
|
+
*
|
|
126
|
+
* @public
|
|
127
|
+
*/
|
|
128
|
+
function isAllSelection(value) {
|
|
129
|
+
return value instanceof AllSelection;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* @internal
|
|
133
|
+
*/
|
|
134
|
+
function isNotNullish(value) {
|
|
135
|
+
return value != null;
|
|
136
|
+
}
|
|
137
|
+
|
|
69
138
|
//#endregion
|
|
70
139
|
//#region src/utils/attrs-match.ts
|
|
71
140
|
function attrsMatch(nodeOrMark, attrs) {
|
|
@@ -215,80 +284,6 @@ function uniqPush(prev, next) {
|
|
|
215
284
|
function arraySubtract(a, b) {
|
|
216
285
|
return a.filter((x) => !b.includes(x));
|
|
217
286
|
}
|
|
218
|
-
function toReversed(arr) {
|
|
219
|
-
return arr.toReversed?.() ?? [...arr].reverse();
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
//#endregion
|
|
223
|
-
//#region src/utils/type-assertion.ts
|
|
224
|
-
/**
|
|
225
|
-
* Checks if the given object is a {@link ProseMirrorNode} instance.
|
|
226
|
-
*/
|
|
227
|
-
function isProseMirrorNode(value) {
|
|
228
|
-
return value instanceof ProseMirrorNode;
|
|
229
|
-
}
|
|
230
|
-
/**
|
|
231
|
-
* Checks if the given object is a {@link Mark} instance.
|
|
232
|
-
*
|
|
233
|
-
* @public
|
|
234
|
-
*/
|
|
235
|
-
function isMark(value) {
|
|
236
|
-
return value instanceof Mark;
|
|
237
|
-
}
|
|
238
|
-
/**
|
|
239
|
-
* Checks if the given object is a {@link Fragment} instance.
|
|
240
|
-
*
|
|
241
|
-
* @public
|
|
242
|
-
*/
|
|
243
|
-
function isFragment(value) {
|
|
244
|
-
return value instanceof Fragment;
|
|
245
|
-
}
|
|
246
|
-
/**
|
|
247
|
-
* Checks if the given object is a {@link Slice} instance.
|
|
248
|
-
*
|
|
249
|
-
* @public
|
|
250
|
-
*/
|
|
251
|
-
function isSlice(value) {
|
|
252
|
-
return value instanceof Slice;
|
|
253
|
-
}
|
|
254
|
-
/**
|
|
255
|
-
* Checks if the given object is a {@link Selection} instance.
|
|
256
|
-
*
|
|
257
|
-
* @public
|
|
258
|
-
*/
|
|
259
|
-
function isSelection(value) {
|
|
260
|
-
return value instanceof Selection;
|
|
261
|
-
}
|
|
262
|
-
/**
|
|
263
|
-
* Checks if the given object is a {@link TextSelection} instance.
|
|
264
|
-
*
|
|
265
|
-
* @public
|
|
266
|
-
*/
|
|
267
|
-
function isTextSelection(value) {
|
|
268
|
-
return value instanceof TextSelection;
|
|
269
|
-
}
|
|
270
|
-
/**
|
|
271
|
-
* Checks if the given object is a {@link NodeSelection} instance.
|
|
272
|
-
*
|
|
273
|
-
* @public
|
|
274
|
-
*/
|
|
275
|
-
function isNodeSelection(value) {
|
|
276
|
-
return value instanceof NodeSelection;
|
|
277
|
-
}
|
|
278
|
-
/**
|
|
279
|
-
* Checks if the given object is a {@link AllSelection} instance.
|
|
280
|
-
*
|
|
281
|
-
* @public
|
|
282
|
-
*/
|
|
283
|
-
function isAllSelection(value) {
|
|
284
|
-
return value instanceof AllSelection;
|
|
285
|
-
}
|
|
286
|
-
/**
|
|
287
|
-
* @internal
|
|
288
|
-
*/
|
|
289
|
-
function isNotNullish(value) {
|
|
290
|
-
return value != null;
|
|
291
|
-
}
|
|
292
287
|
|
|
293
288
|
//#endregion
|
|
294
289
|
//#region src/facets/facet-node.ts
|
|
@@ -475,7 +470,7 @@ const stateFacet = defineFacet({
|
|
|
475
470
|
let schema = ctx.schema;
|
|
476
471
|
const markSet = /* @__PURE__ */ new Set();
|
|
477
472
|
const pluginSet = /* @__PURE__ */ new Set();
|
|
478
|
-
const reversedCallbacks =
|
|
473
|
+
const reversedCallbacks = [...callbacks].reverse();
|
|
479
474
|
for (const callback of reversedCallbacks) {
|
|
480
475
|
const config = callback(ctx);
|
|
481
476
|
doc ||= config.doc;
|
|
@@ -593,7 +588,7 @@ function nodeFromJSON(json, options) {
|
|
|
593
588
|
return options.schema.nodeFromJSON(json);
|
|
594
589
|
}
|
|
595
590
|
/**
|
|
596
|
-
* Parse a
|
|
591
|
+
* Parse a DOM node to a ProseMirror node.
|
|
597
592
|
*
|
|
598
593
|
* @public
|
|
599
594
|
*
|
|
@@ -605,11 +600,11 @@ function nodeFromJSON(json, options) {
|
|
|
605
600
|
* ```
|
|
606
601
|
*/
|
|
607
602
|
function nodeFromElement(element, options) {
|
|
608
|
-
const { DOMParser: CustomDOMParser, schema
|
|
603
|
+
const { DOMParser: CustomDOMParser, schema, ...parseOptions } = options;
|
|
609
604
|
return (CustomDOMParser || DOMParser).fromSchema(schema).parse(element, parseOptions);
|
|
610
605
|
}
|
|
611
606
|
/**
|
|
612
|
-
* Serialize a ProseMirror node to
|
|
607
|
+
* Serialize a ProseMirror node to an HTML element.
|
|
613
608
|
*
|
|
614
609
|
* @public
|
|
615
610
|
*
|
|
@@ -629,7 +624,7 @@ function elementFromNode(node, options) {
|
|
|
629
624
|
else return serializer.serializeFragment(node.content, { document: document$1 }, document$1.createElement("div"));
|
|
630
625
|
}
|
|
631
626
|
/**
|
|
632
|
-
* Parse
|
|
627
|
+
* Parse an HTML string to an HTML element.
|
|
633
628
|
*
|
|
634
629
|
* @internal
|
|
635
630
|
*/
|
|
@@ -643,7 +638,7 @@ function htmlFromElement(element) {
|
|
|
643
638
|
return element.outerHTML;
|
|
644
639
|
}
|
|
645
640
|
/**
|
|
646
|
-
* Parse
|
|
641
|
+
* Parse an HTML string to a ProseMirror node.
|
|
647
642
|
*
|
|
648
643
|
* @public
|
|
649
644
|
*
|
|
@@ -658,7 +653,7 @@ function nodeFromHTML(html, options) {
|
|
|
658
653
|
return nodeFromElement(elementFromHTML(html, options), options);
|
|
659
654
|
}
|
|
660
655
|
/**
|
|
661
|
-
* Serialize a ProseMirror node to
|
|
656
|
+
* Serialize a ProseMirror node to an HTML string
|
|
662
657
|
*
|
|
663
658
|
* @public
|
|
664
659
|
*
|
|
@@ -673,7 +668,7 @@ function htmlFromNode(node, options) {
|
|
|
673
668
|
return elementFromNode(node, options).outerHTML;
|
|
674
669
|
}
|
|
675
670
|
/**
|
|
676
|
-
* Serialize
|
|
671
|
+
* Serialize an HTML element to a ProseMirror document JSON object.
|
|
677
672
|
*
|
|
678
673
|
* @public
|
|
679
674
|
*
|
|
@@ -688,7 +683,7 @@ function jsonFromElement(element, options) {
|
|
|
688
683
|
return jsonFromNode(nodeFromElement(element, options));
|
|
689
684
|
}
|
|
690
685
|
/**
|
|
691
|
-
* Parse a ProseMirror document JSON object to
|
|
686
|
+
* Parse a ProseMirror document JSON object to an HTML element.
|
|
692
687
|
*
|
|
693
688
|
* @public
|
|
694
689
|
*
|
|
@@ -703,7 +698,7 @@ function elementFromJSON(json, options) {
|
|
|
703
698
|
return elementFromNode(nodeFromJSON(json, options), options);
|
|
704
699
|
}
|
|
705
700
|
/**
|
|
706
|
-
* Parse
|
|
701
|
+
* Parse an HTML string to a ProseMirror document JSON object.
|
|
707
702
|
*
|
|
708
703
|
* @public
|
|
709
704
|
*
|
|
@@ -718,7 +713,7 @@ function jsonFromHTML(html, options) {
|
|
|
718
713
|
return jsonFromElement(elementFromHTML(html, options), options);
|
|
719
714
|
}
|
|
720
715
|
/**
|
|
721
|
-
* Parse a ProseMirror document JSON object to
|
|
716
|
+
* Parse a ProseMirror document JSON object to an HTML string.
|
|
722
717
|
*
|
|
723
718
|
* @public
|
|
724
719
|
*
|
|
@@ -769,12 +764,11 @@ function getEditorSelection(doc, selection) {
|
|
|
769
764
|
*
|
|
770
765
|
* @public
|
|
771
766
|
*/
|
|
772
|
-
function defineDefaultState({ defaultSelection, defaultContent
|
|
773
|
-
const defaultDocContent = defaultContent || defaultDoc || defaultHTML;
|
|
767
|
+
function defineDefaultState({ defaultSelection, defaultContent }) {
|
|
774
768
|
return defineFacetPayload(stateFacet, [({ schema }) => {
|
|
775
769
|
const config = {};
|
|
776
|
-
if (
|
|
777
|
-
const json = getEditorContentJSON(schema,
|
|
770
|
+
if (defaultContent) {
|
|
771
|
+
const json = getEditorContentJSON(schema, defaultContent);
|
|
778
772
|
config.doc = schema.nodeFromJSON(json);
|
|
779
773
|
if (defaultSelection) config.selection = Selection.fromJSON(config.doc, defaultSelection);
|
|
780
774
|
}
|
|
@@ -782,21 +776,6 @@ function defineDefaultState({ defaultSelection, defaultContent, defaultDoc, defa
|
|
|
782
776
|
}]);
|
|
783
777
|
}
|
|
784
778
|
|
|
785
|
-
//#endregion
|
|
786
|
-
//#region src/utils/deep-equals.ts
|
|
787
|
-
function deepEquals(a, b) {
|
|
788
|
-
if (a === b) return true;
|
|
789
|
-
if (!a || !b) return false;
|
|
790
|
-
if (Array.isArray(a) && Array.isArray(b)) return a.length === b.length && a.every((x, i) => deepEquals(x, b[i]));
|
|
791
|
-
if (a instanceof OrderedMap && b instanceof OrderedMap) return a.size === b.size && deepEquals(a.toObject(), b.toObject());
|
|
792
|
-
if (typeof a === "object" && typeof b === "object") {
|
|
793
|
-
const aKeys = Object.keys(a);
|
|
794
|
-
const bKeys = Object.keys(b);
|
|
795
|
-
return aKeys.length === bKeys.length && aKeys.every((key) => deepEquals(a[key], b[key]));
|
|
796
|
-
}
|
|
797
|
-
return false;
|
|
798
|
-
}
|
|
799
|
-
|
|
800
779
|
//#endregion
|
|
801
780
|
//#region src/utils/is-subset.ts
|
|
802
781
|
/**
|
|
@@ -958,7 +937,7 @@ function union(...exts) {
|
|
|
958
937
|
* @internal
|
|
959
938
|
*/
|
|
960
939
|
function setupEditorExtension(options) {
|
|
961
|
-
if (options.defaultContent
|
|
940
|
+
if (options.defaultContent) return union(options.extension, defineDefaultState(options));
|
|
962
941
|
return options.extension;
|
|
963
942
|
}
|
|
964
943
|
/**
|
|
@@ -1045,11 +1024,11 @@ var EditorInstance = class {
|
|
|
1045
1024
|
this.tree = add ? unionFacetNode(this.tree, tree) : subtractFacetNode(this.tree, tree);
|
|
1046
1025
|
const newPayload = this.tree.getRootOutput();
|
|
1047
1026
|
const newPlugins = [...newPayload?.state?.plugins ?? []];
|
|
1048
|
-
if (!
|
|
1027
|
+
if (!isDeepEqual(oldPlugins, newPlugins)) {
|
|
1049
1028
|
const state = view.state.reconfigure({ plugins: newPlugins });
|
|
1050
1029
|
view.updateState(state);
|
|
1051
1030
|
}
|
|
1052
|
-
if (newPayload?.commands && !
|
|
1031
|
+
if (newPayload?.commands && !isDeepEqual(oldPayload?.commands, newPayload?.commands)) {
|
|
1053
1032
|
const commands = newPayload.commands;
|
|
1054
1033
|
const names = Object.keys(commands);
|
|
1055
1034
|
for (const name of names) this.defineCommand(name, commands[name]);
|
|
@@ -1072,7 +1051,10 @@ var EditorInstance = class {
|
|
|
1072
1051
|
return () => this.updateExtension(extension, false);
|
|
1073
1052
|
}
|
|
1074
1053
|
mount(place) {
|
|
1075
|
-
if (this.view)
|
|
1054
|
+
if (this.view) {
|
|
1055
|
+
if (this.view.dom === place) return;
|
|
1056
|
+
throw new ProseKitError("Editor is already mounted");
|
|
1057
|
+
}
|
|
1076
1058
|
this.view = new EditorView({ mount: place }, this.directEditorProps);
|
|
1077
1059
|
this.afterMounted.forEach((callback) => callback());
|
|
1078
1060
|
}
|
|
@@ -1119,7 +1101,6 @@ var EditorInstance = class {
|
|
|
1119
1101
|
const command = commandCreator(...args);
|
|
1120
1102
|
return this.canExec(command);
|
|
1121
1103
|
};
|
|
1122
|
-
action.canApply = canExec;
|
|
1123
1104
|
action.canExec = canExec;
|
|
1124
1105
|
this.commands[name] = action;
|
|
1125
1106
|
}
|
|
@@ -1136,8 +1117,10 @@ var Editor = class {
|
|
|
1136
1117
|
*/
|
|
1137
1118
|
constructor(instance) {
|
|
1138
1119
|
this.mount = (place) => {
|
|
1139
|
-
if (place)
|
|
1140
|
-
|
|
1120
|
+
if (place) {
|
|
1121
|
+
this.instance.mount(place);
|
|
1122
|
+
return this.unmount;
|
|
1123
|
+
} else this.instance.unmount();
|
|
1141
1124
|
};
|
|
1142
1125
|
this.unmount = () => {
|
|
1143
1126
|
this.instance.unmount();
|
|
@@ -1223,5 +1206,5 @@ var Editor = class {
|
|
|
1223
1206
|
};
|
|
1224
1207
|
|
|
1225
1208
|
//#endregion
|
|
1226
|
-
export {
|
|
1227
|
-
//# sourceMappingURL=editor-
|
|
1209
|
+
export { isFragment as A, getMarkType as B, defineFacetPayload as C, Priority as D, defineFacet as E, isSelection as F, ProseKitError as H, isSlice as I, isTextSelection as L, isNodeSelection as M, isNotNullish as N, isNodeActive as O, isProseMirrorNode as P, getNodeType as R, stateFacet as S, rootFacet as T, EditorNotFoundError as V, jsonFromState as _, union as a, nodeFromJSON as b, isMarkActive as c, elementFromJSON as d, elementFromNode as f, jsonFromNode as g, jsonFromHTML as h, setupEditorExtension as i, isMark as j, isAllSelection as k, isMarkAbsent as l, htmlFromNode as m, EditorInstance as n, createMarkActions as o, htmlFromJSON as p, createEditor as r, createNodeActions as s, Editor as t, defineDefaultState as u, nodeFromElement as v, schemaFacet as w, stateFromJSON as x, nodeFromHTML as y, assert as z };
|
|
1210
|
+
//# sourceMappingURL=editor-DGNUXn-u.js.map
|