windmill-components 1.269.4 → 1.291.4

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 (339) hide show
  1. package/package/ata/apis.d.ts +8 -5
  2. package/package/ata/apis.js +20 -9
  3. package/package/ata/edgeCases.js +5 -1
  4. package/package/ata/index.d.ts +3 -3
  5. package/package/ata/index.js +51 -28
  6. package/package/common.d.ts +1 -0
  7. package/package/components/AddUser.svelte +15 -6
  8. package/package/components/ApiConnectForm.svelte +1 -1
  9. package/package/components/ArgEnum.svelte +1 -1
  10. package/package/components/ArgEnum.svelte.d.ts +1 -1
  11. package/package/components/ArgInfo.svelte +2 -1
  12. package/package/components/ArgInput.svelte +7 -6
  13. package/package/components/ArgInput.svelte.d.ts +1 -1
  14. package/package/components/ArrayTypeNarrowing.svelte +2 -0
  15. package/package/components/CenteredModal.svelte +5 -2
  16. package/package/components/ChangeInstanceUsername.svelte +123 -0
  17. package/package/components/ChangeInstanceUsername.svelte.d.ts +20 -0
  18. package/package/components/ContentSearch.svelte +3 -4
  19. package/package/components/ContentSearch.svelte.d.ts +0 -3
  20. package/package/components/DateTimeInput.svelte +73 -9
  21. package/package/components/DateTimeInput.svelte.d.ts +8 -1
  22. package/package/components/DefaultScripts.svelte +26 -0
  23. package/package/components/DefaultScripts.svelte.d.ts +14 -0
  24. package/package/components/DefaultScriptsInner.svelte +75 -0
  25. package/package/components/DefaultScriptsInner.svelte.d.ts +14 -0
  26. package/package/components/Dev.svelte +59 -17
  27. package/package/components/DisplayResult.svelte +73 -67
  28. package/package/components/DurationMs.svelte +9 -8
  29. package/package/components/DurationMs.svelte.d.ts +1 -0
  30. package/package/components/Editor.svelte +23 -7
  31. package/package/components/FieldHeader.svelte +7 -7
  32. package/package/components/FlowBuilder.svelte +24 -13
  33. package/package/components/FlowBuilder.svelte.d.ts +0 -3
  34. package/package/components/FlowLoopIterationPreview.svelte +6 -5
  35. package/package/components/FlowMetadata.svelte +6 -2
  36. package/package/components/FlowPreviewContent.svelte +5 -5
  37. package/package/components/FolderEditor.svelte +20 -39
  38. package/package/components/GroupEditor.svelte +1 -1
  39. package/package/components/HighlightCode.svelte +7 -5
  40. package/package/components/IconedResourceType.svelte +5 -3
  41. package/package/components/IconedResourceType.svelte.d.ts +21 -7
  42. package/package/components/InputTransformForm.svelte +6 -1
  43. package/package/components/InstanceSettings.svelte +29 -17
  44. package/package/components/InstanceSettings.svelte.d.ts +3 -0
  45. package/package/components/InviteGlobalUser.svelte +1 -1
  46. package/package/components/JobArgs.svelte +20 -7
  47. package/package/components/JobStatus.svelte +8 -2
  48. package/package/components/LightweightArgInput.svelte +30 -14
  49. package/package/components/LightweightSchemaForm.svelte +1 -0
  50. package/package/components/LogViewer.svelte +21 -6
  51. package/package/components/ModulePreview.svelte +19 -11
  52. package/package/components/ModulePreview.svelte.d.ts +3 -2
  53. package/package/components/ObjectResourceInput.svelte +2 -0
  54. package/package/components/ObjectResourceInput.svelte.d.ts +1 -0
  55. package/package/components/Password.svelte +5 -2
  56. package/package/components/Password.svelte.d.ts +1 -0
  57. package/package/components/Path.svelte +10 -11
  58. package/package/components/ResourcePicker.svelte +28 -9
  59. package/package/components/ResourcePicker.svelte.d.ts +1 -0
  60. package/package/components/RunChart.svelte +1 -0
  61. package/package/components/RunForm.svelte +9 -17
  62. package/package/components/RunFormAdvancedPopup.svelte +11 -12
  63. package/package/components/S3FilePicker.svelte +1 -0
  64. package/package/components/ScheduleEditorInner.svelte +10 -9
  65. package/package/components/ScheduleEditorInner.svelte.d.ts +2 -2
  66. package/package/components/SchemaEditor.svelte +12 -1
  67. package/package/components/SchemaForm.svelte +1 -2
  68. package/package/components/SchemaModal.svelte +2 -2
  69. package/package/components/ScriptBuilder.svelte +152 -79
  70. package/package/components/ScriptBuilder.svelte.d.ts +1 -1
  71. package/package/components/ScriptEditor.svelte +8 -9
  72. package/package/components/ScriptSchedules.svelte +99 -0
  73. package/package/components/ScriptSchedules.svelte.d.ts +20 -0
  74. package/package/components/ShareModal.svelte +1 -0
  75. package/package/components/StringTypeNarrowing.svelte +9 -3
  76. package/package/components/SuperadminSettings.svelte +114 -10
  77. package/package/components/TestJobLoader.svelte +8 -0
  78. package/package/components/TestJobLoader.svelte.d.ts +1 -0
  79. package/package/components/TimeAgo.svelte +2 -2
  80. package/package/components/TimelineBar.svelte +5 -2
  81. package/package/components/Toggle.svelte +5 -2
  82. package/package/components/Toggle.svelte.d.ts +1 -0
  83. package/package/components/Tooltip.svelte +13 -2
  84. package/package/components/Tooltip.svelte.d.ts +1 -0
  85. package/package/components/Uptodate.svelte +12 -6
  86. package/package/components/UserSettings.svelte +87 -73
  87. package/package/components/WorkerTagPicker.svelte +4 -2
  88. package/package/components/WorkflowTimeline.svelte +106 -0
  89. package/package/components/WorkflowTimeline.svelte.d.ts +18 -0
  90. package/package/components/WorkspaceGroup.svelte +1 -0
  91. package/package/components/apps/components/buttons/AppButton.svelte +9 -19
  92. package/package/components/apps/components/display/AppCustomComponent.svelte +2 -4
  93. package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte +246 -94
  94. package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte.d.ts +0 -3
  95. package/package/components/apps/components/display/dbtable/DbExplorerCount.svelte +17 -5
  96. package/package/components/apps/components/display/dbtable/DbExplorerCount.svelte.d.ts +6 -2
  97. package/package/components/apps/components/display/dbtable/DeleteRow.svelte +6 -4
  98. package/package/components/apps/components/display/dbtable/DeleteRow.svelte.d.ts +3 -3
  99. package/package/components/apps/components/display/dbtable/InsertRow.svelte +55 -37
  100. package/package/components/apps/components/display/dbtable/InsertRow.svelte.d.ts +17 -1
  101. package/package/components/apps/components/display/dbtable/InsertRowRunnable.svelte +4 -3
  102. package/package/components/apps/components/display/dbtable/InsertRowRunnable.svelte.d.ts +2 -2
  103. package/package/components/apps/components/display/dbtable/UpdateCell.svelte +5 -4
  104. package/package/components/apps/components/display/dbtable/UpdateCell.svelte.d.ts +3 -3
  105. package/package/components/apps/components/display/dbtable/queries/count.d.ts +4 -0
  106. package/package/components/apps/components/display/dbtable/queries/count.js +140 -0
  107. package/package/components/apps/components/display/dbtable/queries/delete.d.ts +3 -0
  108. package/package/components/apps/components/display/dbtable/queries/delete.js +68 -0
  109. package/package/components/apps/components/display/dbtable/queries/insert.d.ts +5 -0
  110. package/package/components/apps/components/display/dbtable/queries/insert.js +121 -0
  111. package/package/components/apps/components/display/dbtable/queries/select.d.ts +7 -0
  112. package/package/components/apps/components/display/dbtable/queries/select.js +196 -0
  113. package/package/components/apps/components/display/dbtable/queries/update.d.ts +3 -0
  114. package/package/components/apps/components/display/dbtable/queries/update.js +75 -0
  115. package/package/components/apps/components/display/dbtable/utils.d.ts +79 -0
  116. package/package/components/apps/components/display/dbtable/utils.js +284 -309
  117. package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte +39 -19
  118. package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte.d.ts +0 -2
  119. package/package/components/apps/components/display/table/AppAggridTable.svelte +4 -1
  120. package/package/components/apps/components/display/table/AppTable.svelte +4 -0
  121. package/package/components/apps/components/display/table/AppTable.svelte.d.ts +2 -2
  122. package/package/components/apps/components/display/table/utils.js +42 -0
  123. package/package/components/apps/components/helpers/InputValue.svelte +10 -8
  124. package/package/components/apps/components/helpers/InputValue.svelte.d.ts +1 -0
  125. package/package/components/apps/components/helpers/RefreshButton.svelte +1 -1
  126. package/package/components/apps/components/helpers/ResolveConfig.svelte +2 -0
  127. package/package/components/apps/components/helpers/RunnableComponent.svelte +6 -2
  128. package/package/components/apps/components/helpers/eval.d.ts +2 -2
  129. package/package/components/apps/components/helpers/eval.js +33 -11
  130. package/package/components/apps/components/inputs/AppCheckbox.svelte +4 -0
  131. package/package/components/apps/components/inputs/AppCheckbox.svelte.d.ts +1 -0
  132. package/package/components/apps/components/inputs/AppDateInput.svelte +2 -2
  133. package/package/components/apps/components/inputs/AppDateTimeInput.svelte +121 -0
  134. package/package/components/apps/components/inputs/AppDateTimeInput.svelte.d.ts +22 -0
  135. package/package/components/apps/components/inputs/AppSelect.svelte +5 -0
  136. package/package/components/apps/components/inputs/AppSelect.svelte.d.ts +1 -0
  137. package/package/components/apps/components/inputs/AppTimeInput.svelte +103 -0
  138. package/package/components/apps/components/inputs/AppTimeInput.svelte.d.ts +21 -0
  139. package/package/components/apps/components/layout/AppConditionalWrapper.svelte +0 -1
  140. package/package/components/apps/components/layout/AppDecisionTree.svelte +12 -0
  141. package/package/components/apps/components/layout/AppStepper.svelte +4 -2
  142. package/package/components/apps/editor/AppEditor.svelte +19 -4
  143. package/package/components/apps/editor/AppEditorHeader.svelte +42 -14
  144. package/package/components/apps/editor/AppEditorHeader.svelte.d.ts +2 -0
  145. package/package/components/apps/editor/AppTimeline.svelte +4 -4
  146. package/package/components/apps/editor/DecisionTreeDebug.svelte +1 -1
  147. package/package/components/apps/editor/DeploymentHistory.svelte +1 -1
  148. package/package/components/apps/editor/GridEditorMenu.svelte +3 -3
  149. package/package/components/apps/editor/RecomputeAllComponents.svelte +1 -1
  150. package/package/components/apps/editor/SettingsPanel.svelte +2 -0
  151. package/package/components/apps/editor/TabsDebug.svelte +2 -2
  152. package/package/components/apps/editor/appUtils.js +8 -0
  153. package/package/components/apps/editor/component/Component.svelte +21 -0
  154. package/package/components/apps/editor/component/components.d.ts +168 -9
  155. package/package/components/apps/editor/component/components.js +203 -10
  156. package/package/components/apps/editor/component/sets.js +2 -0
  157. package/package/components/apps/editor/componentsPanel/ComponentList.svelte +3 -3
  158. package/package/components/apps/editor/componentsPanel/ThemeList.svelte +1 -0
  159. package/package/components/apps/editor/componentsPanel/ThemeList.svelte.d.ts +2 -0
  160. package/package/components/apps/editor/componentsPanel/ThemeRow.svelte +8 -4
  161. package/package/components/apps/editor/componentsPanel/componentControlUtils.js +2 -0
  162. package/package/components/apps/editor/componentsPanel/quickStyleProperties.js +6 -0
  163. package/package/components/apps/editor/contextPanel/DebugPanel.svelte +178 -0
  164. package/package/components/apps/editor/contextPanel/DebugPanel.svelte.d.ts +14 -0
  165. package/package/components/apps/editor/inlineScriptsPanel/CacheTtlPopup.svelte +3 -1
  166. package/package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte +9 -18
  167. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +11 -16
  168. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorPanel.svelte +2 -2
  169. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptHiddenRunnable.svelte +2 -2
  170. package/package/components/apps/editor/inlineScriptsPanel/RunButton.svelte +4 -12
  171. package/package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +27 -4
  172. package/package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte.d.ts +3 -1
  173. package/package/components/apps/editor/settingsPanel/ComponentPanel.svelte +68 -28
  174. package/package/components/apps/editor/settingsPanel/DecisionTreeGraphEditor.svelte +1 -1
  175. package/package/components/apps/editor/settingsPanel/GridCondition.svelte +57 -43
  176. package/package/components/apps/editor/settingsPanel/GridTab.svelte +15 -12
  177. package/package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +9 -3
  178. package/package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte.d.ts +4 -0
  179. package/package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte +8 -0
  180. package/package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte.d.ts +2 -0
  181. package/package/components/apps/editor/settingsPanel/OneOfInputSpecsEditor.svelte +6 -0
  182. package/package/components/apps/editor/settingsPanel/OneOfInputSpecsEditor.svelte.d.ts +2 -0
  183. package/package/components/apps/editor/settingsPanel/Recompute.svelte +4 -5
  184. package/package/components/apps/editor/settingsPanel/Recompute.svelte.d.ts +3 -0
  185. package/package/components/apps/editor/settingsPanel/inputEditor/ColorInput.svelte +4 -2
  186. package/package/components/apps/editor/settingsPanel/inputEditor/DBTableSelect.svelte +42 -0
  187. package/package/components/apps/editor/settingsPanel/inputEditor/DBTableSelect.svelte.d.ts +19 -0
  188. package/package/components/apps/editor/settingsPanel/inputEditor/EvalV2InputEditor.svelte +24 -2
  189. package/package/components/apps/editor/settingsPanel/inputEditor/EvalV2InputEditor.svelte.d.ts +2 -0
  190. package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +25 -15
  191. package/package/components/apps/editor/settingsPanel/script/BackgroundScriptSettings.svelte +1 -1
  192. package/package/components/apps/editor/settingsPanel/script/ComponentScriptSettings.svelte +1 -1
  193. package/package/components/apps/editor/settingsPanel/script/shared/ScriptSettingHeader.svelte +8 -1
  194. package/package/components/apps/editor/settingsPanel/script/shared/ScriptSettingHeader.svelte.d.ts +1 -0
  195. package/package/components/apps/editor/settingsPanel/script/shared/ScriptTriggers.svelte +13 -0
  196. package/package/components/apps/inputType.d.ts +2 -2
  197. package/package/components/apps/svelte-select/lib/Select.svelte +2 -1
  198. package/package/components/apps/types.d.ts +5 -3
  199. package/package/components/build_workers.js +9 -13
  200. package/package/components/common/button/Button.svelte +78 -36
  201. package/package/components/common/button/Button.svelte.d.ts +7 -0
  202. package/package/components/common/button/model.d.ts +0 -1
  203. package/package/components/common/button/model.js +0 -8
  204. package/package/components/common/calendarPicker/CalendarPicker.svelte +11 -37
  205. package/package/components/common/confirmationModal/ConfirmationModal.svelte +11 -10
  206. package/package/components/common/confirmationModal/UnsavedConfirmationModal.svelte +5 -12
  207. package/package/components/common/confirmationModal/UnsavedConfirmationModal.svelte.d.ts +0 -3
  208. package/package/components/common/table/ScriptRow.svelte +28 -1
  209. package/package/components/common/tabs/Tab.svelte +6 -4
  210. package/package/components/common/tabs/Tab.svelte.d.ts +1 -0
  211. package/package/components/common/toggleButton-v2/ToggleButtonGroup.svelte +4 -2
  212. package/package/components/copilot/IteratorGen.svelte +10 -5
  213. package/package/components/copilot/MetadataGen.svelte +6 -1
  214. package/package/components/copilot/PredicateGen.svelte +3 -4
  215. package/package/components/copilot/ScriptFix.svelte +1 -1
  216. package/package/components/copilot/StepGen.svelte +2 -1
  217. package/package/components/copilot/StepGen.svelte.d.ts +1 -0
  218. package/package/components/copilot/StepInputGen.svelte +13 -7
  219. package/package/components/copilot/StepInputsGen.svelte +12 -7
  220. package/package/components/copilot/lib.d.ts +1 -1
  221. package/package/components/copilot/lib.js +2 -2
  222. package/package/components/details/Menu.svelte +11 -6
  223. package/package/components/details/Menu.svelte.d.ts +1 -3
  224. package/package/components/details/WebhooksPanel.svelte +1 -1
  225. package/package/components/flows/content/FlowBranchesAllWrapper.svelte +11 -10
  226. package/package/components/flows/content/FlowBranchesOneWrapper.svelte +11 -9
  227. package/package/components/flows/content/FlowInputs.svelte +84 -238
  228. package/package/components/flows/content/FlowLoop.svelte +25 -16
  229. package/package/components/flows/content/FlowModuleComponent.svelte +17 -2
  230. package/package/components/flows/content/FlowModuleComponent.svelte.d.ts +1 -0
  231. package/package/components/flows/content/FlowModuleWrapper.svelte +5 -0
  232. package/package/components/flows/content/FlowSchedules.svelte +75 -1
  233. package/package/components/flows/content/FlowSettings.svelte +5 -0
  234. package/package/components/flows/content/SuspendDrawer.svelte +1 -1
  235. package/package/components/flows/flowStateUtils.d.ts +1 -1
  236. package/package/components/flows/flowStateUtils.js +2 -2
  237. package/package/components/flows/idUtils.js +12 -1
  238. package/package/components/flows/map/FlowModuleSchemaMap.svelte +2 -2
  239. package/package/components/flows/map/InsertModuleButton.svelte +1 -3
  240. package/package/components/flows/map/MapItem.svelte +1 -1
  241. package/package/components/flows/pickers/FlowScriptPicker.svelte.d.ts +1 -1
  242. package/package/components/flows/scheduleUtils.d.ts +2 -1
  243. package/package/components/flows/scheduleUtils.js +2 -1
  244. package/package/components/home/ItemsList.svelte +10 -9
  245. package/package/components/icons/AsanaIcon.svelte +5 -0
  246. package/package/components/icons/AsanaIcon.svelte.d.ts +17 -0
  247. package/package/components/icons/BitbucketIcon.svelte +19 -0
  248. package/package/components/icons/BitbucketIcon.svelte.d.ts +17 -0
  249. package/package/components/icons/CACertificate.svelte +7 -0
  250. package/package/components/icons/CACertificate.svelte.d.ts +17 -0
  251. package/package/components/icons/CurrencyApiIcon.svelte +24 -0
  252. package/package/components/icons/CurrencyApiIcon.svelte.d.ts +17 -0
  253. package/package/components/icons/DynatraceIcon.svelte +26 -0
  254. package/package/components/icons/DynatraceIcon.svelte.d.ts +17 -0
  255. package/package/components/icons/EdgeDbIcon.svelte +25 -0
  256. package/package/components/icons/EdgeDbIcon.svelte.d.ts +17 -0
  257. package/package/components/icons/GitIcon.svelte +7 -0
  258. package/package/components/icons/GitIcon.svelte.d.ts +17 -0
  259. package/package/components/icons/GoogleCloudIcon.svelte +20 -0
  260. package/package/components/icons/GoogleCloudIcon.svelte.d.ts +17 -0
  261. package/package/components/icons/IpinfoIcon.svelte +8 -0
  262. package/package/components/icons/IpinfoIcon.svelte.d.ts +17 -0
  263. package/package/components/icons/MSTeamsIcon.svelte +5 -0
  264. package/package/components/icons/MSTeamsIcon.svelte.d.ts +17 -0
  265. package/package/components/icons/MailgunIcon.svelte +11 -0
  266. package/package/components/icons/MailgunIcon.svelte.d.ts +17 -0
  267. package/package/components/icons/PushoverIcon.svelte +8 -0
  268. package/package/components/icons/PushoverIcon.svelte.d.ts +17 -0
  269. package/package/components/icons/QuickbooksIcon.svelte +5 -0
  270. package/package/components/icons/QuickbooksIcon.svelte.d.ts +17 -0
  271. package/package/components/icons/ResendIcon.svelte +7 -0
  272. package/package/components/icons/ResendIcon.svelte.d.ts +17 -0
  273. package/package/components/icons/TrelloIcon.svelte +5 -0
  274. package/package/components/icons/TrelloIcon.svelte.d.ts +17 -0
  275. package/package/components/icons/TwilioIcon.svelte +11 -0
  276. package/package/components/icons/TwilioIcon.svelte.d.ts +17 -0
  277. package/package/components/icons/ZendeskIcon.svelte +11 -0
  278. package/package/components/icons/ZendeskIcon.svelte.d.ts +17 -0
  279. package/package/components/icons/index.d.ts +36 -1
  280. package/package/components/icons/index.js +37 -2
  281. package/package/components/instanceSettings.js +38 -1
  282. package/package/components/jobs/JobPreview.svelte +4 -1
  283. package/package/components/runs/JobLoader.svelte +6 -4
  284. package/package/components/runs/JobPreview.svelte +15 -1
  285. package/package/components/runs/ManuelDatePicker.svelte +1 -1
  286. package/package/components/runs/NoWorkerWithTagWarning.svelte +5 -3
  287. package/package/components/runs/RunRow.svelte +5 -19
  288. package/package/components/runs/RunsFilter.svelte +1 -1
  289. package/package/components/runs/RunsTable.svelte +1 -1
  290. package/package/components/scriptEditor/LogPanel.svelte +12 -0
  291. package/package/components/settings/PremiumInfo.svelte +92 -31
  292. package/package/components/settings/WorkspaceUserSettings.svelte +42 -6
  293. package/package/components/sidebar/changelogs.js +20 -0
  294. package/package/components/table/AutoDataTable.svelte +18 -4
  295. package/package/consts.d.ts +0 -3
  296. package/package/consts.js +0 -3
  297. package/package/enterpriseUtils.d.ts +1 -0
  298. package/package/enterpriseUtils.js +17 -0
  299. package/package/gen/core/OpenAPI.js +1 -1
  300. package/package/gen/index.d.ts +5 -2
  301. package/package/gen/models/LargeFileStorage.d.ts +3 -1
  302. package/package/gen/models/LargeFileStorage.js +2 -0
  303. package/package/gen/models/User.d.ts +0 -2
  304. package/package/gen/models/UserUsage.d.ts +4 -0
  305. package/package/gen/models/WorkflowStatus.d.ts +6 -0
  306. package/package/gen/models/WorkflowStatusRecord.d.ts +2 -0
  307. package/package/gen/models/WorkflowStatusRecord.js +5 -0
  308. package/package/gen/models/WorkflowTask.d.ts +4 -0
  309. package/package/gen/models/WorkflowTask.js +5 -0
  310. package/package/gen/models/WorkspaceDefaultScripts.d.ts +5 -0
  311. package/package/gen/models/WorkspaceDefaultScripts.js +5 -0
  312. package/package/gen/services/AdminService.d.ts +6 -9
  313. package/package/gen/services/AdminService.js +6 -7
  314. package/package/gen/services/FolderService.d.ts +3 -2
  315. package/package/gen/services/JobService.d.ts +27 -2
  316. package/package/gen/services/JobService.js +22 -2
  317. package/package/gen/services/SettingService.d.ts +11 -0
  318. package/package/gen/services/SettingService.js +13 -0
  319. package/package/gen/services/UserService.d.ts +14 -9
  320. package/package/gen/services/UserService.js +20 -7
  321. package/package/gen/services/WorkspaceService.d.ts +62 -0
  322. package/package/gen/services/WorkspaceService.js +76 -0
  323. package/package/infer.d.ts +20 -1
  324. package/package/infer.js +39 -19
  325. package/package/script_helpers.d.ts +7 -6
  326. package/package/script_helpers.js +24 -7
  327. package/package/scripts.d.ts +11 -0
  328. package/package/scripts.js +38 -1
  329. package/package/stores.d.ts +2 -1
  330. package/package/stores.js +2 -0
  331. package/package/utils.d.ts +1 -1
  332. package/package/utils.js +3 -3
  333. package/package.json +3 -4
  334. package/package/components/common/confirmationModal/model.d.ts +0 -9
  335. package/package/components/common/confirmationModal/model.js +0 -1
  336. package/package/gen/models/NewUser.d.ts +0 -5
  337. package/package/gen/models/Usage.d.ts +0 -3
  338. /package/package/gen/models/{NewUser.js → UserUsage.js} +0 -0
  339. /package/package/gen/models/{Usage.js → WorkflowStatus.js} +0 -0
@@ -1,5 +1,5 @@
1
1
  <script>import { GridApi, createGrid } from 'ag-grid-community';
2
- import { isObject } from '../../../../../utils';
2
+ import { isObject, sendUserToast } from '../../../../../utils';
3
3
  import { createEventDispatcher, getContext } from 'svelte';
4
4
  import Alert from '../../../../common/alert/Alert.svelte';
5
5
  import { deepEqual } from 'fast-equals';
@@ -9,7 +9,7 @@ import { twMerge } from 'tailwind-merge';
9
9
  import { initCss } from '../../../utils';
10
10
  import ResolveStyle from '../../helpers/ResolveStyle.svelte';
11
11
  import { Button } from '../../../../common';
12
- import { cellRendererFactory } from '../dbtable/utils';
12
+ import { cellRendererFactory } from './utils';
13
13
  import { Trash2 } from 'lucide-svelte';
14
14
  // import 'ag-grid-community/dist/styles/ag-theme-alpine-dark.css'
15
15
  export let id;
@@ -96,6 +96,11 @@ let api = undefined;
96
96
  let eGui;
97
97
  $: eGui && mountGrid();
98
98
  function transformColumnDefs(columnDefs) {
99
+ const { isValid, errors } = validateColumnDefs(columnDefs);
100
+ if (!isValid) {
101
+ sendUserToast(`Invalid columnDefs: ${errors.join('\n')}`, true);
102
+ return [];
103
+ }
99
104
  let r = columnDefs?.filter((x) => x && !x.ignored) ?? [];
100
105
  if (allowDelete) {
101
106
  r.push({
@@ -105,11 +110,13 @@ function transformColumnDefs(columnDefs) {
105
110
  new Button({
106
111
  target: c.eGui,
107
112
  props: {
108
- btnClasses: 'mt-1',
109
- color: 'red',
110
- variant: 'border',
113
+ btnClasses: 'w-12',
114
+ wrapperClasses: 'flex justify-end items-center h-full',
115
+ color: 'light',
116
+ size: 'sm',
117
+ variant: 'contained',
111
118
  iconOnly: true,
112
- endIcon: { icon: Trash2 },
119
+ startIcon: { icon: Trash2 },
113
120
  nonCaptureEvent: true
114
121
  }
115
122
  });
@@ -129,6 +136,19 @@ function transformColumnDefs(columnDefs) {
129
136
  }
130
137
  let firstRow = 0;
131
138
  let lastRow = 0;
139
+ function validateColumnDefs(columnDefs) {
140
+ let isValid = true;
141
+ const errors = [];
142
+ // Validate each column definition
143
+ columnDefs.forEach((colDef, index) => {
144
+ // Check if 'field' property exists and is a non-empty string
145
+ if (!colDef.field || typeof colDef.field !== 'string' || colDef.field.trim() === '') {
146
+ isValid = false;
147
+ errors.push(`Column at index ${index} is missing a valid 'field' property.`);
148
+ }
149
+ });
150
+ return { isValid, errors };
151
+ }
132
152
  function mountGrid() {
133
153
  if (eGui) {
134
154
  createGrid(eGui, {
@@ -141,6 +161,10 @@ function mountGrid() {
141
161
  editable: resolvedConfig?.allEditable,
142
162
  onCellValueChanged
143
163
  },
164
+ infiniteInitialRowCount: 100,
165
+ cacheBlockSize: 100,
166
+ cacheOverflowSize: 10,
167
+ maxBlocksInCache: 20,
144
168
  suppressColumnMoveAnimation: true,
145
169
  rowSelection: resolvedConfig?.multipleSelectable ? 'multiple' : 'single',
146
170
  rowMultiSelectWithClick: resolvedConfig?.multipleSelectable
@@ -179,7 +203,11 @@ function mountGrid() {
179
203
  }
180
204
  }
181
205
  $: resolvedConfig && updateOptions();
182
- $: datasource && api?.updateGridOptions({ datasource });
206
+ let oldDatasource = datasource;
207
+ $: if (datasource && datasource != oldDatasource) {
208
+ oldDatasource = datasource;
209
+ api?.updateGridOptions({ datasource });
210
+ }
183
211
  let extraConfig = resolvedConfig.extraConfig;
184
212
  $: if (!deepEqual(extraConfig, resolvedConfig.extraConfig)) {
185
213
  extraConfig = resolvedConfig.extraConfig;
@@ -219,10 +247,6 @@ function updateOptions() {
219
247
  ...(resolvedConfig?.extraConfig ?? {})
220
248
  });
221
249
  }
222
- let runnableComponent;
223
- export function recompute() {
224
- runnableComponent?.runComponent();
225
- }
226
250
  </script>
227
251
 
228
252
  {#each Object.keys(css ?? {}) as key (key)}
@@ -237,11 +261,7 @@ export function recompute() {
237
261
 
238
262
  {#if Array.isArray(resolvedConfig.columnDefs) && resolvedConfig.columnDefs.every(isObject)}
239
263
  <div
240
- class={twMerge(
241
- 'border shadow-sm divide-y flex flex-col h-full',
242
- css?.container?.class,
243
- 'wm-aggrid-container'
244
- )}
264
+ class={twMerge('divide-y flex flex-col h-full', css?.container?.class, 'wm-aggrid-container')}
245
265
  style={containerHeight ? `height: ${containerHeight}px;` : css?.container?.style}
246
266
  bind:clientHeight
247
267
  bind:clientWidth
@@ -257,10 +277,10 @@ export function recompute() {
257
277
  >
258
278
  <div bind:this={eGui} style:height="100%" />
259
279
  </div>
280
+ <div class="flex gap-1 w-full justify-end text-sm text-secondary py-1"
281
+ >{firstRow}{'->'}{lastRow + 1} of {datasource?.rowCount} rows</div
282
+ >
260
283
  </div>
261
- <div class="flex gap-1 absolute bottom-1 right-2 text-sm text-secondary"
262
- >{firstRow}{'->'}{lastRow + 1} of {datasource?.rowCount} rows</div
263
- >
264
284
  {:else if resolvedConfig.columnDefs != undefined}
265
285
  <Alert title="Parsing issues" type="error" size="xs">
266
286
  The columnDefs should be an array of objects, received:
@@ -17,7 +17,6 @@ declare const __propDef: {
17
17
  outputs: Record<string, Output<any>>;
18
18
  allowDelete: boolean;
19
19
  clearRows?: (() => void) | undefined;
20
- recompute?: (() => void) | undefined;
21
20
  };
22
21
  events: {
23
22
  update: CustomEvent<any>;
@@ -32,6 +31,5 @@ export type AppAggridExplorerTableEvents = typeof __propDef.events;
32
31
  export type AppAggridExplorerTableSlots = typeof __propDef.slots;
33
32
  export default class AppAggridExplorerTable extends SvelteComponent<AppAggridExplorerTableProps, AppAggridExplorerTableEvents, AppAggridExplorerTableSlots> {
34
33
  get clearRows(): () => void;
35
- get recompute(): () => void;
36
34
  }
37
35
  export {};
@@ -103,7 +103,7 @@ function onCellValueChanged(event) {
103
103
  column: event.colDef.field,
104
104
  value: dataCell
105
105
  });
106
- result[event.node.rowIndex][event.colDef.field] = dataCell;
106
+ result[Number(event.node.data['__index'])][event.colDef.field] = dataCell;
107
107
  let data = { ...result[event.node.rowIndex] };
108
108
  outputs?.selectedRow?.set(data);
109
109
  }
@@ -164,6 +164,9 @@ function mountGrid() {
164
164
  onSelectionChanged(e.api);
165
165
  resolvedConfig?.extraConfig?.['onSelectionChanged']?.(e);
166
166
  },
167
+ onCellEditingStarted: (e) => {
168
+ e.api.getRowNode(e.data['__index'])?.setSelected(true);
169
+ },
167
170
  onFilterChanged: (e) => {
168
171
  outputs?.filters?.set(e.api.getFilterModel());
169
172
  outputs?.displayedRowCount?.set(e.api.getDisplayedRowCount());
@@ -505,6 +505,7 @@ function updateCellValue(rowIndex, columnIndex, newCellValue) {
505
505
  customCss={actionButton.customCss}
506
506
  configuration={actionButton.configuration}
507
507
  recomputeIds={actionButton.recomputeIds}
508
+ onToggle={actionButton.onToggle}
508
509
  preclickAction={async () => {
509
510
  toggleRow(row)
510
511
  }}
@@ -521,6 +522,7 @@ function updateCellValue(rowIndex, columnIndex, newCellValue) {
521
522
  customCss={actionButton.customCss}
522
523
  configuration={actionButton.configuration}
523
524
  recomputeIds={actionButton.recomputeIds}
525
+ onSelect={actionButton.onSelect}
524
526
  preclickAction={async () => {
525
527
  toggleRow(row)
526
528
  }}
@@ -553,6 +555,7 @@ function updateCellValue(rowIndex, columnIndex, newCellValue) {
553
555
  customCss={actionButton.customCss}
554
556
  configuration={actionButton.configuration}
555
557
  recomputeIds={actionButton.recomputeIds}
558
+ onToggle={actionButton.onToggle}
556
559
  preclickAction={async () => {
557
560
  toggleRow(row)
558
561
  }}
@@ -569,6 +572,7 @@ function updateCellValue(rowIndex, columnIndex, newCellValue) {
569
572
  customCss={actionButton.customCss}
570
573
  configuration={actionButton.configuration}
571
574
  recomputeIds={actionButton.recomputeIds}
575
+ onSelect={actionButton.onSelect}
572
576
  preclickAction={async () => {
573
577
  toggleRow(row)
574
578
  }}
@@ -1,13 +1,13 @@
1
1
  import { SvelteComponent } from "svelte";
2
2
  import type { BaseAppComponent, ComponentCustomCSS, RichConfigurations } from '../../../types';
3
3
  import type { AppInput } from '../../../inputType';
4
- import { type ButtonComponent } from '../../../editor/component';
4
+ import { type ButtonComponent, type CheckboxComponent, type SelectComponent } from '../../../editor/component';
5
5
  declare const __propDef: {
6
6
  props: {
7
7
  id: string;
8
8
  componentInput: AppInput | undefined;
9
9
  configuration: RichConfigurations;
10
- actionButtons: (BaseAppComponent & ButtonComponent)[];
10
+ actionButtons: (BaseAppComponent & (ButtonComponent | CheckboxComponent | SelectComponent))[];
11
11
  initializing?: boolean | undefined;
12
12
  customCss?: ComponentCustomCSS<'tablecomponent'> | undefined;
13
13
  render: boolean;
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Class for defining a cell renderer.
3
+ * If you don't need to define a separate class you could use cellRendererFactory
4
+ * to create a component with the column definitions.
5
+ */
6
+ export class AbstractCellRenderer {
7
+ eGui;
8
+ value;
9
+ params;
10
+ constructor(parentElement = 'span') {
11
+ // create empty span (or other element) to place svelte component in
12
+ this.eGui = document.createElement(parentElement);
13
+ }
14
+ init(params) {
15
+ this.value = params.value;
16
+ this.createComponent(params);
17
+ this.eGui.addEventListener('click', () => params.onClick?.(params.data));
18
+ this.params = params;
19
+ }
20
+ getGui() {
21
+ return this.eGui;
22
+ }
23
+ refresh(params) {
24
+ this.value = params.value;
25
+ this.eGui.innerHTML = '';
26
+ return true;
27
+ }
28
+ }
29
+ /**
30
+ * Creates a cell renderer using the given callback for how to initialise a svelte component.
31
+ * See AbstractCellRenderer.createComponent
32
+ * @param svelteComponent function for how to create the svelte component
33
+ * @returns
34
+ */
35
+ export function cellRendererFactory(svelteComponent) {
36
+ class Renderer extends AbstractCellRenderer {
37
+ createComponent(params) {
38
+ svelteComponent(this, params);
39
+ }
40
+ }
41
+ return Renderer;
42
+ }
@@ -12,6 +12,7 @@ export let error = '';
12
12
  export let key = '';
13
13
  export let field = key;
14
14
  export let onDemandOnly = false;
15
+ export let exportValueFunction = false;
15
16
  const { componentControl, runnableComponents } = getContext('AppViewerContext');
16
17
  const editorContext = getContext('AppEditorContext');
17
18
  const iterContext = getContext('ListWrapperContext');
@@ -59,11 +60,7 @@ let timeout = undefined;
59
60
  let firstDebounce = true;
60
61
  const debounce_ms = 50;
61
62
  export async function computeExpr(args) {
62
- const nvalue = await evalExpr(lastInput, args);
63
- if (!deepEqual(nvalue, value)) {
64
- value = nvalue;
65
- }
66
- return nvalue;
63
+ return await evalExpr(lastInput, args);
67
64
  }
68
65
  function debounce(cb) {
69
66
  if (firstDebounce) {
@@ -91,6 +88,7 @@ $: lastInput && $worldStore && debounce(handleConnection);
91
88
  const debounceTemplate = async () => {
92
89
  let nvalue = await getValue(lastInput);
93
90
  if (!deepEqual(nvalue, value)) {
91
+ // console.log('template')
94
92
  value = nvalue;
95
93
  }
96
94
  };
@@ -113,6 +111,7 @@ const debounceEval = async (s) => {
113
111
  if (!onDemandOnly) {
114
112
  let nhash = typeof nvalue != 'object' ? nvalue : sum(nvalue);
115
113
  if (lastExprHash != nhash) {
114
+ // console.log('eval changed', field, nvalue)
116
115
  value = nvalue;
117
116
  lastExprHash = nhash;
118
117
  }
@@ -122,6 +121,7 @@ $: lastInput && lastInput.type == 'eval' && $stateId && $state && debounce2(debo
122
121
  $: lastInput?.type == 'evalv2' && lastInput.expr && debounceEval('exprChanged');
123
122
  $: lastInput?.type == 'templatev2' && lastInput.eval && debounceTemplate();
124
123
  async function handleConnection() {
124
+ // console.log('handleCon')
125
125
  if (lastInput?.type === 'connected') {
126
126
  if (lastInput.connection) {
127
127
  const { path, componentId } = lastInput.connection;
@@ -142,7 +142,8 @@ async function handleConnection() {
142
142
  value = await evalExpr(lastInput);
143
143
  }
144
144
  else if (lastInput?.type == 'evalv2') {
145
- if (onDemandOnly) {
145
+ // console.log('evalv2', onDemandOnly, field)
146
+ if (onDemandOnly && exportValueFunction) {
146
147
  value = (args) => {
147
148
  return evalExpr(lastInput, args);
148
149
  };
@@ -189,7 +190,7 @@ async function evalExpr(input, args) {
189
190
  return;
190
191
  try {
191
192
  const context = computeGlobalContext($worldStore, deepMergeWithPriority(fullContext, args ?? {}));
192
- const r = await eval_like(input.expr, context, true, $state, $mode == 'dnd', $componentControl, $worldStore, $runnableComponents);
193
+ const r = await eval_like(input.expr, context, $state, $mode == 'dnd', $componentControl, $worldStore, $runnableComponents, false);
193
194
  error = '';
194
195
  return r;
195
196
  }
@@ -206,7 +207,7 @@ async function getValue(input) {
206
207
  return;
207
208
  if ((input.type === 'template' || input.type == 'templatev2') && isCodeInjection(input.eval)) {
208
209
  try {
209
- const r = await eval_like('`' + input.eval + '`', computeGlobalContext($worldStore, fullContext), true, $state, $mode == 'dnd', $componentControl, $worldStore, $runnableComponents);
210
+ const r = await eval_like('`' + input.eval + '`', computeGlobalContext($worldStore, fullContext), $state, $mode == 'dnd', $componentControl, $worldStore, $runnableComponents, false);
210
211
  error = '';
211
212
  return r;
212
213
  }
@@ -231,6 +232,7 @@ function onValueChange(newValue) {
231
232
  // No connection
232
233
  return;
233
234
  }
235
+ // console.log('onValueChange', newValue, connection, previousConnectedValue)
234
236
  previousConnectedValue = newValue;
235
237
  let { path } = connection;
236
238
  path = path.replace(/\[(\d+)\]/g, '.$1').replace(/\[\"(.*)\"\]/g, '.$1');
@@ -10,6 +10,7 @@ declare const __propDef: {
10
10
  key?: string | undefined;
11
11
  field?: string | undefined;
12
12
  onDemandOnly?: boolean | undefined;
13
+ exportValueFunction?: boolean | undefined;
13
14
  computeExpr?: ((args?: Record<string, any>) => Promise<any>) | undefined;
14
15
  };
15
16
  events: {
@@ -11,7 +11,7 @@ async function refresh() {
11
11
  <button
12
12
  on:pointerdown|preventDefault|stopPropagation
13
13
  on:click|preventDefault|stopPropagation={refresh}
14
- class="center-center p-1 rounded border bg-surface/60 hover:bg-gray-200 z-10"
14
+ class="center-center p-1 rounded border bg-surface/60 hover:bg-surface-hover z-10"
15
15
  >
16
16
  <RefreshCw class={loading ? 'animate-spin' : ''} size={16} />
17
17
  </button>
@@ -25,6 +25,7 @@ function handleSelected(selected) {
25
25
  bind:value={resolvedConfig.configuration[choice][nestedKey]}
26
26
  onDemandOnly={initialConfig?.type == 'oneOf' &&
27
27
  initialConfig?.configuration?.[choice]?.[nestedKey]?.onDemandOnly}
28
+ exportValueFunction
28
29
  />
29
30
  {/if}
30
31
  {/each}
@@ -37,5 +38,6 @@ function handleSelected(selected) {
37
38
  onDemandOnly={(initialConfig?.type == 'static' || initialConfig?.type == 'evalv2') &&
38
39
  initialConfig?.onDemandOnly}
39
40
  bind:value={resolvedConfig}
41
+ exportValueFunction
40
42
  />
41
43
  {/if}
@@ -75,6 +75,7 @@ $: if (!deepEqual(currentStaticValues, lazyStaticValues)) {
75
75
  lazyStaticValues = currentStaticValues;
76
76
  refreshIfAutoRefresh('static changed');
77
77
  }
78
+ // $: console.log(runnableInputValues)
78
79
  $: (runnableInputValues || extraQueryParams || args) &&
79
80
  resultJobLoader &&
80
81
  refreshIfAutoRefresh('arg changed');
@@ -173,7 +174,7 @@ async function executeComponent(noToast = false, inlineScriptOverride, setRunnab
173
174
  iter: iterContext ? $iterContext : undefined,
174
175
  row: rowContext ? $rowContext : undefined,
175
176
  group: groupContext ? $groupContext : undefined
176
- }), false, $state, isEditor, $componentControl, $worldStore, $runnableComponents);
177
+ }), $state, isEditor, $componentControl, $worldStore, $runnableComponents, true);
177
178
  await setResult(r, job, setRunnableJobEditorPanel);
178
179
  $state = $state;
179
180
  }
@@ -274,6 +275,8 @@ async function executeComponent(noToast = false, inlineScriptOverride, setRunnab
274
275
  let error = e.body ?? e.message;
275
276
  updateResult({ error });
276
277
  $errorByComponent[id] = { error };
278
+ donePromise?.({ error });
279
+ sendUserToast(error, true);
277
280
  loading = false;
278
281
  }
279
282
  }
@@ -337,7 +340,7 @@ async function runTransformer(res) {
337
340
  iter: iterContext ? $iterContext : undefined,
338
341
  row: rowContext ? $rowContext : undefined,
339
342
  result: res
340
- }), false, $state, isEditor, $componentControl, $worldStore, $runnableComponents);
343
+ }), $state, isEditor, $componentControl, $worldStore, $runnableComponents, true);
341
344
  return transformerResult;
342
345
  }
343
346
  catch (err) {
@@ -450,6 +453,7 @@ function updateBgRuns(loading) {
450
453
  {id}
451
454
  input={fields[key]}
452
455
  bind:value={runnableInputValues[key]}
456
+ onDemandOnly={v.onDemandOnly}
453
457
  />
454
458
  {/if}
455
459
  {/each}
@@ -1,6 +1,6 @@
1
1
  import type { World } from '../../rx';
2
2
  export declare function computeGlobalContext(world: World | undefined, extraContext?: any): any;
3
- export declare function eval_like(text: string, context: {} | undefined, noReturn: boolean, state: Record<string, any>, editor: boolean, controlComponents: Record<string, {
3
+ export declare function eval_like(text: string, context: {} | undefined, state: Record<string, any>, editor: boolean, controlComponents: Record<string, {
4
4
  setTab?: (index: number) => void;
5
5
  agGrid?: {
6
6
  api: any;
@@ -18,4 +18,4 @@ export declare function eval_like(text: string, context: {} | undefined, noRetur
18
18
  clearFiles?: () => void;
19
19
  }>, worldStore: World | undefined, runnableComponents: Record<string, {
20
20
  cb?: (() => void)[];
21
- }>): Promise<any>;
21
+ }>, noReturn: boolean): Promise<any>;
@@ -13,23 +13,33 @@ export function computeGlobalContext(world, extraContext = {}) {
13
13
  ...extraContext
14
14
  };
15
15
  }
16
- function create_context_function_template(eval_string, context, noReturn) {
16
+ function create_context_function_template(eval_string, contextKeys, noReturn) {
17
+ let hasReturnAsLastLine = noReturn || eval_string.split('\n').some((x) => x.startsWith('return '));
17
18
  return `
18
19
  return async function (context, state, goto, setTab, recompute, getAgGrid, setValue, setSelectedIndex, openModal, closeModal, open, close, validate, invalidate, validateAll, clearFiles, showToast) {
19
20
  "use strict";
20
- ${Object.keys(context).length > 0
21
- ? `let ${Object.keys(context).map((key) => ` ${key} = context['${key}']`)};`
21
+ ${contextKeys && contextKeys.length > 0
22
+ ? `let ${contextKeys.map((key) => ` ${key} = context['${key}']`)};`
22
23
  : ``}
23
- ${noReturn
24
- ? `return ${eval_string.startsWith('return ') ? eval_string.substring(7) : eval_string}`
25
- : eval_string}
24
+ ${hasReturnAsLastLine
25
+ ? eval_string
26
+ : `
27
+ return ${eval_string.startsWith('return ') ? eval_string.substring(7) : eval_string}`}
28
+
26
29
  }
27
30
  `;
28
31
  }
29
- function make_context_evaluator(eval_string, context, noReturn) {
30
- let template = create_context_function_template(eval_string, context, noReturn);
32
+ let functorCache = {};
33
+ function make_context_evaluator(eval_string, contextKeys, noReturn) {
34
+ let cacheKey = hashCode(JSON.stringify({ eval_string, contextKeys, noReturn }));
35
+ if (functorCache[cacheKey]) {
36
+ return functorCache[cacheKey];
37
+ }
38
+ let template = create_context_function_template(eval_string, contextKeys, noReturn);
31
39
  let functor = Function(template);
32
- return functor();
40
+ let r = functor();
41
+ functorCache[cacheKey] = r;
42
+ return r;
33
43
  }
34
44
  function isSerializable(obj) {
35
45
  var isNestedSerializable;
@@ -60,7 +70,18 @@ function isSerializable(obj) {
60
70
  }
61
71
  return true;
62
72
  }
63
- export async function eval_like(text, context = {}, noReturn, state, editor, controlComponents, worldStore, runnableComponents) {
73
+ function hashCode(s) {
74
+ var hash = 0, i, chr;
75
+ if (s.length === 0)
76
+ return hash;
77
+ for (i = 0; i < s.length; i++) {
78
+ chr = s.charCodeAt(i);
79
+ hash = (hash << 5) - hash + chr;
80
+ hash |= 0; // Convert to 32bit integer
81
+ }
82
+ return hash;
83
+ }
84
+ export async function eval_like(text, context = {}, state, editor, controlComponents, worldStore, runnableComponents, noReturn) {
64
85
  const proxiedState = new Proxy(state, {
65
86
  set(target, key, value) {
66
87
  if (typeof key !== 'string') {
@@ -77,7 +98,8 @@ export async function eval_like(text, context = {}, noReturn, state, editor, con
77
98
  return true;
78
99
  }
79
100
  });
80
- let evaluator = make_context_evaluator(text, context, noReturn);
101
+ let evaluator = make_context_evaluator(text, Object.keys(context ?? {}), noReturn);
102
+ // console.log(i, j)
81
103
  return await evaluator(context, proxiedState, async (x, newTab) => {
82
104
  if (newTab || editor) {
83
105
  if (!newTab) {
@@ -18,6 +18,7 @@ export let render;
18
18
  export let extraKey = undefined;
19
19
  export let preclickAction = undefined;
20
20
  export let noInitialize = false;
21
+ export let onToggle = undefined;
21
22
  export let controls = undefined;
22
23
  const { app, worldStore, componentControl, runnableComponents } = getContext('AppViewerContext');
23
24
  const iterContext = getContext('ListWrapperContext');
@@ -110,6 +111,9 @@ let css = initCss($app.css?.checkboxcomponent, customCss);
110
111
  if (recomputeIds) {
111
112
  recomputeIds.forEach((id) => $runnableComponents?.[id]?.cb?.forEach((cb) => cb()))
112
113
  }
114
+ if (onToggle) {
115
+ onToggle.forEach((id) => $runnableComponents?.[id]?.cb?.forEach((cb) => cb()))
116
+ }
113
117
  }}
114
118
  disabled={resolvedConfig.disabled}
115
119
  />
@@ -12,6 +12,7 @@ declare const __propDef: {
12
12
  extraKey?: string | undefined;
13
13
  preclickAction?: (() => Promise<void>) | undefined;
14
14
  noInitialize?: boolean | undefined;
15
+ onToggle?: string[] | undefined;
15
16
  controls?: {
16
17
  left: () => boolean;
17
18
  right: () => boolean | string;
@@ -25,7 +25,7 @@ $componentControl[id] = {
25
25
  let outputs = initOutput($worldStore, id, {
26
26
  result: undefined
27
27
  });
28
- $: handleDefault(resolvedConfig.defaultValue);
28
+ $: !value && handleDefault(resolvedConfig.defaultValue);
29
29
  function formatDate(dateString, formatString = 'dd.MM.yyyy') {
30
30
  if (formatString === '') {
31
31
  formatString = 'dd.MM.yyyy';
@@ -83,7 +83,7 @@ let css = initCss($app.css?.dateinputcomponent, customCss);
83
83
  min={resolvedConfig.minDate}
84
84
  max={resolvedConfig.maxDate}
85
85
  placeholder="Type..."
86
- class={twMerge(css?.input?.class, 'wm-date-input')}
86
+ class={twMerge('windmillapp w-full py-1.5 text-sm px-2', css?.input?.class, 'wm-date-input')}
87
87
  style={css?.input?.style ?? ''}
88
88
  />
89
89
  {/if}
@@ -0,0 +1,121 @@
1
+ <script>import { getContext } from 'svelte';
2
+ import { initConfig, initOutput } from '../../editor/appUtils';
3
+ import { initCss } from '../../utils';
4
+ import AlignWrapper from '../helpers/AlignWrapper.svelte';
5
+ import InitializeComponent from '../helpers/InitializeComponent.svelte';
6
+ import { components } from '../../editor/component';
7
+ import ResolveConfig from '../helpers/ResolveConfig.svelte';
8
+ import ResolveStyle from '../helpers/ResolveStyle.svelte';
9
+ import DateTimeInput from '../../../DateTimeInput.svelte';
10
+ import { twMerge } from 'tailwind-merge';
11
+ import { parseISO, format as formatDateFns } from 'date-fns';
12
+ export let id;
13
+ export let configuration;
14
+ export let inputType;
15
+ export let verticalAlignment = undefined;
16
+ export let customCss = undefined;
17
+ export let render;
18
+ const { app, worldStore, componentControl, selectedComponent } = getContext('AppViewerContext');
19
+ let resolvedConfig = initConfig(components['datetimeinputcomponent'].initialData.configuration, configuration);
20
+ let value = undefined;
21
+ $componentControl[id] = {
22
+ setValue(nvalue) {
23
+ value = nvalue;
24
+ }
25
+ };
26
+ let outputs = initOutput($worldStore, id, {
27
+ result: undefined,
28
+ validity: true
29
+ });
30
+ $: handleDefault(resolvedConfig.defaultValue);
31
+ function formatDate(dateString, formatString = 'dd.MM.yyyy HH:mm') {
32
+ if (formatString === '') {
33
+ formatString = 'dd.MM.yyyy HH:mm';
34
+ }
35
+ try {
36
+ const isoDate = parseISO(dateString);
37
+ return formatDateFns(isoDate, formatString);
38
+ }
39
+ catch (error) {
40
+ return 'Error formatting date:' + error.message;
41
+ }
42
+ }
43
+ $: {
44
+ if (value) {
45
+ outputs?.result.set(formatDate(value, resolvedConfig.outputFormat));
46
+ const valueDate = new Date(value);
47
+ if (resolvedConfig.minDateTime) {
48
+ const minDate = new Date(resolvedConfig.minDateTime);
49
+ if (minDate.getDay() === valueDate.getDay() &&
50
+ minDate.getMonth() === valueDate.getMonth() &&
51
+ minDate.getFullYear() === valueDate.getFullYear()) {
52
+ outputs?.validity.set(minDate.getTime() < valueDate.getTime());
53
+ }
54
+ if (minDate.getTime() > valueDate.getTime()) {
55
+ outputs?.validity.set(false);
56
+ }
57
+ }
58
+ if (resolvedConfig.maxDateTime) {
59
+ const maxDate = new Date(resolvedConfig.maxDateTime);
60
+ if (maxDate.getDay() === valueDate.getDay() &&
61
+ maxDate.getMonth() === valueDate.getMonth() &&
62
+ maxDate.getFullYear() === valueDate.getFullYear()) {
63
+ outputs?.validity.set(maxDate.getTime() > valueDate.getTime());
64
+ }
65
+ if (maxDate.getTime() < valueDate.getTime()) {
66
+ outputs?.validity.set(false);
67
+ }
68
+ }
69
+ }
70
+ else {
71
+ outputs?.result.set(undefined);
72
+ }
73
+ }
74
+ function handleDefault(defaultValue) {
75
+ value = defaultValue;
76
+ }
77
+ let css = initCss($app.css?.datetimeinputcomponent, customCss);
78
+ </script>
79
+
80
+ {#each Object.keys(components['datetimeinputcomponent'].initialData.configuration) as key (key)}
81
+ <ResolveConfig
82
+ {id}
83
+ {key}
84
+ bind:resolvedConfig={resolvedConfig[key]}
85
+ configuration={configuration[key]}
86
+ />
87
+ {/each}
88
+
89
+ {#each Object.keys(css ?? {}) as key (key)}
90
+ <ResolveStyle
91
+ {id}
92
+ {customCss}
93
+ {key}
94
+ bind:css={css[key]}
95
+ componentStyle={$app.css?.datetimeinputcomponent}
96
+ />
97
+ {/each}
98
+
99
+ <InitializeComponent {id} />
100
+
101
+ <AlignWrapper {render} {verticalAlignment}>
102
+ <div class={twMerge(css?.container?.class, 'w-full')} style={css?.container?.style}>
103
+ {#if inputType === 'date'}
104
+ <DateTimeInput
105
+ bind:value
106
+ useDropdown={resolvedConfig?.displayPresets}
107
+ on:pointerdown={(e) => {
108
+ e.stopPropagation()
109
+ $selectedComponent = [id]
110
+ }}
111
+ minDate={resolvedConfig.minDateTime
112
+ ? formatDate(resolvedConfig.minDateTime, 'yyyy-MM-dd')
113
+ : undefined}
114
+ maxDate={resolvedConfig.maxDateTime
115
+ ? formatDate(resolvedConfig.maxDateTime, 'yyyy-MM-dd')
116
+ : undefined}
117
+ on:focus={() => ($selectedComponent = [id])}
118
+ />
119
+ {/if}
120
+ </div>
121
+ </AlignWrapper>