UNPKG

@assistant-ui/react

Version:

Typescript/React library for AI Chat

1 lines 2.2 kB
{"version":3,"sources":["../../../src/api/subscribable/NestedSubscriptionSubject.ts"],"sourcesContent":["import { Unsubscribe } from \"../../types\";\nimport { BaseSubject } from \"./BaseSubject\";\nimport {\n NestedSubscribable,\n Subscribable,\n SubscribableWithState,\n} from \"./Subscribable\";\n\nexport class NestedSubscriptionSubject<\n TState extends Subscribable | undefined,\n TPath,\n >\n extends BaseSubject\n implements\n SubscribableWithState<TState, TPath>,\n NestedSubscribable<TState, TPath>\n{\n public get path() {\n return this.binding.path;\n }\n\n constructor(private binding: NestedSubscribable<TState, TPath>) {\n super();\n }\n\n public getState() {\n return this.binding.getState();\n }\n\n public outerSubscribe(callback: () => void) {\n return this.binding.subscribe(callback);\n }\n\n protected _connect(): Unsubscribe {\n const callback = () => {\n this.notifySubscribers();\n };\n\n let lastState = this.binding.getState();\n let innerUnsubscribe = lastState?.subscribe(callback);\n const onRuntimeUpdate = () => {\n const newState = this.binding.getState();\n if (newState === lastState) return;\n lastState = newState;\n\n innerUnsubscribe?.();\n innerUnsubscribe = this.binding.getState()?.subscribe(callback);\n\n callback();\n };\n\n const outerUnsubscribe = this.outerSubscribe(onRuntimeUpdate);\n return () => {\n outerUnsubscribe?.();\n innerUnsubscribe?.();\n };\n }\n}\n"],"mappings":";AACA,SAAS,mBAAmB;AAOrB,IAAM,4BAAN,cAIG,YAIV;AAAA,EAKE,YAAoB,SAA4C;AAC9D,UAAM;AADY;AAAA,EAEpB;AAAA,EANA,IAAW,OAAO;AAChB,WAAO,KAAK,QAAQ;AAAA,EACtB;AAAA,EAMO,WAAW;AAChB,WAAO,KAAK,QAAQ,SAAS;AAAA,EAC/B;AAAA,EAEO,eAAe,UAAsB;AAC1C,WAAO,KAAK,QAAQ,UAAU,QAAQ;AAAA,EACxC;AAAA,EAEU,WAAwB;AAChC,UAAM,WAAW,MAAM;AACrB,WAAK,kBAAkB;AAAA,IACzB;AAEA,QAAI,YAAY,KAAK,QAAQ,SAAS;AACtC,QAAI,mBAAmB,WAAW,UAAU,QAAQ;AACpD,UAAM,kBAAkB,MAAM;AAC5B,YAAM,WAAW,KAAK,QAAQ,SAAS;AACvC,UAAI,aAAa,UAAW;AAC5B,kBAAY;AAEZ,yBAAmB;AACnB,yBAAmB,KAAK,QAAQ,SAAS,GAAG,UAAU,QAAQ;AAE9D,eAAS;AAAA,IACX;AAEA,UAAM,mBAAmB,KAAK,eAAe,eAAe;AAC5D,WAAO,MAAM;AACX,yBAAmB;AACnB,yBAAmB;AAAA,IACrB;AAAA,EACF;AACF;","names":[]}