UNPKG

@sikka/hawa

Version:

Modern UI Kit made with Tailwind

63 lines (59 loc) 2 kB
"use client"; var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, { get: (a, b) => (typeof require !== "undefined" ? require : a)[b] }) : x)(function(x) { if (typeof require !== "undefined") return require.apply(this, arguments); throw Error('Dynamic require of "' + x + '" is not supported'); }); // hooks/useBreakpoint.ts import { useState, useEffect } from "react"; var useBreakpoint = () => { const [breakpoint, setBreakpoint] = useState(null); useEffect(() => { if (typeof window !== "undefined") { const resize = () => { setBreakpoint(window.innerWidth); }; resize(); window.addEventListener("resize", resize); return () => { window.removeEventListener("resize", resize); }; } }, []); return breakpoint; }; // hooks/useClickOutside.ts import { useEffect as useEffect2, useRef } from "react"; var DEFAULT_EVENTS = ["mousedown", "touchstart"]; function useClickOutside(handler, events, nodes) { const ref = useRef(); useEffect2(() => { const listener = (event) => { const { target } = event != null ? event : {}; if (Array.isArray(nodes)) { const shouldIgnore = (target == null ? void 0 : target.hasAttribute("data-ignore-outside-clicks")) || !document.body.contains(target) && target.tagName !== "HTML"; const shouldTrigger = nodes.every( (node) => !!node && !event.composedPath().includes(node) ); shouldTrigger && !shouldIgnore && handler(); } else if (ref.current && !ref.current.contains(target)) { handler(); } }; (events || DEFAULT_EVENTS).forEach( (fn) => document.addEventListener(fn, listener) ); return () => { (events || DEFAULT_EVENTS).forEach( (fn) => document.removeEventListener(fn, listener) ); }; }, [ref, handler, nodes]); return ref; } export { __require, useBreakpoint, useClickOutside };