{"version":3,"file":"store.cjs","sources":["../../../src/utils/store.ts"],"sourcesContent":["type StoreValue = string | number | boolean | null;\ntype StoreSubscriber = () => void;\n\n/**\n * @deprecated Import singleton instance 'store' from '@grafana/data' instead\n */\nexport class Store {\n  private subscribers: Map<string, Set<StoreSubscriber>> = new Map();\n\n  constructor() {\n    // Changes from other tabs\n    window.addEventListener('storage', (e) => {\n      if (e.key) {\n        this.notifySubscribers(e.key);\n      }\n    });\n  }\n\n  private notifySubscribers(key: string) {\n    const keySubscribers = this.subscribers.get(key);\n    if (keySubscribers) {\n      keySubscribers.forEach((subscriber) => subscriber());\n    }\n  }\n\n  subscribe(key: string, callback: StoreSubscriber) {\n    if (!this.subscribers.has(key)) {\n      this.subscribers.set(key, new Set());\n    }\n    this.subscribers.get(key)!.add(callback);\n\n    return () => {\n      const keySubscribers = this.subscribers.get(key);\n      if (keySubscribers) {\n        keySubscribers.delete(callback);\n        if (keySubscribers.size === 0) {\n          this.subscribers.delete(key);\n        }\n      }\n    };\n  }\n\n  get(key: string) {\n    return window.localStorage[key];\n  }\n\n  set(key: string, value: StoreValue) {\n    window.localStorage[key] = value;\n    this.notifySubscribers(key);\n  }\n\n  getBool(key: string, def: boolean): boolean {\n    if (def !== void 0 && !this.exists(key)) {\n      return def;\n    }\n    return window.localStorage[key] === 'true';\n  }\n\n  getObject<T = unknown>(key: string): T | undefined;\n  getObject<T = unknown>(key: string, def: T): T;\n  getObject<T = unknown>(key: string, def?: T) {\n    let ret = def;\n    if (this.exists(key)) {\n      const json = window.localStorage[key];\n      try {\n        ret = JSON.parse(json);\n      } catch (error) {\n        console.error(`Error parsing store object: ${key}. Returning default: ${def}. [${error}]`);\n      }\n    }\n    return ret;\n  }\n\n  /* Returns true when successfully stored, throws error if not successfully stored */\n  setObject(key: string, value: unknown) {\n    let json;\n    try {\n      json = JSON.stringify(value);\n    } catch (error) {\n      throw new Error(`Could not stringify object: ${key}. [${error}]`);\n    }\n    try {\n      this.set(key, json);\n    } catch (error) {\n      // Likely hitting storage quota\n      const errorToThrow = new Error(`Could not save item in localStorage: ${key}. [${error}]`);\n      if (error instanceof Error) {\n        errorToThrow.name = error.name;\n      }\n      throw errorToThrow;\n    }\n    return true;\n  }\n\n  exists(key: string) {\n    return window.localStorage[key] !== void 0;\n  }\n\n  delete(key: string) {\n    window.localStorage.removeItem(key);\n    this.notifySubscribers(key);\n  }\n}\n\nexport const store = new Store();\n"],"names":[],"mappings":"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"}