@tiptap/core 2.10.3 → 2.11.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/PasteRule.d.ts.map +1 -1
- package/dist/commands/focus.d.ts.map +1 -1
- package/dist/commands/selectAll.d.ts.map +1 -1
- package/dist/helpers/index.d.ts +1 -0
- package/dist/helpers/index.d.ts.map +1 -1
- package/dist/helpers/rewriteUnknownContent.d.ts +46 -0
- package/dist/helpers/rewriteUnknownContent.d.ts.map +1 -0
- package/dist/index.cjs +122 -25
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +123 -27
- package/dist/index.js.map +1 -1
- package/dist/index.umd.js +122 -25
- package/dist/index.umd.js.map +1 -1
- package/package.json +2 -2
- package/src/NodeView.ts +2 -2
- package/src/PasteRule.ts +29 -0
- package/src/commands/focus.ts +1 -6
- package/src/commands/selectAll.ts +10 -5
- package/src/helpers/index.ts +1 -0
- package/src/helpers/rewriteUnknownContent.ts +148 -0
package/dist/PasteRule.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PasteRule.d.ts","sourceRoot":"","sources":["../src/PasteRule.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAGtD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAGpC,OAAO,EACL,WAAW,EACX,eAAe,EACf,wBAAwB,EACxB,KAAK,EACL,cAAc,EACf,MAAM,YAAY,CAAA;AAInB,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,eAAe,GACvB,MAAM,GACN,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,cAAc,GAAG,IAAI,KAAK,cAAc,EAAE,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;AAE3F;;;GAGG;AACH,qBAAa,SAAS;IACpB,IAAI,EAAE,eAAe,CAAA;IAErB,OAAO,EAAE,CAAC,KAAK,EAAE;QACf,KAAK,EAAE,WAAW,CAAC;QACnB,KAAK,EAAE,KAAK,CAAC;QACb,KAAK,EAAE,wBAAwB,CAAC;QAChC,QAAQ,EAAE,cAAc,CAAC;QACzB,KAAK,EAAE,MAAM,eAAe,CAAC;QAC7B,GAAG,EAAE,MAAM,WAAW,CAAC;QACvB,UAAU,EAAE,cAAc,GAAG,IAAI,CAAC;QAClC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;KAC7B,KAAK,IAAI,GAAG,IAAI,CAAA;gBAEL,MAAM,EAAE;QAClB,IAAI,EAAE,eAAe,CAAC;QACtB,OAAO,EAAE,CAAC,KAAK,EAAE;YACf,GAAG,EAAE,MAAM,WAAW,CAAC;YACvB,KAAK,EAAE,MAAM,eAAe,CAAC;YAC7B,QAAQ,EAAE,cAAc,CAAC;YACzB,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;YAC5B,KAAK,EAAE,wBAAwB,CAAC;YAChC,UAAU,EAAE,cAAc,GAAG,IAAI,CAAC;YAClC,KAAK,EAAE,KAAK,CAAC;YACb,KAAK,EAAE,WAAW,CAAC;SACpB,KAAK,IAAI,GAAG,IAAI,CAAC;KACnB;CAIF;
|
|
1
|
+
{"version":3,"file":"PasteRule.d.ts","sourceRoot":"","sources":["../src/PasteRule.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAGtD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAGpC,OAAO,EACL,WAAW,EACX,eAAe,EACf,wBAAwB,EACxB,KAAK,EACL,cAAc,EACf,MAAM,YAAY,CAAA;AAInB,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,eAAe,GACvB,MAAM,GACN,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,cAAc,GAAG,IAAI,KAAK,cAAc,EAAE,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;AAE3F;;;GAGG;AACH,qBAAa,SAAS;IACpB,IAAI,EAAE,eAAe,CAAA;IAErB,OAAO,EAAE,CAAC,KAAK,EAAE;QACf,KAAK,EAAE,WAAW,CAAC;QACnB,KAAK,EAAE,KAAK,CAAC;QACb,KAAK,EAAE,wBAAwB,CAAC;QAChC,QAAQ,EAAE,cAAc,CAAC;QACzB,KAAK,EAAE,MAAM,eAAe,CAAC;QAC7B,GAAG,EAAE,MAAM,WAAW,CAAC;QACvB,UAAU,EAAE,cAAc,GAAG,IAAI,CAAC;QAClC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;KAC7B,KAAK,IAAI,GAAG,IAAI,CAAA;gBAEL,MAAM,EAAE;QAClB,IAAI,EAAE,eAAe,CAAC;QACtB,OAAO,EAAE,CAAC,KAAK,EAAE;YACf,GAAG,EAAE,MAAM,WAAW,CAAC;YACvB,KAAK,EAAE,MAAM,eAAe,CAAC;YAC7B,QAAQ,EAAE,cAAc,CAAC;YACzB,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;YAC5B,KAAK,EAAE,wBAAwB,CAAC;YAChC,UAAU,EAAE,cAAc,GAAG,IAAI,CAAC;YAClC,KAAK,EAAE,KAAK,CAAC;YACb,KAAK,EAAE,WAAW,CAAC;SACpB,KAAK,IAAI,GAAG,IAAI,CAAC;KACnB;CAIF;AAkHD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,SAAS,EAAE,CAAA;CAAE,GAAG,MAAM,EAAE,CAuLxF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"focus.d.ts","sourceRoot":"","sources":["../../src/commands/focus.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"focus.d.ts","sourceRoot":"","sources":["../../src/commands/focus.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAExD,OAAO,QAAQ,cAAc,CAAC;IAC5B,UAAU,QAAQ,CAAC,UAAU;QAC3B,KAAK,EAAE;YACL;;;;;;eAMG;YACH,KAAK,EAAE;YACL;;eAEG;YACH,QAAQ,CAAC,EAAE,aAAa;YAExB;;;eAGG;YACH,OAAO,CAAC,EAAE;gBACR,cAAc,CAAC,EAAE,OAAO,CAAC;aAC1B,KACE,UAAU,CAAC;SACjB,CAAA;KACF;CACF;AAED,eAAO,MAAM,KAAK,EAAE,WAAW,CAAC,OAAO,CAyDtC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selectAll.d.ts","sourceRoot":"","sources":["../../src/commands/selectAll.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"selectAll.d.ts","sourceRoot":"","sources":["../../src/commands/selectAll.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAEzC,OAAO,QAAQ,cAAc,CAAC;IAC5B,UAAU,QAAQ,CAAC,UAAU;QAC3B,SAAS,EAAE;YACT;;;eAGG;YACH,SAAS,EAAE,MAAM,UAAU,CAAC;SAC7B,CAAA;KACF;CACF;AAED,eAAO,MAAM,SAAS,EAAE,WAAW,CAAC,WAAW,CAQ9C,CAAA"}
|
package/dist/helpers/index.d.ts
CHANGED
|
@@ -46,6 +46,7 @@ export * from './isNodeSelection.js';
|
|
|
46
46
|
export * from './isTextSelection.js';
|
|
47
47
|
export * from './posToDOMRect.js';
|
|
48
48
|
export * from './resolveFocusPosition.js';
|
|
49
|
+
export * from './rewriteUnknownContent.js';
|
|
49
50
|
export * from './selectionToInsertionEnd.js';
|
|
50
51
|
export * from './splitExtensions.js';
|
|
51
52
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/helpers/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAA;AAC5C,cAAc,2BAA2B,CAAA;AACzC,cAAc,qBAAqB,CAAA;AACnC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,qBAAqB,CAAA;AACnC,cAAc,mBAAmB,CAAA;AACjC,cAAc,0BAA0B,CAAA;AACxC,cAAc,qBAAqB,CAAA;AACnC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AACjC,cAAc,oBAAoB,CAAA;AAClC,cAAc,kCAAkC,CAAA;AAChD,cAAc,uBAAuB,CAAA;AACrC,cAAc,mBAAmB,CAAA;AACjC,cAAc,wBAAwB,CAAA;AACtC,cAAc,0BAA0B,CAAA;AACxC,cAAc,wBAAwB,CAAA;AACtC,cAAc,mBAAmB,CAAA;AACjC,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,cAAc,kBAAkB,CAAA;AAChC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,gBAAgB,CAAA;AAC9B,cAAc,oCAAoC,CAAA;AAClD,cAAc,0BAA0B,CAAA;AACxC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,cAAc,CAAA;AAC5B,cAAc,qBAAqB,CAAA;AACnC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,mCAAmC,CAAA;AACjD,cAAc,2CAA2C,CAAA;AACzD,cAAc,eAAe,CAAA;AAC7B,cAAc,oBAAoB,CAAA;AAClC,cAAc,sBAAsB,CAAA;AACpC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,aAAa,CAAA;AAC3B,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,sBAAsB,CAAA;AACpC,cAAc,sBAAsB,CAAA;AACpC,cAAc,mBAAmB,CAAA;AACjC,cAAc,2BAA2B,CAAA;AACzC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,sBAAsB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/helpers/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAA;AAC5C,cAAc,2BAA2B,CAAA;AACzC,cAAc,qBAAqB,CAAA;AACnC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,qBAAqB,CAAA;AACnC,cAAc,mBAAmB,CAAA;AACjC,cAAc,0BAA0B,CAAA;AACxC,cAAc,qBAAqB,CAAA;AACnC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AACjC,cAAc,oBAAoB,CAAA;AAClC,cAAc,kCAAkC,CAAA;AAChD,cAAc,uBAAuB,CAAA;AACrC,cAAc,mBAAmB,CAAA;AACjC,cAAc,wBAAwB,CAAA;AACtC,cAAc,0BAA0B,CAAA;AACxC,cAAc,wBAAwB,CAAA;AACtC,cAAc,mBAAmB,CAAA;AACjC,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,cAAc,kBAAkB,CAAA;AAChC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,gBAAgB,CAAA;AAC9B,cAAc,oCAAoC,CAAA;AAClD,cAAc,0BAA0B,CAAA;AACxC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,cAAc,CAAA;AAC5B,cAAc,qBAAqB,CAAA;AACnC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,mCAAmC,CAAA;AACjD,cAAc,2CAA2C,CAAA;AACzD,cAAc,eAAe,CAAA;AAC7B,cAAc,oBAAoB,CAAA;AAClC,cAAc,sBAAsB,CAAA;AACpC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,aAAa,CAAA;AAC3B,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,sBAAsB,CAAA;AACpC,cAAc,sBAAsB,CAAA;AACpC,cAAc,mBAAmB,CAAA;AACjC,cAAc,2BAA2B,CAAA;AACzC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,8BAA8B,CAAA;AAC5C,cAAc,sBAAsB,CAAA"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { Schema } from '@tiptap/pm/model';
|
|
2
|
+
import type { JSONContent } from '../types.js';
|
|
3
|
+
type RewriteUnknownContentOptions = {
|
|
4
|
+
/**
|
|
5
|
+
* If true, unknown nodes will be treated as paragraphs
|
|
6
|
+
* @default true
|
|
7
|
+
*/
|
|
8
|
+
fallbackToParagraph?: boolean;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Rewrite unknown nodes and marks within JSON content
|
|
12
|
+
* Allowing for user within the editor
|
|
13
|
+
*/
|
|
14
|
+
export declare function rewriteUnknownContent(
|
|
15
|
+
/**
|
|
16
|
+
* The JSON content to clean of unknown nodes and marks
|
|
17
|
+
*/
|
|
18
|
+
json: JSONContent,
|
|
19
|
+
/**
|
|
20
|
+
* The schema to use for validation
|
|
21
|
+
*/
|
|
22
|
+
schema: Schema,
|
|
23
|
+
/**
|
|
24
|
+
* Options for the cleaning process
|
|
25
|
+
*/
|
|
26
|
+
options?: RewriteUnknownContentOptions): {
|
|
27
|
+
/**
|
|
28
|
+
* The cleaned JSON content
|
|
29
|
+
*/
|
|
30
|
+
json: JSONContent | null;
|
|
31
|
+
/**
|
|
32
|
+
* The array of nodes and marks that were rewritten
|
|
33
|
+
*/
|
|
34
|
+
rewrittenContent: {
|
|
35
|
+
/**
|
|
36
|
+
* The original JSON content that was rewritten
|
|
37
|
+
*/
|
|
38
|
+
original: JSONContent;
|
|
39
|
+
/**
|
|
40
|
+
* The name of the node or mark that was unsupported
|
|
41
|
+
*/
|
|
42
|
+
unsupported: string;
|
|
43
|
+
}[];
|
|
44
|
+
};
|
|
45
|
+
export {};
|
|
46
|
+
//# sourceMappingURL=rewriteUnknownContent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rewriteUnknownContent.d.ts","sourceRoot":"","sources":["../../src/helpers/rewriteUnknownContent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAE9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAE9C,KAAK,4BAA4B,GAAG;IAClC;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B,CAAC;AA+FF;;;GAGG;AACH,wBAAgB,qBAAqB;AACnC;;GAEG;AACH,IAAI,EAAE,WAAW;AACjB;;GAEG;AACH,MAAM,EAAE,MAAM;AACd;;GAEG;AACH,OAAO,CAAC,EAAE,4BAA4B,GACrC;IACD;;OAEG;IACH,IAAI,EAAE,WAAW,GAAG,IAAI,CAAC;IACzB;;OAEG;IACH,gBAAgB,EAAE;QAChB;;WAEG;QACH,QAAQ,EAAE,WAAW,CAAC;QACtB;;WAEG;QACH,WAAW,EAAE,MAAM,CAAC;KACrB,EAAE,CAAC;CACL,CAOA"}
|
package/dist/index.cjs
CHANGED
|
@@ -998,6 +998,8 @@ function run(config) {
|
|
|
998
998
|
const success = handlers.every(handler => handler !== null);
|
|
999
999
|
return success;
|
|
1000
1000
|
}
|
|
1001
|
+
// When dragging across editors, must get another editor instance to delete selection content.
|
|
1002
|
+
let tiptapDragFromOtherEditor = null;
|
|
1001
1003
|
const createClipboardPasteEvent = (text) => {
|
|
1002
1004
|
var _a;
|
|
1003
1005
|
const event = new ClipboardEvent('paste', {
|
|
@@ -1060,11 +1062,21 @@ function pasteRulesPlugin(props) {
|
|
|
1060
1062
|
dragSourceElement = ((_a = view.dom.parentElement) === null || _a === void 0 ? void 0 : _a.contains(event.target))
|
|
1061
1063
|
? view.dom.parentElement
|
|
1062
1064
|
: null;
|
|
1065
|
+
if (dragSourceElement) {
|
|
1066
|
+
tiptapDragFromOtherEditor = editor;
|
|
1067
|
+
}
|
|
1068
|
+
};
|
|
1069
|
+
const handleDragend = () => {
|
|
1070
|
+
if (tiptapDragFromOtherEditor) {
|
|
1071
|
+
tiptapDragFromOtherEditor = null;
|
|
1072
|
+
}
|
|
1063
1073
|
};
|
|
1064
1074
|
window.addEventListener('dragstart', handleDragstart);
|
|
1075
|
+
window.addEventListener('dragend', handleDragend);
|
|
1065
1076
|
return {
|
|
1066
1077
|
destroy() {
|
|
1067
1078
|
window.removeEventListener('dragstart', handleDragstart);
|
|
1079
|
+
window.removeEventListener('dragend', handleDragend);
|
|
1068
1080
|
},
|
|
1069
1081
|
};
|
|
1070
1082
|
},
|
|
@@ -1073,6 +1085,18 @@ function pasteRulesPlugin(props) {
|
|
|
1073
1085
|
drop: (view, event) => {
|
|
1074
1086
|
isDroppedFromProseMirror = dragSourceElement === view.dom.parentElement;
|
|
1075
1087
|
dropEvent = event;
|
|
1088
|
+
if (!isDroppedFromProseMirror) {
|
|
1089
|
+
const dragFromOtherEditor = tiptapDragFromOtherEditor;
|
|
1090
|
+
if (dragFromOtherEditor) {
|
|
1091
|
+
// setTimeout to avoid the wrong content after drop, timeout arg can't be empty or 0
|
|
1092
|
+
setTimeout(() => {
|
|
1093
|
+
const selection = dragFromOtherEditor.state.selection;
|
|
1094
|
+
if (selection) {
|
|
1095
|
+
dragFromOtherEditor.commands.deleteRange({ from: selection.from, to: selection.to });
|
|
1096
|
+
}
|
|
1097
|
+
}, 10);
|
|
1098
|
+
}
|
|
1099
|
+
}
|
|
1076
1100
|
return false;
|
|
1077
1101
|
},
|
|
1078
1102
|
paste: (_view, event) => {
|
|
@@ -1831,30 +1855,13 @@ function resolveFocusPosition(doc, position = null) {
|
|
|
1831
1855
|
return state.TextSelection.create(doc, minMax(position, minPos, maxPos), minMax(position, minPos, maxPos));
|
|
1832
1856
|
}
|
|
1833
1857
|
|
|
1834
|
-
function isiOS() {
|
|
1835
|
-
return [
|
|
1836
|
-
'iPad Simulator',
|
|
1837
|
-
'iPhone Simulator',
|
|
1838
|
-
'iPod Simulator',
|
|
1839
|
-
'iPad',
|
|
1840
|
-
'iPhone',
|
|
1841
|
-
'iPod',
|
|
1842
|
-
].includes(navigator.platform)
|
|
1843
|
-
// iPad on iOS 13 detection
|
|
1844
|
-
|| (navigator.userAgent.includes('Mac') && 'ontouchend' in document);
|
|
1845
|
-
}
|
|
1846
|
-
|
|
1847
1858
|
const focus = (position = null, options = {}) => ({ editor, view, tr, dispatch, }) => {
|
|
1848
1859
|
options = {
|
|
1849
1860
|
scrollIntoView: true,
|
|
1850
1861
|
...options,
|
|
1851
1862
|
};
|
|
1852
1863
|
const delayedFocus = () => {
|
|
1853
|
-
|
|
1854
|
-
// so we have to call this
|
|
1855
|
-
if (isiOS()) {
|
|
1856
|
-
view.dom.focus();
|
|
1857
|
-
}
|
|
1864
|
+
view.dom.focus();
|
|
1858
1865
|
// For React we have to focus asynchronously. Otherwise wild things happen.
|
|
1859
1866
|
// see: https://github.com/ueberdosis/tiptap/issues/1520
|
|
1860
1867
|
requestAnimationFrame(() => {
|
|
@@ -2185,6 +2192,19 @@ const joinTextblockForward = () => ({ state, dispatch }) => {
|
|
|
2185
2192
|
return commands$1.joinTextblockForward(state, dispatch);
|
|
2186
2193
|
};
|
|
2187
2194
|
|
|
2195
|
+
function isiOS() {
|
|
2196
|
+
return [
|
|
2197
|
+
'iPad Simulator',
|
|
2198
|
+
'iPhone Simulator',
|
|
2199
|
+
'iPod Simulator',
|
|
2200
|
+
'iPad',
|
|
2201
|
+
'iPhone',
|
|
2202
|
+
'iPod',
|
|
2203
|
+
].includes(navigator.platform)
|
|
2204
|
+
// iPad on iOS 13 detection
|
|
2205
|
+
|| (navigator.userAgent.includes('Mac') && 'ontouchend' in document);
|
|
2206
|
+
}
|
|
2207
|
+
|
|
2188
2208
|
function isMacOS() {
|
|
2189
2209
|
return typeof navigator !== 'undefined'
|
|
2190
2210
|
? /Mac/.test(navigator.platform)
|
|
@@ -2395,11 +2415,12 @@ const scrollIntoView = () => ({ tr, dispatch }) => {
|
|
|
2395
2415
|
return true;
|
|
2396
2416
|
};
|
|
2397
2417
|
|
|
2398
|
-
const selectAll = () => ({ tr,
|
|
2399
|
-
|
|
2400
|
-
|
|
2401
|
-
|
|
2402
|
-
}
|
|
2418
|
+
const selectAll = () => ({ tr, dispatch }) => {
|
|
2419
|
+
if (dispatch) {
|
|
2420
|
+
const selection = new state.AllSelection(tr.doc);
|
|
2421
|
+
tr.setSelection(selection);
|
|
2422
|
+
}
|
|
2423
|
+
return true;
|
|
2403
2424
|
};
|
|
2404
2425
|
|
|
2405
2426
|
const selectNodeBackward = () => ({ state, dispatch }) => {
|
|
@@ -3086,6 +3107,81 @@ function posToDOMRect(view, from, to) {
|
|
|
3086
3107
|
};
|
|
3087
3108
|
}
|
|
3088
3109
|
|
|
3110
|
+
/**
|
|
3111
|
+
* The actual implementation of the rewriteUnknownContent function
|
|
3112
|
+
*/
|
|
3113
|
+
function rewriteUnknownContentInner({ json, validMarks, validNodes, options, rewrittenContent = [], }) {
|
|
3114
|
+
if (json.marks && Array.isArray(json.marks)) {
|
|
3115
|
+
json.marks = json.marks.filter(mark => {
|
|
3116
|
+
const name = typeof mark === 'string' ? mark : mark.type;
|
|
3117
|
+
if (validMarks.has(name)) {
|
|
3118
|
+
return true;
|
|
3119
|
+
}
|
|
3120
|
+
rewrittenContent.push({
|
|
3121
|
+
original: JSON.parse(JSON.stringify(mark)),
|
|
3122
|
+
unsupported: name,
|
|
3123
|
+
});
|
|
3124
|
+
// Just ignore any unknown marks
|
|
3125
|
+
return false;
|
|
3126
|
+
});
|
|
3127
|
+
}
|
|
3128
|
+
if (json.content && Array.isArray(json.content)) {
|
|
3129
|
+
json.content = json.content
|
|
3130
|
+
.map(value => rewriteUnknownContentInner({
|
|
3131
|
+
json: value,
|
|
3132
|
+
validMarks,
|
|
3133
|
+
validNodes,
|
|
3134
|
+
options,
|
|
3135
|
+
rewrittenContent,
|
|
3136
|
+
}).json)
|
|
3137
|
+
.filter(a => a !== null && a !== undefined);
|
|
3138
|
+
}
|
|
3139
|
+
if (json.type && !validNodes.has(json.type)) {
|
|
3140
|
+
rewrittenContent.push({
|
|
3141
|
+
original: JSON.parse(JSON.stringify(json)),
|
|
3142
|
+
unsupported: json.type,
|
|
3143
|
+
});
|
|
3144
|
+
if (json.content && Array.isArray(json.content) && ((options === null || options === void 0 ? void 0 : options.fallbackToParagraph) !== false)) {
|
|
3145
|
+
// Just treat it like a paragraph and hope for the best
|
|
3146
|
+
json.type = 'paragraph';
|
|
3147
|
+
return {
|
|
3148
|
+
json,
|
|
3149
|
+
rewrittenContent,
|
|
3150
|
+
};
|
|
3151
|
+
}
|
|
3152
|
+
// or just omit it entirely
|
|
3153
|
+
return {
|
|
3154
|
+
json: null,
|
|
3155
|
+
rewrittenContent,
|
|
3156
|
+
};
|
|
3157
|
+
}
|
|
3158
|
+
return { json, rewrittenContent };
|
|
3159
|
+
}
|
|
3160
|
+
/**
|
|
3161
|
+
* Rewrite unknown nodes and marks within JSON content
|
|
3162
|
+
* Allowing for user within the editor
|
|
3163
|
+
*/
|
|
3164
|
+
function rewriteUnknownContent(
|
|
3165
|
+
/**
|
|
3166
|
+
* The JSON content to clean of unknown nodes and marks
|
|
3167
|
+
*/
|
|
3168
|
+
json,
|
|
3169
|
+
/**
|
|
3170
|
+
* The schema to use for validation
|
|
3171
|
+
*/
|
|
3172
|
+
schema,
|
|
3173
|
+
/**
|
|
3174
|
+
* Options for the cleaning process
|
|
3175
|
+
*/
|
|
3176
|
+
options) {
|
|
3177
|
+
return rewriteUnknownContentInner({
|
|
3178
|
+
json,
|
|
3179
|
+
validNodes: new Set(Object.keys(schema.nodes)),
|
|
3180
|
+
validMarks: new Set(Object.keys(schema.marks)),
|
|
3181
|
+
options,
|
|
3182
|
+
});
|
|
3183
|
+
}
|
|
3184
|
+
|
|
3089
3185
|
function canSetMark(state, tr, newMarkType) {
|
|
3090
3186
|
var _a;
|
|
3091
3187
|
const { selection } = tr;
|
|
@@ -5081,10 +5177,10 @@ class NodeView {
|
|
|
5081
5177
|
// ProseMirror tries to drag selectable nodes
|
|
5082
5178
|
// even if `draggable` is set to `false`
|
|
5083
5179
|
// this fix prevents that
|
|
5084
|
-
if (!isDraggable && isSelectable && isDragEvent) {
|
|
5180
|
+
if (!isDraggable && isSelectable && isDragEvent && event.target === this.dom) {
|
|
5085
5181
|
event.preventDefault();
|
|
5086
5182
|
}
|
|
5087
|
-
if (isDraggable && isDragEvent && !isDragging) {
|
|
5183
|
+
if (isDraggable && isDragEvent && !isDragging && event.target === this.dom) {
|
|
5088
5184
|
event.preventDefault();
|
|
5089
5185
|
return false;
|
|
5090
5186
|
}
|
|
@@ -5410,6 +5506,7 @@ exports.pasteRulesPlugin = pasteRulesPlugin;
|
|
|
5410
5506
|
exports.posToDOMRect = posToDOMRect;
|
|
5411
5507
|
exports.removeDuplicates = removeDuplicates;
|
|
5412
5508
|
exports.resolveFocusPosition = resolveFocusPosition;
|
|
5509
|
+
exports.rewriteUnknownContent = rewriteUnknownContent;
|
|
5413
5510
|
exports.selectionToInsertionEnd = selectionToInsertionEnd;
|
|
5414
5511
|
exports.splitExtensions = splitExtensions;
|
|
5415
5512
|
exports.textInputRule = textInputRule;
|