prosemirror-view 1.33.8 → 1.33.9
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/CHANGELOG.md +8 -0
- package/dist/index.cjs +5 -5
- package/dist/index.js +6 -3
- package/package.json +1 -1
- package/src/input.ts +3 -1
- package/src/viewdesc.ts +3 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
## 1.33.9 (2024-07-18)
|
|
2
|
+
|
|
3
|
+
### Bug fixes
|
|
4
|
+
|
|
5
|
+
Fix an issue where dragging an image on Chrome versions before 121 failed to put the image file in the clipboard data.
|
|
6
|
+
|
|
7
|
+
Enable cross-site scripting protection hack when rendering nodes and marks inside the editor.
|
|
8
|
+
|
|
1
9
|
## 1.33.8 (2024-06-11)
|
|
2
10
|
|
|
3
11
|
### Bug fixes
|
package/dist/index.cjs
CHANGED
|
@@ -1216,7 +1216,7 @@ var MarkViewDesc = function (_ViewDesc3) {
|
|
|
1216
1216
|
value: function create(parent, mark, inline, view) {
|
|
1217
1217
|
var custom = view.nodeViews[mark.type.name];
|
|
1218
1218
|
var spec = custom && custom(mark, view, inline);
|
|
1219
|
-
if (!spec || !spec.dom) spec = prosemirrorModel.DOMSerializer.renderSpec(document, mark.type.spec.toDOM(mark, inline));
|
|
1219
|
+
if (!spec || !spec.dom) spec = prosemirrorModel.DOMSerializer.renderSpec(document, mark.type.spec.toDOM(mark, inline), null, mark.attrs);
|
|
1220
1220
|
return new MarkViewDesc(parent, mark, spec.dom, spec.contentDOM || spec.dom);
|
|
1221
1221
|
}
|
|
1222
1222
|
}]);
|
|
@@ -1415,9 +1415,9 @@ var NodeViewDesc = function (_ViewDesc4) {
|
|
|
1415
1415
|
if (node.isText) {
|
|
1416
1416
|
if (!dom) dom = document.createTextNode(node.text);else if (dom.nodeType != 3) throw new RangeError("Text must be rendered as a DOM text node");
|
|
1417
1417
|
} else if (!dom) {
|
|
1418
|
-
var
|
|
1419
|
-
dom =
|
|
1420
|
-
contentDOM =
|
|
1418
|
+
var _spec = prosemirrorModel.DOMSerializer.renderSpec(document, node.type.spec.toDOM(node), null, node.attrs);
|
|
1419
|
+
dom = _spec.dom;
|
|
1420
|
+
contentDOM = _spec.contentDOM;
|
|
1421
1421
|
}
|
|
1422
1422
|
if (!contentDOM && !node.isText && dom.nodeName != "BR") {
|
|
1423
1423
|
if (!dom.hasAttribute("contenteditable")) dom.contentEditable = "false";
|
|
@@ -3380,7 +3380,7 @@ handlers.dragstart = function (view, _event) {
|
|
|
3380
3380
|
dom = _serializeForClipboar2.dom,
|
|
3381
3381
|
text = _serializeForClipboar2.text,
|
|
3382
3382
|
slice = _serializeForClipboar2.slice;
|
|
3383
|
-
event.dataTransfer.clearData();
|
|
3383
|
+
if (!event.dataTransfer.files.length || !chrome || chrome_version > 120) event.dataTransfer.clearData();
|
|
3384
3384
|
event.dataTransfer.setData(brokenClipboardAPI ? "Text" : "text/html", dom.innerHTML);
|
|
3385
3385
|
event.dataTransfer.effectAllowed = "copyMove";
|
|
3386
3386
|
if (!brokenClipboardAPI) event.dataTransfer.setData("text/plain", text);
|
package/dist/index.js
CHANGED
|
@@ -1195,7 +1195,7 @@ class MarkViewDesc extends ViewDesc {
|
|
|
1195
1195
|
let custom = view.nodeViews[mark.type.name];
|
|
1196
1196
|
let spec = custom && custom(mark, view, inline);
|
|
1197
1197
|
if (!spec || !spec.dom)
|
|
1198
|
-
spec = DOMSerializer.renderSpec(document, mark.type.spec.toDOM(mark, inline));
|
|
1198
|
+
spec = DOMSerializer.renderSpec(document, mark.type.spec.toDOM(mark, inline), null, mark.attrs);
|
|
1199
1199
|
return new MarkViewDesc(parent, mark, spec.dom, spec.contentDOM || spec.dom);
|
|
1200
1200
|
}
|
|
1201
1201
|
parseRule() {
|
|
@@ -1267,7 +1267,8 @@ class NodeViewDesc extends ViewDesc {
|
|
|
1267
1267
|
throw new RangeError("Text must be rendered as a DOM text node");
|
|
1268
1268
|
}
|
|
1269
1269
|
else if (!dom) {
|
|
1270
|
-
|
|
1270
|
+
let spec = DOMSerializer.renderSpec(document, node.type.spec.toDOM(node), null, node.attrs);
|
|
1271
|
+
({ dom, contentDOM } = spec);
|
|
1271
1272
|
}
|
|
1272
1273
|
if (!contentDOM && !node.isText && dom.nodeName != "BR") { // Chrome gets confused by <br contenteditable=false>
|
|
1273
1274
|
if (!dom.hasAttribute("contenteditable"))
|
|
@@ -3631,7 +3632,9 @@ handlers.dragstart = (view, _event) => {
|
|
|
3631
3632
|
}
|
|
3632
3633
|
let draggedSlice = (node || view.state.selection).content();
|
|
3633
3634
|
let { dom, text, slice } = serializeForClipboard(view, draggedSlice);
|
|
3634
|
-
|
|
3635
|
+
// Pre-120 Chrome versions clear files when calling `clearData` (#1472)
|
|
3636
|
+
if (!event.dataTransfer.files.length || !chrome || chrome_version > 120)
|
|
3637
|
+
event.dataTransfer.clearData();
|
|
3635
3638
|
event.dataTransfer.setData(brokenClipboardAPI ? "Text" : "text/html", dom.innerHTML);
|
|
3636
3639
|
// See https://github.com/ProseMirror/prosemirror/issues/1156
|
|
3637
3640
|
event.dataTransfer.effectAllowed = "copyMove";
|
package/package.json
CHANGED
package/src/input.ts
CHANGED
|
@@ -677,7 +677,9 @@ handlers.dragstart = (view, _event) => {
|
|
|
677
677
|
}
|
|
678
678
|
let draggedSlice = (node || view.state.selection).content()
|
|
679
679
|
let {dom, text, slice} = serializeForClipboard(view, draggedSlice)
|
|
680
|
-
|
|
680
|
+
// Pre-120 Chrome versions clear files when calling `clearData` (#1472)
|
|
681
|
+
if (!event.dataTransfer.files.length || !browser.chrome || browser.chrome_version > 120)
|
|
682
|
+
event.dataTransfer.clearData()
|
|
681
683
|
event.dataTransfer.setData(brokenClipboardAPI ? "Text" : "text/html", dom.innerHTML)
|
|
682
684
|
// See https://github.com/ProseMirror/prosemirror/issues/1156
|
|
683
685
|
event.dataTransfer.effectAllowed = "copyMove"
|
package/src/viewdesc.ts
CHANGED
|
@@ -572,7 +572,7 @@ class MarkViewDesc extends ViewDesc {
|
|
|
572
572
|
let custom = view.nodeViews[mark.type.name]
|
|
573
573
|
let spec: {dom: HTMLElement, contentDOM?: HTMLElement} = custom && (custom as any)(mark, view, inline)
|
|
574
574
|
if (!spec || !spec.dom)
|
|
575
|
-
spec = DOMSerializer.renderSpec(document, mark.type.spec.toDOM!(mark, inline)) as any
|
|
575
|
+
spec = (DOMSerializer.renderSpec as any)(document, mark.type.spec.toDOM!(mark, inline), null, mark.attrs) as any
|
|
576
576
|
return new MarkViewDesc(parent, mark, spec.dom, spec.contentDOM || spec.dom as HTMLElement)
|
|
577
577
|
}
|
|
578
578
|
|
|
@@ -647,7 +647,8 @@ export class NodeViewDesc extends ViewDesc {
|
|
|
647
647
|
if (!dom) dom = document.createTextNode(node.text!)
|
|
648
648
|
else if (dom.nodeType != 3) throw new RangeError("Text must be rendered as a DOM text node")
|
|
649
649
|
} else if (!dom) {
|
|
650
|
-
|
|
650
|
+
let spec = (DOMSerializer.renderSpec as any)(document, node.type.spec.toDOM!(node), null, node.attrs)
|
|
651
|
+
;({dom, contentDOM} = spec as {dom: DOMNode, contentDOM?: HTMLElement})
|
|
651
652
|
}
|
|
652
653
|
if (!contentDOM && !node.isText && dom.nodeName != "BR") { // Chrome gets confused by <br contenteditable=false>
|
|
653
654
|
if (!(dom as HTMLElement).hasAttribute("contenteditable")) (dom as HTMLElement).contentEditable = "false"
|