{"version":3,"file":"localStorageBroadcastChannel.mjs","names":[],"sources":["../src/localStorageBroadcastChannel.ts"],"sourcesContent":["import { deprecated } from './deprecated';\n\ntype Listener<T> = (e: MessageEvent<T>) => void;\n\nconst KEY_PREFIX = '__lsbc__';\n\n/**\n * @deprecated This class will be completely removed in the next major version.\n * Use the native BroadcastChannel API directly instead.\n */\nexport class LocalStorageBroadcastChannel<E> {\n  private readonly eventTarget = window;\n  private readonly channelKey: string;\n\n  constructor(name: string) {\n    deprecated('LocalStorageBroadcastChannel', 'Use the native BroadcastChannel API directly instead.');\n    this.channelKey = KEY_PREFIX + name;\n    this.setupLocalStorageListener();\n  }\n\n  public postMessage = (data: E): void => {\n    if (typeof window === 'undefined') {\n      // Silently do nothing\n      return;\n    }\n\n    try {\n      window.localStorage.setItem(this.channelKey, JSON.stringify(data));\n      window.localStorage.removeItem(this.channelKey);\n    } catch {\n      // Silently do nothing\n    }\n  };\n\n  public addEventListener = (eventName: 'message', listener: Listener<E>): void => {\n    this.eventTarget.addEventListener(this.prefixEventName(eventName), e => {\n      listener(e as MessageEvent);\n    });\n  };\n\n  private setupLocalStorageListener = () => {\n    const notifyListeners = (e: StorageEvent) => {\n      if (e.key !== this.channelKey || !e.newValue) {\n        return;\n      }\n\n      try {\n        const data = JSON.parse(e.newValue || '');\n        const event = new MessageEvent(this.prefixEventName('message'), {\n          data,\n        });\n        this.eventTarget.dispatchEvent(event);\n      } catch {\n        //\n      }\n    };\n\n    window.addEventListener('storage', notifyListeners);\n  };\n\n  private prefixEventName(eventName: string): string {\n    return this.channelKey + eventName;\n  }\n}\n"],"mappings":";;;AAIA,MAAM,aAAa;;;;;AAMnB,IAAa,+BAAb,MAA6C;CAC3C,AAAiB,cAAc;CAC/B,AAAiB;CAEjB,YAAY,MAAc;EACxB,WAAW,gCAAgC,uDAAuD;EAClG,KAAK,aAAa,aAAa;EAC/B,KAAK,0BAA0B;CACjC;CAEA,AAAO,eAAe,SAAkB;EACtC,IAAI,OAAO,WAAW,aAEpB;EAGF,IAAI;GACF,OAAO,aAAa,QAAQ,KAAK,YAAY,KAAK,UAAU,IAAI,CAAC;GACjE,OAAO,aAAa,WAAW,KAAK,UAAU;EAChD,QAAQ,CAER;CACF;CAEA,AAAO,oBAAoB,WAAsB,aAAgC;EAC/E,KAAK,YAAY,iBAAiB,KAAK,gBAAgB,SAAS,IAAG,MAAK;GACtE,SAAS,CAAiB;EAC5B,CAAC;CACH;CAEA,AAAQ,kCAAkC;EACxC,MAAM,mBAAmB,MAAoB;GAC3C,IAAI,EAAE,QAAQ,KAAK,cAAc,CAAC,EAAE,UAClC;GAGF,IAAI;IACF,MAAM,OAAO,KAAK,MAAM,EAAE,YAAY,EAAE;IACxC,MAAM,QAAQ,IAAI,aAAa,KAAK,gBAAgB,SAAS,GAAG,EAC9D,KACF,CAAC;IACD,KAAK,YAAY,cAAc,KAAK;GACtC,QAAQ,CAER;EACF;EAEA,OAAO,iBAAiB,WAAW,eAAe;CACpD;CAEA,AAAQ,gBAAgB,WAA2B;EACjD,OAAO,KAAK,aAAa;CAC3B;AACF"}