{"version":3,"names":["KeyInput","extend","CONTEXT","KeyboardEvent","prototype","ctrlRight","self","input","key","shiftRight","altRight","constructor","_resetStates","state","action","Error","code","_keys","allKeys","Object","keys","_setKey","setKeyState","e","onKeydown","onKeyup","onFocus","load","options","capture","passive","lively","removeEventListener","addEventListener","document","window"],"sources":["keys-input.js"],"sourcesContent":["/* global input */\n\nimport { extend } from 'src/client/lang/utils.js';\n\nconst CONTEXT = 'key-state';\n\nextend(KeyboardEvent.prototype, {\n\n  get ctrlRight() { return !!self.input.key('ControlRight'); },\n  get shiftRight() { return !!self.input.key('ShiftRight'); },\n  get altRight() { return !!self.input.key('AltRight'); },\n\n});\n\nclass KeyInput {\n  \n  constructor() {\n    this._resetStates()\n  }\n  \n  /*MD ## querying state key MD*/\n  // #TODO: bind actions to keys\n  state(action) {\n    throw new Error('not yet implemented')\n  }\n  \n  key(code) {\n    return !!this._keys[code]\n  }\n  \n  allKeys() {\n    return Object.keys(input._keys)\n  }\n\n  /*MD ## writing key state MD*/\n  _setKey(code, state) {\n    if (state) {\n      this._keys[code] = true\n    } else {\n      delete this._keys[code]\n    }\n  }\n  \n  _resetStates() {\n    this._keys = {}\n  }\n  \n  /*MD ## hooks MD*/\n  static setKeyState(e, state) {\n    self.input._setKey(e.code, state)\n  }\n\n  static onKeydown(e) {\n    this.setKeyState(e, true);\n  }\n\n  static onKeyup(e) {\n    this.setKeyState(e, false);\n  }\n\n  static onFocus(e) {\n    self.input._resetStates();\n  }\n\n  // #important\n  static load() {\n    self.input = new this();\n    \n    const options = {\n      capture: true,\n      passive: true\n    };\n    \n    lively.removeEventListener(CONTEXT);\n    lively.addEventListener(CONTEXT, document, \"keydown\", ::this.onKeydown, options);\n    lively.addEventListener(CONTEXT, document, \"keyup\", ::this.onKeyup, options);\n    lively.addEventListener(CONTEXT, window, 'focus', ::this.onFocus, options);\n  }\n}\n\nKeyInput.load();"],"mappings":"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"}