windmill-components 1.60.3 → 1.83.1
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 +15 -1
- package/common.d.ts +7 -3
- package/components/ApiConnectForm.svelte +66 -5
- package/components/AppConnect.svelte +26 -10
- package/components/ArgInput.svelte +56 -83
- package/components/ArgInput.svelte.d.ts +2 -3
- package/components/CliHelpBox.svelte +49 -0
- package/components/CliHelpBox.svelte.d.ts +14 -0
- package/components/DisplayResult.svelte +82 -11
- package/components/DisplayResult.svelte.d.ts +1 -0
- package/components/Dropdown.svelte +14 -4
- package/components/Editor.svelte +17 -10
- package/components/Editor.svelte.d.ts +0 -1
- package/components/EditorBar.svelte +129 -111
- package/components/FieldHeader.svelte +12 -9
- package/components/FieldHeader.svelte.d.ts +0 -4
- package/components/FlowBuilder.svelte +113 -39
- package/components/FlowBuilder.svelte.d.ts +5 -0
- package/components/FlowGraphViewer.svelte +6 -5
- package/components/FlowJobResult.svelte +13 -5
- package/components/FlowJobResult.svelte.d.ts +1 -0
- package/components/FlowMetadata.svelte +24 -8
- package/components/FlowPreviewContent.svelte +5 -11
- package/components/FlowStatusViewer.svelte +69 -21
- package/components/FlowStatusViewer.svelte.d.ts +1 -0
- package/components/FlowViewer.svelte +0 -1
- package/components/FolderEditor.svelte +4 -3
- package/components/FolderUsageInfo.svelte +16 -6
- package/components/FolderUsageInfo.svelte.d.ts +2 -0
- package/components/GroupEditor.svelte +8 -0
- package/components/HighlightCode.svelte +7 -1
- package/components/InlineCodeCopy.svelte +11 -0
- package/components/InlineCodeCopy.svelte.d.ts +16 -0
- package/components/InputTransformForm.svelte +22 -26
- package/components/InputTransformSchemaForm.svelte +103 -0
- package/components/InputTransformSchemaForm.svelte.d.ts +24 -0
- package/components/LightweightArgInput.svelte +302 -0
- package/components/LightweightArgInput.svelte.d.ts +45 -0
- package/components/LightweightSchemaForm.svelte +31 -0
- package/components/LightweightSchemaForm.svelte.d.ts +18 -0
- package/components/LogViewer.svelte +7 -1
- package/components/LogViewer.svelte.d.ts +1 -0
- package/components/ModulePreview.svelte +14 -3
- package/components/MoveDrawer.svelte +1 -1
- package/components/Multiselect.svelte +1 -1
- package/components/Multiselect.svelte.d.ts +2 -2
- package/components/ObjectResourceInput.svelte +6 -1
- package/components/PageHeader.svelte +1 -1
- package/components/Path.svelte +53 -17
- package/components/Popover.svelte +10 -15
- package/components/Popover.svelte.d.ts +1 -0
- package/components/Range.svelte.d.ts +2 -2
- package/components/ResourceEditor.svelte +39 -16
- package/components/ResourcePicker.svelte +33 -15
- package/components/RunChart.svelte +24 -5
- package/components/RunForm.svelte +26 -3
- package/components/RunForm.svelte.d.ts +2 -0
- package/components/ScheduleEditor.svelte +1 -1
- package/components/SchemaEditor.svelte +15 -10
- package/components/SchemaForm.svelte +72 -60
- package/components/SchemaForm.svelte.d.ts +1 -5
- package/components/ScriptBuilder.svelte +169 -130
- package/components/ScriptBuilder.svelte.d.ts +1 -0
- package/components/ScriptEditor.svelte +1 -0
- package/components/ScriptPicker.svelte +3 -0
- package/components/SettingSection.svelte +44 -0
- package/components/SettingSection.svelte.d.ts +21 -0
- package/components/SharedBadge.svelte +5 -5
- package/components/SimpleEditor.svelte +5 -3
- package/components/SimpleEditor.svelte.d.ts +4 -1
- package/components/Slider.svelte +19 -0
- package/components/Slider.svelte.d.ts +20 -0
- package/components/StringTypeNarrowing.svelte +0 -1
- package/components/SuperadminSettings.svelte +11 -3
- package/components/SuperadminSettings.svelte.d.ts +2 -0
- package/components/TemplateEditor.svelte +4 -2
- package/components/TemplateEditor.svelte.d.ts +205 -0
- package/components/TestJobLoader.svelte +5 -5
- package/components/Toggle.svelte +23 -8
- package/components/Toggle.svelte.d.ts +3 -1
- package/components/Tooltip.svelte +4 -2
- package/components/UserSettings.svelte +27 -28
- package/components/UserSettings.svelte.d.ts +2 -0
- package/components/VariableEditor.svelte +3 -2
- package/components/WhitelistIp.svelte +21 -0
- package/components/WhitelistIp.svelte.d.ts +14 -0
- package/components/apps/components/buttons/AppButton.svelte +89 -53
- package/components/apps/components/buttons/AppButton.svelte.d.ts +11 -3
- package/components/apps/components/{form → buttons}/AppForm.svelte +40 -33
- package/components/apps/components/{form → buttons}/AppForm.svelte.d.ts +4 -1
- package/components/apps/components/buttons/AppFormButton.svelte +125 -0
- package/components/apps/components/buttons/AppFormButton.svelte.d.ts +26 -0
- package/components/apps/components/buttons/index.d.ts +3 -0
- package/components/apps/components/buttons/index.js +3 -0
- package/components/apps/components/{dataDisplay → display}/AppBarChart.svelte +32 -9
- package/components/apps/components/{dataDisplay → display}/AppBarChart.svelte.d.ts +5 -3
- package/components/apps/components/display/AppDisplayComponent.svelte +46 -0
- package/components/apps/components/display/AppDisplayComponent.svelte.d.ts +22 -0
- package/components/apps/components/display/AppHtml.svelte +56 -0
- package/components/apps/components/{dataDisplay → display}/AppHtml.svelte.d.ts +6 -5
- package/components/apps/components/display/AppIcon.svelte +49 -0
- package/components/apps/components/display/AppIcon.svelte.d.ts +22 -0
- package/components/apps/components/display/AppImage.svelte +46 -0
- package/components/apps/components/display/AppImage.svelte.d.ts +22 -0
- package/components/apps/components/display/AppMap.svelte +221 -0
- package/components/apps/components/display/AppMap.svelte.d.ts +20 -0
- package/components/apps/components/display/AppPdf.svelte +310 -0
- package/components/apps/components/display/AppPdf.svelte.d.ts +21 -0
- package/components/apps/components/{dataDisplay → display}/AppPieChart.svelte +21 -8
- package/components/apps/components/{dataDisplay → display}/AppPieChart.svelte.d.ts +5 -3
- package/components/apps/components/{dataDisplay → display}/AppScatterChart.svelte +18 -5
- package/components/apps/components/{dataDisplay → display}/AppScatterChart.svelte.d.ts +5 -3
- package/components/apps/components/display/AppText.svelte +131 -0
- package/components/apps/components/{dataDisplay → display}/AppText.svelte.d.ts +5 -3
- package/components/apps/components/{dataDisplay → display}/AppTimeseries.svelte +19 -6
- package/components/apps/components/{dataDisplay → display}/AppTimeseries.svelte.d.ts +5 -3
- package/components/apps/components/display/PlotlyHtml.svelte +54 -0
- package/components/apps/components/display/PlotlyHtml.svelte.d.ts +24 -0
- package/components/apps/components/display/VegaLiteHtml.svelte +52 -0
- package/components/apps/components/{dataDisplay → display}/VegaLiteHtml.svelte.d.ts +6 -5
- package/components/apps/components/display/index.d.ts +15 -0
- package/components/apps/components/display/index.js +15 -0
- package/components/apps/components/display/table/AppAggridTable.svelte +100 -0
- package/components/apps/components/display/table/AppAggridTable.svelte.d.ts +24 -0
- package/components/apps/components/display/table/AppTable.svelte +354 -0
- package/components/apps/components/{table → display/table}/AppTable.svelte.d.ts +7 -5
- package/components/apps/components/{table → display/table}/AppTableFooter.svelte +11 -3
- package/components/apps/components/{table → display/table}/AppTableFooter.svelte.d.ts +3 -0
- package/components/apps/components/{table → display/table}/tableOptions.js +1 -1
- package/components/apps/components/helpers/AlignWrapper.svelte +29 -23
- package/components/apps/components/helpers/AlignWrapper.svelte.d.ts +6 -2
- package/components/apps/components/helpers/DebouncedInput.svelte +1 -0
- package/components/apps/components/helpers/DebouncedInput.svelte.d.ts +2 -0
- package/components/apps/components/helpers/HiddenComponent.svelte +36 -0
- package/components/apps/components/helpers/HiddenComponent.svelte.d.ts +25 -0
- package/components/apps/components/helpers/InputDefaultValue.svelte +17 -0
- package/components/apps/components/helpers/InputDefaultValue.svelte.d.ts +17 -0
- package/components/apps/components/helpers/InputValue.svelte +62 -54
- package/components/apps/components/helpers/InputValue.svelte.d.ts +6 -4
- package/components/apps/components/helpers/Loader.svelte +18 -0
- package/components/apps/components/helpers/Loader.svelte.d.ts +18 -0
- package/components/apps/components/helpers/NonRunnableComponent.svelte +12 -8
- package/components/apps/components/helpers/NonRunnableComponent.svelte.d.ts +1 -0
- package/components/apps/components/helpers/RefreshButton.svelte +4 -12
- package/components/apps/components/helpers/RefreshButton.svelte.d.ts +1 -0
- package/components/apps/components/helpers/ResizeWrapper.svelte +23 -0
- package/components/apps/components/helpers/ResizeWrapper.svelte.d.ts +19 -0
- package/components/apps/components/helpers/ResolveConfig.svelte +29 -0
- package/components/apps/components/helpers/ResolveConfig.svelte.d.ts +21 -0
- package/components/apps/components/helpers/RunnableComponent.svelte +210 -164
- package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +18 -3
- package/components/apps/components/helpers/RunnableWrapper.svelte +61 -11
- package/components/apps/components/helpers/RunnableWrapper.svelte.d.ts +31 -3
- package/components/apps/components/helpers/eval.d.ts +7 -0
- package/components/apps/components/helpers/eval.js +94 -0
- package/components/apps/components/helpers/index.d.ts +10 -0
- package/components/apps/components/helpers/index.js +10 -0
- package/components/apps/components/icon.d.ts +1 -0
- package/components/apps/components/icon.js +18 -0
- package/components/apps/components/index.d.ts +5 -0
- package/components/apps/components/index.js +5 -0
- package/components/apps/components/inputs/AppCheckbox.svelte +38 -0
- package/components/apps/components/{selectInputs → inputs}/AppCheckbox.svelte.d.ts +4 -4
- package/components/apps/components/inputs/AppDateInput.svelte +49 -0
- package/components/apps/components/{dateInputs → inputs}/AppDateInput.svelte.d.ts +7 -5
- package/components/apps/components/inputs/AppFileInput.svelte +44 -0
- package/components/apps/components/inputs/AppFileInput.svelte.d.ts +20 -0
- package/components/apps/components/inputs/AppMultiSelect.svelte +93 -0
- package/components/apps/components/inputs/AppMultiSelect.svelte.d.ts +22 -0
- package/components/apps/components/inputs/AppNumberInput.svelte +54 -0
- package/components/apps/components/{numberInputs → inputs}/AppNumberInput.svelte.d.ts +4 -4
- package/components/apps/components/inputs/AppRangeInput.svelte +94 -0
- package/components/apps/components/inputs/AppRangeInput.svelte.d.ts +24 -0
- package/components/apps/components/inputs/AppSelect.svelte +144 -0
- package/components/apps/components/{selectInputs → inputs}/AppSelect.svelte.d.ts +4 -4
- package/components/apps/components/inputs/AppSliderInputs.svelte +81 -0
- package/components/apps/components/{numberInputs → inputs}/AppSliderInputs.svelte.d.ts +5 -4
- package/components/apps/components/inputs/AppTextInput.svelte +83 -0
- package/components/apps/components/{textInputs → inputs}/AppTextInput.svelte.d.ts +5 -4
- package/components/apps/components/inputs/currency/AppCurrencyInput.svelte +60 -0
- package/components/apps/components/inputs/currency/AppCurrencyInput.svelte.d.ts +21 -0
- package/components/apps/components/inputs/currency/CurrencyInput.svelte +183 -0
- package/components/apps/components/inputs/currency/CurrencyInput.svelte.d.ts +33 -0
- package/components/apps/components/inputs/index.d.ts +9 -0
- package/components/apps/components/inputs/index.js +9 -0
- package/components/apps/components/layout/AppContainer.svelte +38 -0
- package/components/apps/components/layout/AppContainer.svelte.d.ts +20 -0
- package/components/apps/components/layout/AppDivider.svelte +43 -0
- package/components/apps/components/layout/AppDivider.svelte.d.ts +23 -0
- package/components/apps/components/layout/AppDrawer.svelte +90 -0
- package/components/apps/components/layout/AppDrawer.svelte.d.ts +23 -0
- package/components/apps/components/layout/AppSplitpanes.svelte +93 -0
- package/components/apps/components/layout/AppSplitpanes.svelte.d.ts +22 -0
- package/components/apps/components/layout/AppTabs.svelte +115 -0
- package/components/apps/components/layout/AppTabs.svelte.d.ts +24 -0
- package/components/apps/components/layout/index.d.ts +5 -0
- package/components/apps/components/layout/index.js +5 -0
- package/components/apps/editor/AppComponentInput.svelte +34 -0
- package/components/apps/editor/AppComponentInput.svelte.d.ts +18 -0
- package/components/apps/editor/AppEditor.svelte +244 -128
- package/components/apps/editor/AppEditor.svelte.d.ts +4 -1
- package/components/apps/editor/AppEditorHeader.svelte +213 -70
- package/components/apps/editor/AppEditorHeader.svelte.d.ts +1 -0
- package/components/apps/editor/AppInputs.svelte +59 -0
- package/components/apps/editor/AppInputs.svelte.d.ts +14 -0
- package/components/apps/editor/AppPreview.svelte +120 -20
- package/components/apps/editor/AppPreview.svelte.d.ts +2 -0
- package/components/apps/editor/ComponentHeader.svelte +92 -36
- package/components/apps/editor/ComponentHeader.svelte.d.ts +4 -2
- package/components/apps/editor/ConnectionInstructions.svelte +29 -0
- package/components/apps/editor/ConnectionInstructions.svelte.d.ts +14 -0
- package/components/apps/editor/GridEditor.svelte +102 -105
- package/components/apps/editor/GridViewer.svelte +91 -0
- package/components/apps/editor/GridViewer.svelte.d.ts +32 -0
- package/components/apps/editor/RecomputeAllComponents.svelte +26 -9
- package/components/apps/editor/SettingsPanel.svelte +115 -10
- package/components/apps/editor/SubGridEditor.svelte +146 -0
- package/components/apps/editor/SubGridEditor.svelte.d.ts +27 -0
- package/components/apps/editor/appUtils.d.ts +73 -0
- package/components/apps/editor/appUtils.js +437 -0
- package/components/apps/editor/component/Component.svelte +417 -0
- package/components/apps/editor/component/Component.svelte.d.ts +24 -0
- package/components/apps/editor/component/ComponentNavigation.svelte +201 -0
- package/components/apps/editor/component/ComponentNavigation.svelte.d.ts +14 -0
- package/components/apps/editor/component/ComponentWrapper.svelte +59 -0
- package/components/apps/editor/component/ComponentWrapper.svelte.d.ts +20 -0
- package/components/apps/editor/component/README.md +19 -0
- package/components/apps/editor/component/components.d.ts +1628 -0
- package/components/apps/editor/component/components.js +1425 -0
- package/components/apps/editor/component/default-codes.d.ts +3 -0
- package/components/apps/editor/component/default-codes.js +322 -0
- package/components/apps/editor/component/index.d.ts +4 -0
- package/components/apps/editor/component/index.js +4 -0
- package/components/apps/editor/component/sets.d.ts +2 -0
- package/components/apps/editor/component/sets.js +56 -0
- package/components/apps/editor/componentsPanel/ComponentList.svelte +92 -108
- package/components/apps/editor/componentsPanel/CssProperty.svelte +83 -0
- package/components/apps/editor/componentsPanel/CssProperty.svelte.d.ts +24 -0
- package/components/apps/editor/componentsPanel/CssSettings.svelte +147 -0
- package/components/apps/editor/componentsPanel/CssSettings.svelte.d.ts +14 -0
- package/components/apps/editor/componentsPanel/ListItem.svelte +42 -0
- package/components/apps/editor/componentsPanel/ListItem.svelte.d.ts +22 -0
- package/components/apps/editor/componentsPanel/QuickStyleMenu.svelte +170 -0
- package/components/apps/editor/componentsPanel/QuickStyleMenu.svelte.d.ts +18 -0
- package/components/apps/editor/componentsPanel/QuickStyleProperty.svelte +130 -0
- package/components/apps/editor/componentsPanel/QuickStyleProperty.svelte.d.ts +21 -0
- package/components/apps/editor/componentsPanel/quickStyleProperties.d.ts +535 -0
- package/components/apps/editor/componentsPanel/quickStyleProperties.js +598 -0
- package/components/apps/editor/componentsPanel/store.js +4 -4
- package/components/apps/editor/contextPanel/ComponentOutput.svelte +43 -0
- package/components/apps/editor/contextPanel/ComponentOutput.svelte.d.ts +20 -0
- package/components/apps/editor/contextPanel/ComponentOutputViewer.svelte +19 -12
- package/components/apps/editor/contextPanel/ComponentOutputViewer.svelte.d.ts +0 -1
- package/components/apps/editor/contextPanel/ContextPanel.svelte +63 -85
- package/components/apps/editor/contextPanel/SubGridOutput.svelte +66 -0
- package/components/apps/editor/contextPanel/SubGridOutput.svelte.d.ts +19 -0
- package/components/apps/editor/contextPanel/components/BackgroundScriptOutput.svelte +18 -0
- package/components/apps/editor/contextPanel/components/BackgroundScriptOutput.svelte.d.ts +18 -0
- package/components/apps/editor/contextPanel/components/BackgroundScriptsOutput.svelte +8 -0
- package/components/apps/editor/contextPanel/components/BackgroundScriptsOutput.svelte.d.ts +14 -0
- package/components/apps/editor/contextPanel/components/OutputHeader.svelte +107 -0
- package/components/apps/editor/contextPanel/components/OutputHeader.svelte.d.ts +23 -0
- package/components/apps/editor/contextPanel/components/TableActionOutput.svelte +17 -0
- package/components/apps/editor/contextPanel/components/TableActionOutput.svelte.d.ts +17 -0
- package/components/apps/editor/contextPanel/components/TableActionsOutput.svelte +13 -0
- package/components/apps/editor/contextPanel/components/TableActionsOutput.svelte.d.ts +17 -0
- package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte +138 -12
- package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte.d.ts +2 -1
- package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +193 -88
- package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte.d.ts +7 -1
- package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorDrawer.svelte +1 -1
- package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorPanel.svelte +133 -42
- package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorPanel.svelte.d.ts +3 -0
- package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanel.svelte +61 -31
- package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte +181 -75
- package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte.d.ts +1 -3
- package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelWithTable.svelte +29 -0
- package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelWithTable.svelte.d.ts +17 -0
- package/components/apps/editor/inlineScriptsPanel/utils.d.ts +7 -5
- package/components/apps/editor/inlineScriptsPanel/utils.js +51 -9
- package/components/apps/editor/settingsPanel/AlignmentEditor.svelte +11 -3
- package/components/apps/editor/settingsPanel/AlignmentEditor.svelte.d.ts +1 -1
- package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +57 -44
- package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte.d.ts +6 -39
- package/components/apps/editor/settingsPanel/ComponentInputTypeEditor.svelte +1 -1
- package/components/apps/editor/settingsPanel/ComponentPanel.svelte +226 -101
- package/components/apps/editor/settingsPanel/ComponentPanel.svelte.d.ts +8 -3
- package/components/apps/editor/settingsPanel/GridPane.svelte +73 -0
- package/components/apps/editor/settingsPanel/GridPane.svelte.d.ts +20 -0
- package/components/apps/editor/settingsPanel/GridTab.svelte +61 -0
- package/components/apps/editor/settingsPanel/GridTab.svelte.d.ts +20 -0
- package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +131 -11
- package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte.d.ts +18 -2
- package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte +36 -100
- package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte.d.ts +4 -2
- package/components/apps/editor/settingsPanel/OneOfInputSpecsEditor.svelte +52 -0
- package/components/apps/editor/settingsPanel/OneOfInputSpecsEditor.svelte.d.ts +28 -0
- package/components/apps/editor/settingsPanel/Recompute.svelte +6 -2
- package/components/apps/editor/settingsPanel/SelectedRunnable.svelte +74 -21
- package/components/apps/editor/settingsPanel/SelectedRunnable.svelte.d.ts +2 -0
- package/components/apps/editor/settingsPanel/StylePanel.svelte +61 -0
- package/components/apps/editor/settingsPanel/StylePanel.svelte.d.ts +17 -0
- package/components/apps/editor/settingsPanel/SubTypeEditor.svelte +7 -5
- package/components/apps/editor/settingsPanel/SubTypeEditor.svelte.d.ts +3 -2
- package/components/apps/editor/settingsPanel/TableActionLabel.svelte.d.ts +2 -2
- package/components/apps/editor/settingsPanel/TableActions.svelte +28 -47
- package/components/apps/editor/settingsPanel/TableActions.svelte.d.ts +2 -1
- package/components/apps/editor/settingsPanel/common/PanelSection.svelte +7 -6
- package/components/apps/editor/settingsPanel/common/PanelSection.svelte.d.ts +0 -1
- package/components/apps/editor/settingsPanel/inputEditor/ColorInput.svelte +48 -0
- package/components/apps/editor/settingsPanel/inputEditor/ColorInput.svelte.d.ts +18 -0
- package/components/apps/editor/settingsPanel/inputEditor/ConnectedInputEditor.svelte +4 -8
- package/components/apps/editor/settingsPanel/inputEditor/EvalInputEditor.svelte +7 -3
- package/components/apps/editor/settingsPanel/inputEditor/IconSelectInput.svelte +119 -0
- package/components/apps/editor/settingsPanel/inputEditor/IconSelectInput.svelte.d.ts +19 -0
- package/components/apps/editor/settingsPanel/inputEditor/JsonEditor.svelte +5 -4
- package/components/apps/editor/settingsPanel/inputEditor/JsonEditor.svelte.d.ts +8 -2
- package/components/apps/editor/settingsPanel/inputEditor/RunnableInputEditor.svelte +5 -5
- package/components/apps/editor/settingsPanel/inputEditor/RunnableInputEditor.svelte.d.ts +2 -0
- package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +98 -23
- package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte.d.ts +11 -2
- package/components/apps/editor/settingsPanel/inputEditor/TabSelectInput.svelte +46 -0
- package/components/apps/editor/settingsPanel/inputEditor/TabSelectInput.svelte.d.ts +20 -0
- package/components/apps/editor/settingsPanel/inputEditor/UploadInputEditor.svelte +21 -0
- package/components/apps/editor/settingsPanel/inputEditor/UploadInputEditor.svelte.d.ts +17 -0
- 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 +11 -21
- package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte.d.ts +1 -0
- package/components/apps/editor/settingsPanel/secondaryMenu/SecondaryMenu.svelte +47 -0
- package/components/apps/editor/settingsPanel/secondaryMenu/SecondaryMenu.svelte.d.ts +14 -0
- package/components/apps/editor/settingsPanel/secondaryMenu/index.d.ts +2 -0
- package/components/apps/editor/settingsPanel/secondaryMenu/index.js +2 -0
- package/components/apps/editor/settingsPanel/secondaryMenu/menuStore.d.ts +13 -0
- package/components/apps/editor/settingsPanel/secondaryMenu/menuStore.js +16 -0
- package/components/apps/editor/settingsPanel/triggerLists/BackgroundScriptTriggerList.svelte +31 -0
- package/components/apps/editor/settingsPanel/triggerLists/BackgroundScriptTriggerList.svelte.d.ts +22 -0
- package/components/apps/editor/settingsPanel/triggerLists/ComponentTriggerList.svelte +24 -0
- package/components/apps/editor/settingsPanel/triggerLists/ComponentTriggerList.svelte.d.ts +21 -0
- package/components/apps/editor/settingsPanel/triggerLists/TriggerBadgesList.svelte +156 -0
- package/components/apps/editor/settingsPanel/triggerLists/TriggerBadgesList.svelte.d.ts +22 -0
- package/components/apps/editor/settingsPanel/triggerLists/triggerListUtils.d.ts +2 -0
- package/components/apps/editor/settingsPanel/triggerLists/triggerListUtils.js +11 -0
- package/components/apps/gridUtils.d.ts +3 -3
- package/components/apps/gridUtils.js +6 -18
- package/components/apps/inputType.d.ts +48 -15
- package/components/apps/rx.d.ts +11 -7
- package/components/apps/rx.js +45 -19
- package/components/apps/store.d.ts +6 -1
- package/components/apps/svelte-grid/Grid.svelte +179 -0
- package/components/apps/svelte-grid/Grid.svelte.d.ts +50 -0
- package/components/apps/svelte-grid/LICENSE +23 -0
- package/components/apps/svelte-grid/MoveResize.svelte +343 -0
- package/components/apps/svelte-grid/MoveResize.svelte.d.ts +48 -0
- package/components/apps/svelte-grid/types.d.ts +15 -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 +9 -0
- package/components/apps/svelte-grid/utils/helper.js +29 -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 +91 -59
- package/components/apps/types.js +1 -1
- package/components/apps/utils.d.ts +9 -6
- package/components/apps/utils.js +109 -97
- 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/Button.svelte +12 -5
- package/components/common/button/Button.svelte.d.ts +3 -1
- package/components/common/button/ButtonPopup.svelte +7 -2
- package/components/common/button/ButtonPopup.svelte.d.ts +7 -2
- package/components/common/button/ButtonPopupItem.svelte +2 -1
- package/components/common/button/ButtonPopupItem.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/button/model.d.ts +2 -2
- package/components/common/button/model.js +21 -6
- package/components/common/clearableInput/ClearableInput.svelte +56 -0
- package/components/common/clearableInput/ClearableInput.svelte.d.ts +28 -0
- package/components/common/confirmationModal/ConfirmationModal.svelte +8 -1
- package/components/common/confirmationModal/UnsavedConfirmationModal.svelte +4 -4
- package/components/common/drawer/Drawer.svelte +13 -5
- package/components/common/drawer/Drawer.svelte.d.ts +3 -1
- package/components/common/drawer/DrawerContent.svelte +2 -7
- package/components/common/fileInput/FileInput.svelte +138 -0
- package/components/common/fileInput/FileInput.svelte.d.ts +29 -0
- package/components/common/fileInput/model.d.ts +1 -0
- package/components/common/fileInput/model.js +1 -0
- package/components/common/index.d.ts +3 -0
- package/components/common/index.js +3 -0
- package/components/common/kbd/Kbd.svelte +4 -1
- package/components/common/kbd/Kbd.svelte.d.ts +7 -15
- 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 +11 -4
- package/components/common/menu/Menu.svelte.d.ts +5 -1
- package/components/common/modal/AlwaysMountedModal.svelte +109 -0
- package/components/common/modal/AlwaysMountedModal.svelte.d.ts +22 -0
- package/components/common/modal/Modal.svelte +79 -0
- package/components/common/modal/Modal.svelte.d.ts +24 -0
- package/components/common/popup/Popup.svelte +35 -17
- package/components/common/popup/Popup.svelte.d.ts +20 -4
- package/components/common/skeleton/Skeleton.svelte +1 -1
- package/components/common/table/AppRow.svelte +14 -8
- package/components/common/table/AppRow.svelte.d.ts +1 -0
- package/components/common/table/FlowRow.svelte +41 -12
- package/components/common/table/FlowRow.svelte.d.ts +1 -0
- package/components/common/table/LanguageBadge.svelte +10 -4
- package/components/common/table/Row.svelte +1 -1
- package/components/common/table/ScriptRow.svelte +45 -16
- 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 +12 -8
- package/components/common/tabs/Tabs.svelte.d.ts +6 -2
- package/components/flows/CreateActionsFlow.svelte +2 -3
- package/components/flows/FlowEditor.svelte +6 -4
- package/components/flows/common/FlowCardHeader.svelte +4 -1
- package/components/flows/content/BranchPredicateEditor.svelte +13 -12
- package/components/flows/content/CapturePayload.svelte +4 -5
- 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/FlowInputs.svelte +109 -99
- package/components/flows/content/FlowLoop.svelte +4 -5
- package/components/flows/content/FlowModuleComponent.svelte +26 -13
- 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/FlowRetries.svelte +8 -6
- package/components/flows/content/FlowSchedules.svelte +1 -2
- package/components/flows/content/FlowSettings.svelte +77 -51
- 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 -2
- package/components/flows/flowState.js +1 -3
- package/components/flows/flowStateUtils.d.ts +7 -6
- package/components/flows/flowStateUtils.js +17 -12
- package/components/flows/flowStore.d.ts +5 -3
- package/components/flows/flowStore.js +6 -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 +163 -130
- package/components/flows/map/FlowModuleSchemaMap.svelte.d.ts +1 -1
- package/components/flows/map/FlowSettingsItem.svelte +5 -4
- package/components/flows/map/InsertModuleButton.svelte +34 -18
- package/components/flows/map/InsertModuleButton.svelte.d.ts +2 -0
- package/components/flows/map/MapItem.svelte +176 -101
- 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 +17 -11
- package/components/graph/FlowGraph.svelte +245 -164
- 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 +227 -0
- package/components/graph/svelvet/container/views/GraphView.svelte.d.ts +22 -0
- package/components/graph/svelvet/container/views/Svelvet.svelte +115 -0
- package/components/graph/svelvet/container/views/Svelvet.svelte.d.ts +33 -0
- package/components/graph/svelvet/customCss/controllers/getCss.d.ts +2 -0
- package/components/graph/svelvet/customCss/controllers/getCss.js +46 -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 +71 -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 +74 -0
- package/components/graph/svelvet/nodes/models/Node.js +157 -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/store/controllers/storeApi.d.ts +32 -0
- package/components/graph/svelvet/store/controllers/storeApi.js +106 -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 +24 -0
- package/components/graph/svelvet/store/controllers/util.js +148 -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 +129 -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/icons/SquareIcon.svelte +9 -0
- package/components/icons/SquareIcon.svelte.d.ts +17 -0
- package/components/icons/index.d.ts +2 -0
- package/components/icons/index.js +2 -0
- package/components/jobs/JobDetail.svelte +40 -5
- package/components/propertyPicker/ObjectViewer.svelte +20 -16
- package/components/propertyPicker/ObjectViewer.svelte.d.ts +1 -0
- package/components/propertyPicker/PropPicker.svelte +12 -2
- package/components/propertyPicker/PropPickerResult.svelte +1 -1
- package/components/random_positive_adjetive.d.ts +1 -0
- package/components/random_positive_adjetive.js +961 -0
- package/components/scriptEditor/LogPanel.svelte +5 -4
- package/components/sidebar/SidebarContent.svelte +3 -3
- package/components/sidebar/UserMenu.svelte +46 -16
- package/components/sidebar/UserMenu.svelte.d.ts +0 -3
- package/components/sidebar/WorkspaceMenu.svelte +3 -1
- package/components/sidebar/settings.d.ts +2 -0
- package/components/sidebar/settings.js +2 -0
- package/consts.d.ts +1 -0
- package/consts.js +1 -0
- package/defaults.d.ts +4 -0
- package/defaults.js +4 -0
- package/gen/core/OpenAPI.js +1 -1
- package/gen/models/CompletedJob.d.ts +1 -0
- package/gen/models/QueuedJob.d.ts +1 -0
- package/gen/models/WorkerPing.d.ts +1 -1
- package/gen/services/FlowService.d.ts +9 -0
- package/gen/services/FlowService.js +15 -0
- package/gen/services/JobService.d.ts +82 -15
- package/gen/services/JobService.js +56 -14
- package/gen/services/ScriptService.d.ts +10 -1
- package/gen/services/ScriptService.js +16 -1
- package/gen/services/VariableService.d.ts +4 -2
- package/gen/services/VariableService.js +8 -2
- package/gen/services/WorkspaceService.d.ts +17 -0
- package/gen/services/WorkspaceService.js +16 -0
- package/history.d.ts +9 -0
- package/history.js +63 -0
- package/infer.js +9 -1
- package/init_scripts/python_failure_module.py +10 -0
- package/init_scripts/python_init_code.py +37 -0
- package/init_scripts/python_init_code_clear.py +5 -0
- package/init_scripts/python_init_code_trigger.py +14 -0
- package/logout.js +2 -1
- package/package.json +673 -522
- package/script_helpers.d.ts +6 -5
- package/script_helpers.js +8 -73
- package/scripts.d.ts +1 -1
- package/scripts.js +8 -1
- package/stores.d.ts +5 -1
- package/stores.js +8 -1
- package/user.d.ts +1 -1
- package/user.js +14 -8
- package/utils.d.ts +13 -5
- package/utils.js +59 -14
- package/components/apps/components/DisplayComponent.svelte +0 -16
- package/components/apps/components/DisplayComponent.svelte.d.ts +0 -20
- package/components/apps/components/dataDisplay/AppHtml.svelte +0 -35
- package/components/apps/components/dataDisplay/AppText.svelte +0 -86
- package/components/apps/components/dataDisplay/VegaLiteHtml.svelte +0 -28
- package/components/apps/components/dateInputs/AppDateInput.svelte +0 -34
- package/components/apps/components/numberInputs/AppNumberInput.svelte +0 -33
- package/components/apps/components/numberInputs/AppSliderInputs.svelte +0 -37
- package/components/apps/components/selectInputs/AppCheckbox.svelte +0 -32
- package/components/apps/components/selectInputs/AppSelect.svelte +0 -47
- package/components/apps/components/table/AppTable.svelte +0 -188
- package/components/apps/components/textInputs/AppTextInput.svelte +0 -31
- package/components/apps/editor/ComponentEditor.svelte +0 -138
- package/components/apps/editor/ComponentEditor.svelte.d.ts +0 -23
- package/components/apps/editor/TablePanel.svelte +0 -17
- package/components/apps/editor/TablePanel.svelte.d.ts +0 -17
- package/components/apps/editor/componentsPanel/componentStaticValues.d.ts +0 -7
- package/components/apps/editor/componentsPanel/componentStaticValues.js +0 -9
- package/components/apps/editor/componentsPanel/data.d.ts +0 -3
- package/components/apps/editor/componentsPanel/data.js +0 -465
- package/components/apps/editorUtils.d.ts +0 -1
- package/components/apps/editorUtils.js +0 -253
- 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
- /package/components/apps/components/{table → display/table}/tableOptions.d.ts +0 -0
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
<script>const pkStringGenerator = () => (Math.random() + 1).toString(36).substring(7);
|
|
2
|
+
import { createStoreEmpty, populateSvelvetStoreFromUserInput } from '../../store/controllers/storeApi';
|
|
3
|
+
import { afterUpdate, onMount } from 'svelte';
|
|
4
|
+
import GraphView from './GraphView.svelte';
|
|
5
|
+
import { sanitizeCanvasOptions, sanitizeUserNodesAndEdges } from '../controllers/middleware';
|
|
6
|
+
export let nodes; // TODO: update type to make possible user id being a number
|
|
7
|
+
export let edges; // TODO: update type to make possible user id being a number
|
|
8
|
+
export let bgColor = '#ffffff'; // this is used to set the background color of the the Svelvet canvas
|
|
9
|
+
export let width = 600;
|
|
10
|
+
export let height = 600;
|
|
11
|
+
export let background = true;
|
|
12
|
+
export let movement = true;
|
|
13
|
+
export let canvasId = pkStringGenerator();
|
|
14
|
+
export let snap = false;
|
|
15
|
+
export let snapTo = 30;
|
|
16
|
+
export let nodeCreate = false;
|
|
17
|
+
export let boundary = false;
|
|
18
|
+
export let collapsible = false;
|
|
19
|
+
export let locked = false; // if true, node movement is disabled
|
|
20
|
+
export let editable = false;
|
|
21
|
+
export let highlightEdges = true;
|
|
22
|
+
export let scroll = false;
|
|
23
|
+
// generates a unique string for each svelvet component's unique store instance
|
|
24
|
+
// creates a store that uses the unique sting as the key to create and look up the corresponding store
|
|
25
|
+
// this way we can have multiple Svelvet Components on the same page and prevent overlap of information
|
|
26
|
+
const store = createStoreEmpty(canvasId);
|
|
27
|
+
// stores (state) within stores, so that we cannot access values from everywhere
|
|
28
|
+
// const { widthStore, heightStore, nodesStore, derivedEdges } = svelvetStore;
|
|
29
|
+
let error = '';
|
|
30
|
+
// sets the state of the store to the values passed in from the Svelvet Component on initial render
|
|
31
|
+
onMount(() => {
|
|
32
|
+
try {
|
|
33
|
+
// sanitize user input
|
|
34
|
+
let output = sanitizeUserNodesAndEdges(nodes, edges);
|
|
35
|
+
const userNodes = output['userNodes'];
|
|
36
|
+
const userEdges = output['userEdges'];
|
|
37
|
+
// set canvas related stores. you need to do this before setting node/edge related stores because
|
|
38
|
+
// initializing nodes/edges might read relevant options from the store.
|
|
39
|
+
store.widthStore.set(width);
|
|
40
|
+
store.heightStore.set(height);
|
|
41
|
+
store.backgroundStore.set(background);
|
|
42
|
+
store.movementStore.set(movement);
|
|
43
|
+
const optionsObj = { snap, snapTo }; // TODO: rename to snap
|
|
44
|
+
store.options.set(optionsObj); //
|
|
45
|
+
store.nodeCreate.set(nodeCreate);
|
|
46
|
+
store.boundary.set(boundary);
|
|
47
|
+
store.collapsibleOption.set(collapsible);
|
|
48
|
+
store.lockedOption.set(locked);
|
|
49
|
+
store.editableOption.set(editable);
|
|
50
|
+
store.highlightEdgesOption.set(highlightEdges);
|
|
51
|
+
// make sure that all canvas options are compatible
|
|
52
|
+
sanitizeCanvasOptions(store);
|
|
53
|
+
// set node/edge related stores
|
|
54
|
+
populateSvelvetStoreFromUserInput(canvasId, userNodes, userEdges);
|
|
55
|
+
error = '';
|
|
56
|
+
}
|
|
57
|
+
catch (e) {
|
|
58
|
+
error = 'There was an error displaying the flow. Please report the error.' + e.message;
|
|
59
|
+
console.error(e);
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
// // enables data reactivity. TODO: this needs to be added back in
|
|
63
|
+
// Probably need to use findStore, not create store
|
|
64
|
+
afterUpdate(() => {
|
|
65
|
+
try {
|
|
66
|
+
// sanitize user input
|
|
67
|
+
let output = sanitizeUserNodesAndEdges(nodes, edges);
|
|
68
|
+
const userNodes = output['userNodes'];
|
|
69
|
+
const userEdges = output['userEdges'];
|
|
70
|
+
// set canvas related stores. you need to do this before setting node/edge related stores because
|
|
71
|
+
// initializing nodes/edges might read relevant options from the store.
|
|
72
|
+
store.widthStore.set(width);
|
|
73
|
+
store.heightStore.set(height);
|
|
74
|
+
store.backgroundStore.set(background);
|
|
75
|
+
store.movementStore.set(movement);
|
|
76
|
+
const optionsObj = { snap, snapTo }; // TODO: rename to snap
|
|
77
|
+
store.options.set(optionsObj); //
|
|
78
|
+
store.nodeCreate.set(nodeCreate);
|
|
79
|
+
store.boundary.set(boundary);
|
|
80
|
+
store.collapsibleOption.set(collapsible);
|
|
81
|
+
store.lockedOption.set(locked);
|
|
82
|
+
store.editableOption.set(editable);
|
|
83
|
+
store.highlightEdgesOption.set(highlightEdges);
|
|
84
|
+
// make sure that all canvas options are compatible
|
|
85
|
+
sanitizeCanvasOptions(store);
|
|
86
|
+
// set node/edge related stores
|
|
87
|
+
populateSvelvetStoreFromUserInput(canvasId, userNodes, userEdges);
|
|
88
|
+
error = '';
|
|
89
|
+
}
|
|
90
|
+
catch (e) {
|
|
91
|
+
error = 'There was an error displaying the flow. Please report the error.' + e.message;
|
|
92
|
+
console.error(e);
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
</script>
|
|
96
|
+
|
|
97
|
+
<!-- Now that a store has been created from the initial nodes and initial edges we drill props from the store down to the D3 GraphView along with the unique key -->
|
|
98
|
+
<div
|
|
99
|
+
class="Svelvet"
|
|
100
|
+
style={`width: ${width}px; height: ${height}px; background-color: ${bgColor};`}
|
|
101
|
+
>
|
|
102
|
+
{#if error != ''}
|
|
103
|
+
<div class="error text-red-600 center-center p-4">{error}</div>
|
|
104
|
+
{:else}
|
|
105
|
+
<GraphView {scroll} {canvasId} {width} {height} {boundary} />
|
|
106
|
+
{/if}
|
|
107
|
+
</div>
|
|
108
|
+
|
|
109
|
+
<style>
|
|
110
|
+
.Svelvet {
|
|
111
|
+
position: relative;
|
|
112
|
+
overflow: hidden;
|
|
113
|
+
display: grid;
|
|
114
|
+
font-family: 'Segoe UI', sans-serif;
|
|
115
|
+
}</style>
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { SvelteComponentTyped } from "svelte";
|
|
2
|
+
import type { UserEdgeType, UserNodeType } from '../../types/types';
|
|
3
|
+
declare const __propDef: {
|
|
4
|
+
props: {
|
|
5
|
+
nodes: UserNodeType[];
|
|
6
|
+
edges: UserEdgeType[];
|
|
7
|
+
bgColor?: string | undefined;
|
|
8
|
+
width?: number | undefined;
|
|
9
|
+
height?: number | undefined;
|
|
10
|
+
background?: boolean | undefined;
|
|
11
|
+
movement?: boolean | undefined;
|
|
12
|
+
canvasId?: string | undefined;
|
|
13
|
+
snap?: boolean | undefined;
|
|
14
|
+
snapTo?: number | undefined;
|
|
15
|
+
nodeCreate?: boolean | undefined;
|
|
16
|
+
boundary?: boolean | undefined;
|
|
17
|
+
collapsible?: boolean | undefined;
|
|
18
|
+
locked?: boolean | undefined;
|
|
19
|
+
editable?: boolean | undefined;
|
|
20
|
+
highlightEdges?: boolean | undefined;
|
|
21
|
+
scroll?: boolean | undefined;
|
|
22
|
+
};
|
|
23
|
+
events: {
|
|
24
|
+
[evt: string]: CustomEvent<any>;
|
|
25
|
+
};
|
|
26
|
+
slots: {};
|
|
27
|
+
};
|
|
28
|
+
export type SvelvetProps = typeof __propDef.props;
|
|
29
|
+
export type SvelvetEvents = typeof __propDef.events;
|
|
30
|
+
export type SvelvetSlots = typeof __propDef.slots;
|
|
31
|
+
export default class Svelvet extends SvelteComponentTyped<SvelvetProps, SvelvetEvents, SvelvetSlots> {
|
|
32
|
+
}
|
|
33
|
+
export {};
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
// Required for "custom css" feature
|
|
2
|
+
// WHAT: For a given node with a user-defined classname, see if there are any css properties for height and width
|
|
3
|
+
// Get that height and width and set properties in node store. This is necessary for
|
|
4
|
+
export const forceCssHeightAndWidth = (store, node) => {
|
|
5
|
+
let width, height, innerText;
|
|
6
|
+
// Look through each CSS rule to find the one the user defined
|
|
7
|
+
for (let i = 0; i < document.styleSheets.length; i++) {
|
|
8
|
+
const styleSheet = document.styleSheets[i];
|
|
9
|
+
const styleRules = styleSheet.cssRules;
|
|
10
|
+
for (let j = 0; j < styleRules.length; j++) {
|
|
11
|
+
const rule = styleRules[j];
|
|
12
|
+
// this is necessary to get rid of typescript warning for rule.selectorText
|
|
13
|
+
if (!(rule instanceof CSSStyleRule))
|
|
14
|
+
continue;
|
|
15
|
+
if (rule.selectorText === `.${node.className}`) {
|
|
16
|
+
const initialText = rule.cssText; // getting the full text of the CSS rule
|
|
17
|
+
const i = initialText.indexOf('{'); // finding index of first bracket
|
|
18
|
+
innerText = initialText.substring(i + 1, initialText.length - 1); // extracting the CSS to insert into inline style
|
|
19
|
+
// Adjusting the width and height if they are set via the custom class
|
|
20
|
+
const arr = innerText.split(' ');
|
|
21
|
+
arr.forEach((str, i) => {
|
|
22
|
+
if (str === 'width:') {
|
|
23
|
+
width = str.concat(arr[i + 1]); // go through the array and join width and the number
|
|
24
|
+
const w = parseInt(arr[i + 1]); // getting the number for the width
|
|
25
|
+
width = w;
|
|
26
|
+
}
|
|
27
|
+
if (str === 'height:') {
|
|
28
|
+
height = str.concat(arr[i + 1]); // same as with the width
|
|
29
|
+
const h = parseInt(arr[i + 1]);
|
|
30
|
+
height = h;
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
// update the width/height of the node
|
|
37
|
+
store.nodesStore.update((nodes) => {
|
|
38
|
+
if (width !== undefined)
|
|
39
|
+
nodes[node.id].width = width;
|
|
40
|
+
if (height !== undefined)
|
|
41
|
+
nodes[node.id].height = height;
|
|
42
|
+
return { ...nodes };
|
|
43
|
+
});
|
|
44
|
+
// move the node a bit to force update to anchors, potential anchors
|
|
45
|
+
node.setPositionFromMovement(0, 0);
|
|
46
|
+
};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ZoomBehavior } from 'd3-zoom';
|
|
2
|
+
export declare function zoomInit(d3: any, canvasId: any, d3Zoom: any, d3Translate: any, initialLocation: any, initialZoom: any, d3Scale: any): any;
|
|
3
|
+
export declare function determineD3Instance(boundary: any, d3: {
|
|
4
|
+
zoom: () => ZoomBehavior<any, any>;
|
|
5
|
+
}, nodeSelected: any, width: any, height: any, movementStore: any, backgroundStore: any, gridSize: any, dotSize: any, canvasId: any, d3Scale: any, handleZoom: any): ZoomBehavior<any, any>;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { get } from 'svelte/store';
|
|
2
|
+
export function zoomInit(d3, canvasId, d3Zoom, d3Translate, initialLocation, initialZoom, d3Scale) {
|
|
3
|
+
//set default zoom logic
|
|
4
|
+
d3.select(`.Edges-${canvasId}`)
|
|
5
|
+
//makes sure translation is default at center coordinates
|
|
6
|
+
.transition()
|
|
7
|
+
.duration(0)
|
|
8
|
+
.call(d3Zoom.translateTo, 0, 0)
|
|
9
|
+
//moves camera to coordinates
|
|
10
|
+
.transition()
|
|
11
|
+
.duration(0)
|
|
12
|
+
.call(d3Zoom.translateTo, initialLocation.x / initialZoom, initialLocation.y / initialZoom)
|
|
13
|
+
// zooms in on selected point
|
|
14
|
+
.transition()
|
|
15
|
+
.duration(0)
|
|
16
|
+
.call(d3Zoom.scaleTo, initialZoom.toFixed(2));
|
|
17
|
+
// updates d3Translate with d3 object with x, y, and k values to be sent down to the minimap to be further calculated further
|
|
18
|
+
d3Translate = d3.zoomIdentity
|
|
19
|
+
.translate(initialLocation.x, initialLocation.y)
|
|
20
|
+
.scale(initialZoom.toFixed(2));
|
|
21
|
+
d3.select(`.Nodes-${canvasId}`)
|
|
22
|
+
.transition()
|
|
23
|
+
.duration(0)
|
|
24
|
+
.call(d3Zoom.translateTo, 0, 0)
|
|
25
|
+
.transition()
|
|
26
|
+
.duration(0)
|
|
27
|
+
.call(d3Zoom.translateTo, initialLocation.x / initialZoom, initialLocation.y / initialZoom)
|
|
28
|
+
.transition()
|
|
29
|
+
.duration(0)
|
|
30
|
+
.call(d3Zoom.scaleTo, initialZoom.toFixed(2));
|
|
31
|
+
// sets D3 scale to current k of object
|
|
32
|
+
d3Scale.set(d3.zoomTransform(d3.select(`.Nodes-${canvasId}`)).k);
|
|
33
|
+
return d3Translate;
|
|
34
|
+
}
|
|
35
|
+
// create d3 instance conditionally based on boundary prop
|
|
36
|
+
export function determineD3Instance(boundary, d3, nodeSelected, width, height, movementStore, backgroundStore, gridSize, dotSize, canvasId, d3Scale, handleZoom) {
|
|
37
|
+
if (boundary) {
|
|
38
|
+
return d3
|
|
39
|
+
.zoom()
|
|
40
|
+
.filter(() => !get(nodeSelected))
|
|
41
|
+
.scaleExtent([0.4, 4]) // limits for zooming in/out
|
|
42
|
+
.translateExtent([
|
|
43
|
+
[0, 0],
|
|
44
|
+
[boundary.x, boundary.y],
|
|
45
|
+
]) // world extent
|
|
46
|
+
.extent([
|
|
47
|
+
[0, 0],
|
|
48
|
+
[width, height],
|
|
49
|
+
])
|
|
50
|
+
.on('zoom', handleZoom);
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
return d3
|
|
54
|
+
.zoom()
|
|
55
|
+
.filter(() => !get(nodeSelected))
|
|
56
|
+
.scaleExtent([0.4, 2])
|
|
57
|
+
.on('zoom', handleZoom);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { AnchorCbType } from '../../edges/types/types';
|
|
2
|
+
import type { StoreType } from '../../store/types/types';
|
|
3
|
+
export declare function fixedCbCreator(store: StoreType, edgeId: string, anchorId: string, userNodeId: string, positionCb: Function): AnchorCbType;
|
|
4
|
+
export declare function dynamicCbCreator(store: StoreType, edgeId: string, anchorId: string): AnchorCbType;
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { rightCb, leftCb, topCb, bottomCb } from './anchorCbUser'; // these are callbacks used to calculate anchor position relative to node
|
|
2
|
+
import { getAnchors } from './util';
|
|
3
|
+
import { getNodeById } from '../../nodes/controllers/util';
|
|
4
|
+
export function fixedCbCreator(store, edgeId, anchorId, userNodeId, positionCb // positionCb should be a function that takes 4 arguments (x,y,width,height) and returns a 3-array [x,y,angle] that represents the x,y position of the anchor as well as it's angle with respect to it's node.
|
|
5
|
+
) {
|
|
6
|
+
const rn = fixedCb;
|
|
7
|
+
rn.type = 'fixed';
|
|
8
|
+
return rn;
|
|
9
|
+
function fixedCb() {
|
|
10
|
+
// get the two anchors
|
|
11
|
+
const anchors = getAnchors(store, { edgeId: edgeId });
|
|
12
|
+
if (anchors.length !== 2)
|
|
13
|
+
throw `there should be two anchors per edge, have: ${anchors.length}`;
|
|
14
|
+
let [anchorSelf, anchorOther] = anchors;
|
|
15
|
+
if (anchorSelf.id !== anchorId)
|
|
16
|
+
[anchorSelf, anchorOther] = [anchorOther, anchorSelf];
|
|
17
|
+
const node = getNodeById(store, userNodeId);
|
|
18
|
+
const { positionX, positionY, width, height } = node;
|
|
19
|
+
const [x, y, angle] = positionCb(positionX, positionY, width, height);
|
|
20
|
+
anchorSelf.positionX = x;
|
|
21
|
+
anchorSelf.positionY = y;
|
|
22
|
+
anchorSelf.angle = angle;
|
|
23
|
+
// update the other anchor if it is a dynamic anchor
|
|
24
|
+
// Note dyanamic anchor callbacks have a check that prevents an infinite loop
|
|
25
|
+
if (anchorOther.callback.type === 'dynamic')
|
|
26
|
+
anchorOther.callback();
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export function dynamicCbCreator(store, edgeId, anchorId) {
|
|
30
|
+
const rn = dynamicCb;
|
|
31
|
+
rn.type = 'dynamic';
|
|
32
|
+
return rn;
|
|
33
|
+
function dynamicCb() {
|
|
34
|
+
// get the two anchors
|
|
35
|
+
const anchors = getAnchors(store, { edgeId: edgeId });
|
|
36
|
+
if (anchors.length !== 2)
|
|
37
|
+
throw `there should be two anchors per edge, have: ${anchors.length}`;
|
|
38
|
+
let [anchorSelf, anchorOther] = anchors;
|
|
39
|
+
if (anchorSelf.id !== anchorId)
|
|
40
|
+
[anchorSelf, anchorOther] = [anchorOther, anchorSelf];
|
|
41
|
+
// get the two nodes
|
|
42
|
+
const nodeSelf = getNodeById(store, anchorSelf.nodeId);
|
|
43
|
+
const nodeOther = getNodeById(store, anchorOther.nodeId);
|
|
44
|
+
// get the midpoints
|
|
45
|
+
const [xSelf, ySelf, xOther, yOther] = [
|
|
46
|
+
nodeSelf.positionX + nodeSelf.width / 2,
|
|
47
|
+
nodeSelf.positionY + nodeSelf.height / 2,
|
|
48
|
+
nodeOther.positionX + nodeOther.width / 2,
|
|
49
|
+
nodeOther.positionY + nodeOther.height / 2,
|
|
50
|
+
];
|
|
51
|
+
// record angle for later. We use this so we don't have an infinite loop
|
|
52
|
+
let prevAngle = anchorSelf.angle;
|
|
53
|
+
// calculate the slope
|
|
54
|
+
const slope = (ySelf - yOther) / (xSelf - xOther);
|
|
55
|
+
// slope<1 means -45 to 45 degrees so left/right anchors
|
|
56
|
+
if (Math.abs(slope) < 1) {
|
|
57
|
+
// self node is on the left, other node is on the right
|
|
58
|
+
if (nodeSelf.positionX < nodeOther.positionX) {
|
|
59
|
+
const [selfX, selfY] = rightCb(nodeSelf.positionX, nodeSelf.positionY, nodeSelf.width, nodeSelf.height);
|
|
60
|
+
const [otherX, otherY] = leftCb(nodeOther.positionX, nodeOther.positionY, nodeOther.width, nodeOther.height);
|
|
61
|
+
anchorSelf.setPosition(selfX, selfY);
|
|
62
|
+
anchorSelf.angle = 0; // if the self node is on the left, the anchor should have orientation of 0 degrees on the unit circle
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
// in this case, the self node is on the right and the other node is on the left
|
|
66
|
+
const [selfX, selfY] = leftCb(nodeSelf.positionX, nodeSelf.positionY, nodeSelf.width, nodeSelf.height);
|
|
67
|
+
const [otherX, otherY] = rightCb(nodeOther.positionX, nodeOther.positionY, nodeOther.width, nodeOther.height);
|
|
68
|
+
anchorSelf.setPosition(selfX, selfY);
|
|
69
|
+
anchorSelf.angle = 180;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
if (nodeSelf.positionY < nodeOther.positionY) {
|
|
74
|
+
// here the self node is above the other node
|
|
75
|
+
const [selfX, selfY] = bottomCb(nodeSelf.positionX, nodeSelf.positionY, nodeSelf.width, nodeSelf.height);
|
|
76
|
+
const [otherX, otherY] = topCb(nodeOther.positionX, nodeOther.positionY, nodeOther.width, nodeOther.height);
|
|
77
|
+
anchorSelf.setPosition(selfX, selfY);
|
|
78
|
+
anchorSelf.angle = 270;
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
const [selfX, selfY] = topCb(nodeSelf.positionX, nodeSelf.positionY, nodeSelf.width, nodeSelf.height);
|
|
82
|
+
const [otherX, otherY] = bottomCb(nodeOther.positionX, nodeOther.positionY, nodeOther.width, nodeOther.height);
|
|
83
|
+
anchorSelf.setPosition(selfX, selfY);
|
|
84
|
+
anchorSelf.angle = 90;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
// if the anchor changed position, then do operation for other anchor
|
|
88
|
+
// otherwise, don't do anything. This check is so we don't have an infinite loop
|
|
89
|
+
if (prevAngle !== anchorSelf.angle)
|
|
90
|
+
anchorOther.callback();
|
|
91
|
+
}
|
|
92
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* These are callbacks used to define anchor positions relative to the node they are attached to.
|
|
3
|
+
* These may be provided to developers as examples of how to write their own custom callbacks for adjustable anchors
|
|
4
|
+
* It calculates the position of an anchor (x,y) coordinates given a node parameterized by (x,y,width, height)
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* @function rightCb - This is a callback function to define the anchor position on the node to be on the right side of the node.
|
|
8
|
+
* @param xNode - positionX of the attached node
|
|
9
|
+
* @param yNode - positionY of the attached node
|
|
10
|
+
* @param widthNode - width of the attached node
|
|
11
|
+
* @param heightNode - height of the attached node
|
|
12
|
+
* @returns [xAnchor, yAnchor, 0]
|
|
13
|
+
* xAnchor - positionX for the anchor
|
|
14
|
+
* yAnchor - positionY for the anchor
|
|
15
|
+
* 0 - this is angle of the anchor with respect to the node. The right anchor should fall at 0 degrees on the unit circle.
|
|
16
|
+
* @export rightCb
|
|
17
|
+
*/
|
|
18
|
+
export declare const rightCb: (xNode: number, yNode: number, widthNode: number, heightNode: number) => number[];
|
|
19
|
+
/**
|
|
20
|
+
* @function leftCb - This is a callback function to define the anchor position on the node to be on the left side of the node.
|
|
21
|
+
* @param xNode - positionX of the attached node
|
|
22
|
+
* @param yNode - positionY of the attached node
|
|
23
|
+
* @param widthNode - width of the attached node
|
|
24
|
+
* @param heightNode - height of the attached node
|
|
25
|
+
* @returns [xAnchor, yAnchor, 180]
|
|
26
|
+
* xAnchor - positionX for the anchor
|
|
27
|
+
* yAnchor - positionY for the anchor
|
|
28
|
+
* 180 - this is angle of the anchor with respect to the node. The left anchor should fall at 180 degrees on the unit circle.
|
|
29
|
+
* @export leftCb
|
|
30
|
+
*/
|
|
31
|
+
export declare const leftCb: (xNode: number, yNode: number, widthNode: number, heightNode: number) => number[];
|
|
32
|
+
/**
|
|
33
|
+
* @function topCb - This is a callback function to define the anchor position on the node to be on the top of the node.
|
|
34
|
+
* @param xNode - positionX of the attached node
|
|
35
|
+
* @param yNode - positionY of the attached node
|
|
36
|
+
* @param widthNode - width of the attached node
|
|
37
|
+
* @param heightNode - height of the attached node
|
|
38
|
+
* @returns [xAnchor, yAnchor, 90]
|
|
39
|
+
* xAnchor - positionX for the anchor
|
|
40
|
+
* yAnchor - positionY for the anchor
|
|
41
|
+
* 90 - this is angle of the anchor with respect to the node. The top anchor should fall at 90 degrees on the unit circle.
|
|
42
|
+
* @export topCb
|
|
43
|
+
*/
|
|
44
|
+
export declare const topCb: (xNode: number, yNode: number, widthNode: number, heightNode: number) => number[];
|
|
45
|
+
/**
|
|
46
|
+
* @function bottomCb - This is a callback function to define the anchor position on the node to be on the bottom of the node.
|
|
47
|
+
* @param xNode - positionX of the attached node
|
|
48
|
+
* @param yNode - positionY of the attached node
|
|
49
|
+
* @param widthNode - width of the attached node
|
|
50
|
+
* @param heightNode - height of the attached node
|
|
51
|
+
* @returns - [xAnchor, yAnchor, 90]
|
|
52
|
+
* xAnchor - positionX for the anchor
|
|
53
|
+
* yAnchor - positionY for the anchor
|
|
54
|
+
* 270 - this is angle of the anchor with respect to the node. The bottom anchor should fall at 270 degrees on the unit circle.
|
|
55
|
+
* @export bottomCb
|
|
56
|
+
*/
|
|
57
|
+
export declare const bottomCb: (xNode: number, yNode: number, widthNode: number, heightNode: number) => number[];
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* These are callbacks used to define anchor positions relative to the node they are attached to.
|
|
3
|
+
* These may be provided to developers as examples of how to write their own custom callbacks for adjustable anchors
|
|
4
|
+
* It calculates the position of an anchor (x,y) coordinates given a node parameterized by (x,y,width, height)
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* @function rightCb - This is a callback function to define the anchor position on the node to be on the right side of the node.
|
|
8
|
+
* @param xNode - positionX of the attached node
|
|
9
|
+
* @param yNode - positionY of the attached node
|
|
10
|
+
* @param widthNode - width of the attached node
|
|
11
|
+
* @param heightNode - height of the attached node
|
|
12
|
+
* @returns [xAnchor, yAnchor, 0]
|
|
13
|
+
* xAnchor - positionX for the anchor
|
|
14
|
+
* yAnchor - positionY for the anchor
|
|
15
|
+
* 0 - this is angle of the anchor with respect to the node. The right anchor should fall at 0 degrees on the unit circle.
|
|
16
|
+
* @export rightCb
|
|
17
|
+
*/
|
|
18
|
+
export const rightCb = (xNode, yNode, widthNode, heightNode) => {
|
|
19
|
+
const xAnchor = xNode + widthNode;
|
|
20
|
+
const yAnchor = yNode + heightNode / 2;
|
|
21
|
+
return [xAnchor, yAnchor, 0];
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* @function leftCb - This is a callback function to define the anchor position on the node to be on the left side of the node.
|
|
25
|
+
* @param xNode - positionX of the attached node
|
|
26
|
+
* @param yNode - positionY of the attached node
|
|
27
|
+
* @param widthNode - width of the attached node
|
|
28
|
+
* @param heightNode - height of the attached node
|
|
29
|
+
* @returns [xAnchor, yAnchor, 180]
|
|
30
|
+
* xAnchor - positionX for the anchor
|
|
31
|
+
* yAnchor - positionY for the anchor
|
|
32
|
+
* 180 - this is angle of the anchor with respect to the node. The left anchor should fall at 180 degrees on the unit circle.
|
|
33
|
+
* @export leftCb
|
|
34
|
+
*/
|
|
35
|
+
export const leftCb = (xNode, yNode, widthNode, heightNode) => {
|
|
36
|
+
const xAnchor = xNode;
|
|
37
|
+
const yAnchor = yNode + heightNode / 2;
|
|
38
|
+
return [xAnchor, yAnchor, 180];
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* @function topCb - This is a callback function to define the anchor position on the node to be on the top of the node.
|
|
42
|
+
* @param xNode - positionX of the attached node
|
|
43
|
+
* @param yNode - positionY of the attached node
|
|
44
|
+
* @param widthNode - width of the attached node
|
|
45
|
+
* @param heightNode - height of the attached node
|
|
46
|
+
* @returns [xAnchor, yAnchor, 90]
|
|
47
|
+
* xAnchor - positionX for the anchor
|
|
48
|
+
* yAnchor - positionY for the anchor
|
|
49
|
+
* 90 - this is angle of the anchor with respect to the node. The top anchor should fall at 90 degrees on the unit circle.
|
|
50
|
+
* @export topCb
|
|
51
|
+
*/
|
|
52
|
+
export const topCb = (xNode, yNode, widthNode, heightNode) => {
|
|
53
|
+
const xAnchor = xNode + widthNode / 2;
|
|
54
|
+
const yAnchor = yNode;
|
|
55
|
+
return [xAnchor, yAnchor, 90];
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* @function bottomCb - This is a callback function to define the anchor position on the node to be on the bottom of the node.
|
|
59
|
+
* @param xNode - positionX of the attached node
|
|
60
|
+
* @param yNode - positionY of the attached node
|
|
61
|
+
* @param widthNode - width of the attached node
|
|
62
|
+
* @param heightNode - height of the attached node
|
|
63
|
+
* @returns - [xAnchor, yAnchor, 90]
|
|
64
|
+
* xAnchor - positionX for the anchor
|
|
65
|
+
* yAnchor - positionY for the anchor
|
|
66
|
+
* 270 - this is angle of the anchor with respect to the node. The bottom anchor should fall at 270 degrees on the unit circle.
|
|
67
|
+
* @export bottomCb
|
|
68
|
+
*/
|
|
69
|
+
export const bottomCb = (xNode, yNode, widthNode, heightNode) => {
|
|
70
|
+
const xAnchor = xNode + widthNode / 2;
|
|
71
|
+
const yAnchor = yNode + heightNode;
|
|
72
|
+
return [xAnchor, yAnchor, 270];
|
|
73
|
+
};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { StoreType } from '../../store/types/types';
|
|
2
|
+
import type { AnchorType } from '../types/types';
|
|
3
|
+
/**
|
|
4
|
+
* Finds all Anchors that matches the conditions specified in the filter parameter from a Svelvet store and returns these Anchors in an array.
|
|
5
|
+
*
|
|
6
|
+
* @param store The Svelvet store containing the state of a Svelvet component
|
|
7
|
+
* @param filter An object to specify conditions. Example: if filter = \{ sourceOrTarget: 'source', positionX: 35 \} then we will return all anchors with sourceOrTarget = source AND poxitionX = 35
|
|
8
|
+
* @returns An array of Anchors that matches the conditions specified in the filter parameter
|
|
9
|
+
*/
|
|
10
|
+
export declare function getAnchors(store: StoreType, filter?: {
|
|
11
|
+
[key: string]: any;
|
|
12
|
+
}): AnchorType[];
|
|
13
|
+
/**
|
|
14
|
+
* Gets one anchor (source anchor or target anchor) from a given edge
|
|
15
|
+
*
|
|
16
|
+
* @param store The Svelvet store containing the state of the Svelvet component
|
|
17
|
+
* @param edgeId The id of a given edge
|
|
18
|
+
* @param sourceOrTarget A string of 'source' or 'target' to specify which anchor the function should return
|
|
19
|
+
* @returns The source or target Anchor object of a given edge
|
|
20
|
+
*/
|
|
21
|
+
export declare function getAnchorFromEdge(store: StoreType, edgeId: string, sourceOrTarget: 'source' | 'target'): AnchorType;
|
|
22
|
+
/**
|
|
23
|
+
* getEdgeById will look for the targeted Edge that has the same id provided in the Svelvet component store.
|
|
24
|
+
*
|
|
25
|
+
* @param store The Svelvet store containing the state of a Svelvet component
|
|
26
|
+
* @param id The id of the targeted Node
|
|
27
|
+
* @returns The targeted Edge object in store.edgesStore
|
|
28
|
+
*/
|
|
29
|
+
export declare function getEdgeById(store: StoreType, id: string): import("../../store/types/types").EdgeType;
|
|
30
|
+
/**
|
|
31
|
+
* getAnchorById will look for the targeted Anchor that has the same id in the Svelvet component store.
|
|
32
|
+
*
|
|
33
|
+
* @param store The Svelvet store containing the state of a Svelvet component
|
|
34
|
+
* @param id The id of the targeted Anchor
|
|
35
|
+
* @returns The target Anchor object in store.anchorsStore
|
|
36
|
+
*/
|
|
37
|
+
export declare function getAnchorById(store: StoreType, id: string): AnchorType;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { get } from 'svelte/store';
|
|
2
|
+
/**
|
|
3
|
+
* Finds all Anchors that matches the conditions specified in the filter parameter from a Svelvet store and returns these Anchors in an array.
|
|
4
|
+
*
|
|
5
|
+
* @param store The Svelvet store containing the state of a Svelvet component
|
|
6
|
+
* @param filter An object to specify conditions. Example: if filter = \{ sourceOrTarget: 'source', positionX: 35 \} then we will return all anchors with sourceOrTarget = source AND poxitionX = 35
|
|
7
|
+
* @returns An array of Anchors that matches the conditions specified in the filter parameter
|
|
8
|
+
*/
|
|
9
|
+
export function getAnchors(store, filter) {
|
|
10
|
+
let anchors = Object.values(get(store.anchorsStore));
|
|
11
|
+
// filter the array of anchors for elements that match filter
|
|
12
|
+
// Example: if filter = {sourceOrTarget: 'source', positionX: 35} then we will
|
|
13
|
+
//return all anchors with sourceOrTarget = source AND poxitionX = 35
|
|
14
|
+
if (filter !== undefined) {
|
|
15
|
+
anchors = anchors.filter((anchor) => {
|
|
16
|
+
for (let filterKey in filter) {
|
|
17
|
+
const filterValue = filter[filterKey];
|
|
18
|
+
if (anchor[filterKey] !== filterValue)
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
return true;
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
// return list of anchors
|
|
25
|
+
return anchors;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Gets one anchor (source anchor or target anchor) from a given edge
|
|
29
|
+
*
|
|
30
|
+
* @param store The Svelvet store containing the state of the Svelvet component
|
|
31
|
+
* @param edgeId The id of a given edge
|
|
32
|
+
* @param sourceOrTarget A string of 'source' or 'target' to specify which anchor the function should return
|
|
33
|
+
* @returns The source or target Anchor object of a given edge
|
|
34
|
+
*/
|
|
35
|
+
export function getAnchorFromEdge(store, edgeId, sourceOrTarget) {
|
|
36
|
+
const edge = getEdgeById(store, edgeId);
|
|
37
|
+
const anchors = getAnchors(store, { edgeId: edgeId });
|
|
38
|
+
if (anchors.length !== 2)
|
|
39
|
+
throw `there should be two anchors for a given edge, there are ${anchors.length}`;
|
|
40
|
+
// there should be one source anchor and one target anchor. Return the source anchor
|
|
41
|
+
const anchor = anchors.filter((anchor) => anchor.sourceOrTarget === sourceOrTarget);
|
|
42
|
+
if (anchor.length !== 1)
|
|
43
|
+
throw `there should only be one source/target anchor`;
|
|
44
|
+
return anchor[0];
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* getEdgeById will look for the targeted Edge that has the same id provided in the Svelvet component store.
|
|
48
|
+
*
|
|
49
|
+
* @param store The Svelvet store containing the state of a Svelvet component
|
|
50
|
+
* @param id The id of the targeted Node
|
|
51
|
+
* @returns The targeted Edge object in store.edgesStore
|
|
52
|
+
*/
|
|
53
|
+
export function getEdgeById(store, id) {
|
|
54
|
+
const edgesStore = get(store.edgesStore);
|
|
55
|
+
const edge = edgesStore[id];
|
|
56
|
+
if (edge === undefined)
|
|
57
|
+
throw 'edge not found';
|
|
58
|
+
return edge;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* getAnchorById will look for the targeted Anchor that has the same id in the Svelvet component store.
|
|
62
|
+
*
|
|
63
|
+
* @param store The Svelvet store containing the state of a Svelvet component
|
|
64
|
+
* @param id The id of the targeted Anchor
|
|
65
|
+
* @returns The target Anchor object in store.anchorsStore
|
|
66
|
+
*/
|
|
67
|
+
export function getAnchorById(store, id) {
|
|
68
|
+
const anchorsStore = get(store.anchorsStore);
|
|
69
|
+
const anchor = anchorsStore[id];
|
|
70
|
+
return anchor;
|
|
71
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This is where we create, update the Anchor store.
|
|
3
|
+
*/
|
|
4
|
+
import type { AnchorCbType, AnchorType } from '../../edges/types/types';
|
|
5
|
+
/** Class representing an Anchor that implements Anchortype.
|
|
6
|
+
* @param {string} id The id of the Anchor
|
|
7
|
+
* @param {string} nodeId The id of the Node which the instantiated Anchor will be attached to
|
|
8
|
+
* @param {string} edgeId The id of the Edge which connects to the instantiated Anchor
|
|
9
|
+
* @param {'source' | 'target'} sourceOrTarget Specify the Anchor is a source or target
|
|
10
|
+
* @param {number} positionX The 'X' coordinate of the Anchor
|
|
11
|
+
* @param {number} positionY The 'Y' coordinate of the Anchor
|
|
12
|
+
* @param {function} callback The callback function that will determine the position of this Anchor
|
|
13
|
+
* @param {string} canvasId The canvasId of the Svelvet component that will hold this Anchor
|
|
14
|
+
* @param { number } angle This is the orientation of the anchor and is used to make sure bezier/step curves are rendered perpendicular to the node. Angles are defined along the unit circle. EX: 0 = right side of node, 180 = left side of node.
|
|
15
|
+
*/
|
|
16
|
+
export declare class Anchor implements AnchorType {
|
|
17
|
+
id: string;
|
|
18
|
+
nodeId: string;
|
|
19
|
+
edgeId: string;
|
|
20
|
+
sourceOrTarget: 'source' | 'target';
|
|
21
|
+
positionX: number;
|
|
22
|
+
positionY: number;
|
|
23
|
+
callback: AnchorCbType;
|
|
24
|
+
canvasId: string;
|
|
25
|
+
angle: 0 | 90 | 180 | 270;
|
|
26
|
+
constructor(id: string, nodeId: string, edgeId: string, sourceOrTarget: 'source' | 'target', positionX: number, positionY: number, callback: AnchorCbType, canvasId: string, angle: 0 | 90 | 180 | 270);
|
|
27
|
+
getOtherAnchorId(): string;
|
|
28
|
+
/**
|
|
29
|
+
* setPositionFromNode will invoke the user-defined callback to calculate the position of the Anchor, set the position of the Anchor in the anchorsStore, and also update the Edge position accordingly.
|
|
30
|
+
*/
|
|
31
|
+
setPositionFromNode(): void;
|
|
32
|
+
/**
|
|
33
|
+
* updateEdges will update the edgesStore based on Anchor's change.
|
|
34
|
+
*/
|
|
35
|
+
updateEdges(): void;
|
|
36
|
+
/**
|
|
37
|
+
* setPosition will update the positionX and positionY of the Anchor and also cascade changes to related Edge.
|
|
38
|
+
* @param x The X coordinate of the new position for the Anchor
|
|
39
|
+
* @param y The Y coordinate of the new position for the Anchor
|
|
40
|
+
*/
|
|
41
|
+
setPosition(x: number, y: number): void;
|
|
42
|
+
/**
|
|
43
|
+
* Anchor.setPositionFromMovement works similarly to Anchor.setPosition. But setPosition is more powerful and we recommend using setPosition whenever possible and in the future, setPositionFromMovement can be removed.
|
|
44
|
+
* @param movementX The mouse movement value on the X-axis
|
|
45
|
+
* @param movementY The mouse movement value on the Y-axis
|
|
46
|
+
*/
|
|
47
|
+
setPositionFromMovement(movementX: number, movementY: number): void;
|
|
48
|
+
}
|