UNPKG

@assistant-ui/react

Version:

Typescript/React library for AI Chat

1 lines 1.51 kB
{"version":3,"sources":["../../../src/api/subscribable/BaseSubject.ts"],"sourcesContent":["import { Unsubscribe } from \"../../types/Unsubscribe\";\n\nexport abstract class BaseSubject {\n private _subscriptions = new Set<() => void>();\n private _connection: Unsubscribe | undefined;\n\n protected get isConnected() {\n return !!this._connection;\n }\n\n protected abstract _connect(): Unsubscribe;\n\n protected notifySubscribers() {\n for (const callback of this._subscriptions) callback();\n }\n\n private _updateConnection() {\n if (this._subscriptions.size > 0) {\n if (this._connection) return;\n this._connection = this._connect();\n } else {\n this._connection?.();\n this._connection = undefined;\n }\n }\n\n public subscribe(callback: () => void) {\n this._subscriptions.add(callback);\n this._updateConnection();\n\n return () => {\n this._subscriptions.delete(callback);\n this._updateConnection();\n };\n }\n}\n"],"mappings":";AAEO,IAAe,cAAf,MAA2B;AAAA,EACxB,iBAAiB,oBAAI,IAAgB;AAAA,EACrC;AAAA,EAER,IAAc,cAAc;AAC1B,WAAO,CAAC,CAAC,KAAK;AAAA,EAChB;AAAA,EAIU,oBAAoB;AAC5B,eAAW,YAAY,KAAK,eAAgB,UAAS;AAAA,EACvD;AAAA,EAEQ,oBAAoB;AAC1B,QAAI,KAAK,eAAe,OAAO,GAAG;AAChC,UAAI,KAAK,YAAa;AACtB,WAAK,cAAc,KAAK,SAAS;AAAA,IACnC,OAAO;AACL,WAAK,cAAc;AACnB,WAAK,cAAc;AAAA,IACrB;AAAA,EACF;AAAA,EAEO,UAAU,UAAsB;AACrC,SAAK,eAAe,IAAI,QAAQ;AAChC,SAAK,kBAAkB;AAEvB,WAAO,MAAM;AACX,WAAK,eAAe,OAAO,QAAQ;AACnC,WAAK,kBAAkB;AAAA,IACzB;AAAA,EACF;AACF;","names":[]}