windmill-components 1.52.0 → 1.55.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/components/ApiConnectForm.svelte +42 -7
- package/components/ApiConnectForm.svelte.d.ts +2 -1
- package/components/AppConnect.svelte +19 -11
- package/components/ArgInfo.svelte +6 -2
- package/components/ArgInput.svelte +9 -3
- package/components/ArgInput.svelte.d.ts +1 -0
- package/components/CenteredPage.svelte +1 -1
- package/components/CenteredPage.svelte.d.ts +6 -2
- package/components/CronInput.svelte +1 -1
- package/components/DisplayResult.svelte +39 -2
- package/components/Dropdown.svelte +73 -100
- package/components/Dropdown.svelte.d.ts +1 -3
- package/components/Editor.svelte +16 -5
- package/components/EditorBar.svelte +69 -63
- package/components/EditorBar.svelte.d.ts +1 -0
- package/components/FlowBuilder.svelte +74 -68
- package/components/FlowGraphViewer.svelte +136 -34
- package/components/FlowGraphViewer.svelte.d.ts +1 -0
- package/components/FlowJobResult.svelte +6 -1
- package/components/FlowJobResult.svelte.d.ts +2 -0
- package/components/FlowMetadata.svelte +4 -2
- package/components/FlowPreviewContent.svelte +10 -23
- package/components/FlowPreviewContent.svelte.d.ts +3 -0
- package/components/FlowStatusViewer.svelte +155 -30
- package/components/FlowStatusViewer.svelte.d.ts +4 -2
- package/components/FlowViewer.svelte +5 -5
- package/components/FlowViewer.svelte.d.ts +1 -0
- package/components/HighlightCode.svelte +1 -1
- package/components/HighlightCode.svelte.d.ts +1 -0
- package/components/IconedPath.svelte +16 -6
- package/components/IconedPath.svelte.d.ts +2 -0
- package/components/IconedResourceType.svelte +5 -2
- package/components/InputTransformForm.svelte +92 -73
- package/components/InviteGlobalUser.svelte +2 -2
- package/components/InviteGlobalUser.svelte.d.ts +1 -1
- package/components/InviteUser.svelte +20 -6
- package/components/InviteUser.svelte.d.ts +1 -1
- package/components/ItemPicker.svelte +38 -27
- package/components/ItemPicker.svelte.d.ts +2 -1
- package/components/JobStatus.svelte +19 -13
- package/components/LogViewer.svelte +11 -3
- package/components/LogViewer.svelte.d.ts +1 -0
- package/components/ModuleStatus.svelte +38 -0
- package/components/ModuleStatus.svelte.d.ts +18 -0
- package/components/ObjectResourceInput.svelte +8 -52
- package/components/ObjectResourceInput.svelte.d.ts +0 -1
- package/components/Path.svelte +2 -2
- package/components/Path.svelte.d.ts +1 -1
- package/components/Popover.svelte +7 -1
- package/components/Popover.svelte.d.ts +3 -1
- package/components/ResourceEditor.svelte +57 -29
- package/components/ResourcePicker.svelte +12 -2
- package/components/RunForm.svelte +1 -1
- package/components/SchemaEditor.svelte +2 -1
- package/components/SchemaForm.svelte +2 -1
- package/components/SchemaForm.svelte.d.ts +1 -0
- package/components/SchemaModal.svelte +11 -10
- package/components/ScriptBuilder.svelte +207 -192
- package/components/ScriptBuilder.svelte.d.ts +1 -1
- package/components/ScriptEditor.svelte +49 -45
- package/components/ScriptEditor.svelte.d.ts +1 -0
- package/components/ScriptPicker.svelte.d.ts +1 -1
- package/components/ScriptSchema.svelte +11 -30
- package/components/ScriptSchema.svelte.d.ts +0 -1
- package/components/SharedBadge.svelte +2 -3
- package/components/SimpleEditor.svelte +6 -7
- package/components/SimpleEditor.svelte.d.ts +1 -0
- package/components/Star.svelte +2 -2
- package/components/SuperadminSettings.svelte +9 -38
- package/components/TableSimple.svelte +1 -1
- package/components/TestJobLoader.svelte +20 -8
- package/components/ToggleHubWorkspace.svelte +16 -0
- package/components/ToggleHubWorkspace.svelte.d.ts +16 -0
- package/components/Tooltip.svelte.d.ts +1 -1
- package/components/VariableEditor.svelte +22 -9
- package/components/apps/CreateApp.svelte +5 -2
- package/components/apps/CreateApp.svelte.d.ts +1 -1
- package/components/apps/components/DisplayComponent.svelte +7 -14
- package/components/apps/components/DisplayComponent.svelte.d.ts +3 -2
- package/components/apps/components/buttons/AppButton.svelte +34 -27
- package/components/apps/components/buttons/AppButton.svelte.d.ts +6 -6
- package/components/apps/components/dataDisplay/AppBarChart.svelte +33 -9
- package/components/apps/components/dataDisplay/AppBarChart.svelte.d.ts +3 -5
- package/components/apps/components/dataDisplay/AppPieChart.svelte +33 -12
- package/components/apps/components/dataDisplay/AppPieChart.svelte.d.ts +3 -5
- package/components/apps/components/dataDisplay/AppTable.svelte +27 -30
- package/components/apps/components/dataDisplay/AppTable.svelte.d.ts +4 -8
- package/components/apps/components/dataDisplay/AppText.svelte +16 -9
- package/components/apps/components/dataDisplay/AppText.svelte.d.ts +3 -2
- package/components/apps/components/dataDisplay/app.md +49 -0
- package/components/apps/components/form/AppForm.svelte +50 -0
- package/components/apps/components/form/AppForm.svelte.d.ts +25 -0
- package/components/apps/components/helpers/AlignWrapper.svelte +2 -1
- package/components/apps/components/helpers/AlignWrapper.svelte.d.ts +1 -0
- package/components/apps/components/helpers/DebouncedInput.svelte +9 -1
- package/components/apps/components/helpers/DebouncedInput.svelte.d.ts +2 -1
- package/components/apps/components/helpers/InputValue.svelte +15 -6
- package/components/apps/components/helpers/InputValue.svelte.d.ts +2 -2
- package/components/apps/components/helpers/NonRunnableComponent.svelte +20 -0
- package/components/apps/components/helpers/NonRunnableComponent.svelte.d.ts +21 -0
- package/components/apps/components/helpers/RunnableComponent.svelte +36 -30
- package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +6 -7
- package/components/apps/components/helpers/RunnableWrapper.svelte +32 -0
- package/components/apps/components/helpers/RunnableWrapper.svelte.d.ts +26 -0
- package/components/apps/components/numberInputs/AppNumberInput.svelte +36 -0
- package/components/apps/components/numberInputs/AppNumberInput.svelte.d.ts +20 -0
- package/components/apps/components/selectInputs/AppCheckbox.svelte +4 -2
- package/components/apps/components/selectInputs/AppCheckbox.svelte.d.ts +2 -2
- package/components/apps/components/textInputs/AppTextInput.svelte +21 -0
- package/components/apps/components/textInputs/AppTextInput.svelte.d.ts +20 -0
- package/components/apps/editor/AppEditor.svelte +66 -55
- package/components/apps/editor/AppEditorHeader.svelte +4 -4
- package/components/apps/editor/AppPreview.svelte +42 -0
- package/components/apps/editor/AppPreview.svelte.d.ts +17 -0
- package/components/apps/editor/ComponentEditor.svelte +41 -20
- package/components/apps/editor/ComponentEditor.svelte.d.ts +2 -0
- package/components/apps/editor/ComponentHeader.svelte +28 -0
- package/components/apps/editor/ComponentHeader.svelte.d.ts +20 -0
- package/components/apps/editor/GridEditor.svelte +54 -5
- package/components/apps/editor/GridEditor.svelte.d.ts +1 -1
- package/components/apps/editor/RecomputeAllComponents.svelte +28 -0
- package/components/apps/editor/RecomputeAllComponents.svelte.d.ts +14 -0
- package/components/apps/editor/componentsPanel/ComponentList.svelte +94 -26
- package/components/apps/editor/componentsPanel/ComponentList.svelte.d.ts +1 -1
- package/components/apps/editor/componentsPanel/componentDefaultProps.d.ts +2 -6
- package/components/apps/editor/componentsPanel/componentDefaultProps.js +1 -5
- package/components/apps/editor/componentsPanel/componentStaticValues.d.ts +2 -0
- package/components/apps/editor/componentsPanel/componentStaticValues.js +3 -1
- package/components/apps/editor/componentsPanel/data.js +191 -76
- package/components/apps/editor/contextPanel/ContextPanel.svelte +56 -48
- package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +67 -0
- package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte.d.ts +55 -0
- package/components/apps/editor/settingsPanel/ComponentPanel.svelte +154 -129
- package/components/apps/editor/settingsPanel/ConnectedInputEditor.svelte +70 -0
- package/components/apps/editor/settingsPanel/ConnectedInputEditor.svelte.d.ts +17 -0
- package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +6 -6
- package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte.d.ts +2 -2
- package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte +55 -87
- package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte.d.ts +3 -4
- package/components/apps/editor/settingsPanel/PickFlow.svelte +3 -2
- package/components/apps/editor/settingsPanel/PickFlow.svelte.d.ts +1 -1
- package/components/apps/editor/settingsPanel/PickInlineScript.svelte +3 -3
- package/components/apps/editor/settingsPanel/Recompute.svelte +46 -0
- package/components/apps/editor/settingsPanel/Recompute.svelte.d.ts +17 -0
- package/components/apps/editor/settingsPanel/StaticInputEditor.svelte +31 -14
- package/components/apps/editor/settingsPanel/StaticInputEditor.svelte.d.ts +3 -3
- package/components/apps/editor/settingsPanel/SubTypeEditor.svelte +17 -0
- package/components/apps/editor/settingsPanel/SubTypeEditor.svelte.d.ts +19 -0
- package/components/apps/editor/settingsPanel/TableActionLabel.svelte +10 -0
- package/components/apps/editor/settingsPanel/TableActionLabel.svelte.d.ts +17 -0
- package/components/apps/editor/settingsPanel/TableActions.svelte +13 -9
- package/components/apps/editor/settingsPanel/UserInputEditor.svelte.d.ts +1 -1
- package/components/apps/editor/settingsPanel/common/PanelSection.svelte +3 -2
- package/components/apps/editor/settingsPanel/common/PanelSection.svelte.d.ts +1 -0
- package/components/apps/editor/settingsPanel/mainInput/InlineScriptList.svelte +53 -0
- package/components/apps/editor/settingsPanel/mainInput/InlineScriptList.svelte.d.ts +21 -0
- package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte +98 -0
- package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte.d.ts +18 -0
- package/components/apps/editor/settingsPanel/mainInput/WorkspaceFlowList.svelte +81 -0
- package/components/apps/editor/settingsPanel/mainInput/WorkspaceFlowList.svelte.d.ts +20 -0
- package/components/apps/editor/settingsPanel/mainInput/WorkspaceScriptList.svelte +81 -0
- package/components/apps/editor/settingsPanel/mainInput/WorkspaceScriptList.svelte.d.ts +20 -0
- package/components/apps/inputType.d.ts +62 -0
- package/components/apps/inputType.js +1 -0
- package/components/apps/rx.d.ts +4 -4
- package/components/apps/rx.js +16 -4
- package/components/apps/types.d.ts +20 -54
- package/components/apps/utils.d.ts +11 -34
- package/components/apps/utils.js +54 -18
- package/components/common/alert/Alert.svelte +2 -1
- package/components/common/alert/Alert.svelte.d.ts +1 -0
- package/components/common/button/Button.svelte +1 -1
- package/components/common/confirmationModal/UnsavedConfirmationModal.svelte.d.ts +1 -1
- package/components/common/drawer/DrawerContent.svelte +23 -22
- package/components/common/drawer/DrawerContent.svelte.d.ts +1 -3
- package/components/common/kbd/Kbd.svelte.d.ts +2 -2
- package/components/common/languageIcons/LanguageIcon.svelte +4 -2
- package/components/common/languageIcons/LanguageIcon.svelte.d.ts +1 -1
- package/components/common/menu/Menu.svelte +0 -1
- package/components/common/menu/MenuItem.svelte.d.ts +6 -2
- package/components/common/popup/Popup.svelte +0 -13
- package/components/common/popup/Popup.svelte.d.ts +0 -4
- package/components/common/table/AppRow.svelte +42 -26
- package/components/common/table/AppRow.svelte.d.ts +1 -1
- package/components/common/table/FlowRow.svelte +54 -49
- package/components/common/table/LanguageBadge.svelte +1 -1
- package/components/common/table/Row.svelte +27 -16
- package/components/common/table/Row.svelte.d.ts +2 -1
- package/components/common/table/RowIcon.svelte +13 -8
- package/components/common/table/ScriptRow.svelte +65 -57
- package/components/common/table/Table.svelte.d.ts +6 -2
- package/components/flows/CreateActionsFlow.svelte +14 -41
- package/components/flows/CreateActionsFlow.svelte.d.ts +1 -1
- package/components/flows/common/FlowCardHeader.svelte +7 -8
- package/components/flows/content/BranchPredicateEditor.svelte +30 -0
- package/components/flows/content/BranchPredicateEditor.svelte.d.ts +23 -0
- package/components/flows/content/CapturePayload.svelte +12 -8
- package/components/flows/content/DynamicInputHelpBox.svelte.d.ts +1 -1
- package/components/flows/content/FlowBranchAllWrapper.svelte +2 -2
- package/components/flows/content/FlowBranchOneWrapper.svelte +4 -36
- package/components/flows/content/FlowBranchesAllWrapper.svelte +91 -0
- package/components/flows/content/FlowBranchesAllWrapper.svelte.d.ts +18 -0
- package/components/flows/content/FlowBranchesOneWrapper.svelte +88 -0
- package/components/flows/content/FlowBranchesOneWrapper.svelte.d.ts +18 -0
- package/components/flows/content/FlowFailureModule.svelte.d.ts +1 -1
- package/components/flows/content/FlowInput.svelte +1 -2
- package/components/flows/content/FlowInput.svelte.d.ts +1 -1
- package/components/flows/content/FlowInputs.svelte +28 -26
- package/components/flows/content/FlowInputsFlow.svelte +101 -0
- package/components/flows/content/FlowInputsFlow.svelte.d.ts +20 -0
- package/components/flows/content/FlowLoop.svelte +10 -3
- package/components/flows/content/FlowModuleComponent.svelte +46 -35
- package/components/flows/content/FlowModuleEarlyStop.svelte +4 -3
- package/components/flows/content/FlowModuleHeader.svelte +22 -21
- package/components/flows/content/FlowModuleHeader.svelte.d.ts +1 -0
- package/components/flows/content/FlowModuleSleep.svelte +69 -0
- package/components/flows/content/FlowModuleSleep.svelte.d.ts +18 -0
- package/components/flows/content/FlowModuleSuspend.svelte +5 -63
- package/components/flows/content/FlowModuleSuspend.svelte.d.ts +0 -1
- package/components/flows/content/FlowModuleWrapper.svelte +59 -35
- package/components/flows/content/FlowPathViewer.svelte +20 -0
- package/components/flows/content/FlowPathViewer.svelte.d.ts +17 -0
- package/components/flows/content/FlowSchedules.svelte.d.ts +1 -1
- package/components/flows/content/FlowSettings.svelte +11 -13
- package/components/flows/flowState.js +2 -2
- package/components/flows/flowStateUtils.d.ts +7 -3
- package/components/flows/flowStateUtils.js +29 -8
- package/components/flows/header/FlowImportExportMenu.svelte.d.ts +1 -1
- package/components/flows/header/FlowPreviewButtons.svelte +17 -11
- package/components/flows/header/FlowPreviewButtons.svelte.d.ts +1 -1
- package/components/flows/map/FlowErrorHandlerItem.svelte +5 -5
- package/components/flows/map/FlowErrorHandlerItem.svelte.d.ts +1 -1
- package/components/flows/map/FlowInputsItem.svelte.d.ts +1 -1
- package/components/flows/map/FlowModuleSchemaItem.svelte +30 -11
- package/components/flows/map/FlowModuleSchemaMap.svelte +26 -20
- package/components/flows/map/FlowModuleSchemaMap.svelte.d.ts +1 -1
- package/components/flows/map/FlowSettingsItem.svelte +1 -1
- package/components/flows/map/FlowSettingsItem.svelte.d.ts +1 -1
- package/components/flows/map/InsertModuleButton.svelte +20 -4
- package/components/flows/map/InsertModuleButton.svelte.d.ts +1 -1
- package/components/flows/map/MapItem.svelte +11 -5
- package/components/flows/pickers/FlowScriptPicker.svelte.d.ts +1 -1
- package/components/flows/pickers/PickHubFlow.svelte +72 -0
- package/components/flows/pickers/PickHubFlow.svelte.d.ts +20 -0
- package/components/flows/pickers/PickHubScript.svelte +65 -56
- package/components/flows/pickers/PickHubScript.svelte.d.ts +3 -1
- package/components/flows/pickers/PickScript.svelte +2 -2
- package/components/flows/pickers/WorkspaceScriptPicker.svelte +79 -19
- package/components/flows/pickers/WorkspaceScriptPicker.svelte.d.ts +5 -1
- package/components/flows/previousResults.d.ts +1 -0
- package/components/flows/previousResults.js +2 -1
- package/components/flows/propPicker/PropPickerWrapper.svelte +9 -1
- package/components/flows/utils.d.ts +0 -1
- package/components/flows/utils.js +6 -6
- package/components/graph/FlowGraph.svelte +121 -55
- package/components/graph/FlowGraph.svelte.d.ts +3 -2
- package/components/graph/model.d.ts +46 -1
- package/components/home/ItemsList.svelte +265 -0
- package/components/home/ItemsList.svelte.d.ts +16 -0
- package/components/home/ListFilters.svelte +37 -0
- package/components/home/ListFilters.svelte.d.ts +18 -0
- package/components/home/NoItemFound.svelte +6 -0
- package/components/home/NoItemFound.svelte.d.ts +23 -0
- package/components/icons/DatadogIcon.svelte +48 -0
- package/components/icons/DatadogIcon.svelte.d.ts +17 -0
- package/components/icons/FunkwhaleIcon.svelte +90 -0
- package/components/icons/FunkwhaleIcon.svelte.d.ts +17 -0
- package/components/icons/GdocsIcon.svelte +9 -0
- package/components/icons/GdocsIcon.svelte.d.ts +17 -0
- package/components/icons/HubspotIcon.svelte +9 -0
- package/components/icons/HubspotIcon.svelte.d.ts +17 -0
- package/components/icons/LinkedinIcon.svelte +9 -0
- package/components/icons/LinkedinIcon.svelte.d.ts +17 -0
- package/components/icons/Mail.svelte +9 -53
- package/components/icons/Mysql.svelte +8 -8
- package/components/icons/NextcloudIcon.svelte +9 -0
- package/components/icons/NextcloudIcon.svelte.d.ts +17 -0
- package/components/icons/QRCodeIcon.svelte +5 -0
- package/components/icons/QRCodeIcon.svelte.d.ts +16 -0
- package/components/icons/SendflakeIcon.svelte +15 -0
- package/components/icons/SendflakeIcon.svelte.d.ts +17 -0
- package/components/icons/StripeIcon.svelte +9 -0
- package/components/icons/StripeIcon.svelte.d.ts +17 -0
- package/components/icons/TelegramIcon.svelte +9 -0
- package/components/icons/TelegramIcon.svelte.d.ts +17 -0
- package/components/icons/WindmillIcon.svelte +3 -3
- package/components/icons/index.d.ts +23 -1
- package/components/icons/index.js +23 -1
- package/components/jobs/JobDetail.svelte +2 -2
- package/components/preview/FlowPreviewStatus.svelte +12 -23
- package/components/propertyPicker/PropPicker.svelte +16 -0
- package/components/propertyPicker/PropPickerResult.svelte +2 -3
- package/components/propertyPicker/WarningMessage.svelte.d.ts +6 -2
- package/components/scriptEditor/LogPanel.svelte +11 -4
- package/components/scripts/CreateActionsScript.svelte +13 -59
- package/components/scripts/CreateActionsScript.svelte.d.ts +1 -1
- package/components/sidebar/FavoriteMenu.svelte +52 -0
- package/components/sidebar/FavoriteMenu.svelte.d.ts +21 -0
- package/components/sidebar/SidebarContent.svelte +10 -19
- package/components/sidebar/SidebarContent.svelte.d.ts +0 -4
- package/components/sidebar/UserMenu.svelte +21 -4
- package/components/sidebar/WorkspaceMenu.svelte +6 -7
- package/editorUtils.d.ts +2 -0
- package/editorUtils.js +3 -1
- package/gen/core/OpenAPI.js +1 -1
- package/gen/index.d.ts +1 -0
- package/gen/models/CompletedJob.d.ts +1 -0
- package/gen/models/CreateWorkspace.d.ts +0 -1
- package/gen/models/EditWorkspaceUser.d.ts +2 -0
- package/gen/models/FlowModuleValue.d.ts +2 -1
- package/gen/models/FlowStatus.d.ts +3 -1
- package/gen/models/FlowStatusModule.d.ts +1 -1
- package/gen/models/FlowStatusModule.js +1 -1
- package/gen/models/Identity.d.ts +1 -0
- package/gen/models/ListableResource.d.ts +1 -0
- package/gen/models/ListableVariable.d.ts +1 -0
- package/gen/models/PathFlow.d.ts +6 -0
- package/gen/models/PathFlow.js +4 -0
- package/gen/models/PathScript.d.ts +1 -0
- package/gen/models/QueuedJob.d.ts +1 -0
- package/gen/models/Schedule.d.ts +2 -0
- package/gen/models/Usage.d.ts +1 -3
- package/gen/models/WorkspaceInvite.d.ts +1 -0
- package/gen/services/AppService.d.ts +7 -1
- package/gen/services/AppService.js +2 -1
- package/gen/services/JobService.d.ts +35 -5
- package/gen/services/JobService.js +14 -5
- package/gen/services/OauthService.d.ts +1 -1
- package/gen/services/ResourceService.d.ts +6 -2
- package/gen/services/ResourceService.js +2 -1
- package/gen/services/UserService.d.ts +6 -0
- package/gen/services/UserService.js +11 -0
- package/gen/services/WorkspaceService.d.ts +35 -0
- package/gen/services/WorkspaceService.js +41 -0
- package/package.json +461 -422
- package/script_helpers.d.ts +2 -1
- package/script_helpers.js +20 -3
- package/scripts.d.ts +1 -0
- package/scripts.js +8 -1
- package/stores.d.ts +11 -2
- package/stores.js +24 -6
- package/utils.d.ts +3 -1
- package/utils.js +11 -4
- package/components/ButtonAndDropdown.svelte +0 -25
- package/components/ButtonAndDropdown.svelte.d.ts +0 -23
- package/components/apps/components/index.d.ts +0 -22
- package/components/apps/components/index.js +0 -42
- package/components/apps/editor/settingsPanel/DynamicInputEditor.svelte +0 -64
- package/components/apps/editor/settingsPanel/DynamicInputEditor.svelte.d.ts +0 -17
- package/components/flows/content/FlowBranchesWrapper.svelte +0 -140
- package/components/flows/content/FlowBranchesWrapper.svelte.d.ts +0 -19
|
@@ -6,28 +6,31 @@ import TestJobLoader from '../../../TestJobLoader.svelte';
|
|
|
6
6
|
import { AppService } from '../../../../gen';
|
|
7
7
|
import { workspaceStore } from '../../../../stores';
|
|
8
8
|
import { faRefresh } from '@fortawesome/free-solid-svg-icons';
|
|
9
|
-
import { getContext } from 'svelte';
|
|
9
|
+
import { getContext, onMount } from 'svelte';
|
|
10
10
|
import { loadSchema, schemaToInputsSpec } from '../../utils';
|
|
11
11
|
import InputValue from './InputValue.svelte';
|
|
12
12
|
// Component props
|
|
13
13
|
export let id;
|
|
14
14
|
export let inputs;
|
|
15
|
-
export let
|
|
16
|
-
export let runType = undefined;
|
|
17
|
-
export let inlineScriptName = undefined;
|
|
15
|
+
export let runnable;
|
|
18
16
|
export let extraQueryParams = {};
|
|
19
17
|
export let autoRefresh = true;
|
|
20
18
|
export let result = undefined;
|
|
21
|
-
|
|
19
|
+
export let forceSchemaDisplay = false;
|
|
20
|
+
const { app, worldStore, runnableComponents } = getContext('AppEditorContext');
|
|
21
|
+
onMount(() => {
|
|
22
|
+
$runnableComponents[id] = async () => {
|
|
23
|
+
await executeComponent();
|
|
24
|
+
};
|
|
25
|
+
});
|
|
22
26
|
let pagePath = $page.params.path;
|
|
23
27
|
let args = {};
|
|
24
28
|
let schema = undefined;
|
|
25
29
|
let testIsLoading = false;
|
|
26
30
|
let runnableInputValues = {};
|
|
27
31
|
$: mergedArgs = { ...args, ...extraQueryParams, ...runnableInputValues };
|
|
28
|
-
// TODO: Review
|
|
29
32
|
function setStaticInputsToArgs() {
|
|
30
|
-
Object.entries(inputs).forEach(([key, value]) => {
|
|
33
|
+
Object.entries(inputs ?? {}).forEach(([key, value]) => {
|
|
31
34
|
if (value.type === 'static') {
|
|
32
35
|
args[key] = value.value;
|
|
33
36
|
}
|
|
@@ -35,18 +38,18 @@ function setStaticInputsToArgs() {
|
|
|
35
38
|
args = args;
|
|
36
39
|
}
|
|
37
40
|
$: inputs && setStaticInputsToArgs();
|
|
38
|
-
function argMergedArgsValid(mergedArgs) {
|
|
39
|
-
if (Object.keys(inputs).filter((k) => inputs[k].type !== 'user').length !==
|
|
41
|
+
function argMergedArgsValid(mergedArgs, testJobLoader) {
|
|
42
|
+
if (Object.keys(inputs ?? {}).filter((k) => inputs[k].type !== 'user').length !==
|
|
40
43
|
Object.keys(runnableInputValues).length) {
|
|
41
44
|
return false;
|
|
42
45
|
}
|
|
43
46
|
const areAllArgsValid = Object.values(mergedArgs).every((arg) => arg !== undefined && arg !== null);
|
|
44
|
-
if (areAllArgsValid && autoRefresh) {
|
|
47
|
+
if (areAllArgsValid && autoRefresh && testJobLoader) {
|
|
45
48
|
executeComponent();
|
|
46
49
|
}
|
|
47
50
|
return areAllArgsValid;
|
|
48
51
|
}
|
|
49
|
-
$: isValid = argMergedArgsValid(mergedArgs);
|
|
52
|
+
$: isValid = argMergedArgsValid(mergedArgs, testJobLoader);
|
|
50
53
|
// Test job internal state
|
|
51
54
|
let testJob = undefined;
|
|
52
55
|
let testJobLoader = undefined;
|
|
@@ -55,17 +58,19 @@ async function loadSchemaFromTriggerable(workspace, path, runType) {
|
|
|
55
58
|
schema = await loadSchema(workspace, path, runType);
|
|
56
59
|
}
|
|
57
60
|
// Only loads the schema
|
|
58
|
-
$: if ($workspaceStore &&
|
|
61
|
+
$: if ($workspaceStore && runnable?.type === 'runnableByPath' && !schema) {
|
|
59
62
|
// Remote schema needs to be loaded
|
|
63
|
+
const { path, runType } = runnable;
|
|
60
64
|
loadSchemaFromTriggerable($workspaceStore, path, runType);
|
|
61
65
|
}
|
|
62
|
-
else if (
|
|
66
|
+
else if (runnable?.type === 'runnableByName' && !schema) {
|
|
67
|
+
const { inlineScriptName } = runnable;
|
|
63
68
|
// Inline scripts directly provide the schema
|
|
64
69
|
schema = $app.inlineScripts[inlineScriptName].schema;
|
|
65
70
|
}
|
|
66
71
|
// When the schema is loaded, we need to update the inputs spec
|
|
67
72
|
// in order to render the inputs the component panel
|
|
68
|
-
$: if (schema && Object.keys(schema.properties).length !== Object.keys(inputs).length) {
|
|
73
|
+
$: if (schema && Object.keys(schema.properties).length !== Object.keys(inputs ?? {}).length) {
|
|
69
74
|
let schemaWithoutExtraQueries = JSON.parse(JSON.stringify(schema));
|
|
70
75
|
// Remove extra query params from the schema, which are not directly configurable by the user
|
|
71
76
|
Object.keys(extraQueryParams).forEach((key) => {
|
|
@@ -77,12 +82,12 @@ let schemaStripped = undefined;
|
|
|
77
82
|
function stripSchema(schema, inputs) {
|
|
78
83
|
schemaStripped = JSON.parse(JSON.stringify(schema));
|
|
79
84
|
// Remove hidden static inputs
|
|
80
|
-
Object.keys(inputs).forEach((key) => {
|
|
85
|
+
Object.keys(inputs ?? {}).forEach((key) => {
|
|
81
86
|
const input = inputs[key];
|
|
82
87
|
if (input.type === 'static' && !input.visible && schemaStripped !== undefined) {
|
|
83
88
|
delete schemaStripped.properties[key];
|
|
84
89
|
}
|
|
85
|
-
if (input.type === '
|
|
90
|
+
if (input.type === 'connected' && schemaStripped !== undefined) {
|
|
86
91
|
delete schemaStripped.properties[key];
|
|
87
92
|
}
|
|
88
93
|
});
|
|
@@ -94,7 +99,7 @@ function stripSchema(schema, inputs) {
|
|
|
94
99
|
});
|
|
95
100
|
}
|
|
96
101
|
$: schema && inputs && stripSchema(schema, inputs);
|
|
97
|
-
$: disabledArgs = Object.keys(inputs).reduce((disabledArgsAccumulator, inputName) => {
|
|
102
|
+
$: disabledArgs = Object.keys(inputs ?? {}).reduce((disabledArgsAccumulator, inputName) => {
|
|
98
103
|
if (inputs[inputName].type === 'static') {
|
|
99
104
|
disabledArgsAccumulator = [...disabledArgsAccumulator, inputName];
|
|
100
105
|
}
|
|
@@ -104,20 +109,22 @@ async function executeComponent() {
|
|
|
104
109
|
if (!schema) {
|
|
105
110
|
return;
|
|
106
111
|
}
|
|
107
|
-
outputs?.loading
|
|
112
|
+
outputs?.loading?.set(true);
|
|
108
113
|
await testJobLoader?.abstractRun(() => {
|
|
109
114
|
const requestBody = {
|
|
110
115
|
args: mergedArgs,
|
|
111
116
|
force_viewer_static_fields: {}
|
|
112
117
|
};
|
|
113
|
-
if (
|
|
118
|
+
if (runnable?.type === 'runnableByName') {
|
|
119
|
+
const { inlineScriptName } = runnable;
|
|
114
120
|
requestBody['raw_code'] = {
|
|
115
121
|
content: $app.inlineScripts[inlineScriptName].content,
|
|
116
122
|
language: $app.inlineScripts[inlineScriptName].language,
|
|
117
123
|
path: $app.inlineScripts[inlineScriptName].path
|
|
118
124
|
};
|
|
119
125
|
}
|
|
120
|
-
else if (
|
|
126
|
+
else if (runnable?.type === 'runnableByPath') {
|
|
127
|
+
const { path, runType } = runnable;
|
|
121
128
|
requestBody['path'] = `${runType}/${path}`;
|
|
122
129
|
}
|
|
123
130
|
return AppService.executeComponent({
|
|
@@ -127,22 +134,21 @@ async function executeComponent() {
|
|
|
127
134
|
});
|
|
128
135
|
});
|
|
129
136
|
}
|
|
130
|
-
export function runComponent() {
|
|
131
|
-
executeComponent();
|
|
137
|
+
export async function runComponent() {
|
|
138
|
+
await executeComponent();
|
|
132
139
|
}
|
|
133
140
|
</script>
|
|
134
141
|
|
|
135
|
-
{#each Object.keys(inputs) as key}
|
|
142
|
+
{#each Object.keys(inputs ?? {}) as key}
|
|
136
143
|
<InputValue input={inputs[key]} bind:value={runnableInputValues[key]} />
|
|
137
144
|
{/each}
|
|
138
145
|
|
|
139
146
|
<TestJobLoader
|
|
140
147
|
on:done={() => {
|
|
141
|
-
if (testJob) {
|
|
142
|
-
outputs.result
|
|
143
|
-
outputs?.
|
|
144
|
-
|
|
145
|
-
result = testJob?.result
|
|
148
|
+
if (testJob && outputs) {
|
|
149
|
+
outputs.result?.set(testJob?.result)
|
|
150
|
+
outputs.loading?.set(false)
|
|
151
|
+
result = testJob.result
|
|
146
152
|
}
|
|
147
153
|
}}
|
|
148
154
|
bind:isLoading={testIsLoading}
|
|
@@ -150,11 +156,11 @@ export function runComponent() {
|
|
|
150
156
|
bind:this={testJobLoader}
|
|
151
157
|
/>
|
|
152
158
|
|
|
153
|
-
{#if schemaStripped !== undefined && autoRefresh}
|
|
159
|
+
{#if schemaStripped !== undefined && (autoRefresh || forceSchemaDisplay)}
|
|
154
160
|
<SchemaForm schema={schemaStripped} bind:args {isValid} {disabledArgs} shouldHideNoInputs />
|
|
155
161
|
{/if}
|
|
156
162
|
|
|
157
|
-
{#if
|
|
163
|
+
{#if !runnable}
|
|
158
164
|
<Alert type="warning" size="xs" class="mt-2" title="Missing runnable">
|
|
159
165
|
Please select a runnable
|
|
160
166
|
</Alert>
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
import { SvelteComponentTyped } from "svelte";
|
|
2
|
-
import type {
|
|
2
|
+
import type { AppInputs, Runnable } from '../../inputType';
|
|
3
3
|
declare const __propDef: {
|
|
4
4
|
props: {
|
|
5
5
|
id: string;
|
|
6
|
-
inputs:
|
|
7
|
-
|
|
8
|
-
runType?: 'script' | 'flow' | undefined;
|
|
9
|
-
inlineScriptName?: string | undefined;
|
|
6
|
+
inputs: AppInputs;
|
|
7
|
+
runnable: Runnable;
|
|
10
8
|
extraQueryParams?: Record<string, any> | undefined;
|
|
11
9
|
autoRefresh?: boolean | undefined;
|
|
12
10
|
result?: any;
|
|
13
|
-
|
|
11
|
+
forceSchemaDisplay?: boolean | undefined;
|
|
12
|
+
runComponent?: (() => Promise<void>) | undefined;
|
|
14
13
|
};
|
|
15
14
|
events: {
|
|
16
15
|
[evt: string]: CustomEvent<any>;
|
|
@@ -23,6 +22,6 @@ export type RunnableComponentProps = typeof __propDef.props;
|
|
|
23
22
|
export type RunnableComponentEvents = typeof __propDef.events;
|
|
24
23
|
export type RunnableComponentSlots = typeof __propDef.slots;
|
|
25
24
|
export default class RunnableComponent extends SvelteComponentTyped<RunnableComponentProps, RunnableComponentEvents, RunnableComponentSlots> {
|
|
26
|
-
get runComponent(): () => void
|
|
25
|
+
get runComponent(): () => Promise<void>;
|
|
27
26
|
}
|
|
28
27
|
export {};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
<script>import NonRunnableComponent from './NonRunnableComponent.svelte';
|
|
2
|
+
import RunnableComponent from './RunnableComponent.svelte';
|
|
3
|
+
export let componentInput;
|
|
4
|
+
export let id;
|
|
5
|
+
export let result = undefined;
|
|
6
|
+
// Optional props
|
|
7
|
+
export let extraQueryParams = {};
|
|
8
|
+
export let autoRefresh = true;
|
|
9
|
+
export let runnableComponent = undefined;
|
|
10
|
+
export let forceSchemaDisplay = false;
|
|
11
|
+
</script>
|
|
12
|
+
|
|
13
|
+
{#if componentInput === undefined}
|
|
14
|
+
<slot />
|
|
15
|
+
{:else if componentInput.type === 'runnable' && componentInput.runnable}
|
|
16
|
+
<RunnableComponent
|
|
17
|
+
bind:this={runnableComponent}
|
|
18
|
+
bind:inputs={componentInput.fields}
|
|
19
|
+
bind:result
|
|
20
|
+
runnable={componentInput.runnable}
|
|
21
|
+
{autoRefresh}
|
|
22
|
+
{id}
|
|
23
|
+
{extraQueryParams}
|
|
24
|
+
{forceSchemaDisplay}
|
|
25
|
+
>
|
|
26
|
+
<slot />
|
|
27
|
+
</RunnableComponent>
|
|
28
|
+
{:else}
|
|
29
|
+
<NonRunnableComponent bind:result {id} {componentInput}>
|
|
30
|
+
<slot />
|
|
31
|
+
</NonRunnableComponent>
|
|
32
|
+
{/if}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { SvelteComponentTyped } from "svelte";
|
|
2
|
+
import type { AppInput } from '../../inputType';
|
|
3
|
+
import RunnableComponent from './RunnableComponent.svelte';
|
|
4
|
+
declare const __propDef: {
|
|
5
|
+
props: {
|
|
6
|
+
componentInput: AppInput | undefined;
|
|
7
|
+
id: string;
|
|
8
|
+
result?: any;
|
|
9
|
+
extraQueryParams?: Record<string, any> | undefined;
|
|
10
|
+
autoRefresh?: boolean | undefined;
|
|
11
|
+
runnableComponent?: RunnableComponent | undefined;
|
|
12
|
+
forceSchemaDisplay?: boolean | undefined;
|
|
13
|
+
};
|
|
14
|
+
events: {
|
|
15
|
+
[evt: string]: CustomEvent<any>;
|
|
16
|
+
};
|
|
17
|
+
slots: {
|
|
18
|
+
default: {};
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
export type RunnableWrapperProps = typeof __propDef.props;
|
|
22
|
+
export type RunnableWrapperEvents = typeof __propDef.events;
|
|
23
|
+
export type RunnableWrapperSlots = typeof __propDef.slots;
|
|
24
|
+
export default class RunnableWrapper extends SvelteComponentTyped<RunnableWrapperProps, RunnableWrapperEvents, RunnableWrapperSlots> {
|
|
25
|
+
}
|
|
26
|
+
export {};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
<script>import { getContext } from 'svelte';
|
|
2
|
+
import DebouncedInput from '../helpers/DebouncedInput.svelte';
|
|
3
|
+
import InputValue from '../helpers/InputValue.svelte';
|
|
4
|
+
export let id;
|
|
5
|
+
export let configuration;
|
|
6
|
+
export const staticOutputs = ['result'];
|
|
7
|
+
const { worldStore } = getContext('AppEditorContext');
|
|
8
|
+
let value;
|
|
9
|
+
let labelValue = 'Title';
|
|
10
|
+
$: outputs = $worldStore?.outputsById[id];
|
|
11
|
+
$: if (value || !value) {
|
|
12
|
+
// Disallow 'e' character in numbers
|
|
13
|
+
// if(value && value.toString().includes('e')) {
|
|
14
|
+
// value = +value.toString().replaceAll('e', '')
|
|
15
|
+
// }
|
|
16
|
+
const num = isNaN(+value) ? null : +value;
|
|
17
|
+
outputs?.result.set(num);
|
|
18
|
+
}
|
|
19
|
+
</script>
|
|
20
|
+
|
|
21
|
+
<InputValue input={configuration.label} bind:value={labelValue} />
|
|
22
|
+
|
|
23
|
+
<!-- svelte-ignore a11y-label-has-associated-control -->
|
|
24
|
+
<label>
|
|
25
|
+
<div>
|
|
26
|
+
{labelValue}
|
|
27
|
+
</div>
|
|
28
|
+
<DebouncedInput
|
|
29
|
+
bind:value={value}
|
|
30
|
+
debounceDelay={300}
|
|
31
|
+
type="number"
|
|
32
|
+
inputmode="numeric"
|
|
33
|
+
pattern="\d*"
|
|
34
|
+
placeholder="Type..."
|
|
35
|
+
/>
|
|
36
|
+
</label>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { SvelteComponentTyped } from "svelte";
|
|
2
|
+
import type { AppInput } from '../../inputType';
|
|
3
|
+
declare const __propDef: {
|
|
4
|
+
props: {
|
|
5
|
+
id: string;
|
|
6
|
+
configuration: Record<string, AppInput>;
|
|
7
|
+
staticOutputs?: string[] | undefined;
|
|
8
|
+
};
|
|
9
|
+
events: {
|
|
10
|
+
[evt: string]: CustomEvent<any>;
|
|
11
|
+
};
|
|
12
|
+
slots: {};
|
|
13
|
+
};
|
|
14
|
+
export type AppNumberInputProps = typeof __propDef.props;
|
|
15
|
+
export type AppNumberInputEvents = typeof __propDef.events;
|
|
16
|
+
export type AppNumberInputSlots = typeof __propDef.slots;
|
|
17
|
+
export default class AppNumberInput extends SvelteComponentTyped<AppNumberInputProps, AppNumberInputEvents, AppNumberInputSlots> {
|
|
18
|
+
get staticOutputs(): string[];
|
|
19
|
+
}
|
|
20
|
+
export {};
|
|
@@ -3,17 +3,19 @@ import { getContext } from 'svelte';
|
|
|
3
3
|
import AlignWrapper from '../helpers/AlignWrapper.svelte';
|
|
4
4
|
import InputValue from '../helpers/InputValue.svelte';
|
|
5
5
|
export let id;
|
|
6
|
-
export let
|
|
6
|
+
export let configuration;
|
|
7
7
|
export let horizontalAlignment = undefined;
|
|
8
8
|
export let verticalAlignment = undefined;
|
|
9
9
|
const { worldStore } = getContext('AppEditorContext');
|
|
10
10
|
export const staticOutputs = ['result'];
|
|
11
11
|
let labelValue = 'Default label';
|
|
12
12
|
let value = false;
|
|
13
|
+
// As the checkbox is a special case and has no input
|
|
14
|
+
// we need to manually set the output
|
|
13
15
|
$: outputs = $worldStore?.outputsById[id];
|
|
14
16
|
</script>
|
|
15
17
|
|
|
16
|
-
<InputValue input={
|
|
18
|
+
<InputValue input={configuration.label} bind:value={labelValue} />
|
|
17
19
|
|
|
18
20
|
<AlignWrapper {horizontalAlignment} {verticalAlignment}>
|
|
19
21
|
<Toggle
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { SvelteComponentTyped } from "svelte";
|
|
2
|
-
import type {
|
|
2
|
+
import type { AppInput } from '../../inputType';
|
|
3
3
|
declare const __propDef: {
|
|
4
4
|
props: {
|
|
5
5
|
id: string;
|
|
6
|
-
|
|
6
|
+
configuration: Record<string, AppInput>;
|
|
7
7
|
horizontalAlignment?: 'left' | 'center' | 'right' | undefined;
|
|
8
8
|
verticalAlignment?: 'top' | 'center' | 'bottom' | undefined;
|
|
9
9
|
staticOutputs?: string[] | undefined;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<script>import { getContext } from 'svelte';
|
|
2
|
+
import InputValue from '../helpers/InputValue.svelte';
|
|
3
|
+
export let id;
|
|
4
|
+
export let configuration;
|
|
5
|
+
export const staticOutputs = ['result'];
|
|
6
|
+
const { worldStore } = getContext('AppEditorContext');
|
|
7
|
+
let value;
|
|
8
|
+
let labelValue = 'Title';
|
|
9
|
+
$: outputs = $worldStore?.outputsById[id];
|
|
10
|
+
$: (value || !value) && outputs?.result.set(value || '');
|
|
11
|
+
</script>
|
|
12
|
+
|
|
13
|
+
<InputValue input={configuration.label} bind:value={labelValue} />
|
|
14
|
+
|
|
15
|
+
<!-- svelte-ignore a11y-label-has-associated-control -->
|
|
16
|
+
<label>
|
|
17
|
+
<div>
|
|
18
|
+
{labelValue}
|
|
19
|
+
</div>
|
|
20
|
+
<input type="text" bind:value placeholder="Type..." />
|
|
21
|
+
</label>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { SvelteComponentTyped } from "svelte";
|
|
2
|
+
import type { AppInput } from '../../inputType';
|
|
3
|
+
declare const __propDef: {
|
|
4
|
+
props: {
|
|
5
|
+
id: string;
|
|
6
|
+
configuration: Record<string, AppInput>;
|
|
7
|
+
staticOutputs?: string[] | undefined;
|
|
8
|
+
};
|
|
9
|
+
events: {
|
|
10
|
+
[evt: string]: CustomEvent<any>;
|
|
11
|
+
};
|
|
12
|
+
slots: {};
|
|
13
|
+
};
|
|
14
|
+
export type AppTextInputProps = typeof __propDef.props;
|
|
15
|
+
export type AppTextInputEvents = typeof __propDef.events;
|
|
16
|
+
export type AppTextInputSlots = typeof __propDef.slots;
|
|
17
|
+
export default class AppTextInput extends SvelteComponentTyped<AppTextInputProps, AppTextInputEvents, AppTextInputSlots> {
|
|
18
|
+
get staticOutputs(): string[];
|
|
19
|
+
}
|
|
20
|
+
export {};
|
|
@@ -14,6 +14,8 @@ import { faPlus, faSliders } from '@fortawesome/free-solid-svg-icons';
|
|
|
14
14
|
import ComponentPanel from './settingsPanel/ComponentPanel.svelte';
|
|
15
15
|
import ContextPanel from './contextPanel/ContextPanel.svelte';
|
|
16
16
|
import { classNames } from '../../../utils';
|
|
17
|
+
import AppPreview from './AppPreview.svelte';
|
|
18
|
+
import { userStore } from '../../../stores';
|
|
17
19
|
export let app;
|
|
18
20
|
export let path;
|
|
19
21
|
export let initialMode = 'dnd';
|
|
@@ -27,6 +29,7 @@ const connectingInput = writable({
|
|
|
27
29
|
opened: false,
|
|
28
30
|
input: undefined
|
|
29
31
|
});
|
|
32
|
+
const runnableComponents = writable({});
|
|
30
33
|
setContext('AppEditorContext', {
|
|
31
34
|
worldStore,
|
|
32
35
|
staticOutputs,
|
|
@@ -34,72 +37,80 @@ setContext('AppEditorContext', {
|
|
|
34
37
|
selectedComponent,
|
|
35
38
|
mode,
|
|
36
39
|
connectingInput,
|
|
37
|
-
breakpoint
|
|
40
|
+
breakpoint,
|
|
41
|
+
runnableComponents
|
|
38
42
|
});
|
|
39
|
-
function clearSelectionOnPreview() {
|
|
40
|
-
if ($mode === 'preview') {
|
|
41
|
-
$selectedComponent = undefined;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
43
|
let mounted = false;
|
|
45
44
|
onMount(() => {
|
|
46
45
|
mounted = true;
|
|
47
46
|
});
|
|
48
47
|
$: mounted && ($worldStore = buildWorld($staticOutputs));
|
|
49
|
-
$: $mode && $selectedComponent && clearSelectionOnPreview();
|
|
50
48
|
$: selectedTab = $selectedComponent ? 'settings' : 'insert';
|
|
51
49
|
$: previewing = $mode === 'preview';
|
|
52
50
|
$: width = $breakpoint === 'sm' ? 'w-[640px]' : 'w-full ';
|
|
53
51
|
</script>
|
|
54
52
|
|
|
55
|
-
{#if
|
|
56
|
-
|
|
57
|
-
{
|
|
53
|
+
{#if !$userStore?.operator}
|
|
54
|
+
{#if initialMode !== 'preview'}
|
|
55
|
+
<AppEditorHeader bind:title={$appStore.title} bind:mode={$mode} bind:breakpoint={$breakpoint} />
|
|
56
|
+
{/if}
|
|
58
57
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
<Pane size={previewing ? 0 : 25} minSize={previewing ? 0 : 20} maxSize={40}>
|
|
73
|
-
<Tabs bind:selected={selectedTab}>
|
|
74
|
-
<Tab value="insert" size="xs">
|
|
75
|
-
<div class="m-1 flex flex-row gap-2">
|
|
76
|
-
<Icon data={faPlus} />
|
|
77
|
-
<span>Insert</span>
|
|
78
|
-
</div>
|
|
79
|
-
</Tab>
|
|
80
|
-
<Tab value="settings" size="xs">
|
|
81
|
-
<div class="m-1 flex flex-row gap-2">
|
|
82
|
-
<Icon data={faSliders} />
|
|
83
|
-
<span>Settings</span>
|
|
84
|
-
</div>
|
|
85
|
-
</Tab>
|
|
86
|
-
<svelte:fragment slot="content">
|
|
87
|
-
<TabContent value="settings">
|
|
88
|
-
{#if $selectedComponent !== undefined}
|
|
89
|
-
{#each $appStore.grid as gridItem (gridItem.id)}
|
|
90
|
-
{#if gridItem.data.id === $selectedComponent}
|
|
91
|
-
<ComponentPanel bind:component={gridItem.data} />
|
|
92
|
-
{/if}
|
|
93
|
-
{/each}
|
|
58
|
+
{#if previewing}
|
|
59
|
+
<AppPreview app={$appStore} />
|
|
60
|
+
{:else}
|
|
61
|
+
<SplitPanesWrapper class="max-w-full overflow-hidden">
|
|
62
|
+
<Pane size={20} minSize={15} maxSize={40}>
|
|
63
|
+
<ContextPanel appPath={path} />
|
|
64
|
+
</Pane>
|
|
65
|
+
<Pane size={60}>
|
|
66
|
+
<div class="p-4 bg-gray-100 min-h-full w-full relative">
|
|
67
|
+
{#if $appStore.grid}
|
|
68
|
+
<div class={classNames('mx-auto h-full', width)}>
|
|
69
|
+
<GridEditor />
|
|
70
|
+
</div>
|
|
94
71
|
{/if}
|
|
95
|
-
{#if $
|
|
96
|
-
<div
|
|
72
|
+
{#if $connectingInput.opened}
|
|
73
|
+
<div
|
|
74
|
+
class="absolute top-0 left-0 w-full h-full bg-black border-2 bg-opacity-25 z-1 flex justify-center items-center"
|
|
75
|
+
/>
|
|
97
76
|
{/if}
|
|
98
|
-
</
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
</
|
|
77
|
+
</div>
|
|
78
|
+
</Pane>
|
|
79
|
+
<Pane size={30} minSize={25} maxSize={40}>
|
|
80
|
+
<Tabs bind:selected={selectedTab}>
|
|
81
|
+
<Tab value="insert" size="xs">
|
|
82
|
+
<div class="m-1 flex flex-row gap-2">
|
|
83
|
+
<Icon data={faPlus} />
|
|
84
|
+
<span>Insert</span>
|
|
85
|
+
</div>
|
|
86
|
+
</Tab>
|
|
87
|
+
<Tab value="settings" size="xs">
|
|
88
|
+
<div class="m-1 flex flex-row gap-2">
|
|
89
|
+
<Icon data={faSliders} />
|
|
90
|
+
<span>Settings</span>
|
|
91
|
+
</div>
|
|
92
|
+
</Tab>
|
|
93
|
+
<svelte:fragment slot="content">
|
|
94
|
+
<TabContent value="settings">
|
|
95
|
+
{#if $selectedComponent !== undefined}
|
|
96
|
+
{#each $appStore.grid as gridItem (gridItem.id)}
|
|
97
|
+
{#if gridItem.data.id === $selectedComponent}
|
|
98
|
+
<ComponentPanel bind:component={gridItem.data} />
|
|
99
|
+
{/if}
|
|
100
|
+
{/each}
|
|
101
|
+
{/if}
|
|
102
|
+
{#if $selectedComponent === undefined}
|
|
103
|
+
<div class="p-4 text-sm">No component selected.</div>
|
|
104
|
+
{/if}
|
|
105
|
+
</TabContent>
|
|
106
|
+
<TabContent value="insert">
|
|
107
|
+
<ComponentList />
|
|
108
|
+
</TabContent>
|
|
109
|
+
</svelte:fragment>
|
|
110
|
+
</Tabs>
|
|
111
|
+
</Pane>
|
|
112
|
+
</SplitPanesWrapper>
|
|
113
|
+
{/if}
|
|
114
|
+
{:else}
|
|
115
|
+
App editor not available to operators
|
|
116
|
+
{/if}
|
|
@@ -31,10 +31,10 @@ async function save() {
|
|
|
31
31
|
}
|
|
32
32
|
})
|
|
33
33
|
.then(() => {
|
|
34
|
-
sendUserToast('Saved
|
|
34
|
+
sendUserToast('Saved');
|
|
35
35
|
})
|
|
36
36
|
.catch(() => {
|
|
37
|
-
sendUserToast('Error during saving. Please try again later
|
|
37
|
+
sendUserToast('Error during saving. Please try again later', true);
|
|
38
38
|
})
|
|
39
39
|
.finally(() => {
|
|
40
40
|
loading.save = false;
|
|
@@ -44,7 +44,7 @@ async function save() {
|
|
|
44
44
|
|
|
45
45
|
<div class="border-b flex flex-row justify-between py-1 px-4 items-center">
|
|
46
46
|
<input class="text-sm w-64" bind:value={title} />
|
|
47
|
-
<div class="flex gap-
|
|
47
|
+
<div class="flex gap-2">
|
|
48
48
|
<div>
|
|
49
49
|
<ToggleButtonGroup bind:selected={mode}>
|
|
50
50
|
<ToggleButton position="left" value="dnd" startIcon={{ icon: faHand }} size="xs">
|
|
@@ -66,7 +66,7 @@ async function save() {
|
|
|
66
66
|
</ToggleButtonGroup>
|
|
67
67
|
</div>
|
|
68
68
|
</div>
|
|
69
|
-
<div class="flex flex-row gap-2">
|
|
69
|
+
<div class="flex flex-row gap-2 w-64 justify-end">
|
|
70
70
|
<Button color="dark" size="xs" variant="border" startIcon={{ icon: faExternalLink }}>
|
|
71
71
|
Publish
|
|
72
72
|
</Button>
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
<script>import { onMount, setContext } from 'svelte';
|
|
2
|
+
import { writable } from 'svelte/store';
|
|
3
|
+
import { buildWorld } from '../rx';
|
|
4
|
+
import GridEditor from './GridEditor.svelte';
|
|
5
|
+
import { classNames } from '../../../utils';
|
|
6
|
+
export let app;
|
|
7
|
+
const appStore = writable(app);
|
|
8
|
+
const worldStore = writable(undefined);
|
|
9
|
+
const staticOutputs = writable({});
|
|
10
|
+
const selectedComponent = writable(undefined);
|
|
11
|
+
const mode = writable('preview');
|
|
12
|
+
const breakpoint = writable('lg');
|
|
13
|
+
const connectingInput = writable({
|
|
14
|
+
opened: false,
|
|
15
|
+
input: undefined
|
|
16
|
+
});
|
|
17
|
+
const runnableComponents = writable({});
|
|
18
|
+
setContext('AppEditorContext', {
|
|
19
|
+
worldStore,
|
|
20
|
+
staticOutputs,
|
|
21
|
+
app: appStore,
|
|
22
|
+
selectedComponent,
|
|
23
|
+
mode,
|
|
24
|
+
connectingInput,
|
|
25
|
+
breakpoint,
|
|
26
|
+
runnableComponents
|
|
27
|
+
});
|
|
28
|
+
let mounted = false;
|
|
29
|
+
onMount(() => {
|
|
30
|
+
mounted = true;
|
|
31
|
+
});
|
|
32
|
+
$: mounted && ($worldStore = buildWorld($staticOutputs));
|
|
33
|
+
$: width = $breakpoint === 'sm' ? 'w-[640px]' : 'w-full ';
|
|
34
|
+
</script>
|
|
35
|
+
|
|
36
|
+
<div class="h-full w-5/6 mx-auto">
|
|
37
|
+
{#if $appStore.grid}
|
|
38
|
+
<div class={classNames('mx-auto h-full', width)}>
|
|
39
|
+
<GridEditor />
|
|
40
|
+
</div>
|
|
41
|
+
{/if}
|
|
42
|
+
</div>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { SvelteComponentTyped } from "svelte";
|
|
2
|
+
import type { App } from '../types';
|
|
3
|
+
declare const __propDef: {
|
|
4
|
+
props: {
|
|
5
|
+
app: App;
|
|
6
|
+
};
|
|
7
|
+
events: {
|
|
8
|
+
[evt: string]: CustomEvent<any>;
|
|
9
|
+
};
|
|
10
|
+
slots: {};
|
|
11
|
+
};
|
|
12
|
+
export type AppPreviewProps = typeof __propDef.props;
|
|
13
|
+
export type AppPreviewEvents = typeof __propDef.events;
|
|
14
|
+
export type AppPreviewSlots = typeof __propDef.slots;
|
|
15
|
+
export default class AppPreview extends SvelteComponentTyped<AppPreviewProps, AppPreviewEvents, AppPreviewSlots> {
|
|
16
|
+
}
|
|
17
|
+
export {};
|