diff options
Diffstat (limited to 'editor/editor.ts')
| -rw-r--r-- | editor/editor.ts | 91 |
1 files changed, 40 insertions, 51 deletions
diff --git a/editor/editor.ts b/editor/editor.ts index 0e919ab..4ca0cce 100644 --- a/editor/editor.ts +++ b/editor/editor.ts @@ -55,6 +55,9 @@ export class WuiEditor { this.sel = sel; this.range = document.createRange(); + document.onkeydown = (ev: KeyboardEvent) => { + this.onKeydownDocument(this, ev); + }; document.onkeyup = (ev: KeyboardEvent) => { this.onKeyupDocument(this, ev); }; @@ -143,28 +146,10 @@ export class WuiEditor { this.setCaret(elTextPrev, off); return false; - case "Control": - this.is_key_control = false; - break; - case "Enter": ev.preventDefault(); break; - case "r": - if (this.is_key_control) { - ev.preventDefault(); - return; - } - break; - - case "z": - if (this.is_key_control) { - ev.preventDefault(); - return; - } - break; - default: if (this.is_key_control) { break; @@ -228,10 +213,6 @@ export class WuiEditor { } return false; - case "Control": - this.is_key_control = true; - break; - case "Delete": ev.preventDefault(); @@ -315,33 +296,6 @@ export class WuiEditor { this.setCaret(elText, off + 1); break; - - case "r": - if (this.is_key_control) { - ev.preventDefault(); - this.doRedo(); - return; - } - break; - - case "s": - if (this.is_key_control) { - ev.preventDefault(); - ev.stopPropagation(); - if (this.opts.onSave) { - this.opts.onSave(this.getContent()); - } - return false; - } - break; - - case "z": - if (this.is_key_control) { - ev.preventDefault(); - this.doUndo(); - return; - } - break; } return true; } @@ -546,14 +500,49 @@ export class WuiEditor { this.setCaret(newline.elText, 0); } + private onKeydownDocument(ed: WuiEditor, ev: KeyboardEvent) { + switch (ev.key) { + case "Control": + ed.is_key_control = true; + return; + + case "r": + if (ed.is_key_control) { + ev.preventDefault(); + ed.doRedo(); + } + return; + + case "s": + if (ed.is_key_control) { + ev.preventDefault(); + ev.stopPropagation(); + if (ed.opts.onSave) { + ed.opts.onSave(ed.getContent()); + } + } + return; + + case "z": + if (ed.is_key_control) { + ev.preventDefault(); + ed.doUndo(); + } + return; + } + } + private onKeyupDocument(ed: WuiEditor, ev: KeyboardEvent) { switch (ev.key) { + case "Control": + ed.is_key_control = false; + return; + case "Escape": ev.preventDefault(); ed.clearSelection(); - break; + return; } - return true; } private render() { |
