@dxos/plugin-script 0.7.4-staging.f7e8224 → 0.7.5-labs.071a3e2

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