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
|
@@ -4,6 +4,7 @@ import FlowSettings from './FlowSettings.svelte';
|
|
|
4
4
|
import FlowInput from './FlowInput.svelte';
|
|
5
5
|
import FlowFailureModule from './FlowFailureModule.svelte';
|
|
6
6
|
import { flowStore } from '../flowStore';
|
|
7
|
+
import FlowConstants from './FlowConstants.svelte';
|
|
7
8
|
export let initialPath;
|
|
8
9
|
const { selectedId } = getContext('FlowEditorContext');
|
|
9
10
|
</script>
|
|
@@ -12,6 +13,8 @@ const { selectedId } = getContext('FlowEditorContext');
|
|
|
12
13
|
<FlowSettings {initialPath} />
|
|
13
14
|
{:else if $selectedId === 'inputs'}
|
|
14
15
|
<FlowInput />
|
|
16
|
+
{:else if $selectedId === 'constants'}
|
|
17
|
+
<FlowConstants />
|
|
15
18
|
{:else if $selectedId === 'failure'}
|
|
16
19
|
<FlowFailureModule />
|
|
17
20
|
{:else}
|
|
@@ -62,7 +62,7 @@ let filter = '';
|
|
|
62
62
|
>
|
|
63
63
|
{/if}
|
|
64
64
|
<h3 class="pb-2 pt-4">
|
|
65
|
-
Inline new <span class="text-blue-500">{kind == 'script' ? '
|
|
65
|
+
Inline new <span class="text-blue-500">{kind == 'script' ? 'action' : kind}</span> script
|
|
66
66
|
<Tooltip>
|
|
67
67
|
Embed a script directly inside a flow instead of saving the script into your workspace for
|
|
68
68
|
reuse. You can always save an inline script to your workspace later.
|
|
@@ -141,7 +141,7 @@ let filter = '';
|
|
|
141
141
|
</div>
|
|
142
142
|
|
|
143
143
|
<h3 class="mb-2 mt-6"
|
|
144
|
-
>Use pre-made <span class="text-blue-500">{kind == 'script' ? '
|
|
144
|
+
>Use pre-made <span class="text-blue-500">{kind == 'script' ? 'action' : kind}</span> script</h3
|
|
145
145
|
>
|
|
146
146
|
{#if pick_existing == 'hub'}
|
|
147
147
|
<PickHubScript bind:filter {kind} on:pick>
|
|
@@ -13,7 +13,7 @@ import FlowModuleHeader from './FlowModuleHeader.svelte';
|
|
|
13
13
|
import { flowStateStore } from '../flowState';
|
|
14
14
|
import { schemaToObject, scriptLangToEditorLang } from '../../../utils';
|
|
15
15
|
import PropPickerWrapper from '../propPicker/PropPickerWrapper.svelte';
|
|
16
|
-
import { afterUpdate, getContext
|
|
16
|
+
import { afterUpdate, getContext } from 'svelte';
|
|
17
17
|
import { loadSchemaFromModule } from '../utils';
|
|
18
18
|
import FlowModuleScript from './FlowModuleScript.svelte';
|
|
19
19
|
import FlowModuleEarlyStop from './FlowModuleEarlyStop.svelte';
|
|
@@ -159,6 +159,9 @@ afterUpdate(() => {
|
|
|
159
159
|
modulePreview?.runTestWithStepArgs()
|
|
160
160
|
}}
|
|
161
161
|
on:change={async (event) => {
|
|
162
|
+
if (flowModule.value.type === 'rawscript') {
|
|
163
|
+
flowModule.value.content = event.detail
|
|
164
|
+
}
|
|
162
165
|
await reload(flowModule)
|
|
163
166
|
}}
|
|
164
167
|
formatAction={() => reload(flowModule)}
|
|
@@ -1,41 +1,59 @@
|
|
|
1
1
|
<script>import Button from '../../common/button/Button.svelte';
|
|
2
|
-
import {
|
|
3
|
-
import { faBed, faCodeBranch, faSave, faStop } from '@fortawesome/free-solid-svg-icons';
|
|
2
|
+
import { faCodeBranch, faSave } from '@fortawesome/free-solid-svg-icons';
|
|
4
3
|
import { createEventDispatcher } from 'svelte';
|
|
5
|
-
import
|
|
6
|
-
import
|
|
4
|
+
import { Bed, PhoneIncoming, Repeat, Square } from 'lucide-svelte';
|
|
5
|
+
import Popover from '../../Popover.svelte';
|
|
7
6
|
export let module;
|
|
8
7
|
const dispatch = createEventDispatcher();
|
|
9
|
-
let width = 0;
|
|
10
8
|
$: moduleRetry = module.retry?.constant || module.retry?.exponential;
|
|
11
9
|
</script>
|
|
12
10
|
|
|
13
|
-
<div class="flex flex-row space-x-2"
|
|
11
|
+
<div class="flex flex-row space-x-2">
|
|
14
12
|
{#if module.value.type === 'script' || module.value.type === 'rawscript'}
|
|
15
|
-
<
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
<button
|
|
22
|
-
class={classNames('badge', moduleRetry ? 'badge-on' : 'badge-off', 'center-center')}
|
|
13
|
+
<Popover
|
|
14
|
+
placement="bottom"
|
|
15
|
+
class="center-center rounded border p-2
|
|
16
|
+
{moduleRetry
|
|
17
|
+
? 'bg-blue-100 text-blue-800 border-blue-300 hover:bg-blue-200'
|
|
18
|
+
: 'bg-white text-gray-800 border-gray-300 hover:bg-gray-100'}"
|
|
23
19
|
on:click={() => dispatch('toggleRetry')}
|
|
24
20
|
>
|
|
25
21
|
<Repeat size={14} />
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
22
|
+
<svelte:fragment slot="text">Retries</svelte:fragment>
|
|
23
|
+
</Popover>
|
|
24
|
+
<Popover
|
|
25
|
+
placement="bottom"
|
|
26
|
+
class="center-center rounded border p-2
|
|
27
|
+
{module.stop_after_if
|
|
28
|
+
? 'bg-blue-100 text-blue-800 border-blue-300 hover:bg-blue-200'
|
|
29
|
+
: 'bg-white text-gray-800 border-gray-300 hover:bg-gray-100'}"
|
|
30
|
+
on:click={() => dispatch('toggleStopAfterIf')}
|
|
30
31
|
>
|
|
31
|
-
<
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
<Square size={14} />
|
|
33
|
+
<svelte:fragment slot="text">Early stop/break</svelte:fragment>
|
|
34
|
+
</Popover>
|
|
35
|
+
<Popover
|
|
36
|
+
placement="bottom"
|
|
37
|
+
class="center-center rounded border p-2
|
|
38
|
+
{module.suspend
|
|
39
|
+
? 'bg-blue-100 text-blue-800 border-blue-300 hover:bg-blue-200'
|
|
40
|
+
: 'bg-white text-gray-800 border-gray-300 hover:bg-gray-100'}"
|
|
35
41
|
on:click={() => dispatch('toggleSuspend')}
|
|
36
42
|
>
|
|
37
43
|
<PhoneIncoming size={14} />
|
|
38
|
-
|
|
44
|
+
<svelte:fragment slot="text">Suspend</svelte:fragment>
|
|
45
|
+
</Popover>
|
|
46
|
+
<Popover
|
|
47
|
+
placement="bottom"
|
|
48
|
+
class="center-center rounded border p-2
|
|
49
|
+
{module.sleep
|
|
50
|
+
? 'bg-blue-100 text-blue-800 border-blue-300 hover:bg-blue-200'
|
|
51
|
+
: 'bg-white text-gray-800 border-gray-300 hover:bg-gray-100'}"
|
|
52
|
+
on:click={() => dispatch('toggleSleep')}
|
|
53
|
+
>
|
|
54
|
+
<Bed size={14} />
|
|
55
|
+
<svelte:fragment slot="text">Sleep</svelte:fragment>
|
|
56
|
+
</Popover>
|
|
39
57
|
{/if}
|
|
40
58
|
{#if module.value.type === 'script'}
|
|
41
59
|
<div class="w-2" />
|
|
@@ -64,69 +82,3 @@ $: moduleRetry = module.retry?.constant || module.retry?.exponential;
|
|
|
64
82
|
</Button>
|
|
65
83
|
{/if}
|
|
66
84
|
</div>
|
|
67
|
-
|
|
68
|
-
<style>
|
|
69
|
-
.badge {
|
|
70
|
-
|
|
71
|
-
display: flex;
|
|
72
|
-
|
|
73
|
-
cursor: pointer;
|
|
74
|
-
|
|
75
|
-
align-items: center;
|
|
76
|
-
|
|
77
|
-
white-space: nowrap;
|
|
78
|
-
|
|
79
|
-
border-radius: 0.25rem;
|
|
80
|
-
|
|
81
|
-
border-width: 1px;
|
|
82
|
-
|
|
83
|
-
padding-left: 0.625rem;
|
|
84
|
-
|
|
85
|
-
padding-right: 0.625rem;
|
|
86
|
-
|
|
87
|
-
padding-top: 0.125rem;
|
|
88
|
-
|
|
89
|
-
padding-bottom: 0.125rem;
|
|
90
|
-
|
|
91
|
-
font-size: 0.875rem;
|
|
92
|
-
|
|
93
|
-
line-height: 1.25rem;
|
|
94
|
-
|
|
95
|
-
font-weight: 500
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
.badge-on {
|
|
99
|
-
|
|
100
|
-
--tw-bg-opacity: 1;
|
|
101
|
-
|
|
102
|
-
background-color: rgb(219 234 254 / var(--tw-bg-opacity));
|
|
103
|
-
|
|
104
|
-
--tw-text-opacity: 1;
|
|
105
|
-
|
|
106
|
-
color: rgb(30 64 175 / var(--tw-text-opacity))
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
.badge-on:hover {
|
|
110
|
-
|
|
111
|
-
--tw-bg-opacity: 1;
|
|
112
|
-
|
|
113
|
-
background-color: rgb(191 219 254 / var(--tw-bg-opacity))
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
.badge-off {
|
|
117
|
-
|
|
118
|
-
--tw-bg-opacity: 1;
|
|
119
|
-
|
|
120
|
-
background-color: rgb(243 244 246 / var(--tw-bg-opacity));
|
|
121
|
-
|
|
122
|
-
--tw-text-opacity: 1;
|
|
123
|
-
|
|
124
|
-
color: rgb(31 41 55 / var(--tw-text-opacity))
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
.badge-off:hover {
|
|
128
|
-
|
|
129
|
-
--tw-bg-opacity: 1;
|
|
130
|
-
|
|
131
|
-
background-color: rgb(229 231 235 / var(--tw-bg-opacity))
|
|
132
|
-
}</style>
|
|
@@ -5,10 +5,10 @@ declare const __propDef: {
|
|
|
5
5
|
module: FlowModule;
|
|
6
6
|
};
|
|
7
7
|
events: {
|
|
8
|
-
toggleStopAfterIf: CustomEvent<any>;
|
|
9
8
|
toggleRetry: CustomEvent<any>;
|
|
10
|
-
|
|
9
|
+
toggleStopAfterIf: CustomEvent<any>;
|
|
11
10
|
toggleSuspend: CustomEvent<any>;
|
|
11
|
+
toggleSleep: CustomEvent<any>;
|
|
12
12
|
fork: CustomEvent<any>;
|
|
13
13
|
createScriptFromInlineScript: CustomEvent<any>;
|
|
14
14
|
} & {
|
|
@@ -34,7 +34,7 @@ let topHeight = 0;
|
|
|
34
34
|
<input
|
|
35
35
|
type="text"
|
|
36
36
|
bind:value={$flowStore.summary}
|
|
37
|
-
placeholder="A
|
|
37
|
+
placeholder="A short summary of the flow displayed when the flow is listed"
|
|
38
38
|
rows="1"
|
|
39
39
|
id="flow-summary"
|
|
40
40
|
/>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Flow, FlowModule } from '../../gen';
|
|
2
2
|
export type FlowMode = 'push' | 'pull';
|
|
3
3
|
export declare const flowStore: import("svelte/store").Writable<Flow>;
|
|
4
|
-
export declare function dfs(modules: FlowModule[]):
|
|
4
|
+
export declare function dfs<T>(modules: FlowModule[], f: (x: FlowModule) => T): T[];
|
|
5
5
|
export declare function initFlow(flow: Flow): Promise<void>;
|
|
6
6
|
export declare function copyFirstStepSchema(): Promise<void>;
|
|
@@ -11,23 +11,23 @@ export const flowStore = writable({
|
|
|
11
11
|
archived: false,
|
|
12
12
|
extra_perms: {}
|
|
13
13
|
});
|
|
14
|
-
export function dfs(modules) {
|
|
14
|
+
export function dfs(modules, f) {
|
|
15
15
|
let result = [];
|
|
16
16
|
for (const module of modules) {
|
|
17
17
|
if (module.value.type == 'forloopflow') {
|
|
18
|
-
result = result.concat(module
|
|
19
|
-
result = result.concat(dfs(module.value.modules));
|
|
18
|
+
result = result.concat(f(module));
|
|
19
|
+
result = result.concat(dfs(module.value.modules, f));
|
|
20
20
|
}
|
|
21
21
|
else if (module.value.type == 'branchone') {
|
|
22
|
-
result = result.concat(module
|
|
23
|
-
result = result.concat(dfs(module.value.branches.map((b) => b.modules).flat().concat(module.value.default)));
|
|
22
|
+
result = result.concat(f(module));
|
|
23
|
+
result = result.concat(dfs(module.value.branches.map((b) => b.modules).flat().concat(module.value.default), f));
|
|
24
24
|
}
|
|
25
25
|
else if (module.value.type == 'branchall') {
|
|
26
|
-
result = result.concat(module
|
|
27
|
-
result = result.concat(dfs(module.value.branches.map((b) => b.modules).flat()));
|
|
26
|
+
result = result.concat(f(module));
|
|
27
|
+
result = result.concat(dfs(module.value.branches.map((b) => b.modules).flat(), f));
|
|
28
28
|
}
|
|
29
29
|
else {
|
|
30
|
-
result.push(module
|
|
30
|
+
result.push(f(module));
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
33
|
return result;
|
|
@@ -23,7 +23,7 @@ let jsonViewerDrawer;
|
|
|
23
23
|
</div>
|
|
24
24
|
|
|
25
25
|
<Drawer bind:this={jsonViewerDrawer} size="800px">
|
|
26
|
-
<DrawerContent title="
|
|
26
|
+
<DrawerContent title="OpenFlow JSON" on:close={() => jsonViewerDrawer.toggleDrawer()}>
|
|
27
27
|
{#if $flowStore}
|
|
28
28
|
<FlowViewer flow={cleanInputs($flowStore)} tab="json" />
|
|
29
29
|
{/if}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<script>import { getContext } from 'svelte';
|
|
2
|
+
import { classNames } from '../../../utils';
|
|
3
|
+
import { DollarSign } from 'lucide-svelte';
|
|
4
|
+
const { select, selectedId } = getContext('FlowEditorContext');
|
|
5
|
+
$: settingsClass = classNames('border w-full rounded-sm p-2 bg-white border-gray-400 text-sm cursor-pointer flex items-center', $selectedId == 'constants' ? 'outline outline-offset-1 outline-2 outline-slate-900' : '');
|
|
6
|
+
</script>
|
|
7
|
+
|
|
8
|
+
<button on:click={() => select('constants')} class={settingsClass}>
|
|
9
|
+
<DollarSign size={16} />
|
|
10
|
+
<span class="text-xs flex flex-row justify-between w-full gap-2 items-center truncate ml-1">
|
|
11
|
+
All Static Inputs
|
|
12
|
+
</span>
|
|
13
|
+
</button>
|
|
@@ -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 FlowConstantsItemProps = typeof __propDef.props;
|
|
10
|
+
export type FlowConstantsItemEvents = typeof __propDef.events;
|
|
11
|
+
export type FlowConstantsItemSlots = typeof __propDef.slots;
|
|
12
|
+
export default class FlowConstantsItem extends SvelteComponentTyped<FlowConstantsItemProps, FlowConstantsItemEvents, FlowConstantsItemSlots> {
|
|
13
|
+
}
|
|
14
|
+
export {};
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
<script>import { getContext } from 'svelte';
|
|
2
2
|
import FlowModuleSchemaItem from './FlowModuleSchemaItem.svelte';
|
|
3
3
|
import Icon from 'svelte-awesome';
|
|
4
|
-
import { faFlagCheckered
|
|
4
|
+
import { faFlagCheckered } from '@fortawesome/free-solid-svg-icons';
|
|
5
5
|
const { select, selectedId } = getContext('FlowEditorContext');
|
|
6
6
|
</script>
|
|
7
7
|
|
|
8
8
|
<FlowModuleSchemaItem
|
|
9
9
|
on:click={() => select('inputs')}
|
|
10
|
-
isFirst
|
|
11
10
|
hasLine
|
|
12
11
|
selected={$selectedId === 'inputs'}
|
|
13
12
|
bold
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
<script>import Badge from '../../common/badge/Badge.svelte';
|
|
2
2
|
import Popover from '../../Popover.svelte';
|
|
3
3
|
import { classNames } from '../../../utils';
|
|
4
|
-
import { faBed, faRepeat, faStop, faTimesCircle } from '@fortawesome/free-solid-svg-icons';
|
|
5
4
|
import { createEventDispatcher } from 'svelte';
|
|
6
|
-
import
|
|
7
|
-
import { PhoneIncoming, Repeat } from 'lucide-svelte';
|
|
5
|
+
import { fade } from 'svelte/transition';
|
|
6
|
+
import { Bed, PhoneIncoming, Repeat, Square, X } from 'lucide-svelte';
|
|
8
7
|
export let isFirst = false;
|
|
9
8
|
export let isLast = false;
|
|
10
9
|
export let hasLine = true;
|
|
@@ -40,39 +39,52 @@ const dispatch = createEventDispatcher();
|
|
|
40
39
|
<div class="absolute text-sm right-12 -bottom-3 flex flex-row gap-1 z-20">
|
|
41
40
|
{#if retry}
|
|
42
41
|
<Popover notClickable>
|
|
43
|
-
<div
|
|
42
|
+
<div
|
|
43
|
+
transition:fade={{duration: 200}}
|
|
44
|
+
class="center-center bg-white rounded border border-gray-400 text-gray-700 px-1 py-0.5"
|
|
45
|
+
>
|
|
44
46
|
<Repeat size={14} />
|
|
45
47
|
</div>
|
|
46
|
-
<
|
|
48
|
+
<svelte:fragment slot="text">Retries</svelte:fragment>
|
|
47
49
|
</Popover>
|
|
48
50
|
{/if}
|
|
49
51
|
{#if earlyStop}
|
|
50
52
|
<Popover notClickable>
|
|
51
|
-
<div
|
|
52
|
-
|
|
53
|
+
<div
|
|
54
|
+
transition:fade={{duration: 200}}
|
|
55
|
+
class="center-center bg-white rounded border border-gray-400 text-gray-700 px-1 py-0.5"
|
|
56
|
+
>
|
|
57
|
+
<Square size={14} />
|
|
53
58
|
</div>
|
|
54
|
-
<
|
|
59
|
+
<svelte:fragment slot="text">Early stop/break</svelte:fragment>
|
|
55
60
|
</Popover>
|
|
56
61
|
{/if}
|
|
57
|
-
{#if
|
|
62
|
+
{#if suspend}
|
|
58
63
|
<Popover notClickable>
|
|
59
|
-
<div
|
|
60
|
-
|
|
64
|
+
<div
|
|
65
|
+
transition:fade={{duration: 200}}
|
|
66
|
+
class="center-center bg-white rounded border border-gray-400 text-gray-700 px-1 py-0.5"
|
|
67
|
+
>
|
|
68
|
+
<PhoneIncoming size={14} />
|
|
61
69
|
</div>
|
|
62
|
-
<
|
|
70
|
+
<svelte:fragment slot="text">Suspend</svelte:fragment>
|
|
63
71
|
</Popover>
|
|
64
72
|
{/if}
|
|
65
|
-
{#if
|
|
73
|
+
{#if sleep}
|
|
66
74
|
<Popover notClickable>
|
|
67
|
-
<div
|
|
68
|
-
|
|
75
|
+
<div
|
|
76
|
+
transition:fade={{duration: 200}}
|
|
77
|
+
class="center-center bg-white rounded border border-gray-400 text-gray-700 px-1 py-0.5"
|
|
78
|
+
>
|
|
79
|
+
<Bed size={14} />
|
|
69
80
|
</div>
|
|
70
|
-
<
|
|
81
|
+
<svelte:fragment slot="text">Sleep</svelte:fragment>
|
|
71
82
|
</Popover>
|
|
72
83
|
{/if}
|
|
73
84
|
</div>
|
|
74
85
|
<div
|
|
75
|
-
class="flex justify-between items-center w-full overflow-hidden rounded-sm
|
|
86
|
+
class="flex justify-between items-center w-full overflow-hidden rounded-sm
|
|
87
|
+
border border-gray-400 p-2 bg-white text-2xs module"
|
|
76
88
|
>
|
|
77
89
|
{#if $$slots.icon}
|
|
78
90
|
<slot name="icon" />
|
|
@@ -85,16 +97,13 @@ const dispatch = createEventDispatcher();
|
|
|
85
97
|
{/if}
|
|
86
98
|
{#if deletable}
|
|
87
99
|
<button
|
|
88
|
-
class="absolute -top-2 right-0 rounded-full h-4 w-4 trash center-center
|
|
89
|
-
|
|
90
|
-
|
|
100
|
+
class="absolute -top-2 right-0 rounded-full h-4 w-4 trash center-center
|
|
101
|
+
border-[1.5px] border-gray-700 bg-white duration-150 hover:bg-red-400 hover:text-white
|
|
102
|
+
hover:border-red-700 {selected ? '' : '!hidden'}"
|
|
91
103
|
on:click={(event) => dispatch('delete', event)}
|
|
92
|
-
><Icon
|
|
93
|
-
data={faTimesCircle}
|
|
94
|
-
class="text-gray-600 hover:text-red-600"
|
|
95
|
-
scale={0.9}
|
|
96
|
-
/></button
|
|
97
104
|
>
|
|
105
|
+
<X size={12} strokeWidth={2} />
|
|
106
|
+
</button>
|
|
98
107
|
{/if}
|
|
99
108
|
</div>
|
|
100
109
|
</div>
|
|
@@ -9,10 +9,14 @@ import FlowSettingsItem from './FlowSettingsItem.svelte';
|
|
|
9
9
|
import FlowInputsItem from './FlowInputsItem.svelte';
|
|
10
10
|
import InsertModuleButton from './InsertModuleButton.svelte';
|
|
11
11
|
import { slide } from 'svelte/transition';
|
|
12
|
+
import FlowModuleSchemaItem from './FlowModuleSchemaItem.svelte';
|
|
13
|
+
import { Icon } from 'svelte-awesome';
|
|
14
|
+
import { faDollarSign } from '@fortawesome/free-solid-svg-icons';
|
|
15
|
+
import FlowConstantsItem from './FlowConstantsItem.svelte';
|
|
12
16
|
export let root = false;
|
|
13
17
|
export let modules;
|
|
14
18
|
let indexToRemove = undefined;
|
|
15
|
-
const { select } = getContext('FlowEditorContext');
|
|
19
|
+
const { select, selectedId } = getContext('FlowEditorContext');
|
|
16
20
|
async function insertNewModuleAtIndex(index, kind) {
|
|
17
21
|
await idMutex.runExclusive(async () => {
|
|
18
22
|
var module = emptyModule(kind == 'flow');
|
|
@@ -85,12 +89,13 @@ $: confirmationModalOpen = indexToRemove !== undefined;
|
|
|
85
89
|
<div class="flex flex-col h-full relative">
|
|
86
90
|
{#if root}
|
|
87
91
|
<div
|
|
88
|
-
class="z-10 sticky top-0 bg-gray-50 flex-initial
|
|
92
|
+
class="z-10 sticky inline-flex flex-col gap-2 top-0 bg-gray-50 flex-initial p-2 items-center border-b border-gray-300"
|
|
89
93
|
>
|
|
90
94
|
<FlowSettingsItem />
|
|
95
|
+
<FlowConstantsItem />
|
|
91
96
|
</div>
|
|
92
97
|
{/if}
|
|
93
|
-
<ul class="w-full flex-auto
|
|
98
|
+
<ul class="w-full flex-auto {root ? 'px-2 pb-2 pt-3' : ''} py-1">
|
|
94
99
|
{#if root}
|
|
95
100
|
<li>
|
|
96
101
|
<FlowInputsItem />
|
|
@@ -139,5 +144,6 @@ $: confirmationModalOpen = indexToRemove !== undefined;
|
|
|
139
144
|
removeAtIndex(indexToRemove)
|
|
140
145
|
indexToRemove = undefined
|
|
141
146
|
}
|
|
147
|
+
$selectedId = 'settings-graph'
|
|
142
148
|
}}
|
|
143
149
|
/>
|
|
@@ -1,23 +1,21 @@
|
|
|
1
1
|
<script>import { getContext } from 'svelte';
|
|
2
|
-
import Icon from 'svelte-awesome';
|
|
3
|
-
import { faCalendarAlt, faSliders } from '@fortawesome/free-solid-svg-icons';
|
|
4
2
|
import { classNames } from '../../../utils';
|
|
5
3
|
import { Badge } from '../../common';
|
|
6
4
|
import { flowStore } from '../flowStore';
|
|
7
|
-
|
|
5
|
+
import { SlidersHorizontal } from 'lucide-svelte';
|
|
6
|
+
const { select, selectedId } = getContext('FlowEditorContext');
|
|
8
7
|
$: settingsClass = classNames('border w-full rounded-sm p-2 bg-white border-gray-400 text-sm cursor-pointer flex items-center', $selectedId?.startsWith('settings')
|
|
9
8
|
? 'outline outline-offset-1 outline-2 outline-slate-900'
|
|
10
9
|
: '');
|
|
11
10
|
</script>
|
|
12
11
|
|
|
13
|
-
|
|
14
|
-
<
|
|
15
|
-
<
|
|
16
|
-
<span class="text-xs font-bold flex flex-row justify-between w-full gap-2 items-center truncate">
|
|
12
|
+
<button on:click={() => select('settings-metadata')} class={settingsClass}>
|
|
13
|
+
<SlidersHorizontal size={16} />
|
|
14
|
+
<span class="text-xs font-bold flex flex-row justify-between w-full gap-2 items-center truncate ml-1">
|
|
17
15
|
Settings
|
|
18
16
|
|
|
19
17
|
{#if $flowStore.value.same_worker}
|
|
20
18
|
<Badge color="blue" baseClass="truncate">./shared</Badge>
|
|
21
19
|
{/if}
|
|
22
20
|
</span>
|
|
23
|
-
</
|
|
21
|
+
</button>
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
<script>import PropPicker from '../../propertyPicker/PropPicker.svelte';
|
|
5
5
|
import PropPickerResult from '../../propertyPicker/PropPickerResult.svelte';
|
|
6
|
+
import { clickOutside } from '../../../utils';
|
|
6
7
|
import { createEventDispatcher, setContext } from 'svelte';
|
|
7
8
|
import { Pane, Splitpanes } from 'svelte-splitpanes';
|
|
8
9
|
import { writable } from 'svelte/store';
|
|
@@ -28,34 +29,44 @@ setContext('PropPickerWrapper', {
|
|
|
28
29
|
});
|
|
29
30
|
</script>
|
|
30
31
|
|
|
31
|
-
<
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
32
|
+
<div
|
|
33
|
+
class="h-full w-full"
|
|
34
|
+
use:clickOutside
|
|
35
|
+
on:click_outside={() => propPickerConfig.set(undefined)}
|
|
36
|
+
>
|
|
37
|
+
<Splitpanes>
|
|
38
|
+
<Pane minSize={20} size={60} class="relative p-4 !transition-none">
|
|
39
|
+
<slot />
|
|
40
|
+
</Pane>
|
|
41
|
+
<Pane
|
|
42
|
+
minSize={20}
|
|
43
|
+
size={40}
|
|
44
|
+
class="pt-2 relative !transition-none {$propPickerConfig ? 'border-2 border-blue-500' : ''}"
|
|
45
|
+
>
|
|
46
|
+
{#if result}
|
|
47
|
+
<PropPickerResult
|
|
48
|
+
{result}
|
|
49
|
+
on:select={({ detail }) => {
|
|
50
|
+
dispatch('select', detail)
|
|
51
|
+
if ($propPickerConfig?.onSelect(detail)) {
|
|
52
|
+
propPickerConfig.set(undefined)
|
|
53
|
+
}
|
|
54
|
+
}}
|
|
55
|
+
/>
|
|
56
|
+
{:else if pickableProperties}
|
|
57
|
+
<PropPicker
|
|
58
|
+
{displayContext}
|
|
59
|
+
{error}
|
|
60
|
+
{pickableProperties}
|
|
61
|
+
{notSelectable}
|
|
62
|
+
on:select={({ detail }) => {
|
|
63
|
+
dispatch('select', detail)
|
|
64
|
+
if ($propPickerConfig?.onSelect(detail)) {
|
|
65
|
+
propPickerConfig.set(undefined)
|
|
66
|
+
}
|
|
67
|
+
}}
|
|
68
|
+
/>
|
|
69
|
+
{/if}
|
|
70
|
+
</Pane>
|
|
71
|
+
</Splitpanes>
|
|
72
|
+
</div>
|
|
@@ -167,8 +167,8 @@ $: items && resetScroll();
|
|
|
167
167
|
/>
|
|
168
168
|
|
|
169
169
|
<CenteredPage>
|
|
170
|
-
<div class="flex flex-
|
|
171
|
-
<div>
|
|
170
|
+
<div class="flex flex-wrap gap-2 items-center justify-between w-full">
|
|
171
|
+
<div class="flex justify-start">
|
|
172
172
|
<ToggleButtonGroup bind:selected={itemKind}>
|
|
173
173
|
<ToggleButton light position="left" value="all" size="sm">All</ToggleButton>
|
|
174
174
|
<ToggleButton light position="center" value="script" size="sm">
|
|
@@ -192,7 +192,7 @@ $: items && resetScroll();
|
|
|
192
192
|
</ToggleButtonGroup>
|
|
193
193
|
</div>
|
|
194
194
|
|
|
195
|
-
<div class="relative text-gray-600 w-
|
|
195
|
+
<div class="relative text-gray-600 grow min-w-[100px]">
|
|
196
196
|
<!-- svelte-ignore a11y-autofocus -->
|
|
197
197
|
<input
|
|
198
198
|
autofocus
|
|
@@ -236,7 +236,7 @@ $: items && resetScroll();
|
|
|
236
236
|
{:else}
|
|
237
237
|
<div class="border rounded-md divide-y divide-gray-200 mb-80">
|
|
238
238
|
<!-- <VirtualList {items} let:item bind:start bind:end> -->
|
|
239
|
-
{#each items ?? [] as item, i (item.type + '/' + item.path)}
|
|
239
|
+
{#each items ?? [] as item, i (item.type + '/' + item.path + (item.summary ?? ''))}
|
|
240
240
|
{#if item.type == 'script'}
|
|
241
241
|
<ScriptRow
|
|
242
242
|
starred={item.starred ?? false}
|
|
@@ -261,6 +261,8 @@ $: items && resetScroll();
|
|
|
261
261
|
marked={item.marked}
|
|
262
262
|
on:change={loadApps}
|
|
263
263
|
app={item}
|
|
264
|
+
{moveDrawer}
|
|
265
|
+
{shareModal}
|
|
264
266
|
/>
|
|
265
267
|
{/if}
|
|
266
268
|
{/each}
|