@dxos/plugin-script 0.8.3 → 0.8.4-main.1f223c7

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 (233) hide show
  1. package/dist/lib/browser/DeploymentDialog-QZSTVNIS.mjs +12 -0
  2. package/dist/lib/browser/{ScriptContainer-RSN52NH7.mjs → ScriptContainer-DNNA6XC6.mjs} +20 -16
  3. package/dist/lib/browser/ScriptContainer-DNNA6XC6.mjs.map +7 -0
  4. package/dist/lib/browser/{app-graph-builder-5Z3MUX4N.mjs → app-graph-builder-IABOSTBK.mjs} +4 -4
  5. package/dist/lib/{node-esm/app-graph-builder-IOOUTHV2.mjs.map → browser/app-graph-builder-IABOSTBK.mjs.map} +3 -3
  6. package/dist/lib/browser/blueprint-definition-AR7ITBCD.mjs +28 -0
  7. package/dist/lib/browser/blueprint-definition-AR7ITBCD.mjs.map +7 -0
  8. package/dist/lib/browser/{chunk-YSQMXTYO.mjs → chunk-5TVBECWH.mjs} +3 -3
  9. package/dist/lib/browser/chunk-6CAH7VIE.mjs +283 -0
  10. package/dist/lib/browser/chunk-6CAH7VIE.mjs.map +7 -0
  11. package/dist/lib/browser/{chunk-3JLR2SHJ.mjs → chunk-GZKWMME3.mjs} +52 -53
  12. package/dist/lib/browser/chunk-GZKWMME3.mjs.map +7 -0
  13. package/dist/lib/browser/{chunk-WB3X5Z7Q.mjs → chunk-IS4OG2UW.mjs} +5 -6
  14. package/dist/lib/browser/chunk-IS4OG2UW.mjs.map +7 -0
  15. package/dist/lib/browser/{chunk-QJH7I2UV.mjs → chunk-NXKU3BNX.mjs} +40 -51
  16. package/dist/lib/browser/chunk-NXKU3BNX.mjs.map +7 -0
  17. package/dist/lib/browser/{chunk-6ZHHWU6S.mjs → chunk-QYAREHGH.mjs} +2 -2
  18. package/dist/lib/browser/chunk-RNGIQIEJ.mjs +88 -0
  19. package/dist/lib/browser/chunk-RNGIQIEJ.mjs.map +7 -0
  20. package/dist/lib/browser/{chunk-LA66DQGU.mjs → chunk-YCZPTTFO.mjs} +6 -6
  21. package/dist/lib/browser/chunk-YCZPTTFO.mjs.map +7 -0
  22. package/dist/lib/browser/{compiler-W4BYJYTL.mjs → compiler-2HJH34GM.mjs} +26 -10
  23. package/dist/lib/browser/compiler-2HJH34GM.mjs.map +7 -0
  24. package/dist/lib/browser/index.mjs +34 -31
  25. package/dist/lib/browser/index.mjs.map +3 -3
  26. package/dist/lib/browser/{intent-resolver-JOJNH4UX.mjs → intent-resolver-F4YSRPJI.mjs} +11 -12
  27. package/dist/lib/browser/intent-resolver-F4YSRPJI.mjs.map +7 -0
  28. package/dist/lib/browser/meta.json +1 -1
  29. package/dist/lib/browser/{react-surface-7BKUWL2U.mjs → react-surface-BBHFU6MI.mjs} +13 -14
  30. package/dist/lib/browser/react-surface-BBHFU6MI.mjs.map +7 -0
  31. package/dist/lib/browser/{settings-Z22D6JVJ.mjs → settings-KCTBK5TY.mjs} +4 -4
  32. package/dist/lib/browser/templates/index.mjs +9 -0
  33. package/dist/lib/browser/types/index.mjs +10 -0
  34. package/dist/lib/node-esm/{DeploymentDialog-IA4CH6WZ.mjs → DeploymentDialog-G6EHEPXN.mjs} +5 -5
  35. package/dist/lib/node-esm/{ScriptContainer-4IOOIPBF.mjs → ScriptContainer-KPYZN2KY.mjs} +20 -16
  36. package/dist/lib/node-esm/ScriptContainer-KPYZN2KY.mjs.map +7 -0
  37. package/dist/lib/node-esm/{app-graph-builder-IOOUTHV2.mjs → app-graph-builder-CQTTAYHP.mjs} +4 -4
  38. package/dist/lib/{browser/app-graph-builder-5Z3MUX4N.mjs.map → node-esm/app-graph-builder-CQTTAYHP.mjs.map} +3 -3
  39. package/dist/lib/node-esm/blueprint-definition-TJY4TX6S.mjs +30 -0
  40. package/dist/lib/node-esm/blueprint-definition-TJY4TX6S.mjs.map +7 -0
  41. package/dist/lib/node-esm/chunk-2GBESIHU.mjs +284 -0
  42. package/dist/lib/node-esm/chunk-2GBESIHU.mjs.map +7 -0
  43. package/dist/lib/node-esm/{chunk-2KJYPUQD.mjs → chunk-35M3CHYE.mjs} +3 -3
  44. package/dist/lib/node-esm/{chunk-AEB5TPEW.mjs → chunk-AHXJ6NQU.mjs} +2 -2
  45. package/dist/lib/node-esm/chunk-GWHLP5LM.mjs +90 -0
  46. package/dist/lib/node-esm/chunk-GWHLP5LM.mjs.map +7 -0
  47. package/dist/lib/node-esm/{chunk-B4TP3LSZ.mjs → chunk-HUHVIOL5.mjs} +52 -53
  48. package/dist/lib/node-esm/chunk-HUHVIOL5.mjs.map +7 -0
  49. package/dist/lib/node-esm/{chunk-UESZKXLR.mjs → chunk-JIPFLBYA.mjs} +5 -6
  50. package/dist/lib/node-esm/chunk-JIPFLBYA.mjs.map +7 -0
  51. package/dist/lib/node-esm/{chunk-MJJQBUOL.mjs → chunk-M642JUOZ.mjs} +40 -51
  52. package/dist/lib/node-esm/chunk-M642JUOZ.mjs.map +7 -0
  53. package/dist/lib/node-esm/{chunk-T7XDCUTF.mjs → chunk-ZA36GO4T.mjs} +6 -6
  54. package/dist/lib/node-esm/chunk-ZA36GO4T.mjs.map +7 -0
  55. package/dist/lib/node-esm/{compiler-7PQ4D43R.mjs → compiler-7SP27RA6.mjs} +26 -10
  56. package/dist/lib/node-esm/compiler-7SP27RA6.mjs.map +7 -0
  57. package/dist/lib/node-esm/index.mjs +34 -31
  58. package/dist/lib/node-esm/index.mjs.map +3 -3
  59. package/dist/lib/node-esm/{intent-resolver-HTM5PSRZ.mjs → intent-resolver-CGQYRWWD.mjs} +11 -12
  60. package/dist/lib/{browser/intent-resolver-JOJNH4UX.mjs.map → node-esm/intent-resolver-CGQYRWWD.mjs.map} +3 -3
  61. package/dist/lib/node-esm/meta.json +1 -1
  62. package/dist/lib/node-esm/{react-surface-6UO64YOS.mjs → react-surface-UWIWPKZD.mjs} +13 -14
  63. package/dist/lib/node-esm/react-surface-UWIWPKZD.mjs.map +7 -0
  64. package/dist/lib/node-esm/{settings-KZEGCDYX.mjs → settings-DXZ334A3.mjs} +4 -4
  65. package/dist/lib/node-esm/templates/index.mjs +10 -0
  66. package/dist/lib/node-esm/templates/index.mjs.map +7 -0
  67. package/dist/lib/node-esm/{types.mjs → types/index.mjs} +3 -6
  68. package/dist/lib/node-esm/types/index.mjs.map +7 -0
  69. package/dist/types/src/capabilities/app-graph-builder.d.ts +1 -1
  70. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  71. package/dist/types/src/capabilities/artifact-definition.d.ts +1 -1
  72. package/dist/types/src/capabilities/artifact-definition.d.ts.map +1 -1
  73. package/dist/types/src/capabilities/blueprint-definition.d.ts +5 -0
  74. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -0
  75. package/dist/types/src/capabilities/compiler.d.ts +1 -1
  76. package/dist/types/src/capabilities/compiler.d.ts.map +1 -1
  77. package/dist/types/src/capabilities/index.d.ts +6 -6
  78. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  79. package/dist/types/src/capabilities/intent-resolver.d.ts +1 -1
  80. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  81. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  82. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  83. package/dist/types/src/capabilities/settings.d.ts +1 -1
  84. package/dist/types/src/compiler/compiler.d.ts.map +1 -1
  85. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.d.ts +1 -1
  86. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.d.ts.map +1 -1
  87. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.stories.d.ts +139 -12
  88. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.stories.d.ts.map +1 -1
  89. package/dist/types/src/components/DeploymentDialog/index.d.ts +1 -1
  90. package/dist/types/src/components/DeploymentDialog/index.d.ts.map +1 -1
  91. package/dist/types/src/components/FrameContainer/FrameContainer.d.ts.map +1 -1
  92. package/dist/types/src/components/ScriptContainer.d.ts +3 -3
  93. package/dist/types/src/components/ScriptContainer.d.ts.map +1 -1
  94. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts.map +1 -1
  95. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.stories.d.ts +7 -10
  96. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.stories.d.ts.map +1 -1
  97. package/dist/types/src/components/Settings/ScriptObjectSettings.d.ts.map +1 -1
  98. package/dist/types/src/components/Settings/ScriptPluginSettings.d.ts.map +1 -1
  99. package/dist/types/src/components/TestPanel/TestContainer.d.ts +4 -3
  100. package/dist/types/src/components/TestPanel/TestContainer.d.ts.map +1 -1
  101. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.d.ts.map +1 -1
  102. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.stories.d.ts +10 -3
  103. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.stories.d.ts.map +1 -1
  104. package/dist/types/src/components/index.d.ts +1 -4
  105. package/dist/types/src/components/index.d.ts.map +1 -1
  106. package/dist/types/src/hooks/deploy.d.ts +4 -3
  107. package/dist/types/src/hooks/deploy.d.ts.map +1 -1
  108. package/dist/types/src/hooks/template.d.ts.map +1 -1
  109. package/dist/types/src/hooks/useCreateAndDeployScriptTemplates.d.ts.map +1 -1
  110. package/dist/types/src/templates/data-generator.d.ts.map +1 -1
  111. package/dist/types/src/templates/index.d.ts +2 -0
  112. package/dist/types/src/templates/index.d.ts.map +1 -1
  113. package/dist/types/src/translations.d.ts +68 -176
  114. package/dist/types/src/translations.d.ts.map +1 -1
  115. package/dist/types/src/types/index.d.ts +2 -0
  116. package/dist/types/src/types/index.d.ts.map +1 -0
  117. package/dist/types/src/{types.d.ts → types/schema.d.ts} +3 -5
  118. package/dist/types/src/types/schema.d.ts.map +1 -0
  119. package/dist/types/src/util/deploy.d.ts +3 -3
  120. package/dist/types/src/util/deploy.d.ts.map +1 -1
  121. package/dist/types/src/util/functions.d.ts.map +1 -1
  122. package/dist/types/tsconfig.tsbuildinfo +1 -1
  123. package/package.json +79 -70
  124. package/src/ScriptPlugin.tsx +7 -7
  125. package/src/capabilities/app-graph-builder.ts +2 -2
  126. package/src/capabilities/artifact-definition.ts +9 -12
  127. package/src/capabilities/blueprint-definition.ts +30 -0
  128. package/src/capabilities/compiler.ts +2 -1
  129. package/src/capabilities/index.ts +1 -1
  130. package/src/capabilities/intent-resolver.ts +2 -5
  131. package/src/capabilities/react-surface.tsx +6 -5
  132. package/src/compiler/compiler.ts +1 -1
  133. package/src/components/DeploymentDialog/DeploymentDialog.stories.tsx +29 -17
  134. package/src/components/DeploymentDialog/DeploymentDialog.tsx +5 -5
  135. package/src/components/DeploymentDialog/index.ts +1 -1
  136. package/src/components/FrameContainer/FrameContainer.tsx +3 -2
  137. package/src/components/FrameContainer/frame.tsx +1 -1
  138. package/src/components/ScriptContainer.tsx +6 -4
  139. package/src/components/ScriptToolbar/ScriptToolbar.stories.tsx +19 -14
  140. package/src/components/ScriptToolbar/ScriptToolbar.tsx +14 -4
  141. package/src/components/Settings/ScriptObjectSettings.tsx +19 -23
  142. package/src/components/Settings/ScriptPluginSettings.tsx +33 -28
  143. package/src/components/TestPanel/TestContainer.tsx +9 -3
  144. package/src/components/TestPanel/TestPanel.tsx +1 -1
  145. package/src/components/TypescriptEditor/TypescriptEditor.stories.tsx +9 -16
  146. package/src/components/TypescriptEditor/TypescriptEditor.tsx +6 -4
  147. package/src/hooks/deploy.ts +11 -11
  148. package/src/hooks/template.ts +3 -3
  149. package/src/hooks/useCreateAndDeployScriptTemplates.ts +1 -0
  150. package/src/templates/chess.ts +1 -1
  151. package/src/templates/data-generator.ts +8 -4
  152. package/src/templates/discord.ts +4 -4
  153. package/src/templates/email.ts +2 -2
  154. package/src/templates/forex-effect.ts +3 -3
  155. package/src/templates/forex.ts +1 -1
  156. package/src/templates/gmail.ts +14 -55
  157. package/src/templates/index.ts +2 -0
  158. package/src/translations.ts +9 -6
  159. package/src/types/index.ts +5 -0
  160. package/src/{types.ts → types/schema.ts} +2 -7
  161. package/src/util/deploy.ts +20 -33
  162. package/src/util/functions.ts +4 -4
  163. package/dist/lib/browser/DeploymentDialog-RPPPWEEL.mjs +0 -12
  164. package/dist/lib/browser/ScriptContainer-RSN52NH7.mjs.map +0 -7
  165. package/dist/lib/browser/artifact-definition-A4TBQL75.mjs +0 -249
  166. package/dist/lib/browser/artifact-definition-A4TBQL75.mjs.map +0 -7
  167. package/dist/lib/browser/chunk-3FU4QZVP.mjs +0 -364
  168. package/dist/lib/browser/chunk-3FU4QZVP.mjs.map +0 -7
  169. package/dist/lib/browser/chunk-3JLR2SHJ.mjs.map +0 -7
  170. package/dist/lib/browser/chunk-LA66DQGU.mjs.map +0 -7
  171. package/dist/lib/browser/chunk-QJH7I2UV.mjs.map +0 -7
  172. package/dist/lib/browser/chunk-WB3X5Z7Q.mjs.map +0 -7
  173. package/dist/lib/browser/compiler-W4BYJYTL.mjs.map +0 -7
  174. package/dist/lib/browser/react-surface-7BKUWL2U.mjs.map +0 -7
  175. package/dist/lib/browser/types.mjs +0 -13
  176. package/dist/lib/node/DeploymentDialog-C3EEYGRH.cjs +0 -33
  177. package/dist/lib/node/DeploymentDialog-C3EEYGRH.cjs.map +0 -7
  178. package/dist/lib/node/ScriptContainer-CAC7AISY.cjs +0 -278
  179. package/dist/lib/node/ScriptContainer-CAC7AISY.cjs.map +0 -7
  180. package/dist/lib/node/app-graph-builder-25OOTBW4.cjs +0 -80
  181. package/dist/lib/node/app-graph-builder-25OOTBW4.cjs.map +0 -7
  182. package/dist/lib/node/artifact-definition-QKZI6PTO.cjs +0 -265
  183. package/dist/lib/node/artifact-definition-QKZI6PTO.cjs.map +0 -7
  184. package/dist/lib/node/chunk-AU2FOE26.cjs +0 -369
  185. package/dist/lib/node/chunk-AU2FOE26.cjs.map +0 -7
  186. package/dist/lib/node/chunk-BUOBOT3V.cjs +0 -179
  187. package/dist/lib/node/chunk-BUOBOT3V.cjs.map +0 -7
  188. package/dist/lib/node/chunk-HCRW6T3G.cjs +0 -60
  189. package/dist/lib/node/chunk-HCRW6T3G.cjs.map +0 -7
  190. package/dist/lib/node/chunk-OSBMUJ4T.cjs +0 -580
  191. package/dist/lib/node/chunk-OSBMUJ4T.cjs.map +0 -7
  192. package/dist/lib/node/chunk-QG2X6J74.cjs +0 -52
  193. package/dist/lib/node/chunk-QG2X6J74.cjs.map +0 -7
  194. package/dist/lib/node/chunk-YO5W2IPQ.cjs +0 -251
  195. package/dist/lib/node/chunk-YO5W2IPQ.cjs.map +0 -7
  196. package/dist/lib/node/chunk-ZEV3VARQ.cjs +0 -34
  197. package/dist/lib/node/chunk-ZEV3VARQ.cjs.map +0 -7
  198. package/dist/lib/node/compiler-TFSJRLL4.cjs +0 -104
  199. package/dist/lib/node/compiler-TFSJRLL4.cjs.map +0 -7
  200. package/dist/lib/node/index.cjs +0 -225
  201. package/dist/lib/node/index.cjs.map +0 -7
  202. package/dist/lib/node/intent-resolver-BQ2NKEM7.cjs +0 -100
  203. package/dist/lib/node/intent-resolver-BQ2NKEM7.cjs.map +0 -7
  204. package/dist/lib/node/meta.json +0 -1
  205. package/dist/lib/node/react-surface-EUKPDFU3.cjs +0 -120
  206. package/dist/lib/node/react-surface-EUKPDFU3.cjs.map +0 -7
  207. package/dist/lib/node/settings-WO53FLYZ.cjs +0 -38
  208. package/dist/lib/node/settings-WO53FLYZ.cjs.map +0 -7
  209. package/dist/lib/node/types.cjs +0 -34
  210. package/dist/lib/node/types.cjs.map +0 -7
  211. package/dist/lib/node-esm/ScriptContainer-4IOOIPBF.mjs.map +0 -7
  212. package/dist/lib/node-esm/artifact-definition-4XRYAP54.mjs +0 -250
  213. package/dist/lib/node-esm/artifact-definition-4XRYAP54.mjs.map +0 -7
  214. package/dist/lib/node-esm/chunk-B4TP3LSZ.mjs.map +0 -7
  215. package/dist/lib/node-esm/chunk-MJJQBUOL.mjs.map +0 -7
  216. package/dist/lib/node-esm/chunk-T7XDCUTF.mjs.map +0 -7
  217. package/dist/lib/node-esm/chunk-UESZKXLR.mjs.map +0 -7
  218. package/dist/lib/node-esm/chunk-W2DAXWHA.mjs +0 -365
  219. package/dist/lib/node-esm/chunk-W2DAXWHA.mjs.map +0 -7
  220. package/dist/lib/node-esm/compiler-7PQ4D43R.mjs.map +0 -7
  221. package/dist/lib/node-esm/intent-resolver-HTM5PSRZ.mjs.map +0 -7
  222. package/dist/lib/node-esm/react-surface-6UO64YOS.mjs.map +0 -7
  223. package/dist/types/src/types.d.ts.map +0 -1
  224. /package/dist/lib/browser/{DeploymentDialog-RPPPWEEL.mjs.map → DeploymentDialog-QZSTVNIS.mjs.map} +0 -0
  225. /package/dist/lib/browser/{chunk-YSQMXTYO.mjs.map → chunk-5TVBECWH.mjs.map} +0 -0
  226. /package/dist/lib/browser/{chunk-6ZHHWU6S.mjs.map → chunk-QYAREHGH.mjs.map} +0 -0
  227. /package/dist/lib/browser/{settings-Z22D6JVJ.mjs.map → settings-KCTBK5TY.mjs.map} +0 -0
  228. /package/dist/lib/browser/{types.mjs.map → templates/index.mjs.map} +0 -0
  229. /package/dist/lib/{node-esm/DeploymentDialog-IA4CH6WZ.mjs.map → browser/types/index.mjs.map} +0 -0
  230. /package/dist/lib/node-esm/{types.mjs.map → DeploymentDialog-G6EHEPXN.mjs.map} +0 -0
  231. /package/dist/lib/node-esm/{chunk-2KJYPUQD.mjs.map → chunk-35M3CHYE.mjs.map} +0 -0
  232. /package/dist/lib/node-esm/{chunk-AEB5TPEW.mjs.map → chunk-AHXJ6NQU.mjs.map} +0 -0
  233. /package/dist/lib/node-esm/{settings-KZEGCDYX.mjs.map → settings-DXZ334A3.mjs.map} +0 -0
@@ -0,0 +1,12 @@
1
+ import {
2
+ DEPLOYMENT_DIALOG,
3
+ DeploymentDialog_default
4
+ } from "./chunk-YCZPTTFO.mjs";
5
+ import "./chunk-NXKU3BNX.mjs";
6
+ import "./chunk-IS4OG2UW.mjs";
7
+ import "./chunk-QYAREHGH.mjs";
8
+ export {
9
+ DEPLOYMENT_DIALOG,
10
+ DeploymentDialog_default as default
11
+ };
12
+ //# sourceMappingURL=DeploymentDialog-QZSTVNIS.mjs.map
@@ -5,14 +5,15 @@ import {
5
5
  useDeployDeps,
6
6
  useDeployState,
7
7
  useToolbarState
8
- } from "./chunk-3FU4QZVP.mjs";
9
- import "./chunk-QJH7I2UV.mjs";
10
- import "./chunk-WB3X5Z7Q.mjs";
8
+ } from "./chunk-6CAH7VIE.mjs";
9
+ import "./chunk-RNGIQIEJ.mjs";
10
+ import "./chunk-NXKU3BNX.mjs";
11
+ import "./chunk-IS4OG2UW.mjs";
11
12
  import {
12
13
  SCRIPT_PLUGIN
13
- } from "./chunk-6ZHHWU6S.mjs";
14
+ } from "./chunk-QYAREHGH.mjs";
14
15
 
15
- // packages/plugins/plugin-script/src/components/ScriptContainer.tsx
16
+ // src/components/ScriptContainer.tsx
16
17
  import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
17
18
  import React3, { useMemo as useMemo2 } from "react";
18
19
  import { createDocAccessor, getSpace } from "@dxos/react-client/echo";
@@ -20,14 +21,14 @@ import { useIdentity } from "@dxos/react-client/halo";
20
21
  import { createDataExtensions, listener, stackItemContentEditorClassNames } from "@dxos/react-ui-editor";
21
22
  import { StackItem } from "@dxos/react-ui-stack";
22
23
 
23
- // packages/plugins/plugin-script/src/components/ScriptToolbar/ScriptToolbar.tsx
24
+ // src/components/ScriptToolbar/ScriptToolbar.tsx
24
25
  import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
25
26
  import { Rx } from "@effect-rx/rx-react";
26
27
  import React, { useMemo } from "react";
27
28
  import { fullyQualifiedId } from "@dxos/react-client/echo";
28
29
  import { ElevationProvider, useTranslation } from "@dxos/react-ui";
29
- import { createGapSeparator, MenuProvider, rxFromSignal, ToolbarMenu, useMenuActions } from "@dxos/react-ui-menu";
30
- var createToolbar = ({ state, script, ...options }) => Rx.make((get) => get(rxFromSignal(() => {
30
+ import { MenuProvider, ToolbarMenu, createGapSeparator, rxFromSignal, useMenuActions } from "@dxos/react-ui-menu";
31
+ var createToolbarActions = ({ state, script, ...options }) => Rx.make((get) => get(rxFromSignal(() => {
31
32
  const templateSelect = createTemplateSelect(script);
32
33
  const format = createFormat(script);
33
34
  const gap = createGapSeparator();
@@ -58,7 +59,7 @@ var ScriptToolbar = ({ script, role, state, classNames }) => {
58
59
  const options = useDeployDeps({
59
60
  script
60
61
  });
61
- const toolbarCreator = useMemo(() => createToolbar({
62
+ const toolbarCreator = useMemo(() => createToolbarActions({
62
63
  state,
63
64
  script,
64
65
  t,
@@ -83,8 +84,9 @@ var ScriptToolbar = ({ script, role, state, classNames }) => {
83
84
  }
84
85
  };
85
86
 
86
- // packages/plugins/plugin-script/src/components/TypescriptEditor/TypescriptEditor.tsx
87
+ // src/components/TypescriptEditor/TypescriptEditor.tsx
87
88
  import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
89
+ import { autocompletion, completionKeymap } from "@codemirror/autocomplete";
88
90
  import { javascript } from "@codemirror/lang-javascript";
89
91
  import { defaultHighlightStyle } from "@codemirror/language";
90
92
  import { lintKeymap } from "@codemirror/lint";
@@ -93,10 +95,10 @@ import { oneDarkHighlightStyle } from "@codemirror/theme-one-dark";
93
95
  import { keymap } from "@codemirror/view";
94
96
  import { tags } from "@lezer/highlight";
95
97
  import { continueKeymap } from "@valtown/codemirror-continue";
96
- import { tsSync, tsFacet, tsLinter, tsAutocomplete, tsHover } from "@valtown/codemirror-ts";
98
+ import { tsAutocomplete, tsFacet, tsHover, tsLinter, tsSync } from "@valtown/codemirror-ts";
97
99
  import React2 from "react";
98
100
  import { useThemeContext } from "@dxos/react-ui";
99
- import { InputModeExtensions, autocomplete, createBasicExtensions, createThemeExtensions, folding, useTextEditor } from "@dxos/react-ui-editor";
101
+ import { InputModeExtensions, createBasicExtensions, createThemeExtensions, folding, useTextEditor } from "@dxos/react-ui-editor";
100
102
  import { mx } from "@dxos/react-ui-theme";
101
103
  import { isNonNullable } from "@dxos/util";
102
104
  var TypescriptEditor = ({ classNames, id, inputMode = "vscode", toolbar, env, initialValue, extensions, scrollTo, selection }) => {
@@ -116,7 +118,8 @@ var TypescriptEditor = ({ classNames, id, inputMode = "vscode", toolbar, env, in
116
118
  lineNumbers: true,
117
119
  lineWrapping: false,
118
120
  monospace: true,
119
- scrollPastEnd: true
121
+ scrollPastEnd: true,
122
+ search: true
120
123
  }),
121
124
  createThemeExtensions({
122
125
  themeMode,
@@ -131,7 +134,8 @@ var TypescriptEditor = ({ classNames, id, inputMode = "vscode", toolbar, env, in
131
134
  typescript: true
132
135
  }),
133
136
  // https://github.com/val-town/codemirror-ts
134
- autocomplete({
137
+ keymap.of(completionKeymap),
138
+ autocompletion({
135
139
  override: env ? [
136
140
  tsAutocomplete()
137
141
  ] : void 0
@@ -199,7 +203,7 @@ var createTooltipRenderer = (themeMode) => {
199
203
  };
200
204
  };
201
205
 
202
- // packages/plugins/plugin-script/src/components/ScriptContainer.tsx
206
+ // src/components/ScriptContainer.tsx
203
207
  var ScriptContainer = ({ role, script, settings = {
204
208
  editorInputMode: "vscode"
205
209
  }, env }) => {
@@ -258,4 +262,4 @@ export {
258
262
  ScriptContainer,
259
263
  ScriptContainer_default as default
260
264
  };
261
- //# sourceMappingURL=ScriptContainer-RSN52NH7.mjs.map
265
+ //# sourceMappingURL=ScriptContainer-DNNA6XC6.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/ScriptContainer.tsx", "../../../src/components/ScriptToolbar/ScriptToolbar.tsx", "../../../src/components/TypescriptEditor/TypescriptEditor.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useMemo } from 'react';\n\nimport { type ScriptType } from '@dxos/functions';\nimport { createDocAccessor, getSpace } from '@dxos/react-client/echo';\nimport { useIdentity } from '@dxos/react-client/halo';\nimport { createDataExtensions, listener, stackItemContentEditorClassNames } from '@dxos/react-ui-editor';\nimport { StackItem } from '@dxos/react-ui-stack';\n\nimport { useDeployState, useToolbarState } from '../hooks';\nimport { type ScriptSettingsProps } from '../types';\n\nimport { ScriptToolbar } from './ScriptToolbar';\nimport { TypescriptEditor, type TypescriptEditorProps } from './TypescriptEditor';\n\nexport type ScriptEditorProps = {\n role: string;\n script: ScriptType;\n settings?: ScriptSettingsProps;\n} & Pick<TypescriptEditorProps, 'env'>;\n\nexport const ScriptContainer = ({ role, script, settings = { editorInputMode: 'vscode' }, env }: ScriptEditorProps) => {\n const identity = useIdentity();\n const space = getSpace(script);\n const state = useToolbarState();\n useDeployState({ state, script });\n\n const extensions = useMemo(\n () =>\n script.source.target\n ? [\n listener({\n onChange: (text) => {\n if (script.source.target?.content !== text) {\n script.changed = true;\n }\n },\n }),\n createDataExtensions({\n id: script.id,\n text: createDocAccessor(script.source.target, ['content']),\n space,\n identity,\n }),\n ]\n : [],\n [identity, space, script, script.source.target],\n );\n\n return (\n <StackItem.Content toolbar>\n <ScriptToolbar state={state} role={role} script={script} />\n <TypescriptEditor\n id={script.id}\n env={env}\n initialValue={script.source?.target?.content}\n extensions={extensions}\n classNames={stackItemContentEditorClassNames(role)}\n inputMode={settings.editorInputMode}\n toolbar\n />\n </StackItem.Content>\n );\n};\n\nexport default ScriptContainer;\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Rx } from '@effect-rx/rx-react';\nimport React, { useMemo } from 'react';\n\nimport { type ScriptType } from '@dxos/functions';\nimport { fullyQualifiedId } from '@dxos/react-client/echo';\nimport { ElevationProvider, type ThemedClassName, useTranslation } from '@dxos/react-ui';\nimport {\n type ActionGraphProps,\n MenuProvider,\n ToolbarMenu,\n createGapSeparator,\n rxFromSignal,\n useMenuActions,\n} from '@dxos/react-ui-menu';\n\nimport {\n type CreateDeployOptions,\n type ScriptToolbarState,\n createDeploy,\n createFormat,\n createTemplateSelect,\n useDeployDeps,\n} from '../../hooks';\nimport { SCRIPT_PLUGIN } from '../../meta';\n\nconst createToolbarActions = ({ state, script, ...options }: CreateDeployOptions): Rx.Rx<ActionGraphProps> =>\n Rx.make((get) =>\n get(\n rxFromSignal(() => {\n const templateSelect = createTemplateSelect(script);\n const format = createFormat(script);\n const gap = createGapSeparator();\n const deploy = createDeploy({ state, script, ...options });\n return {\n nodes: [...templateSelect.nodes, ...format.nodes, ...gap.nodes, ...deploy.nodes],\n edges: [...templateSelect.edges, ...format.edges, ...gap.edges, ...deploy.edges],\n };\n }),\n ),\n );\n\nexport type ScriptToolbarProps = ThemedClassName<{\n role?: string;\n script: ScriptType;\n state: ScriptToolbarState;\n}>;\n\nexport const ScriptToolbar = ({ script, role, state, classNames }: ScriptToolbarProps) => {\n const { t } = useTranslation(SCRIPT_PLUGIN);\n const options = useDeployDeps({ script });\n const toolbarCreator = useMemo(\n () => createToolbarActions({ state, script, t, ...options }),\n [state, script, options, t],\n );\n const menu = useMenuActions(toolbarCreator);\n\n return (\n <ElevationProvider elevation={role === 'section' ? 'positioned' : 'base'}>\n <MenuProvider {...menu} attendableId={fullyQualifiedId(script)}>\n <ToolbarMenu classNames={classNames} />\n </MenuProvider>\n </ElevationProvider>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { autocompletion, completionKeymap } from '@codemirror/autocomplete';\nimport { javascript } from '@codemirror/lang-javascript';\nimport { defaultHighlightStyle } from '@codemirror/language';\nimport { lintKeymap } from '@codemirror/lint';\nimport { Prec } from '@codemirror/state';\nimport { oneDarkHighlightStyle } from '@codemirror/theme-one-dark';\nimport { keymap } from '@codemirror/view';\nimport { tags } from '@lezer/highlight';\nimport { type VirtualTypeScriptEnvironment } from '@typescript/vfs';\nimport { continueKeymap } from '@valtown/codemirror-continue';\nimport { type HoverInfo, tsAutocomplete, tsFacet, tsHover, tsLinter, tsSync } from '@valtown/codemirror-ts';\nimport React from 'react';\n\nimport { type ThemeMode, type ThemedClassName, useThemeContext } from '@dxos/react-ui';\nimport {\n type EditorInputMode,\n InputModeExtensions,\n type UseTextEditorProps,\n createBasicExtensions,\n createThemeExtensions,\n folding,\n useTextEditor,\n} from '@dxos/react-ui-editor';\nimport { mx } from '@dxos/react-ui-theme';\nimport { isNonNullable } from '@dxos/util';\n\nexport type TypescriptEditorProps = ThemedClassName<\n {\n id: string;\n inputMode?: EditorInputMode;\n toolbar?: boolean;\n env?: VirtualTypeScriptEnvironment;\n } & Pick<UseTextEditorProps, 'initialValue' | 'extensions' | 'scrollTo' | 'selection'>\n>;\n\nexport const TypescriptEditor = ({\n classNames,\n id,\n inputMode = 'vscode',\n toolbar,\n env,\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 selection,\n scrollTo,\n extensions: [\n extensions,\n createBasicExtensions({\n highlightActiveLine: true,\n indentWithTab: true,\n lineNumbers: true,\n lineWrapping: false,\n monospace: true,\n scrollPastEnd: true,\n search: true,\n }),\n createThemeExtensions({ themeMode, syntaxHighlighting: true }),\n InputModeExtensions[inputMode],\n folding(),\n // Continues block comments when pressing Enter.\n Prec.high(keymap.of(continueKeymap)),\n\n // TODO(burdon): Factor out.\n javascript({ typescript: true }),\n // https://github.com/val-town/codemirror-ts\n keymap.of(completionKeymap),\n autocompletion({ override: env ? [tsAutocomplete()] : undefined }),\n keymap.of(lintKeymap),\n env && [\n tsFacet.of({ env, path: `/src/${id}.ts` }),\n tsSync(),\n tsLinter(),\n tsHover({ renderTooltip: createTooltipRenderer(themeMode) }),\n ],\n ].filter(isNonNullable),\n }),\n [id, extensions, themeMode, inputMode, selection, scrollTo],\n );\n\n return (\n <div\n ref={parentRef}\n data-toolbar={toolbar ? 'enabled' : 'disabled'}\n className={mx(classNames)}\n {...focusAttributes}\n />\n );\n};\n\nconst createTooltipRenderer = (themeMode: ThemeMode) => {\n const theme = themeMode === 'dark' ? oneDarkHighlightStyle : defaultHighlightStyle;\n\n const classFromKind = (_kind: string) => {\n // E.g., localName, methodName, parameterName, etc.\n const kind = _kind.endsWith('Name') ? 'name' : _kind;\n const validTag = kind in tags;\n if (!validTag) {\n return '';\n }\n\n const tag = tags[kind as keyof typeof tags];\n if (typeof tag === 'function') {\n return '';\n }\n\n return theme.style([tag]) ?? '';\n };\n\n return (info: HoverInfo) => {\n const div = document.createElement('div');\n div.className = 'p-1 rounded border border-separator bg-baseSurface xs:max-w-80 max-w-lg';\n\n if (info.quickInfo?.displayParts) {\n for (const part of info.quickInfo.displayParts) {\n const span = div.appendChild(document.createElement('span'));\n span.className = classFromKind(part.kind);\n span.innerText = part.text;\n }\n }\n\n return { dom: div };\n };\n};\n\nexport default TypescriptEditor;\n"],
5
+ "mappings": "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",
6
+ "names": ["React", "useMemo", "createDocAccessor", "getSpace", "useIdentity", "createDataExtensions", "listener", "stackItemContentEditorClassNames", "StackItem", "Rx", "React", "useMemo", "fullyQualifiedId", "ElevationProvider", "useTranslation", "MenuProvider", "ToolbarMenu", "createGapSeparator", "rxFromSignal", "useMenuActions", "createToolbarActions", "state", "script", "options", "Rx", "make", "get", "rxFromSignal", "templateSelect", "createTemplateSelect", "format", "createFormat", "gap", "createGapSeparator", "deploy", "createDeploy", "nodes", "edges", "ScriptToolbar", "role", "classNames", "t", "useTranslation", "SCRIPT_PLUGIN", "useDeployDeps", "toolbarCreator", "useMemo", "menu", "useMenuActions", "ElevationProvider", "elevation", "MenuProvider", "attendableId", "fullyQualifiedId", "ToolbarMenu", "autocompletion", "completionKeymap", "javascript", "defaultHighlightStyle", "lintKeymap", "Prec", "oneDarkHighlightStyle", "keymap", "tags", "continueKeymap", "tsAutocomplete", "tsFacet", "tsHover", "tsLinter", "tsSync", "React", "useThemeContext", "InputModeExtensions", "createBasicExtensions", "createThemeExtensions", "folding", "useTextEditor", "mx", "isNonNullable", "TypescriptEditor", "classNames", "id", "inputMode", "toolbar", "env", "initialValue", "extensions", "scrollTo", "selection", "themeMode", "useThemeContext", "parentRef", "focusAttributes", "useTextEditor", "createBasicExtensions", "highlightActiveLine", "indentWithTab", "lineNumbers", "lineWrapping", "monospace", "scrollPastEnd", "search", "createThemeExtensions", "syntaxHighlighting", "InputModeExtensions", "folding", "Prec", "high", "keymap", "of", "continueKeymap", "javascript", "typescript", "completionKeymap", "autocompletion", "override", "tsAutocomplete", "undefined", "lintKeymap", "tsFacet", "path", "tsSync", "tsLinter", "tsHover", "renderTooltip", "createTooltipRenderer", "filter", "isNonNullable", "React", "div", "ref", "data-toolbar", "className", "mx", "theme", "oneDarkHighlightStyle", "defaultHighlightStyle", "classFromKind", "_kind", "kind", "endsWith", "validTag", "tags", "tag", "style", "info", "document", "createElement", "quickInfo", "displayParts", "part", "span", "appendChild", "innerText", "text", "dom", "ScriptContainer", "role", "script", "settings", "editorInputMode", "env", "identity", "useIdentity", "space", "getSpace", "state", "useToolbarState", "useDeployState", "extensions", "useMemo", "source", "target", "listener", "onChange", "text", "content", "changed", "createDataExtensions", "id", "createDocAccessor", "React", "StackItem", "Content", "toolbar", "ScriptToolbar", "TypescriptEditor", "initialValue", "classNames", "stackItemContentEditorClassNames", "inputMode"]
7
+ }
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  meta
3
- } from "./chunk-6ZHHWU6S.mjs";
3
+ } from "./chunk-QYAREHGH.mjs";
4
4
 
5
- // packages/plugins/plugin-script/src/capabilities/app-graph-builder.ts
5
+ // src/capabilities/app-graph-builder.ts
6
6
  import { Rx } from "@effect-rx/rx-react";
7
7
  import { Option, pipe } from "effect";
8
8
  import { Capabilities, contributes } from "@dxos/app-framework";
9
9
  import { Obj } from "@dxos/echo";
10
10
  import { ScriptType } from "@dxos/functions";
11
- import { PLANK_COMPANION_TYPE, ATTENDABLE_PATH_SEPARATOR } from "@dxos/plugin-deck/types";
11
+ import { ATTENDABLE_PATH_SEPARATOR, PLANK_COMPANION_TYPE } from "@dxos/plugin-deck/types";
12
12
  import { createExtension } from "@dxos/plugin-graph";
13
13
  var app_graph_builder_default = (context) => contributes(Capabilities.AppGraphBuilder, [
14
14
  createExtension({
@@ -61,4 +61,4 @@ var app_graph_builder_default = (context) => contributes(Capabilities.AppGraphBu
61
61
  export {
62
62
  app_graph_builder_default as default
63
63
  };
64
- //# sourceMappingURL=app-graph-builder-5Z3MUX4N.mjs.map
64
+ //# sourceMappingURL=app-graph-builder-IABOSTBK.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/capabilities/app-graph-builder.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Rx } from '@effect-rx/rx-react';\nimport { Option, pipe } from 'effect';\n\nimport { Capabilities, contributes, type PluginContext } from '@dxos/app-framework';\nimport { Obj } from '@dxos/echo';\nimport { ScriptType } from '@dxos/functions';\nimport { PLANK_COMPANION_TYPE, ATTENDABLE_PATH_SEPARATOR } from '@dxos/plugin-deck/types';\nimport { createExtension } from '@dxos/plugin-graph';\n\nimport { meta } from '../meta';\n\nexport default (context: PluginContext) =>\n contributes(Capabilities.AppGraphBuilder, [\n createExtension({\n id: `${meta.id}/execute`,\n connector: (node) =>\n Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) => (Obj.instanceOf(ScriptType, node.data) ? Option.some(node) : Option.none())),\n Option.map((node) => [\n {\n id: [node.id, 'execute'].join(ATTENDABLE_PATH_SEPARATOR),\n type: PLANK_COMPANION_TYPE,\n data: 'execute',\n properties: {\n label: ['script test label', { ns: meta.id }],\n icon: 'ph--terminal--regular',\n disposition: 'hidden',\n },\n },\n ]),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n createExtension({\n id: `${meta.id}/logs`,\n connector: (node) =>\n Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) => (Obj.instanceOf(ScriptType, node.data) ? Option.some(node) : Option.none())),\n Option.map((node) => [\n {\n id: [node.id, 'logs'].join(ATTENDABLE_PATH_SEPARATOR),\n type: PLANK_COMPANION_TYPE,\n data: 'logs',\n properties: {\n label: ['script logs label', { ns: meta.id }],\n icon: 'ph--clock-countdown--regular',\n disposition: 'hidden',\n },\n },\n ]),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n ]);\n"],
5
- "mappings": ";;;;;;AAIA,SAASA,UAAU;AACnB,SAASC,QAAQC,YAAY;AAE7B,SAASC,cAAcC,mBAAuC;AAC9D,SAASC,WAAW;AACpB,SAASC,kBAAkB;AAC3B,SAASC,sBAAsBC,iCAAiC;AAChE,SAASC,uBAAuB;AAIhC,IAAA,4BAAe,CAACC,YACdC,YAAYC,aAAaC,iBAAiB;EACxCC,gBAAgB;IACdC,IAAI,GAAGC,KAAKD,EAAE;IACdE,WAAW,CAACC,SACVC,GAAGC,KAAK,CAACC,QACPC,KACED,IAAIH,IAAAA,GACJK,OAAOC,QAAQ,CAACN,UAAUO,IAAIC,WAAWC,YAAYT,MAAKU,IAAI,IAAIL,OAAOM,KAAKX,KAAAA,IAAQK,OAAOO,KAAI,CAAA,GACjGP,OAAOQ,IAAI,CAACb,UAAS;MACnB;QACEH,IAAI;UAACG,MAAKH;UAAI;UAAWiB,KAAKC,yBAAAA;QAC9BC,MAAMC;QACNP,MAAM;QACNQ,YAAY;UACVC,OAAO;YAAC;YAAqB;cAAEC,IAAItB,KAAKD;YAAG;;UAC3CwB,MAAM;UACNC,aAAa;QACf;MACF;KACD,GACDjB,OAAOkB,UAAU,MAAM,CAAA,CAAE,CAAA,CAAA;EAGjC,CAAA;EACA3B,gBAAgB;IACdC,IAAI,GAAGC,KAAKD,EAAE;IACdE,WAAW,CAACC,SACVC,GAAGC,KAAK,CAACC,QACPC,KACED,IAAIH,IAAAA,GACJK,OAAOC,QAAQ,CAACN,UAAUO,IAAIC,WAAWC,YAAYT,MAAKU,IAAI,IAAIL,OAAOM,KAAKX,KAAAA,IAAQK,OAAOO,KAAI,CAAA,GACjGP,OAAOQ,IAAI,CAACb,UAAS;MACnB;QACEH,IAAI;UAACG,MAAKH;UAAI;UAAQiB,KAAKC,yBAAAA;QAC3BC,MAAMC;QACNP,MAAM;QACNQ,YAAY;UACVC,OAAO;YAAC;YAAqB;cAAEC,IAAItB,KAAKD;YAAG;;UAC3CwB,MAAM;UACNC,aAAa;QACf;MACF;KACD,GACDjB,OAAOkB,UAAU,MAAM,CAAA,CAAE,CAAA,CAAA;EAGjC,CAAA;CACD;",
6
- "names": ["Rx", "Option", "pipe", "Capabilities", "contributes", "Obj", "ScriptType", "PLANK_COMPANION_TYPE", "ATTENDABLE_PATH_SEPARATOR", "createExtension", "context", "contributes", "Capabilities", "AppGraphBuilder", "createExtension", "id", "meta", "connector", "node", "Rx", "make", "get", "pipe", "Option", "flatMap", "Obj", "instanceOf", "ScriptType", "data", "some", "none", "map", "join", "ATTENDABLE_PATH_SEPARATOR", "type", "PLANK_COMPANION_TYPE", "properties", "label", "ns", "icon", "disposition", "getOrElse"]
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Rx } from '@effect-rx/rx-react';\nimport { Option, pipe } from 'effect';\n\nimport { Capabilities, type PluginContext, contributes } from '@dxos/app-framework';\nimport { Obj } from '@dxos/echo';\nimport { ScriptType } from '@dxos/functions';\nimport { ATTENDABLE_PATH_SEPARATOR, PLANK_COMPANION_TYPE } from '@dxos/plugin-deck/types';\nimport { createExtension } from '@dxos/plugin-graph';\n\nimport { meta } from '../meta';\n\nexport default (context: PluginContext) =>\n contributes(Capabilities.AppGraphBuilder, [\n createExtension({\n id: `${meta.id}/execute`,\n connector: (node) =>\n Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) => (Obj.instanceOf(ScriptType, node.data) ? Option.some(node) : Option.none())),\n Option.map((node) => [\n {\n id: [node.id, 'execute'].join(ATTENDABLE_PATH_SEPARATOR),\n type: PLANK_COMPANION_TYPE,\n data: 'execute',\n properties: {\n label: ['script test label', { ns: meta.id }],\n icon: 'ph--terminal--regular',\n disposition: 'hidden',\n },\n },\n ]),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n createExtension({\n id: `${meta.id}/logs`,\n connector: (node) =>\n Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) => (Obj.instanceOf(ScriptType, node.data) ? Option.some(node) : Option.none())),\n Option.map((node) => [\n {\n id: [node.id, 'logs'].join(ATTENDABLE_PATH_SEPARATOR),\n type: PLANK_COMPANION_TYPE,\n data: 'logs',\n properties: {\n label: ['script logs label', { ns: meta.id }],\n icon: 'ph--clock-countdown--regular',\n disposition: 'hidden',\n },\n },\n ]),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n ]);\n"],
5
+ "mappings": ";;;;;AAIA,SAASA,UAAU;AACnB,SAASC,QAAQC,YAAY;AAE7B,SAASC,cAAkCC,mBAAmB;AAC9D,SAASC,WAAW;AACpB,SAASC,kBAAkB;AAC3B,SAASC,2BAA2BC,4BAA4B;AAChE,SAASC,uBAAuB;AAIhC,IAAA,4BAAe,CAACC,YACdC,YAAYC,aAAaC,iBAAiB;EACxCC,gBAAgB;IACdC,IAAI,GAAGC,KAAKD,EAAE;IACdE,WAAW,CAACC,SACVC,GAAGC,KAAK,CAACC,QACPC,KACED,IAAIH,IAAAA,GACJK,OAAOC,QAAQ,CAACN,UAAUO,IAAIC,WAAWC,YAAYT,MAAKU,IAAI,IAAIL,OAAOM,KAAKX,KAAAA,IAAQK,OAAOO,KAAI,CAAA,GACjGP,OAAOQ,IAAI,CAACb,UAAS;MACnB;QACEH,IAAI;UAACG,MAAKH;UAAI;UAAWiB,KAAKC,yBAAAA;QAC9BC,MAAMC;QACNP,MAAM;QACNQ,YAAY;UACVC,OAAO;YAAC;YAAqB;cAAEC,IAAItB,KAAKD;YAAG;;UAC3CwB,MAAM;UACNC,aAAa;QACf;MACF;KACD,GACDjB,OAAOkB,UAAU,MAAM,CAAA,CAAE,CAAA,CAAA;EAGjC,CAAA;EACA3B,gBAAgB;IACdC,IAAI,GAAGC,KAAKD,EAAE;IACdE,WAAW,CAACC,SACVC,GAAGC,KAAK,CAACC,QACPC,KACED,IAAIH,IAAAA,GACJK,OAAOC,QAAQ,CAACN,UAAUO,IAAIC,WAAWC,YAAYT,MAAKU,IAAI,IAAIL,OAAOM,KAAKX,KAAAA,IAAQK,OAAOO,KAAI,CAAA,GACjGP,OAAOQ,IAAI,CAACb,UAAS;MACnB;QACEH,IAAI;UAACG,MAAKH;UAAI;UAAQiB,KAAKC,yBAAAA;QAC3BC,MAAMC;QACNP,MAAM;QACNQ,YAAY;UACVC,OAAO;YAAC;YAAqB;cAAEC,IAAItB,KAAKD;YAAG;;UAC3CwB,MAAM;UACNC,aAAa;QACf;MACF;KACD,GACDjB,OAAOkB,UAAU,MAAM,CAAA,CAAE,CAAA,CAAA;EAGjC,CAAA;CACD;",
6
+ "names": ["Rx", "Option", "pipe", "Capabilities", "contributes", "Obj", "ScriptType", "ATTENDABLE_PATH_SEPARATOR", "PLANK_COMPANION_TYPE", "createExtension", "context", "contributes", "Capabilities", "AppGraphBuilder", "createExtension", "id", "meta", "connector", "node", "Rx", "make", "get", "pipe", "Option", "flatMap", "Obj", "instanceOf", "ScriptType", "data", "some", "none", "map", "join", "ATTENDABLE_PATH_SEPARATOR", "type", "PLANK_COMPANION_TYPE", "properties", "label", "ns", "icon", "disposition", "getOrElse"]
7
7
  }
@@ -0,0 +1,28 @@
1
+ // src/capabilities/blueprint-definition.ts
2
+ import { Capabilities, contributes } from "@dxos/app-framework";
3
+ import { Blueprint, Template } from "@dxos/blueprints";
4
+ import { trim } from "@dxos/util";
5
+ var functions = [];
6
+ var tools = [];
7
+ var blueprint_definition_default = () => {
8
+ return [
9
+ contributes(Capabilities.Functions, functions),
10
+ contributes(Capabilities.BlueprintDefinition, Blueprint.make({
11
+ key: "dxos.org/blueprint/script",
12
+ name: "Script",
13
+ tools: Blueprint.toolDefinitions({
14
+ functions,
15
+ tools
16
+ }),
17
+ instructions: Template.make({
18
+ source: trim`
19
+ You can create and update scripts which contain Typescript code.
20
+ `
21
+ })
22
+ }))
23
+ ];
24
+ };
25
+ export {
26
+ blueprint_definition_default as default
27
+ };
28
+ //# sourceMappingURL=blueprint-definition-AR7ITBCD.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/blueprint-definition.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, contributes } from '@dxos/app-framework';\nimport { Blueprint, Template } from '@dxos/blueprints';\nimport { type FunctionDefinition } from '@dxos/functions';\nimport { trim } from '@dxos/util';\n\nconst functions: FunctionDefinition[] = [];\nconst tools: string[] = [];\n\nexport default () => {\n return [\n contributes(Capabilities.Functions, functions),\n contributes(\n Capabilities.BlueprintDefinition,\n Blueprint.make({\n key: 'dxos.org/blueprint/script',\n name: 'Script',\n tools: Blueprint.toolDefinitions({ functions, tools }),\n instructions: Template.make({\n source: trim`\n You can create and update scripts which contain Typescript code.\n `,\n }),\n }),\n ),\n ];\n};\n"],
5
+ "mappings": ";AAIA,SAASA,cAAcC,mBAAmB;AAC1C,SAASC,WAAWC,gBAAgB;AAEpC,SAASC,YAAY;AAErB,IAAMC,YAAkC,CAAA;AACxC,IAAMC,QAAkB,CAAA;AAExB,IAAA,+BAAe,MAAA;AACb,SAAO;IACLC,YAAYC,aAAaC,WAAWJ,SAAAA;IACpCE,YACEC,aAAaE,qBACbC,UAAUC,KAAK;MACbC,KAAK;MACLC,MAAM;MACNR,OAAOK,UAAUI,gBAAgB;QAAEV;QAAWC;MAAM,CAAA;MACpDU,cAAcC,SAASL,KAAK;QAC1BM,QAAQC;;;MAGV,CAAA;IACF,CAAA,CAAA;;AAGN;",
6
+ "names": ["Capabilities", "contributes", "Blueprint", "Template", "trim", "functions", "tools", "contributes", "Capabilities", "Functions", "BlueprintDefinition", "Blueprint", "make", "key", "name", "toolDefinitions", "instructions", "Template", "source", "trim"]
7
+ }
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  meta
3
- } from "./chunk-6ZHHWU6S.mjs";
3
+ } from "./chunk-QYAREHGH.mjs";
4
4
 
5
- // packages/plugins/plugin-script/src/capabilities/capabilities.ts
5
+ // src/capabilities/capabilities.ts
6
6
  import { defineCapability } from "@dxos/app-framework";
7
7
  (function(ScriptCapabilities2) {
8
8
  ScriptCapabilities2.Compiler = defineCapability(`${meta.id}/capability/compiler`);
@@ -12,4 +12,4 @@ var ScriptCapabilities;
12
12
  export {
13
13
  ScriptCapabilities
14
14
  };
15
- //# sourceMappingURL=chunk-YSQMXTYO.mjs.map
15
+ //# sourceMappingURL=chunk-5TVBECWH.mjs.map
@@ -0,0 +1,283 @@
1
+ import {
2
+ templates
3
+ } from "./chunk-RNGIQIEJ.mjs";
4
+ import {
5
+ deployScript,
6
+ getFunctionUrl,
7
+ isScriptDeployed
8
+ } from "./chunk-NXKU3BNX.mjs";
9
+ import {
10
+ SCRIPT_PLUGIN
11
+ } from "./chunk-QYAREHGH.mjs";
12
+
13
+ // src/hooks/deploy.ts
14
+ import { useEffect, useMemo } from "react";
15
+ import { FunctionType, getUserFunctionIdInMetadata } from "@dxos/functions";
16
+ import { log } from "@dxos/log";
17
+ import { useClient } from "@dxos/react-client";
18
+ import { Query, Ref, getMeta, getSpace, useQuery } from "@dxos/react-client/echo";
19
+ import { createMenuAction } from "@dxos/react-ui-menu";
20
+ import { errorMessageColors } from "@dxos/react-ui-theme";
21
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-script/src/hooks/deploy.ts";
22
+ var createDeploy = ({ state, script, space, fn, client, existingFunctionId, t }) => {
23
+ const errorItem = createMenuAction("error", () => {
24
+ }, {
25
+ label: state.error ?? [
26
+ "no error label",
27
+ {
28
+ ns: SCRIPT_PLUGIN
29
+ }
30
+ ],
31
+ icon: "ph--warning-circle--regular",
32
+ hidden: !state.error,
33
+ classNames: state.error && errorMessageColors
34
+ });
35
+ const deployAction = createMenuAction("deploy", async () => {
36
+ if (!script.source || !space) {
37
+ return;
38
+ }
39
+ state.error = void 0;
40
+ state.deploying = true;
41
+ const result = await deployScript({
42
+ script,
43
+ client,
44
+ space,
45
+ fn,
46
+ existingFunctionId
47
+ });
48
+ if (!result.success) {
49
+ log.catch(result.error, void 0, {
50
+ F: __dxlog_file,
51
+ L: 59,
52
+ S: void 0,
53
+ C: (f, a) => f(...a)
54
+ });
55
+ state.error = t("upload failed label");
56
+ }
57
+ state.deploying = false;
58
+ }, {
59
+ type: "deploy",
60
+ label: [
61
+ state.deploying ? "pending label" : "deploy label",
62
+ {
63
+ ns: SCRIPT_PLUGIN
64
+ }
65
+ ],
66
+ icon: state.deploying ? "ph--spinner-gap--regular" : "ph--cloud-arrow-up--regular",
67
+ disabled: state.deploying,
68
+ classNames: state.deploying ? "[&_svg]:animate-spin" : ""
69
+ });
70
+ const copyAction = createMenuAction("copy", async () => {
71
+ if (!state.functionUrl) {
72
+ return;
73
+ }
74
+ await navigator.clipboard.writeText(state.functionUrl);
75
+ }, {
76
+ type: "copy",
77
+ label: [
78
+ "copy link label",
79
+ {
80
+ ns: SCRIPT_PLUGIN
81
+ }
82
+ ],
83
+ icon: "ph--link--regular",
84
+ disabled: !state.functionUrl
85
+ });
86
+ return {
87
+ nodes: [
88
+ errorItem,
89
+ deployAction,
90
+ copyAction
91
+ ],
92
+ edges: [
93
+ {
94
+ source: "root",
95
+ target: "error"
96
+ },
97
+ {
98
+ source: "root",
99
+ target: "deploy"
100
+ },
101
+ {
102
+ source: "root",
103
+ target: "copy"
104
+ }
105
+ ]
106
+ };
107
+ };
108
+ var useDeployState = ({ state, script }) => {
109
+ const { space, client, fn, existingFunctionId } = useDeployDeps({
110
+ script
111
+ });
112
+ useEffect(() => {
113
+ if (!existingFunctionId) {
114
+ return;
115
+ }
116
+ state.functionUrl = getFunctionUrl({
117
+ script,
118
+ fn,
119
+ edgeUrl: client.config.values.runtime?.services?.edge?.url ?? ""
120
+ });
121
+ }, [
122
+ existingFunctionId,
123
+ space,
124
+ fn,
125
+ script,
126
+ client.config.values.runtime?.services?.edge?.url
127
+ ]);
128
+ useEffect(() => {
129
+ state.deployed = isScriptDeployed({
130
+ script,
131
+ fn
132
+ });
133
+ }, [
134
+ script.changed,
135
+ existingFunctionId,
136
+ fn,
137
+ script
138
+ ]);
139
+ };
140
+ var useDeployDeps = ({ script }) => {
141
+ const space = getSpace(script);
142
+ const [fn] = useQuery(space, Query.type(FunctionType, {
143
+ source: Ref.make(script)
144
+ }));
145
+ const client = useClient();
146
+ const existingFunctionId = useMemo(() => fn && getUserFunctionIdInMetadata(getMeta(fn)), [
147
+ fn
148
+ ]);
149
+ return {
150
+ space,
151
+ fn,
152
+ client,
153
+ existingFunctionId
154
+ };
155
+ };
156
+
157
+ // src/hooks/useToolbarState.ts
158
+ import { useMemo as useMemo2 } from "react";
159
+ import { live } from "@dxos/live-object";
160
+ var useToolbarState = (initialState = {}) => {
161
+ return useMemo2(() => live(initialState), []);
162
+ };
163
+
164
+ // src/hooks/format.ts
165
+ import { format } from "prettier";
166
+ import prettierPluginEstree from "prettier/plugins/estree";
167
+ import prettierPluginTypescript from "prettier/plugins/typescript";
168
+ import { log as log2 } from "@dxos/log";
169
+ import { createMenuAction as createMenuAction2 } from "@dxos/react-ui-menu";
170
+ var __dxlog_file2 = "/__w/dxos/dxos/packages/plugins/plugin-script/src/hooks/format.ts";
171
+ var createFormat = (script) => {
172
+ const formatAction = createMenuAction2("format", async () => {
173
+ if (!script.source) {
174
+ return;
175
+ }
176
+ try {
177
+ script.source.target.content = await format(script.source.target.content, {
178
+ parser: "typescript",
179
+ plugins: [
180
+ prettierPluginEstree,
181
+ prettierPluginTypescript
182
+ ],
183
+ semi: true,
184
+ singleQuote: true
185
+ });
186
+ } catch (err) {
187
+ log2.catch(err, void 0, {
188
+ F: __dxlog_file2,
189
+ L: 34,
190
+ S: void 0,
191
+ C: (f, a) => f(...a)
192
+ });
193
+ }
194
+ }, {
195
+ label: [
196
+ "format label",
197
+ {
198
+ ns: SCRIPT_PLUGIN
199
+ }
200
+ ],
201
+ icon: "ph--magic-wand--regular"
202
+ });
203
+ return {
204
+ nodes: [
205
+ formatAction
206
+ ],
207
+ edges: [
208
+ {
209
+ source: "root",
210
+ target: "format"
211
+ }
212
+ ]
213
+ };
214
+ };
215
+
216
+ // src/hooks/template.ts
217
+ import { Obj } from "@dxos/echo";
218
+ import { FUNCTIONS_PRESET_META_KEY } from "@dxos/functions";
219
+ import { createMenuAction as createMenuAction3, createMenuItemGroup } from "@dxos/react-ui-menu";
220
+ var createTemplateSelectGroup = () => {
221
+ return createMenuItemGroup("template-select", {
222
+ label: [
223
+ "template select group label",
224
+ {
225
+ ns: SCRIPT_PLUGIN
226
+ }
227
+ ],
228
+ variant: "dropdownMenu"
229
+ });
230
+ };
231
+ var createTemplateSelectActions = (script) => {
232
+ return templates.map((template) => {
233
+ return createMenuAction3(`template--${template.id}`, () => {
234
+ script.name = template.name;
235
+ script.source.target.content = template.source;
236
+ const metaKeys = Obj.getMeta(script).keys;
237
+ const oldPresetIndex = metaKeys.findIndex((key) => key.source === FUNCTIONS_PRESET_META_KEY);
238
+ if (oldPresetIndex >= 0) {
239
+ metaKeys.splice(oldPresetIndex, 1);
240
+ }
241
+ if (template.presetId) {
242
+ metaKeys.push({
243
+ source: FUNCTIONS_PRESET_META_KEY,
244
+ id: template.presetId
245
+ });
246
+ }
247
+ }, {
248
+ label: template.name,
249
+ value: template.id,
250
+ type: "template"
251
+ });
252
+ });
253
+ };
254
+ var createTemplateSelect = (script) => {
255
+ const templateSelectGroup = createTemplateSelectGroup();
256
+ const templateSelectActions = createTemplateSelectActions(script);
257
+ return {
258
+ nodes: [
259
+ templateSelectGroup,
260
+ ...templateSelectActions
261
+ ],
262
+ edges: [
263
+ {
264
+ source: "root",
265
+ target: "template-select"
266
+ },
267
+ ...templateSelectActions.map((action) => ({
268
+ source: "template-select",
269
+ target: action.id
270
+ }))
271
+ ]
272
+ };
273
+ };
274
+
275
+ export {
276
+ createDeploy,
277
+ useDeployState,
278
+ useDeployDeps,
279
+ createFormat,
280
+ createTemplateSelect,
281
+ useToolbarState
282
+ };
283
+ //# sourceMappingURL=chunk-6CAH7VIE.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/hooks/deploy.ts", "../../../src/hooks/useToolbarState.ts", "../../../src/hooks/format.ts", "../../../src/hooks/template.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { useEffect, useMemo } from 'react';\n\nimport { FunctionType, type ScriptType, getUserFunctionIdInMetadata } from '@dxos/functions';\nimport { log } from '@dxos/log';\nimport { type Client, useClient } from '@dxos/react-client';\nimport { Query, Ref, type Space, getMeta, getSpace, useQuery } from '@dxos/react-client/echo';\nimport { type TFunction } from '@dxos/react-ui';\nimport { createMenuAction } from '@dxos/react-ui-menu';\nimport { errorMessageColors } from '@dxos/react-ui-theme';\n\nimport { SCRIPT_PLUGIN } from '../meta';\nimport { deployScript, getFunctionUrl, isScriptDeployed } from '../util';\n\nexport type DeployActionProperties = { type: 'deploy' } | { type: 'copy' };\n\nexport type DeployState = {\n deploying: boolean;\n deployed: boolean;\n functionUrl: string;\n error: string;\n};\n\nexport type CreateDeployOptions = {\n state: Partial<DeployState>;\n script: ScriptType;\n fn: FunctionType;\n space?: Space;\n existingFunctionId?: string;\n client: Client;\n t: TFunction;\n};\n\nexport const createDeploy = ({ state, script, space, fn, client, existingFunctionId, t }: CreateDeployOptions) => {\n // TODO(wittjosiah): Should this be an action?\n const errorItem = createMenuAction('error', () => {}, {\n label: state.error ?? ['no error label', { ns: SCRIPT_PLUGIN }],\n icon: 'ph--warning-circle--regular',\n hidden: !state.error,\n classNames: state.error && errorMessageColors,\n });\n\n const deployAction = createMenuAction<DeployActionProperties>(\n 'deploy',\n async () => {\n if (!script.source || !space) {\n return;\n }\n\n state.error = undefined;\n state.deploying = true;\n\n const result = await deployScript({ script, client, space, fn, existingFunctionId });\n\n if (!result.success) {\n log.catch(result.error);\n state.error = t('upload failed label');\n }\n\n state.deploying = false;\n },\n {\n type: 'deploy',\n label: [state.deploying ? 'pending label' : 'deploy label', { ns: SCRIPT_PLUGIN }],\n icon: state.deploying ? 'ph--spinner-gap--regular' : 'ph--cloud-arrow-up--regular',\n disabled: state.deploying,\n classNames: state.deploying ? '[&_svg]:animate-spin' : '',\n },\n );\n\n const copyAction = createMenuAction<DeployActionProperties>(\n 'copy',\n async () => {\n if (!state.functionUrl) {\n return;\n }\n await navigator.clipboard.writeText(state.functionUrl);\n },\n {\n type: 'copy',\n label: ['copy link label', { ns: SCRIPT_PLUGIN }],\n icon: 'ph--link--regular',\n disabled: !state.functionUrl,\n },\n );\n\n return {\n nodes: [errorItem, deployAction, copyAction],\n edges: [\n { source: 'root', target: 'error' },\n { source: 'root', target: 'deploy' },\n { source: 'root', target: 'copy' },\n ],\n };\n};\n\nexport const useDeployState = ({ state, script }: { state: Partial<DeployState>; script: ScriptType }) => {\n const { space, client, fn, existingFunctionId } = useDeployDeps({ script });\n useEffect(() => {\n if (!existingFunctionId) {\n return;\n }\n\n state.functionUrl = getFunctionUrl({\n script,\n fn,\n edgeUrl: client.config.values.runtime?.services?.edge?.url ?? '',\n });\n }, [existingFunctionId, space, fn, script, client.config.values.runtime?.services?.edge?.url]);\n\n useEffect(() => {\n state.deployed = isScriptDeployed({ script, fn });\n }, [script.changed, existingFunctionId, fn, script]);\n};\n\nexport const useDeployDeps = ({ script }: { script: ScriptType }) => {\n const space = getSpace(script);\n const [fn] = useQuery(space, Query.type(FunctionType, { source: Ref.make(script) }));\n const client = useClient();\n const existingFunctionId = useMemo(() => fn && getUserFunctionIdInMetadata(getMeta(fn)), [fn]);\n return { space, fn, client, existingFunctionId };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useMemo } from 'react';\n\nimport { live } from '@dxos/live-object';\n\nimport { type DeployState } from './deploy';\n\nexport type ScriptToolbarState = Partial<DeployState>;\n\n// TODO(burdon): Replace with context provider?\nexport const useToolbarState = (initialState: ScriptToolbarState = {}) => {\n return useMemo(() => live<ScriptToolbarState>(initialState), []);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { format } from 'prettier';\nimport prettierPluginEstree from 'prettier/plugins/estree';\nimport prettierPluginTypescript from 'prettier/plugins/typescript';\n\nimport { type ScriptType } from '@dxos/functions';\nimport { log } from '@dxos/log';\nimport { createMenuAction } from '@dxos/react-ui-menu';\n\nimport { SCRIPT_PLUGIN } from '../meta';\n\nexport type FormatActionProperties = { type: 'format' };\n\nexport const createFormat = (script: ScriptType) => {\n const formatAction = createMenuAction(\n 'format',\n async () => {\n if (!script.source) {\n return;\n }\n\n try {\n script.source.target!.content = await format(script.source.target!.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 },\n {\n label: ['format label', { ns: SCRIPT_PLUGIN }],\n icon: 'ph--magic-wand--regular',\n },\n );\n\n return {\n nodes: [formatAction],\n edges: [\n {\n source: 'root',\n target: 'format',\n },\n ],\n };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Obj } from '@dxos/echo';\nimport { FUNCTIONS_PRESET_META_KEY, type ScriptType } from '@dxos/functions';\nimport { createMenuAction, createMenuItemGroup } from '@dxos/react-ui-menu';\n\nimport { SCRIPT_PLUGIN } from '../meta';\nimport { templates } from '../templates';\n\nexport type TemplateActionProperties = { type: 'template'; value: string };\n\nconst createTemplateSelectGroup = () => {\n return createMenuItemGroup('template-select', {\n label: ['template select group label', { ns: SCRIPT_PLUGIN }],\n variant: 'dropdownMenu',\n });\n};\n\nconst createTemplateSelectActions = (script: ScriptType) => {\n return templates.map((template) => {\n return createMenuAction<TemplateActionProperties>(\n `template--${template.id}`,\n () => {\n script.name = template.name;\n script.source!.target!.content = template.source;\n const metaKeys = Obj.getMeta(script).keys;\n const oldPresetIndex = metaKeys.findIndex((key) => key.source === FUNCTIONS_PRESET_META_KEY);\n if (oldPresetIndex >= 0) {\n metaKeys.splice(oldPresetIndex, 1);\n }\n if (template.presetId) {\n metaKeys.push({ source: FUNCTIONS_PRESET_META_KEY, id: template.presetId });\n }\n },\n {\n label: template.name,\n value: template.id,\n type: 'template',\n },\n );\n });\n};\n\nexport const createTemplateSelect = (script: ScriptType) => {\n const templateSelectGroup = createTemplateSelectGroup();\n const templateSelectActions = createTemplateSelectActions(script);\n return {\n nodes: [templateSelectGroup, ...templateSelectActions],\n edges: [\n { source: 'root', target: 'template-select' },\n ...templateSelectActions.map((action) => ({ source: 'template-select', target: action.id })),\n ],\n };\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["useEffect", "useMemo", "FunctionType", "getUserFunctionIdInMetadata", "log", "useClient", "Query", "Ref", "getMeta", "getSpace", "useQuery", "createMenuAction", "errorMessageColors", "createDeploy", "state", "script", "space", "fn", "client", "existingFunctionId", "t", "errorItem", "createMenuAction", "label", "error", "ns", "SCRIPT_PLUGIN", "icon", "hidden", "classNames", "errorMessageColors", "deployAction", "source", "undefined", "deploying", "result", "deployScript", "success", "log", "catch", "type", "disabled", "copyAction", "functionUrl", "navigator", "clipboard", "writeText", "nodes", "edges", "target", "useDeployState", "useDeployDeps", "useEffect", "getFunctionUrl", "edgeUrl", "config", "values", "runtime", "services", "edge", "url", "deployed", "isScriptDeployed", "changed", "getSpace", "useQuery", "Query", "FunctionType", "Ref", "make", "useClient", "useMemo", "getUserFunctionIdInMetadata", "getMeta", "useMemo", "live", "useToolbarState", "initialState", "useMemo", "live", "format", "prettierPluginEstree", "prettierPluginTypescript", "log", "createMenuAction", "createFormat", "script", "formatAction", "createMenuAction", "source", "target", "content", "format", "parser", "plugins", "prettierPluginEstree", "prettierPluginTypescript", "semi", "singleQuote", "err", "log", "catch", "label", "ns", "SCRIPT_PLUGIN", "icon", "nodes", "edges", "Obj", "FUNCTIONS_PRESET_META_KEY", "createMenuAction", "createMenuItemGroup", "createTemplateSelectGroup", "createMenuItemGroup", "label", "ns", "SCRIPT_PLUGIN", "variant", "createTemplateSelectActions", "script", "templates", "map", "template", "createMenuAction", "id", "name", "source", "target", "content", "metaKeys", "Obj", "getMeta", "keys", "oldPresetIndex", "findIndex", "key", "FUNCTIONS_PRESET_META_KEY", "splice", "presetId", "push", "value", "type", "createTemplateSelect", "templateSelectGroup", "templateSelectActions", "nodes", "edges", "action"]
7
+ }