langgraph-ui-components 0.0.13 → 0.0.14

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 (200) hide show
  1. package/dist/index.es107.js +4 -4
  2. package/dist/index.es109.js +1 -1
  3. package/dist/index.es115.js +1 -1
  4. package/dist/index.es119.js +1 -1
  5. package/dist/index.es121.js +1 -1
  6. package/dist/index.es122.js +9 -9
  7. package/dist/index.es129.js +2 -2
  8. package/dist/index.es13.js +6 -6
  9. package/dist/index.es132.js +2 -2
  10. package/dist/index.es141.js +1 -1
  11. package/dist/index.es142.js +2 -2
  12. package/dist/index.es143.js +1 -1
  13. package/dist/index.es156.js +1 -1
  14. package/dist/index.es16.js +1 -1
  15. package/dist/index.es164.js +1 -1
  16. package/dist/index.es165.js +1 -1
  17. package/dist/index.es166.js +1 -1
  18. package/dist/index.es167.js +1 -1
  19. package/dist/index.es168.js +1 -1
  20. package/dist/index.es169.js +1 -1
  21. package/dist/index.es170.js +1 -1
  22. package/dist/index.es171.js +1 -1
  23. package/dist/index.es172.js +1 -1
  24. package/dist/index.es173.js +1 -1
  25. package/dist/index.es174.js +1 -1
  26. package/dist/index.es175.js +1 -1
  27. package/dist/index.es176.js +1 -1
  28. package/dist/index.es177.js +1 -1
  29. package/dist/index.es178.js +1 -1
  30. package/dist/index.es179.js +1 -1
  31. package/dist/index.es180.js +1 -1
  32. package/dist/index.es181.js +1 -1
  33. package/dist/index.es182.js +1 -1
  34. package/dist/index.es183.js +1 -1
  35. package/dist/index.es184.js +1 -1
  36. package/dist/index.es185.js +1 -1
  37. package/dist/index.es186.js +1 -1
  38. package/dist/index.es187.js +1 -1
  39. package/dist/index.es188.js +1 -1
  40. package/dist/index.es189.js +1 -1
  41. package/dist/index.es190.js +1 -1
  42. package/dist/index.es191.js +1 -1
  43. package/dist/index.es192.js +1 -1
  44. package/dist/index.es193.js +1 -1
  45. package/dist/index.es194.js +1 -1
  46. package/dist/index.es195.js +1 -1
  47. package/dist/index.es196.js +1 -1
  48. package/dist/index.es197.js +1 -1
  49. package/dist/index.es198.js +1 -1
  50. package/dist/index.es199.js +1 -1
  51. package/dist/index.es2.js +30 -24
  52. package/dist/index.es2.js.map +1 -1
  53. package/dist/index.es20.js +2 -2
  54. package/dist/index.es200.js +1 -1
  55. package/dist/index.es201.js +1 -1
  56. package/dist/index.es202.js +1 -1
  57. package/dist/index.es203.js +1 -1
  58. package/dist/index.es204.js +1 -1
  59. package/dist/index.es205.js +1 -1
  60. package/dist/index.es206.js +1 -1
  61. package/dist/index.es207.js +1 -1
  62. package/dist/index.es208.js +1 -1
  63. package/dist/index.es214.js +4 -2
  64. package/dist/index.es214.js.map +1 -1
  65. package/dist/index.es215.js +2 -2
  66. package/dist/index.es216.js +2 -2
  67. package/dist/index.es217.js +2 -2
  68. package/dist/index.es218.js +2 -2
  69. package/dist/index.es219.js +2 -2
  70. package/dist/index.es22.js +15 -119
  71. package/dist/index.es22.js.map +1 -1
  72. package/dist/index.es220.js +2 -2
  73. package/dist/index.es221.js +2 -2
  74. package/dist/index.es222.js +2 -2
  75. package/dist/index.es223.js +2 -2
  76. package/dist/index.es224.js +2 -2
  77. package/dist/index.es225.js +2 -2
  78. package/dist/index.es226.js +2 -2
  79. package/dist/index.es227.js +2 -2
  80. package/dist/index.es228.js +2 -2
  81. package/dist/index.es229.js +2 -2
  82. package/dist/index.es23.js +64 -17
  83. package/dist/index.es23.js.map +1 -1
  84. package/dist/index.es230.js +2 -2
  85. package/dist/index.es231.js +2 -2
  86. package/dist/index.es232.js +2 -2
  87. package/dist/index.es233.js +2 -2
  88. package/dist/index.es234.js +2 -2
  89. package/dist/index.es235.js +2 -2
  90. package/dist/index.es236.js +2 -2
  91. package/dist/index.es237.js +2 -2
  92. package/dist/index.es238.js +2 -2
  93. package/dist/index.es239.js +2 -2
  94. package/dist/index.es24.js +29 -60
  95. package/dist/index.es24.js.map +1 -1
  96. package/dist/index.es240.js +2 -2
  97. package/dist/index.es241.js +2 -2
  98. package/dist/index.es242.js +2 -2
  99. package/dist/index.es243.js +2 -2
  100. package/dist/index.es244.js +2 -2
  101. package/dist/index.es245.js +2 -2
  102. package/dist/index.es246.js +2 -2
  103. package/dist/index.es247.js +2 -2
  104. package/dist/index.es248.js +2 -2
  105. package/dist/index.es249.js +2 -2
  106. package/dist/index.es25.js +145 -28
  107. package/dist/index.es25.js.map +1 -1
  108. package/dist/index.es250.js +2 -2
  109. package/dist/index.es251.js +2 -2
  110. package/dist/index.es252.js +2 -2
  111. package/dist/index.es253.js +2 -2
  112. package/dist/index.es254.js +2 -2
  113. package/dist/index.es255.js +2 -2
  114. package/dist/index.es256.js +2 -2
  115. package/dist/index.es257.js +2 -2
  116. package/dist/index.es258.js +2 -2
  117. package/dist/index.es259.js +2 -4
  118. package/dist/index.es259.js.map +1 -1
  119. package/dist/index.es26.js +100 -144
  120. package/dist/index.es26.js.map +1 -1
  121. package/dist/index.es260.js +8 -5
  122. package/dist/index.es260.js.map +1 -1
  123. package/dist/index.es261.js +5 -13
  124. package/dist/index.es261.js.map +1 -1
  125. package/dist/index.es262.js +12 -5
  126. package/dist/index.es262.js.map +1 -1
  127. package/dist/index.es263.js +6 -8
  128. package/dist/index.es263.js.map +1 -1
  129. package/dist/index.es267.js +63 -6
  130. package/dist/index.es267.js.map +1 -1
  131. package/dist/index.es268.js +21 -102
  132. package/dist/index.es268.js.map +1 -1
  133. package/dist/index.es269.js +5 -118
  134. package/dist/index.es269.js.map +1 -1
  135. package/dist/index.es27.js +66 -101
  136. package/dist/index.es27.js.map +1 -1
  137. package/dist/index.es270.js +330 -117
  138. package/dist/index.es270.js.map +1 -1
  139. package/dist/index.es271.js +6 -114
  140. package/dist/index.es271.js.map +1 -1
  141. package/dist/index.es272.js +103 -6
  142. package/dist/index.es272.js.map +1 -1
  143. package/dist/index.es273.js +112 -57
  144. package/dist/index.es273.js.map +1 -1
  145. package/dist/index.es274.js +135 -21
  146. package/dist/index.es274.js.map +1 -1
  147. package/dist/index.es275.js +114 -5
  148. package/dist/index.es275.js.map +1 -1
  149. package/dist/index.es276.js +6 -349
  150. package/dist/index.es276.js.map +1 -1
  151. package/dist/index.es28.js +121 -68
  152. package/dist/index.es28.js.map +1 -1
  153. package/dist/index.es280.js +3726 -131
  154. package/dist/index.es280.js.map +1 -1
  155. package/dist/index.es281.js +342 -2
  156. package/dist/index.es281.js.map +1 -1
  157. package/dist/index.es282.js +76 -3704
  158. package/dist/index.es282.js.map +1 -1
  159. package/dist/index.es283.js +117 -326
  160. package/dist/index.es283.js.map +1 -1
  161. package/dist/index.es284.js +13 -107
  162. package/dist/index.es284.js.map +1 -1
  163. package/dist/index.es285.js +142 -123
  164. package/dist/index.es285.js.map +1 -1
  165. package/dist/index.es286.js +13 -13
  166. package/dist/index.es286.js.map +1 -1
  167. package/dist/index.es287.js +6 -150
  168. package/dist/index.es287.js.map +1 -1
  169. package/dist/index.es288.js +19 -13
  170. package/dist/index.es288.js.map +1 -1
  171. package/dist/index.es289.js +88 -6
  172. package/dist/index.es289.js.map +1 -1
  173. package/dist/index.es29.js +1 -1
  174. package/dist/index.es290.js +238 -16
  175. package/dist/index.es290.js.map +1 -1
  176. package/dist/index.es291.js +22 -88
  177. package/dist/index.es291.js.map +1 -1
  178. package/dist/index.es292.js +6 -243
  179. package/dist/index.es292.js.map +1 -1
  180. package/dist/index.es293.js +4 -24
  181. package/dist/index.es293.js.map +1 -1
  182. package/dist/index.es294.js +18 -6
  183. package/dist/index.es294.js.map +1 -1
  184. package/dist/index.es295.js +8 -4
  185. package/dist/index.es295.js.map +1 -1
  186. package/dist/index.es296.js +141 -17
  187. package/dist/index.es296.js.map +1 -1
  188. package/dist/index.es297.js +2 -8
  189. package/dist/index.es297.js.map +1 -1
  190. package/dist/index.es50.js +208 -5
  191. package/dist/index.es50.js.map +1 -1
  192. package/dist/index.es51.js +138 -202
  193. package/dist/index.es51.js.map +1 -1
  194. package/dist/index.es52.js +42 -141
  195. package/dist/index.es52.js.map +1 -1
  196. package/dist/index.es53.js +5 -45
  197. package/dist/index.es53.js.map +1 -1
  198. package/dist/index.es7.js +5 -25
  199. package/dist/index.es7.js.map +1 -1
  200. package/package.json +1 -1
@@ -1,72 +1,125 @@
1
- import { jsxs, jsx } from "react/jsx-runtime";
2
- import { getContentString } from "./index.es23.js";
3
- import React__default, { useState } from "react";
4
- function ToolCallFunctions({ title, toolMessages }) {
5
- const [open, setOpen] = useState(false);
6
- if (!toolMessages || toolMessages.length === 0) return null;
7
- return /* @__PURE__ */ jsxs(
8
- "div",
9
- {
10
- id: "accordion-collapse",
11
- "data-accordion": "collapse",
12
- className: "w-full rounded-base overflow-hidden shadow-xs border rounded-xl border-zinc-800 max-w-[90%] min-w-25",
13
- children: [
14
- /* @__PURE__ */ jsx("h2", { id: "accordion-collapse-heading-1", children: /* @__PURE__ */ jsxs(
15
- "button",
16
- {
17
- type: "button",
18
- className: "flex items-center justify-between w-full p-2 font-medium gap-3 text-body border-0 outline-none ring-0 appearance-none bg-transparent",
19
- onClick: () => setOpen((v) => !v),
20
- "aria-expanded": open,
21
- "aria-controls": "accordion-collapse-body-1",
22
- children: [
23
- /* @__PURE__ */ jsxs("span", { children: [
24
- "🔷 ",
25
- title
26
- ] }),
27
- /* @__PURE__ */ jsx(
28
- "svg",
29
- {
30
- "data-accordion-icon": true,
31
- className: `w-5 h-5 shrink-0 transition-transform ${open ? "rotate-0" : "rotate-180"}`,
32
- "aria-hidden": "true",
33
- xmlns: "http://www.w3.org/2000/svg",
34
- width: "24",
35
- height: "24",
36
- fill: "none",
37
- viewBox: "0 0 24 24",
38
- children: /* @__PURE__ */ jsx(
39
- "path",
40
- {
41
- stroke: "currentColor",
42
- strokeLinecap: "round",
43
- strokeLinejoin: "round",
44
- strokeWidth: "2",
45
- d: "m5 15 7-7 7 7"
46
- }
47
- )
48
- }
49
- )
50
- ]
51
- }
52
- ) }),
53
- /* @__PURE__ */ jsx(
54
- "div",
55
- {
56
- id: "accordion-collapse-body-1",
57
- className: `${open ? "" : "hidden"}`,
58
- "aria-labelledby": "accordion-collapse-heading-1",
59
- children: /* @__PURE__ */ jsx("div", { className: "md:p-5 text-left space-y-3", children: toolMessages.map((toolMsg) => /* @__PURE__ */ jsx("div", { className: "border-zinc-700", children: /* @__PURE__ */ jsx("p", { className: "text-body text-sm", children: toolMsg.content ? getContentString(toolMsg.content) : "" }) }, toolMsg.id)) })
60
- }
61
- )
62
- ]
63
- }
64
- );
1
+ import { useStream } from "./index.es19.js";
2
+ import "./index.es18.js";
3
+ import * as React from "react";
4
+ import * as ReactDOM from "react-dom";
5
+ import * as JsxRuntime from "react/jsx-runtime";
6
+ import { jsx, jsxs, Fragment } from "react/jsx-runtime";
7
+ const UseStreamContext = React.createContext(null);
8
+ function useStreamContext() {
9
+ const ctx = React.useContext(UseStreamContext);
10
+ if (!ctx) throw new Error("useStreamContext must be used within a LoadExternalComponent");
11
+ return new Proxy(ctx, { get(target, prop) {
12
+ if (prop === "meta") return target.meta;
13
+ return target.stream[prop];
14
+ } });
15
+ }
16
+ var ComponentStore = class {
17
+ cache = {};
18
+ boundCache = {};
19
+ callbacks = {};
20
+ respond(shadowRootId, comp, targetElement) {
21
+ this.cache[shadowRootId] = {
22
+ comp,
23
+ target: targetElement
24
+ };
25
+ this.callbacks[shadowRootId]?.forEach((c) => c(comp, targetElement));
26
+ }
27
+ getBoundStore(shadowRootId) {
28
+ this.boundCache[shadowRootId] ??= {
29
+ subscribe: (onStoreChange) => {
30
+ this.callbacks[shadowRootId] ??= [];
31
+ this.callbacks[shadowRootId].push(onStoreChange);
32
+ return () => {
33
+ this.callbacks[shadowRootId] = this.callbacks[shadowRootId].filter((c) => c !== onStoreChange);
34
+ };
35
+ },
36
+ getSnapshot: () => this.cache[shadowRootId]
37
+ };
38
+ return this.boundCache[shadowRootId];
39
+ }
40
+ };
41
+ const COMPONENT_STORE = new ComponentStore();
42
+ const EXT_STORE_SYMBOL = /* @__PURE__ */ Symbol.for("LGUI_EXT_STORE");
43
+ const REQUIRE_SYMBOL = /* @__PURE__ */ Symbol.for("LGUI_REQUIRE");
44
+ const REQUIRE_EXTRA_SYMBOL = /* @__PURE__ */ Symbol.for("LGUI_REQUIRE_EXTRA");
45
+ const isIterable = (value) => value != null && typeof value === "object" && Symbol.iterator in value;
46
+ const isPromise = (value) => value != null && typeof value === "object" && "then" in value && typeof value.then === "function";
47
+ const isReactNode = (value) => {
48
+ if (React.isValidElement(value)) return true;
49
+ if (value == null) return true;
50
+ if (typeof value === "string" || typeof value === "number" || typeof value === "bigint" || typeof value === "boolean") return true;
51
+ if (isIterable(value)) return true;
52
+ if (isPromise(value)) return true;
53
+ return false;
54
+ };
55
+ function LoadExternalComponent({ stream, namespace, message, meta, fallback, components, ...props }) {
56
+ const ref = React.useRef(null);
57
+ const shadowRootId = `child-shadow-${React.useId()}`;
58
+ const store = React.useMemo(() => COMPONENT_STORE.getBoundStore(shadowRootId), [shadowRootId]);
59
+ const state = React.useSyncExternalStore(store.subscribe, store.getSnapshot);
60
+ const clientComponent = components?.[message.name];
61
+ const hasClientComponent = clientComponent != null;
62
+ let fallbackComponent = null;
63
+ if (isReactNode(fallback)) fallbackComponent = fallback;
64
+ else if (typeof fallback === "object" && fallback != null) fallbackComponent = fallback?.[message.name];
65
+ const uiNamespace = namespace ?? stream.assistantId;
66
+ const uiClient = stream.client["~ui"];
67
+ React.useEffect(() => {
68
+ if (hasClientComponent) return;
69
+ uiClient.getComponent(uiNamespace, message.name).then((html) => {
70
+ const dom = ref.current;
71
+ if (!dom) return;
72
+ const root = dom.shadowRoot ?? dom.attachShadow({ mode: "open" });
73
+ const fragment = document.createRange().createContextualFragment(html.replace("{{shadowRootId}}", shadowRootId));
74
+ root.appendChild(fragment);
75
+ });
76
+ }, [
77
+ uiClient,
78
+ uiNamespace,
79
+ message.name,
80
+ shadowRootId,
81
+ hasClientComponent
82
+ ]);
83
+ if (hasClientComponent) return /* @__PURE__ */ jsx(UseStreamContext.Provider, {
84
+ value: {
85
+ stream,
86
+ meta
87
+ },
88
+ children: React.createElement(clientComponent, message.props)
89
+ });
90
+ return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("div", {
91
+ id: shadowRootId,
92
+ ref,
93
+ ...props
94
+ }), /* @__PURE__ */ jsx(UseStreamContext.Provider, {
95
+ value: {
96
+ stream,
97
+ meta
98
+ },
99
+ children: state?.target != null ? ReactDOM.createPortal(React.createElement(state.comp, message.props), state.target) : fallbackComponent
100
+ })] });
101
+ }
102
+ function bootstrapUiContext() {
103
+ if (typeof window === "undefined") return;
104
+ window[EXT_STORE_SYMBOL] = COMPONENT_STORE;
105
+ window[REQUIRE_SYMBOL] = (name) => {
106
+ if (name === "react") return React;
107
+ if (name === "react-dom") return ReactDOM;
108
+ if (name === "react/jsx-runtime") return JsxRuntime;
109
+ if (name === "@langchain/langgraph-sdk/react") return { useStream };
110
+ if (name === "@langchain/langgraph-sdk/react-ui") return {
111
+ useStreamContext,
112
+ LoadExternalComponent: () => {
113
+ throw new Error("Nesting LoadExternalComponent is not supported");
114
+ }
115
+ };
116
+ if (window[REQUIRE_EXTRA_SYMBOL] != null && typeof window[REQUIRE_EXTRA_SYMBOL] === "object" && name in window[REQUIRE_EXTRA_SYMBOL]) return window[REQUIRE_EXTRA_SYMBOL][name];
117
+ throw new Error(`Unknown module...: ${name}`);
118
+ };
65
119
  }
66
- const ToolCallFunctions$1 = React__default.memo(ToolCallFunctions, (prevProps, nextProps) => {
67
- return prevProps.toolMessages?.length === nextProps.toolMessages?.length;
68
- });
69
120
  export {
70
- ToolCallFunctions$1 as default
121
+ LoadExternalComponent,
122
+ bootstrapUiContext,
123
+ useStreamContext
71
124
  };
72
125
  //# sourceMappingURL=index.es28.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.es28.js","sources":["../src/components/ToolCallFunctions.tsx"],"sourcesContent":["import { getContentString } from \"@/utils/utils\";\nimport type { Message } from \"@langchain/langgraph-sdk\";\nimport React, { useState } from \"react\";\n\nfunction ToolCallFunctions({ title, toolMessages }: {\n title?: string;\n toolMessages: Message[];\n}) {\n const [open, setOpen] = useState(false);\n\n // Only render if there are tool messages\n if (!toolMessages || toolMessages.length === 0) return null;\n\n return (\n <div\n id=\"accordion-collapse\"\n data-accordion=\"collapse\"\n className=\"w-full rounded-base overflow-hidden shadow-xs border rounded-xl border-zinc-800 max-w-[90%] min-w-25\"\n >\n <h2 id=\"accordion-collapse-heading-1\">\n <button\n type=\"button\"\n className=\"flex items-center justify-between w-full p-2 font-medium gap-3 text-body border-0 outline-none ring-0 appearance-none bg-transparent\"\n onClick={() => setOpen((v) => !v)}\n aria-expanded={open}\n aria-controls=\"accordion-collapse-body-1\"\n >\n <span>🔷 {title}</span>\n <svg\n data-accordion-icon\n className={`w-5 h-5 shrink-0 transition-transform ${open ? \"rotate-0\" : \"rotate-180\"\n }`}\n aria-hidden=\"true\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <path\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n d=\"m5 15 7-7 7 7\"\n />\n </svg>\n </button>\n </h2>\n <div\n id=\"accordion-collapse-body-1\"\n className={`${open ? \"\" : \"hidden\"}`}\n aria-labelledby=\"accordion-collapse-heading-1\"\n >\n <div className=\"md:p-5 text-left space-y-3\">\n {toolMessages.map((toolMsg) => (\n <div key={toolMsg.id} className=\"border-zinc-700\">\n <p className=\"text-body text-sm\">{toolMsg.content ? getContentString(toolMsg.content) : \"\"}</p>\n </div>\n ))}\n </div>\n </div>\n </div>\n );\n}\n\nexport default React.memo(ToolCallFunctions, (prevProps, nextProps) => {\n return prevProps.toolMessages?.length === nextProps.toolMessages?.length;\n});"],"names":["React"],"mappings":";;;AAIA,SAAS,kBAAkB,EAAE,OAAO,gBAGjC;AACD,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,KAAK;AAGtC,MAAI,CAAC,gBAAgB,aAAa,WAAW,EAAG,QAAO;AAEvD,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,IAAG;AAAA,MACH,kBAAe;AAAA,MACf,WAAU;AAAA,MAEV,UAAA;AAAA,QAAA,oBAAC,MAAA,EAAG,IAAG,gCACL,UAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,WAAU;AAAA,YACV,SAAS,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;AAAA,YAChC,iBAAe;AAAA,YACf,iBAAc;AAAA,YAEd,UAAA;AAAA,cAAA,qBAAC,QAAA,EAAK,UAAA;AAAA,gBAAA;AAAA,gBAAI;AAAA,cAAA,GAAM;AAAA,cAChB;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,uBAAmB;AAAA,kBACnB,WAAW,yCAAyC,OAAO,aAAa,YACtE;AAAA,kBACF,eAAY;AAAA,kBACZ,OAAM;AAAA,kBACN,OAAM;AAAA,kBACN,QAAO;AAAA,kBACP,MAAK;AAAA,kBACL,SAAQ;AAAA,kBAER,UAAA;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,QAAO;AAAA,sBACP,eAAc;AAAA,sBACd,gBAAe;AAAA,sBACf,aAAY;AAAA,sBACZ,GAAE;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBACJ;AAAA,cAAA;AAAA,YACF;AAAA,UAAA;AAAA,QAAA,GAEJ;AAAA,QACA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,IAAG;AAAA,YACH,WAAW,GAAG,OAAO,KAAK,QAAQ;AAAA,YAClC,mBAAgB;AAAA,YAEhB,UAAA,oBAAC,OAAA,EAAI,WAAU,8BACZ,UAAA,aAAa,IAAI,CAAC,YACjB,oBAAC,OAAA,EAAqB,WAAU,mBAC9B,UAAA,oBAAC,KAAA,EAAE,WAAU,qBAAqB,UAAA,QAAQ,UAAU,iBAAiB,QAAQ,OAAO,IAAI,GAAA,CAAG,EAAA,GADnF,QAAQ,EAElB,CACD,EAAA,CACH;AAAA,UAAA;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EAAA;AAGN;AAEA,MAAA,sBAAeA,eAAM,KAAK,mBAAmB,CAAC,WAAW,cAAc;AACrE,SAAO,UAAU,cAAc,WAAW,UAAU,cAAc;AACpE,CAAC;"}
1
+ {"version":3,"file":"index.es28.js","sources":["../node_modules/.pnpm/@langchain+langgraph-sdk@1.5.3_@langchain+core@1.1.13_openai@6.16.0_zod@4.3.5___react-d_6e8116ad15c37793c6138fe0d58aa04e/node_modules/@langchain/langgraph-sdk/dist/react-ui/client.js"],"sourcesContent":["\"use client\";\n\nimport { useStream } from \"../react/stream.js\";\nimport \"../react/index.js\";\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport * as JsxRuntime from \"react/jsx-runtime\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\n\n//#region src/react-ui/client.tsx\nconst UseStreamContext = React.createContext(null);\nfunction useStreamContext() {\n\tconst ctx = React.useContext(UseStreamContext);\n\tif (!ctx) throw new Error(\"useStreamContext must be used within a LoadExternalComponent\");\n\treturn new Proxy(ctx, { get(target, prop) {\n\t\tif (prop === \"meta\") return target.meta;\n\t\treturn target.stream[prop];\n\t} });\n}\nvar ComponentStore = class {\n\tcache = {};\n\tboundCache = {};\n\tcallbacks = {};\n\trespond(shadowRootId, comp, targetElement) {\n\t\tthis.cache[shadowRootId] = {\n\t\t\tcomp,\n\t\t\ttarget: targetElement\n\t\t};\n\t\tthis.callbacks[shadowRootId]?.forEach((c) => c(comp, targetElement));\n\t}\n\tgetBoundStore(shadowRootId) {\n\t\tthis.boundCache[shadowRootId] ??= {\n\t\t\tsubscribe: (onStoreChange) => {\n\t\t\t\tthis.callbacks[shadowRootId] ??= [];\n\t\t\t\tthis.callbacks[shadowRootId].push(onStoreChange);\n\t\t\t\treturn () => {\n\t\t\t\t\tthis.callbacks[shadowRootId] = this.callbacks[shadowRootId].filter((c) => c !== onStoreChange);\n\t\t\t\t};\n\t\t\t},\n\t\t\tgetSnapshot: () => this.cache[shadowRootId]\n\t\t};\n\t\treturn this.boundCache[shadowRootId];\n\t}\n};\nconst COMPONENT_STORE = new ComponentStore();\nconst EXT_STORE_SYMBOL = Symbol.for(\"LGUI_EXT_STORE\");\nconst REQUIRE_SYMBOL = Symbol.for(\"LGUI_REQUIRE\");\nconst REQUIRE_EXTRA_SYMBOL = Symbol.for(\"LGUI_REQUIRE_EXTRA\");\nconst isIterable = (value) => value != null && typeof value === \"object\" && Symbol.iterator in value;\nconst isPromise = (value) => value != null && typeof value === \"object\" && \"then\" in value && typeof value.then === \"function\";\nconst isReactNode = (value) => {\n\tif (React.isValidElement(value)) return true;\n\tif (value == null) return true;\n\tif (typeof value === \"string\" || typeof value === \"number\" || typeof value === \"bigint\" || typeof value === \"boolean\") return true;\n\tif (isIterable(value)) return true;\n\tif (isPromise(value)) return true;\n\treturn false;\n};\nfunction LoadExternalComponent({ stream, namespace, message, meta, fallback, components, ...props }) {\n\tconst ref = React.useRef(null);\n\tconst shadowRootId = `child-shadow-${React.useId()}`;\n\tconst store = React.useMemo(() => COMPONENT_STORE.getBoundStore(shadowRootId), [shadowRootId]);\n\tconst state = React.useSyncExternalStore(store.subscribe, store.getSnapshot);\n\tconst clientComponent = components?.[message.name];\n\tconst hasClientComponent = clientComponent != null;\n\tlet fallbackComponent = null;\n\tif (isReactNode(fallback)) fallbackComponent = fallback;\n\telse if (typeof fallback === \"object\" && fallback != null) fallbackComponent = fallback?.[message.name];\n\tconst uiNamespace = namespace ?? stream.assistantId;\n\tconst uiClient = stream.client[\"~ui\"];\n\tReact.useEffect(() => {\n\t\tif (hasClientComponent) return;\n\t\tuiClient.getComponent(uiNamespace, message.name).then((html) => {\n\t\t\tconst dom = ref.current;\n\t\t\tif (!dom) return;\n\t\t\tconst root = dom.shadowRoot ?? dom.attachShadow({ mode: \"open\" });\n\t\t\tconst fragment = document.createRange().createContextualFragment(html.replace(\"{{shadowRootId}}\", shadowRootId));\n\t\t\troot.appendChild(fragment);\n\t\t});\n\t}, [\n\t\tuiClient,\n\t\tuiNamespace,\n\t\tmessage.name,\n\t\tshadowRootId,\n\t\thasClientComponent\n\t]);\n\tif (hasClientComponent) return /* @__PURE__ */ jsx(UseStreamContext.Provider, {\n\t\tvalue: {\n\t\t\tstream,\n\t\t\tmeta\n\t\t},\n\t\tchildren: React.createElement(clientComponent, message.props)\n\t});\n\treturn /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(\"div\", {\n\t\tid: shadowRootId,\n\t\tref,\n\t\t...props\n\t}), /* @__PURE__ */ jsx(UseStreamContext.Provider, {\n\t\tvalue: {\n\t\t\tstream,\n\t\t\tmeta\n\t\t},\n\t\tchildren: state?.target != null ? ReactDOM.createPortal(React.createElement(state.comp, message.props), state.target) : fallbackComponent\n\t})] });\n}\nfunction experimental_loadShare(name, module) {\n\tif (typeof window === \"undefined\") return;\n\twindow[REQUIRE_EXTRA_SYMBOL] ??= {};\n\twindow[REQUIRE_EXTRA_SYMBOL][name] = module;\n}\nfunction bootstrapUiContext() {\n\tif (typeof window === \"undefined\") return;\n\twindow[EXT_STORE_SYMBOL] = COMPONENT_STORE;\n\twindow[REQUIRE_SYMBOL] = (name) => {\n\t\tif (name === \"react\") return React;\n\t\tif (name === \"react-dom\") return ReactDOM;\n\t\tif (name === \"react/jsx-runtime\") return JsxRuntime;\n\t\tif (name === \"@langchain/langgraph-sdk/react\") return { useStream };\n\t\tif (name === \"@langchain/langgraph-sdk/react-ui\") return {\n\t\t\tuseStreamContext,\n\t\t\tLoadExternalComponent: () => {\n\t\t\t\tthrow new Error(\"Nesting LoadExternalComponent is not supported\");\n\t\t\t}\n\t\t};\n\t\tif (window[REQUIRE_EXTRA_SYMBOL] != null && typeof window[REQUIRE_EXTRA_SYMBOL] === \"object\" && name in window[REQUIRE_EXTRA_SYMBOL]) return window[REQUIRE_EXTRA_SYMBOL][name];\n\t\tthrow new Error(`Unknown module...: ${name}`);\n\t};\n}\n\n//#endregion\nexport { LoadExternalComponent, bootstrapUiContext, experimental_loadShare, useStreamContext };\n//# sourceMappingURL=client.js.map"],"names":[],"mappings":"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","x_google_ignoreList":[0]}