{"version":3,"file":"useAriaLiveRegion.cjs","sources":["../../../../src/hooks/useAriaLiveRegion/useAriaLiveRegion.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport { usePreviousValue } from \"../usePreviousValue/usePreviousValue.js\";\n\nexport interface UseAriaLiveRegionOptions {\n    /**\n     * @default \"polite\"\n     */\n    politeness?: \"polite\" | \"assertive\" | \"off\";\n}\n\n/**\n * Hjelper for å bare sette aria-live dersom det har skjedd en endring. Unngår at innholdet annonseres ved sidelasting.\n * @param watch Verdi som indikerer at det har skjedd en endring. For eksempel en boolean som styrer en loader, eller selve teksten som skal bli lest opp.\n * @param options Bestem om aria-live skal være polite, assertive eller off.\n * @returns\n */\nexport function useAriaLiveRegion(\n    watch: unknown | unknown[],\n    options?: UseAriaLiveRegionOptions,\n) {\n    const previousValue = usePreviousValue(watch);\n\n    const [hasChanged, setHasChanged] = useState(false);\n    useEffect(() => {\n        if (Array.isArray(watch) && Array.isArray(previousValue)) {\n            for (let i = 0; i < watch.length; i++) {\n                if (watch[i] !== previousValue[i] && !hasChanged) {\n                    setHasChanged(true);\n                    break;\n                }\n            }\n        } else if (previousValue && watch !== previousValue && !hasChanged) {\n            setHasChanged(true);\n        }\n    }, [watch, previousValue, hasChanged]);\n\n    return {\n        \"aria-live\": hasChanged ? options?.politeness || \"polite\" : undefined,\n    };\n}\n"],"names":["watch","options","previousValue","usePreviousValue","hasChanged","setHasChanged","useState","useEffect","Array","isArray","i","length","politeness"],"mappings":"yLAgBO,SACHA,EACAC,GAEA,MAAMC,EAAgBC,EAAAA,iBAAiBH,IAEhCI,EAAYC,GAAiBC,EAAAA,UAAS,GAC7CC,OAAAA,EAAAA,UAAU,KACN,GAAIC,MAAMC,QAAQT,IAAUQ,MAAMC,QAAQP,IACtC,IAAA,IAASQ,EAAI,EAAGA,EAAIV,EAAMW,OAAQD,IAC9B,GAAIV,EAAMU,KAAOR,EAAcQ,KAAON,EAAY,CAC9CC,GAAc,GACd,KACJ,OAEGH,GAAiBF,IAAUE,IAAkBE,GACpDC,GAAc,IAEnB,CAACL,EAAOE,EAAeE,IAEnB,CACH,YAAaA,EAAaH,GAASW,YAAc,cAAW,EAEpE"}