windmill-components 1.309.7 → 1.352.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.
- package/package/assets/app.css +22 -13
- package/package/ata/index.js +1 -0
- package/package/autosize.js +2 -2
- package/package/common.d.ts +14 -2
- package/package/common.js +6 -1
- package/package/components/AllFlowLogs.svelte +30 -0
- package/package/components/AllFlowLogs.svelte.d.ts +18 -0
- package/package/components/ApiConnectForm.svelte +10 -4
- package/package/components/AppConnectDrawer.svelte +74 -0
- package/package/components/AppConnectDrawer.svelte.d.ts +20 -0
- package/package/components/AppConnectInner.svelte +507 -0
- package/package/components/AppConnectInner.svelte.d.ts +28 -0
- package/package/components/ArgEnum.svelte +4 -1
- package/package/components/ArgEnum.svelte.d.ts +3 -1
- package/package/components/ArgInfo.svelte +19 -3
- package/package/components/ArgInput.svelte +222 -122
- package/package/components/ArgInput.svelte.d.ts +11 -7
- package/package/components/ArrayTypeNarrowing.svelte +29 -27
- package/package/components/CenteredPage.svelte +2 -2
- package/package/components/ConcurrentJobsChart.svelte +212 -0
- package/package/components/ConcurrentJobsChart.svelte.d.ts +23 -0
- package/package/components/CustomOauth.svelte +2 -2
- package/package/components/DateInput.svelte +47 -0
- package/package/components/DateInput.svelte.d.ts +24 -0
- package/package/components/DateTimeInput.svelte +25 -3
- package/package/components/DefaultScripts.svelte +5 -8
- package/package/components/DefaultTags.svelte +3 -2
- package/package/components/DefaultTags.svelte.d.ts +3 -1
- package/package/components/DefaultTagsInner.svelte +2 -11
- package/package/components/DefaultTagsInner.svelte.d.ts +3 -1
- package/package/components/Dev.svelte +72 -10
- package/package/components/DiffDrawer.svelte +1 -2
- package/package/components/DiffEditor.svelte +3 -0
- package/package/components/DisplayResult.svelte +467 -344
- package/package/components/DisplayResult.svelte.d.ts +1 -0
- package/package/components/DropdownV2.svelte.d.ts +2 -2
- package/package/components/DurationMs.svelte +11 -3
- package/package/components/DurationMs.svelte.d.ts +2 -0
- package/package/components/EditableSchemaForm.svelte +447 -100
- package/package/components/EditableSchemaForm.svelte.d.ts +16 -6
- package/package/components/Editor.svelte +112 -93
- package/package/components/Editor.svelte.d.ts +4 -2
- package/package/components/EditorBar.svelte +101 -10
- package/package/components/EditorBar.svelte.d.ts +0 -1
- package/package/components/ErrorOrRecoveryHandler.svelte +0 -1
- package/package/components/FlowBuilder.svelte +14 -6
- package/package/components/FlowGraphViewer.svelte +2 -1
- package/package/components/FlowGraphViewerStep.svelte +56 -10
- package/package/components/FlowGraphViewerStep.svelte.d.ts +2 -7
- package/package/components/FlowJobResult.svelte +14 -3
- package/package/components/FlowJobResult.svelte.d.ts +3 -0
- package/package/components/FlowMetadata.svelte +41 -36
- package/package/components/FlowMetadata.svelte.d.ts +3 -1
- package/package/components/FlowPreviewContent.svelte +18 -9
- package/package/components/FlowStatusViewer.svelte +4 -0
- package/package/components/FlowStatusViewer.svelte.d.ts +3 -0
- package/package/components/FlowStatusViewerInner.svelte +96 -19
- package/package/components/FlowStatusViewerInner.svelte.d.ts +3 -0
- package/package/components/FlowTimeline.svelte +13 -0
- package/package/components/FlowTimeline.svelte.d.ts +2 -0
- package/package/components/FlowViewer.svelte +0 -5
- package/package/components/FolderEditor.svelte +25 -0
- package/package/components/FolderEditor.svelte.d.ts +2 -0
- package/package/components/GroupEditor.svelte +36 -91
- package/package/components/GroupInfo.svelte +1 -1
- package/package/components/HighlightCode.svelte +3 -0
- package/package/components/InputTransformForm.svelte +19 -1
- package/package/components/InputTransformForm.svelte.d.ts +2 -0
- package/package/components/InputTransformSchemaForm.svelte +6 -0
- package/package/components/InputTransformSchemaForm.svelte.d.ts +2 -0
- package/package/components/InstanceSettings.svelte +196 -16
- package/package/components/InstanceSettings.svelte.d.ts +4 -0
- package/package/components/JobLogs.svelte +12 -0
- package/package/components/JobLogs.svelte.d.ts +16 -0
- package/package/components/JobStatus.svelte +3 -3
- package/package/components/Label.svelte +1 -1
- package/package/components/Label.svelte.d.ts +1 -0
- package/package/components/LightweightArgInput.svelte +342 -264
- package/package/components/LightweightArgInput.svelte.d.ts +6 -2
- package/package/components/LightweightResourcePicker.svelte +74 -26
- package/package/components/LightweightSchemaForm.svelte +49 -39
- package/package/components/LogViewer.svelte +52 -15
- package/package/components/LogViewer.svelte.d.ts +1 -0
- package/package/components/Login.svelte +288 -0
- package/package/components/Login.svelte.d.ts +19 -0
- package/package/components/ModulePreviewForm.svelte +4 -0
- package/package/components/NoMainFuncBadge.svelte +8 -0
- package/package/components/NoMainFuncBadge.svelte.d.ts +14 -0
- package/package/components/NumberTypeNarrowing.svelte +71 -44
- package/package/components/OauthExtraParams.svelte +1 -1
- package/package/components/OauthScopes.svelte +1 -1
- package/package/components/ObjectResourceInput.svelte +2 -0
- package/package/components/ObjectResourceInput.svelte.d.ts +1 -0
- package/package/components/ObjectStoreConfigSettings.svelte +12 -1
- package/package/components/ObjectStoreConfigSettings.svelte.d.ts +1 -0
- package/package/components/ObjectTypeNarrowing.svelte +0 -1
- package/package/components/ParqetCsvTableRenderer.svelte +181 -0
- package/package/components/ParqetCsvTableRenderer.svelte.d.ts +21 -0
- package/package/components/Password.svelte +1 -0
- package/package/components/Password.svelte.d.ts +2 -0
- package/package/components/PasswordArgInput.svelte +49 -0
- package/package/components/PasswordArgInput.svelte.d.ts +17 -0
- package/package/components/Path.svelte +2 -2
- package/package/components/PersistentScriptDrawer.svelte +6 -3
- package/package/components/QueueMetricsDrawer.svelte +225 -0
- package/package/components/QueueMetricsDrawer.svelte.d.ts +18 -0
- package/package/components/Range.svelte +88 -286
- package/package/components/Range.svelte.d.ts +9 -23
- package/package/components/ResourceEditor.svelte +138 -140
- package/package/components/ResourceEditor.svelte.d.ts +9 -2
- package/package/components/ResourceEditorDrawer.svelte +45 -0
- package/package/components/ResourceEditorDrawer.svelte.d.ts +21 -0
- package/package/components/ResourcePicker.svelte +8 -9
- package/package/components/ResourceTypePicker.svelte +88 -36
- package/package/components/ResultJobLoader.svelte +2 -2
- package/package/components/ResultJobLoader.svelte.d.ts +9 -9
- package/package/components/RunChart.svelte +55 -5
- package/package/components/RunChart.svelte.d.ts +1 -0
- package/package/components/RunForm.svelte +1 -1
- package/package/components/S3FilePicker.svelte +21 -9
- package/package/components/S3FilePicker.svelte.d.ts +2 -0
- package/package/components/SavedInputs.svelte +49 -13
- package/package/components/ScheduleEditorInner.svelte +294 -264
- package/package/components/SchemaForm.svelte +193 -99
- package/package/components/SchemaForm.svelte.d.ts +17 -2
- package/package/components/ScriptBuilder.svelte +23 -14
- package/package/components/ScriptEditor.svelte +1 -2
- package/package/components/ScriptEditor.svelte.d.ts +1 -1
- package/package/components/ScriptSchedules.svelte +11 -8
- package/package/components/ScriptSchema.svelte +3 -21
- package/package/components/ScriptVersionHistory.svelte +1 -1
- package/package/components/SimpleEditor.svelte +4 -1
- package/package/components/StringTypeNarrowing.svelte +229 -167
- package/package/components/StringTypeNarrowing.svelte.d.ts +6 -1
- package/package/components/TemplateEditor.svelte +1 -0
- package/package/components/TestJobLoader.svelte +14 -5
- package/package/components/TestJobLoader.svelte.d.ts +1 -1
- package/package/components/Toggle.svelte +6 -3
- package/package/components/Toggle.svelte.d.ts +1 -0
- package/package/components/Tooltip.svelte +8 -2
- package/package/components/Tooltip.svelte.d.ts +1 -0
- package/package/components/UserSettings.svelte +24 -1
- package/package/components/WorkspaceGroup.svelte +84 -21
- package/package/components/WorkspaceGroup.svelte.d.ts +1 -0
- package/package/components/app_connect.d.ts +7 -0
- package/package/components/app_connect.js +78 -0
- package/package/components/apps/components/buttons/AppButton.svelte +2 -1
- package/package/components/apps/components/buttons/AppButton.svelte.d.ts +1 -0
- package/package/components/apps/components/display/AppAlert.svelte +1 -1
- package/package/components/apps/components/display/AppCustomComponent.svelte +1 -1
- package/package/components/apps/components/display/AppDisplayComponent.svelte +2 -2
- package/package/components/apps/components/display/AppDownload.svelte +1 -1
- package/package/components/apps/components/display/AppFlowStatusComponent.svelte +13 -70
- package/package/components/apps/components/display/AppFlowStatusComponent.svelte.d.ts +1 -9
- package/package/components/apps/components/display/AppIcon.svelte +1 -1
- package/package/components/apps/components/display/AppJobIdFlowStatus.svelte +23 -10
- package/package/components/apps/components/display/AppJobIdFlowStatus.svelte.d.ts +1 -3
- package/package/components/apps/components/display/AppJobIdLogComponent.svelte +22 -10
- package/package/components/apps/components/display/AppJobIdLogComponent.svelte.d.ts +1 -3
- package/package/components/apps/components/display/AppLogsComponent.svelte +13 -70
- package/package/components/apps/components/display/AppLogsComponent.svelte.d.ts +1 -9
- package/package/components/apps/components/display/AppMap.svelte +3 -2
- package/package/components/apps/components/display/AppMenu.svelte +1 -1
- package/package/components/apps/components/display/AppPdf.svelte +3 -11
- package/package/components/apps/components/display/AppText.svelte +7 -2
- package/package/components/apps/components/display/charts/AppAgCharts.svelte +31 -18
- package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte +32 -30
- package/package/components/apps/components/display/dbtable/InsertRow.svelte +3 -6
- package/package/components/apps/components/display/dbtable/queries/delete.js +1 -1
- package/package/components/apps/components/display/dbtable/queries/insert.js +1 -12
- package/package/components/apps/components/display/dbtable/queries/select.js +1 -1
- package/package/components/apps/components/display/dbtable/queries/update.js +2 -2
- package/package/components/apps/components/display/dbtable/utils.d.ts +0 -1
- package/package/components/apps/components/display/dbtable/utils.js +0 -83
- package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte +75 -44
- package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte.d.ts +5 -1
- package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte +172 -0
- package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte.d.ts +27 -0
- package/package/components/apps/components/display/table/AppAggridInfiniteTableEe.svelte +38 -0
- package/package/components/apps/components/display/table/AppAggridInfiniteTableEe.svelte.d.ts +28 -0
- package/package/components/apps/components/display/table/AppAggridTable.svelte +189 -56
- package/package/components/apps/components/display/table/AppAggridTable.svelte.d.ts +1 -1
- package/package/components/apps/components/display/table/AppAggridTableActions.svelte +13 -2
- package/package/components/apps/components/display/table/AppAggridTableActions.svelte.d.ts +1 -0
- package/package/components/apps/components/display/table/AppCell.svelte +1 -3
- package/package/components/apps/components/display/table/AppTable.svelte +320 -281
- package/package/components/apps/components/display/table/AppTableFooter.svelte +42 -23
- package/package/components/apps/components/display/table/AppTableFooter.svelte.d.ts +2 -2
- package/package/components/apps/components/display/table/SyncColumnDefs.svelte +119 -0
- package/package/components/apps/components/display/table/SyncColumnDefs.svelte.d.ts +21 -0
- package/package/components/apps/components/display/table/theme/windmill-theme.css +656 -0
- package/package/components/apps/components/display/table/utils.js +22 -0
- package/package/components/apps/components/helpers/DebouncedInput.svelte +3 -2
- package/package/components/apps/components/helpers/HiddenComponent.svelte +2 -1
- package/package/components/apps/components/helpers/NonRunnableComponent.svelte +35 -0
- package/package/components/apps/components/helpers/RefreshButton.svelte +30 -12
- package/package/components/apps/components/helpers/RefreshButton.svelte.d.ts +1 -3
- package/package/components/apps/components/helpers/RefreshIndicator.svelte +19 -0
- package/package/components/apps/components/helpers/RefreshIndicator.svelte.d.ts +16 -0
- package/package/components/apps/components/helpers/ResolveConfig.svelte +1 -1
- package/package/components/apps/components/helpers/RunnableComponent.svelte +102 -41
- package/package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +9 -5
- package/package/components/apps/components/helpers/RunnableWrapper.svelte +9 -1
- package/package/components/apps/components/helpers/RunnableWrapper.svelte.d.ts +6 -0
- package/package/components/apps/components/helpers/eval.js +1 -36
- package/package/components/apps/components/inputs/AppDateInput.svelte +5 -1
- package/package/components/apps/components/inputs/AppFileInput.svelte +13 -2
- package/package/components/apps/components/inputs/AppFileInput.svelte.d.ts +1 -0
- package/package/components/apps/components/inputs/AppMultiSelect.svelte +56 -50
- package/package/components/apps/components/inputs/AppMultiSelect.svelte.d.ts +1 -0
- package/package/components/apps/components/inputs/AppMultiSelectV2.svelte +178 -0
- package/package/components/apps/components/inputs/AppMultiSelectV2.svelte.d.ts +24 -0
- package/package/components/apps/components/inputs/AppNumberInput.svelte +1 -1
- package/package/components/apps/components/inputs/AppQuillEditor.svelte +26 -0
- package/package/components/apps/components/inputs/AppRangeInput.svelte +38 -37
- package/package/components/apps/components/inputs/AppS3FileInput.svelte +3 -1
- package/package/components/apps/components/inputs/AppS3FileInput.svelte.d.ts +1 -0
- package/package/components/apps/components/inputs/AppSelect.svelte +21 -10
- package/package/components/apps/components/inputs/AppSliderInputs.svelte +26 -31
- package/package/components/apps/components/inputs/AppTextInput.svelte +1 -1
- package/package/components/apps/components/inputs/currency/AppCurrencyInput.svelte +1 -1
- package/package/components/apps/components/layout/AppConditionalWrapper.svelte +10 -3
- package/package/components/apps/components/layout/AppConditionalWrapper.svelte.d.ts +1 -0
- package/package/components/apps/components/layout/AppContainer.svelte +1 -1
- package/package/components/apps/components/layout/AppDecisionTree.svelte +1 -1
- package/package/components/apps/components/layout/AppDrawer.svelte +16 -3
- package/package/components/apps/components/layout/AppDrawer.svelte.d.ts +2 -0
- package/package/components/apps/components/layout/AppModal.svelte +85 -79
- package/package/components/apps/components/layout/AppModal.svelte.d.ts +2 -0
- package/package/components/apps/components/layout/AppStepper.svelte +7 -2
- package/package/components/apps/components/layout/AppStepper.svelte.d.ts +2 -0
- package/package/components/apps/components/layout/AppTabs.svelte +4 -2
- package/package/components/apps/components/layout/AppTabs.svelte.d.ts +1 -0
- package/package/components/apps/editor/AppEditor.svelte +3 -2
- package/package/components/apps/editor/AppEditorHeader.svelte +68 -38
- package/package/components/apps/editor/AppInputs.svelte +1 -1
- package/package/components/apps/editor/AppPreview.svelte +18 -7
- package/package/components/apps/editor/ComponentHeader.svelte +37 -1
- package/package/components/apps/editor/ComponentHeader.svelte.d.ts +2 -0
- package/package/components/apps/editor/GridEditor.svelte +15 -6
- package/package/components/apps/editor/GridEditorMenu.svelte +120 -49
- package/package/components/apps/editor/GridViewer.svelte +14 -5
- package/package/components/apps/editor/GridViewer.svelte.d.ts +5 -1
- package/package/components/apps/editor/RecomputeAllComponents.svelte +17 -3
- package/package/components/apps/editor/RunnableJobPanel.svelte +9 -5
- package/package/components/apps/editor/SettingsPanel.svelte +19 -5
- package/package/components/apps/editor/SubGridEditor.svelte +44 -27
- package/package/components/apps/editor/appUtils.d.ts +6 -1
- package/package/components/apps/editor/appUtils.js +85 -7
- package/package/components/apps/editor/component/Component.svelte +86 -18
- package/package/components/apps/editor/component/Component.svelte.d.ts +3 -0
- package/package/components/apps/editor/component/components.d.ts +285 -23
- package/package/components/apps/editor/component/components.js +178 -13
- package/package/components/apps/editor/component/default-codes.d.ts +1 -1
- package/package/components/apps/editor/component/default-codes.js +241 -9
- package/package/components/apps/editor/component/sets.d.ts +3 -0
- package/package/components/apps/editor/component/sets.js +12 -2
- package/package/components/apps/editor/componentsPanel/ComponentList.svelte +15 -2
- package/package/components/apps/editor/componentsPanel/componentControlUtils.js +4 -2
- package/package/components/apps/editor/componentsPanel/cssUtils.js +1 -1
- package/package/components/apps/editor/componentsPanel/quickStyleProperties.js +5 -0
- package/package/components/apps/editor/contextPanel/components/OutputHeader.svelte +9 -5
- package/package/components/apps/editor/contextPanel/components/TableActionsOutput.svelte +1 -1
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +46 -6
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte +1 -1
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelWithTable.svelte +1 -1
- package/package/components/apps/editor/inlineScriptsPanel/utils.js +3 -1
- package/package/components/apps/editor/settingsPanel/AlignmentEditor.svelte +1 -1
- package/package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +5 -34
- package/package/components/apps/editor/settingsPanel/ComponentControl.svelte +1 -1
- package/package/components/apps/editor/settingsPanel/ComponentInputTypeEditor.svelte +8 -5
- package/package/components/apps/editor/settingsPanel/ComponentPanel.svelte +41 -29
- package/package/components/apps/editor/settingsPanel/ContextVariables.svelte +61 -0
- package/package/components/apps/editor/settingsPanel/ContextVariables.svelte.d.ts +16 -0
- package/package/components/apps/editor/settingsPanel/DecisionTreeGraphEditor.svelte +12 -10
- package/package/components/apps/editor/settingsPanel/DeleteComponent.svelte +29 -32
- package/package/components/apps/editor/settingsPanel/DeleteComponent.svelte.d.ts +0 -5
- package/package/components/apps/editor/settingsPanel/EventHandlerItem.svelte +33 -0
- package/package/components/apps/editor/settingsPanel/EventHandlerItem.svelte.d.ts +19 -0
- package/package/components/apps/editor/settingsPanel/EventHandlers.svelte +103 -0
- package/package/components/apps/editor/settingsPanel/EventHandlers.svelte.d.ts +18 -0
- package/package/components/apps/editor/settingsPanel/GridCondition.svelte +14 -36
- package/package/components/apps/editor/settingsPanel/GridTab.svelte +4 -24
- package/package/components/apps/editor/settingsPanel/GridTabDisabled.svelte +2 -1
- package/package/components/apps/editor/settingsPanel/GridTabDisabled.svelte.d.ts +1 -0
- package/package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +24 -3
- package/package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte +32 -2
- package/package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte.d.ts +1 -0
- package/package/components/apps/editor/settingsPanel/StylePanel.svelte +4 -3
- package/package/components/apps/editor/settingsPanel/SubTypeEditor.svelte +0 -2
- package/package/components/apps/editor/settingsPanel/SubTypeEditor.svelte.d.ts +0 -1
- package/package/components/apps/editor/settingsPanel/inputEditor/ColorInput.svelte +3 -2
- package/package/components/apps/editor/settingsPanel/inputEditor/EvalV2InputEditor.svelte +8 -1
- package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +7 -14
- package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte.d.ts +0 -1
- package/package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte +4 -4
- package/package/components/apps/editor/settingsPanel/secondaryMenu/SecondaryMenu.svelte +6 -3
- package/package/components/apps/inputType.d.ts +4 -0
- package/package/components/apps/rx.d.ts +1 -1
- package/package/components/apps/rx.js +7 -0
- package/package/components/apps/svelte-grid/Grid.svelte +13 -4
- package/package/components/apps/svelte-grid/Grid.svelte.d.ts +2 -1
- package/package/components/apps/svelte-grid/types.d.ts +1 -0
- package/package/components/apps/svelte-grid/utils/helper.js +1 -0
- package/package/components/apps/svelte-grid/utils/overlap.d.ts +3 -0
- package/package/components/apps/svelte-grid/utils/overlap.js +21 -0
- package/package/components/apps/svelte-select/lib/Select.svelte.d.ts +2 -2
- package/package/components/apps/svelte-select/lib/tailwind.css +1 -1
- package/package/components/apps/types.d.ts +1 -0
- package/package/components/apps/utils.js +13 -3
- package/package/components/auditLogs/AuditLogsTable.svelte +5 -2
- package/package/components/build_workers.js +1 -0
- package/package/components/common/alert/Alert.svelte +17 -17
- package/package/components/common/badge/Badge.svelte +6 -3
- package/package/components/common/badge/model.d.ts +1 -1
- package/package/components/common/button/Button.svelte +22 -14
- package/package/components/common/button/ButtonDropdown.svelte +1 -0
- package/package/components/common/calendarPicker/CalendarPicker.svelte +2 -0
- package/package/components/common/calendarPicker/CalendarPicker.svelte.d.ts +1 -0
- package/package/components/common/drawer/ConditionalPortal.svelte +9 -0
- package/package/components/common/drawer/ConditionalPortal.svelte.d.ts +18 -0
- package/package/components/common/drawer/Disposable.svelte +67 -0
- package/package/components/common/drawer/Disposable.svelte.d.ts +37 -0
- package/package/components/common/drawer/Drawer.svelte +40 -56
- package/package/components/common/drawer/Drawer.svelte.d.ts +2 -1
- package/package/components/common/fileDownload/FileDownload.svelte +4 -2
- package/package/components/common/fileInput/FileInput.svelte +3 -3
- package/package/components/common/fileInput/FileInput.svelte.d.ts +1 -0
- package/package/components/common/fileUpload/FileUpload.svelte +5 -4
- package/package/components/common/languageIcons/LanguageIcon.svelte +5 -2
- package/package/components/common/modal/Modal.svelte +4 -1
- package/package/components/common/modal/Modal.svelte.d.ts +1 -0
- package/package/components/common/popup/Popup.svelte +1 -1
- package/package/components/common/table/RowIcon.svelte +4 -4
- package/package/components/common/table/ScriptRow.svelte +12 -1
- package/package/components/common/table/ScriptRow.svelte.d.ts +1 -0
- package/package/components/common/toggleButton-v2/ToggleButtonGroup.svelte +4 -1
- package/package/components/common/toggleButton-v2/ToggleButtonGroup.svelte.d.ts +1 -0
- package/package/components/common/toggleButton-v2/ToggleButtonMore.svelte +45 -0
- package/package/components/common/toggleButton-v2/ToggleButtonMore.svelte.d.ts +24 -0
- package/package/components/common/waitTimeWarning/WaitTimeWarning.svelte +79 -0
- package/package/components/common/waitTimeWarning/WaitTimeWarning.svelte.d.ts +18 -0
- package/package/components/copilot/CronGen.svelte +2 -2
- package/package/components/copilot/FlowCopilotStatus.svelte +1 -1
- package/package/components/copilot/RegexGen.svelte +17 -39
- package/package/components/copilot/ScriptGen.svelte +14 -5
- package/package/components/copilot/StepInputGen.svelte +2 -1
- package/package/components/copilot/StepInputsGen.svelte +2 -1
- package/package/components/copilot/completion.js +60 -9
- package/package/components/copilot/lib.js +5 -3
- package/package/components/copilot/prompts/edit.yaml +24 -0
- package/package/components/copilot/prompts/editPrompt.d.ts +3 -0
- package/package/components/copilot/prompts/editPrompt.js +3 -0
- package/package/components/copilot/prompts/fix.yaml +25 -0
- package/package/components/copilot/prompts/fixPrompt.d.ts +3 -0
- package/package/components/copilot/prompts/fixPrompt.js +3 -0
- package/package/components/copilot/prompts/gen.yaml +20 -0
- package/package/components/copilot/prompts/genPrompt.d.ts +3 -0
- package/package/components/copilot/prompts/genPrompt.js +3 -0
- package/package/components/copilot/utils.d.ts +2 -1
- package/package/components/copilot/utils.js +38 -0
- package/package/components/details/createAppFromScript.d.ts +26 -0
- package/package/components/details/createAppFromScript.js +50 -24
- package/package/components/flows/CreateActionsApp.svelte +1 -0
- package/package/components/flows/CreateActionsFlow.svelte +1 -0
- package/package/components/flows/content/FlowEditorPanel.svelte +16 -2
- package/package/components/flows/content/FlowInput.svelte +63 -53
- package/package/components/flows/content/FlowInputs.svelte +2 -2
- package/package/components/flows/content/FlowModuleComponent.svelte +41 -9
- package/package/components/flows/content/FlowModuleScript.svelte +40 -1
- package/package/components/flows/content/FlowModuleScript.svelte.d.ts +2 -0
- package/package/components/flows/content/FlowModuleSuspend.svelte +99 -59
- package/package/components/flows/content/FlowModuleWrapper.svelte +16 -1
- package/package/components/flows/content/FlowSchedules.svelte +11 -8
- package/package/components/flows/content/ScriptEditorDrawer.svelte +6 -6
- package/package/components/flows/flowExplorer.js +4 -1
- package/package/components/flows/flowStateUtils.js +4 -1
- package/package/components/flows/map/FlowConstantsItem.svelte +1 -1
- package/package/components/flows/map/FlowErrorHandlerItem.svelte +1 -1
- package/package/components/flows/map/FlowModuleSchemaItem.svelte +19 -1
- package/package/components/flows/map/FlowModuleSchemaItem.svelte.d.ts +1 -0
- package/package/components/flows/map/FlowModuleSchemaMap.svelte +6 -1
- package/package/components/flows/map/FlowSettingsItem.svelte +1 -1
- package/package/components/flows/map/MapItem.svelte +2 -0
- package/package/components/flows/map/MapItem.svelte.d.ts +1 -0
- package/package/components/flows/types.d.ts +4 -0
- package/package/components/flows/utils.d.ts +5 -1
- package/package/components/flows/utils.js +36 -0
- package/package/components/graph/FlowGraph.svelte +6 -2
- package/package/components/graph/FlowGraph.svelte.d.ts +2 -0
- package/package/components/graph/svelvet/container/models/index.d.ts +0 -5
- package/package/components/graph/svelvet/container/models/index.js +1 -1
- package/package/components/graph/svelvet/container/views/Svelvet.svelte +2 -5
- package/package/components/graph/svelvet/edges/views/Edges/SimpleBezierEdge.svelte +41 -16
- package/package/components/graph/util.d.ts +1 -37
- package/package/components/graph/util.js +0 -34
- package/package/components/home/ItemsList.svelte +44 -9
- package/package/components/home/TreeView.svelte +2 -0
- package/package/components/icons/AzureIcon.svelte +25 -1
- package/package/components/icons/PHPIcon.svelte +117 -0
- package/package/components/icons/PHPIcon.svelte.d.ts +17 -0
- package/package/components/instanceSettings.d.ts +1 -1
- package/package/components/instanceSettings.js +20 -3
- package/package/components/jobs/JobPreview.svelte +6 -1
- package/package/components/multiselect/MultiSelect.svelte +783 -0
- package/package/components/multiselect/MultiSelect.svelte.d.ts +98 -0
- package/package/components/multiselect/MultiSelectWrapper.svelte +89 -0
- package/package/components/multiselect/MultiSelectWrapper.svelte.d.ts +20 -0
- package/package/components/multiselect/types.d.ts +56 -0
- package/package/components/multiselect/types.js +1 -0
- package/package/components/multiselect/utils.d.ts +7 -0
- package/package/components/multiselect/utils.js +54 -0
- package/package/components/propertyPicker/ObjectViewer.svelte +19 -2
- package/package/components/runs/JobLoader.svelte +135 -17
- package/package/components/runs/JobLoader.svelte.d.ts +7 -2
- package/package/components/runs/JobPreview.svelte +44 -4
- package/package/components/runs/JobPreview.svelte.d.ts +2 -0
- package/package/components/runs/RunRow.svelte +99 -33
- package/package/components/runs/RunRow.svelte.d.ts +5 -1
- package/package/components/runs/RunsFilter.svelte +125 -9
- package/package/components/runs/RunsFilter.svelte.d.ts +4 -2
- package/package/components/runs/RunsTable.svelte +71 -10
- package/package/components/runs/RunsTable.svelte.d.ts +8 -1
- package/package/components/schema/AddProperty.svelte +149 -0
- package/package/components/schema/AddProperty.svelte.d.ts +23 -0
- package/package/components/schema/AddPropertyForm.svelte +33 -0
- package/package/components/schema/AddPropertyForm.svelte.d.ts +16 -0
- package/package/components/schema/EditableSchemaDrawer.svelte +198 -0
- package/package/components/schema/EditableSchemaDrawer.svelte.d.ts +21 -0
- package/package/components/schema/EditableSchemaWrapper.svelte +31 -0
- package/package/components/schema/EditableSchemaWrapper.svelte.d.ts +22 -0
- package/package/components/schema/FlowPropertyEditor.svelte +393 -0
- package/package/components/schema/FlowPropertyEditor.svelte.d.ts +47 -0
- package/package/components/schema/PropertyEditor.svelte +185 -0
- package/package/components/schema/PropertyEditor.svelte.d.ts +46 -0
- package/package/components/schema/SchemaFormDND.svelte +75 -0
- package/package/components/schema/SchemaFormDND.svelte.d.ts +28 -0
- package/package/components/scriptEditor/LogPanel.svelte +46 -33
- package/package/components/scriptEditor/LogPanel.svelte.d.ts +1 -0
- package/package/components/scripts/CreateActionsScript.svelte +1 -1
- package/package/components/settings/WorkspaceUserSettings.svelte +246 -226
- package/package/components/sidebar/MenuButton.svelte +1 -1
- package/package/components/sidebar/MenuLink.svelte +1 -1
- package/package/components/sidebar/changelogs.js +40 -0
- package/package/components/table/AutoDataTable.svelte +124 -163
- package/package/components/table/Cell.svelte +4 -1
- package/package/components/table/Cell.svelte.d.ts +1 -0
- package/package/components/table/DataTable.svelte +13 -5
- package/package/components/table/DataTable.svelte.d.ts +1 -0
- package/package/components/table/DownloadCsv.svelte +30 -0
- package/package/components/table/DownloadCsv.svelte.d.ts +17 -0
- package/package/components/table/tableUtils.d.ts +8 -0
- package/package/components/table/tableUtils.js +37 -0
- package/package/components/vscode.js +1 -1
- package/package/components/wizards/AgGridWizard.svelte +27 -2
- package/package/components/wizards/AgGridWizard.svelte.d.ts +1 -0
- package/package/consts.js +7 -1
- package/package/defaults.d.ts +2 -2
- package/package/defaults.js +2 -2
- package/package/deno_fetch.d.ts.txt +36 -0
- package/package/editorUtils.js +2 -0
- package/package/gen/core/OpenAPI.js +5 -6
- package/package/gen/core/request.js +4 -1
- package/package/gen/index.d.ts +0 -1
- package/package/gen/index.js +0 -1
- package/package/gen/schemas.gen.d.ts +173 -428
- package/package/gen/schemas.gen.js +173 -433
- package/package/gen/services.gen.d.ts +3182 -1840
- package/package/gen/services.gen.js +3652 -2368
- package/package/gen/types.gen.d.ts +5445 -1529
- package/package/infer.d.ts +1 -1
- package/package/infer.js +6 -2
- package/package/inferArgSig.d.ts +10 -0
- package/package/inferArgSig.js +64 -4
- package/package/init_scripts/python_init_code.d.ts +1 -1
- package/package/init_scripts/python_init_code.js +1 -1
- package/package/process.d.ts.txt +1770 -0
- package/package/script_helpers.d.ts +3 -2
- package/package/script_helpers.js +28 -3
- package/package/scripts.d.ts +3 -1
- package/package/scripts.js +10 -3
- package/package/utils.d.ts +5 -1
- package/package/utils.js +53 -5
- package/package/windmill_fetch.d.ts.txt +16966 -0
- package/package/workspace_settings.d.ts +15 -0
- package/package/workspace_settings.js +81 -0
- package/package/zIndexes.d.ts +12 -0
- package/package/zIndexes.js +12 -0
- package/package.json +19 -10
- package/package/components/AppConnect.svelte +0 -566
- package/package/components/AppConnect.svelte.d.ts +0 -23
- package/package/components/ContextMenu.svelte +0 -89
- package/package/components/ContextMenu.svelte.d.ts +0 -28
- package/package/components/ParqetTableRenderer.svelte +0 -121
- package/package/components/ParqetTableRenderer.svelte.d.ts +0 -18
- package/package/components/PropertyRow.svelte +0 -80
- package/package/components/PropertyRow.svelte.d.ts +0 -23
- package/package/components/SchemaEditor.svelte +0 -344
- package/package/components/SchemaEditor.svelte.d.ts +0 -23
- package/package/components/SchemaModal.svelte +0 -350
- package/package/components/SchemaModal.svelte.d.ts +0 -31
- package/package/components/apps/components/display/index.d.ts +0 -17
- package/package/components/apps/components/display/index.js +0 -17
- package/package/components/apps/components/helpers/index.d.ts +0 -10
- package/package/components/apps/components/helpers/index.js +0 -10
- package/package/components/apps/components/index.d.ts +0 -5
- package/package/components/apps/components/index.js +0 -5
- package/package/components/apps/editor/settingsPanel/Recompute.svelte +0 -55
- package/package/components/apps/editor/settingsPanel/Recompute.svelte.d.ts +0 -20
|
@@ -4,20 +4,28 @@ declare const __propDef: {
|
|
|
4
4
|
props: {
|
|
5
5
|
schema: Schema | any;
|
|
6
6
|
schemaSkippedValues?: string[] | undefined;
|
|
7
|
-
schemaFieldTooltip?: Record<string, string> | undefined;
|
|
8
7
|
args?: Record<string, any> | undefined;
|
|
9
|
-
autofocus?: boolean | undefined;
|
|
10
8
|
shouldHideNoInputs?: boolean | undefined;
|
|
11
|
-
compact?: boolean | undefined;
|
|
12
9
|
noVariablePicker?: boolean | undefined;
|
|
13
10
|
flexWrap?: boolean | undefined;
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
11
|
+
uiOnly?: boolean | undefined;
|
|
12
|
+
isFlowInput?: boolean | undefined;
|
|
13
|
+
noPreview?: boolean | undefined;
|
|
14
|
+
offset?: number | undefined;
|
|
15
|
+
jsonEnabled?: boolean | undefined;
|
|
16
|
+
isAppInput?: boolean | undefined;
|
|
17
|
+
lightweightMode?: boolean | undefined;
|
|
18
|
+
displayWebhookWarning?: boolean | undefined;
|
|
19
|
+
dndType?: string | undefined;
|
|
17
20
|
class?: string | undefined;
|
|
18
21
|
setDefaults?: (() => void) | undefined;
|
|
22
|
+
openField?: ((key: string) => void) | undefined;
|
|
23
|
+
deleteField?: ((key: string) => void) | undefined;
|
|
19
24
|
};
|
|
20
25
|
events: {
|
|
26
|
+
change: CustomEvent<any>;
|
|
27
|
+
delete: CustomEvent<any>;
|
|
28
|
+
} & {
|
|
21
29
|
[evt: string]: CustomEvent<any>;
|
|
22
30
|
};
|
|
23
31
|
slots: {};
|
|
@@ -27,5 +35,7 @@ export type EditableSchemaFormEvents = typeof __propDef.events;
|
|
|
27
35
|
export type EditableSchemaFormSlots = typeof __propDef.slots;
|
|
28
36
|
export default class EditableSchemaForm extends SvelteComponent<EditableSchemaFormProps, EditableSchemaFormEvents, EditableSchemaFormSlots> {
|
|
29
37
|
get setDefaults(): () => void;
|
|
38
|
+
get openField(): (key: string) => void;
|
|
39
|
+
get deleteField(): (key: string) => void;
|
|
30
40
|
}
|
|
31
41
|
export {};
|
|
@@ -10,10 +10,14 @@ import 'monaco-editor/esm/vs/basic-languages/typescript/typescript.contribution'
|
|
|
10
10
|
import 'monaco-editor/esm/vs/basic-languages/sql/sql.contribution';
|
|
11
11
|
import 'monaco-editor/esm/vs/basic-languages/graphql/graphql.contribution';
|
|
12
12
|
import 'monaco-editor/esm/vs/basic-languages/powershell/powershell.contribution';
|
|
13
|
+
import 'monaco-editor/esm/vs/basic-languages/php/php.contribution';
|
|
13
14
|
import 'monaco-editor/esm/vs/language/typescript/monaco.contribution';
|
|
14
15
|
import 'monaco-editor/esm/vs/basic-languages/css/css.contribution';
|
|
15
16
|
import libStdContent from '../es6.d.ts.txt?raw';
|
|
17
|
+
import domContent from '../dom.d.ts.txt?raw';
|
|
16
18
|
import denoFetchContent from '../deno_fetch.d.ts.txt?raw';
|
|
19
|
+
import processStdContent from '../process.d.ts.txt?raw';
|
|
20
|
+
import windmillFetchContent from '../windmill_fetch.d.ts.txt?raw';
|
|
17
21
|
import { MonacoLanguageClient } from 'monaco-languageclient';
|
|
18
22
|
import { toSocket, WebSocketMessageReader, WebSocketMessageWriter } from 'vscode-ws-jsonrpc';
|
|
19
23
|
import { CloseAction, ErrorAction, RequestType } from 'vscode-languageclient';
|
|
@@ -41,7 +45,6 @@ export let formatAction = undefined;
|
|
|
41
45
|
export let automaticLayout = true;
|
|
42
46
|
export let websocketAlive = {
|
|
43
47
|
pyright: false,
|
|
44
|
-
black: false,
|
|
45
48
|
ruff: false,
|
|
46
49
|
deno: false,
|
|
47
50
|
go: false,
|
|
@@ -102,6 +105,11 @@ export function arrowDown() {
|
|
|
102
105
|
}
|
|
103
106
|
}
|
|
104
107
|
}
|
|
108
|
+
export function backspace() {
|
|
109
|
+
if (editor) {
|
|
110
|
+
editor.trigger('keyboard', 'deleteLeft', {});
|
|
111
|
+
}
|
|
112
|
+
}
|
|
105
113
|
export function insertAtBeginning(code) {
|
|
106
114
|
if (editor) {
|
|
107
115
|
const range = { startLineNumber: 1, startColumn: 1, endLineNumber: 1, endColumn: 1 };
|
|
@@ -547,7 +555,7 @@ export async function reloadWebsocket() {
|
|
|
547
555
|
}
|
|
548
556
|
}
|
|
549
557
|
const wsProtocol = BROWSER && window.location.protocol == 'https:' ? 'wss' : 'ws';
|
|
550
|
-
const hostname =
|
|
558
|
+
const hostname = getHostname();
|
|
551
559
|
let encodedImportMap = '';
|
|
552
560
|
// if (lang == 'typescript') {
|
|
553
561
|
// let worker = await languages.typescript.getTypeScriptWorker()
|
|
@@ -612,82 +620,6 @@ export async function reloadWebsocket() {
|
|
|
612
620
|
];
|
|
613
621
|
});
|
|
614
622
|
}
|
|
615
|
-
else if (lang === 'typescript') {
|
|
616
|
-
const stdLib = { content: libStdContent, filePath: 'es6.d.ts' };
|
|
617
|
-
if (scriptLang == 'bun') {
|
|
618
|
-
languages.typescript.typescriptDefaults.setExtraLibs([stdLib]);
|
|
619
|
-
}
|
|
620
|
-
else {
|
|
621
|
-
const denoFetch = { content: denoFetchContent, filePath: 'deno_fetch.d.ts' };
|
|
622
|
-
languages.typescript.typescriptDefaults.setExtraLibs([stdLib, denoFetch]);
|
|
623
|
-
}
|
|
624
|
-
if (scriptLang == 'bun' && ata == undefined) {
|
|
625
|
-
const addLibraryToRuntime = async (code, _path) => {
|
|
626
|
-
const path = 'file://' + _path;
|
|
627
|
-
let uri = mUri.parse(path);
|
|
628
|
-
console.log('adding library to runtime', path);
|
|
629
|
-
languages.typescript.typescriptDefaults.addExtraLib(code, path);
|
|
630
|
-
try {
|
|
631
|
-
await vscode.workspace.fs.writeFile(uri, new TextEncoder().encode(code));
|
|
632
|
-
}
|
|
633
|
-
catch (e) {
|
|
634
|
-
console.log('error writing file', e);
|
|
635
|
-
}
|
|
636
|
-
};
|
|
637
|
-
const addLocalFile = async (code, _path) => {
|
|
638
|
-
let p = new URL(_path, uri).href;
|
|
639
|
-
// if (_path?.startsWith('/')) {
|
|
640
|
-
// p = 'file://' + p
|
|
641
|
-
// }
|
|
642
|
-
let nuri = mUri.parse(p);
|
|
643
|
-
console.log('adding local file', _path, nuri.toString());
|
|
644
|
-
if (editor) {
|
|
645
|
-
let localModel = meditor.getModel(nuri);
|
|
646
|
-
if (localModel) {
|
|
647
|
-
localModel.setValue(code);
|
|
648
|
-
}
|
|
649
|
-
else {
|
|
650
|
-
meditor.createModel(code, 'javascript', nuri);
|
|
651
|
-
}
|
|
652
|
-
try {
|
|
653
|
-
if (model) {
|
|
654
|
-
model?.setValue(model.getValue());
|
|
655
|
-
}
|
|
656
|
-
}
|
|
657
|
-
catch (e) {
|
|
658
|
-
console.log('error resetting model', e);
|
|
659
|
-
}
|
|
660
|
-
}
|
|
661
|
-
};
|
|
662
|
-
await initWasm();
|
|
663
|
-
const root = await genRoot(hostname);
|
|
664
|
-
console.log('SETUP TYPE ACQUISITION', { root, path });
|
|
665
|
-
ata = setupTypeAcquisition({
|
|
666
|
-
projectName: 'Windmill',
|
|
667
|
-
depsParser: (c) => {
|
|
668
|
-
return parseDeps(c);
|
|
669
|
-
},
|
|
670
|
-
root,
|
|
671
|
-
scriptPath: path,
|
|
672
|
-
logger: console,
|
|
673
|
-
delegate: {
|
|
674
|
-
receivedFile: addLibraryToRuntime,
|
|
675
|
-
localFile: addLocalFile,
|
|
676
|
-
progress: (downloaded, total) => {
|
|
677
|
-
// console.log({ dl, ttl })
|
|
678
|
-
},
|
|
679
|
-
started: () => {
|
|
680
|
-
console.log('ATA start');
|
|
681
|
-
},
|
|
682
|
-
finished: (f) => {
|
|
683
|
-
console.log('ATA done');
|
|
684
|
-
}
|
|
685
|
-
}
|
|
686
|
-
});
|
|
687
|
-
ata?.('import "bun-types"');
|
|
688
|
-
ata?.(code);
|
|
689
|
-
}
|
|
690
|
-
}
|
|
691
623
|
else if (lang === 'python') {
|
|
692
624
|
await connectToLanguageServer(`${wsProtocol}://${window.location.host}/ws/pyright`, 'pyright', {}, (params, token, next) => {
|
|
693
625
|
if (params.items.find((x) => x.section === 'python')) {
|
|
@@ -715,17 +647,6 @@ export async function reloadWebsocket() {
|
|
|
715
647
|
return next(params, token);
|
|
716
648
|
});
|
|
717
649
|
connectToLanguageServer(`${wsProtocol}://${window.location.host}/ws/ruff`, 'ruff', {}, undefined);
|
|
718
|
-
connectToLanguageServer(`${wsProtocol}://${window.location.host}/ws/diagnostic`, 'black', {
|
|
719
|
-
formatters: {
|
|
720
|
-
black: {
|
|
721
|
-
command: 'black',
|
|
722
|
-
args: ['--quiet', '-']
|
|
723
|
-
}
|
|
724
|
-
},
|
|
725
|
-
formatFiletypes: {
|
|
726
|
-
python: 'black'
|
|
727
|
-
}
|
|
728
|
-
}, undefined);
|
|
729
650
|
}
|
|
730
651
|
else if (lang === 'go') {
|
|
731
652
|
connectToLanguageServer(`${wsProtocol}://${window.location.host}/ws/go`, 'go', {
|
|
@@ -772,8 +693,7 @@ export async function reloadWebsocket() {
|
|
|
772
693
|
if (document.visibilityState == 'visible') {
|
|
773
694
|
if (!lastWsAttempt ||
|
|
774
695
|
(new Date().getTime() - lastWsAttempt.getTime() > 60000 && nbWsAttempt < 2)) {
|
|
775
|
-
if (!websocketAlive.
|
|
776
|
-
!websocketAlive.deno &&
|
|
696
|
+
if (!websocketAlive.deno &&
|
|
777
697
|
!websocketAlive.pyright &&
|
|
778
698
|
!websocketAlive.go &&
|
|
779
699
|
!websocketAlive.shellcheck &&
|
|
@@ -796,6 +716,9 @@ export async function reloadWebsocket() {
|
|
|
796
716
|
}
|
|
797
717
|
}
|
|
798
718
|
let pathTimeout = undefined;
|
|
719
|
+
function getHostname() {
|
|
720
|
+
return BROWSER ? window.location.protocol + '//' + window.location.host : 'SSR';
|
|
721
|
+
}
|
|
799
722
|
function handlePathChange() {
|
|
800
723
|
console.log('path changed, reloading language server', initialPath, path);
|
|
801
724
|
initialPath = path;
|
|
@@ -871,6 +794,7 @@ async function loadMonaco() {
|
|
|
871
794
|
noUnusedLocals: true,
|
|
872
795
|
strict: true,
|
|
873
796
|
noLib: false,
|
|
797
|
+
allowImportingTsExtensions: true,
|
|
874
798
|
moduleResolution: languages.typescript.ModuleResolutionKind.NodeJs
|
|
875
799
|
});
|
|
876
800
|
languages.typescript.javascriptDefaults.setModeConfiguration({
|
|
@@ -980,8 +904,11 @@ async function loadMonaco() {
|
|
|
980
904
|
code = getCode();
|
|
981
905
|
shouldBindKey && cmdEnterAction && cmdEnterAction();
|
|
982
906
|
});
|
|
983
|
-
|
|
984
|
-
|
|
907
|
+
editor.addCommand(KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.Digit7, function () {
|
|
908
|
+
// CMD + slash (toggle comment) on some EU keyboards
|
|
909
|
+
editor?.trigger('keyboard', 'editor.action.commentLine', {});
|
|
910
|
+
});
|
|
911
|
+
if (!websocketAlive.deno &&
|
|
985
912
|
!websocketAlive.pyright &&
|
|
986
913
|
!websocketAlive.ruff &&
|
|
987
914
|
!websocketAlive.shellcheck &&
|
|
@@ -993,6 +920,7 @@ async function loadMonaco() {
|
|
|
993
920
|
}
|
|
994
921
|
});
|
|
995
922
|
reloadWebsocket();
|
|
923
|
+
setTypescriptExtraLibs();
|
|
996
924
|
return () => {
|
|
997
925
|
console.log('disposing editor');
|
|
998
926
|
ata = undefined;
|
|
@@ -1007,6 +935,97 @@ async function loadMonaco() {
|
|
|
1007
935
|
}
|
|
1008
936
|
};
|
|
1009
937
|
}
|
|
938
|
+
async function setTypescriptExtraLibs() {
|
|
939
|
+
if (lang === 'typescript' && scriptLang != 'deno') {
|
|
940
|
+
const hostname = getHostname();
|
|
941
|
+
const stdLib = { content: libStdContent, filePath: 'es6.d.ts' };
|
|
942
|
+
if (scriptLang == 'bun') {
|
|
943
|
+
const processLib = { content: processStdContent, filePath: 'process.d.ts' };
|
|
944
|
+
const domLib = { content: domContent, filePath: 'dom.d.ts' };
|
|
945
|
+
languages.typescript.typescriptDefaults.setExtraLibs([stdLib, domLib, processLib]);
|
|
946
|
+
}
|
|
947
|
+
else {
|
|
948
|
+
const denoFetch = { content: denoFetchContent, filePath: 'deno_fetch.d.ts' };
|
|
949
|
+
languages.typescript.typescriptDefaults.setExtraLibs([stdLib, denoFetch]);
|
|
950
|
+
let localContent = windmillFetchContent;
|
|
951
|
+
let p = '/tmp/monaco/windmill.d.ts';
|
|
952
|
+
let nuri = mUri.parse(p);
|
|
953
|
+
let localModel = meditor.getModel(nuri);
|
|
954
|
+
if (localModel) {
|
|
955
|
+
localModel.setValue(localContent);
|
|
956
|
+
}
|
|
957
|
+
else {
|
|
958
|
+
meditor.createModel(localContent, 'typescript', nuri);
|
|
959
|
+
}
|
|
960
|
+
}
|
|
961
|
+
if (scriptLang == 'bun' && ata == undefined) {
|
|
962
|
+
const addLibraryToRuntime = async (code, _path) => {
|
|
963
|
+
const path = 'file://' + _path;
|
|
964
|
+
let uri = mUri.parse(path);
|
|
965
|
+
console.log('adding library to runtime', path);
|
|
966
|
+
languages.typescript.typescriptDefaults.addExtraLib(code, path);
|
|
967
|
+
try {
|
|
968
|
+
await vscode.workspace.fs.writeFile(uri, new TextEncoder().encode(code));
|
|
969
|
+
}
|
|
970
|
+
catch (e) {
|
|
971
|
+
console.log('error writing file', e);
|
|
972
|
+
}
|
|
973
|
+
};
|
|
974
|
+
const addLocalFile = async (code, _path) => {
|
|
975
|
+
let p = new URL(_path, uri).href;
|
|
976
|
+
// if (_path?.startsWith('/')) {
|
|
977
|
+
// p = 'file://' + p
|
|
978
|
+
// }
|
|
979
|
+
let nuri = mUri.parse(p);
|
|
980
|
+
console.log('adding local file', _path, nuri.toString());
|
|
981
|
+
if (editor) {
|
|
982
|
+
let localModel = meditor.getModel(nuri);
|
|
983
|
+
if (localModel) {
|
|
984
|
+
localModel.setValue(code);
|
|
985
|
+
}
|
|
986
|
+
else {
|
|
987
|
+
meditor.createModel(code, 'typescript', nuri);
|
|
988
|
+
}
|
|
989
|
+
try {
|
|
990
|
+
if (model) {
|
|
991
|
+
model?.setValue(model.getValue());
|
|
992
|
+
}
|
|
993
|
+
}
|
|
994
|
+
catch (e) {
|
|
995
|
+
console.log('error resetting model', e);
|
|
996
|
+
}
|
|
997
|
+
}
|
|
998
|
+
};
|
|
999
|
+
await initWasm();
|
|
1000
|
+
const root = await genRoot(hostname);
|
|
1001
|
+
console.log('SETUP TYPE ACQUISITION', { root, path });
|
|
1002
|
+
ata = setupTypeAcquisition({
|
|
1003
|
+
projectName: 'Windmill',
|
|
1004
|
+
depsParser: (c) => {
|
|
1005
|
+
return parseDeps(c);
|
|
1006
|
+
},
|
|
1007
|
+
root,
|
|
1008
|
+
scriptPath: path,
|
|
1009
|
+
logger: console,
|
|
1010
|
+
delegate: {
|
|
1011
|
+
receivedFile: addLibraryToRuntime,
|
|
1012
|
+
localFile: addLocalFile,
|
|
1013
|
+
progress: (downloaded, total) => {
|
|
1014
|
+
// console.log({ dl, ttl })
|
|
1015
|
+
},
|
|
1016
|
+
started: () => {
|
|
1017
|
+
console.log('ATA start');
|
|
1018
|
+
},
|
|
1019
|
+
finished: (f) => {
|
|
1020
|
+
console.log('ATA done');
|
|
1021
|
+
}
|
|
1022
|
+
}
|
|
1023
|
+
});
|
|
1024
|
+
ata?.('import "bun-types"');
|
|
1025
|
+
ata?.(code);
|
|
1026
|
+
}
|
|
1027
|
+
}
|
|
1028
|
+
}
|
|
1010
1029
|
export function addAction(id, label, callback, keybindings = []) {
|
|
1011
1030
|
editor?.addAction({
|
|
1012
1031
|
id,
|
|
@@ -7,6 +7,7 @@ import 'monaco-editor/esm/vs/basic-languages/typescript/typescript.contribution'
|
|
|
7
7
|
import 'monaco-editor/esm/vs/basic-languages/sql/sql.contribution';
|
|
8
8
|
import 'monaco-editor/esm/vs/basic-languages/graphql/graphql.contribution';
|
|
9
9
|
import 'monaco-editor/esm/vs/basic-languages/powershell/powershell.contribution';
|
|
10
|
+
import 'monaco-editor/esm/vs/basic-languages/php/php.contribution';
|
|
10
11
|
import 'monaco-editor/esm/vs/language/typescript/monaco.contribution';
|
|
11
12
|
import 'monaco-editor/esm/vs/basic-languages/css/css.contribution';
|
|
12
13
|
import { type Preview } from '../gen';
|
|
@@ -14,14 +15,13 @@ import type { Text } from 'yjs';
|
|
|
14
15
|
declare const __propDef: {
|
|
15
16
|
props: {
|
|
16
17
|
[x: string]: any;
|
|
17
|
-
lang: 'typescript' | 'python' | 'go' | 'shell' | 'sql' | 'graphql' | 'powershell' | 'css' | 'javascript';
|
|
18
|
+
lang: 'typescript' | 'python' | 'go' | 'shell' | 'sql' | 'graphql' | 'powershell' | 'php' | 'css' | 'javascript';
|
|
18
19
|
code?: string | undefined;
|
|
19
20
|
cmdEnterAction?: (() => void) | undefined;
|
|
20
21
|
formatAction?: (() => void) | undefined;
|
|
21
22
|
automaticLayout?: boolean | undefined;
|
|
22
23
|
websocketAlive?: {
|
|
23
24
|
pyright: boolean;
|
|
24
|
-
black: boolean;
|
|
25
25
|
ruff: boolean;
|
|
26
26
|
deno: boolean;
|
|
27
27
|
go: boolean;
|
|
@@ -42,6 +42,7 @@ declare const __propDef: {
|
|
|
42
42
|
getCode?: (() => string) | undefined;
|
|
43
43
|
insertAtCursor?: ((code: string) => void) | undefined;
|
|
44
44
|
arrowDown?: (() => void) | undefined;
|
|
45
|
+
backspace?: (() => void) | undefined;
|
|
45
46
|
insertAtBeginning?: ((code: string) => void) | undefined;
|
|
46
47
|
insertAtLine?: ((code: string, line: number) => void) | undefined;
|
|
47
48
|
getSelectedLines?: (() => string | undefined) | undefined;
|
|
@@ -70,6 +71,7 @@ export default class Editor extends SvelteComponent<EditorProps, EditorEvents, E
|
|
|
70
71
|
get getCode(): () => string;
|
|
71
72
|
get insertAtCursor(): (code: string) => void;
|
|
72
73
|
get arrowDown(): () => void;
|
|
74
|
+
get backspace(): () => void;
|
|
73
75
|
get insertAtBeginning(): (code: string) => void;
|
|
74
76
|
get insertAtLine(): (code: string, line: number) => void;
|
|
75
77
|
get getSelectedLines(): () => string | undefined;
|
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
<script>import { ResourceService, VariableService } from '../gen';
|
|
5
5
|
import { workspaceStore } from '../stores';
|
|
6
6
|
import ItemPicker from './ItemPicker.svelte';
|
|
7
|
-
import ResourceEditor from './ResourceEditor.svelte';
|
|
8
7
|
import VariableEditor from './VariableEditor.svelte';
|
|
9
8
|
import Button from './common/button/Button.svelte';
|
|
10
9
|
import HighlightCode from './HighlightCode.svelte';
|
|
@@ -27,6 +26,7 @@ import ScriptGen from './copilot/ScriptGen.svelte';
|
|
|
27
26
|
import { getResetCode } from '../script_helpers';
|
|
28
27
|
import CodeCompletionStatus from './copilot/CodeCompletionStatus.svelte';
|
|
29
28
|
import Popover from './Popover.svelte';
|
|
29
|
+
import ResourceEditorDrawer from './ResourceEditorDrawer.svelte';
|
|
30
30
|
export let lang;
|
|
31
31
|
export let editor;
|
|
32
32
|
export let websocketAlive;
|
|
@@ -52,11 +52,40 @@ let showContextVarPicker = false;
|
|
|
52
52
|
let showVarPicker = false;
|
|
53
53
|
let showResourcePicker = false;
|
|
54
54
|
let showResourceTypePicker = false;
|
|
55
|
-
$: showContextVarPicker = [
|
|
56
|
-
|
|
57
|
-
|
|
55
|
+
$: showContextVarPicker = [
|
|
56
|
+
'python3',
|
|
57
|
+
'bash',
|
|
58
|
+
'powershell',
|
|
59
|
+
'go',
|
|
60
|
+
'deno',
|
|
61
|
+
'bun',
|
|
62
|
+
'nativets',
|
|
63
|
+
'php'
|
|
64
|
+
].includes(lang ?? '');
|
|
65
|
+
$: showVarPicker = [
|
|
66
|
+
'python3',
|
|
67
|
+
'bash',
|
|
68
|
+
'powershell',
|
|
69
|
+
'go',
|
|
70
|
+
'deno',
|
|
71
|
+
'bun',
|
|
72
|
+
'nativets',
|
|
73
|
+
'php'
|
|
74
|
+
].includes(lang ?? '');
|
|
75
|
+
$: showResourcePicker = [
|
|
76
|
+
'python3',
|
|
77
|
+
'bash',
|
|
78
|
+
'powershell',
|
|
79
|
+
'go',
|
|
80
|
+
'deno',
|
|
81
|
+
'bun',
|
|
82
|
+
'nativets',
|
|
83
|
+
'php'
|
|
84
|
+
].includes(lang ?? '');
|
|
58
85
|
$: showResourceTypePicker =
|
|
59
|
-
['typescript', 'javascript'].includes(scriptLangToEditorLang(lang)) ||
|
|
86
|
+
['typescript', 'javascript'].includes(scriptLangToEditorLang(lang)) ||
|
|
87
|
+
lang === 'python3' ||
|
|
88
|
+
lang === 'php';
|
|
60
89
|
let codeViewer;
|
|
61
90
|
let codeObj = undefined;
|
|
62
91
|
function addEditorActions() {
|
|
@@ -134,12 +163,51 @@ async function resourceTypePickCallback(name) {
|
|
|
134
163
|
editor.insertAtBeginning('from typing import TypedDict\n');
|
|
135
164
|
}
|
|
136
165
|
}
|
|
166
|
+
else if (lang === 'php') {
|
|
167
|
+
const phpSchema = phpCompile(resourceType.schema);
|
|
168
|
+
const rtName = toCamel(capitalize(name));
|
|
169
|
+
editor.insertAtCursor(`if (!class_exists('${rtName}')) {\nclass ${rtName} {\n${phpSchema}\n`);
|
|
170
|
+
editor.backspace();
|
|
171
|
+
editor.insertAtCursor('}');
|
|
172
|
+
}
|
|
137
173
|
else {
|
|
138
174
|
const tsSchema = compile(resourceType.schema);
|
|
139
|
-
editor.insertAtCursor(`type ${toCamel(capitalize(name))} = ${tsSchema}
|
|
175
|
+
editor.insertAtCursor(`type ${toCamel(capitalize(name))} = ${tsSchema}`);
|
|
140
176
|
}
|
|
141
177
|
sendUserToast(`${name} inserted at cursor`);
|
|
142
178
|
}
|
|
179
|
+
function phpCompile(schema) {
|
|
180
|
+
let res = ' ';
|
|
181
|
+
const entries = Object.entries(schema.properties);
|
|
182
|
+
if (entries.length === 0) {
|
|
183
|
+
return 'array';
|
|
184
|
+
}
|
|
185
|
+
let i = 0;
|
|
186
|
+
for (let [name, prop] of entries) {
|
|
187
|
+
let typ = 'array';
|
|
188
|
+
if (prop.type === 'array') {
|
|
189
|
+
typ = 'array';
|
|
190
|
+
}
|
|
191
|
+
else if (prop.type === 'string') {
|
|
192
|
+
typ = 'string';
|
|
193
|
+
}
|
|
194
|
+
else if (prop.type === 'number') {
|
|
195
|
+
typ = 'float';
|
|
196
|
+
}
|
|
197
|
+
else if (prop.type === 'integer') {
|
|
198
|
+
typ = 'int';
|
|
199
|
+
}
|
|
200
|
+
else if (prop.type === 'boolean') {
|
|
201
|
+
typ = 'bool';
|
|
202
|
+
}
|
|
203
|
+
res += `public ${typ} $${name};`;
|
|
204
|
+
i++;
|
|
205
|
+
if (i < entries.length) {
|
|
206
|
+
res += '\n';
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
return res;
|
|
210
|
+
}
|
|
143
211
|
function pythonCompile(schema) {
|
|
144
212
|
let res = '';
|
|
145
213
|
const entries = Object.entries(schema.properties);
|
|
@@ -218,8 +286,8 @@ let historyBrowserDrawerOpen = false;
|
|
|
218
286
|
if (!editor) return
|
|
219
287
|
if (lang == 'deno') {
|
|
220
288
|
editor.insertAtCursor(`Deno.env.get('${name}')`)
|
|
221
|
-
} else if (lang === 'bun') {
|
|
222
|
-
editor.insertAtCursor(`
|
|
289
|
+
} else if (lang === 'bun' || lang == 'nativets') {
|
|
290
|
+
editor.insertAtCursor(`process.env["${name}"]`)
|
|
223
291
|
} else if (lang == 'python3') {
|
|
224
292
|
if (!editor.getCode().includes('import os')) {
|
|
225
293
|
editor.insertAtBeginning('import os\n')
|
|
@@ -234,6 +302,8 @@ let historyBrowserDrawerOpen = false;
|
|
|
234
302
|
editor.insertAtCursor(`$${name}`)
|
|
235
303
|
} else if (lang == 'powershell') {
|
|
236
304
|
editor.insertAtCursor(`$Env:${name}`)
|
|
305
|
+
} else if (lang == 'php') {
|
|
306
|
+
editor.insertAtCursor(`getenv('${name}');`)
|
|
237
307
|
}
|
|
238
308
|
sendUserToast(`${name} inserted at cursor`)
|
|
239
309
|
}}
|
|
@@ -279,6 +349,17 @@ let historyBrowserDrawerOpen = false;
|
|
|
279
349
|
editor.insertAtCursor(
|
|
280
350
|
`\nInvoke-RestMethod -Headers $Headers -Uri "$Env:BASE_INTERNAL_URL/api/w/$Env:WM_WORKSPACE/variables/get_value/${path}"`
|
|
281
351
|
)
|
|
352
|
+
} else if (lang == 'nativets') {
|
|
353
|
+
const code = editor.getCode()
|
|
354
|
+
if (!code.includes(`import * as wmill from`)) {
|
|
355
|
+
editor.insertAtBeginning(`import * as wmill from "./windmill.ts"\n`)
|
|
356
|
+
}
|
|
357
|
+
editor.insertAtCursor(`(await wmill.getVariable('${path}'))`)
|
|
358
|
+
} else if (lang == 'php') {
|
|
359
|
+
editor.insertAtCursor(`$ch = curl_init(getenv('BASE_INTERNAL_URL') . '/api/w/' . getenv('WM_WORKSPACE') . '/variables/get_value/${path}');
|
|
360
|
+
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Bearer ' . getenv('WM_TOKEN')));
|
|
361
|
+
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
|
362
|
+
$var = json_decode(curl_exec($ch));`)
|
|
282
363
|
}
|
|
283
364
|
sendUserToast(`${name} inserted at cursor`)
|
|
284
365
|
}}
|
|
@@ -338,6 +419,17 @@ let historyBrowserDrawerOpen = false;
|
|
|
338
419
|
editor.insertAtCursor(
|
|
339
420
|
`\nInvoke-RestMethod -Headers $Headers -Uri "$Env:BASE_INTERNAL_URL/api/w/$Env:WM_WORKSPACE/resources/get_value_interpolated/${path}"`
|
|
340
421
|
)
|
|
422
|
+
} else if (lang == 'nativets') {
|
|
423
|
+
const code = editor.getCode()
|
|
424
|
+
if (!code.includes(`import * as wmill from`)) {
|
|
425
|
+
editor.insertAtBeginning(`import * as wmill from "./windmill.ts"\n`)
|
|
426
|
+
}
|
|
427
|
+
editor.insertAtCursor(`(await wmill.getResource('${path}'))`)
|
|
428
|
+
} else if (lang == 'php') {
|
|
429
|
+
editor.insertAtCursor(`$ch = curl_init(getenv('BASE_INTERNAL_URL') . '/api/w/' . getenv('WM_WORKSPACE') . '/resources/get_value_interpolated/${path}');
|
|
430
|
+
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Bearer ' . getenv('WM_TOKEN')));
|
|
431
|
+
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
|
432
|
+
$res = json_decode(curl_exec($ch));`)
|
|
341
433
|
}
|
|
342
434
|
sendUserToast(`${path} inserted at cursor`)
|
|
343
435
|
}}
|
|
@@ -378,7 +470,7 @@ let historyBrowserDrawerOpen = false;
|
|
|
378
470
|
await ResourceService.listResourceType({ workspace: $workspaceStore ?? 'NO_W' })}
|
|
379
471
|
/>
|
|
380
472
|
{/if}
|
|
381
|
-
<
|
|
473
|
+
<ResourceEditorDrawer bind:this={resourceEditor} on:refresh={resourcePicker.openDrawer} />
|
|
382
474
|
<VariableEditor bind:this={variableEditor} on:create={variablePicker.openDrawer} />
|
|
383
475
|
|
|
384
476
|
<div class="flex justify-between items-center overflow-y-auto w-full p-0.5">
|
|
@@ -482,7 +574,6 @@ let historyBrowserDrawerOpen = false;
|
|
|
482
574
|
(<span class={websocketAlive.go ? 'green' : 'text-red-700'}>Go</span>)
|
|
483
575
|
{:else if lang == 'python3'}
|
|
484
576
|
(<span class={websocketAlive.pyright ? 'green' : 'text-red-700'}>Pyright</span>
|
|
485
|
-
<span class={websocketAlive.black ? 'green' : 'text-red-700'}>Black</span>
|
|
486
577
|
<span class={websocketAlive.ruff ? 'green' : 'text-red-700'}>Ruff</span>)
|
|
487
578
|
{:else if lang == 'bash'}
|
|
488
579
|
(<span class={websocketAlive.shellcheck ? 'green' : 'text-red-700'}>Shellcheck</span>)
|
|
@@ -25,11 +25,9 @@ import FlowCopilotStatus from './copilot/FlowCopilotStatus.svelte';
|
|
|
25
25
|
import { fade } from 'svelte/transition';
|
|
26
26
|
import { loadFlowModuleState, pickScript } from './flows/flowStateUtils';
|
|
27
27
|
import FlowCopilotInputsModal from './copilot/FlowCopilotInputsModal.svelte';
|
|
28
|
-
import { snakeCase } from 'lodash';
|
|
29
28
|
import FlowBuilderTutorials from './FlowBuilderTutorials.svelte';
|
|
30
29
|
import FlowTutorials from './FlowTutorials.svelte';
|
|
31
30
|
import { ignoredTutorials } from './tutorials/ignoredTutorials';
|
|
32
|
-
import { cloneDeep } from 'lodash';
|
|
33
31
|
export let initialPath = '';
|
|
34
32
|
export let pathStoreInit = undefined;
|
|
35
33
|
export let newFlow;
|
|
@@ -129,13 +127,13 @@ async function saveDraft(forceSave = false) {
|
|
|
129
127
|
savedFlow = {
|
|
130
128
|
...(newFlow || savedFlow?.draft_only
|
|
131
129
|
? {
|
|
132
|
-
...
|
|
130
|
+
...structuredClone($flowStore),
|
|
133
131
|
path: $pathStore,
|
|
134
132
|
draft_only: true
|
|
135
133
|
}
|
|
136
134
|
: savedFlow),
|
|
137
135
|
draft: {
|
|
138
|
-
...
|
|
136
|
+
...structuredClone($flowStore),
|
|
139
137
|
path: $pathStore
|
|
140
138
|
}
|
|
141
139
|
};
|
|
@@ -252,7 +250,7 @@ async function saveFlow() {
|
|
|
252
250
|
});
|
|
253
251
|
}
|
|
254
252
|
savedFlow = {
|
|
255
|
-
...
|
|
253
|
+
...structuredClone($flowStore),
|
|
256
254
|
path: $pathStore
|
|
257
255
|
};
|
|
258
256
|
loadingSave = false;
|
|
@@ -317,7 +315,8 @@ setContext('FlowEditorContext', {
|
|
|
317
315
|
pathStore,
|
|
318
316
|
testStepStore,
|
|
319
317
|
saveDraft,
|
|
320
|
-
initialPath
|
|
318
|
+
initialPath,
|
|
319
|
+
flowInputsStore: writable({})
|
|
321
320
|
});
|
|
322
321
|
async function loadSchedule() {
|
|
323
322
|
loadFlowSchedule(initialPath, $workspaceStore)
|
|
@@ -512,6 +511,15 @@ async function finishStepGen() {
|
|
|
512
511
|
await sleep(3000);
|
|
513
512
|
copilotStatus = '';
|
|
514
513
|
}
|
|
514
|
+
function snakeCase(e) {
|
|
515
|
+
if (e.toLowerCase() === e) {
|
|
516
|
+
return e;
|
|
517
|
+
}
|
|
518
|
+
return (e
|
|
519
|
+
.match(/([A-Z])/g)
|
|
520
|
+
?.reduce((str, c) => str.replace(new RegExp(c), '_' + c.toLowerCase()), e)
|
|
521
|
+
?.substring(e.slice(0, 1).match(/([A-Z])/g) ? 1 : 0) ?? e);
|
|
522
|
+
}
|
|
515
523
|
async function genFlow(idx, flowModules, stepOnly = false) {
|
|
516
524
|
try {
|
|
517
525
|
push(history, $flowStore);
|
|
@@ -26,6 +26,7 @@ const dispatch = createEventDispatcher();
|
|
|
26
26
|
stepDetail = e.detail
|
|
27
27
|
dispatch('select', stepDetail)
|
|
28
28
|
}}
|
|
29
|
+
rebuildOnChange={flow}
|
|
29
30
|
/>
|
|
30
31
|
</div>
|
|
31
32
|
{/if}
|
|
@@ -36,7 +37,7 @@ const dispatch = createEventDispatcher();
|
|
|
36
37
|
noGraph ? 'border-0 w-max' : ''
|
|
37
38
|
)}
|
|
38
39
|
>
|
|
39
|
-
<FlowGraphViewerStep {flow} {stepDetail} />
|
|
40
|
+
<FlowGraphViewerStep schema={flow.schema} {stepDetail} />
|
|
40
41
|
</div>
|
|
41
42
|
{/if}
|
|
42
43
|
</div>
|