@assistant-ui/store 0.2.11 → 0.2.13

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 (94) hide show
  1. package/dist/AuiIf.d.ts +19 -15
  2. package/dist/AuiIf.d.ts.map +1 -1
  3. package/dist/AuiIf.js +27 -24
  4. package/dist/AuiIf.js.map +1 -1
  5. package/dist/Derived.d.ts +15 -11
  6. package/dist/Derived.d.ts.map +1 -1
  7. package/dist/Derived.js +24 -20
  8. package/dist/Derived.js.map +1 -1
  9. package/dist/RenderChildrenWithAccessor.d.ts +13 -6
  10. package/dist/RenderChildrenWithAccessor.d.ts.map +1 -1
  11. package/dist/RenderChildrenWithAccessor.js +42 -48
  12. package/dist/RenderChildrenWithAccessor.js.map +1 -1
  13. package/dist/attachTransformScopes.d.ts +11 -10
  14. package/dist/attachTransformScopes.d.ts.map +1 -1
  15. package/dist/attachTransformScopes.js +20 -23
  16. package/dist/attachTransformScopes.js.map +1 -1
  17. package/dist/index.d.ts +15 -16
  18. package/dist/index.js +14 -18
  19. package/dist/tapClientList.d.ts +26 -23
  20. package/dist/tapClientList.d.ts.map +1 -1
  21. package/dist/tapClientList.js +66 -63
  22. package/dist/tapClientList.js.map +1 -1
  23. package/dist/tapClientLookup.d.ts +14 -11
  24. package/dist/tapClientLookup.d.ts.map +1 -1
  25. package/dist/tapClientLookup.js +31 -37
  26. package/dist/tapClientLookup.js.map +1 -1
  27. package/dist/tapClientResource.d.ts +12 -9
  28. package/dist/tapClientResource.d.ts.map +1 -1
  29. package/dist/tapClientResource.js +92 -104
  30. package/dist/tapClientResource.js.map +1 -1
  31. package/dist/types/client.d.ts +50 -42
  32. package/dist/types/client.d.ts.map +1 -1
  33. package/dist/types/client.js +0 -2
  34. package/dist/types/events.d.ts +23 -24
  35. package/dist/types/events.d.ts.map +1 -1
  36. package/dist/types/events.js +13 -6
  37. package/dist/types/events.js.map +1 -1
  38. package/dist/useAui.d.ts +17 -15
  39. package/dist/useAui.d.ts.map +1 -1
  40. package/dist/useAui.js +176 -191
  41. package/dist/useAui.js.map +1 -1
  42. package/dist/useAuiEvent.d.ts +6 -2
  43. package/dist/useAuiEvent.d.ts.map +1 -1
  44. package/dist/useAuiEvent.js +58 -47
  45. package/dist/useAuiEvent.js.map +1 -1
  46. package/dist/useAuiState.d.ts +6 -2
  47. package/dist/useAuiState.d.ts.map +1 -1
  48. package/dist/useAuiState.js +44 -42
  49. package/dist/useAuiState.js.map +1 -1
  50. package/dist/utils/BaseProxyHandler.d.ts +19 -16
  51. package/dist/utils/BaseProxyHandler.d.ts.map +1 -1
  52. package/dist/utils/BaseProxyHandler.js +46 -43
  53. package/dist/utils/BaseProxyHandler.js.map +1 -1
  54. package/dist/utils/NotificationManager.d.ts +13 -9
  55. package/dist/utils/NotificationManager.d.ts.map +1 -1
  56. package/dist/utils/NotificationManager.js +69 -82
  57. package/dist/utils/NotificationManager.js.map +1 -1
  58. package/dist/utils/proxied-assistant-state.d.ts +8 -4
  59. package/dist/utils/proxied-assistant-state.d.ts.map +1 -1
  60. package/dist/utils/proxied-assistant-state.js +28 -26
  61. package/dist/utils/proxied-assistant-state.js.map +1 -1
  62. package/dist/utils/react-assistant-context.d.ts +15 -10
  63. package/dist/utils/react-assistant-context.d.ts.map +1 -1
  64. package/dist/utils/react-assistant-context.js +69 -67
  65. package/dist/utils/react-assistant-context.js.map +1 -1
  66. package/dist/utils/splitClients.d.ts +12 -8
  67. package/dist/utils/splitClients.d.ts.map +1 -1
  68. package/dist/utils/splitClients.js +39 -43
  69. package/dist/utils/splitClients.js.map +1 -1
  70. package/dist/utils/tap-assistant-context.d.ts +17 -14
  71. package/dist/utils/tap-assistant-context.d.ts.map +1 -1
  72. package/dist/utils/tap-assistant-context.js +18 -15
  73. package/dist/utils/tap-assistant-context.js.map +1 -1
  74. package/dist/utils/tap-client-stack-context.d.ts +10 -6
  75. package/dist/utils/tap-client-stack-context.d.ts.map +1 -1
  76. package/dist/utils/tap-client-stack-context.js +22 -19
  77. package/dist/utils/tap-client-stack-context.js.map +1 -1
  78. package/dist/wrapperResource.d.ts +6 -2
  79. package/dist/wrapperResource.d.ts.map +1 -1
  80. package/dist/wrapperResource.js +12 -9
  81. package/dist/wrapperResource.js.map +1 -1
  82. package/package.json +7 -7
  83. package/src/RenderChildrenWithAccessor.tsx +1 -1
  84. package/src/__tests__/RenderChildrenWithAccessor.test.tsx +0 -1
  85. package/src/__tests__/hooks.test.tsx +0 -1
  86. package/src/tapClientLookup.ts +1 -1
  87. package/src/types/client.ts +1 -3
  88. package/src/types/events.ts +1 -3
  89. package/src/useAui.ts +1 -2
  90. package/src/useAuiEvent.ts +1 -4
  91. package/src/utils/splitClients.ts +1 -1
  92. package/dist/index.d.ts.map +0 -1
  93. package/dist/index.js.map +0 -1
  94. package/dist/types/client.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"react-assistant-context.d.ts","sourceRoot":"","sources":["../../src/utils/react-assistant-context.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,eAAe,EAA2B,2BAAwB;AAmDhF,iEAAiE;AACjE,eAAO,MAAM,sBAAsB,EAAE,eAIlC,CAAC;AAMJ,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,QAAO,eAUzC,CAAC;AAOL,eAAO,MAAM,wBAAwB,QAAO,eAE3C,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,WAAW,GAAI,sBAGzB;IACD,iDAAiD;IACjD,KAAK,EAAE,eAAe,CAAC;IACvB,6CAA6C;IAC7C,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,KAAG,KAAK,CAAC,YAMT,CAAC"}
1
+ {"version":3,"file":"react-assistant-context.d.ts","names":[],"sources":["../../src/utils/react-assistant-context.tsx"],"mappings":";;;;;cAsDa,sBAAA,EAAwB,eAIlC;AAJH;AAAA,cAWa,yBAAA,QAAgC,eAUzC;AAAA,cAOS,wBAAA,QAA+B,eAE3C;;AA1BE;AAOH;;;;AAUI;AAOJ;;;;AAEC;AAuBD;;;;;;;;;cAAa,WAAA;EAAe,KAAA;EAAA;AAAA;EAAA,iDAK1B,KAAA,EAAO,eAAA,EALmB;EAO1B,QAAA,EAAU,KAAA,CAAM,SAAA;AAAA,MACd,KAAA,CAAM,YAAA"}
@@ -1,79 +1,81 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { createContext, useContext } from "react";
3
- import { createProxiedAssistantState, PROXIED_ASSISTANT_STATE_SYMBOL, } from "./proxied-assistant-state.js";
4
1
  import { BaseProxyHandler, handleIntrospectionProp } from "./BaseProxyHandler.js";
5
- const NO_OP_SUBSCRIBE = () => () => { };
2
+ import { PROXIED_ASSISTANT_STATE_SYMBOL, createProxiedAssistantState } from "./proxied-assistant-state.js";
3
+ import { createContext, useContext } from "react";
4
+ import { jsx } from "react/jsx-runtime";
5
+ //#region src/utils/react-assistant-context.tsx
6
+ const NO_OP_SUBSCRIBE = () => () => {};
6
7
  const createErrorClientField = (message) => {
7
- const fn = (() => {
8
- throw new Error(message);
9
- });
10
- fn.source = null;
11
- fn.query = null;
12
- return fn;
8
+ const fn = (() => {
9
+ throw new Error(message);
10
+ });
11
+ fn.source = null;
12
+ fn.query = null;
13
+ return fn;
14
+ };
15
+ var DefaultAssistantClientProxyHandler = class extends BaseProxyHandler {
16
+ get(_, prop) {
17
+ if (prop === "subscribe") return NO_OP_SUBSCRIBE;
18
+ if (prop === "on") return NO_OP_SUBSCRIBE;
19
+ if (prop === PROXIED_ASSISTANT_STATE_SYMBOL) return DefaultAssistantClientProxiedAssistantState;
20
+ const introspection = handleIntrospectionProp(prop, "DefaultAssistantClient");
21
+ if (introspection !== false) return introspection;
22
+ return createErrorClientField("You are using a component or hook that requires an AuiProvider. Wrap your component in an <AuiProvider> component.");
23
+ }
24
+ ownKeys() {
25
+ return [
26
+ "subscribe",
27
+ "on",
28
+ PROXIED_ASSISTANT_STATE_SYMBOL
29
+ ];
30
+ }
31
+ has(_, prop) {
32
+ return prop === "subscribe" || prop === "on" || prop === PROXIED_ASSISTANT_STATE_SYMBOL;
33
+ }
13
34
  };
14
- class DefaultAssistantClientProxyHandler extends BaseProxyHandler {
15
- get(_, prop) {
16
- if (prop === "subscribe")
17
- return NO_OP_SUBSCRIBE;
18
- if (prop === "on")
19
- return NO_OP_SUBSCRIBE;
20
- if (prop === PROXIED_ASSISTANT_STATE_SYMBOL)
21
- return DefaultAssistantClientProxiedAssistantState;
22
- const introspection = handleIntrospectionProp(prop, "DefaultAssistantClient");
23
- if (introspection !== false)
24
- return introspection;
25
- return createErrorClientField("You are using a component or hook that requires an AuiProvider. Wrap your component in an <AuiProvider> component.");
26
- }
27
- ownKeys() {
28
- return ["subscribe", "on", PROXIED_ASSISTANT_STATE_SYMBOL];
29
- }
30
- has(_, prop) {
31
- return (prop === "subscribe" ||
32
- prop === "on" ||
33
- prop === PROXIED_ASSISTANT_STATE_SYMBOL);
34
- }
35
- }
36
35
  /** Default context value - throws "wrap in AuiProvider" error */
37
- export const DefaultAssistantClient = new Proxy({}, new DefaultAssistantClientProxyHandler());
36
+ const DefaultAssistantClient = new Proxy({}, new DefaultAssistantClientProxyHandler());
38
37
  const DefaultAssistantClientProxiedAssistantState = createProxiedAssistantState(DefaultAssistantClient);
39
38
  /** Root prototype for created clients - throws "scope not defined" error */
40
- export const createRootAssistantClient = () => new Proxy({}, {
41
- get(_, prop) {
42
- const introspection = handleIntrospectionProp(prop, "AssistantClient");
43
- if (introspection !== false)
44
- return introspection;
45
- return createErrorClientField(`The current scope does not have a "${String(prop)}" property.`);
46
- },
47
- });
39
+ const createRootAssistantClient = () => new Proxy({}, { get(_, prop) {
40
+ const introspection = handleIntrospectionProp(prop, "AssistantClient");
41
+ if (introspection !== false) return introspection;
42
+ return createErrorClientField(`The current scope does not have a "${String(prop)}" property.`);
43
+ } });
48
44
  /**
49
- * React Context for the AssistantClient
50
- */
45
+ * React Context for the AssistantClient
46
+ */
51
47
  const AssistantContext = createContext(DefaultAssistantClient);
52
- export const useAssistantContextValue = () => {
53
- return useContext(AssistantContext);
48
+ const useAssistantContextValue = () => {
49
+ return useContext(AssistantContext);
54
50
  };
55
51
  /**
56
- * Supplies an `AssistantClient` to the React tree.
57
- *
58
- * Place near the root of any subtree that uses {@link useAui} or the
59
- * primitives built on it. Components rendered outside an `AuiProvider`
60
- * receive a default client whose scope accessors throw on use, so
61
- * missing-provider mistakes surface at the point of use.
62
- *
63
- * When mounting a runtime built with one of the runtime hooks, use
64
- * {@link AssistantRuntimeProvider} — it installs an `AuiProvider`
65
- * internally — rather than wiring `AuiProvider` yourself.
66
- *
67
- * @example
68
- * ```tsx
69
- * function ScopedAssistant({ children, scopes }) {
70
- * const aui = useAui(scopes);
71
- *
72
- * return <AuiProvider value={aui}>{children}</AuiProvider>;
73
- * }
74
- * ```
75
- */
76
- export const AuiProvider = ({ value, children, }) => {
77
- return (_jsx(AssistantContext.Provider, { value: value, children: children }));
52
+ * Supplies an `AssistantClient` to the React tree.
53
+ *
54
+ * Place near the root of any subtree that uses {@link useAui} or the
55
+ * primitives built on it. Components rendered outside an `AuiProvider`
56
+ * receive a default client whose scope accessors throw on use, so
57
+ * missing-provider mistakes surface at the point of use.
58
+ *
59
+ * When mounting a runtime built with one of the runtime hooks, use
60
+ * {@link AssistantRuntimeProvider} — it installs an `AuiProvider`
61
+ * internally — rather than wiring `AuiProvider` yourself.
62
+ *
63
+ * @example
64
+ * ```tsx
65
+ * function ScopedAssistant({ children, scopes }) {
66
+ * const aui = useAui(scopes);
67
+ *
68
+ * return <AuiProvider value={aui}>{children}</AuiProvider>;
69
+ * }
70
+ * ```
71
+ */
72
+ const AuiProvider = ({ value, children }) => {
73
+ return /* @__PURE__ */ jsx(AssistantContext.Provider, {
74
+ value,
75
+ children
76
+ });
78
77
  };
78
+ //#endregion
79
+ export { AuiProvider, DefaultAssistantClient, createRootAssistantClient, useAssistantContextValue };
80
+
79
81
  //# sourceMappingURL=react-assistant-context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"react-assistant-context.js","sourceRoot":"","sources":["../../src/utils/react-assistant-context.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAElD,OAAO,EACL,2BAA2B,EAC3B,8BAA8B,GAC/B,qCAAkC;AACnC,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,8BAA2B;AAE/E,MAAM,eAAe,GAAG,GAAG,EAAE,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;AAEvC,MAAM,sBAAsB,GAAG,CAC7B,OAAe,EACiB,EAAE;IAClC,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE;QACf,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC,CAAmC,CAAC;IACrC,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC;IACjB,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC;IAChB,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC;AAEF,MAAM,kCACJ,SAAQ,gBAAgB;IAGxB,GAAG,CAAC,CAAU,EAAE,IAAqB;QACnC,IAAI,IAAI,KAAK,WAAW;YAAE,OAAO,eAAe,CAAC;QACjD,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,eAAe,CAAC;QAC1C,IAAI,IAAI,KAAK,8BAA8B;YACzC,OAAO,2CAA2C,CAAC;QACrD,MAAM,aAAa,GAAG,uBAAuB,CAC3C,IAAI,EACJ,wBAAwB,CACzB,CAAC;QACF,IAAI,aAAa,KAAK,KAAK;YAAE,OAAO,aAAa,CAAC;QAClD,OAAO,sBAAsB,CAC3B,oHAAoH,CACrH,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,8BAA8B,CAAC,CAAC;IAC7D,CAAC;IAED,GAAG,CAAC,CAAU,EAAE,IAAqB;QACnC,OAAO,CACL,IAAI,KAAK,WAAW;YACpB,IAAI,KAAK,IAAI;YACb,IAAI,KAAK,8BAA8B,CACxC,CAAC;IACJ,CAAC;CACF;AACD,iEAAiE;AACjE,MAAM,CAAC,MAAM,sBAAsB,GACjC,IAAI,KAAK,CACP,EAAqB,EACrB,IAAI,kCAAkC,EAAE,CACzC,CAAC;AAEJ,MAAM,2CAA2C,GAAG,2BAA2B,CAC7E,sBAAsB,CACvB,CAAC;AAEF,4EAA4E;AAC5E,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAoB,EAAE,CAC7D,IAAI,KAAK,CAAkB,EAAqB,EAAE;IAChD,GAAG,CAAC,CAAkB,EAAE,IAAqB;QAC3C,MAAM,aAAa,GAAG,uBAAuB,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;QACvE,IAAI,aAAa,KAAK,KAAK;YAAE,OAAO,aAAa,CAAC;QAElD,OAAO,sBAAsB,CAC3B,sCAAsC,MAAM,CAAC,IAAI,CAAC,aAAa,CAChE,CAAC;IACJ,CAAC;CACF,CAAC,CAAC;AAEL;;GAEG;AACH,MAAM,gBAAgB,GAAG,aAAa,CAAkB,sBAAsB,CAAC,CAAC;AAEhF,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAoB,EAAE;IAC5D,OAAO,UAAU,CAAC,gBAAgB,CAAC,CAAC;AACtC,CAAC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAC1B,KAAK,EACL,QAAQ,GAMT,EAAsB,EAAE;IACvB,OAAO,CACL,KAAC,gBAAgB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YACpC,QAAQ,GACiB,CAC7B,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"react-assistant-context.js","names":[],"sources":["../../src/utils/react-assistant-context.tsx"],"sourcesContent":["import type React from \"react\";\nimport { createContext, useContext } from \"react\";\nimport type { AssistantClient, AssistantClientAccessor } from \"../types/client\";\nimport {\n createProxiedAssistantState,\n PROXIED_ASSISTANT_STATE_SYMBOL,\n} from \"./proxied-assistant-state\";\nimport { BaseProxyHandler, handleIntrospectionProp } from \"./BaseProxyHandler\";\n\nconst NO_OP_SUBSCRIBE = () => () => {};\n\nconst createErrorClientField = (\n message: string,\n): AssistantClientAccessor<never> => {\n const fn = (() => {\n throw new Error(message);\n }) as AssistantClientAccessor<never>;\n fn.source = null;\n fn.query = null;\n return fn;\n};\n\nclass DefaultAssistantClientProxyHandler\n extends BaseProxyHandler\n implements ProxyHandler<AssistantClient>\n{\n get(_: unknown, prop: string | symbol) {\n if (prop === \"subscribe\") return NO_OP_SUBSCRIBE;\n if (prop === \"on\") return NO_OP_SUBSCRIBE;\n if (prop === PROXIED_ASSISTANT_STATE_SYMBOL)\n return DefaultAssistantClientProxiedAssistantState;\n const introspection = handleIntrospectionProp(\n prop,\n \"DefaultAssistantClient\",\n );\n if (introspection !== false) return introspection;\n return createErrorClientField(\n \"You are using a component or hook that requires an AuiProvider. Wrap your component in an <AuiProvider> component.\",\n );\n }\n\n ownKeys(): ArrayLike<string | symbol> {\n return [\"subscribe\", \"on\", PROXIED_ASSISTANT_STATE_SYMBOL];\n }\n\n has(_: unknown, prop: string | symbol): boolean {\n return (\n prop === \"subscribe\" ||\n prop === \"on\" ||\n prop === PROXIED_ASSISTANT_STATE_SYMBOL\n );\n }\n}\n/** Default context value - throws \"wrap in AuiProvider\" error */\nexport const DefaultAssistantClient: AssistantClient =\n new Proxy<AssistantClient>(\n {} as AssistantClient,\n new DefaultAssistantClientProxyHandler(),\n );\n\nconst DefaultAssistantClientProxiedAssistantState = createProxiedAssistantState(\n DefaultAssistantClient,\n);\n\n/** Root prototype for created clients - throws \"scope not defined\" error */\nexport const createRootAssistantClient = (): AssistantClient =>\n new Proxy<AssistantClient>({} as AssistantClient, {\n get(_: AssistantClient, prop: string | symbol) {\n const introspection = handleIntrospectionProp(prop, \"AssistantClient\");\n if (introspection !== false) return introspection;\n\n return createErrorClientField(\n `The current scope does not have a \"${String(prop)}\" property.`,\n );\n },\n });\n\n/**\n * React Context for the AssistantClient\n */\nconst AssistantContext = createContext<AssistantClient>(DefaultAssistantClient);\n\nexport const useAssistantContextValue = (): AssistantClient => {\n return useContext(AssistantContext);\n};\n\n/**\n * Supplies an `AssistantClient` to the React tree.\n *\n * Place near the root of any subtree that uses {@link useAui} or the\n * primitives built on it. Components rendered outside an `AuiProvider`\n * receive a default client whose scope accessors throw on use, so\n * missing-provider mistakes surface at the point of use.\n *\n * When mounting a runtime built with one of the runtime hooks, use\n * {@link AssistantRuntimeProvider} — it installs an `AuiProvider`\n * internally — rather than wiring `AuiProvider` yourself.\n *\n * @example\n * ```tsx\n * function ScopedAssistant({ children, scopes }) {\n * const aui = useAui(scopes);\n *\n * return <AuiProvider value={aui}>{children}</AuiProvider>;\n * }\n * ```\n */\nexport const AuiProvider = ({\n value,\n children,\n}: {\n /** Assistant client to expose to descendants. */\n value: AssistantClient;\n /** Subtree that may read from the client. */\n children: React.ReactNode;\n}): React.ReactElement => {\n return (\n <AssistantContext.Provider value={value}>\n {children}\n </AssistantContext.Provider>\n );\n};\n"],"mappings":";;;;;AASA,MAAM,8BAA8B,CAAC;AAErC,MAAM,0BACJ,YACmC;CACnC,MAAM,YAAY;EAChB,MAAM,IAAI,MAAM,OAAO;CACzB;CACA,GAAG,SAAS;CACZ,GAAG,QAAQ;CACX,OAAO;AACT;AAEA,IAAM,qCAAN,cACU,iBAEV;CACE,IAAI,GAAY,MAAuB;EACrC,IAAI,SAAS,aAAa,OAAO;EACjC,IAAI,SAAS,MAAM,OAAO;EAC1B,IAAI,SAAS,gCACX,OAAO;EACT,MAAM,gBAAgB,wBACpB,MACA,wBACF;EACA,IAAI,kBAAkB,OAAO,OAAO;EACpC,OAAO,uBACL,oHACF;CACF;CAEA,UAAsC;EACpC,OAAO;GAAC;GAAa;GAAM;EAA8B;CAC3D;CAEA,IAAI,GAAY,MAAgC;EAC9C,OACE,SAAS,eACT,SAAS,QACT,SAAS;CAEb;AACF;;AAEA,MAAa,yBACX,IAAI,MACF,CAAC,GACD,IAAI,mCAAmC,CACzC;AAEF,MAAM,8CAA8C,4BAClD,sBACF;;AAGA,MAAa,kCACX,IAAI,MAAuB,CAAC,GAAsB,EAChD,IAAI,GAAoB,MAAuB;CAC7C,MAAM,gBAAgB,wBAAwB,MAAM,iBAAiB;CACrE,IAAI,kBAAkB,OAAO,OAAO;CAEpC,OAAO,uBACL,sCAAsC,OAAO,IAAI,EAAE,YACrD;AACF,EACF,CAAC;;;;AAKH,MAAM,mBAAmB,cAA+B,sBAAsB;AAE9E,MAAa,iCAAkD;CAC7D,OAAO,WAAW,gBAAgB;AACpC;;;;;;;;;;;;;;;;;;;;;;AAuBA,MAAa,eAAe,EAC1B,OACA,eAMwB;CACxB,OACE,oBAAC,iBAAiB,UAAlB;EAAkC;EAC/B;CACwB,CAAA;AAE/B"}
@@ -1,10 +1,14 @@
1
- import { type DerivedElement } from "../Derived.js";
2
- import type { AssistantClient, ClientElement, ClientNames } from "../types/client.js";
3
- import type { useAui } from "../useAui.js";
4
- export type RootClients = Partial<Record<ClientNames, ClientElement<ClientNames>>>;
5
- export type DerivedClients = Partial<Record<ClientNames, DerivedElement<ClientNames>>>;
6
- export declare const tapSplitClients: (clients: useAui.Props, baseClient: AssistantClient) => {
7
- rootClients: Partial<Record<"ERROR: No clients were defined", ClientElement<"ERROR: No clients were defined">>>;
8
- derivedClients: Partial<Record<"ERROR: No clients were defined", DerivedElement<"ERROR: No clients were defined">>>;
1
+ import { AssistantClient, ClientElement, ClientNames } from "../types/client.js";
2
+ import { DerivedElement } from "../Derived.js";
3
+ import { useAui } from "../useAui.js";
4
+
5
+ //#region src/utils/splitClients.d.ts
6
+ type RootClients = Partial<Record<ClientNames, ClientElement<ClientNames>>>;
7
+ type DerivedClients = Partial<Record<ClientNames, DerivedElement<ClientNames>>>;
8
+ declare const tapSplitClients: (clients: useAui.Props, baseClient: AssistantClient) => {
9
+ rootClients: Partial<Record<"ERROR: No clients were defined", ClientElement<"ERROR: No clients were defined">>>;
10
+ derivedClients: Partial<Record<"ERROR: No clients were defined", DerivedElement<"ERROR: No clients were defined">>>;
9
11
  };
12
+ //#endregion
13
+ export { DerivedClients, RootClients, tapSplitClients };
10
14
  //# sourceMappingURL=splitClients.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"splitClients.d.ts","sourceRoot":"","sources":["../../src/utils/splitClients.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,cAAc,EAAE,sBAAmB;AAC1D,OAAO,KAAK,EACV,eAAe,EACf,aAAa,EACb,WAAW,EACZ,2BAAwB;AAEzB,OAAO,KAAK,EAAE,MAAM,EAAE,qBAAkB;AAGxC,MAAM,MAAM,WAAW,GAAG,OAAO,CAC/B,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,CAChD,CAAC;AACF,MAAM,MAAM,cAAc,GAAG,OAAO,CAClC,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC,CACjD,CAAC;AAwDF,eAAO,MAAM,eAAe,GAC1B,SAAS,MAAM,CAAC,KAAK,EACrB,YAAY,eAAe;;;CAQ5B,CAAC"}
1
+ {"version":3,"file":"splitClients.d.ts","names":[],"sources":["../../src/utils/splitClients.ts"],"mappings":";;;;;KAUY,WAAA,GAAc,OAAA,CACxB,MAAA,CAAO,WAAA,EAAa,aAAA,CAAc,WAAA;AAAA,KAExB,cAAA,GAAiB,OAAA,CAC3B,MAAA,CAAO,WAAA,EAAa,cAAA,CAAe,WAAA;AAAA,cAyDxB,eAAA,GACX,OAAA,EAAS,MAAA,CAAO,KAAA,EAChB,UAAA,EAAY,eAAA"}
@@ -1,53 +1,49 @@
1
1
  import { Derived } from "../Derived.js";
2
2
  import { getTransformScopes } from "../attachTransformScopes.js";
3
3
  import { tapMemo } from "@assistant-ui/tap";
4
+ //#region src/utils/splitClients.ts
4
5
  /**
5
- * Splits a clients object into root clients and derived clients,
6
- * applying transformScopes from root client elements.
7
- */
6
+ * Splits a clients object into root clients and derived clients,
7
+ * applying transformScopes from root client elements.
8
+ */
8
9
  function splitClients(clients, baseClient) {
9
- // 1. Collect transforms from root elements and run them iteratively
10
- const scopes = { ...clients };
11
- const visited = new Set();
12
- let changed = true;
13
- while (changed) {
14
- changed = false;
15
- for (const clientElement of Object.values(scopes)) {
16
- if (clientElement.type === Derived)
17
- continue;
18
- if (visited.has(clientElement.type))
19
- continue;
20
- visited.add(clientElement.type);
21
- const transform = getTransformScopes(clientElement.type);
22
- if (transform) {
23
- transform(scopes, baseClient);
24
- changed = true;
25
- break; // restart iteration since scopes may have new root elements
26
- }
27
- }
28
- }
29
- // 2. Split result into root/derived
30
- const rootClients = {};
31
- const derivedClients = {};
32
- for (const [key, clientElement] of Object.entries(scopes)) {
33
- if (clientElement.type === Derived) {
34
- derivedClients[key] = clientElement;
35
- }
36
- else {
37
- rootClients[key] = clientElement;
38
- }
39
- }
40
- return { rootClients, derivedClients };
10
+ const scopes = { ...clients };
11
+ const visited = /* @__PURE__ */ new Set();
12
+ let changed = true;
13
+ while (changed) {
14
+ changed = false;
15
+ for (const clientElement of Object.values(scopes)) {
16
+ if (clientElement.type === Derived) continue;
17
+ if (visited.has(clientElement.type)) continue;
18
+ visited.add(clientElement.type);
19
+ const transform = getTransformScopes(clientElement.type);
20
+ if (transform) {
21
+ transform(scopes, baseClient);
22
+ changed = true;
23
+ break;
24
+ }
25
+ }
26
+ }
27
+ const rootClients = {};
28
+ const derivedClients = {};
29
+ for (const [key, clientElement] of Object.entries(scopes)) if (clientElement.type === Derived) derivedClients[key] = clientElement;
30
+ else rootClients[key] = clientElement;
31
+ return {
32
+ rootClients,
33
+ derivedClients
34
+ };
41
35
  }
42
36
  const tapShallowMemoObject = (object) => {
43
- // biome-ignore lint/correctness/useExhaustiveDependencies: shallow memo
44
- return tapMemo(() => object, [...Object.entries(object).flat()]);
37
+ return tapMemo(() => object, [...Object.entries(object).flat()]);
45
38
  };
46
- export const tapSplitClients = (clients, baseClient) => {
47
- const { rootClients, derivedClients } = splitClients(clients, baseClient);
48
- return {
49
- rootClients: tapShallowMemoObject(rootClients),
50
- derivedClients: tapShallowMemoObject(derivedClients),
51
- };
39
+ const tapSplitClients = (clients, baseClient) => {
40
+ const { rootClients, derivedClients } = splitClients(clients, baseClient);
41
+ return {
42
+ rootClients: tapShallowMemoObject(rootClients),
43
+ derivedClients: tapShallowMemoObject(derivedClients)
44
+ };
52
45
  };
46
+ //#endregion
47
+ export { tapSplitClients };
48
+
53
49
  //# sourceMappingURL=splitClients.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"splitClients.js","sourceRoot":"","sources":["../../src/utils/splitClients.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAuB,sBAAmB;AAM1D,OAAO,EAAE,kBAAkB,EAAE,oCAAiC;AAE9D,OAAO,EAAE,OAAO,EAAwB,MAAM,mBAAmB,CAAC;AASlE;;;GAGG;AACH,SAAS,YAAY,CAAC,OAAqB,EAAE,UAA2B;IACtE,oEAAoE;IACpE,MAAM,MAAM,GAAG,EAAE,GAAG,OAAO,EAG1B,CAAC;IACF,MAAM,OAAO,GAAG,IAAI,GAAG,EAA2B,CAAC;IAEnD,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,OAAO,OAAO,EAAE,CAAC;QACf,OAAO,GAAG,KAAK,CAAC;QAChB,KAAK,MAAM,aAAa,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YAClD,IAAI,aAAa,CAAC,IAAI,KAAM,OAAmB;gBAAE,SAAS;YAC1D,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC;gBAAE,SAAS;YAC9C,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YAEhC,MAAM,SAAS,GAAG,kBAAkB,CAClC,aAAa,CAAC,IAA4C,CAC3D,CAAC;YACF,IAAI,SAAS,EAAE,CAAC;gBACd,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;gBAC9B,OAAO,GAAG,IAAI,CAAC;gBACf,MAAM,CAAC,4DAA4D;YACrE,CAAC;QACH,CAAC;IACH,CAAC;IAED,oCAAoC;IACpC,MAAM,WAAW,GAAgB,EAAE,CAAC;IACpC,MAAM,cAAc,GAAmB,EAAE,CAAC;IAE1C,KAAK,MAAM,CAAC,GAAG,EAAE,aAAa,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAGrD,EAAE,CAAC;QACJ,IAAI,aAAa,CAAC,IAAI,KAAM,OAAmB,EAAE,CAAC;YAChD,cAAc,CAAC,GAAG,CAAC,GAAG,aAA4C,CAAC;QACrE,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,GAAG,CAAC,GAAG,aAA2C,CAAC;QACjE,CAAC;IACH,CAAC;IAED,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC;AACzC,CAAC;AAED,MAAM,oBAAoB,GAAG,CAAmB,MAAS,EAAE,EAAE;IAC3D,wEAAwE;IACxE,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AACnE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,OAAqB,EACrB,UAA2B,EAC3B,EAAE;IACF,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,GAAG,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAE1E,OAAO;QACL,WAAW,EAAE,oBAAoB,CAAC,WAAW,CAAC;QAC9C,cAAc,EAAE,oBAAoB,CAAC,cAAc,CAAC;KACrD,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"splitClients.js","names":[],"sources":["../../src/utils/splitClients.ts"],"sourcesContent":["import { Derived, type DerivedElement } from \"../Derived\";\nimport type {\n AssistantClient,\n ClientElement,\n ClientNames,\n} from \"../types/client\";\nimport { getTransformScopes } from \"../attachTransformScopes\";\nimport type { useAui } from \"../useAui\";\nimport { tapMemo, type ResourceElement } from \"@assistant-ui/tap\";\n\nexport type RootClients = Partial<\n Record<ClientNames, ClientElement<ClientNames>>\n>;\nexport type DerivedClients = Partial<\n Record<ClientNames, DerivedElement<ClientNames>>\n>;\n\n/**\n * Splits a clients object into root clients and derived clients,\n * applying transformScopes from root client elements.\n */\nfunction splitClients(clients: useAui.Props, baseClient: AssistantClient) {\n // 1. Collect transforms from root elements and run them iteratively\n const scopes = { ...clients } as Record<\n string,\n ClientElement<ClientNames> | DerivedElement<ClientNames>\n >;\n const visited = new Set<(...args: any[]) => any>();\n\n let changed = true;\n while (changed) {\n changed = false;\n for (const clientElement of Object.values(scopes)) {\n if (clientElement.type === (Derived as unknown)) continue;\n if (visited.has(clientElement.type)) continue;\n visited.add(clientElement.type);\n\n const transform = getTransformScopes(\n clientElement.type as (props: any) => ResourceElement<any>,\n );\n if (transform) {\n transform(scopes, baseClient);\n changed = true;\n break; // restart iteration since scopes may have new root elements\n }\n }\n }\n\n // 2. Split result into root/derived\n const rootClients: RootClients = {};\n const derivedClients: DerivedClients = {};\n\n for (const [key, clientElement] of Object.entries(scopes) as [\n ClientNames,\n ClientElement<ClientNames> | DerivedElement<ClientNames>,\n ][]) {\n if (clientElement.type === (Derived as unknown)) {\n derivedClients[key] = clientElement as DerivedElement<ClientNames>;\n } else {\n rootClients[key] = clientElement as ClientElement<ClientNames>;\n }\n }\n\n return { rootClients, derivedClients };\n}\n\nconst tapShallowMemoObject = <T extends object>(object: T) => {\n // oxlint-disable-next-line tap-hooks/exhaustive-deps -- shallow memo over the object's flattened entries\n return tapMemo(() => object, [...Object.entries(object).flat()]);\n};\n\nexport const tapSplitClients = (\n clients: useAui.Props,\n baseClient: AssistantClient,\n) => {\n const { rootClients, derivedClients } = splitClients(clients, baseClient);\n\n return {\n rootClients: tapShallowMemoObject(rootClients),\n derivedClients: tapShallowMemoObject(derivedClients),\n };\n};\n"],"mappings":";;;;;;;;AAqBA,SAAS,aAAa,SAAuB,YAA6B;CAExE,MAAM,SAAS,EAAE,GAAG,QAAQ;CAI5B,MAAM,0BAAU,IAAI,IAA6B;CAEjD,IAAI,UAAU;CACd,OAAO,SAAS;EACd,UAAU;EACV,KAAK,MAAM,iBAAiB,OAAO,OAAO,MAAM,GAAG;GACjD,IAAI,cAAc,SAAU,SAAqB;GACjD,IAAI,QAAQ,IAAI,cAAc,IAAI,GAAG;GACrC,QAAQ,IAAI,cAAc,IAAI;GAE9B,MAAM,YAAY,mBAChB,cAAc,IAChB;GACA,IAAI,WAAW;IACb,UAAU,QAAQ,UAAU;IAC5B,UAAU;IACV;GACF;EACF;CACF;CAGA,MAAM,cAA2B,CAAC;CAClC,MAAM,iBAAiC,CAAC;CAExC,KAAK,MAAM,CAAC,KAAK,kBAAkB,OAAO,QAAQ,MAAM,GAItD,IAAI,cAAc,SAAU,SAC1B,eAAe,OAAO;MAEtB,YAAY,OAAO;CAIvB,OAAO;EAAE;EAAa;CAAe;AACvC;AAEA,MAAM,wBAA0C,WAAc;CAE5D,OAAO,cAAc,QAAQ,CAAC,GAAG,OAAO,QAAQ,MAAM,EAAE,KAAK,CAAC,CAAC;AACjE;AAEA,MAAa,mBACX,SACA,eACG;CACH,MAAM,EAAE,aAAa,mBAAmB,aAAa,SAAS,UAAU;CAExE,OAAO;EACL,aAAa,qBAAqB,WAAW;EAC7C,gBAAgB,qBAAqB,cAAc;CACrD;AACF"}
@@ -1,19 +1,22 @@
1
- import type { AssistantEventName, AssistantEventPayload } from "../types/events.js";
2
- import type { AssistantClient } from "../types/client.js";
3
- import { type ClientStack } from "./tap-client-stack-context.js";
1
+ import { AssistantEventName, AssistantEventPayload } from "../types/events.js";
2
+ import { AssistantClient } from "../types/client.js";
3
+ import { ClientStack } from "./tap-client-stack-context.js";
4
+
5
+ //#region src/utils/tap-assistant-context.d.ts
4
6
  type EmitFn = <TEvent extends Exclude<AssistantEventName, "*">>(event: TEvent, payload: AssistantEventPayload[TEvent], clientStack: ClientStack) => void;
5
- export type AssistantTapContextValue = {
6
- clientRef: {
7
- parent: AssistantClient;
8
- current: AssistantClient | null;
9
- };
10
- emit: EmitFn;
11
- };
12
- export declare const withAssistantTapContextProvider: <TResult>(value: AssistantTapContextValue, fn: () => TResult) => TResult;
13
- export declare const tapAssistantClientRef: () => {
7
+ type AssistantTapContextValue = {
8
+ clientRef: {
14
9
  parent: AssistantClient;
15
10
  current: AssistantClient | null;
11
+ };
12
+ emit: EmitFn;
13
+ };
14
+ declare const withAssistantTapContextProvider: <TResult>(value: AssistantTapContextValue, fn: () => TResult) => TResult;
15
+ declare const tapAssistantClientRef: () => {
16
+ parent: AssistantClient;
17
+ current: AssistantClient | null;
16
18
  };
17
- export declare const tapAssistantEmit: () => <TEvent extends Exclude<AssistantEventName, "*">>(event: TEvent, payload: AssistantEventPayload[TEvent]) => void;
18
- export {};
19
+ declare const tapAssistantEmit: () => <TEvent extends Exclude<AssistantEventName, "*">>(event: TEvent, payload: AssistantEventPayload[TEvent]) => void;
20
+ //#endregion
21
+ export { AssistantTapContextValue, tapAssistantClientRef, tapAssistantEmit, withAssistantTapContextProvider };
19
22
  //# sourceMappingURL=tap-assistant-context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tap-assistant-context.d.ts","sourceRoot":"","sources":["../../src/utils/tap-assistant-context.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,kBAAkB,EAClB,qBAAqB,EACtB,2BAAwB;AACzB,OAAO,KAAK,EAAE,eAAe,EAAE,2BAAwB;AACvD,OAAO,EAAkB,KAAK,WAAW,EAAE,sCAAmC;AAE9E,KAAK,MAAM,GAAG,CAAC,MAAM,SAAS,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,EAC5D,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,qBAAqB,CAAC,MAAM,CAAC,EACtC,WAAW,EAAE,WAAW,KACrB,IAAI,CAAC;AAEV,MAAM,MAAM,wBAAwB,GAAG;IACrC,SAAS,EAAE;QAAE,MAAM,EAAE,eAAe,CAAC;QAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAAA;KAAE,CAAC;IACxE,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAKF,eAAO,MAAM,+BAA+B,GAAI,OAAO,EACrD,OAAO,wBAAwB,EAC/B,IAAI,MAAM,OAAO,YAGlB,CAAC;AASF,eAAO,MAAM,qBAAqB;YArBX,eAAe;aAAW,eAAe,GAAG,IAAI;CAuBtE,CAAC;AAEF,eAAO,MAAM,gBAAgB,SAKxB,MAAM,SAAS,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,SACvC,MAAM,WACJ,qBAAqB,CAAC,MAAM,CAAC,SAK3C,CAAC"}
1
+ {"version":3,"file":"tap-assistant-context.d.ts","names":[],"sources":["../../src/utils/tap-assistant-context.ts"],"mappings":";;;;;KAaK,MAAA,mBAAyB,OAAA,CAAQ,kBAAA,QACpC,KAAA,EAAO,MAAA,EACP,OAAA,EAAS,qBAAA,CAAsB,MAAA,GAC/B,WAAA,EAAa,WAAA;AAAA,KAGH,wBAAA;EACV,SAAA;IAAa,MAAA,EAAQ,eAAA;IAAiB,OAAA,EAAS,eAAA;EAAA;EAC/C,IAAA,EAAM,MAAA;AAAA;AAAA,cAMK,+BAAA,YACX,KAAA,EAAO,wBAAA,EACP,EAAA,QAAU,OAAA,KAAO,OAAA;AAAA,cAYN,qBAAA;UArBU,eAAA;WAA0B,eAAe;AAAA;AAAA,cAyBnD,gBAAA,wBAKO,OAAA,CAAQ,kBAAA,QAAwB,KAAA,EACvC,MAAA,EAAM,OAAA,EACJ,qBAAA,CAAsB,MAAA"}
@@ -1,23 +1,26 @@
1
- import { createResourceContext, tap, withContextProvider, tapEffectEvent, } from "@assistant-ui/tap";
2
1
  import { tapClientStack } from "./tap-client-stack-context.js";
2
+ import { createResourceContext, tap, tapEffectEvent, withContextProvider } from "@assistant-ui/tap";
3
+ //#region src/utils/tap-assistant-context.ts
3
4
  const AssistantTapContext = createResourceContext(null);
4
- export const withAssistantTapContextProvider = (value, fn) => {
5
- return withContextProvider(AssistantTapContext, value, fn);
5
+ const withAssistantTapContextProvider = (value, fn) => {
6
+ return withContextProvider(AssistantTapContext, value, fn);
6
7
  };
7
8
  const tapAssistantTapContext = () => {
8
- const ctx = tap(AssistantTapContext);
9
- if (!ctx)
10
- throw new Error("AssistantTapContext is not available");
11
- return ctx;
9
+ const ctx = tap(AssistantTapContext);
10
+ if (!ctx) throw new Error("AssistantTapContext is not available");
11
+ return ctx;
12
12
  };
13
- export const tapAssistantClientRef = () => {
14
- return tapAssistantTapContext().clientRef;
13
+ const tapAssistantClientRef = () => {
14
+ return tapAssistantTapContext().clientRef;
15
15
  };
16
- export const tapAssistantEmit = () => {
17
- const { emit } = tapAssistantTapContext();
18
- const clientStack = tapClientStack();
19
- return tapEffectEvent((event, payload) => {
20
- emit(event, payload, clientStack);
21
- });
16
+ const tapAssistantEmit = () => {
17
+ const { emit } = tapAssistantTapContext();
18
+ const clientStack = tapClientStack();
19
+ return tapEffectEvent((event, payload) => {
20
+ emit(event, payload, clientStack);
21
+ });
22
22
  };
23
+ //#endregion
24
+ export { tapAssistantClientRef, tapAssistantEmit, withAssistantTapContextProvider };
25
+
23
26
  //# sourceMappingURL=tap-assistant-context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tap-assistant-context.js","sourceRoot":"","sources":["../../src/utils/tap-assistant-context.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,GAAG,EACH,mBAAmB,EACnB,cAAc,GACf,MAAM,mBAAmB,CAAC;AAM3B,OAAO,EAAE,cAAc,EAAoB,sCAAmC;AAa9E,MAAM,mBAAmB,GACvB,qBAAqB,CAAkC,IAAI,CAAC,CAAC;AAE/D,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAC7C,KAA+B,EAC/B,EAAiB,EACjB,EAAE;IACF,OAAO,mBAAmB,CAAC,mBAAmB,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;AAC7D,CAAC,CAAC;AAEF,MAAM,sBAAsB,GAAG,GAAG,EAAE;IAClC,MAAM,GAAG,GAAG,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACrC,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAElE,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,EAAE;IACxC,OAAO,sBAAsB,EAAE,CAAC,SAAS,CAAC;AAC5C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,EAAE;IACnC,MAAM,EAAE,IAAI,EAAE,GAAG,sBAAsB,EAAE,CAAC;IAC1C,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IAErC,OAAO,cAAc,CACnB,CACE,KAAa,EACb,OAAsC,EACtC,EAAE;QACF,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IACpC,CAAC,CACF,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"tap-assistant-context.js","names":[],"sources":["../../src/utils/tap-assistant-context.ts"],"sourcesContent":["import {\n createResourceContext,\n tap,\n withContextProvider,\n tapEffectEvent,\n} from \"@assistant-ui/tap\";\nimport type {\n AssistantEventName,\n AssistantEventPayload,\n} from \"../types/events\";\nimport type { AssistantClient } from \"../types/client\";\nimport { tapClientStack, type ClientStack } from \"./tap-client-stack-context\";\n\ntype EmitFn = <TEvent extends Exclude<AssistantEventName, \"*\">>(\n event: TEvent,\n payload: AssistantEventPayload[TEvent],\n clientStack: ClientStack,\n) => void;\n\nexport type AssistantTapContextValue = {\n clientRef: { parent: AssistantClient; current: AssistantClient | null };\n emit: EmitFn;\n};\n\nconst AssistantTapContext =\n createResourceContext<AssistantTapContextValue | null>(null);\n\nexport const withAssistantTapContextProvider = <TResult>(\n value: AssistantTapContextValue,\n fn: () => TResult,\n) => {\n return withContextProvider(AssistantTapContext, value, fn);\n};\n\nconst tapAssistantTapContext = () => {\n const ctx = tap(AssistantTapContext);\n if (!ctx) throw new Error(\"AssistantTapContext is not available\");\n\n return ctx;\n};\n\nexport const tapAssistantClientRef = () => {\n return tapAssistantTapContext().clientRef;\n};\n\nexport const tapAssistantEmit = () => {\n const { emit } = tapAssistantTapContext();\n const clientStack = tapClientStack();\n\n return tapEffectEvent(\n <TEvent extends Exclude<AssistantEventName, \"*\">>(\n event: TEvent,\n payload: AssistantEventPayload[TEvent],\n ) => {\n emit(event, payload, clientStack);\n },\n );\n};\n"],"mappings":";;;AAwBA,MAAM,sBACJ,sBAAuD,IAAI;AAE7D,MAAa,mCACX,OACA,OACG;CACH,OAAO,oBAAoB,qBAAqB,OAAO,EAAE;AAC3D;AAEA,MAAM,+BAA+B;CACnC,MAAM,MAAM,IAAI,mBAAmB;CACnC,IAAI,CAAC,KAAK,MAAM,IAAI,MAAM,sCAAsC;CAEhE,OAAO;AACT;AAEA,MAAa,8BAA8B;CACzC,OAAO,uBAAuB,EAAE;AAClC;AAEA,MAAa,yBAAyB;CACpC,MAAM,EAAE,SAAS,uBAAuB;CACxC,MAAM,cAAc,eAAe;CAEnC,OAAO,gBAEH,OACA,YACG;EACH,KAAK,OAAO,SAAS,WAAW;CAClC,CACF;AACF"}
@@ -1,23 +1,27 @@
1
- import type { ClientMethods } from "../types/client.js";
1
+ import { ClientMethods } from "../types/client.js";
2
+
3
+ //#region src/utils/tap-client-stack-context.d.ts
2
4
  /**
3
5
  * Symbol used to get the client index from a ClientProxy.
4
6
  */
5
- export declare const SYMBOL_CLIENT_INDEX: unique symbol;
7
+ declare const SYMBOL_CLIENT_INDEX: unique symbol;
6
8
  /**
7
9
  * Get the index of a client (its position in the client stack when created).
8
10
  */
9
- export declare const getClientIndex: (client: ClientMethods) => number;
11
+ declare const getClientIndex: (client: ClientMethods) => number;
10
12
  /**
11
13
  * The client stack - an array of clients representing the current hierarchy.
12
14
  */
13
- export type ClientStack = readonly ClientMethods[];
15
+ type ClientStack = readonly ClientMethods[];
14
16
  /**
15
17
  * Get the current client stack inside a tap resource.
16
18
  */
17
- export declare const tapClientStack: () => ClientStack;
19
+ declare const tapClientStack: () => ClientStack;
18
20
  /**
19
21
  * Execute a callback with a client pushed onto the stack.
20
22
  * The stack is duplicated, not mutated.
21
23
  */
22
- export declare const tapWithClientStack: <T>(client: ClientMethods, callback: () => T) => T;
24
+ declare const tapWithClientStack: <T>(client: ClientMethods, callback: () => T) => T;
25
+ //#endregion
26
+ export { ClientStack, SYMBOL_CLIENT_INDEX, getClientIndex, tapClientStack, tapWithClientStack };
23
27
  //# sourceMappingURL=tap-client-stack-context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tap-client-stack-context.d.ts","sourceRoot":"","sources":["../../src/utils/tap-client-stack-context.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,2BAAwB;AAErD;;GAEG;AACH,eAAO,MAAM,mBAAmB,eAA2C,CAAC;AAE5E;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,QAAQ,aAAa,KAAG,MAItD,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,SAAS,aAAa,EAAE,CAAC;AAInD;;GAEG;AACH,eAAO,MAAM,cAAc,QAAO,WAEjC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAAI,CAAC,EAClC,QAAQ,aAAa,EACrB,UAAU,MAAM,CAAC,KAChB,CAOF,CAAC"}
1
+ {"version":3,"file":"tap-client-stack-context.d.ts","names":[],"sources":["../../src/utils/tap-client-stack-context.ts"],"mappings":";;;;;AAWA;cAAa,mBAAA;;;AAA8D;cAK9D,cAAA,GAAkB,MAAqB,EAAb,aAAa;;;;KASxC,WAAA,YAAuB,aAAa;AAAhD;;;AAAA,cAOa,cAAA,QAAqB,WAEjC;AAT+C;AAOhD;;;AAPgD,cAenC,kBAAA,MACX,MAAA,EAAQ,aAAA,EACR,QAAA,QAAgB,CAAA,KACf,CAAA"}
@@ -1,28 +1,31 @@
1
- import { createResourceContext, tap, withContextProvider, tapMemo, } from "@assistant-ui/tap";
1
+ import { createResourceContext, tap, tapMemo, withContextProvider } from "@assistant-ui/tap";
2
+ //#region src/utils/tap-client-stack-context.ts
2
3
  /**
3
- * Symbol used to get the client index from a ClientProxy.
4
- */
5
- export const SYMBOL_CLIENT_INDEX = Symbol("assistant-ui.store.clientIndex");
4
+ * Symbol used to get the client index from a ClientProxy.
5
+ */
6
+ const SYMBOL_CLIENT_INDEX = Symbol("assistant-ui.store.clientIndex");
6
7
  /**
7
- * Get the index of a client (its position in the client stack when created).
8
- */
9
- export const getClientIndex = (client) => {
10
- return client[SYMBOL_CLIENT_INDEX];
8
+ * Get the index of a client (its position in the client stack when created).
9
+ */
10
+ const getClientIndex = (client) => {
11
+ return client[SYMBOL_CLIENT_INDEX];
11
12
  };
12
13
  const ClientStackContext = createResourceContext([]);
13
14
  /**
14
- * Get the current client stack inside a tap resource.
15
- */
16
- export const tapClientStack = () => {
17
- return tap(ClientStackContext);
15
+ * Get the current client stack inside a tap resource.
16
+ */
17
+ const tapClientStack = () => {
18
+ return tap(ClientStackContext);
18
19
  };
19
20
  /**
20
- * Execute a callback with a client pushed onto the stack.
21
- * The stack is duplicated, not mutated.
22
- */
23
- export const tapWithClientStack = (client, callback) => {
24
- const currentStack = tapClientStack();
25
- const newStack = tapMemo(() => [...currentStack, client], [currentStack, client]);
26
- return withContextProvider(ClientStackContext, newStack, callback);
21
+ * Execute a callback with a client pushed onto the stack.
22
+ * The stack is duplicated, not mutated.
23
+ */
24
+ const tapWithClientStack = (client, callback) => {
25
+ const currentStack = tapClientStack();
26
+ return withContextProvider(ClientStackContext, tapMemo(() => [...currentStack, client], [currentStack, client]), callback);
27
27
  };
28
+ //#endregion
29
+ export { SYMBOL_CLIENT_INDEX, getClientIndex, tapClientStack, tapWithClientStack };
30
+
28
31
  //# sourceMappingURL=tap-client-stack-context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tap-client-stack-context.js","sourceRoot":"","sources":["../../src/utils/tap-client-stack-context.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,GAAG,EACH,mBAAmB,EACnB,OAAO,GACR,MAAM,mBAAmB,CAAC;AAG3B;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,gCAAgC,CAAC,CAAC;AAE5E;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,MAAqB,EAAU,EAAE;IAC9D,OAAQ,MAAuD,CAC7D,mBAAmB,CACpB,CAAC;AACJ,CAAC,CAAC;AAOF,MAAM,kBAAkB,GAAG,qBAAqB,CAAc,EAAE,CAAC,CAAC;AAElE;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,GAAgB,EAAE;IAC9C,OAAO,GAAG,CAAC,kBAAkB,CAAC,CAAC;AACjC,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,MAAqB,EACrB,QAAiB,EACd,EAAE;IACL,MAAM,YAAY,GAAG,cAAc,EAAE,CAAC;IACtC,MAAM,QAAQ,GAAG,OAAO,CACtB,GAAG,EAAE,CAAC,CAAC,GAAG,YAAY,EAAE,MAAM,CAAC,EAC/B,CAAC,YAAY,EAAE,MAAM,CAAC,CACvB,CAAC;IACF,OAAO,mBAAmB,CAAC,kBAAkB,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACrE,CAAC,CAAC"}
1
+ {"version":3,"file":"tap-client-stack-context.js","names":[],"sources":["../../src/utils/tap-client-stack-context.ts"],"sourcesContent":["import {\n createResourceContext,\n tap,\n withContextProvider,\n tapMemo,\n} from \"@assistant-ui/tap\";\nimport type { ClientMethods } from \"../types/client\";\n\n/**\n * Symbol used to get the client index from a ClientProxy.\n */\nexport const SYMBOL_CLIENT_INDEX = Symbol(\"assistant-ui.store.clientIndex\");\n\n/**\n * Get the index of a client (its position in the client stack when created).\n */\nexport const getClientIndex = (client: ClientMethods): number => {\n return (client as unknown as { [SYMBOL_CLIENT_INDEX]: number })[\n SYMBOL_CLIENT_INDEX\n ];\n};\n\n/**\n * The client stack - an array of clients representing the current hierarchy.\n */\nexport type ClientStack = readonly ClientMethods[];\n\nconst ClientStackContext = createResourceContext<ClientStack>([]);\n\n/**\n * Get the current client stack inside a tap resource.\n */\nexport const tapClientStack = (): ClientStack => {\n return tap(ClientStackContext);\n};\n\n/**\n * Execute a callback with a client pushed onto the stack.\n * The stack is duplicated, not mutated.\n */\nexport const tapWithClientStack = <T>(\n client: ClientMethods,\n callback: () => T,\n): T => {\n const currentStack = tapClientStack();\n const newStack = tapMemo(\n () => [...currentStack, client],\n [currentStack, client],\n );\n return withContextProvider(ClientStackContext, newStack, callback);\n};\n"],"mappings":";;;;;AAWA,MAAa,sBAAsB,OAAO,gCAAgC;;;;AAK1E,MAAa,kBAAkB,WAAkC;CAC/D,OAAQ,OACN;AAEJ;AAOA,MAAM,qBAAqB,sBAAmC,CAAC,CAAC;;;;AAKhE,MAAa,uBAAoC;CAC/C,OAAO,IAAI,kBAAkB;AAC/B;;;;;AAMA,MAAa,sBACX,QACA,aACM;CACN,MAAM,eAAe,eAAe;CAKpC,OAAO,oBAAoB,oBAJV,cACT,CAAC,GAAG,cAAc,MAAM,GAC9B,CAAC,cAAc,MAAM,CAE+B,GAAG,QAAQ;AACnE"}
@@ -1,3 +1,7 @@
1
- import { type ResourceElement, type Resource } from "@assistant-ui/tap";
2
- export declare const wrapperResource: <R, P>(fn: (props: ResourceElement<P>) => R) => Resource<R, ResourceElement<P>>;
1
+ import { Resource, ResourceElement } from "@assistant-ui/tap";
2
+
3
+ //#region src/wrapperResource.d.ts
4
+ declare const wrapperResource: <R, P>(fn: (props: ResourceElement<P>) => R) => Resource<R, ResourceElement<P>>;
5
+ //#endregion
6
+ export { wrapperResource };
3
7
  //# sourceMappingURL=wrapperResource.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wrapperResource.d.ts","sourceRoot":"","sources":["../src/wrapperResource.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,QAAQ,EAGd,MAAM,mBAAmB,CAAC;AAE3B,eAAO,MAAM,eAAe,GAAI,CAAC,EAAE,CAAC,EAClC,IAAI,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,KACnC,QAAQ,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAOhC,CAAC"}
1
+ {"version":3,"file":"wrapperResource.d.ts","names":[],"sources":["../src/wrapperResource.ts"],"mappings":";;;cAOa,eAAA,SACX,EAAA,GAAK,KAAA,EAAO,eAAA,CAAgB,CAAA,MAAO,CAAA,KAClC,QAAA,CAAS,CAAA,EAAG,eAAA,CAAgB,CAAA"}
@@ -1,11 +1,14 @@
1
- import { resource, withKey, } from "@assistant-ui/tap";
2
- export const wrapperResource = (fn) => {
3
- const res = resource(fn);
4
- return (props) => {
5
- const el = res(props);
6
- if (props.key === undefined)
7
- return el;
8
- return withKey(props.key, el);
9
- };
1
+ import { resource, withKey } from "@assistant-ui/tap";
2
+ //#region src/wrapperResource.ts
3
+ const wrapperResource = (fn) => {
4
+ const res = resource(fn);
5
+ return (props) => {
6
+ const el = res(props);
7
+ if (props.key === void 0) return el;
8
+ return withKey(props.key, el);
9
+ };
10
10
  };
11
+ //#endregion
12
+ export { wrapperResource };
13
+
11
14
  //# sourceMappingURL=wrapperResource.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"wrapperResource.js","sourceRoot":"","sources":["../src/wrapperResource.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,QAAQ,EACR,OAAO,GACR,MAAM,mBAAmB,CAAC;AAE3B,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,EAAoC,EACH,EAAE;IACnC,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACzB,OAAO,CAAC,KAAyB,EAAE,EAAE;QACnC,MAAM,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;QACtB,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS;YAAE,OAAO,EAAE,CAAC;QACvC,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAChC,CAAC,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"wrapperResource.js","names":[],"sources":["../src/wrapperResource.ts"],"sourcesContent":["import {\n type ResourceElement,\n type Resource,\n resource,\n withKey,\n} from \"@assistant-ui/tap\";\n\nexport const wrapperResource = <R, P>(\n fn: (props: ResourceElement<P>) => R,\n): Resource<R, ResourceElement<P>> => {\n const res = resource(fn);\n return (props: ResourceElement<P>) => {\n const el = res(props);\n if (props.key === undefined) return el;\n return withKey(props.key, el);\n };\n};\n"],"mappings":";;AAOA,MAAa,mBACX,OACoC;CACpC,MAAM,MAAM,SAAS,EAAE;CACvB,QAAQ,UAA8B;EACpC,MAAM,KAAK,IAAI,KAAK;EACpB,IAAI,MAAM,QAAQ,KAAA,GAAW,OAAO;EACpC,OAAO,QAAQ,MAAM,KAAK,EAAE;CAC9B;AACF"}