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.
Files changed (199) hide show
  1. package/common.d.ts +1 -1
  2. package/common.js +3 -0
  3. package/components/AppConnect.svelte +2 -2
  4. package/components/ArgInput.svelte +1 -1
  5. package/components/CronInput.svelte +54 -53
  6. package/components/Dropdown.svelte +21 -9
  7. package/components/Editor.svelte +10 -10
  8. package/components/EditorBar.svelte +2 -2
  9. package/components/FlowBuilder.svelte +41 -25
  10. package/components/FlowGraphViewer.svelte +6 -2
  11. package/components/FlowMetadata.svelte +8 -3
  12. package/components/FolderEditor.svelte +299 -0
  13. package/components/FolderEditor.svelte.d.ts +16 -0
  14. package/components/FolderInfo.svelte +13 -0
  15. package/components/FolderInfo.svelte.d.ts +16 -0
  16. package/components/FolderUsageInfo.svelte +17 -0
  17. package/components/FolderUsageInfo.svelte.d.ts +16 -0
  18. package/components/GroupEditor.svelte +287 -0
  19. package/components/GroupEditor.svelte.d.ts +18 -0
  20. package/components/GroupInfo.svelte +22 -0
  21. package/components/GroupInfo.svelte.d.ts +16 -0
  22. package/components/InputTransformForm.svelte +16 -7
  23. package/components/MoveDrawer.svelte +75 -0
  24. package/components/MoveDrawer.svelte.d.ts +19 -0
  25. package/components/Path.svelte +243 -96
  26. package/components/Path.svelte.d.ts +1 -4
  27. package/components/RadioButton.svelte +2 -0
  28. package/components/RadioButton.svelte.d.ts +1 -0
  29. package/components/ResourceEditor.svelte +11 -16
  30. package/components/RunForm.svelte +20 -3
  31. package/components/RunForm.svelte.d.ts +1 -1
  32. package/components/ScheduleEditor.svelte +226 -0
  33. package/components/ScheduleEditor.svelte.d.ts +26 -0
  34. package/components/ScriptBuilder.svelte +109 -114
  35. package/components/ScriptEditor.svelte +17 -14
  36. package/components/ScriptEditor.svelte.d.ts +1 -0
  37. package/components/ScriptPicker.svelte +55 -29
  38. package/components/ScriptPicker.svelte.d.ts +1 -0
  39. package/components/ShareModal.svelte +94 -73
  40. package/components/ShareModal.svelte.d.ts +2 -4
  41. package/components/SimpleEditor.svelte +15 -10
  42. package/components/TemplateEditor.svelte +496 -0
  43. package/components/TemplateEditor.svelte.d.ts +25 -0
  44. package/components/TestJobLoader.svelte +1 -1
  45. package/components/VariableEditor.svelte +2 -1
  46. package/components/apps/CreateApp.svelte +1 -1
  47. package/components/apps/components/buttons/AppButton.svelte +3 -3
  48. package/components/apps/components/dataDisplay/AppBarChart.svelte +5 -4
  49. package/components/apps/components/dataDisplay/AppPieChart.svelte +3 -3
  50. package/components/apps/components/dateInputs/AppDateInput.svelte +34 -0
  51. package/components/apps/components/dateInputs/AppDateInput.svelte.d.ts +22 -0
  52. package/components/apps/components/form/AppForm.svelte +4 -5
  53. package/components/apps/components/form/AppForm.svelte.d.ts +0 -1
  54. package/components/apps/components/helpers/AlignWrapper.svelte +3 -4
  55. package/components/apps/components/helpers/AlignWrapper.svelte.d.ts +2 -3
  56. package/components/apps/components/helpers/InputValue.svelte +54 -5
  57. package/components/apps/components/helpers/InputValue.svelte.d.ts +1 -0
  58. package/components/apps/components/helpers/NonRunnableComponent.svelte +2 -1
  59. package/components/apps/components/helpers/RefreshButton.svelte +20 -0
  60. package/components/apps/components/helpers/RefreshButton.svelte.d.ts +16 -0
  61. package/components/apps/components/helpers/RunnableComponent.svelte +38 -42
  62. package/components/apps/components/helpers/RunnableWrapper.svelte +6 -3
  63. package/components/apps/components/numberInputs/AppNumberInput.svelte +8 -11
  64. package/components/apps/components/numberInputs/AppNumberInput.svelte.d.ts +1 -0
  65. package/components/apps/components/selectInputs/AppCheckbox.svelte +1 -1
  66. package/components/apps/components/selectInputs/AppSelect.svelte +26 -0
  67. package/components/apps/components/selectInputs/AppSelect.svelte.d.ts +22 -0
  68. package/components/apps/components/table/AppTable.svelte +159 -0
  69. package/components/apps/components/{dataDisplay → table}/AppTable.svelte.d.ts +0 -0
  70. package/components/apps/components/table/AppTableFooter.svelte +54 -0
  71. package/components/apps/components/table/AppTableFooter.svelte.d.ts +20 -0
  72. package/components/apps/components/table/tableOptions.d.ts +10 -0
  73. package/components/apps/components/table/tableOptions.js +11 -0
  74. package/components/apps/components/textInputs/AppTextInput.svelte +17 -10
  75. package/components/apps/components/textInputs/AppTextInput.svelte.d.ts +2 -0
  76. package/components/apps/editor/AppEditor.svelte +35 -20
  77. package/components/apps/editor/AppEditorHeader.svelte +15 -7
  78. package/components/apps/editor/AppPreview.svelte +5 -3
  79. package/components/apps/editor/AppPreview.svelte.d.ts +4 -1
  80. package/components/apps/editor/ComponentEditor.svelte +21 -3
  81. package/components/apps/editor/ComponentEditor.svelte.d.ts +2 -0
  82. package/components/apps/editor/ComponentHeader.svelte +21 -4
  83. package/components/apps/editor/ComponentHeader.svelte.d.ts +2 -0
  84. package/components/apps/editor/GridEditor.svelte +40 -20
  85. package/components/apps/editor/RecomputeAllComponents.svelte +5 -7
  86. package/components/apps/editor/componentsPanel/ComponentList.svelte +30 -82
  87. package/components/apps/editor/componentsPanel/data.js +78 -29
  88. package/components/apps/editor/contextPanel/ComponentOutputViewer.svelte +5 -1
  89. package/components/apps/editor/contextPanel/ContextPanel.svelte +35 -152
  90. package/components/apps/editor/contextPanel/ContextPanel.svelte.d.ts +1 -3
  91. package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte +64 -0
  92. package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte.d.ts +18 -0
  93. package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +95 -0
  94. package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte.d.ts +20 -0
  95. package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorDrawer.svelte +32 -0
  96. package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorDrawer.svelte.d.ts +19 -0
  97. package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorPanel.svelte +63 -0
  98. package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorPanel.svelte.d.ts +17 -0
  99. package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanel.svelte +44 -0
  100. package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanel.svelte.d.ts +14 -0
  101. package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte +126 -0
  102. package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte.d.ts +16 -0
  103. package/components/apps/editor/settingsPanel/AlignmentEditor.svelte +41 -0
  104. package/components/apps/editor/settingsPanel/AlignmentEditor.svelte.d.ts +17 -0
  105. package/components/apps/editor/settingsPanel/ComponentInputTypeEditor.svelte +44 -0
  106. package/components/apps/editor/settingsPanel/ComponentInputTypeEditor.svelte.d.ts +18 -0
  107. package/components/apps/editor/settingsPanel/ComponentPanel.svelte +48 -130
  108. package/components/apps/editor/settingsPanel/ComponentPanel.svelte.d.ts +3 -0
  109. package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +2 -2
  110. package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte +1 -1
  111. package/components/apps/editor/settingsPanel/Recompute.svelte +2 -2
  112. package/components/apps/editor/settingsPanel/SelectedRunnable.svelte +46 -0
  113. package/components/apps/editor/settingsPanel/SelectedRunnable.svelte.d.ts +17 -0
  114. package/components/apps/editor/settingsPanel/SubTypeEditor.svelte +1 -1
  115. package/components/apps/editor/settingsPanel/common/PanelSection.svelte +1 -1
  116. package/components/apps/editor/settingsPanel/{ConnectedInputEditor.svelte → inputEditor/ConnectedInputEditor.svelte} +1 -2
  117. package/components/apps/editor/settingsPanel/{ConnectedInputEditor.svelte.d.ts → inputEditor/ConnectedInputEditor.svelte.d.ts} +1 -1
  118. package/components/apps/editor/settingsPanel/inputEditor/RunnableInputEditor.svelte +12 -0
  119. package/components/apps/editor/settingsPanel/inputEditor/RunnableInputEditor.svelte.d.ts +17 -0
  120. package/components/apps/editor/settingsPanel/{StaticInputEditor.svelte → inputEditor/StaticInputEditor.svelte} +5 -5
  121. package/components/apps/editor/settingsPanel/{StaticInputEditor.svelte.d.ts → inputEditor/StaticInputEditor.svelte.d.ts} +1 -1
  122. package/components/apps/editor/settingsPanel/mainInput/InlineScriptList.svelte +6 -3
  123. package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte +66 -22
  124. package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte.d.ts +2 -3
  125. package/components/apps/editor/settingsPanel/mainInput/WorkspaceFlowList.svelte +1 -1
  126. package/components/apps/gridUtils.d.ts +3 -1
  127. package/components/apps/gridUtils.js +16 -1
  128. package/components/apps/inputType.d.ts +10 -4
  129. package/components/apps/rx.d.ts +8 -8
  130. package/components/apps/rx.js +17 -9
  131. package/components/apps/types.d.ts +14 -2
  132. package/components/apps/utils.d.ts +4 -3
  133. package/components/apps/utils.js +37 -5
  134. package/components/common/drawer/Drawer.svelte +1 -1
  135. package/components/common/drawer/Drawer.svelte.d.ts +1 -0
  136. package/components/common/table/FlowRow.svelte +21 -7
  137. package/components/common/table/FlowRow.svelte.d.ts +2 -0
  138. package/components/common/table/ScriptRow.svelte +22 -7
  139. package/components/common/table/ScriptRow.svelte.d.ts +2 -0
  140. package/components/common/toggleButton/ToggleButton.svelte +1 -1
  141. package/components/common/toggleButton/ToggleButtonGroup.svelte +1 -1
  142. package/components/common/toggleButton/ToggleButtonGroup.svelte.d.ts +1 -0
  143. package/components/flows/content/FlowEditorPanel.svelte +10 -16
  144. package/components/flows/content/FlowInputs.svelte +18 -4
  145. package/components/flows/content/FlowInputs.svelte.d.ts +1 -0
  146. package/components/flows/content/FlowModuleComponent.svelte +1 -1
  147. package/components/flows/content/FlowModuleWrapper.svelte +26 -1
  148. package/components/flows/content/FlowSchedules.svelte +5 -0
  149. package/components/flows/content/FlowSettings.svelte +13 -23
  150. package/components/flows/content/FlowSettings.svelte.d.ts +0 -1
  151. package/components/flows/header/FlowPreviewButtons.svelte +1 -0
  152. package/components/flows/map/FlowErrorHandlerItem.svelte +1 -1
  153. package/components/flows/map/FlowModuleSchemaMap.svelte +12 -3
  154. package/components/flows/map/FlowSettingsItem.svelte +8 -15
  155. package/components/flows/map/InsertModuleButton.svelte +29 -2
  156. package/components/flows/map/InsertModuleButton.svelte.d.ts +3 -1
  157. package/components/flows/map/MapItem.svelte +2 -1
  158. package/components/flows/map/MapItem.svelte.d.ts +1 -0
  159. package/components/flows/pickers/WorkspaceScriptPicker.svelte +3 -0
  160. package/components/flows/previousResults.js +1 -1
  161. package/components/graph/FlowGraph.svelte +13 -13
  162. package/components/home/ItemsList.svelte +20 -12
  163. package/components/jobs/JobDetail.svelte +9 -3
  164. package/components/sidebar/SidebarContent.svelte +4 -3
  165. package/components/sidebar/UserMenu.svelte +1 -1
  166. package/editorUtils.d.ts +7 -1
  167. package/editorUtils.js +98 -3
  168. package/es5.d.ts.txt +4526 -0
  169. package/gen/index.d.ts +2 -0
  170. package/gen/index.js +1 -0
  171. package/gen/models/CompletedJob.d.ts +1 -0
  172. package/gen/models/EditSchedule.d.ts +0 -2
  173. package/gen/models/Folder.d.ts +5 -0
  174. package/gen/models/Folder.js +4 -0
  175. package/gen/models/QueuedJob.d.ts +1 -0
  176. package/gen/models/Script.d.ts +1 -1
  177. package/gen/models/User.d.ts +1 -0
  178. package/gen/services/FolderService.d.ts +128 -0
  179. package/gen/services/FolderService.js +151 -0
  180. package/gen/services/GranularAclService.d.ts +3 -3
  181. package/gen/services/GroupService.d.ts +5 -1
  182. package/gen/services/GroupService.js +4 -1
  183. package/gen/services/JobService.d.ts +25 -5
  184. package/gen/services/JobService.js +10 -5
  185. package/gen/services/ScriptService.d.ts +2 -1
  186. package/gen/services/UserService.d.ts +9 -0
  187. package/gen/services/UserService.js +15 -0
  188. package/package.json +33 -9
  189. package/script_helpers.d.ts +2 -2
  190. package/script_helpers.js +4 -4
  191. package/stores.d.ts +1 -0
  192. package/utils.d.ts +3 -0
  193. package/utils.js +44 -7
  194. package/components/GroupModal.svelte +0 -98
  195. package/components/GroupModal.svelte.d.ts +0 -17
  196. package/components/apps/components/dataDisplay/AppTable.svelte +0 -132
  197. package/components/apps/components/dataDisplay/app.md +0 -49
  198. package/components/apps/editor/contextPanel/InlineScriptCreationPanel.svelte +0 -29
  199. 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 {};