@dxos/plugin-script 0.6.13-staging.1e988a3 → 0.6.14-main.2b6a0f3

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 (202) hide show
  1. package/README.md +1 -1
  2. package/dist/lib/browser/AutomationPanel-Y7LQYFOY.mjs +78 -0
  3. package/dist/lib/browser/AutomationPanel-Y7LQYFOY.mjs.map +7 -0
  4. package/dist/lib/browser/ScriptContainer-KGZGB5AY.mjs +423 -0
  5. package/dist/lib/browser/ScriptContainer-KGZGB5AY.mjs.map +7 -0
  6. package/dist/lib/browser/{chunk-RHEZ5LUU.mjs → chunk-C4AX55JL.mjs} +51 -2
  7. package/dist/lib/browser/{chunk-RHEZ5LUU.mjs.map → chunk-C4AX55JL.mjs.map} +4 -4
  8. package/dist/lib/browser/{chunk-DL5XQRQM.mjs → chunk-KHNN3F7J.mjs} +18 -6
  9. package/dist/lib/browser/chunk-KHNN3F7J.mjs.map +7 -0
  10. package/dist/lib/browser/{chunk-O4LWBX6A.mjs → chunk-KXVQPS4Y.mjs} +2 -2
  11. package/dist/lib/browser/{chunk-O4LWBX6A.mjs.map → chunk-KXVQPS4Y.mjs.map} +2 -2
  12. package/dist/lib/browser/chunk-SGQHRB4P.mjs +17 -0
  13. package/dist/lib/browser/chunk-SGQHRB4P.mjs.map +7 -0
  14. package/dist/lib/browser/chunk-SP3Q7BCM.mjs +248 -0
  15. package/dist/lib/browser/chunk-SP3Q7BCM.mjs.map +7 -0
  16. package/dist/lib/browser/edge/index.mjs +5 -1
  17. package/dist/lib/browser/index.mjs +86 -61
  18. package/dist/lib/browser/index.mjs.map +4 -4
  19. package/dist/lib/browser/meta.json +1 -1
  20. package/dist/lib/browser/meta.mjs +1 -1
  21. package/dist/lib/browser/types/index.mjs +2 -2
  22. package/dist/lib/node/AutomationPanel-UNLRYLMA.cjs +100 -0
  23. package/dist/lib/node/AutomationPanel-UNLRYLMA.cjs.map +7 -0
  24. package/dist/lib/node/ScriptContainer-BIBIIJHP.cjs +425 -0
  25. package/dist/lib/node/ScriptContainer-BIBIIJHP.cjs.map +7 -0
  26. package/dist/lib/node/{chunk-5RBVXKXT.cjs → chunk-25PQE7FL.cjs} +6 -6
  27. package/dist/lib/node/{chunk-5RBVXKXT.cjs.map → chunk-25PQE7FL.cjs.map} +2 -2
  28. package/dist/lib/node/{TypescriptEditor-M3WWFIP2.cjs → chunk-EJC55SDD.cjs} +18 -8
  29. package/dist/lib/node/chunk-EJC55SDD.cjs.map +7 -0
  30. package/dist/lib/node/{chunk-PFH3ROEH.cjs → chunk-FY5KKL5N.cjs} +22 -8
  31. package/dist/lib/node/chunk-FY5KKL5N.cjs.map +7 -0
  32. package/dist/lib/node/{chunk-4GTXIELQ.cjs → chunk-NKWNQMJH.cjs} +44 -6
  33. package/dist/lib/node/chunk-NKWNQMJH.cjs.map +7 -0
  34. package/dist/lib/node/chunk-NWBG5QDN.cjs +277 -0
  35. package/dist/lib/node/chunk-NWBG5QDN.cjs.map +7 -0
  36. package/dist/lib/node/edge/index.cjs +12 -8
  37. package/dist/lib/node/edge/index.cjs.map +2 -2
  38. package/dist/lib/node/index.cjs +103 -82
  39. package/dist/lib/node/index.cjs.map +4 -4
  40. package/dist/lib/node/meta.cjs +3 -3
  41. package/dist/lib/node/meta.cjs.map +1 -1
  42. package/dist/lib/node/meta.json +1 -1
  43. package/dist/lib/node/types/index.cjs +5 -5
  44. package/dist/lib/node/types/index.cjs.map +1 -1
  45. package/dist/lib/node-esm/AutomationPanel-D4NHEKM6.mjs +79 -0
  46. package/dist/lib/node-esm/AutomationPanel-D4NHEKM6.mjs.map +7 -0
  47. package/dist/lib/node-esm/ScriptContainer-4VQ46IAZ.mjs +424 -0
  48. package/dist/lib/node-esm/ScriptContainer-4VQ46IAZ.mjs.map +7 -0
  49. package/dist/lib/node-esm/chunk-7EDYDVQH.mjs +47 -0
  50. package/dist/lib/node-esm/chunk-7EDYDVQH.mjs.map +7 -0
  51. package/dist/lib/node-esm/chunk-EEDWDGZT.mjs +249 -0
  52. package/dist/lib/node-esm/chunk-EEDWDGZT.mjs.map +7 -0
  53. package/dist/lib/node-esm/chunk-GO7HYFM5.mjs +19 -0
  54. package/dist/lib/node-esm/chunk-GO7HYFM5.mjs.map +7 -0
  55. package/dist/lib/node-esm/chunk-QMTTZYLF.mjs +255 -0
  56. package/dist/lib/node-esm/chunk-QMTTZYLF.mjs.map +7 -0
  57. package/dist/lib/node-esm/chunk-YIISE4MX.mjs +280 -0
  58. package/dist/lib/node-esm/chunk-YIISE4MX.mjs.map +7 -0
  59. package/dist/lib/node-esm/edge/index.mjs +24 -0
  60. package/dist/lib/node-esm/index.mjs +317 -0
  61. package/dist/lib/node-esm/index.mjs.map +7 -0
  62. package/dist/lib/node-esm/meta.json +1 -0
  63. package/dist/lib/node-esm/meta.mjs +10 -0
  64. package/dist/lib/node-esm/meta.mjs.map +7 -0
  65. package/dist/lib/node-esm/types/index.mjs +13 -0
  66. package/dist/lib/node-esm/types/index.mjs.map +7 -0
  67. package/dist/types/src/ScriptPlugin.d.ts.map +1 -1
  68. package/dist/types/src/components/AutomationPanel/AutomationPanel.d.ts +17 -0
  69. package/dist/types/src/components/AutomationPanel/AutomationPanel.d.ts.map +1 -0
  70. package/dist/types/src/components/AutomationPanel/index.d.ts +4 -0
  71. package/dist/types/src/components/AutomationPanel/index.d.ts.map +1 -0
  72. package/dist/types/src/components/{DebugPanel.d.ts → DebugPanel/DebugPanel.d.ts} +2 -1
  73. package/dist/types/src/components/DebugPanel/DebugPanel.d.ts.map +1 -0
  74. package/dist/types/src/components/DebugPanel/index.d.ts +2 -0
  75. package/dist/types/src/components/DebugPanel/index.d.ts.map +1 -0
  76. package/dist/types/src/components/{ScriptBlock/FrameContainer → FrameContainer}/FrameContainer.d.ts +1 -1
  77. package/dist/types/src/components/FrameContainer/FrameContainer.d.ts.map +1 -0
  78. package/dist/types/src/components/FrameContainer/frame.d.ts.map +1 -0
  79. package/dist/types/src/components/FrameContainer/index.d.ts.map +1 -0
  80. package/dist/types/src/components/ScriptBlock/ScriptBlock.d.ts +1 -3
  81. package/dist/types/src/components/ScriptBlock/ScriptBlock.d.ts.map +1 -1
  82. package/dist/types/src/components/ScriptBlock/ScriptBlock.stories.d.ts +3 -8
  83. package/dist/types/src/components/ScriptBlock/ScriptBlock.stories.d.ts.map +1 -1
  84. package/dist/types/src/components/ScriptContainer.d.ts +5 -0
  85. package/dist/types/src/components/ScriptContainer.d.ts.map +1 -0
  86. package/dist/types/src/components/ScriptEditor.d.ts +4 -5
  87. package/dist/types/src/components/ScriptEditor.d.ts.map +1 -1
  88. package/dist/types/src/components/ScriptSettings/ScriptSettings.d.ts +6 -0
  89. package/dist/types/src/components/ScriptSettings/ScriptSettings.d.ts.map +1 -0
  90. package/dist/types/src/components/ScriptSettings/index.d.ts +2 -0
  91. package/dist/types/src/components/ScriptSettings/index.d.ts.map +1 -0
  92. package/dist/types/src/components/Toolbar/Toolbar.d.ts +23 -0
  93. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -0
  94. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts +14 -0
  95. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts.map +1 -0
  96. package/dist/types/src/components/Toolbar/index.d.ts +2 -0
  97. package/dist/types/src/components/Toolbar/index.d.ts.map +1 -0
  98. package/dist/types/src/components/{TypescriptEditor.d.ts → TypescriptEditor/TypescriptEditor.d.ts} +1 -2
  99. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.d.ts.map +1 -0
  100. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.stories.d.ts +6 -0
  101. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.stories.d.ts.map +1 -0
  102. package/dist/types/src/components/TypescriptEditor/index.d.ts +2 -0
  103. package/dist/types/src/components/TypescriptEditor/index.d.ts.map +1 -0
  104. package/dist/types/src/components/index.d.ts +3 -3
  105. package/dist/types/src/components/index.d.ts.map +1 -1
  106. package/dist/types/src/edge/functions.d.ts +7 -0
  107. package/dist/types/src/edge/functions.d.ts.map +1 -1
  108. package/dist/types/src/meta.d.ts +4 -9
  109. package/dist/types/src/meta.d.ts.map +1 -1
  110. package/dist/types/src/templates/chat.d.ts +6 -0
  111. package/dist/types/src/templates/chat.d.ts.map +1 -0
  112. package/dist/types/src/templates/chess.d.ts +6 -0
  113. package/dist/types/src/templates/chess.d.ts.map +1 -0
  114. package/dist/types/src/templates/echo.d.ts +6 -0
  115. package/dist/types/src/templates/echo.d.ts.map +1 -0
  116. package/dist/types/src/templates/email.d.ts +6 -0
  117. package/dist/types/src/templates/email.d.ts.map +1 -0
  118. package/dist/types/src/templates/forex.d.ts +6 -0
  119. package/dist/types/src/templates/forex.d.ts.map +1 -0
  120. package/dist/types/src/templates.d.ts +8 -0
  121. package/dist/types/src/templates.d.ts.map +1 -0
  122. package/dist/types/src/translations.d.ts +2 -0
  123. package/dist/types/src/translations.d.ts.map +1 -1
  124. package/dist/types/src/types/script.d.ts +4 -4
  125. package/dist/types/src/types/types.d.ts +4 -3
  126. package/dist/types/src/types/types.d.ts.map +1 -1
  127. package/package.json +62 -55
  128. package/src/ScriptPlugin.tsx +26 -39
  129. package/src/bundler/bundler.test.ts +12 -2
  130. package/src/components/AutomationPanel/AutomationPanel.tsx +101 -0
  131. package/src/components/AutomationPanel/index.ts +9 -0
  132. package/src/components/{DebugPanel.tsx → DebugPanel/DebugPanel.tsx} +83 -78
  133. package/src/components/DebugPanel/index.ts +5 -0
  134. package/src/components/{ScriptBlock/FrameContainer → FrameContainer}/FrameContainer.tsx +1 -1
  135. package/src/components/ScriptBlock/ScriptBlock.stories.tsx +15 -14
  136. package/src/components/ScriptBlock/ScriptBlock.tsx +23 -51
  137. package/src/components/ScriptContainer.tsx +22 -0
  138. package/src/components/ScriptEditor.tsx +58 -55
  139. package/src/components/ScriptSettings/ScriptSettings.tsx +47 -0
  140. package/src/components/ScriptSettings/index.ts +5 -0
  141. package/src/components/Toolbar/Toolbar.stories.tsx +30 -0
  142. package/src/components/Toolbar/Toolbar.tsx +177 -0
  143. package/src/components/{ScriptBlock/Splitter → Toolbar}/index.ts +1 -1
  144. package/src/components/{TypescriptEditor.stories.tsx → TypescriptEditor/TypescriptEditor.stories.tsx} +17 -35
  145. package/src/components/{TypescriptEditor.tsx → TypescriptEditor/TypescriptEditor.tsx} +1 -3
  146. package/src/components/TypescriptEditor/index.ts +5 -0
  147. package/src/components/index.ts +5 -3
  148. package/src/edge/functions.ts +19 -0
  149. package/src/meta.ts +15 -0
  150. package/src/templates/chat.ts +102 -0
  151. package/src/templates/chess.ts +41 -0
  152. package/src/templates/echo.ts +15 -0
  153. package/src/templates/email.ts +38 -0
  154. package/src/templates/forex.ts +21 -0
  155. package/src/templates.ts +54 -0
  156. package/src/translations.ts +2 -0
  157. package/src/types/types.ts +9 -5
  158. package/dist/lib/browser/ScriptEditor-5Y3EROG3.mjs +0 -513
  159. package/dist/lib/browser/ScriptEditor-5Y3EROG3.mjs.map +0 -7
  160. package/dist/lib/browser/TypescriptEditor-GPE72Y6I.mjs +0 -9
  161. package/dist/lib/browser/chunk-DL5XQRQM.mjs.map +0 -7
  162. package/dist/lib/browser/chunk-JBACGDOJ.mjs +0 -21
  163. package/dist/lib/browser/chunk-JBACGDOJ.mjs.map +0 -7
  164. package/dist/lib/browser/chunk-MRGOT5RF.mjs +0 -78
  165. package/dist/lib/browser/chunk-MRGOT5RF.mjs.map +0 -7
  166. package/dist/lib/node/ScriptEditor-YCUQFWQM.cjs +0 -526
  167. package/dist/lib/node/ScriptEditor-YCUQFWQM.cjs.map +0 -7
  168. package/dist/lib/node/TypescriptEditor-M3WWFIP2.cjs.map +0 -7
  169. package/dist/lib/node/chunk-4GTXIELQ.cjs.map +0 -7
  170. package/dist/lib/node/chunk-4VMNBXWU.cjs +0 -54
  171. package/dist/lib/node/chunk-4VMNBXWU.cjs.map +0 -7
  172. package/dist/lib/node/chunk-IMLDKD5Y.cjs +0 -111
  173. package/dist/lib/node/chunk-IMLDKD5Y.cjs.map +0 -7
  174. package/dist/lib/node/chunk-PFH3ROEH.cjs.map +0 -7
  175. package/dist/types/src/components/DebugPanel.d.ts.map +0 -1
  176. package/dist/types/src/components/ScriptBlock/FrameContainer/FrameContainer.d.ts.map +0 -1
  177. package/dist/types/src/components/ScriptBlock/FrameContainer/frame.d.ts.map +0 -1
  178. package/dist/types/src/components/ScriptBlock/FrameContainer/index.d.ts.map +0 -1
  179. package/dist/types/src/components/ScriptBlock/Splitter/Splitter.d.ts +0 -15
  180. package/dist/types/src/components/ScriptBlock/Splitter/Splitter.d.ts.map +0 -1
  181. package/dist/types/src/components/ScriptBlock/Splitter/Splitter.stories.d.ts +0 -13
  182. package/dist/types/src/components/ScriptBlock/Splitter/Splitter.stories.d.ts.map +0 -1
  183. package/dist/types/src/components/ScriptBlock/Splitter/index.d.ts +0 -2
  184. package/dist/types/src/components/ScriptBlock/Splitter/index.d.ts.map +0 -1
  185. package/dist/types/src/components/Toolbar.d.ts +0 -13
  186. package/dist/types/src/components/Toolbar.d.ts.map +0 -1
  187. package/dist/types/src/components/Toolbar.stories.d.ts +0 -14
  188. package/dist/types/src/components/Toolbar.stories.d.ts.map +0 -1
  189. package/dist/types/src/components/TypescriptEditor.d.ts.map +0 -1
  190. package/dist/types/src/components/TypescriptEditor.stories.d.ts +0 -10
  191. package/dist/types/src/components/TypescriptEditor.stories.d.ts.map +0 -1
  192. package/src/components/ScriptBlock/Splitter/Splitter.stories.tsx +0 -37
  193. package/src/components/ScriptBlock/Splitter/Splitter.tsx +0 -52
  194. package/src/components/Toolbar.stories.tsx +0 -17
  195. package/src/components/Toolbar.tsx +0 -147
  196. package/src/meta.tsx +0 -19
  197. /package/dist/lib/{browser/TypescriptEditor-GPE72Y6I.mjs.map → node-esm/edge/index.mjs.map} +0 -0
  198. /package/dist/types/src/components/{ScriptBlock/FrameContainer → FrameContainer}/frame.d.ts +0 -0
  199. /package/dist/types/src/components/{ScriptBlock/FrameContainer → FrameContainer}/index.d.ts +0 -0
  200. /package/src/components/{ScriptBlock/FrameContainer → FrameContainer}/frame.html +0 -0
  201. /package/src/components/{ScriptBlock/FrameContainer → FrameContainer}/frame.tsx +0 -0
  202. /package/src/components/{ScriptBlock/FrameContainer → FrameContainer}/index.ts +0 -0
@@ -2,8 +2,8 @@ import {
2
2
  FunctionType,
3
3
  ScriptAction,
4
4
  ScriptType
5
- } from "../chunk-O4LWBX6A.mjs";
6
- import "../chunk-JBACGDOJ.mjs";
5
+ } from "../chunk-KXVQPS4Y.mjs";
6
+ import "../chunk-SGQHRB4P.mjs";
7
7
  export {
8
8
  FunctionType,
9
9
  ScriptAction,
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var AutomationPanel_UNLRYLMA_exports = {};
30
+ __export(AutomationPanel_UNLRYLMA_exports, {
31
+ AutomationPanel: () => AutomationPanel,
32
+ default: () => AutomationPanel_default
33
+ });
34
+ module.exports = __toCommonJS(AutomationPanel_UNLRYLMA_exports);
35
+ var import_chunk_NWBG5QDN = require("./chunk-NWBG5QDN.cjs");
36
+ var import_chunk_FY5KKL5N = require("./chunk-FY5KKL5N.cjs");
37
+ var import_chunk_25PQE7FL = require("./chunk-25PQE7FL.cjs");
38
+ var import_chunk_EJC55SDD = require("./chunk-EJC55SDD.cjs");
39
+ var import_react = __toESM(require("react"));
40
+ var import_debug = require("@dxos/debug");
41
+ var import_react_client = require("@dxos/react-client");
42
+ var import_echo = require("@dxos/react-client/echo");
43
+ var import_react_ui = require("@dxos/react-ui");
44
+ var AutomationPanel = ({ subject }) => {
45
+ const space = (0, import_echo.getSpace)(subject);
46
+ const functions = (0, import_echo.useQuery)(space ?? void 0, import_echo.Filter.schema(import_chunk_25PQE7FL.FunctionType, (fn) => subject instanceof import_chunk_25PQE7FL.ScriptType ? fn.source === subject : fn.binding != null), {}, [
47
+ subject
48
+ ]);
49
+ const [selectedFunction, setSelectedFunction] = (0, import_react.useState)(null);
50
+ const functionToChatWith = subject instanceof import_chunk_25PQE7FL.ScriptType ? functions[0] : selectedFunction;
51
+ return /* @__PURE__ */ import_react.default.createElement("div", {
52
+ className: "h-full flex flex-col"
53
+ }, !(subject instanceof import_chunk_25PQE7FL.ScriptType) && /* @__PURE__ */ import_react.default.createElement(BindingSelect, {
54
+ selectedFunction,
55
+ setSelectedFunction,
56
+ functions
57
+ }), functionToChatWith && /* @__PURE__ */ import_react.default.createElement(ChatPanel, {
58
+ fn: functionToChatWith,
59
+ subject
60
+ }), subject instanceof import_chunk_25PQE7FL.ScriptType && functions.length === 0 && /* @__PURE__ */ import_react.default.createElement("p", null, "Deploy function to interact with it."));
61
+ };
62
+ var ChatPanel = ({ fn, subject }) => {
63
+ const client = (0, import_react_client.useClient)();
64
+ const space = (0, import_echo.getSpace)(fn);
65
+ const existingFunctionUrl = (0, import_chunk_FY5KKL5N.getUserFunctionUrlInMetadata)((0, import_echo.getMeta)(fn));
66
+ const functionUrl = (0, import_react.useMemo)(() => {
67
+ if (!existingFunctionUrl) {
68
+ return;
69
+ }
70
+ return (0, import_chunk_FY5KKL5N.getInvocationUrl)(existingFunctionUrl, client.config.values.runtime?.services?.edge?.url ?? "", {
71
+ spaceId: space?.id,
72
+ subjectId: subject?.id
73
+ });
74
+ }, [
75
+ existingFunctionUrl,
76
+ space,
77
+ subject
78
+ ]);
79
+ return /* @__PURE__ */ import_react.default.createElement(import_chunk_NWBG5QDN.DebugPanel, {
80
+ functionUrl,
81
+ classNames: "flex-1"
82
+ });
83
+ };
84
+ var BindingSelect = ({ selectedFunction, setSelectedFunction, functions }) => {
85
+ return /* @__PURE__ */ import_react.default.createElement(import_react_ui.Select.Root, {
86
+ value: selectedFunction?.id,
87
+ onValueChange: (id) => setSelectedFunction(functions.find((fn) => fn.id === id) ?? (0, import_debug.failUndefined)())
88
+ }, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Select.TriggerButton, {
89
+ placeholder: "Select value"
90
+ }), /* @__PURE__ */ import_react.default.createElement(import_react_ui.Select.Portal, null, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Select.Content, null, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Select.ScrollUpButton, null), /* @__PURE__ */ import_react.default.createElement(import_react_ui.Select.Viewport, null, functions.map(({ id, binding }) => /* @__PURE__ */ import_react.default.createElement(import_react_ui.Select.Option, {
91
+ key: id,
92
+ value: id
93
+ }, binding))), /* @__PURE__ */ import_react.default.createElement(import_react_ui.Select.ScrollDownButton, null), /* @__PURE__ */ import_react.default.createElement(import_react_ui.Select.Arrow, null))));
94
+ };
95
+ var AutomationPanel_default = AutomationPanel;
96
+ // Annotate the CommonJS export names for ESM import in node:
97
+ 0 && (module.exports = {
98
+ AutomationPanel
99
+ });
100
+ //# sourceMappingURL=AutomationPanel-UNLRYLMA.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/AutomationPanel/AutomationPanel.tsx", "../../../src/components/AutomationPanel/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useMemo, useState } from 'react';\n\nimport type { EchoReactiveObject } from '@dxos/client/echo';\nimport { failUndefined } from '@dxos/debug';\nimport { useClient } from '@dxos/react-client';\nimport { Filter, getMeta, getSpace, useQuery } from '@dxos/react-client/echo';\nimport { Select } from '@dxos/react-ui';\n\nimport { getInvocationUrl, getUserFunctionUrlInMetadata } from '../../edge';\nimport { FunctionType, ScriptType } from '../../types';\nimport { DebugPanel } from '../DebugPanel';\n\nexport interface AutomationPanelProps {\n subject: EchoReactiveObject<any>;\n}\n\nexport const AutomationPanel = ({ subject }: AutomationPanelProps) => {\n const space = getSpace(subject);\n\n // TODO(dmaretskyi): Parametric query.\n const functions = useQuery(\n space ?? undefined,\n Filter.schema(FunctionType, (fn) => (subject instanceof ScriptType ? fn.source === subject : fn.binding != null)),\n {},\n [subject],\n );\n const [selectedFunction, setSelectedFunction] = useState<FunctionType | null>(null);\n const functionToChatWith = subject instanceof ScriptType ? functions[0] : selectedFunction;\n\n return (\n <div className='h-full flex flex-col'>\n {!(subject instanceof ScriptType) && (\n <BindingSelect\n selectedFunction={selectedFunction}\n setSelectedFunction={setSelectedFunction}\n functions={functions}\n />\n )}\n {functionToChatWith && <ChatPanel fn={functionToChatWith} subject={subject} />}\n {subject instanceof ScriptType && functions.length === 0 && <p>Deploy function to interact with it.</p>}\n </div>\n );\n};\n\nexport interface ChatPanelProps {\n fn: FunctionType;\n subject: EchoReactiveObject<any>;\n}\n\nconst ChatPanel = ({ fn, subject }: ChatPanelProps) => {\n const client = useClient();\n const space = getSpace(fn);\n const existingFunctionUrl = getUserFunctionUrlInMetadata(getMeta(fn));\n const functionUrl = useMemo(() => {\n if (!existingFunctionUrl) {\n return;\n }\n\n return getInvocationUrl(existingFunctionUrl, client.config.values.runtime?.services?.edge?.url ?? '', {\n spaceId: space?.id,\n subjectId: subject?.id,\n });\n }, [existingFunctionUrl, space, subject]);\n\n return <DebugPanel functionUrl={functionUrl} classNames='flex-1' />;\n};\n\nexport interface BindingSelectProps {\n selectedFunction: FunctionType | null;\n setSelectedFunction: (fn: FunctionType) => void;\n functions: FunctionType[];\n}\n\nconst BindingSelect = ({ selectedFunction, setSelectedFunction, functions }: BindingSelectProps) => {\n return (\n <Select.Root\n value={selectedFunction?.id}\n onValueChange={(id) => setSelectedFunction(functions.find((fn) => fn.id === id) ?? failUndefined())}\n >\n <Select.TriggerButton placeholder='Select value' />\n <Select.Portal>\n <Select.Content>\n <Select.ScrollUpButton />\n <Select.Viewport>\n {functions.map(({ id, binding }) => (\n <Select.Option key={id} value={id}>\n {binding}\n </Select.Option>\n ))}\n </Select.Viewport>\n <Select.ScrollDownButton />\n <Select.Arrow />\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { AutomationPanel } from './AutomationPanel';\n\nexport * from './AutomationPanel';\n\nexport default AutomationPanel;\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,mBAAyC;AAGzC,mBAA8B;AAC9B,0BAA0B;AAC1B,kBAAoD;AACpD,sBAAuB;AAUhB,IAAMA,kBAAkB,CAAC,EAAEC,QAAO,MAAwB;AAC/D,QAAMC,YAAQC,sBAASF,OAAAA;AAGvB,QAAMG,gBAAYC,sBAChBH,SAASI,QACTC,mBAAOC,OAAOC,oCAAc,CAACC,OAAQT,mBAAmBU,mCAAaD,GAAGE,WAAWX,UAAUS,GAAGG,WAAW,IAAA,GAC3G,CAAC,GACD;IAACZ;GAAQ;AAEX,QAAM,CAACa,kBAAkBC,mBAAAA,QAAuBC,uBAA8B,IAAA;AAC9E,QAAMC,qBAAqBhB,mBAAmBU,mCAAaP,UAAU,CAAA,IAAKU;AAE1E,SACE,6BAAAI,QAAA,cAACC,OAAAA;IAAIC,WAAU;KACZ,EAAEnB,mBAAmBU,qCACpB,6BAAAO,QAAA,cAACG,eAAAA;IACCP;IACAC;IACAX;MAGHa,sBAAsB,6BAAAC,QAAA,cAACI,WAAAA;IAAUZ,IAAIO;IAAoBhB;MACzDA,mBAAmBU,oCAAcP,UAAUmB,WAAW,KAAK,6BAAAL,QAAA,cAACM,KAAAA,MAAE,sCAAA,CAAA;AAGrE;AAOA,IAAMF,YAAY,CAAC,EAAEZ,IAAIT,QAAO,MAAkB;AAChD,QAAMwB,aAASC,+BAAAA;AACf,QAAMxB,YAAQC,sBAASO,EAAAA;AACvB,QAAMiB,0BAAsBC,wDAA6BC,qBAAQnB,EAAAA,CAAAA;AACjE,QAAMoB,kBAAcC,sBAAQ,MAAA;AAC1B,QAAI,CAACJ,qBAAqB;AACxB;IACF;AAEA,eAAOK,wCAAiBL,qBAAqBF,OAAOQ,OAAOC,OAAOC,SAASC,UAAUC,MAAMC,OAAO,IAAI;MACpGC,SAASrC,OAAOsC;MAChBC,WAAWxC,SAASuC;IACtB,CAAA;EACF,GAAG;IAACb;IAAqBzB;IAAOD;GAAQ;AAExC,SAAO,6BAAAiB,QAAA,cAACwB,kCAAAA;IAAWZ;IAA0Ba,YAAW;;AAC1D;AAQA,IAAMtB,gBAAgB,CAAC,EAAEP,kBAAkBC,qBAAqBX,UAAS,MAAsB;AAC7F,SACE,6BAAAc,QAAA,cAAC0B,uBAAOC,MAAI;IACVC,OAAOhC,kBAAkB0B;IACzBO,eAAe,CAACP,OAAOzB,oBAAoBX,UAAU4C,KAAK,CAACtC,OAAOA,GAAG8B,OAAOA,EAAAA,SAAOS,4BAAAA,CAAAA;KAEnF,6BAAA/B,QAAA,cAAC0B,uBAAOM,eAAa;IAACC,aAAY;MAClC,6BAAAjC,QAAA,cAAC0B,uBAAOQ,QAAM,MACZ,6BAAAlC,QAAA,cAAC0B,uBAAOS,SAAO,MACb,6BAAAnC,QAAA,cAAC0B,uBAAOU,gBAAc,IAAA,GACtB,6BAAApC,QAAA,cAAC0B,uBAAOW,UAAQ,MACbnD,UAAUoD,IAAI,CAAC,EAAEhB,IAAI3B,QAAO,MAC3B,6BAAAK,QAAA,cAAC0B,uBAAOa,QAAM;IAACC,KAAKlB;IAAIM,OAAON;KAC5B3B,OAAAA,CAAAA,CAAAA,GAIP,6BAAAK,QAAA,cAAC0B,uBAAOe,kBAAgB,IAAA,GACxB,6BAAAzC,QAAA,cAAC0B,uBAAOgB,OAAK,IAAA,CAAA,CAAA,CAAA;AAKvB;AC5FA,IAAA,0BAAe5D;",
6
+ "names": ["AutomationPanel", "subject", "space", "getSpace", "functions", "useQuery", "undefined", "Filter", "schema", "FunctionType", "fn", "ScriptType", "source", "binding", "selectedFunction", "setSelectedFunction", "useState", "functionToChatWith", "React", "div", "className", "BindingSelect", "ChatPanel", "length", "p", "client", "useClient", "existingFunctionUrl", "getUserFunctionUrlInMetadata", "getMeta", "functionUrl", "useMemo", "getInvocationUrl", "config", "values", "runtime", "services", "edge", "url", "spaceId", "id", "subjectId", "DebugPanel", "classNames", "Select", "Root", "value", "onValueChange", "find", "failUndefined", "TriggerButton", "placeholder", "Portal", "Content", "ScrollUpButton", "Viewport", "map", "Option", "key", "ScrollDownButton", "Arrow"]
7
+ }
@@ -0,0 +1,425 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var ScriptContainer_BIBIIJHP_exports = {};
30
+ __export(ScriptContainer_BIBIIJHP_exports, {
31
+ default: () => ScriptContainer_default
32
+ });
33
+ module.exports = __toCommonJS(ScriptContainer_BIBIIJHP_exports);
34
+ var import_chunk_NKWNQMJH = require("./chunk-NKWNQMJH.cjs");
35
+ var import_chunk_NWBG5QDN = require("./chunk-NWBG5QDN.cjs");
36
+ var import_chunk_FY5KKL5N = require("./chunk-FY5KKL5N.cjs");
37
+ var import_chunk_25PQE7FL = require("./chunk-25PQE7FL.cjs");
38
+ var import_chunk_EJC55SDD = require("./chunk-EJC55SDD.cjs");
39
+ var import_react = __toESM(require("react"));
40
+ var import_echo = require("@dxos/react-client/echo");
41
+ var import_react_ui_attention = require("@dxos/react-ui-attention");
42
+ var import_react_ui_theme = require("@dxos/react-ui-theme");
43
+ var import_prettier = require("prettier");
44
+ var import_estree = __toESM(require("prettier/plugins/estree"));
45
+ var import_typescript = __toESM(require("prettier/plugins/typescript"));
46
+ var import_react2 = __toESM(require("react"));
47
+ var import_log = require("@dxos/log");
48
+ var import_react_client = require("@dxos/react-client");
49
+ var import_echo2 = require("@dxos/react-client/echo");
50
+ var import_halo = require("@dxos/react-client/halo");
51
+ var import_react_ui = require("@dxos/react-ui");
52
+ var import_react_ui_editor = require("@dxos/react-ui-editor");
53
+ var import_react_ui_theme2 = require("@dxos/react-ui-theme");
54
+ var import_react3 = __toESM(require("react"));
55
+ var import_react_ui2 = require("@dxos/react-ui");
56
+ var import_lang_javascript = require("@codemirror/lang-javascript");
57
+ var import_codemirror_ts = require("@valtown/codemirror-ts");
58
+ var import_react4 = __toESM(require("react"));
59
+ var import_react_ui3 = require("@dxos/react-ui");
60
+ var import_react_ui_editor2 = require("@dxos/react-ui-editor");
61
+ var import_util = require("@dxos/util");
62
+ var Toolbar = ({ classNames, deployed, error, functionUrl, view, templates: templates2, onDeploy, onFormat, onViewChange, onTemplateSelect }) => {
63
+ const { t } = (0, import_react_ui2.useTranslation)(import_chunk_EJC55SDD.SCRIPT_PLUGIN);
64
+ const [pending, setPending] = (0, import_react3.useState)(false);
65
+ const handleCopyLink = async () => {
66
+ if (!functionUrl) {
67
+ return;
68
+ }
69
+ await navigator.clipboard.writeText(functionUrl);
70
+ };
71
+ const handleDeploy = async () => {
72
+ if (!pending) {
73
+ setPending(true);
74
+ await onDeploy?.();
75
+ setPending(false);
76
+ }
77
+ };
78
+ return /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.ElevationProvider, {
79
+ elevation: "chrome"
80
+ }, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Toolbar.Root, {
81
+ classNames: [
82
+ "p-1",
83
+ classNames
84
+ ],
85
+ style: {
86
+ contain: "layout"
87
+ }
88
+ }, templates2 && /* @__PURE__ */ import_react3.default.createElement(TemplateSelect, {
89
+ templates: templates2,
90
+ onTemplateSelect
91
+ }), onFormat && /* @__PURE__ */ import_react3.default.createElement(ToolbarIconButton, {
92
+ icon: "ph--magic-wand--regular",
93
+ text: t("format label"),
94
+ onClick: onFormat
95
+ }), /* @__PURE__ */ import_react3.default.createElement("div", {
96
+ role: "separator",
97
+ className: "grow"
98
+ }), error ? /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Root, null, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Trigger, null, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Icon, {
99
+ icon: "ph--warning-circle--regular",
100
+ size: 4
101
+ })), /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Portal, null, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Content, null, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Arrow, null), error))) : null, functionUrl && deployed && /* @__PURE__ */ import_react3.default.createElement(ToolbarIconButton, {
102
+ icon: "ph--link--regular",
103
+ text: t("copy link label"),
104
+ onClick: handleCopyLink
105
+ }), onDeploy && /* @__PURE__ */ import_react3.default.createElement(ToolbarIconButton, {
106
+ icon: pending ? "ph--spinner-gap--regular" : "ph--cloud-arrow-up--regular",
107
+ classNames: [
108
+ pending && "animate-spin"
109
+ ],
110
+ text: pending ? t("pending label") : t("deploy label"),
111
+ onClick: handleDeploy
112
+ }), /* @__PURE__ */ import_react3.default.createElement(ViewSelector, {
113
+ view,
114
+ onViewChange
115
+ })));
116
+ };
117
+ var ToolbarIconButton = ({ icon, text, classNames, disabled, onClick }) => {
118
+ return /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Root, null, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Trigger, {
119
+ asChild: true
120
+ }, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Toolbar.Button, {
121
+ variant: "ghost",
122
+ disabled,
123
+ onClick
124
+ }, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Icon, {
125
+ icon,
126
+ size: 4,
127
+ classNames
128
+ }))), /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Portal, null, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Content, null, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Arrow, null), text)));
129
+ };
130
+ var TemplateSelect = ({ templates: templates2 = [], onTemplateSelect }) => {
131
+ return /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Select.Root, {
132
+ value: "",
133
+ onValueChange: onTemplateSelect
134
+ }, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Select.TriggerButton, null), /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Select.Portal, null, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Select.Content, null, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Select.Viewport, null, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Select.Option, {
135
+ value: ""
136
+ }, "Template"), templates2.map(({ id, name }) => /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Select.Option, {
137
+ key: id,
138
+ value: id
139
+ }, name))))));
140
+ };
141
+ var ViewSelector = ({ view, onViewChange }) => {
142
+ return /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.ToggleGroup, {
143
+ type: "single",
144
+ value: view,
145
+ onValueChange: (value) => onViewChange?.(value)
146
+ }, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.ToggleGroupItem, {
147
+ value: "editor",
148
+ classNames: "bg-transparent text-subdued"
149
+ }, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Icon, {
150
+ icon: "ph--code--regular",
151
+ size: 4
152
+ })), /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.ToggleGroupItem, {
153
+ value: "split",
154
+ classNames: "bg-transparent text-subdued"
155
+ }, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Icon, {
156
+ icon: "ph--square-split-vertical--regular",
157
+ size: 4
158
+ })), /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.ToggleGroupItem, {
159
+ value: "preview",
160
+ classNames: "bg-transparent text-subdued"
161
+ }, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Icon, {
162
+ icon: "ph--eye--regular",
163
+ size: 4
164
+ })));
165
+ };
166
+ var TypescriptEditor = ({ id, env, className, initialValue, extensions, scrollTo, selection }) => {
167
+ const { themeMode } = (0, import_react_ui3.useThemeContext)();
168
+ const { parentRef, focusAttributes } = (0, import_react_ui_editor2.useTextEditor)(() => ({
169
+ id,
170
+ initialValue,
171
+ extensions: [
172
+ extensions,
173
+ (0, import_react_ui_editor2.createBasicExtensions)({
174
+ highlightActiveLine: true,
175
+ indentWithTab: true,
176
+ lineNumbers: true,
177
+ lineWrapping: false,
178
+ scrollPastEnd: true
179
+ }),
180
+ (0, import_react_ui_editor2.createThemeExtensions)({
181
+ themeMode,
182
+ syntaxHighlighting: true,
183
+ slots: {
184
+ content: {
185
+ className: import_react_ui_editor2.editorFullWidth
186
+ }
187
+ }
188
+ }),
189
+ import_react_ui_editor2.editorGutter,
190
+ // TODO(burdon): Factor out.
191
+ [
192
+ import_react_ui_editor2.editorMonospace,
193
+ (0, import_lang_javascript.javascript)({
194
+ typescript: true
195
+ }),
196
+ // https://github.com/val-town/codemirror-ts
197
+ (0, import_react_ui_editor2.autocomplete)({
198
+ override: env ? [
199
+ (0, import_codemirror_ts.tsAutocomplete)()
200
+ ] : []
201
+ }),
202
+ env ? [
203
+ import_codemirror_ts.tsFacet.of({
204
+ env,
205
+ path: `/src/${id}.ts`
206
+ }),
207
+ (0, import_codemirror_ts.tsSync)(),
208
+ (0, import_codemirror_ts.tsLinter)(),
209
+ (0, import_codemirror_ts.tsHover)()
210
+ ] : [],
211
+ import_react_ui_editor2.InputModeExtensions.vscode
212
+ ]
213
+ ].filter(import_util.nonNullable),
214
+ selection,
215
+ scrollTo
216
+ }), [
217
+ id,
218
+ initialValue,
219
+ extensions,
220
+ themeMode,
221
+ selection,
222
+ scrollTo
223
+ ]);
224
+ return /* @__PURE__ */ import_react4.default.createElement("div", {
225
+ ref: parentRef,
226
+ className,
227
+ ...focusAttributes
228
+ });
229
+ };
230
+ var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/experimental/plugin-script/src/components/ScriptEditor.tsx";
231
+ var ScriptEditor = ({ classNames, script, env }) => {
232
+ const { t } = (0, import_react_ui.useTranslation)(import_chunk_EJC55SDD.SCRIPT_PLUGIN);
233
+ const client = (0, import_react_client.useClient)();
234
+ const identity = (0, import_halo.useIdentity)();
235
+ const space = (0, import_echo2.getSpace)(script);
236
+ const [fn] = (0, import_echo2.useQuery)(space, import_echo2.Filter.schema(import_chunk_25PQE7FL.FunctionType, (fn2) => fn2.source === script));
237
+ const extensions = (0, import_react2.useMemo)(() => [
238
+ (0, import_react_ui_editor.listener)({
239
+ onChange: (text) => {
240
+ if (script.source && script.source?.content !== text) {
241
+ script.changed = true;
242
+ }
243
+ }
244
+ }),
245
+ (0, import_react_ui_editor.createDataExtensions)({
246
+ id: script.id,
247
+ text: script.source && (0, import_echo2.createDocAccessor)(script.source, [
248
+ "content"
249
+ ]),
250
+ space,
251
+ identity
252
+ })
253
+ ], [
254
+ script,
255
+ script.source,
256
+ space,
257
+ identity
258
+ ]);
259
+ const [view, setView] = (0, import_react2.useState)("editor");
260
+ const initialValue = (0, import_react2.useMemo)(() => script.source?.content, [
261
+ script.source
262
+ ]);
263
+ const existingFunctionUrl = fn && (0, import_chunk_FY5KKL5N.getUserFunctionUrlInMetadata)((0, import_echo2.getMeta)(fn));
264
+ const [error, setError] = (0, import_react2.useState)();
265
+ const handleBindingChange = (0, import_react2.useCallback)((binding) => {
266
+ fn.binding = binding;
267
+ }, [
268
+ fn
269
+ ]);
270
+ const handleFormat = (0, import_react2.useCallback)(async () => {
271
+ if (!script.source) {
272
+ return;
273
+ }
274
+ try {
275
+ script.source.content = await (0, import_prettier.format)(script.source.content, {
276
+ parser: "typescript",
277
+ plugins: [
278
+ import_estree.default,
279
+ import_typescript.default
280
+ ],
281
+ semi: true,
282
+ singleQuote: true
283
+ });
284
+ } catch (err) {
285
+ import_log.log.catch(err, void 0, {
286
+ F: __dxlog_file,
287
+ L: 96,
288
+ S: void 0,
289
+ C: (f, a) => f(...a)
290
+ });
291
+ }
292
+ }, [
293
+ script.source
294
+ ]);
295
+ const handleTemplateChange = (id) => {
296
+ const template = import_chunk_NKWNQMJH.templates.find((template2) => template2.id === id);
297
+ if (template) {
298
+ script.name = template.name;
299
+ script.source.content = template.source;
300
+ const metaKeys = (0, import_echo2.getMeta)(script).keys;
301
+ const oldPresetIndex = metaKeys.findIndex((key) => key.source === import_chunk_FY5KKL5N.USERFUNCTIONS_PRESET_META_KEY);
302
+ if (oldPresetIndex >= 0) {
303
+ metaKeys.splice(oldPresetIndex, 1);
304
+ }
305
+ if (template.presetId) {
306
+ metaKeys.push({
307
+ source: import_chunk_FY5KKL5N.USERFUNCTIONS_PRESET_META_KEY,
308
+ id: template.presetId
309
+ });
310
+ }
311
+ }
312
+ };
313
+ const handleDeploy = (0, import_react2.useCallback)(async () => {
314
+ if (!script.source || !identity || !space) {
315
+ return;
316
+ }
317
+ setError(void 0);
318
+ try {
319
+ const existingFunctionId = existingFunctionUrl?.split("/").at(-1);
320
+ const ownerDid = existingFunctionUrl?.split("/").at(-2) ?? (0, import_chunk_FY5KKL5N.publicKeyToDid)(identity.identityKey);
321
+ const bundler = new import_chunk_NKWNQMJH.Bundler({
322
+ platform: "browser",
323
+ sandboxedModules: [],
324
+ remoteModules: {}
325
+ });
326
+ const buildResult = await bundler.bundle(script.source.content);
327
+ if (buildResult.error || !buildResult.bundle) {
328
+ throw buildResult.error;
329
+ }
330
+ const { result, functionId, functionVersionNumber, errorMessage } = await (0, import_chunk_FY5KKL5N.uploadWorkerFunction)({
331
+ clientConfig: client.config,
332
+ halo: client.halo,
333
+ ownerDid,
334
+ functionId: existingFunctionId,
335
+ source: buildResult.bundle
336
+ });
337
+ if (result !== "success" || functionId === void 0 || functionVersionNumber === void 0) {
338
+ throw new Error(errorMessage);
339
+ }
340
+ import_log.log.info("function uploaded", {
341
+ functionId,
342
+ functionVersionNumber
343
+ }, {
344
+ F: __dxlog_file,
345
+ L: 144,
346
+ S: void 0,
347
+ C: (f, a) => f(...a)
348
+ });
349
+ if (fn) {
350
+ fn.version = functionVersionNumber;
351
+ }
352
+ const deployedFunction = fn ?? space.db.add((0, import_echo2.create)(import_chunk_25PQE7FL.FunctionType, {
353
+ version: functionVersionNumber,
354
+ source: script
355
+ }));
356
+ const meta = (0, import_echo2.getMeta)(deployedFunction);
357
+ script.changed = false;
358
+ (0, import_chunk_FY5KKL5N.setUserFunctionUrlInMetadata)(meta, `/${ownerDid}/${functionId}`);
359
+ setView("split");
360
+ } catch (err) {
361
+ import_log.log.catch(err, void 0, {
362
+ F: __dxlog_file,
363
+ L: 156,
364
+ S: void 0,
365
+ C: (f, a) => f(...a)
366
+ });
367
+ setError(t("upload failed label"));
368
+ }
369
+ }, [
370
+ fn,
371
+ existingFunctionUrl,
372
+ script,
373
+ script.name,
374
+ script.source
375
+ ]);
376
+ const functionUrl = (0, import_react2.useMemo)(() => {
377
+ if (!existingFunctionUrl) {
378
+ return;
379
+ }
380
+ return (0, import_chunk_FY5KKL5N.getInvocationUrl)(existingFunctionUrl, client.config.values.runtime?.services?.edge?.url ?? "", {
381
+ spaceId: space?.id
382
+ });
383
+ }, [
384
+ existingFunctionUrl,
385
+ space
386
+ ]);
387
+ return /* @__PURE__ */ import_react2.default.createElement("div", {
388
+ role: "none",
389
+ className: (0, import_react_ui_theme2.mx)("flex flex-col w-full overflow-hidden divide-y divide-separator", classNames)
390
+ }, /* @__PURE__ */ import_react2.default.createElement(Toolbar, {
391
+ deployed: Boolean(existingFunctionUrl) && !script.changed,
392
+ functionUrl,
393
+ error,
394
+ view,
395
+ templates: import_chunk_NKWNQMJH.templates,
396
+ onDeploy: handleDeploy,
397
+ onFormat: handleFormat,
398
+ onViewChange: setView,
399
+ onTemplateSelect: handleTemplateChange
400
+ }), view !== "preview" && /* @__PURE__ */ import_react2.default.createElement(TypescriptEditor, {
401
+ id: script.id,
402
+ env,
403
+ initialValue,
404
+ extensions,
405
+ className: "flex is-full bs-full overflow-hidden ch-focus-ring-inset-over-all"
406
+ }), view !== "editor" && /* @__PURE__ */ import_react2.default.createElement(import_chunk_NWBG5QDN.DebugPanel, {
407
+ functionUrl,
408
+ showBindingConfig: true,
409
+ binding: fn?.binding,
410
+ onBindingChange: handleBindingChange
411
+ }));
412
+ };
413
+ var ScriptContainer = ({ script, ...props }) => {
414
+ const attendableAttrs = (0, import_react_ui_attention.useAttendableAttributes)((0, import_echo.fullyQualifiedId)(script));
415
+ return /* @__PURE__ */ import_react.default.createElement("div", {
416
+ role: "none",
417
+ className: (0, import_react_ui_theme.mx)("flex row-span-2 w-full overflow-hidden attention-surface"),
418
+ ...attendableAttrs
419
+ }, /* @__PURE__ */ import_react.default.createElement(ScriptEditor, {
420
+ ...props,
421
+ script
422
+ }));
423
+ };
424
+ var ScriptContainer_default = ScriptContainer;
425
+ //# sourceMappingURL=ScriptContainer-BIBIIJHP.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/ScriptContainer.tsx", "../../../src/components/ScriptEditor.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 { useAttendableAttributes } 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 attendableAttrs = useAttendableAttributes(fullyQualifiedId(script));\n return (\n <div role='none' className={mx('flex row-span-2 w-full overflow-hidden attention-surface')} {...attendableAttrs}>\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 getInvocationUrl,\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 // TODO(dmaretskyi): Parametric query.\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 return getInvocationUrl(existingFunctionUrl, client.config.values.runtime?.services?.edge?.url ?? '', {\n spaceId: space?.id,\n });\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\n functionUrl={functionUrl}\n showBindingConfig\n binding={fn?.binding}\n onBindingChange={handleBindingChange}\n />\n )}\n </div>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useState } from 'react';\n\nimport {\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 <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 );\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": "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",
6
+ "names": ["import_react", "import_echo", "import_react_ui_theme", "import_react_ui", "import_react_ui_editor", "Toolbar", "classNames", "deployed", "error", "functionUrl", "view", "templates", "onDeploy", "onFormat", "onViewChange", "onTemplateSelect", "t", "useTranslation", "SCRIPT_PLUGIN", "pending", "setPending", "useState", "handleCopyLink", "navigator", "clipboard", "writeText", "handleDeploy", "React", "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", "TypescriptEditor", "env", "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", "ref", "ScriptEditor", "script", "client", "useClient", "identity", "useIdentity", "space", "getSpace", "fn", "useQuery", "Filter", "schema", "FunctionType", "source", "useMemo", "listener", "onChange", "changed", "createDataExtensions", "createDocAccessor", "setView", "existingFunctionUrl", "getUserFunctionUrlInMetadata", "getMeta", "setError", "handleBindingChange", "useCallback", "binding", "handleFormat", "format", "parser", "plugins", "prettierPluginEstree", "prettierPluginTypescript", "semi", "singleQuote", "err", "log", "catch", "handleTemplateChange", "template", "find", "metaKeys", "keys", "oldPresetIndex", "findIndex", "USERFUNCTIONS_PRESET_META_KEY", "splice", "presetId", "push", "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", "getInvocationUrl", "values", "runtime", "services", "edge", "url", "spaceId", "mx", "Boolean", "DebugPanel", "showBindingConfig", "onBindingChange", "ScriptContainer", "props", "attendableAttrs", "useAttendableAttributes", "fullyQualifiedId"]
7
+ }