UNPKG

@yuebai008/cli

Version:

Command line interface for rapid qg-minigame development

1 lines 1.31 kB
import{Keys}from"./KeyboardShortcut.js";import*as Utils from"./utils/utils.js";let _constructor=null;export class HistoryInput extends HTMLInputElement{history;historyPosition;constructor(){super(),this.history=[""],this.historyPosition=0,this.addEventListener("keydown",this.onKeyDown.bind(this),!1),this.addEventListener("input",this.onInput.bind(this),!1)}static create(){return _constructor||(_constructor=Utils.registerCustomElement("input","history-input",HistoryInput)),_constructor()}onInput(t){this.history.length===this.historyPosition+1&&(this.history[this.history.length-1]=this.value)}onKeyDown(t){const s=t;s.keyCode===Keys.Up.code?(this.historyPosition=Math.max(this.historyPosition-1,0),this.value=this.history[this.historyPosition],this.dispatchEvent(new Event("input",{bubbles:!0,cancelable:!0})),s.consume(!0)):s.keyCode===Keys.Down.code?(this.historyPosition=Math.min(this.historyPosition+1,this.history.length-1),this.value=this.history[this.historyPosition],this.dispatchEvent(new Event("input",{bubbles:!0,cancelable:!0})),s.consume(!0)):s.keyCode===Keys.Enter.code&&this.saveToHistory()}saveToHistory(){this.history.length>1&&this.history[this.history.length-2]===this.value||(this.history[this.history.length-1]=this.value,this.historyPosition=this.history.length-1,this.history.push(""))}}