{"version":3,"sources":["../../../../src/sensors/useOnKeyStroke/index.ts"],"sourcesContent":["\"use client\";\nimport { useScope, toObs, type Fn, type DeepMaybeObservable } from \"@usels/core\";\nimport { createOnKeyStroke, type KeyFilter, type UseOnKeyStrokeOptions } from \"./core\";\n\nexport { createOnKeyStroke, createOnKeyDown, createOnKeyPressed, createOnKeyUp } from \"./core\";\nexport type {\n  KeyPredicate,\n  KeyFilter,\n  KeyStrokeEventName,\n  UseOnKeyStrokeOptions,\n  UseOnKeyStrokeReturn,\n} from \"./core\";\n\nexport type UseOnKeyStroke = typeof createOnKeyStroke;\n\nexport const useOnKeyStroke: UseOnKeyStroke = ((\n  keyOrHandler: KeyFilter | ((event: KeyboardEvent) => void),\n  handlerOrOptions?: ((event: KeyboardEvent) => void) | UseOnKeyStrokeOptions,\n  optionsArg?: UseOnKeyStrokeOptions\n): Fn => {\n  // Normalize overloads before entering useScope\n  let key: KeyFilter;\n  let handler: (event: KeyboardEvent) => void;\n  let options: UseOnKeyStrokeOptions;\n\n  if (\n    typeof keyOrHandler === \"function\" &&\n    (handlerOrOptions == null || typeof handlerOrOptions === \"object\")\n  ) {\n    key = true;\n    handler = keyOrHandler as (event: KeyboardEvent) => void;\n    options = (handlerOrOptions as UseOnKeyStrokeOptions) ?? {};\n  } else {\n    key = keyOrHandler as KeyFilter;\n    handler = handlerOrOptions as (event: KeyboardEvent) => void;\n    options = optionsArg ?? {};\n  }\n\n  return useScope(\n    (cbs, opts) => {\n      const cbs$ = toObs(cbs);\n      const opts$ = toObs(opts) as DeepMaybeObservable<UseOnKeyStrokeOptions>;\n      return createOnKeyStroke(key, cbs$.handler as (e: KeyboardEvent) => void, opts$);\n    },\n    { handler },\n    options\n  );\n}) as UseOnKeyStroke;\n\n// ---------------------------------------------------------------------------\n// Convenience functions\n// ---------------------------------------------------------------------------\n\n/**\n * Listen for `keydown` events with key filtering.\n */\nexport function useOnKeyDown(\n  key: KeyFilter,\n  handler: (event: KeyboardEvent) => void,\n  options: Omit<UseOnKeyStrokeOptions, \"eventName\"> = {}\n): Fn {\n  return useOnKeyStroke(key, handler, { ...options, eventName: \"keydown\" });\n}\n\n/**\n * Listen for `keypress` events with key filtering.\n */\nexport function useOnKeyPressed(\n  key: KeyFilter,\n  handler: (event: KeyboardEvent) => void,\n  options: Omit<UseOnKeyStrokeOptions, \"eventName\"> = {}\n): Fn {\n  return useOnKeyStroke(key, handler, { ...options, eventName: \"keypress\" });\n}\n\n/**\n * Listen for `keyup` events with key filtering.\n */\nexport function useOnKeyUp(\n  key: KeyFilter,\n  handler: (event: KeyboardEvent) => void,\n  options: Omit<UseOnKeyStrokeOptions, \"eventName\"> = {}\n): Fn {\n  return useOnKeyStroke(key, handler, { ...options, eventName: \"keyup\" });\n}\n"],"mappings":";AACA,SAAS,UAAU,aAAgD;AACnE,SAAS,yBAAqE;AAE9E,SAAS,qBAAAA,oBAAmB,iBAAiB,oBAAoB,qBAAqB;AAW/E,MAAM,kBAAkC,CAC7C,cACA,kBACA,eACO;AAEP,MAAI;AACJ,MAAI;AACJ,MAAI;AAEJ,MACE,OAAO,iBAAiB,eACvB,oBAAoB,QAAQ,OAAO,qBAAqB,WACzD;AACA,UAAM;AACN,cAAU;AACV,cAAW,oBAA8C,CAAC;AAAA,EAC5D,OAAO;AACL,UAAM;AACN,cAAU;AACV,cAAU,cAAc,CAAC;AAAA,EAC3B;AAEA,SAAO;AAAA,IACL,CAAC,KAAK,SAAS;AACb,YAAM,OAAO,MAAM,GAAG;AACtB,YAAM,QAAQ,MAAM,IAAI;AACxB,aAAO,kBAAkB,KAAK,KAAK,SAAuC,KAAK;AAAA,IACjF;AAAA,IACA,EAAE,QAAQ;AAAA,IACV;AAAA,EACF;AACF;AASO,SAAS,aACd,KACA,SACA,UAAoD,CAAC,GACjD;AACJ,SAAO,eAAe,KAAK,SAAS,EAAE,GAAG,SAAS,WAAW,UAAU,CAAC;AAC1E;AAKO,SAAS,gBACd,KACA,SACA,UAAoD,CAAC,GACjD;AACJ,SAAO,eAAe,KAAK,SAAS,EAAE,GAAG,SAAS,WAAW,WAAW,CAAC;AAC3E;AAKO,SAAS,WACd,KACA,SACA,UAAoD,CAAC,GACjD;AACJ,SAAO,eAAe,KAAK,SAAS,EAAE,GAAG,SAAS,WAAW,QAAQ,CAAC;AACxE;","names":["createOnKeyStroke"]}