windmill-components 1.394.8 → 1.405.5

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 (305) hide show
  1. package/package/assets/app.css +20 -0
  2. package/package/ata/edgeCases.d.ts +0 -1
  3. package/package/ata/edgeCases.js +2 -8
  4. package/package/ata/index.js +4 -3
  5. package/package/common.d.ts +1 -1
  6. package/package/common.js +2 -2
  7. package/package/components/ApiConnectForm.svelte +33 -7
  8. package/package/components/AppConnectLightweightResourcePicker.svelte +66 -0
  9. package/package/components/AppConnectLightweightResourcePicker.svelte.d.ts +21 -0
  10. package/package/components/ArgInput.svelte +10 -4
  11. package/package/components/ArgInput.svelte.d.ts +1 -0
  12. package/package/components/CenteredModal.svelte +4 -1
  13. package/package/components/CenteredModal.svelte.d.ts +1 -0
  14. package/package/components/CustomPopover.svelte +1 -1
  15. package/package/components/DateInput.svelte +2 -0
  16. package/package/components/DateInput.svelte.d.ts +1 -0
  17. package/package/components/DefaultScripts.svelte +8 -3
  18. package/package/components/DefaultScripts.svelte.d.ts +5 -1
  19. package/package/components/DefaultScriptsInner.svelte +16 -7
  20. package/package/components/DefaultScriptsInner.svelte.d.ts +3 -1
  21. package/package/components/Dev.svelte +68 -11
  22. package/package/components/DisplayResult.svelte +1 -1
  23. package/package/components/DropdownV2.svelte.d.ts +3 -3
  24. package/package/components/DropdownV2Inner.svelte.d.ts +3 -3
  25. package/package/components/EditableSchemaForm.svelte +1 -0
  26. package/package/components/Editor.svelte +3 -2
  27. package/package/components/Editor.svelte.d.ts +1 -1
  28. package/package/components/ExecutionDuration.svelte +44 -0
  29. package/package/components/ExecutionDuration.svelte.d.ts +24 -0
  30. package/package/components/FlowBuilder.svelte +22 -12
  31. package/package/components/FlowBuilder.svelte.d.ts +1 -0
  32. package/package/components/FlowGraphViewer.svelte +9 -2
  33. package/package/components/FlowGraphViewerStep.svelte +23 -10
  34. package/package/components/FlowInputViewer.svelte +25 -0
  35. package/package/components/FlowInputViewer.svelte.d.ts +19 -0
  36. package/package/components/FlowJobResult.svelte +8 -2
  37. package/package/components/FlowJobResult.svelte.d.ts +1 -0
  38. package/package/components/FlowMetadata.svelte +2 -2
  39. package/package/components/FlowStatusViewer.svelte +3 -1
  40. package/package/components/FlowStatusViewer.svelte.d.ts +1 -0
  41. package/package/components/FlowStatusViewerInner.svelte +21 -5
  42. package/package/components/FlowTimeline.svelte +3 -3
  43. package/package/components/FlowViewer.svelte +2 -21
  44. package/package/components/HighlightCode.svelte +3 -0
  45. package/package/components/IconedResourceType.svelte +17 -10
  46. package/package/components/IconedResourceType.svelte.d.ts +2 -0
  47. package/package/components/IdEditorInput.svelte +0 -1
  48. package/package/components/InstanceSettings.svelte +247 -129
  49. package/package/components/InstanceSettings.svelte.d.ts +2 -0
  50. package/package/components/JobArgs.svelte +3 -1
  51. package/package/components/LightweightArgInput.svelte +35 -10
  52. package/package/components/LightweightArgInput.svelte.d.ts +1 -0
  53. package/package/components/LightweightObjectResourceInput.svelte +2 -0
  54. package/package/components/LightweightObjectResourceInput.svelte.d.ts +1 -0
  55. package/package/components/LightweightResourcePicker.svelte +34 -30
  56. package/package/components/LightweightSchemaForm.svelte +2 -0
  57. package/package/components/LightweightSchemaForm.svelte.d.ts +1 -0
  58. package/package/components/LogViewer.svelte +4 -3
  59. package/package/components/LogViewer.svelte.d.ts +1 -0
  60. package/package/components/Login.svelte +10 -5
  61. package/package/components/Login.svelte.d.ts +1 -0
  62. package/package/components/ManualPopover.svelte +1 -1
  63. package/package/components/ModulePreview.svelte +21 -2
  64. package/package/components/ModuleStatus.svelte +3 -0
  65. package/package/components/ModuleStatus.svelte.d.ts +1 -0
  66. package/package/components/OAuthSetting.svelte +40 -15
  67. package/package/components/ObjectResourceInput.svelte +5 -2
  68. package/package/components/ObjectResourceInput.svelte.d.ts +2 -0
  69. package/package/components/ObjectStoreConfigSettings.svelte +78 -76
  70. package/package/components/ParqetCsvTableRenderer.svelte +25 -3
  71. package/package/components/Password.svelte.d.ts +1 -1
  72. package/package/components/Path.svelte +74 -54
  73. package/package/components/Path.svelte.d.ts +2 -1
  74. package/package/components/Popover.svelte +1 -1
  75. package/package/components/Portal.svelte +7 -8
  76. package/package/components/Portal.svelte.d.ts +3 -7
  77. package/package/components/QueueMetricsDrawer.svelte +368 -3
  78. package/package/components/QueueMetricsDrawer.svelte.d.ts +2 -0
  79. package/package/components/ResourceEditor.svelte +38 -10
  80. package/package/components/ResourcePicker.svelte +14 -9
  81. package/package/components/ResourcePicker.svelte.d.ts +1 -0
  82. package/package/components/ResultJobLoader.svelte +6 -3
  83. package/package/components/ResultJobLoader.svelte.d.ts +1 -1
  84. package/package/components/RunForm.svelte +1 -1
  85. package/package/components/SavedInputs.svelte +2 -2
  86. package/package/components/ScheduleEditorInner.svelte +2 -2
  87. package/package/components/SchemaForm.svelte +6 -1
  88. package/package/components/ScriptBuilder.svelte +12 -5
  89. package/package/components/ScriptEditor.svelte +33 -3
  90. package/package/components/ScriptEditor.svelte.d.ts +1 -1
  91. package/package/components/ScriptVersionHistory.svelte +54 -59
  92. package/package/components/Scrollable.svelte +47 -0
  93. package/package/components/Scrollable.svelte.d.ts +21 -0
  94. package/package/components/ShareModal.svelte.d.ts +2 -2
  95. package/package/components/SuperadminSettings.svelte +5 -7
  96. package/package/components/TestConnection.svelte +1 -0
  97. package/package/components/TestJobLoader.svelte +46 -5
  98. package/package/components/TestJobLoader.svelte.d.ts +2 -1
  99. package/package/components/TimeAgo.svelte +5 -6
  100. package/package/components/TimeAgo.svelte.d.ts +1 -1
  101. package/package/components/ToggleHubWorkspaceQuick.svelte +14 -0
  102. package/package/components/ToggleHubWorkspaceQuick.svelte.d.ts +16 -0
  103. package/package/components/WorkspaceGroup.svelte +3 -2
  104. package/package/components/apps/components/buttons/AppButton.svelte +1 -1
  105. package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte +1 -1
  106. package/package/components/apps/components/helpers/DebouncedInput.svelte +9 -1
  107. package/package/components/apps/components/inputs/AppMultiSelect.svelte +1 -1
  108. package/package/components/apps/components/inputs/AppMultiSelectV2.svelte +1 -1
  109. package/package/components/apps/components/inputs/AppSelect.svelte +1 -1
  110. package/package/components/apps/components/layout/AppDrawer.svelte +1 -1
  111. package/package/components/apps/components/layout/AppModal.svelte +1 -1
  112. package/package/components/apps/editor/AppEditor.svelte +11 -3
  113. package/package/components/apps/editor/GridEditor.svelte +57 -4
  114. package/package/components/apps/editor/GridEditor.svelte.d.ts +8 -0
  115. package/package/components/apps/editor/GridEditorMenu.svelte +1 -1
  116. package/package/components/apps/editor/SubGridEditor.svelte +82 -3
  117. package/package/components/apps/editor/SubGridEditor.svelte.d.ts +16 -0
  118. package/package/components/apps/editor/appUtils.d.ts +19 -2
  119. package/package/components/apps/editor/appUtils.js +103 -7
  120. package/package/components/apps/editor/component/Component.svelte +36 -8
  121. package/package/components/apps/editor/component/Component.svelte.d.ts +3 -1
  122. package/package/components/apps/editor/component/components.d.ts +79 -79
  123. package/package/components/apps/editor/contextPanel/components/OutputHeader.svelte +1 -1
  124. package/package/components/apps/svelte-grid/Grid.svelte +235 -12
  125. package/package/components/apps/svelte-grid/Grid.svelte.d.ts +7 -7
  126. package/package/components/apps/svelte-grid/MoveResize.svelte +104 -11
  127. package/package/components/apps/svelte-grid/MoveResize.svelte.d.ts +7 -0
  128. package/package/components/apps/svelte-grid/utils/item.d.ts +4 -1
  129. package/package/components/apps/svelte-grid/utils/item.js +2 -3
  130. package/package/components/apps/svelte-select/lib/ConditionalPortal.svelte +1 -1
  131. package/package/components/apps/svelte-select/lib/ConditionalPortalGlobal.svelte +1 -1
  132. package/package/components/apps/svelte-select/lib/Select.svelte +1 -1
  133. package/package/components/common/button/ButtonDropdown.svelte +1 -1
  134. package/package/components/common/drawer/ConditionalPortal.svelte +1 -1
  135. package/package/components/common/fileUpload/FileUpload.svelte +1 -1
  136. package/package/components/common/languageIcons/LanguageIcon.svelte +5 -2
  137. package/package/components/common/menu/Menu.svelte +2 -1
  138. package/package/components/common/menu/MenuV2.svelte +4 -2
  139. package/package/components/common/menu/MenuV2.svelte.d.ts +1 -0
  140. package/package/components/common/modal/AlwaysMountedModal.svelte +1 -1
  141. package/package/components/common/popup/Popup.svelte +22 -12
  142. package/package/components/common/popup/Popup.svelte.d.ts +2 -0
  143. package/package/components/common/popup/PopupV2.svelte +58 -0
  144. package/package/components/common/popup/PopupV2.svelte.d.ts +27 -0
  145. package/package/components/copilot/CronGen.svelte +1 -1
  146. package/package/components/copilot/RegexGen.svelte +4 -4
  147. package/package/components/copilot/StepGen.svelte +6 -6
  148. package/package/components/copilot/StepGenQuick.svelte +58 -0
  149. package/package/components/copilot/StepGenQuick.svelte.d.ts +24 -0
  150. package/package/components/copilot/flow.d.ts +2 -0
  151. package/package/components/copilot/flow.js +55 -0
  152. package/package/components/details/DetailPageDetailPanel.svelte +9 -1
  153. package/package/components/details/DetailPageDetailPanel.svelte.d.ts +2 -1
  154. package/package/components/details/DetailPageLayout.svelte +2 -0
  155. package/package/components/details/DetailPageLayout.svelte.d.ts +3 -0
  156. package/package/components/details/Menu.svelte +1 -1
  157. package/package/components/details/utils.d.ts +0 -1
  158. package/package/components/details/utils.js +1 -12
  159. package/package/components/flows/CreateActionsApp.svelte +1 -1
  160. package/package/components/flows/FlowEditor.svelte +4 -2
  161. package/package/components/flows/FlowEditor.svelte.d.ts +1 -0
  162. package/package/components/flows/FlowHistory.svelte +10 -195
  163. package/package/components/flows/FlowHistory.svelte.d.ts +0 -1
  164. package/package/components/flows/FlowHistoryInner.svelte +200 -0
  165. package/package/components/flows/FlowHistoryInner.svelte.d.ts +19 -0
  166. package/package/components/flows/FlowProgressBar.svelte +16 -1
  167. package/package/components/flows/FlowProgressBar.svelte.d.ts +1 -0
  168. package/package/components/flows/content/FlowBranchesAllWrapper.svelte +8 -0
  169. package/package/components/flows/content/FlowBranchesAllWrapper.svelte.d.ts +1 -0
  170. package/package/components/flows/content/FlowBranchesOneWrapper.svelte +8 -0
  171. package/package/components/flows/content/FlowBranchesOneWrapper.svelte.d.ts +1 -0
  172. package/package/components/flows/content/FlowConstants.svelte +1 -1
  173. package/package/components/flows/content/FlowEditorPanel.svelte +5 -1
  174. package/package/components/flows/content/FlowEditorPanel.svelte.d.ts +1 -0
  175. package/package/components/flows/content/FlowInput.svelte +66 -58
  176. package/package/components/flows/content/FlowInput.svelte.d.ts +1 -0
  177. package/package/components/flows/content/FlowInputs.svelte +7 -6
  178. package/package/components/flows/content/FlowInputs.svelte.d.ts +1 -0
  179. package/package/components/flows/content/FlowInputsFlowQuick.svelte +65 -0
  180. package/package/components/flows/content/FlowInputsFlowQuick.svelte.d.ts +19 -0
  181. package/package/components/flows/content/FlowInputsQuick.svelte +419 -0
  182. package/package/components/flows/content/FlowInputsQuick.svelte.d.ts +33 -0
  183. package/package/components/flows/content/FlowLoop.svelte +7 -1
  184. package/package/components/flows/content/FlowModuleComponent.svelte +12 -3
  185. package/package/components/flows/content/FlowModuleComponent.svelte.d.ts +1 -0
  186. package/package/components/flows/content/FlowModuleScript.svelte +1 -1
  187. package/package/components/flows/content/FlowModuleSkip.svelte +69 -0
  188. package/package/components/flows/content/FlowModuleSkip.svelte.d.ts +20 -0
  189. package/package/components/flows/content/FlowModuleWrapper.svelte +17 -4
  190. package/package/components/flows/content/FlowPreprocessorModule.svelte +16 -0
  191. package/package/components/flows/content/FlowPreprocessorModule.svelte.d.ts +16 -0
  192. package/package/components/flows/content/FlowWhileLoop.svelte +9 -0
  193. package/package/components/flows/content/FlowWhileLoop.svelte.d.ts +1 -0
  194. package/package/components/flows/content/GenAiQuick.svelte +30 -0
  195. package/package/components/flows/content/GenAiQuick.svelte.d.ts +20 -0
  196. package/package/components/flows/content/ScriptEditorDrawer.svelte +3 -2
  197. package/package/components/flows/flowInfers.js +1 -1
  198. package/package/components/flows/header/FlowPreviewButtons.svelte +1 -0
  199. package/package/components/flows/idUtils.js +3 -1
  200. package/package/components/flows/map/FlowCopilotButton.svelte +55 -0
  201. package/package/components/flows/map/FlowCopilotButton.svelte.d.ts +16 -0
  202. package/package/components/flows/map/FlowErrorHandlerItem.svelte +77 -47
  203. package/package/components/flows/map/FlowJobsMenu.svelte +1 -1
  204. package/package/components/flows/map/FlowModuleSchemaItem.svelte +25 -12
  205. package/package/components/flows/map/FlowModuleSchemaItem.svelte.d.ts +1 -0
  206. package/package/components/flows/map/FlowModuleSchemaMap.svelte +64 -20
  207. package/package/components/flows/map/InsertModuleButton.svelte +161 -138
  208. package/package/components/flows/map/InsertModuleButton.svelte.d.ts +7 -4
  209. package/package/components/flows/map/MapItem.svelte +11 -0
  210. package/package/components/flows/map/MapItem.svelte.d.ts +1 -0
  211. package/package/components/flows/pickers/FlowScriptPickerQuick.svelte +48 -0
  212. package/package/components/flows/pickers/FlowScriptPickerQuick.svelte.d.ts +23 -0
  213. package/package/components/flows/pickers/FlowToplevelNode.svelte +19 -0
  214. package/package/components/flows/pickers/FlowToplevelNode.svelte.d.ts +19 -0
  215. package/package/components/flows/pickers/PickHubScriptQuick.svelte +138 -0
  216. package/package/components/flows/pickers/PickHubScriptQuick.svelte.d.ts +33 -0
  217. package/package/components/flows/pickers/TopLevelNode.svelte +58 -0
  218. package/package/components/flows/pickers/TopLevelNode.svelte.d.ts +21 -0
  219. package/package/components/flows/pickers/WorkspaceScriptPickerQuick.svelte +120 -0
  220. package/package/components/flows/pickers/WorkspaceScriptPickerQuick.svelte.d.ts +35 -0
  221. package/package/components/flows/types.d.ts +1 -0
  222. package/package/components/graph/FlowGraphV2.svelte +93 -58
  223. package/package/components/graph/FlowGraphV2.svelte.d.ts +2 -1
  224. package/package/components/graph/graphBuilder.d.ts +2 -1
  225. package/package/components/graph/graphBuilder.js +345 -280
  226. package/package/components/graph/model.d.ts +2 -0
  227. package/package/components/graph/renderers/edges/BaseEdge.svelte +36 -14
  228. package/package/components/graph/renderers/nodes/BranchOneStart.svelte +1 -1
  229. package/package/components/graph/renderers/nodes/InputNode.svelte +31 -51
  230. package/package/components/graph/renderers/nodes/InputNode.svelte.d.ts +6 -1
  231. package/package/components/graph/renderers/nodes/ModuleNode.svelte +2 -1
  232. package/package/components/graph/util.d.ts +1 -1
  233. package/package/components/graph/util.js +7 -2
  234. package/package/components/home/ListFiltersQuick.svelte +51 -0
  235. package/package/components/home/ListFiltersQuick.svelte.d.ts +23 -0
  236. package/package/components/icons/AnsibleIcon.svelte +42 -0
  237. package/package/components/icons/AnsibleIcon.svelte.d.ts +25 -0
  238. package/package/components/icons/WindmillIcon.svelte +119 -105
  239. package/package/components/icons/WindmillIcon2.svelte +141 -0
  240. package/package/components/icons/WindmillIcon2.svelte.d.ts +20 -0
  241. package/package/components/icons/index.d.ts +2 -1
  242. package/package/components/icons/index.js +2 -1
  243. package/package/components/icons/store.d.ts +4 -0
  244. package/package/components/icons/store.js +1 -0
  245. package/package/components/instanceSettings.d.ts +2 -2
  246. package/package/components/instanceSettings.js +25 -58
  247. package/package/components/jobs/JobProgressBar.svelte +52 -0
  248. package/package/components/jobs/JobProgressBar.svelte.d.ts +23 -0
  249. package/package/components/multiselect/MultiSelectWrapper.svelte +1 -1
  250. package/package/components/progressBar/ProgressBar.svelte +18 -1
  251. package/package/components/progressBar/ProgressBar.svelte.d.ts +3 -0
  252. package/package/components/propertyPicker/ObjectViewer.svelte +1 -1
  253. package/package/components/runs/JobPreview.svelte +1 -0
  254. package/package/components/runs/PreprocessedArgsDisplay.svelte +71 -0
  255. package/package/components/runs/PreprocessedArgsDisplay.svelte.d.ts +16 -0
  256. package/package/components/runs/RunRow.svelte +3 -7
  257. package/package/components/schema/AddProperty.svelte +1 -0
  258. package/package/components/schema/EditableSchemaWrapper.svelte +142 -19
  259. package/package/components/schema/EditableSchemaWrapper.svelte.d.ts +1 -0
  260. package/package/components/schema/FlowPropertyEditor.svelte +13 -0
  261. package/package/components/schema/FlowPropertyEditor.svelte.d.ts +1 -0
  262. package/package/components/scriptEditor/LogPanel.svelte +1 -0
  263. package/package/components/scriptEditor/LogPanel.svelte.d.ts +3 -1
  264. package/package/components/search/GlobalSearchModal.svelte +3 -2
  265. package/package/components/sidebar/SidebarContent.svelte +69 -8
  266. package/package/components/sidebar/changelogs.js +10 -0
  267. package/package/components/triggers/RouteEditor.svelte +19 -0
  268. package/package/components/triggers/RouteEditor.svelte.d.ts +21 -0
  269. package/package/components/triggers/RouteEditorInner.svelte +327 -0
  270. package/package/components/triggers/RouteEditorInner.svelte.d.ts +21 -0
  271. package/package/components/triggers/RoutesPanel.svelte +74 -0
  272. package/package/components/triggers/RoutesPanel.svelte.d.ts +17 -0
  273. package/package/editorUtils.js +2 -0
  274. package/package/gen/core/OpenAPI.js +1 -1
  275. package/package/gen/schemas.gen.d.ts +159 -8
  276. package/package/gen/schemas.gen.js +161 -8
  277. package/package/gen/services.gen.d.ts +139 -1
  278. package/package/gen/services.gen.js +282 -1
  279. package/package/gen/types.gen.d.ts +455 -12
  280. package/package/hubPaths.json +6 -8
  281. package/package/infer.d.ts +4 -2
  282. package/package/infer.js +25 -23
  283. package/package/inferArgSig.js +8 -2
  284. package/package/monaco_workers/graphql.worker.bundle.js +45440 -174
  285. package/package/relative_imports.d.ts +3 -0
  286. package/package/relative_imports.js +25 -0
  287. package/package/script_helpers.d.ts +38 -34
  288. package/package/script_helpers.js +245 -35
  289. package/package/scripts.d.ts +1 -1
  290. package/package/scripts.js +5 -1
  291. package/package/stores.d.ts +1 -0
  292. package/package/stores.js +1 -0
  293. package/package/utils.d.ts +1 -0
  294. package/package/utils.js +4 -0
  295. package/package.json +38 -7
  296. package/package/components/flows/map/InsertTriggerButton.svelte +0 -48
  297. package/package/components/flows/map/InsertTriggerButton.svelte.d.ts +0 -24
  298. package/package/init_scripts/python_failure_module.d.ts +0 -2
  299. package/package/init_scripts/python_failure_module.js +0 -8
  300. package/package/init_scripts/python_init_code.d.ts +0 -2
  301. package/package/init_scripts/python_init_code.js +0 -40
  302. package/package/init_scripts/python_init_code_clear.d.ts +0 -2
  303. package/package/init_scripts/python_init_code_clear.js +0 -5
  304. package/package/init_scripts/python_init_code_trigger.d.ts +0 -2
  305. package/package/init_scripts/python_init_code_trigger.js +0 -14
@@ -145,3 +145,23 @@ svelte-virtual-list-contents > * + * {
145
145
  rgba(255, 69, 58, 0.2) 20px
146
146
  );
147
147
  }
148
+
149
+ .bg-draggedover {
150
+ background-image: repeating-linear-gradient(
151
+ -45deg,
152
+ rgba(0, 0, 128, 0.2),
153
+ rgba(0, 0, 192, 0.2) 10px,
154
+ rgba(0, 0, 128, 0.2) 10px,
155
+ rgba(0, 0, 192, 0.2) 20px
156
+ );
157
+ }
158
+
159
+ .bg-draggedover-dark {
160
+ background-image: repeating-linear-gradient(
161
+ -45deg,
162
+ rgba(0, 0, 128, 0.6),
163
+ rgba(0, 0, 192, 0.6) 10px,
164
+ rgba(0, 0, 128, 0.6) 10px,
165
+ rgba(0, 0, 192, 0.6) 20px
166
+ );
167
+ }
@@ -1,3 +1,2 @@
1
1
  /** Converts some of the known global imports to node so that we grab the right info */
2
2
  export declare const mapModuleNameToModule: (moduleSpecifier: string) => string;
3
- export declare function isRelativePath(d: string): boolean;
@@ -1,3 +1,4 @@
1
+ import { isTypescriptRelativePath } from '../relative_imports';
1
2
  /** Converts some of the known global imports to node so that we grab the right info */
2
3
  export const mapModuleNameToModule = (moduleSpecifier) => {
3
4
  // in node repl:
@@ -59,7 +60,7 @@ export const mapModuleNameToModule = (moduleSpecifier) => {
59
60
  if (builtInNodeMods.includes(moduleSpecifier.replace('node:', ''))) {
60
61
  return 'node';
61
62
  }
62
- if (isRelativePath(moduleSpecifier)) {
63
+ if (isTypescriptRelativePath(moduleSpecifier)) {
63
64
  return moduleSpecifier;
64
65
  }
65
66
  // strip module filepath e.g. lodash/identity => lodash
@@ -67,10 +68,3 @@ export const mapModuleNameToModule = (moduleSpecifier) => {
67
68
  const moduleName = a.startsWith('@') ? `${a}/${b}` : a;
68
69
  return moduleName;
69
70
  };
70
- export function isRelativePath(d) {
71
- return (d.startsWith('./') ||
72
- d.startsWith('../') ||
73
- d.startsWith('/') ||
74
- d.startsWith('.../') ||
75
- d.startsWith('/'));
76
- }
@@ -1,5 +1,6 @@
1
+ import { isTypescriptRelativePath } from '../relative_imports';
1
2
  import { getDTSFileForModuleWithVersion, getFiletreeForModuleWithVersion, getNPMVersionForModuleReference, getNPMVersionsForModule, isOverlimit, limit } from './apis';
2
- import { isRelativePath, mapModuleNameToModule } from './edgeCases';
3
+ import { mapModuleNameToModule } from './edgeCases';
3
4
  /**
4
5
  * The function which starts up type acquisition,
5
6
  * returns a function which you then pass the initial
@@ -65,7 +66,7 @@ export const setupTypeAcquisition = (config) => {
65
66
  })
66
67
  .filter((f) => !moduleMap.has(f.raw));
67
68
  if (depth == 0) {
68
- const relativeDeps = depsToGet.filter((f) => isRelativePath(f.raw));
69
+ const relativeDeps = depsToGet.filter((f) => isTypescriptRelativePath(f.raw));
69
70
  relativeDeps.forEach(async (f) => {
70
71
  let path = f.raw.startsWith('/')
71
72
  ? f.raw
@@ -80,7 +81,7 @@ export const setupTypeAcquisition = (config) => {
80
81
  });
81
82
  }
82
83
  depsToGet.forEach((dep) => moduleMap.set(dep.raw, { state: 'loading' }));
83
- depsToGet = depsToGet.filter((f) => !isRelativePath(f.raw));
84
+ depsToGet = depsToGet.filter((f) => !isTypescriptRelativePath(f.raw));
84
85
  if (depsToGet.length === 0) {
85
86
  return [];
86
87
  }
@@ -96,6 +96,6 @@ export type Meta = {
96
96
  type Enumerate<N extends number, Acc extends number[] = []> = Acc['length'] extends N ? Acc[number] : Enumerate<N, [...Acc, Acc['length']]>;
97
97
  /** An inclusive range of integer numbers */
98
98
  export type IntRange<F extends number, T extends number> = F | Exclude<Enumerate<T>, Enumerate<F>> | T;
99
- export declare function pathToMeta(path: string): Meta;
99
+ export declare function pathToMeta(path: string, hideUser: boolean): Meta;
100
100
  export declare function prettyLanguage(lang: string): string;
101
101
  export {};
package/package/common.js CHANGED
@@ -38,7 +38,7 @@ export function mergeSchema(schema, enum_payload = {}) {
38
38
  }
39
39
  return new_schema;
40
40
  }
41
- export function pathToMeta(path) {
41
+ export function pathToMeta(path, hideUser) {
42
42
  const splitted = path.split('/');
43
43
  let ownerKind;
44
44
  if (splitted[0] == 'g') {
@@ -53,7 +53,7 @@ export function pathToMeta(path) {
53
53
  else {
54
54
  console.error('Not recognized owner:' + splitted[0]);
55
55
  return {
56
- ownerKind: 'user',
56
+ ownerKind: hideUser ? 'folder' : 'user',
57
57
  owner: '',
58
58
  name: ''
59
59
  };
@@ -53,6 +53,7 @@ let error = '';
53
53
  let rawCode = '';
54
54
  let viewJsonSchema = false;
55
55
  $: rawCode && parseJson();
56
+ $: textFileContent && parseTextFileContent();
56
57
  function switchTab(asJson) {
57
58
  viewJsonSchema = asJson;
58
59
  if (asJson) {
@@ -60,6 +61,9 @@ function switchTab(asJson) {
60
61
  }
61
62
  else {
62
63
  parseJson();
64
+ if (resourceTypeInfo?.format_extension) {
65
+ textFileContent = args.content;
66
+ }
63
67
  }
64
68
  }
65
69
  $: resourceType == 'postgresql' && isSupabaseAvailable();
@@ -89,6 +93,12 @@ function parseConnectionString(close) {
89
93
  }
90
94
  }
91
95
  let rawCodeEditor = undefined;
96
+ let textFileContent;
97
+ function parseTextFileContent() {
98
+ args = {
99
+ content: textFileContent
100
+ };
101
+ }
92
102
  </script>
93
103
 
94
104
  {#if !notFound}
@@ -167,13 +177,29 @@ let rawCodeEditor = undefined;
167
177
  {#if !emptyString(error)}<span class="text-red-400 text-xs mb-1 flex flex-row-reverse"
168
178
  >{error}</span
169
179
  >{:else}<div class="py-2" />{/if}
170
- <SimpleEditor
171
- bind:this={rawCodeEditor}
172
- autoHeight
173
- lang="json"
174
- bind:code={rawCode}
175
- fixedOverflowWidgets={false}
176
- />
180
+ <div class="h-full w-full border p-1 rounded">
181
+ <SimpleEditor
182
+ bind:this={rawCodeEditor}
183
+ autoHeight
184
+ lang="json"
185
+ bind:code={rawCode}
186
+ fixedOverflowWidgets={false}
187
+ />
188
+ </div>
189
+ {:else if resourceTypeInfo?.format_extension}
190
+ <h5 class="mt-4 inline-flex items-center gap-4">
191
+ File content ({resourceTypeInfo.format_extension})
192
+ </h5>
193
+ <div class="py-2" />
194
+ <div class="h-full w-full border p-1 rounded">
195
+ <SimpleEditor
196
+ bind:this={rawCodeEditor}
197
+ autoHeight
198
+ lang={resourceTypeInfo.format_extension}
199
+ bind:code={textFileContent}
200
+ fixedOverflowWidgets={false}
201
+ />
202
+ </div>
177
203
  {:else}
178
204
  <SchemaForm
179
205
  onlyMaskPassword
@@ -0,0 +1,66 @@
1
+ <script>import { base } from '$app/paths';
2
+ import AppConnectInner from './AppConnectInner.svelte';
3
+ import DarkModeObserver from './DarkModeObserver.svelte';
4
+ import { Button } from './common';
5
+ import { workspaceStore } from '../stores';
6
+ import { onMount } from 'svelte';
7
+ export let resourceType = undefined;
8
+ export let workspace;
9
+ export let express = false;
10
+ let step = 1;
11
+ let disabled = false;
12
+ let isGoogleSignin = false;
13
+ let manual = true;
14
+ let appConnect = undefined;
15
+ let darkMode = false;
16
+ if (workspace) {
17
+ $workspaceStore = workspace;
18
+ }
19
+ onMount(async () => {
20
+ if (resourceType) {
21
+ appConnect?.open(resourceType, express);
22
+ }
23
+ });
24
+ </script>
25
+
26
+ <DarkModeObserver bind:darkMode />
27
+
28
+ <div>
29
+ <div class="flex flex-row-reverse w-full">
30
+ <div class="flex gap-2">
31
+ {#if step > 2}
32
+ <Button variant="border" on:click={appConnect?.back}>Back</Button>
33
+ {/if}
34
+
35
+ {#if isGoogleSignin}
36
+ <button {disabled} on:click={appConnect?.next}>
37
+ <img
38
+ class="h-10 w-auto object-contain"
39
+ src={darkMode ? base + '/google_signin_dark.png' : base + '/google_signin_light.png'}
40
+ alt="Google sign-in"
41
+ />
42
+ </button>
43
+ {:else}
44
+ <Button {disabled} on:click={appConnect?.next}>
45
+ {#if step == 2 && !manual}
46
+ Connect
47
+ {:else if step == 1}
48
+ Next
49
+ {:else}
50
+ Save
51
+ {/if}
52
+ </Button>
53
+ {/if}
54
+ </div>
55
+ </div>
56
+ <AppConnectInner
57
+ bind:this={appConnect}
58
+ bind:step
59
+ bind:resourceType
60
+ bind:isGoogleSignin
61
+ bind:disabled
62
+ bind:manual
63
+ on:error
64
+ on:refresh
65
+ />
66
+ </div>
@@ -0,0 +1,21 @@
1
+ import { SvelteComponent } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ resourceType?: string | undefined;
5
+ workspace: string;
6
+ express?: boolean | undefined;
7
+ };
8
+ events: {
9
+ error: CustomEvent<any>;
10
+ refresh: CustomEvent<any>;
11
+ } & {
12
+ [evt: string]: CustomEvent<any>;
13
+ };
14
+ slots: {};
15
+ };
16
+ export type AppConnectLightweightResourcePickerProps = typeof __propDef.props;
17
+ export type AppConnectLightweightResourcePickerEvents = typeof __propDef.events;
18
+ export type AppConnectLightweightResourcePickerSlots = typeof __propDef.slots;
19
+ export default class AppConnectLightweightResourcePicker extends SvelteComponent<AppConnectLightweightResourcePickerProps, AppConnectLightweightResourcePickerEvents, AppConnectLightweightResourcePickerSlots> {
20
+ }
21
+ export {};
@@ -67,6 +67,7 @@ export let order = undefined;
67
67
  export let editor = undefined;
68
68
  export let orderEditable = false;
69
69
  export let shouldDispatchChanges = false;
70
+ export let noDefaultOnSelectFirst = false;
70
71
  export let helperScript = undefined;
71
72
  export let otherArgs = {};
72
73
  let oneOfSelected = undefined;
@@ -218,7 +219,8 @@ function testRegex(pattern, value) {
218
219
  }
219
220
  }
220
221
  function onKeyDown(e) {
221
- if ((e.ctrlKey || e.metaKey) && e.key == 'Enter') {
222
+ if ((e.ctrlKey || e.metaKey) &&
223
+ (e.key == 'Enter' || e.key == 'c' || e.key == 'v' || e.key == 'x')) {
222
224
  return;
223
225
  }
224
226
  e.stopPropagation();
@@ -494,11 +496,14 @@ $: shouldDispatchChanges && debounced(value);
494
496
  {:else if inputCat == 'resource-object' && (resourceTypes == undefined || (format.split('-').length > 1 && resourceTypes.includes(format.substring('resource-'.length))))}
495
497
  <ObjectResourceInput
496
498
  {defaultValue}
497
- selectFirst
499
+ selectFirst={!noDefaultOnSelectFirst}
498
500
  {disablePortal}
499
501
  {format}
500
502
  bind:value
501
503
  bind:editor
504
+ on:clear={() => {
505
+ defaultValue = null
506
+ }}
502
507
  {showSchemaExplorer}
503
508
  />
504
509
  {:else if inputCat == 'resource-object' && format.split('-').length > 1 && format
@@ -542,7 +547,8 @@ $: shouldDispatchChanges && debounced(value);
542
547
  randomFileKey={true}
543
548
  on:addition={(evt) => {
544
549
  value = {
545
- s3: evt.detail?.path ?? ''
550
+ s3: evt.detail?.path ?? '',
551
+ filename: evt.detail?.filename ?? ''
546
552
  }
547
553
  }}
548
554
  on:deletion={(evt) => {
@@ -763,7 +769,7 @@ $: shouldDispatchChanges && debounced(value);
763
769
  </div>
764
770
  {:else if inputCat == 'resource-string'}
765
771
  <ResourcePicker
766
- selectFirst
772
+ selectFirst={noDefaultOnSelectFirst}
767
773
  {disablePortal}
768
774
  bind:value
769
775
  initialValue={defaultValue}
@@ -57,6 +57,7 @@ declare const __propDef: {
57
57
  editor?: SimpleEditor | undefined;
58
58
  orderEditable?: boolean | undefined;
59
59
  shouldDispatchChanges?: boolean | undefined;
60
+ noDefaultOnSelectFirst?: boolean | undefined;
60
61
  helperScript?: {
61
62
  type: 'inline';
62
63
  path?: string | undefined;
@@ -5,6 +5,7 @@ import LoginPageHeader from './LoginPageHeader.svelte';
5
5
  export let subtitle = undefined;
6
6
  export let title = 'Windmill';
7
7
  export let disableLogo = false;
8
+ export let large = false;
8
9
  setLicense();
9
10
  </script>
10
11
 
@@ -20,7 +21,9 @@ setLicense();
20
21
  {/if}
21
22
 
22
23
  <div
23
- class="border rounded-md shadow-md bg-surface w-full max-w-[640px] p-4 sm:py-8 sm:px-10 mb-6 md:mb-20 z-10"
24
+ class="border rounded-md shadow-md bg-surface w-full {large
25
+ ? 'max-w-5xl'
26
+ : 'max-w-[640px]'} p-4 sm:py-8 sm:px-10 mb-6 md:mb-20 z-10"
24
27
  >
25
28
  <div class="mb-10">
26
29
  <h1 class="text-center text-primary">
@@ -4,6 +4,7 @@ declare const __propDef: {
4
4
  subtitle?: string | undefined;
5
5
  title?: string | undefined;
6
6
  disableLogo?: boolean | undefined;
7
+ large?: boolean | undefined;
7
8
  };
8
9
  events: {
9
10
  [evt: string]: CustomEvent<any>;
@@ -59,7 +59,7 @@ $: focusEl && focusEl?.focus();
59
59
  </button>
60
60
  {/if}
61
61
  {#if showTooltip && !disablePopup}
62
- <Portal>
62
+ <Portal name="custom-popover">
63
63
  <!-- svelte-ignore a11y-no-static-element-interactions -->
64
64
  <div
65
65
  use:popperContent={popperOptions}
@@ -6,6 +6,7 @@ export let autofocus = false;
6
6
  export let minDate = undefined;
7
7
  export let maxDate = undefined;
8
8
  export let dateFormat = 'dd-MM-yyyy';
9
+ export let disabled = false;
9
10
  let date = computeDate(value);
10
11
  const dispatch = createEventDispatcher();
11
12
  const defaultDateFormat = 'dd-MM-yyyy';
@@ -60,6 +61,7 @@ let randomId = 'datetarget-' + Math.random().toString(36).substring(7);
60
61
  <div class="flex flex-row gap-1 items-center w-full" id={randomId} on:pointerdown on:focus>
61
62
  <!-- svelte-ignore a11y-autofocus -->
62
63
  <input
64
+ {disabled}
63
65
  type="date"
64
66
  bind:value={date}
65
67
  {autofocus}
@@ -6,6 +6,7 @@ declare const __propDef: {
6
6
  minDate?: string | undefined;
7
7
  maxDate?: string | undefined;
8
8
  dateFormat?: string | undefined;
9
+ disabled?: boolean | undefined;
9
10
  };
10
11
  events: {
11
12
  pointerdown: PointerEvent;
@@ -5,10 +5,13 @@ import Drawer from './common/drawer/Drawer.svelte';
5
5
  import DrawerContent from './common/drawer/DrawerContent.svelte';
6
6
  import DefaultScriptsInner from './DefaultScriptsInner.svelte';
7
7
  let drawer;
8
+ export let placement = 'left';
9
+ export let size = 'xs2';
10
+ export let noText = false;
8
11
  </script>
9
12
 
10
13
  {#if $userStore?.is_admin || $userStore?.is_super_admin}
11
- <Drawer bind:this={drawer} placement="left">
14
+ <Drawer bind:this={drawer} {placement}>
12
15
  <DrawerContent title="Edit Default Scripts" on:close={drawer.closeDrawer}>
13
16
  <DefaultScriptsInner />
14
17
  </DrawerContent>
@@ -17,8 +20,10 @@ let drawer;
17
20
  on:click={drawer?.openDrawer}
18
21
  startIcon={{ icon: SettingsIcon }}
19
22
  color="light"
20
- size="xs2"
23
+ {size}
21
24
  btnClasses="!text-tertiary"
22
- variant="contained">defaults</Button
25
+ variant="contained"
23
26
  >
27
+ {noText ? '' : 'defaults'}
28
+ </Button>
24
29
  {/if}
@@ -1,6 +1,10 @@
1
1
  import { SvelteComponent } from "svelte";
2
2
  declare const __propDef: {
3
- props: Record<string, never>;
3
+ props: {
4
+ placement?: "right" | "left" | undefined;
5
+ size?: "xs3" | "xs2" | undefined;
6
+ noText?: boolean | undefined;
7
+ };
4
8
  events: {
5
9
  [evt: string]: CustomEvent<any>;
6
10
  };
@@ -4,6 +4,7 @@ import { flip } from 'svelte/animate';
4
4
  import Toggle from './Toggle.svelte';
5
5
  import { defaultScriptLanguages } from '../scripts';
6
6
  import Alert from './common/alert/Alert.svelte';
7
+ export let small = false;
7
8
  $: langs = computeLangs($defaultScripts);
8
9
  function computeLangs(defaultScripts) {
9
10
  const allLangs = Object.keys(defaultScriptLanguages);
@@ -31,24 +32,32 @@ async function changePosition(i, up) {
31
32
  }
32
33
  </script>
33
34
 
34
- <Alert title="Global to workspace" type="info" class="mb-4">
35
+ <Alert title="Global to workspace" type="info" class="mb-4" size={small ? 'xs' : 'sm'}>
35
36
  This setting is only available to admins and will affect all users in the workspace.
36
37
  </Alert>
37
- <div class="h-full w-full flex-col gap-2 flex">
38
+ <div class="h-full w-full flex-col {small ? 'gap-0' : 'gap-2'} flex">
38
39
  {#each langs as lang, i (lang)}
39
40
  <div
40
41
  animate:flip={{ duration: 300 }}
41
- class="w-full p-2 rounded border border-seconadry grid grid-cols-3"
42
- ><h3>{lang}</h3>
42
+ class="w-full p-2 rounded {small
43
+ ? ''
44
+ : 'border border-secondary'} grid grid-cols-3 items-center"
45
+ ><h3 class={small ? 'text-xs font-medium justify-center' : ''}>{lang}</h3>
43
46
  <div>
44
47
  {#if i > 0}
45
- <button on:click={() => changePosition(i ?? 0, true)} class="text-lg mr-2">
48
+ <button
49
+ on:click={() => changePosition(i ?? 0, true)}
50
+ class={small ? 'mr-2 text-secondary text-sm' : 'text-lg mr-2'}
51
+ title="Move up"
52
+ >
46
53
  &uparrow;</button
47
54
  >
48
55
  {/if}
49
56
  {#if i < langs.length - 1}
50
- <button on:click={() => changePosition(i ?? 0, false)} class="text-lg mr-2"
51
- >&downarrow;</button
57
+ <button
58
+ on:click={() => changePosition(i ?? 0, false)}
59
+ class={small ? 'mr-2 text-secondary text-sm' : 'text-lg mr-2'}
60
+ title="Move down">&downarrow;</button
52
61
  >
53
62
  {/if}</div
54
63
  >
@@ -1,6 +1,8 @@
1
1
  import { SvelteComponent } from "svelte";
2
2
  declare const __propDef: {
3
- props: Record<string, never>;
3
+ props: {
4
+ small?: boolean | undefined;
5
+ };
4
6
  events: {
5
7
  [evt: string]: CustomEvent<any>;
6
8
  };
@@ -25,13 +25,16 @@ import Toggle from './Toggle.svelte';
25
25
  import { setLicense } from '../enterpriseUtils';
26
26
  import { workspacedOpenai } from './copilot/lib';
27
27
  import { pickScript } from './flows/flowStateUtils';
28
+ import { approximateFindPythonRelativePath, isTypescriptRelativePath, parseTypescriptDeps } from '../relative_imports';
29
+ import Tooltip from './Tooltip.svelte';
28
30
  $: token = $page.url.searchParams.get('wm_token') ?? undefined;
29
31
  $: workspace = $page.url.searchParams.get('workspace') ?? undefined;
30
32
  $: themeDarkRaw = $page.url.searchParams.get('activeColorTheme');
31
33
  $: themeDark = themeDarkRaw == '2' || themeDarkRaw == '4';
32
34
  $: if (token) {
33
35
  OpenAPI.WITH_CREDENTIALS = true;
34
- OpenAPI.TOKEN = $page.url.searchParams.get('wm_token');
36
+ OpenAPI.TOKEN = token;
37
+ loadUser();
35
38
  }
36
39
  let flowCopilotContext = {
37
40
  drawerStore: writable(undefined),
@@ -125,7 +128,7 @@ let useLock = false;
125
128
  let lockChanges = false;
126
129
  let timeout = undefined;
127
130
  let loadingCodebaseButton = false;
128
- let lastBundleCommandId = '';
131
+ let lastCommandId = '';
129
132
  const el = (event) => {
130
133
  // sendUserToast(`Received message from parent ${event.data.type}`, true)
131
134
  if (event.data.type == 'runTest') {
@@ -137,11 +140,19 @@ const el = (event) => {
137
140
  replaceScript(event.data);
138
141
  }
139
142
  else if (event.data.type == 'testBundle') {
140
- if (event.data.id == lastBundleCommandId) {
143
+ if (event.data.id == lastCommandId) {
141
144
  testBundle(event.data.file, event.data.isTar);
142
145
  }
143
146
  else {
144
- sendUserToast(`Bundle received ${lastBundleCommandId} was obsolete, ignoring`, true);
147
+ sendUserToast(`Bundle received ${lastCommandId} was obsolete, ignoring`, true);
148
+ }
149
+ }
150
+ else if (event.data.type == 'testPreviewBundle') {
151
+ if (event.data.id == lastCommandId && currentScript) {
152
+ testJobLoader.runPreview(currentScript.path, event.data.file, currentScript.language, args, currentScript.tag, useLock ? currentScript.lock : undefined);
153
+ }
154
+ else {
155
+ sendUserToast(`Bundle received ${lastCommandId} was obsolete, ignoring`, true);
145
156
  }
146
157
  }
147
158
  else if (event.data.type == 'testBundleError') {
@@ -176,7 +187,7 @@ onMount(() => {
176
187
  repeat: e.repeat,
177
188
  shiftKey: e.shiftKey
178
189
  };
179
- if (obj.ctrlKey && obj.key == 'a') {
190
+ if ((obj.ctrlKey || obj.metaKey) && obj.key == 'a') {
180
191
  e.stopPropagation();
181
192
  return;
182
193
  }
@@ -260,6 +271,7 @@ function connectWs() {
260
271
  console.error(e);
261
272
  }
262
273
  }
274
+ let typescriptBundlePreviewMode = false;
263
275
  function runTest() {
264
276
  if (mode == 'script') {
265
277
  if (!currentScript) {
@@ -267,12 +279,18 @@ function runTest() {
267
279
  }
268
280
  if (currentScript.isCodebase) {
269
281
  loadingCodebaseButton = true;
270
- lastBundleCommandId = Math.random().toString(36).substring(7);
271
- window.parent?.postMessage({ type: 'testBundle', id: lastBundleCommandId }, '*');
282
+ lastCommandId = Math.random().toString(36).substring(7);
283
+ window.parent?.postMessage({ type: 'testBundle', id: lastCommandId }, '*');
272
284
  }
273
285
  else {
274
- //@ts-ignore
275
- testJobLoader.runPreview(currentScript.path, currentScript.content, currentScript.language, args, currentScript.tag, useLock ? currentScript.lock : undefined);
286
+ if (relativePaths.length > 0 && typescriptBundlePreviewMode) {
287
+ lastCommandId = Math.random().toString(36).substring(7);
288
+ window.parent?.postMessage({ type: 'testPreviewBundle', external: ['!/*'], id: lastCommandId }, '*');
289
+ }
290
+ else {
291
+ //@ts-ignore
292
+ testJobLoader.runPreview(currentScript.path, currentScript.content, currentScript.language, args, currentScript.tag, useLock ? currentScript.lock : undefined);
293
+ }
276
294
  }
277
295
  }
278
296
  else {
@@ -298,15 +316,27 @@ async function onKeyDown(event) {
298
316
  else if ((event.ctrlKey || event.metaKey) && event.code === 'KeyX') {
299
317
  document.execCommand('cut');
300
318
  }
319
+ else if ((event.ctrlKey || event.metaKey) && event.code === 'KeyV') {
320
+ event.preventDefault();
321
+ document.execCommand('paste');
322
+ }
301
323
  }
324
+ let relativePaths = [];
302
325
  let lastPath = undefined;
303
326
  async function replaceScript(lastEdit) {
304
327
  currentScript = lastEdit;
305
328
  if (lastPath !== lastEdit.path) {
306
329
  schema = emptySchema();
330
+ relativePaths = [];
307
331
  }
308
332
  try {
309
333
  await inferArgs(lastEdit.language, lastEdit.content, schema);
334
+ if (lastEdit?.language == 'bun') {
335
+ relativePaths = await parseTypescriptDeps(lastEdit.content).filter(isTypescriptRelativePath);
336
+ }
337
+ else if (lastEdit?.language == 'python3') {
338
+ relativePaths = approximateFindPythonRelativePath(lastEdit.content);
339
+ }
310
340
  schema = schema;
311
341
  lastPath = lastEdit.path;
312
342
  validCode = true;
@@ -372,7 +402,8 @@ setContext('FlowEditorContext', {
372
402
  saveDraft: () => { },
373
403
  initialPath: '',
374
404
  flowInputsStore: writable({}),
375
- customUi: {}
405
+ customUi: {},
406
+ insertButtonOpen: writable(false)
376
407
  });
377
408
  $: updateFlow($flowStore);
378
409
  let lastSent = undefined;
@@ -429,7 +460,7 @@ async function inferModuleArgs(selectedIdStore) {
429
460
 
430
461
  <main class="h-screen w-full">
431
462
  {#if mode == 'script'}
432
- <div class="flex flex-col h-full">
463
+ <div class="flex flex-col min-h-full overflow-auto">
433
464
  <div class="absolute top-0 left-2">
434
465
  <DarkModeToggle bind:darkMode bind:this={darkModeToggle} forcedDarkMode={false} />
435
466
  </div>
@@ -458,6 +489,32 @@ async function inferModuleArgs(selectedIdStore) {
458
489
  options={{ left: 'Infer lockfile', right: 'Use current lockfile' }}
459
490
  />
460
491
  </div>
492
+ {#if (currentScript?.language == 'bun' || currentScript?.language == 'python3') && currentScript?.content != undefined}
493
+ {#if relativePaths.length > 0}
494
+ <div class="flex flex-row-reverse py-1">
495
+ {#if currentScript?.language == 'bun'}
496
+ <Toggle
497
+ size="xs"
498
+ bind:checked={typescriptBundlePreviewMode}
499
+ options={{
500
+ left: '',
501
+ right: 'bundle relative paths for preview',
502
+ rightTooltip:
503
+ '(Beta) Instead of only sending the current file for preview and rely on already deployed code for the common logic, bundle all code that is imported in relative paths'
504
+ }}
505
+ />
506
+ {:else if currentScript?.language == 'python3'}
507
+ <div class="text-xs text-yellow-500"
508
+ >relative imports detected<Tooltip
509
+ >Beware that when using relative imports, the code used in preview for those is
510
+ the one that is already deployed. If you make update to the common logic, you will
511
+ need to `wmill sync push` to see it reflected in the preview runs.</Tooltip
512
+ ></div
513
+ >
514
+ {/if}
515
+ </div>
516
+ {/if}
517
+ {/if}
461
518
  <div class="flex justify-center pt-1">
462
519
  {#if testIsLoading}
463
520
  <Button on:click={testJobLoader?.cancelJob} btnClasses="w-full" color="red" size="xs">
@@ -774,7 +774,7 @@ let seeS3PreviewFileFromList = '';
774
774
  </DrawerContent>
775
775
  </Drawer>
776
776
 
777
- <Portal>
777
+ <Portal name="s3filepicker">
778
778
  <S3FilePicker bind:this={s3FileViewer} readOnlyMode={true} />
779
779
  </Portal>
780
780
  {/if}