windmill-components 1.55.1 → 1.55.2
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/common.d.ts +1 -1
- package/common.js +3 -0
- package/components/AppConnect.svelte +2 -2
- package/components/ArgInput.svelte +1 -1
- package/components/CronInput.svelte +54 -53
- package/components/Dropdown.svelte +21 -9
- package/components/Editor.svelte +10 -10
- package/components/EditorBar.svelte +2 -2
- package/components/FlowBuilder.svelte +41 -25
- package/components/FlowGraphViewer.svelte +6 -2
- package/components/FlowMetadata.svelte +8 -3
- package/components/FolderEditor.svelte +299 -0
- package/components/FolderEditor.svelte.d.ts +16 -0
- package/components/FolderInfo.svelte +13 -0
- package/components/FolderInfo.svelte.d.ts +16 -0
- package/components/FolderUsageInfo.svelte +17 -0
- package/components/FolderUsageInfo.svelte.d.ts +16 -0
- package/components/GroupEditor.svelte +287 -0
- package/components/GroupEditor.svelte.d.ts +18 -0
- package/components/GroupInfo.svelte +22 -0
- package/components/GroupInfo.svelte.d.ts +16 -0
- package/components/InputTransformForm.svelte +16 -7
- package/components/MoveDrawer.svelte +75 -0
- package/components/MoveDrawer.svelte.d.ts +19 -0
- package/components/Path.svelte +243 -96
- package/components/Path.svelte.d.ts +1 -4
- package/components/RadioButton.svelte +2 -0
- package/components/RadioButton.svelte.d.ts +1 -0
- package/components/ResourceEditor.svelte +11 -16
- package/components/RunForm.svelte +20 -3
- package/components/RunForm.svelte.d.ts +1 -1
- package/components/ScheduleEditor.svelte +226 -0
- package/components/ScheduleEditor.svelte.d.ts +26 -0
- package/components/ScriptBuilder.svelte +109 -114
- package/components/ScriptEditor.svelte +17 -14
- package/components/ScriptEditor.svelte.d.ts +1 -0
- package/components/ScriptPicker.svelte +55 -29
- package/components/ScriptPicker.svelte.d.ts +1 -0
- package/components/ShareModal.svelte +94 -73
- package/components/ShareModal.svelte.d.ts +2 -4
- package/components/SimpleEditor.svelte +15 -10
- package/components/TemplateEditor.svelte +496 -0
- package/components/TemplateEditor.svelte.d.ts +25 -0
- package/components/TestJobLoader.svelte +1 -1
- package/components/VariableEditor.svelte +2 -1
- package/components/apps/CreateApp.svelte +1 -1
- package/components/apps/components/buttons/AppButton.svelte +3 -3
- package/components/apps/components/dataDisplay/AppBarChart.svelte +5 -4
- package/components/apps/components/dataDisplay/AppPieChart.svelte +3 -3
- package/components/apps/components/dateInputs/AppDateInput.svelte +34 -0
- package/components/apps/components/dateInputs/AppDateInput.svelte.d.ts +22 -0
- package/components/apps/components/form/AppForm.svelte +4 -5
- package/components/apps/components/form/AppForm.svelte.d.ts +0 -1
- package/components/apps/components/helpers/AlignWrapper.svelte +3 -4
- package/components/apps/components/helpers/AlignWrapper.svelte.d.ts +2 -3
- package/components/apps/components/helpers/InputValue.svelte +54 -5
- package/components/apps/components/helpers/InputValue.svelte.d.ts +1 -0
- package/components/apps/components/helpers/NonRunnableComponent.svelte +2 -1
- package/components/apps/components/helpers/RefreshButton.svelte +20 -0
- package/components/apps/components/helpers/RefreshButton.svelte.d.ts +16 -0
- package/components/apps/components/helpers/RunnableComponent.svelte +38 -42
- package/components/apps/components/helpers/RunnableWrapper.svelte +6 -3
- package/components/apps/components/numberInputs/AppNumberInput.svelte +8 -11
- package/components/apps/components/numberInputs/AppNumberInput.svelte.d.ts +1 -0
- package/components/apps/components/selectInputs/AppCheckbox.svelte +1 -1
- package/components/apps/components/selectInputs/AppSelect.svelte +26 -0
- package/components/apps/components/selectInputs/AppSelect.svelte.d.ts +22 -0
- package/components/apps/components/table/AppTable.svelte +159 -0
- package/components/apps/components/{dataDisplay → table}/AppTable.svelte.d.ts +0 -0
- package/components/apps/components/table/AppTableFooter.svelte +54 -0
- package/components/apps/components/table/AppTableFooter.svelte.d.ts +20 -0
- package/components/apps/components/table/tableOptions.d.ts +10 -0
- package/components/apps/components/table/tableOptions.js +11 -0
- package/components/apps/components/textInputs/AppTextInput.svelte +17 -10
- package/components/apps/components/textInputs/AppTextInput.svelte.d.ts +2 -0
- package/components/apps/editor/AppEditor.svelte +35 -20
- package/components/apps/editor/AppEditorHeader.svelte +15 -7
- package/components/apps/editor/AppPreview.svelte +5 -3
- package/components/apps/editor/AppPreview.svelte.d.ts +4 -1
- package/components/apps/editor/ComponentEditor.svelte +21 -3
- package/components/apps/editor/ComponentEditor.svelte.d.ts +2 -0
- package/components/apps/editor/ComponentHeader.svelte +21 -4
- package/components/apps/editor/ComponentHeader.svelte.d.ts +2 -0
- package/components/apps/editor/GridEditor.svelte +40 -20
- package/components/apps/editor/RecomputeAllComponents.svelte +5 -7
- package/components/apps/editor/componentsPanel/ComponentList.svelte +30 -82
- package/components/apps/editor/componentsPanel/data.js +78 -29
- package/components/apps/editor/contextPanel/ComponentOutputViewer.svelte +5 -1
- package/components/apps/editor/contextPanel/ContextPanel.svelte +35 -152
- package/components/apps/editor/contextPanel/ContextPanel.svelte.d.ts +1 -3
- package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte +64 -0
- package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte.d.ts +18 -0
- package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +95 -0
- package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte.d.ts +20 -0
- package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorDrawer.svelte +32 -0
- package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorDrawer.svelte.d.ts +19 -0
- package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorPanel.svelte +63 -0
- package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorPanel.svelte.d.ts +17 -0
- package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanel.svelte +44 -0
- package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanel.svelte.d.ts +14 -0
- package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte +126 -0
- package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte.d.ts +16 -0
- package/components/apps/editor/settingsPanel/AlignmentEditor.svelte +41 -0
- package/components/apps/editor/settingsPanel/AlignmentEditor.svelte.d.ts +17 -0
- package/components/apps/editor/settingsPanel/ComponentInputTypeEditor.svelte +44 -0
- package/components/apps/editor/settingsPanel/ComponentInputTypeEditor.svelte.d.ts +18 -0
- package/components/apps/editor/settingsPanel/ComponentPanel.svelte +48 -130
- package/components/apps/editor/settingsPanel/ComponentPanel.svelte.d.ts +3 -0
- package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +2 -2
- package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte +1 -1
- package/components/apps/editor/settingsPanel/Recompute.svelte +2 -2
- package/components/apps/editor/settingsPanel/SelectedRunnable.svelte +46 -0
- package/components/apps/editor/settingsPanel/SelectedRunnable.svelte.d.ts +17 -0
- package/components/apps/editor/settingsPanel/SubTypeEditor.svelte +1 -1
- package/components/apps/editor/settingsPanel/common/PanelSection.svelte +1 -1
- package/components/apps/editor/settingsPanel/{ConnectedInputEditor.svelte → inputEditor/ConnectedInputEditor.svelte} +1 -2
- package/components/apps/editor/settingsPanel/{ConnectedInputEditor.svelte.d.ts → inputEditor/ConnectedInputEditor.svelte.d.ts} +1 -1
- package/components/apps/editor/settingsPanel/inputEditor/RunnableInputEditor.svelte +12 -0
- package/components/apps/editor/settingsPanel/inputEditor/RunnableInputEditor.svelte.d.ts +17 -0
- package/components/apps/editor/settingsPanel/{StaticInputEditor.svelte → inputEditor/StaticInputEditor.svelte} +5 -5
- package/components/apps/editor/settingsPanel/{StaticInputEditor.svelte.d.ts → inputEditor/StaticInputEditor.svelte.d.ts} +1 -1
- package/components/apps/editor/settingsPanel/mainInput/InlineScriptList.svelte +6 -3
- package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte +66 -22
- package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte.d.ts +2 -3
- package/components/apps/editor/settingsPanel/mainInput/WorkspaceFlowList.svelte +1 -1
- package/components/apps/gridUtils.d.ts +3 -1
- package/components/apps/gridUtils.js +16 -1
- package/components/apps/inputType.d.ts +10 -4
- package/components/apps/rx.d.ts +8 -8
- package/components/apps/rx.js +17 -9
- package/components/apps/types.d.ts +14 -2
- package/components/apps/utils.d.ts +4 -3
- package/components/apps/utils.js +37 -5
- package/components/common/drawer/Drawer.svelte +1 -1
- package/components/common/drawer/Drawer.svelte.d.ts +1 -0
- package/components/common/table/FlowRow.svelte +21 -7
- package/components/common/table/FlowRow.svelte.d.ts +2 -0
- package/components/common/table/ScriptRow.svelte +22 -7
- package/components/common/table/ScriptRow.svelte.d.ts +2 -0
- package/components/common/toggleButton/ToggleButton.svelte +1 -1
- package/components/common/toggleButton/ToggleButtonGroup.svelte +1 -1
- package/components/common/toggleButton/ToggleButtonGroup.svelte.d.ts +1 -0
- package/components/flows/content/FlowEditorPanel.svelte +10 -16
- package/components/flows/content/FlowInputs.svelte +18 -4
- package/components/flows/content/FlowInputs.svelte.d.ts +1 -0
- package/components/flows/content/FlowModuleComponent.svelte +1 -1
- package/components/flows/content/FlowModuleWrapper.svelte +26 -1
- package/components/flows/content/FlowSchedules.svelte +5 -0
- package/components/flows/content/FlowSettings.svelte +13 -23
- package/components/flows/content/FlowSettings.svelte.d.ts +0 -1
- package/components/flows/header/FlowPreviewButtons.svelte +1 -0
- package/components/flows/map/FlowErrorHandlerItem.svelte +1 -1
- package/components/flows/map/FlowModuleSchemaMap.svelte +12 -3
- package/components/flows/map/FlowSettingsItem.svelte +8 -15
- package/components/flows/map/InsertModuleButton.svelte +29 -2
- package/components/flows/map/InsertModuleButton.svelte.d.ts +3 -1
- package/components/flows/map/MapItem.svelte +2 -1
- package/components/flows/map/MapItem.svelte.d.ts +1 -0
- package/components/flows/pickers/WorkspaceScriptPicker.svelte +3 -0
- package/components/flows/previousResults.js +1 -1
- package/components/graph/FlowGraph.svelte +13 -13
- package/components/home/ItemsList.svelte +20 -12
- package/components/jobs/JobDetail.svelte +9 -3
- package/components/sidebar/SidebarContent.svelte +4 -3
- package/components/sidebar/UserMenu.svelte +1 -1
- package/editorUtils.d.ts +7 -1
- package/editorUtils.js +98 -3
- package/es5.d.ts.txt +4526 -0
- package/gen/index.d.ts +2 -0
- package/gen/index.js +1 -0
- package/gen/models/CompletedJob.d.ts +1 -0
- package/gen/models/EditSchedule.d.ts +0 -2
- package/gen/models/Folder.d.ts +5 -0
- package/gen/models/Folder.js +4 -0
- package/gen/models/QueuedJob.d.ts +1 -0
- package/gen/models/Script.d.ts +1 -1
- package/gen/models/User.d.ts +1 -0
- package/gen/services/FolderService.d.ts +128 -0
- package/gen/services/FolderService.js +151 -0
- package/gen/services/GranularAclService.d.ts +3 -3
- package/gen/services/GroupService.d.ts +5 -1
- package/gen/services/GroupService.js +4 -1
- package/gen/services/JobService.d.ts +25 -5
- package/gen/services/JobService.js +10 -5
- package/gen/services/ScriptService.d.ts +2 -1
- package/gen/services/UserService.d.ts +9 -0
- package/gen/services/UserService.js +15 -0
- package/package.json +33 -9
- package/script_helpers.d.ts +2 -2
- package/script_helpers.js +4 -4
- package/stores.d.ts +1 -0
- package/utils.d.ts +3 -0
- package/utils.js +44 -7
- package/components/GroupModal.svelte +0 -98
- package/components/GroupModal.svelte.d.ts +0 -17
- package/components/apps/components/dataDisplay/AppTable.svelte +0 -132
- package/components/apps/components/dataDisplay/app.md +0 -49
- package/components/apps/editor/contextPanel/InlineScriptCreationPanel.svelte +0 -29
- package/components/apps/editor/contextPanel/InlineScriptCreationPanel.svelte.d.ts +0 -16
|
@@ -1,22 +1,23 @@
|
|
|
1
|
-
<script>import
|
|
2
|
-
import
|
|
3
|
-
import { faArrowRight, faClose, faCode, faMinimize, faPen, faTrashAlt } from '@fortawesome/free-solid-svg-icons';
|
|
4
|
-
import { AlignStartHorizontal, AlignStartVertical, AlignCenterHorizontal, AlignCenterVertical, AlignEndHorizontal, AlignEndVertical } from 'lucide-svelte';
|
|
1
|
+
<script>import Button from '../../../common/button/Button.svelte';
|
|
2
|
+
import { faTrashAlt } from '@fortawesome/free-solid-svg-icons';
|
|
5
3
|
import { getContext } from 'svelte';
|
|
6
4
|
import PanelSection from './common/PanelSection.svelte';
|
|
7
5
|
import InputsSpecsEditor from './InputsSpecsEditor.svelte';
|
|
8
6
|
import TableActions from './TableActions.svelte';
|
|
9
|
-
import StaticInputEditor from './StaticInputEditor.svelte';
|
|
10
|
-
import ConnectedInputEditor from './ConnectedInputEditor.svelte';
|
|
7
|
+
import StaticInputEditor from './inputEditor/StaticInputEditor.svelte';
|
|
8
|
+
import ConnectedInputEditor from './inputEditor/ConnectedInputEditor.svelte';
|
|
11
9
|
import Badge from '../../../common/badge/Badge.svelte';
|
|
12
10
|
import { capitalize } from '../../../../utils';
|
|
13
11
|
import { fieldTypeToTsType } from '../../utils';
|
|
14
12
|
import Recompute from './Recompute.svelte';
|
|
15
|
-
import
|
|
16
|
-
import
|
|
13
|
+
import Tooltip from '../../../Tooltip.svelte';
|
|
14
|
+
import ComponentInputTypeEditor from './ComponentInputTypeEditor.svelte';
|
|
15
|
+
import AlignmentEditor from './AlignmentEditor.svelte';
|
|
16
|
+
import RunnableInputEditor from './inputEditor/RunnableInputEditor.svelte';
|
|
17
|
+
import TemplateEditor from '../../../TemplateEditor.svelte';
|
|
17
18
|
export let component;
|
|
18
19
|
export let onDelete = undefined;
|
|
19
|
-
const { app, staticOutputs, runnableComponents } = getContext('AppEditorContext');
|
|
20
|
+
const { app, staticOutputs, runnableComponents, worldStore } = getContext('AppEditorContext');
|
|
20
21
|
function removeGridElement() {
|
|
21
22
|
if (onDelete && component) {
|
|
22
23
|
delete $staticOutputs[component.id];
|
|
@@ -37,92 +38,66 @@ function removeGridElement() {
|
|
|
37
38
|
}
|
|
38
39
|
}
|
|
39
40
|
}
|
|
41
|
+
export function buildExtraLib(components) {
|
|
42
|
+
return Object.entries(components)
|
|
43
|
+
.filter(([k, v]) => k != component?.id)
|
|
44
|
+
.map(([k, v]) => [k, Object.fromEntries(Object.entries(v).map(([k, v]) => [k, v.peak()]))])
|
|
45
|
+
.map(([k, v]) => `
|
|
46
|
+
|
|
47
|
+
declare const ${k} = ${JSON.stringify(v)};
|
|
48
|
+
|
|
49
|
+
`)
|
|
50
|
+
.join('\n');
|
|
51
|
+
}
|
|
52
|
+
$: extraLib =
|
|
53
|
+
component?.componentInput?.type === 'template' && $worldStore
|
|
54
|
+
? buildExtraLib($worldStore?.outputsById ?? {})
|
|
55
|
+
: undefined;
|
|
40
56
|
</script>
|
|
41
57
|
|
|
42
58
|
{#if component}
|
|
43
59
|
<div class="flex flex-col w-full divide-y">
|
|
44
60
|
{#if component.componentInput}
|
|
45
|
-
<PanelSection
|
|
61
|
+
<PanelSection
|
|
62
|
+
title={component.componentInput.fieldType === 'any' ? 'Runnable' : 'Component input'}
|
|
63
|
+
>
|
|
46
64
|
<svelte:fragment slot="action">
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
65
|
+
{#if component.componentInput.fieldType !== 'any'}
|
|
66
|
+
<Badge color="blue">
|
|
67
|
+
{component.componentInput.fieldType === 'array' &&
|
|
68
|
+
component.componentInput.subFieldType
|
|
69
|
+
? `${capitalize(fieldTypeToTsType(component.componentInput.subFieldType))}[]`
|
|
70
|
+
: capitalize(fieldTypeToTsType(component.componentInput.fieldType))}
|
|
71
|
+
</Badge>
|
|
72
|
+
{/if}
|
|
52
73
|
</svelte:fragment>
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
<ToggleButton
|
|
56
|
-
position="left"
|
|
57
|
-
value="static"
|
|
58
|
-
startIcon={{ icon: faPen }}
|
|
59
|
-
size="xs"
|
|
60
|
-
disable={component.type === 'buttoncomponent'}
|
|
61
|
-
>
|
|
62
|
-
Static
|
|
63
|
-
</ToggleButton>
|
|
64
|
-
<ToggleButton
|
|
65
|
-
value="connected"
|
|
66
|
-
position="center"
|
|
67
|
-
startIcon={{ icon: faArrowRight }}
|
|
68
|
-
size="xs"
|
|
69
|
-
>
|
|
70
|
-
Connected
|
|
71
|
-
</ToggleButton>
|
|
72
|
-
<ToggleButton position="right" value="runnable" startIcon={{ icon: faCode }} size="xs">
|
|
73
|
-
Computed
|
|
74
|
-
</ToggleButton>
|
|
75
|
-
</ToggleButtonGroup>
|
|
76
|
-
</div>
|
|
74
|
+
|
|
75
|
+
<ComponentInputTypeEditor bind:componentInput={component.componentInput} />
|
|
77
76
|
<div class="flex flex-col w-full gap-2 my-2">
|
|
78
77
|
{#if component.componentInput.type === 'static'}
|
|
79
78
|
<StaticInputEditor bind:componentInput={component.componentInput} />
|
|
79
|
+
{:else if component.componentInput.type === 'template' && component.componentInput !== undefined}
|
|
80
|
+
<TemplateEditor bind:code={component.componentInput.eval} {extraLib} />
|
|
80
81
|
{:else if component.componentInput.type === 'connected' && component.componentInput !== undefined}
|
|
81
82
|
<ConnectedInputEditor bind:componentInput={component.componentInput} />
|
|
82
|
-
{:else if component
|
|
83
|
-
<
|
|
84
|
-
<span class="text-xs">
|
|
85
|
-
{component.componentInput.runnable.type === 'runnableByName'
|
|
86
|
-
? component.componentInput.runnable.inlineScriptName
|
|
87
|
-
: component.componentInput.runnable.path}
|
|
88
|
-
</span>
|
|
89
|
-
<Button
|
|
90
|
-
size="xs"
|
|
91
|
-
color="red"
|
|
92
|
-
variant="border"
|
|
93
|
-
startIcon={{ icon: faClose }}
|
|
94
|
-
on:click={() => {
|
|
95
|
-
if (component?.componentInput?.type === 'runnable') {
|
|
96
|
-
component.componentInput.runnable = undefined
|
|
97
|
-
component.componentInput.fields = {}
|
|
98
|
-
component = component
|
|
99
|
-
}
|
|
100
|
-
}}
|
|
101
|
-
>
|
|
102
|
-
Clear
|
|
103
|
-
</Button>
|
|
104
|
-
</div>
|
|
105
|
-
{:else}
|
|
106
|
-
<RunnableSelector
|
|
107
|
-
inlineScripts={Object.keys($app.inlineScripts)}
|
|
108
|
-
bind:componentInput={component.componentInput}
|
|
109
|
-
/>
|
|
83
|
+
{:else if component.componentInput?.type === 'runnable' && component.componentInput !== undefined}
|
|
84
|
+
<RunnableInputEditor bind:appInput={component.componentInput} />
|
|
110
85
|
{/if}
|
|
111
86
|
</div>
|
|
112
87
|
{#if component.componentInput?.type === 'runnable' && Object.keys(component.componentInput.fields ?? {}).length > 0}
|
|
113
88
|
<div class="border w-full">
|
|
114
89
|
<PanelSection
|
|
90
|
+
smallPadding
|
|
115
91
|
title={`Runnable inputs (${
|
|
116
92
|
Object.keys(component.componentInput.fields ?? {}).length
|
|
117
93
|
})`}
|
|
118
|
-
smallPadding
|
|
119
94
|
>
|
|
120
|
-
|
|
121
|
-
<
|
|
95
|
+
<svelte:fragment slot="action">
|
|
96
|
+
<Tooltip>
|
|
122
97
|
The runnable inputs of a button component are not settable by the user. They must
|
|
123
98
|
be defined statically or connected.
|
|
124
|
-
</
|
|
125
|
-
|
|
99
|
+
</Tooltip>
|
|
100
|
+
</svelte:fragment>
|
|
126
101
|
|
|
127
102
|
<InputsSpecsEditor
|
|
128
103
|
bind:inputSpecs={component.componentInput.fields}
|
|
@@ -131,15 +106,6 @@ function removeGridElement() {
|
|
|
131
106
|
</PanelSection>
|
|
132
107
|
</div>
|
|
133
108
|
{/if}
|
|
134
|
-
|
|
135
|
-
{#if component.type === 'buttoncomponent'}
|
|
136
|
-
<div class="w-full">
|
|
137
|
-
<Alert size="xs" type="warning" title="Result output">
|
|
138
|
-
This input is not directly used by the component. It is piped to the component's
|
|
139
|
-
<code>result</code> output.
|
|
140
|
-
</Alert>
|
|
141
|
-
</div>
|
|
142
|
-
{/if}
|
|
143
109
|
</PanelSection>
|
|
144
110
|
{/if}
|
|
145
111
|
|
|
@@ -153,55 +119,7 @@ function removeGridElement() {
|
|
|
153
119
|
<TableActions bind:components={component.actionButtons} />
|
|
154
120
|
{/if}
|
|
155
121
|
|
|
156
|
-
|
|
157
|
-
<PanelSection title="Alignment">
|
|
158
|
-
<svelte:fragment slot="action">
|
|
159
|
-
<Button
|
|
160
|
-
size="xs"
|
|
161
|
-
on:click={() => {
|
|
162
|
-
if (component) {
|
|
163
|
-
component.verticalAlignment = 'center'
|
|
164
|
-
component.horizontalAlignment = 'center'
|
|
165
|
-
}
|
|
166
|
-
}}
|
|
167
|
-
startIcon={{ icon: faMinimize }}
|
|
168
|
-
>
|
|
169
|
-
Center
|
|
170
|
-
</Button>
|
|
171
|
-
</svelte:fragment>
|
|
172
|
-
<div class="w-full text-xs font-semibold">Horizontal alignment</div>
|
|
173
|
-
|
|
174
|
-
<div class="w-full">
|
|
175
|
-
<ToggleButtonGroup bind:selected={component.horizontalAlignment}>
|
|
176
|
-
<ToggleButton position="left" value="left" size="xs">
|
|
177
|
-
<AlignStartVertical size={16} />
|
|
178
|
-
</ToggleButton>
|
|
179
|
-
<ToggleButton position="center" value="center" size="xs">
|
|
180
|
-
<AlignCenterVertical size={16} />
|
|
181
|
-
</ToggleButton>
|
|
182
|
-
<ToggleButton position="right" value="right" size="xs">
|
|
183
|
-
<AlignEndVertical size={16} />
|
|
184
|
-
</ToggleButton>
|
|
185
|
-
</ToggleButtonGroup>
|
|
186
|
-
</div>
|
|
187
|
-
{#if component.type !== 'formcomponent'}
|
|
188
|
-
<div class="w-full text-xs font-semibold">Vertical alignment</div>
|
|
189
|
-
<div class="w-full">
|
|
190
|
-
<ToggleButtonGroup bind:selected={component.verticalAlignment}>
|
|
191
|
-
<ToggleButton position="left" value="top" size="xs">
|
|
192
|
-
<AlignStartHorizontal size={16} />
|
|
193
|
-
</ToggleButton>
|
|
194
|
-
<ToggleButton position="center" value="center" size="xs">
|
|
195
|
-
<AlignCenterHorizontal size={16} />
|
|
196
|
-
</ToggleButton>
|
|
197
|
-
<ToggleButton position="right" value="bottom" size="xs">
|
|
198
|
-
<AlignEndHorizontal size={16} />
|
|
199
|
-
</ToggleButton>
|
|
200
|
-
</ToggleButtonGroup>
|
|
201
|
-
</div>
|
|
202
|
-
{/if}
|
|
203
|
-
</PanelSection>
|
|
204
|
-
{/if}
|
|
122
|
+
<AlignmentEditor bind:component />
|
|
205
123
|
{#if component.type === 'buttoncomponent' || component.type === 'formcomponent'}
|
|
206
124
|
<Recompute bind:recomputeIds={component.recomputeIds} ownId={component.id} />
|
|
207
125
|
{/if}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { SvelteComponentTyped } from "svelte";
|
|
2
2
|
import type { AppComponent } from '../../types';
|
|
3
|
+
import type { Output } from '../../rx';
|
|
3
4
|
declare const __propDef: {
|
|
4
5
|
props: {
|
|
5
6
|
component: AppComponent | undefined;
|
|
6
7
|
onDelete?: (() => void) | undefined;
|
|
8
|
+
buildExtraLib?: ((components: Record<string, Record<string, Output<any>>>) => string) | undefined;
|
|
7
9
|
};
|
|
8
10
|
events: {
|
|
9
11
|
[evt: string]: CustomEvent<any>;
|
|
@@ -14,5 +16,6 @@ export type ComponentPanelProps = typeof __propDef.props;
|
|
|
14
16
|
export type ComponentPanelEvents = typeof __propDef.events;
|
|
15
17
|
export type ComponentPanelSlots = typeof __propDef.slots;
|
|
16
18
|
export default class ComponentPanel extends SvelteComponentTyped<ComponentPanelProps, ComponentPanelEvents, ComponentPanelSlots> {
|
|
19
|
+
get buildExtraLib(): (components: Record<string, Record<string, Output<any>>>) => string;
|
|
17
20
|
}
|
|
18
21
|
export {};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
<script>import ConnectedInputEditor from './ConnectedInputEditor.svelte';
|
|
2
|
-
import StaticInputEditor from './StaticInputEditor.svelte';
|
|
1
|
+
<script>import ConnectedInputEditor from './inputEditor/ConnectedInputEditor.svelte';
|
|
2
|
+
import StaticInputEditor from './inputEditor/StaticInputEditor.svelte';
|
|
3
3
|
export let componentInput;
|
|
4
4
|
export let canHide = false;
|
|
5
5
|
</script>
|
|
@@ -14,7 +14,7 @@ export let staticOnly = false;
|
|
|
14
14
|
{@const input = inputSpecs[inputSpecKey]}
|
|
15
15
|
{#if true}
|
|
16
16
|
<div class="flex flex-col gap-2">
|
|
17
|
-
<div class="flex justify-between items-center">
|
|
17
|
+
<div class="flex justify-between items-center gap-1">
|
|
18
18
|
<span class="text-xs font-semibold">{capitalize(inputSpecKey)}</span>
|
|
19
19
|
|
|
20
20
|
<div class="flex gap-2 items-center">
|
|
@@ -15,7 +15,7 @@ function onChange(event, id) {
|
|
|
15
15
|
</script>
|
|
16
16
|
|
|
17
17
|
<PanelSection title="Recompute">
|
|
18
|
-
{#if Object.keys($runnableComponents ?? {}).length > 0}
|
|
18
|
+
{#if Object.keys($runnableComponents ?? {}).filter((id) => id !== ownId).length > 0}
|
|
19
19
|
<table class="divide-y divide-gray-300 border w-full">
|
|
20
20
|
<thead class="bg-gray-50">
|
|
21
21
|
<tr>
|
|
@@ -41,6 +41,6 @@ function onChange(event, id) {
|
|
|
41
41
|
</tbody>
|
|
42
42
|
</table>
|
|
43
43
|
{:else}
|
|
44
|
-
<div class="text-xs">No components to recompute
|
|
44
|
+
<div class="text-xs">No components to recompute. Create one and select it here.</div>
|
|
45
45
|
{/if}
|
|
46
46
|
</PanelSection>
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
<script>import Button from '../../../common/button/Button.svelte';
|
|
2
|
+
import { faClose, faEdit } from '@fortawesome/free-solid-svg-icons';
|
|
3
|
+
import { clearResultAppInput } from '../../utils';
|
|
4
|
+
import InlineScriptEditorDrawer from '../inlineScriptsPanel/InlineScriptEditorDrawer.svelte';
|
|
5
|
+
export let appInput;
|
|
6
|
+
let inlineScriptEditorDrawer;
|
|
7
|
+
function edit() {
|
|
8
|
+
if (appInput.runnable?.type === 'runnableByName') {
|
|
9
|
+
inlineScriptEditorDrawer?.openDrawer();
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
function clear() {
|
|
13
|
+
appInput = clearResultAppInput(appInput);
|
|
14
|
+
}
|
|
15
|
+
</script>
|
|
16
|
+
|
|
17
|
+
{#if appInput.runnable && appInput.runnable.type === 'runnableByName' && appInput.runnable.inlineScript}
|
|
18
|
+
<InlineScriptEditorDrawer
|
|
19
|
+
bind:this={inlineScriptEditorDrawer}
|
|
20
|
+
bind:inlineScript={appInput.runnable.inlineScript}
|
|
21
|
+
/>
|
|
22
|
+
{/if}
|
|
23
|
+
<div class="flex justify-between w-full items-center gap-1">
|
|
24
|
+
<span class="text-xs font-semibold">
|
|
25
|
+
{#if appInput.runnable?.type === 'runnableByName'}
|
|
26
|
+
{appInput.runnable.name}
|
|
27
|
+
{:else if appInput.runnable?.type === 'runnableByPath'}
|
|
28
|
+
{appInput.runnable.path}
|
|
29
|
+
{/if}
|
|
30
|
+
</span>
|
|
31
|
+
<div class="flex flex-wrap gap-1">
|
|
32
|
+
{#if appInput.runnable?.type === 'runnableByName' && appInput.runnable.inlineScript}
|
|
33
|
+
<Button size="xs" color="light" variant="border" startIcon={{ icon: faEdit }} on:click={edit}>
|
|
34
|
+
Edit
|
|
35
|
+
</Button>
|
|
36
|
+
{/if}
|
|
37
|
+
<Button size="xs" color="red" variant="border" startIcon={{ icon: faClose }} on:click={clear}>
|
|
38
|
+
Clear
|
|
39
|
+
</Button>
|
|
40
|
+
</div>
|
|
41
|
+
</div>
|
|
42
|
+
{#if appInput.runnable?.type === 'runnableByName' && !appInput.runnable.inlineScript}
|
|
43
|
+
<span class="text-xs text-gray-500">
|
|
44
|
+
Please configure the language in the inline script panel
|
|
45
|
+
</span>
|
|
46
|
+
{/if}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { SvelteComponentTyped } from "svelte";
|
|
2
|
+
import type { ResultAppInput } from '../../inputType';
|
|
3
|
+
declare const __propDef: {
|
|
4
|
+
props: {
|
|
5
|
+
appInput: ResultAppInput;
|
|
6
|
+
};
|
|
7
|
+
events: {
|
|
8
|
+
[evt: string]: CustomEvent<any>;
|
|
9
|
+
};
|
|
10
|
+
slots: {};
|
|
11
|
+
};
|
|
12
|
+
export type SelectedRunnableProps = typeof __propDef.props;
|
|
13
|
+
export type SelectedRunnableEvents = typeof __propDef.events;
|
|
14
|
+
export type SelectedRunnableSlots = typeof __propDef.slots;
|
|
15
|
+
export default class SelectedRunnable extends SvelteComponentTyped<SelectedRunnableProps, SelectedRunnableEvents, SelectedRunnableSlots> {
|
|
16
|
+
}
|
|
17
|
+
export {};
|
|
@@ -4,7 +4,7 @@ export let smallPadding = false;
|
|
|
4
4
|
</script>
|
|
5
5
|
|
|
6
6
|
<div class={classNames('flex flex-col gap-2 items-start', smallPadding ? 'p-2' : 'p-4')}>
|
|
7
|
-
<div class="flex justify-between items-center w-full">
|
|
7
|
+
<div class="flex justify-between items-center w-full gap-1">
|
|
8
8
|
<div class="text-sm font-extrabold">{title}</div>
|
|
9
9
|
<slot name="action" />
|
|
10
10
|
</div>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<script>import { Badge, Button } from '
|
|
1
|
+
<script>import { Badge, Button } from '../../../../common';
|
|
2
2
|
import { faArrowRight, faClose } from '@fortawesome/free-solid-svg-icons';
|
|
3
3
|
import { getContext } from 'svelte';
|
|
4
4
|
export let componentInput;
|
|
@@ -8,7 +8,6 @@ function applyConnection() {
|
|
|
8
8
|
$connectingInput.input !== undefined &&
|
|
9
9
|
componentInput.type === 'connected' &&
|
|
10
10
|
!componentInput.connection) {
|
|
11
|
-
debugger;
|
|
12
11
|
componentInput.connection = $connectingInput.input.connection;
|
|
13
12
|
$connectingInput = {
|
|
14
13
|
opened: false,
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<script>import { isScriptByNameDefined, isScriptByPathDefined } from '../../../utils';
|
|
2
|
+
import RunnableSelector from '../mainInput/RunnableSelector.svelte';
|
|
3
|
+
import SelectedRunnable from '../SelectedRunnable.svelte';
|
|
4
|
+
export let appInput;
|
|
5
|
+
$: isRunnableSelected = isScriptByPathDefined(appInput) || isScriptByNameDefined(appInput);
|
|
6
|
+
</script>
|
|
7
|
+
|
|
8
|
+
{#if isRunnableSelected}
|
|
9
|
+
<SelectedRunnable bind:appInput />
|
|
10
|
+
{:else}
|
|
11
|
+
<RunnableSelector bind:appInput />
|
|
12
|
+
{/if}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { SvelteComponentTyped } from "svelte";
|
|
2
|
+
import type { ResultAppInput } from '../../../inputType';
|
|
3
|
+
declare const __propDef: {
|
|
4
|
+
props: {
|
|
5
|
+
appInput: ResultAppInput;
|
|
6
|
+
};
|
|
7
|
+
events: {
|
|
8
|
+
[evt: string]: CustomEvent<any>;
|
|
9
|
+
};
|
|
10
|
+
slots: {};
|
|
11
|
+
};
|
|
12
|
+
export type RunnableInputEditorProps = typeof __propDef.props;
|
|
13
|
+
export type RunnableInputEditorEvents = typeof __propDef.events;
|
|
14
|
+
export type RunnableInputEditorSlots = typeof __propDef.slots;
|
|
15
|
+
export default class RunnableInputEditor extends SvelteComponentTyped<RunnableInputEditorProps, RunnableInputEditorEvents, RunnableInputEditorSlots> {
|
|
16
|
+
}
|
|
17
|
+
export {};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
<script>import Toggle from '
|
|
2
|
-
import { staticValues } from '
|
|
3
|
-
import SimpleEditor from '
|
|
4
|
-
import ArrayStaticInputEditor from '
|
|
1
|
+
<script>import Toggle from '../../../../Toggle.svelte';
|
|
2
|
+
import { staticValues } from '../../componentsPanel/componentStaticValues';
|
|
3
|
+
import SimpleEditor from '../../../../SimpleEditor.svelte';
|
|
4
|
+
import ArrayStaticInputEditor from '../ArrayStaticInputEditor.svelte';
|
|
5
5
|
export let componentInput;
|
|
6
6
|
export let canHide = false;
|
|
7
7
|
</script>
|
|
@@ -14,7 +14,7 @@ export let canHide = false;
|
|
|
14
14
|
{#if componentInput.fieldType === 'number'}
|
|
15
15
|
<input type="number" bind:value={componentInput.value} />
|
|
16
16
|
{:else if componentInput.fieldType === 'textarea'}
|
|
17
|
-
<textarea bind:value={componentInput.value} />
|
|
17
|
+
<textarea type="text" bind:value={componentInput.value} />
|
|
18
18
|
{:else if componentInput.fieldType === 'boolean'}
|
|
19
19
|
<Toggle bind:checked={componentInput.value} />
|
|
20
20
|
{:else if componentInput.fieldType === 'select'}
|
|
@@ -21,9 +21,12 @@ const dispatch = createEventDispatcher();
|
|
|
21
21
|
/>
|
|
22
22
|
</div>
|
|
23
23
|
|
|
24
|
-
{#if inlineScripts.length
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
{#if inlineScripts.length === 0}
|
|
25
|
+
<div class="flex flex-col w-full h-full">
|
|
26
|
+
<div class="text-md ">No inline scripts</div>
|
|
27
|
+
<div class="text-sm">Add inline scripts to your app</div>
|
|
28
|
+
</div>
|
|
29
|
+
{:else if filteredItems.length === 0}
|
|
27
30
|
<NoItemFound />
|
|
28
31
|
{:else}
|
|
29
32
|
<ul class="divide-y divide-gray-200 border rounded-md">
|
|
@@ -1,18 +1,19 @@
|
|
|
1
|
-
<script>import { faMousePointer } from '@fortawesome/free-solid-svg-icons';
|
|
1
|
+
<script>import { faMousePointer, faPlus } from '@fortawesome/free-solid-svg-icons';
|
|
2
2
|
import { Button, Drawer, DrawerContent, Tab, Tabs } from '../../../../common';
|
|
3
3
|
import PickHubScript from '../../../../flows/pickers/PickHubScript.svelte';
|
|
4
4
|
import { Building, Globe2 } from 'lucide-svelte';
|
|
5
5
|
import InlineScriptList from './InlineScriptList.svelte';
|
|
6
6
|
import WorkspaceScriptList from './WorkspaceScriptList.svelte';
|
|
7
7
|
import WorkspaceFlowList from './WorkspaceFlowList.svelte';
|
|
8
|
-
|
|
9
|
-
export let
|
|
10
|
-
let tab = '
|
|
8
|
+
import { getContext } from 'svelte';
|
|
9
|
+
export let appInput;
|
|
10
|
+
let tab = 'inlinescripts';
|
|
11
11
|
let filter = '';
|
|
12
12
|
let picker;
|
|
13
|
+
const { app } = getContext('AppEditorContext');
|
|
13
14
|
function pickScript(path) {
|
|
14
|
-
if (
|
|
15
|
-
|
|
15
|
+
if (appInput.type === 'runnable') {
|
|
16
|
+
appInput.runnable = {
|
|
16
17
|
type: 'runnableByPath',
|
|
17
18
|
path,
|
|
18
19
|
runType: 'script'
|
|
@@ -20,22 +21,50 @@ function pickScript(path) {
|
|
|
20
21
|
}
|
|
21
22
|
}
|
|
22
23
|
function pickFlow(path) {
|
|
23
|
-
if (
|
|
24
|
-
|
|
24
|
+
if (appInput.type === 'runnable') {
|
|
25
|
+
appInput.runnable = {
|
|
25
26
|
type: 'runnableByPath',
|
|
26
27
|
path,
|
|
27
28
|
runType: 'flow'
|
|
28
29
|
};
|
|
29
30
|
}
|
|
30
31
|
}
|
|
31
|
-
function pickInlineScript(
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
function pickInlineScript(name) {
|
|
33
|
+
const unusedInlineScriptIndex = $app.unusedInlineScripts?.findIndex((script) => script.name === name);
|
|
34
|
+
const unusedInlineScript = $app.unusedInlineScripts?.[unusedInlineScriptIndex];
|
|
35
|
+
if (appInput.type === 'runnable' && unusedInlineScript?.inlineScript) {
|
|
36
|
+
appInput.runnable = {
|
|
34
37
|
type: 'runnableByName',
|
|
35
|
-
|
|
38
|
+
name,
|
|
39
|
+
inlineScript: unusedInlineScript.inlineScript
|
|
36
40
|
};
|
|
41
|
+
$app.unusedInlineScripts.splice(unusedInlineScriptIndex, 1);
|
|
37
42
|
}
|
|
38
43
|
}
|
|
44
|
+
function createScript() {
|
|
45
|
+
let index = 0;
|
|
46
|
+
let newScriptPath = `inline_script_${index}`;
|
|
47
|
+
const names = $app.grid.reduce((acc, gridItem) => {
|
|
48
|
+
const { componentInput } = gridItem.data;
|
|
49
|
+
if (componentInput?.type === 'runnable' &&
|
|
50
|
+
componentInput?.runnable?.type === 'runnableByName') {
|
|
51
|
+
acc.push(componentInput.runnable.name);
|
|
52
|
+
}
|
|
53
|
+
return acc;
|
|
54
|
+
}, []);
|
|
55
|
+
const unusedNames = Object.keys($app.unusedInlineScripts ?? {});
|
|
56
|
+
// Find a name that is not used by any other inline script
|
|
57
|
+
while (names.includes(newScriptPath) || unusedNames.includes(newScriptPath)) {
|
|
58
|
+
newScriptPath = `inline_script_${++index}`;
|
|
59
|
+
}
|
|
60
|
+
appInput.runnable = {
|
|
61
|
+
type: 'runnableByName',
|
|
62
|
+
name: newScriptPath,
|
|
63
|
+
inlineScript: undefined
|
|
64
|
+
};
|
|
65
|
+
appInput = appInput;
|
|
66
|
+
return newScriptPath;
|
|
67
|
+
}
|
|
39
68
|
</script>
|
|
40
69
|
|
|
41
70
|
<Drawer bind:this={picker} size="1000px">
|
|
@@ -72,7 +101,12 @@ function pickInlineScript(inlineScriptName) {
|
|
|
72
101
|
<div class="flex flex-col gap-y-16">
|
|
73
102
|
<div class="flex flex-col">
|
|
74
103
|
{#if tab == 'inlinescripts'}
|
|
75
|
-
<InlineScriptList
|
|
104
|
+
<InlineScriptList
|
|
105
|
+
on:pick={(e) => pickInlineScript(e.detail)}
|
|
106
|
+
inlineScripts={$app.unusedInlineScripts
|
|
107
|
+
? $app.unusedInlineScripts.map((uis) => uis.name)
|
|
108
|
+
: []}
|
|
109
|
+
/>
|
|
76
110
|
{:else if tab == 'workspacescripts'}
|
|
77
111
|
<WorkspaceScriptList on:pick={(e) => pickScript(e.detail)} />
|
|
78
112
|
{:else if tab == 'workspaceflows'}
|
|
@@ -87,12 +121,22 @@ function pickInlineScript(inlineScriptName) {
|
|
|
87
121
|
</DrawerContent>
|
|
88
122
|
</Drawer>
|
|
89
123
|
|
|
90
|
-
<
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
124
|
+
<div class="flex flex-col gap-2">
|
|
125
|
+
<Button
|
|
126
|
+
on:click={createScript}
|
|
127
|
+
size="sm"
|
|
128
|
+
color="light"
|
|
129
|
+
variant="border"
|
|
130
|
+
startIcon={{ icon: faPlus }}
|
|
131
|
+
>
|
|
132
|
+
Create an inline script
|
|
133
|
+
</Button>
|
|
134
|
+
<Button
|
|
135
|
+
on:click={() => picker?.openDrawer()}
|
|
136
|
+
size="sm"
|
|
137
|
+
color="blue"
|
|
138
|
+
startIcon={{ icon: faMousePointer }}
|
|
139
|
+
>
|
|
140
|
+
Select a script
|
|
141
|
+
</Button>
|
|
142
|
+
</div>
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { SvelteComponentTyped } from "svelte";
|
|
2
|
-
import type {
|
|
2
|
+
import type { ResultAppInput } from '../../../inputType';
|
|
3
3
|
declare const __propDef: {
|
|
4
4
|
props: {
|
|
5
|
-
|
|
6
|
-
componentInput: AppInput;
|
|
5
|
+
appInput: ResultAppInput;
|
|
7
6
|
};
|
|
8
7
|
events: {
|
|
9
8
|
[evt: string]: CustomEvent<any>;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import SearchItems from '../../../../SearchItems.svelte';
|
|
3
3
|
import NoItemFound from '../../../../home/NoItemFound.svelte';
|
|
4
4
|
import RowIcon from '../../../../common/table/RowIcon.svelte';
|
|
5
|
-
import { FlowService
|
|
5
|
+
import { FlowService } from '../../../../../gen';
|
|
6
6
|
import { workspaceStore } from '../../../../../stores';
|
|
7
7
|
import { emptyString } from '../../../../../utils';
|
|
8
8
|
import { Skeleton } from '../../../../common';
|
|
@@ -7,5 +7,7 @@ declare const Breakpoints: {
|
|
|
7
7
|
declare const columnConfiguration: ColumnConfiguration;
|
|
8
8
|
declare const gridColumns: number[];
|
|
9
9
|
declare function disableDrag(component: GridItem): GridItem;
|
|
10
|
+
declare function toggleFixed(component: GridItem): GridItem;
|
|
11
|
+
declare function isFixed(component: GridItem): boolean;
|
|
10
12
|
declare function enableDrag(component: GridItem): GridItem;
|
|
11
|
-
export { gridColumns, columnConfiguration, disableDrag, enableDrag, Breakpoints };
|
|
13
|
+
export { gridColumns, columnConfiguration, disableDrag, enableDrag, Breakpoints, toggleFixed, isFixed };
|