@dxos/plugin-script 0.7.5-main.9d26e3a → 0.7.5-main.e9bb01b

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 (214) hide show
  1. package/dist/lib/browser/{AutomationPanel-RFQAQ7NF.mjs → AutomationPanel-KZVZMZE6.mjs} +3 -3
  2. package/dist/lib/browser/ScriptContainer-AERJBGYK.mjs +685 -0
  3. package/dist/lib/browser/ScriptContainer-AERJBGYK.mjs.map +7 -0
  4. package/dist/lib/browser/chunk-ABNZIPST.mjs +15 -0
  5. package/dist/lib/browser/chunk-ABNZIPST.mjs.map +7 -0
  6. package/dist/lib/browser/chunk-ESPJMGXJ.mjs +21 -0
  7. package/dist/lib/browser/chunk-ESPJMGXJ.mjs.map +7 -0
  8. package/dist/lib/browser/chunk-J7CBIZI2.mjs +224 -0
  9. package/dist/lib/browser/chunk-J7CBIZI2.mjs.map +7 -0
  10. package/dist/lib/browser/chunk-NFPF4OIU.mjs +40 -0
  11. package/dist/lib/browser/chunk-NFPF4OIU.mjs.map +7 -0
  12. package/dist/lib/browser/chunk-REL2R7SB.mjs +52 -0
  13. package/dist/lib/browser/chunk-REL2R7SB.mjs.map +7 -0
  14. package/dist/lib/browser/{chunk-4UTRJLQ3.mjs → chunk-SDHKTS6H.mjs} +2 -51
  15. package/dist/lib/browser/{chunk-4UTRJLQ3.mjs.map → chunk-SDHKTS6H.mjs.map} +4 -4
  16. package/dist/lib/browser/{chunk-K7KY6YMG.mjs → chunk-Y4CVWFVS.mjs} +2 -2
  17. package/dist/lib/browser/compiler-4QD7VFZX.mjs +84 -0
  18. package/dist/lib/browser/compiler-4QD7VFZX.mjs.map +7 -0
  19. package/dist/lib/browser/index.mjs +112 -288
  20. package/dist/lib/browser/index.mjs.map +4 -4
  21. package/dist/lib/browser/intent-resolver-YABC4JRJ.mjs +45 -0
  22. package/dist/lib/browser/intent-resolver-YABC4JRJ.mjs.map +7 -0
  23. package/dist/lib/browser/meta.json +1 -1
  24. package/dist/lib/browser/react-surface-FRQIIYKG.mjs +65 -0
  25. package/dist/lib/browser/react-surface-FRQIIYKG.mjs.map +7 -0
  26. package/dist/lib/browser/settings-S4MGGM4D.mjs +24 -0
  27. package/dist/lib/browser/settings-S4MGGM4D.mjs.map +7 -0
  28. package/dist/lib/browser/types.mjs +6 -4
  29. package/dist/lib/node/{AutomationPanel-5CJEF4MI.cjs → AutomationPanel-6QSV7ZYK.cjs} +8 -8
  30. package/dist/lib/node/ScriptContainer-DOAQ6KOE.cjs +689 -0
  31. package/dist/lib/node/ScriptContainer-DOAQ6KOE.cjs.map +7 -0
  32. package/dist/lib/node/chunk-63C2KSD6.cjs +252 -0
  33. package/dist/lib/node/chunk-63C2KSD6.cjs.map +7 -0
  34. package/dist/lib/node/{chunk-PK3OQP5L.cjs → chunk-6M2VRFBC.cjs} +26 -11
  35. package/dist/lib/node/chunk-6M2VRFBC.cjs.map +7 -0
  36. package/dist/lib/node/{chunk-4INUJLXL.cjs → chunk-CZVVFUVL.cjs} +6 -6
  37. package/dist/lib/node/{chunk-6LYX73ZT.cjs → chunk-HU2JXUXI.cjs} +11 -8
  38. package/dist/lib/node/chunk-HU2JXUXI.cjs.map +7 -0
  39. package/dist/lib/node/{meta.cjs → chunk-RZHY5LAR.cjs} +12 -8
  40. package/dist/lib/node/chunk-RZHY5LAR.cjs.map +7 -0
  41. package/dist/lib/node/{chunk-WPP65EYS.cjs → chunk-T4TXCRN5.cjs} +6 -44
  42. package/dist/lib/node/chunk-T4TXCRN5.cjs.map +7 -0
  43. package/dist/lib/node/chunk-TJ4BTPOS.cjs +64 -0
  44. package/dist/lib/node/chunk-TJ4BTPOS.cjs.map +7 -0
  45. package/dist/lib/node/compiler-Q3EXWKV5.cjs +104 -0
  46. package/dist/lib/node/compiler-Q3EXWKV5.cjs.map +7 -0
  47. package/dist/lib/node/index.cjs +105 -276
  48. package/dist/lib/node/index.cjs.map +4 -4
  49. package/dist/lib/node/intent-resolver-7HI2CDGB.cjs +59 -0
  50. package/dist/lib/node/intent-resolver-7HI2CDGB.cjs.map +7 -0
  51. package/dist/lib/node/meta.json +1 -1
  52. package/dist/lib/node/react-surface-IKONODLG.cjs +84 -0
  53. package/dist/lib/node/react-surface-IKONODLG.cjs.map +7 -0
  54. package/dist/lib/node/settings-Q5XIA4LZ.cjs +38 -0
  55. package/dist/lib/node/settings-Q5XIA4LZ.cjs.map +7 -0
  56. package/dist/lib/node/types.cjs +6 -4
  57. package/dist/lib/node/types.cjs.map +2 -2
  58. package/dist/lib/node-esm/{AutomationPanel-7Y6REBNJ.mjs → AutomationPanel-EZQSGJLS.mjs} +3 -3
  59. package/dist/lib/node-esm/ScriptContainer-HE5QPPFZ.mjs +686 -0
  60. package/dist/lib/node-esm/ScriptContainer-HE5QPPFZ.mjs.map +7 -0
  61. package/dist/lib/node-esm/chunk-3YOO5E2D.mjs +16 -0
  62. package/dist/lib/node-esm/chunk-3YOO5E2D.mjs.map +7 -0
  63. package/dist/lib/node-esm/chunk-5D2AXTAW.mjs +41 -0
  64. package/dist/lib/node-esm/chunk-5D2AXTAW.mjs.map +7 -0
  65. package/dist/lib/node-esm/{chunk-OFYGBUNI.mjs → chunk-77LRZF2W.mjs} +2 -2
  66. package/dist/lib/node-esm/{chunk-SLTZMY34.mjs → chunk-EOBGHKNT.mjs} +7 -4
  67. package/dist/lib/node-esm/chunk-EOBGHKNT.mjs.map +7 -0
  68. package/dist/lib/node-esm/{chunk-4SRPREUK.mjs → chunk-G76M6O46.mjs} +2 -51
  69. package/dist/lib/node-esm/{chunk-4SRPREUK.mjs.map → chunk-G76M6O46.mjs.map} +4 -4
  70. package/dist/lib/node-esm/chunk-JJZYWSD7.mjs +54 -0
  71. package/dist/lib/node-esm/chunk-JJZYWSD7.mjs.map +7 -0
  72. package/dist/lib/node-esm/chunk-UWHMEJYW.mjs +225 -0
  73. package/dist/lib/node-esm/chunk-UWHMEJYW.mjs.map +7 -0
  74. package/dist/lib/node-esm/compiler-KJEIPDZ6.mjs +85 -0
  75. package/dist/lib/node-esm/compiler-KJEIPDZ6.mjs.map +7 -0
  76. package/dist/lib/node-esm/index.mjs +112 -288
  77. package/dist/lib/node-esm/index.mjs.map +4 -4
  78. package/dist/lib/node-esm/intent-resolver-KG7I6JJA.mjs +46 -0
  79. package/dist/lib/node-esm/intent-resolver-KG7I6JJA.mjs.map +7 -0
  80. package/dist/lib/node-esm/meta.json +1 -1
  81. package/dist/lib/node-esm/react-surface-YA7WIRAM.mjs +66 -0
  82. package/dist/lib/node-esm/react-surface-YA7WIRAM.mjs.map +7 -0
  83. package/dist/lib/node-esm/settings-NZXHNIQ3.mjs +25 -0
  84. package/dist/lib/node-esm/settings-NZXHNIQ3.mjs.map +7 -0
  85. package/dist/lib/node-esm/types.mjs +6 -4
  86. package/dist/types/src/ScriptPlugin.d.ts +1 -3
  87. package/dist/types/src/ScriptPlugin.d.ts.map +1 -1
  88. package/dist/types/src/capabilities/capabilities.d.ts +5 -0
  89. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -0
  90. package/dist/types/src/capabilities/compiler.d.ts +4 -0
  91. package/dist/types/src/capabilities/compiler.d.ts.map +1 -0
  92. package/dist/types/src/capabilities/index.d.ts +6 -0
  93. package/dist/types/src/capabilities/index.d.ts.map +1 -0
  94. package/dist/types/src/capabilities/intent-resolver.d.ts +4 -0
  95. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -0
  96. package/dist/types/src/capabilities/react-surface.d.ts +4 -0
  97. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -0
  98. package/dist/types/src/capabilities/settings.d.ts +4 -0
  99. package/dist/types/src/capabilities/settings.d.ts.map +1 -0
  100. package/dist/types/src/components/ScriptContainer.d.ts +10 -2
  101. package/dist/types/src/components/ScriptContainer.d.ts.map +1 -1
  102. package/dist/types/src/components/ScriptSettings/ScriptSettings.d.ts.map +1 -1
  103. package/dist/types/src/components/ScriptSettingsPanel.d.ts.map +1 -1
  104. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts +11 -0
  105. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts.map +1 -0
  106. package/dist/types/src/components/{Toolbar/Toolbar.stories.d.ts → ScriptToolbar/ScriptToolbar.stories.d.ts} +1 -1
  107. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.stories.d.ts.map +1 -0
  108. package/dist/types/src/components/ScriptToolbar/deploy.d.ts +48 -0
  109. package/dist/types/src/components/ScriptToolbar/deploy.d.ts.map +1 -0
  110. package/dist/types/src/components/ScriptToolbar/format.d.ts +25 -0
  111. package/dist/types/src/components/ScriptToolbar/format.d.ts.map +1 -0
  112. package/dist/types/src/components/ScriptToolbar/index.d.ts +2 -0
  113. package/dist/types/src/components/ScriptToolbar/index.d.ts.map +1 -0
  114. package/dist/types/src/components/ScriptToolbar/templateSelect.d.ts +31 -0
  115. package/dist/types/src/components/ScriptToolbar/templateSelect.d.ts.map +1 -0
  116. package/dist/types/src/components/ScriptToolbar/useToolbarAction.d.ts +14 -0
  117. package/dist/types/src/components/ScriptToolbar/useToolbarAction.d.ts.map +1 -0
  118. package/dist/types/src/components/ScriptToolbar/useToolbarState.d.ts +10 -0
  119. package/dist/types/src/components/ScriptToolbar/useToolbarState.d.ts.map +1 -0
  120. package/dist/types/src/components/ScriptToolbar/view.d.ts +33 -0
  121. package/dist/types/src/components/ScriptToolbar/view.d.ts.map +1 -0
  122. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.d.ts +4 -2
  123. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.d.ts.map +1 -1
  124. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.stories.d.ts.map +1 -1
  125. package/dist/types/src/components/index.d.ts +1 -1
  126. package/dist/types/src/components/index.d.ts.map +1 -1
  127. package/dist/types/src/index.d.ts +2 -4
  128. package/dist/types/src/index.d.ts.map +1 -1
  129. package/dist/types/src/meta.d.ts +2 -2
  130. package/dist/types/src/meta.d.ts.map +1 -1
  131. package/dist/types/src/templates/email.d.ts +2 -1
  132. package/dist/types/src/templates/email.d.ts.map +1 -1
  133. package/dist/types/src/{templates.d.ts → templates/index.d.ts} +1 -1
  134. package/dist/types/src/templates/index.d.ts.map +1 -0
  135. package/dist/types/src/translations.d.ts +91 -0
  136. package/dist/types/src/translations.d.ts.map +1 -1
  137. package/dist/types/src/types.d.ts +14 -6
  138. package/dist/types/src/types.d.ts.map +1 -1
  139. package/dist/types/tsconfig.tsbuildinfo +1 -1
  140. package/package.json +45 -46
  141. package/src/ScriptPlugin.tsx +55 -91
  142. package/src/bundler/bundler.test.ts +4 -3
  143. package/src/capabilities/capabilities.ts +12 -0
  144. package/src/capabilities/compiler.ts +33 -0
  145. package/src/capabilities/index.ts +12 -0
  146. package/src/capabilities/intent-resolver.ts +46 -0
  147. package/src/capabilities/react-surface.tsx +53 -0
  148. package/src/capabilities/settings.ts +14 -0
  149. package/src/components/ScriptContainer.tsx +64 -9
  150. package/src/components/ScriptSettings/ScriptSettings.tsx +28 -4
  151. package/src/components/ScriptSettingsPanel.tsx +124 -50
  152. package/src/components/{Toolbar/Toolbar.stories.tsx → ScriptToolbar/ScriptToolbar.stories.tsx} +2 -2
  153. package/src/components/ScriptToolbar/ScriptToolbar.tsx +51 -0
  154. package/src/components/ScriptToolbar/deploy.ts +157 -0
  155. package/src/components/ScriptToolbar/format.ts +47 -0
  156. package/src/components/{Toolbar → ScriptToolbar}/index.ts +1 -1
  157. package/src/components/ScriptToolbar/templateSelect.ts +64 -0
  158. package/src/components/ScriptToolbar/useToolbarAction.ts +54 -0
  159. package/src/components/ScriptToolbar/useToolbarState.ts +16 -0
  160. package/src/components/ScriptToolbar/view.ts +52 -0
  161. package/src/components/TypescriptEditor/TypescriptEditor.stories.tsx +2 -0
  162. package/src/components/TypescriptEditor/TypescriptEditor.tsx +73 -8
  163. package/src/index.ts +2 -6
  164. package/src/meta.ts +3 -2
  165. package/src/templates/email.ts +26 -23
  166. package/src/{templates.ts → templates/index.ts} +5 -5
  167. package/src/translations.ts +21 -0
  168. package/src/types.ts +19 -18
  169. package/dist/lib/browser/ScriptContainer-GDVBWFI7.mjs +0 -415
  170. package/dist/lib/browser/ScriptContainer-GDVBWFI7.mjs.map +0 -7
  171. package/dist/lib/browser/chunk-C7VBULMK.mjs +0 -18
  172. package/dist/lib/browser/chunk-C7VBULMK.mjs.map +0 -7
  173. package/dist/lib/browser/chunk-RQA3EB5K.mjs +0 -26
  174. package/dist/lib/browser/chunk-RQA3EB5K.mjs.map +0 -7
  175. package/dist/lib/browser/meta.mjs +0 -9
  176. package/dist/lib/browser/meta.mjs.map +0 -7
  177. package/dist/lib/node/ScriptContainer-YWXXNLG6.cjs +0 -426
  178. package/dist/lib/node/ScriptContainer-YWXXNLG6.cjs.map +0 -7
  179. package/dist/lib/node/chunk-6LYX73ZT.cjs.map +0 -7
  180. package/dist/lib/node/chunk-PK3OQP5L.cjs.map +0 -7
  181. package/dist/lib/node/chunk-WPP65EYS.cjs.map +0 -7
  182. package/dist/lib/node/meta.cjs.map +0 -7
  183. package/dist/lib/node-esm/ScriptContainer-BG2PHKEH.mjs +0 -416
  184. package/dist/lib/node-esm/ScriptContainer-BG2PHKEH.mjs.map +0 -7
  185. package/dist/lib/node-esm/chunk-H6BBLQ5Q.mjs +0 -27
  186. package/dist/lib/node-esm/chunk-H6BBLQ5Q.mjs.map +0 -7
  187. package/dist/lib/node-esm/chunk-SLTZMY34.mjs.map +0 -7
  188. package/dist/lib/node-esm/meta.mjs +0 -10
  189. package/dist/lib/node-esm/meta.mjs.map +0 -7
  190. package/dist/types/src/components/ScriptBlock/ScriptBlock.d.ts +0 -12
  191. package/dist/types/src/components/ScriptBlock/ScriptBlock.d.ts.map +0 -1
  192. package/dist/types/src/components/ScriptBlock/ScriptBlock.stories.d.ts +0 -6
  193. package/dist/types/src/components/ScriptBlock/ScriptBlock.stories.d.ts.map +0 -1
  194. package/dist/types/src/components/ScriptBlock/index.d.ts +0 -2
  195. package/dist/types/src/components/ScriptBlock/index.d.ts.map +0 -1
  196. package/dist/types/src/components/ScriptEditor.d.ts +0 -9
  197. package/dist/types/src/components/ScriptEditor.d.ts.map +0 -1
  198. package/dist/types/src/components/Toolbar/Toolbar.d.ts +0 -23
  199. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +0 -1
  200. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts.map +0 -1
  201. package/dist/types/src/components/Toolbar/index.d.ts +0 -2
  202. package/dist/types/src/components/Toolbar/index.d.ts.map +0 -1
  203. package/dist/types/src/templates.d.ts.map +0 -1
  204. package/src/components/ScriptBlock/ScriptBlock.stories.tsx +0 -55
  205. package/src/components/ScriptBlock/ScriptBlock.tsx +0 -102
  206. package/src/components/ScriptBlock/index.ts +0 -5
  207. package/src/components/ScriptEditor.tsx +0 -193
  208. package/src/components/Toolbar/Toolbar.tsx +0 -177
  209. /package/dist/lib/browser/{AutomationPanel-RFQAQ7NF.mjs.map → AutomationPanel-KZVZMZE6.mjs.map} +0 -0
  210. /package/dist/lib/browser/{chunk-K7KY6YMG.mjs.map → chunk-Y4CVWFVS.mjs.map} +0 -0
  211. /package/dist/lib/node/{AutomationPanel-5CJEF4MI.cjs.map → AutomationPanel-6QSV7ZYK.cjs.map} +0 -0
  212. /package/dist/lib/node/{chunk-4INUJLXL.cjs.map → chunk-CZVVFUVL.cjs.map} +0 -0
  213. /package/dist/lib/node-esm/{AutomationPanel-7Y6REBNJ.mjs.map → AutomationPanel-EZQSGJLS.mjs.map} +0 -0
  214. /package/dist/lib/node-esm/{chunk-OFYGBUNI.mjs.map → chunk-77LRZF2W.mjs.map} +0 -0
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  DebugPanel
3
- } from "./chunk-K7KY6YMG.mjs";
3
+ } from "./chunk-Y4CVWFVS.mjs";
4
4
  import {
5
5
  SCRIPT_PLUGIN
6
- } from "./chunk-C7VBULMK.mjs";
6
+ } from "./chunk-ESPJMGXJ.mjs";
7
7
 
8
8
  // packages/plugins/experimental/plugin-script/src/components/AutomationPanel/AutomationPanel.tsx
9
9
  import React, { useMemo, useState } from "react";
@@ -75,4 +75,4 @@ export {
75
75
  AutomationPanel,
76
76
  AutomationPanel_default as default
77
77
  };
78
- //# sourceMappingURL=AutomationPanel-RFQAQ7NF.mjs.map
78
+ //# sourceMappingURL=AutomationPanel-KZVZMZE6.mjs.map
@@ -0,0 +1,685 @@
1
+ import {
2
+ Bundler
3
+ } from "./chunk-SDHKTS6H.mjs";
4
+ import {
5
+ templates
6
+ } from "./chunk-REL2R7SB.mjs";
7
+ import {
8
+ DebugPanel
9
+ } from "./chunk-Y4CVWFVS.mjs";
10
+ import {
11
+ SCRIPT_PLUGIN
12
+ } from "./chunk-ESPJMGXJ.mjs";
13
+
14
+ // packages/plugins/experimental/plugin-script/src/components/ScriptContainer.tsx
15
+ import React3, { useMemo as useMemo3 } from "react";
16
+ import { createDocAccessor, getSpace as getSpace2 } from "@dxos/react-client/echo";
17
+ import { useIdentity } from "@dxos/react-client/halo";
18
+ import { createDataExtensions, listener, stackItemContentEditorClassNames } from "@dxos/react-ui-editor";
19
+ import { StackItem } from "@dxos/react-ui-stack";
20
+ import { mx } from "@dxos/react-ui-theme";
21
+
22
+ // packages/plugins/experimental/plugin-script/src/components/ScriptToolbar/ScriptToolbar.tsx
23
+ import React, { useCallback as useCallback5 } from "react";
24
+ import { fullyQualifiedId } from "@dxos/react-client/echo";
25
+ import { ElevationProvider } from "@dxos/react-ui";
26
+ import { stackItemContentToolbarClassNames } from "@dxos/react-ui-editor";
27
+ import { createGapSeparator, MenuProvider, ToolbarMenu, useMenuActions } from "@dxos/react-ui-menu";
28
+
29
+ // packages/plugins/experimental/plugin-script/src/components/ScriptToolbar/deploy.ts
30
+ import { useCallback, useEffect, useMemo } from "react";
31
+ import { FunctionType, getInvocationUrl, getUserFunctionUrlInMetadata, incrementSemverPatch, setUserFunctionUrlInMetadata, uploadWorkerFunction } from "@dxos/functions";
32
+ import { log } from "@dxos/log";
33
+ import { useClient } from "@dxos/react-client";
34
+ import { Filter, create, getMeta, getSpace, makeRef, useQuery } from "@dxos/react-client/echo";
35
+ import { useTranslation } from "@dxos/react-ui";
36
+ import { createMenuAction } from "@dxos/react-ui-menu";
37
+ var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/experimental/plugin-script/src/components/ScriptToolbar/deploy.ts";
38
+ var createDeploy = (state) => {
39
+ const errorItem = createMenuAction("error", {
40
+ label: state.error ?? [
41
+ "no error label",
42
+ {
43
+ ns: SCRIPT_PLUGIN
44
+ }
45
+ ],
46
+ icon: "ph--warning-circle--regular",
47
+ hidden: !state.error
48
+ });
49
+ const deployAction = createMenuAction("deploy", {
50
+ type: "deploy",
51
+ label: [
52
+ state.deploying ? "pending label" : "deploy label",
53
+ {
54
+ ns: SCRIPT_PLUGIN
55
+ }
56
+ ],
57
+ icon: state.deploying ? "ph--spinner-gap--regular" : "ph--cloud-arrow-up--regular",
58
+ disabled: state.deploying,
59
+ classNames: state.deploying ? "[&_svg]:animate-spin" : ""
60
+ });
61
+ const copyAction = createMenuAction("copy", {
62
+ type: "copy",
63
+ label: [
64
+ "copy link label",
65
+ {
66
+ ns: SCRIPT_PLUGIN
67
+ }
68
+ ],
69
+ icon: "ph--link--regular",
70
+ disabled: !state.functionUrl
71
+ });
72
+ return {
73
+ nodes: [
74
+ errorItem,
75
+ deployAction,
76
+ copyAction
77
+ ],
78
+ edges: [
79
+ {
80
+ source: "root",
81
+ target: "error"
82
+ },
83
+ {
84
+ source: "root",
85
+ target: "deploy"
86
+ },
87
+ {
88
+ source: "root",
89
+ target: "copy"
90
+ }
91
+ ]
92
+ };
93
+ };
94
+ var useDeployDeps = ({ state, script }) => {
95
+ const space = getSpace(script);
96
+ const [fn] = useQuery(space, Filter.schema(FunctionType, {
97
+ source: script
98
+ }));
99
+ const client = useClient();
100
+ const existingFunctionUrl = useMemo(() => fn && getUserFunctionUrlInMetadata(getMeta(fn)), [
101
+ fn
102
+ ]);
103
+ return {
104
+ space,
105
+ fn,
106
+ client,
107
+ existingFunctionUrl
108
+ };
109
+ };
110
+ var useDeployState = ({ state, script }) => {
111
+ const { space, client, existingFunctionUrl } = useDeployDeps({
112
+ state,
113
+ script
114
+ });
115
+ useEffect(() => {
116
+ if (!existingFunctionUrl) {
117
+ return;
118
+ }
119
+ state.functionUrl = getInvocationUrl(existingFunctionUrl, client.config.values.runtime?.services?.edge?.url ?? "", {
120
+ spaceId: space?.id
121
+ });
122
+ }, [
123
+ existingFunctionUrl,
124
+ space
125
+ ]);
126
+ useEffect(() => {
127
+ state.deployed = Boolean(existingFunctionUrl) && !script.changed;
128
+ }, [
129
+ script.changed,
130
+ existingFunctionUrl
131
+ ]);
132
+ };
133
+ var useDeployHandler = ({ state, script }) => {
134
+ const { space, fn, client, existingFunctionUrl } = useDeployDeps({
135
+ state,
136
+ script
137
+ });
138
+ const { t } = useTranslation(SCRIPT_PLUGIN);
139
+ return useCallback(async () => {
140
+ if (!script.source || !space) {
141
+ return;
142
+ }
143
+ state.error = void 0;
144
+ state.deploying = true;
145
+ try {
146
+ const existingFunctionId = existingFunctionUrl?.split("/").at(-1);
147
+ const bundler = new Bundler({
148
+ platform: "browser",
149
+ sandboxedModules: [],
150
+ remoteModules: {}
151
+ });
152
+ const buildResult = await bundler.bundle(script.source.target.content);
153
+ if (buildResult.error || !buildResult.bundle) {
154
+ throw buildResult.error;
155
+ }
156
+ const { functionId, version, meta } = await uploadWorkerFunction({
157
+ client,
158
+ spaceId: space.id,
159
+ version: fn ? incrementSemverPatch(fn.version) : "0.0.1",
160
+ functionId: existingFunctionId,
161
+ source: buildResult.bundle
162
+ });
163
+ if (functionId === void 0 || version === void 0) {
164
+ throw new Error(`Upload didn't return expected data: functionId=${functionId}, version=${version}`);
165
+ }
166
+ log.info("function uploaded", {
167
+ functionId,
168
+ version
169
+ }, {
170
+ F: __dxlog_file,
171
+ L: 124,
172
+ S: void 0,
173
+ C: (f, a) => f(...a)
174
+ });
175
+ if (fn) {
176
+ fn.version = version;
177
+ }
178
+ const deployedFunction = fn ?? space.db.add(create(FunctionType, {
179
+ name: functionId,
180
+ version,
181
+ source: makeRef(script)
182
+ }));
183
+ script.changed = false;
184
+ if (meta.inputSchema) {
185
+ deployedFunction.inputSchema = meta.inputSchema;
186
+ } else {
187
+ log.verbose("no input schema in function metadata", {
188
+ functionId
189
+ }, {
190
+ F: __dxlog_file,
191
+ L: 137,
192
+ S: void 0,
193
+ C: (f, a) => f(...a)
194
+ });
195
+ }
196
+ setUserFunctionUrlInMetadata(getMeta(deployedFunction), `/${space.id}/${functionId}`);
197
+ state.view = "split";
198
+ } catch (err) {
199
+ log.catch(err, void 0, {
200
+ F: __dxlog_file,
201
+ L: 144,
202
+ S: void 0,
203
+ C: (f, a) => f(...a)
204
+ });
205
+ state.error = t("upload failed label");
206
+ }
207
+ state.deploying = false;
208
+ }, [
209
+ fn,
210
+ client,
211
+ t,
212
+ existingFunctionUrl,
213
+ script,
214
+ script.name,
215
+ script.source,
216
+ space?.id ?? null
217
+ ]);
218
+ };
219
+ var useCopyHandler = ({ state }) => useCallback(async () => {
220
+ if (!state.functionUrl) {
221
+ return;
222
+ }
223
+ await navigator.clipboard.writeText(state.functionUrl);
224
+ }, [
225
+ state.functionUrl
226
+ ]);
227
+
228
+ // packages/plugins/experimental/plugin-script/src/components/ScriptToolbar/format.ts
229
+ import { format } from "prettier";
230
+ import prettierPluginEstree from "prettier/plugins/estree";
231
+ import prettierPluginTypescript from "prettier/plugins/typescript";
232
+ import { useCallback as useCallback2 } from "react";
233
+ import { log as log2 } from "@dxos/log";
234
+ import { createMenuAction as createMenuAction2 } from "@dxos/react-ui-menu";
235
+ var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/plugins/experimental/plugin-script/src/components/ScriptToolbar/format.ts";
236
+ var createFormat = () => {
237
+ const formatAction = createMenuAction2("format", {
238
+ label: [
239
+ "format label",
240
+ {
241
+ ns: SCRIPT_PLUGIN
242
+ }
243
+ ],
244
+ icon: "ph--magic-wand--regular"
245
+ });
246
+ return {
247
+ nodes: [
248
+ formatAction
249
+ ],
250
+ edges: [
251
+ {
252
+ source: "root",
253
+ target: "format"
254
+ }
255
+ ]
256
+ };
257
+ };
258
+ var useFormatHandler = ({ script }) => useCallback2(async () => {
259
+ if (!script.source) {
260
+ return;
261
+ }
262
+ try {
263
+ script.source.target.content = await format(script.source.target.content, {
264
+ parser: "typescript",
265
+ plugins: [
266
+ prettierPluginEstree,
267
+ prettierPluginTypescript
268
+ ],
269
+ semi: true,
270
+ singleQuote: true
271
+ });
272
+ } catch (err) {
273
+ log2.catch(err, void 0, {
274
+ F: __dxlog_file2,
275
+ L: 45,
276
+ S: void 0,
277
+ C: (f, a) => f(...a)
278
+ });
279
+ }
280
+ }, [
281
+ script.source
282
+ ]);
283
+
284
+ // packages/plugins/experimental/plugin-script/src/components/ScriptToolbar/templateSelect.ts
285
+ import { useCallback as useCallback3 } from "react";
286
+ import { FUNCTIONS_PRESET_META_KEY } from "@dxos/functions";
287
+ import { getMeta as getMeta2 } from "@dxos/live-object";
288
+ import { createMenuItemGroup, createMenuAction as createMenuAction3 } from "@dxos/react-ui-menu";
289
+ var createTemplateSelectGroup = () => {
290
+ return createMenuItemGroup("template-select", {
291
+ label: [
292
+ "template select group label",
293
+ {
294
+ ns: SCRIPT_PLUGIN
295
+ }
296
+ ],
297
+ variant: "dropdownMenu"
298
+ });
299
+ };
300
+ var createTemplateSelectActions = () => {
301
+ return templates.map((template) => {
302
+ return createMenuAction3(`template--${template.id}`, {
303
+ label: template.name,
304
+ value: template.id,
305
+ type: "template"
306
+ });
307
+ });
308
+ };
309
+ var createTemplateSelect = () => {
310
+ const templateSelectGroup = createTemplateSelectGroup();
311
+ const templateSelectActions = createTemplateSelectActions();
312
+ return {
313
+ nodes: [
314
+ templateSelectGroup,
315
+ ...templateSelectActions
316
+ ],
317
+ edges: [
318
+ {
319
+ source: "root",
320
+ target: "template-select"
321
+ },
322
+ ...templateSelectActions.map((action) => ({
323
+ source: "template-select",
324
+ target: action.id
325
+ }))
326
+ ]
327
+ };
328
+ };
329
+ var useTemplateSelectHandler = ({ script }) => {
330
+ return useCallback3((templateId) => {
331
+ const template = templates.find((template2) => template2.id === templateId);
332
+ if (template) {
333
+ script.name = template.name;
334
+ script.source.target.content = template.source;
335
+ const metaKeys = getMeta2(script).keys;
336
+ const oldPresetIndex = metaKeys.findIndex((key) => key.source === FUNCTIONS_PRESET_META_KEY);
337
+ if (oldPresetIndex >= 0) {
338
+ metaKeys.splice(oldPresetIndex, 1);
339
+ }
340
+ if (template.presetId) {
341
+ metaKeys.push({
342
+ source: FUNCTIONS_PRESET_META_KEY,
343
+ id: template.presetId
344
+ });
345
+ }
346
+ }
347
+ }, [
348
+ script
349
+ ]);
350
+ };
351
+
352
+ // packages/plugins/experimental/plugin-script/src/components/ScriptToolbar/useToolbarAction.ts
353
+ import { useCallback as useCallback4 } from "react";
354
+ import { log as log3 } from "@dxos/log";
355
+ var __dxlog_file3 = "/home/runner/work/dxos/dxos/packages/plugins/experimental/plugin-script/src/components/ScriptToolbar/useToolbarAction.ts";
356
+ var useToolbarAction = (props) => {
357
+ const handleTemplateSelect = useTemplateSelectHandler(props);
358
+ const handleFormat = useFormatHandler(props);
359
+ const handleDeploy = useDeployHandler(props);
360
+ const handleCopy = useCopyHandler(props);
361
+ return useCallback4((action) => {
362
+ switch (action.properties.type) {
363
+ case "template":
364
+ handleTemplateSelect(action.properties.value);
365
+ break;
366
+ case "view":
367
+ props.state.view = action.properties.value;
368
+ break;
369
+ case "format":
370
+ void handleFormat();
371
+ break;
372
+ case "deploy":
373
+ void handleDeploy();
374
+ break;
375
+ case "copy":
376
+ void handleCopy();
377
+ break;
378
+ default:
379
+ log3.error("Unknown action type", action, {
380
+ F: __dxlog_file3,
381
+ L: 49,
382
+ S: void 0,
383
+ C: (f, a) => f(...a)
384
+ });
385
+ }
386
+ }, [
387
+ handleTemplateSelect,
388
+ handleFormat,
389
+ handleDeploy,
390
+ handleCopy
391
+ ]);
392
+ };
393
+
394
+ // packages/plugins/experimental/plugin-script/src/components/ScriptToolbar/view.ts
395
+ import { createMenuAction as createMenuAction4, createMenuItemGroup as createMenuItemGroup2 } from "@dxos/react-ui-menu";
396
+ var views = {
397
+ editor: "ph--code--regular",
398
+ split: "ph--square-split-vertical--regular",
399
+ debug: "ph--bug--regular"
400
+ };
401
+ var createViewGroupItem = (state) => {
402
+ return createMenuItemGroup2("view", {
403
+ label: [
404
+ "view group label",
405
+ {
406
+ ns: SCRIPT_PLUGIN
407
+ }
408
+ ],
409
+ variant: "dropdownMenu",
410
+ applyActive: true,
411
+ value: state.view
412
+ });
413
+ };
414
+ var createViewActions = (state) => {
415
+ return Object.entries(views).map(([viewType, icon]) => {
416
+ return createMenuAction4(`view--${viewType}`, {
417
+ type: "view",
418
+ value: viewType,
419
+ label: [
420
+ `view ${viewType} label`,
421
+ {
422
+ ns: SCRIPT_PLUGIN
423
+ }
424
+ ],
425
+ icon,
426
+ checked: state.view === viewType
427
+ });
428
+ });
429
+ };
430
+ var createView = (state) => {
431
+ const viewGroupItem = createViewGroupItem(state);
432
+ const viewActions = createViewActions(state);
433
+ return {
434
+ nodes: [
435
+ viewGroupItem,
436
+ ...viewActions
437
+ ],
438
+ edges: [
439
+ {
440
+ source: "root",
441
+ target: "view"
442
+ },
443
+ ...viewActions.map((action) => ({
444
+ source: "view",
445
+ target: action.id
446
+ }))
447
+ ]
448
+ };
449
+ };
450
+
451
+ // packages/plugins/experimental/plugin-script/src/components/ScriptToolbar/ScriptToolbar.tsx
452
+ var createToolbar = (state) => {
453
+ const templateSelect = createTemplateSelect();
454
+ const format2 = createFormat();
455
+ const gap = createGapSeparator();
456
+ const deploy = createDeploy(state);
457
+ const view = createView(state);
458
+ return {
459
+ nodes: [
460
+ ...templateSelect.nodes,
461
+ ...format2.nodes,
462
+ ...gap.nodes,
463
+ ...deploy.nodes,
464
+ ...view.nodes
465
+ ],
466
+ edges: [
467
+ ...templateSelect.edges,
468
+ ...format2.edges,
469
+ ...gap.edges,
470
+ ...deploy.edges,
471
+ ...view.edges
472
+ ]
473
+ };
474
+ };
475
+ var ScriptToolbar = ({ script, role, state, classNames }) => {
476
+ const handleAction = useToolbarAction({
477
+ state,
478
+ script
479
+ });
480
+ const toolbarCreator = useCallback5(() => createToolbar(state), [
481
+ state
482
+ ]);
483
+ const menu = useMenuActions(toolbarCreator);
484
+ return /* @__PURE__ */ React.createElement("div", {
485
+ role: "none",
486
+ className: stackItemContentToolbarClassNames(role)
487
+ }, /* @__PURE__ */ React.createElement(ElevationProvider, {
488
+ elevation: role === "section" ? "positioned" : "base"
489
+ }, /* @__PURE__ */ React.createElement(MenuProvider, {
490
+ ...menu,
491
+ onAction: handleAction,
492
+ attendableId: fullyQualifiedId(script)
493
+ }, /* @__PURE__ */ React.createElement(ToolbarMenu, {
494
+ classNames
495
+ }))));
496
+ };
497
+
498
+ // packages/plugins/experimental/plugin-script/src/components/ScriptToolbar/useToolbarState.ts
499
+ import { useMemo as useMemo2 } from "react";
500
+ import { create as create2 } from "@dxos/live-object";
501
+ var useToolbarState = (initialState = {}) => {
502
+ return useMemo2(() => create2(initialState), []);
503
+ };
504
+
505
+ // packages/plugins/experimental/plugin-script/src/components/TypescriptEditor/TypescriptEditor.tsx
506
+ import { javascript } from "@codemirror/lang-javascript";
507
+ import { defaultHighlightStyle } from "@codemirror/language";
508
+ import { Prec } from "@codemirror/state";
509
+ import { oneDarkHighlightStyle } from "@codemirror/theme-one-dark";
510
+ import { keymap } from "@codemirror/view";
511
+ import { tags } from "@lezer/highlight";
512
+ import { continueKeymap } from "@valtown/codemirror-continue";
513
+ import { tsSync, tsFacet, tsLinter, tsAutocomplete, tsHover } from "@valtown/codemirror-ts";
514
+ import React2 from "react";
515
+ import { useThemeContext } from "@dxos/react-ui";
516
+ import { autocomplete, createBasicExtensions, createThemeExtensions, editorFullWidth, editorMonospace, EditorView, folding, InputModeExtensions, useTextEditor } from "@dxos/react-ui-editor";
517
+ import { nonNullable } from "@dxos/util";
518
+ var TypescriptEditor = ({ id, env, className, initialValue, extensions, scrollTo, selection, toolbar, inputMode = "vscode" }) => {
519
+ const { themeMode } = useThemeContext();
520
+ const { parentRef, focusAttributes } = useTextEditor(() => ({
521
+ id,
522
+ initialValue,
523
+ extensions: [
524
+ extensions,
525
+ createBasicExtensions({
526
+ highlightActiveLine: true,
527
+ indentWithTab: true,
528
+ lineNumbers: true,
529
+ lineWrapping: false,
530
+ scrollPastEnd: true
531
+ }),
532
+ createThemeExtensions({
533
+ themeMode,
534
+ syntaxHighlighting: true,
535
+ slots: {
536
+ content: {
537
+ className: editorFullWidth
538
+ }
539
+ }
540
+ }),
541
+ // NOTE: Not using default editor gutter because folding for code works best right beside text.
542
+ EditorView.theme({
543
+ ".cm-gutters": {
544
+ // Match margin from content.
545
+ marginTop: "16px"
546
+ }
547
+ }),
548
+ InputModeExtensions[inputMode],
549
+ folding(),
550
+ // Continues block comments when you hit Enter.
551
+ Prec.high(keymap.of(continueKeymap)),
552
+ // TODO(burdon): Factor out.
553
+ [
554
+ editorMonospace,
555
+ javascript({
556
+ typescript: true
557
+ }),
558
+ // https://github.com/val-town/codemirror-ts
559
+ autocomplete({
560
+ override: env ? [
561
+ tsAutocomplete()
562
+ ] : []
563
+ }),
564
+ env ? [
565
+ tsFacet.of({
566
+ env,
567
+ path: `/src/${id}.ts`
568
+ }),
569
+ tsSync(),
570
+ tsLinter(),
571
+ tsHover({
572
+ renderTooltip: createTooltipRenderer(themeMode)
573
+ })
574
+ ] : []
575
+ ]
576
+ ].filter(nonNullable),
577
+ selection,
578
+ scrollTo
579
+ }), [
580
+ id,
581
+ extensions,
582
+ themeMode,
583
+ inputMode,
584
+ selection,
585
+ scrollTo
586
+ ]);
587
+ return /* @__PURE__ */ React2.createElement("div", {
588
+ ref: parentRef,
589
+ "data-toolbar": toolbar ? "enabled" : "disabled",
590
+ className,
591
+ ...focusAttributes
592
+ });
593
+ };
594
+ var createTooltipRenderer = (themeMode) => {
595
+ const theme = themeMode === "dark" ? oneDarkHighlightStyle : defaultHighlightStyle;
596
+ const classFromKind = (_kind) => {
597
+ const kind = _kind.endsWith("Name") ? "name" : _kind;
598
+ const validTag = kind in tags;
599
+ if (!validTag) {
600
+ return "";
601
+ }
602
+ const tag = tags[kind];
603
+ if (typeof tag === "function") {
604
+ return "";
605
+ }
606
+ return theme.style([
607
+ tag
608
+ ]) ?? "";
609
+ };
610
+ return (info) => {
611
+ const div = document.createElement("div");
612
+ div.className = "p-1 rounded border border-separator bg-baseSurface xs:max-w-80 max-w-lg";
613
+ if (info.quickInfo?.displayParts) {
614
+ for (const part of info.quickInfo.displayParts) {
615
+ const span = div.appendChild(document.createElement("span"));
616
+ span.className = classFromKind(part.kind);
617
+ span.innerText = part.text;
618
+ }
619
+ }
620
+ return {
621
+ dom: div
622
+ };
623
+ };
624
+ };
625
+
626
+ // packages/plugins/experimental/plugin-script/src/components/ScriptContainer.tsx
627
+ var ScriptContainer = ({ role, classNames, script, settings, env }) => {
628
+ const identity = useIdentity();
629
+ const space = getSpace2(script);
630
+ const extensions = useMemo3(() => [
631
+ listener({
632
+ onChange: (text) => {
633
+ if (script.source.target && script.source.target.content !== text) {
634
+ script.changed = true;
635
+ }
636
+ }
637
+ }),
638
+ createDataExtensions({
639
+ id: script.id,
640
+ text: script.source.target && createDocAccessor(script.source.target, [
641
+ "content"
642
+ ]),
643
+ space,
644
+ identity
645
+ })
646
+ ], [
647
+ script,
648
+ script.source.target,
649
+ space,
650
+ identity
651
+ ]);
652
+ const state = useToolbarState({
653
+ view: "split"
654
+ });
655
+ useDeployState({
656
+ state,
657
+ script
658
+ });
659
+ return /* @__PURE__ */ React3.createElement(StackItem.Content, {
660
+ toolbar: true
661
+ }, /* @__PURE__ */ React3.createElement(ScriptToolbar, {
662
+ state,
663
+ role,
664
+ script
665
+ }), /* @__PURE__ */ React3.createElement("div", {
666
+ role: "none",
667
+ className: mx("flex flex-col w-full overflow-hidden divide-y divide-separator", classNames)
668
+ }, state.view !== "debug" && /* @__PURE__ */ React3.createElement(TypescriptEditor, {
669
+ id: script.id,
670
+ env,
671
+ initialValue: script.source?.target?.content,
672
+ extensions,
673
+ className: stackItemContentEditorClassNames(role),
674
+ inputMode: settings.editorInputMode,
675
+ toolbar: true
676
+ }), state.view !== "editor" && /* @__PURE__ */ React3.createElement(DebugPanel, {
677
+ functionUrl: state.functionUrl
678
+ })));
679
+ };
680
+ var ScriptContainer_default = ScriptContainer;
681
+ export {
682
+ ScriptContainer,
683
+ ScriptContainer_default as default
684
+ };
685
+ //# sourceMappingURL=ScriptContainer-AERJBGYK.mjs.map