windmill-components 1.70.0 → 1.77.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/assets/app.css +12 -1
- package/components/AppConnect.svelte +4 -3
- package/components/DisplayResult.svelte +28 -10
- package/components/Dropdown.svelte +14 -4
- package/components/FieldHeader.svelte +12 -8
- package/components/FlowBuilder.svelte +107 -39
- package/components/FlowBuilder.svelte.d.ts +5 -0
- package/components/FlowGraphViewer.svelte +6 -5
- package/components/FlowJobResult.svelte +3 -3
- package/components/FlowPreviewContent.svelte +3 -8
- package/components/FlowStatusViewer.svelte +21 -8
- package/components/FolderUsageInfo.svelte +16 -6
- package/components/FolderUsageInfo.svelte.d.ts +2 -0
- package/components/GroupEditor.svelte +8 -0
- package/components/InputTransformForm.svelte +13 -20
- package/components/InputTransformSchemaForm.svelte +103 -0
- package/components/InputTransformSchemaForm.svelte.d.ts +24 -0
- package/components/LogViewer.svelte +1 -1
- package/components/ModulePreview.svelte +3 -2
- package/components/Multiselect.svelte +1 -1
- package/components/PageHeader.svelte +1 -1
- package/components/Path.svelte +35 -12
- package/components/Popover.svelte +2 -13
- package/components/ResourcePicker.svelte +33 -14
- package/components/RunChart.svelte +24 -5
- package/components/RunForm.svelte +5 -6
- package/components/RunForm.svelte.d.ts +1 -0
- package/components/SchemaForm.svelte +59 -57
- package/components/SchemaForm.svelte.d.ts +0 -5
- package/components/ScriptBuilder.svelte +151 -135
- package/components/ScriptPicker.svelte +3 -0
- package/components/SettingSection.svelte +44 -0
- package/components/SettingSection.svelte.d.ts +21 -0
- package/components/SimpleEditor.svelte +4 -1
- package/components/SimpleEditor.svelte.d.ts +2 -0
- package/components/Slider.svelte +6 -1
- package/components/Slider.svelte.d.ts +1 -0
- package/components/TemplateEditor.svelte +1 -1
- package/components/TestJobLoader.svelte +2 -2
- package/components/Toggle.svelte +17 -4
- package/components/Toggle.svelte.d.ts +2 -0
- package/components/Tooltip.svelte +4 -2
- package/components/UserSettings.svelte +2 -0
- package/components/WhitelistIp.svelte +1 -3
- package/components/apps/components/buttons/AppButton.svelte +45 -23
- package/components/apps/components/buttons/AppButton.svelte.d.ts +2 -0
- package/components/apps/components/buttons/AppForm.svelte +18 -12
- package/components/apps/components/buttons/AppForm.svelte.d.ts +3 -0
- package/components/apps/components/buttons/AppFormButton.svelte +14 -10
- package/components/apps/components/buttons/AppFormButton.svelte.d.ts +3 -0
- package/components/apps/components/display/AppBarChart.svelte +15 -7
- package/components/apps/components/display/AppBarChart.svelte.d.ts +3 -0
- package/components/apps/components/display/AppDisplayComponent.svelte +17 -12
- package/components/apps/components/display/AppDisplayComponent.svelte.d.ts +1 -0
- package/components/apps/components/display/AppHtml.svelte +18 -4
- package/components/apps/components/display/AppHtml.svelte.d.ts +3 -0
- package/components/apps/components/display/AppIcon.svelte +20 -8
- package/components/apps/components/display/AppIcon.svelte.d.ts +3 -0
- package/components/apps/components/display/AppImage.svelte +17 -10
- package/components/apps/components/display/AppImage.svelte.d.ts +3 -0
- package/components/apps/components/display/AppMap.svelte +214 -0
- package/components/apps/components/display/AppMap.svelte.d.ts +23 -0
- package/components/apps/components/display/AppPdf.svelte +304 -0
- package/components/apps/components/display/AppPdf.svelte.d.ts +24 -0
- package/components/apps/components/display/AppPieChart.svelte +15 -7
- package/components/apps/components/display/AppPieChart.svelte.d.ts +3 -0
- package/components/apps/components/display/AppScatterChart.svelte +12 -4
- package/components/apps/components/display/AppScatterChart.svelte.d.ts +3 -0
- package/components/apps/components/display/AppText.svelte +38 -32
- package/components/apps/components/display/AppText.svelte.d.ts +1 -0
- package/components/apps/components/display/AppTimeseries.svelte +12 -4
- package/components/apps/components/display/AppTimeseries.svelte.d.ts +3 -0
- package/components/apps/components/display/PlotlyHtml.svelte +8 -14
- package/components/apps/components/display/PlotlyHtml.svelte.d.ts +1 -1
- package/components/apps/components/display/VegaLiteHtml.svelte +3 -8
- package/components/apps/components/display/VegaLiteHtml.svelte.d.ts +1 -0
- package/components/apps/components/display/index.d.ts +3 -0
- package/components/apps/components/display/index.js +3 -0
- package/components/apps/components/display/table/AppAggridTable.svelte +20 -8
- package/components/apps/components/display/table/AppAggridTable.svelte.d.ts +1 -0
- package/components/apps/components/display/table/AppTable.svelte +69 -21
- package/components/apps/components/display/table/AppTable.svelte.d.ts +3 -1
- package/components/apps/components/display/table/AppTableFooter.svelte +8 -1
- package/components/apps/components/display/table/AppTableFooter.svelte.d.ts +2 -0
- package/components/apps/components/helpers/AlignWrapper.svelte +13 -7
- package/components/apps/components/helpers/AlignWrapper.svelte.d.ts +3 -1
- package/components/apps/components/helpers/HiddenComponent.svelte +5 -1
- package/components/apps/components/helpers/HiddenComponent.svelte.d.ts +1 -0
- package/components/apps/components/helpers/InputValue.svelte +58 -52
- package/components/apps/components/helpers/InputValue.svelte.d.ts +4 -3
- package/components/apps/components/helpers/NonRunnableComponent.svelte +18 -3
- package/components/apps/components/helpers/NonRunnableComponent.svelte.d.ts +1 -0
- package/components/apps/components/helpers/RefreshButton.svelte +3 -4
- package/components/apps/components/helpers/ResizeWrapper.svelte +24 -0
- package/components/apps/components/helpers/ResizeWrapper.svelte.d.ts +19 -0
- package/components/apps/components/helpers/RunnableComponent.svelte +126 -91
- package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +5 -1
- package/components/apps/components/helpers/RunnableWrapper.svelte +11 -5
- package/components/apps/components/helpers/RunnableWrapper.svelte.d.ts +4 -1
- package/components/apps/components/helpers/eval.d.ts +5 -0
- package/components/apps/components/helpers/eval.js +57 -0
- package/components/apps/components/inputs/AppCheckbox.svelte +8 -2
- package/components/apps/components/inputs/AppCheckbox.svelte.d.ts +3 -0
- package/components/apps/components/inputs/AppDateInput.svelte +25 -18
- package/components/apps/components/inputs/AppDateInput.svelte.d.ts +6 -1
- package/components/apps/components/inputs/AppFileInput.svelte +22 -14
- package/components/apps/components/inputs/AppFileInput.svelte.d.ts +3 -0
- package/components/apps/components/inputs/AppMultiSelect.svelte +82 -0
- package/components/apps/components/inputs/AppMultiSelect.svelte.d.ts +27 -0
- package/components/apps/components/inputs/AppNumberInput.svelte +20 -16
- package/components/apps/components/inputs/AppNumberInput.svelte.d.ts +5 -0
- package/components/apps/components/inputs/AppRangeInput.svelte +55 -14
- package/components/apps/components/inputs/AppRangeInput.svelte.d.ts +3 -0
- package/components/apps/components/inputs/AppSelect.svelte +58 -21
- package/components/apps/components/inputs/AppSelect.svelte.d.ts +3 -0
- package/components/apps/components/inputs/AppSliderInputs.svelte +41 -9
- package/components/apps/components/inputs/AppSliderInputs.svelte.d.ts +3 -0
- package/components/apps/components/inputs/AppTextInput.svelte +53 -19
- package/components/apps/components/inputs/AppTextInput.svelte.d.ts +6 -0
- package/components/apps/components/inputs/currency/AppCurrencyInput.svelte +13 -3
- package/components/apps/components/inputs/currency/AppCurrencyInput.svelte.d.ts +3 -0
- package/components/apps/components/inputs/currency/CurrencyInput.svelte +2 -0
- package/components/apps/components/inputs/currency/CurrencyInput.svelte.d.ts +1 -0
- package/components/apps/components/layout/AppContainer.svelte +20 -17
- package/components/apps/components/layout/AppContainer.svelte.d.ts +3 -0
- package/components/apps/components/layout/AppDivider.svelte +24 -4
- package/components/apps/components/layout/AppDivider.svelte.d.ts +3 -1
- package/components/apps/components/layout/AppDrawer.svelte +86 -0
- package/components/apps/components/layout/AppDrawer.svelte.d.ts +24 -0
- package/components/apps/components/layout/AppSplitpanes.svelte +83 -0
- package/components/apps/components/layout/AppSplitpanes.svelte.d.ts +26 -0
- package/components/apps/components/layout/AppTabs.svelte +112 -40
- package/components/apps/components/layout/AppTabs.svelte.d.ts +4 -0
- package/components/apps/components/layout/index.d.ts +2 -0
- package/components/apps/components/layout/index.js +2 -0
- package/components/apps/editor/AppEditor.svelte +201 -132
- package/components/apps/editor/AppEditor.svelte.d.ts +3 -1
- package/components/apps/editor/AppEditorHeader.svelte +149 -66
- package/components/apps/editor/AppInputs.svelte +3 -3
- package/components/apps/editor/AppPreview.svelte +21 -7
- package/components/apps/editor/ComponentHeader.svelte +17 -4
- package/components/apps/editor/ComponentHeader.svelte.d.ts +2 -0
- package/components/apps/editor/GridEditor.svelte +86 -70
- package/components/apps/editor/GridPanel.svelte +29 -0
- package/components/apps/editor/GridPanel.svelte.d.ts +18 -0
- package/components/apps/editor/RecomputeAllComponents.svelte +14 -6
- package/components/apps/editor/SettingsPanel.svelte +30 -27
- package/components/apps/editor/SubGridEditor.svelte +82 -50
- package/components/apps/editor/SubGridEditor.svelte.d.ts +8 -4
- package/components/apps/editor/appUtils.d.ts +22 -3
- package/components/apps/editor/appUtils.js +221 -47
- package/components/apps/editor/component/Component.svelte +281 -61
- package/components/apps/editor/component/Component.svelte.d.ts +3 -1
- package/components/apps/editor/component/ComponentNavigation.svelte +170 -0
- package/components/apps/editor/component/ComponentNavigation.svelte.d.ts +14 -0
- package/components/apps/editor/component/components.d.ts +15 -3
- package/components/apps/editor/component/components.js +409 -54
- package/components/apps/editor/component/default-codes.js +6 -6
- package/components/apps/editor/component/sets.js +11 -3
- package/components/apps/editor/componentsPanel/ComponentList.svelte +72 -29
- package/components/apps/editor/componentsPanel/CssProperty.svelte +59 -23
- package/components/apps/editor/componentsPanel/CssProperty.svelte.d.ts +2 -1
- package/components/apps/editor/componentsPanel/CssSettings.svelte +56 -9
- package/components/apps/editor/componentsPanel/ListItem.svelte +23 -12
- package/components/apps/editor/componentsPanel/componentStaticValues.d.ts +2 -0
- package/components/apps/editor/componentsPanel/componentStaticValues.js +15 -2
- package/components/apps/editor/contextPanel/ComponentOutput.svelte +77 -0
- package/components/apps/editor/contextPanel/ComponentOutput.svelte.d.ts +21 -0
- package/components/apps/editor/contextPanel/ComponentOutputViewer.svelte +10 -6
- package/components/apps/editor/contextPanel/ContextPanel.svelte +81 -91
- package/components/apps/editor/contextPanel/SubGridOutput.svelte +71 -0
- package/components/apps/editor/contextPanel/SubGridOutput.svelte.d.ts +19 -0
- package/components/apps/editor/contextPanel/components/BackgroundScriptOutput.svelte +38 -0
- package/components/apps/editor/contextPanel/components/BackgroundScriptOutput.svelte.d.ts +19 -0
- package/components/apps/editor/contextPanel/components/BackgroundScriptsOutput.svelte +10 -0
- package/components/apps/editor/contextPanel/components/BackgroundScriptsOutput.svelte.d.ts +16 -0
- package/components/apps/editor/contextPanel/components/MinMaxButton.svelte +25 -0
- package/components/apps/editor/contextPanel/components/MinMaxButton.svelte.d.ts +16 -0
- package/components/apps/editor/contextPanel/components/OutputHeader.svelte +78 -0
- package/components/apps/editor/contextPanel/components/OutputHeader.svelte.d.ts +26 -0
- package/components/apps/editor/contextPanel/components/TableActionOutput.svelte +19 -0
- package/components/apps/editor/contextPanel/components/TableActionOutput.svelte.d.ts +18 -0
- package/components/apps/editor/contextPanel/components/TableActionsOutput.svelte +14 -0
- package/components/apps/editor/contextPanel/components/TableActionsOutput.svelte.d.ts +18 -0
- package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte +55 -13
- package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte.d.ts +1 -0
- package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +126 -62
- package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte.d.ts +5 -0
- package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorDrawer.svelte +1 -1
- package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorPanel.svelte +11 -5
- package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorPanel.svelte.d.ts +1 -0
- package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanel.svelte +26 -17
- package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte +95 -85
- package/components/apps/editor/inlineScriptsPanel/utils.d.ts +5 -9
- package/components/apps/editor/inlineScriptsPanel/utils.js +19 -8
- package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +10 -9
- package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte.d.ts +21 -12
- package/components/apps/editor/settingsPanel/ComponentInputTypeEditor.svelte +1 -1
- package/components/apps/editor/settingsPanel/ComponentPanel.svelte +119 -79
- package/components/apps/editor/settingsPanel/ComponentPanel.svelte.d.ts +1 -0
- package/components/apps/editor/settingsPanel/GridPane.svelte +75 -0
- package/components/apps/editor/settingsPanel/GridPane.svelte.d.ts +20 -0
- package/components/apps/editor/settingsPanel/GridTab.svelte +9 -17
- package/components/apps/editor/settingsPanel/GridTab.svelte.d.ts +2 -0
- package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +2 -1
- package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte +1 -1
- package/components/apps/editor/settingsPanel/Recompute.svelte +2 -1
- package/components/apps/editor/settingsPanel/SelectedRunnable.svelte +7 -1
- package/components/apps/editor/settingsPanel/TableActions.svelte +30 -2
- package/components/apps/editor/settingsPanel/common/PanelSection.svelte +2 -2
- package/components/apps/editor/settingsPanel/inputEditor/ColorInput.svelte +48 -0
- package/components/apps/editor/settingsPanel/inputEditor/ColorInput.svelte.d.ts +19 -0
- package/components/apps/editor/settingsPanel/inputEditor/ConnectedInputEditor.svelte +2 -8
- package/components/apps/editor/settingsPanel/inputEditor/EvalInputEditor.svelte +2 -2
- package/components/apps/editor/settingsPanel/inputEditor/IconSelectInput.svelte +77 -41
- package/components/apps/editor/settingsPanel/inputEditor/IconSelectInput.svelte.d.ts +2 -0
- package/components/apps/editor/settingsPanel/inputEditor/JsonEditor.svelte +3 -3
- package/components/apps/editor/settingsPanel/inputEditor/JsonEditor.svelte.d.ts +4 -1
- package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +54 -6
- package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte.d.ts +1 -0
- package/components/apps/editor/settingsPanel/inputEditor/UploadInputEditor.svelte +7 -9
- package/components/apps/editor/settingsPanel/inputEditor/UploadInputEditor.svelte.d.ts +1 -1
- package/components/apps/editor/settingsPanel/mainInput/InlineScriptList.svelte +1 -0
- package/components/apps/editor/settingsPanel/mainInput/InlineScriptList.svelte.d.ts +1 -0
- package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte +1 -1
- package/components/apps/inputType.d.ts +6 -5
- package/components/apps/rx.d.ts +6 -4
- package/components/apps/rx.js +36 -15
- package/components/apps/store.d.ts +6 -1
- package/components/apps/svelte-grid/Grid.svelte +171 -0
- package/components/apps/svelte-grid/Grid.svelte.d.ts +47 -0
- package/components/apps/svelte-grid/LICENSE +23 -0
- package/components/apps/svelte-grid/MoveResize.svelte +328 -0
- package/components/apps/svelte-grid/MoveResize.svelte.d.ts +46 -0
- package/components/apps/svelte-grid/types.d.ts +25 -0
- package/components/apps/svelte-grid/utils/container.d.ts +1 -0
- package/components/apps/svelte-grid/utils/container.js +4 -0
- package/components/apps/svelte-grid/utils/helper.d.ts +14 -0
- package/components/apps/svelte-grid/utils/helper.js +36 -0
- package/components/apps/svelte-grid/utils/item.d.ts +14 -0
- package/components/apps/svelte-grid/utils/item.js +192 -0
- package/components/apps/svelte-grid/utils/matrix.d.ts +6 -0
- package/components/apps/svelte-grid/utils/matrix.js +53 -0
- package/components/apps/svelte-grid/utils/other.d.ts +3 -0
- package/components/apps/svelte-grid/utils/other.js +30 -0
- package/components/apps/types.d.ts +21 -8
- package/components/apps/utils.d.ts +3 -3
- package/components/apps/utils.js +34 -56
- package/components/common/CloseButton.svelte +18 -0
- package/components/common/CloseButton.svelte.d.ts +27 -0
- package/components/common/badge/Badge.svelte +6 -1
- package/components/common/badge/Badge.svelte.d.ts +1 -0
- package/components/common/button/ButtonPopup.svelte +2 -0
- package/components/common/button/ButtonPopup.svelte.d.ts +1 -0
- package/components/common/button/UndoRedo.svelte +32 -0
- package/components/common/button/UndoRedo.svelte.d.ts +20 -0
- package/components/common/drawer/Drawer.svelte +10 -4
- package/components/common/drawer/Drawer.svelte.d.ts +3 -1
- package/components/common/drawer/DrawerContent.svelte +2 -7
- package/components/common/fileInput/FileInput.svelte +47 -21
- package/components/common/fileInput/FileInput.svelte.d.ts +3 -1
- package/components/common/fileInput/model.d.ts +1 -0
- package/components/common/fileInput/model.js +1 -0
- package/components/common/index.d.ts +1 -0
- package/components/common/index.js +1 -0
- package/components/common/languageIcons/JavaScript.svelte +11 -0
- package/components/common/languageIcons/JavaScript.svelte.d.ts +25 -0
- package/components/common/languageIcons/LanguageIcon.svelte +3 -1
- package/components/common/languageIcons/LanguageIcon.svelte.d.ts +1 -1
- package/components/common/menu/Menu.svelte +3 -2
- package/components/common/menu/Menu.svelte.d.ts +2 -1
- package/components/common/modal/Modal.svelte +9 -4
- package/components/common/modal/Modal.svelte.d.ts +2 -0
- package/components/common/popup/Popup.svelte +2 -1
- package/components/common/popup/Popup.svelte.d.ts +9 -0
- package/components/common/table/AppRow.svelte +14 -8
- package/components/common/table/AppRow.svelte.d.ts +1 -0
- package/components/common/table/FlowRow.svelte +22 -12
- package/components/common/table/FlowRow.svelte.d.ts +1 -0
- package/components/common/table/ScriptRow.svelte +43 -14
- package/components/common/table/ScriptRow.svelte.d.ts +1 -0
- package/components/common/tabs/Tab.svelte +13 -5
- package/components/common/tabs/Tab.svelte.d.ts +6 -1
- package/components/common/tabs/Tabs.svelte +8 -6
- package/components/common/tabs/Tabs.svelte.d.ts +3 -1
- package/components/flows/FlowEditor.svelte +6 -4
- package/components/flows/common/FlowCardHeader.svelte +4 -1
- package/components/flows/content/BranchPredicateEditor.svelte +3 -4
- package/components/flows/content/CapturePayload.svelte +1 -2
- package/components/flows/content/FlowBranchesAllWrapper.svelte +1 -1
- package/components/flows/content/FlowConstants.svelte +7 -13
- package/components/flows/content/FlowEditorPanel.svelte +4 -3
- package/components/flows/content/FlowFailureModule.svelte +2 -1
- package/components/flows/content/FlowInput.svelte +4 -2
- package/components/flows/content/FlowLoop.svelte +3 -4
- package/components/flows/content/FlowModuleComponent.svelte +23 -11
- package/components/flows/content/FlowModuleEarlyStop.svelte +3 -1
- package/components/flows/content/FlowModuleHeader.svelte +26 -3
- package/components/flows/content/FlowModuleHeader.svelte.d.ts +1 -0
- package/components/flows/content/FlowModuleSleep.svelte +2 -2
- package/components/flows/content/FlowModuleWrapper.svelte +2 -8
- package/components/flows/content/FlowSchedules.svelte +1 -2
- package/components/flows/content/FlowSettings.svelte +17 -37
- package/components/flows/content/ScriptEditorDrawer.svelte +98 -0
- package/components/flows/content/ScriptEditorDrawer.svelte.d.ts +19 -0
- package/components/flows/flowState.d.ts +2 -3
- package/components/flows/flowState.js +1 -4
- package/components/flows/flowStateUtils.d.ts +7 -6
- package/components/flows/flowStateUtils.js +5 -9
- package/components/flows/flowStore.d.ts +5 -4
- package/components/flows/flowStore.js +5 -17
- package/components/flows/header/FlowImportExportMenu.svelte +2 -1
- package/components/flows/map/FlowConstantsItem.svelte +2 -2
- package/components/flows/map/FlowErrorHandlerItem.svelte +12 -13
- package/components/flows/map/FlowInputsItem.svelte +2 -3
- package/components/flows/map/FlowModuleSchemaItem.svelte +88 -91
- package/components/flows/map/FlowModuleSchemaItem.svelte.d.ts +3 -3
- package/components/flows/map/FlowModuleSchemaMap.svelte +164 -138
- package/components/flows/map/FlowModuleSchemaMap.svelte.d.ts +1 -2
- package/components/flows/map/FlowSettingsItem.svelte +5 -4
- package/components/flows/map/InsertModuleButton.svelte +12 -10
- package/components/flows/map/InsertModuleButton.svelte.d.ts +1 -0
- package/components/flows/map/MapItem.svelte +176 -103
- package/components/flows/map/MapItem.svelte.d.ts +20 -2
- package/components/flows/map/VirtualItem.svelte +129 -0
- package/components/flows/map/VirtualItem.svelte.d.ts +44 -0
- package/components/flows/pickers/FlowScriptPicker.svelte.d.ts +1 -1
- package/components/flows/pickers/WorkspaceScriptPicker.svelte +1 -1
- package/components/flows/previousResults.d.ts +1 -1
- package/components/flows/previousResults.js +32 -17
- package/components/flows/types.d.ts +13 -1
- package/components/flows/utils.js +1 -1
- package/components/graph/FlowGraph.svelte +227 -167
- package/components/graph/FlowGraph.svelte.d.ts +14 -1
- package/components/graph/model.d.ts +6 -36
- package/components/graph/model.js +1 -1
- package/components/graph/svelvet/LICENSE +21 -0
- package/components/graph/svelvet/collapsible/controllers/util.d.ts +15 -0
- package/components/graph/svelvet/collapsible/controllers/util.js +144 -0
- package/components/graph/svelvet/collapsible/models/Collapsible.d.ts +17 -0
- package/components/graph/svelvet/collapsible/models/Collapsible.js +25 -0
- package/components/graph/svelvet/collapsible/types/types.d.ts +8 -0
- package/components/graph/svelvet/collapsible/types/types.js +1 -0
- package/components/graph/svelvet/container/README.md +7 -0
- package/components/graph/svelvet/container/controllers/middleware.d.ts +18 -0
- package/components/graph/svelvet/container/controllers/middleware.js +101 -0
- package/components/graph/svelvet/container/views/GraphView.svelte +252 -0
- package/components/graph/svelvet/container/views/GraphView.svelte.d.ts +25 -0
- package/components/graph/svelvet/container/views/Svelvet.svelte +131 -0
- package/components/graph/svelvet/container/views/Svelvet.svelte.d.ts +41 -0
- package/components/graph/svelvet/customCss/controllers/getCss.d.ts +2 -0
- package/components/graph/svelvet/customCss/controllers/getCss.js +57 -0
- package/components/graph/svelvet/d3/controllers/d3.d.ts +5 -0
- package/components/graph/svelvet/d3/controllers/d3.js +59 -0
- package/components/graph/svelvet/edges/controllers/anchorCbDev.d.ts +4 -0
- package/components/graph/svelvet/edges/controllers/anchorCbDev.js +92 -0
- package/components/graph/svelvet/edges/controllers/anchorCbUser.d.ts +57 -0
- package/components/graph/svelvet/edges/controllers/anchorCbUser.js +73 -0
- package/components/graph/svelvet/edges/controllers/util.d.ts +37 -0
- package/components/graph/svelvet/edges/controllers/util.js +72 -0
- package/components/graph/svelvet/edges/models/Anchor.d.ts +48 -0
- package/components/graph/svelvet/edges/models/Anchor.js +122 -0
- package/components/graph/svelvet/edges/models/Edge.d.ts +47 -0
- package/components/graph/svelvet/edges/models/Edge.js +107 -0
- package/components/graph/svelvet/edges/types/types.d.ts +18 -0
- package/components/graph/svelvet/edges/types/types.js +1 -0
- package/components/graph/svelvet/edges/views/Edges/BaseEdge.svelte +105 -0
- package/components/graph/svelvet/edges/views/Edges/BaseEdge.svelte.d.ts +18 -0
- package/components/graph/svelvet/edges/views/Edges/EdgeAnchor.svelte +12 -0
- package/components/graph/svelvet/edges/views/Edges/EdgeAnchor.svelte.d.ts +17 -0
- package/components/graph/svelvet/edges/views/Edges/EdgeText.svelte +43 -0
- package/components/graph/svelvet/edges/views/Edges/EdgeText.svelte.d.ts +17 -0
- package/components/graph/svelvet/edges/views/Edges/SimpleBezierEdge.svelte +137 -0
- package/components/graph/svelvet/edges/views/Edges/SimpleBezierEdge.svelte.d.ts +17 -0
- package/components/graph/svelvet/edges/views/Edges/SmoothStepEdge.svelte +176 -0
- package/components/graph/svelvet/edges/views/Edges/SmoothStepEdge.svelte.d.ts +60 -0
- package/components/graph/svelvet/edges/views/Edges/StepEdge.svelte +8 -0
- package/components/graph/svelvet/edges/views/Edges/StepEdge.svelte.d.ts +25 -0
- package/components/graph/svelvet/edges/views/Edges/types.d.ts +52 -0
- package/components/graph/svelvet/edges/views/Edges/types.js +1 -0
- package/components/graph/svelvet/edges/views/Edges/utils.d.ts +33 -0
- package/components/graph/svelvet/edges/views/Edges/utils.js +31 -0
- package/components/graph/svelvet/editEdges/views/EditEdge.svelte +151 -0
- package/components/graph/svelvet/editEdges/views/EditEdge.svelte.d.ts +20 -0
- package/components/graph/svelvet/nodes/controllers/util.d.ts +9 -0
- package/components/graph/svelvet/nodes/controllers/util.js +13 -0
- package/components/graph/svelvet/nodes/models/Node.d.ts +78 -0
- package/components/graph/svelvet/nodes/models/Node.js +195 -0
- package/components/graph/svelvet/nodes/views/EditNode.svelte +147 -0
- package/components/graph/svelvet/nodes/views/EditNode.svelte.d.ts +33 -0
- package/components/graph/svelvet/nodes/views/Node.svelte +85 -0
- package/components/graph/svelvet/nodes/views/Node.svelte.d.ts +22 -0
- package/components/graph/svelvet/resizableNodes/controllers/util.d.ts +11 -0
- package/components/graph/svelvet/resizableNodes/controllers/util.js +24 -0
- package/components/graph/svelvet/resizableNodes/models/ResizeNode.d.ts +33 -0
- package/components/graph/svelvet/resizableNodes/models/ResizeNode.js +71 -0
- package/components/graph/svelvet/resizableNodes/views/ResizeNode.svelte +81 -0
- package/components/graph/svelvet/resizableNodes/views/ResizeNode.svelte.d.ts +20 -0
- package/components/graph/svelvet/store/controllers/storeApi.d.ts +32 -0
- package/components/graph/svelvet/store/controllers/storeApi.js +111 -0
- package/components/graph/svelvet/store/controllers/userApi.d.ts +3 -0
- package/components/graph/svelvet/store/controllers/userApi.js +18 -0
- package/components/graph/svelvet/store/controllers/util.d.ts +31 -0
- package/components/graph/svelvet/store/controllers/util.js +180 -0
- package/components/graph/svelvet/store/models/store.d.ts +12 -0
- package/components/graph/svelvet/store/models/store.js +9 -0
- package/components/graph/svelvet/store/types/types.d.ts +134 -0
- package/components/graph/svelvet/store/types/types.js +1 -0
- package/components/graph/svelvet/types/README.md +3 -0
- package/components/graph/svelvet/types/index.d.ts +2 -0
- package/components/graph/svelvet/types/index.js +1 -0
- package/components/graph/svelvet/types/types.d.ts +49 -0
- package/components/graph/svelvet/types/types.js +18 -0
- package/components/graph/util.js +2 -2
- package/components/home/ItemsList.svelte +53 -5
- package/components/home/ItemsList.svelte.d.ts +1 -0
- package/components/home/ListFilters.svelte +7 -2
- package/components/jobs/JobDetail.svelte +12 -1
- package/components/propertyPicker/ObjectViewer.svelte +6 -4
- package/components/sidebar/SidebarContent.svelte +2 -2
- package/consts.d.ts +1 -0
- package/consts.js +1 -0
- package/defaults.d.ts +4 -0
- package/defaults.js +4 -0
- package/history.d.ts +9 -0
- package/history.js +63 -0
- package/package.json +87 -9
- package/script_helpers.d.ts +1 -1
- package/script_helpers.js +1 -0
- package/scripts.d.ts +1 -1
- package/scripts.js +8 -1
- package/utils.d.ts +9 -4
- package/utils.js +43 -8
- package/components/apps/editor/TablePanel.svelte +0 -19
- package/components/apps/editor/TablePanel.svelte.d.ts +0 -17
- package/components/apps/editor/settingsPanel/MoveToOtherGrid.svelte +0 -85
- package/components/apps/editor/settingsPanel/MoveToOtherGrid.svelte.d.ts +0 -18
- package/components/flows/map/FlowBranchAllMap.svelte +0 -100
- package/components/flows/map/FlowBranchAllMap.svelte.d.ts +0 -17
- package/components/flows/map/FlowBranchOneMap.svelte +0 -124
- package/components/flows/map/FlowBranchOneMap.svelte.d.ts +0 -17
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
const pkStringGenerator = () => (Math.random() + 1).toString(36).substring(7);
|
|
2
|
+
import { rightCb, leftCb, topCb, bottomCb, } from '../../edges/controllers/anchorCbUser'; // these are callbacks used to calculate anchor position relative to node
|
|
3
|
+
import { dynamicCbCreator, fixedCbCreator, } from '../../edges/controllers/anchorCbDev';
|
|
4
|
+
import { ResizeNode } from '../../resizableNodes/models/ResizeNode';
|
|
5
|
+
import { Anchor } from '../../edges/models/Anchor';
|
|
6
|
+
import { Node } from '../../nodes/models/Node';
|
|
7
|
+
import { Edge } from '../../edges/models/Edge';
|
|
8
|
+
import { writable, derived, get, readable } from 'svelte/store';
|
|
9
|
+
import { getEdgeById, getAnchors } from '../../edges/controllers/util';
|
|
10
|
+
/**
|
|
11
|
+
* Creates resize node on the bottom right corner of the targeted Node
|
|
12
|
+
* @param canvasId The canvasId of the Svelvet component that holds the targeted Node
|
|
13
|
+
* @param nodeId The id of the Node that the resize node attached to
|
|
14
|
+
* @param posX The number of pixels on the x-axis relative to the left top corner of the targeted Node
|
|
15
|
+
* @param posY The number of pixels on the y-axis relative to the left top corner of the targeted Node
|
|
16
|
+
* @returns A ReziseNode object with randomized id, canvasId, nodeId, posX, and posY
|
|
17
|
+
*/
|
|
18
|
+
function createResizeNode(canvasId, nodeId, posX, posY) {
|
|
19
|
+
const id = pkStringGenerator();
|
|
20
|
+
const resizeNode = new ResizeNode(id, canvasId, nodeId, posX, posY);
|
|
21
|
+
return resizeNode;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Creates an Anchor on the targeted Node with infomation the userNode holds
|
|
25
|
+
* @param store An object containing the state of the Svelvet component. You can access the following through `store`: nodesStore, edgesStore, anchorsStore, etc.
|
|
26
|
+
* @param userNode A node that the user specifies. This is NOT the same as a Node object.
|
|
27
|
+
* @param sourceOrTarget User specified information of source or target
|
|
28
|
+
* @param canvasId The id of the canvas that holds the Anchor and its attached Node
|
|
29
|
+
* @param edge An edge that the user specifies. It should target the userNode as source or target. This is NOT the same as an Edge object
|
|
30
|
+
* @returns An Anchor object
|
|
31
|
+
*/
|
|
32
|
+
function createAnchor(store, userNode, sourceOrTarget, canvasId, edge) {
|
|
33
|
+
// edge case
|
|
34
|
+
if (userNode === null)
|
|
35
|
+
throw `you cannot create an anchor without a user node (for now)`;
|
|
36
|
+
const edgeId = edge.id;
|
|
37
|
+
const anchorId = pkStringGenerator();
|
|
38
|
+
// userCb is the appropriate source or taret callback from userEdge object. It is
|
|
39
|
+
// possible the user to NOT set userCb in which case userCb will be undefined
|
|
40
|
+
let userCb;
|
|
41
|
+
if (sourceOrTarget === 'target')
|
|
42
|
+
userCb = edge.targetAnchorCb;
|
|
43
|
+
else
|
|
44
|
+
userCb = edge.sourceAnchorCb;
|
|
45
|
+
// create anchor callbacks
|
|
46
|
+
let cb;
|
|
47
|
+
if (userCb === undefined)
|
|
48
|
+
cb = dynamicCbCreator(store, edgeId, anchorId);
|
|
49
|
+
else
|
|
50
|
+
cb = fixedCbCreator(store, edgeId, anchorId, userNode.id, userCb);
|
|
51
|
+
// Create a new anchor.
|
|
52
|
+
const anchor = new Anchor(anchorId, userNode.id, edgeId, sourceOrTarget, -1, // dummy variables for x,y,angle for now
|
|
53
|
+
-1, // dummy variables for x,y,angle for now
|
|
54
|
+
cb, canvasId, 0 // dummy variables for x,y,angle for now
|
|
55
|
+
);
|
|
56
|
+
// return
|
|
57
|
+
return anchor;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Populates edgesStore of Edges. This function does not return the edgesStore. Instead it sets the nodesStore of Svelvet store.
|
|
61
|
+
* @param store An object containing the state of the Svelvet component. You can access the following through `store`: nodesStore, edgesStore, anchorsStore, etc.
|
|
62
|
+
* @param edges An edge that the user specifies. This is NOT the same as a Edge object.
|
|
63
|
+
* @param canvasId The canvasId of the Svelvet component that holds the Edges
|
|
64
|
+
*/
|
|
65
|
+
export function populateEdgesStore(store, edges, canvasId) {
|
|
66
|
+
const edgesStore = {};
|
|
67
|
+
for (let i = 0; i < edges.length; i++) {
|
|
68
|
+
const userEdge = edges[i];
|
|
69
|
+
// { id: 'e1-2', source: 1, type: 'straight', target: 2, label: 'e1-2' },
|
|
70
|
+
// source is node.id for the source node
|
|
71
|
+
// target is node.id for the target node
|
|
72
|
+
// We need to get the anchors
|
|
73
|
+
const { source: sourceNodeId, target: targetNodeId, id: edgeId, type, label, labelBgColor, labelTextColor, edgeColor, animate, noHandle, arrow, clickCallback, className, } = userEdge;
|
|
74
|
+
const anchors = getAnchors(store, { edgeId: edgeId });
|
|
75
|
+
// check that we have two anchors for every edge
|
|
76
|
+
if (anchors.length !== 2)
|
|
77
|
+
throw 'We should have two anchors for every node';
|
|
78
|
+
// check that we have 1 source anchor and 1 target anchor. Since sourceOrTarget is typed to be either 'source'
|
|
79
|
+
// or 'target', it suffices to check whether there are two unique elements
|
|
80
|
+
if (new Set(anchors.map((e) => e.sourceOrTarget)).size !== 2)
|
|
81
|
+
throw 'we should have one source and one target anchor';
|
|
82
|
+
// get source and target anchor
|
|
83
|
+
let sourceAnchor, targetAnchor;
|
|
84
|
+
if (anchors[0].sourceOrTarget === 'source') {
|
|
85
|
+
sourceAnchor = anchors[0];
|
|
86
|
+
targetAnchor = anchors[1];
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
sourceAnchor = anchors[1];
|
|
90
|
+
targetAnchor = anchors[0];
|
|
91
|
+
}
|
|
92
|
+
edgesStore[edgeId] = new Edge(edgeId, sourceAnchor.positionX, sourceAnchor.positionY, targetAnchor.positionX, targetAnchor.positionY, canvasId, userEdge.label === undefined ? '' : userEdge.label, userEdge.type === undefined ? 'bezier' : userEdge.type, userEdge.labelBgColor === undefined ? 'white' : userEdge.labelBgColor, userEdge.labelTextColor === undefined ? 'black' : userEdge.labelTextColor, userEdge.edgeColor === undefined ? 'black' : userEdge.edgeColor, userEdge.animate === undefined ? false : userEdge.animate, userEdge.noHandle === undefined ? false : userEdge.noHandle, userEdge.arrow === undefined ? false : userEdge.arrow, userEdge.clickCallback === undefined ? () => { } : userEdge.clickCallback, userEdge.className === undefined ? '' : userEdge.className);
|
|
93
|
+
}
|
|
94
|
+
store.edgesStore.set(edgesStore);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Finds userNode (with UserNodeType; Not the same as the Node) by the node id from nodesStore
|
|
98
|
+
* @param id The id of the Node in its nodesStore
|
|
99
|
+
* @param userNodes The array of userNodes (NOT the same as Node object)
|
|
100
|
+
* @returns The node that user specified or null if not found
|
|
101
|
+
*/
|
|
102
|
+
function findUserNodeById(id, userNodes) {
|
|
103
|
+
for (let i = 0; i < userNodes.length; i++) {
|
|
104
|
+
const userNode = userNodes[i];
|
|
105
|
+
if (userNode.id === id)
|
|
106
|
+
return userNode;
|
|
107
|
+
}
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Populates the anchorsStore. This will overwrite any data in the AnchorsStore.
|
|
112
|
+
* @param store The Svelvet store containing the state of the Svelvet component
|
|
113
|
+
* @param nodes An array of user specified nodes
|
|
114
|
+
* @param edges An array of user specified edges
|
|
115
|
+
* @param canvasId The canvasId of the Svelvet component that holds the nodes and edges
|
|
116
|
+
*/
|
|
117
|
+
export function populateAnchorsStore(store, nodes, edges, canvasId) {
|
|
118
|
+
// anchorsStore will populated and eventaully synchronized to store.anchorsStore
|
|
119
|
+
const anchorsStore = {};
|
|
120
|
+
// iterate through user edges. Note the user never explicitly defines anchors; we calculate anchors
|
|
121
|
+
// from the user edge/node information
|
|
122
|
+
for (let i = 0; i < edges.length; i++) {
|
|
123
|
+
const userEdge = edges[i];
|
|
124
|
+
// find the source and target userNodes. These will be used to create the nodeId foreign key and
|
|
125
|
+
// determine placement of the anchor based on userNode.targetPosition, useNode.sourcePosition
|
|
126
|
+
const { source: sourceNodeId, target: targetNodeId } = userEdge;
|
|
127
|
+
const sourceUserNode = findUserNodeById(sourceNodeId, nodes);
|
|
128
|
+
const targetUserNode = findUserNodeById(targetNodeId, nodes);
|
|
129
|
+
// create source anchor
|
|
130
|
+
const sourceAnchor = createAnchor(store, sourceUserNode, 'source', canvasId, userEdge);
|
|
131
|
+
// create target anchor
|
|
132
|
+
const targetAnchor = createAnchor(store, targetUserNode, 'target', canvasId, userEdge);
|
|
133
|
+
// store source and target anchors
|
|
134
|
+
anchorsStore[sourceAnchor.id] = sourceAnchor;
|
|
135
|
+
anchorsStore[targetAnchor.id] = targetAnchor;
|
|
136
|
+
}
|
|
137
|
+
//populates the anchorsStore
|
|
138
|
+
store.anchorsStore.set(anchorsStore);
|
|
139
|
+
// set anchor positions. We can only set anchor positions after anchorsStore and nodesStore
|
|
140
|
+
// has been populated. TODO: maybe add a check to see that anchorsStore and NodesStore populated?
|
|
141
|
+
const anchors = getAnchors(store);
|
|
142
|
+
for (const anchor of anchors)
|
|
143
|
+
anchor.callback();
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Populates the nodesStore. This will overwrite any data in the nodesStore.
|
|
147
|
+
* @param store The Svelvet store containing the state of the Svelvet component
|
|
148
|
+
* @param nodes An array of user specifed nodes
|
|
149
|
+
* @param canvasId The canvasId of the Svelvet component that holds the nodes
|
|
150
|
+
*/
|
|
151
|
+
export function populateNodesStore(store, nodes, canvasId) {
|
|
152
|
+
// this is the nodesStore object. THIS IS NOT THE SAME AS A NODESTORE
|
|
153
|
+
const nodesStore = {};
|
|
154
|
+
// iterate through user nodes and create node objects
|
|
155
|
+
for (let i = 0; i < nodes.length; i++) {
|
|
156
|
+
const userNode = nodes[i];
|
|
157
|
+
const nodeId = userNode.id;
|
|
158
|
+
// TODO: move sanitizing default values to middleware
|
|
159
|
+
const node = new Node(nodeId.toString(), userNode.position.x, userNode.position.y, userNode.width, userNode.height, userNode.bgColor ?? 'white', userNode.data, canvasId, userNode.borderColor === undefined ? 'black' : userNode.borderColor, userNode.image === undefined ? false : userNode.image, userNode.src === undefined ? '' : userNode.src, userNode.textColor === undefined ? '' : userNode.textColor, userNode.borderRadius === undefined ? 0 : userNode.borderRadius, userNode.childNodes === undefined ? [] : userNode.childNodes, userNode.className === undefined ? '' : userNode.className, userNode.clickCallback === undefined ? () => { } : userNode.clickCallback);
|
|
160
|
+
nodesStore[nodeId] = node;
|
|
161
|
+
}
|
|
162
|
+
// This is actually what sets the store
|
|
163
|
+
store.nodesStore.set(nodesStore);
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Populates the resizeNodeStore. If a Node is resizable, a small ResizeNode object is going to be attached to the Node's right bottom corner to react to the mouse drag.
|
|
167
|
+
* @param store The Svelvet store containing the state of the Svelvet component
|
|
168
|
+
* @param nodes An array of user specifed nodes (NOT the same as Node)
|
|
169
|
+
* @param canvasId The canvasId of the Svelvet component that holds the resizeNodes
|
|
170
|
+
*/
|
|
171
|
+
export function populateResizeNodeStore(store, nodes, canvasId) {
|
|
172
|
+
const resizeNodeStore = {};
|
|
173
|
+
for (let i = 0; i < nodes.length; i++) {
|
|
174
|
+
const userNode = nodes[i];
|
|
175
|
+
const { id, width, height, position } = userNode;
|
|
176
|
+
const resizeNode = createResizeNode(canvasId, id, position.x + width, position.y + height);
|
|
177
|
+
resizeNodeStore[resizeNode.id] = resizeNode;
|
|
178
|
+
}
|
|
179
|
+
store.resizeNodesStore.set(resizeNodeStore);
|
|
180
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { StoreType } from '../types/types';
|
|
2
|
+
/**
|
|
3
|
+
`store` is a dictionary of Svelvet stores.
|
|
4
|
+
* The reason why we have multiple Svelvet stores is to handle multiple canvases on the same page.
|
|
5
|
+
* A Svelvet store is the single source of truth for a canvas state.
|
|
6
|
+
* We discourage developers from interacting with stores directly; instead use the api methods in
|
|
7
|
+
`src/lib/controllers/storeApi.ts`. However, if need to direct access you can do so by importing:
|
|
8
|
+
`import { store } from 'src/lib/models/store';`
|
|
9
|
+
*/
|
|
10
|
+
export declare const stores: {
|
|
11
|
+
[key: string]: StoreType;
|
|
12
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
`store` is a dictionary of Svelvet stores.
|
|
3
|
+
* The reason why we have multiple Svelvet stores is to handle multiple canvases on the same page.
|
|
4
|
+
* A Svelvet store is the single source of truth for a canvas state.
|
|
5
|
+
* We discourage developers from interacting with stores directly; instead use the api methods in
|
|
6
|
+
`src/lib/controllers/storeApi.ts`. However, if need to direct access you can do so by importing:
|
|
7
|
+
`import { store } from 'src/lib/models/store';`
|
|
8
|
+
*/
|
|
9
|
+
export const stores = {};
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import type { CollapsibleType } from '../../collapsible/types/types';
|
|
2
|
+
import type { Writable } from 'svelte/store';
|
|
3
|
+
import type { AnchorType } from '../../edges/types/types';
|
|
4
|
+
export interface ResizeNodeType {
|
|
5
|
+
id: string;
|
|
6
|
+
nodeId: string;
|
|
7
|
+
edgeId?: string;
|
|
8
|
+
canvasId: string;
|
|
9
|
+
anchorId?: string;
|
|
10
|
+
positionX: number;
|
|
11
|
+
positionY: number;
|
|
12
|
+
setPositionAndCascade: Function;
|
|
13
|
+
setPosition: Function;
|
|
14
|
+
delete: Function;
|
|
15
|
+
}
|
|
16
|
+
export interface StoreType {
|
|
17
|
+
nodesStore: Writable<{
|
|
18
|
+
[key: string]: NodeType;
|
|
19
|
+
}>;
|
|
20
|
+
edgesStore: Writable<{
|
|
21
|
+
[key: string]: EdgeType;
|
|
22
|
+
}>;
|
|
23
|
+
anchorsStore: Writable<{
|
|
24
|
+
[key: string]: AnchorType;
|
|
25
|
+
}>;
|
|
26
|
+
resizeNodesStore: Writable<{
|
|
27
|
+
[key: string]: ResizeNodeType;
|
|
28
|
+
}>;
|
|
29
|
+
potentialAnchorsStore: Writable<{
|
|
30
|
+
[key: string]: PotentialAnchorType;
|
|
31
|
+
}>;
|
|
32
|
+
widthStore: Writable<number>;
|
|
33
|
+
heightStore: Writable<number>;
|
|
34
|
+
backgroundStore: Writable<boolean>;
|
|
35
|
+
movementStore: Writable<boolean>;
|
|
36
|
+
nodeIdSelected: Writable<number>;
|
|
37
|
+
nodeSelected: Writable<boolean>;
|
|
38
|
+
d3Scale: Writable<number>;
|
|
39
|
+
options: Writable<{
|
|
40
|
+
[key: string]: any;
|
|
41
|
+
}>;
|
|
42
|
+
temporaryEdgeStore: Writable<TemporaryEdgeType[]>;
|
|
43
|
+
nodeCreate: Writable<boolean>;
|
|
44
|
+
boundary: Writable<boolean | PositionType>;
|
|
45
|
+
edgeEditModal: Writable<null | string>;
|
|
46
|
+
collapsibleStore: Writable<CollapsibleType[]>;
|
|
47
|
+
collapsibleOption: Writable<boolean>;
|
|
48
|
+
lockedOption: Writable<boolean>;
|
|
49
|
+
editableOption: Writable<boolean>;
|
|
50
|
+
d3ZoomParameters: Writable<{
|
|
51
|
+
[key: string]: number;
|
|
52
|
+
}>;
|
|
53
|
+
resizableOption: Writable<boolean>;
|
|
54
|
+
highlightEdgesOption: Writable<boolean>;
|
|
55
|
+
}
|
|
56
|
+
export interface PositionType {
|
|
57
|
+
x: number;
|
|
58
|
+
y: number;
|
|
59
|
+
}
|
|
60
|
+
export interface NodeType {
|
|
61
|
+
id: string;
|
|
62
|
+
width: number;
|
|
63
|
+
height: number;
|
|
64
|
+
positionX: number;
|
|
65
|
+
positionY: number;
|
|
66
|
+
bgColor: string;
|
|
67
|
+
data: {
|
|
68
|
+
html?: any;
|
|
69
|
+
custom?: {
|
|
70
|
+
component: any;
|
|
71
|
+
props?: any;
|
|
72
|
+
cb?: (e: string, detail: any) => void;
|
|
73
|
+
};
|
|
74
|
+
img?: any;
|
|
75
|
+
label?: string;
|
|
76
|
+
};
|
|
77
|
+
canvasId: string;
|
|
78
|
+
setPositionFromMovement: Function;
|
|
79
|
+
delete: Function;
|
|
80
|
+
setSizeFromMovement: Function;
|
|
81
|
+
setExportableData: Function;
|
|
82
|
+
borderColor: string;
|
|
83
|
+
image: boolean;
|
|
84
|
+
src: string;
|
|
85
|
+
textColor: string;
|
|
86
|
+
borderRadius: number;
|
|
87
|
+
childNodes: string[];
|
|
88
|
+
className: string;
|
|
89
|
+
clickCallback: Function;
|
|
90
|
+
}
|
|
91
|
+
export interface EdgeType {
|
|
92
|
+
id: string;
|
|
93
|
+
sourceX: number;
|
|
94
|
+
sourceY: number;
|
|
95
|
+
targetX: number;
|
|
96
|
+
targetY: number;
|
|
97
|
+
canvasId: string;
|
|
98
|
+
label: string;
|
|
99
|
+
type: 'straight' | 'smoothstep' | 'step' | 'bezier';
|
|
100
|
+
labelBgColor: string;
|
|
101
|
+
labelTextColor: string;
|
|
102
|
+
edgeColor: string;
|
|
103
|
+
animate: boolean;
|
|
104
|
+
noHandle: boolean;
|
|
105
|
+
arrow: boolean;
|
|
106
|
+
clickCallback: Function;
|
|
107
|
+
className: string;
|
|
108
|
+
delete: Function;
|
|
109
|
+
setExportableData: Function;
|
|
110
|
+
}
|
|
111
|
+
export interface PotentialAnchorType {
|
|
112
|
+
id: string;
|
|
113
|
+
nodeId: string;
|
|
114
|
+
callback: Function;
|
|
115
|
+
positionX: number;
|
|
116
|
+
positionY: number;
|
|
117
|
+
angle: number;
|
|
118
|
+
canvasId: string;
|
|
119
|
+
delete: Function;
|
|
120
|
+
}
|
|
121
|
+
export interface TemporaryEdgeType {
|
|
122
|
+
id: string;
|
|
123
|
+
sourcePotentialAnchorId: string;
|
|
124
|
+
sourceX: number;
|
|
125
|
+
sourceY: number;
|
|
126
|
+
targetPotentialAnchorId: string | null;
|
|
127
|
+
targetX: number;
|
|
128
|
+
targetY: number;
|
|
129
|
+
canvasId: string;
|
|
130
|
+
type: string;
|
|
131
|
+
edgeColor: string;
|
|
132
|
+
createEdge: Function;
|
|
133
|
+
createNode: Function;
|
|
134
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
export interface UserNodeType {
|
|
2
|
+
id: string;
|
|
3
|
+
width: number;
|
|
4
|
+
height: number;
|
|
5
|
+
bgColor?: string;
|
|
6
|
+
data: {
|
|
7
|
+
html?: any;
|
|
8
|
+
custom?: {
|
|
9
|
+
component: any;
|
|
10
|
+
props?: any;
|
|
11
|
+
cb?: (e: string, detail: any) => void;
|
|
12
|
+
};
|
|
13
|
+
img?: any;
|
|
14
|
+
};
|
|
15
|
+
position: {
|
|
16
|
+
x: number;
|
|
17
|
+
y: number;
|
|
18
|
+
};
|
|
19
|
+
borderColor?: string | undefined;
|
|
20
|
+
image?: boolean;
|
|
21
|
+
src?: string;
|
|
22
|
+
textColor?: string;
|
|
23
|
+
targetPosition?: 'left' | 'right' | 'top' | 'bottom';
|
|
24
|
+
sourcePosition?: 'left' | 'right' | 'top' | 'bottom';
|
|
25
|
+
borderRadius?: number;
|
|
26
|
+
childNodes?: string[];
|
|
27
|
+
className?: string;
|
|
28
|
+
clickCallback?: Function;
|
|
29
|
+
}
|
|
30
|
+
export interface UserEdgeType {
|
|
31
|
+
id: string;
|
|
32
|
+
source: string;
|
|
33
|
+
target: string;
|
|
34
|
+
sourceAnchorCb?: Function;
|
|
35
|
+
targetAnchorCb?: Function;
|
|
36
|
+
label?: string;
|
|
37
|
+
labelBgColor?: string;
|
|
38
|
+
labelTextColor?: string;
|
|
39
|
+
edgeColor?: string;
|
|
40
|
+
type?: 'straight' | 'smoothstep' | 'step' | 'bezier' | undefined;
|
|
41
|
+
animate?: boolean;
|
|
42
|
+
noHandle?: boolean;
|
|
43
|
+
arrow?: boolean;
|
|
44
|
+
clickCallback?: Function;
|
|
45
|
+
className?: string;
|
|
46
|
+
}
|
|
47
|
+
export declare function getD3PositionX(canvasId: string): number;
|
|
48
|
+
export declare function getD3PositionY(canvasId: string): number;
|
|
49
|
+
export declare function getD3Zoom(canvasId: string): number;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { findStore } from '../store/controllers/storeApi';
|
|
2
|
+
import { get } from 'svelte/store';
|
|
3
|
+
export function getD3PositionX(canvasId) {
|
|
4
|
+
const store = findStore(canvasId);
|
|
5
|
+
const width = get(store.widthStore);
|
|
6
|
+
const x = width / 2 - get(store.d3ZoomParameters).x; // user input is shifted so that x=0, y=0 occurs in the center
|
|
7
|
+
return x;
|
|
8
|
+
}
|
|
9
|
+
export function getD3PositionY(canvasId) {
|
|
10
|
+
const store = findStore(canvasId);
|
|
11
|
+
const height = get(store.heightStore);
|
|
12
|
+
const y = height / 2 - get(store.d3ZoomParameters).y; // user input is shifted so that x=0, y=0 occurs in the center
|
|
13
|
+
return y;
|
|
14
|
+
}
|
|
15
|
+
export function getD3Zoom(canvasId) {
|
|
16
|
+
const store = findStore(canvasId);
|
|
17
|
+
return get(store.d3ZoomParameters).k;
|
|
18
|
+
}
|
package/components/graph/util.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
<script>import CenteredPage from '../CenteredPage.svelte';
|
|
2
2
|
import { AppService, FlowService, ListableApp, Script, ScriptService } from '../../gen';
|
|
3
3
|
import { userStore, workspaceStore } from '../../stores';
|
|
4
|
-
import { Skeleton, ToggleButton, ToggleButtonGroup } from '../common';
|
|
4
|
+
import { Alert, Badge, Skeleton, ToggleButton, ToggleButtonGroup } from '../common';
|
|
5
5
|
import { canWrite } from '../../utils';
|
|
6
6
|
import ShareModal from '../ShareModal.svelte';
|
|
7
7
|
import { Code2, LayoutDashboard } from 'lucide-svelte';
|
|
8
|
+
import Toggle from '../Toggle.svelte';
|
|
8
9
|
export let filter = '';
|
|
9
10
|
import ScriptRow from '../common/table/ScriptRow.svelte';
|
|
10
11
|
import FlowRow from '../common/table/FlowRow.svelte';
|
|
@@ -15,6 +16,7 @@ import SearchItems from '../SearchItems.svelte';
|
|
|
15
16
|
import { Icon } from 'svelte-awesome';
|
|
16
17
|
import { faBarsStaggered } from '@fortawesome/free-solid-svg-icons';
|
|
17
18
|
import MoveDrawer from '../MoveDrawer.svelte';
|
|
19
|
+
import ConfirmationModal from '../common/confirmationModal/ConfirmationModal.svelte';
|
|
18
20
|
let scripts;
|
|
19
21
|
let flows;
|
|
20
22
|
let apps;
|
|
@@ -24,9 +26,11 @@ let shareModal;
|
|
|
24
26
|
let moveDrawer;
|
|
25
27
|
let loading = true;
|
|
26
28
|
let nbDisplayed = 30;
|
|
29
|
+
export let deleteConfirmedCallback = undefined;
|
|
27
30
|
async function loadScripts() {
|
|
28
31
|
const loadedScripts = await ScriptService.listScripts({
|
|
29
32
|
workspace: $workspaceStore,
|
|
33
|
+
showArchived: archived ? true : undefined,
|
|
30
34
|
perPage: 300
|
|
31
35
|
});
|
|
32
36
|
scripts = loadedScripts.map((script) => {
|
|
@@ -40,7 +44,10 @@ async function loadScripts() {
|
|
|
40
44
|
loading = false;
|
|
41
45
|
}
|
|
42
46
|
async function loadFlows() {
|
|
43
|
-
flows = (await FlowService.listFlows({
|
|
47
|
+
flows = (await FlowService.listFlows({
|
|
48
|
+
workspace: $workspaceStore,
|
|
49
|
+
showArchived: archived ? true : undefined
|
|
50
|
+
})).map((x) => {
|
|
44
51
|
return {
|
|
45
52
|
canWrite: canWrite(x.path, x.extra_perms, $userStore) &&
|
|
46
53
|
x.workspace_id == $workspaceStore &&
|
|
@@ -95,7 +102,12 @@ $: {
|
|
|
95
102
|
if ($userStore && $workspaceStore) {
|
|
96
103
|
loadScripts();
|
|
97
104
|
loadFlows();
|
|
98
|
-
|
|
105
|
+
if (!archived) {
|
|
106
|
+
loadApps();
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
apps = [];
|
|
110
|
+
}
|
|
99
111
|
}
|
|
100
112
|
}
|
|
101
113
|
const cmp = new Intl.Collator('en').compare;
|
|
@@ -139,6 +151,7 @@ function resetScroll() {
|
|
|
139
151
|
}
|
|
140
152
|
}
|
|
141
153
|
$: items && resetScroll();
|
|
154
|
+
let archived = false;
|
|
142
155
|
</script>
|
|
143
156
|
|
|
144
157
|
<SearchItems
|
|
@@ -223,8 +236,14 @@ $: items && resetScroll();
|
|
|
223
236
|
</button>
|
|
224
237
|
</div>
|
|
225
238
|
</div>
|
|
226
|
-
|
|
227
|
-
|
|
239
|
+
<div class="relative">
|
|
240
|
+
<ListFilters bind:selectedFilter={ownerFilter} filters={owners} />
|
|
241
|
+
{#if !loading}
|
|
242
|
+
<div class="absolute -bottom-2 right-0 bg-white/90">
|
|
243
|
+
<Toggle size="xs" bind:checked={archived} options={{ right: 'Show archived' }} /></div
|
|
244
|
+
>
|
|
245
|
+
{/if}
|
|
246
|
+
</div>
|
|
228
247
|
<div>
|
|
229
248
|
{#if filteredItems == undefined}
|
|
230
249
|
<div class="mt-4" />
|
|
@@ -240,6 +259,7 @@ $: items && resetScroll();
|
|
|
240
259
|
{#each (items ?? []).slice(0, nbDisplayed) as item, i (item.type + '/' + item.path + (item.summary ?? ''))}
|
|
241
260
|
{#if item.type == 'script'}
|
|
242
261
|
<ScriptRow
|
|
262
|
+
bind:deleteConfirmedCallback
|
|
243
263
|
starred={item.starred ?? false}
|
|
244
264
|
marked={item.marked}
|
|
245
265
|
on:change={loadScripts}
|
|
@@ -249,6 +269,7 @@ $: items && resetScroll();
|
|
|
249
269
|
/>
|
|
250
270
|
{:else if item.type == 'flow'}
|
|
251
271
|
<FlowRow
|
|
272
|
+
bind:deleteConfirmedCallback
|
|
252
273
|
starred={item.starred ?? false}
|
|
253
274
|
marked={item.marked}
|
|
254
275
|
on:change={loadFlows}
|
|
@@ -258,6 +279,7 @@ $: items && resetScroll();
|
|
|
258
279
|
/>
|
|
259
280
|
{:else if item.type == 'app'}
|
|
260
281
|
<AppRow
|
|
282
|
+
bind:deleteConfirmedCallback
|
|
261
283
|
starred={item.starred ?? false}
|
|
262
284
|
marked={item.marked}
|
|
263
285
|
on:change={loadApps}
|
|
@@ -279,3 +301,29 @@ $: items && resetScroll();
|
|
|
279
301
|
{/if}
|
|
280
302
|
</div>
|
|
281
303
|
</CenteredPage>
|
|
304
|
+
|
|
305
|
+
<ConfirmationModal
|
|
306
|
+
open={Boolean(deleteConfirmedCallback)}
|
|
307
|
+
title="Remove"
|
|
308
|
+
confirmationText="Remove"
|
|
309
|
+
on:canceled={() => {
|
|
310
|
+
deleteConfirmedCallback = undefined
|
|
311
|
+
}}
|
|
312
|
+
on:confirmed={() => {
|
|
313
|
+
if (deleteConfirmedCallback) {
|
|
314
|
+
deleteConfirmedCallback()
|
|
315
|
+
}
|
|
316
|
+
deleteConfirmedCallback = undefined
|
|
317
|
+
}}
|
|
318
|
+
>
|
|
319
|
+
<div class="flex flex-col w-full space-y-4">
|
|
320
|
+
<span>Are you sure you want to remove it?</span>
|
|
321
|
+
<Alert type="info" title="Bypass confirmation">
|
|
322
|
+
<div>
|
|
323
|
+
You can press
|
|
324
|
+
<Badge color="dark-gray">SHIFT</Badge>
|
|
325
|
+
while removing to bypass confirmation.
|
|
326
|
+
</div>
|
|
327
|
+
</Alert>
|
|
328
|
+
</div>
|
|
329
|
+
</ConfirmationModal>
|
|
@@ -10,11 +10,16 @@ export let resourceType = false;
|
|
|
10
10
|
function getIconComponent(name) {
|
|
11
11
|
return APP_TO_ICON_COMPONENT[name] || APP_TO_ICON_COMPONENT[name.split('_')[0]];
|
|
12
12
|
}
|
|
13
|
+
$: filtersAndSelected = selectedFilter
|
|
14
|
+
? filters.includes(selectedFilter)
|
|
15
|
+
? filters
|
|
16
|
+
: [selectedFilter, ...filters]
|
|
17
|
+
: filters;
|
|
13
18
|
</script>
|
|
14
19
|
|
|
15
|
-
{#if Array.isArray(
|
|
20
|
+
{#if Array.isArray(filtersAndSelected) && filtersAndSelected.length > 0}
|
|
16
21
|
<div class="gap-2 w-full flex flex-wrap my-4">
|
|
17
|
-
{#each
|
|
22
|
+
{#each filtersAndSelected as filter (filter)}
|
|
18
23
|
<div in:fade={{ duration: 50 }} animate:flip={{ duration: 100 }}>
|
|
19
24
|
<Badge
|
|
20
25
|
class={classNames(
|
|
@@ -21,10 +21,21 @@ onMount(() => {
|
|
|
21
21
|
onDestroy(() => {
|
|
22
22
|
interval && clearInterval(interval);
|
|
23
23
|
});
|
|
24
|
+
function displayIfRecent(date) {
|
|
25
|
+
const d = new Date(date);
|
|
26
|
+
const now = new Date();
|
|
27
|
+
const diff = now.getTime() - d.getTime();
|
|
28
|
+
if (diff < 1000 * 600) {
|
|
29
|
+
return `(${displayDaysAgo(d.toString())})`;
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
return '';
|
|
33
|
+
}
|
|
34
|
+
}
|
|
24
35
|
function endedDate(started_at, duration_ms) {
|
|
25
36
|
const started = new Date(started_at);
|
|
26
37
|
started.setMilliseconds(started.getMilliseconds() + duration_ms);
|
|
27
|
-
return
|
|
38
|
+
return `${displayDate(started)} ${displayIfRecent(started)}`;
|
|
28
39
|
}
|
|
29
40
|
</script>
|
|
30
41
|
|
|
@@ -50,7 +50,11 @@ function selectProp(key, value) {
|
|
|
50
50
|
</span>
|
|
51
51
|
{/if}
|
|
52
52
|
{#if level == 0 && topBrackets}<span class="h-0">{openBracket}</span>{/if}
|
|
53
|
-
<ul
|
|
53
|
+
<ul
|
|
54
|
+
class={`w-full ${
|
|
55
|
+
level === 0 ? 'border-none pl-2' : 'border-l border-dotted border-gray-200 pl-2'
|
|
56
|
+
}`}
|
|
57
|
+
>
|
|
54
58
|
{#each keys as key, index}
|
|
55
59
|
<li class="pt-1">
|
|
56
60
|
<button on:click={() => selectProp(key, key)} class="whitespace-nowrap">
|
|
@@ -80,7 +84,7 @@ function selectProp(key, value) {
|
|
|
80
84
|
<button
|
|
81
85
|
class="val {pureViewer
|
|
82
86
|
? 'cursor-auto'
|
|
83
|
-
: ''} rounded hover:bg-blue-100 {getTypeAsString(json[key])}"
|
|
87
|
+
: ''} rounded px-1 hover:bg-blue-100 {getTypeAsString(json[key])}"
|
|
84
88
|
on:click={() => selectProp(key, json[key])}
|
|
85
89
|
>
|
|
86
90
|
{#if json[key] === NEVER_TESTED_THIS_FAR}
|
|
@@ -126,8 +130,6 @@ function selectProp(key, value) {
|
|
|
126
130
|
<style>
|
|
127
131
|
ul {
|
|
128
132
|
list-style: none;
|
|
129
|
-
padding-left: 1rem;
|
|
130
|
-
border-left: 1px dotted lightgray;
|
|
131
133
|
font-size: 0.875rem;
|
|
132
134
|
line-height: 1.25rem;
|
|
133
135
|
}
|
|
@@ -40,12 +40,12 @@ export let isCollapsed = false;
|
|
|
40
40
|
{/each}
|
|
41
41
|
</div>
|
|
42
42
|
<div>
|
|
43
|
-
<div class="mb-6 md:mb-10">
|
|
43
|
+
<div class="space-y-0.5 mb-6 md:mb-10">
|
|
44
44
|
{#each secondaryMenuLinks as menuLink (menuLink.href)}
|
|
45
45
|
<MenuLink class="!text-xs" {...menuLink} {isCollapsed} />
|
|
46
46
|
{/each}
|
|
47
47
|
</div>
|
|
48
|
-
<div>
|
|
48
|
+
<div class="space-y-0.5">
|
|
49
49
|
{#each thirdMenuLinks as menuLink (menuLink.href)}
|
|
50
50
|
<MenuLink class="!text-xs" {...menuLink} {isCollapsed} />
|
|
51
51
|
{/each}
|
package/consts.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const DEFAULT_WEBHOOK_TYPE: 'async' | 'sync';
|
package/consts.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const DEFAULT_WEBHOOK_TYPE = import.meta.env.VITE_DEFAULT_WEBHOOK_TYPE || 'async';
|