windmill-components 1.56.2 → 1.57.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 +5 -1
- package/components/ArgInput.svelte +6 -6
- package/components/CenteredModal.svelte +15 -14
- package/components/CenteredModal.svelte.d.ts +1 -0
- package/components/DisplayResult.svelte +1 -1
- package/components/Dropdown.svelte +4 -3
- package/components/Dropdown.svelte.d.ts +2 -0
- package/components/Editor.svelte +6 -4
- package/components/Editor.svelte.d.ts +2 -0
- package/components/EditorBar.svelte +15 -1
- package/components/FlowBuilder.svelte +18 -10
- package/components/FlowPreviewContent.svelte +1 -1
- package/components/GroupEditor.svelte +1 -0
- package/components/IconedResourceType.svelte +2 -2
- package/components/InputTransformForm.svelte +50 -40
- package/components/InputTransformForm.svelte.d.ts +1 -0
- package/components/ItemPicker.svelte +63 -57
- package/components/ItemPicker.svelte.d.ts +1 -2
- package/components/LogViewer.svelte +6 -5
- package/components/ModulePreview.svelte +20 -22
- package/components/MoveDrawer.svelte +40 -16
- package/components/MoveDrawer.svelte.d.ts +2 -2
- package/components/PageHeader.svelte +1 -1
- package/components/Path.svelte +5 -2
- package/components/Popover.svelte +14 -20
- package/components/Popover.svelte.d.ts +5 -0
- package/components/RadioButton.svelte +5 -3
- package/components/RadioButton.svelte.d.ts +2 -0
- package/components/ResourceEditor.svelte +2 -1
- package/components/ResourcePicker.svelte +1 -0
- package/components/RunChart.svelte +0 -1
- package/components/SchemaEditor.svelte +3 -0
- package/components/SchemaForm.svelte +86 -77
- package/components/SchemaForm.svelte.d.ts +4 -0
- package/components/ScriptBuilder.svelte +2 -1
- package/components/ScriptEditor.svelte +88 -77
- package/components/ShareModal.svelte.d.ts +2 -2
- package/components/SimpleEditor.svelte +17 -0
- package/components/Star.svelte +15 -9
- package/components/StringTypeNarrowing.svelte +30 -8
- package/components/TemplateEditor.svelte +21 -11
- package/components/TestJobLoader.svelte +94 -68
- package/components/TestJobLoader.svelte.d.ts +10 -8
- package/components/Toggle.svelte +30 -7
- package/components/Toggle.svelte.d.ts +4 -0
- package/components/Tooltip.svelte +1 -1
- package/components/VariableEditor.svelte +4 -3
- package/components/VariableEditor.svelte.d.ts +2 -2
- package/components/apps/components/DisplayComponent.svelte +1 -1
- package/components/apps/components/buttons/AppButton.svelte +16 -10
- package/components/apps/components/buttons/AppButton.svelte.d.ts +1 -0
- package/components/apps/components/dataDisplay/AppBarChart.svelte +17 -8
- package/components/apps/components/dataDisplay/AppHtml.svelte +23 -0
- package/components/apps/components/dataDisplay/AppHtml.svelte.d.ts +23 -0
- package/components/apps/components/dataDisplay/AppPieChart.svelte +11 -7
- package/components/apps/components/dataDisplay/AppScatterChart.svelte +46 -0
- package/components/apps/components/dataDisplay/AppScatterChart.svelte.d.ts +21 -0
- package/components/apps/components/dataDisplay/AppText.svelte +44 -7
- package/components/apps/components/dataDisplay/AppText.svelte.d.ts +1 -0
- package/components/apps/components/dataDisplay/AppTimeseries.svelte +57 -0
- package/components/apps/components/dataDisplay/AppTimeseries.svelte.d.ts +22 -0
- package/components/apps/components/form/AppForm.svelte +35 -18
- 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/InputValue.svelte +20 -14
- package/components/apps/components/helpers/InputValue.svelte.d.ts +3 -0
- package/components/apps/components/helpers/NonRunnableComponent.svelte +7 -6
- package/components/apps/components/helpers/NonRunnableComponent.svelte.d.ts +1 -1
- package/components/apps/components/helpers/RefreshButton.svelte +16 -11
- package/components/apps/components/helpers/RefreshButton.svelte.d.ts +2 -0
- package/components/apps/components/helpers/RunnableComponent.svelte +119 -102
- package/components/apps/components/helpers/RunnableWrapper.svelte +6 -1
- package/components/apps/components/selectInputs/AppCheckbox.svelte +4 -0
- package/components/apps/components/selectInputs/AppSelect.svelte +2 -0
- package/components/apps/components/table/AppTable.svelte +64 -35
- package/components/apps/components/table/AppTableFooter.svelte +2 -1
- package/components/apps/components/table/tableOptions.d.ts +2 -9
- package/components/apps/components/table/tableOptions.js +5 -2
- package/components/apps/components/textInputs/AppTextInput.svelte +7 -4
- package/components/apps/editor/AppEditor.svelte +136 -65
- package/components/apps/editor/AppEditor.svelte.d.ts +3 -0
- package/components/apps/editor/AppEditorHeader.svelte +349 -51
- package/components/apps/editor/AppEditorHeader.svelte.d.ts +2 -4
- package/components/apps/editor/AppExportButton.svelte +34 -0
- package/components/apps/editor/AppExportButton.svelte.d.ts +17 -0
- package/components/apps/editor/AppPreview.svelte +20 -7
- package/components/apps/editor/AppPreview.svelte.d.ts +6 -0
- package/components/apps/editor/AppPublishButton.svelte +53 -0
- package/components/apps/editor/AppPublishButton.svelte.d.ts +18 -0
- package/components/apps/editor/ComponentEditor.svelte +39 -8
- package/components/apps/editor/ComponentEditor.svelte.d.ts +1 -0
- package/components/apps/editor/ComponentHeader.svelte +38 -29
- package/components/apps/editor/ComponentHeader.svelte.d.ts +3 -1
- package/components/apps/editor/GridEditor.svelte +105 -67
- package/components/apps/editor/GridEditor.svelte.d.ts +6 -1
- package/components/apps/editor/RecomputeAllComponents.svelte +80 -19
- package/components/apps/editor/SettingsPanel.svelte +2 -2
- package/components/apps/editor/TablePanel.svelte +1 -0
- package/components/apps/editor/componentsPanel/ComponentList.svelte +30 -39
- package/components/apps/editor/componentsPanel/componentStaticValues.d.ts +2 -1
- package/components/apps/editor/componentsPanel/componentStaticValues.js +3 -2
- package/components/apps/editor/componentsPanel/data.js +201 -91
- package/components/apps/editor/contextPanel/ComponentOutputViewer.svelte +1 -0
- package/components/apps/editor/contextPanel/ContextPanel.svelte +69 -47
- package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte +6 -2
- package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte.d.ts +1 -0
- package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +56 -20
- package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte.d.ts +1 -0
- package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorDrawer.svelte +5 -1
- package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorDrawer.svelte.d.ts +2 -0
- package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorPanel.svelte +72 -23
- package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorPanel.svelte.d.ts +1 -0
- package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanel.svelte +30 -22
- package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte +78 -77
- package/components/apps/editor/settingsPanel/AlignmentEditor.svelte +38 -33
- package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +4 -4
- package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte.d.ts +1 -11
- package/components/apps/editor/settingsPanel/ComponentInputTypeEditor.svelte +27 -9
- package/components/apps/editor/settingsPanel/ComponentPanel.svelte +19 -24
- package/components/apps/editor/settingsPanel/ComponentPanel.svelte.d.ts +1 -0
- package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +12 -5
- package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte.d.ts +2 -3
- package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte +59 -33
- package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte.d.ts +5 -2
- package/components/apps/editor/settingsPanel/Recompute.svelte +2 -2
- package/components/apps/editor/settingsPanel/SelectedRunnable.svelte +21 -3
- package/components/apps/editor/settingsPanel/SubTypeEditor.svelte +1 -3
- package/components/apps/editor/settingsPanel/SubTypeEditor.svelte.d.ts +0 -1
- package/components/apps/editor/settingsPanel/TableActions.svelte +27 -18
- package/components/apps/editor/settingsPanel/TableActions.svelte.d.ts +1 -0
- package/components/apps/editor/settingsPanel/common/PanelSection.svelte +10 -2
- package/components/apps/editor/settingsPanel/common/PanelSection.svelte.d.ts +3 -0
- package/components/apps/editor/settingsPanel/inputEditor/ConnectedInputEditor.svelte +6 -4
- package/components/apps/editor/settingsPanel/inputEditor/JsonEditor.svelte +24 -0
- package/components/apps/editor/settingsPanel/inputEditor/JsonEditor.svelte.d.ts +17 -0
- package/components/apps/editor/settingsPanel/inputEditor/RowInputEditor.svelte +6 -0
- package/components/apps/editor/settingsPanel/inputEditor/RowInputEditor.svelte.d.ts +17 -0
- package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +11 -21
- package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte.d.ts +0 -1
- package/components/apps/editor/settingsPanel/mainInput/InlineScriptList.svelte +1 -2
- package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte +42 -13
- package/components/apps/editorUtils.d.ts +1 -0
- package/components/apps/editorUtils.js +11 -0
- package/components/apps/gridUtils.js +2 -1
- package/components/apps/inputType.d.ts +12 -6
- package/components/apps/rx.d.ts +3 -3
- package/components/apps/rx.js +9 -4
- package/components/apps/store.d.ts +2 -0
- package/components/apps/store.js +2 -0
- package/components/apps/types.d.ts +20 -4
- package/components/apps/utils.d.ts +2 -2
- package/components/apps/utils.js +25 -9
- package/components/common/button/Button.svelte +8 -8
- package/components/common/button/Button.svelte.d.ts +2 -0
- package/components/common/confirmationModal/ConfirmationModal.svelte +1 -0
- package/components/common/confirmationModal/UnsavedConfirmationModal.svelte +4 -1
- package/components/common/popup/Popup.svelte +1 -1
- package/components/common/table/AppRow.svelte +31 -4
- package/components/common/table/AppRow.svelte.d.ts +4 -0
- package/components/common/table/FlowRow.svelte +9 -5
- package/components/common/table/Row.svelte +10 -8
- package/components/common/table/ScriptRow.svelte +15 -13
- package/components/common/tabs/Tabs.svelte +1 -1
- package/components/common/toggleButton/ToggleButton.svelte +2 -0
- package/components/common/toggleButton/ToggleButton.svelte.d.ts +1 -0
- package/components/flows/CreateActionsApp.svelte +43 -0
- package/components/flows/CreateActionsApp.svelte.d.ts +14 -0
- package/components/flows/CreateActionsFlow.svelte +6 -1
- package/components/flows/content/DynamicInputHelpBox.svelte +1 -1
- package/components/flows/content/FlowConstants.svelte +82 -0
- package/components/flows/content/FlowConstants.svelte.d.ts +14 -0
- package/components/flows/content/FlowEditorPanel.svelte +3 -0
- package/components/flows/content/FlowInputs.svelte +2 -2
- package/components/flows/content/FlowModuleComponent.svelte +4 -1
- package/components/flows/content/FlowModuleHeader.svelte +41 -89
- package/components/flows/content/FlowModuleHeader.svelte.d.ts +2 -2
- package/components/flows/content/FlowSettings.svelte +1 -1
- package/components/flows/flowStore.d.ts +1 -1
- package/components/flows/flowStore.js +8 -8
- package/components/flows/header/FlowImportExportMenu.svelte +1 -1
- package/components/flows/header/FlowPreviewButtons.svelte +2 -1
- package/components/flows/map/FlowConstantsItem.svelte +13 -0
- package/components/flows/map/FlowConstantsItem.svelte.d.ts +14 -0
- package/components/flows/map/FlowInputsItem.svelte +1 -2
- package/components/flows/map/FlowModuleSchemaItem.svelte +34 -25
- package/components/flows/map/FlowModuleSchemaMap.svelte +9 -3
- package/components/flows/map/FlowSettingsItem.svelte +6 -8
- package/components/flows/pickers/PickHubScript.svelte +1 -1
- package/components/flows/propPicker/PropPickerWrapper.svelte +42 -31
- package/components/home/ItemsList.svelte +6 -4
- package/components/icons/ClickhouseIcon.svelte +22 -0
- package/components/icons/ClickhouseIcon.svelte.d.ts +17 -0
- package/components/icons/FaunadbIcon.svelte +19 -0
- package/components/icons/FaunadbIcon.svelte.d.ts +17 -0
- package/components/icons/OpenaiIcon.svelte +18 -0
- package/components/icons/OpenaiIcon.svelte.d.ts +17 -0
- package/components/icons/index.d.ts +7 -1
- package/components/icons/index.js +8 -2
- package/components/propertyPicker/ObjectViewer.svelte +11 -4
- package/components/propertyPicker/PropPicker.svelte +1 -1
- package/components/scriptEditor/LogPanel.svelte +26 -22
- package/components/sidebar/FavoriteMenu.svelte +23 -19
- package/components/sidebar/SidebarContent.svelte +16 -16
- package/components/sidebar/WorkspaceMenu.svelte +18 -17
- package/components/splitPanes/SplitPanesWrapper.svelte +1 -5
- package/components/splitPanes/SplitPanesWrapper.svelte.d.ts +0 -1
- package/editorUtils.js +2 -0
- package/gen/core/OpenAPI.js +1 -1
- package/gen/models/Policy.d.ts +1 -0
- package/gen/services/AppService.d.ts +18 -0
- package/gen/services/AppService.js +30 -0
- package/gen/services/GranularAclService.d.ts +3 -3
- package/gen/services/ResourceService.d.ts +15 -0
- package/gen/services/ResourceService.js +17 -0
- package/infer.js +4 -0
- package/logout.d.ts +1 -0
- package/logout.js +5 -3
- package/package.json +502 -489
- package/stores.d.ts +1 -0
- package/stores.js +13 -5
- package/utils.d.ts +1 -1
- package/utils.js +17 -10
- package/components/apps/CreateApp.svelte +0 -68
- package/components/apps/CreateApp.svelte.d.ts +0 -14
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<script>import Button from '../../../common/button/Button.svelte';
|
|
2
2
|
import { faTrash } from '@fortawesome/free-solid-svg-icons';
|
|
3
|
-
import { createEventDispatcher, onMount } from 'svelte';
|
|
3
|
+
import { createEventDispatcher, getContext, onMount } from 'svelte';
|
|
4
4
|
import { CheckCircle, Code2, X } from 'lucide-svelte';
|
|
5
5
|
import InlineScriptEditorDrawer from './InlineScriptEditorDrawer.svelte';
|
|
6
6
|
import { inferArgs } from '../../../../infer';
|
|
@@ -8,9 +8,13 @@ import Badge from '../../../common/badge/Badge.svelte';
|
|
|
8
8
|
import { fly } from 'svelte/transition';
|
|
9
9
|
import Editor from '../../../Editor.svelte';
|
|
10
10
|
import { scriptLangToEditorLang } from '../../../../utils';
|
|
11
|
+
import Tooltip from '../../../Tooltip.svelte';
|
|
11
12
|
let inlineScriptEditorDrawer;
|
|
12
13
|
export let inlineScript;
|
|
13
14
|
export let name = undefined;
|
|
15
|
+
export let id;
|
|
16
|
+
const { runnableComponents } = getContext('AppEditorContext');
|
|
17
|
+
let editor;
|
|
14
18
|
let validCode = false;
|
|
15
19
|
async function inferInlineScriptSchema(language, content, schema) {
|
|
16
20
|
try {
|
|
@@ -29,12 +33,13 @@ onMount(async () => {
|
|
|
29
33
|
}
|
|
30
34
|
});
|
|
31
35
|
const dispatch = createEventDispatcher();
|
|
36
|
+
let runLoading = false;
|
|
32
37
|
</script>
|
|
33
38
|
|
|
34
|
-
<InlineScriptEditorDrawer bind:this={inlineScriptEditorDrawer} bind:inlineScript />
|
|
39
|
+
<InlineScriptEditorDrawer {editor} bind:this={inlineScriptEditorDrawer} bind:inlineScript />
|
|
35
40
|
|
|
36
|
-
<div class="h-full
|
|
37
|
-
<div class="flex justify-between w-full gap-1 flex-row items-center">
|
|
41
|
+
<div class="h-full flex flex-col gap-1" transition:fly={{ duration: 50 }}>
|
|
42
|
+
<div class="flex justify-between w-full gap-1 px-2 pt-1 flex-row items-center">
|
|
38
43
|
{#if name !== undefined}
|
|
39
44
|
<input bind:value={name} placeholder="Inline script name" />
|
|
40
45
|
{/if}
|
|
@@ -50,13 +55,41 @@ const dispatch = createEventDispatcher();
|
|
|
50
55
|
{/if}
|
|
51
56
|
|
|
52
57
|
<Button
|
|
53
|
-
size="xs"
|
|
54
|
-
color="light"
|
|
55
58
|
variant="border"
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
on:click={() =>
|
|
59
|
-
|
|
59
|
+
size="xs"
|
|
60
|
+
color="blue"
|
|
61
|
+
on:click={async () => {
|
|
62
|
+
editor.format()
|
|
63
|
+
}}
|
|
64
|
+
>
|
|
65
|
+
Format <Tooltip>Ctrl+S</Tooltip>
|
|
66
|
+
</Button>
|
|
67
|
+
{#if id.startsWith('unused-')}
|
|
68
|
+
<Button
|
|
69
|
+
size="xs"
|
|
70
|
+
color="light"
|
|
71
|
+
variant="border"
|
|
72
|
+
iconOnly
|
|
73
|
+
startIcon={{ icon: faTrash }}
|
|
74
|
+
on:click={() => dispatch('delete')}
|
|
75
|
+
/>
|
|
76
|
+
{:else}
|
|
77
|
+
<Button
|
|
78
|
+
loading={runLoading}
|
|
79
|
+
size="xs"
|
|
80
|
+
color="blue"
|
|
81
|
+
on:click={async () => {
|
|
82
|
+
runLoading = true
|
|
83
|
+
await $runnableComponents[id]?.()
|
|
84
|
+
runLoading = false
|
|
85
|
+
}}
|
|
86
|
+
>
|
|
87
|
+
Run <Tooltip
|
|
88
|
+
>Ctrl+Enter to run the script and see the result in the component directly</Tooltip
|
|
89
|
+
>
|
|
90
|
+
</Button>
|
|
91
|
+
{/if}
|
|
92
|
+
|
|
60
93
|
<Button
|
|
61
94
|
size="xs"
|
|
62
95
|
color="blue"
|
|
@@ -74,20 +107,23 @@ const dispatch = createEventDispatcher();
|
|
|
74
107
|
|
|
75
108
|
<div class="border h-full">
|
|
76
109
|
<Editor
|
|
110
|
+
bind:this={editor}
|
|
77
111
|
class="flex flex-1 grow h-full"
|
|
78
112
|
lang={scriptLangToEditorLang(inlineScript?.language)}
|
|
79
113
|
bind:code={inlineScript.content}
|
|
80
|
-
fixedOverflowWidgets={
|
|
81
|
-
|
|
114
|
+
fixedOverflowWidgets={true}
|
|
115
|
+
cmdEnterAction={async () => {
|
|
116
|
+
runLoading = true
|
|
117
|
+
await $runnableComponents[id]?.()
|
|
118
|
+
runLoading = false
|
|
119
|
+
}}
|
|
120
|
+
on:change={async (e) => {
|
|
82
121
|
if (inlineScript) {
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
inlineScript
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
inlineScript.schema = schema
|
|
90
|
-
inlineScript = inlineScript
|
|
122
|
+
const oldSchema = JSON.stringify(inlineScript.schema)
|
|
123
|
+
await inferInlineScriptSchema(inlineScript?.language, e.detail, inlineScript.schema)
|
|
124
|
+
if (JSON.stringify(inlineScript.schema) != oldSchema) {
|
|
125
|
+
inlineScript = inlineScript
|
|
126
|
+
}
|
|
91
127
|
}
|
|
92
128
|
}}
|
|
93
129
|
/>
|
|
@@ -3,6 +3,7 @@ import ScriptEditor from '../../../ScriptEditor.svelte';
|
|
|
3
3
|
import { faSave } from '@fortawesome/free-solid-svg-icons';
|
|
4
4
|
let scriptEditorDrawer;
|
|
5
5
|
export let inlineScript;
|
|
6
|
+
export let editor = undefined;
|
|
6
7
|
export function openDrawer() {
|
|
7
8
|
scriptEditorDrawer.openDrawer?.();
|
|
8
9
|
}
|
|
@@ -13,7 +14,10 @@ export function openDrawer() {
|
|
|
13
14
|
title="Script Editor"
|
|
14
15
|
noPadding
|
|
15
16
|
forceOverflowVisible
|
|
16
|
-
on:close={
|
|
17
|
+
on:close={() => {
|
|
18
|
+
scriptEditorDrawer.closeDrawer()
|
|
19
|
+
editor?.setCode(inlineScript.content)
|
|
20
|
+
}}
|
|
17
21
|
>
|
|
18
22
|
{#if inlineScript}
|
|
19
23
|
<ScriptEditor
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { SvelteComponentTyped } from "svelte";
|
|
2
|
+
import type Editor from '../../../Editor.svelte';
|
|
2
3
|
import type { InlineScript } from '../../types';
|
|
3
4
|
declare const __propDef: {
|
|
4
5
|
props: {
|
|
5
6
|
inlineScript: InlineScript;
|
|
7
|
+
editor?: Editor | undefined;
|
|
6
8
|
openDrawer?: (() => void) | undefined;
|
|
7
9
|
};
|
|
8
10
|
events: {
|
|
@@ -1,14 +1,22 @@
|
|
|
1
|
-
<script>import
|
|
1
|
+
<script>import { Drawer, DrawerContent } from '../../../common';
|
|
2
|
+
import Button from '../../../common/button/Button.svelte';
|
|
2
3
|
import FlowModuleScript from '../../../flows/content/FlowModuleScript.svelte';
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
4
|
+
import FlowPathViewer from '../../../flows/content/FlowPathViewer.svelte';
|
|
5
|
+
import { inferArgs } from '../../../../infer';
|
|
6
|
+
import { emptySchema, getScriptByPath } from '../../../../utils';
|
|
7
|
+
import { faCodeBranch, faExternalLinkAlt, faEye, faPen } from '@fortawesome/free-solid-svg-icons';
|
|
5
8
|
import { clearResultAppInput } from '../../utils';
|
|
6
9
|
import EmptyInlineScript from './EmptyInlineScript.svelte';
|
|
7
10
|
import InlineScriptEditor from './InlineScriptEditor.svelte';
|
|
8
11
|
export let componentInput;
|
|
12
|
+
export let id;
|
|
9
13
|
async function fork(path) {
|
|
10
|
-
|
|
14
|
+
let { content, language, schema } = await getScriptByPath(path);
|
|
11
15
|
if (componentInput && componentInput.type == 'runnable') {
|
|
16
|
+
if (!schema || Object.keys(schema).length == 0) {
|
|
17
|
+
schema = emptySchema();
|
|
18
|
+
await inferArgs(language, content, schema);
|
|
19
|
+
}
|
|
12
20
|
componentInput.runnable = {
|
|
13
21
|
type: 'runnableByName',
|
|
14
22
|
name: path,
|
|
@@ -24,13 +32,21 @@ async function fork(path) {
|
|
|
24
32
|
console.error('componentInput is undefined');
|
|
25
33
|
}
|
|
26
34
|
}
|
|
27
|
-
|
|
35
|
+
let drawerFlowViewer;
|
|
36
|
+
let flowPath = '';
|
|
28
37
|
</script>
|
|
29
38
|
|
|
39
|
+
<Drawer bind:this={drawerFlowViewer} size="1200px">
|
|
40
|
+
<DrawerContent title="Flow {flowPath}" on:close={drawerFlowViewer.closeDrawer}>
|
|
41
|
+
<FlowPathViewer path={flowPath ?? ''} />
|
|
42
|
+
</DrawerContent>
|
|
43
|
+
</Drawer>
|
|
44
|
+
|
|
30
45
|
{#if componentInput && componentInput.type == 'runnable'}
|
|
31
46
|
{#if componentInput?.runnable?.type === 'runnableByName' && componentInput?.runnable?.name !== undefined}
|
|
32
47
|
{#if componentInput.runnable.inlineScript}
|
|
33
48
|
<InlineScriptEditor
|
|
49
|
+
{id}
|
|
34
50
|
bind:inlineScript={componentInput.runnable.inlineScript}
|
|
35
51
|
bind:name={componentInput.runnable.name}
|
|
36
52
|
on:delete={() => {
|
|
@@ -41,6 +57,7 @@ async function fork(path) {
|
|
|
41
57
|
/>
|
|
42
58
|
{:else}
|
|
43
59
|
<EmptyInlineScript
|
|
60
|
+
{id}
|
|
44
61
|
name={componentInput.runnable.name}
|
|
45
62
|
on:new={(e) => {
|
|
46
63
|
if (
|
|
@@ -55,25 +72,57 @@ async function fork(path) {
|
|
|
55
72
|
{/if}
|
|
56
73
|
{:else if componentInput?.runnable?.type === 'runnableByPath' && componentInput?.runnable?.path}
|
|
57
74
|
<div class="p-2 h-full flex flex-col gap-2 ">
|
|
58
|
-
|
|
59
|
-
<
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
+
{#if componentInput.runnable.runType == 'script' || componentInput.runnable.runType == 'hubscript'}
|
|
76
|
+
<div>
|
|
77
|
+
<Button
|
|
78
|
+
size="xs"
|
|
79
|
+
startIcon={{ icon: faCodeBranch }}
|
|
80
|
+
on:click={() => {
|
|
81
|
+
if (
|
|
82
|
+
componentInput &&
|
|
83
|
+
componentInput.type == 'runnable' &&
|
|
84
|
+
componentInput.runnable?.type === 'runnableByPath'
|
|
85
|
+
) {
|
|
86
|
+
fork(componentInput.runnable.path)
|
|
87
|
+
}
|
|
88
|
+
}}
|
|
89
|
+
>
|
|
90
|
+
Fork
|
|
91
|
+
</Button>
|
|
92
|
+
</div>
|
|
93
|
+
{/if}
|
|
75
94
|
<div class="border w-full">
|
|
76
|
-
|
|
95
|
+
{#if componentInput.runnable.runType == 'script' || componentInput.runnable.runType == 'hubscript'}
|
|
96
|
+
<FlowModuleScript path={componentInput.runnable.path} />
|
|
97
|
+
{:else if componentInput.runnable.runType == 'flow'}
|
|
98
|
+
<div class="py-1 flex gap-2 w-full flex-row-reverse">
|
|
99
|
+
<Button
|
|
100
|
+
size="xs"
|
|
101
|
+
startIcon={{ icon: faEye }}
|
|
102
|
+
on:click={() => {
|
|
103
|
+
flowPath = componentInput?.['runnable']?.path
|
|
104
|
+
drawerFlowViewer.openDrawer()
|
|
105
|
+
}}>Expand</Button
|
|
106
|
+
>
|
|
107
|
+
<Button
|
|
108
|
+
size="xs"
|
|
109
|
+
startIcon={{ icon: faPen }}
|
|
110
|
+
endIcon={{ icon: faExternalLinkAlt }}
|
|
111
|
+
target="_blank"
|
|
112
|
+
href="/flows/edit/{componentInput?.['runnable']?.path}?nodraft=true">Edit</Button
|
|
113
|
+
>
|
|
114
|
+
<Button
|
|
115
|
+
size="xs"
|
|
116
|
+
startIcon={{ icon: faEye }}
|
|
117
|
+
endIcon={{ icon: faExternalLinkAlt }}
|
|
118
|
+
target="_blank"
|
|
119
|
+
href="/flows/get/{componentInput?.['runnable']?.path}">Details page</Button
|
|
120
|
+
>
|
|
121
|
+
</div>
|
|
122
|
+
<FlowPathViewer path={componentInput.runnable.path} />
|
|
123
|
+
{:else}
|
|
124
|
+
Unrecognized runType {componentInput.runnable.runType}
|
|
125
|
+
{/if}
|
|
77
126
|
</div>
|
|
78
127
|
</div>
|
|
79
128
|
{/if}
|
|
@@ -1,35 +1,43 @@
|
|
|
1
1
|
<script>import { getContext } from 'svelte';
|
|
2
2
|
import SplitPanesWrapper from '../../../splitPanes/SplitPanesWrapper.svelte';
|
|
3
|
-
import { Pane } from 'svelte-splitpanes';
|
|
3
|
+
import { Pane, Splitpanes } from 'svelte-splitpanes';
|
|
4
4
|
import InlineScriptsPanelList from './InlineScriptsPanelList.svelte';
|
|
5
5
|
import InlineScriptEditorPanel from './InlineScriptEditorPanel.svelte';
|
|
6
6
|
import InlineScriptEditor from './InlineScriptEditor.svelte';
|
|
7
|
-
const { app } = getContext('AppEditorContext');
|
|
7
|
+
const { lazyGrid, app } = getContext('AppEditorContext');
|
|
8
8
|
let selectedScriptComponentId = undefined;
|
|
9
9
|
</script>
|
|
10
10
|
|
|
11
11
|
<SplitPanesWrapper>
|
|
12
|
-
<
|
|
13
|
-
<
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
{
|
|
17
|
-
{#
|
|
18
|
-
|
|
19
|
-
|
|
12
|
+
<Splitpanes class="!overflow-visible">
|
|
13
|
+
<Pane size={25}>
|
|
14
|
+
<InlineScriptsPanelList bind:selectedScriptComponentId />
|
|
15
|
+
</Pane>
|
|
16
|
+
<Pane size={75}>
|
|
17
|
+
{#each $lazyGrid as gridComponent, index (index)}
|
|
18
|
+
{#if gridComponent.data.id === selectedScriptComponentId}
|
|
19
|
+
<InlineScriptEditorPanel
|
|
20
|
+
id={gridComponent.data.id}
|
|
21
|
+
bind:componentInput={gridComponent.data.componentInput}
|
|
22
|
+
/>
|
|
23
|
+
{/if}
|
|
20
24
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
25
|
+
{#if gridComponent.data.type === 'tablecomponent'}
|
|
26
|
+
{#each gridComponent.data.actionButtons as actionButton, index (index)}
|
|
27
|
+
{#if actionButton.id === selectedScriptComponentId}
|
|
28
|
+
<InlineScriptEditorPanel
|
|
29
|
+
id={actionButton.id}
|
|
30
|
+
bind:componentInput={actionButton.componentInput}
|
|
31
|
+
/>
|
|
32
|
+
{/if}
|
|
33
|
+
{/each}
|
|
34
|
+
{/if}
|
|
35
|
+
{/each}
|
|
30
36
|
{#each $app.unusedInlineScripts as unusedInlineScript, index (index)}
|
|
31
|
-
{#if
|
|
37
|
+
{#if `unused-${index}` === selectedScriptComponentId}
|
|
32
38
|
<InlineScriptEditor
|
|
39
|
+
id={`unused-${index}`}
|
|
40
|
+
bind:name={unusedInlineScript.name}
|
|
33
41
|
bind:inlineScript={unusedInlineScript.inlineScript}
|
|
34
42
|
on:delete={() => {
|
|
35
43
|
// remove the script from the array at the index
|
|
@@ -39,6 +47,6 @@ let selectedScriptComponentId = undefined;
|
|
|
39
47
|
/>
|
|
40
48
|
{/if}
|
|
41
49
|
{/each}
|
|
42
|
-
|
|
43
|
-
</
|
|
50
|
+
</Pane>
|
|
51
|
+
</Splitpanes>
|
|
44
52
|
</SplitPanesWrapper>
|
|
@@ -3,12 +3,14 @@ import { classNames } from '../../../../utils';
|
|
|
3
3
|
import { getContext } from 'svelte';
|
|
4
4
|
import PanelSection from '../settingsPanel/common/PanelSection.svelte';
|
|
5
5
|
export let selectedScriptComponentId = undefined;
|
|
6
|
-
const { app, selectedComponent } = getContext('AppEditorContext');
|
|
7
|
-
function selectInlineScript(id
|
|
8
|
-
selectedScriptComponentId =
|
|
9
|
-
|
|
6
|
+
const { app, selectedComponent, lazyGrid } = getContext('AppEditorContext');
|
|
7
|
+
function selectInlineScript(id) {
|
|
8
|
+
selectedScriptComponentId = id;
|
|
9
|
+
if (!id.startsWith('unused-')) {
|
|
10
|
+
$selectedComponent = selectedScriptComponentId;
|
|
11
|
+
}
|
|
10
12
|
}
|
|
11
|
-
$: runnablesByName = $
|
|
13
|
+
$: runnablesByName = $lazyGrid.reduce((acc, gridComponent) => {
|
|
12
14
|
const component = gridComponent.data;
|
|
13
15
|
if (component.type === 'tablecomponent') {
|
|
14
16
|
component.actionButtons.forEach((actionButton) => {
|
|
@@ -16,8 +18,7 @@ $: runnablesByName = $app.grid.reduce((acc, gridComponent) => {
|
|
|
16
18
|
if (actionButton.componentInput.runnable?.type === 'runnableByName') {
|
|
17
19
|
acc.push({
|
|
18
20
|
name: actionButton.componentInput.runnable.name,
|
|
19
|
-
id:
|
|
20
|
-
subId: actionButton.id
|
|
21
|
+
id: actionButton.id
|
|
21
22
|
});
|
|
22
23
|
}
|
|
23
24
|
}
|
|
@@ -34,7 +35,7 @@ $: runnablesByName = $app.grid.reduce((acc, gridComponent) => {
|
|
|
34
35
|
}
|
|
35
36
|
return acc;
|
|
36
37
|
}, []);
|
|
37
|
-
$: runnablesByPath = $
|
|
38
|
+
$: runnablesByPath = $lazyGrid.reduce((acc, gridComponent) => {
|
|
38
39
|
const component = gridComponent.data;
|
|
39
40
|
if (component.type === 'tablecomponent') {
|
|
40
41
|
component.actionButtons.forEach((actionButton) => {
|
|
@@ -42,8 +43,7 @@ $: runnablesByPath = $app.grid.reduce((acc, gridComponent) => {
|
|
|
42
43
|
if (actionButton.componentInput.runnable?.type === 'runnableByPath') {
|
|
43
44
|
acc.push({
|
|
44
45
|
name: actionButton.componentInput.runnable.path,
|
|
45
|
-
id:
|
|
46
|
-
subId: actionButton.id
|
|
46
|
+
id: actionButton.id
|
|
47
47
|
});
|
|
48
48
|
}
|
|
49
49
|
}
|
|
@@ -68,73 +68,74 @@ $: {
|
|
|
68
68
|
}
|
|
69
69
|
</script>
|
|
70
70
|
|
|
71
|
-
<
|
|
72
|
-
<
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
<
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
71
|
+
<div class="h-full flex flex-col gap-4">
|
|
72
|
+
<PanelSection title="Inline scripts" smallPadding>
|
|
73
|
+
<div class="flex flex-col gap-2 w-full">
|
|
74
|
+
{#if runnablesByName.length > 0}
|
|
75
|
+
<div class="flex gap-2 flex-col ">
|
|
76
|
+
{#each runnablesByName as { name, id }, index (index)}
|
|
77
|
+
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
|
78
|
+
<div
|
|
79
|
+
class="{classNames(
|
|
80
|
+
'border flex gap-1 truncate justify-between flex-row w-full items-center p-2 rounded-sm cursor-pointer hover:bg-blue-50 hover:text-blue-400',
|
|
81
|
+
selectedScriptComponentId === id ? 'border-blue-500 border' : ''
|
|
82
|
+
)},"
|
|
83
|
+
on:click={() => selectInlineScript(id)}
|
|
84
|
+
>
|
|
85
|
+
<span class="text-xs truncate">{name}</span>
|
|
86
|
+
<div>
|
|
87
|
+
<Badge color="dark-indigo">{id}</Badge>
|
|
88
|
+
</div>
|
|
89
|
+
</div>
|
|
90
|
+
{/each}
|
|
91
|
+
</div>
|
|
92
|
+
{/if}
|
|
93
|
+
|
|
94
|
+
{#if $app.unusedInlineScripts?.length > 0}
|
|
95
|
+
<div class="flex gap-2 flex-col ">
|
|
96
|
+
{#each $app.unusedInlineScripts as unusedInlineScript, index (index)}
|
|
97
|
+
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
|
98
|
+
<div
|
|
99
|
+
class="{classNames(
|
|
100
|
+
'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',
|
|
101
|
+
selectedScriptComponentId === `unused-${index}` ? 'bg-blue-100 text-blue-600' : ''
|
|
102
|
+
)},"
|
|
103
|
+
on:click={() => selectInlineScript(`unused-${index}`)}
|
|
104
|
+
>
|
|
105
|
+
<span class="text-xs truncate">{unusedInlineScript.name}</span>
|
|
106
|
+
<Badge color="red">Detached</Badge>
|
|
90
107
|
</div>
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
{:else}
|
|
95
|
-
<div class="text-sm text-gray-500">No inline scripts</div>
|
|
96
|
-
{/if}
|
|
108
|
+
{/each}
|
|
109
|
+
</div>
|
|
110
|
+
{/if}
|
|
97
111
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
class="{classNames(
|
|
104
|
-
'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',
|
|
105
|
-
selectedScriptComponentId === '' ? 'bg-blue-100 text-blue-600' : ''
|
|
106
|
-
)},"
|
|
107
|
-
on:click={() => selectInlineScript(unusedInlineScript.name)}
|
|
108
|
-
>
|
|
109
|
-
<span class="text-xs truncate">{unusedInlineScript.name}</span>
|
|
110
|
-
<Badge color="red">Unused</Badge>
|
|
111
|
-
</div>
|
|
112
|
-
{/each}
|
|
113
|
-
</div>
|
|
114
|
-
{/if}
|
|
115
|
-
</div>
|
|
116
|
-
</PanelSection>
|
|
112
|
+
{#if runnablesByName.length == 0 && $app.unusedInlineScripts?.length == 0}
|
|
113
|
+
<div class="text-sm text-gray-500">No inline scripts</div>
|
|
114
|
+
{/if}
|
|
115
|
+
</div>
|
|
116
|
+
</PanelSection>
|
|
117
117
|
|
|
118
|
-
<PanelSection title="
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
</PanelSection>
|
|
118
|
+
<PanelSection title="Others" smallPadding>
|
|
119
|
+
<div class="flex flex-col gap-2 w-full">
|
|
120
|
+
{#if runnablesByPath.length > 0}
|
|
121
|
+
<div class="flex gap-2 flex-col ">
|
|
122
|
+
{#each runnablesByPath as { name, id }, index (index)}
|
|
123
|
+
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
|
124
|
+
<div
|
|
125
|
+
class="{classNames(
|
|
126
|
+
'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',
|
|
127
|
+
selectedScriptComponentId === id ? 'bg-blue-100 text-blue-600' : ''
|
|
128
|
+
)},"
|
|
129
|
+
on:click={() => selectInlineScript(id)}
|
|
130
|
+
>
|
|
131
|
+
<span class="text-xs truncate">{name}</span>
|
|
132
|
+
<Badge color="dark-indigo">{id}</Badge>
|
|
133
|
+
</div>
|
|
134
|
+
{/each}
|
|
135
|
+
</div>
|
|
136
|
+
{:else}
|
|
137
|
+
<div class="text-sm text-gray-500">No items</div>
|
|
138
|
+
{/if}
|
|
139
|
+
</div>
|
|
140
|
+
</PanelSection>
|
|
141
|
+
</div>
|
|
@@ -6,38 +6,43 @@ export let component;
|
|
|
6
6
|
|
|
7
7
|
{#if component.verticalAlignment !== undefined}
|
|
8
8
|
<PanelSection title="Alignment">
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
<
|
|
30
|
-
<
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
9
|
+
<div class="flex flex-wrap gap-2">
|
|
10
|
+
{#if component.horizontalAlignment}
|
|
11
|
+
<div class="flex flex-col gap-0.5">
|
|
12
|
+
<div class="text-xs font-semibold">Horizontal</div>
|
|
13
|
+
<div>
|
|
14
|
+
<ToggleButtonGroup bind:selected={component.horizontalAlignment}>
|
|
15
|
+
<ToggleButton position="left" value="left" size="xs">
|
|
16
|
+
<AlignStartVertical size={16} />
|
|
17
|
+
</ToggleButton>
|
|
18
|
+
<ToggleButton position="center" value="center" size="xs">
|
|
19
|
+
<AlignCenterVertical size={16} />
|
|
20
|
+
</ToggleButton>
|
|
21
|
+
<ToggleButton position="right" value="right" size="xs">
|
|
22
|
+
<AlignEndVertical size={16} />
|
|
23
|
+
</ToggleButton>
|
|
24
|
+
</ToggleButtonGroup>
|
|
25
|
+
</div>
|
|
26
|
+
</div>
|
|
27
|
+
{/if}
|
|
28
|
+
{#if component.type !== 'formcomponent' && component.verticalAlignment}
|
|
29
|
+
<div class="flex flex-col gap-0.5">
|
|
30
|
+
<div class="text-xs font-semibold">Vertical</div>
|
|
31
|
+
<div>
|
|
32
|
+
<ToggleButtonGroup bind:selected={component.verticalAlignment}>
|
|
33
|
+
<ToggleButton position="left" value="top" size="xs">
|
|
34
|
+
<AlignStartHorizontal size={16} />
|
|
35
|
+
</ToggleButton>
|
|
36
|
+
<ToggleButton position="center" value="center" size="xs">
|
|
37
|
+
<AlignCenterHorizontal size={16} />
|
|
38
|
+
</ToggleButton>
|
|
39
|
+
<ToggleButton position="right" value="bottom" size="xs">
|
|
40
|
+
<AlignEndHorizontal size={16} />
|
|
41
|
+
</ToggleButton>
|
|
42
|
+
</ToggleButtonGroup>
|
|
43
|
+
</div>
|
|
44
|
+
</div>
|
|
45
|
+
{/if}
|
|
46
|
+
</div>
|
|
42
47
|
</PanelSection>
|
|
43
48
|
{/if}
|