| 94936 | const UP_EVENT_TYPE = "keyup"; |
| 94937 | class KeyInput extends (0, _inputDefault.default) { |
| 94938 | constructor(element, callback, options){ |
| 94939 | super(element, callback, options); |
| 94940 | this.handleEvent = (event)=>{ |
| 94941 | // Ignore if focused on text input |
| 94942 | const targetElement = event.target || event.srcElement; |
| 94943 | if (targetElement.tagName === "INPUT" && targetElement.type === "text" || targetElement.tagName === "TEXTAREA") return; |
| 94944 | if (this.enableDownEvent && event.type === "keydown") this.callback({ |
| 94945 | type: DOWN_EVENT_TYPE, |
| 94946 | srcEvent: event, |
| 94947 | key: event.key, |
| 94948 | target: event.target |
| 94949 | }); |
| 94950 | if (this.enableUpEvent && event.type === "keyup") this.callback({ |
| 94951 | type: UP_EVENT_TYPE, |
| 94952 | srcEvent: event, |
| 94953 | key: event.key, |
| 94954 | target: event.target |
| 94955 | }); |
| 94956 | }; |
| 94957 | this.enableDownEvent = this.options.enable; |
| 94958 | this.enableUpEvent = this.options.enable; |
| 94959 | this.events = (this.options.events || []).concat(KEY_EVENTS); |
| 94960 | element.tabIndex = this.options.tabIndex || 0; |
| 94961 | element.style.outline = "none"; |
| 94962 | this.events.forEach((event)=>element.addEventListener(event, this.handleEvent)); |
| 94963 | } |
| 94964 | destroy() { |
| 94965 | this.events.forEach((event)=>this.element.removeEventListener(event, this.handleEvent)); |
| 94966 | } |