windmill-components 1.60.4 → 1.70.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/app.css +3 -0
- package/common.d.ts +5 -1
- package/components/ApiConnectForm.svelte +66 -5
- package/components/AppConnect.svelte +24 -9
- package/components/ArgInput.svelte +1 -1
- package/components/CliHelpBox.svelte +49 -0
- package/components/CliHelpBox.svelte.d.ts +14 -0
- package/components/DisplayResult.svelte +51 -1
- package/components/DisplayResult.svelte.d.ts +1 -0
- package/components/Editor.svelte +17 -7
- package/components/EditorBar.svelte +129 -111
- package/components/FlowBuilder.svelte +2 -2
- package/components/FlowJobResult.svelte +10 -2
- package/components/FlowJobResult.svelte.d.ts +1 -0
- package/components/FlowMetadata.svelte +24 -8
- package/components/FlowPreviewContent.svelte +3 -4
- package/components/FlowStatusViewer.svelte +41 -9
- package/components/FolderEditor.svelte +3 -2
- package/components/HighlightCode.svelte +7 -1
- package/components/InlineCodeCopy.svelte +11 -0
- package/components/InlineCodeCopy.svelte.d.ts +16 -0
- package/components/InputTransformForm.svelte +9 -5
- package/components/LogViewer.svelte +6 -0
- package/components/LogViewer.svelte.d.ts +1 -0
- package/components/ModulePreview.svelte +11 -2
- package/components/MoveDrawer.svelte +1 -1
- package/components/Multiselect.svelte.d.ts +2 -2
- package/components/ObjectResourceInput.svelte +6 -1
- package/components/Path.svelte +14 -5
- package/components/Popover.svelte +8 -2
- 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 +0 -1
- package/components/RunForm.svelte +26 -2
- package/components/RunForm.svelte.d.ts +1 -0
- package/components/ScheduleEditor.svelte +1 -1
- package/components/SchemaEditor.svelte +2 -2
- package/components/SchemaForm.svelte +14 -4
- package/components/SchemaForm.svelte.d.ts +1 -0
- package/components/ScriptBuilder.svelte +45 -22
- package/components/ScriptBuilder.svelte.d.ts +1 -0
- package/components/ScriptEditor.svelte +1 -0
- package/components/SharedBadge.svelte +5 -5
- package/components/Slider.svelte +14 -0
- package/components/Slider.svelte.d.ts +19 -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.d.ts +204 -0
- package/components/TestJobLoader.svelte +3 -3
- package/components/Toggle.svelte +1 -2
- package/components/UserSettings.svelte +11 -3
- package/components/UserSettings.svelte.d.ts +2 -0
- package/components/VariableEditor.svelte +1 -1
- package/components/WhitelistIp.svelte +23 -0
- package/components/WhitelistIp.svelte.d.ts +14 -0
- package/components/apps/components/buttons/AppButton.svelte +52 -6
- package/components/apps/components/buttons/AppButton.svelte.d.ts +3 -0
- package/components/apps/components/{form → buttons}/AppForm.svelte +3 -1
- package/components/apps/components/buttons/AppFormButton.svelte +137 -0
- package/components/apps/components/buttons/AppFormButton.svelte.d.ts +25 -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 +15 -4
- package/components/apps/components/{dataDisplay → display}/AppBarChart.svelte.d.ts +1 -0
- package/components/apps/components/display/AppDisplayComponent.svelte +31 -0
- package/components/apps/components/display/AppDisplayComponent.svelte.d.ts +23 -0
- package/components/apps/components/{dataDisplay → display}/AppHtml.svelte +6 -5
- package/components/apps/components/{dataDisplay → display}/AppHtml.svelte.d.ts +1 -1
- package/components/apps/components/display/AppIcon.svelte +35 -0
- package/components/apps/components/display/AppIcon.svelte.d.ts +22 -0
- package/components/apps/components/display/AppImage.svelte +27 -0
- package/components/apps/components/display/AppImage.svelte.d.ts +22 -0
- package/components/apps/components/{dataDisplay → display}/AppPieChart.svelte +2 -1
- package/components/apps/components/{dataDisplay → display}/AppPieChart.svelte.d.ts +1 -0
- package/components/apps/components/{dataDisplay → display}/AppScatterChart.svelte +2 -1
- package/components/apps/components/{dataDisplay → display}/AppScatterChart.svelte.d.ts +1 -0
- package/components/apps/components/{dataDisplay → display}/AppText.svelte +16 -14
- package/components/apps/components/{dataDisplay → display}/AppText.svelte.d.ts +3 -0
- package/components/apps/components/{dataDisplay → display}/AppTimeseries.svelte +3 -2
- package/components/apps/components/{dataDisplay → display}/AppTimeseries.svelte.d.ts +1 -0
- package/components/apps/components/display/PlotlyHtml.svelte +38 -0
- package/components/apps/components/display/PlotlyHtml.svelte.d.ts +24 -0
- package/components/apps/components/{dataDisplay → display}/VegaLiteHtml.svelte +2 -3
- package/components/apps/components/{dataDisplay → display}/VegaLiteHtml.svelte.d.ts +1 -0
- package/components/apps/components/display/index.d.ts +12 -0
- package/components/apps/components/display/index.js +12 -0
- package/components/apps/components/display/table/AppAggridTable.svelte +83 -0
- package/components/apps/components/display/table/AppAggridTable.svelte.d.ts +24 -0
- package/components/apps/components/{table → display/table}/AppTable.svelte +32 -21
- package/components/apps/components/{table → display/table}/AppTable.svelte.d.ts +4 -2
- package/components/apps/components/{table → display/table}/AppTableFooter.svelte +1 -1
- package/components/apps/components/helpers/AlignWrapper.svelte +19 -19
- package/components/apps/components/helpers/AlignWrapper.svelte.d.ts +4 -2
- package/components/apps/components/helpers/HiddenComponent.svelte +22 -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 +5 -7
- package/components/apps/components/helpers/InputValue.svelte.d.ts +0 -1
- package/components/apps/components/helpers/RunnableComponent.svelte +37 -48
- package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +2 -1
- package/components/apps/components/helpers/RunnableWrapper.svelte +7 -2
- package/components/apps/components/helpers/RunnableWrapper.svelte.d.ts +2 -1
- 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/{selectInputs → inputs}/AppCheckbox.svelte +4 -2
- package/components/apps/components/{dateInputs → inputs}/AppDateInput.svelte +6 -0
- package/components/apps/components/inputs/AppFileInput.svelte +34 -0
- package/components/apps/components/inputs/AppFileInput.svelte.d.ts +20 -0
- package/components/apps/components/inputs/AppNumberInput.svelte +48 -0
- package/components/apps/components/inputs/AppRangeInput.svelte +44 -0
- package/components/apps/components/inputs/AppRangeInput.svelte.d.ts +23 -0
- package/components/apps/components/inputs/AppSelect.svelte +90 -0
- package/components/apps/components/{selectInputs → inputs}/AppSelect.svelte.d.ts +2 -0
- package/components/apps/components/{numberInputs → inputs}/AppSliderInputs.svelte +13 -9
- package/components/apps/components/{textInputs → inputs}/AppTextInput.svelte +6 -0
- package/components/apps/components/inputs/currency/AppCurrencyInput.svelte +49 -0
- package/components/apps/components/inputs/currency/AppCurrencyInput.svelte.d.ts +21 -0
- package/components/apps/components/inputs/currency/CurrencyInput.svelte +181 -0
- package/components/apps/components/inputs/currency/CurrencyInput.svelte.d.ts +32 -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 +32 -0
- package/components/apps/components/layout/AppContainer.svelte.d.ts +21 -0
- package/components/apps/components/layout/AppDivider.svelte +20 -0
- package/components/apps/components/layout/AppDivider.svelte.d.ts +22 -0
- package/components/apps/components/layout/AppTabs.svelte +58 -0
- package/components/apps/components/layout/AppTabs.svelte.d.ts +24 -0
- package/components/apps/components/layout/index.d.ts +3 -0
- package/components/apps/components/layout/index.js +3 -0
- package/components/apps/editor/AppComponentInput.svelte +33 -0
- package/components/apps/editor/AppComponentInput.svelte.d.ts +18 -0
- package/components/apps/editor/AppComponentInputs.svelte +13 -0
- package/components/apps/editor/AppComponentInputs.svelte.d.ts +20 -0
- package/components/apps/editor/AppEditor.svelte +66 -31
- package/components/apps/editor/AppEditor.svelte.d.ts +1 -0
- package/components/apps/editor/AppEditorHeader.svelte +74 -18
- package/components/apps/editor/AppEditorHeader.svelte.d.ts +1 -0
- package/components/apps/editor/AppInputs.svelte +60 -0
- package/components/apps/editor/AppInputs.svelte.d.ts +14 -0
- package/components/apps/editor/AppPreview.svelte +11 -6
- package/components/apps/editor/ComponentHeader.svelte +40 -2
- package/components/apps/editor/ComponentHeader.svelte.d.ts +1 -1
- package/components/apps/editor/GridEditor.svelte +75 -32
- package/components/apps/editor/GridEditor.svelte.d.ts +2 -0
- package/components/apps/editor/SettingsPanel.svelte +31 -3
- package/components/apps/editor/SubGridEditor.svelte +111 -0
- package/components/apps/editor/SubGridEditor.svelte.d.ts +24 -0
- package/components/apps/editor/TablePanel.svelte +2 -0
- package/components/apps/editor/TablePanel.svelte.d.ts +1 -1
- package/components/apps/editor/appUtils.d.ts +9 -0
- package/components/apps/editor/appUtils.js +141 -0
- package/components/apps/editor/component/Component.svelte +209 -0
- package/components/apps/editor/component/Component.svelte.d.ts +23 -0
- package/components/apps/editor/component/README.md +15 -0
- package/components/apps/editor/component/components.d.ts +65 -0
- package/components/apps/editor/component/components.js +1102 -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 +47 -0
- package/components/apps/editor/componentsPanel/ComponentList.svelte +30 -106
- package/components/apps/editor/componentsPanel/CssProperty.svelte +31 -0
- package/components/apps/editor/componentsPanel/CssProperty.svelte.d.ts +20 -0
- package/components/apps/editor/componentsPanel/CssSettings.svelte +141 -0
- package/components/apps/editor/componentsPanel/CssSettings.svelte.d.ts +14 -0
- package/components/apps/editor/componentsPanel/ListItem.svelte +28 -0
- package/components/apps/editor/componentsPanel/ListItem.svelte.d.ts +20 -0
- package/components/apps/editor/componentsPanel/componentStaticValues.d.ts +4 -1
- package/components/apps/editor/componentsPanel/componentStaticValues.js +4 -1
- package/components/apps/editor/contextPanel/ContextPanel.svelte +8 -6
- package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte +98 -9
- package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +38 -29
- package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorPanel.svelte +21 -1
- package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanel.svelte +66 -8
- package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte +92 -46
- package/components/apps/editor/inlineScriptsPanel/utils.d.ts +5 -1
- package/components/apps/editor/inlineScriptsPanel/utils.js +30 -0
- package/components/apps/editor/settingsPanel/AlignmentEditor.svelte +1 -1
- package/components/apps/editor/settingsPanel/AlignmentEditor.svelte.d.ts +1 -1
- package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +4 -1
- package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte.d.ts +59 -1
- package/components/apps/editor/settingsPanel/ComponentPanel.svelte +64 -34
- package/components/apps/editor/settingsPanel/ComponentPanel.svelte.d.ts +5 -3
- package/components/apps/editor/settingsPanel/GridTab.svelte +73 -0
- package/components/apps/editor/settingsPanel/GridTab.svelte.d.ts +18 -0
- package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +3 -0
- package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte.d.ts +2 -2
- package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte +92 -77
- package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte.d.ts +1 -0
- package/components/apps/editor/settingsPanel/MoveToOtherGrid.svelte +85 -0
- package/components/apps/editor/settingsPanel/MoveToOtherGrid.svelte.d.ts +18 -0
- package/components/apps/editor/settingsPanel/Recompute.svelte +4 -1
- package/components/apps/editor/settingsPanel/TableActions.svelte +17 -6
- package/components/apps/editor/settingsPanel/TableActions.svelte.d.ts +2 -1
- package/components/apps/editor/settingsPanel/common/PanelSection.svelte +5 -3
- package/components/apps/editor/settingsPanel/inputEditor/IconSelectInput.svelte +83 -0
- package/components/apps/editor/settingsPanel/inputEditor/IconSelectInput.svelte.d.ts +19 -0
- package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +6 -1
- package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte.d.ts +2 -0
- package/components/apps/editor/settingsPanel/inputEditor/UploadInputEditor.svelte +23 -0
- package/components/apps/editor/settingsPanel/inputEditor/UploadInputEditor.svelte.d.ts +17 -0
- package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte +3 -20
- package/components/apps/gridUtils.d.ts +3 -1
- package/components/apps/gridUtils.js +5 -3
- package/components/apps/inputType.d.ts +33 -6
- package/components/apps/types.d.ts +35 -40
- package/components/apps/types.js +1 -1
- package/components/apps/utils.d.ts +6 -5
- package/components/apps/utils.js +90 -94
- package/components/common/button/Button.svelte +12 -5
- package/components/common/button/Button.svelte.d.ts +3 -1
- package/components/common/button/ButtonPopup.svelte.d.ts +1 -1
- package/components/common/button/model.d.ts +2 -2
- package/components/common/button/model.js +21 -6
- package/components/common/confirmationModal/ConfirmationModal.svelte +8 -1
- package/components/common/confirmationModal/UnsavedConfirmationModal.svelte +4 -4
- package/components/common/drawer/Drawer.svelte +3 -1
- package/components/common/fileInput/FileInput.svelte +112 -0
- package/components/common/fileInput/FileInput.svelte.d.ts +27 -0
- package/components/common/index.d.ts +1 -0
- package/components/common/index.js +1 -0
- package/components/common/kbd/Kbd.svelte.d.ts +2 -2
- package/components/common/modal/Modal.svelte +74 -0
- package/components/common/modal/Modal.svelte.d.ts +22 -0
- package/components/common/popup/Popup.svelte +34 -17
- package/components/common/popup/Popup.svelte.d.ts +11 -4
- package/components/common/table/FlowRow.svelte +22 -3
- package/components/common/table/LanguageBadge.svelte +10 -4
- package/components/common/table/Row.svelte +1 -1
- package/components/common/table/ScriptRow.svelte +2 -2
- package/components/common/tabs/Tabs.svelte +9 -7
- package/components/common/tabs/Tabs.svelte.d.ts +3 -1
- package/components/flows/CreateActionsFlow.svelte +2 -3
- package/components/flows/content/BranchPredicateEditor.svelte +10 -8
- package/components/flows/content/FlowInputs.svelte +109 -99
- package/components/flows/content/FlowLoop.svelte +1 -1
- package/components/flows/content/FlowModuleComponent.svelte +3 -2
- package/components/flows/content/FlowRetries.svelte +8 -6
- package/components/flows/content/FlowSettings.svelte +72 -26
- package/components/flows/flowState.d.ts +1 -0
- package/components/flows/flowState.js +1 -0
- package/components/flows/flowStateUtils.js +4 -2
- package/components/flows/flowStore.d.ts +1 -0
- package/components/flows/flowStore.js +1 -0
- package/components/flows/map/FlowBranchAllMap.svelte +1 -1
- package/components/flows/map/FlowBranchOneMap.svelte +2 -2
- package/components/flows/map/FlowModuleSchemaItem.svelte +5 -5
- package/components/flows/map/FlowModuleSchemaMap.svelte +15 -8
- package/components/flows/map/FlowModuleSchemaMap.svelte.d.ts +1 -0
- package/components/flows/map/InsertModuleButton.svelte +24 -10
- package/components/flows/map/InsertModuleButton.svelte.d.ts +1 -0
- package/components/flows/map/MapItem.svelte +3 -1
- package/components/flows/utils.js +16 -10
- package/components/graph/FlowGraph.svelte +38 -15
- package/components/graph/FlowGraph.svelte.d.ts +1 -0
- 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 +29 -5
- package/components/propertyPicker/ObjectViewer.svelte +8 -5
- package/components/propertyPicker/ObjectViewer.svelte.d.ts +1 -0
- package/components/propertyPicker/PropPicker.svelte +8 -1
- 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 +2 -1
- package/components/sidebar/SidebarContent.svelte +1 -1
- 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/gen/core/OpenAPI.js +1 -1
- package/gen/models/CompletedJob.d.ts +1 -0
- package/gen/models/FlowModule.d.ts +0 -1
- 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 +97 -15
- package/gen/services/JobService.js +74 -15
- 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/infer.js +3 -0
- 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 +577 -522
- package/script_helpers.d.ts +6 -5
- package/script_helpers.js +7 -73
- 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 +1 -1
- package/utils.js +8 -7
- package/components/apps/components/DisplayComponent.svelte +0 -16
- package/components/apps/components/DisplayComponent.svelte.d.ts +0 -20
- package/components/apps/components/numberInputs/AppNumberInput.svelte +0 -33
- package/components/apps/components/selectInputs/AppSelect.svelte +0 -47
- package/components/apps/editor/ComponentEditor.svelte +0 -145
- package/components/apps/editor/ComponentEditor.svelte.d.ts +0 -23
- package/components/apps/editor/componentsPanel/data.d.ts +0 -3
- package/components/apps/editor/componentsPanel/data.js +0 -499
- package/components/apps/editorUtils.d.ts +0 -1
- package/components/apps/editorUtils.js +0 -292
- /package/components/apps/components/{form → buttons}/AppForm.svelte.d.ts +0 -0
- /package/components/apps/components/{table → display/table}/AppTableFooter.svelte.d.ts +0 -0
- /package/components/apps/components/{table → display/table}/tableOptions.d.ts +0 -0
- /package/components/apps/components/{table → display/table}/tableOptions.js +0 -0
- /package/components/apps/components/{selectInputs → inputs}/AppCheckbox.svelte.d.ts +0 -0
- /package/components/apps/components/{dateInputs → inputs}/AppDateInput.svelte.d.ts +0 -0
- /package/components/apps/components/{numberInputs → inputs}/AppNumberInput.svelte.d.ts +0 -0
- /package/components/apps/components/{numberInputs → inputs}/AppSliderInputs.svelte.d.ts +0 -0
- /package/components/apps/components/{textInputs → inputs}/AppTextInput.svelte.d.ts +0 -0
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
<script>import SplitPanesWrapper from '../../splitPanes/SplitPanesWrapper.svelte';
|
|
2
2
|
import { onMount, setContext } from 'svelte';
|
|
3
|
+
import { twMerge } from 'tailwind-merge';
|
|
3
4
|
import { Pane, Splitpanes } from 'svelte-splitpanes';
|
|
4
5
|
import { writable } from 'svelte/store';
|
|
5
6
|
import { buildWorld } from '../rx';
|
|
@@ -10,9 +11,9 @@ import TabContent from '../../common/tabs/TabContent.svelte';
|
|
|
10
11
|
import { Alert, Button, Tab } from '../../common';
|
|
11
12
|
import ComponentList from './componentsPanel/ComponentList.svelte';
|
|
12
13
|
import Icon from 'svelte-awesome';
|
|
13
|
-
import { faPlus, faSliders } from '@fortawesome/free-solid-svg-icons';
|
|
14
|
+
import { faCode, faPlus, faSliders } from '@fortawesome/free-solid-svg-icons';
|
|
14
15
|
import ContextPanel from './contextPanel/ContextPanel.svelte';
|
|
15
|
-
import {
|
|
16
|
+
import { encodeState } from '../../../utils';
|
|
16
17
|
import AppPreview from './AppPreview.svelte';
|
|
17
18
|
import { userStore, workspaceStore } from '../../../stores';
|
|
18
19
|
import InlineScriptsPanel from './inlineScriptsPanel/InlineScriptsPanel.svelte';
|
|
@@ -20,11 +21,14 @@ import SettingsPanel from './SettingsPanel.svelte';
|
|
|
20
21
|
import { fly } from 'svelte/transition';
|
|
21
22
|
import UnsavedConfirmationModal from '../../common/confirmationModal/UnsavedConfirmationModal.svelte';
|
|
22
23
|
import { page } from '$app/stores';
|
|
24
|
+
import CssSettings from './componentsPanel/CssSettings.svelte';
|
|
25
|
+
import { findGridItem } from './appUtils';
|
|
23
26
|
export let app;
|
|
24
27
|
export let path;
|
|
25
28
|
export let initialMode = 'dnd';
|
|
26
29
|
export let policy;
|
|
27
30
|
export let summary;
|
|
31
|
+
export let fromHub = false;
|
|
28
32
|
const appStore = writable(app);
|
|
29
33
|
const worldStore = writable(undefined);
|
|
30
34
|
const staticOutputs = writable({});
|
|
@@ -38,6 +42,8 @@ const connectingInput = writable({
|
|
|
38
42
|
hoveredComponent: undefined
|
|
39
43
|
});
|
|
40
44
|
const runnableComponents = writable({});
|
|
45
|
+
const errorByComponent = writable({});
|
|
46
|
+
const focusedGrid = writable(undefined);
|
|
41
47
|
setContext('AppEditorContext', {
|
|
42
48
|
worldStore,
|
|
43
49
|
staticOutputs,
|
|
@@ -55,7 +61,10 @@ setContext('AppEditorContext', {
|
|
|
55
61
|
isEditor: true,
|
|
56
62
|
jobs: writable([]),
|
|
57
63
|
staticExporter: writable({}),
|
|
58
|
-
noBackend: false
|
|
64
|
+
noBackend: false,
|
|
65
|
+
errorByComponent,
|
|
66
|
+
openDebugRun: writable(undefined),
|
|
67
|
+
focusedGrid
|
|
59
68
|
});
|
|
60
69
|
let timeout = undefined;
|
|
61
70
|
$: $appStore && saveDraft();
|
|
@@ -99,21 +108,28 @@ else {
|
|
|
99
108
|
{#if !$userStore?.operator}
|
|
100
109
|
<UnsavedConfirmationModal />
|
|
101
110
|
{#if initialMode !== 'preview'}
|
|
102
|
-
<AppEditorHeader {policy} />
|
|
111
|
+
<AppEditorHeader {policy} {fromHub} />
|
|
103
112
|
{/if}
|
|
104
113
|
|
|
105
114
|
{#if previewing}
|
|
106
|
-
<
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
115
|
+
<SplitPanesWrapper>
|
|
116
|
+
<div
|
|
117
|
+
class={twMerge('bg-gray-100 h-full w-full', $appStore.css?.['app']?.['viewer']?.class)}
|
|
118
|
+
style={$appStore.css?.['app']?.['viewer']?.style}
|
|
119
|
+
>
|
|
120
|
+
<AppPreview
|
|
121
|
+
workspace={$workspaceStore ?? ''}
|
|
122
|
+
summary={$summaryStore}
|
|
123
|
+
app={$appStore}
|
|
124
|
+
appPath={path}
|
|
125
|
+
{breakpoint}
|
|
126
|
+
{policy}
|
|
127
|
+
isEditor
|
|
128
|
+
{context}
|
|
129
|
+
noBackend={false}
|
|
130
|
+
/>
|
|
131
|
+
</div>
|
|
132
|
+
</SplitPanesWrapper>
|
|
117
133
|
{:else}
|
|
118
134
|
<SplitPanesWrapper>
|
|
119
135
|
<Splitpanes class="max-w-full overflow-hidden">
|
|
@@ -125,15 +141,23 @@ else {
|
|
|
125
141
|
<Splitpanes horizontal>
|
|
126
142
|
<Pane size={$connectingInput?.opened ? 100 : 70}>
|
|
127
143
|
<div
|
|
128
|
-
class=
|
|
129
|
-
|
|
130
|
-
|
|
144
|
+
class={twMerge(
|
|
145
|
+
'bg-gray-100 h-full w-full',
|
|
146
|
+
$appStore.css?.['app']?.['viewer']?.class
|
|
147
|
+
)}
|
|
148
|
+
style={$appStore.css?.['app']?.['viewer']?.style}
|
|
131
149
|
>
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
150
|
+
<div
|
|
151
|
+
class="relative mx-auto w-full h-full overflow-auto {app.fullscreen
|
|
152
|
+
? ''
|
|
153
|
+
: 'max-w-6xl'}"
|
|
154
|
+
>
|
|
155
|
+
{#if $appStore.grid}
|
|
156
|
+
<div class={width}>
|
|
157
|
+
<GridEditor {policy} />
|
|
158
|
+
</div>
|
|
159
|
+
{/if}
|
|
160
|
+
</div>
|
|
137
161
|
</div>
|
|
138
162
|
</Pane>
|
|
139
163
|
<Pane size={$connectingInput?.opened ? 0 : 30}>
|
|
@@ -146,31 +170,42 @@ else {
|
|
|
146
170
|
</Pane>
|
|
147
171
|
<Pane size={21} minSize={5} maxSize={33}>
|
|
148
172
|
<div class="relative flex flex-col h-full">
|
|
149
|
-
<Tabs bind:selected={selectedTab}>
|
|
150
|
-
<Tab value="insert" size="xs">
|
|
151
|
-
<div class="m-1
|
|
173
|
+
<Tabs bind:selected={selectedTab} class="!border-b-2 !border-gray-200">
|
|
174
|
+
<Tab value="insert" size="xs" class="grow">
|
|
175
|
+
<div class="m-1 center-center gap-2">
|
|
152
176
|
<Icon data={faPlus} />
|
|
153
177
|
<span>Insert</span>
|
|
154
178
|
</div>
|
|
155
179
|
</Tab>
|
|
156
|
-
<Tab value="settings" size="xs">
|
|
157
|
-
<div class="m-1
|
|
180
|
+
<Tab value="settings" size="xs" class="grow">
|
|
181
|
+
<div class="m-1 center-center gap-2">
|
|
158
182
|
<Icon data={faSliders} />
|
|
159
183
|
<span>Settings</span>
|
|
160
184
|
</div>
|
|
161
185
|
</Tab>
|
|
162
|
-
<
|
|
186
|
+
<Tab value="css" size="xs" class="grow">
|
|
187
|
+
<div class="m-1 center-center gap-2">
|
|
188
|
+
<Icon data={faCode} />
|
|
189
|
+
<span>CSS</span>
|
|
190
|
+
</div>
|
|
191
|
+
</Tab>
|
|
192
|
+
<div slot="content" class="h-full overflow-y-auto pb-4">
|
|
163
193
|
<TabContent class="overflow-auto" value="settings">
|
|
164
194
|
{#if $selectedComponent !== undefined}
|
|
165
195
|
<SettingsPanel />
|
|
166
196
|
{:else}
|
|
167
|
-
<div class="
|
|
197
|
+
<div class="min-w-[150px] text-sm text-gray-500 text-center py-8 px-2">
|
|
198
|
+
Select a component to see the settings for it
|
|
199
|
+
</div>
|
|
168
200
|
{/if}
|
|
169
201
|
</TabContent>
|
|
170
202
|
<TabContent value="insert">
|
|
171
203
|
<ComponentList />
|
|
172
204
|
</TabContent>
|
|
173
|
-
|
|
205
|
+
<TabContent value="css">
|
|
206
|
+
<CssSettings />
|
|
207
|
+
</TabContent>
|
|
208
|
+
</div>
|
|
174
209
|
</Tabs>
|
|
175
210
|
{#if $connectingInput.opened}
|
|
176
211
|
<div
|
|
@@ -19,13 +19,14 @@ import Tooltip from '../../Tooltip.svelte';
|
|
|
19
19
|
import { AppService, Job, Policy } from '../../../gen';
|
|
20
20
|
import { userStore, workspaceStore } from '../../../stores';
|
|
21
21
|
import { faBug, faClipboard, faExternalLink, faFileExport, faGlobe, faSave } from '@fortawesome/free-solid-svg-icons';
|
|
22
|
-
import { AlignHorizontalSpaceAround, Expand, Eye, Laptop2, Loader2, MoreVertical, Pencil, Smartphone } from 'lucide-svelte';
|
|
22
|
+
import { AlignHorizontalSpaceAround, Expand, Eye, Laptop2, Loader2, MoreVertical, Pencil, SlidersHorizontal, Smartphone, X } from 'lucide-svelte';
|
|
23
23
|
import { getContext } from 'svelte';
|
|
24
24
|
import { Icon } from 'svelte-awesome';
|
|
25
25
|
import { Pane, Splitpanes } from 'svelte-splitpanes';
|
|
26
26
|
import { appToHubUrl, classNames, copyToClipboard, sendUserToast } from '../../../utils';
|
|
27
27
|
import { toStatic } from '../utils';
|
|
28
28
|
import AppExportButton from './AppExportButton.svelte';
|
|
29
|
+
import AppInputs from './AppInputs.svelte';
|
|
29
30
|
import PanelSection from './settingsPanel/common/PanelSection.svelte';
|
|
30
31
|
async function hash(message) {
|
|
31
32
|
const msgUint8 = new TextEncoder().encode(message); // encode as (utf-8) Uint8Array
|
|
@@ -35,20 +36,38 @@ async function hash(message) {
|
|
|
35
36
|
return hashHex;
|
|
36
37
|
}
|
|
37
38
|
export let policy;
|
|
38
|
-
|
|
39
|
+
export let fromHub = false;
|
|
40
|
+
const { app, summary, mode, breakpoint, appPath, jobs, staticExporter, errorByComponent, openDebugRun, focusedGrid, selectedComponent } = getContext('AppEditorContext');
|
|
39
41
|
const loading = {
|
|
40
42
|
publish: false,
|
|
41
43
|
save: false
|
|
42
44
|
};
|
|
45
|
+
$: if ($openDebugRun == undefined) {
|
|
46
|
+
$openDebugRun = (componentId) => {
|
|
47
|
+
jobsDrawerOpen = true;
|
|
48
|
+
const job = $jobs.find((job) => job.component === componentId);
|
|
49
|
+
if (job) {
|
|
50
|
+
selectedJobId = job.job;
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
}
|
|
43
54
|
let newPath = '';
|
|
44
55
|
let pathError = undefined;
|
|
45
56
|
let appExport;
|
|
46
57
|
let saveDrawerOpen = false;
|
|
47
58
|
let jobsDrawerOpen = false;
|
|
48
59
|
let publishDrawerOpen = false;
|
|
60
|
+
let inputsDrawerOpen = fromHub;
|
|
49
61
|
function closeSaveDrawer() {
|
|
50
62
|
saveDrawerOpen = false;
|
|
51
63
|
}
|
|
64
|
+
function collectStaticFields(fields) {
|
|
65
|
+
return Object.fromEntries(Object.entries(fields ?? {})
|
|
66
|
+
.filter(([k, v]) => v.type == 'static')
|
|
67
|
+
.map(([k, v]) => {
|
|
68
|
+
return [k, v['value']];
|
|
69
|
+
}));
|
|
70
|
+
}
|
|
52
71
|
async function computeTriggerables() {
|
|
53
72
|
const allTriggers = await Promise.all($app.grid
|
|
54
73
|
.flatMap((x) => {
|
|
@@ -61,11 +80,7 @@ async function computeTriggerables() {
|
|
|
61
80
|
})
|
|
62
81
|
.map(async (input) => {
|
|
63
82
|
if (input?.type == 'runnable') {
|
|
64
|
-
const staticInputs =
|
|
65
|
-
.filter(([k, v]) => v.type == 'static')
|
|
66
|
-
.map(([k, v]) => {
|
|
67
|
-
return [k, v['value']];
|
|
68
|
-
}));
|
|
83
|
+
const staticInputs = collectStaticFields(input.fields);
|
|
69
84
|
if (input.runnable?.type == 'runnableByName') {
|
|
70
85
|
let hex = await hash(input.runnable.inlineScript?.content);
|
|
71
86
|
return [`rawscript/${hex}`, staticInputs];
|
|
@@ -76,8 +91,13 @@ async function computeTriggerables() {
|
|
|
76
91
|
}
|
|
77
92
|
}
|
|
78
93
|
return [];
|
|
79
|
-
})
|
|
80
|
-
|
|
94
|
+
})
|
|
95
|
+
.concat(Object.values($app.hiddenInlineScripts).map(async (v) => {
|
|
96
|
+
let hex = await hash(v.inlineScript?.content);
|
|
97
|
+
const staticInputs = collectStaticFields(v.fields);
|
|
98
|
+
return [`rawscript/${hex}`, staticInputs];
|
|
99
|
+
})));
|
|
100
|
+
policy.triggerables = Object.fromEntries(allTriggers.filter((x) => x.length > 0));
|
|
81
101
|
policy.on_behalf_of = `u/${$userStore?.username}`;
|
|
82
102
|
policy.on_behalf_of_email = $userStore?.email;
|
|
83
103
|
}
|
|
@@ -146,6 +166,7 @@ let testJobLoader;
|
|
|
146
166
|
let job = undefined;
|
|
147
167
|
let testIsLoading = false;
|
|
148
168
|
$: selectedJobId && testJobLoader?.watchJob(selectedJobId);
|
|
169
|
+
$: hasErrors = Object.keys($errorByComponent).length > 0;
|
|
149
170
|
</script>
|
|
150
171
|
|
|
151
172
|
<TestJobLoader bind:this={testJobLoader} bind:isLoading={testIsLoading} bind:job />
|
|
@@ -156,7 +177,7 @@ $: selectedJobId && testJobLoader?.watchJob(selectedJobId);
|
|
|
156
177
|
bind:error={pathError}
|
|
157
178
|
bind:path={newPath}
|
|
158
179
|
initialPath=""
|
|
159
|
-
namePlaceholder="
|
|
180
|
+
namePlaceholder="app"
|
|
160
181
|
kind="app"
|
|
161
182
|
/>
|
|
162
183
|
|
|
@@ -170,6 +191,12 @@ $: selectedJobId && testJobLoader?.watchJob(selectedJobId);
|
|
|
170
191
|
</DrawerContent>
|
|
171
192
|
</Drawer>
|
|
172
193
|
|
|
194
|
+
<Drawer bind:open={inputsDrawerOpen} size="600px">
|
|
195
|
+
<DrawerContent title="App inputs configuration" on:close={() => (inputsDrawerOpen = false)}>
|
|
196
|
+
<AppInputs />
|
|
197
|
+
</DrawerContent>
|
|
198
|
+
</Drawer>
|
|
199
|
+
|
|
173
200
|
<Drawer bind:open={jobsDrawerOpen} size="900px">
|
|
174
201
|
<DrawerContent noPadding title="Debug Runs" on:close={() => (jobsDrawerOpen = false)}>
|
|
175
202
|
<Splitpanes class="!overflow-visible">
|
|
@@ -181,10 +208,13 @@ $: selectedJobId && testJobLoader?.watchJob(selectedJobId);
|
|
|
181
208
|
{#each $jobs ?? [] as { job, component } (job)}
|
|
182
209
|
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
|
183
210
|
<div
|
|
184
|
-
class=
|
|
211
|
+
class={classNames(
|
|
185
212
|
'border flex gap-1 truncate justify-between flex-row w-full items-center p-2 rounded-md cursor-pointer hover:bg-blue-50 hover:text-blue-400',
|
|
186
|
-
|
|
187
|
-
|
|
213
|
+
$errorByComponent[job] ? 'border border-red-500 bg-red-100' : '',
|
|
214
|
+
selectedJobId == job && !$errorByComponent[component]
|
|
215
|
+
? 'bg-blue-100 text-blue-600'
|
|
216
|
+
: ''
|
|
217
|
+
)}
|
|
188
218
|
on:click={() => (selectedJobId = job)}
|
|
189
219
|
>
|
|
190
220
|
<span class="text-xs truncate">{job}</span>
|
|
@@ -206,12 +236,14 @@ $: selectedJobId && testJobLoader?.watchJob(selectedJobId);
|
|
|
206
236
|
{:else}
|
|
207
237
|
<div class="flex flex-col h-full w-full gap-4 mb-4">
|
|
208
238
|
{#if job?.['running']}
|
|
209
|
-
<div class="flex flex-row-reverse w-full"
|
|
210
|
-
|
|
239
|
+
<div class="flex flex-row-reverse w-full">
|
|
240
|
+
<Button
|
|
211
241
|
color="red"
|
|
212
242
|
variant="border"
|
|
213
|
-
on:click={() => testJobLoader?.cancelJob()}
|
|
243
|
+
on:click={() => testJobLoader?.cancelJob()}
|
|
214
244
|
>
|
|
245
|
+
Cancel
|
|
246
|
+
</Button>
|
|
215
247
|
</div>
|
|
216
248
|
{/if}
|
|
217
249
|
<div class="p-2">
|
|
@@ -365,7 +397,23 @@ $: selectedJobId && testJobLoader?.watchJob(selectedJobId);
|
|
|
365
397
|
</ToggleButtonGroup>
|
|
366
398
|
</div>
|
|
367
399
|
</div>
|
|
368
|
-
|
|
400
|
+
{#if $focusedGrid !== undefined}
|
|
401
|
+
<Badge color="indigo">
|
|
402
|
+
<div class="flex flex-row gap-2 justify-center items-center">
|
|
403
|
+
<div>{`Sub grid: ${$focusedGrid.parentComponentId} (${$focusedGrid.subGridIndex})`}</div>
|
|
404
|
+
<button
|
|
405
|
+
on:click={() => {
|
|
406
|
+
$selectedComponent = undefined
|
|
407
|
+
$focusedGrid = undefined
|
|
408
|
+
}}
|
|
409
|
+
>
|
|
410
|
+
<X size={14} />
|
|
411
|
+
</button>
|
|
412
|
+
</div>
|
|
413
|
+
</Badge>
|
|
414
|
+
{/if}
|
|
415
|
+
|
|
416
|
+
<div class="flex flex-row gap-2 justify-end items-center overflow-visible">
|
|
369
417
|
<Dropdown
|
|
370
418
|
placement="bottom-end"
|
|
371
419
|
btnClasses="!text-gray-700 !bg-transparent hover:!bg-gray-400/20 !p-[6px] hidden lg:block"
|
|
@@ -396,10 +444,18 @@ $: selectedJobId && testJobLoader?.watchJob(selectedJobId);
|
|
|
396
444
|
>
|
|
397
445
|
<MoreVertical size={20} />
|
|
398
446
|
</Dropdown>
|
|
447
|
+
<span class="hidden md:inline">
|
|
448
|
+
<Button on:click={() => (inputsDrawerOpen = true)} color="light" size="xs" variant="border">
|
|
449
|
+
<span class="flex gap-2">
|
|
450
|
+
<SlidersHorizontal size={14} />
|
|
451
|
+
App inputs
|
|
452
|
+
</span>
|
|
453
|
+
</Button>
|
|
454
|
+
</span>
|
|
399
455
|
<span class="hidden md:inline">
|
|
400
456
|
<Button
|
|
401
457
|
on:click={() => (jobsDrawerOpen = true)}
|
|
402
|
-
color=
|
|
458
|
+
color={hasErrors ? 'red' : 'light'}
|
|
403
459
|
size="xs"
|
|
404
460
|
variant="border"
|
|
405
461
|
startIcon={{ icon: faBug }}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
<script>import { Alert } from '../../common';
|
|
2
|
+
import Toggle from '../../Toggle.svelte';
|
|
3
|
+
import { getContext } from 'svelte';
|
|
4
|
+
import AppComponentInput from './AppComponentInput.svelte';
|
|
5
|
+
import InputsSpecsEditor from './settingsPanel/InputsSpecsEditor.svelte';
|
|
6
|
+
const { app, lazyGrid } = getContext('AppEditorContext');
|
|
7
|
+
let resourceOnly = true;
|
|
8
|
+
</script>
|
|
9
|
+
|
|
10
|
+
<Alert type="info" title="Configurations">
|
|
11
|
+
In order to properly configure the app, you need to fill in the inputs below.
|
|
12
|
+
</Alert>
|
|
13
|
+
<div class="mt-2 flex flex-row-reverse">
|
|
14
|
+
<Toggle bind:checked={resourceOnly} options={{ right: 'Resource only' }} />
|
|
15
|
+
</div>
|
|
16
|
+
<div class="gap-4 flex flex-col pt-4">
|
|
17
|
+
{#each $lazyGrid as gridItem (gridItem.data.id)}
|
|
18
|
+
<div>
|
|
19
|
+
{#if gridItem.data.type === 'tablecomponent'}
|
|
20
|
+
<div>
|
|
21
|
+
<AppComponentInput bind:component={gridItem.data} {resourceOnly} />
|
|
22
|
+
<div class="ml-4 mt-4">
|
|
23
|
+
{#each gridItem.data.actionButtons as actionButton (actionButton.id)}
|
|
24
|
+
<AppComponentInput bind:component={actionButton.data} {resourceOnly} />
|
|
25
|
+
{/each}
|
|
26
|
+
</div>
|
|
27
|
+
</div>
|
|
28
|
+
{:else}
|
|
29
|
+
<AppComponentInput bind:component={gridItem.data} {resourceOnly} />
|
|
30
|
+
{/if}
|
|
31
|
+
</div>
|
|
32
|
+
{/each}
|
|
33
|
+
</div>
|
|
34
|
+
|
|
35
|
+
{#if $app?.hiddenInlineScripts?.length > 0}
|
|
36
|
+
<div class="font-bold text-lg">Background script inputs</div>
|
|
37
|
+
<div class="gap-4 flex flex-col pt-4">
|
|
38
|
+
{#each $app?.hiddenInlineScripts ?? [] as script, index (script.name)}
|
|
39
|
+
<div class="border p-2">
|
|
40
|
+
<div class="text-sm font-bold">{script.name}</div>
|
|
41
|
+
|
|
42
|
+
{#if resourceOnly && Object.keys(script.fields).filter((fieldKey) => {
|
|
43
|
+
const fields = script.fields
|
|
44
|
+
const field = fields[fieldKey]
|
|
45
|
+
return field.fieldType === 'object' && field.format?.startsWith('resource-')
|
|
46
|
+
}).length === 0}
|
|
47
|
+
<span class="text-sm text-gray-600">No resource input</span>
|
|
48
|
+
{:else}
|
|
49
|
+
<InputsSpecsEditor
|
|
50
|
+
id={`bg_${index}`}
|
|
51
|
+
shouldCapitalize={false}
|
|
52
|
+
bind:inputSpecs={script.fields}
|
|
53
|
+
userInputEnabled={false}
|
|
54
|
+
{resourceOnly}
|
|
55
|
+
/>
|
|
56
|
+
{/if}
|
|
57
|
+
</div>
|
|
58
|
+
{/each}
|
|
59
|
+
</div>
|
|
60
|
+
{/if}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { SvelteComponentTyped } from "svelte";
|
|
2
|
+
declare const __propDef: {
|
|
3
|
+
props: Record<string, never>;
|
|
4
|
+
events: {
|
|
5
|
+
[evt: string]: CustomEvent<any>;
|
|
6
|
+
};
|
|
7
|
+
slots: {};
|
|
8
|
+
};
|
|
9
|
+
export type AppInputsProps = typeof __propDef.props;
|
|
10
|
+
export type AppInputsEvents = typeof __propDef.events;
|
|
11
|
+
export type AppInputsSlots = typeof __propDef.slots;
|
|
12
|
+
export default class AppInputs extends SvelteComponentTyped<AppInputsProps, AppInputsEvents, AppInputsSlots> {
|
|
13
|
+
}
|
|
14
|
+
export {};
|
|
@@ -45,7 +45,10 @@ setContext('AppEditorContext', {
|
|
|
45
45
|
isEditor,
|
|
46
46
|
jobs: writable([]),
|
|
47
47
|
staticExporter: writable({}),
|
|
48
|
-
noBackend
|
|
48
|
+
noBackend,
|
|
49
|
+
errorByComponent: writable({}),
|
|
50
|
+
openDebugRun: writable(undefined),
|
|
51
|
+
focusedGrid: writable(undefined)
|
|
49
52
|
});
|
|
50
53
|
let mounted = false;
|
|
51
54
|
onMount(() => {
|
|
@@ -57,10 +60,12 @@ $: lockedClasses = isLocked ? '!max-h-[400px] overflow-hidden pointer-events-non
|
|
|
57
60
|
</script>
|
|
58
61
|
|
|
59
62
|
<div class="relative">
|
|
60
|
-
<div
|
|
61
|
-
|
|
63
|
+
<div
|
|
64
|
+
class="{$$props.class} {lockedClasses} h-full
|
|
65
|
+
w-full {app.fullscreen ? '' : 'max-w-6xl'} mx-auto"
|
|
66
|
+
>
|
|
62
67
|
{#if $appStore.grid}
|
|
63
|
-
<div class={classNames('mx-auto
|
|
68
|
+
<div class={classNames('mx-auto', width)}>
|
|
64
69
|
<GridEditor {policy} />
|
|
65
70
|
</div>
|
|
66
71
|
{/if}
|
|
@@ -69,10 +74,10 @@ $: lockedClasses = isLocked ? '!max-h-[400px] overflow-hidden pointer-events-non
|
|
|
69
74
|
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
|
70
75
|
<div
|
|
71
76
|
transition:fade|local={{ duration: 200, easing: cubicOut }}
|
|
72
|
-
on:click={() => isLocked = false}
|
|
77
|
+
on:click={() => (isLocked = false)}
|
|
73
78
|
class="absolute inset-0 center-center bg-black/20 z-50 backdrop-blur-[1px] cursor-pointer"
|
|
74
79
|
>
|
|
75
|
-
<Button on:click={() => isLocked = false}>
|
|
80
|
+
<Button on:click={() => (isLocked = false)}>
|
|
76
81
|
Unlock preview
|
|
77
82
|
<Unlock size={18} class="ml-1" strokeWidth={2.5} />
|
|
78
83
|
</Button>
|
|
@@ -1,12 +1,21 @@
|
|
|
1
1
|
<script>import { classNames } from '../../../utils';
|
|
2
|
-
import { Anchor, Move } from 'lucide-svelte';
|
|
3
|
-
import { createEventDispatcher } from 'svelte';
|
|
2
|
+
import { Anchor, Bug, Move } from 'lucide-svelte';
|
|
3
|
+
import { createEventDispatcher, getContext } from 'svelte';
|
|
4
|
+
import Popover from '../../Popover.svelte';
|
|
5
|
+
import { Alert, Button } from '../../common';
|
|
4
6
|
export let component;
|
|
5
7
|
export let selected;
|
|
6
8
|
export let locked = false;
|
|
7
9
|
export let pointerdown = false;
|
|
8
10
|
export let hover = false;
|
|
9
11
|
const dispatch = createEventDispatcher();
|
|
12
|
+
const { errorByComponent, openDebugRun, focusedGrid, worldStore } = getContext('AppEditorContext');
|
|
13
|
+
$: error = Object.values($errorByComponent).find((e) => e.componentId === component.id);
|
|
14
|
+
function openDebugRuns() {
|
|
15
|
+
if ($openDebugRun) {
|
|
16
|
+
$openDebugRun(component.id);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
10
19
|
</script>
|
|
11
20
|
|
|
12
21
|
<span
|
|
@@ -52,3 +61,32 @@ const dispatch = createEventDispatcher();
|
|
|
52
61
|
<Move size={14} />
|
|
53
62
|
</span>
|
|
54
63
|
{/if}
|
|
64
|
+
|
|
65
|
+
{#if error}
|
|
66
|
+
{@const json = JSON.parse(JSON.stringify(error.error))}
|
|
67
|
+
<span
|
|
68
|
+
title="Error"
|
|
69
|
+
class={classNames(
|
|
70
|
+
'text-red-500 px-1 text-2xs py-0.5 font-bold w-fit absolute border border-red-500 -bottom-1 shadow left-1/2 transform -translate-x-1/2 z-50 cursor-pointer',
|
|
71
|
+
'bg-red-100/80'
|
|
72
|
+
)}
|
|
73
|
+
>
|
|
74
|
+
<Popover notClickable placement="bottom" popupClass="!bg-white border w-96">
|
|
75
|
+
<Bug size={14} />
|
|
76
|
+
<span slot="text">
|
|
77
|
+
<div class="bg-white">
|
|
78
|
+
<Alert type="error" title={`${json?.name}: ${json?.message}`}>
|
|
79
|
+
<div class="flex flex-col gap-2">
|
|
80
|
+
<div>
|
|
81
|
+
<pre class=" whitespace-pre-wrap text-gray-900 bg-white border w-full p-4 text-xs"
|
|
82
|
+
>{json?.stack ?? ''}
|
|
83
|
+
</pre>
|
|
84
|
+
</div>
|
|
85
|
+
<Button color="red" variant="border" on:click={openDebugRuns}>Open Debug Runs</Button>
|
|
86
|
+
</div>
|
|
87
|
+
</Alert>
|
|
88
|
+
</div>
|
|
89
|
+
</span>
|
|
90
|
+
</Popover>
|
|
91
|
+
</span>
|
|
92
|
+
{/if}
|