@dxos/plugin-script 0.6.11 → 0.6.12-main.5a87ad5

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 (179) hide show
  1. package/dist/lib/browser/{ScriptEditor-5Y3EROG3.mjs → ScriptContainer-7DE7USCY.mjs} +257 -106
  2. package/dist/lib/browser/ScriptContainer-7DE7USCY.mjs.map +7 -0
  3. package/dist/lib/browser/{chunk-O4LWBX6A.mjs → chunk-CAEANETO.mjs} +2 -2
  4. package/dist/lib/browser/{chunk-O4LWBX6A.mjs.map → chunk-CAEANETO.mjs.map} +2 -2
  5. package/dist/lib/browser/{chunk-DL5XQRQM.mjs → chunk-G6FWCTGT.mjs} +7 -5
  6. package/dist/lib/browser/chunk-G6FWCTGT.mjs.map +7 -0
  7. package/dist/lib/browser/{chunk-RHEZ5LUU.mjs → chunk-G6H56WFS.mjs} +51 -2
  8. package/dist/lib/browser/{chunk-RHEZ5LUU.mjs.map → chunk-G6H56WFS.mjs.map} +4 -4
  9. package/dist/lib/browser/{chunk-JBACGDOJ.mjs → chunk-MDX7ACIK.mjs} +3 -6
  10. package/dist/lib/browser/chunk-MDX7ACIK.mjs.map +7 -0
  11. package/dist/lib/browser/edge/index.mjs +3 -1
  12. package/dist/lib/browser/index.mjs +80 -62
  13. package/dist/lib/browser/index.mjs.map +4 -4
  14. package/dist/lib/browser/meta.json +1 -1
  15. package/dist/lib/browser/meta.mjs +1 -1
  16. package/dist/lib/browser/types/index.mjs +2 -2
  17. package/dist/lib/node/ScriptContainer-J76LKPAM.cjs +667 -0
  18. package/dist/lib/node/ScriptContainer-J76LKPAM.cjs.map +7 -0
  19. package/dist/lib/node/{chunk-5RBVXKXT.cjs → chunk-2PZKJXNP.cjs} +6 -6
  20. package/dist/lib/node/{chunk-5RBVXKXT.cjs.map → chunk-2PZKJXNP.cjs.map} +2 -2
  21. package/dist/lib/node/{chunk-4GTXIELQ.cjs → chunk-ACLCRWDB.cjs} +44 -6
  22. package/dist/lib/node/chunk-ACLCRWDB.cjs.map +7 -0
  23. package/dist/lib/node/{TypescriptEditor-M3WWFIP2.cjs → chunk-OJ77BZRH.cjs} +19 -8
  24. package/dist/lib/node/chunk-OJ77BZRH.cjs.map +7 -0
  25. package/dist/lib/node/{chunk-PFH3ROEH.cjs → chunk-UZ3ZXEBF.cjs} +11 -8
  26. package/dist/lib/node/chunk-UZ3ZXEBF.cjs.map +7 -0
  27. package/dist/lib/node/edge/index.cjs +10 -8
  28. package/dist/lib/node/edge/index.cjs.map +2 -2
  29. package/dist/lib/node/index.cjs +95 -82
  30. package/dist/lib/node/index.cjs.map +4 -4
  31. package/dist/lib/node/meta.cjs +3 -3
  32. package/dist/lib/node/meta.cjs.map +1 -1
  33. package/dist/lib/node/meta.json +1 -1
  34. package/dist/lib/node/types/index.cjs +5 -5
  35. package/dist/lib/node/types/index.cjs.map +1 -1
  36. package/dist/lib/node-esm/ScriptContainer-F6ACEA63.mjs +665 -0
  37. package/dist/lib/node-esm/ScriptContainer-F6ACEA63.mjs.map +7 -0
  38. package/dist/lib/node-esm/chunk-2NX3HWPM.mjs +245 -0
  39. package/dist/lib/node-esm/chunk-2NX3HWPM.mjs.map +7 -0
  40. package/dist/lib/node-esm/chunk-7BZDZF7Z.mjs +47 -0
  41. package/dist/lib/node-esm/chunk-7BZDZF7Z.mjs.map +7 -0
  42. package/dist/lib/node-esm/chunk-LDLNTVAK.mjs +280 -0
  43. package/dist/lib/node-esm/chunk-LDLNTVAK.mjs.map +7 -0
  44. package/dist/lib/node-esm/chunk-TZ3Z4SII.mjs +20 -0
  45. package/dist/lib/node-esm/chunk-TZ3Z4SII.mjs.map +7 -0
  46. package/dist/lib/node-esm/edge/index.mjs +22 -0
  47. package/dist/lib/node-esm/index.mjs +310 -0
  48. package/dist/lib/node-esm/index.mjs.map +7 -0
  49. package/dist/lib/node-esm/meta.json +1 -0
  50. package/dist/lib/node-esm/meta.mjs +10 -0
  51. package/dist/lib/node-esm/meta.mjs.map +7 -0
  52. package/dist/lib/node-esm/types/index.mjs +13 -0
  53. package/dist/lib/node-esm/types/index.mjs.map +7 -0
  54. package/dist/types/src/ScriptPlugin.d.ts.map +1 -1
  55. package/dist/types/src/components/DebugPanel/DebugPanel.d.ts.map +1 -0
  56. package/dist/types/src/components/DebugPanel/index.d.ts +2 -0
  57. package/dist/types/src/components/DebugPanel/index.d.ts.map +1 -0
  58. package/dist/types/src/components/{ScriptBlock/FrameContainer → FrameContainer}/FrameContainer.d.ts +1 -1
  59. package/dist/types/src/components/FrameContainer/FrameContainer.d.ts.map +1 -0
  60. package/dist/types/src/components/FrameContainer/frame.d.ts.map +1 -0
  61. package/dist/types/src/components/FrameContainer/index.d.ts.map +1 -0
  62. package/dist/types/src/components/ScriptBlock/ScriptBlock.d.ts +1 -3
  63. package/dist/types/src/components/ScriptBlock/ScriptBlock.d.ts.map +1 -1
  64. package/dist/types/src/components/ScriptBlock/ScriptBlock.stories.d.ts +1 -1
  65. package/dist/types/src/components/ScriptBlock/ScriptBlock.stories.d.ts.map +1 -1
  66. package/dist/types/src/components/ScriptContainer.d.ts +5 -0
  67. package/dist/types/src/components/ScriptContainer.d.ts.map +1 -0
  68. package/dist/types/src/components/ScriptEditor.d.ts +4 -5
  69. package/dist/types/src/components/ScriptEditor.d.ts.map +1 -1
  70. package/dist/types/src/components/ScriptSettings/ScriptSettings.d.ts +6 -0
  71. package/dist/types/src/components/ScriptSettings/ScriptSettings.d.ts.map +1 -0
  72. package/dist/types/src/components/ScriptSettings/index.d.ts +2 -0
  73. package/dist/types/src/components/ScriptSettings/index.d.ts.map +1 -0
  74. package/dist/types/src/components/Toolbar/Toolbar.d.ts +23 -0
  75. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -0
  76. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts +17 -0
  77. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts.map +1 -0
  78. package/dist/types/src/components/Toolbar/index.d.ts +2 -0
  79. package/dist/types/src/components/Toolbar/index.d.ts.map +1 -0
  80. package/dist/types/src/components/{TypescriptEditor.d.ts → TypescriptEditor/TypescriptEditor.d.ts} +1 -2
  81. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.d.ts.map +1 -0
  82. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.stories.d.ts +10 -0
  83. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.stories.d.ts.map +1 -0
  84. package/dist/types/src/components/TypescriptEditor/index.d.ts +2 -0
  85. package/dist/types/src/components/TypescriptEditor/index.d.ts.map +1 -0
  86. package/dist/types/src/components/index.d.ts +2 -2
  87. package/dist/types/src/components/index.d.ts.map +1 -1
  88. package/dist/types/src/edge/functions.d.ts +1 -0
  89. package/dist/types/src/edge/functions.d.ts.map +1 -1
  90. package/dist/types/src/meta.d.ts +1 -4
  91. package/dist/types/src/meta.d.ts.map +1 -1
  92. package/dist/types/src/templates/chat.d.ts +6 -0
  93. package/dist/types/src/templates/chat.d.ts.map +1 -0
  94. package/dist/types/src/templates/chess.d.ts +6 -0
  95. package/dist/types/src/templates/chess.d.ts.map +1 -0
  96. package/dist/types/src/templates/echo.d.ts +6 -0
  97. package/dist/types/src/templates/echo.d.ts.map +1 -0
  98. package/dist/types/src/templates/email.d.ts +6 -0
  99. package/dist/types/src/templates/email.d.ts.map +1 -0
  100. package/dist/types/src/templates/forex.d.ts +6 -0
  101. package/dist/types/src/templates/forex.d.ts.map +1 -0
  102. package/dist/types/src/templates.d.ts +8 -0
  103. package/dist/types/src/templates.d.ts.map +1 -0
  104. package/dist/types/src/translations.d.ts +2 -0
  105. package/dist/types/src/translations.d.ts.map +1 -1
  106. package/dist/types/src/types/script.d.ts +4 -4
  107. package/dist/types/src/types/types.d.ts +4 -3
  108. package/dist/types/src/types/types.d.ts.map +1 -1
  109. package/package.json +54 -49
  110. package/src/ScriptPlugin.tsx +22 -38
  111. package/src/bundler/bundler.test.ts +12 -2
  112. package/src/components/{DebugPanel.tsx → DebugPanel/DebugPanel.tsx} +48 -41
  113. package/src/components/DebugPanel/index.ts +5 -0
  114. package/src/components/{ScriptBlock/FrameContainer → FrameContainer}/FrameContainer.tsx +1 -1
  115. package/src/components/ScriptBlock/ScriptBlock.stories.tsx +4 -3
  116. package/src/components/ScriptBlock/ScriptBlock.tsx +10 -36
  117. package/src/components/ScriptContainer.tsx +22 -0
  118. package/src/components/ScriptEditor.tsx +47 -46
  119. package/src/components/ScriptSettings/ScriptSettings.tsx +47 -0
  120. package/src/components/ScriptSettings/index.ts +5 -0
  121. package/src/components/{Toolbar.stories.tsx → Toolbar/Toolbar.stories.tsx} +10 -1
  122. package/src/components/Toolbar/Toolbar.tsx +180 -0
  123. package/src/components/{ScriptBlock/Splitter → Toolbar}/index.ts +1 -1
  124. package/src/components/{TypescriptEditor.stories.tsx → TypescriptEditor/TypescriptEditor.stories.tsx} +7 -28
  125. package/src/components/{TypescriptEditor.tsx → TypescriptEditor/TypescriptEditor.tsx} +1 -3
  126. package/src/components/TypescriptEditor/index.ts +5 -0
  127. package/src/components/index.ts +3 -2
  128. package/src/edge/functions.ts +1 -0
  129. package/src/meta.tsx +2 -6
  130. package/src/templates/chat.ts +102 -0
  131. package/src/templates/chess.ts +41 -0
  132. package/src/templates/echo.ts +15 -0
  133. package/src/templates/email.ts +38 -0
  134. package/src/templates/forex.ts +21 -0
  135. package/src/templates.ts +54 -0
  136. package/src/translations.ts +2 -0
  137. package/src/types/types.ts +9 -5
  138. package/dist/lib/browser/ScriptEditor-5Y3EROG3.mjs.map +0 -7
  139. package/dist/lib/browser/TypescriptEditor-GPE72Y6I.mjs +0 -9
  140. package/dist/lib/browser/chunk-DL5XQRQM.mjs.map +0 -7
  141. package/dist/lib/browser/chunk-JBACGDOJ.mjs.map +0 -7
  142. package/dist/lib/browser/chunk-MRGOT5RF.mjs +0 -78
  143. package/dist/lib/browser/chunk-MRGOT5RF.mjs.map +0 -7
  144. package/dist/lib/node/ScriptEditor-YCUQFWQM.cjs +0 -526
  145. package/dist/lib/node/ScriptEditor-YCUQFWQM.cjs.map +0 -7
  146. package/dist/lib/node/TypescriptEditor-M3WWFIP2.cjs.map +0 -7
  147. package/dist/lib/node/chunk-4GTXIELQ.cjs.map +0 -7
  148. package/dist/lib/node/chunk-4VMNBXWU.cjs +0 -54
  149. package/dist/lib/node/chunk-4VMNBXWU.cjs.map +0 -7
  150. package/dist/lib/node/chunk-IMLDKD5Y.cjs +0 -111
  151. package/dist/lib/node/chunk-IMLDKD5Y.cjs.map +0 -7
  152. package/dist/lib/node/chunk-PFH3ROEH.cjs.map +0 -7
  153. package/dist/types/src/components/DebugPanel.d.ts.map +0 -1
  154. package/dist/types/src/components/ScriptBlock/FrameContainer/FrameContainer.d.ts.map +0 -1
  155. package/dist/types/src/components/ScriptBlock/FrameContainer/frame.d.ts.map +0 -1
  156. package/dist/types/src/components/ScriptBlock/FrameContainer/index.d.ts.map +0 -1
  157. package/dist/types/src/components/ScriptBlock/Splitter/Splitter.d.ts +0 -15
  158. package/dist/types/src/components/ScriptBlock/Splitter/Splitter.d.ts.map +0 -1
  159. package/dist/types/src/components/ScriptBlock/Splitter/Splitter.stories.d.ts +0 -13
  160. package/dist/types/src/components/ScriptBlock/Splitter/Splitter.stories.d.ts.map +0 -1
  161. package/dist/types/src/components/ScriptBlock/Splitter/index.d.ts +0 -2
  162. package/dist/types/src/components/ScriptBlock/Splitter/index.d.ts.map +0 -1
  163. package/dist/types/src/components/Toolbar.d.ts +0 -13
  164. package/dist/types/src/components/Toolbar.d.ts.map +0 -1
  165. package/dist/types/src/components/Toolbar.stories.d.ts +0 -14
  166. package/dist/types/src/components/Toolbar.stories.d.ts.map +0 -1
  167. package/dist/types/src/components/TypescriptEditor.d.ts.map +0 -1
  168. package/dist/types/src/components/TypescriptEditor.stories.d.ts +0 -10
  169. package/dist/types/src/components/TypescriptEditor.stories.d.ts.map +0 -1
  170. package/src/components/ScriptBlock/Splitter/Splitter.stories.tsx +0 -37
  171. package/src/components/ScriptBlock/Splitter/Splitter.tsx +0 -52
  172. package/src/components/Toolbar.tsx +0 -147
  173. /package/dist/lib/{browser/TypescriptEditor-GPE72Y6I.mjs.map → node-esm/edge/index.mjs.map} +0 -0
  174. /package/dist/types/src/components/{DebugPanel.d.ts → DebugPanel/DebugPanel.d.ts} +0 -0
  175. /package/dist/types/src/components/{ScriptBlock/FrameContainer → FrameContainer}/frame.d.ts +0 -0
  176. /package/dist/types/src/components/{ScriptBlock/FrameContainer → FrameContainer}/index.d.ts +0 -0
  177. /package/src/components/{ScriptBlock/FrameContainer → FrameContainer}/frame.html +0 -0
  178. /package/src/components/{ScriptBlock/FrameContainer → FrameContainer}/frame.tsx +0 -0
  179. /package/src/components/{ScriptBlock/FrameContainer → FrameContainer}/index.ts +0 -0
@@ -1,43 +1,47 @@
1
1
  import {
2
+ USERFUNCTIONS_PRESET_META_KEY,
2
3
  getUserFunctionUrlInMetadata,
3
4
  publicKeyToDid,
4
5
  setUserFunctionUrlInMetadata,
5
6
  uploadWorkerFunction
6
- } from "./chunk-DL5XQRQM.mjs";
7
+ } from "./chunk-G6FWCTGT.mjs";
7
8
  import {
8
- Bundler
9
- } from "./chunk-RHEZ5LUU.mjs";
9
+ Bundler,
10
+ templates
11
+ } from "./chunk-G6H56WFS.mjs";
10
12
  import {
11
13
  FunctionType
12
- } from "./chunk-O4LWBX6A.mjs";
14
+ } from "./chunk-CAEANETO.mjs";
13
15
  import {
14
16
  SCRIPT_PLUGIN
15
- } from "./chunk-JBACGDOJ.mjs";
16
- import {
17
- TypescriptEditor
18
- } from "./chunk-MRGOT5RF.mjs";
17
+ } from "./chunk-MDX7ACIK.mjs";
18
+
19
+ // packages/plugins/experimental/plugin-script/src/components/ScriptContainer.tsx
20
+ import React5 from "react";
21
+ import { fullyQualifiedId } from "@dxos/react-client/echo";
22
+ import { useHasAttention } from "@dxos/react-ui-attention";
23
+ import { mx as mx3 } from "@dxos/react-ui-theme";
19
24
 
20
25
  // packages/plugins/experimental/plugin-script/src/components/ScriptEditor.tsx
21
26
  import { format } from "prettier";
22
27
  import prettierPluginEstree from "prettier/plugins/estree";
23
28
  import prettierPluginTypescript from "prettier/plugins/typescript";
24
- import React3, { useCallback, useMemo, useState as useState3 } from "react";
29
+ import React4, { useCallback, useMemo, useState as useState3 } from "react";
25
30
  import { log as log2 } from "@dxos/log";
26
31
  import { useClient } from "@dxos/react-client";
27
- import { create, createDocAccessor, Filter, fullyQualifiedId, getMeta, getSpace, useQuery } from "@dxos/react-client/echo";
32
+ import { create, createDocAccessor, Filter, getMeta, getSpace, useQuery } from "@dxos/react-client/echo";
28
33
  import { useIdentity } from "@dxos/react-client/halo";
29
34
  import { useTranslation as useTranslation3 } from "@dxos/react-ui";
30
- import { useHasAttention } from "@dxos/react-ui-attention";
31
35
  import { createDataExtensions, listener } from "@dxos/react-ui-editor";
32
36
  import { mx as mx2 } from "@dxos/react-ui-theme";
33
37
 
34
- // packages/plugins/experimental/plugin-script/src/components/DebugPanel.tsx
38
+ // packages/plugins/experimental/plugin-script/src/components/DebugPanel/DebugPanel.tsx
35
39
  import React, { useEffect, useRef, useState } from "react";
36
40
  import { log } from "@dxos/log";
37
41
  import { Avatar, DensityProvider, Icon, Input, Toolbar, useControlledValue, useTranslation } from "@dxos/react-ui";
38
42
  import { SyntaxHighlighter } from "@dxos/react-ui-syntax-highlighter";
39
43
  import { mx } from "@dxos/react-ui-theme";
40
- var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/experimental/plugin-script/src/components/DebugPanel.tsx";
44
+ var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/experimental/plugin-script/src/components/DebugPanel/DebugPanel.tsx";
41
45
  var DebugPanel = ({ classNames, functionUrl, binding: _binding, onBindingChange }) => {
42
46
  const { t } = useTranslation(SCRIPT_PLUGIN);
43
47
  const bindingInputRef = useRef(null);
@@ -221,52 +225,62 @@ var DebugPanel = ({ classNames, functionUrl, binding: _binding, onBindingChange
221
225
  size: 4
222
226
  })))));
223
227
  };
224
- var RobotAvatar = () => /* @__PURE__ */ React.createElement(Avatar.Root, {
225
- size: 6,
226
- variant: "circle"
227
- }, /* @__PURE__ */ React.createElement(Avatar.Frame, null, /* @__PURE__ */ React.createElement(Avatar.Icon, {
228
- icon: "ph--robot--regular"
229
- })));
230
- var MessageItem = ({ classNames, message }) => {
231
- const { text, data, error } = message;
232
- if (error) {
233
- return /* @__PURE__ */ React.createElement("span", {
234
- className: mx(classNames, "whitespace-pre text-error")
235
- }, String(error));
236
- } else if (data) {
237
- return /* @__PURE__ */ React.createElement(SyntaxHighlighter, {
238
- language: "json",
239
- className: mx("text-xs", classNames)
240
- }, JSON.stringify(data, null, 2));
241
- }
242
- return /* @__PURE__ */ React.createElement("span", {
243
- className: mx(classNames)
244
- }, text || "\xD8");
245
- };
246
228
  var MessageThread = ({ state, result, history }) => {
247
229
  return /* @__PURE__ */ React.createElement(React.Fragment, null, history.map((message, i) => /* @__PURE__ */ React.createElement("div", {
248
230
  key: i,
249
- className: "grid grid-cols-[3rem_1fr]"
250
- }, /* @__PURE__ */ React.createElement("div", null, message.type === "response" && /* @__PURE__ */ React.createElement(RobotAvatar, null)), /* @__PURE__ */ React.createElement("div", {
251
- className: mx("flex", message.type === "request" && "justify-end")
231
+ className: "grid grid-cols-[3rem_1fr_3rem]"
232
+ }, /* @__PURE__ */ React.createElement("div", {
233
+ className: "p-1"
234
+ }, message.type === "response" && /* @__PURE__ */ React.createElement(RobotAvatar, null)), /* @__PURE__ */ React.createElement("div", {
235
+ className: "overflow-auto"
252
236
  }, /* @__PURE__ */ React.createElement(MessageItem, {
253
- classNames: [
254
- message.type === "request" && "p-1 px-2 rounded-lg bg-hoverSurface"
255
- ],
256
237
  message
257
- })))), /* @__PURE__ */ React.createElement("div", {
258
- className: "grid grid-cols-[3rem_1fr]"
259
- }, /* @__PURE__ */ React.createElement("div", null, state === "pending" && /* @__PURE__ */ React.createElement(Icon, {
238
+ })))), result?.length > 0 && /* @__PURE__ */ React.createElement("div", {
239
+ className: "grid grid-cols-[3rem_1fr_3rem]"
240
+ }, /* @__PURE__ */ React.createElement("div", {
241
+ className: "p-1"
242
+ }, state === "pending" && /* @__PURE__ */ React.createElement(Icon, {
260
243
  icon: "ph--spinner--regular",
261
244
  size: 6,
262
- classNames: "animate-spin-slow"
263
- }) || result.length > 0 && /* @__PURE__ */ React.createElement(RobotAvatar, null)), /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("span", null, result))));
245
+ classNames: "animate-spin"
246
+ }) || /* @__PURE__ */ React.createElement(Icon, {
247
+ icon: "ph--robot--regular",
248
+ size: 6,
249
+ classNames: "animate-[pulse_1s_ease-in-out_infinite]"
250
+ })), /* @__PURE__ */ React.createElement("div", {
251
+ className: "overflow-auto"
252
+ }, /* @__PURE__ */ React.createElement(MessageItem, {
253
+ message: {
254
+ type: "response",
255
+ text: result
256
+ }
257
+ }))));
264
258
  };
259
+ var MessageItem = ({ classNames, message }) => {
260
+ const { type, text, data, error } = message;
261
+ const wrapper = "p-1 px-2 rounded-lg bg-hoverSurface overflow-auto";
262
+ return /* @__PURE__ */ React.createElement("div", {
263
+ className: mx("flex", type === "request" ? "ml-[8rem] justify-end" : "mr-[8rem]", classNames)
264
+ }, error && /* @__PURE__ */ React.createElement("div", {
265
+ className: mx(wrapper, "whitespace-pre text-error")
266
+ }, String(error)), text !== void 0 && /* @__PURE__ */ React.createElement("div", {
267
+ className: mx(wrapper, type === "request" && "bg-primary-400 dark:bg-primary-600")
268
+ }, text || "\xD8"), data && /* @__PURE__ */ React.createElement(SyntaxHighlighter, {
269
+ language: "json",
270
+ className: mx(wrapper, "px-8 py-2 text-xs")
271
+ }, JSON.stringify(data, null, 2)));
272
+ };
273
+ var RobotAvatar = () => /* @__PURE__ */ React.createElement(Avatar.Root, {
274
+ size: 6,
275
+ variant: "circle"
276
+ }, /* @__PURE__ */ React.createElement(Avatar.Frame, null, /* @__PURE__ */ React.createElement(Avatar.Icon, {
277
+ icon: "ph--robot--regular"
278
+ })));
265
279
 
266
- // packages/plugins/experimental/plugin-script/src/components/Toolbar.tsx
280
+ // packages/plugins/experimental/plugin-script/src/components/Toolbar/Toolbar.tsx
267
281
  import React2, { useState as useState2 } from "react";
268
- import { DensityProvider as DensityProvider2, ElevationProvider, Icon as Icon2, Toolbar as NaturalToolbar, Tooltip, useTranslation as useTranslation2 } from "@dxos/react-ui";
269
- var Toolbar2 = ({ classNames, deployed, error, functionUrl, showPanel, onDeploy, onFormat, onTogglePanel }) => {
282
+ import { DensityProvider as DensityProvider2, ElevationProvider, Icon as Icon2, Select, ToggleGroup, ToggleGroupItem, Toolbar as NaturalToolbar, Tooltip, useTranslation as useTranslation2 } from "@dxos/react-ui";
283
+ var Toolbar2 = ({ classNames, deployed, error, functionUrl, view, templates: templates2, onDeploy, onFormat, onViewChange, onTemplateSelect }) => {
270
284
  const { t } = useTranslation2(SCRIPT_PLUGIN);
271
285
  const [pending, setPending] = useState2(false);
272
286
  const handleCopyLink = async () => {
@@ -276,9 +290,11 @@ var Toolbar2 = ({ classNames, deployed, error, functionUrl, showPanel, onDeploy,
276
290
  await navigator.clipboard.writeText(functionUrl);
277
291
  };
278
292
  const handleDeploy = async () => {
279
- setPending(true);
280
- await onDeploy?.();
281
- setPending(false);
293
+ if (!pending) {
294
+ setPending(true);
295
+ await onDeploy?.();
296
+ setPending(false);
297
+ }
282
298
  };
283
299
  return /* @__PURE__ */ React2.createElement(DensityProvider2, {
284
300
  density: "fine"
@@ -292,57 +308,161 @@ var Toolbar2 = ({ classNames, deployed, error, functionUrl, showPanel, onDeploy,
292
308
  style: {
293
309
  contain: "layout"
294
310
  }
295
- }, onFormat && /* @__PURE__ */ React2.createElement(Tooltip.Root, null, /* @__PURE__ */ React2.createElement(Tooltip.Trigger, {
296
- asChild: true
297
- }, /* @__PURE__ */ React2.createElement(NaturalToolbar.Button, {
298
- variant: "ghost",
299
- onClick: onFormat
300
- }, /* @__PURE__ */ React2.createElement(Icon2, {
311
+ }, templates2 && /* @__PURE__ */ React2.createElement(TemplateSelect, {
312
+ templates: templates2,
313
+ onTemplateSelect
314
+ }), onFormat && /* @__PURE__ */ React2.createElement(ToolbarIconButton, {
301
315
  icon: "ph--magic-wand--regular",
302
- size: 4
303
- }))), /* @__PURE__ */ React2.createElement(Tooltip.Portal, null, /* @__PURE__ */ React2.createElement(Tooltip.Content, null, /* @__PURE__ */ React2.createElement(Tooltip.Arrow, null), t("format label")))), /* @__PURE__ */ React2.createElement("div", {
316
+ text: t("format label"),
317
+ onClick: onFormat
318
+ }), /* @__PURE__ */ React2.createElement("div", {
304
319
  role: "separator",
305
320
  className: "grow"
306
321
  }), error ? /* @__PURE__ */ React2.createElement(Tooltip.Root, null, /* @__PURE__ */ React2.createElement(Tooltip.Trigger, null, /* @__PURE__ */ React2.createElement(Icon2, {
307
322
  icon: "ph--warning-circle--regular",
308
323
  size: 4
309
- })), /* @__PURE__ */ React2.createElement(Tooltip.Portal, null, /* @__PURE__ */ React2.createElement(Tooltip.Content, null, /* @__PURE__ */ React2.createElement(Tooltip.Arrow, null), error))) : null, functionUrl && deployed && /* @__PURE__ */ React2.createElement(Tooltip.Root, null, /* @__PURE__ */ React2.createElement(Tooltip.Trigger, {
310
- asChild: true
311
- }, /* @__PURE__ */ React2.createElement(NaturalToolbar.Button, {
312
- variant: "ghost",
313
- onClick: handleCopyLink
314
- }, /* @__PURE__ */ React2.createElement(Icon2, {
324
+ })), /* @__PURE__ */ React2.createElement(Tooltip.Portal, null, /* @__PURE__ */ React2.createElement(Tooltip.Content, null, /* @__PURE__ */ React2.createElement(Tooltip.Arrow, null), error))) : null, functionUrl && deployed && /* @__PURE__ */ React2.createElement(ToolbarIconButton, {
315
325
  icon: "ph--link--regular",
316
- size: 4
317
- }))), /* @__PURE__ */ React2.createElement(Tooltip.Portal, null, /* @__PURE__ */ React2.createElement(Tooltip.Content, null, /* @__PURE__ */ React2.createElement(Tooltip.Arrow, null), t("copy link label")))), /* @__PURE__ */ React2.createElement(Tooltip.Root, null, /* @__PURE__ */ React2.createElement(Tooltip.Trigger, {
326
+ text: t("copy link label"),
327
+ onClick: handleCopyLink
328
+ }), onDeploy && /* @__PURE__ */ React2.createElement(ToolbarIconButton, {
329
+ icon: pending ? "ph--spinner-gap--regular" : "ph--cloud-arrow-up--regular",
330
+ classNames: [
331
+ pending && "animate-spin"
332
+ ],
333
+ text: pending ? t("pending label") : t("deploy label"),
334
+ onClick: handleDeploy
335
+ }), /* @__PURE__ */ React2.createElement(ViewSelector, {
336
+ view,
337
+ onViewChange
338
+ }))));
339
+ };
340
+ var ToolbarIconButton = ({ icon, text, classNames, disabled, onClick }) => {
341
+ return /* @__PURE__ */ React2.createElement(Tooltip.Root, null, /* @__PURE__ */ React2.createElement(Tooltip.Trigger, {
318
342
  asChild: true
319
343
  }, /* @__PURE__ */ React2.createElement(NaturalToolbar.Button, {
320
344
  variant: "ghost",
321
- onClick: handleDeploy,
322
- disabled: pending
323
- }, pending ? /* @__PURE__ */ React2.createElement(Icon2, {
324
- icon: "ph--spinner--regular",
345
+ disabled,
346
+ onClick
347
+ }, /* @__PURE__ */ React2.createElement(Icon2, {
348
+ icon,
325
349
  size: 4,
326
- classNames: "animate-spin-slow"
327
- }) : /* @__PURE__ */ React2.createElement(Icon2, {
328
- icon: "ph--cloud-arrow-up--regular",
350
+ classNames
351
+ }))), /* @__PURE__ */ React2.createElement(Tooltip.Portal, null, /* @__PURE__ */ React2.createElement(Tooltip.Content, null, /* @__PURE__ */ React2.createElement(Tooltip.Arrow, null), text)));
352
+ };
353
+ var TemplateSelect = ({ templates: templates2 = [], onTemplateSelect }) => {
354
+ return /* @__PURE__ */ React2.createElement(Select.Root, {
355
+ value: "",
356
+ onValueChange: onTemplateSelect
357
+ }, /* @__PURE__ */ React2.createElement(Select.TriggerButton, null), /* @__PURE__ */ React2.createElement(Select.Portal, null, /* @__PURE__ */ React2.createElement(Select.Content, null, /* @__PURE__ */ React2.createElement(Select.Viewport, null, /* @__PURE__ */ React2.createElement(Select.Option, {
358
+ value: ""
359
+ }, "Template"), templates2.map(({ id, name }) => /* @__PURE__ */ React2.createElement(Select.Option, {
360
+ key: id,
361
+ value: id
362
+ }, name))))));
363
+ };
364
+ var ViewSelector = ({ view, onViewChange }) => {
365
+ return /* @__PURE__ */ React2.createElement(ToggleGroup, {
366
+ type: "single",
367
+ value: view,
368
+ onValueChange: (value) => onViewChange?.(value)
369
+ }, /* @__PURE__ */ React2.createElement(ToggleGroupItem, {
370
+ value: "editor",
371
+ classNames: "bg-transparent text-subdued"
372
+ }, /* @__PURE__ */ React2.createElement(Icon2, {
373
+ icon: "ph--code--regular",
329
374
  size: 4
330
- }))), /* @__PURE__ */ React2.createElement(Tooltip.Portal, null, /* @__PURE__ */ React2.createElement(Tooltip.Content, null, /* @__PURE__ */ React2.createElement(Tooltip.Arrow, null), pending ? t("pending label") : t("deploy label")))), onTogglePanel && /* @__PURE__ */ React2.createElement(Tooltip.Root, null, /* @__PURE__ */ React2.createElement(Tooltip.Trigger, {
331
- asChild: true
332
- }, /* @__PURE__ */ React2.createElement(NaturalToolbar.Button, {
333
- variant: "ghost",
334
- onClick: onTogglePanel
375
+ })), /* @__PURE__ */ React2.createElement(ToggleGroupItem, {
376
+ value: "split",
377
+ classNames: "bg-transparent text-subdued"
378
+ }, /* @__PURE__ */ React2.createElement(Icon2, {
379
+ icon: "ph--square-split-vertical--regular",
380
+ size: 4
381
+ })), /* @__PURE__ */ React2.createElement(ToggleGroupItem, {
382
+ value: "preview",
383
+ classNames: "bg-transparent text-subdued"
335
384
  }, /* @__PURE__ */ React2.createElement(Icon2, {
336
- icon: showPanel ? "ph--caret-down--regular" : "ph--caret-up--regular",
385
+ icon: "ph--eye--regular",
337
386
  size: 4
338
- }))), /* @__PURE__ */ React2.createElement(Tooltip.Portal, null, /* @__PURE__ */ React2.createElement(Tooltip.Content, null, /* @__PURE__ */ React2.createElement(Tooltip.Arrow, null), t("toggle details label")))))));
387
+ })));
388
+ };
389
+
390
+ // packages/plugins/experimental/plugin-script/src/components/TypescriptEditor/TypescriptEditor.tsx
391
+ import { javascript } from "@codemirror/lang-javascript";
392
+ import { tsSync, tsFacet, tsLinter, tsAutocomplete, tsHover } from "@valtown/codemirror-ts";
393
+ import React3 from "react";
394
+ import { useThemeContext } from "@dxos/react-ui";
395
+ import { autocomplete, createBasicExtensions, createThemeExtensions, editorFullWidth, editorGutter, editorMonospace, InputModeExtensions, useTextEditor } from "@dxos/react-ui-editor";
396
+ import { nonNullable } from "@dxos/util";
397
+ var TypescriptEditor = ({ id, env, className, initialValue, extensions, scrollTo, selection }) => {
398
+ const { themeMode } = useThemeContext();
399
+ const { parentRef, focusAttributes } = useTextEditor(() => ({
400
+ id,
401
+ initialValue,
402
+ extensions: [
403
+ extensions,
404
+ createBasicExtensions({
405
+ highlightActiveLine: true,
406
+ indentWithTab: true,
407
+ lineNumbers: true,
408
+ lineWrapping: false,
409
+ scrollPastEnd: true
410
+ }),
411
+ createThemeExtensions({
412
+ themeMode,
413
+ syntaxHighlighting: true,
414
+ slots: {
415
+ content: {
416
+ className: editorFullWidth
417
+ }
418
+ }
419
+ }),
420
+ editorGutter,
421
+ // TODO(burdon): Factor out.
422
+ [
423
+ editorMonospace,
424
+ javascript({
425
+ typescript: true
426
+ }),
427
+ // https://github.com/val-town/codemirror-ts
428
+ autocomplete({
429
+ override: env ? [
430
+ tsAutocomplete()
431
+ ] : []
432
+ }),
433
+ env ? [
434
+ tsFacet.of({
435
+ env,
436
+ path: `/src/${id}.ts`
437
+ }),
438
+ tsSync(),
439
+ tsLinter(),
440
+ tsHover()
441
+ ] : [],
442
+ InputModeExtensions.vscode
443
+ ]
444
+ ].filter(nonNullable),
445
+ selection,
446
+ scrollTo
447
+ }), [
448
+ id,
449
+ initialValue,
450
+ extensions,
451
+ themeMode,
452
+ selection,
453
+ scrollTo
454
+ ]);
455
+ return /* @__PURE__ */ React3.createElement("div", {
456
+ ref: parentRef,
457
+ className,
458
+ ...focusAttributes
459
+ });
339
460
  };
340
461
 
341
462
  // packages/plugins/experimental/plugin-script/src/components/ScriptEditor.tsx
342
463
  var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/plugins/experimental/plugin-script/src/components/ScriptEditor.tsx";
343
- var ScriptEditor = ({ env, script, role }) => {
464
+ var ScriptEditor = ({ classNames, script, env }) => {
344
465
  const { t } = useTranslation3(SCRIPT_PLUGIN);
345
- const hasAttention = useHasAttention(fullyQualifiedId(script));
346
466
  const client = useClient();
347
467
  const identity = useIdentity();
348
468
  const space = getSpace(script);
@@ -369,7 +489,7 @@ var ScriptEditor = ({ env, script, role }) => {
369
489
  space,
370
490
  identity
371
491
  ]);
372
- const [showPanel, setShowPanel] = useState3(false);
492
+ const [view, setView] = useState3("editor");
373
493
  const initialValue = useMemo(() => script.source?.content, [
374
494
  script.source
375
495
  ]);
@@ -397,7 +517,7 @@ var ScriptEditor = ({ env, script, role }) => {
397
517
  } catch (err) {
398
518
  log2.catch(err, void 0, {
399
519
  F: __dxlog_file2,
400
- L: 102,
520
+ L: 94,
401
521
  S: void 0,
402
522
  C: (f, a) => f(...a)
403
523
  });
@@ -405,6 +525,24 @@ var ScriptEditor = ({ env, script, role }) => {
405
525
  }, [
406
526
  script.source
407
527
  ]);
528
+ const handleTemplateChange = (id) => {
529
+ const template = templates.find((template2) => template2.id === id);
530
+ if (template) {
531
+ script.name = template.name;
532
+ script.source.content = template.source;
533
+ const metaKeys = getMeta(script).keys;
534
+ const oldPresetIndex = metaKeys.findIndex((key) => key.source === USERFUNCTIONS_PRESET_META_KEY);
535
+ if (oldPresetIndex >= 0) {
536
+ metaKeys.splice(oldPresetIndex, 1);
537
+ }
538
+ if (template.presetId) {
539
+ metaKeys.push({
540
+ source: USERFUNCTIONS_PRESET_META_KEY,
541
+ id: template.presetId
542
+ });
543
+ }
544
+ }
545
+ };
408
546
  const handleDeploy = useCallback(async () => {
409
547
  if (!script.source || !identity || !space) {
410
548
  return;
@@ -437,7 +575,7 @@ var ScriptEditor = ({ env, script, role }) => {
437
575
  functionVersionNumber
438
576
  }, {
439
577
  F: __dxlog_file2,
440
- L: 137,
578
+ L: 142,
441
579
  S: void 0,
442
580
  C: (f, a) => f(...a)
443
581
  });
@@ -449,12 +587,13 @@ var ScriptEditor = ({ env, script, role }) => {
449
587
  source: script
450
588
  }));
451
589
  const meta = getMeta(deployedFunction);
452
- setUserFunctionUrlInMetadata(meta, `/${ownerDid}/${functionId}`);
453
590
  script.changed = false;
591
+ setUserFunctionUrlInMetadata(meta, `/${ownerDid}/${functionId}`);
592
+ setView("split");
454
593
  } catch (err) {
455
594
  log2.catch(err, void 0, {
456
595
  F: __dxlog_file2,
457
- L: 147,
596
+ L: 154,
458
597
  S: void 0,
459
598
  C: (f, a) => f(...a)
460
599
  });
@@ -481,33 +620,45 @@ var ScriptEditor = ({ env, script, role }) => {
481
620
  existingFunctionUrl,
482
621
  space
483
622
  ]);
484
- return /* @__PURE__ */ React3.createElement("div", {
623
+ return /* @__PURE__ */ React4.createElement("div", {
485
624
  role: "none",
486
- className: mx2("flex flex-col is-full bs-full overflow-hidden", role === "article" && "row-span-2", hasAttention && "attention-surface")
487
- }, /* @__PURE__ */ React3.createElement(TypescriptEditor, {
488
- id: script.id,
489
- env,
490
- initialValue,
491
- extensions,
492
- className: "flex is-full bs-full overflow-hidden ch-focus-ring-inset-over-all"
493
- }), /* @__PURE__ */ React3.createElement(Toolbar2, {
494
- classNames: "border-t border-separator",
625
+ className: mx2("flex flex-col w-full overflow-hidden divide-y divide-separator", classNames)
626
+ }, /* @__PURE__ */ React4.createElement(Toolbar2, {
495
627
  deployed: Boolean(existingFunctionUrl) && !script.changed,
496
628
  functionUrl,
497
629
  error,
498
- showPanel,
630
+ view,
631
+ templates,
499
632
  onDeploy: handleDeploy,
500
633
  onFormat: handleFormat,
501
- onTogglePanel: async () => setShowPanel((showDetails) => !showDetails)
502
- }), showPanel && /* @__PURE__ */ React3.createElement(DebugPanel, {
634
+ onViewChange: setView,
635
+ onTemplateSelect: handleTemplateChange
636
+ }), view !== "preview" && /* @__PURE__ */ React4.createElement(TypescriptEditor, {
637
+ id: script.id,
638
+ env,
639
+ initialValue,
640
+ extensions,
641
+ className: "flex is-full bs-full overflow-hidden ch-focus-ring-inset-over-all"
642
+ }), view !== "editor" && /* @__PURE__ */ React4.createElement(DebugPanel, {
503
643
  functionUrl,
504
644
  binding: fn?.binding,
505
645
  onBindingChange: handleBindingChange
506
646
  }));
507
647
  };
508
- var ScriptEditor_default = ScriptEditor;
648
+
649
+ // packages/plugins/experimental/plugin-script/src/components/ScriptContainer.tsx
650
+ var ScriptContainer = ({ script, ...props }) => {
651
+ const hasAttention = useHasAttention(fullyQualifiedId(script));
652
+ return /* @__PURE__ */ React5.createElement("div", {
653
+ role: "none",
654
+ className: mx3("flex row-span-2 w-full overflow-hidden", hasAttention && "attention-surface")
655
+ }, /* @__PURE__ */ React5.createElement(ScriptEditor, {
656
+ ...props,
657
+ script
658
+ }));
659
+ };
660
+ var ScriptContainer_default = ScriptContainer;
509
661
  export {
510
- ScriptEditor,
511
- ScriptEditor_default as default
662
+ ScriptContainer_default as default
512
663
  };
513
- //# sourceMappingURL=ScriptEditor-5Y3EROG3.mjs.map
664
+ //# sourceMappingURL=ScriptContainer-7DE7USCY.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/ScriptContainer.tsx", "../../../src/components/ScriptEditor.tsx", "../../../src/components/DebugPanel/DebugPanel.tsx", "../../../src/components/Toolbar/Toolbar.tsx", "../../../src/components/TypescriptEditor/TypescriptEditor.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { fullyQualifiedId } from '@dxos/react-client/echo';\nimport { useHasAttention } from '@dxos/react-ui-attention';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { ScriptEditor, type ScriptEditorProps } from './ScriptEditor';\n\nconst ScriptContainer = ({ script, ...props }: ScriptEditorProps) => {\n const hasAttention = useHasAttention(fullyQualifiedId(script));\n return (\n <div role='none' className={mx('flex row-span-2 w-full overflow-hidden', hasAttention && 'attention-surface')}>\n <ScriptEditor {...props} script={script} />\n </div>\n );\n};\n\nexport default ScriptContainer;\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type DID } from 'iso-did/types';\nimport { format } from 'prettier';\nimport prettierPluginEstree from 'prettier/plugins/estree';\nimport prettierPluginTypescript from 'prettier/plugins/typescript';\nimport React, { useCallback, useMemo, useState } from 'react';\n\nimport { log } from '@dxos/log';\nimport { useClient } from '@dxos/react-client';\nimport { create, createDocAccessor, Filter, getMeta, getSpace, useQuery } from '@dxos/react-client/echo';\nimport { useIdentity } from '@dxos/react-client/halo';\nimport { useTranslation, type ThemedClassName } from '@dxos/react-ui';\nimport { createDataExtensions, listener } from '@dxos/react-ui-editor';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { DebugPanel } from './DebugPanel';\nimport { type TemplateSelectProps, Toolbar, type ViewType } from './Toolbar';\nimport { TypescriptEditor, type TypescriptEditorProps } from './TypescriptEditor';\nimport { Bundler } from '../bundler';\nimport {\n getUserFunctionUrlInMetadata,\n publicKeyToDid,\n setUserFunctionUrlInMetadata,\n uploadWorkerFunction,\n USERFUNCTIONS_PRESET_META_KEY,\n} from '../edge';\nimport { SCRIPT_PLUGIN } from '../meta';\nimport { templates } from '../templates';\nimport { FunctionType, type ScriptType } from '../types';\n\nexport type ScriptEditorProps = ThemedClassName<{\n script: ScriptType;\n}> &\n Pick<TypescriptEditorProps, 'env'>;\n\nexport const ScriptEditor = ({ classNames, script, env }: ScriptEditorProps) => {\n const { t } = useTranslation(SCRIPT_PLUGIN);\n const client = useClient();\n const identity = useIdentity();\n const space = getSpace(script);\n const [fn] = useQuery(\n space,\n Filter.schema(FunctionType, (fn) => fn.source === script),\n );\n\n const extensions = useMemo(\n () => [\n listener({\n onChange: (text) => {\n if (script.source && script.source?.content !== text) {\n script.changed = true;\n }\n },\n }),\n createDataExtensions({\n id: script.id,\n text: script.source && createDocAccessor(script.source, ['content']),\n space,\n identity,\n }),\n ],\n [script, script.source, space, identity],\n );\n\n const [view, setView] = useState<ViewType>('editor');\n const initialValue = useMemo(() => script.source?.content, [script.source]);\n const existingFunctionUrl = fn && getUserFunctionUrlInMetadata(getMeta(fn));\n const [error, setError] = useState<string>();\n\n const handleBindingChange = useCallback(\n (binding: string) => {\n fn.binding = binding;\n },\n [fn],\n );\n\n const handleFormat = useCallback(async () => {\n if (!script.source) {\n return;\n }\n\n try {\n script.source.content = await format(script.source.content, {\n parser: 'typescript',\n plugins: [prettierPluginEstree, prettierPluginTypescript],\n semi: true,\n singleQuote: true,\n });\n } catch (err: any) {\n // TODO(wittjosiah): Show error in UI.\n log.catch(err);\n }\n }, [script.source]);\n\n const handleTemplateChange: TemplateSelectProps['onTemplateSelect'] = (id) => {\n const template = templates.find((template) => template.id === id);\n if (template) {\n script.name = template.name;\n script.source!.content = template.source;\n const metaKeys = getMeta(script).keys;\n const oldPresetIndex = metaKeys.findIndex((key) => key.source === USERFUNCTIONS_PRESET_META_KEY);\n if (oldPresetIndex >= 0) {\n metaKeys.splice(oldPresetIndex, 1);\n }\n if (template.presetId) {\n metaKeys.push({ source: USERFUNCTIONS_PRESET_META_KEY, id: template.presetId });\n }\n }\n };\n\n const handleDeploy = useCallback(async () => {\n if (!script.source || !identity || !space) {\n return;\n }\n\n setError(undefined);\n\n try {\n const existingFunctionId = existingFunctionUrl?.split('/').at(-1);\n const ownerDid = (existingFunctionUrl?.split('/').at(-2) as DID) ?? publicKeyToDid(identity.identityKey);\n\n const bundler = new Bundler({ platform: 'browser', sandboxedModules: [], remoteModules: {} });\n const buildResult = await bundler.bundle(script.source.content);\n if (buildResult.error || !buildResult.bundle) {\n throw buildResult.error;\n }\n\n const { result, functionId, functionVersionNumber, errorMessage } = await uploadWorkerFunction({\n clientConfig: client.config,\n halo: client.halo,\n ownerDid,\n functionId: existingFunctionId,\n source: buildResult.bundle,\n });\n if (result !== 'success' || functionId === undefined || functionVersionNumber === undefined) {\n throw new Error(errorMessage);\n }\n\n log.info('function uploaded', { functionId, functionVersionNumber });\n if (fn) {\n fn.version = functionVersionNumber;\n }\n\n const deployedFunction =\n fn ?? space.db.add(create(FunctionType, { version: functionVersionNumber, source: script }));\n const meta = getMeta(deployedFunction);\n script.changed = false;\n setUserFunctionUrlInMetadata(meta, `/${ownerDid}/${functionId}`);\n setView('split');\n } catch (err: any) {\n log.catch(err);\n setError(t('upload failed label'));\n }\n }, [fn, existingFunctionUrl, script, script.name, script.source]);\n\n const functionUrl = useMemo(() => {\n if (!existingFunctionUrl) {\n return;\n }\n\n const baseUrl = new URL('functions/', client.config.values.runtime?.services?.edge?.url);\n\n // Leading slashes cause the URL to be treated as an absolute path.\n const relativeUrl = existingFunctionUrl.replace(/^\\//, '');\n const url = new URL(`./${relativeUrl}`, baseUrl.toString());\n space && url.searchParams.set('spaceId', space.id);\n url.protocol = 'https';\n return url.toString();\n }, [existingFunctionUrl, space]);\n\n return (\n <div role='none' className={mx('flex flex-col w-full overflow-hidden divide-y divide-separator', classNames)}>\n <Toolbar\n deployed={Boolean(existingFunctionUrl) && !script.changed}\n functionUrl={functionUrl}\n error={error}\n view={view}\n templates={templates}\n onDeploy={handleDeploy}\n onFormat={handleFormat}\n onViewChange={setView}\n onTemplateSelect={handleTemplateChange}\n />\n\n {view !== 'preview' && (\n <TypescriptEditor\n id={script.id}\n env={env}\n initialValue={initialValue}\n extensions={extensions}\n className='flex is-full bs-full overflow-hidden ch-focus-ring-inset-over-all'\n />\n )}\n\n {view !== 'editor' && (\n <DebugPanel functionUrl={functionUrl} binding={fn?.binding} onBindingChange={handleBindingChange} />\n )}\n </div>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useEffect, useRef, useState } from 'react';\n\nimport { log } from '@dxos/log';\nimport {\n Avatar,\n DensityProvider,\n Icon,\n Input,\n type ThemedClassName,\n Toolbar,\n useControlledValue,\n useTranslation,\n} from '@dxos/react-ui';\nimport { SyntaxHighlighter } from '@dxos/react-ui-syntax-highlighter';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { SCRIPT_PLUGIN } from '../../meta';\n\ntype State = 'pending' | 'responding';\n\n/**\n * Request or response.\n */\ntype Message = { type: 'request' | 'response'; text?: string; data?: any; error?: Error };\n\nexport type DebugPanelProps = ThemedClassName<{\n functionUrl?: string;\n binding?: string;\n onBindingChange?: (binding: string) => void;\n}>;\n\nexport const DebugPanel = ({ classNames, functionUrl, binding: _binding, onBindingChange }: DebugPanelProps) => {\n const { t } = useTranslation(SCRIPT_PLUGIN);\n\n const bindingInputRef = useRef<HTMLInputElement>(null);\n const [binding, setBinding] = useControlledValue(_binding ?? '');\n const handleBlur = () => {\n onBindingChange?.(binding);\n };\n\n const inputRef = useRef<HTMLInputElement>(null);\n const [input, setInput] = useState('');\n const [result, setResult] = useState('');\n const [state, setState] = useState<State | null>(null);\n\n // TODO(burdon): Persistent history -- at least for session (non-space ECHO data?)\n const [history, setHistory] = useState<Message[]>([]);\n\n const scrollerRef = useRef<HTMLDivElement>(null);\n const handleScroll = () => {\n if (scrollerRef.current) {\n scrollerRef.current.scrollTop = scrollerRef.current.scrollHeight;\n }\n };\n\n const controller = useRef<AbortController>();\n useEffect(() => {\n return () => {\n handleStop();\n };\n }, []);\n\n const handleStop = () => {\n controller.current?.abort('stop');\n controller.current = undefined;\n };\n\n const handleClear = () => {\n handleStop();\n setInput('');\n setResult('');\n setHistory([]);\n inputRef.current?.focus();\n };\n\n const handleResponse = ({ text, data, error }: { text?: string; data?: any; error?: Error } = {}) => {\n controller.current = undefined;\n setHistory((history) => [...history, { type: 'response', text, data, error } satisfies Message]);\n setResult('');\n setState(null);\n handleScroll();\n };\n\n const handleRequest = async (input: string) => {\n // Returns a promise that resolves when a value has been received.\n try {\n setState('pending');\n\n let data = null;\n // Detect JSON input.\n if (input.charAt(0) === '{') {\n try {\n const validJsonString = input.replace(/'/g, '\"').replace(/([{,]\\s*)([a-zA-Z0-9_]+)(\\s*:)/g, '$1\"$2\"$3');\n data = JSON.parse(validJsonString);\n input = JSON.stringify(data, null, 2);\n } catch (err) {\n inputRef.current?.focus();\n return;\n }\n }\n\n setInput('');\n setResult('');\n setHistory((history) => [...history, { type: 'request', text: input }]);\n setTimeout(() => {\n handleScroll();\n });\n\n // Throws DOMException when aborted.\n controller.current = new AbortController();\n const response = await fetch(functionUrl!, {\n signal: controller.current.signal,\n method: 'POST',\n body: input,\n headers: {\n 'Content-Type': data ? 'application/json' : 'text/plain',\n },\n });\n\n // Check for error.\n if (!response.ok) {\n const text = await response.text();\n handleResponse({ error: new Error(text || response.statusText || String(response.status)) });\n return;\n }\n\n // Check for JSON.\n const contentType = response.headers.get('content-type');\n if (contentType === 'application/json') {\n const data = await response.json();\n handleResponse({ data });\n return;\n }\n\n // Text (including streaming).\n setState('responding');\n let text = '';\n const reader = response.body!.getReader();\n const pump = async ({ done, value }: ReadableStreamReadResult<Uint8Array>): Promise<void> => {\n text = text + new TextDecoder().decode(value);\n if (!controller.current || done) {\n handleResponse({ text });\n return;\n }\n\n setResult(text);\n setTimeout(() => {\n handleScroll();\n });\n\n return reader.read().then(pump);\n };\n\n void reader\n .read()\n .then(pump)\n .catch((err) => {\n if (err.name !== 'AbortError') {\n log.catch(err);\n }\n });\n } catch (err: any) {\n if (err !== 'stop') {\n const error = err instanceof Error ? err : new Error(err);\n handleResponse({ error });\n log.catch(err);\n } else {\n handleResponse();\n }\n }\n };\n\n return (\n <DensityProvider density='fine'>\n <div className={mx('flex flex-col h-full overflow-hidden', classNames)}>\n {/* TODO(burdon): Replace with Thread? */}\n <div ref={scrollerRef} className='flex flex-col gap-6 h-full p-4 overflow-x-hidden overflow-y-auto'>\n <MessageThread state={state} result={result} history={history} />\n </div>\n\n <Toolbar.Root classNames='p-2'>\n <Input.Root>\n <Input.TextInput\n ref={inputRef}\n autoFocus\n placeholder={t('function request placeholder')}\n value={input}\n onChange={(ev) => setInput(ev.target.value)}\n onKeyDown={(ev) => ev.key === 'Enter' && handleRequest(input)}\n />\n </Input.Root>\n <Input.Root>\n <Input.TextInput\n ref={bindingInputRef}\n classNames='!w-[10rem]'\n placeholder={t('binding placeholder')}\n value={binding}\n onChange={(ev) => setBinding(ev.target.value.toUpperCase())}\n onBlur={handleBlur}\n />\n </Input.Root>\n <Toolbar.Button onClick={() => handleRequest(input)}>\n <Icon icon='ph--play--regular' size={4} />\n </Toolbar.Button>\n <Toolbar.Button onClick={() => (state ? handleStop() : handleClear())}>\n <Icon icon={state ? 'ph--stop--regular' : 'ph--trash--regular'} size={4} />\n </Toolbar.Button>\n </Toolbar.Root>\n </div>\n </DensityProvider>\n );\n};\n\n// TODO(burdon): Replace with thread?\n// TODO(burdon): Button to delete individual messages.\n// TODO(burdon): Button to edit/re-run question.\nconst MessageThread = ({ state, result, history }: { state: State | null; result: string; history: Message[] }) => {\n return (\n <>\n {history.map((message, i) => (\n <div key={i} className='grid grid-cols-[3rem_1fr_3rem]'>\n <div className='p-1'>{message.type === 'response' && <RobotAvatar />}</div>\n <div className='overflow-auto'>\n <MessageItem message={message} />\n </div>\n </div>\n ))}\n {result?.length > 0 && (\n <div className='grid grid-cols-[3rem_1fr_3rem]'>\n <div className='p-1'>\n {(state === 'pending' && <Icon icon='ph--spinner--regular' size={6} classNames='animate-spin' />) || (\n <Icon icon='ph--robot--regular' size={6} classNames='animate-[pulse_1s_ease-in-out_infinite]' />\n )}\n </div>\n <div className='overflow-auto'>\n <MessageItem message={{ type: 'response', text: result }} />\n </div>\n </div>\n )}\n </>\n );\n};\n\nconst MessageItem = ({ classNames, message }: ThemedClassName<{ message: Message }>) => {\n const { type, text, data, error } = message;\n const wrapper = 'p-1 px-2 rounded-lg bg-hoverSurface overflow-auto';\n return (\n <div className={mx('flex', type === 'request' ? 'ml-[8rem] justify-end' : 'mr-[8rem]', classNames)}>\n {error && <div className={mx(wrapper, 'whitespace-pre text-error')}>{String(error)}</div>}\n\n {text !== undefined && (\n <div className={mx(wrapper, type === 'request' && 'bg-primary-400 dark:bg-primary-600')}>\n {text || '\\u00D8'}\n </div>\n )}\n\n {data && (\n <SyntaxHighlighter language='json' className={mx(wrapper, 'px-8 py-2 text-xs')}>\n {JSON.stringify(data, null, 2)}\n </SyntaxHighlighter>\n )}\n </div>\n );\n};\n\nconst RobotAvatar = () => (\n <Avatar.Root size={6} variant='circle'>\n <Avatar.Frame>\n <Avatar.Icon icon='ph--robot--regular' />\n </Avatar.Frame>\n </Avatar.Root>\n);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useState } from 'react';\n\nimport {\n DensityProvider,\n ElevationProvider,\n Icon,\n Select,\n type ThemedClassName,\n ToggleGroup,\n ToggleGroupItem,\n type ToolbarButtonProps,\n Toolbar as NaturalToolbar,\n Tooltip,\n useTranslation,\n} from '@dxos/react-ui';\n\nimport { SCRIPT_PLUGIN } from '../../meta';\nimport { type Template } from '../../templates';\n\nexport type ToolbarProps = ThemedClassName<\n {\n deployed?: boolean;\n error?: string;\n functionUrl?: string;\n onDeploy?: () => Promise<void>;\n onFormat?: () => Promise<void>;\n } & TemplateSelectProps &\n ViewSelectorProps\n>;\n\nexport const Toolbar = ({\n classNames,\n deployed,\n error,\n functionUrl,\n view,\n templates,\n onDeploy,\n onFormat,\n onViewChange,\n onTemplateSelect,\n}: ToolbarProps) => {\n const { t } = useTranslation(SCRIPT_PLUGIN);\n const [pending, setPending] = useState(false);\n\n const handleCopyLink = async () => {\n if (!functionUrl) {\n return;\n }\n\n await navigator.clipboard.writeText(functionUrl);\n };\n\n const handleDeploy = async () => {\n if (!pending) {\n setPending(true);\n await onDeploy?.();\n setPending(false);\n }\n };\n\n // TODO(burdon): Factor out common toolbar components with sheet/editor?\n return (\n <DensityProvider density='fine'>\n <ElevationProvider elevation='chrome'>\n <NaturalToolbar.Root classNames={['p-1', classNames]} style={{ contain: 'layout' }}>\n {templates && <TemplateSelect templates={templates} onTemplateSelect={onTemplateSelect} />}\n {onFormat && <ToolbarIconButton icon='ph--magic-wand--regular' text={t('format label')} onClick={onFormat} />}\n\n <div role='separator' className='grow' />\n\n {error ? (\n <Tooltip.Root>\n <Tooltip.Trigger>\n <Icon icon='ph--warning-circle--regular' size={4} />\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content>\n <Tooltip.Arrow />\n {error}\n </Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n ) : null}\n\n {functionUrl && deployed && (\n <ToolbarIconButton icon='ph--link--regular' text={t('copy link label')} onClick={handleCopyLink} />\n )}\n\n {onDeploy && (\n <ToolbarIconButton\n icon={pending ? 'ph--spinner-gap--regular' : 'ph--cloud-arrow-up--regular'}\n classNames={[pending && 'animate-spin']}\n text={pending ? t('pending label') : t('deploy label')}\n onClick={handleDeploy}\n />\n )}\n\n <ViewSelector view={view} onViewChange={onViewChange} />\n </NaturalToolbar.Root>\n </ElevationProvider>\n </DensityProvider>\n );\n};\n\nconst ToolbarIconButton = ({\n icon,\n text,\n classNames,\n disabled,\n onClick,\n}: { icon: string; text: string } & Pick<ToolbarButtonProps, 'classNames' | 'disabled' | 'onClick'>) => {\n return (\n <Tooltip.Root>\n <Tooltip.Trigger asChild>\n <NaturalToolbar.Button variant='ghost' disabled={disabled} onClick={onClick}>\n <Icon icon={icon} size={4} classNames={classNames} />\n </NaturalToolbar.Button>\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content>\n <Tooltip.Arrow />\n {text}\n </Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n );\n};\n\nexport type ViewType = 'editor' | 'split' | 'preview';\n\nexport type TemplateSelectProps = {\n templates?: Template[];\n onTemplateSelect?: (id: string) => void;\n};\n\nexport const TemplateSelect = ({ templates = [], onTemplateSelect }: TemplateSelectProps) => {\n return (\n <Select.Root value={''} onValueChange={onTemplateSelect}>\n <Select.TriggerButton />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n <Select.Option value={''}>Template</Select.Option>\n {templates.map(({ id, name }) => (\n <Select.Option key={id} value={id}>\n {name}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n );\n};\n\nexport type ViewSelectorProps = {\n view?: ViewType;\n onViewChange?: (view: ViewType) => void;\n};\n\nexport const ViewSelector = ({ view, onViewChange }: ViewSelectorProps) => {\n return (\n <ToggleGroup type='single' value={view} onValueChange={(value) => onViewChange?.(value as ViewType)}>\n <ToggleGroupItem value='editor' classNames='bg-transparent text-subdued'>\n <Icon icon='ph--code--regular' size={4} />\n </ToggleGroupItem>\n <ToggleGroupItem value='split' classNames='bg-transparent text-subdued'>\n <Icon icon='ph--square-split-vertical--regular' size={4} />\n </ToggleGroupItem>\n <ToggleGroupItem value='preview' classNames='bg-transparent text-subdued'>\n <Icon icon='ph--eye--regular' size={4} />\n </ToggleGroupItem>\n </ToggleGroup>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { javascript } from '@codemirror/lang-javascript';\nimport { type VirtualTypeScriptEnvironment } from '@typescript/vfs';\nimport { tsSync, tsFacet, tsLinter, tsAutocomplete, tsHover } from '@valtown/codemirror-ts';\nimport React from 'react';\n\nimport { useThemeContext } from '@dxos/react-ui';\nimport {\n autocomplete,\n createBasicExtensions,\n createThemeExtensions,\n editorFullWidth,\n editorGutter,\n editorMonospace,\n InputModeExtensions,\n useTextEditor,\n type UseTextEditorProps,\n} from '@dxos/react-ui-editor';\nimport { nonNullable } from '@dxos/util';\n\nexport type TypescriptEditorProps = {\n id: string;\n env?: VirtualTypeScriptEnvironment;\n} & Pick<UseTextEditorProps, 'className' | 'initialValue' | 'extensions' | 'scrollTo' | 'selection'>;\n\nexport const TypescriptEditor = ({\n id,\n env,\n className,\n initialValue,\n extensions,\n scrollTo,\n selection,\n}: TypescriptEditorProps) => {\n const { themeMode } = useThemeContext();\n const { parentRef, focusAttributes } = useTextEditor(\n () => ({\n id,\n initialValue,\n extensions: [\n extensions,\n createBasicExtensions({\n highlightActiveLine: true,\n indentWithTab: true,\n lineNumbers: true,\n lineWrapping: false,\n scrollPastEnd: true,\n }),\n createThemeExtensions({\n themeMode,\n syntaxHighlighting: true,\n slots: {\n content: { className: editorFullWidth },\n },\n }),\n editorGutter,\n // TODO(burdon): Factor out.\n [\n editorMonospace,\n javascript({ typescript: true }),\n // https://github.com/val-town/codemirror-ts\n autocomplete({ override: env ? [tsAutocomplete()] : [] }),\n env ? [tsFacet.of({ env, path: `/src/${id}.ts` }), tsSync(), tsLinter(), tsHover()] : [],\n InputModeExtensions.vscode,\n ],\n ].filter(nonNullable),\n selection,\n scrollTo,\n }),\n [id, initialValue, extensions, themeMode, selection, scrollTo],\n );\n\n return <div ref={parentRef} className={className} {...focusAttributes} />;\n};\n\nexport default TypescriptEditor;\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;AAIA,OAAOA,YAAW;AAElB,SAASC,wBAAwB;AACjC,SAASC,uBAAuB;AAChC,SAASC,MAAAA,WAAU;;;ACHnB,SAASC,cAAc;AACvB,OAAOC,0BAA0B;AACjC,OAAOC,8BAA8B;AACrC,OAAOC,UAASC,aAAaC,SAASC,YAAAA,iBAAgB;AAEtD,SAASC,OAAAA,YAAW;AACpB,SAASC,iBAAiB;AAC1B,SAASC,QAAQC,mBAAmBC,QAAQC,SAASC,UAAUC,gBAAgB;AAC/E,SAASC,mBAAmB;AAC5B,SAASC,kBAAAA,uBAA4C;AACrD,SAASC,sBAAsBC,gBAAgB;AAC/C,SAASC,MAAAA,WAAU;;;ACZnB,OAAOC,SAASC,WAAWC,QAAQC,gBAAgB;AAEnD,SAASC,WAAW;AACpB,SACEC,QACAC,iBACAC,MACAC,OAEAC,SACAC,oBACAC,sBACK;AACP,SAASC,yBAAyB;AAClC,SAASC,UAAU;;AAiBZ,IAAMC,aAAa,CAAC,EAAEC,YAAYC,aAAaC,SAASC,UAAUC,gBAAe,MAAmB;AACzG,QAAM,EAAEC,EAAC,IAAKC,eAAeC,aAAAA;AAE7B,QAAMC,kBAAkBC,OAAyB,IAAA;AACjD,QAAM,CAACP,SAASQ,UAAAA,IAAcC,mBAAmBR,YAAY,EAAA;AAC7D,QAAMS,aAAa,MAAA;AACjBR,sBAAkBF,OAAAA;EACpB;AAEA,QAAMW,WAAWJ,OAAyB,IAAA;AAC1C,QAAM,CAACK,OAAOC,QAAAA,IAAYC,SAAS,EAAA;AACnC,QAAM,CAACC,QAAQC,SAAAA,IAAaF,SAAS,EAAA;AACrC,QAAM,CAACG,OAAOC,QAAAA,IAAYJ,SAAuB,IAAA;AAGjD,QAAM,CAACK,SAASC,UAAAA,IAAcN,SAAoB,CAAA,CAAE;AAEpD,QAAMO,cAAcd,OAAuB,IAAA;AAC3C,QAAMe,eAAe,MAAA;AACnB,QAAID,YAAYE,SAAS;AACvBF,kBAAYE,QAAQC,YAAYH,YAAYE,QAAQE;IACtD;EACF;AAEA,QAAMC,aAAanB,OAAAA;AACnBoB,YAAU,MAAA;AACR,WAAO,MAAA;AACLC,iBAAAA;IACF;EACF,GAAG,CAAA,CAAE;AAEL,QAAMA,aAAa,MAAA;AACjBF,eAAWH,SAASM,MAAM,MAAA;AAC1BH,eAAWH,UAAUO;EACvB;AAEA,QAAMC,cAAc,MAAA;AAClBH,eAAAA;AACAf,aAAS,EAAA;AACTG,cAAU,EAAA;AACVI,eAAW,CAAA,CAAE;AACbT,aAASY,SAASS,MAAAA;EACpB;AAEA,QAAMC,iBAAiB,CAAC,EAAEC,MAAMC,MAAMC,MAAK,IAAmD,CAAC,MAAC;AAC9FV,eAAWH,UAAUO;AACrBV,eAAW,CAACD,aAAY;SAAIA;MAAS;QAAEkB,MAAM;QAAYH;QAAMC;QAAMC;MAAM;KAAoB;AAC/FpB,cAAU,EAAA;AACVE,aAAS,IAAA;AACTI,iBAAAA;EACF;AAEA,QAAMgB,gBAAgB,OAAO1B,WAAAA;AAE3B,QAAI;AACFM,eAAS,SAAA;AAET,UAAIiB,OAAO;AAEX,UAAIvB,OAAM2B,OAAO,CAAA,MAAO,KAAK;AAC3B,YAAI;AACF,gBAAMC,kBAAkB5B,OAAM6B,QAAQ,MAAM,GAAA,EAAKA,QAAQ,mCAAmC,UAAA;AAC5FN,iBAAOO,KAAKC,MAAMH,eAAAA;AAClB5B,UAAAA,SAAQ8B,KAAKE,UAAUT,MAAM,MAAM,CAAA;QACrC,SAASU,KAAK;AACZlC,mBAASY,SAASS,MAAAA;AAClB;QACF;MACF;AAEAnB,eAAS,EAAA;AACTG,gBAAU,EAAA;AACVI,iBAAW,CAACD,aAAY;WAAIA;QAAS;UAAEkB,MAAM;UAAWH,MAAMtB;QAAM;OAAE;AACtEkC,iBAAW,MAAA;AACTxB,qBAAAA;MACF,CAAA;AAGAI,iBAAWH,UAAU,IAAIwB,gBAAAA;AACzB,YAAMC,WAAW,MAAMC,MAAMlD,aAAc;QACzCmD,QAAQxB,WAAWH,QAAQ2B;QAC3BC,QAAQ;QACRC,MAAMxC;QACNyC,SAAS;UACP,gBAAgBlB,OAAO,qBAAqB;QAC9C;MACF,CAAA;AAGA,UAAI,CAACa,SAASM,IAAI;AAChB,cAAMpB,QAAO,MAAMc,SAASd,KAAI;AAChCD,uBAAe;UAAEG,OAAO,IAAImB,MAAMrB,SAAQc,SAASQ,cAAcC,OAAOT,SAASU,MAAM,CAAA;QAAG,CAAA;AAC1F;MACF;AAGA,YAAMC,cAAcX,SAASK,QAAQO,IAAI,cAAA;AACzC,UAAID,gBAAgB,oBAAoB;AACtC,cAAMxB,QAAO,MAAMa,SAASa,KAAI;AAChC5B,uBAAe;UAAEE,MAAAA;QAAK,CAAA;AACtB;MACF;AAGAjB,eAAS,YAAA;AACT,UAAIgB,OAAO;AACX,YAAM4B,SAASd,SAASI,KAAMW,UAAS;AACvC,YAAMC,OAAO,OAAO,EAAEC,MAAMC,MAAK,MAAwC;AACvEhC,eAAOA,OAAO,IAAIiC,YAAAA,EAAcC,OAAOF,KAAAA;AACvC,YAAI,CAACxC,WAAWH,WAAW0C,MAAM;AAC/BhC,yBAAe;YAAEC;UAAK,CAAA;AACtB;QACF;AAEAlB,kBAAUkB,IAAAA;AACVY,mBAAW,MAAA;AACTxB,uBAAAA;QACF,CAAA;AAEA,eAAOwC,OAAOO,KAAI,EAAGC,KAAKN,IAAAA;MAC5B;AAEA,WAAKF,OACFO,KAAI,EACJC,KAAKN,IAAAA,EACLO,MAAM,CAAC1B,QAAAA;AACN,YAAIA,IAAI2B,SAAS,cAAc;AAC7BC,cAAIF,MAAM1B,KAAAA,QAAAA;;;;;;QACZ;MACF,CAAA;IACJ,SAASA,KAAU;AACjB,UAAIA,QAAQ,QAAQ;AAClB,cAAMT,QAAQS,eAAeU,QAAQV,MAAM,IAAIU,MAAMV,GAAAA;AACrDZ,uBAAe;UAAEG;QAAM,CAAA;AACvBqC,YAAIF,MAAM1B,KAAAA,QAAAA;;;;;;MACZ,OAAO;AACLZ,uBAAAA;MACF;IACF;EACF;AAEA,SACE,sBAAA,cAACyC,iBAAAA;IAAgBC,SAAQ;KACvB,sBAAA,cAACC,OAAAA;IAAIC,WAAWC,GAAG,wCAAwChF,UAAAA;KAEzD,sBAAA,cAAC8E,OAAAA;IAAIG,KAAK1D;IAAawD,WAAU;KAC/B,sBAAA,cAACG,eAAAA;IAAc/D;IAAcF;IAAgBI;OAG/C,sBAAA,cAAC8D,QAAQC,MAAI;IAACpF,YAAW;KACvB,sBAAA,cAACqF,MAAMD,MAAI,MACT,sBAAA,cAACC,MAAMC,WAAS;IACdL,KAAKpE;IACL0E,WAAAA;IACAC,aAAanF,EAAE,8BAAA;IACf+D,OAAOtD;IACP2E,UAAU,CAACC,OAAO3E,SAAS2E,GAAGC,OAAOvB,KAAK;IAC1CwB,WAAW,CAACF,OAAOA,GAAGG,QAAQ,WAAWrD,cAAc1B,KAAAA;OAG3D,sBAAA,cAACuE,MAAMD,MAAI,MACT,sBAAA,cAACC,MAAMC,WAAS;IACdL,KAAKzE;IACLR,YAAW;IACXwF,aAAanF,EAAE,qBAAA;IACf+D,OAAOlE;IACPuF,UAAU,CAACC,OAAOhF,WAAWgF,GAAGC,OAAOvB,MAAM0B,YAAW,CAAA;IACxDC,QAAQnF;OAGZ,sBAAA,cAACuE,QAAQa,QAAM;IAACC,SAAS,MAAMzD,cAAc1B,KAAAA;KAC3C,sBAAA,cAACoF,MAAAA;IAAKC,MAAK;IAAoBC,MAAM;OAEvC,sBAAA,cAACjB,QAAQa,QAAM;IAACC,SAAS,MAAO9E,QAAQW,WAAAA,IAAeG,YAAAA;KACrD,sBAAA,cAACiE,MAAAA;IAAKC,MAAMhF,QAAQ,sBAAsB;IAAsBiF,MAAM;;AAMlF;AAKA,IAAMlB,gBAAgB,CAAC,EAAE/D,OAAOF,QAAQI,QAAO,MAA+D;AAC5G,SACE,sBAAA,cAAA,MAAA,UAAA,MACGA,QAAQgF,IAAI,CAACC,SAASC,MACrB,sBAAA,cAACzB,OAAAA;IAAIe,KAAKU;IAAGxB,WAAU;KACrB,sBAAA,cAACD,OAAAA;IAAIC,WAAU;KAAOuB,QAAQ/D,SAAS,cAAc,sBAAA,cAACiE,aAAAA,IAAAA,CAAAA,GACtD,sBAAA,cAAC1B,OAAAA;IAAIC,WAAU;KACb,sBAAA,cAAC0B,aAAAA;IAAYH;SAIlBrF,QAAQyF,SAAS,KAChB,sBAAA,cAAC5B,OAAAA;IAAIC,WAAU;KACb,sBAAA,cAACD,OAAAA;IAAIC,WAAU;KACX5D,UAAU,aAAa,sBAAA,cAAC+E,MAAAA;IAAKC,MAAK;IAAuBC,MAAM;IAAGpG,YAAW;QAC7E,sBAAA,cAACkG,MAAAA;IAAKC,MAAK;IAAqBC,MAAM;IAAGpG,YAAW;OAGxD,sBAAA,cAAC8E,OAAAA;IAAIC,WAAU;KACb,sBAAA,cAAC0B,aAAAA;IAAYH,SAAS;MAAE/D,MAAM;MAAYH,MAAMnB;IAAO;;AAMnE;AAEA,IAAMwF,cAAc,CAAC,EAAEzG,YAAYsG,QAAO,MAAyC;AACjF,QAAM,EAAE/D,MAAMH,MAAMC,MAAMC,MAAK,IAAKgE;AACpC,QAAMK,UAAU;AAChB,SACE,sBAAA,cAAC7B,OAAAA;IAAIC,WAAWC,GAAG,QAAQzC,SAAS,YAAY,0BAA0B,aAAavC,UAAAA;KACpFsC,SAAS,sBAAA,cAACwC,OAAAA;IAAIC,WAAWC,GAAG2B,SAAS,2BAAA;KAA+BhD,OAAOrB,KAAAA,CAAAA,GAE3EF,SAASJ,UACR,sBAAA,cAAC8C,OAAAA;IAAIC,WAAWC,GAAG2B,SAASpE,SAAS,aAAa,oCAAA;KAC/CH,QAAQ,MAAA,GAIZC,QACC,sBAAA,cAACuE,mBAAAA;IAAkBC,UAAS;IAAO9B,WAAWC,GAAG2B,SAAS,mBAAA;KACvD/D,KAAKE,UAAUT,MAAM,MAAM,CAAA,CAAA,CAAA;AAKtC;AAEA,IAAMmE,cAAc,MAClB,sBAAA,cAACM,OAAO1B,MAAI;EAACgB,MAAM;EAAGW,SAAQ;GAC5B,sBAAA,cAACD,OAAOE,OAAK,MACX,sBAAA,cAACF,OAAOZ,MAAI;EAACC,MAAK;;;;AC5QxB,OAAOc,UAASC,YAAAA,iBAAgB;AAEhC,SACEC,mBAAAA,kBACAC,mBACAC,QAAAA,OACAC,QAEAC,aACAC,iBAEAC,WAAWC,gBACXC,SACAC,kBAAAA,uBACK;AAgBA,IAAMC,WAAU,CAAC,EACtBC,YACAC,UACAC,OACAC,aACAC,MACAC,WAAAA,YACAC,UACAC,UACAC,cACAC,iBAAgB,MACH;AACb,QAAM,EAAEC,EAAC,IAAKC,gBAAeC,aAAAA;AAC7B,QAAM,CAACC,SAASC,UAAAA,IAAcC,UAAS,KAAA;AAEvC,QAAMC,iBAAiB,YAAA;AACrB,QAAI,CAACb,aAAa;AAChB;IACF;AAEA,UAAMc,UAAUC,UAAUC,UAAUhB,WAAAA;EACtC;AAEA,QAAMiB,eAAe,YAAA;AACnB,QAAI,CAACP,SAAS;AACZC,iBAAW,IAAA;AACX,YAAMR,WAAAA;AACNQ,iBAAW,KAAA;IACb;EACF;AAGA,SACE,gBAAAO,OAAA,cAACC,kBAAAA;IAAgBC,SAAQ;KACvB,gBAAAF,OAAA,cAACG,mBAAAA;IAAkBC,WAAU;KAC3B,gBAAAJ,OAAA,cAACK,eAAeC,MAAI;IAAC3B,YAAY;MAAC;MAAOA;;IAAa4B,OAAO;MAAEC,SAAS;IAAS;KAC9ExB,cAAa,gBAAAgB,OAAA,cAACS,gBAAAA;IAAezB,WAAWA;IAAWI;MACnDF,YAAY,gBAAAc,OAAA,cAACU,mBAAAA;IAAkBC,MAAK;IAA0BC,MAAMvB,EAAE,cAAA;IAAiBwB,SAAS3B;MAEjG,gBAAAc,OAAA,cAACc,OAAAA;IAAIC,MAAK;IAAYC,WAAU;MAE/BnC,QACC,gBAAAmB,OAAA,cAACiB,QAAQX,MAAI,MACX,gBAAAN,OAAA,cAACiB,QAAQC,SAAO,MACd,gBAAAlB,OAAA,cAACmB,OAAAA;IAAKR,MAAK;IAA8BS,MAAM;OAEjD,gBAAApB,OAAA,cAACiB,QAAQI,QAAM,MACb,gBAAArB,OAAA,cAACiB,QAAQK,SAAO,MACd,gBAAAtB,OAAA,cAACiB,QAAQM,OAAK,IAAA,GACb1C,KAAAA,CAAAA,CAAAA,IAIL,MAEHC,eAAeF,YACd,gBAAAoB,OAAA,cAACU,mBAAAA;IAAkBC,MAAK;IAAoBC,MAAMvB,EAAE,iBAAA;IAAoBwB,SAASlB;MAGlFV,YACC,gBAAAe,OAAA,cAACU,mBAAAA;IACCC,MAAMnB,UAAU,6BAA6B;IAC7Cb,YAAY;MAACa,WAAW;;IACxBoB,MAAMpB,UAAUH,EAAE,eAAA,IAAmBA,EAAE,cAAA;IACvCwB,SAASd;MAIb,gBAAAC,OAAA,cAACwB,cAAAA;IAAazC;IAAYI;;AAKpC;AAEA,IAAMuB,oBAAoB,CAAC,EACzBC,MACAC,MACAjC,YACA8C,UACAZ,QAAO,MAC0F;AACjG,SACE,gBAAAb,OAAA,cAACiB,QAAQX,MAAI,MACX,gBAAAN,OAAA,cAACiB,QAAQC,SAAO;IAACQ,SAAAA;KACf,gBAAA1B,OAAA,cAACK,eAAesB,QAAM;IAACC,SAAQ;IAAQH;IAAoBZ;KACzD,gBAAAb,OAAA,cAACmB,OAAAA;IAAKR;IAAYS,MAAM;IAAGzC;QAG/B,gBAAAqB,OAAA,cAACiB,QAAQI,QAAM,MACb,gBAAArB,OAAA,cAACiB,QAAQK,SAAO,MACd,gBAAAtB,OAAA,cAACiB,QAAQM,OAAK,IAAA,GACbX,IAAAA,CAAAA,CAAAA;AAKX;AASO,IAAMH,iBAAiB,CAAC,EAAEzB,WAAAA,aAAY,CAAA,GAAII,iBAAgB,MAAuB;AACtF,SACE,gBAAAY,OAAA,cAAC6B,OAAOvB,MAAI;IAACwB,OAAO;IAAIC,eAAe3C;KACrC,gBAAAY,OAAA,cAAC6B,OAAOG,eAAa,IAAA,GACrB,gBAAAhC,OAAA,cAAC6B,OAAOR,QAAM,MACZ,gBAAArB,OAAA,cAAC6B,OAAOP,SAAO,MACb,gBAAAtB,OAAA,cAAC6B,OAAOI,UAAQ,MACd,gBAAAjC,OAAA,cAAC6B,OAAOK,QAAM;IAACJ,OAAO;KAAI,UAAA,GACzB9C,WAAUmD,IAAI,CAAC,EAAEC,IAAIC,KAAI,MACxB,gBAAArC,OAAA,cAAC6B,OAAOK,QAAM;IAACI,KAAKF;IAAIN,OAAOM;KAC5BC,IAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AAQjB;AAOO,IAAMb,eAAe,CAAC,EAAEzC,MAAMI,aAAY,MAAqB;AACpE,SACE,gBAAAa,OAAA,cAACuC,aAAAA;IAAYC,MAAK;IAASV,OAAO/C;IAAMgD,eAAe,CAACD,UAAU3C,eAAe2C,KAAAA;KAC/E,gBAAA9B,OAAA,cAACyC,iBAAAA;IAAgBX,OAAM;IAASnD,YAAW;KACzC,gBAAAqB,OAAA,cAACmB,OAAAA;IAAKR,MAAK;IAAoBS,MAAM;OAEvC,gBAAApB,OAAA,cAACyC,iBAAAA;IAAgBX,OAAM;IAAQnD,YAAW;KACxC,gBAAAqB,OAAA,cAACmB,OAAAA;IAAKR,MAAK;IAAqCS,MAAM;OAExD,gBAAApB,OAAA,cAACyC,iBAAAA;IAAgBX,OAAM;IAAUnD,YAAW;KAC1C,gBAAAqB,OAAA,cAACmB,OAAAA;IAAKR,MAAK;IAAmBS,MAAM;;AAI5C;;;AC/KA,SAASsB,kBAAkB;AAE3B,SAASC,QAAQC,SAASC,UAAUC,gBAAgBC,eAAe;AACnE,OAAOC,YAAW;AAElB,SAASC,uBAAuB;AAChC,SACEC,cACAC,uBACAC,uBACAC,iBACAC,cACAC,iBACAC,qBACAC,qBAEK;AACP,SAASC,mBAAmB;AAOrB,IAAMC,mBAAmB,CAAC,EAC/BC,IACAC,KACAC,WACAC,cACAC,YACAC,UACAC,UAAS,MACa;AACtB,QAAM,EAAEC,UAAS,IAAKC,gBAAAA;AACtB,QAAM,EAAEC,WAAWC,gBAAe,IAAKC,cACrC,OAAO;IACLX;IACAG;IACAC,YAAY;MACVA;MACAQ,sBAAsB;QACpBC,qBAAqB;QACrBC,eAAe;QACfC,aAAa;QACbC,cAAc;QACdC,eAAe;MACjB,CAAA;MACAC,sBAAsB;QACpBX;QACAY,oBAAoB;QACpBC,OAAO;UACLC,SAAS;YAAEnB,WAAWoB;UAAgB;QACxC;MACF,CAAA;MACAC;;MAEA;QACEC;QACAC,WAAW;UAAEC,YAAY;QAAK,CAAA;;QAE9BC,aAAa;UAAEC,UAAU3B,MAAM;YAAC4B,eAAAA;cAAoB,CAAA;QAAG,CAAA;QACvD5B,MAAM;UAAC6B,QAAQC,GAAG;YAAE9B;YAAK+B,MAAM,QAAQhC,EAAAA;UAAQ,CAAA;UAAIiC,OAAAA;UAAUC,SAAAA;UAAYC,QAAAA;YAAa,CAAA;QACtFC,oBAAoBC;;MAEtBC,OAAOC,WAAAA;IACTjC;IACAD;EACF,IACA;IAACL;IAAIG;IAAcC;IAAYG;IAAWD;IAAWD;GAAS;AAGhE,SAAO,gBAAAmC,OAAA,cAACC,OAAAA;IAAIC,KAAKjC;IAAWP;IAAuB,GAAGQ;;AACxD;;;;AHtCO,IAAMiC,eAAe,CAAC,EAAEC,YAAYC,QAAQC,IAAG,MAAqB;AACzE,QAAM,EAAEC,EAAC,IAAKC,gBAAeC,aAAAA;AAC7B,QAAMC,SAASC,UAAAA;AACf,QAAMC,WAAWC,YAAAA;AACjB,QAAMC,QAAQC,SAASV,MAAAA;AACvB,QAAM,CAACW,EAAAA,IAAMC,SACXH,OACAI,OAAOC,OAAOC,cAAc,CAACJ,QAAOA,IAAGK,WAAWhB,MAAAA,CAAAA;AAGpD,QAAMiB,aAAaC,QACjB,MAAM;IACJC,SAAS;MACPC,UAAU,CAACC,SAAAA;AACT,YAAIrB,OAAOgB,UAAUhB,OAAOgB,QAAQM,YAAYD,MAAM;AACpDrB,iBAAOuB,UAAU;QACnB;MACF;IACF,CAAA;IACAC,qBAAqB;MACnBC,IAAIzB,OAAOyB;MACXJ,MAAMrB,OAAOgB,UAAUU,kBAAkB1B,OAAOgB,QAAQ;QAAC;OAAU;MACnEP;MACAF;IACF,CAAA;KAEF;IAACP;IAAQA,OAAOgB;IAAQP;IAAOF;GAAS;AAG1C,QAAM,CAACoB,MAAMC,OAAAA,IAAWC,UAAmB,QAAA;AAC3C,QAAMC,eAAeZ,QAAQ,MAAMlB,OAAOgB,QAAQM,SAAS;IAACtB,OAAOgB;GAAO;AAC1E,QAAMe,sBAAsBpB,MAAMqB,6BAA6BC,QAAQtB,EAAAA,CAAAA;AACvE,QAAM,CAACuB,OAAOC,QAAAA,IAAYN,UAAAA;AAE1B,QAAMO,sBAAsBC,YAC1B,CAACC,YAAAA;AACC3B,OAAG2B,UAAUA;EACf,GACA;IAAC3B;GAAG;AAGN,QAAM4B,eAAeF,YAAY,YAAA;AAC/B,QAAI,CAACrC,OAAOgB,QAAQ;AAClB;IACF;AAEA,QAAI;AACFhB,aAAOgB,OAAOM,UAAU,MAAMkB,OAAOxC,OAAOgB,OAAOM,SAAS;QAC1DmB,QAAQ;QACRC,SAAS;UAACC;UAAsBC;;QAChCC,MAAM;QACNC,aAAa;MACf,CAAA;IACF,SAASC,KAAU;AAEjBC,MAAAA,KAAIC,MAAMF,KAAAA,QAAAA;;;;;;IACZ;EACF,GAAG;IAAC/C,OAAOgB;GAAO;AAElB,QAAMkC,uBAAgE,CAACzB,OAAAA;AACrE,UAAM0B,WAAWC,UAAUC,KAAK,CAACF,cAAaA,UAAS1B,OAAOA,EAAAA;AAC9D,QAAI0B,UAAU;AACZnD,aAAOsD,OAAOH,SAASG;AACvBtD,aAAOgB,OAAQM,UAAU6B,SAASnC;AAClC,YAAMuC,WAAWtB,QAAQjC,MAAAA,EAAQwD;AACjC,YAAMC,iBAAiBF,SAASG,UAAU,CAACC,QAAQA,IAAI3C,WAAW4C,6BAAAA;AAClE,UAAIH,kBAAkB,GAAG;AACvBF,iBAASM,OAAOJ,gBAAgB,CAAA;MAClC;AACA,UAAIN,SAASW,UAAU;AACrBP,iBAASQ,KAAK;UAAE/C,QAAQ4C;UAA+BnC,IAAI0B,SAASW;QAAS,CAAA;MAC/E;IACF;EACF;AAEA,QAAME,eAAe3B,YAAY,YAAA;AAC/B,QAAI,CAACrC,OAAOgB,UAAU,CAACT,YAAY,CAACE,OAAO;AACzC;IACF;AAEA0B,aAAS8B,MAAAA;AAET,QAAI;AACF,YAAMC,qBAAqBnC,qBAAqBoC,MAAM,GAAA,EAAKC,GAAG,EAAC;AAC/D,YAAMC,WAAYtC,qBAAqBoC,MAAM,GAAA,EAAKC,GAAG,EAAC,KAAcE,eAAe/D,SAASgE,WAAW;AAEvG,YAAMC,UAAU,IAAIC,QAAQ;QAAEC,UAAU;QAAWC,kBAAkB,CAAA;QAAIC,eAAe,CAAC;MAAE,CAAA;AAC3F,YAAMC,cAAc,MAAML,QAAQM,OAAO9E,OAAOgB,OAAOM,OAAO;AAC9D,UAAIuD,YAAY3C,SAAS,CAAC2C,YAAYC,QAAQ;AAC5C,cAAMD,YAAY3C;MACpB;AAEA,YAAM,EAAE6C,QAAQC,YAAYC,uBAAuBC,aAAY,IAAK,MAAMC,qBAAqB;QAC7FC,cAAc/E,OAAOgF;QACrBC,MAAMjF,OAAOiF;QACbjB;QACAW,YAAYd;QACZlD,QAAQ6D,YAAYC;MACtB,CAAA;AACA,UAAIC,WAAW,aAAaC,eAAef,UAAagB,0BAA0BhB,QAAW;AAC3F,cAAM,IAAIsB,MAAML,YAAAA;MAClB;AAEAlC,MAAAA,KAAIwC,KAAK,qBAAqB;QAAER;QAAYC;MAAsB,GAAA;;;;;;AAClE,UAAItE,IAAI;AACNA,WAAG8E,UAAUR;MACf;AAEA,YAAMS,mBACJ/E,MAAMF,MAAMkF,GAAGC,IAAIC,OAAO9E,cAAc;QAAE0E,SAASR;QAAuBjE,QAAQhB;MAAO,CAAA,CAAA;AAC3F,YAAM8F,OAAO7D,QAAQyD,gBAAAA;AACrB1F,aAAOuB,UAAU;AACjBwE,mCAA6BD,MAAM,IAAIzB,QAAAA,IAAYW,UAAAA,EAAY;AAC/DpD,cAAQ,OAAA;IACV,SAASmB,KAAU;AACjBC,MAAAA,KAAIC,MAAMF,KAAAA,QAAAA;;;;;;AACVZ,eAASjC,EAAE,qBAAA,CAAA;IACb;EACF,GAAG;IAACS;IAAIoB;IAAqB/B;IAAQA,OAAOsD;IAAMtD,OAAOgB;GAAO;AAEhE,QAAMgF,cAAc9E,QAAQ,MAAA;AAC1B,QAAI,CAACa,qBAAqB;AACxB;IACF;AAEA,UAAMkE,UAAU,IAAIC,IAAI,cAAc7F,OAAOgF,OAAOc,OAAOC,SAASC,UAAUC,MAAMC,GAAAA;AAGpF,UAAMC,cAAczE,oBAAoB0E,QAAQ,OAAO,EAAA;AACvD,UAAMF,MAAM,IAAIL,IAAI,KAAKM,WAAAA,IAAeP,QAAQS,SAAQ,CAAA;AACxDjG,aAAS8F,IAAII,aAAaC,IAAI,WAAWnG,MAAMgB,EAAE;AACjD8E,QAAIM,WAAW;AACf,WAAON,IAAIG,SAAQ;EACrB,GAAG;IAAC3E;IAAqBtB;GAAM;AAE/B,SACE,gBAAAqG,OAAA,cAACC,OAAAA;IAAIC,MAAK;IAAOC,WAAWC,IAAG,kEAAkEnH,UAAAA;KAC/F,gBAAA+G,OAAA,cAACK,UAAAA;IACCC,UAAUC,QAAQtF,mBAAAA,KAAwB,CAAC/B,OAAOuB;IAClDyE;IACA9D;IACAP;IACAyB;IACAkE,UAAUtD;IACVuD,UAAUhF;IACViF,cAAc5F;IACd6F,kBAAkBvE;MAGnBvB,SAAS,aACR,gBAAAmF,OAAA,cAACY,kBAAAA;IACCjG,IAAIzB,OAAOyB;IACXxB;IACA6B;IACAb;IACAgG,WAAU;MAIbtF,SAAS,YACR,gBAAAmF,OAAA,cAACa,YAAAA;IAAW3B;IAA0B1D,SAAS3B,IAAI2B;IAASsF,iBAAiBxF;;AAIrF;;;AD9LA,IAAMyF,kBAAkB,CAAC,EAAEC,QAAQ,GAAGC,MAAAA,MAA0B;AAC9D,QAAMC,eAAeC,gBAAgBC,iBAAiBJ,MAAAA,CAAAA;AACtD,SACE,gBAAAK,OAAA,cAACC,OAAAA;IAAIC,MAAK;IAAOC,WAAWC,IAAG,0CAA0CP,gBAAgB,mBAAA;KACvF,gBAAAG,OAAA,cAACK,cAAAA;IAAc,GAAGT;IAAOD;;AAG/B;AAEA,IAAA,0BAAeD;",
6
+ "names": ["React", "fullyQualifiedId", "useHasAttention", "mx", "format", "prettierPluginEstree", "prettierPluginTypescript", "React", "useCallback", "useMemo", "useState", "log", "useClient", "create", "createDocAccessor", "Filter", "getMeta", "getSpace", "useQuery", "useIdentity", "useTranslation", "createDataExtensions", "listener", "mx", "React", "useEffect", "useRef", "useState", "log", "Avatar", "DensityProvider", "Icon", "Input", "Toolbar", "useControlledValue", "useTranslation", "SyntaxHighlighter", "mx", "DebugPanel", "classNames", "functionUrl", "binding", "_binding", "onBindingChange", "t", "useTranslation", "SCRIPT_PLUGIN", "bindingInputRef", "useRef", "setBinding", "useControlledValue", "handleBlur", "inputRef", "input", "setInput", "useState", "result", "setResult", "state", "setState", "history", "setHistory", "scrollerRef", "handleScroll", "current", "scrollTop", "scrollHeight", "controller", "useEffect", "handleStop", "abort", "undefined", "handleClear", "focus", "handleResponse", "text", "data", "error", "type", "handleRequest", "charAt", "validJsonString", "replace", "JSON", "parse", "stringify", "err", "setTimeout", "AbortController", "response", "fetch", "signal", "method", "body", "headers", "ok", "Error", "statusText", "String", "status", "contentType", "get", "json", "reader", "getReader", "pump", "done", "value", "TextDecoder", "decode", "read", "then", "catch", "name", "log", "DensityProvider", "density", "div", "className", "mx", "ref", "MessageThread", "Toolbar", "Root", "Input", "TextInput", "autoFocus", "placeholder", "onChange", "ev", "target", "onKeyDown", "key", "toUpperCase", "onBlur", "Button", "onClick", "Icon", "icon", "size", "map", "message", "i", "RobotAvatar", "MessageItem", "length", "wrapper", "SyntaxHighlighter", "language", "Avatar", "variant", "Frame", "React", "useState", "DensityProvider", "ElevationProvider", "Icon", "Select", "ToggleGroup", "ToggleGroupItem", "Toolbar", "NaturalToolbar", "Tooltip", "useTranslation", "Toolbar", "classNames", "deployed", "error", "functionUrl", "view", "templates", "onDeploy", "onFormat", "onViewChange", "onTemplateSelect", "t", "useTranslation", "SCRIPT_PLUGIN", "pending", "setPending", "useState", "handleCopyLink", "navigator", "clipboard", "writeText", "handleDeploy", "React", "DensityProvider", "density", "ElevationProvider", "elevation", "NaturalToolbar", "Root", "style", "contain", "TemplateSelect", "ToolbarIconButton", "icon", "text", "onClick", "div", "role", "className", "Tooltip", "Trigger", "Icon", "size", "Portal", "Content", "Arrow", "ViewSelector", "disabled", "asChild", "Button", "variant", "Select", "value", "onValueChange", "TriggerButton", "Viewport", "Option", "map", "id", "name", "key", "ToggleGroup", "type", "ToggleGroupItem", "javascript", "tsSync", "tsFacet", "tsLinter", "tsAutocomplete", "tsHover", "React", "useThemeContext", "autocomplete", "createBasicExtensions", "createThemeExtensions", "editorFullWidth", "editorGutter", "editorMonospace", "InputModeExtensions", "useTextEditor", "nonNullable", "TypescriptEditor", "id", "env", "className", "initialValue", "extensions", "scrollTo", "selection", "themeMode", "useThemeContext", "parentRef", "focusAttributes", "useTextEditor", "createBasicExtensions", "highlightActiveLine", "indentWithTab", "lineNumbers", "lineWrapping", "scrollPastEnd", "createThemeExtensions", "syntaxHighlighting", "slots", "content", "editorFullWidth", "editorGutter", "editorMonospace", "javascript", "typescript", "autocomplete", "override", "tsAutocomplete", "tsFacet", "of", "path", "tsSync", "tsLinter", "tsHover", "InputModeExtensions", "vscode", "filter", "nonNullable", "React", "div", "ref", "ScriptEditor", "classNames", "script", "env", "t", "useTranslation", "SCRIPT_PLUGIN", "client", "useClient", "identity", "useIdentity", "space", "getSpace", "fn", "useQuery", "Filter", "schema", "FunctionType", "source", "extensions", "useMemo", "listener", "onChange", "text", "content", "changed", "createDataExtensions", "id", "createDocAccessor", "view", "setView", "useState", "initialValue", "existingFunctionUrl", "getUserFunctionUrlInMetadata", "getMeta", "error", "setError", "handleBindingChange", "useCallback", "binding", "handleFormat", "format", "parser", "plugins", "prettierPluginEstree", "prettierPluginTypescript", "semi", "singleQuote", "err", "log", "catch", "handleTemplateChange", "template", "templates", "find", "name", "metaKeys", "keys", "oldPresetIndex", "findIndex", "key", "USERFUNCTIONS_PRESET_META_KEY", "splice", "presetId", "push", "handleDeploy", "undefined", "existingFunctionId", "split", "at", "ownerDid", "publicKeyToDid", "identityKey", "bundler", "Bundler", "platform", "sandboxedModules", "remoteModules", "buildResult", "bundle", "result", "functionId", "functionVersionNumber", "errorMessage", "uploadWorkerFunction", "clientConfig", "config", "halo", "Error", "info", "version", "deployedFunction", "db", "add", "create", "meta", "setUserFunctionUrlInMetadata", "functionUrl", "baseUrl", "URL", "values", "runtime", "services", "edge", "url", "relativeUrl", "replace", "toString", "searchParams", "set", "protocol", "React", "div", "role", "className", "mx", "Toolbar", "deployed", "Boolean", "onDeploy", "onFormat", "onViewChange", "onTemplateSelect", "TypescriptEditor", "DebugPanel", "onBindingChange", "ScriptContainer", "script", "props", "hasAttention", "useHasAttention", "fullyQualifiedId", "React", "div", "role", "className", "mx", "ScriptEditor"]
7
+ }
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  SCRIPT_PLUGIN
3
- } from "./chunk-JBACGDOJ.mjs";
3
+ } from "./chunk-MDX7ACIK.mjs";
4
4
 
5
5
  // packages/plugins/experimental/plugin-script/src/types/script.ts
6
6
  import { ref, S, TypedObject } from "@dxos/echo-schema";
@@ -43,4 +43,4 @@ export {
43
43
  FunctionType,
44
44
  ScriptAction
45
45
  };
46
- //# sourceMappingURL=chunk-O4LWBX6A.mjs.map
46
+ //# sourceMappingURL=chunk-CAEANETO.mjs.map