UNPKG

@assistant-ui/react

Version:

Typescript/React library for AI Chat

1 lines 2.02 kB
{"version":3,"sources":["../../../src/api/subscribable/EventSubscriptionSubject.ts"],"sourcesContent":["import { Unsubscribe } from \"../../types\";\nimport { BaseSubject } from \"./BaseSubject\";\nimport { EventSubscribable } from \"./Subscribable\";\n\nexport class EventSubscriptionSubject<\n TEvent extends string,\n> extends BaseSubject {\n constructor(private config: EventSubscribable<TEvent>) {\n super();\n }\n\n public getState() {\n return this.config.binding.getState();\n }\n\n public outerSubscribe(callback: () => void) {\n return this.config.binding.subscribe(callback);\n }\n\n protected _connect(): Unsubscribe {\n const callback = () => {\n this.notifySubscribers();\n };\n\n let lastState = this.config.binding.getState();\n let innerUnsubscribe = lastState?.unstable_on(this.config.event, callback);\n const onRuntimeUpdate = () => {\n const newState = this.config.binding.getState();\n if (newState === lastState) return;\n lastState = newState;\n\n innerUnsubscribe?.();\n innerUnsubscribe = this.config.binding\n .getState()\n ?.unstable_on(this.config.event, callback);\n };\n\n const outerUnsubscribe = this.outerSubscribe(onRuntimeUpdate);\n return () => {\n outerUnsubscribe?.();\n innerUnsubscribe?.();\n };\n }\n}\n"],"mappings":";AACA,SAAS,mBAAmB;AAGrB,IAAM,2BAAN,cAEG,YAAY;AAAA,EACpB,YAAoB,QAAmC;AACrD,UAAM;AADY;AAAA,EAEpB;AAAA,EAEO,WAAW;AAChB,WAAO,KAAK,OAAO,QAAQ,SAAS;AAAA,EACtC;AAAA,EAEO,eAAe,UAAsB;AAC1C,WAAO,KAAK,OAAO,QAAQ,UAAU,QAAQ;AAAA,EAC/C;AAAA,EAEU,WAAwB;AAChC,UAAM,WAAW,MAAM;AACrB,WAAK,kBAAkB;AAAA,IACzB;AAEA,QAAI,YAAY,KAAK,OAAO,QAAQ,SAAS;AAC7C,QAAI,mBAAmB,WAAW,YAAY,KAAK,OAAO,OAAO,QAAQ;AACzE,UAAM,kBAAkB,MAAM;AAC5B,YAAM,WAAW,KAAK,OAAO,QAAQ,SAAS;AAC9C,UAAI,aAAa,UAAW;AAC5B,kBAAY;AAEZ,yBAAmB;AACnB,yBAAmB,KAAK,OAAO,QAC5B,SAAS,GACR,YAAY,KAAK,OAAO,OAAO,QAAQ;AAAA,IAC7C;AAEA,UAAM,mBAAmB,KAAK,eAAe,eAAe;AAC5D,WAAO,MAAM;AACX,yBAAmB;AACnB,yBAAmB;AAAA,IACrB;AAAA,EACF;AACF;","names":[]}