UNPKG

@vladkrutenyuk/three-kvy-core

Version:

Everything you need to create any-complexity 3D apps with Three.js. Empower Three.js with a modular, lifecycle-managed context that seamlessly propagates through objects via reusable features providing structured logic.

3 lines (2 loc) 1.17 kB
import{utils as t,CoreContextModule as e}from"@vladkrutenyuk/three-kvy-core";const{defineProps:s,readOnly:i}=t.props;class n extends e{get shift(){return this._shift}get alt(){return this._alt}get ctrl(){return this._ctrl}get meta(){return this._meta}constructor(){super(),this._shift=!1,this._alt=!1,this._ctrl=!1,this._meta=!1,this._keys=new Set,this.has=t=>this._keys.has(t),this.onKeyDown=t=>{this.updFnKeys(t),this._keys.add(t.code)},this.onKeyUp=t=>{this.updFnKeys(t),this._keys.delete(t.code)},this.onBlur=()=>{this.updFnKeys(null)},s(this,{isKeysInput:i(!0)})}useCtx(t){const e=t.three.renderer.domElement,s=e.addEventListener.bind(e),i=e.removeEventListener.bind(e);return s("blur",this.onBlur),s("keydown",this.onKeyDown),s("keyup",this.onKeyUp),()=>{i("blur",this.onBlur),i("keydown",this.onKeyDown),i("keyup",this.onKeyUp)}}updFnKeys(t){var e,s,i,n;this._shift=null!==(e=null==t?void 0:t.shiftKey)&&void 0!==e&&e,this._alt=null!==(s=null==t?void 0:t.altKey)&&void 0!==s&&s,this._ctrl=null!==(i=null==t?void 0:t.ctrlKey)&&void 0!==i&&i,this._meta=null!==(n=null==t?void 0:t.metaKey)&&void 0!==n&&n}}export{n as KeysInput}; //# sourceMappingURL=KeysInput.js.map