prosemirror-view 1.32.1 → 1.32.2

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 CHANGED
@@ -1,3 +1,9 @@
1
+ ## 1.32.2 (2023-10-27)
2
+
3
+ ### Bug fixes
4
+
5
+ Check for text/uri-list data on the clipboard or in the drop event when pasting or dropping content, since some types of copying on Apple devices use this format.
6
+
1
7
  ## 1.32.1 (2023-10-13)
2
8
 
3
9
  ### Bug fixes
package/dist/index.cjs CHANGED
@@ -3993,12 +3993,19 @@ function doPaste(view, text, html, preferPlain, event) {
3993
3993
  return true;
3994
3994
  }
3995
3995
 
3996
+ function getText(clipboardData) {
3997
+ var text = clipboardData.getData("text/html") || clipboardData.getData("Text");
3998
+ if (text) return text;
3999
+ var uris = clipboardData.getData("text/uri-list");
4000
+ return uris ? uris.replace(/\r?\n/g, " ") : "";
4001
+ }
4002
+
3996
4003
  editHandlers.paste = function (view, _event) {
3997
4004
  var event = _event;
3998
4005
  if (view.composing && !android) return;
3999
4006
  var data = brokenClipboardAPI ? null : event.clipboardData;
4000
4007
  var plain = view.input.shiftKey && view.input.lastKeyCode != 45;
4001
- if (data && doPaste(view, data.getData("text/plain"), data.getData("text/html"), plain, event)) event.preventDefault();else capturePaste(view, event);
4008
+ if (data && doPaste(view, getText(data), data.getData("text/html"), plain, event)) event.preventDefault();else capturePaste(view, event);
4002
4009
  };
4003
4010
 
4004
4011
  var Dragging = _createClass(function Dragging(slice, move) {
@@ -4062,7 +4069,7 @@ editHandlers.drop = function (view, _event) {
4062
4069
  slice = f(slice, view);
4063
4070
  });
4064
4071
  } else {
4065
- slice = parseFromClipboard(view, event.dataTransfer.getData(brokenClipboardAPI ? "Text" : "text/plain"), brokenClipboardAPI ? null : event.dataTransfer.getData("text/html"), false, $mouse);
4072
+ slice = parseFromClipboard(view, getText(event.dataTransfer), brokenClipboardAPI ? null : event.dataTransfer.getData("text/html"), false, $mouse);
4066
4073
  }
4067
4074
 
4068
4075
  var move = !!(dragging && !event[dragCopyModifier]);
package/dist/index.js CHANGED
@@ -3522,6 +3522,13 @@ function doPaste(view, text, html, preferPlain, event) {
3522
3522
  view.dispatch(tr.scrollIntoView().setMeta("paste", true).setMeta("uiEvent", "paste"));
3523
3523
  return true;
3524
3524
  }
3525
+ function getText(clipboardData) {
3526
+ let text = clipboardData.getData("text/html") || clipboardData.getData("Text");
3527
+ if (text)
3528
+ return text;
3529
+ let uris = clipboardData.getData("text/uri-list");
3530
+ return uris ? uris.replace(/\r?\n/g, " ") : "";
3531
+ }
3525
3532
  editHandlers.paste = (view, _event) => {
3526
3533
  let event = _event;
3527
3534
  // Handling paste from JavaScript during composition is very poorly
@@ -3532,7 +3539,7 @@ editHandlers.paste = (view, _event) => {
3532
3539
  return;
3533
3540
  let data = brokenClipboardAPI ? null : event.clipboardData;
3534
3541
  let plain = view.input.shiftKey && view.input.lastKeyCode != 45;
3535
- if (data && doPaste(view, data.getData("text/plain"), data.getData("text/html"), plain, event))
3542
+ if (data && doPaste(view, getText(data), data.getData("text/html"), plain, event))
3536
3543
  event.preventDefault();
3537
3544
  else
3538
3545
  capturePaste(view, event);
@@ -3594,7 +3601,7 @@ editHandlers.drop = (view, _event) => {
3594
3601
  view.someProp("transformPasted", f => { slice = f(slice, view); });
3595
3602
  }
3596
3603
  else {
3597
- slice = parseFromClipboard(view, event.dataTransfer.getData(brokenClipboardAPI ? "Text" : "text/plain"), brokenClipboardAPI ? null : event.dataTransfer.getData("text/html"), false, $mouse);
3604
+ slice = parseFromClipboard(view, getText(event.dataTransfer), brokenClipboardAPI ? null : event.dataTransfer.getData("text/html"), false, $mouse);
3598
3605
  }
3599
3606
  let move = !!(dragging && !event[dragCopyModifier]);
3600
3607
  if (view.someProp("handleDrop", f => f(view, event, slice || Slice.empty, move))) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "prosemirror-view",
3
- "version": "1.32.1",
3
+ "version": "1.32.2",
4
4
  "description": "ProseMirror's view component",
5
5
  "type": "module",
6
6
  "main": "dist/index.cjs",
package/src/input.ts CHANGED
@@ -608,6 +608,13 @@ export function doPaste(view: EditorView, text: string, html: string | null, pre
608
608
  return true
609
609
  }
610
610
 
611
+ function getText(clipboardData: DataTransfer) {
612
+ let text = clipboardData.getData("text/html") || clipboardData.getData("Text")
613
+ if (text) return text
614
+ let uris = clipboardData.getData("text/uri-list")
615
+ return uris ? uris.replace(/\r?\n/g, " ") : ""
616
+ }
617
+
611
618
  editHandlers.paste = (view, _event) => {
612
619
  let event = _event as ClipboardEvent
613
620
  // Handling paste from JavaScript during composition is very poorly
@@ -617,7 +624,7 @@ editHandlers.paste = (view, _event) => {
617
624
  if (view.composing && !browser.android) return
618
625
  let data = brokenClipboardAPI ? null : event.clipboardData
619
626
  let plain = view.input.shiftKey && view.input.lastKeyCode != 45
620
- if (data && doPaste(view, data.getData("text/plain"), data.getData("text/html"), plain, event))
627
+ if (data && doPaste(view, getText(data), data.getData("text/html"), plain, event))
621
628
  event.preventDefault()
622
629
  else
623
630
  capturePaste(view, event)
@@ -678,7 +685,7 @@ editHandlers.drop = (view, _event) => {
678
685
  if (slice) {
679
686
  view.someProp("transformPasted", f => { slice = f(slice!, view) })
680
687
  } else {
681
- slice = parseFromClipboard(view, event.dataTransfer.getData(brokenClipboardAPI ? "Text" : "text/plain"),
688
+ slice = parseFromClipboard(view, getText(event.dataTransfer),
682
689
  brokenClipboardAPI ? null : event.dataTransfer.getData("text/html"), false, $mouse)
683
690
  }
684
691
  let move = !!(dragging && !event[dragCopyModifier])