import { Editor, type EditorTheme, Key, matchesKey } from "@mariozechner/pi-tui"; export class CustomEditor extends Editor { onEscape?: () => void; onCtrlC?: () => void; onCtrlD?: () => void; onCtrlG?: () => void; onCtrlL?: () => void; onCtrlO?: () => void; onCtrlP?: () => void; onCtrlT?: () => void; onShiftTab?: () => void; onAltEnter?: () => void; constructor(theme: EditorTheme) { super(theme); } handleInput(data: string): void { if (matchesKey(data, Key.alt("enter")) && this.onAltEnter) { this.onAltEnter(); return; } if (matchesKey(data, Key.ctrl("l")) && this.onCtrlL) { this.onCtrlL(); return; } if (matchesKey(data, Key.ctrl("o")) && this.onCtrlO) { this.onCtrlO(); return; } if (matchesKey(data, Key.ctrl("p")) && this.onCtrlP) { this.onCtrlP(); return; } if (matchesKey(data, Key.ctrl("g")) && this.onCtrlG) { this.onCtrlG(); return; } if (matchesKey(data, Key.ctrl("t")) && this.onCtrlT) { this.onCtrlT(); return; } if (matchesKey(data, Key.shift("tab")) && this.onShiftTab) { this.onShiftTab(); return; } if (matchesKey(data, Key.escape) && this.onEscape && !this.isShowingAutocomplete()) { this.onEscape(); return; } if (matchesKey(data, Key.ctrl("c")) && this.onCtrlC) { this.onCtrlC(); return; } if (matchesKey(data, Key.ctrl("d"))) { if (this.getText().length === 0 && this.onCtrlD) { this.onCtrlD(); } return; } super.handleInput(data); } }