windmill-components 1.60.4 → 1.70.0

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 (331) hide show
  1. package/assets/app.css +3 -0
  2. package/common.d.ts +5 -1
  3. package/components/ApiConnectForm.svelte +66 -5
  4. package/components/AppConnect.svelte +24 -9
  5. package/components/ArgInput.svelte +1 -1
  6. package/components/CliHelpBox.svelte +49 -0
  7. package/components/CliHelpBox.svelte.d.ts +14 -0
  8. package/components/DisplayResult.svelte +51 -1
  9. package/components/DisplayResult.svelte.d.ts +1 -0
  10. package/components/Editor.svelte +17 -7
  11. package/components/EditorBar.svelte +129 -111
  12. package/components/FlowBuilder.svelte +2 -2
  13. package/components/FlowJobResult.svelte +10 -2
  14. package/components/FlowJobResult.svelte.d.ts +1 -0
  15. package/components/FlowMetadata.svelte +24 -8
  16. package/components/FlowPreviewContent.svelte +3 -4
  17. package/components/FlowStatusViewer.svelte +41 -9
  18. package/components/FolderEditor.svelte +3 -2
  19. package/components/HighlightCode.svelte +7 -1
  20. package/components/InlineCodeCopy.svelte +11 -0
  21. package/components/InlineCodeCopy.svelte.d.ts +16 -0
  22. package/components/InputTransformForm.svelte +9 -5
  23. package/components/LogViewer.svelte +6 -0
  24. package/components/LogViewer.svelte.d.ts +1 -0
  25. package/components/ModulePreview.svelte +11 -2
  26. package/components/MoveDrawer.svelte +1 -1
  27. package/components/Multiselect.svelte.d.ts +2 -2
  28. package/components/ObjectResourceInput.svelte +6 -1
  29. package/components/Path.svelte +14 -5
  30. package/components/Popover.svelte +8 -2
  31. package/components/Popover.svelte.d.ts +1 -0
  32. package/components/Range.svelte.d.ts +2 -2
  33. package/components/ResourceEditor.svelte +39 -16
  34. package/components/ResourcePicker.svelte +0 -1
  35. package/components/RunForm.svelte +26 -2
  36. package/components/RunForm.svelte.d.ts +1 -0
  37. package/components/ScheduleEditor.svelte +1 -1
  38. package/components/SchemaEditor.svelte +2 -2
  39. package/components/SchemaForm.svelte +14 -4
  40. package/components/SchemaForm.svelte.d.ts +1 -0
  41. package/components/ScriptBuilder.svelte +45 -22
  42. package/components/ScriptBuilder.svelte.d.ts +1 -0
  43. package/components/ScriptEditor.svelte +1 -0
  44. package/components/SharedBadge.svelte +5 -5
  45. package/components/Slider.svelte +14 -0
  46. package/components/Slider.svelte.d.ts +19 -0
  47. package/components/StringTypeNarrowing.svelte +0 -1
  48. package/components/SuperadminSettings.svelte +11 -3
  49. package/components/SuperadminSettings.svelte.d.ts +2 -0
  50. package/components/TemplateEditor.svelte.d.ts +204 -0
  51. package/components/TestJobLoader.svelte +3 -3
  52. package/components/Toggle.svelte +1 -2
  53. package/components/UserSettings.svelte +11 -3
  54. package/components/UserSettings.svelte.d.ts +2 -0
  55. package/components/VariableEditor.svelte +1 -1
  56. package/components/WhitelistIp.svelte +23 -0
  57. package/components/WhitelistIp.svelte.d.ts +14 -0
  58. package/components/apps/components/buttons/AppButton.svelte +52 -6
  59. package/components/apps/components/buttons/AppButton.svelte.d.ts +3 -0
  60. package/components/apps/components/{form → buttons}/AppForm.svelte +3 -1
  61. package/components/apps/components/buttons/AppFormButton.svelte +137 -0
  62. package/components/apps/components/buttons/AppFormButton.svelte.d.ts +25 -0
  63. package/components/apps/components/buttons/index.d.ts +3 -0
  64. package/components/apps/components/buttons/index.js +3 -0
  65. package/components/apps/components/{dataDisplay → display}/AppBarChart.svelte +15 -4
  66. package/components/apps/components/{dataDisplay → display}/AppBarChart.svelte.d.ts +1 -0
  67. package/components/apps/components/display/AppDisplayComponent.svelte +31 -0
  68. package/components/apps/components/display/AppDisplayComponent.svelte.d.ts +23 -0
  69. package/components/apps/components/{dataDisplay → display}/AppHtml.svelte +6 -5
  70. package/components/apps/components/{dataDisplay → display}/AppHtml.svelte.d.ts +1 -1
  71. package/components/apps/components/display/AppIcon.svelte +35 -0
  72. package/components/apps/components/display/AppIcon.svelte.d.ts +22 -0
  73. package/components/apps/components/display/AppImage.svelte +27 -0
  74. package/components/apps/components/display/AppImage.svelte.d.ts +22 -0
  75. package/components/apps/components/{dataDisplay → display}/AppPieChart.svelte +2 -1
  76. package/components/apps/components/{dataDisplay → display}/AppPieChart.svelte.d.ts +1 -0
  77. package/components/apps/components/{dataDisplay → display}/AppScatterChart.svelte +2 -1
  78. package/components/apps/components/{dataDisplay → display}/AppScatterChart.svelte.d.ts +1 -0
  79. package/components/apps/components/{dataDisplay → display}/AppText.svelte +16 -14
  80. package/components/apps/components/{dataDisplay → display}/AppText.svelte.d.ts +3 -0
  81. package/components/apps/components/{dataDisplay → display}/AppTimeseries.svelte +3 -2
  82. package/components/apps/components/{dataDisplay → display}/AppTimeseries.svelte.d.ts +1 -0
  83. package/components/apps/components/display/PlotlyHtml.svelte +38 -0
  84. package/components/apps/components/display/PlotlyHtml.svelte.d.ts +24 -0
  85. package/components/apps/components/{dataDisplay → display}/VegaLiteHtml.svelte +2 -3
  86. package/components/apps/components/{dataDisplay → display}/VegaLiteHtml.svelte.d.ts +1 -0
  87. package/components/apps/components/display/index.d.ts +12 -0
  88. package/components/apps/components/display/index.js +12 -0
  89. package/components/apps/components/display/table/AppAggridTable.svelte +83 -0
  90. package/components/apps/components/display/table/AppAggridTable.svelte.d.ts +24 -0
  91. package/components/apps/components/{table → display/table}/AppTable.svelte +32 -21
  92. package/components/apps/components/{table → display/table}/AppTable.svelte.d.ts +4 -2
  93. package/components/apps/components/{table → display/table}/AppTableFooter.svelte +1 -1
  94. package/components/apps/components/helpers/AlignWrapper.svelte +19 -19
  95. package/components/apps/components/helpers/AlignWrapper.svelte.d.ts +4 -2
  96. package/components/apps/components/helpers/HiddenComponent.svelte +22 -0
  97. package/components/apps/components/helpers/HiddenComponent.svelte.d.ts +25 -0
  98. package/components/apps/components/helpers/InputDefaultValue.svelte +17 -0
  99. package/components/apps/components/helpers/InputDefaultValue.svelte.d.ts +17 -0
  100. package/components/apps/components/helpers/InputValue.svelte +5 -7
  101. package/components/apps/components/helpers/InputValue.svelte.d.ts +0 -1
  102. package/components/apps/components/helpers/RunnableComponent.svelte +37 -48
  103. package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +2 -1
  104. package/components/apps/components/helpers/RunnableWrapper.svelte +7 -2
  105. package/components/apps/components/helpers/RunnableWrapper.svelte.d.ts +2 -1
  106. package/components/apps/components/helpers/index.d.ts +10 -0
  107. package/components/apps/components/helpers/index.js +10 -0
  108. package/components/apps/components/icon.d.ts +1 -0
  109. package/components/apps/components/icon.js +18 -0
  110. package/components/apps/components/index.d.ts +5 -0
  111. package/components/apps/components/index.js +5 -0
  112. package/components/apps/components/{selectInputs → inputs}/AppCheckbox.svelte +4 -2
  113. package/components/apps/components/{dateInputs → inputs}/AppDateInput.svelte +6 -0
  114. package/components/apps/components/inputs/AppFileInput.svelte +34 -0
  115. package/components/apps/components/inputs/AppFileInput.svelte.d.ts +20 -0
  116. package/components/apps/components/inputs/AppNumberInput.svelte +48 -0
  117. package/components/apps/components/inputs/AppRangeInput.svelte +44 -0
  118. package/components/apps/components/inputs/AppRangeInput.svelte.d.ts +23 -0
  119. package/components/apps/components/inputs/AppSelect.svelte +90 -0
  120. package/components/apps/components/{selectInputs → inputs}/AppSelect.svelte.d.ts +2 -0
  121. package/components/apps/components/{numberInputs → inputs}/AppSliderInputs.svelte +13 -9
  122. package/components/apps/components/{textInputs → inputs}/AppTextInput.svelte +6 -0
  123. package/components/apps/components/inputs/currency/AppCurrencyInput.svelte +49 -0
  124. package/components/apps/components/inputs/currency/AppCurrencyInput.svelte.d.ts +21 -0
  125. package/components/apps/components/inputs/currency/CurrencyInput.svelte +181 -0
  126. package/components/apps/components/inputs/currency/CurrencyInput.svelte.d.ts +32 -0
  127. package/components/apps/components/inputs/index.d.ts +9 -0
  128. package/components/apps/components/inputs/index.js +9 -0
  129. package/components/apps/components/layout/AppContainer.svelte +32 -0
  130. package/components/apps/components/layout/AppContainer.svelte.d.ts +21 -0
  131. package/components/apps/components/layout/AppDivider.svelte +20 -0
  132. package/components/apps/components/layout/AppDivider.svelte.d.ts +22 -0
  133. package/components/apps/components/layout/AppTabs.svelte +58 -0
  134. package/components/apps/components/layout/AppTabs.svelte.d.ts +24 -0
  135. package/components/apps/components/layout/index.d.ts +3 -0
  136. package/components/apps/components/layout/index.js +3 -0
  137. package/components/apps/editor/AppComponentInput.svelte +33 -0
  138. package/components/apps/editor/AppComponentInput.svelte.d.ts +18 -0
  139. package/components/apps/editor/AppComponentInputs.svelte +13 -0
  140. package/components/apps/editor/AppComponentInputs.svelte.d.ts +20 -0
  141. package/components/apps/editor/AppEditor.svelte +66 -31
  142. package/components/apps/editor/AppEditor.svelte.d.ts +1 -0
  143. package/components/apps/editor/AppEditorHeader.svelte +74 -18
  144. package/components/apps/editor/AppEditorHeader.svelte.d.ts +1 -0
  145. package/components/apps/editor/AppInputs.svelte +60 -0
  146. package/components/apps/editor/AppInputs.svelte.d.ts +14 -0
  147. package/components/apps/editor/AppPreview.svelte +11 -6
  148. package/components/apps/editor/ComponentHeader.svelte +40 -2
  149. package/components/apps/editor/ComponentHeader.svelte.d.ts +1 -1
  150. package/components/apps/editor/GridEditor.svelte +75 -32
  151. package/components/apps/editor/GridEditor.svelte.d.ts +2 -0
  152. package/components/apps/editor/SettingsPanel.svelte +31 -3
  153. package/components/apps/editor/SubGridEditor.svelte +111 -0
  154. package/components/apps/editor/SubGridEditor.svelte.d.ts +24 -0
  155. package/components/apps/editor/TablePanel.svelte +2 -0
  156. package/components/apps/editor/TablePanel.svelte.d.ts +1 -1
  157. package/components/apps/editor/appUtils.d.ts +9 -0
  158. package/components/apps/editor/appUtils.js +141 -0
  159. package/components/apps/editor/component/Component.svelte +209 -0
  160. package/components/apps/editor/component/Component.svelte.d.ts +23 -0
  161. package/components/apps/editor/component/README.md +15 -0
  162. package/components/apps/editor/component/components.d.ts +65 -0
  163. package/components/apps/editor/component/components.js +1102 -0
  164. package/components/apps/editor/component/default-codes.d.ts +3 -0
  165. package/components/apps/editor/component/default-codes.js +322 -0
  166. package/components/apps/editor/component/index.d.ts +4 -0
  167. package/components/apps/editor/component/index.js +4 -0
  168. package/components/apps/editor/component/sets.d.ts +2 -0
  169. package/components/apps/editor/component/sets.js +47 -0
  170. package/components/apps/editor/componentsPanel/ComponentList.svelte +30 -106
  171. package/components/apps/editor/componentsPanel/CssProperty.svelte +31 -0
  172. package/components/apps/editor/componentsPanel/CssProperty.svelte.d.ts +20 -0
  173. package/components/apps/editor/componentsPanel/CssSettings.svelte +141 -0
  174. package/components/apps/editor/componentsPanel/CssSettings.svelte.d.ts +14 -0
  175. package/components/apps/editor/componentsPanel/ListItem.svelte +28 -0
  176. package/components/apps/editor/componentsPanel/ListItem.svelte.d.ts +20 -0
  177. package/components/apps/editor/componentsPanel/componentStaticValues.d.ts +4 -1
  178. package/components/apps/editor/componentsPanel/componentStaticValues.js +4 -1
  179. package/components/apps/editor/contextPanel/ContextPanel.svelte +8 -6
  180. package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte +98 -9
  181. package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +38 -29
  182. package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorPanel.svelte +21 -1
  183. package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanel.svelte +66 -8
  184. package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte +92 -46
  185. package/components/apps/editor/inlineScriptsPanel/utils.d.ts +5 -1
  186. package/components/apps/editor/inlineScriptsPanel/utils.js +30 -0
  187. package/components/apps/editor/settingsPanel/AlignmentEditor.svelte +1 -1
  188. package/components/apps/editor/settingsPanel/AlignmentEditor.svelte.d.ts +1 -1
  189. package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +4 -1
  190. package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte.d.ts +59 -1
  191. package/components/apps/editor/settingsPanel/ComponentPanel.svelte +64 -34
  192. package/components/apps/editor/settingsPanel/ComponentPanel.svelte.d.ts +5 -3
  193. package/components/apps/editor/settingsPanel/GridTab.svelte +73 -0
  194. package/components/apps/editor/settingsPanel/GridTab.svelte.d.ts +18 -0
  195. package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +3 -0
  196. package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte.d.ts +2 -2
  197. package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte +92 -77
  198. package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte.d.ts +1 -0
  199. package/components/apps/editor/settingsPanel/MoveToOtherGrid.svelte +85 -0
  200. package/components/apps/editor/settingsPanel/MoveToOtherGrid.svelte.d.ts +18 -0
  201. package/components/apps/editor/settingsPanel/Recompute.svelte +4 -1
  202. package/components/apps/editor/settingsPanel/TableActions.svelte +17 -6
  203. package/components/apps/editor/settingsPanel/TableActions.svelte.d.ts +2 -1
  204. package/components/apps/editor/settingsPanel/common/PanelSection.svelte +5 -3
  205. package/components/apps/editor/settingsPanel/inputEditor/IconSelectInput.svelte +83 -0
  206. package/components/apps/editor/settingsPanel/inputEditor/IconSelectInput.svelte.d.ts +19 -0
  207. package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +6 -1
  208. package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte.d.ts +2 -0
  209. package/components/apps/editor/settingsPanel/inputEditor/UploadInputEditor.svelte +23 -0
  210. package/components/apps/editor/settingsPanel/inputEditor/UploadInputEditor.svelte.d.ts +17 -0
  211. package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte +3 -20
  212. package/components/apps/gridUtils.d.ts +3 -1
  213. package/components/apps/gridUtils.js +5 -3
  214. package/components/apps/inputType.d.ts +33 -6
  215. package/components/apps/types.d.ts +35 -40
  216. package/components/apps/types.js +1 -1
  217. package/components/apps/utils.d.ts +6 -5
  218. package/components/apps/utils.js +90 -94
  219. package/components/common/button/Button.svelte +12 -5
  220. package/components/common/button/Button.svelte.d.ts +3 -1
  221. package/components/common/button/ButtonPopup.svelte.d.ts +1 -1
  222. package/components/common/button/model.d.ts +2 -2
  223. package/components/common/button/model.js +21 -6
  224. package/components/common/confirmationModal/ConfirmationModal.svelte +8 -1
  225. package/components/common/confirmationModal/UnsavedConfirmationModal.svelte +4 -4
  226. package/components/common/drawer/Drawer.svelte +3 -1
  227. package/components/common/fileInput/FileInput.svelte +112 -0
  228. package/components/common/fileInput/FileInput.svelte.d.ts +27 -0
  229. package/components/common/index.d.ts +1 -0
  230. package/components/common/index.js +1 -0
  231. package/components/common/kbd/Kbd.svelte.d.ts +2 -2
  232. package/components/common/modal/Modal.svelte +74 -0
  233. package/components/common/modal/Modal.svelte.d.ts +22 -0
  234. package/components/common/popup/Popup.svelte +34 -17
  235. package/components/common/popup/Popup.svelte.d.ts +11 -4
  236. package/components/common/table/FlowRow.svelte +22 -3
  237. package/components/common/table/LanguageBadge.svelte +10 -4
  238. package/components/common/table/Row.svelte +1 -1
  239. package/components/common/table/ScriptRow.svelte +2 -2
  240. package/components/common/tabs/Tabs.svelte +9 -7
  241. package/components/common/tabs/Tabs.svelte.d.ts +3 -1
  242. package/components/flows/CreateActionsFlow.svelte +2 -3
  243. package/components/flows/content/BranchPredicateEditor.svelte +10 -8
  244. package/components/flows/content/FlowInputs.svelte +109 -99
  245. package/components/flows/content/FlowLoop.svelte +1 -1
  246. package/components/flows/content/FlowModuleComponent.svelte +3 -2
  247. package/components/flows/content/FlowRetries.svelte +8 -6
  248. package/components/flows/content/FlowSettings.svelte +72 -26
  249. package/components/flows/flowState.d.ts +1 -0
  250. package/components/flows/flowState.js +1 -0
  251. package/components/flows/flowStateUtils.js +4 -2
  252. package/components/flows/flowStore.d.ts +1 -0
  253. package/components/flows/flowStore.js +1 -0
  254. package/components/flows/map/FlowBranchAllMap.svelte +1 -1
  255. package/components/flows/map/FlowBranchOneMap.svelte +2 -2
  256. package/components/flows/map/FlowModuleSchemaItem.svelte +5 -5
  257. package/components/flows/map/FlowModuleSchemaMap.svelte +15 -8
  258. package/components/flows/map/FlowModuleSchemaMap.svelte.d.ts +1 -0
  259. package/components/flows/map/InsertModuleButton.svelte +24 -10
  260. package/components/flows/map/InsertModuleButton.svelte.d.ts +1 -0
  261. package/components/flows/map/MapItem.svelte +3 -1
  262. package/components/flows/utils.js +16 -10
  263. package/components/graph/FlowGraph.svelte +38 -15
  264. package/components/graph/FlowGraph.svelte.d.ts +1 -0
  265. package/components/icons/SquareIcon.svelte +9 -0
  266. package/components/icons/SquareIcon.svelte.d.ts +17 -0
  267. package/components/icons/index.d.ts +2 -0
  268. package/components/icons/index.js +2 -0
  269. package/components/jobs/JobDetail.svelte +29 -5
  270. package/components/propertyPicker/ObjectViewer.svelte +8 -5
  271. package/components/propertyPicker/ObjectViewer.svelte.d.ts +1 -0
  272. package/components/propertyPicker/PropPicker.svelte +8 -1
  273. package/components/propertyPicker/PropPickerResult.svelte +1 -1
  274. package/components/random_positive_adjetive.d.ts +1 -0
  275. package/components/random_positive_adjetive.js +961 -0
  276. package/components/scriptEditor/LogPanel.svelte +2 -1
  277. package/components/sidebar/SidebarContent.svelte +1 -1
  278. package/components/sidebar/UserMenu.svelte +46 -16
  279. package/components/sidebar/UserMenu.svelte.d.ts +0 -3
  280. package/components/sidebar/WorkspaceMenu.svelte +3 -1
  281. package/components/sidebar/settings.d.ts +2 -0
  282. package/components/sidebar/settings.js +2 -0
  283. package/gen/core/OpenAPI.js +1 -1
  284. package/gen/models/CompletedJob.d.ts +1 -0
  285. package/gen/models/FlowModule.d.ts +0 -1
  286. package/gen/models/QueuedJob.d.ts +1 -0
  287. package/gen/models/WorkerPing.d.ts +1 -1
  288. package/gen/services/FlowService.d.ts +9 -0
  289. package/gen/services/FlowService.js +15 -0
  290. package/gen/services/JobService.d.ts +97 -15
  291. package/gen/services/JobService.js +74 -15
  292. package/gen/services/ScriptService.d.ts +10 -1
  293. package/gen/services/ScriptService.js +16 -1
  294. package/gen/services/VariableService.d.ts +4 -2
  295. package/gen/services/VariableService.js +8 -2
  296. package/gen/services/WorkspaceService.d.ts +17 -0
  297. package/gen/services/WorkspaceService.js +16 -0
  298. package/infer.js +3 -0
  299. package/init_scripts/python_failure_module.py +10 -0
  300. package/init_scripts/python_init_code.py +37 -0
  301. package/init_scripts/python_init_code_clear.py +5 -0
  302. package/init_scripts/python_init_code_trigger.py +14 -0
  303. package/logout.js +2 -1
  304. package/package.json +577 -522
  305. package/script_helpers.d.ts +6 -5
  306. package/script_helpers.js +7 -73
  307. package/stores.d.ts +5 -1
  308. package/stores.js +8 -1
  309. package/user.d.ts +1 -1
  310. package/user.js +14 -8
  311. package/utils.d.ts +1 -1
  312. package/utils.js +8 -7
  313. package/components/apps/components/DisplayComponent.svelte +0 -16
  314. package/components/apps/components/DisplayComponent.svelte.d.ts +0 -20
  315. package/components/apps/components/numberInputs/AppNumberInput.svelte +0 -33
  316. package/components/apps/components/selectInputs/AppSelect.svelte +0 -47
  317. package/components/apps/editor/ComponentEditor.svelte +0 -145
  318. package/components/apps/editor/ComponentEditor.svelte.d.ts +0 -23
  319. package/components/apps/editor/componentsPanel/data.d.ts +0 -3
  320. package/components/apps/editor/componentsPanel/data.js +0 -499
  321. package/components/apps/editorUtils.d.ts +0 -1
  322. package/components/apps/editorUtils.js +0 -292
  323. /package/components/apps/components/{form → buttons}/AppForm.svelte.d.ts +0 -0
  324. /package/components/apps/components/{table → display/table}/AppTableFooter.svelte.d.ts +0 -0
  325. /package/components/apps/components/{table → display/table}/tableOptions.d.ts +0 -0
  326. /package/components/apps/components/{table → display/table}/tableOptions.js +0 -0
  327. /package/components/apps/components/{selectInputs → inputs}/AppCheckbox.svelte.d.ts +0 -0
  328. /package/components/apps/components/{dateInputs → inputs}/AppDateInput.svelte.d.ts +0 -0
  329. /package/components/apps/components/{numberInputs → inputs}/AppNumberInput.svelte.d.ts +0 -0
  330. /package/components/apps/components/{numberInputs → inputs}/AppSliderInputs.svelte.d.ts +0 -0
  331. /package/components/apps/components/{textInputs → inputs}/AppTextInput.svelte.d.ts +0 -0
@@ -1,5 +1,6 @@
1
1
  <script>import SplitPanesWrapper from '../../splitPanes/SplitPanesWrapper.svelte';
2
2
  import { onMount, setContext } from 'svelte';
3
+ import { twMerge } from 'tailwind-merge';
3
4
  import { Pane, Splitpanes } from 'svelte-splitpanes';
4
5
  import { writable } from 'svelte/store';
5
6
  import { buildWorld } from '../rx';
@@ -10,9 +11,9 @@ import TabContent from '../../common/tabs/TabContent.svelte';
10
11
  import { Alert, Button, Tab } from '../../common';
11
12
  import ComponentList from './componentsPanel/ComponentList.svelte';
12
13
  import Icon from 'svelte-awesome';
13
- import { faPlus, faSliders } from '@fortawesome/free-solid-svg-icons';
14
+ import { faCode, faPlus, faSliders } from '@fortawesome/free-solid-svg-icons';
14
15
  import ContextPanel from './contextPanel/ContextPanel.svelte';
15
- import { classNames, encodeState } from '../../../utils';
16
+ import { encodeState } from '../../../utils';
16
17
  import AppPreview from './AppPreview.svelte';
17
18
  import { userStore, workspaceStore } from '../../../stores';
18
19
  import InlineScriptsPanel from './inlineScriptsPanel/InlineScriptsPanel.svelte';
@@ -20,11 +21,14 @@ import SettingsPanel from './SettingsPanel.svelte';
20
21
  import { fly } from 'svelte/transition';
21
22
  import UnsavedConfirmationModal from '../../common/confirmationModal/UnsavedConfirmationModal.svelte';
22
23
  import { page } from '$app/stores';
24
+ import CssSettings from './componentsPanel/CssSettings.svelte';
25
+ import { findGridItem } from './appUtils';
23
26
  export let app;
24
27
  export let path;
25
28
  export let initialMode = 'dnd';
26
29
  export let policy;
27
30
  export let summary;
31
+ export let fromHub = false;
28
32
  const appStore = writable(app);
29
33
  const worldStore = writable(undefined);
30
34
  const staticOutputs = writable({});
@@ -38,6 +42,8 @@ const connectingInput = writable({
38
42
  hoveredComponent: undefined
39
43
  });
40
44
  const runnableComponents = writable({});
45
+ const errorByComponent = writable({});
46
+ const focusedGrid = writable(undefined);
41
47
  setContext('AppEditorContext', {
42
48
  worldStore,
43
49
  staticOutputs,
@@ -55,7 +61,10 @@ setContext('AppEditorContext', {
55
61
  isEditor: true,
56
62
  jobs: writable([]),
57
63
  staticExporter: writable({}),
58
- noBackend: false
64
+ noBackend: false,
65
+ errorByComponent,
66
+ openDebugRun: writable(undefined),
67
+ focusedGrid
59
68
  });
60
69
  let timeout = undefined;
61
70
  $: $appStore && saveDraft();
@@ -99,21 +108,28 @@ else {
99
108
  {#if !$userStore?.operator}
100
109
  <UnsavedConfirmationModal />
101
110
  {#if initialMode !== 'preview'}
102
- <AppEditorHeader {policy} />
111
+ <AppEditorHeader {policy} {fromHub} />
103
112
  {/if}
104
113
 
105
114
  {#if previewing}
106
- <AppPreview
107
- workspace={$workspaceStore ?? ''}
108
- summary={$summaryStore}
109
- app={$appStore}
110
- appPath={path}
111
- {breakpoint}
112
- {policy}
113
- isEditor
114
- {context}
115
- noBackend={false}
116
- />
115
+ <SplitPanesWrapper>
116
+ <div
117
+ class={twMerge('bg-gray-100 h-full w-full', $appStore.css?.['app']?.['viewer']?.class)}
118
+ style={$appStore.css?.['app']?.['viewer']?.style}
119
+ >
120
+ <AppPreview
121
+ workspace={$workspaceStore ?? ''}
122
+ summary={$summaryStore}
123
+ app={$appStore}
124
+ appPath={path}
125
+ {breakpoint}
126
+ {policy}
127
+ isEditor
128
+ {context}
129
+ noBackend={false}
130
+ />
131
+ </div>
132
+ </SplitPanesWrapper>
117
133
  {:else}
118
134
  <SplitPanesWrapper>
119
135
  <Splitpanes class="max-w-full overflow-hidden">
@@ -125,15 +141,23 @@ else {
125
141
  <Splitpanes horizontal>
126
142
  <Pane size={$connectingInput?.opened ? 100 : 70}>
127
143
  <div
128
- class="bg-gray-100 relative w-full h-full overflow-auto {app.fullscreen
129
- ? ''
130
- : 'max-w-6xl'}"
144
+ class={twMerge(
145
+ 'bg-gray-100 h-full w-full',
146
+ $appStore.css?.['app']?.['viewer']?.class
147
+ )}
148
+ style={$appStore.css?.['app']?.['viewer']?.style}
131
149
  >
132
- {#if $appStore.grid}
133
- <div class={classNames('p-4 mx-auto', width)}>
134
- <GridEditor {policy} />
135
- </div>
136
- {/if}
150
+ <div
151
+ class="relative mx-auto w-full h-full overflow-auto {app.fullscreen
152
+ ? ''
153
+ : 'max-w-6xl'}"
154
+ >
155
+ {#if $appStore.grid}
156
+ <div class={width}>
157
+ <GridEditor {policy} />
158
+ </div>
159
+ {/if}
160
+ </div>
137
161
  </div>
138
162
  </Pane>
139
163
  <Pane size={$connectingInput?.opened ? 0 : 30}>
@@ -146,31 +170,42 @@ else {
146
170
  </Pane>
147
171
  <Pane size={21} minSize={5} maxSize={33}>
148
172
  <div class="relative flex flex-col h-full">
149
- <Tabs bind:selected={selectedTab}>
150
- <Tab value="insert" size="xs">
151
- <div class="m-1 flex flex-row gap-2">
173
+ <Tabs bind:selected={selectedTab} class="!border-b-2 !border-gray-200">
174
+ <Tab value="insert" size="xs" class="grow">
175
+ <div class="m-1 center-center gap-2">
152
176
  <Icon data={faPlus} />
153
177
  <span>Insert</span>
154
178
  </div>
155
179
  </Tab>
156
- <Tab value="settings" size="xs">
157
- <div class="m-1 flex flex-row gap-2">
180
+ <Tab value="settings" size="xs" class="grow">
181
+ <div class="m-1 center-center gap-2">
158
182
  <Icon data={faSliders} />
159
183
  <span>Settings</span>
160
184
  </div>
161
185
  </Tab>
162
- <svelte:fragment slot="content">
186
+ <Tab value="css" size="xs" class="grow">
187
+ <div class="m-1 center-center gap-2">
188
+ <Icon data={faCode} />
189
+ <span>CSS</span>
190
+ </div>
191
+ </Tab>
192
+ <div slot="content" class="h-full overflow-y-auto pb-4">
163
193
  <TabContent class="overflow-auto" value="settings">
164
194
  {#if $selectedComponent !== undefined}
165
195
  <SettingsPanel />
166
196
  {:else}
167
- <div class="p-2 min-w-[150px] text-sm">No component selected.</div>
197
+ <div class="min-w-[150px] text-sm text-gray-500 text-center py-8 px-2">
198
+ Select a component to see the settings&nbsp;for&nbsp;it
199
+ </div>
168
200
  {/if}
169
201
  </TabContent>
170
202
  <TabContent value="insert">
171
203
  <ComponentList />
172
204
  </TabContent>
173
- </svelte:fragment>
205
+ <TabContent value="css">
206
+ <CssSettings />
207
+ </TabContent>
208
+ </div>
174
209
  </Tabs>
175
210
  {#if $connectingInput.opened}
176
211
  <div
@@ -8,6 +8,7 @@ declare const __propDef: {
8
8
  initialMode?: EditorMode | undefined;
9
9
  policy: Policy;
10
10
  summary: string;
11
+ fromHub?: boolean | undefined;
11
12
  };
12
13
  events: {
13
14
  [evt: string]: CustomEvent<any>;
@@ -19,13 +19,14 @@ import Tooltip from '../../Tooltip.svelte';
19
19
  import { AppService, Job, Policy } from '../../../gen';
20
20
  import { userStore, workspaceStore } from '../../../stores';
21
21
  import { faBug, faClipboard, faExternalLink, faFileExport, faGlobe, faSave } from '@fortawesome/free-solid-svg-icons';
22
- import { AlignHorizontalSpaceAround, Expand, Eye, Laptop2, Loader2, MoreVertical, Pencil, Smartphone } from 'lucide-svelte';
22
+ import { AlignHorizontalSpaceAround, Expand, Eye, Laptop2, Loader2, MoreVertical, Pencil, SlidersHorizontal, Smartphone, X } from 'lucide-svelte';
23
23
  import { getContext } from 'svelte';
24
24
  import { Icon } from 'svelte-awesome';
25
25
  import { Pane, Splitpanes } from 'svelte-splitpanes';
26
26
  import { appToHubUrl, classNames, copyToClipboard, sendUserToast } from '../../../utils';
27
27
  import { toStatic } from '../utils';
28
28
  import AppExportButton from './AppExportButton.svelte';
29
+ import AppInputs from './AppInputs.svelte';
29
30
  import PanelSection from './settingsPanel/common/PanelSection.svelte';
30
31
  async function hash(message) {
31
32
  const msgUint8 = new TextEncoder().encode(message); // encode as (utf-8) Uint8Array
@@ -35,20 +36,38 @@ async function hash(message) {
35
36
  return hashHex;
36
37
  }
37
38
  export let policy;
38
- const { app, summary, mode, breakpoint, appPath, jobs, staticExporter } = getContext('AppEditorContext');
39
+ export let fromHub = false;
40
+ const { app, summary, mode, breakpoint, appPath, jobs, staticExporter, errorByComponent, openDebugRun, focusedGrid, selectedComponent } = getContext('AppEditorContext');
39
41
  const loading = {
40
42
  publish: false,
41
43
  save: false
42
44
  };
45
+ $: if ($openDebugRun == undefined) {
46
+ $openDebugRun = (componentId) => {
47
+ jobsDrawerOpen = true;
48
+ const job = $jobs.find((job) => job.component === componentId);
49
+ if (job) {
50
+ selectedJobId = job.job;
51
+ }
52
+ };
53
+ }
43
54
  let newPath = '';
44
55
  let pathError = undefined;
45
56
  let appExport;
46
57
  let saveDrawerOpen = false;
47
58
  let jobsDrawerOpen = false;
48
59
  let publishDrawerOpen = false;
60
+ let inputsDrawerOpen = fromHub;
49
61
  function closeSaveDrawer() {
50
62
  saveDrawerOpen = false;
51
63
  }
64
+ function collectStaticFields(fields) {
65
+ return Object.fromEntries(Object.entries(fields ?? {})
66
+ .filter(([k, v]) => v.type == 'static')
67
+ .map(([k, v]) => {
68
+ return [k, v['value']];
69
+ }));
70
+ }
52
71
  async function computeTriggerables() {
53
72
  const allTriggers = await Promise.all($app.grid
54
73
  .flatMap((x) => {
@@ -61,11 +80,7 @@ async function computeTriggerables() {
61
80
  })
62
81
  .map(async (input) => {
63
82
  if (input?.type == 'runnable') {
64
- const staticInputs = Object.fromEntries(Object.entries(input.fields ?? {})
65
- .filter(([k, v]) => v.type == 'static')
66
- .map(([k, v]) => {
67
- return [k, v['value']];
68
- }));
83
+ const staticInputs = collectStaticFields(input.fields);
69
84
  if (input.runnable?.type == 'runnableByName') {
70
85
  let hex = await hash(input.runnable.inlineScript?.content);
71
86
  return [`rawscript/${hex}`, staticInputs];
@@ -76,8 +91,13 @@ async function computeTriggerables() {
76
91
  }
77
92
  }
78
93
  return [];
79
- }));
80
- policy.triggerables = Object.fromEntries(allTriggers);
94
+ })
95
+ .concat(Object.values($app.hiddenInlineScripts).map(async (v) => {
96
+ let hex = await hash(v.inlineScript?.content);
97
+ const staticInputs = collectStaticFields(v.fields);
98
+ return [`rawscript/${hex}`, staticInputs];
99
+ })));
100
+ policy.triggerables = Object.fromEntries(allTriggers.filter((x) => x.length > 0));
81
101
  policy.on_behalf_of = `u/${$userStore?.username}`;
82
102
  policy.on_behalf_of_email = $userStore?.email;
83
103
  }
@@ -146,6 +166,7 @@ let testJobLoader;
146
166
  let job = undefined;
147
167
  let testIsLoading = false;
148
168
  $: selectedJobId && testJobLoader?.watchJob(selectedJobId);
169
+ $: hasErrors = Object.keys($errorByComponent).length > 0;
149
170
  </script>
150
171
 
151
172
  <TestJobLoader bind:this={testJobLoader} bind:isLoading={testIsLoading} bind:job />
@@ -156,7 +177,7 @@ $: selectedJobId && testJobLoader?.watchJob(selectedJobId);
156
177
  bind:error={pathError}
157
178
  bind:path={newPath}
158
179
  initialPath=""
159
- namePlaceholder="my_app"
180
+ namePlaceholder="app"
160
181
  kind="app"
161
182
  />
162
183
 
@@ -170,6 +191,12 @@ $: selectedJobId && testJobLoader?.watchJob(selectedJobId);
170
191
  </DrawerContent>
171
192
  </Drawer>
172
193
 
194
+ <Drawer bind:open={inputsDrawerOpen} size="600px">
195
+ <DrawerContent title="App inputs configuration" on:close={() => (inputsDrawerOpen = false)}>
196
+ <AppInputs />
197
+ </DrawerContent>
198
+ </Drawer>
199
+
173
200
  <Drawer bind:open={jobsDrawerOpen} size="900px">
174
201
  <DrawerContent noPadding title="Debug Runs" on:close={() => (jobsDrawerOpen = false)}>
175
202
  <Splitpanes class="!overflow-visible">
@@ -181,10 +208,13 @@ $: selectedJobId && testJobLoader?.watchJob(selectedJobId);
181
208
  {#each $jobs ?? [] as { job, component } (job)}
182
209
  <!-- svelte-ignore a11y-click-events-have-key-events -->
183
210
  <div
184
- class="{classNames(
211
+ class={classNames(
185
212
  'border flex gap-1 truncate justify-between flex-row w-full items-center p-2 rounded-md cursor-pointer hover:bg-blue-50 hover:text-blue-400',
186
- selectedJobId == job ? 'bg-blue-100 text-blue-600' : ''
187
- )},"
213
+ $errorByComponent[job] ? 'border border-red-500 bg-red-100' : '',
214
+ selectedJobId == job && !$errorByComponent[component]
215
+ ? 'bg-blue-100 text-blue-600'
216
+ : ''
217
+ )}
188
218
  on:click={() => (selectedJobId = job)}
189
219
  >
190
220
  <span class="text-xs truncate">{job}</span>
@@ -206,12 +236,14 @@ $: selectedJobId && testJobLoader?.watchJob(selectedJobId);
206
236
  {:else}
207
237
  <div class="flex flex-col h-full w-full gap-4 mb-4">
208
238
  {#if job?.['running']}
209
- <div class="flex flex-row-reverse w-full"
210
- ><Button
239
+ <div class="flex flex-row-reverse w-full">
240
+ <Button
211
241
  color="red"
212
242
  variant="border"
213
- on:click={() => testJobLoader?.cancelJob()}>Cancel</Button
243
+ on:click={() => testJobLoader?.cancelJob()}
214
244
  >
245
+ Cancel
246
+ </Button>
215
247
  </div>
216
248
  {/if}
217
249
  <div class="p-2">
@@ -365,7 +397,23 @@ $: selectedJobId && testJobLoader?.watchJob(selectedJobId);
365
397
  </ToggleButtonGroup>
366
398
  </div>
367
399
  </div>
368
- <div class="flex flex-row grow gap-2 justify-end items-center overflow-visible">
400
+ {#if $focusedGrid !== undefined}
401
+ <Badge color="indigo">
402
+ <div class="flex flex-row gap-2 justify-center items-center">
403
+ <div>{`Sub grid: ${$focusedGrid.parentComponentId} (${$focusedGrid.subGridIndex})`}</div>
404
+ <button
405
+ on:click={() => {
406
+ $selectedComponent = undefined
407
+ $focusedGrid = undefined
408
+ }}
409
+ >
410
+ <X size={14} />
411
+ </button>
412
+ </div>
413
+ </Badge>
414
+ {/if}
415
+
416
+ <div class="flex flex-row gap-2 justify-end items-center overflow-visible">
369
417
  <Dropdown
370
418
  placement="bottom-end"
371
419
  btnClasses="!text-gray-700 !bg-transparent hover:!bg-gray-400/20 !p-[6px] hidden lg:block"
@@ -396,10 +444,18 @@ $: selectedJobId && testJobLoader?.watchJob(selectedJobId);
396
444
  >
397
445
  <MoreVertical size={20} />
398
446
  </Dropdown>
447
+ <span class="hidden md:inline">
448
+ <Button on:click={() => (inputsDrawerOpen = true)} color="light" size="xs" variant="border">
449
+ <span class="flex gap-2">
450
+ <SlidersHorizontal size={14} />
451
+ App inputs
452
+ </span>
453
+ </Button>
454
+ </span>
399
455
  <span class="hidden md:inline">
400
456
  <Button
401
457
  on:click={() => (jobsDrawerOpen = true)}
402
- color="light"
458
+ color={hasErrors ? 'red' : 'light'}
403
459
  size="xs"
404
460
  variant="border"
405
461
  startIcon={{ icon: faBug }}
@@ -3,6 +3,7 @@ import { Policy } from '../../../gen';
3
3
  declare const __propDef: {
4
4
  props: {
5
5
  policy: Policy;
6
+ fromHub?: boolean | undefined;
6
7
  };
7
8
  events: {
8
9
  [evt: string]: CustomEvent<any>;
@@ -0,0 +1,60 @@
1
+ <script>import { Alert } from '../../common';
2
+ import Toggle from '../../Toggle.svelte';
3
+ import { getContext } from 'svelte';
4
+ import AppComponentInput from './AppComponentInput.svelte';
5
+ import InputsSpecsEditor from './settingsPanel/InputsSpecsEditor.svelte';
6
+ const { app, lazyGrid } = getContext('AppEditorContext');
7
+ let resourceOnly = true;
8
+ </script>
9
+
10
+ <Alert type="info" title="Configurations">
11
+ In order to properly configure the app, you need to fill in the inputs below.
12
+ </Alert>
13
+ <div class="mt-2 flex flex-row-reverse">
14
+ <Toggle bind:checked={resourceOnly} options={{ right: 'Resource only' }} />
15
+ </div>
16
+ <div class="gap-4 flex flex-col pt-4">
17
+ {#each $lazyGrid as gridItem (gridItem.data.id)}
18
+ <div>
19
+ {#if gridItem.data.type === 'tablecomponent'}
20
+ <div>
21
+ <AppComponentInput bind:component={gridItem.data} {resourceOnly} />
22
+ <div class="ml-4 mt-4">
23
+ {#each gridItem.data.actionButtons as actionButton (actionButton.id)}
24
+ <AppComponentInput bind:component={actionButton.data} {resourceOnly} />
25
+ {/each}
26
+ </div>
27
+ </div>
28
+ {:else}
29
+ <AppComponentInput bind:component={gridItem.data} {resourceOnly} />
30
+ {/if}
31
+ </div>
32
+ {/each}
33
+ </div>
34
+
35
+ {#if $app?.hiddenInlineScripts?.length > 0}
36
+ <div class="font-bold text-lg">Background script inputs</div>
37
+ <div class="gap-4 flex flex-col pt-4">
38
+ {#each $app?.hiddenInlineScripts ?? [] as script, index (script.name)}
39
+ <div class="border p-2">
40
+ <div class="text-sm font-bold">{script.name}</div>
41
+
42
+ {#if resourceOnly && Object.keys(script.fields).filter((fieldKey) => {
43
+ const fields = script.fields
44
+ const field = fields[fieldKey]
45
+ return field.fieldType === 'object' && field.format?.startsWith('resource-')
46
+ }).length === 0}
47
+ <span class="text-sm text-gray-600">No resource input</span>
48
+ {:else}
49
+ <InputsSpecsEditor
50
+ id={`bg_${index}`}
51
+ shouldCapitalize={false}
52
+ bind:inputSpecs={script.fields}
53
+ userInputEnabled={false}
54
+ {resourceOnly}
55
+ />
56
+ {/if}
57
+ </div>
58
+ {/each}
59
+ </div>
60
+ {/if}
@@ -0,0 +1,14 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ declare const __propDef: {
3
+ props: Record<string, never>;
4
+ events: {
5
+ [evt: string]: CustomEvent<any>;
6
+ };
7
+ slots: {};
8
+ };
9
+ export type AppInputsProps = typeof __propDef.props;
10
+ export type AppInputsEvents = typeof __propDef.events;
11
+ export type AppInputsSlots = typeof __propDef.slots;
12
+ export default class AppInputs extends SvelteComponentTyped<AppInputsProps, AppInputsEvents, AppInputsSlots> {
13
+ }
14
+ export {};
@@ -45,7 +45,10 @@ setContext('AppEditorContext', {
45
45
  isEditor,
46
46
  jobs: writable([]),
47
47
  staticExporter: writable({}),
48
- noBackend
48
+ noBackend,
49
+ errorByComponent: writable({}),
50
+ openDebugRun: writable(undefined),
51
+ focusedGrid: writable(undefined)
49
52
  });
50
53
  let mounted = false;
51
54
  onMount(() => {
@@ -57,10 +60,12 @@ $: lockedClasses = isLocked ? '!max-h-[400px] overflow-hidden pointer-events-non
57
60
  </script>
58
61
 
59
62
  <div class="relative">
60
- <div class="{$$props.class} {lockedClasses} h-full max-h-[calc(100%-41px)] overflow-auto
61
- w-full {app.fullscreen ? '' : 'max-w-6xl'} mx-auto">
63
+ <div
64
+ class="{$$props.class} {lockedClasses} h-full
65
+ w-full {app.fullscreen ? '' : 'max-w-6xl'} mx-auto"
66
+ >
62
67
  {#if $appStore.grid}
63
- <div class={classNames('mx-auto pb-4', width)}>
68
+ <div class={classNames('mx-auto', width)}>
64
69
  <GridEditor {policy} />
65
70
  </div>
66
71
  {/if}
@@ -69,10 +74,10 @@ $: lockedClasses = isLocked ? '!max-h-[400px] overflow-hidden pointer-events-non
69
74
  <!-- svelte-ignore a11y-click-events-have-key-events -->
70
75
  <div
71
76
  transition:fade|local={{ duration: 200, easing: cubicOut }}
72
- on:click={() => isLocked = false}
77
+ on:click={() => (isLocked = false)}
73
78
  class="absolute inset-0 center-center bg-black/20 z-50 backdrop-blur-[1px] cursor-pointer"
74
79
  >
75
- <Button on:click={() => isLocked = false}>
80
+ <Button on:click={() => (isLocked = false)}>
76
81
  Unlock preview
77
82
  <Unlock size={18} class="ml-1" strokeWidth={2.5} />
78
83
  </Button>
@@ -1,12 +1,21 @@
1
1
  <script>import { classNames } from '../../../utils';
2
- import { Anchor, Move } from 'lucide-svelte';
3
- import { createEventDispatcher } from 'svelte';
2
+ import { Anchor, Bug, Move } from 'lucide-svelte';
3
+ import { createEventDispatcher, getContext } from 'svelte';
4
+ import Popover from '../../Popover.svelte';
5
+ import { Alert, Button } from '../../common';
4
6
  export let component;
5
7
  export let selected;
6
8
  export let locked = false;
7
9
  export let pointerdown = false;
8
10
  export let hover = false;
9
11
  const dispatch = createEventDispatcher();
12
+ const { errorByComponent, openDebugRun, focusedGrid, worldStore } = getContext('AppEditorContext');
13
+ $: error = Object.values($errorByComponent).find((e) => e.componentId === component.id);
14
+ function openDebugRuns() {
15
+ if ($openDebugRun) {
16
+ $openDebugRun(component.id);
17
+ }
18
+ }
10
19
  </script>
11
20
 
12
21
  <span
@@ -52,3 +61,32 @@ const dispatch = createEventDispatcher();
52
61
  <Move size={14} />
53
62
  </span>
54
63
  {/if}
64
+
65
+ {#if error}
66
+ {@const json = JSON.parse(JSON.stringify(error.error))}
67
+ <span
68
+ title="Error"
69
+ class={classNames(
70
+ 'text-red-500 px-1 text-2xs py-0.5 font-bold w-fit absolute border border-red-500 -bottom-1 shadow left-1/2 transform -translate-x-1/2 z-50 cursor-pointer',
71
+ 'bg-red-100/80'
72
+ )}
73
+ >
74
+ <Popover notClickable placement="bottom" popupClass="!bg-white border w-96">
75
+ <Bug size={14} />
76
+ <span slot="text">
77
+ <div class="bg-white">
78
+ <Alert type="error" title={`${json?.name}: ${json?.message}`}>
79
+ <div class="flex flex-col gap-2">
80
+ <div>
81
+ <pre class=" whitespace-pre-wrap text-gray-900 bg-white border w-full p-4 text-xs"
82
+ >{json?.stack ?? ''}
83
+ </pre>
84
+ </div>
85
+ <Button color="red" variant="border" on:click={openDebugRuns}>Open Debug Runs</Button>
86
+ </div>
87
+ </Alert>
88
+ </div>
89
+ </span>
90
+ </Popover>
91
+ </span>
92
+ {/if}
@@ -1,5 +1,5 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
- import type { AppComponent } from '../types';
2
+ import type { AppComponent } from './component';
3
3
  declare const __propDef: {
4
4
  props: {
5
5
  component: AppComponent;