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
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
<script>import Button from '../../../common/button/Button.svelte';
|
|
2
|
+
import { faTrash } from '@fortawesome/free-solid-svg-icons';
|
|
3
|
+
import { createEventDispatcher, onMount } from 'svelte';
|
|
4
|
+
import SimpleEditor from '../../../SimpleEditor.svelte';
|
|
5
|
+
import { CheckCircle, Code2, X } from 'lucide-svelte';
|
|
6
|
+
import InlineScriptEditorDrawer from './InlineScriptEditorDrawer.svelte';
|
|
7
|
+
import { inferArgs } from '../../../../infer';
|
|
8
|
+
import Badge from '../../../common/badge/Badge.svelte';
|
|
9
|
+
import { fly } from 'svelte/transition';
|
|
10
|
+
import Editor from '../../../Editor.svelte';
|
|
11
|
+
import { scriptLangToEditorLang } from '../../../../utils';
|
|
12
|
+
let inlineScriptEditorDrawer;
|
|
13
|
+
export let inlineScript;
|
|
14
|
+
export let name = undefined;
|
|
15
|
+
let validCode = false;
|
|
16
|
+
async function inferInlineScriptSchema(language, content, schema) {
|
|
17
|
+
try {
|
|
18
|
+
await inferArgs(language, content, schema);
|
|
19
|
+
validCode = true;
|
|
20
|
+
}
|
|
21
|
+
catch (e) {
|
|
22
|
+
console.error("Couldn't infer args", e);
|
|
23
|
+
validCode = false;
|
|
24
|
+
}
|
|
25
|
+
return schema;
|
|
26
|
+
}
|
|
27
|
+
onMount(async () => {
|
|
28
|
+
if (inlineScript) {
|
|
29
|
+
inlineScript.schema = await inferInlineScriptSchema(inlineScript?.language, inlineScript?.content, inlineScript?.schema);
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
const dispatch = createEventDispatcher();
|
|
33
|
+
</script>
|
|
34
|
+
|
|
35
|
+
<InlineScriptEditorDrawer bind:this={inlineScriptEditorDrawer} bind:inlineScript />
|
|
36
|
+
|
|
37
|
+
<div class="h-full p-4 flex flex-col gap-2" transition:fly={{ duration: 50 }}>
|
|
38
|
+
<div class="flex justify-between w-full gap-1 flex-row items-center">
|
|
39
|
+
{#if name !== undefined}
|
|
40
|
+
<input bind:value={name} placeholder="Inline script name" />
|
|
41
|
+
{/if}
|
|
42
|
+
<div class="flex w-full flex-row gap-2 items-center justify-end">
|
|
43
|
+
{#if validCode}
|
|
44
|
+
<Badge color="green">
|
|
45
|
+
<CheckCircle size={16} />
|
|
46
|
+
</Badge>
|
|
47
|
+
{:else}
|
|
48
|
+
<Badge color="red">
|
|
49
|
+
<X size={16} />
|
|
50
|
+
</Badge>
|
|
51
|
+
{/if}
|
|
52
|
+
|
|
53
|
+
<Button
|
|
54
|
+
size="xs"
|
|
55
|
+
color="light"
|
|
56
|
+
variant="border"
|
|
57
|
+
iconOnly
|
|
58
|
+
startIcon={{ icon: faTrash }}
|
|
59
|
+
on:click={() => dispatch('delete')}
|
|
60
|
+
/>
|
|
61
|
+
<Button
|
|
62
|
+
size="xs"
|
|
63
|
+
color="blue"
|
|
64
|
+
on:click={() => {
|
|
65
|
+
inlineScriptEditorDrawer?.openDrawer()
|
|
66
|
+
}}
|
|
67
|
+
>
|
|
68
|
+
<div class="flex gap-1 items-center">
|
|
69
|
+
<Code2 size={16} />
|
|
70
|
+
Open full editor
|
|
71
|
+
</div>
|
|
72
|
+
</Button>
|
|
73
|
+
</div>
|
|
74
|
+
</div>
|
|
75
|
+
|
|
76
|
+
<div class="border h-full">
|
|
77
|
+
<Editor
|
|
78
|
+
class="flex flex-1 grow h-full"
|
|
79
|
+
lang={scriptLangToEditorLang(inlineScript?.language)}
|
|
80
|
+
bind:code={inlineScript.content}
|
|
81
|
+
fixedOverflowWidgets={false}
|
|
82
|
+
on:change={async () => {
|
|
83
|
+
if (inlineScript) {
|
|
84
|
+
let schema = await inferInlineScriptSchema(
|
|
85
|
+
inlineScript?.language,
|
|
86
|
+
inlineScript.content,
|
|
87
|
+
inlineScript.schema
|
|
88
|
+
)
|
|
89
|
+
inlineScript.schema = schema
|
|
90
|
+
inlineScript = inlineScript
|
|
91
|
+
}
|
|
92
|
+
}}
|
|
93
|
+
/>
|
|
94
|
+
</div>
|
|
95
|
+
</div>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { SvelteComponentTyped } from "svelte";
|
|
2
|
+
import type { InlineScript } from '../../types';
|
|
3
|
+
declare const __propDef: {
|
|
4
|
+
props: {
|
|
5
|
+
inlineScript: InlineScript;
|
|
6
|
+
name?: string | undefined;
|
|
7
|
+
};
|
|
8
|
+
events: {
|
|
9
|
+
delete: CustomEvent<any>;
|
|
10
|
+
} & {
|
|
11
|
+
[evt: string]: CustomEvent<any>;
|
|
12
|
+
};
|
|
13
|
+
slots: {};
|
|
14
|
+
};
|
|
15
|
+
export type InlineScriptEditorProps = typeof __propDef.props;
|
|
16
|
+
export type InlineScriptEditorEvents = typeof __propDef.events;
|
|
17
|
+
export type InlineScriptEditorSlots = typeof __propDef.slots;
|
|
18
|
+
export default class InlineScriptEditor extends SvelteComponentTyped<InlineScriptEditorProps, InlineScriptEditorEvents, InlineScriptEditorSlots> {
|
|
19
|
+
}
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
<script>import { Button, Drawer, DrawerContent } from '../../../common';
|
|
2
|
+
import ScriptEditor from '../../../ScriptEditor.svelte';
|
|
3
|
+
import { faSave } from '@fortawesome/free-solid-svg-icons';
|
|
4
|
+
let scriptEditorDrawer;
|
|
5
|
+
export let inlineScript;
|
|
6
|
+
export function openDrawer() {
|
|
7
|
+
scriptEditorDrawer.openDrawer?.();
|
|
8
|
+
}
|
|
9
|
+
</script>
|
|
10
|
+
|
|
11
|
+
<Drawer bind:this={scriptEditorDrawer} size="1200px">
|
|
12
|
+
<DrawerContent
|
|
13
|
+
title="Script Editor"
|
|
14
|
+
noPadding
|
|
15
|
+
forceOverflowVisible
|
|
16
|
+
on:close={scriptEditorDrawer.closeDrawer}
|
|
17
|
+
>
|
|
18
|
+
{#if inlineScript}
|
|
19
|
+
<ScriptEditor
|
|
20
|
+
noSyncFromGithub
|
|
21
|
+
lang={inlineScript.language}
|
|
22
|
+
path={inlineScript.path}
|
|
23
|
+
fixedOverflowWidgets={false}
|
|
24
|
+
bind:code={inlineScript.content}
|
|
25
|
+
bind:schema={inlineScript.schema}
|
|
26
|
+
/>
|
|
27
|
+
{/if}
|
|
28
|
+
<svelte:fragment slot="actions">
|
|
29
|
+
<Button startIcon={{ icon: faSave }} disabled>Automatically Saved</Button>
|
|
30
|
+
</svelte:fragment>
|
|
31
|
+
</DrawerContent>
|
|
32
|
+
</Drawer>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { SvelteComponentTyped } from "svelte";
|
|
2
|
+
import type { InlineScript } from '../../types';
|
|
3
|
+
declare const __propDef: {
|
|
4
|
+
props: {
|
|
5
|
+
inlineScript: InlineScript;
|
|
6
|
+
openDrawer?: (() => void) | undefined;
|
|
7
|
+
};
|
|
8
|
+
events: {
|
|
9
|
+
[evt: string]: CustomEvent<any>;
|
|
10
|
+
};
|
|
11
|
+
slots: {};
|
|
12
|
+
};
|
|
13
|
+
export type InlineScriptEditorDrawerProps = typeof __propDef.props;
|
|
14
|
+
export type InlineScriptEditorDrawerEvents = typeof __propDef.events;
|
|
15
|
+
export type InlineScriptEditorDrawerSlots = typeof __propDef.slots;
|
|
16
|
+
export default class InlineScriptEditorDrawer extends SvelteComponentTyped<InlineScriptEditorDrawerProps, InlineScriptEditorDrawerEvents, InlineScriptEditorDrawerSlots> {
|
|
17
|
+
get openDrawer(): () => void;
|
|
18
|
+
}
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
<script>import Button from '../../../common/button/Button.svelte';
|
|
2
|
+
import FlowModuleScript from '../../../flows/content/FlowModuleScript.svelte';
|
|
3
|
+
import { getScriptByPath } from '../../../../utils';
|
|
4
|
+
import { faCodeBranch } from '@fortawesome/free-solid-svg-icons';
|
|
5
|
+
import { r } from 'svelte-highlight/languages';
|
|
6
|
+
import { clearResultAppInput } from '../../utils';
|
|
7
|
+
import EmptyInlineScript from './EmptyInlineScript.svelte';
|
|
8
|
+
import InlineScriptEditor from './InlineScriptEditor.svelte';
|
|
9
|
+
export let componentInput;
|
|
10
|
+
async function fork(path) {
|
|
11
|
+
const { content, language, schema } = await getScriptByPath(path);
|
|
12
|
+
componentInput.runnable = {
|
|
13
|
+
type: 'runnableByName',
|
|
14
|
+
name: path,
|
|
15
|
+
inlineScript: {
|
|
16
|
+
content,
|
|
17
|
+
language,
|
|
18
|
+
schema,
|
|
19
|
+
path
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
</script>
|
|
24
|
+
|
|
25
|
+
{#if componentInput?.runnable?.type === 'runnableByName' && componentInput?.runnable?.name !== undefined}
|
|
26
|
+
{#if componentInput.runnable.inlineScript}
|
|
27
|
+
<InlineScriptEditor
|
|
28
|
+
bind:inlineScript={componentInput.runnable.inlineScript}
|
|
29
|
+
bind:name={componentInput.runnable.name}
|
|
30
|
+
on:delete={() => {
|
|
31
|
+
componentInput = clearResultAppInput(componentInput)
|
|
32
|
+
}}
|
|
33
|
+
/>
|
|
34
|
+
{:else}
|
|
35
|
+
<EmptyInlineScript
|
|
36
|
+
name={componentInput.runnable.name}
|
|
37
|
+
on:new={(e) => {
|
|
38
|
+
if (componentInput?.runnable?.type === 'runnableByName') {
|
|
39
|
+
componentInput.runnable.inlineScript = e.detail
|
|
40
|
+
}
|
|
41
|
+
}}
|
|
42
|
+
/>
|
|
43
|
+
{/if}
|
|
44
|
+
{:else if componentInput?.runnable?.type === 'runnableByPath' && componentInput?.runnable?.path}
|
|
45
|
+
<div class="p-2 h-full flex flex-col gap-2 ">
|
|
46
|
+
<div>
|
|
47
|
+
<Button
|
|
48
|
+
size="xs"
|
|
49
|
+
startIcon={{ icon: faCodeBranch }}
|
|
50
|
+
on:click={() => {
|
|
51
|
+
if (componentInput.runnable?.type === 'runnableByPath') {
|
|
52
|
+
fork(componentInput.runnable.path)
|
|
53
|
+
}
|
|
54
|
+
}}
|
|
55
|
+
>
|
|
56
|
+
Fork
|
|
57
|
+
</Button>
|
|
58
|
+
</div>
|
|
59
|
+
<div class="border w-full">
|
|
60
|
+
<FlowModuleScript path={componentInput.runnable.path} />
|
|
61
|
+
</div>
|
|
62
|
+
</div>
|
|
63
|
+
{/if}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { SvelteComponentTyped } from "svelte";
|
|
2
|
+
import type { ResultAppInput } from '../../inputType';
|
|
3
|
+
declare const __propDef: {
|
|
4
|
+
props: {
|
|
5
|
+
componentInput: ResultAppInput;
|
|
6
|
+
};
|
|
7
|
+
events: {
|
|
8
|
+
[evt: string]: CustomEvent<any>;
|
|
9
|
+
};
|
|
10
|
+
slots: {};
|
|
11
|
+
};
|
|
12
|
+
export type InlineScriptEditorPanelProps = typeof __propDef.props;
|
|
13
|
+
export type InlineScriptEditorPanelEvents = typeof __propDef.events;
|
|
14
|
+
export type InlineScriptEditorPanelSlots = typeof __propDef.slots;
|
|
15
|
+
export default class InlineScriptEditorPanel extends SvelteComponentTyped<InlineScriptEditorPanelProps, InlineScriptEditorPanelEvents, InlineScriptEditorPanelSlots> {
|
|
16
|
+
}
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
<script>import { getContext } from 'svelte';
|
|
2
|
+
import SplitPanesWrapper from '../../../splitPanes/SplitPanesWrapper.svelte';
|
|
3
|
+
import { Pane } from 'svelte-splitpanes';
|
|
4
|
+
import InlineScriptsPanelList from './InlineScriptsPanelList.svelte';
|
|
5
|
+
import InlineScriptEditorPanel from './InlineScriptEditorPanel.svelte';
|
|
6
|
+
import InlineScriptEditor from './InlineScriptEditor.svelte';
|
|
7
|
+
const { app } = getContext('AppEditorContext');
|
|
8
|
+
let selectedScriptComponentId = undefined;
|
|
9
|
+
</script>
|
|
10
|
+
|
|
11
|
+
<SplitPanesWrapper>
|
|
12
|
+
<Pane size={25}>
|
|
13
|
+
<InlineScriptsPanelList bind:selectedScriptComponentId />
|
|
14
|
+
</Pane>
|
|
15
|
+
<Pane size={75}>
|
|
16
|
+
{#each $app.grid as gridComponent, index (index)}
|
|
17
|
+
{#if gridComponent.data.id === selectedScriptComponentId}
|
|
18
|
+
<InlineScriptEditorPanel bind:componentInput={gridComponent.data.componentInput} />
|
|
19
|
+
{/if}
|
|
20
|
+
|
|
21
|
+
{#if gridComponent.data.type === 'tablecomponent'}
|
|
22
|
+
{#each gridComponent.data.actionButtons as actionButton, index (index)}
|
|
23
|
+
{#if actionButton.id === selectedScriptComponentId}
|
|
24
|
+
<InlineScriptEditorPanel bind:componentInput={actionButton.componentInput} />
|
|
25
|
+
{/if}
|
|
26
|
+
{/each}
|
|
27
|
+
{/if}
|
|
28
|
+
{/each}
|
|
29
|
+
{#if Array.isArray($app.unusedInlineScripts)}
|
|
30
|
+
{#each $app.unusedInlineScripts as unusedInlineScript, index (index)}
|
|
31
|
+
{#if unusedInlineScript.name === selectedScriptComponentId}
|
|
32
|
+
<InlineScriptEditor
|
|
33
|
+
bind:inlineScript={unusedInlineScript.inlineScript}
|
|
34
|
+
on:delete={() => {
|
|
35
|
+
// remove the script from the array at the index
|
|
36
|
+
$app.unusedInlineScripts.splice(index, 1)
|
|
37
|
+
$app.unusedInlineScripts = [...$app.unusedInlineScripts]
|
|
38
|
+
}}
|
|
39
|
+
/>
|
|
40
|
+
{/if}
|
|
41
|
+
{/each}
|
|
42
|
+
{/if}
|
|
43
|
+
</Pane>
|
|
44
|
+
</SplitPanesWrapper>
|
|
@@ -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 InlineScriptsPanelProps = typeof __propDef.props;
|
|
10
|
+
export type InlineScriptsPanelEvents = typeof __propDef.events;
|
|
11
|
+
export type InlineScriptsPanelSlots = typeof __propDef.slots;
|
|
12
|
+
export default class InlineScriptsPanel extends SvelteComponentTyped<InlineScriptsPanelProps, InlineScriptsPanelEvents, InlineScriptsPanelSlots> {
|
|
13
|
+
}
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
<script>import { Badge } from '../../../common';
|
|
2
|
+
import { classNames } from '../../../../utils';
|
|
3
|
+
import { getContext } from 'svelte';
|
|
4
|
+
import PanelSection from '../settingsPanel/common/PanelSection.svelte';
|
|
5
|
+
export let selectedScriptComponentId = undefined;
|
|
6
|
+
const { app, selectedComponent } = getContext('AppEditorContext');
|
|
7
|
+
function selectInlineScript(id, subId) {
|
|
8
|
+
selectedScriptComponentId = subId ? subId : id;
|
|
9
|
+
$selectedComponent = id;
|
|
10
|
+
}
|
|
11
|
+
$: runnablesByName = $app.grid.reduce((acc, gridComponent) => {
|
|
12
|
+
const component = gridComponent.data;
|
|
13
|
+
if (component.type === 'tablecomponent') {
|
|
14
|
+
component.actionButtons.forEach((actionButton) => {
|
|
15
|
+
if (actionButton.componentInput?.type === 'runnable') {
|
|
16
|
+
if (actionButton.componentInput.runnable?.type === 'runnableByName') {
|
|
17
|
+
acc.push({
|
|
18
|
+
name: actionButton.componentInput.runnable.name,
|
|
19
|
+
id: gridComponent.id,
|
|
20
|
+
subId: actionButton.id
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
const componentInput = component.componentInput;
|
|
27
|
+
if (componentInput?.type === 'runnable') {
|
|
28
|
+
if (componentInput.runnable?.type === 'runnableByName') {
|
|
29
|
+
acc.push({
|
|
30
|
+
name: componentInput.runnable.name,
|
|
31
|
+
id: gridComponent.id
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return acc;
|
|
36
|
+
}, []);
|
|
37
|
+
$: runnablesByPath = $app.grid.reduce((acc, gridComponent) => {
|
|
38
|
+
const componentInput = gridComponent.data.componentInput;
|
|
39
|
+
if (componentInput?.type === 'runnable') {
|
|
40
|
+
if (componentInput.runnable?.type === 'runnableByPath') {
|
|
41
|
+
acc.push({
|
|
42
|
+
name: componentInput.runnable.path,
|
|
43
|
+
id: gridComponent.id
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return acc;
|
|
48
|
+
}, []);
|
|
49
|
+
// When seleced component changes, update selectedScriptComponentId
|
|
50
|
+
$: {
|
|
51
|
+
if (selectedComponent) {
|
|
52
|
+
selectedScriptComponentId = $selectedComponent;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
</script>
|
|
56
|
+
|
|
57
|
+
<PanelSection title="Inline scripts" smallPadding>
|
|
58
|
+
<div class="flex flex-col gap-2 w-full">
|
|
59
|
+
{#if runnablesByName.length > 0}
|
|
60
|
+
<div class="flex gap-2 flex-col ">
|
|
61
|
+
{#each runnablesByName as { name, id, subId }, index (index)}
|
|
62
|
+
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
|
63
|
+
<div
|
|
64
|
+
class="{classNames(
|
|
65
|
+
'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',
|
|
66
|
+
selectedScriptComponentId === (subId ? subId : id) ? 'border-blue-500 border' : ''
|
|
67
|
+
)},"
|
|
68
|
+
on:click={() => selectInlineScript(id, subId)}
|
|
69
|
+
>
|
|
70
|
+
<span class="text-xs truncate">{name}</span>
|
|
71
|
+
<div>
|
|
72
|
+
<Badge color="dark-indigo">{id}</Badge>
|
|
73
|
+
{#if subId}
|
|
74
|
+
<Badge color="dark-indigo">{subId}</Badge>
|
|
75
|
+
{/if}
|
|
76
|
+
</div>
|
|
77
|
+
</div>
|
|
78
|
+
{/each}
|
|
79
|
+
</div>
|
|
80
|
+
{:else}
|
|
81
|
+
<div class="text-sm text-gray-500">No inline scripts</div>
|
|
82
|
+
{/if}
|
|
83
|
+
|
|
84
|
+
{#if Array.isArray($app.unusedInlineScripts) && $app.unusedInlineScripts.length > 0}
|
|
85
|
+
<div class="flex gap-2 flex-col ">
|
|
86
|
+
{#each $app.unusedInlineScripts as unusedInlineScript, index (index)}
|
|
87
|
+
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
|
88
|
+
<div
|
|
89
|
+
class="{classNames(
|
|
90
|
+
'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',
|
|
91
|
+
selectedScriptComponentId === '' ? 'bg-blue-100 text-blue-600' : ''
|
|
92
|
+
)},"
|
|
93
|
+
on:click={() => selectInlineScript(unusedInlineScript.name)}
|
|
94
|
+
>
|
|
95
|
+
<span class="text-xs truncate">{unusedInlineScript.name}</span>
|
|
96
|
+
<Badge color="red">Unused</Badge>
|
|
97
|
+
</div>
|
|
98
|
+
{/each}
|
|
99
|
+
</div>
|
|
100
|
+
{/if}
|
|
101
|
+
</div>
|
|
102
|
+
</PanelSection>
|
|
103
|
+
|
|
104
|
+
<PanelSection title="Runnable by path" smallPadding>
|
|
105
|
+
<div class="flex flex-col gap-2 w-full">
|
|
106
|
+
{#if runnablesByPath.length > 0}
|
|
107
|
+
<div class="flex gap-2 flex-col ">
|
|
108
|
+
{#each runnablesByPath as { name, id }, index (index)}
|
|
109
|
+
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
|
110
|
+
<div
|
|
111
|
+
class="{classNames(
|
|
112
|
+
'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',
|
|
113
|
+
selectedScriptComponentId === id ? 'bg-blue-100 text-blue-600' : ''
|
|
114
|
+
)},"
|
|
115
|
+
on:click={() => selectInlineScript(id)}
|
|
116
|
+
>
|
|
117
|
+
<span class="text-xs truncate">{name}</span>
|
|
118
|
+
<Badge color="dark-indigo">{id}</Badge>
|
|
119
|
+
</div>
|
|
120
|
+
{/each}
|
|
121
|
+
</div>
|
|
122
|
+
{:else}
|
|
123
|
+
<div class="text-sm text-gray-500">No inline scripts</div>
|
|
124
|
+
{/if}
|
|
125
|
+
</div>
|
|
126
|
+
</PanelSection>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { SvelteComponentTyped } from "svelte";
|
|
2
|
+
declare const __propDef: {
|
|
3
|
+
props: {
|
|
4
|
+
selectedScriptComponentId?: string | undefined;
|
|
5
|
+
};
|
|
6
|
+
events: {
|
|
7
|
+
[evt: string]: CustomEvent<any>;
|
|
8
|
+
};
|
|
9
|
+
slots: {};
|
|
10
|
+
};
|
|
11
|
+
export type InlineScriptsPanelListProps = typeof __propDef.props;
|
|
12
|
+
export type InlineScriptsPanelListEvents = typeof __propDef.events;
|
|
13
|
+
export type InlineScriptsPanelListSlots = typeof __propDef.slots;
|
|
14
|
+
export default class InlineScriptsPanelList extends SvelteComponentTyped<InlineScriptsPanelListProps, InlineScriptsPanelListEvents, InlineScriptsPanelListSlots> {
|
|
15
|
+
}
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
<script>import { ToggleButton, ToggleButtonGroup } from '../../../common';
|
|
2
|
+
import { AlignCenterHorizontal, AlignCenterVertical, AlignEndHorizontal, AlignEndVertical, AlignStartHorizontal, AlignStartVertical } from 'lucide-svelte';
|
|
3
|
+
import PanelSection from './common/PanelSection.svelte';
|
|
4
|
+
export let component;
|
|
5
|
+
</script>
|
|
6
|
+
|
|
7
|
+
{#if component.verticalAlignment !== undefined}
|
|
8
|
+
<PanelSection title="Alignment">
|
|
9
|
+
<div class="w-full text-xs font-semibold">Horizontal</div>
|
|
10
|
+
|
|
11
|
+
<div class="w-full">
|
|
12
|
+
<ToggleButtonGroup bind:selected={component.horizontalAlignment}>
|
|
13
|
+
<ToggleButton position="left" value="left" size="xs">
|
|
14
|
+
<AlignStartVertical size={16} />
|
|
15
|
+
</ToggleButton>
|
|
16
|
+
<ToggleButton position="center" value="center" size="xs">
|
|
17
|
+
<AlignCenterVertical size={16} />
|
|
18
|
+
</ToggleButton>
|
|
19
|
+
<ToggleButton position="right" value="right" size="xs">
|
|
20
|
+
<AlignEndVertical size={16} />
|
|
21
|
+
</ToggleButton>
|
|
22
|
+
</ToggleButtonGroup>
|
|
23
|
+
</div>
|
|
24
|
+
{#if component.type !== 'formcomponent'}
|
|
25
|
+
<div class="w-full text-xs font-semibold">Vertical</div>
|
|
26
|
+
<div class="w-full">
|
|
27
|
+
<ToggleButtonGroup bind:selected={component.verticalAlignment}>
|
|
28
|
+
<ToggleButton position="left" value="top" size="xs">
|
|
29
|
+
<AlignStartHorizontal size={16} />
|
|
30
|
+
</ToggleButton>
|
|
31
|
+
<ToggleButton position="center" value="center" size="xs">
|
|
32
|
+
<AlignCenterHorizontal size={16} />
|
|
33
|
+
</ToggleButton>
|
|
34
|
+
<ToggleButton position="right" value="bottom" size="xs">
|
|
35
|
+
<AlignEndHorizontal size={16} />
|
|
36
|
+
</ToggleButton>
|
|
37
|
+
</ToggleButtonGroup>
|
|
38
|
+
</div>
|
|
39
|
+
{/if}
|
|
40
|
+
</PanelSection>
|
|
41
|
+
{/if}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { SvelteComponentTyped } from "svelte";
|
|
2
|
+
import type { AppComponent } from '../../types';
|
|
3
|
+
declare const __propDef: {
|
|
4
|
+
props: {
|
|
5
|
+
component: AppComponent;
|
|
6
|
+
};
|
|
7
|
+
events: {
|
|
8
|
+
[evt: string]: CustomEvent<any>;
|
|
9
|
+
};
|
|
10
|
+
slots: {};
|
|
11
|
+
};
|
|
12
|
+
export type AlignmentEditorProps = typeof __propDef.props;
|
|
13
|
+
export type AlignmentEditorEvents = typeof __propDef.events;
|
|
14
|
+
export type AlignmentEditorSlots = typeof __propDef.slots;
|
|
15
|
+
export default class AlignmentEditor extends SvelteComponentTyped<AlignmentEditorProps, AlignmentEditorEvents, AlignmentEditorSlots> {
|
|
16
|
+
}
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
<script>import { ToggleButton, ToggleButtonGroup } from '../../../common';
|
|
2
|
+
import { faArrowRight, faCode, faPen } from '@fortawesome/free-solid-svg-icons';
|
|
3
|
+
export let componentInput;
|
|
4
|
+
export let disableStatic = false;
|
|
5
|
+
$: if (componentInput.fieldType == 'textarea' && componentInput.type == 'static') {
|
|
6
|
+
//@ts-ignore
|
|
7
|
+
componentInput.type = 'template';
|
|
8
|
+
}
|
|
9
|
+
const brackets = '${}';
|
|
10
|
+
</script>
|
|
11
|
+
|
|
12
|
+
{#if componentInput.fieldType !== 'any'}
|
|
13
|
+
<div class="w-full">
|
|
14
|
+
<ToggleButtonGroup bind:selected={componentInput.type}>
|
|
15
|
+
{#if componentInput.fieldType === 'textarea'}
|
|
16
|
+
<ToggleButton position="left" value="template" size="xs" disable={disableStatic}>
|
|
17
|
+
{brackets} Templatable
|
|
18
|
+
</ToggleButton>
|
|
19
|
+
{:else}
|
|
20
|
+
<ToggleButton
|
|
21
|
+
position="left"
|
|
22
|
+
value="static"
|
|
23
|
+
startIcon={{ icon: faPen }}
|
|
24
|
+
size="xs"
|
|
25
|
+
disable={disableStatic}
|
|
26
|
+
>
|
|
27
|
+
Static
|
|
28
|
+
</ToggleButton>
|
|
29
|
+
{/if}
|
|
30
|
+
|
|
31
|
+
<ToggleButton
|
|
32
|
+
value="connected"
|
|
33
|
+
position="center"
|
|
34
|
+
startIcon={{ icon: faArrowRight }}
|
|
35
|
+
size="xs"
|
|
36
|
+
>
|
|
37
|
+
Connected
|
|
38
|
+
</ToggleButton>
|
|
39
|
+
<ToggleButton position="right" value="runnable" startIcon={{ icon: faCode }} size="xs">
|
|
40
|
+
Computed
|
|
41
|
+
</ToggleButton>
|
|
42
|
+
</ToggleButtonGroup>
|
|
43
|
+
</div>
|
|
44
|
+
{/if}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { SvelteComponentTyped } from "svelte";
|
|
2
|
+
import type { AppInput } from '../../inputType';
|
|
3
|
+
declare const __propDef: {
|
|
4
|
+
props: {
|
|
5
|
+
componentInput: AppInput;
|
|
6
|
+
disableStatic?: boolean | undefined;
|
|
7
|
+
};
|
|
8
|
+
events: {
|
|
9
|
+
[evt: string]: CustomEvent<any>;
|
|
10
|
+
};
|
|
11
|
+
slots: {};
|
|
12
|
+
};
|
|
13
|
+
export type ComponentInputTypeEditorProps = typeof __propDef.props;
|
|
14
|
+
export type ComponentInputTypeEditorEvents = typeof __propDef.events;
|
|
15
|
+
export type ComponentInputTypeEditorSlots = typeof __propDef.slots;
|
|
16
|
+
export default class ComponentInputTypeEditor extends SvelteComponentTyped<ComponentInputTypeEditorProps, ComponentInputTypeEditorEvents, ComponentInputTypeEditorSlots> {
|
|
17
|
+
}
|
|
18
|
+
export {};
|