@assistant-ui/react
Version:
Typescript/React library for AI Chat
1 lines • 1.86 kB
Source Map (JSON)
{"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":[]}