mirror of
https://github.com/streetwriters/notesnook.git
synced 2026-09-02 04:01:43 +02:00
editor: update prosemirror packages (#10158)
* editor: update prosemirror packages * editor: fix `__serializeForClipboard` usage
This commit is contained in:
568
apps/desktop/package-lock.json
generated
568
apps/desktop/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
919
apps/web/package-lock.json
generated
919
apps/web/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
35
packages/editor/package-lock.json
generated
35
packages/editor/package-lock.json
generated
@@ -53,7 +53,10 @@
|
||||
"papaparse": "^5.5.3",
|
||||
"prism-themes": "^1.9.0",
|
||||
"prosemirror-codemark": "^0.4.2",
|
||||
"prosemirror-view": "1.34.2",
|
||||
"prosemirror-model": "1.25.11",
|
||||
"prosemirror-state": "1.4.4",
|
||||
"prosemirror-transform": "1.12.0",
|
||||
"prosemirror-view": "1.42.2",
|
||||
"re-resizable": "^6.9.18",
|
||||
"react-colorful": "^5.6.1",
|
||||
"redent": "^4.0.0",
|
||||
@@ -4950,9 +4953,10 @@
|
||||
}
|
||||
},
|
||||
"node_modules/prosemirror-model": {
|
||||
"version": "1.22.3",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-model/-/prosemirror-model-1.22.3.tgz",
|
||||
"integrity": "sha512-V4XCysitErI+i0rKFILGt/xClnFJaohe/wrrlT2NSZ+zk8ggQfDH4x2wNK7Gm0Hp4CIoWizvXFP7L9KMaCuI0Q==",
|
||||
"version": "1.25.11",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-model/-/prosemirror-model-1.25.11.tgz",
|
||||
"integrity": "sha512-QWg9RhnpLlogAmp3p96uEFrE5txQpFynd4vhBAELkwgOCWQs/X0yCzB3/hrHqiPwf91RG5KyWq6553zs9JqIOQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"orderedmap": "^2.0.0"
|
||||
}
|
||||
@@ -4976,9 +4980,10 @@
|
||||
}
|
||||
},
|
||||
"node_modules/prosemirror-state": {
|
||||
"version": "1.4.3",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-state/-/prosemirror-state-1.4.3.tgz",
|
||||
"integrity": "sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q==",
|
||||
"version": "1.4.4",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-state/-/prosemirror-state-1.4.4.tgz",
|
||||
"integrity": "sha512-6jiYHH2CIGbCfnxdHbXZ12gySFY/fz/ulZE333G6bPqIZ4F+TXo9ifiR86nAHpWnfoNjOb3o5ESi7J8Uz1jXHw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"prosemirror-model": "^1.0.0",
|
||||
"prosemirror-transform": "^1.0.0",
|
||||
@@ -5023,19 +5028,21 @@
|
||||
}
|
||||
},
|
||||
"node_modules/prosemirror-transform": {
|
||||
"version": "1.10.0",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-transform/-/prosemirror-transform-1.10.0.tgz",
|
||||
"integrity": "sha512-9UOgFSgN6Gj2ekQH5CTDJ8Rp/fnKR2IkYfGdzzp5zQMFsS4zDllLVx/+jGcX86YlACpG7UR5fwAXiWzxqWtBTg==",
|
||||
"version": "1.12.0",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-transform/-/prosemirror-transform-1.12.0.tgz",
|
||||
"integrity": "sha512-GxboyN4AMIsoHNtz5uf2r2Ru551i5hWeCMD6E2Ib4Eogqoub0NflniaBPVQ4MrGE5yZ8JV9tUHg9qcZTTrcN4w==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"prosemirror-model": "^1.21.0"
|
||||
}
|
||||
},
|
||||
"node_modules/prosemirror-view": {
|
||||
"version": "1.34.2",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.34.2.tgz",
|
||||
"integrity": "sha512-tPX/V2Xd70vrAGQ/V9CppJtPKnQyQMypJGlLylvdI94k6JaG+4P6fVmXPR1zc1eVTW0gq3c6zsfqwJKCRLaG9Q==",
|
||||
"version": "1.42.2",
|
||||
"resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.42.2.tgz",
|
||||
"integrity": "sha512-Pdg0l5kXm8aLDquFAnQFTCITg0q44sLqBlHlpsVLD9segdOao8TOfQdAhCrCXyVgPSRr6UDDROOIWA3bIrN9YQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"prosemirror-model": "^1.20.0",
|
||||
"prosemirror-model": "^1.25.8",
|
||||
"prosemirror-state": "^1.0.0",
|
||||
"prosemirror-transform": "^1.1.0"
|
||||
}
|
||||
|
||||
@@ -73,7 +73,10 @@
|
||||
"papaparse": "^5.5.3",
|
||||
"prism-themes": "^1.9.0",
|
||||
"prosemirror-codemark": "^0.4.2",
|
||||
"prosemirror-view": "1.34.2",
|
||||
"prosemirror-model": "1.25.11",
|
||||
"prosemirror-state": "1.4.4",
|
||||
"prosemirror-transform": "1.12.0",
|
||||
"prosemirror-view": "1.42.2",
|
||||
"re-resizable": "^6.9.18",
|
||||
"react-colorful": "^5.6.1",
|
||||
"redent": "^4.0.0",
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
diff --git a/node_modules/prosemirror-model/dist/index.cjs b/node_modules/prosemirror-model/dist/index.cjs
|
||||
index aa31355..1409b46 100644
|
||||
index 96ef508..8f56356 100644
|
||||
--- a/node_modules/prosemirror-model/dist/index.cjs
|
||||
+++ b/node_modules/prosemirror-model/dist/index.cjs
|
||||
@@ -95,6 +95,7 @@ var Fragment = function () {
|
||||
@@ -112,6 +112,7 @@ var Fragment = function () {
|
||||
var nodeStart = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
|
||||
var parent = arguments.length > 4 ? arguments[4] : undefined;
|
||||
for (var i = 0, pos = 0; pos < to; i++) {
|
||||
@@ -10,7 +10,7 @@ index aa31355..1409b46 100644
|
||||
var child = this.content[i],
|
||||
end = pos + child.nodeSize;
|
||||
if (end > from && f(child, nodeStart + pos, parent || null, i) !== false && child.content.size) {
|
||||
@@ -2817,7 +2818,7 @@ function _renderSpec(doc, structure, xmlNS, blockArraysIn) {
|
||||
@@ -2860,7 +2861,7 @@ function _renderSpec(doc, structure, xmlNS, blockArraysIn) {
|
||||
var tagName = structure[0],
|
||||
suspicious;
|
||||
if (typeof tagName != "string") throw new RangeError("Invalid array passed to renderSpec");
|
||||
@@ -20,10 +20,10 @@ index aa31355..1409b46 100644
|
||||
if (space > 0) {
|
||||
xmlNS = tagName.slice(0, space);
|
||||
diff --git a/node_modules/prosemirror-model/dist/index.js b/node_modules/prosemirror-model/dist/index.js
|
||||
index 0097d9f..19d7031 100644
|
||||
index 6b00598..c7c4a38 100644
|
||||
--- a/node_modules/prosemirror-model/dist/index.js
|
||||
+++ b/node_modules/prosemirror-model/dist/index.js
|
||||
@@ -84,6 +84,7 @@ class Fragment {
|
||||
@@ -94,6 +94,7 @@ class Fragment {
|
||||
*/
|
||||
nodesBetween(from, to, f, nodeStart = 0, parent) {
|
||||
for (let i = 0, pos = 0; pos < to; i++) {
|
||||
@@ -31,7 +31,7 @@ index 0097d9f..19d7031 100644
|
||||
let child = this.content[i], end = pos + child.nodeSize;
|
||||
if (end > from && f(child, nodeStart + pos, parent || null, i) !== false && child.content.size) {
|
||||
let start = pos + 1;
|
||||
@@ -3397,9 +3398,9 @@ function renderSpec(doc, structure, xmlNS, blockArraysIn) {
|
||||
@@ -3420,9 +3421,9 @@ function renderSpec(doc, structure, xmlNS, blockArraysIn) {
|
||||
let tagName = structure[0], suspicious;
|
||||
if (typeof tagName != "string")
|
||||
throw new RangeError("Invalid array passed to renderSpec");
|
||||
@@ -1,46 +1,46 @@
|
||||
diff --git a/node_modules/prosemirror-view/dist/index.cjs b/node_modules/prosemirror-view/dist/index.cjs
|
||||
index 8ea57c7..c289489 100644
|
||||
index a615cb7..c1a6cbb 100644
|
||||
--- a/node_modules/prosemirror-view/dist/index.cjs
|
||||
+++ b/node_modules/prosemirror-view/dist/index.cjs
|
||||
@@ -980,8 +980,8 @@ var ViewDesc = function () {
|
||||
if (!(force || brKludge && safari) && isEquivalentPosition(anchorDOM.node, anchorDOM.offset, domSel.anchorNode, domSel.anchorOffset) && isEquivalentPosition(headDOM.node, headDOM.offset, domSel.focusNode, domSel.focusOffset)) return;
|
||||
@@ -1005,8 +1005,8 @@ var ViewDesc = function () {
|
||||
if (!(force || brKludge && safari) && isEquivalentPosition(anchorDOM.node, anchorDOM.offset, selRange.anchorNode, selRange.anchorOffset) && isEquivalentPosition(headDOM.node, headDOM.offset, selRange.focusNode, selRange.focusOffset)) return;
|
||||
var domSelExtended = false;
|
||||
if ((domSel.extend || anchor == head) && !brKludge) {
|
||||
if ((domSel.extend || anchor == head) && !(brKludge && gecko)) {
|
||||
- domSel.collapse(anchorDOM.node, anchorDOM.offset);
|
||||
try {
|
||||
+ domSel.collapse(anchorDOM.node, anchorDOM.offset);
|
||||
if (anchor != head) domSel.extend(headDOM.node, headDOM.offset);
|
||||
domSelExtended = true;
|
||||
} catch (_) {}
|
||||
@@ -3456,7 +3456,7 @@ editHandlers.drop = function (view, _event) {
|
||||
@@ -3647,7 +3647,7 @@ function handleDrop(view, event, dragging) {
|
||||
});
|
||||
tr.setSelection(selectionBetween(view, $pos, tr.doc.resolve(end)));
|
||||
}
|
||||
- view.focus();
|
||||
+ if (!dragging || !dragging.nodeView) view.focus();
|
||||
view.dispatch(tr.setMeta("uiEvent", "drop"));
|
||||
};
|
||||
}
|
||||
handlers.focus = function (view) {
|
||||
diff --git a/node_modules/prosemirror-view/dist/index.js b/node_modules/prosemirror-view/dist/index.js
|
||||
index 9583dc3..6899e62 100644
|
||||
index 61118ee..ec4c853 100644
|
||||
--- a/node_modules/prosemirror-view/dist/index.js
|
||||
+++ b/node_modules/prosemirror-view/dist/index.js
|
||||
@@ -1052,8 +1052,8 @@ class ViewDesc {
|
||||
@@ -1079,8 +1079,8 @@ class ViewDesc {
|
||||
// browsers support it yet.
|
||||
let domSelExtended = false;
|
||||
if ((domSel.extend || anchor == head) && !brKludge) {
|
||||
if ((domSel.extend || anchor == head) && !(brKludge && gecko)) {
|
||||
- domSel.collapse(anchorDOM.node, anchorDOM.offset);
|
||||
try {
|
||||
+ domSel.collapse(anchorDOM.node, anchorDOM.offset);
|
||||
if (anchor != head)
|
||||
domSel.extend(headDOM.node, headDOM.offset);
|
||||
domSelExtended = true;
|
||||
@@ -3731,7 +3731,7 @@ editHandlers.drop = (view, _event) => {
|
||||
@@ -3885,7 +3885,7 @@ function handleDrop(view, event, dragging) {
|
||||
tr.mapping.maps[tr.mapping.maps.length - 1].forEach((_from, _to, _newFrom, newTo) => end = newTo);
|
||||
tr.setSelection(selectionBetween(view, $pos, tr.doc.resolve(end)));
|
||||
}
|
||||
- view.focus();
|
||||
+ if (!dragging || !dragging.nodeView) view.focus();
|
||||
view.dispatch(tr.setMeta("uiEvent", "drop"));
|
||||
};
|
||||
}
|
||||
handlers.focus = view => {
|
||||
@@ -18,8 +18,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import React, { FunctionComponent, SyntheticEvent } from "react";
|
||||
import { NodeView, Decoration, DecorationSource } from "prosemirror-view";
|
||||
import { Node as PMNode, Slice } from "prosemirror-model";
|
||||
import {
|
||||
NodeView,
|
||||
Decoration,
|
||||
DecorationSource,
|
||||
ViewMutationRecord
|
||||
} from "prosemirror-view";
|
||||
import { Node as PMNode } from "prosemirror-model";
|
||||
import { NodeSelection } from "prosemirror-state";
|
||||
import { PortalProviderAPI } from "./react-portal-provider.js";
|
||||
import {
|
||||
@@ -29,19 +34,18 @@ import {
|
||||
ContentDOM
|
||||
} from "./types.js";
|
||||
import { Editor, NodeViewRendererProps } from "@tiptap/core";
|
||||
import { __serializeForClipboard, EditorView } from "prosemirror-view";
|
||||
import { EmotionThemeProvider } from "@notesnook/theme";
|
||||
import { isAndroid, isiOS } from "../../utils/platform.js";
|
||||
import { useToolbarStore } from "../../toolbar/stores/toolbar-store.js";
|
||||
|
||||
// This is hacky workaround to manually handle serialization when
|
||||
// drag/dropping on mobile devices.
|
||||
declare module "prosemirror-view" {
|
||||
export function __serializeForClipboard(
|
||||
view: EditorView,
|
||||
slice: Slice
|
||||
): { dom: HTMLElement; text: string };
|
||||
}
|
||||
// declare module "prosemirror-view" {
|
||||
// export function __serializeForClipboard(
|
||||
// view: EditorView,
|
||||
// slice: Slice
|
||||
// ): { dom: HTMLElement; text: string };
|
||||
// }
|
||||
const portalProviderAPI = new PortalProviderAPI();
|
||||
export class ReactNodeView<P extends ReactNodeViewProps> implements NodeView {
|
||||
private domRef!: HTMLElement;
|
||||
@@ -401,7 +405,7 @@ export class ReactNodeView<P extends ReactNodeViewProps> implements NodeView {
|
||||
}
|
||||
|
||||
ignoreMutation(
|
||||
mutation: MutationRecord | { type: "selection"; target: Element }
|
||||
mutation: ViewMutationRecord // MutationRecord | { type: "selection"; target: Element }
|
||||
) {
|
||||
if (!this.dom || !this.contentDOM) {
|
||||
return true;
|
||||
@@ -501,7 +505,7 @@ function forceHandleDrag(event: DragEvent, editor: Editor) {
|
||||
if (!event.dataTransfer) return;
|
||||
const { view } = editor;
|
||||
const slice = view.state.selection.content();
|
||||
const { dom, text } = __serializeForClipboard(view, slice);
|
||||
const { dom, text } = view.serializeForClipboard(slice);
|
||||
|
||||
event.dataTransfer.clearData();
|
||||
event.dataTransfer.setData("Text", text);
|
||||
|
||||
Reference in New Issue
Block a user