aboutsummaryrefslogtreecommitdiff
path: root/editor
diff options
context:
space:
mode:
authorShulhan <ms@kilabit.info>2023-11-21 13:29:02 +0700
committerShulhan <ms@kilabit.info>2023-11-21 17:25:06 +0700
commitcdcd8b2d559bc367969aa531f32dd1f315d8b759 (patch)
treecd717a20e2966803866dd752335bac7085ef844e /editor
parent8e424c716390ccf41221c526df8d7d5f44152ba1 (diff)
downloadpakakeh.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.ts18
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());
});