windmill-components 1.77.0 → 1.79.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 (198) hide show
  1. package/components/ArgInput.svelte +4 -14
  2. package/components/LightweightArgInput.svelte +315 -0
  3. package/components/LightweightArgInput.svelte.d.ts +47 -0
  4. package/components/LightweightSchemaForm.svelte +31 -0
  5. package/components/LightweightSchemaForm.svelte.d.ts +18 -0
  6. package/components/ModulePreview.svelte +1 -0
  7. package/components/Multiselect.svelte.d.ts +2 -2
  8. package/components/Path.svelte +4 -0
  9. package/components/Range.svelte.d.ts +2 -2
  10. package/components/SimpleEditor.svelte +1 -1
  11. package/components/SimpleEditor.svelte.d.ts +2 -0
  12. package/components/TemplateEditor.svelte +3 -0
  13. package/components/TemplateEditor.svelte.d.ts +0 -204
  14. package/components/VariableEditor.svelte +2 -1
  15. package/components/apps/components/buttons/AppButton.svelte +45 -56
  16. package/components/apps/components/buttons/AppButton.svelte.d.ts +6 -4
  17. package/components/apps/components/buttons/AppForm.svelte.d.ts +2 -2
  18. package/components/apps/components/buttons/AppFormButton.svelte +1 -1
  19. package/components/apps/components/buttons/AppFormButton.svelte.d.ts +2 -2
  20. package/components/apps/components/display/AppBarChart.svelte +7 -3
  21. package/components/apps/components/display/AppBarChart.svelte.d.ts +2 -4
  22. package/components/apps/components/display/AppDisplayComponent.svelte +7 -3
  23. package/components/apps/components/display/AppDisplayComponent.svelte.d.ts +0 -2
  24. package/components/apps/components/display/AppHtml.svelte +7 -11
  25. package/components/apps/components/display/AppHtml.svelte.d.ts +0 -2
  26. package/components/apps/components/display/AppIcon.svelte +0 -1
  27. package/components/apps/components/display/AppIcon.svelte.d.ts +2 -5
  28. package/components/apps/components/display/AppImage.svelte +0 -1
  29. package/components/apps/components/display/AppImage.svelte.d.ts +2 -5
  30. package/components/apps/components/display/AppMap.svelte +13 -6
  31. package/components/apps/components/display/AppMap.svelte.d.ts +2 -5
  32. package/components/apps/components/display/AppPdf.svelte +8 -3
  33. package/components/apps/components/display/AppPdf.svelte.d.ts +2 -5
  34. package/components/apps/components/display/AppPieChart.svelte +7 -3
  35. package/components/apps/components/display/AppPieChart.svelte.d.ts +2 -4
  36. package/components/apps/components/display/AppScatterChart.svelte +7 -3
  37. package/components/apps/components/display/AppScatterChart.svelte.d.ts +2 -4
  38. package/components/apps/components/display/AppText.svelte +41 -17
  39. package/components/apps/components/display/AppText.svelte.d.ts +2 -4
  40. package/components/apps/components/display/AppTimeseries.svelte +7 -3
  41. package/components/apps/components/display/AppTimeseries.svelte.d.ts +2 -4
  42. package/components/apps/components/display/PlotlyHtml.svelte +9 -4
  43. package/components/apps/components/display/PlotlyHtml.svelte.d.ts +0 -2
  44. package/components/apps/components/display/VegaLiteHtml.svelte +8 -3
  45. package/components/apps/components/display/VegaLiteHtml.svelte.d.ts +2 -3
  46. package/components/apps/components/display/table/AppAggridTable.svelte +9 -4
  47. package/components/apps/components/display/table/AppAggridTable.svelte.d.ts +2 -3
  48. package/components/apps/components/display/table/AppTable.svelte +91 -36
  49. package/components/apps/components/display/table/AppTable.svelte.d.ts +2 -4
  50. package/components/apps/components/helpers/HiddenComponent.svelte +8 -2
  51. package/components/apps/components/helpers/HiddenComponent.svelte.d.ts +0 -2
  52. package/components/apps/components/helpers/InputValue.svelte +5 -1
  53. package/components/apps/components/helpers/InputValue.svelte.d.ts +3 -1
  54. package/components/apps/components/helpers/NonRunnableComponent.svelte +2 -2
  55. package/components/apps/components/helpers/ResizeWrapper.svelte +3 -4
  56. package/components/apps/components/helpers/RunnableComponent.svelte +17 -24
  57. package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +0 -1
  58. package/components/apps/components/helpers/RunnableWrapper.svelte +0 -2
  59. package/components/apps/components/helpers/RunnableWrapper.svelte.d.ts +0 -1
  60. package/components/apps/components/helpers/eval.js +36 -1
  61. package/components/apps/components/inputs/AppCheckbox.svelte +4 -2
  62. package/components/apps/components/inputs/AppCheckbox.svelte.d.ts +2 -5
  63. package/components/apps/components/inputs/AppDateInput.svelte +4 -2
  64. package/components/apps/components/inputs/AppDateInput.svelte.d.ts +2 -5
  65. package/components/apps/components/inputs/AppFileInput.svelte +4 -2
  66. package/components/apps/components/inputs/AppFileInput.svelte.d.ts +2 -5
  67. package/components/apps/components/inputs/AppMultiSelect.svelte +4 -2
  68. package/components/apps/components/inputs/AppMultiSelect.svelte.d.ts +2 -5
  69. package/components/apps/components/inputs/AppNumberInput.svelte +4 -2
  70. package/components/apps/components/inputs/AppNumberInput.svelte.d.ts +2 -5
  71. package/components/apps/components/inputs/AppRangeInput.svelte +5 -2
  72. package/components/apps/components/inputs/AppRangeInput.svelte.d.ts +2 -5
  73. package/components/apps/components/inputs/AppSelect.svelte +5 -2
  74. package/components/apps/components/inputs/AppSelect.svelte.d.ts +2 -5
  75. package/components/apps/components/inputs/AppSliderInputs.svelte +4 -2
  76. package/components/apps/components/inputs/AppSliderInputs.svelte.d.ts +2 -5
  77. package/components/apps/components/inputs/AppTextInput.svelte +5 -3
  78. package/components/apps/components/inputs/AppTextInput.svelte.d.ts +2 -5
  79. package/components/apps/components/inputs/currency/AppCurrencyInput.svelte +5 -2
  80. package/components/apps/components/inputs/currency/AppCurrencyInput.svelte.d.ts +2 -5
  81. package/components/apps/components/layout/AppContainer.svelte +0 -2
  82. package/components/apps/components/layout/AppContainer.svelte.d.ts +0 -4
  83. package/components/apps/components/layout/AppDivider.svelte.d.ts +2 -3
  84. package/components/apps/components/layout/AppDrawer.svelte.d.ts +2 -3
  85. package/components/apps/components/layout/AppSplitpanes.svelte +1 -5
  86. package/components/apps/components/layout/AppSplitpanes.svelte.d.ts +0 -2
  87. package/components/apps/components/layout/AppTabs.svelte +8 -9
  88. package/components/apps/components/layout/AppTabs.svelte.d.ts +2 -5
  89. package/components/apps/editor/AppComponentInput.svelte +2 -1
  90. package/components/apps/editor/AppEditor.svelte +12 -14
  91. package/components/apps/editor/AppEditorHeader.svelte +2 -2
  92. package/components/apps/editor/AppInputs.svelte +13 -14
  93. package/components/apps/editor/AppPreview.svelte +68 -15
  94. package/components/apps/editor/ComponentHeader.svelte +49 -50
  95. package/components/apps/editor/ComponentHeader.svelte.d.ts +1 -1
  96. package/components/apps/editor/GridEditor.svelte +6 -27
  97. package/components/apps/editor/GridPanel.svelte +3 -1
  98. package/components/apps/editor/GridViewer.svelte +91 -0
  99. package/components/apps/editor/GridViewer.svelte.d.ts +32 -0
  100. package/components/apps/editor/SettingsPanel.svelte +11 -0
  101. package/components/apps/editor/SubGridEditor.svelte +74 -51
  102. package/components/apps/editor/SubGridEditor.svelte.d.ts +1 -1
  103. package/components/apps/editor/appUtils.d.ts +4 -2
  104. package/components/apps/editor/appUtils.js +26 -19
  105. package/components/apps/editor/component/Component.svelte +16 -53
  106. package/components/apps/editor/component/ComponentNavigation.svelte +28 -13
  107. package/components/apps/editor/component/components.d.ts +3 -2
  108. package/components/apps/editor/component/components.js +63 -79
  109. package/components/apps/editor/componentsPanel/ComponentList.svelte +5 -4
  110. package/components/apps/editor/componentsPanel/componentStaticValues.d.ts +1 -1
  111. package/components/apps/editor/contextPanel/ComponentOutput.svelte +23 -33
  112. package/components/apps/editor/contextPanel/ComponentOutputViewer.svelte +14 -13
  113. package/components/apps/editor/contextPanel/ComponentOutputViewer.svelte.d.ts +0 -1
  114. package/components/apps/editor/contextPanel/ContextPanel.svelte +19 -27
  115. package/components/apps/editor/contextPanel/SubGridOutput.svelte +5 -10
  116. package/components/apps/editor/contextPanel/components/BackgroundScriptOutput.svelte +9 -6
  117. package/components/apps/editor/contextPanel/components/BackgroundScriptOutput.svelte.d.ts +0 -1
  118. package/components/apps/editor/contextPanel/components/BackgroundScriptsOutput.svelte +1 -3
  119. package/components/apps/editor/contextPanel/components/BackgroundScriptsOutput.svelte.d.ts +1 -3
  120. package/components/apps/editor/contextPanel/components/OutputHeader.svelte +73 -42
  121. package/components/apps/editor/contextPanel/components/OutputHeader.svelte.d.ts +0 -2
  122. package/components/apps/editor/contextPanel/components/TableActionOutput.svelte +2 -4
  123. package/components/apps/editor/contextPanel/components/TableActionOutput.svelte.d.ts +0 -1
  124. package/components/apps/editor/contextPanel/components/TableActionsOutput.svelte +1 -2
  125. package/components/apps/editor/contextPanel/components/TableActionsOutput.svelte.d.ts +0 -1
  126. package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte +3 -3
  127. package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +20 -3
  128. package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanel.svelte +5 -7
  129. package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte +1 -1
  130. package/components/apps/editor/settingsPanel/ComponentPanel.svelte +31 -41
  131. package/components/apps/editor/settingsPanel/GridPane.svelte +1 -3
  132. package/components/apps/editor/settingsPanel/GridTab.svelte +1 -3
  133. package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +109 -13
  134. package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte.d.ts +6 -2
  135. package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte +13 -116
  136. package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte.d.ts +2 -2
  137. package/components/apps/editor/settingsPanel/SelectedRunnable.svelte +4 -0
  138. package/components/apps/editor/settingsPanel/TableActionLabel.svelte.d.ts +2 -2
  139. package/components/apps/editor/settingsPanel/TableActions.svelte +2 -5
  140. package/components/apps/editor/settingsPanel/common/PanelSection.svelte +1 -2
  141. package/components/apps/editor/settingsPanel/common/PanelSection.svelte.d.ts +0 -1
  142. package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +12 -6
  143. package/components/apps/editor/settingsPanel/triggerLists/BackgroundScriptTriggerList.svelte +81 -0
  144. package/components/apps/editor/settingsPanel/triggerLists/BackgroundScriptTriggerList.svelte.d.ts +21 -0
  145. package/components/apps/editor/settingsPanel/triggerLists/ComponentTriggerList.svelte +18 -0
  146. package/components/apps/editor/settingsPanel/triggerLists/ComponentTriggerList.svelte.d.ts +17 -0
  147. package/components/apps/editor/settingsPanel/triggerLists/TriggerBadgesList.svelte +98 -0
  148. package/components/apps/editor/settingsPanel/triggerLists/TriggerBadgesList.svelte.d.ts +24 -0
  149. package/components/apps/editor/settingsPanel/triggerLists/triggerListUtils.d.ts +2 -0
  150. package/components/apps/editor/settingsPanel/triggerLists/triggerListUtils.js +11 -0
  151. package/components/apps/gridUtils.d.ts +1 -3
  152. package/components/apps/gridUtils.js +1 -15
  153. package/components/apps/inputType.d.ts +11 -2
  154. package/components/apps/rx.d.ts +1 -1
  155. package/components/apps/rx.js +9 -10
  156. package/components/apps/svelte-grid/Grid.svelte +9 -13
  157. package/components/apps/svelte-grid/Grid.svelte.d.ts +0 -2
  158. package/components/apps/svelte-grid/MoveResize.svelte +1 -1
  159. package/components/apps/svelte-grid/types.d.ts +12 -16
  160. package/components/apps/svelte-grid/utils/helper.d.ts +1 -5
  161. package/components/apps/types.d.ts +29 -9
  162. package/components/apps/utils.js +2 -2
  163. package/components/common/button/Button.svelte.d.ts +1 -1
  164. package/components/common/button/ButtonPopup.svelte.d.ts +1 -1
  165. package/components/common/menu/Menu.svelte.d.ts +1 -1
  166. package/components/flows/flowStore.js +1 -1
  167. package/components/graph/FlowGraph.svelte +0 -2
  168. package/components/graph/FlowGraph.svelte.d.ts +0 -1
  169. package/components/graph/svelvet/container/views/GraphView.svelte +3 -28
  170. package/components/graph/svelvet/container/views/GraphView.svelte.d.ts +0 -3
  171. package/components/graph/svelvet/container/views/Svelvet.svelte +1 -17
  172. package/components/graph/svelvet/container/views/Svelvet.svelte.d.ts +0 -8
  173. package/components/graph/svelvet/customCss/controllers/getCss.js +0 -11
  174. package/components/graph/svelvet/edges/controllers/util.js +1 -2
  175. package/components/graph/svelvet/edges/views/Edges/SmoothStepEdge.svelte.d.ts +2 -2
  176. package/components/graph/svelvet/nodes/controllers/util.js +1 -1
  177. package/components/graph/svelvet/nodes/models/Node.d.ts +0 -4
  178. package/components/graph/svelvet/nodes/models/Node.js +3 -41
  179. package/components/graph/svelvet/store/controllers/storeApi.js +2 -7
  180. package/components/graph/svelvet/store/controllers/util.d.ts +0 -7
  181. package/components/graph/svelvet/store/controllers/util.js +4 -36
  182. package/components/graph/svelvet/store/types/types.d.ts +0 -5
  183. package/components/home/ItemsList.svelte +1 -1
  184. package/components/propertyPicker/ObjectViewer.svelte +1 -1
  185. package/components/propertyPicker/PropPicker.svelte +4 -1
  186. package/package.json +10 -6
  187. package/utils.d.ts +2 -0
  188. package/utils.js +6 -0
  189. package/components/apps/editor/AppComponentInputs.svelte +0 -13
  190. package/components/apps/editor/AppComponentInputs.svelte.d.ts +0 -20
  191. package/components/graph/svelvet/nodes/views/EditNode.svelte +0 -147
  192. package/components/graph/svelvet/nodes/views/EditNode.svelte.d.ts +0 -33
  193. package/components/graph/svelvet/resizableNodes/controllers/util.d.ts +0 -11
  194. package/components/graph/svelvet/resizableNodes/controllers/util.js +0 -24
  195. package/components/graph/svelvet/resizableNodes/models/ResizeNode.d.ts +0 -33
  196. package/components/graph/svelvet/resizableNodes/models/ResizeNode.js +0 -71
  197. package/components/graph/svelvet/resizableNodes/views/ResizeNode.svelte +0 -81
  198. package/components/graph/svelvet/resizableNodes/views/ResizeNode.svelte.d.ts +0 -20
@@ -7,7 +7,7 @@ import TableActions from './TableActions.svelte';
7
7
  import StaticInputEditor from './inputEditor/StaticInputEditor.svelte';
8
8
  import ConnectedInputEditor from './inputEditor/ConnectedInputEditor.svelte';
9
9
  import Badge from '../../../common/badge/Badge.svelte';
10
- import { capitalize, classNames } from '../../../../utils';
10
+ import { capitalize, classNames, getModifierKey } from '../../../../utils';
11
11
  import { buildExtraLib, fieldTypeToTsType } from '../../utils';
12
12
  import Recompute from './Recompute.svelte';
13
13
  import Tooltip from '../../../Tooltip.svelte';
@@ -28,8 +28,10 @@ export let onDelete = undefined;
28
28
  export let parent;
29
29
  export let noGrid = false;
30
30
  export let duplicateMoveAllowed = true;
31
- const { app, staticOutputs, runnableComponents, selectedComponent, worldStore, focusedGrid, stateId, state } = getContext('AppViewerContext');
32
- const { history } = getContext('AppEditorContext');
31
+ let editor = undefined;
32
+ const { app, runnableComponents, selectedComponent, worldStore, focusedGrid, stateId, state } = getContext('AppViewerContext');
33
+ const { history, ontextfocus } = getContext('AppEditorContext');
34
+ $: editor && ($ontextfocus = () => editor?.focus());
33
35
  function removeGridElement() {
34
36
  push(history, $app);
35
37
  $selectedComponent = undefined;
@@ -37,14 +39,11 @@ function removeGridElement() {
37
39
  if (component && !noGrid) {
38
40
  let ids = deleteGridItem($app, component, parent, false);
39
41
  for (const key of ids) {
40
- delete $staticOutputs[key];
41
42
  delete $runnableComponents[key];
42
43
  }
43
44
  }
44
- delete $staticOutputs[component.id];
45
45
  delete $runnableComponents[component.id];
46
46
  $app = $app;
47
- $staticOutputs = $staticOutputs;
48
47
  $runnableComponents = $runnableComponents;
49
48
  onDelete?.();
50
49
  }
@@ -69,10 +68,7 @@ function keydown(event) {
69
68
  {#if component}
70
69
  <div class="flex min-h-full flex-col min-w-[150px] w-full divide-y">
71
70
  {#if component.componentInput}
72
- <PanelSection
73
- smallPadding
74
- title={component.componentInput.fieldType === 'any' ? 'By Runnable' : 'Input'}
75
- >
71
+ <PanelSection title={component.componentInput.fieldType === 'any' ? 'By Runnable' : 'Input'}>
76
72
  <svelte:fragment slot="action">
77
73
  <span
78
74
  class={classNames(
@@ -99,7 +95,12 @@ function keydown(event) {
99
95
  <StaticInputEditor bind:componentInput={component.componentInput} />
100
96
  {:else if component.componentInput.type === 'template' && component.componentInput !== undefined}
101
97
  <div class="py-1 min-h-[28px] rounded border border-1 border-gray-500">
102
- <TemplateEditor fontSize={12} bind:code={component.componentInput.eval} {extraLib} />
98
+ <TemplateEditor
99
+ bind:this={editor}
100
+ fontSize={12}
101
+ bind:code={component.componentInput.eval}
102
+ {extraLib}
103
+ />
103
104
  </div>
104
105
  {:else if component.componentInput.type === 'connected' && component.componentInput !== undefined}
105
106
  <ConnectedInputEditor bind:componentInput={component.componentInput} />
@@ -116,7 +117,6 @@ function keydown(event) {
116
117
  {#if Object.keys(component.componentInput.fields ?? {}).length > 0}
117
118
  <div class="border w-full">
118
119
  <PanelSection
119
- smallPadding
120
120
  title={`Runnable Inputs (${
121
121
  Object.keys(component.componentInput.fields ?? {}).length
122
122
  })`}
@@ -132,7 +132,8 @@ function keydown(event) {
132
132
  id={component.id}
133
133
  shouldCapitalize={false}
134
134
  bind:inputSpecs={component.componentInput.fields}
135
- userInputEnabled={component.type !== 'buttoncomponent'}
135
+ userInputEnabled={component.type === 'formcomponent' ||
136
+ component.type === 'formbuttoncomponent'}
136
137
  {rowColumns}
137
138
  />
138
139
  </PanelSection>
@@ -202,34 +203,23 @@ function keydown(event) {
202
203
  <Kbd>Del</Kbd>
203
204
  </Button>
204
205
  </div>
205
- <div class="flex flex-col">
206
- <div
207
- ><span class="text-gray-600 text-xs mr-2">Copy:</span><Kbd>CTRL+C</Kbd> + <Kbd
208
- >CTRL+V</Kbd
209
- ></div
210
- >
211
- <!-- <Button
212
- size="xs"
213
- color="dark"
214
- startIcon={{ icon: faCopy }}
215
- on:click={() => {
216
- if (component) {
217
- duplicateElement(component.id)
218
- }
219
- }}
220
- >
221
- Duplicate component: {component.id}
222
- </Button> -->
223
- <div
224
- ><span class="text-gray-600 text-xs mr-2">Move:</span><Kbd>CTRL+X</Kbd> + <Kbd
225
- >CTRL+V</Kbd
226
- ></div
227
- >
228
- <div
229
- ><span class="text-gray-600 text-xs mr-2">Navigate:</span><Kbd>&leftarrow;</Kbd><Kbd
230
- >&uparrow;</Kbd
231
- ><Kbd>&rightarrow;</Kbd><Kbd>ESC</Kbd></div
232
- >
206
+ <div class="flex flex-col gap-1">
207
+ <div>
208
+ <span class="text-gray-600 text-xs mr-2"> Copy:</span>
209
+ <Kbd>{getModifierKey()}</Kbd>+<Kbd>C</Kbd>,
210
+ <Kbd>{getModifierKey()}</Kbd>+<Kbd>V</Kbd>
211
+ </div>
212
+ <div>
213
+ <span class="text-gray-600 text-xs mr-2">Move: </span>
214
+ <Kbd>{getModifierKey()}</Kbd>+<Kbd>X</Kbd>,
215
+ <Kbd>{getModifierKey()}</Kbd>+<Kbd>V</Kbd>
216
+ </div>
217
+ <div>
218
+ <span class="text-gray-600 text-xs mr-2">Navigate:</span>
219
+ <Kbd>&leftarrow;</Kbd>
220
+ <Kbd>&uparrow;</Kbd><Kbd>&rightarrow;</Kbd>
221
+ <Kbd>ESC</Kbd>
222
+ </div>
233
223
  </div>
234
224
  </PanelSection>
235
225
  {/if}
@@ -5,7 +5,7 @@ import { deleteGridItem } from '../appUtils';
5
5
  import PanelSection from './common/PanelSection.svelte';
6
6
  export let panes;
7
7
  export let component;
8
- const { app, staticOutputs, runnableComponents } = getContext('AppViewerContext');
8
+ const { app, runnableComponents } = getContext('AppViewerContext');
9
9
  function addTab() {
10
10
  const numberOfPanes = panes.length;
11
11
  panes = Array(panes.length + 1)
@@ -23,11 +23,9 @@ function deleteSubgrid(index) {
23
23
  const components = deleteGridItem($app, item.data, subgrid, false);
24
24
  console.log(components);
25
25
  for (const key in components) {
26
- delete $staticOutputs[key];
27
26
  delete $runnableComponents[key];
28
27
  }
29
28
  }
30
- $staticOutputs = $staticOutputs;
31
29
  $runnableComponents = $runnableComponents;
32
30
  for (let i = index; i < panes.length - 1; i++) {
33
31
  $app.subgrids[`${component.id}-${i}`] = $app.subgrids[`${component.id}-${i + 1}`];
@@ -7,7 +7,7 @@ import { deleteGridItem } from '../appUtils';
7
7
  import PanelSection from './common/PanelSection.svelte';
8
8
  export let tabs;
9
9
  export let component;
10
- const { app, staticOutputs, runnableComponents, focusedGrid } = getContext('AppViewerContext');
10
+ const { app, runnableComponents } = getContext('AppViewerContext');
11
11
  function addTab() {
12
12
  const numberOfTabs = tabs.length;
13
13
  tabs = [...tabs, `Tab ${numberOfTabs + 1}`];
@@ -23,11 +23,9 @@ function deleteSubgrid(index) {
23
23
  const components = deleteGridItem($app, item.data, subgrid, false);
24
24
  console.log(components);
25
25
  for (const key in components) {
26
- delete $staticOutputs[key];
27
26
  delete $runnableComponents[key];
28
27
  }
29
28
  }
30
- $staticOutputs = $staticOutputs;
31
29
  $runnableComponents = $runnableComponents;
32
30
  for (let i = index; i < tabs.length - 1; i++) {
33
31
  $app.subgrids[`${component.id}-${i}`] = $app.subgrids[`${component.id}-${i + 1}`];
@@ -1,24 +1,120 @@
1
- <script>import VariableEditor from '../../../VariableEditor.svelte';
1
+ <script>import { Badge, ToggleButton, ToggleButtonGroup } from '../../../common';
2
+ import { addWhitespaceBeforeCapitals, capitalize } from '../../../../utils';
3
+ import { faArrowRight, faPen, faUpload, faUser } from '@fortawesome/free-solid-svg-icons';
4
+ import { fieldTypeToTsType } from '../../utils';
5
+ import Tooltip from '../../../Tooltip.svelte';
6
+ import Popover from '../../../Popover.svelte';
2
7
  import ConnectedInputEditor from './inputEditor/ConnectedInputEditor.svelte';
3
8
  import EvalInputEditor from './inputEditor/EvalInputEditor.svelte';
4
9
  import RowInputEditor from './inputEditor/RowInputEditor.svelte';
5
10
  import StaticInputEditor from './inputEditor/StaticInputEditor.svelte';
6
11
  import UploadInputEditor from './inputEditor/UploadInputEditor.svelte';
12
+ import { getContext } from 'svelte';
7
13
  export let id;
8
14
  export let componentInput;
15
+ export let key;
9
16
  export let hasRows = false;
17
+ export let userInputEnabled = false;
18
+ export let shouldCapitalize = true;
19
+ export let resourceOnly = false;
20
+ const { connectingInput } = getContext('AppViewerContext');
10
21
  </script>
11
22
 
12
- {#if componentInput.type === 'connected'}
13
- <ConnectedInputEditor bind:componentInput />
14
- {:else if componentInput.type === 'row'}
15
- <RowInputEditor bind:componentInput />
16
- {:else if componentInput.type === 'static'}
17
- <StaticInputEditor bind:componentInput />
18
- {:else if componentInput.type === 'eval'}
19
- <EvalInputEditor {hasRows} {id} bind:componentInput />
20
- {:else if componentInput.type === 'upload'}
21
- <UploadInputEditor bind:componentInput />
22
- {:else if componentInput.type === 'user'}
23
- <span class="text-2xs italic text-gray-6f00">Field's value is set by the user</span>
23
+ {#if componentInput.ctype == undefined}
24
+ {#if !(resourceOnly && (componentInput.fieldType !== 'object' || !componentInput.format?.startsWith('resource-')))}
25
+ <div class="flex flex-col gap-1">
26
+ <div class="flex justify-between items-end gap-1">
27
+ <span class="text-sm font-semibold truncate">
28
+ {shouldCapitalize ? capitalize(addWhitespaceBeforeCapitals(key)) : key}
29
+ {#if componentInput.tooltip}
30
+ <Tooltip>
31
+ {componentInput.tooltip}
32
+ </Tooltip>
33
+ {/if}
34
+ </span>
35
+
36
+ <div class="flex gap-x-2 gap-y-1 flex-wrap justify-end items-center">
37
+ <Badge color="blue">
38
+ {componentInput.fieldType === 'array' && componentInput.subFieldType
39
+ ? `${capitalize(fieldTypeToTsType(componentInput.subFieldType))}[]`
40
+ : capitalize(fieldTypeToTsType(componentInput.fieldType))}
41
+ </Badge>
42
+
43
+ {#if !componentInput.onlyStatic && componentInput.type != 'eval'}
44
+ <ToggleButtonGroup
45
+ bind:selected={componentInput.type}
46
+ on:selected={(e) => {
47
+ if (e.detail == 'connected' && !componentInput['connection']) {
48
+ $connectingInput = {
49
+ opened: true,
50
+ input: undefined,
51
+ hoveredComponent: undefined
52
+ }
53
+ }
54
+ }}
55
+ >
56
+ <Popover placement="bottom" notClickable disapperTimoout={0}>
57
+ <ToggleButton
58
+ position="left"
59
+ value="static"
60
+ startIcon={{ icon: faPen }}
61
+ size="xs"
62
+ iconOnly
63
+ />
64
+ <svelte:fragment slot="text">Static</svelte:fragment>
65
+ </Popover>
66
+ {#if userInputEnabled && !componentInput.format?.startsWith('resource-')}
67
+ <Popover placement="bottom" notClickable disapperTimoout={0}>
68
+ <ToggleButton
69
+ position="center"
70
+ value="user"
71
+ startIcon={{ icon: faUser }}
72
+ size="xs"
73
+ iconOnly
74
+ />
75
+ <svelte:fragment slot="text">User Input</svelte:fragment>
76
+ </Popover>
77
+ {/if}
78
+ {#if 'fileUpload' in componentInput}
79
+ <Popover placement="bottom" notClickable disapperTimoout={0}>
80
+ <ToggleButton
81
+ position="center"
82
+ value="upload"
83
+ startIcon={{ icon: faUpload }}
84
+ size="xs"
85
+ iconOnly
86
+ />
87
+ <svelte:fragment slot="text">Upload</svelte:fragment>
88
+ </Popover>
89
+ {/if}
90
+ <Popover placement="bottom" notClickable disapperTimoout={0}>
91
+ <ToggleButton
92
+ position="right"
93
+ value="connected"
94
+ startIcon={{ icon: faArrowRight }}
95
+ size="xs"
96
+ iconOnly
97
+ />
98
+ <svelte:fragment slot="text">Connect</svelte:fragment>
99
+ </Popover>
100
+ </ToggleButtonGroup>
101
+ {/if}
102
+ </div>
103
+ </div>
104
+
105
+ {#if componentInput.type === 'connected'}
106
+ <ConnectedInputEditor bind:componentInput />
107
+ {:else if componentInput.type === 'row'}
108
+ <RowInputEditor bind:componentInput />
109
+ {:else if componentInput.type === 'static'}
110
+ <StaticInputEditor bind:componentInput />
111
+ {:else if componentInput.type === 'eval'}
112
+ <EvalInputEditor {hasRows} {id} bind:componentInput />
113
+ {:else if componentInput.type === 'upload'}
114
+ <UploadInputEditor bind:componentInput />
115
+ {:else if componentInput.type === 'user'}
116
+ <span class="text-2xs italic text-gray-600">Field's value is set by the user</span>
117
+ {/if}
118
+ </div>
119
+ {/if}
24
120
  {/if}
@@ -1,10 +1,14 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
- import type { ConnectedAppInput, EvalAppInput, RowAppInput, StaticAppInput, UploadAppInput, UserAppInput } from '../../inputType';
2
+ import type { RichConfiguration } from '../../types';
3
3
  declare const __propDef: {
4
4
  props: {
5
5
  id: string;
6
- componentInput: StaticAppInput | ConnectedAppInput | UserAppInput | RowAppInput | EvalAppInput | UploadAppInput;
6
+ componentInput: RichConfiguration;
7
+ key: string;
7
8
  hasRows?: boolean | undefined;
9
+ userInputEnabled?: boolean | undefined;
10
+ shouldCapitalize?: boolean | undefined;
11
+ resourceOnly?: boolean | undefined;
8
12
  };
9
13
  events: {
10
14
  [evt: string]: CustomEvent<any>;
@@ -1,128 +1,25 @@
1
- <script>import { Badge, ToggleButton, ToggleButtonGroup } from '../../../common';
2
- import { addWhitespaceBeforeCapitals, capitalize } from '../../../../utils';
3
- import { faArrowRight, faPen, faUpload, faUser } from '@fortawesome/free-solid-svg-icons';
4
- import { fieldTypeToTsType } from '../../utils';
5
- import InputsSpecEditor from './InputsSpecEditor.svelte';
6
- import { getContext } from 'svelte';
7
- import Tooltip from '../../../Tooltip.svelte';
8
- import Popover from '../../../Popover.svelte';
1
+ <script>import InputsSpecEditor from './InputsSpecEditor.svelte';
9
2
  export let id;
10
3
  export let inputSpecs;
11
- export let userInputEnabled = true;
4
+ export let userInputEnabled = false;
12
5
  export let shouldCapitalize = true;
13
6
  export let rowColumns = false;
14
7
  export let resourceOnly = false;
15
- const { connectingInput } = getContext('AppViewerContext');
16
8
  </script>
17
9
 
18
10
  {#if inputSpecs}
19
11
  <div class="w-full flex flex-col gap-4">
20
- {#each Object.keys(inputSpecs) as inputSpecKey (inputSpecKey)}
21
- {@const input = inputSpecs[inputSpecKey]}
22
- {#if !(resourceOnly && (input.fieldType !== 'object' || !input.format?.startsWith('resource-')))}
23
- <div class="flex flex-col gap-1">
24
- <div class="flex justify-between items-end gap-1">
25
- <span class="text-sm font-semibold truncate">
26
- {shouldCapitalize
27
- ? capitalize(addWhitespaceBeforeCapitals(inputSpecKey))
28
- : inputSpecKey}
29
- {#if input.tooltip}
30
- <Tooltip>
31
- {input.tooltip}
32
- </Tooltip>
33
- {/if}
34
- </span>
35
-
36
- <div class="flex gap-x-2 gap-y-1 flex-wrap justify-end items-center">
37
- <Badge color="blue">
38
- {input.fieldType === 'array' && input.subFieldType
39
- ? `${capitalize(fieldTypeToTsType(input.subFieldType))}[]`
40
- : capitalize(fieldTypeToTsType(input.fieldType))}
41
- </Badge>
42
-
43
- {#if !inputSpecs[inputSpecKey].onlyStatic && inputSpecs[inputSpecKey].type != 'eval'}
44
- <ToggleButtonGroup
45
- bind:selected={inputSpecs[inputSpecKey].type}
46
- on:selected={(e) => {
47
- if (e.detail == 'connected' && !inputSpecs[inputSpecKey]['connection']) {
48
- $connectingInput = {
49
- opened: true,
50
- input: undefined,
51
- hoveredComponent: undefined
52
- }
53
- }
54
- }}
55
- >
56
- <Popover placement="bottom" notClickable disapperTimoout={0}>
57
- <ToggleButton
58
- position="left"
59
- value="static"
60
- startIcon={{ icon: faPen }}
61
- size="xs"
62
- iconOnly
63
- />
64
- <svelte:fragment slot="text">Static</svelte:fragment>
65
- </Popover>
66
- <!-- {#if rowColumns}
67
- <Popover placement="bottom" notClickable disapperTimoout={0}>
68
- <ToggleButton
69
- position="center"
70
- value="row"
71
- startIcon={{ icon: faTableCells }}
72
- size="xs"
73
- >
74
- <Tooltip scale={0.6} placement="top-end" wrapperClass="center-center">
75
- Use the column name to have the value of the cell be passed to the action
76
- </Tooltip>
77
- </ToggleButton>
78
- <svelte:fragment slot="text">Column</svelte:fragment>
79
- </Popover>
80
- {/if} -->
81
- {#if userInputEnabled && !input.format?.startsWith('resource-')}
82
- <Popover placement="bottom" notClickable disapperTimoout={0}>
83
- <ToggleButton
84
- position="center"
85
- value="user"
86
- startIcon={{ icon: faUser }}
87
- size="xs"
88
- iconOnly
89
- />
90
- <svelte:fragment slot="text">User Input</svelte:fragment>
91
- </Popover>
92
- {/if}
93
- {#if 'fileUpload' in inputSpecs[inputSpecKey]}
94
- <Popover placement="bottom" notClickable disapperTimoout={0}>
95
- <ToggleButton
96
- position="center"
97
- value="upload"
98
- startIcon={{ icon: faUpload }}
99
- size="xs"
100
- iconOnly
101
- />
102
- <svelte:fragment slot="text">Upload</svelte:fragment>
103
- </Popover>
104
- {/if}
105
- <Popover placement="bottom" notClickable disapperTimoout={0}>
106
- <ToggleButton
107
- position="right"
108
- value="connected"
109
- startIcon={{ icon: faArrowRight }}
110
- size="xs"
111
- iconOnly
112
- />
113
- <svelte:fragment slot="text">Connect</svelte:fragment>
114
- </Popover>
115
- </ToggleButtonGroup>
116
- {/if}
117
- </div>
118
- </div>
119
-
120
- <InputsSpecEditor
121
- hasRows={rowColumns}
122
- {id}
123
- bind:componentInput={inputSpecs[inputSpecKey]}
124
- />
125
- </div>
12
+ {#each Object.keys(inputSpecs) as k}
13
+ {#if inputSpecs[k].ctype == undefined}
14
+ <InputsSpecEditor
15
+ key={k}
16
+ bind:componentInput={inputSpecs[k]}
17
+ {id}
18
+ {userInputEnabled}
19
+ {shouldCapitalize}
20
+ {resourceOnly}
21
+ hasRows={rowColumns}
22
+ />
126
23
  {/if}
127
24
  {/each}
128
25
  </div>
@@ -1,9 +1,9 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
- import type { BaseAppComponent } from '../../types';
2
+ import type { RichConfigurations } from '../../types';
3
3
  declare const __propDef: {
4
4
  props: {
5
5
  id: string;
6
- inputSpecs: BaseAppComponent['configuration'];
6
+ inputSpecs: RichConfigurations;
7
7
  userInputEnabled?: boolean | undefined;
8
8
  shouldCapitalize?: boolean | undefined;
9
9
  rowColumns?: boolean | undefined;
@@ -4,6 +4,7 @@ import { faClose, faEdit } from '@fortawesome/free-solid-svg-icons';
4
4
  import { getContext } from 'svelte';
5
5
  import { clearResultAppInput } from '../../utils';
6
6
  import InlineScriptEditorDrawer from '../inlineScriptsPanel/InlineScriptEditorDrawer.svelte';
7
+ import ComponentTriggerList from './triggerLists/ComponentTriggerList.svelte';
7
8
  const { app } = getContext('AppViewerContext');
8
9
  export let appInput;
9
10
  let inlineScriptEditorDrawer;
@@ -58,6 +59,9 @@ function clear() {
58
59
  </Button>
59
60
  </div>
60
61
  </div>
62
+ {#if appInput.runnable?.type === 'runnableByName' && appInput.runnable.inlineScript}
63
+ <ComponentTriggerList fields={appInput.fields} />
64
+ {/if}
61
65
  {#if appInput.runnable?.type === 'runnableByName' && !appInput.runnable.inlineScript}
62
66
  <span class="text-xs text-gray-500">
63
67
  Please configure the language in the inline script panel
@@ -1,8 +1,8 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
- import type { AppInput } from '../../inputType';
2
+ import type { RichConfiguration } from '../../types';
3
3
  declare const __propDef: {
4
4
  props: {
5
- componentInput: AppInput | undefined;
5
+ componentInput: RichConfiguration | undefined;
6
6
  };
7
7
  events: {
8
8
  [evt: string]: CustomEvent<any>;
@@ -9,7 +9,7 @@ import PanelSection from './common/PanelSection.svelte';
9
9
  import TableActionLabel from './TableActionLabel.svelte';
10
10
  export let components;
11
11
  export let id;
12
- const { selectedComponent, staticOutputs } = getContext('AppViewerContext');
12
+ const { selectedComponent } = getContext('AppViewerContext');
13
13
  function addComponent() {
14
14
  const actionId = getNextId(components.map((x) => x.id.split('_')[1]));
15
15
  const newComponent = {
@@ -74,15 +74,12 @@ function addComponent() {
74
74
  recomputeIds: undefined,
75
75
  customCss: {
76
76
  button: { style: '', class: '' }
77
- },
78
- card: false
77
+ }
79
78
  };
80
79
  components = [...components, newComponent];
81
80
  }
82
81
  function deleteComponent(cid) {
83
82
  components = components.filter((x) => x.id !== cid);
84
- delete $staticOutputs[cid];
85
- $staticOutputs = $staticOutputs;
86
83
  $selectedComponent = id;
87
84
  }
88
85
  </script>
@@ -1,7 +1,6 @@
1
1
  <script>import { classNames } from '../../../../../utils';
2
2
  import Tooltip from '../../../../Tooltip.svelte';
3
3
  export let title;
4
- export let smallPadding = false;
5
4
  export let noPadding = false;
6
5
  export let titlePadding = '';
7
6
  export let tooltip = '';
@@ -11,7 +10,7 @@ export let tooltip = '';
11
10
  class={classNames(
12
11
  $$props.class,
13
12
  'flex flex-col h-full gap-2 items-start',
14
- noPadding ? '' : smallPadding ? 'p-2' : 'p-4'
13
+ noPadding ? '' : 'p-3'
15
14
  )}
16
15
  >
17
16
  <div class="flex justify-between flex-wrap items-center w-full gap-1">
@@ -3,7 +3,6 @@ declare const __propDef: {
3
3
  props: {
4
4
  [x: string]: any;
5
5
  title: string;
6
- smallPadding?: boolean | undefined;
7
6
  noPadding?: boolean | undefined;
8
7
  titlePadding?: string | undefined;
9
8
  tooltip?: string | undefined;
@@ -46,9 +46,12 @@ $: componentInput && onchange?.();
46
46
  initialValue={componentInput.value?.['value']?.split('$res:')[1] || ''}
47
47
  on:change={(e) => {
48
48
  let path = e.detail
49
-
50
- if (componentInput && path) {
51
- componentInput.value['value'] = `$res:${path}`
49
+ if (componentInput) {
50
+ if (path) {
51
+ componentInput.value['value'] = `$res:${path}`
52
+ } else {
53
+ componentInput.value['value'] = undefined
54
+ }
52
55
  }
53
56
  }}
54
57
  />
@@ -64,9 +67,12 @@ $: componentInput && onchange?.();
64
67
  initialValue={componentInput.value?.split('$res:')[1] || ''}
65
68
  on:change={(e) => {
66
69
  let path = e.detail
67
-
68
- if (componentInput && path) {
69
- componentInput.value = `$res:${path}`
70
+ if (componentInput) {
71
+ if (path) {
72
+ componentInput.value = `$res:${path}`
73
+ } else {
74
+ componentInput.value = undefined
75
+ }
70
76
  }
71
77
  }}
72
78
  resourceType={componentInput.format.split('-').length > 1