@limetech/lime-elements
Version:
1 lines • 1.39 kB
JavaScript
const t=new WeakMap;class s{constructor(t){this.element=t,this.isActive=!1,this.hasJustReleasedEnter=!0,this.handleKeyDown=t=>{"Enter"!==t.key||this.isActive||t.repeat||(this.isActive=!0)},this.handleKeyUp=t=>{"Enter"===t.key&&this.isActive&&(this.isActive=!1,this.hasJustReleasedEnter=!0)},this.handleBlur=()=>{this.isActive=!1,this.hasJustReleasedEnter=!0},this.handleClick=t=>{this.isActive&&(this.hasJustReleasedEnter?this.hasJustReleasedEnter=!1:t.stopImmediatePropagation())},this.callbacks={keydownHandler:this.handleKeyDown.bind(this),keyupHandler:this.handleKeyUp.bind(this),blurHandler:this.handleBlur.bind(this),clickHandler:this.handleClick.bind(this)}}enable(){this.element.addEventListener("keydown",this.callbacks.keydownHandler),this.element.addEventListener("keyup",this.callbacks.keyupHandler),this.element.addEventListener("blur",this.callbacks.blurHandler),this.element.addEventListener("click",this.callbacks.clickHandler,!0)}disable(){this.element.removeEventListener("keydown",this.callbacks.keydownHandler),this.element.removeEventListener("keyup",this.callbacks.keyupHandler),this.element.removeEventListener("blur",this.callbacks.blurHandler),this.element.removeEventListener("click",this.callbacks.clickHandler,!0)}}function i(i){if(!t.has(i)){const h=new s(i);h.enable(),t.set(i,h)}}function h(s){const i=t.get(s);i&&(i.disable(),t.delete(s))}export{i as m,h as r}