windmill-components 1.379.4 → 1.382.3

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/package/base.d.ts +1 -1
  2. package/package/base.js +1 -1
  3. package/package/components/ArgInput.svelte +33 -3
  4. package/package/components/DisplayResult.svelte +17 -5
  5. package/package/components/EditorBar.svelte +48 -38
  6. package/package/components/EditorBar.svelte.d.ts +2 -0
  7. package/package/components/ErrorOrRecoveryHandler.svelte +3 -2
  8. package/package/components/FlowBuilder.svelte +18 -12
  9. package/package/components/FlowBuilder.svelte.d.ts +3 -2
  10. package/package/components/FlowGraphViewer.svelte +6 -5
  11. package/package/components/FlowJobResult.svelte +4 -2
  12. package/package/components/FlowJobResult.svelte.d.ts +2 -0
  13. package/package/components/FlowStatusViewer.svelte +7 -1
  14. package/package/components/FlowStatusViewer.svelte.d.ts +3 -0
  15. package/package/components/FlowStatusViewerInner.svelte +29 -11
  16. package/package/components/FlowViewer.svelte +3 -1
  17. package/package/components/FlowViewer.svelte.d.ts +1 -0
  18. package/package/components/HighlightCode.svelte +2 -2
  19. package/package/components/ModulePreviewForm.svelte +1 -1
  20. package/package/components/ObjectResourceInput.svelte +7 -2
  21. package/package/components/ObjectResourceInput.svelte.d.ts +2 -0
  22. package/package/components/ResourcePicker.svelte +60 -48
  23. package/package/components/ScriptBuilder.svelte +42 -36
  24. package/package/components/ScriptBuilder.svelte.d.ts +2 -0
  25. package/package/components/ScriptEditor.svelte +3 -1
  26. package/package/components/ScriptEditor.svelte.d.ts +2 -0
  27. package/package/components/ScriptVersionHistory.svelte +63 -7
  28. package/package/components/apps/components/display/AppText.svelte +8 -3
  29. package/package/components/apps/components/display/dbtable/DbExplorerCount.svelte +3 -2
  30. package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte +22 -5
  31. package/package/components/apps/components/display/table/AppAggridTable.svelte +14 -5
  32. package/package/components/apps/components/display/table/AppAggridTableActions.svelte +23 -8
  33. package/package/components/apps/components/display/table/AppAggridTableActions.svelte.d.ts +5 -3
  34. package/package/components/apps/components/display/table/utils.js +8 -7
  35. package/package/components/apps/components/helpers/RunnableComponent.svelte +13 -1
  36. package/package/components/apps/components/helpers/eval.js +31 -25
  37. package/package/components/apps/components/inputs/AppSelect.svelte +45 -29
  38. package/package/components/apps/editor/AppEditorHeader.svelte +1 -0
  39. package/package/components/apps/editor/AppReportsDrawer.svelte +4 -3
  40. package/package/components/apps/editor/component/components.d.ts +7 -1
  41. package/package/components/apps/editor/component/components.js +6 -0
  42. package/package/components/apps/editor/settingsPanel/DecisionTreeGraphEditor.svelte +0 -1
  43. package/package/components/apps/editor/settingsPanel/DecisionTreeGraphHeader.svelte +55 -45
  44. package/package/components/apps/editor/settingsPanel/DecisionTreeGraphHeader.svelte.d.ts +7 -9
  45. package/package/components/apps/editor/settingsPanel/DecisionTreeGraphNode.svelte +66 -59
  46. package/package/components/apps/editor/settingsPanel/DecisionTreeGraphNode.svelte.d.ts +9 -11
  47. package/package/components/apps/editor/settingsPanel/decisionTree/DecisionTreePreview.svelte +213 -254
  48. package/package/components/apps/editor/settingsPanel/decisionTree/DecisionTreePreview.svelte.d.ts +0 -1
  49. package/package/components/apps/editor/settingsPanel/decisionTree/nodeHelpers.d.ts +1 -1
  50. package/package/components/apps/editor/settingsPanel/decisionTree/nodeHelpers.js +2 -6
  51. package/package/components/custom_ui.d.ts +35 -1
  52. package/package/components/details/DetailPageDetailPanel.svelte +9 -1
  53. package/package/components/details/DetailPageDetailPanel.svelte.d.ts +2 -1
  54. package/package/components/details/DetailPageLayout.svelte +2 -0
  55. package/package/components/details/DetailPageLayout.svelte.d.ts +3 -0
  56. package/package/components/details/EmailTriggerPanel.svelte +128 -0
  57. package/package/components/details/EmailTriggerPanel.svelte.d.ts +20 -0
  58. package/package/components/details/WebhooksPanel.svelte +10 -71
  59. package/package/components/flows/FlowHistory.svelte +1 -0
  60. package/package/components/flows/content/FlowInputs.svelte +0 -1
  61. package/package/components/flows/content/FlowModuleComponent.svelte +8 -2
  62. package/package/components/flows/content/FlowModuleEarlyStop.svelte +193 -66
  63. package/package/components/flows/content/FlowModuleHeader.svelte +1 -1
  64. package/package/components/flows/content/FlowModuleScript.svelte +33 -3
  65. package/package/components/flows/content/FlowModuleScript.svelte.d.ts +2 -0
  66. package/package/components/flows/content/FlowModuleSuspend.svelte +15 -0
  67. package/package/components/flows/content/FlowSettings.svelte +26 -15
  68. package/package/components/flows/flowExplorer.js +3 -0
  69. package/package/components/flows/flowInfers.js +1 -1
  70. package/package/components/flows/map/FlowJobsMenu.svelte +39 -44
  71. package/package/components/flows/map/FlowModuleSchemaItem.svelte +1 -2
  72. package/package/components/flows/map/FlowModuleSchemaMap.svelte +4 -3
  73. package/package/components/flows/map/InsertModuleButton.svelte +16 -9
  74. package/package/components/flows/map/MapItem.svelte +4 -98
  75. package/package/components/flows/map/MapItem.svelte.d.ts +0 -5
  76. package/package/components/flows/map/VirtualItem.svelte +6 -159
  77. package/package/components/flows/map/VirtualItem.svelte.d.ts +0 -15
  78. package/package/components/flows/propPicker/PropPickerWrapper.svelte +2 -0
  79. package/package/components/flows/propPicker/PropPickerWrapper.svelte.d.ts +1 -0
  80. package/package/components/flows/types.d.ts +2 -0
  81. package/package/components/graph/FlowGraphV2.svelte +256 -0
  82. package/package/components/graph/{FlowGraph.svelte.d.ts → FlowGraphV2.svelte.d.ts} +8 -8
  83. package/package/components/graph/graphBuilder.d.ts +15 -0
  84. package/package/components/graph/graphBuilder.js +337 -0
  85. package/package/components/graph/index.d.ts +0 -1
  86. package/package/components/graph/index.js +0 -1
  87. package/package/components/graph/model.d.ts +4 -8
  88. package/package/components/graph/renderers/edges/BaseEdge.svelte +109 -0
  89. package/package/components/graph/renderers/edges/BaseEdge.svelte.d.ts +35 -0
  90. package/package/components/graph/renderers/edges/DataflowEdge.svelte +37 -0
  91. package/package/components/graph/renderers/edges/DataflowEdge.svelte.d.ts +29 -0
  92. package/package/components/graph/renderers/edges/EmptyEdge.svelte +22 -0
  93. package/package/components/graph/renderers/edges/EmptyEdge.svelte.d.ts +23 -0
  94. package/package/components/graph/renderers/nodes/BranchAllStart.svelte +44 -0
  95. package/package/components/graph/renderers/nodes/BranchAllStart.svelte.d.ts +29 -0
  96. package/package/components/graph/renderers/nodes/BranchOneStart.svelte +41 -0
  97. package/package/components/graph/renderers/nodes/BranchOneStart.svelte.d.ts +29 -0
  98. package/package/components/graph/renderers/nodes/ForLoopEndNode.svelte +19 -0
  99. package/package/components/graph/renderers/nodes/ForLoopEndNode.svelte.d.ts +24 -0
  100. package/package/components/graph/renderers/nodes/ForLoopStartNode.svelte +20 -0
  101. package/package/components/graph/renderers/nodes/ForLoopStartNode.svelte.d.ts +25 -0
  102. package/package/components/graph/renderers/nodes/InputNode.svelte +74 -0
  103. package/package/components/graph/renderers/nodes/InputNode.svelte.d.ts +23 -0
  104. package/package/components/graph/renderers/nodes/ModuleNode.svelte +71 -0
  105. package/package/components/graph/renderers/nodes/ModuleNode.svelte.d.ts +41 -0
  106. package/package/components/graph/renderers/nodes/NoBranchNode.svelte +20 -0
  107. package/package/components/graph/renderers/nodes/NoBranchNode.svelte.d.ts +27 -0
  108. package/package/components/graph/renderers/nodes/NodeWrapper.svelte +21 -0
  109. package/package/components/graph/renderers/nodes/NodeWrapper.svelte.d.ts +22 -0
  110. package/package/components/graph/renderers/nodes/ResultNode.svelte +24 -0
  111. package/package/components/graph/renderers/nodes/ResultNode.svelte.d.ts +22 -0
  112. package/package/components/graph/renderers/nodes/branchAllEndNode.svelte +19 -0
  113. package/package/components/graph/renderers/nodes/branchAllEndNode.svelte.d.ts +26 -0
  114. package/package/components/graph/renderers/nodes/branchOneEndNode.svelte +19 -0
  115. package/package/components/graph/renderers/nodes/branchOneEndNode.svelte.d.ts +24 -0
  116. package/package/components/graph/renderers/utils.d.ts +8 -0
  117. package/package/components/graph/renderers/utils.js +26 -0
  118. package/package/components/graph/util.d.ts +1 -2
  119. package/package/components/graph/util.js +2 -8
  120. package/package/components/propertyPicker/PropPickerResult.svelte +6 -1
  121. package/package/components/propertyPicker/PropPickerResult.svelte.d.ts +1 -0
  122. package/package/components/runs/RunsFilter.svelte +15 -17
  123. package/package/components/sidebar/changelogs.js +5 -0
  124. package/package/gen/core/OpenAPI.js +1 -1
  125. package/package/gen/schemas.gen.d.ts +3 -0
  126. package/package/gen/schemas.gen.js +3 -0
  127. package/package/gen/services.gen.d.ts +22 -3
  128. package/package/gen/services.gen.js +38 -2
  129. package/package/gen/types.gen.d.ts +69 -6
  130. package/package/hub.d.ts +11 -0
  131. package/package/hub.js +2 -0
  132. package/package/hubPaths.json +9 -0
  133. package/package/init_scripts/python_failure_module.d.ts +1 -1
  134. package/package/init_scripts/python_failure_module.js +4 -3
  135. package/package/script_helpers.d.ts +2 -2
  136. package/package/script_helpers.js +11 -9
  137. package/package.json +2 -1
  138. package/package/components/graph/FlowGraph.svelte +0 -614
  139. package/package/components/graph/svelvet/LICENSE +0 -21
  140. package/package/components/graph/svelvet/container/README.md +0 -7
  141. package/package/components/graph/svelvet/container/controllers/middleware.d.ts +0 -11
  142. package/package/components/graph/svelvet/container/controllers/middleware.js +0 -87
  143. package/package/components/graph/svelvet/container/models/index.d.ts +0 -0
  144. package/package/components/graph/svelvet/container/models/index.js +0 -1
  145. package/package/components/graph/svelvet/container/views/GraphView.svelte +0 -262
  146. package/package/components/graph/svelvet/container/views/GraphView.svelte.d.ts +0 -26
  147. package/package/components/graph/svelvet/container/views/Svelvet.svelte +0 -121
  148. package/package/components/graph/svelvet/container/views/Svelvet.svelte.d.ts +0 -36
  149. package/package/components/graph/svelvet/customCss/controllers/getCss.d.ts +0 -2
  150. package/package/components/graph/svelvet/customCss/controllers/getCss.js +0 -46
  151. package/package/components/graph/svelvet/d3/controllers/d3.d.ts +0 -5
  152. package/package/components/graph/svelvet/d3/controllers/d3.js +0 -59
  153. package/package/components/graph/svelvet/edges/controllers/anchorCbDev.d.ts +0 -4
  154. package/package/components/graph/svelvet/edges/controllers/anchorCbDev.js +0 -92
  155. package/package/components/graph/svelvet/edges/controllers/anchorCbUser.d.ts +0 -57
  156. package/package/components/graph/svelvet/edges/controllers/anchorCbUser.js +0 -73
  157. package/package/components/graph/svelvet/edges/controllers/util.d.ts +0 -37
  158. package/package/components/graph/svelvet/edges/controllers/util.js +0 -71
  159. package/package/components/graph/svelvet/edges/models/Anchor.d.ts +0 -48
  160. package/package/components/graph/svelvet/edges/models/Anchor.js +0 -122
  161. package/package/components/graph/svelvet/edges/models/Edge.d.ts +0 -48
  162. package/package/components/graph/svelvet/edges/models/Edge.js +0 -109
  163. package/package/components/graph/svelvet/edges/types/types.d.ts +0 -18
  164. package/package/components/graph/svelvet/edges/types/types.js +0 -1
  165. package/package/components/graph/svelvet/edges/views/Edges/BaseEdge.svelte +0 -104
  166. package/package/components/graph/svelvet/edges/views/Edges/BaseEdge.svelte.d.ts +0 -18
  167. package/package/components/graph/svelvet/edges/views/Edges/EdgeText.svelte +0 -42
  168. package/package/components/graph/svelvet/edges/views/Edges/EdgeText.svelte.d.ts +0 -17
  169. package/package/components/graph/svelvet/edges/views/Edges/SimpleBezierEdge.svelte +0 -151
  170. package/package/components/graph/svelvet/edges/views/Edges/SimpleBezierEdge.svelte.d.ts +0 -17
  171. package/package/components/graph/svelvet/edges/views/Edges/SmoothStepEdge.svelte +0 -157
  172. package/package/components/graph/svelvet/edges/views/Edges/SmoothStepEdge.svelte.d.ts +0 -60
  173. package/package/components/graph/svelvet/edges/views/Edges/StepEdge.svelte +0 -8
  174. package/package/components/graph/svelvet/edges/views/Edges/StepEdge.svelte.d.ts +0 -25
  175. package/package/components/graph/svelvet/edges/views/Edges/types.d.ts +0 -52
  176. package/package/components/graph/svelvet/edges/views/Edges/types.js +0 -1
  177. package/package/components/graph/svelvet/edges/views/Edges/utils.d.ts +0 -33
  178. package/package/components/graph/svelvet/edges/views/Edges/utils.js +0 -31
  179. package/package/components/graph/svelvet/nodes/controllers/util.d.ts +0 -9
  180. package/package/components/graph/svelvet/nodes/controllers/util.js +0 -13
  181. package/package/components/graph/svelvet/nodes/models/Node.d.ts +0 -74
  182. package/package/components/graph/svelvet/nodes/models/Node.js +0 -156
  183. package/package/components/graph/svelvet/nodes/views/Node.svelte +0 -84
  184. package/package/components/graph/svelvet/nodes/views/Node.svelte.d.ts +0 -21
  185. package/package/components/graph/svelvet/store/controllers/storeApi.d.ts +0 -25
  186. package/package/components/graph/svelvet/store/controllers/storeApi.js +0 -91
  187. package/package/components/graph/svelvet/store/controllers/userApi.d.ts +0 -3
  188. package/package/components/graph/svelvet/store/controllers/userApi.js +0 -18
  189. package/package/components/graph/svelvet/store/controllers/util.d.ts +0 -24
  190. package/package/components/graph/svelvet/store/controllers/util.js +0 -148
  191. package/package/components/graph/svelvet/store/models/store.d.ts +0 -13
  192. package/package/components/graph/svelvet/store/models/store.js +0 -12
  193. package/package/components/graph/svelvet/store/types/types.d.ts +0 -127
  194. package/package/components/graph/svelvet/store/types/types.js +0 -1
  195. package/package/components/graph/svelvet/types/README.md +0 -3
  196. package/package/components/graph/svelvet/types/index.d.ts +0 -2
  197. package/package/components/graph/svelvet/types/index.js +0 -1
  198. package/package/components/graph/svelvet/types/types.d.ts +0 -50
  199. package/package/components/graph/svelvet/types/types.js +0 -18
@@ -84,7 +84,7 @@ function toggleRow(row) {
84
84
  outputs?.selectedRowIndex.set(rowIndex);
85
85
  }
86
86
  if (!deepEqual(outputs?.selectedRow?.peak(), data)) {
87
- outputs?.selectedRow.set(data);
87
+ outputs?.selectedRow?.set(data);
88
88
  }
89
89
  if (iterContext && listInputs) {
90
90
  listInputs.set(id, { selectedRow: data, selectedRowIndex: selectedRowIndex });
@@ -147,20 +147,21 @@ const tableActionsFactory = cellRendererFactory((c, p) => {
147
147
  ['AppViewerContext', context],
148
148
  ['ContextPanel', contextPanel]
149
149
  ]);
150
- new AppAggridTableActions({
150
+ let ta = new AppAggridTableActions({
151
151
  target: c.eGui,
152
152
  props: {
153
+ p,
153
154
  id: id,
154
155
  actions,
155
156
  rowIndex,
156
157
  row,
157
158
  render,
158
159
  wrapActions: resolvedConfig.wrapActions,
159
- selectRow: () => {
160
+ selectRow: (p) => {
160
161
  toggleRow(p);
161
162
  p.node.setSelected(true);
162
163
  },
163
- onSet: (id, value) => {
164
+ onSet: (id, value, rowIndex) => {
164
165
  if (!inputs[id]) {
165
166
  inputs[id] = { [rowIndex]: value };
166
167
  }
@@ -169,7 +170,7 @@ const tableActionsFactory = cellRendererFactory((c, p) => {
169
170
  }
170
171
  outputs?.inputs.set(inputs, true);
171
172
  },
172
- onRemove: (id) => {
173
+ onRemove: (id, rowIndex) => {
173
174
  if (inputs?.[id] == undefined) {
174
175
  return;
175
176
  }
@@ -184,6 +185,14 @@ const tableActionsFactory = cellRendererFactory((c, p) => {
184
185
  },
185
186
  context: componentContext
186
187
  });
188
+ return {
189
+ destroy: () => {
190
+ ta.$destroy();
191
+ },
192
+ refresh(params) {
193
+ ta.$set({ rowIndex: params.node.rowIndex ?? 0, row: params.data, p: params });
194
+ }
195
+ };
187
196
  });
188
197
  function mountGrid() {
189
198
  if (eGui) {
@@ -10,6 +10,7 @@ import { Plug2 } from 'lucide-svelte';
10
10
  import ComponentOutputViewer from '../../../editor/contextPanel/ComponentOutputViewer.svelte';
11
11
  import { connectOutput } from '../../../editor/appUtils';
12
12
  import RowWrapper from '../../layout/RowWrapper.svelte';
13
+ export let p;
13
14
  export let id;
14
15
  export let render;
15
16
  export let actions = [];
@@ -29,11 +30,25 @@ onMount(() => {
29
30
  if (parent) {
30
31
  parent.classList.add('w-full');
31
32
  }
33
+ else {
34
+ //sometimes the parent is not available immediately
35
+ setTimeout(() => {
36
+ const parent = rowDiv?.parentElement?.parentElement?.parentElement;
37
+ if (parent) {
38
+ parent.classList.add('w-full');
39
+ }
40
+ }, 10);
41
+ }
32
42
  }
33
43
  });
34
44
  </script>
35
45
 
36
- <RowWrapper value={row} index={rowIndex} {onSet} {onRemove}>
46
+ <RowWrapper
47
+ value={row}
48
+ index={rowIndex}
49
+ onSet={(id, value) => onSet(id, value, rowIndex)}
50
+ onRemove={(id) => onRemove(id, rowIndex)}
51
+ >
37
52
  <div
38
53
  class={twMerge(
39
54
  'flex flex-row justify-center items-center gap-4 h-full px-4 py-1 w-full',
@@ -57,7 +72,7 @@ onMount(() => {
57
72
  }
58
73
  }}
59
74
  on:pointerdown|stopPropagation={(e) => {
60
- selectRow()
75
+ selectRow(p)
61
76
 
62
77
  if (!$connectingInput.opened) {
63
78
  $selectedComponent = [action.id]
@@ -159,7 +174,7 @@ onMount(() => {
159
174
  noWFull
160
175
  preclickAction={async () => {
161
176
  dispatch('toggleRow')
162
- selectRow()
177
+ selectRow(p)
163
178
  }}
164
179
  id={action.id}
165
180
  customCss={action.customCss}
@@ -185,7 +200,7 @@ onMount(() => {
185
200
  onToggle={action.onToggle}
186
201
  preclickAction={async () => {
187
202
  dispatch('toggleRow')
188
- selectRow()
203
+ selectRow(p)
189
204
  }}
190
205
  verticalAlignment="center"
191
206
  {controls}
@@ -204,7 +219,7 @@ onMount(() => {
204
219
  onSelect={action.onSelect}
205
220
  preclickAction={async () => {
206
221
  dispatch('toggleRow')
207
- selectRow()
222
+ selectRow(p)
208
223
  }}
209
224
  {controls}
210
225
  />
@@ -216,7 +231,7 @@ onMount(() => {
216
231
  {render}
217
232
  preclickAction={async () => {
218
233
  dispatch('toggleRow')
219
- selectRow()
234
+ selectRow(p)
220
235
  }}
221
236
  noWFull
222
237
  id={action.id}
@@ -241,7 +256,7 @@ onMount(() => {
241
256
  onToggle={action.onToggle}
242
257
  preclickAction={async () => {
243
258
  dispatch('toggleRow')
244
- selectRow()
259
+ selectRow(p)
245
260
  }}
246
261
  />
247
262
  {:else if action.type == 'selectcomponent'}
@@ -258,7 +273,7 @@ onMount(() => {
258
273
  onSelect={action.onSelect}
259
274
  preclickAction={async () => {
260
275
  dispatch('toggleRow')
261
- selectRow()
276
+ selectRow(p)
262
277
  }}
263
278
  />
264
279
  {/if}
@@ -2,8 +2,10 @@ import { SvelteComponent } from "svelte";
2
2
  import type { TableAction } from '../../../editor/component';
3
3
  import 'ag-grid-community/styles/ag-grid.css';
4
4
  import 'ag-grid-community/styles/ag-theme-alpine.css';
5
+ import type { ICellRendererParams } from 'ag-grid-community';
5
6
  declare const __propDef: {
6
7
  props: {
8
+ p: ICellRendererParams<any>;
7
9
  id: string;
8
10
  render: boolean;
9
11
  actions?: TableAction[] | undefined;
@@ -11,10 +13,10 @@ declare const __propDef: {
11
13
  row: {
12
14
  original: Record<string, any>;
13
15
  };
14
- onSet: (id: string, value: any) => void;
15
- onRemove: (id: string) => void;
16
+ onSet: (id: string, value: any, rowIndex: number) => void;
17
+ onRemove: (id: string, rowIndex: number) => void;
16
18
  wrapActions?: boolean | undefined;
17
- selectRow: () => void;
19
+ selectRow: (params: ICellRendererParams<any>) => void;
18
20
  };
19
21
  events: {
20
22
  toggleRow: CustomEvent<any>;
@@ -5,25 +5,26 @@
5
5
  */
6
6
  export class AbstractCellRenderer {
7
7
  eGui;
8
- value;
9
- params;
8
+ component;
10
9
  constructor(parentElement = 'span') {
11
10
  // create empty span (or other element) to place svelte component in
11
+ this.component = undefined;
12
12
  this.eGui = document.createElement(parentElement);
13
13
  }
14
14
  init(params) {
15
- this.value = params.value;
16
- this.createComponent(params);
15
+ this.component = this.createComponent(params);
17
16
  this.eGui.addEventListener('click', () => params.onClick?.(params.data));
18
- this.params = params;
19
17
  }
20
18
  getGui() {
21
19
  return this.eGui;
22
20
  }
23
21
  refresh(params) {
24
- this.value = params.value;
22
+ this.component?.refresh?.(params);
25
23
  return true;
26
24
  }
25
+ destroy() {
26
+ this.component?.destroy?.();
27
+ }
27
28
  }
28
29
  /**
29
30
  * Creates a cell renderer using the given callback for how to initialise a svelte component.
@@ -34,7 +35,7 @@ export class AbstractCellRenderer {
34
35
  export function cellRendererFactory(svelteComponent) {
35
36
  class Renderer extends AbstractCellRenderer {
36
37
  createComponent(params) {
37
- svelteComponent(this, params);
38
+ return svelteComponent(this, params);
38
39
  }
39
40
  }
40
41
  return Renderer;
@@ -514,6 +514,18 @@ function updateBgRuns(loading) {
514
514
  bgRuns.update((runs) => runs.filter((r) => r !== id));
515
515
  }
516
516
  }
517
+ function getError(obj) {
518
+ try {
519
+ if (obj?.error) {
520
+ return obj.error;
521
+ }
522
+ return undefined;
523
+ }
524
+ catch (e) {
525
+ console.error('Error accessing error from result', e);
526
+ return undefined;
527
+ }
528
+ }
517
529
  </script>
518
530
 
519
531
  {#each Object.entries(fields ?? {}) as [key, v] (key)}
@@ -608,7 +620,7 @@ function updateBgRuns(loading) {
608
620
  <Alert type="warning" size="xs" class="mt-2 px-1" title="Missing runnable">
609
621
  Please select a runnable
610
622
  </Alert>
611
- {:else if result?.error && $mode === 'preview' && !errorHandledByComponent}
623
+ {:else if getError(result) && $mode === 'preview' && !errorHandledByComponent}
612
624
  <div
613
625
  title="Error"
614
626
  class={classNames(
@@ -19,7 +19,7 @@ function create_context_function_template(eval_string, contextKeys, noReturn) {
19
19
  return async function (context, state, createProxy, goto, setTab, recompute, getAgGrid, setValue, setSelectedIndex, openModal, closeModal, open, close, validate, invalidate, validateAll, clearFiles, showToast, waitJob, askNewResource) {
20
20
  "use strict";
21
21
  ${contextKeys && contextKeys.length > 0
22
- ? `let ${contextKeys.map((key) => ` ${key} = createProxy('${key}', context['${key}'] ?? {})`)};`
22
+ ? `let ${contextKeys.map((key) => ` ${key} = createProxy('${key}', context['${key}'])`)};`
23
23
  : ``}
24
24
  ${hasReturnAsLastLine
25
25
  ? eval_string
@@ -54,31 +54,37 @@ function hashCode(s) {
54
54
  }
55
55
  export async function eval_like(text, context = {}, state, editor, controlComponents, worldStore, runnableComponents, noReturn, groupContextId) {
56
56
  const createProxy = (name, obj) => {
57
- if (name == 'group' && groupContextId) {
58
- return createGroupProxy(groupContextId, obj);
59
- }
60
- return new Proxy(obj, {
61
- set(target, key, value) {
62
- if (name != 'state') {
63
- throw new Error('Cannot set value on objects that are neither the global state or a container group field');
64
- }
65
- if (typeof key !== 'string') {
66
- throw new Error('Invalid key');
67
- }
68
- target[key] = value;
69
- let o = worldStore?.newOutput(name, key, value);
70
- o?.set(value, true);
71
- return true;
72
- },
73
- get(obj, prop) {
74
- if (name != 'state' && prop == 'group') {
75
- return createGroupProxy(name, obj[prop]);
76
- }
77
- else {
78
- return obj[prop];
79
- }
57
+ // console.log('Creating proxy', name, obj)
58
+ if (obj != null && obj != undefined && typeof obj == 'object') {
59
+ if (name == 'group' && groupContextId) {
60
+ return createGroupProxy(groupContextId, obj);
80
61
  }
81
- });
62
+ return new Proxy(obj, {
63
+ set(target, key, value) {
64
+ if (name != 'state') {
65
+ throw new Error('Cannot set value on objects that are neither the global state or a container group field');
66
+ }
67
+ if (typeof key !== 'string') {
68
+ throw new Error('Invalid key');
69
+ }
70
+ target[key] = value;
71
+ let o = worldStore?.newOutput(name, key, value);
72
+ o?.set(value, true);
73
+ return true;
74
+ },
75
+ get(obj, prop) {
76
+ if (name != 'state' && prop == 'group') {
77
+ return createGroupProxy(name, obj[prop]);
78
+ }
79
+ else {
80
+ return obj[prop];
81
+ }
82
+ }
83
+ });
84
+ }
85
+ else {
86
+ return obj;
87
+ }
82
88
  };
83
89
  const createGroupProxy = (name, obj) => {
84
90
  return new Proxy(obj, {
@@ -101,6 +101,11 @@ function onChange(e) {
101
101
  onSelect.forEach((id) => $runnableComponents?.[id]?.cb?.forEach((f) => f()));
102
102
  }
103
103
  }
104
+ function onNativeChange(e) {
105
+ const target = e.target;
106
+ const value = target.value;
107
+ setValue(value);
108
+ }
104
109
  function setValue(nvalue) {
105
110
  let result = undefined;
106
111
  try {
@@ -188,35 +193,46 @@ let filterText = '';
188
193
  }}
189
194
  >
190
195
  {#if Array.isArray(listItems) && listItems.every((x) => x && typeof x == 'object' && typeof x['label'] == 'string' && `value` in x)}
191
- <Select
192
- inAppEditor={true}
193
- --border-radius="0.250rem"
194
- --clear-icon-color="#6b7280"
195
- --border={$darkMode ? '1px solid #6b7280' : '1px solid #d1d5db'}
196
- bind:filterText
197
- on:filter={handleFilter}
198
- on:clear={onClear}
199
- on:change={onChange}
200
- items={listItems}
201
- listAutoWidth={resolvedConfig.fullWidth}
202
- inputStyles={SELECT_INPUT_DEFAULT_STYLE.inputStyles}
203
- containerStyles={($darkMode
204
- ? SELECT_INPUT_DEFAULT_STYLE.containerStylesDark
205
- : SELECT_INPUT_DEFAULT_STYLE.containerStyles) + css?.input?.style}
206
- {value}
207
- class={css?.input?.class}
208
- placeholder={resolvedConfig.placeholder}
209
- disabled={resolvedConfig.disabled}
210
- on:focus={() => {
211
- if (!$connectingInput.opened) {
212
- $selectedComponent = [id]
213
- }
214
- }}
215
- >
216
- <svelte:fragment slot="item" let:item
217
- >{#if resolvedConfig.create}{item.created ? 'Add new: ' : ''}{/if}{item.label}
218
- </svelte:fragment>
219
- </Select>
196
+ {#if resolvedConfig.nativeHtmlSelect}
197
+ <select class={css?.input?.class} style={css?.input?.style} on:change={onNativeChange}>
198
+ {#if resolvedConfig.placeholder}
199
+ <option value="" disabled selected>{resolvedConfig.placeholder}</option>
200
+ {/if}
201
+ {#each listItems as item (item.value)}
202
+ <option value={item.value} selected={item.value === value}>{item.label}</option>
203
+ {/each}
204
+ </select>
205
+ {:else}
206
+ <Select
207
+ inAppEditor={true}
208
+ --border-radius="0.250rem"
209
+ --clear-icon-color="#6b7280"
210
+ --border={$darkMode ? '1px solid #6b7280' : '1px solid #d1d5db'}
211
+ bind:filterText
212
+ on:filter={handleFilter}
213
+ on:clear={onClear}
214
+ on:change={onChange}
215
+ items={listItems}
216
+ listAutoWidth={resolvedConfig.fullWidth}
217
+ inputStyles={SELECT_INPUT_DEFAULT_STYLE.inputStyles}
218
+ containerStyles={($darkMode
219
+ ? SELECT_INPUT_DEFAULT_STYLE.containerStylesDark
220
+ : SELECT_INPUT_DEFAULT_STYLE.containerStyles) + css?.input?.style}
221
+ {value}
222
+ class={css?.input?.class}
223
+ placeholder={resolvedConfig.placeholder}
224
+ disabled={resolvedConfig.disabled}
225
+ on:focus={() => {
226
+ if (!$connectingInput.opened) {
227
+ $selectedComponent = [id]
228
+ }
229
+ }}
230
+ >
231
+ <svelte:fragment slot="item" let:item
232
+ >{#if resolvedConfig.create}{item.created ? 'Add new: ' : ''}{/if}{item.label}
233
+ </svelte:fragment>
234
+ </Select>
235
+ {/if}
220
236
  {:else}
221
237
  <Popover notClickable placement="bottom" popupClass="!bg-surface border w-96">
222
238
  <div
@@ -144,6 +144,7 @@ async function computeTriggerables() {
144
144
  input: getCountInput(resourceValue, tableValue, dbType, columnDefs, whereClause),
145
145
  id: x.id + '_count'
146
146
  });
147
+ console.log(x.id, getCountInput(resourceValue, tableValue, dbType, columnDefs, whereClause), columnDefs);
147
148
  r.push({
148
149
  input: getInsertInput(tableValue, columnDefs, resourceValue, dbType),
149
150
  id: x.id + '_insert'
@@ -17,6 +17,7 @@ import Toggle from '../../Toggle.svelte';
17
17
  import { RotateCw, Save } from 'lucide-svelte';
18
18
  import { CUSTOM_TAGS_SETTING, WORKSPACE_SLACK_BOT_TOKEN_PATH } from '../../../consts';
19
19
  import { loadSchemaFromPath } from '../../../infer';
20
+ import { hubPaths } from '../../../hub';
20
21
  export let appPath;
21
22
  export let open = false;
22
23
  let appReportingEnabled = false;
@@ -155,7 +156,7 @@ export async function main(app_path: string, startup_duration = 5, kind: 'pdf' |
155
156
  }`;
156
157
  const notificationScripts = {
157
158
  discord: {
158
- path: 'hub/7838/discord',
159
+ path: hubPaths.discordReport,
159
160
  schema: {
160
161
  type: 'object',
161
162
  properties: {
@@ -171,7 +172,7 @@ const notificationScripts = {
171
172
  }
172
173
  },
173
174
  slack: {
174
- path: 'hub/7836/slack',
175
+ path: hubPaths.slackReport,
175
176
  schema: {
176
177
  type: 'object',
177
178
  properties: {
@@ -184,7 +185,7 @@ const notificationScripts = {
184
185
  }
185
186
  },
186
187
  email: {
187
- path: 'hub/7837/smtp',
188
+ path: hubPaths.smtpReport,
188
189
  schema: {
189
190
  type: 'object',
190
191
  properties: {
@@ -519,7 +519,7 @@ export declare const components: {
519
519
  readonly fieldType: "select";
520
520
  readonly type: "static";
521
521
  readonly selectOptions: string[];
522
- readonly value: "Body" | "Title" | "Subtitle" | "Label" | "Caption";
522
+ readonly value: "Title" | "Subtitle" | "Body" | "Label" | "Caption";
523
523
  };
524
524
  readonly copyButton: {
525
525
  readonly type: "static";
@@ -2388,6 +2388,12 @@ export declare const components: {
2388
2388
  readonly fieldType: "boolean";
2389
2389
  readonly tooltip: "Preselect first item in the options if no default value is set";
2390
2390
  };
2391
+ readonly nativeHtmlSelect: {
2392
+ readonly type: "static";
2393
+ readonly fieldType: "boolean";
2394
+ readonly value: false;
2395
+ readonly tooltip: "Use a native html select instead of the Windmill select component";
2396
+ };
2391
2397
  readonly fullWidth: {
2392
2398
  readonly type: "static";
2393
2399
  readonly fieldType: "boolean";
@@ -1625,6 +1625,12 @@ This is a paragraph.
1625
1625
  fieldType: 'boolean',
1626
1626
  tooltip: 'Preselect first item in the options if no default value is set'
1627
1627
  },
1628
+ nativeHtmlSelect: {
1629
+ type: 'static',
1630
+ fieldType: 'boolean',
1631
+ value: false,
1632
+ tooltip: 'Use a native html select instead of the Windmill select component'
1633
+ },
1628
1634
  fullWidth: {
1629
1635
  type: 'static',
1630
1636
  fieldType: 'boolean',
@@ -37,7 +37,6 @@ setContext('DecisionTreeEditor', { selectedNodeId });
37
37
  <DecisionTreePreview
38
38
  bind:nodes
39
39
  bind:component
40
- {rebuildOnChange}
41
40
  {paneHeight}
42
41
  {paneWidth}
43
42
  on:render={() => {
@@ -1,55 +1,65 @@
1
- <script>import { createEventDispatcher } from 'svelte';
2
- import { twMerge } from 'tailwind-merge';
1
+ <script>import { twMerge } from 'tailwind-merge';
3
2
  import InsertDecisionTreeNode from './decisionTree/InsertDecisionTreeNode.svelte';
4
3
  import { X } from 'lucide-svelte';
5
- export let node;
6
- export let editable = true;
7
- export let canDelete = true;
8
- export let label = '';
4
+ import NodeWrapper from '../../../graph/renderers/nodes/NodeWrapper.svelte';
5
+ export let data;
9
6
  let open = false;
10
- const dispatch = createEventDispatcher();
11
7
  </script>
12
8
 
13
- <div class="relative h-full">
14
- <div
15
- class={twMerge(
16
- 'w-full h-full border border-gray-400',
17
- 'flex flex-row gap-2 items-center justify-between rounded-sm overflow-hidden'
18
- )}
19
- style="min-width: 275px; max-height: 80px; background-color: {document.documentElement.classList.contains(
20
- 'dark'
21
- )
22
- ? '#2e3440'
23
- : '#dfe6ee'}"
24
- >
25
- <div class="ml-4 text-xs font-normal text-primary"> {label} </div>
26
- </div>
27
-
28
- {#if canDelete}
29
- <div class="w-[27px] absolute -top-[32px] left-[50%] right-[50%] -translate-x-1/2">
30
- <button
31
- title="Delete branch"
32
- on:click|preventDefault|stopPropagation={() => dispatch('removeBranch')}
33
- type="button"
34
- class="text-primary bg-surface border mx-[1px] border-gray-300 dark:border-gray-500 focus:outline-none hover:bg-surface-hover focus:ring-4 focus:ring-gray-200 font-medium rounded-full text-sm w-[25px] h-[25px] flex items-center justify-center"
35
- >
36
- <X class="m-[5px]" size={15} />
37
- </button>
38
- </div>
39
- {/if}
40
-
41
- {#if node.id !== 'end' && editable}
9
+ <NodeWrapper>
10
+ <div class="relative h-full">
42
11
  <div
43
12
  class={twMerge(
44
- 'absolute -bottom-10 left-1/2 transform -translate-x-1/2 flex items-center',
45
- open ? 'z-20' : ''
13
+ 'w-full h-full border border-gray-400',
14
+ 'flex flex-row gap-2 items-center justify-between rounded-sm overflow-hidden'
46
15
  )}
16
+ style="width: 275px; height: 34px; background-color: {document.documentElement.classList.contains(
17
+ 'dark'
18
+ )
19
+ ? '#2e3440'
20
+ : '#dfe6ee'}"
47
21
  >
48
- <InsertDecisionTreeNode
49
- on:node={() => dispatch('nodeInsert')}
50
- on:addBranch={() => dispatch('addBranch')}
51
- canAddBranch={false}
52
- />
22
+ <div class="ml-4 text-xs font-normal text-primary"> {data.node.label} </div>
53
23
  </div>
54
- {/if}
55
- </div>
24
+
25
+ {#if data.canDelete}
26
+ <div class="w-[27px] absolute -top-[32px] left-[50%] right-[50%] -translate-x-1/2">
27
+ <button
28
+ title="Delete branch"
29
+ on:click|preventDefault|stopPropagation={() => {
30
+ data.nodeCallbackHandler('removeBranch', data.node.id, data.node, data.parentIds, false)
31
+ }}
32
+ type="button"
33
+ class="text-primary bg-surface border mx-[1px] border-gray-300 dark:border-gray-500 focus:outline-none hover:bg-surface-hover focus:ring-4 focus:ring-gray-200 font-medium rounded-full text-sm w-[25px] h-[25px] flex items-center justify-center"
34
+ >
35
+ <X class="m-[5px]" size={15} />
36
+ </button>
37
+ </div>
38
+ {/if}
39
+
40
+ {#if data.node.id !== 'end'}
41
+ <div
42
+ class={twMerge(
43
+ 'absolute -bottom-10 left-1/2 transform -translate-x-1/2 flex items-center',
44
+ open ? 'z-20' : ''
45
+ )}
46
+ >
47
+ <InsertDecisionTreeNode
48
+ on:node={() => {
49
+ data.nodeCallbackHandler(
50
+ 'nodeInsert',
51
+ data.node.id,
52
+ data.node,
53
+ data.parentIds ?? [],
54
+ data.branchHeader
55
+ )
56
+ }}
57
+ on:addBranch={() => {
58
+ data.nodeCallbackHandler('addBranch', data.node.id, data.node, data.parentIds, true)
59
+ }}
60
+ canAddBranch={false}
61
+ />
62
+ </div>
63
+ {/if}
64
+ </div>
65
+ </NodeWrapper>
@@ -2,17 +2,15 @@ import { SvelteComponent } from "svelte";
2
2
  import type { DecisionTreeNode } from '../component';
3
3
  declare const __propDef: {
4
4
  props: {
5
- node: DecisionTreeNode;
6
- editable?: boolean | undefined;
7
- canDelete?: boolean | undefined;
8
- label?: string | undefined;
5
+ data: {
6
+ node: DecisionTreeNode;
7
+ canDelete: boolean;
8
+ nodeCallbackHandler: (event: string, detail: string, graphNode: DecisionTreeNode | undefined, parentIds: string[], branchInsert: boolean) => void;
9
+ parentIds: string[];
10
+ branchHeader: boolean;
11
+ };
9
12
  };
10
13
  events: {
11
- nodeInsert: CustomEvent<void>;
12
- delete: CustomEvent<void>;
13
- addBranch: CustomEvent<void>;
14
- removeBranch: CustomEvent<void>;
15
- } & {
16
14
  [evt: string]: CustomEvent<any>;
17
15
  };
18
16
  slots: {};