{"version":3,"names":["StorageItems","SafeStorage","constructor","clear","this","tryAccessLocalStorageOrWarn","localStorage","getItem","key","getParsedJSON","fallback","item","tryJSONOrWarn","JSON","parse","index","length","tryOrElse","removeItem","setItem","value","setJSON","obj","stringified","stringify","tryTo","orElse","console","warn","e"],"sources":["src/utils/local-storage-utils.tsx"],"sourcesContent":["import {StandaloneSearchBoxAnalytics} from '@coveo/headless';\n\nexport enum StorageItems {\n  RECENT_QUERIES = 'coveo-recent-queries',\n  STANDALONE_SEARCH_BOX_DATA = 'coveo-standalone-search-box-data',\n}\n\nexport interface StandaloneSearchBoxData {\n  value: string;\n  enableQuerySyntax?: boolean;\n  analytics: StandaloneSearchBoxAnalytics;\n}\n\nexport class SafeStorage implements Storage {\n  constructor() {}\n  public clear() {\n    return this.tryAccessLocalStorageOrWarn(\n      () => localStorage.clear(),\n      () => {}\n    );\n  }\n\n  public getItem(key: StorageItems) {\n    return this.tryAccessLocalStorageOrWarn(\n      () => localStorage.getItem(key),\n      () => null\n    );\n  }\n\n  public getParsedJSON<T>(key: StorageItems, fallback: T) {\n    const item = this.getItem(key);\n    if (!item) {\n      return fallback;\n    }\n    return this.tryJSONOrWarn(\n      key,\n      () => JSON.parse(item) as T,\n      () => fallback\n    );\n  }\n\n  public key(index: number) {\n    return this.tryAccessLocalStorageOrWarn(\n      () => localStorage.key(index),\n      () => null\n    );\n  }\n\n  public get length() {\n    return this.tryOrElse(\n      () => localStorage.length,\n      () => 0\n    );\n  }\n\n  public removeItem(key: StorageItems) {\n    return this.tryAccessLocalStorageOrWarn(\n      () => localStorage.removeItem(key),\n      () => {}\n    );\n  }\n\n  public setItem(key: StorageItems, value: string) {\n    return this.tryAccessLocalStorageOrWarn(\n      () => localStorage.setItem(key, value),\n      () => {}\n    );\n  }\n\n  public setJSON(key: StorageItems, obj: unknown) {\n    const stringified = this.tryJSONOrWarn(\n      key,\n      () => JSON.stringify(obj),\n      () => JSON.stringify({})\n    );\n    return this.setItem(key, stringified);\n  }\n\n  private tryAccessLocalStorageOrWarn<OnSuccess, OnFailure>(\n    tryTo: () => OnSuccess,\n    orElse: () => OnFailure\n  ) {\n    return this.tryOrElse(tryTo, () => {\n      console.warn(\n        'Error while trying to read or modify local storage. This can be caused by browser specific settings.'\n      );\n      return orElse();\n    });\n  }\n\n  private tryJSONOrWarn<OnSuccess, OnFailure>(\n    key: StorageItems,\n    tryTo: () => OnSuccess,\n    orElse: () => OnFailure\n  ) {\n    return this.tryOrElse(tryTo, () => {\n      console.warn(\n        `Error while trying to do JSON manipulation with local storage entry. ${key}`\n      );\n      return orElse();\n    });\n  }\n\n  private tryOrElse<OnSuccess, OnFailure>(\n    tryTo: () => OnSuccess,\n    orElse: () => OnFailure\n  ) {\n    try {\n      return tryTo();\n    } catch (e) {\n      console.warn(e as Error);\n      return orElse();\n    }\n  }\n}\n"],"mappings":"IAEYA,GAAZ,SAAYA,GACVA,EAAA,yCACAA,EAAA,gEACD,EAHD,CAAYA,MAAY,K,MAWXC,EACX,WAAAC,GAAA,CACO,KAAAC,GACL,OAAOC,KAAKC,6BACV,IAAMC,aAAaH,UACnB,Q,CAIG,OAAAI,CAAQC,GACb,OAAOJ,KAAKC,6BACV,IAAMC,aAAaC,QAAQC,KAC3B,IAAM,M,CAIH,aAAAC,CAAiBD,EAAmBE,GACzC,MAAMC,EAAOP,KAAKG,QAAQC,GAC1B,IAAKG,EAAM,CACT,OAAOD,C,CAET,OAAON,KAAKQ,cACVJ,GACA,IAAMK,KAAKC,MAAMH,KACjB,IAAMD,G,CAIH,GAAAF,CAAIO,GACT,OAAOX,KAAKC,6BACV,IAAMC,aAAaE,IAAIO,KACvB,IAAM,M,CAIV,UAAWC,GACT,OAAOZ,KAAKa,WACV,IAAMX,aAAaU,SACnB,IAAM,G,CAIH,UAAAE,CAAWV,GAChB,OAAOJ,KAAKC,6BACV,IAAMC,aAAaY,WAAWV,KAC9B,Q,CAIG,OAAAW,CAAQX,EAAmBY,GAChC,OAAOhB,KAAKC,6BACV,IAAMC,aAAaa,QAAQX,EAAKY,KAChC,Q,CAIG,OAAAC,CAAQb,EAAmBc,GAChC,MAAMC,EAAcnB,KAAKQ,cACvBJ,GACA,IAAMK,KAAKW,UAAUF,KACrB,IAAMT,KAAKW,UAAU,MAEvB,OAAOpB,KAAKe,QAAQX,EAAKe,E,CAGnB,2BAAAlB,CACNoB,EACAC,GAEA,OAAOtB,KAAKa,UAAUQ,GAAO,KAC3BE,QAAQC,KACN,wGAEF,OAAOF,GAAQ,G,CAIX,aAAAd,CACNJ,EACAiB,EACAC,GAEA,OAAOtB,KAAKa,UAAUQ,GAAO,KAC3BE,QAAQC,KACN,wEAAwEpB,KAE1E,OAAOkB,GAAQ,G,CAIX,SAAAT,CACNQ,EACAC,GAEA,IACE,OAAOD,G,CACP,MAAOI,GACPF,QAAQC,KAAKC,GACb,OAAOH,G"}