@prosekit/core 0.3.2 → 0.4.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/_tsup-dts-rollup.d.ts +41 -23
- package/dist/prosekit-core.d.ts +4 -0
- package/dist/prosekit-core.js +32 -25
- package/package.json +1 -1
@@ -6,6 +6,8 @@ import type { ConditionalExcept } from 'type-fest';
|
|
6
6
|
import type { ContentMatch } from '@prosekit/pm/model';
|
7
7
|
import type { DirectEditorProps } from '@prosekit/pm/view';
|
8
8
|
import type { DOMEventMap } from '@prosekit/pm/view';
|
9
|
+
import { DOMParser as DOMParser_2 } from '@prosekit/pm/model';
|
10
|
+
import { DOMSerializer } from '@prosekit/pm/model';
|
9
11
|
import { EditorState } from '@prosekit/pm/state';
|
10
12
|
import type { EditorStateConfig } from '@prosekit/pm/state';
|
11
13
|
import { EditorView } from '@prosekit/pm/view';
|
@@ -605,6 +607,13 @@ export declare class DOMDocumentNotFoundError extends ProseKitError {
|
|
605
607
|
constructor();
|
606
608
|
}
|
607
609
|
|
610
|
+
/** @public */
|
611
|
+
declare type DOMDocumentOptions = {
|
612
|
+
document?: Document;
|
613
|
+
};
|
614
|
+
export { DOMDocumentOptions }
|
615
|
+
export { DOMDocumentOptions as DOMDocumentOptions_alias_1 }
|
616
|
+
|
608
617
|
/**
|
609
618
|
* @internal
|
610
619
|
*/
|
@@ -629,6 +638,20 @@ export declare type DOMEventPayload = [event: string, handler: DOMEventHandler];
|
|
629
638
|
|
630
639
|
export declare type DOMNode = InstanceType<typeof window.Node>;
|
631
640
|
|
641
|
+
/** @public */
|
642
|
+
declare type DOMParserOptions = {
|
643
|
+
DOMParser?: typeof DOMParser_2;
|
644
|
+
};
|
645
|
+
export { DOMParserOptions }
|
646
|
+
export { DOMParserOptions as DOMParserOptions_alias_1 }
|
647
|
+
|
648
|
+
/** @public */
|
649
|
+
declare type DOMSerializerOptions = {
|
650
|
+
DOMSerializer?: typeof DOMSerializer;
|
651
|
+
};
|
652
|
+
export { DOMSerializerOptions }
|
653
|
+
export { DOMSerializerOptions as DOMSerializerOptions_alias_1 }
|
654
|
+
|
632
655
|
declare type DoubleClickHandler = (view: EditorView, pos: number, event: MouseEvent) => boolean | void;
|
633
656
|
export { DoubleClickHandler }
|
634
657
|
export { DoubleClickHandler as DoubleClickHandler_alias_1 }
|
@@ -735,18 +758,14 @@ export { EditorOptions as EditorOptions_alias_1 }
|
|
735
758
|
*
|
736
759
|
* @internal
|
737
760
|
*/
|
738
|
-
export declare function elementFromHTML(html: string, options?:
|
739
|
-
document?: Document;
|
740
|
-
}): HTMLElement;
|
761
|
+
export declare function elementFromHTML(html: string, options?: DOMDocumentOptions): HTMLElement;
|
741
762
|
|
742
763
|
/**
|
743
764
|
* Parse a ProseMirror document JSON object to a HTML element.
|
744
765
|
*
|
745
766
|
* @public
|
746
767
|
*/
|
747
|
-
declare function elementFromJSON(json: NodeJSON,
|
748
|
-
document?: Document;
|
749
|
-
}): HTMLElement;
|
768
|
+
declare function elementFromJSON(json: NodeJSON, options: JSONParserOptions & DOMSerializerOptions & DOMDocumentOptions): HTMLElement;
|
750
769
|
export { elementFromJSON }
|
751
770
|
export { elementFromJSON as elementFromJSON_alias_1 }
|
752
771
|
|
@@ -755,9 +774,7 @@ export { elementFromJSON as elementFromJSON_alias_1 }
|
|
755
774
|
*
|
756
775
|
* @public
|
757
776
|
*/
|
758
|
-
declare function elementFromNode(node: ProseMirrorNode, options?:
|
759
|
-
document?: Document;
|
760
|
-
}): HTMLElement;
|
777
|
+
declare function elementFromNode(node: ProseMirrorNode, options?: DOMSerializerOptions & DOMDocumentOptions): HTMLElement;
|
761
778
|
export { elementFromNode }
|
762
779
|
export { elementFromNode as elementFromNode_alias_1 }
|
763
780
|
|
@@ -993,9 +1010,7 @@ export declare function htmlFromElement(element: HTMLElement): string;
|
|
993
1010
|
*
|
994
1011
|
* @public
|
995
1012
|
*/
|
996
|
-
declare function htmlFromJSON(json: NodeJSON,
|
997
|
-
document?: Document;
|
998
|
-
}): string;
|
1013
|
+
declare function htmlFromJSON(json: NodeJSON, options: JSONParserOptions & DOMSerializerOptions & DOMDocumentOptions): string;
|
999
1014
|
export { htmlFromJSON }
|
1000
1015
|
export { htmlFromJSON as htmlFromJSON_alias_1 }
|
1001
1016
|
|
@@ -1004,7 +1019,7 @@ export { htmlFromJSON as htmlFromJSON_alias_1 }
|
|
1004
1019
|
*
|
1005
1020
|
* @public
|
1006
1021
|
*/
|
1007
|
-
declare function htmlFromNode(node: ProseMirrorNode): string;
|
1022
|
+
declare function htmlFromNode(node: ProseMirrorNode, options?: DOMSerializerOptions & DOMDocumentOptions): string;
|
1008
1023
|
export { htmlFromNode }
|
1009
1024
|
export { htmlFromNode as htmlFromNode_alias_1 }
|
1010
1025
|
|
@@ -1106,16 +1121,14 @@ export { isTextSelection as isTextSelection_alias_1 }
|
|
1106
1121
|
*
|
1107
1122
|
* @public
|
1108
1123
|
*/
|
1109
|
-
export declare function jsonFromElement(element: DOMNode,
|
1124
|
+
export declare function jsonFromElement(element: DOMNode, options: DOMParserOptions & JSONParserOptions): NodeJSON;
|
1110
1125
|
|
1111
1126
|
/**
|
1112
1127
|
* Parse a HTML string to a ProseMirror document JSON object.
|
1113
1128
|
*
|
1114
1129
|
* @public
|
1115
1130
|
*/
|
1116
|
-
declare function jsonFromHTML(html: string,
|
1117
|
-
document?: Document;
|
1118
|
-
}): NodeJSON;
|
1131
|
+
declare function jsonFromHTML(html: string, options: DOMDocumentOptions & DOMParserOptions & JSONParserOptions): NodeJSON;
|
1119
1132
|
export { jsonFromHTML }
|
1120
1133
|
export { jsonFromHTML as jsonFromHTML_alias_1 }
|
1121
1134
|
|
@@ -1137,6 +1150,13 @@ declare function jsonFromState(state: EditorState): StateJSON;
|
|
1137
1150
|
export { jsonFromState }
|
1138
1151
|
export { jsonFromState as jsonFromState_alias_1 }
|
1139
1152
|
|
1153
|
+
/** @public */
|
1154
|
+
declare type JSONParserOptions = {
|
1155
|
+
schema: Schema;
|
1156
|
+
};
|
1157
|
+
export { JSONParserOptions }
|
1158
|
+
export { JSONParserOptions as JSONParserOptions_alias_1 }
|
1159
|
+
|
1140
1160
|
declare type KeyDownHandler = (view: EditorView, event: KeyboardEvent) => boolean | void;
|
1141
1161
|
export { KeyDownHandler }
|
1142
1162
|
export { KeyDownHandler as KeyDownHandler_alias_1 }
|
@@ -1269,7 +1289,7 @@ export declare type NodeContent = ProseMirrorNode | ProseMirrorFragment | NodeCo
|
|
1269
1289
|
*
|
1270
1290
|
* @public
|
1271
1291
|
*/
|
1272
|
-
declare function nodeFromElement(element: DOMNode,
|
1292
|
+
declare function nodeFromElement(element: DOMNode, options: DOMParserOptions & JSONParserOptions): ProseMirrorNode;
|
1273
1293
|
export { nodeFromElement }
|
1274
1294
|
export { nodeFromElement as nodeFromElement_alias_1 }
|
1275
1295
|
|
@@ -1278,9 +1298,7 @@ export { nodeFromElement as nodeFromElement_alias_1 }
|
|
1278
1298
|
*
|
1279
1299
|
* @public
|
1280
1300
|
*/
|
1281
|
-
declare function nodeFromHTML(html: string,
|
1282
|
-
document?: Document;
|
1283
|
-
}): ProseMirrorNode;
|
1301
|
+
declare function nodeFromHTML(html: string, options: DOMParserOptions & JSONParserOptions & DOMDocumentOptions): ProseMirrorNode;
|
1284
1302
|
export { nodeFromHTML }
|
1285
1303
|
export { nodeFromHTML as nodeFromHTML_alias_1 }
|
1286
1304
|
|
@@ -1289,7 +1307,7 @@ export { nodeFromHTML as nodeFromHTML_alias_1 }
|
|
1289
1307
|
*
|
1290
1308
|
* @public
|
1291
1309
|
*/
|
1292
|
-
declare function nodeFromJSON(json: NodeJSON,
|
1310
|
+
declare function nodeFromJSON(json: NodeJSON, options: JSONParserOptions): ProseMirrorNode;
|
1293
1311
|
export { nodeFromJSON }
|
1294
1312
|
export { nodeFromJSON as nodeFromJSON_alias_1 }
|
1295
1313
|
|
@@ -1541,7 +1559,7 @@ export declare const stateFacet: Facet<StatePayload, StatePayload>;
|
|
1541
1559
|
*
|
1542
1560
|
* @public
|
1543
1561
|
*/
|
1544
|
-
declare function stateFromJSON(json: StateJSON,
|
1562
|
+
declare function stateFromJSON(json: StateJSON, options: JSONParserOptions): EditorState;
|
1545
1563
|
export { stateFromJSON }
|
1546
1564
|
export { stateFromJSON as stateFromJSON_alias_1 }
|
1547
1565
|
|
package/dist/prosekit-core.d.ts
CHANGED
@@ -110,6 +110,10 @@ export { nodeFromElement } from './_tsup-dts-rollup';
|
|
110
110
|
export { nodeFromHTML } from './_tsup-dts-rollup';
|
111
111
|
export { nodeFromJSON } from './_tsup-dts-rollup';
|
112
112
|
export { stateFromJSON } from './_tsup-dts-rollup';
|
113
|
+
export { DOMDocumentOptions } from './_tsup-dts-rollup';
|
114
|
+
export { DOMParserOptions } from './_tsup-dts-rollup';
|
115
|
+
export { DOMSerializerOptions } from './_tsup-dts-rollup';
|
116
|
+
export { JSONParserOptions } from './_tsup-dts-rollup';
|
113
117
|
export { isAllSelection } from './_tsup-dts-rollup';
|
114
118
|
export { isMark } from './_tsup-dts-rollup';
|
115
119
|
export { isNodeSelection } from './_tsup-dts-rollup';
|
package/dist/prosekit-core.js
CHANGED
@@ -485,27 +485,34 @@ function getBrowserWindow(options) {
|
|
485
485
|
function jsonFromState(state) {
|
486
486
|
return state.toJSON();
|
487
487
|
}
|
488
|
-
function stateFromJSON(json,
|
489
|
-
return EditorState.fromJSON({ schema }, json);
|
488
|
+
function stateFromJSON(json, options) {
|
489
|
+
return EditorState.fromJSON({ schema: options.schema }, json);
|
490
490
|
}
|
491
491
|
function jsonFromNode(node) {
|
492
492
|
return node.toJSON();
|
493
493
|
}
|
494
|
-
function nodeFromJSON(json,
|
495
|
-
return schema.nodeFromJSON(json);
|
494
|
+
function nodeFromJSON(json, options) {
|
495
|
+
return options.schema.nodeFromJSON(json);
|
496
496
|
}
|
497
|
-
function nodeFromElement(element,
|
498
|
-
|
497
|
+
function nodeFromElement(element, options) {
|
498
|
+
const Parser = options.DOMParser || DOMParser;
|
499
|
+
const schema = options.schema;
|
500
|
+
return Parser.fromSchema(schema).parse(element);
|
499
501
|
}
|
500
502
|
function elementFromNode(node, options) {
|
503
|
+
const Serializer = (options == null ? void 0 : options.DOMSerializer) || DOMSerializer;
|
504
|
+
const document2 = getBrowserDocument(options);
|
501
505
|
const schema = node.type.schema;
|
502
|
-
const serializer =
|
506
|
+
const serializer = Serializer.fromSchema(schema);
|
503
507
|
if (schema.topNodeType !== node.type) {
|
504
|
-
return serializer.serializeNode(node,
|
508
|
+
return serializer.serializeNode(node, { document: document2 });
|
509
|
+
} else {
|
510
|
+
return serializer.serializeFragment(
|
511
|
+
node.content,
|
512
|
+
{ document: document2 },
|
513
|
+
document2.createElement("div")
|
514
|
+
);
|
505
515
|
}
|
506
|
-
const doc = getBrowserDocument();
|
507
|
-
const div = doc.createElement("div");
|
508
|
-
return serializer.serializeFragment(node.content, options, div);
|
509
516
|
}
|
510
517
|
function elementFromHTML(html, options) {
|
511
518
|
const win = getBrowserWindow(options);
|
@@ -515,23 +522,23 @@ function elementFromHTML(html, options) {
|
|
515
522
|
function htmlFromElement(element) {
|
516
523
|
return element.outerHTML;
|
517
524
|
}
|
518
|
-
function nodeFromHTML(html,
|
519
|
-
return nodeFromElement(elementFromHTML(html, options),
|
525
|
+
function nodeFromHTML(html, options) {
|
526
|
+
return nodeFromElement(elementFromHTML(html, options), options);
|
520
527
|
}
|
521
|
-
function htmlFromNode(node) {
|
522
|
-
return elementFromNode(node).outerHTML;
|
528
|
+
function htmlFromNode(node, options) {
|
529
|
+
return elementFromNode(node, options).outerHTML;
|
523
530
|
}
|
524
|
-
function jsonFromElement(element,
|
525
|
-
return jsonFromNode(nodeFromElement(element,
|
531
|
+
function jsonFromElement(element, options) {
|
532
|
+
return jsonFromNode(nodeFromElement(element, options));
|
526
533
|
}
|
527
|
-
function elementFromJSON(json,
|
528
|
-
return elementFromNode(nodeFromJSON(json,
|
534
|
+
function elementFromJSON(json, options) {
|
535
|
+
return elementFromNode(nodeFromJSON(json, options), options);
|
529
536
|
}
|
530
|
-
function jsonFromHTML(html,
|
531
|
-
return jsonFromElement(elementFromHTML(html, options),
|
537
|
+
function jsonFromHTML(html, options) {
|
538
|
+
return jsonFromElement(elementFromHTML(html, options), options);
|
532
539
|
}
|
533
|
-
function htmlFromJSON(json,
|
534
|
-
return htmlFromElement(elementFromJSON(json,
|
540
|
+
function htmlFromJSON(json, options) {
|
541
|
+
return htmlFromElement(elementFromJSON(json, options));
|
535
542
|
}
|
536
543
|
|
537
544
|
// src/extensions/default-state.ts
|
@@ -550,9 +557,9 @@ function defineDefaultState({
|
|
550
557
|
const config = {};
|
551
558
|
if (defaultHTML) {
|
552
559
|
if (typeof defaultHTML === "string") {
|
553
|
-
defaultDoc = jsonFromHTML(defaultHTML, schema);
|
560
|
+
defaultDoc = jsonFromHTML(defaultHTML, { schema });
|
554
561
|
} else {
|
555
|
-
defaultDoc = jsonFromElement(defaultHTML, schema);
|
562
|
+
defaultDoc = jsonFromElement(defaultHTML, { schema });
|
556
563
|
}
|
557
564
|
}
|
558
565
|
if (defaultDoc) {
|