diff options
| author | Shulhan <ms@kilabit.info> | 2023-11-21 13:29:02 +0700 |
|---|---|---|
| committer | Shulhan <ms@kilabit.info> | 2023-11-21 17:25:06 +0700 |
| commit | cdcd8b2d559bc367969aa531f32dd1f315d8b759 (patch) | |
| tree | cd717a20e2966803866dd752335bac7085ef844e /editor | |
| parent | 8e424c716390ccf41221c526df8d7d5f44152ba1 (diff) | |
| download | pakakeh.ts-cdcd8b2d559bc367969aa531f32dd1f315d8b759.tar.xz | |
editor: replace execCommand with Selection
The execCommand has been deprecated according to Mozilla Developer
Network.
This changes require the tsc target set to es2019 to be able to
use the string trimEnd method.
[1]: https://developer.mozilla.org/en-US/docs/Web/API/document/execCommand
Diffstat (limited to 'editor')
| -rw-r--r-- | editor/editor.ts | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/editor/editor.ts b/editor/editor.ts index c7ce506..1ea0438 100644 --- a/editor/editor.ts +++ b/editor/editor.ts @@ -109,8 +109,22 @@ export class WuiEditor { this.elContent.addEventListener("paste", (ev: ClipboardEvent) => { ev.preventDefault(); - const text = ev.clipboardData?.getData("text/plain"); - document.execCommand("insertText", false, text); + let text: string = ev.clipboardData?.getData("text/plain") || ""; + if (!text) { + console.error(`on paste: text is ${text}`); + return; + } + const selection = window.getSelection(); + if (!selection || !selection.rangeCount) { + console.error(`on paste: failed to get selection`); + return; + } + + text = text.trimEnd(); + selection.deleteFromDocument(); + selection.getRangeAt(0).insertNode(document.createTextNode(text)); + selection.collapseToEnd(); + this.renderLineNumber(this.getContent()); }); |
