{"version":3,"file":"mergeRefs.cjs","sources":["../../../src/utilities/mergeRefs.ts"],"sourcesContent":["import {\n    type ForwardedRef,\n    type MutableRefObject,\n    type RefCallback,\n    useMemo,\n} from \"react\";\n\n/**\n * Slår sammen flere refs til én, for eksempel hvis du har både en\n * egen ref i en komponent og også vil kunne ta inn en forwardRef\n * fra brukeren av komponenten.\n * @param refs Liste over refs du vil slå sammen\n * @returns En `RefCallback` du kan sende videre til en komponent/element\n * @example\n * const ref = useRef<HTMLElement>(null);\n * const combinedRef = mergeRefs(ref, forwardedRef, anotherRef);\n *\n * return <div ref={combinedRef} {...props} />;\n */\nexport function mergeRefs<T>(\n    ...refs: (ForwardedRef<T> | MutableRefObject<T> | undefined)[]\n): RefCallback<T> {\n    return function combinedRef(instance: T | null) {\n        for (const ref of refs) {\n            if (!ref) continue;\n\n            if (typeof ref === \"function\") {\n                ref(instance);\n            } else if (ref) {\n                ref.current = instance;\n            }\n        }\n    };\n}\n\n/**\n * Gjør det samme som {@link mergeRefs}, men wrappet i en `useMemo`, hvis du\n * vil unngå å lage en ny funksjon ved hver render. Som regel ikke nødvendig.\n * @param refs Liste over refs du vil slå sammen\n * @returns En `RefCallback` du kan sende videre til en komponent/element\n * @example const combinedRef = useMergeRefs(ref, forwardedRef, anotherRef);\n */\nexport function useMergeRefs<T>(\n    ...refs: (ForwardedRef<T> | MutableRefObject<T> | undefined)[]\n): RefCallback<T> {\n    return useMemo(() => mergeRefs(...refs), [refs]);\n}\n"],"names":["mergeRefs","refs","instance","ref","current","useMemo"],"mappings":"yGAmBO,SAASA,KACTC,GAEH,OAAO,SAAqBC,GACxB,IAAA,MAAWC,KAAOF,EACTE,IAEc,mBAARA,EACPA,EAAID,GACGC,IACPA,EAAIC,QAAUF,GAG1B,CACJ,0CASO,YACAD,GAEH,OAAOI,EAAAA,QAAQ,IAAML,KAAaC,GAAO,CAACA,GAC9C"}