{"version":3,"file":"event-hooks.cjs","sources":["../../src/util/event-hooks.ts"],"sourcesContent":["import { useEffect, useCallback } from \"react\";\n\nexport function useKeyHandler(\n  handler: (event: KeyboardEvent) => void,\n  options:\n    | { event?: string; keys?: string[]; target?: HTMLElement }\n    | any[] = undefined,\n  deps: any[] | undefined = undefined,\n) {\n  if (Array.isArray(options)) {\n    deps = options;\n    options = {};\n  }\n  const { event = \"keydown\", keys = [], target = document } = options;\n  const _callback = useCallback(\n    (event: KeyboardEvent) => {\n      if (keys.length === 0 || keys.includes(event.key)) {\n        handler(event);\n      }\n    },\n    [handler, keys],\n  );\n\n  return useEventHandler(target, event, _callback, deps);\n}\n\nexport function useEventHandler(\n  target: HTMLElement | Document,\n  event: string,\n  handler: (event: Event) => void,\n  deps: any[] | undefined = undefined,\n) {\n  const _callback = deps ? useCallback(handler, deps) : handler;\n\n  useEffect(() => {\n    const handleEvent = (event: Event) => {\n      _callback(event);\n    };\n\n    target.addEventListener(event, handleEvent);\n    return () => {\n      target.removeEventListener(event, handleEvent);\n    };\n  }, [_callback, event, target]);\n}\n"],"names":["useCallback","event","useEffect"],"mappings":";;;AAEO,SAAS,cACd,SACA,UAEY,QACZ,OAA0B,QAC1B;AACA,MAAI,MAAM,QAAQ,OAAO,GAAG;AAC1B,WAAO;AACP,cAAU,CAAA;AAAA,EACZ;AACA,QAAM,EAAE,QAAQ,WAAW,OAAO,CAAA,GAAI,SAAS,aAAa;AAC5D,QAAM,YAAYA,MAAAA;AAAAA,IAChB,CAACC,WAAyB;AACxB,UAAI,KAAK,WAAW,KAAK,KAAK,SAASA,OAAM,GAAG,GAAG;AACjD,gBAAQA,MAAK;AAAA,MACf;AAAA,IACF;AAAA,IACA,CAAC,SAAS,IAAI;AAAA,EAAA;AAGhB,SAAO,gBAAgB,QAAQ,OAAO,WAAW,IAAI;AACvD;AAEO,SAAS,gBACd,QACA,OACA,SACA,OAA0B,QAC1B;AACA,QAAM,YAAY,OAAOD,MAAAA,YAAY,SAAS,IAAI,IAAI;AAEtDE,QAAAA,UAAU,MAAM;AACd,UAAM,cAAc,CAACD,WAAiB;AACpC,gBAAUA,MAAK;AAAA,IACjB;AAEA,WAAO,iBAAiB,OAAO,WAAW;AAC1C,WAAO,MAAM;AACX,aAAO,oBAAoB,OAAO,WAAW;AAAA,IAC/C;AAAA,EACF,GAAG,CAAC,WAAW,OAAO,MAAM,CAAC;AAC/B;;;"}