{"version":3,"sources":["../../../src/api/subscribable/LazyMemoizeSubject.ts"],"sourcesContent":["import { BaseSubject } from \"./BaseSubject\";\nimport { SKIP_UPDATE } from \"./SKIP_UPDATE\";\nimport { SubscribableWithState } from \"./Subscribable\";\n\nexport class LazyMemoizeSubject<TState extends object, TPath>\n  extends BaseSubject\n  implements SubscribableWithState<TState, TPath>\n{\n  public get path() {\n    return this.binding.path;\n  }\n\n  constructor(\n    private binding: SubscribableWithState<TState | SKIP_UPDATE, TPath>,\n  ) {\n    super();\n  }\n\n  private _previousStateDirty = true;\n  private _previousState: TState | undefined;\n  public getState = () => {\n    if (!this.isConnected || this._previousStateDirty) {\n      const newState = this.binding.getState();\n      if (newState !== SKIP_UPDATE) {\n        this._previousState = newState;\n      }\n      this._previousStateDirty = false;\n    }\n    if (this._previousState === undefined)\n      throw new Error(\"Entry not available in the store\");\n    return this._previousState;\n  };\n\n  protected _connect() {\n    const callback = () => {\n      this._previousStateDirty = true;\n      this.notifySubscribers();\n    };\n\n    return this.binding.subscribe(callback);\n  }\n}\n"],"mappings":";AAAA,SAAS,mBAAmB;AAC5B,SAAS,mBAAmB;AAGrB,IAAM,qBAAN,cACG,YAEV;AAAA,EAKE,YACU,SACR;AACA,UAAM;AAFE;AAAA,EAGV;AAAA,EARA,IAAW,OAAO;AAChB,WAAO,KAAK,QAAQ;AAAA,EACtB;AAAA,EAQQ,sBAAsB;AAAA,EACtB;AAAA,EACD,WAAW,MAAM;AACtB,QAAI,CAAC,KAAK,eAAe,KAAK,qBAAqB;AACjD,YAAM,WAAW,KAAK,QAAQ,SAAS;AACvC,UAAI,aAAa,aAAa;AAC5B,aAAK,iBAAiB;AAAA,MACxB;AACA,WAAK,sBAAsB;AAAA,IAC7B;AACA,QAAI,KAAK,mBAAmB;AAC1B,YAAM,IAAI,MAAM,kCAAkC;AACpD,WAAO,KAAK;AAAA,EACd;AAAA,EAEU,WAAW;AACnB,UAAM,WAAW,MAAM;AACrB,WAAK,sBAAsB;AAC3B,WAAK,kBAAkB;AAAA,IACzB;AAEA,WAAO,KAAK,QAAQ,UAAU,QAAQ;AAAA,EACxC;AACF;","names":[]}