{"version":3,"file":"useInternalStorage.mjs","sources":["../../../../../../../web/src/utils/useInternalStorage.ts"],"sourcesContent":["import { useCallback, useState } from 'react';\n\nimport { IStorage, StorageKey } from './storage';\n\nconst tryParseJson = (value: string | null | undefined) => {\n  try {\n    if (value) {\n      return JSON.parse(value) as unknown;\n    }\n  } catch {\n    // no-op; assume data was malformed\n  }\n\n  return undefined;\n};\n\n/**\n * Low level wrapper around browser Storage (localStorage/sessionStorage). Do not use this hook directly, use\n * one of the useLocalStorage/useSessionStorage hook from inside ui and adminPortal instead.\n */\nexport const useInternalStorage = <T>(storage: IStorage, publicToken: string, key: StorageKey, defaultValue: T) => {\n  const [cachedValue, setCachedValue] = useState(() => {\n    const storedValue = storage.getItem(publicToken, key);\n    return storedValue ? (tryParseJson(storedValue) as T) : defaultValue;\n  });\n\n  const setValue = useCallback(\n    (value: T) => {\n      setCachedValue(value);\n      storage.setItem(publicToken, key, JSON.stringify(value));\n    },\n    [publicToken, key, storage],\n  );\n\n  return [cachedValue, setValue] as const;\n};\n"],"names":["tryParseJson","value","JSON","parse","undefined","useInternalStorage","storage","publicToken","key","defaultValue","cachedValue","setCachedValue","useState","storedValue","getItem","setValue","useCallback","setItem","stringify"],"mappings":";;;AAIA,MAAMA,eAAe,CAACC,KAAAA,GAAAA;IACpB,IAAI;AACF,QAAA,IAAIA,KAAAA,EAAO;YACT,OAAOC,IAAAA,CAAKC,KAAK,CAACF,KAAAA,CAAAA;AACpB,QAAA;AACF,IAAA,CAAA,CAAE,OAAM;;AAER,IAAA;IAEA,OAAOG,SAAAA;AACT,CAAA;AAEA;;;AAGC,IACM,MAAMC,kBAAAA,GAAqB,CAAIC,OAAAA,EAAmBC,aAAqBC,GAAAA,EAAiBC,YAAAA,GAAAA;AAC7F,IAAA,MAAM,CAACC,WAAAA,EAAaC,cAAAA,CAAe,GAAGC,CAAAA,CAAS,IAAA;AAC7C,QAAA,MAAMC,WAAAA,GAAcP,OAAAA,CAAQQ,OAAO,CAACP,WAAAA,EAAaC,GAAAA,CAAAA;QACjD,OAAOK,WAAAA,GAAeb,aAAaa,WAAAA,CAAAA,GAAqBJ,YAAAA;AAC1D,IAAA,CAAA,CAAA;IAEA,MAAMM,QAAAA,GAAWC,EACf,CAACf,KAAAA,GAAAA;QACCU,cAAAA,CAAeV,KAAAA,CAAAA;AACfK,QAAAA,OAAAA,CAAQW,OAAO,CAACV,WAAAA,EAAaC,GAAAA,EAAKN,IAAAA,CAAKgB,SAAS,CAACjB,KAAAA,CAAAA,CAAAA;IACnD,CAAA,EACA;AAACM,QAAAA,WAAAA;AAAaC,QAAAA,GAAAA;AAAKF,QAAAA;AAAQ,KAAA,CAAA;IAG7B,OAAO;AAACI,QAAAA,WAAAA;AAAaK,QAAAA;AAAS,KAAA;AAChC;;;;"}