{"version":3,"file":"useLocalStorage.cjs","sources":["../../../../src/hooks/useLocalStorage/useLocalStorage.ts"],"sourcesContent":["import { useCallback, useState } from \"react\";\n\nexport const useLocalStorage = <T>(\n    key: string,\n    defaultValue: T,\n): [T, React.Dispatch<React.SetStateAction<T>>] => {\n    const [state, setState] = useState<T>(() => {\n        if (typeof window === \"undefined\" || !localStorage) {\n            return defaultValue;\n        }\n        const storedValue = JSON.parse(localStorage.getItem(key) || \"null\");\n        return storedValue || defaultValue;\n    });\n\n    const updateState: React.Dispatch<React.SetStateAction<T>> = useCallback(\n        (setStateAction: React.SetStateAction<T>) => {\n            setState((previousValue) => {\n                const newValue =\n                    typeof setStateAction === \"function\"\n                        ? (setStateAction as (prevState: T) => T)(previousValue)\n                        : setStateAction;\n\n                if (typeof window !== \"undefined\" && localStorage) {\n                    localStorage.setItem(key, JSON.stringify(newValue));\n                }\n\n                return newValue;\n            });\n        },\n        [key],\n    );\n\n    return [state, updateState];\n};\n"],"names":["key","defaultValue","state","setState","useState","window","localStorage","JSON","parse","getItem","useCallback","setStateAction","previousValue","newValue","setItem","stringify"],"mappings":"iIAE+B,CAC3BA,EACAC,KAEA,MAAOC,EAAOC,GAAYC,EAAAA,SAAY,WACvBC,OAAW,MAAgBC,aAC3BL,EAESM,KAAKC,MAAMF,aAAaG,QAAQT,IAAQ,SACtCC,GAqB1B,MAAO,CAACC,EAlBqDQ,EAAAA,YACxDC,IACGR,EAAUS,IACN,MAAMC,EACwB,mBAAnBF,EACAA,EAAuCC,GACxCD,EAEV,cAAWN,OAAW,KAAeC,cACjCA,aAAaQ,QAAQd,EAAKO,KAAKQ,UAAUF,IAGtCA,KAGf,CAACb"}