windmill-components 1.75.0 → 1.78.0

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 (238) hide show
  1. package/components/ArgInput.svelte +4 -14
  2. package/components/DisplayResult.svelte +1 -1
  3. package/components/Dropdown.svelte +14 -4
  4. package/components/FlowGraphViewer.svelte +1 -1
  5. package/components/FolderUsageInfo.svelte +16 -6
  6. package/components/FolderUsageInfo.svelte.d.ts +2 -0
  7. package/components/LightweightArgInput.svelte +315 -0
  8. package/components/LightweightArgInput.svelte.d.ts +47 -0
  9. package/components/LightweightSchemaForm.svelte +31 -0
  10. package/components/LightweightSchemaForm.svelte.d.ts +18 -0
  11. package/components/ModulePreview.svelte +1 -0
  12. package/components/Multiselect.svelte.d.ts +2 -2
  13. package/components/PageHeader.svelte +1 -1
  14. package/components/Path.svelte +26 -3
  15. package/components/Range.svelte.d.ts +2 -2
  16. package/components/ScriptBuilder.svelte +122 -122
  17. package/components/SettingSection.svelte +44 -0
  18. package/components/SettingSection.svelte.d.ts +21 -0
  19. package/components/SimpleEditor.svelte +1 -1
  20. package/components/SimpleEditor.svelte.d.ts +2 -0
  21. package/components/TemplateEditor.svelte +3 -0
  22. package/components/TemplateEditor.svelte.d.ts +0 -204
  23. package/components/Tooltip.svelte +3 -1
  24. package/components/VariableEditor.svelte +2 -1
  25. package/components/WhitelistIp.svelte +1 -3
  26. package/components/apps/components/buttons/AppButton.svelte +16 -8
  27. package/components/apps/components/buttons/AppButton.svelte.d.ts +1 -2
  28. package/components/apps/components/buttons/AppForm.svelte +3 -7
  29. package/components/apps/components/buttons/AppFormButton.svelte +3 -7
  30. package/components/apps/components/display/AppBarChart.svelte +7 -3
  31. package/components/apps/components/display/AppBarChart.svelte.d.ts +0 -2
  32. package/components/apps/components/display/AppDisplayComponent.svelte +7 -3
  33. package/components/apps/components/display/AppDisplayComponent.svelte.d.ts +0 -2
  34. package/components/apps/components/display/AppHtml.svelte +7 -11
  35. package/components/apps/components/display/AppHtml.svelte.d.ts +0 -2
  36. package/components/apps/components/display/AppIcon.svelte +0 -1
  37. package/components/apps/components/display/AppIcon.svelte.d.ts +0 -2
  38. package/components/apps/components/display/AppImage.svelte +0 -1
  39. package/components/apps/components/display/AppImage.svelte.d.ts +0 -2
  40. package/components/apps/components/display/AppMap.svelte +10 -3
  41. package/components/apps/components/display/AppMap.svelte.d.ts +0 -2
  42. package/components/apps/components/display/AppPdf.svelte +8 -3
  43. package/components/apps/components/display/AppPdf.svelte.d.ts +0 -2
  44. package/components/apps/components/display/AppPieChart.svelte +7 -3
  45. package/components/apps/components/display/AppPieChart.svelte.d.ts +0 -2
  46. package/components/apps/components/display/AppScatterChart.svelte +7 -3
  47. package/components/apps/components/display/AppScatterChart.svelte.d.ts +0 -2
  48. package/components/apps/components/display/AppText.svelte +41 -17
  49. package/components/apps/components/display/AppText.svelte.d.ts +0 -2
  50. package/components/apps/components/display/AppTimeseries.svelte +7 -3
  51. package/components/apps/components/display/AppTimeseries.svelte.d.ts +0 -2
  52. package/components/apps/components/display/PlotlyHtml.svelte +9 -4
  53. package/components/apps/components/display/PlotlyHtml.svelte.d.ts +0 -2
  54. package/components/apps/components/display/VegaLiteHtml.svelte +8 -3
  55. package/components/apps/components/display/VegaLiteHtml.svelte.d.ts +0 -2
  56. package/components/apps/components/display/table/AppAggridTable.svelte +13 -5
  57. package/components/apps/components/display/table/AppAggridTable.svelte.d.ts +0 -2
  58. package/components/apps/components/display/table/AppTable.svelte +19 -13
  59. package/components/apps/components/display/table/AppTable.svelte.d.ts +0 -2
  60. package/components/apps/components/helpers/HiddenComponent.svelte +11 -2
  61. package/components/apps/components/helpers/HiddenComponent.svelte.d.ts +1 -2
  62. package/components/apps/components/helpers/InputValue.svelte +26 -43
  63. package/components/apps/components/helpers/InputValue.svelte.d.ts +4 -3
  64. package/components/apps/components/helpers/NonRunnableComponent.svelte +2 -2
  65. package/components/apps/components/helpers/RefreshButton.svelte +2 -3
  66. package/components/apps/components/helpers/ResizeWrapper.svelte +3 -4
  67. package/components/apps/components/helpers/RunnableComponent.svelte +63 -51
  68. package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +2 -1
  69. package/components/apps/components/helpers/RunnableWrapper.svelte +2 -2
  70. package/components/apps/components/helpers/RunnableWrapper.svelte.d.ts +1 -1
  71. package/components/apps/components/helpers/eval.d.ts +5 -0
  72. package/components/apps/components/helpers/eval.js +57 -0
  73. package/components/apps/components/inputs/AppCheckbox.svelte +4 -2
  74. package/components/apps/components/inputs/AppCheckbox.svelte.d.ts +0 -2
  75. package/components/apps/components/inputs/AppDateInput.svelte +4 -2
  76. package/components/apps/components/inputs/AppDateInput.svelte.d.ts +0 -2
  77. package/components/apps/components/inputs/AppFileInput.svelte +4 -2
  78. package/components/apps/components/inputs/AppFileInput.svelte.d.ts +0 -2
  79. package/components/apps/components/inputs/AppMultiSelect.svelte +4 -2
  80. package/components/apps/components/inputs/AppMultiSelect.svelte.d.ts +0 -2
  81. package/components/apps/components/inputs/AppNumberInput.svelte +4 -2
  82. package/components/apps/components/inputs/AppNumberInput.svelte.d.ts +0 -2
  83. package/components/apps/components/inputs/AppRangeInput.svelte +5 -2
  84. package/components/apps/components/inputs/AppRangeInput.svelte.d.ts +0 -2
  85. package/components/apps/components/inputs/AppSelect.svelte +4 -2
  86. package/components/apps/components/inputs/AppSelect.svelte.d.ts +0 -2
  87. package/components/apps/components/inputs/AppSliderInputs.svelte +4 -2
  88. package/components/apps/components/inputs/AppSliderInputs.svelte.d.ts +0 -2
  89. package/components/apps/components/inputs/AppTextInput.svelte +5 -3
  90. package/components/apps/components/inputs/AppTextInput.svelte.d.ts +0 -2
  91. package/components/apps/components/inputs/currency/AppCurrencyInput.svelte +5 -2
  92. package/components/apps/components/inputs/currency/AppCurrencyInput.svelte.d.ts +0 -2
  93. package/components/apps/components/layout/AppContainer.svelte +1 -7
  94. package/components/apps/components/layout/AppContainer.svelte.d.ts +0 -2
  95. package/components/apps/components/layout/AppDrawer.svelte +0 -3
  96. package/components/apps/components/layout/AppSplitpanes.svelte +1 -6
  97. package/components/apps/components/layout/AppTabs.svelte +62 -34
  98. package/components/apps/components/layout/AppTabs.svelte.d.ts +1 -2
  99. package/components/apps/editor/AppComponentInput.svelte +2 -1
  100. package/components/apps/editor/AppEditor.svelte +145 -143
  101. package/components/apps/editor/AppEditorHeader.svelte +43 -35
  102. package/components/apps/editor/AppPreview.svelte +68 -15
  103. package/components/apps/editor/ComponentHeader.svelte +3 -1
  104. package/components/apps/editor/ComponentHeader.svelte.d.ts +1 -0
  105. package/components/apps/editor/GridEditor.svelte +58 -77
  106. package/components/apps/editor/GridPanel.svelte +3 -1
  107. package/components/apps/editor/GridViewer.svelte +91 -0
  108. package/components/apps/editor/GridViewer.svelte.d.ts +32 -0
  109. package/components/apps/editor/RecomputeAllComponents.svelte +7 -1
  110. package/components/apps/editor/SettingsPanel.svelte +23 -10
  111. package/components/apps/editor/SubGridEditor.svelte +95 -68
  112. package/components/apps/editor/SubGridEditor.svelte.d.ts +3 -4
  113. package/components/apps/editor/appUtils.d.ts +13 -3
  114. package/components/apps/editor/appUtils.js +106 -37
  115. package/components/apps/editor/component/Component.svelte +6 -52
  116. package/components/apps/editor/component/ComponentNavigation.svelte +101 -51
  117. package/components/apps/editor/component/components.d.ts +3 -3
  118. package/components/apps/editor/component/components.js +59 -115
  119. package/components/apps/editor/componentsPanel/ComponentList.svelte +5 -4
  120. package/components/apps/editor/componentsPanel/componentStaticValues.d.ts +2 -1
  121. package/components/apps/editor/componentsPanel/componentStaticValues.js +1 -0
  122. package/components/apps/editor/contextPanel/ComponentOutput.svelte +67 -0
  123. package/components/apps/editor/contextPanel/ComponentOutput.svelte.d.ts +21 -0
  124. package/components/apps/editor/contextPanel/ComponentOutputViewer.svelte +15 -10
  125. package/components/apps/editor/contextPanel/ComponentOutputViewer.svelte.d.ts +0 -1
  126. package/components/apps/editor/contextPanel/ContextPanel.svelte +73 -136
  127. package/components/apps/editor/contextPanel/SubGridOutput.svelte +66 -0
  128. package/components/apps/editor/contextPanel/SubGridOutput.svelte.d.ts +19 -0
  129. package/components/apps/editor/contextPanel/components/BackgroundScriptOutput.svelte +41 -0
  130. package/components/apps/editor/contextPanel/components/BackgroundScriptOutput.svelte.d.ts +18 -0
  131. package/components/apps/editor/contextPanel/components/BackgroundScriptsOutput.svelte +9 -0
  132. package/components/apps/editor/contextPanel/components/BackgroundScriptsOutput.svelte.d.ts +16 -0
  133. package/components/apps/editor/contextPanel/components/MinMaxButton.svelte +25 -0
  134. package/components/apps/editor/contextPanel/components/MinMaxButton.svelte.d.ts +16 -0
  135. package/components/apps/editor/contextPanel/components/OutputHeader.svelte +99 -0
  136. package/components/apps/editor/contextPanel/components/OutputHeader.svelte.d.ts +24 -0
  137. package/components/apps/editor/contextPanel/components/TableActionOutput.svelte +17 -0
  138. package/components/apps/editor/contextPanel/components/TableActionOutput.svelte.d.ts +17 -0
  139. package/components/apps/editor/contextPanel/components/TableActionsOutput.svelte +13 -0
  140. package/components/apps/editor/contextPanel/components/TableActionsOutput.svelte.d.ts +17 -0
  141. package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte +55 -23
  142. package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +74 -44
  143. package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorDrawer.svelte +1 -1
  144. package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanel.svelte +5 -9
  145. package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte.d.ts +2 -2
  146. package/components/apps/editor/settingsPanel/ComponentPanel.svelte +43 -37
  147. package/components/apps/editor/settingsPanel/GridPane.svelte +1 -3
  148. package/components/apps/editor/settingsPanel/GridTab.svelte +5 -15
  149. package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte +1 -16
  150. package/components/apps/editor/settingsPanel/Recompute.svelte +1 -0
  151. package/components/apps/editor/settingsPanel/SelectedRunnable.svelte +6 -0
  152. package/components/apps/editor/settingsPanel/TableActions.svelte +4 -6
  153. package/components/apps/editor/settingsPanel/inputEditor/ConnectedInputEditor.svelte +2 -8
  154. package/components/apps/editor/settingsPanel/inputEditor/EvalInputEditor.svelte +2 -2
  155. package/components/apps/editor/settingsPanel/inputEditor/IconSelectInput.svelte +58 -46
  156. package/components/apps/editor/settingsPanel/inputEditor/JsonEditor.svelte +1 -1
  157. package/components/apps/editor/settingsPanel/inputEditor/JsonEditor.svelte.d.ts +2 -0
  158. package/components/apps/gridUtils.d.ts +1 -3
  159. package/components/apps/gridUtils.js +1 -15
  160. package/components/apps/rx.d.ts +7 -5
  161. package/components/apps/rx.js +37 -19
  162. package/components/apps/svelte-grid/Grid.svelte +167 -0
  163. package/components/apps/svelte-grid/Grid.svelte.d.ts +45 -0
  164. package/components/apps/svelte-grid/LICENSE +23 -0
  165. package/components/apps/svelte-grid/MoveResize.svelte +328 -0
  166. package/components/apps/svelte-grid/MoveResize.svelte.d.ts +46 -0
  167. package/components/apps/svelte-grid/types.d.ts +21 -0
  168. package/components/apps/svelte-grid/utils/container.d.ts +1 -0
  169. package/components/apps/svelte-grid/utils/container.js +4 -0
  170. package/components/apps/svelte-grid/utils/helper.d.ts +10 -0
  171. package/components/apps/svelte-grid/utils/helper.js +36 -0
  172. package/components/apps/svelte-grid/utils/item.d.ts +14 -0
  173. package/components/apps/svelte-grid/utils/item.js +192 -0
  174. package/components/apps/svelte-grid/utils/matrix.d.ts +6 -0
  175. package/components/apps/svelte-grid/utils/matrix.js +53 -0
  176. package/components/apps/svelte-grid/utils/other.d.ts +3 -0
  177. package/components/apps/svelte-grid/utils/other.js +30 -0
  178. package/components/apps/types.d.ts +19 -14
  179. package/components/apps/utils.d.ts +1 -1
  180. package/components/apps/utils.js +15 -9
  181. package/components/common/CloseButton.svelte +18 -0
  182. package/components/common/CloseButton.svelte.d.ts +27 -0
  183. package/components/common/badge/Badge.svelte +6 -1
  184. package/components/common/badge/Badge.svelte.d.ts +1 -0
  185. package/components/common/button/Button.svelte.d.ts +1 -1
  186. package/components/common/button/ButtonPopup.svelte.d.ts +1 -1
  187. package/components/common/drawer/DrawerContent.svelte +2 -6
  188. package/components/common/languageIcons/JavaScript.svelte +11 -0
  189. package/components/common/languageIcons/JavaScript.svelte.d.ts +25 -0
  190. package/components/common/languageIcons/LanguageIcon.svelte +3 -1
  191. package/components/common/languageIcons/LanguageIcon.svelte.d.ts +1 -1
  192. package/components/common/menu/Menu.svelte +1 -1
  193. package/components/common/menu/Menu.svelte.d.ts +1 -1
  194. package/components/common/popup/Popup.svelte +2 -1
  195. package/components/common/popup/Popup.svelte.d.ts +9 -0
  196. package/components/common/table/AppRow.svelte +1 -4
  197. package/components/common/table/FlowRow.svelte +1 -4
  198. package/components/common/table/ScriptRow.svelte +1 -4
  199. package/components/common/tabs/Tab.svelte +1 -0
  200. package/components/common/tabs/Tab.svelte.d.ts +2 -0
  201. package/components/flows/pickers/FlowScriptPicker.svelte.d.ts +1 -1
  202. package/components/graph/FlowGraph.svelte +1 -1
  203. package/components/propertyPicker/ObjectViewer.svelte +1 -1
  204. package/components/propertyPicker/PropPicker.svelte +4 -1
  205. package/components/sidebar/SidebarContent.svelte +2 -2
  206. package/consts.js +1 -1
  207. package/history.js +8 -1
  208. package/package.json +24 -28
  209. package/utils.js +0 -1
  210. package/components/apps/editor/AppComponentInputs.svelte +0 -13
  211. package/components/apps/editor/AppComponentInputs.svelte.d.ts +0 -20
  212. package/components/apps/editor/settingsPanel/MoveToOtherGrid.svelte +0 -92
  213. package/components/apps/editor/settingsPanel/MoveToOtherGrid.svelte.d.ts +0 -18
  214. package/components/graph/svelvet/d3/controllers/README.md +0 -3
  215. package/components/graph/svelvet/d3/controllers/d3Old.d.ts +0 -1
  216. package/components/graph/svelvet/d3/controllers/d3Old.js +0 -43
  217. package/components/graph/svelvet/docs/CHANGELOG.md +0 -145
  218. package/components/graph/svelvet/docs/DESIGN_PATTERNS.md +0 -44
  219. package/components/graph/svelvet/docs/DOCUMENTATION.md +0 -5
  220. package/components/graph/svelvet/docs/README.md +0 -34
  221. package/components/graph/svelvet/docs/TODO.md +0 -14
  222. package/components/graph/svelvet/docs/Tutorials.md +0 -25
  223. package/components/graph/svelvet/docs/images/css-background-after.png +0 -0
  224. package/components/graph/svelvet/docs/images/css-background-before.png +0 -0
  225. package/components/graph/svelvet/docs/images/custom-edges-after.png +0 -0
  226. package/components/graph/svelvet/docs/images/custom-edges-before.png +0 -0
  227. package/components/graph/svelvet/docs/images/custom-nodes-after.png +0 -0
  228. package/components/graph/svelvet/docs/images/custom-nodes-before.png +0 -0
  229. package/components/graph/svelvet/docs/images/custom-svelte-components-after.png +0 -0
  230. package/components/graph/svelvet/docs/images/custom-svelte-components-before.png +0 -0
  231. package/components/graph/svelvet/docs/images/html-docs-after.png +0 -0
  232. package/components/graph/svelvet/docs/images/html-docs-before.png +0 -0
  233. package/components/graph/svelvet/docs/images/minimap-after.png +0 -0
  234. package/components/graph/svelvet/docs/images/minimap-before.png +0 -0
  235. package/components/graph/svelvet/docs/images/node-classes-after.png +0 -0
  236. package/components/graph/svelvet/docs/images/node-classes-before.png +0 -0
  237. package/components/graph/svelvet/docs/images/node-create-after.png +0 -0
  238. package/components/graph/svelvet/docs/images/node-create-before.png +0 -0
@@ -129,6 +129,9 @@ $: {
129
129
  else if (inputCat == 'boolean') {
130
130
  value = false;
131
131
  }
132
+ else if (inputCat == 'list') {
133
+ value = [];
134
+ }
132
135
  }
133
136
  }
134
137
  }
@@ -263,7 +266,7 @@ $: inputCat = computeInputCat(type, format, itemsType?.type, enum_, contentEncod
263
266
  on:click={() => {
264
267
  value = value.filter((el) => el != v)
265
268
  if (value.length == 0) {
266
- value = undefined
269
+ value = []
267
270
  }
268
271
  }}
269
272
  >
@@ -425,19 +428,6 @@ $: inputCat = computeInputCat(type, format, itemsType?.type, enum_, contentEncod
425
428
  {/if}
426
429
  </div>
427
430
  {/if}
428
- {#if !required && inputCat != 'resource-object'}
429
- <!-- <Tooltip placement="bottom" content="Reset to default value">
430
- <Button
431
- on:click={() => (value = undefined)}
432
- {disabled}
433
- color="alternative"
434
- size="sm"
435
- class="h-8"
436
- >
437
- <Icon data={faArrowRotateLeft} />
438
- </Button>
439
- </Tooltip> -->
440
- {/if}
441
431
  <slot name="actions" />
442
432
  </div>
443
433
  {#if !compact || (error && error != '')}
@@ -231,6 +231,6 @@ let jsonViewer;
231
231
  <Highlight language={json} code={JSON.stringify(result, null, 4).replace(/\\n/g, '\n')} />
232
232
  {/if}
233
233
  {:else}
234
- <div class="text-gray-500 text-sm">No result</div>
234
+ <div class="text-gray-500 text-sm">No result: {JSON.stringify(result)}</div>
235
235
  {/if}
236
236
  </div>
@@ -1,19 +1,29 @@
1
1
  <script>import { createEventDispatcher } from 'svelte';
2
2
  import Icon from 'svelte-awesome';
3
- import { MoreHorizontal } from 'lucide-svelte';
3
+ import { MoreVertical } from 'lucide-svelte';
4
4
  import { Button, Menu } from './common';
5
5
  import { goto } from '$app/navigation';
6
+ import { twMerge } from 'tailwind-merge';
6
7
  export let dropdownItems;
7
8
  export let name = undefined;
8
9
  export let placement = 'bottom-start';
9
- export let btnClasses = '!text-blue-500 bg-transparent';
10
+ export let btnClasses = '';
11
+ $: buttonClass = twMerge('!border-0 bg-transparent !p-[6px]', btnClasses);
10
12
  const dispatch = createEventDispatcher();
11
13
  </script>
12
14
 
13
15
  <Menu {placement} let:close>
14
- <Button nonCaptureEvent color="light" size="xs" {btnClasses} {...$$restProps} slot="trigger">
16
+ <Button
17
+ nonCaptureEvent
18
+ color="dark"
19
+ variant="border"
20
+ size="xs"
21
+ btnClasses={buttonClass}
22
+ {...$$restProps}
23
+ slot="trigger"
24
+ >
15
25
  {#if !$$slots.default}
16
- <MoreHorizontal size={20} />
26
+ <MoreVertical size={20} />
17
27
  {:else}
18
28
  <slot />
19
29
  {/if}
@@ -80,7 +80,7 @@ let topHeight = 0;
80
80
  minHeight={400}
81
81
  modules={flow?.value?.modules}
82
82
  failureModule={flow?.value?.failure_module}
83
- on:click={(e) => (stepDetail = e.detail)}
83
+ on:select={(e) => (stepDetail = e.detail)}
84
84
  />
85
85
  </div>
86
86
  {#if !noSide}
@@ -1,6 +1,8 @@
1
1
  <script>import { FolderService, GroupService } from '../gen';
2
2
  import { workspaceStore } from '../stores';
3
3
  export let name;
4
+ export let tabular = false;
5
+ export let order = ['scripts', 'flows', 'apps', 'schedules', 'variables', 'resources'];
4
6
  $: $workspaceStore && loadUsage();
5
7
  let usage = {};
6
8
  async function loadUsage() {
@@ -8,10 +10,18 @@ async function loadUsage() {
8
10
  }
9
11
  </script>
10
12
 
11
- <div class="flex flex-col text-xs text-gray-600">
12
- {#each Object.entries(usage) as [k, v]}
13
- <div>
14
- {k}: {v}
15
- </div>
13
+ {#if tabular}
14
+ {#each order as key}
15
+ <td class="text-center">
16
+ {usage[key] ?? ''}
17
+ </td>
16
18
  {/each}
17
- </div>
19
+ {:else}
20
+ <div class="flex flex-col text-xs text-gray-600">
21
+ {#each Object.entries(usage) as [k, v]}
22
+ <div>
23
+ {k}: {v}
24
+ </div>
25
+ {/each}
26
+ </div>
27
+ {/if}
@@ -2,6 +2,8 @@ import { SvelteComponentTyped } from "svelte";
2
2
  declare const __propDef: {
3
3
  props: {
4
4
  name: string;
5
+ tabular?: boolean | undefined;
6
+ order?: string[] | undefined;
5
7
  };
6
8
  events: {
7
9
  [evt: string]: CustomEvent<any>;
@@ -0,0 +1,315 @@
1
+ <script>import { faMinus, faPlus } from '@fortawesome/free-solid-svg-icons';
2
+ import { setInputCat as computeInputCat } from '../utils';
3
+ import { Badge, Button } from './common';
4
+ import { createEventDispatcher } from 'svelte';
5
+ import Icon from 'svelte-awesome';
6
+ import FieldHeader from './FieldHeader.svelte';
7
+ import ObjectResourceInput from './ObjectResourceInput.svelte';
8
+ import ResourcePicker from './ResourcePicker.svelte';
9
+ import autosize from 'svelte-autosize';
10
+ import Toggle from './Toggle.svelte';
11
+ import Range from './Range.svelte';
12
+ import LightweightSchemaForm from './LightweightSchemaForm.svelte';
13
+ export let label = '';
14
+ export let value;
15
+ export let defaultValue = undefined;
16
+ export let description = '';
17
+ export let format = '';
18
+ export let contentEncoding = undefined;
19
+ export let type = undefined;
20
+ export let required = false;
21
+ export let pattern = undefined;
22
+ export let valid = required ? false : true;
23
+ export let maxRows = 10;
24
+ export let enum_ = undefined;
25
+ export let itemsType = undefined;
26
+ export let displayHeader = true;
27
+ export let properties = undefined;
28
+ export let extra = {};
29
+ const dispatch = createEventDispatcher();
30
+ $: maxHeight = maxRows ? `${1 + maxRows * 1.2}em` : `auto`;
31
+ $: validateInput(pattern, value);
32
+ let error = '';
33
+ let el = undefined;
34
+ let rawValue = undefined;
35
+ $: {
36
+ if (rawValue) {
37
+ try {
38
+ value = JSON.parse(rawValue);
39
+ error = '';
40
+ }
41
+ catch (err) {
42
+ error = err.toString();
43
+ }
44
+ }
45
+ }
46
+ $: {
47
+ error = '';
48
+ if (inputCat === 'object') {
49
+ evalValueToRaw();
50
+ validateInput(pattern, value);
51
+ }
52
+ }
53
+ export function evalValueToRaw() {
54
+ if (value) {
55
+ rawValue = JSON.stringify(value, null, 4);
56
+ }
57
+ }
58
+ function fileChanged(e, cb) {
59
+ let t = e.target;
60
+ if (t && 'files' in t && t.files.length > 0) {
61
+ let reader = new FileReader();
62
+ reader.onload = (e) => {
63
+ cb(e.target.result.split('base64,')[1]);
64
+ };
65
+ reader.readAsDataURL(t.files[0]);
66
+ }
67
+ else {
68
+ cb(undefined);
69
+ }
70
+ }
71
+ export function focus() {
72
+ el?.focus();
73
+ if (el) {
74
+ el.style.height = '5px';
75
+ el.style.height = el.scrollHeight + 50 + 'px';
76
+ }
77
+ }
78
+ function validateInput(pattern, v) {
79
+ if (required && (v == undefined || v == null || v === '')) {
80
+ error = 'This field is required';
81
+ valid = false;
82
+ }
83
+ else {
84
+ if (pattern && !testRegex(pattern, v)) {
85
+ error = `Should match ${pattern}`;
86
+ valid = false;
87
+ }
88
+ else {
89
+ error = '';
90
+ valid = true;
91
+ }
92
+ }
93
+ }
94
+ function testRegex(pattern, value) {
95
+ try {
96
+ const regex = new RegExp(pattern);
97
+ return regex.test(value);
98
+ }
99
+ catch (err) {
100
+ return false;
101
+ }
102
+ }
103
+ $: {
104
+ if (value == undefined || value == null) {
105
+ value = defaultValue;
106
+ if (defaultValue === undefined || defaultValue === null) {
107
+ if (inputCat === 'string') {
108
+ value = '';
109
+ }
110
+ else if (inputCat == 'enum') {
111
+ value = enum_?.[0];
112
+ }
113
+ else if (inputCat == 'boolean') {
114
+ value = false;
115
+ }
116
+ }
117
+ }
118
+ }
119
+ $: inputCat = computeInputCat(type, format, itemsType?.type, enum_, contentEncoding);
120
+ </script>
121
+
122
+ <div class="flex flex-col w-full min-w-[250px]">
123
+ <div>
124
+ {#if displayHeader}
125
+ <FieldHeader {label} {required} {type} {contentEncoding} {format} {itemsType} />
126
+ {/if}
127
+
128
+ {#if description}
129
+ <div class="text-sm italic pb-1">
130
+ {description}
131
+ </div>
132
+ {/if}
133
+
134
+ <div class="flex space-x-1">
135
+ {#if inputCat == 'number'}
136
+ {#if extra['min'] != undefined && extra['max'] != undefined}
137
+ <div class="flex w-full gap-1">
138
+ <span>{extra['min']}</span>
139
+ <div class="grow">
140
+ <Range bind:value min={extra['min']} max={extra['max']} />
141
+ </div>
142
+ <span>{extra['max']}</span>
143
+ <span class="mx-2"><Badge large color="blue">{value}</Badge></span>
144
+ </div>
145
+ {:else}
146
+ <input
147
+ on:focus={(e) => {
148
+ window.dispatchEvent(new Event('pointerup'))
149
+ dispatch('focus')
150
+ }}
151
+ type="number"
152
+ class={valid
153
+ ? ''
154
+ : 'border border-red-700 border-opacity-30 focus:border-red-700 focus:border-opacity-30 bg-red-100'}
155
+ placeholder={defaultValue ?? ''}
156
+ bind:value
157
+ min={extra['min']}
158
+ max={extra['max']}
159
+ on:input={() => dispatch('input', { value, isRaw: true })}
160
+ />
161
+ {/if}
162
+ {:else if inputCat == 'boolean'}
163
+ <Toggle
164
+ on:pointerdown={(e) => {
165
+ e?.stopPropagation()
166
+ window.dispatchEvent(new Event('pointerup'))
167
+ }}
168
+ class={valid
169
+ ? ''
170
+ : 'border border-red-700 border-opacity-30 focus:border-red-700 focus:border-opacity-30 bg-red-100'}
171
+ bind:checked={value}
172
+ />
173
+ {#if type == 'boolean' && value == undefined}
174
+ <span>&nbsp; Not set</span>
175
+ {/if}
176
+ {:else if inputCat == 'list'}
177
+ <div>
178
+ <div>
179
+ {#each value ?? [] as v, i}
180
+ <div class="flex flex-row max-w-md mt-1">
181
+ {#if itemsType?.type == 'number'}
182
+ <input type="number" bind:value={v} />
183
+ {:else if itemsType?.type == 'string' && itemsType?.contentEncoding == 'base64'}
184
+ <input
185
+ type="file"
186
+ class="my-6"
187
+ on:change={(x) => fileChanged(x, (val) => (value[i] = val))}
188
+ multiple={false}
189
+ />
190
+ {:else}
191
+ <input type="text" bind:value={v} />
192
+ {/if}
193
+ <Button
194
+ variant="border"
195
+ color="red"
196
+ size="sm"
197
+ btnClasses="mx-6"
198
+ on:click={() => {
199
+ value = value.filter((el) => el != v)
200
+ if (value.length == 0) {
201
+ value = undefined
202
+ }
203
+ }}
204
+ >
205
+ <Icon data={faMinus} />
206
+ </Button>
207
+ </div>
208
+ {/each}
209
+ </div>
210
+ <Button
211
+ variant="border"
212
+ color="blue"
213
+ size="sm"
214
+ btnClasses="mt-1"
215
+ on:click={() => {
216
+ if (value == undefined || !Array.isArray(value)) {
217
+ value = []
218
+ }
219
+ value = value.concat('')
220
+ }}
221
+ >
222
+ <Icon data={faPlus} class="mr-2" />
223
+ Add item
224
+ </Button>
225
+ <span class="ml-2">
226
+ {(value ?? []).length} item{(value ?? []).length > 1 ? 's' : ''}
227
+ </span>
228
+ </div>
229
+ {:else if inputCat == 'resource-object'}
230
+ <ObjectResourceInput {format} bind:value />
231
+ {:else if inputCat == 'object'}
232
+ {#if properties && Object.keys(properties).length > 0}
233
+ <div class="p-4 pl-8 border rounded w-full">
234
+ <LightweightSchemaForm
235
+ schema={{ properties, $schema: '', required: [], type: 'object' }}
236
+ bind:args={value}
237
+ />
238
+ </div>
239
+ {:else}
240
+ <textarea
241
+ bind:this={el}
242
+ on:focus={(e) => {
243
+ window.dispatchEvent(new Event('pointerup'))
244
+ dispatch('focus')
245
+ }}
246
+ use:autosize
247
+ style="max-height: {maxHeight}"
248
+ on:input={() => {
249
+ dispatch('input', { rawValue: value, isRaw: false })
250
+ }}
251
+ class="col-span-10 {valid
252
+ ? ''
253
+ : 'border border-red-700 border-opacity-30 focus:border-red-700 focus:border-opacity-30 bg-red-100'}"
254
+ placeholder={defaultValue ? JSON.stringify(defaultValue, null, 4) : ''}
255
+ bind:value={rawValue}
256
+ />
257
+ {/if}
258
+ {:else if inputCat == 'enum'}
259
+ <select
260
+ on:focus={(e) => {
261
+ window.dispatchEvent(new Event('pointerup'))
262
+ dispatch('focus')
263
+ }}
264
+ class="px-6"
265
+ bind:value
266
+ >
267
+ {#each enum_ ?? [] as e}
268
+ <option>{e}</option>
269
+ {/each}
270
+ </select>
271
+ {:else if inputCat == 'date'}
272
+ <input class="inline-block" type="datetime-local" bind:value />
273
+ {:else if inputCat == 'base64'}
274
+ <input
275
+ type="file"
276
+ class="my-6"
277
+ on:change={(x) => fileChanged(x, (val) => (value = val))}
278
+ multiple={false}
279
+ />
280
+ {:else if inputCat == 'resource-string'}
281
+ <ResourcePicker
282
+ bind:value
283
+ resourceType={format.split('-').length > 1
284
+ ? format.substring('resource-'.length)
285
+ : undefined}
286
+ />
287
+ {:else if inputCat == 'string'}
288
+ <div class="flex flex-col w-full">
289
+ <div class="flex flex-row w-full items- justify-between">
290
+ <textarea
291
+ rows="1"
292
+ bind:this={el}
293
+ on:focus={(e) => {
294
+ window.dispatchEvent(new Event('pointerup'))
295
+ dispatch('focus')
296
+ }}
297
+ on:blur={() => dispatch('blur')}
298
+ use:autosize
299
+ type="text"
300
+ class="col-span-10 {valid
301
+ ? ''
302
+ : 'border border-red-700 border-opacity-30 focus:border-red-700 focus:border-opacity-30 bg-red-100'}"
303
+ placeholder={defaultValue ?? ''}
304
+ bind:value
305
+ on:input={() => {
306
+ dispatch('input', { rawValue: value, isRaw: false })
307
+ }}
308
+ />
309
+ </div>
310
+ </div>
311
+ {/if}
312
+ <slot name="actions" />
313
+ </div>
314
+ </div>
315
+ </div>
@@ -0,0 +1,47 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ import type { SchemaProperty } from '../common';
3
+ declare const __propDef: {
4
+ props: {
5
+ label?: string | undefined;
6
+ value: any;
7
+ defaultValue?: any;
8
+ description?: string | undefined;
9
+ format?: string | undefined;
10
+ contentEncoding?: 'base64' | 'binary' | undefined;
11
+ type?: string | undefined;
12
+ required?: boolean | undefined;
13
+ pattern?: undefined | string;
14
+ valid?: boolean | undefined;
15
+ maxRows?: number | undefined;
16
+ enum_?: string[] | undefined;
17
+ itemsType?: {
18
+ type?: "string" | "number" | "bytes" | undefined;
19
+ contentEncoding?: "base64" | undefined;
20
+ } | undefined;
21
+ displayHeader?: boolean | undefined;
22
+ properties?: {
23
+ [name: string]: SchemaProperty;
24
+ } | undefined;
25
+ extra?: Record<string, any> | undefined;
26
+ evalValueToRaw?: (() => void) | undefined;
27
+ focus?: (() => void) | undefined;
28
+ };
29
+ events: {
30
+ focus: CustomEvent<any>;
31
+ input: CustomEvent<any>;
32
+ blur: CustomEvent<any>;
33
+ } & {
34
+ [evt: string]: CustomEvent<any>;
35
+ };
36
+ slots: {
37
+ actions: {};
38
+ };
39
+ };
40
+ export type LightweightArgInputProps = typeof __propDef.props;
41
+ export type LightweightArgInputEvents = typeof __propDef.events;
42
+ export type LightweightArgInputSlots = typeof __propDef.slots;
43
+ export default class LightweightArgInput extends SvelteComponentTyped<LightweightArgInputProps, LightweightArgInputEvents, LightweightArgInputSlots> {
44
+ get evalValueToRaw(): () => void;
45
+ get focus(): () => void;
46
+ }
47
+ export {};
@@ -0,0 +1,31 @@
1
+ <script>import LightweightArgInput from './LightweightArgInput.svelte';
2
+ export let schema;
3
+ export let args = undefined;
4
+ $: if (args === undefined) {
5
+ args = {};
6
+ }
7
+ </script>
8
+
9
+ <div class="w-full">
10
+ {#each Object.keys(schema.properties ?? {}) as argName, i (argName)}
11
+ <div>
12
+ {#if typeof args == 'object' && schema?.properties[argName] && args}
13
+ <LightweightArgInput
14
+ label={argName}
15
+ description={schema.properties[argName].description}
16
+ bind:value={args[argName]}
17
+ type={schema.properties[argName].type}
18
+ required={schema.required.includes(argName)}
19
+ pattern={schema.properties[argName].pattern}
20
+ defaultValue={schema.properties[argName].default}
21
+ enum_={schema.properties[argName].enum}
22
+ format={schema.properties[argName].format}
23
+ contentEncoding={schema.properties[argName].contentEncoding}
24
+ properties={schema.properties[argName].properties}
25
+ itemsType={schema.properties[argName].items}
26
+ extra={schema.properties[argName]}
27
+ />
28
+ {/if}
29
+ </div>
30
+ {/each}
31
+ </div>
@@ -0,0 +1,18 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ import type { Schema } from '../common';
3
+ declare const __propDef: {
4
+ props: {
5
+ schema: Schema;
6
+ args?: Record<string, any> | undefined;
7
+ };
8
+ events: {
9
+ [evt: string]: CustomEvent<any>;
10
+ };
11
+ slots: {};
12
+ };
13
+ export type LightweightSchemaFormProps = typeof __propDef.props;
14
+ export type LightweightSchemaFormEvents = typeof __propDef.events;
15
+ export type LightweightSchemaFormSlots = typeof __propDef.slots;
16
+ export default class LightweightSchemaForm extends SvelteComponentTyped<LightweightSchemaFormProps, LightweightSchemaFormEvents, LightweightSchemaFormSlots> {
17
+ }
18
+ export {};
@@ -49,6 +49,7 @@ function jobDone() {
49
49
  if (testJob && !testJob.canceled && testJob.type == 'CompletedJob' && `result` in testJob) {
50
50
  if ($flowStateStore[mod.id]?.previewResult) {
51
51
  $flowStateStore[mod.id].previewResult = testJob.result;
52
+ $flowStateStore = $flowStateStore;
52
53
  }
53
54
  }
54
55
  }
@@ -4,8 +4,8 @@
4
4
  export default class Multiselect extends SvelteComponentTyped<{
5
5
  value?: any[] | undefined;
6
6
  id?: string | undefined;
7
- placeholder?: string | undefined;
8
7
  readonly?: boolean | undefined;
8
+ placeholder?: string | undefined;
9
9
  }, {
10
10
  [evt: string]: CustomEvent<any>;
11
11
  }, {
@@ -20,8 +20,8 @@ declare const __propDef: {
20
20
  props: {
21
21
  value?: any[] | undefined;
22
22
  id?: string | undefined;
23
- placeholder?: string | undefined;
24
23
  readonly?: boolean | undefined;
24
+ placeholder?: string | undefined;
25
25
  };
26
26
  events: {
27
27
  [evt: string]: CustomEvent<any>;
@@ -9,7 +9,7 @@ export let primary = true;
9
9
  <span class="flex items-center space-x-2 mb-2">
10
10
  <h1>{title}</h1>
11
11
  {#if tooltip}
12
- <Tooltip>{tooltip}</Tooltip>
12
+ <Tooltip scale={0.9}>{tooltip}</Tooltip>
13
13
  {/if}
14
14
  </span>
15
15
  {:else}
@@ -12,6 +12,7 @@ import Tooltip from './Tooltip.svelte';
12
12
  import FolderEditor from './FolderEditor.svelte';
13
13
  import GroupEditor from './GroupEditor.svelte';
14
14
  import { random_adj } from './random_positive_adjetive';
15
+ import Badge from './common/badge/Badge.svelte';
15
16
  let meta = undefined;
16
17
  export let namePlaceholder = '';
17
18
  export let initialPath;
@@ -168,6 +169,10 @@ $: {
168
169
  }
169
170
  }
170
171
  function initPath() {
172
+ if (path != undefined && path != '') {
173
+ meta = pathToMeta(path);
174
+ return;
175
+ }
171
176
  if (initialPath == undefined || initialPath == '') {
172
177
  reset();
173
178
  }
@@ -272,7 +277,7 @@ async function addGroup() {
272
277
  {#if meta != undefined}
273
278
  <div class="flex gap-4 shrink">
274
279
  <label class="block">
275
- <span class="text-gray-700 text-sm whitespace-nowrap">&nbsp;</span>
280
+ <span class="text-gray-700 text-sm whitespace-nowrap">Owner</span>
276
281
 
277
282
  <ToggleButtonGroup
278
283
  class="mt-0.5"
@@ -375,8 +380,26 @@ async function addGroup() {
375
380
  {/if}
376
381
  </div>
377
382
 
378
- <div class="flex-row flex justify-between w-full">
379
- <div><span class="font-mono text-sm break-all">{path}</span></div>
383
+ <div class="flex flex-col w-full mt-4">
384
+ <div class="flex justify-start w-full">
385
+ <Badge
386
+ color="gray"
387
+ class="center-center !bg-gray-300 !text-gray-600 !w-[70px] !h-[24px] rounded-r-none"
388
+ >
389
+ Full path
390
+ </Badge>
391
+ <input
392
+ type="text"
393
+ readonly
394
+ value={path}
395
+ size={path?.length || 50}
396
+ class="font-mono !text-xs max-w-[calc(100%-70px)] !w-auto !h-[24px] !py-0 !border-l-0 !rounded-l-none"
397
+ on:focus={({ currentTarget }) => {
398
+ currentTarget.select()
399
+ }}
400
+ />
401
+ <!-- <span class="font-mono text-sm break-all">{path}</span> -->
402
+ </div>
380
403
  <div class="text-red-600 text-2xs">{error}</div>
381
404
  </div>
382
405
  </div>
@@ -4,8 +4,8 @@
4
4
  export default class Range extends SvelteComponentTyped<{
5
5
  value?: number | undefined;
6
6
  id?: null | undefined;
7
- max?: number | undefined;
8
7
  min?: number | undefined;
8
+ max?: number | undefined;
9
9
  initialValue?: number | undefined;
10
10
  }, {
11
11
  pointerdown: PointerEvent;
@@ -22,8 +22,8 @@ declare const __propDef: {
22
22
  props: {
23
23
  value?: number | undefined;
24
24
  id?: null | undefined;
25
- max?: number | undefined;
26
25
  min?: number | undefined;
26
+ max?: number | undefined;
27
27
  initialValue?: number | undefined;
28
28
  };
29
29
  events: {