Procházet zdrojové kódy

Allow copy pasting inside of wysiwyg element (#651)

We did some hackery to prevent copy pasting when we didn't support multilines. But we do now so we can remove it.

Interestingly, newlines are actually <br /> elements. So we need to tweak the isInputLike logic a bit
Christopher Chedeau před 5 roky
rodič
revize
70db792549
2 změnil soubory, kde provedl 1 přidání a 9 odebrání
  1. 0 9
      src/element/textWysiwyg.tsx
  2. 1 0
      src/utils.ts

+ 0 - 9
src/element/textWysiwyg.tsx

@@ -73,14 +73,6 @@ export function textWysiwyg({
     }
   };
   editable.onblur = handleSubmit;
-  // override paste to disallow non-textual data, and replace newlines
-  editable.onpaste = ev => {
-    ev.preventDefault();
-    try {
-      const text = ev.clipboardData!.getData("text").replace(/\n+/g, " ");
-      editable.textContent = text;
-    } catch {}
-  };
 
   function stopEvent(ev: Event) {
     ev.stopPropagation();
@@ -98,7 +90,6 @@ export function textWysiwyg({
   function cleanup() {
     editable.onblur = null;
     editable.onkeydown = null;
-    editable.onpaste = null;
     window.removeEventListener("wheel", stopEvent, true);
     document.body.removeChild(editable);
   }

+ 1 - 0
src/utils.ts

@@ -31,6 +31,7 @@ export function isInputLike(
   | HTMLDivElement {
   return (
     (target instanceof HTMLElement && target.dataset.type === "wysiwyg") ||
+    target instanceof HTMLBRElement || // newline in wysiwyg
     target instanceof HTMLInputElement ||
     target instanceof HTMLTextAreaElement ||
     target instanceof HTMLSelectElement