{"version":3,"file":"hooks-BQw3Dsve.mjs","names":["React","useEffect","useRef","useRipple","ref","t0","t1","$","_c","inverted","undefined","enabled","t2","Symbol","for","ripplesRef","t3","t4","timer","cleanup","current","forEach","_temp","handlePointerDown","e","elem","rect","getBoundingClientRect","left","clientX","top","clientY","height","clientHeight","width","clientWidth","diameter","Math","max","$child_0","document","createElement","$child","className","style","position","backgroundColor","opacity","transform","borderRadius","prepend","push","clearTimeout","window","setTimeout","elem_0","addEventListener","removeEventListener","remove","useCallback","useEffect","useRef","useIsMounted","$","_c","mountedRef","t0","t1","Symbol","for","current","t2","useCallback","useEffect","useRef","useState","useIsClosing","t0","t1","$","_c","initialValue","undefined","delay","t2","t3","setState","isOpen","isClosing","isMounted","t4","t5","Symbol","for","current","t6","newState","setTimeout","setIsOpen","t7","useEffect","useRef","usePrevious","value","T","ref","current","Dispatch","MutableRefObject","SetStateAction","useCallback","useEffect","useRef","useState","useDebounce","value","delay","$","_c","debouncedValue","setImmediateValue","t0","t1","timer","setTimeout","clearTimeout","t2","useRefDebounce","debouncedValueRef","current","useStateDebounce","initialValue","setDebouncedValue","Symbol","for","value_0","immediate","undefined","setValue","t3","useCallback","useState","CopiedValue","CopyFn","text","Promise","useCopyToClipboard","$","_c","copiedText","setCopiedText","t0","Symbol","for","navigator","clipboard","console","warn","writeText","t1","error","copy","useEffect","useLayoutEffect","useIsomorphicLayoutEffect","window","useEffect","useRef","RefObject","useIsomorphicLayoutEffect","useEventListener","MediaQueryListEventMap","eventName","K","handler","event","element","MediaQueryList","options","AddEventListenerOptions","WindowEventMap","HTMLElementEventMap","SVGElementEventMap","Element","HTMLDivElement","SVGElement","T","DocumentEventMap","Document","$","_c","savedHandler","t0","t1","current","t2","targetElement","window","addEventListener","listener","removeEventListener","t3","RefObject","useEventListener","EventType","useOnClickOutside","ref","handler","t0","t1","$","_c","eventType","undefined","t2","eventListenerOptions","t3","event","target","Node","isConnected","isOutside","Array","isArray","filter","_temp","every","r_0","r","current","contains","Boolean","Ref","useMemo","RefObject","RefCallback","instance","T","useMergeRefs","refs","Array","Instance","every","ref","value","forEach","current","useStrictMergeRefs","Error","HTMLProps","useState","callAll","Array","fns","args","Args","forEach","fn","useDoubleCheck","$","_c","doubleCheck","setDoubleCheck","t0","getButtonProps","userProps","onBlur","onClick","e","preventDefault","onKeyUp","e_0","key","P","t1","useEffect","useRef","useState","State","isIntersecting","entry","IntersectionObserverEntry","UseIntersectionObserverOptions","root","Element","Document","rootMargin","threshold","freezeOnceVisible","onChange","initialIsIntersecting","IntersectionReturn","node","ref","useIntersectionObserver","setRef","state","setState","undefined","callbackRef","current","frozen","window","unobserve","observer","IntersectionObserver","entries","thresholds","Array","isArray","forEach","some","intersectionRatio","observe","disconnect","JSON","stringify","prevRef","target","result"],"sources":["../src/hooks/useRipple.tsx","../src/hooks/useIsMounted.ts","../src/hooks/useIsClosing.ts","../src/hooks/usePrevious.ts","../src/hooks/useDebounce.ts","../src/hooks/useCopyToClipboard.ts","../src/hooks/useIsomorphicLayoutEffect.ts","../src/hooks/useEventListener.ts","../src/hooks/useOnClickOutside.ts","../src/hooks/useMergeRefs.ts","../src/hooks/useDoubleCheck.ts","../src/hooks/useIntersectionObserver.ts"],"sourcesContent":["import React, { useEffect, useRef } from \"react\";\n\n/**\n * This hook accepts a ref to any element and adds a click event handler that creates ripples when click\n */\nexport const useRipple = <T extends HTMLElement>(\n  ref: React.RefObject<T>,\n  inverted = false,\n  enabled = true,\n) => {\n  const ripplesRef = useRef<HTMLSpanElement[]>([]);\n\n  useEffect(() => {\n    if (!enabled) {\n      return;\n    }\n\n    let timer: number | null = null;\n\n    const cleanup = () => {\n      ripplesRef.current.forEach(($child) => $child.remove());\n      ripplesRef.current = [];\n      timer = null;\n    };\n\n    //add a click handler for the ripple\n    const handlePointerDown = (e: MouseEvent) => {\n      if (ref.current) {\n        const elem = ref.current;\n\n        //calculate the position and dimensions of the ripple.\n        //based on click position and button dimensions\n        const rect = elem.getBoundingClientRect();\n        const left = (e.clientX ?? 0) - rect.left;\n        const top = (e.clientY ?? 0) - rect.top;\n        const height = elem.clientHeight;\n        const width = elem.clientWidth;\n        const diameter = Math.max(width, height);\n\n        const $child = document.createElement(\"span\");\n        $child.className = \"motion-safe:animate-ripple\";\n\n        $child.style.position = \"absolute\";\n        $child.style.backgroundColor = inverted ? \"var(--color-custom-4)\" : \"#ffffff\";\n        $child.style.opacity = inverted ? \"75%\" : \"50%\";\n        $child.style.transform = \"scale(0)\";\n        $child.style.borderRadius = \"50%\";\n        $child.style.top = `${top - diameter / 2}px`;\n        $child.style.left = `${left - diameter / 2}px`;\n        $child.style.height = `${Math.max(width, height)}px`;\n        $child.style.width = `${Math.max(width, height)}px`;\n\n        elem.prepend($child);\n\n        ripplesRef.current.push($child);\n\n        if (timer !== null) {\n          clearTimeout(timer);\n        }\n        timer = window.setTimeout(cleanup, 1000);\n      }\n    };\n\n    if (ref.current) {\n      const elem = ref.current;\n      elem.addEventListener(\"pointerdown\", handlePointerDown);\n\n      return () => {\n        elem.removeEventListener(\"pointerdown\", handlePointerDown);\n      };\n    }\n  }, [ref, enabled, inverted]);\n\n  return null;\n};\n","import { useCallback, useEffect, useRef } from \"react\";\n\nexport const useIsMounted = () => {\n  const mountedRef = useRef(false);\n\n  useEffect(() => {\n    mountedRef.current = true;\n    return () => {\n      mountedRef.current = false;\n    };\n  }, []);\n\n  return useCallback(() => {\n    return mountedRef.current;\n  }, []);\n};\n","import { useCallback, useEffect, useRef, useState } from \"react\";\n\nexport function useIsClosing(initialValue = false, delay = 500) {\n  const [[isOpen, isClosing], setState] = useState([initialValue, false]);\n  const isMounted = useRef(false);\n  useEffect(() => {\n    isMounted.current = true;\n    return () => void (isMounted.current = false);\n  }, []);\n  const setIsOpen = useCallback(\n    (newState: boolean) => {\n      if (newState) {\n        setState([true, false]);\n      } else {\n        setState([true, true]);\n        setTimeout(() => {\n          if (isMounted.current) {\n            setState([false, false]);\n          }\n        }, delay);\n      }\n    },\n    [delay],\n  );\n\n  return { isOpen, isClosing, setIsOpen };\n}\n","import { useEffect, useRef } from \"react\";\n\nexport function usePrevious<T>(value: T) {\n  const ref = useRef<T>(null!);\n  useEffect(() => {\n    ref.current = value;\n  });\n  return ref.current;\n}\n","import {\n  Dispatch,\n  MutableRefObject,\n  SetStateAction,\n  useCallback,\n  useEffect,\n  useRef,\n  useState,\n} from \"react\";\n\nexport function useDebounce<T>(value: T, delay?: number): [T, Dispatch<SetStateAction<T>>] {\n  const [debouncedValue, setImmediateValue] = useState(value);\n\n  useEffect(() => {\n    const timer = setTimeout(() => setImmediateValue(value), delay || 500);\n    return () => {\n      clearTimeout(timer);\n    };\n  }, [value, delay]);\n  return [debouncedValue, setImmediateValue];\n}\n\nexport function useRefDebounce<T>(value: T, delay?: number): MutableRefObject<T> {\n  const debouncedValueRef = useRef(value);\n\n  useEffect(() => {\n    const timer = setTimeout(() => {\n      debouncedValueRef.current = value;\n    }, delay || 500);\n    return () => {\n      clearTimeout(timer);\n    };\n  }, [value, delay]);\n  return debouncedValueRef;\n}\n\nexport function useStateDebounce<T>(\n  initialValue: T,\n  delay?: number,\n): [T, T, (initialValue: SetStateAction<T>, immediate?: boolean) => void] {\n  const [value, setImmediateValue] = useState(initialValue);\n  const [debouncedValue, setDebouncedValue] = useState(initialValue);\n\n  const setValue = useCallback((value: SetStateAction<T>, immediate = false) => {\n    setImmediateValue(value);\n    if (immediate) {\n      setDebouncedValue(value);\n    }\n  }, []);\n\n  useEffect(() => {\n    const timer = setTimeout(() => setDebouncedValue(value), delay || 500);\n    return () => {\n      clearTimeout(timer);\n    };\n  }, [value, delay]);\n\n  return [value, debouncedValue, setValue];\n}\n","import { useCallback, useState } from \"react\";\n\ntype CopiedValue = string | null;\n\ntype CopyFn = (text: string) => Promise<boolean>;\n\nexport function useCopyToClipboard(): [CopiedValue, CopyFn] {\n  const [copiedText, setCopiedText] = useState<CopiedValue>(null);\n\n  const copy: CopyFn = useCallback(async (text) => {\n    if (!navigator?.clipboard) {\n      console.warn(\"Clipboard not supported\");\n      return false;\n    }\n\n    try {\n      await navigator.clipboard.writeText(text);\n      setCopiedText(text);\n      return true;\n    } catch (error) {\n      console.warn(\"Copy failed\", error);\n      setCopiedText(null);\n      return false;\n    }\n  }, []);\n\n  return [copiedText, copy];\n}\n","import { useEffect, useLayoutEffect } from \"react\";\n\nexport const useIsomorphicLayoutEffect =\n  typeof window !== \"undefined\" ? useLayoutEffect : useEffect;\n","import { useEffect, useRef } from \"react\";\n\nimport type { RefObject } from \"react\";\nimport { useIsomorphicLayoutEffect } from \"./useIsomorphicLayoutEffect\";\n\n// MediaQueryList Event based useEventListener interface\nfunction useEventListener<K extends keyof MediaQueryListEventMap>(\n  eventName: K,\n  handler: (event: MediaQueryListEventMap[K]) => void,\n  element: RefObject<MediaQueryList>,\n  options?: boolean | AddEventListenerOptions,\n): void;\n\n// Window Event based useEventListener interface\nfunction useEventListener<K extends keyof WindowEventMap>(\n  eventName: K,\n  handler: (event: WindowEventMap[K]) => void,\n  element?: undefined,\n  options?: boolean | AddEventListenerOptions,\n): void;\n\n// Element Event based useEventListener interface\nfunction useEventListener<\n  K extends keyof HTMLElementEventMap & keyof SVGElementEventMap,\n  T extends Element = K extends keyof HTMLElementEventMap ? HTMLDivElement : SVGElement,\n>(\n  eventName: K,\n  handler: ((event: HTMLElementEventMap[K]) => void) | ((event: SVGElementEventMap[K]) => void),\n  element: RefObject<T>,\n  options?: boolean | AddEventListenerOptions,\n): void;\n\n// Document Event based useEventListener interface\nfunction useEventListener<K extends keyof DocumentEventMap>(\n  eventName: K,\n  handler: (event: DocumentEventMap[K]) => void,\n  element: RefObject<Document>,\n  options?: boolean | AddEventListenerOptions,\n): void;\n\nfunction useEventListener<\n  KW extends keyof WindowEventMap,\n  KH extends keyof HTMLElementEventMap & keyof SVGElementEventMap,\n  KM extends keyof MediaQueryListEventMap,\n  T extends HTMLElement | SVGAElement | MediaQueryList = HTMLElement,\n>(\n  eventName: KW | KH | KM,\n  handler: (\n    event:\n      | WindowEventMap[KW]\n      | HTMLElementEventMap[KH]\n      | SVGElementEventMap[KH]\n      | MediaQueryListEventMap[KM]\n      | Event,\n  ) => void,\n  element?: RefObject<T>,\n  options?: boolean | AddEventListenerOptions,\n) {\n  // Create a ref that stores handler\n  const savedHandler = useRef(handler);\n\n  useIsomorphicLayoutEffect(() => {\n    savedHandler.current = handler;\n  }, [handler]);\n\n  useEffect(() => {\n    // Define the listening target\n    const targetElement: T | Window = element?.current ?? window;\n\n    if (!(targetElement && targetElement.addEventListener)) return;\n\n    // Create event listener that calls handler function stored in ref\n    const listener: typeof handler = (event) => {\n      savedHandler.current(event);\n    };\n\n    targetElement.addEventListener(eventName, listener, options);\n\n    // Remove event listener on cleanup\n    return () => {\n      targetElement.removeEventListener(eventName, listener, options);\n    };\n  }, [eventName, element, options]);\n}\n\nexport { useEventListener };\n","import type { RefObject } from \"react\";\nimport { useEventListener } from \"./useEventListener\";\n\ntype EventType = \"mousedown\" | \"mouseup\" | \"touchstart\" | \"touchend\" | \"focusin\" | \"focusout\";\n\nexport function useOnClickOutside<T extends HTMLElement = HTMLElement>(\n  ref: RefObject<T> | RefObject<T>[],\n  handler: (event: MouseEvent | TouchEvent | FocusEvent) => void,\n  eventType: EventType = \"mousedown\",\n  eventListenerOptions: AddEventListenerOptions = {},\n): void {\n  useEventListener(\n    eventType,\n    (event) => {\n      const target = event.target as Node;\n\n      // Do nothing if the target is not connected element with document\n      if (!target || !target.isConnected) {\n        return;\n      }\n\n      const isOutside = Array.isArray(ref)\n        ? ref\n            .filter((r) => Boolean(r.current))\n            .every((r) => r.current && !r.current.contains(target))\n        : ref.current && !ref.current.contains(target);\n\n      if (isOutside) {\n        handler(event);\n      }\n    },\n    undefined,\n    eventListenerOptions,\n  );\n}\n","import { Ref, useMemo, RefObject } from \"react\";\n\ntype RefCallback<T> = (instance: T | null) => void;\n\n/**\n * Merges an array of refs into a single memoized callback ref or `null`.\n * @see https://floating-ui.com/docs/react-utils#usemergerefs\n */\nexport function useMergeRefs<Instance>(\n  refs: Array<Ref<Instance> | undefined>,\n): RefCallback<Instance> | null {\n  return useMemo(() => {\n    if (refs.every((ref) => ref == null)) {\n      return null;\n    }\n\n    return (value) => {\n      refs.forEach((ref) => {\n        if (typeof ref === \"function\") {\n          ref(value);\n        } else if (ref != null) {\n          (ref as RefObject<Instance | null>).current = value;\n        }\n      });\n    };\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, refs);\n}\n\nexport function useStrictMergeRefs<Instance>(\n  refs: Array<Ref<Instance> | undefined>,\n): RefCallback<Instance> {\n  return useMemo(() => {\n    if (refs.every((ref) => ref == null)) {\n      throw new Error(\"define at least one ref with useMergeRefs\");\n    }\n\n    return (value) => {\n      refs.forEach((ref) => {\n        if (typeof ref === \"function\") {\n          ref(value);\n        } else if (ref != null) {\n          (ref as RefObject<Instance | null>).current = value;\n        }\n      });\n    };\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, refs);\n}\n","import { HTMLProps, useState } from \"react\";\n\n/**\n * Taken from epic-stack\n * file : https://github.com/epicweb-dev/epic-stack/blob/main/app/utils/misc.tsx\n */\n\nfunction callAll<Args extends Array<unknown>>(\n  ...fns: Array<((...args: Args) => unknown) | undefined>\n) {\n  return (...args: Args) => fns.forEach((fn) => fn?.(...args));\n}\n\nexport function useDoubleCheck<\n  P extends Omit<HTMLProps<Element>, \"size\"> = Omit<HTMLProps<Element>, \"size\">,\n>() {\n  const [doubleCheck, setDoubleCheck] = useState(false);\n\n  function getButtonProps(userProps?: P) {\n    const onBlur: P[\"onBlur\"] = () => setDoubleCheck(false);\n    const onClick: P[\"onClick\"] = doubleCheck\n      ? () => void setDoubleCheck(false)\n      : (e) => {\n          e.preventDefault();\n          setDoubleCheck(true);\n        };\n\n    const onKeyUp: HTMLProps<Element>[\"onKeyUp\"] = (e) => {\n      if (e.key === \"Escape\") {\n        setDoubleCheck(false);\n      }\n    };\n\n    return {\n      ...userProps,\n      onBlur: callAll(onBlur, userProps?.onBlur),\n      onClick: callAll(onClick, userProps?.onClick),\n      onKeyUp: callAll(onKeyUp, userProps?.onKeyUp),\n    } as P;\n  }\n\n  return { doubleCheck, getButtonProps };\n}\n","import { useEffect, useRef, useState } from \"react\";\n\ntype State = {\n  isIntersecting: boolean;\n  entry?: IntersectionObserverEntry;\n};\n\ntype UseIntersectionObserverOptions = {\n  root?: Element | Document | null;\n  rootMargin?: string;\n  threshold?: number | number[];\n  freezeOnceVisible?: boolean;\n  onChange?: (isIntersecting: boolean, entry: IntersectionObserverEntry) => void;\n  initialIsIntersecting?: boolean;\n};\n\ntype IntersectionReturn = [\n  (node?: Element | null) => void,\n  boolean,\n  IntersectionObserverEntry | undefined,\n] & {\n  ref: (node?: Element | null) => void;\n  isIntersecting: boolean;\n  entry?: IntersectionObserverEntry;\n};\n\nexport function useIntersectionObserver({\n  threshold = 0,\n  root = null,\n  rootMargin = \"0%\",\n  freezeOnceVisible = false,\n  initialIsIntersecting = false,\n  onChange,\n}: UseIntersectionObserverOptions = {}): IntersectionReturn {\n  const [ref, setRef] = useState<Element | null>(null);\n\n  const [state, setState] = useState<State>(() => ({\n    isIntersecting: initialIsIntersecting,\n    entry: undefined,\n  }));\n\n  const callbackRef = useRef<UseIntersectionObserverOptions[\"onChange\"]>(onChange);\n\n  callbackRef.current = onChange;\n\n  const frozen = state.entry?.isIntersecting && freezeOnceVisible;\n\n  useEffect(() => {\n    // Ensure we have a ref to observe\n    if (!ref) return;\n\n    // Ensure the browser supports the Intersection Observer API\n    if (!(\"IntersectionObserver\" in window)) return;\n\n    // Skip if frozen\n    if (frozen) return;\n\n    let unobserve: (() => void) | undefined;\n\n    const observer = new IntersectionObserver(\n      (entries: IntersectionObserverEntry[]): void => {\n        const thresholds = Array.isArray(observer.thresholds)\n          ? observer.thresholds\n          : [observer.thresholds];\n\n        entries.forEach((entry) => {\n          const isIntersecting =\n            entry.isIntersecting &&\n            thresholds.some((threshold) => entry.intersectionRatio >= threshold);\n\n          setState({ isIntersecting, entry });\n\n          if (callbackRef.current) {\n            callbackRef.current(isIntersecting, entry);\n          }\n\n          if (isIntersecting && freezeOnceVisible && unobserve) {\n            unobserve();\n            unobserve = undefined;\n          }\n        });\n      },\n      { threshold, root, rootMargin },\n    );\n\n    observer.observe(ref);\n\n    return () => {\n      observer.disconnect();\n    };\n\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [\n    ref,\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    JSON.stringify(threshold),\n    root,\n    rootMargin,\n    frozen,\n    freezeOnceVisible,\n  ]);\n\n  // ensures that if the observed element changes, the intersection observer is reinitialized\n  const prevRef = useRef<Element | null>(null);\n\n  useEffect(() => {\n    if (\n      !ref &&\n      state.entry?.target &&\n      !freezeOnceVisible &&\n      !frozen &&\n      prevRef.current !== state.entry.target\n    ) {\n      prevRef.current = state.entry.target;\n      setState({ isIntersecting: initialIsIntersecting, entry: undefined });\n    }\n  }, [ref, state.entry, freezeOnceVisible, frozen, initialIsIntersecting]);\n\n  const result = [setRef, !!state.isIntersecting, state.entry] as IntersectionReturn;\n\n  // Support object destructuring, by adding the specific values.\n  result.ref = result[0];\n  result.isIntersecting = result[1];\n  result.entry = result[2];\n\n  return result;\n}\n"],"mappings":"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"}