@assistant-ui/store 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/dist/AssistantIf.d.ts +1 -1
  2. package/dist/AssistantIf.d.ts.map +1 -1
  3. package/dist/AssistantIf.js +3 -8
  4. package/dist/AssistantIf.js.map +1 -1
  5. package/dist/Derived.d.ts +1 -1
  6. package/dist/Derived.d.ts.map +1 -1
  7. package/dist/Derived.js +21 -8
  8. package/dist/Derived.js.map +1 -1
  9. package/dist/attachDefaultPeers.d.ts +2 -2
  10. package/dist/attachDefaultPeers.d.ts.map +1 -1
  11. package/dist/attachDefaultPeers.js +47 -18
  12. package/dist/attachDefaultPeers.js.map +1 -1
  13. package/dist/index.d.ts +14 -14
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +15 -29
  16. package/dist/index.js.map +1 -1
  17. package/dist/tapClientList.d.ts +1 -1
  18. package/dist/tapClientList.d.ts.map +1 -1
  19. package/dist/tapClientList.js +56 -66
  20. package/dist/tapClientList.js.map +1 -1
  21. package/dist/tapClientLookup.d.ts +1 -1
  22. package/dist/tapClientLookup.d.ts.map +1 -1
  23. package/dist/tapClientLookup.js +25 -37
  24. package/dist/tapClientLookup.js.map +1 -1
  25. package/dist/tapClientResource.d.ts +1 -1
  26. package/dist/tapClientResource.d.ts.map +1 -1
  27. package/dist/tapClientResource.js +85 -88
  28. package/dist/tapClientResource.js.map +1 -1
  29. package/dist/types/client.d.ts +1 -1
  30. package/dist/types/client.d.ts.map +1 -1
  31. package/dist/types/client.js +1 -0
  32. package/dist/types/client.js.map +1 -1
  33. package/dist/types/events.d.ts +1 -1
  34. package/dist/types/events.d.ts.map +1 -1
  35. package/dist/types/events.js +6 -10
  36. package/dist/types/events.js.map +1 -1
  37. package/dist/useAssistantClient.d.ts +2 -2
  38. package/dist/useAssistantClient.d.ts.map +1 -1
  39. package/dist/useAssistantClient.js +118 -194
  40. package/dist/useAssistantClient.js.map +1 -1
  41. package/dist/useAssistantEvent.d.ts +1 -1
  42. package/dist/useAssistantEvent.d.ts.map +1 -1
  43. package/dist/useAssistantEvent.js +5 -9
  44. package/dist/useAssistantEvent.js.map +1 -1
  45. package/dist/useAssistantState.d.ts +1 -1
  46. package/dist/useAssistantState.d.ts.map +1 -1
  47. package/dist/useAssistantState.js +24 -19
  48. package/dist/useAssistantState.js.map +1 -1
  49. package/dist/utils/BaseProxyHandler.js +43 -38
  50. package/dist/utils/BaseProxyHandler.js.map +1 -1
  51. package/dist/utils/NotificationManager.d.ts +3 -3
  52. package/dist/utils/NotificationManager.d.ts.map +1 -1
  53. package/dist/utils/NotificationManager.js +76 -77
  54. package/dist/utils/NotificationManager.js.map +1 -1
  55. package/dist/utils/StoreResource.d.ts +1 -1
  56. package/dist/utils/StoreResource.d.ts.map +1 -1
  57. package/dist/utils/StoreResource.js +5 -16
  58. package/dist/utils/StoreResource.js.map +1 -1
  59. package/dist/utils/proxied-assistant-state.d.ts +1 -1
  60. package/dist/utils/proxied-assistant-state.d.ts.map +1 -1
  61. package/dist/utils/proxied-assistant-state.js +26 -33
  62. package/dist/utils/proxied-assistant-state.js.map +1 -1
  63. package/dist/utils/react-assistant-context.d.ts +1 -1
  64. package/dist/utils/react-assistant-context.d.ts.map +1 -1
  65. package/dist/utils/react-assistant-context.js +61 -66
  66. package/dist/utils/react-assistant-context.js.map +1 -1
  67. package/dist/utils/splitClients.d.ts +3 -3
  68. package/dist/utils/splitClients.d.ts.map +1 -1
  69. package/dist/utils/splitClients.js +48 -31
  70. package/dist/utils/splitClients.js.map +1 -1
  71. package/dist/utils/tap-assistant-context.d.ts +3 -3
  72. package/dist/utils/tap-assistant-context.d.ts.map +1 -1
  73. package/dist/utils/tap-assistant-context.js +17 -31
  74. package/dist/utils/tap-assistant-context.js.map +1 -1
  75. package/dist/utils/tap-client-stack-context.d.ts +1 -1
  76. package/dist/utils/tap-client-stack-context.d.ts.map +1 -1
  77. package/dist/utils/tap-client-stack-context.js +24 -26
  78. package/dist/utils/tap-client-stack-context.js.map +1 -1
  79. package/package.json +23 -9
@@ -1,227 +1,151 @@
1
1
  "use client";
2
-
3
- // src/useAssistantClient.tsx
4
2
  import { useResource } from "@assistant-ui/tap/react";
5
- import {
6
- resource,
7
- tapMemo,
8
- tapResources,
9
- tapEffectEvent,
10
- tapInlineResource,
11
- tapEffect,
12
- tapRef,
13
- tapResource
14
- } from "@assistant-ui/tap";
3
+ import { resource, tapMemo, tapResources, tapEffectEvent, tapInlineResource, tapEffect, tapRef, tapResource, } from "@assistant-ui/tap";
15
4
  import { StoreResource } from "./utils/StoreResource.js";
16
- import {
17
- useAssistantContextValue,
18
- DefaultAssistantClient,
19
- createRootAssistantClient
20
- } from "./utils/react-assistant-context.js";
21
- import {
22
- splitClients
23
- } from "./utils/splitClients.js";
24
- import {
25
- normalizeEventSelector
26
- } from "./types/events.js";
5
+ import { useAssistantContextValue, DefaultAssistantClient, createRootAssistantClient, } from "./utils/react-assistant-context.js";
6
+ import { splitClients, } from "./utils/splitClients.js";
7
+ import { normalizeEventSelector, } from "./types/events.js";
27
8
  import { NotificationManager } from "./utils/NotificationManager.js";
28
9
  import { withAssistantTapContextProvider } from "./utils/tap-assistant-context.js";
29
10
  import { tapClientResource } from "./tapClientResource.js";
30
11
  import { getClientIndex } from "./utils/tap-client-stack-context.js";
31
- import {
32
- PROXIED_ASSISTANT_STATE_SYMBOL,
33
- createProxiedAssistantState
34
- } from "./utils/proxied-assistant-state.js";
35
- var RootClientResource = resource(
36
- ({
37
- element,
38
- emit,
39
- clientRef
40
- }) => {
41
- const { methods, state } = withAssistantTapContextProvider(
42
- { clientRef, emit },
43
- () => tapClientResource(element)
44
- );
12
+ import { PROXIED_ASSISTANT_STATE_SYMBOL, createProxiedAssistantState, } from "./utils/proxied-assistant-state.js";
13
+ const RootClientResource = resource(({ element, emit, clientRef, }) => {
14
+ const { methods, state } = withAssistantTapContextProvider({ clientRef, emit }, () => tapClientResource(element));
45
15
  return tapMemo(() => ({ methods }), [state]);
46
- }
47
- );
48
- var RootClientAccessorResource = resource(
49
- ({
50
- element,
51
- notifications,
52
- clientRef
53
- }) => {
54
- const store = tapInlineResource(
55
- StoreResource(
56
- RootClientResource({ element, emit: notifications.emit, clientRef })
57
- )
58
- );
16
+ });
17
+ const RootClientAccessorResource = resource(({ element, notifications, clientRef, }) => {
18
+ const store = tapInlineResource(StoreResource(RootClientResource({ element, emit: notifications.emit, clientRef })));
59
19
  tapEffect(() => {
60
- return store.subscribe(notifications.notifySubscribers);
20
+ return store.subscribe(notifications.notifySubscribers);
61
21
  }, [store, notifications]);
62
22
  return tapMemo(() => {
63
- const clientFunction = () => store.getState().methods;
64
- clientFunction.source = "root";
65
- clientFunction.query = {};
66
- return clientFunction;
23
+ const clientFunction = () => store.getState().methods;
24
+ clientFunction.source = "root";
25
+ clientFunction.query = {};
26
+ return clientFunction;
67
27
  }, [store]);
68
- }
69
- );
70
- var NoOpRootClientsAccessorsResource = resource(() => {
71
- return tapMemo(
72
- () => ({ clients: {}, subscribe: void 0, on: void 0 }),
73
- []
74
- );
75
28
  });
76
- var RootClientsAccessorsResource = resource(
77
- ({
78
- clients: inputClients,
79
- clientRef
80
- }) => {
29
+ const NoOpRootClientsAccessorsResource = resource(() => {
30
+ return tapMemo(() => ({ clients: {}, subscribe: undefined, on: undefined }), []);
31
+ });
32
+ const RootClientsAccessorsResource = resource(({ clients: inputClients, clientRef, }) => {
81
33
  const notifications = tapInlineResource(NotificationManager());
82
- tapEffect(
83
- () => clientRef.parent.subscribe(notifications.notifySubscribers),
84
- [clientRef, notifications]
85
- );
86
- const results = tapResources(
87
- inputClients,
88
- (element) => RootClientAccessorResource({
89
- element,
34
+ tapEffect(() => clientRef.parent.subscribe(notifications.notifySubscribers), [clientRef, notifications]);
35
+ const results = tapResources(inputClients, (element) => RootClientAccessorResource({
36
+ element: element,
90
37
  notifications,
91
- clientRef
92
- }),
93
- [notifications, clientRef]
94
- );
38
+ clientRef,
39
+ }), [notifications, clientRef]);
95
40
  return tapMemo(() => {
96
- return {
97
- clients: results,
98
- subscribe: notifications.subscribe,
99
- on: function(selector, callback) {
100
- if (!this) {
101
- throw new Error(
102
- "const { on } = useAssistantClient() is not supported. Use aui.on() instead."
103
- );
104
- }
105
- const { scope, event } = normalizeEventSelector(selector);
106
- if (scope !== "*") {
107
- const source = this[scope].source;
108
- if (source === null) {
109
- throw new Error(
110
- `Scope "${scope}" is not available. Use { scope: "*", event: "${event}" } to listen globally.`
111
- );
112
- }
113
- }
114
- const localUnsub = notifications.on(event, (payload, clientStack) => {
115
- if (scope === "*") {
116
- callback(payload);
117
- return;
118
- }
119
- const scopeClient = this[scope]();
120
- const index = getClientIndex(scopeClient);
121
- if (scopeClient === clientStack[index]) {
122
- callback(payload);
123
- }
124
- });
125
- if (scope !== "*" && clientRef.parent[scope].source === null)
126
- return localUnsub;
127
- const parentUnsub = clientRef.parent.on(selector, callback);
128
- return () => {
129
- localUnsub();
130
- parentUnsub();
131
- };
132
- }
133
- };
41
+ return {
42
+ clients: results,
43
+ subscribe: notifications.subscribe,
44
+ on: function (selector, callback) {
45
+ if (!this) {
46
+ throw new Error("const { on } = useAssistantClient() is not supported. Use aui.on() instead.");
47
+ }
48
+ const { scope, event } = normalizeEventSelector(selector);
49
+ if (scope !== "*") {
50
+ const source = this[scope].source;
51
+ if (source === null) {
52
+ throw new Error(`Scope "${scope}" is not available. Use { scope: "*", event: "${event}" } to listen globally.`);
53
+ }
54
+ }
55
+ const localUnsub = notifications.on(event, (payload, clientStack) => {
56
+ if (scope === "*") {
57
+ callback(payload);
58
+ return;
59
+ }
60
+ const scopeClient = this[scope]();
61
+ const index = getClientIndex(scopeClient);
62
+ if (scopeClient === clientStack[index]) {
63
+ callback(payload);
64
+ }
65
+ });
66
+ if (scope !== "*" &&
67
+ clientRef.parent[scope].source === null)
68
+ return localUnsub;
69
+ const parentUnsub = clientRef.parent.on(selector, callback);
70
+ return () => {
71
+ localUnsub();
72
+ parentUnsub();
73
+ };
74
+ },
75
+ };
134
76
  }, [results, notifications, clientRef]);
135
- }
136
- );
137
- var getMeta = (props, clientRef, memo) => {
138
- if ("source" in props && "query" in props) return props;
139
- if (memo.dep === props) return memo.meta;
140
- const meta = props.getMeta(clientRef.current);
141
- memo.meta = meta;
142
- memo.dep = props;
143
- return meta;
77
+ });
78
+ const getMeta = (props, clientRef, memo) => {
79
+ if ("source" in props && "query" in props)
80
+ return props;
81
+ if (memo.dep === props)
82
+ return memo.meta;
83
+ const meta = props.getMeta(clientRef.current);
84
+ memo.meta = meta;
85
+ memo.dep = props;
86
+ return meta;
144
87
  };
145
- var DerivedClientAccessorResource = resource(
146
- ({
147
- element,
148
- clientRef
149
- }) => {
88
+ const DerivedClientAccessorResource = resource(({ element, clientRef, }) => {
150
89
  const get = tapEffectEvent(() => element.props);
151
90
  return tapMemo(() => {
152
- const clientFunction = () => get().get(clientRef.current);
153
- const metaMemo = {};
154
- Object.defineProperties(clientFunction, {
155
- source: {
156
- get: () => getMeta(get(), clientRef, metaMemo).source
157
- },
158
- query: {
159
- get: () => getMeta(get(), clientRef, metaMemo).query
160
- }
161
- });
162
- return clientFunction;
91
+ const clientFunction = () => get().get(clientRef.current);
92
+ const metaMemo = {};
93
+ Object.defineProperties(clientFunction, {
94
+ source: {
95
+ get: () => getMeta(get(), clientRef, metaMemo).source,
96
+ },
97
+ query: {
98
+ get: () => getMeta(get(), clientRef, metaMemo).query,
99
+ },
100
+ });
101
+ return clientFunction;
163
102
  }, [clientRef]);
164
- }
165
- );
166
- var DerivedClientsAccessorsResource = resource(
167
- ({
168
- clients,
169
- clientRef
170
- }) => {
171
- return tapResources(
172
- clients,
173
- (element) => DerivedClientAccessorResource({
174
- element,
175
- clientRef
176
- }),
177
- [clientRef]
178
- );
179
- }
180
- );
181
- var AssistantClientResource = resource(
182
- ({
183
- baseClient,
184
- clients
185
- }) => {
103
+ });
104
+ const DerivedClientsAccessorsResource = resource(({ clients, clientRef, }) => {
105
+ return tapResources(clients, (element) => DerivedClientAccessorResource({
106
+ element: element,
107
+ clientRef,
108
+ }), [clientRef]);
109
+ });
110
+ /**
111
+ * Resource that creates an extended AssistantClient.
112
+ */
113
+ export const AssistantClientResource = resource(({ baseClient, clients, }) => {
186
114
  const { rootClients, derivedClients } = splitClients(clients, baseClient);
187
115
  const clientRef = tapRef({
188
- parent: baseClient,
189
- current: null
116
+ parent: baseClient,
117
+ current: null,
190
118
  }).current;
191
- const rootFields = tapResource(
192
- Object.keys(rootClients).length > 0 ? RootClientsAccessorsResource({ clients: rootClients, clientRef }) : NoOpRootClientsAccessorsResource()
193
- );
194
- const derivedFields = tapInlineResource(
195
- DerivedClientsAccessorsResource({ clients: derivedClients, clientRef })
196
- );
119
+ const rootFields = tapResource(Object.keys(rootClients).length > 0
120
+ ? RootClientsAccessorsResource({ clients: rootClients, clientRef })
121
+ : NoOpRootClientsAccessorsResource());
122
+ const derivedFields = tapInlineResource(DerivedClientsAccessorsResource({ clients: derivedClients, clientRef }));
197
123
  const client = tapMemo(() => {
198
- const proto = baseClient === DefaultAssistantClient ? createRootAssistantClient() : baseClient;
199
- const client2 = Object.create(proto);
200
- Object.assign(client2, rootFields.clients, derivedFields, {
201
- subscribe: rootFields.subscribe ?? baseClient.subscribe,
202
- on: rootFields.on ?? baseClient.on,
203
- [PROXIED_ASSISTANT_STATE_SYMBOL]: createProxiedAssistantState(client2)
204
- });
205
- return client2;
124
+ // Swap DefaultAssistantClient -> createRootAssistantClient at root to change error message
125
+ const proto = baseClient === DefaultAssistantClient
126
+ ? createRootAssistantClient()
127
+ : baseClient;
128
+ const client = Object.create(proto);
129
+ Object.assign(client, rootFields.clients, derivedFields, {
130
+ subscribe: rootFields.subscribe ?? baseClient.subscribe,
131
+ on: rootFields.on ?? baseClient.on,
132
+ [PROXIED_ASSISTANT_STATE_SYMBOL]: createProxiedAssistantState(client),
133
+ });
134
+ return client;
206
135
  }, [baseClient, rootFields, derivedFields]);
207
136
  if (clientRef.current === null) {
208
- clientRef.current = client;
137
+ clientRef.current = client;
209
138
  }
210
139
  tapEffect(() => {
211
- clientRef.current = client;
140
+ clientRef.current = client;
212
141
  });
213
142
  return client;
214
- }
215
- );
216
- function useAssistantClient(clients) {
217
- const baseClient = useAssistantContextValue();
218
- if (clients) {
219
- return useResource(AssistantClientResource({ baseClient, clients }));
220
- }
221
- return baseClient;
143
+ });
144
+ export function useAssistantClient(clients) {
145
+ const baseClient = useAssistantContextValue();
146
+ if (clients) {
147
+ return useResource(AssistantClientResource({ baseClient, clients }));
148
+ }
149
+ return baseClient;
222
150
  }
223
- export {
224
- AssistantClientResource,
225
- useAssistantClient
226
- };
227
151
  //# sourceMappingURL=useAssistantClient.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/useAssistantClient.tsx"],"sourcesContent":["\"use client\";\n\nimport { useResource } from \"@assistant-ui/tap/react\";\nimport {\n resource,\n tapMemo,\n tapResources,\n tapEffectEvent,\n tapInlineResource,\n tapEffect,\n tapRef,\n tapResource,\n} from \"@assistant-ui/tap\";\nimport type {\n AssistantClient,\n AssistantClientAccessor,\n ClientNames,\n ClientElement,\n ClientMeta,\n} from \"./types/client\";\nimport { Derived, DerivedElement } from \"./Derived\";\nimport { StoreResource } from \"./utils/StoreResource\";\nimport {\n useAssistantContextValue,\n DefaultAssistantClient,\n createRootAssistantClient,\n} from \"./utils/react-assistant-context\";\nimport {\n DerivedClients,\n RootClients,\n splitClients,\n} from \"./utils/splitClients\";\nimport {\n normalizeEventSelector,\n type AssistantEventName,\n type AssistantEventCallback,\n type AssistantEventSelector,\n} from \"./types/events\";\nimport { NotificationManager } from \"./utils/NotificationManager\";\nimport { withAssistantTapContextProvider } from \"./utils/tap-assistant-context\";\nimport { tapClientResource } from \"./tapClientResource\";\nimport { getClientIndex } from \"./utils/tap-client-stack-context\";\nimport {\n PROXIED_ASSISTANT_STATE_SYMBOL,\n createProxiedAssistantState,\n} from \"./utils/proxied-assistant-state\";\n\nconst RootClientResource = resource(\n <K extends ClientNames>({\n element,\n emit,\n clientRef,\n }: {\n element: ClientElement<K>;\n emit: NotificationManager[\"emit\"];\n clientRef: { parent: AssistantClient; current: AssistantClient | null };\n }) => {\n const { methods, state } = withAssistantTapContextProvider(\n { clientRef, emit },\n () => tapClientResource(element),\n );\n return tapMemo(() => ({ methods }), [state]);\n },\n);\n\nconst RootClientAccessorResource = resource(\n <K extends ClientNames>({\n element,\n notifications,\n clientRef,\n }: {\n element: ClientElement<K>;\n notifications: NotificationManager;\n clientRef: { parent: AssistantClient; current: AssistantClient | null };\n }): AssistantClientAccessor<K> => {\n const store = tapInlineResource(\n StoreResource(\n RootClientResource({ element, emit: notifications.emit, clientRef }),\n ),\n );\n\n tapEffect(() => {\n return store.subscribe(notifications.notifySubscribers);\n }, [store, notifications]);\n\n return tapMemo(() => {\n const clientFunction = () => store.getState().methods;\n clientFunction.source = \"root\" as const;\n clientFunction.query = {};\n return clientFunction;\n }, [store]);\n },\n);\n\nconst NoOpRootClientsAccessorsResource = resource(() => {\n return tapMemo(\n () => ({ clients: {}, subscribe: undefined, on: undefined }),\n [],\n );\n});\n\nconst RootClientsAccessorsResource = resource(\n ({\n clients: inputClients,\n clientRef,\n }: {\n clients: RootClients;\n clientRef: { parent: AssistantClient; current: AssistantClient | null };\n }) => {\n const notifications = tapInlineResource(NotificationManager());\n\n tapEffect(\n () => clientRef.parent.subscribe(notifications.notifySubscribers),\n [clientRef, notifications],\n );\n\n const results = tapResources(\n inputClients,\n (element) =>\n RootClientAccessorResource({\n element: element!,\n notifications,\n clientRef,\n }),\n [notifications, clientRef],\n );\n\n return tapMemo(() => {\n return {\n clients: results,\n subscribe: notifications.subscribe,\n on: function <TEvent extends AssistantEventName>(\n this: AssistantClient,\n selector: AssistantEventSelector<TEvent>,\n callback: AssistantEventCallback<TEvent>,\n ) {\n if (!this) {\n throw new Error(\n \"const { on } = useAssistantClient() is not supported. Use aui.on() instead.\",\n );\n }\n\n const { scope, event } = normalizeEventSelector(selector);\n\n if (scope !== \"*\") {\n const source = this[scope as ClientNames].source;\n if (source === null) {\n throw new Error(\n `Scope \"${scope}\" is not available. Use { scope: \"*\", event: \"${event}\" } to listen globally.`,\n );\n }\n }\n\n const localUnsub = notifications.on(event, (payload, clientStack) => {\n if (scope === \"*\") {\n callback(payload);\n return;\n }\n\n const scopeClient = this[scope as ClientNames]();\n const index = getClientIndex(scopeClient);\n if (scopeClient === clientStack[index]) {\n callback(payload);\n }\n });\n if (\n scope !== \"*\" &&\n clientRef.parent[scope as ClientNames].source === null\n )\n return localUnsub;\n\n const parentUnsub = clientRef.parent.on(selector, callback);\n\n return () => {\n localUnsub();\n parentUnsub();\n };\n },\n };\n }, [results, notifications, clientRef]);\n },\n);\n\ntype MetaMemo<K extends ClientNames> = {\n meta?: ClientMeta<K>;\n dep?: unknown;\n};\n\nconst getMeta = <K extends ClientNames>(\n props: Derived.Props<K>,\n clientRef: { parent: AssistantClient; current: AssistantClient | null },\n memo: MetaMemo<K>,\n): ClientMeta<K> => {\n if (\"source\" in props && \"query\" in props) return props;\n if (memo.dep === props) return memo.meta!;\n const meta = props.getMeta(clientRef.current!);\n memo.meta = meta;\n memo.dep = props;\n return meta;\n};\n\nconst DerivedClientAccessorResource = resource(\n <K extends ClientNames>({\n element,\n clientRef,\n }: {\n element: DerivedElement<K>;\n clientRef: { parent: AssistantClient; current: AssistantClient | null };\n }) => {\n const get = tapEffectEvent(() => element.props);\n\n return tapMemo(() => {\n const clientFunction = () => get().get(clientRef.current!);\n const metaMemo = {};\n Object.defineProperties(clientFunction, {\n source: {\n get: () => getMeta(get(), clientRef, metaMemo).source,\n },\n query: {\n get: () => getMeta(get(), clientRef, metaMemo).query,\n },\n });\n return clientFunction;\n }, [clientRef]);\n },\n);\n\nconst DerivedClientsAccessorsResource = resource(\n ({\n clients,\n clientRef,\n }: {\n clients: DerivedClients;\n clientRef: { parent: AssistantClient; current: AssistantClient | null };\n }) => {\n return tapResources(\n clients,\n (element) =>\n DerivedClientAccessorResource({\n element: element!,\n clientRef,\n }),\n [clientRef],\n );\n },\n);\n\n/**\n * Resource that creates an extended AssistantClient.\n */\nexport const AssistantClientResource = resource(\n ({\n baseClient,\n clients,\n }: {\n baseClient: AssistantClient;\n clients: useAssistantClient.Props;\n }): AssistantClient => {\n const { rootClients, derivedClients } = splitClients(clients, baseClient);\n\n const clientRef = tapRef({\n parent: baseClient,\n current: null as AssistantClient | null,\n }).current;\n\n const rootFields = tapResource(\n Object.keys(rootClients).length > 0\n ? RootClientsAccessorsResource({ clients: rootClients, clientRef })\n : NoOpRootClientsAccessorsResource(),\n );\n\n const derivedFields = tapInlineResource(\n DerivedClientsAccessorsResource({ clients: derivedClients, clientRef }),\n );\n\n const client = tapMemo(() => {\n // Swap DefaultAssistantClient -> createRootAssistantClient at root to change error message\n const proto =\n baseClient === DefaultAssistantClient\n ? createRootAssistantClient()\n : baseClient;\n const client = Object.create(proto) as AssistantClient;\n Object.assign(client, rootFields.clients, derivedFields, {\n subscribe: rootFields.subscribe ?? baseClient.subscribe,\n on: rootFields.on ?? baseClient.on,\n [PROXIED_ASSISTANT_STATE_SYMBOL]: createProxiedAssistantState(client),\n });\n return client;\n }, [baseClient, rootFields, derivedFields]);\n\n if (clientRef.current === null) {\n clientRef.current = client;\n }\n\n tapEffect(() => {\n clientRef.current = client;\n });\n\n return client;\n },\n);\n\nexport namespace useAssistantClient {\n export type Props = {\n [K in ClientNames]?: ClientElement<K> | DerivedElement<K>;\n };\n}\n\nexport function useAssistantClient(): AssistantClient;\nexport function useAssistantClient(\n clients: useAssistantClient.Props,\n): AssistantClient;\nexport function useAssistantClient(\n clients?: useAssistantClient.Props,\n): AssistantClient {\n const baseClient = useAssistantContextValue();\n if (clients) {\n return useResource(AssistantClientResource({ baseClient, clients }));\n }\n return baseClient;\n}\n"],"mappings":"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","names":["client"]}
1
+ {"version":3,"file":"useAssistantClient.js","sourceRoot":"","sources":["../src/useAssistantClient.tsx"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- import type { AssistantEventName, AssistantEventCallback, AssistantEventSelector } from "./types/events";
1
+ import type { AssistantEventName, AssistantEventCallback, AssistantEventSelector } from "./types/events.js";
2
2
  export declare const useAssistantEvent: <TEvent extends AssistantEventName>(selector: AssistantEventSelector<TEvent>, callback: AssistantEventCallback<TEvent>) => void;
3
3
  //# sourceMappingURL=useAssistantEvent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useAssistantEvent.d.ts","sourceRoot":"","sources":["../src/useAssistantEvent.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,gBAAgB,CAAC;AAGxB,eAAO,MAAM,iBAAiB,GAAI,MAAM,SAAS,kBAAkB,EACjE,UAAU,sBAAsB,CAAC,MAAM,CAAC,EACxC,UAAU,sBAAsB,CAAC,MAAM,CAAC,SAOzC,CAAC"}
1
+ {"version":3,"file":"useAssistantEvent.d.ts","sourceRoot":"","sources":["../src/useAssistantEvent.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACvB,0BAAuB;AAGxB,eAAO,MAAM,iBAAiB,GAAI,MAAM,SAAS,kBAAkB,EACjE,UAAU,sBAAsB,CAAC,MAAM,CAAC,EACxC,UAAU,sBAAsB,CAAC,MAAM,CAAC,SAOzC,CAAC"}
@@ -1,14 +1,10 @@
1
- // src/useAssistantEvent.ts
2
1
  import { useEffect, useEffectEvent } from "react";
3
2
  import { useAssistantClient } from "./useAssistantClient.js";
4
3
  import { normalizeEventSelector } from "./types/events.js";
5
- var useAssistantEvent = (selector, callback) => {
6
- const aui = useAssistantClient();
7
- const callbackRef = useEffectEvent(callback);
8
- const { scope, event } = normalizeEventSelector(selector);
9
- useEffect(() => aui.on({ scope, event }, callbackRef), [aui, scope, event]);
10
- };
11
- export {
12
- useAssistantEvent
4
+ export const useAssistantEvent = (selector, callback) => {
5
+ const aui = useAssistantClient();
6
+ const callbackRef = useEffectEvent(callback);
7
+ const { scope, event } = normalizeEventSelector(selector);
8
+ useEffect(() => aui.on({ scope, event }, callbackRef), [aui, scope, event]);
13
9
  };
14
10
  //# sourceMappingURL=useAssistantEvent.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/useAssistantEvent.ts"],"sourcesContent":["import { useEffect, useEffectEvent } from \"react\";\nimport { useAssistantClient } from \"./useAssistantClient\";\nimport type {\n AssistantEventName,\n AssistantEventCallback,\n AssistantEventSelector,\n} from \"./types/events\";\nimport { normalizeEventSelector } from \"./types/events\";\n\nexport const useAssistantEvent = <TEvent extends AssistantEventName>(\n selector: AssistantEventSelector<TEvent>,\n callback: AssistantEventCallback<TEvent>,\n) => {\n const aui = useAssistantClient();\n const callbackRef = useEffectEvent(callback);\n\n const { scope, event } = normalizeEventSelector(selector);\n useEffect(() => aui.on({ scope, event }, callbackRef), [aui, scope, event]);\n};\n"],"mappings":";AAAA,SAAS,WAAW,sBAAsB;AAC1C,SAAS,0BAA0B;AAMnC,SAAS,8BAA8B;AAEhC,IAAM,oBAAoB,CAC/B,UACA,aACG;AACH,QAAM,MAAM,mBAAmB;AAC/B,QAAM,cAAc,eAAe,QAAQ;AAE3C,QAAM,EAAE,OAAO,MAAM,IAAI,uBAAuB,QAAQ;AACxD,YAAU,MAAM,IAAI,GAAG,EAAE,OAAO,MAAM,GAAG,WAAW,GAAG,CAAC,KAAK,OAAO,KAAK,CAAC;AAC5E;","names":[]}
1
+ {"version":3,"file":"useAssistantEvent.js","sourceRoot":"","sources":["../src/useAssistantEvent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,gCAA6B;AAM1D,OAAO,EAAE,sBAAsB,EAAE,0BAAuB;AAExD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,QAAwC,EACxC,QAAwC,EACxC,EAAE;IACF,MAAM,GAAG,GAAG,kBAAkB,EAAE,CAAC;IACjC,MAAM,WAAW,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IAE7C,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IAC1D,SAAS,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AAC9E,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { AssistantState } from "./types/client";
1
+ import type { AssistantState } from "./types/client.js";
2
2
  /**
3
3
  * Hook to access a slice of the assistant state with automatic subscription
4
4
  *
@@ -1 +1 @@
1
- {"version":3,"file":"useAssistantState.d.ts","sourceRoot":"","sources":["../src/useAssistantState.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAIrD;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,iBAAiB,GAAI,CAAC,EACjC,UAAU,CAAC,KAAK,EAAE,cAAc,KAAK,CAAC,KACrC,CAmBF,CAAC"}
1
+ {"version":3,"file":"useAssistantState.d.ts","sourceRoot":"","sources":["../src/useAssistantState.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,0BAAuB;AAIrD;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,iBAAiB,GAAI,CAAC,EACjC,UAAU,CAAC,KAAK,EAAE,cAAc,KAAK,CAAC,KACrC,CAmBF,CAAC"}
@@ -1,24 +1,29 @@
1
- // src/useAssistantState.tsx
2
1
  import { useSyncExternalStore, useDebugValue } from "react";
3
2
  import { useAssistantClient } from "./useAssistantClient.js";
4
3
  import { getProxiedAssistantState } from "./utils/proxied-assistant-state.js";
5
- var useAssistantState = (selector) => {
6
- const aui = useAssistantClient();
7
- const proxiedState = getProxiedAssistantState(aui);
8
- const slice = useSyncExternalStore(
9
- aui.subscribe,
10
- () => selector(proxiedState),
11
- () => selector(proxiedState)
12
- );
13
- if (slice === proxiedState) {
14
- throw new Error(
15
- "You tried to return the entire AssistantState. This is not supported due to technical limitations."
16
- );
17
- }
18
- useDebugValue(slice);
19
- return slice;
20
- };
21
- export {
22
- useAssistantState
4
+ /**
5
+ * Hook to access a slice of the assistant state with automatic subscription
6
+ *
7
+ * @param selector - Function to select a slice of the state
8
+ * @returns The selected state slice
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * const aui = useAssistantClient({
13
+ * foo: RootScope({ ... }),
14
+ * });
15
+ *
16
+ * const bar = useAssistantState((state) => state.foo.bar);
17
+ * ```
18
+ */
19
+ export const useAssistantState = (selector) => {
20
+ const aui = useAssistantClient();
21
+ const proxiedState = getProxiedAssistantState(aui);
22
+ const slice = useSyncExternalStore(aui.subscribe, () => selector(proxiedState), () => selector(proxiedState));
23
+ if (slice === proxiedState) {
24
+ throw new Error("You tried to return the entire AssistantState. This is not supported due to technical limitations.");
25
+ }
26
+ useDebugValue(slice);
27
+ return slice;
23
28
  };
24
29
  //# sourceMappingURL=useAssistantState.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/useAssistantState.tsx"],"sourcesContent":["import { useSyncExternalStore, useDebugValue } from \"react\";\nimport type { AssistantState } from \"./types/client\";\nimport { useAssistantClient } from \"./useAssistantClient\";\nimport { getProxiedAssistantState } from \"./utils/proxied-assistant-state\";\n\n/**\n * Hook to access a slice of the assistant state with automatic subscription\n *\n * @param selector - Function to select a slice of the state\n * @returns The selected state slice\n *\n * @example\n * ```typescript\n * const aui = useAssistantClient({\n * foo: RootScope({ ... }),\n * });\n *\n * const bar = useAssistantState((state) => state.foo.bar);\n * ```\n */\nexport const useAssistantState = <T,>(\n selector: (state: AssistantState) => T,\n): T => {\n const aui = useAssistantClient();\n const proxiedState = getProxiedAssistantState(aui);\n\n const slice = useSyncExternalStore(\n aui.subscribe,\n () => selector(proxiedState),\n () => selector(proxiedState),\n );\n\n if (slice === proxiedState) {\n throw new Error(\n \"You tried to return the entire AssistantState. This is not supported due to technical limitations.\",\n );\n }\n\n useDebugValue(slice);\n\n return slice;\n};\n"],"mappings":";AAAA,SAAS,sBAAsB,qBAAqB;AAEpD,SAAS,0BAA0B;AACnC,SAAS,gCAAgC;AAiBlC,IAAM,oBAAoB,CAC/B,aACM;AACN,QAAM,MAAM,mBAAmB;AAC/B,QAAM,eAAe,yBAAyB,GAAG;AAEjD,QAAM,QAAQ;AAAA,IACZ,IAAI;AAAA,IACJ,MAAM,SAAS,YAAY;AAAA,IAC3B,MAAM,SAAS,YAAY;AAAA,EAC7B;AAEA,MAAI,UAAU,cAAc;AAC1B,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,gBAAc,KAAK;AAEnB,SAAO;AACT;","names":[]}
1
+ {"version":3,"file":"useAssistantState.js","sourceRoot":"","sources":["../src/useAssistantState.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE5D,OAAO,EAAE,kBAAkB,EAAE,gCAA6B;AAC1D,OAAO,EAAE,wBAAwB,EAAE,2CAAwC;AAE3E;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,QAAsC,EACnC,EAAE;IACL,MAAM,GAAG,GAAG,kBAAkB,EAAE,CAAC;IACjC,MAAM,YAAY,GAAG,wBAAwB,CAAC,GAAG,CAAC,CAAC;IAEnD,MAAM,KAAK,GAAG,oBAAoB,CAChC,GAAG,CAAC,SAAS,EACb,GAAG,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,EAC5B,GAAG,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAC7B,CAAC;IAEF,IAAI,KAAK,KAAK,YAAY,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CACb,oGAAoG,CACrG,CAAC;IACJ,CAAC;IAED,aAAa,CAAC,KAAK,CAAC,CAAC;IAErB,OAAO,KAAK,CAAC;AACf,CAAC,CAAC"}
@@ -1,41 +1,46 @@
1
- // src/utils/BaseProxyHandler.ts
2
- var INTROSPECTION_PROPS = /* @__PURE__ */ new Set(["$$typeof", "nodeType", "then"]);
3
- var handleIntrospectionProp = (prop, name) => {
4
- if (prop === Symbol.toStringTag) return name;
5
- if (typeof prop === "symbol") return void 0;
6
- if (prop === "toJSON") return () => name;
7
- if (INTROSPECTION_PROPS.has(prop)) return void 0;
8
- return false;
9
- };
10
- var BaseProxyHandler = class {
11
- getOwnPropertyDescriptor(_, prop) {
12
- const value = this.get(_, prop);
13
- if (value === void 0) return void 0;
14
- return {
15
- value,
16
- writable: false,
17
- enumerable: true,
18
- configurable: false
19
- };
20
- }
21
- set() {
22
- return false;
23
- }
24
- setPrototypeOf() {
25
- return false;
26
- }
27
- defineProperty() {
1
+ const INTROSPECTION_PROPS = new Set(["$$typeof", "nodeType", "then"]);
2
+ /**
3
+ * Handles common proxy introspection properties.
4
+ * Returns the appropriate value for toStringTag, toJSON, and props that should return undefined.
5
+ * Returns `false` if the prop should be handled by the subclass.
6
+ */
7
+ export const handleIntrospectionProp = (prop, name) => {
8
+ if (prop === Symbol.toStringTag)
9
+ return name;
10
+ if (typeof prop === "symbol")
11
+ return undefined;
12
+ if (prop === "toJSON")
13
+ return () => name;
14
+ if (INTROSPECTION_PROPS.has(prop))
15
+ return undefined;
28
16
  return false;
29
- }
30
- deleteProperty() {
31
- return false;
32
- }
33
- preventExtensions() {
34
- return false;
35
- }
36
- };
37
- export {
38
- BaseProxyHandler,
39
- handleIntrospectionProp
40
17
  };
18
+ export class BaseProxyHandler {
19
+ getOwnPropertyDescriptor(_, prop) {
20
+ const value = this.get(_, prop);
21
+ if (value === undefined)
22
+ return undefined;
23
+ return {
24
+ value,
25
+ writable: false,
26
+ enumerable: true,
27
+ configurable: false,
28
+ };
29
+ }
30
+ set() {
31
+ return false;
32
+ }
33
+ setPrototypeOf() {
34
+ return false;
35
+ }
36
+ defineProperty() {
37
+ return false;
38
+ }
39
+ deleteProperty() {
40
+ return false;
41
+ }
42
+ preventExtensions() {
43
+ return false;
44
+ }
45
+ }
41
46
  //# sourceMappingURL=BaseProxyHandler.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/BaseProxyHandler.ts"],"sourcesContent":["const INTROSPECTION_PROPS = new Set([\"$$typeof\", \"nodeType\", \"then\"]);\n\n/**\n * Handles common proxy introspection properties.\n * Returns the appropriate value for toStringTag, toJSON, and props that should return undefined.\n * Returns `false` if the prop should be handled by the subclass.\n */\nexport const handleIntrospectionProp = (\n prop: string | symbol,\n name: string,\n): unknown | false => {\n if (prop === Symbol.toStringTag) return name;\n if (typeof prop === \"symbol\") return undefined;\n if (prop === \"toJSON\") return () => name;\n if (INTROSPECTION_PROPS.has(prop)) return undefined;\n return false;\n};\n\nexport abstract class BaseProxyHandler implements ProxyHandler<object> {\n abstract get(_: unknown, prop: string | symbol): unknown;\n abstract ownKeys(): ArrayLike<string | symbol>;\n abstract has(_: unknown, prop: string | symbol): boolean;\n\n getOwnPropertyDescriptor(_: unknown, prop: string | symbol) {\n const value = this.get(_, prop);\n if (value === undefined) return undefined;\n return {\n value,\n writable: false,\n enumerable: true,\n configurable: false,\n };\n }\n\n set() {\n return false;\n }\n setPrototypeOf() {\n return false;\n }\n defineProperty() {\n return false;\n }\n deleteProperty() {\n return false;\n }\n preventExtensions(): boolean {\n return false;\n }\n}\n"],"mappings":";AAAA,IAAM,sBAAsB,oBAAI,IAAI,CAAC,YAAY,YAAY,MAAM,CAAC;AAO7D,IAAM,0BAA0B,CACrC,MACA,SACoB;AACpB,MAAI,SAAS,OAAO,YAAa,QAAO;AACxC,MAAI,OAAO,SAAS,SAAU,QAAO;AACrC,MAAI,SAAS,SAAU,QAAO,MAAM;AACpC,MAAI,oBAAoB,IAAI,IAAI,EAAG,QAAO;AAC1C,SAAO;AACT;AAEO,IAAe,mBAAf,MAAgE;AAAA,EAKrE,yBAAyB,GAAY,MAAuB;AAC1D,UAAM,QAAQ,KAAK,IAAI,GAAG,IAAI;AAC9B,QAAI,UAAU,OAAW,QAAO;AAChC,WAAO;AAAA,MACL;AAAA,MACA,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,cAAc;AAAA,IAChB;AAAA,EACF;AAAA,EAEA,MAAM;AACJ,WAAO;AAAA,EACT;AAAA,EACA,iBAAiB;AACf,WAAO;AAAA,EACT;AAAA,EACA,iBAAiB;AACf,WAAO;AAAA,EACT;AAAA,EACA,iBAAiB;AACf,WAAO;AAAA,EACT;AAAA,EACA,oBAA6B;AAC3B,WAAO;AAAA,EACT;AACF;","names":[]}
1
+ {"version":3,"file":"BaseProxyHandler.js","sourceRoot":"","sources":["../../src/utils/BaseProxyHandler.ts"],"names":[],"mappings":"AAAA,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;AAEtE;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,IAAqB,EACrB,IAAY,EACK,EAAE;IACnB,IAAI,IAAI,KAAK,MAAM,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAC7C,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC/C,IAAI,IAAI,KAAK,QAAQ;QAAE,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC;IACzC,IAAI,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IACpD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,OAAgB,gBAAgB;IAKpC,wBAAwB,CAAC,CAAU,EAAE,IAAqB;QACxD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAChC,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAC1C,OAAO;YACL,KAAK;YACL,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE,IAAI;YAChB,YAAY,EAAE,KAAK;SACpB,CAAC;IACJ,CAAC;IAED,GAAG;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,cAAc;QACZ,OAAO,KAAK,CAAC;IACf,CAAC;IACD,cAAc;QACZ,OAAO,KAAK,CAAC;IACf,CAAC;IACD,cAAc;QACZ,OAAO,KAAK,CAAC;IACf,CAAC;IACD,iBAAiB;QACf,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
@@ -1,6 +1,6 @@
1
- import type { ClientStack } from "./tap-client-stack-context";
2
- import type { AssistantEventName, AssistantEventPayload } from "../types/events";
3
- import { Unsubscribe } from "../types/client";
1
+ import type { ClientStack } from "./tap-client-stack-context.js";
2
+ import type { AssistantEventName, AssistantEventPayload } from "../types/events.js";
3
+ import { Unsubscribe } from "../types/client.js";
4
4
  export type NotificationManager = {
5
5
  on<TEvent extends AssistantEventName>(event: TEvent, callback: (payload: AssistantEventPayload[TEvent], clientStack: ClientStack) => void): Unsubscribe;
6
6
  emit<TEvent extends Exclude<AssistantEventName, "*">>(event: TEvent, payload: AssistantEventPayload[TEvent], clientStack: ClientStack): void;
@@ -1 +1 @@
1
- {"version":3,"file":"NotificationManager.d.ts","sourceRoot":"","sources":["../../src/utils/NotificationManager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EACV,kBAAkB,EAClB,qBAAqB,EACtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAI9C,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,CAAC,MAAM,SAAS,kBAAkB,EAClC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,CACR,OAAO,EAAE,qBAAqB,CAAC,MAAM,CAAC,EACtC,WAAW,EAAE,WAAW,KACrB,IAAI,GACR,WAAW,CAAC;IACf,IAAI,CAAC,MAAM,SAAS,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,EAClD,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,qBAAqB,CAAC,MAAM,CAAC,EACtC,WAAW,EAAE,WAAW,GACvB,IAAI,CAAC;IACR,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,WAAW,CAAC;IAC7C,iBAAiB,IAAI,IAAI,CAAC;CAC3B,CAAC;AAEF,eAAO,MAAM,mBAAmB,sEAkF9B,CAAC"}
1
+ {"version":3,"file":"NotificationManager.d.ts","sourceRoot":"","sources":["../../src/utils/NotificationManager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,sCAAmC;AAC9D,OAAO,KAAK,EACV,kBAAkB,EAClB,qBAAqB,EACtB,2BAAwB;AACzB,OAAO,EAAE,WAAW,EAAE,2BAAwB;AAI9C,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,CAAC,MAAM,SAAS,kBAAkB,EAClC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,CACR,OAAO,EAAE,qBAAqB,CAAC,MAAM,CAAC,EACtC,WAAW,EAAE,WAAW,KACrB,IAAI,GACR,WAAW,CAAC;IACf,IAAI,CAAC,MAAM,SAAS,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,EAClD,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,qBAAqB,CAAC,MAAM,CAAC,EACtC,WAAW,EAAE,WAAW,GACvB,IAAI,CAAC;IACR,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,WAAW,CAAC;IAC7C,iBAAiB,IAAI,IAAI,CAAC;CAC3B,CAAC;AAEF,eAAO,MAAM,mBAAmB,sEAkF9B,CAAC"}