export class CrossTabSync {
  constructor(channelName) {
    this._channel = null;
    if (typeof BroadcastChannel !== "undefined") {
      this._channel = new BroadcastChannel(channelName);
    }
  }

  post(type, payload = {}) {
    if (!this._channel) return;
    this._channel.postMessage({ type, ...payload });
  }

  onMessage(handler) {
    if (!this._channel) return () => {};
    const wrapped = (event) => handler(event.data || {});
    this._channel.addEventListener("message", wrapped);
    return () => this._channel.removeEventListener("message", wrapped);
  }

  close() {
    if (this._channel) {
      this._channel.close();
      this._channel = null;
    }
  }
}
