@yamada-ui/react
Version:
React UI components of the Yamada, by the Yamada, for the Yamada built with React and Emotion
1 lines • 1.38 kB
Source Map (JSON)
{"version":3,"file":"index.cjs","names":["useEnvironment","useCallbackRef"],"sources":["../../../../src/hooks/use-window-event/index.ts"],"sourcesContent":["\"use client\"\n\nimport { useEffect } from \"react\"\nimport { useEnvironment } from \"../../core\"\nimport { useCallbackRef } from \"../../utils\"\n\ntype Handler<E extends string> = E extends keyof WindowEventMap\n ? (ev: WindowEventMap[E]) => void\n : (ev: CustomEvent) => void\ntype Options = AddEventListenerOptions | boolean\n\n/**\n * `useWindowEvent` is a custom hook that assigns an event listener to `window`.\n *\n * @see https://yamada-ui.com/docs/hooks/use-window-event\n */\nexport const useWindowEvent = <E extends string>(\n ev: E,\n handler: Handler<E>,\n options?: Options,\n) => {\n const { getWindow } = useEnvironment()\n const listener = useCallbackRef(\n handler,\n ) as unknown as EventListenerOrEventListenerObject\n\n useEffect(() => {\n getWindow()?.addEventListener(ev, listener, options)\n\n return () => {\n getWindow()?.removeEventListener(ev, listener, options)\n }\n }, [ev, listener, options, getWindow])\n}\n"],"mappings":";;;;;;;;;;;;;;;AAgBA,MAAa,kBACX,IACA,SACA,YACG;CACH,MAAM,EAAE,cAAcA,6CAAgB;CACtC,MAAM,WAAWC,2BACf,QACD;AAED,4BAAgB;AACd,aAAW,EAAE,iBAAiB,IAAI,UAAU,QAAQ;AAEpD,eAAa;AACX,cAAW,EAAE,oBAAoB,IAAI,UAAU,QAAQ;;IAExD;EAAC;EAAI;EAAU;EAAS;EAAU,CAAC"}