@assistant-ui/react
Version:
Typescript/React library for AI Chat
1 lines • 2.07 kB
Source Map (JSON)
{"version":3,"sources":["../../../src/api/subscribable/ShallowMemoizeSubject.ts"],"sourcesContent":["import { shallowEqual } from \"./shallowEqual\";\nimport { BaseSubject } from \"./BaseSubject\";\nimport { SubscribableWithState } from \"./Subscribable\";\nimport { SKIP_UPDATE } from \"./SKIP_UPDATE\";\n\nexport class ShallowMemoizeSubject<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 const state = binding.getState();\n if (state === SKIP_UPDATE)\n throw new Error(\"Entry not available in the store\");\n this._previousState = state;\n }\n\n private _previousState: TState;\n public getState = () => {\n if (!this.isConnected) this._syncState();\n return this._previousState;\n };\n\n private _syncState() {\n const state = this.binding.getState();\n if (state === SKIP_UPDATE) return false;\n if (shallowEqual(state, this._previousState)) return false;\n this._previousState = state;\n return true;\n }\n\n protected _connect() {\n const callback = () => {\n if (this._syncState()) {\n this.notifySubscribers();\n }\n };\n\n return this.binding.subscribe(callback);\n }\n}\n"],"mappings":";AAAA,SAAS,oBAAoB;AAC7B,SAAS,mBAAmB;AAE5B,SAAS,mBAAmB;AAErB,IAAM,wBAAN,cACG,YAEV;AAAA,EAKE,YACU,SACR;AACA,UAAM;AAFE;AAGR,UAAM,QAAQ,QAAQ,SAAS;AAC/B,QAAI,UAAU;AACZ,YAAM,IAAI,MAAM,kCAAkC;AACpD,SAAK,iBAAiB;AAAA,EACxB;AAAA,EAZA,IAAW,OAAO;AAChB,WAAO,KAAK,QAAQ;AAAA,EACtB;AAAA,EAYQ;AAAA,EACD,WAAW,MAAM;AACtB,QAAI,CAAC,KAAK,YAAa,MAAK,WAAW;AACvC,WAAO,KAAK;AAAA,EACd;AAAA,EAEQ,aAAa;AACnB,UAAM,QAAQ,KAAK,QAAQ,SAAS;AACpC,QAAI,UAAU,YAAa,QAAO;AAClC,QAAI,aAAa,OAAO,KAAK,cAAc,EAAG,QAAO;AACrD,SAAK,iBAAiB;AACtB,WAAO;AAAA,EACT;AAAA,EAEU,WAAW;AACnB,UAAM,WAAW,MAAM;AACrB,UAAI,KAAK,WAAW,GAAG;AACrB,aAAK,kBAAkB;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,QAAQ,UAAU,QAAQ;AAAA,EACxC;AACF;","names":[]}