{"version":3,"file":"keyboard.mjs","sources":["../../../../packages/utils/keyboard.ts"],"sourcesContent":["import { isString } from './is'\n\nexport const KEYBOARD_KEY = {\n  ENTER: 'Enter',\n  ESC: 'Escape',\n  BACKSPACE: 'Backspace',\n  TAB: 'Tab',\n  SPACE: ' ',\n  ARROW_UP: 'ArrowUp',\n  ARROW_DOWN: 'ArrowDown',\n  ARROW_LEFT: 'ArrowLeft',\n  ARROW_RIGHT: 'ArrowRight'\n}\n\nexport interface CodeKey {\n  /** Keyboard key */\n  key: string\n  /** Ctrl / ⌃ */\n  ctrl?: boolean\n  /** Shift key */\n  shift?: boolean\n  /** Alt / ⌥ */\n  alt?: boolean\n  /** meta ⌘ / ⊞ */\n  meta?: boolean\n}\n\nconst stringifyCodeKey = (k: CodeKey) => {\n  return JSON.stringify({\n    key: k.key,\n    ctrl: Boolean(k.ctrl),\n    shift: Boolean(k.shift),\n    alt: Boolean(k.alt),\n    meta: Boolean(k.meta)\n  })\n}\n\nexport const getKeyDownHandler = (codeKeyMap: Map<CodeKey | string, (e: Event) => void>) => {\n  const map: Record<string, (e: Event) => void> = {}\n\n  codeKeyMap.forEach((callback, codeKey) => {\n    const _codeKey = isString(codeKey) ? { key: codeKey } : codeKey\n    map[stringifyCodeKey(_codeKey)] = callback\n  })\n\n  return (event: KeyboardEvent): void => {\n    const key = stringifyCodeKey({\n      key: event.key,\n      ctrl: event.ctrlKey,\n      shift: event.shiftKey,\n      alt: event.altKey,\n      meta: event.metaKey\n    })\n    const callback = map[key]\n\n    if (callback) {\n      event.stopPropagation()\n      callback(event)\n    }\n  }\n}\n"],"names":[],"mappings":";;AAEO,MAAM,YAAe,GAAA;AAAA,EAC1B,KAAO,EAAA,OAAA;AAAA,EACP,GAAK,EAAA,QAAA;AAAA,EACL,SAAW,EAAA,WAAA;AAAA,EACX,GAAK,EAAA,KAAA;AAAA,EACL,KAAO,EAAA,GAAA;AAAA,EACP,QAAU,EAAA,SAAA;AAAA,EACV,UAAY,EAAA,WAAA;AAAA,EACZ,UAAY,EAAA,WAAA;AAAA,EACZ,WAAa,EAAA,YAAA;AACf,EAAA;AAeA,MAAM,gBAAA,GAAmB,CAAC,CAAe,KAAA;AACvC,EAAA,OAAO,KAAK,SAAU,CAAA;AAAA,IACpB,KAAK,CAAE,CAAA,GAAA;AAAA,IACP,IAAA,EAAM,OAAQ,CAAA,CAAA,CAAE,IAAI,CAAA;AAAA,IACpB,KAAA,EAAO,OAAQ,CAAA,CAAA,CAAE,KAAK,CAAA;AAAA,IACtB,GAAA,EAAK,OAAQ,CAAA,CAAA,CAAE,GAAG,CAAA;AAAA,IAClB,IAAA,EAAM,OAAQ,CAAA,CAAA,CAAE,IAAI,CAAA;AAAA,GACrB,CAAA,CAAA;AACH,CAAA,CAAA;AAEa,MAAA,iBAAA,GAAoB,CAAC,UAA0D,KAAA;AAC1F,EAAA,MAAM,MAA0C,EAAC,CAAA;AAEjD,EAAW,UAAA,CAAA,OAAA,CAAQ,CAAC,QAAA,EAAU,OAAY,KAAA;AACxC,IAAA,MAAM,WAAW,QAAS,CAAA,OAAO,IAAI,EAAE,GAAA,EAAK,SAAY,GAAA,OAAA,CAAA;AACxD,IAAI,GAAA,CAAA,gBAAA,CAAiB,QAAQ,CAAC,CAAI,GAAA,QAAA,CAAA;AAAA,GACnC,CAAA,CAAA;AAED,EAAA,OAAO,CAAC,KAA+B,KAAA;AACrC,IAAA,MAAM,MAAM,gBAAiB,CAAA;AAAA,MAC3B,KAAK,KAAM,CAAA,GAAA;AAAA,MACX,MAAM,KAAM,CAAA,OAAA;AAAA,MACZ,OAAO,KAAM,CAAA,QAAA;AAAA,MACb,KAAK,KAAM,CAAA,MAAA;AAAA,MACX,MAAM,KAAM,CAAA,OAAA;AAAA,KACb,CAAA,CAAA;AACD,IAAM,MAAA,QAAA,GAAW,IAAI,GAAG,CAAA,CAAA;AAExB,IAAA,IAAI,QAAU,EAAA;AACZ,MAAA,KAAA,CAAM,eAAgB,EAAA,CAAA;AACtB,MAAA,QAAA,CAAS,KAAK,CAAA,CAAA;AAAA,KAChB;AAAA,GACF,CAAA;AACF;;;;"}