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
@@ -7,7 +7,6 @@ declare const __propDef: {
7
7
  configuration: Record<string, AppInput>;
8
8
  inputType?: string | undefined;
9
9
  verticalAlignment?: 'top' | 'center' | 'bottom' | undefined;
10
- staticOutputs?: string[] | undefined;
11
10
  customCss?: ComponentCustomCSS<'input'> | undefined;
12
11
  appCssKey?: "textinputcomponent" | "passwordinputcomponent" | "emailinputcomponent" | undefined;
13
12
  render: boolean;
@@ -23,6 +22,5 @@ export type AppTextInputProps = typeof __propDef.props;
23
22
  export type AppTextInputEvents = typeof __propDef.events;
24
23
  export type AppTextInputSlots = typeof __propDef.slots;
25
24
  export default class AppTextInput extends SvelteComponentTyped<AppTextInputProps, AppTextInputEvents, AppTextInputSlots> {
26
- get staticOutputs(): string[];
27
25
  }
28
26
  export {};
@@ -1,4 +1,5 @@
1
- <script>import { getContext } from 'svelte';
1
+ <script>import { initOutput } from '../../../editor/appUtils';
2
+ import { getContext } from 'svelte';
2
3
  import { twMerge } from 'tailwind-merge';
3
4
  import { concatCustomCss } from '../../../utils';
4
5
  import AlignWrapper from '../../helpers/AlignWrapper.svelte';
@@ -7,10 +8,12 @@ import CurrencyInput from './CurrencyInput.svelte';
7
8
  export let id;
8
9
  export let configuration;
9
10
  export let verticalAlignment = undefined;
10
- export const staticOutputs = ['result'];
11
11
  export let customCss = undefined;
12
12
  export let render;
13
13
  const { app, worldStore } = getContext('AppViewerContext');
14
+ initOutput($worldStore, id, {
15
+ result: undefined
16
+ });
14
17
  let defaultValue = undefined;
15
18
  let isNegativeAllowed = undefined;
16
19
  let currency = undefined;
@@ -6,7 +6,6 @@ declare const __propDef: {
6
6
  id: string;
7
7
  configuration: Record<string, AppInput>;
8
8
  verticalAlignment?: 'top' | 'center' | 'bottom' | undefined;
9
- staticOutputs?: string[] | undefined;
10
9
  customCss?: ComponentCustomCSS<'input'> | undefined;
11
10
  render: boolean;
12
11
  };
@@ -19,6 +18,5 @@ export type AppCurrencyInputProps = typeof __propDef.props;
19
18
  export type AppCurrencyInputEvents = typeof __propDef.events;
20
19
  export type AppCurrencyInputSlots = typeof __propDef.slots;
21
20
  export default class AppCurrencyInput extends SvelteComponentTyped<AppCurrencyInputProps, AppCurrencyInputEvents, AppCurrencyInputSlots> {
22
- get staticOutputs(): string[];
23
21
  }
24
22
  export {};
@@ -1,14 +1,11 @@
1
1
  <script>import { getContext } from 'svelte';
2
2
  import SubGridEditor from '../../editor/SubGridEditor.svelte';
3
3
  import { concatCustomCss } from '../../utils';
4
- import InputValue from '../helpers/InputValue.svelte';
5
4
  export let id;
6
5
  export let configuration;
7
6
  export let componentContainerHeight;
8
7
  export let customCss = undefined;
9
8
  export let render;
10
- let noPadding = undefined;
11
- export const staticOutputs = [];
12
9
  const { app, focusedGrid, selectedComponent } = getContext('AppViewerContext');
13
10
  function onFocus() {
14
11
  $focusedGrid = {
@@ -20,13 +17,10 @@ $: $selectedComponent === id && onFocus();
20
17
  $: css = concatCustomCss($app.css?.containercomponent, customCss);
21
18
  </script>
22
19
 
23
- <InputValue {id} input={configuration.noPadding} bind:value={noPadding} />
24
-
25
- <div>
20
+ <div class="w-full h-full">
26
21
  {#if $app.subgrids?.[`${id}-0`]}
27
22
  <SubGridEditor
28
23
  visible={render}
29
- {noPadding}
30
24
  {id}
31
25
  class={css?.container.class}
32
26
  style={css?.container.style}
@@ -8,7 +8,6 @@ declare const __propDef: {
8
8
  componentContainerHeight: number;
9
9
  customCss?: ComponentCustomCSS<'container'> | undefined;
10
10
  render: boolean;
11
- staticOutputs?: string[] | undefined;
12
11
  };
13
12
  events: {
14
13
  [evt: string]: CustomEvent<any>;
@@ -19,6 +18,5 @@ export type AppContainerProps = typeof __propDef.props;
19
18
  export type AppContainerEvents = typeof __propDef.events;
20
19
  export type AppContainerSlots = typeof __propDef.slots;
21
20
  export default class AppContainer extends SvelteComponentTyped<AppContainerProps, AppContainerEvents, AppContainerSlots> {
22
- get staticOutputs(): string[];
23
21
  }
24
22
  export {};
@@ -15,7 +15,6 @@ export let noWFull = false;
15
15
  export let render;
16
16
  const { app, focusedGrid, selectedComponent } = getContext('AppViewerContext');
17
17
  let gridContent = undefined;
18
- let noPadding = undefined;
19
18
  let drawerTitle = undefined;
20
19
  let appDrawer;
21
20
  let labelValue;
@@ -54,7 +53,6 @@ $: css = concatCustomCss($app.css?.containercomponent, customCss);
54
53
  </div>
55
54
 
56
55
  <InputValue {id} input={configuration.gridContent} bind:value={gridContent} />
57
- <InputValue {id} input={configuration.noPadding} bind:value={noPadding} />
58
56
  <InputValue {id} input={configuration.drawerTitle} bind:value={drawerTitle} />
59
57
  <InputValue {id} input={configuration.label} bind:value={labelValue} />
60
58
  <InputValue {id} input={configuration.color} bind:value={color} />
@@ -73,7 +71,6 @@ $: css = concatCustomCss($app.css?.containercomponent, customCss);
73
71
  {#if $app.subgrids?.[`${id}-0`]}
74
72
  <SubGridEditor
75
73
  visible={open && render}
76
- {noPadding}
77
74
  {id}
78
75
  class={css?.container.class}
79
76
  style={css?.container.style}
@@ -11,9 +11,7 @@ export let customCss = undefined;
11
11
  export let horizontal = false;
12
12
  export let panes;
13
13
  export let render;
14
- const { app, focusedGrid, selectedComponent } = getContext('AppViewerContext');
15
- const { componentControl } = getContext('AppEditorContext');
16
- let noPadding = undefined;
14
+ const { app, focusedGrid, selectedComponent, componentControl } = getContext('AppViewerContext');
17
15
  function onFocus() {
18
16
  $focusedGrid = {
19
17
  parentComponentId: id,
@@ -54,8 +52,6 @@ $: {
54
52
  }
55
53
  </script>
56
54
 
57
- <InputValue {id} input={configuration.noPadding} bind:value={noPadding} />
58
-
59
55
  <div class="h-full w-full border" on:pointerdown|stopPropagation>
60
56
  <Splitpanes {horizontal}>
61
57
  {#each sumedup as paneSize, index (index)}
@@ -64,7 +60,6 @@ $: {
64
60
  <SubGridEditor
65
61
  visible={render}
66
62
  noYPadding
67
- {noPadding}
68
63
  {id}
69
64
  shouldHighlight={$focusedGrid?.subGridIndex === index}
70
65
  class={css?.container.class}
@@ -1,5 +1,6 @@
1
1
  <script>import { Tab, Tabs } from '../../../common';
2
2
  import { getContext, onMount } from 'svelte';
3
+ import { initOutput } from '../../editor/appUtils';
3
4
  import SubGridEditor from '../../editor/SubGridEditor.svelte';
4
5
  import { concatCustomCss } from '../../utils';
5
6
  import InputValue from '../helpers/InputValue.svelte';
@@ -9,12 +10,14 @@ export let componentContainerHeight;
9
10
  export let tabs;
10
11
  export let customCss = undefined;
11
12
  export let render;
12
- export const staticOutputs = ['selectedTabIndex'];
13
- const { app, worldStore, focusedGrid, selectedComponent } = getContext('AppViewerContext');
14
- const { componentControl } = getContext('AppEditorContext');
13
+ export let initializing = configuration.tabsKind != undefined;
14
+ const { app, worldStore, focusedGrid, selectedComponent, mode, componentControl } = getContext('AppViewerContext');
15
15
  let selected = tabs[0];
16
- let noPadding = undefined;
16
+ let kind = undefined;
17
17
  let tabHeight = 0;
18
+ let outputs = initOutput($worldStore, id, {
19
+ selectedTabIndex: 0
20
+ });
18
21
  function handleTabSelection() {
19
22
  const selectedIndex = tabs?.indexOf(selected);
20
23
  outputs?.selectedTabIndex.set(selectedIndex, true);
@@ -54,46 +57,71 @@ $componentControl[id] = {
54
57
  return true;
55
58
  }
56
59
  return false;
60
+ },
61
+ setTab: (tab) => {
62
+ selected = tabs[tab];
57
63
  }
58
64
  };
59
65
  $: selected && handleTabSelection();
60
- $: outputs = $worldStore?.outputsById[id];
61
66
  $: selectedIndex = tabs?.indexOf(selected) ?? -1;
62
67
  $: css = concatCustomCss($app.css?.tabscomponent, customCss);
68
+ let subgridWidth = undefined;
63
69
  </script>
64
70
 
65
- <InputValue {id} input={configuration.noPadding} bind:value={noPadding} />
71
+ <InputValue
72
+ on:done={() => initializing && (initializing = false)}
73
+ {id}
74
+ input={configuration.tabsKind}
75
+ bind:value={kind}
76
+ />
66
77
 
67
- <div>
68
- <div bind:clientHeight={tabHeight} on:pointerdown|stopPropagation>
69
- <Tabs bind:selected class={css?.tabRow?.class} style={css?.tabRow?.style}>
78
+ <div class={kind == 'sidebar' ? 'flex gap-4 w-full' : 'w-full'}>
79
+ {#if !kind || kind == 'tabs' || (kind == 'invisibleOnView' && $mode == 'dnd')}
80
+ <div bind:clientHeight={tabHeight}>
81
+ <Tabs bind:selected class={css?.tabRow?.class} style={css?.tabRow?.style}>
82
+ {#each tabs ?? [] as res}
83
+ <Tab
84
+ value={res}
85
+ class={css?.tabs?.class}
86
+ style={css?.tabs?.style}
87
+ selectedClass={css?.selectedTab?.class}
88
+ selectedStyle={css?.selectedTab?.style}
89
+ >
90
+ <span class="font-semibold">{res}</span>
91
+ </Tab>
92
+ {/each}
93
+ </Tabs>
94
+ </div>
95
+ {:else if kind == 'sidebar'}
96
+ <div
97
+ class="flex gap-y-2 flex-col w-1/6 max-w-[160px] bg-white text-[#2e3440] opacity-80 px-4 pt-4 border-r border-gray-400"
98
+ >
70
99
  {#each tabs ?? [] as res}
71
- <Tab
72
- value={res}
73
- class={css?.tabs?.class}
74
- style={css?.tabs?.style}
75
- selectedClass={css?.selectedTab?.class}
76
- selectedStyle={css?.selectedTab?.style}
100
+ <button
101
+ class="rounded-sm !truncate text-sm hover:bg-gray-100 hover:border hover:text-black px-1 py-2 {selected ==
102
+ res
103
+ ? 'outline outline-gray-500 outline-1 bg-white text-black'
104
+ : ''}"
105
+ on:pointerdown|stopPropagation
106
+ on:click={() => (selected = res)}>{res}</button
77
107
  >
78
- <span class="font-semibold">{res}</span>
79
- </Tab>
80
108
  {/each}
81
- </Tabs>
82
- </div>
83
- {#if $app.subgrids}
84
- {#each tabs ?? [] as res, i}
85
- <SubGridEditor
86
- {id}
87
- visible={render && i === selectedIndex}
88
- bind:subGrid={$app.subgrids[`${id}-${i}`]}
89
- {noPadding}
90
- class={css?.container?.class}
91
- style={css?.container?.style}
92
- containerHeight={componentContainerHeight - tabHeight}
93
- on:focus={() => {
94
- $selectedComponent = id
95
- }}
96
- />
97
- {/each}
109
+ </div>
98
110
  {/if}
111
+
112
+ <div bind:clientWidth={subgridWidth} class="w-full">
113
+ {#if $app.subgrids}
114
+ {#each tabs ?? [] as res, i}<SubGridEditor
115
+ {id}
116
+ visible={render && i === selectedIndex}
117
+ bind:subGrid={$app.subgrids[`${id}-${i}`]}
118
+ class={css?.container?.class}
119
+ style={css?.container?.style}
120
+ containerHeight={componentContainerHeight - tabHeight}
121
+ on:focus={() => {
122
+ $selectedComponent = id
123
+ }}
124
+ />{/each}
125
+ {/if}
126
+ </div>
99
127
  </div>
@@ -9,7 +9,7 @@ declare const __propDef: {
9
9
  tabs: string[];
10
10
  customCss?: ComponentCustomCSS<'tabRow' | 'tabs' | 'selectedTab' | 'container'> | undefined;
11
11
  render: boolean;
12
- staticOutputs?: string[] | undefined;
12
+ initializing?: boolean | undefined;
13
13
  };
14
14
  events: {
15
15
  pointerdown: PointerEvent;
@@ -22,6 +22,5 @@ export type AppTabsProps = typeof __propDef.props;
22
22
  export type AppTabsEvents = typeof __propDef.events;
23
23
  export type AppTabsSlots = typeof __propDef.slots;
24
24
  export default class AppTabs extends SvelteComponentTyped<AppTabsProps, AppTabsEvents, AppTabsSlots> {
25
- get staticOutputs(): string[];
26
25
  }
27
26
  export {};
@@ -25,7 +25,8 @@ export let resourceOnly = false;
25
25
  id={component.id}
26
26
  shouldCapitalize={false}
27
27
  bind:inputSpecs={component.componentInput.fields}
28
- userInputEnabled={component.type !== 'buttoncomponent'}
28
+ userInputEnabled={component.type === 'formcomponent' ||
29
+ component.type === 'formbuttoncomponent'}
29
30
  {resourceOnly}
30
31
  />
31
32
  {/if}
@@ -33,8 +33,6 @@ export let policy;
33
33
  export let summary;
34
34
  export let fromHub = false;
35
35
  const appStore = writable(app);
36
- const worldStore = writable(undefined);
37
- const staticOutputs = writable({});
38
36
  const selectedComponent = writable(undefined);
39
37
  const mode = writable(initialMode);
40
38
  const breakpoint = writable('lg');
@@ -49,9 +47,14 @@ const runnableComponents = writable({});
49
47
  const errorByComponent = writable({});
50
48
  const focusedGrid = writable(undefined);
51
49
  const pickVariableCallback = writable(undefined);
50
+ let context = {
51
+ email: $userStore?.email,
52
+ username: $userStore?.username,
53
+ query: Object.fromEntries($page.url.searchParams.entries()),
54
+ hash: $page.url.hash
55
+ };
52
56
  setContext('AppViewerContext', {
53
- worldStore,
54
- staticOutputs,
57
+ worldStore: buildWorld(context),
55
58
  app: appStore,
56
59
  summary: summaryStore,
57
60
  selectedComponent,
@@ -70,12 +73,14 @@ setContext('AppViewerContext', {
70
73
  openDebugRun: writable(undefined),
71
74
  focusedGrid,
72
75
  stateId: writable(0),
73
- parentWidth: writable(0)
76
+ parentWidth: writable(0),
77
+ state: writable({}),
78
+ componentControl: writable({})
74
79
  });
75
80
  setContext('AppEditorContext', {
76
81
  history,
77
- componentControl: writable({}),
78
- pickVariableCallback
82
+ pickVariableCallback,
83
+ ontextfocus: writable(undefined)
79
84
  });
80
85
  let timeout = undefined;
81
86
  $: $appStore && saveDraft();
@@ -94,17 +99,10 @@ let mounted = false;
94
99
  onMount(() => {
95
100
  mounted = true;
96
101
  });
97
- let context = {
98
- email: $userStore?.email,
99
- username: $userStore?.username,
100
- query: Object.fromEntries($page.url.searchParams.entries()),
101
- hash: $page.url.hash
102
- };
103
102
  function hashchange(e) {
104
103
  context.hash = e.newURL.split('#')[1];
105
104
  context = context;
106
105
  }
107
- $: mounted && ($worldStore = buildWorld($staticOutputs, $worldStore, context));
108
106
  $: previewing = $mode === 'preview';
109
107
  $: width = $breakpoint === 'sm' ? 'min-w-[400px] max-w-[656px]' : 'min-w-[710px] w-full';
110
108
  let selectedTab = 'insert';
@@ -129,144 +127,148 @@ let variableEditor = undefined;
129
127
  />
130
128
  {/if}
131
129
  {#if !$userStore?.operator}
132
- {#if initialMode !== 'preview'}
133
- <AppEditorHeader {policy} {fromHub} />
134
- {/if}
130
+ {#if $appStore}
131
+ {#if initialMode !== 'preview'}
132
+ <AppEditorHeader {policy} {fromHub} />
133
+ {/if}
135
134
 
136
- {#if previewing}
137
- <SplitPanesWrapper>
138
- <div
139
- class={twMerge('h-full w-full', $appStore.css?.['app']?.['viewer']?.class)}
140
- style={$appStore.css?.['app']?.['viewer']?.style}
141
- >
142
- <AppPreview
143
- workspace={$workspaceStore ?? ''}
144
- summary={$summaryStore}
145
- app={$appStore}
146
- appPath={path}
147
- {breakpoint}
148
- {policy}
149
- isEditor
150
- {context}
151
- noBackend={false}
152
- />
153
- </div>
154
- </SplitPanesWrapper>
155
- {:else}
156
- <SplitPanesWrapper>
157
- <Splitpanes class="max-w-full overflow-hidden">
158
- <Pane size={$connectingInput?.opened ? 40 : 15} minSize={5} maxSize={33}>
159
- <ContextPanel />
160
- </Pane>
161
- <Pane size={64}>
162
- <SplitPanesWrapper>
163
- <Splitpanes horizontal>
164
- <Pane size={$connectingInput?.opened ? 100 : 70}>
165
- <div
166
- on:pointerdown={(e) => {
167
- $selectedComponent = undefined
168
- $focusedGrid = undefined
169
- }}
170
- class={twMerge(
171
- 'bg-gray-100 h-full w-full',
172
- $appStore.css?.['app']?.['viewer']?.class
173
- )}
174
- style={$appStore.css?.['app']?.['viewer']?.style}
175
- >
135
+ {#if previewing}
136
+ <SplitPanesWrapper>
137
+ <div
138
+ class={twMerge('h-full w-full', $appStore.css?.['app']?.['viewer']?.class)}
139
+ style={$appStore.css?.['app']?.['viewer']?.style}
140
+ >
141
+ <AppPreview
142
+ workspace={$workspaceStore ?? ''}
143
+ summary={$summaryStore}
144
+ app={$appStore}
145
+ appPath={path}
146
+ {breakpoint}
147
+ {policy}
148
+ isEditor
149
+ {context}
150
+ noBackend={false}
151
+ />
152
+ </div>
153
+ </SplitPanesWrapper>
154
+ {:else}
155
+ <SplitPanesWrapper>
156
+ <Splitpanes class="max-w-full overflow-hidden">
157
+ <Pane size={15} minSize={5} maxSize={33}>
158
+ <ContextPanel />
159
+ </Pane>
160
+ <Pane size={64}>
161
+ <SplitPanesWrapper>
162
+ <Splitpanes horizontal>
163
+ <Pane size={70}>
176
164
  <div
177
- class={classNames(
178
- 'relative mx-auto w-full h-full overflow-auto',
179
- app.fullscreen ? '' : 'max-w-6xl'
165
+ on:pointerdown={(e) => {
166
+ $selectedComponent = undefined
167
+ $focusedGrid = undefined
168
+ }}
169
+ class={twMerge(
170
+ 'bg-gray-100 h-full w-full',
171
+ $appStore.css?.['app']?.['viewer']?.class
180
172
  )}
173
+ style={$appStore.css?.['app']?.['viewer']?.style}
181
174
  >
182
- {#if $appStore.grid}
183
- <ComponentNavigation />
175
+ <div
176
+ class={classNames(
177
+ 'relative mx-auto w-full h-full overflow-auto',
178
+ app.fullscreen ? '' : 'max-w-6xl'
179
+ )}
180
+ >
181
+ {#if $appStore.grid}
182
+ <ComponentNavigation />
184
183
 
185
- <div on:pointerdown|stopPropagation class={width}>
186
- <GridEditor {policy} />
187
- </div>
184
+ <div on:pointerdown|stopPropagation class={width}>
185
+ <GridEditor {policy} />
186
+ </div>
188
187
 
189
- <div id="app-editor-top-level-drawer" />
190
- {/if}
188
+ <div id="app-editor-top-level-drawer" />
189
+ {/if}
190
+ </div>
191
191
  </div>
192
+ </Pane>
193
+ <Pane size={$connectingInput?.opened ? 0 : 30}>
194
+ <div class="relative h-full w-full">
195
+ <InlineScriptsPanel />
196
+ </div>
197
+ </Pane>
198
+ </Splitpanes>
199
+ </SplitPanesWrapper>
200
+ </Pane>
201
+ <Pane size={21} minSize={5} maxSize={33}>
202
+ <div class="relative flex flex-col h-full">
203
+ <Tabs bind:selected={selectedTab} wrapperClass="!h-[40px]" class="!h-full">
204
+ <Tab value="insert" size="xs">
205
+ <div class="m-1 center-center gap-2">
206
+ <Icon data={faPlus} />
207
+ <span>Insert</span>
208
+ </div>
209
+ </Tab>
210
+ <Tab value="settings" size="xs">
211
+ <div class="m-1 center-center gap-2">
212
+ <Icon data={faSliders} />
213
+ <span>Settings</span>
214
+ </div>
215
+ </Tab>
216
+ <Tab value="css" size="xs">
217
+ <div class="m-1 center-center gap-2">
218
+ <Icon data={faCode} />
219
+ <span>CSS</span>
220
+ </div>
221
+ </Tab>
222
+ <div slot="content" class="h-full overflow-y-auto pb-4">
223
+ <TabContent class="overflow-auto h-full" value="settings">
224
+ {#if $selectedComponent !== undefined}
225
+ <SettingsPanel />
226
+ {:else}
227
+ <div class="min-w-[150px] text-sm text-gray-500 text-center py-8 px-2">
228
+ Select a component to see the settings&nbsp;for&nbsp;it
229
+ </div>
230
+ {/if}
231
+ </TabContent>
232
+ <TabContent value="insert">
233
+ <ComponentList />
234
+ </TabContent>
235
+ <TabContent value="css">
236
+ <CssSettings />
237
+ </TabContent>
192
238
  </div>
193
- </Pane>
194
- <Pane size={$connectingInput?.opened ? 0 : 30}>
195
- <div class="relative h-full w-full">
196
- <InlineScriptsPanel />
197
- </div>
198
- </Pane>
199
- </Splitpanes>
200
- </SplitPanesWrapper>
201
- </Pane>
202
- <Pane size={21} minSize={5} maxSize={33}>
203
- <div class="relative flex flex-col h-full">
204
- <Tabs bind:selected={selectedTab} wrapperClass="!h-[40px]" class="!h-full">
205
- <Tab value="insert" size="xs">
206
- <div class="m-1 center-center gap-2">
207
- <Icon data={faPlus} />
208
- <span>Insert</span>
209
- </div>
210
- </Tab>
211
- <Tab value="settings" size="xs">
212
- <div class="m-1 center-center gap-2">
213
- <Icon data={faSliders} />
214
- <span>Settings</span>
215
- </div>
216
- </Tab>
217
- <Tab value="css" size="xs">
218
- <div class="m-1 center-center gap-2">
219
- <Icon data={faCode} />
220
- <span>CSS</span>
221
- </div>
222
- </Tab>
223
- <div slot="content" class="h-full overflow-y-auto pb-4">
224
- <TabContent class="overflow-auto" value="settings">
225
- {#if $selectedComponent !== undefined}
226
- <SettingsPanel />
227
- {:else}
228
- <div class="min-w-[150px] text-sm text-gray-500 text-center py-8 px-2">
229
- Select a component to see the settings&nbsp;for&nbsp;it
230
- </div>
231
- {/if}
232
- </TabContent>
233
- <TabContent value="insert">
234
- <ComponentList />
235
- </TabContent>
236
- <TabContent value="css">
237
- <CssSettings />
238
- </TabContent>
239
- </div>
240
- </Tabs>
241
- {#if $connectingInput.opened}
242
- <div
243
- class="fixed top-32 p-2 z-50 flex justify-center items-center"
244
- transition:fly|local={{ duration: 100, y: -100 }}
245
- >
246
- <Alert title="Connecting" type="info">
247
- <div class="flex gap-2 flex-col">
248
- Click on the output of the component you want to connect to on the left panel.
249
- <div>
250
- <Button
251
- color="blue"
252
- variant="border"
253
- size="xs"
254
- on:click={() => {
255
- $connectingInput.opened = false
256
- $connectingInput.input = undefined
257
- }}
258
- >
259
- Stop connecting
260
- </Button>
239
+ </Tabs>
240
+ {#if $connectingInput.opened}
241
+ <div
242
+ class="fixed top-32 p-2 z-50 flex justify-center items-center"
243
+ transition:fly|local={{ duration: 100, y: -100 }}
244
+ >
245
+ <Alert title="Connecting" type="info">
246
+ <div class="flex gap-2 flex-col">
247
+ Click on the output of the component you want to connect to on the left panel.
248
+ <div>
249
+ <Button
250
+ color="blue"
251
+ variant="border"
252
+ size="xs"
253
+ on:click={() => {
254
+ $connectingInput.opened = false
255
+ $connectingInput.input = undefined
256
+ }}
257
+ >
258
+ Stop connecting
259
+ </Button>
260
+ </div>
261
261
  </div>
262
- </div>
263
- </Alert>
264
- </div>
265
- {/if}
266
- </div>
267
- </Pane>
268
- </Splitpanes>
269
- </SplitPanesWrapper>
262
+ </Alert>
263
+ </div>
264
+ {/if}
265
+ </div>
266
+ </Pane>
267
+ </Splitpanes>
268
+ </SplitPanesWrapper>
269
+ {/if}
270
+ {:else}
271
+ App is null
270
272
  {/if}
271
273
  {:else}
272
274
  App editor not available to operators