windmill-components 1.383.9 → 1.389.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (189) hide show
  1. package/package/assets/app.css +25 -1
  2. package/package/components/ArgInput.svelte +2 -1
  3. package/package/components/ChangeInstanceUsername.svelte +9 -108
  4. package/package/components/ChangeInstanceUsernameInner.svelte +112 -0
  5. package/package/components/ChangeInstanceUsernameInner.svelte.d.ts +21 -0
  6. package/package/components/DiffDrawer.svelte +27 -20
  7. package/package/components/DiffEditor.svelte +5 -1
  8. package/package/components/DisplayResult.svelte +39 -9
  9. package/package/components/DropdownV2.svelte +4 -26
  10. package/package/components/DropdownV2.svelte.d.ts +9 -1
  11. package/package/components/DropdownV2Inner.svelte +42 -0
  12. package/package/components/DropdownV2Inner.svelte.d.ts +40 -0
  13. package/package/components/Editor.svelte +24 -4
  14. package/package/components/Editor.svelte.d.ts +5 -4
  15. package/package/components/EditorBar.svelte +9 -11
  16. package/package/components/EditorSettings.svelte +44 -0
  17. package/package/components/EditorSettings.svelte.d.ts +17 -0
  18. package/package/components/EditorTheme.svelte +1 -1
  19. package/package/components/ErrorOrRecoveryHandler.svelte +27 -20
  20. package/package/components/FlowBuilder.svelte +17 -3
  21. package/package/components/FlowBuilder.svelte.d.ts +3 -0
  22. package/package/components/FlowGraphViewerStep.svelte +1 -1
  23. package/package/components/FlowStatusViewer.svelte +3 -1
  24. package/package/components/FlowStatusViewer.svelte.d.ts +1 -0
  25. package/package/components/FlowStatusViewerInner.svelte +5 -2
  26. package/package/components/FlowViewerInner.svelte +3 -7
  27. package/package/components/FormatOnSave.svelte +12 -29
  28. package/package/components/GraphqlSchemaViewer.svelte +1 -1
  29. package/package/components/GraphqlSchemaViewer.svelte.d.ts +1 -1
  30. package/package/components/HighlightCode.svelte +3 -0
  31. package/package/components/InstanceNameEditor.svelte +64 -0
  32. package/package/components/InstanceNameEditor.svelte.d.ts +23 -0
  33. package/package/components/LightweightArgInput.svelte +6 -11
  34. package/package/components/LogViewer.svelte +37 -29
  35. package/package/components/LogViewer.svelte.d.ts +2 -0
  36. package/package/components/ObjectResourceInput.svelte +1 -1
  37. package/package/components/ObjectResourceInput.svelte.d.ts +1 -0
  38. package/package/components/Path.svelte +3 -3
  39. package/package/components/QueueMetricsDrawer.svelte +6 -218
  40. package/package/components/QueueMetricsDrawer.svelte.d.ts +2 -3
  41. package/package/components/QueueMetricsDrawerInner.svelte +211 -0
  42. package/package/components/QueueMetricsDrawerInner.svelte.d.ts +15 -0
  43. package/package/components/ResourceEditorDrawer.svelte +14 -11
  44. package/package/components/ResourceEditorDrawer.svelte.d.ts +1 -1
  45. package/package/components/ResultJobLoader.svelte.d.ts +1 -1
  46. package/package/components/S3FilePicker.svelte +20 -8
  47. package/package/components/ScheduleEditorInner.svelte +497 -469
  48. package/package/components/ScriptBuilder.svelte +37 -24
  49. package/package/components/ScriptBuilder.svelte.d.ts +3 -0
  50. package/package/components/ScriptEditor.svelte +1 -0
  51. package/package/components/ScriptEditor.svelte.d.ts +2 -1
  52. package/package/components/ServiceLogsInner.svelte +511 -0
  53. package/package/components/ServiceLogsInner.svelte.d.ts +20 -0
  54. package/package/components/SimpleEditor.svelte +27 -2
  55. package/package/components/SimpleEditor.svelte.d.ts +5 -3
  56. package/package/components/Summary.svelte +33 -31
  57. package/package/components/Summary.svelte.d.ts +1 -0
  58. package/package/components/SuperadminSettings.svelte +28 -10
  59. package/package/components/TemplateEditor.svelte +1 -1
  60. package/package/components/TestJobLoader.svelte.d.ts +1 -1
  61. package/package/components/VimMode.svelte +16 -0
  62. package/package/components/VimMode.svelte.d.ts +14 -0
  63. package/package/components/WorkerTagPicker.svelte +4 -1
  64. package/package/components/WorkspaceGroup.svelte +139 -68
  65. package/package/components/WorkspaceGroup.svelte.d.ts +3 -0
  66. package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte +19 -2
  67. package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte +1 -0
  68. package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte.d.ts +2 -1
  69. package/package/components/apps/components/display/table/AppAggridInfiniteTableEe.svelte +2 -0
  70. package/package/components/apps/components/display/table/AppAggridInfiniteTableEe.svelte.d.ts +2 -1
  71. package/package/components/apps/components/display/table/AppAggridTable.svelte +45 -3
  72. package/package/components/apps/components/display/table/AppAggridTable.svelte.d.ts +2 -1
  73. package/package/components/apps/components/display/table/AppAggridTableEe.svelte +2 -0
  74. package/package/components/apps/components/display/table/AppAggridTableEe.svelte.d.ts +2 -1
  75. package/package/components/apps/editor/AppEditor.svelte +239 -92
  76. package/package/components/apps/editor/AppEditorBottomPanel.svelte +22 -0
  77. package/package/components/apps/editor/AppEditorBottomPanel.svelte.d.ts +24 -0
  78. package/package/components/apps/editor/AppEditorHeader.svelte +44 -2
  79. package/package/components/apps/editor/AppEditorHeader.svelte.d.ts +9 -0
  80. package/package/components/apps/editor/AppExportButton.svelte +1 -1
  81. package/package/components/apps/editor/AppPreview.svelte +4 -0
  82. package/package/components/apps/editor/DeploymentHistory.svelte +7 -3
  83. package/package/components/apps/editor/GridEditor.svelte +4 -13
  84. package/package/components/apps/editor/RunnableJobPanel.svelte +25 -58
  85. package/package/components/apps/editor/RunnableJobPanel.svelte.d.ts +10 -1
  86. package/package/components/apps/editor/RunnalbeJobPanelInner.svelte +56 -0
  87. package/package/components/apps/editor/RunnalbeJobPanelInner.svelte.d.ts +18 -0
  88. package/package/components/apps/editor/SubGridEditor.svelte +3 -1
  89. package/package/components/apps/editor/component/Component.svelte +26 -4
  90. package/package/components/apps/editor/component/Component.svelte.d.ts +1 -0
  91. package/package/components/apps/editor/component/components.d.ts +5 -0
  92. package/package/components/apps/editor/componentsPanel/CssProperty.svelte +2 -0
  93. package/package/components/apps/editor/componentsPanel/tailwindUtils.js +267 -1
  94. package/package/components/apps/editor/contextPanel/ContextPanel.svelte +9 -1
  95. package/package/components/apps/editor/contextPanel/ContextPanel.svelte.d.ts +2 -0
  96. package/package/components/apps/editor/inlineScriptsPanel/CacheTtlPopup.svelte +1 -0
  97. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +3 -0
  98. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanel.svelte +7 -2
  99. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanel.svelte.d.ts +5 -1
  100. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte +14 -2
  101. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte.d.ts +1 -0
  102. package/package/components/apps/editor/settingsPanel/ComponentPanel.svelte +25 -5
  103. package/package/components/apps/editor/settingsPanel/HideButton.svelte +47 -0
  104. package/package/components/apps/editor/settingsPanel/HideButton.svelte.d.ts +22 -0
  105. package/package/components/apps/editor/settingsPanel/TableActions.svelte +43 -4
  106. package/package/components/apps/editor/settingsPanel/TableActions.svelte.d.ts +2 -1
  107. package/package/components/apps/svelte-grid/Grid.svelte +6 -2
  108. package/package/components/apps/svelte-grid/Grid.svelte.d.ts +1 -0
  109. package/package/components/apps/svelte-grid/MoveResize.svelte +11 -3
  110. package/package/components/apps/svelte-grid/MoveResize.svelte.d.ts +1 -0
  111. package/package/components/apps/svelte-grid/utils/item.d.ts +4 -1
  112. package/package/components/apps/svelte-grid/utils/item.js +11 -4
  113. package/package/components/common/button/Button.svelte.d.ts +2 -2
  114. package/package/components/common/calendarPicker/CalendarPicker.svelte +6 -2
  115. package/package/components/common/calendarPicker/CalendarPicker.svelte.d.ts +2 -0
  116. package/package/components/common/drawer/ConditionalPortal.svelte +2 -1
  117. package/package/components/common/drawer/ConditionalPortal.svelte.d.ts +1 -0
  118. package/package/components/common/languageIcons/LanguageIcon.svelte +5 -2
  119. package/package/components/common/popup/Popup.svelte +2 -1
  120. package/package/components/common/popup/Popup.svelte.d.ts +1 -0
  121. package/package/components/common/table/AppRow.svelte +11 -8
  122. package/package/components/common/table/AppRow.svelte.d.ts +1 -2
  123. package/package/components/common/table/FlowRow.svelte +3 -3
  124. package/package/components/common/table/FlowRow.svelte.d.ts +1 -2
  125. package/package/components/common/table/RawAppRow.svelte +3 -3
  126. package/package/components/common/table/RawAppRow.svelte.d.ts +1 -2
  127. package/package/components/common/table/ScriptRow.svelte +3 -3
  128. package/package/components/common/table/ScriptRow.svelte.d.ts +1 -2
  129. package/package/components/copilot/CodeCompletionStatus.svelte +21 -46
  130. package/package/components/copilot/StepGen.svelte +2 -1
  131. package/package/components/custom_ui.d.ts +5 -1
  132. package/package/components/flows/CreateActionsApp.svelte +11 -8
  133. package/package/components/flows/CreateActionsFlow.svelte +11 -8
  134. package/package/components/flows/FlowEditor.svelte +1 -2
  135. package/package/components/flows/FlowEditor.svelte.d.ts +0 -1
  136. package/package/components/flows/FlowHistory.svelte +6 -3
  137. package/package/components/flows/content/FlowModuleScript.svelte +15 -11
  138. package/package/components/flows/content/FlowSettings.svelte +1 -4
  139. package/package/components/flows/content/ScriptEditorDrawer.svelte +3 -0
  140. package/package/components/flows/header/FlowYamlEditor.svelte +55 -0
  141. package/package/components/flows/header/FlowYamlEditor.svelte.d.ts +17 -0
  142. package/package/components/flows/map/InsertTriggerButton.svelte +1 -1
  143. package/package/components/flows/map/InsertTriggerButton.svelte.d.ts +1 -0
  144. package/package/components/flows/map/VirtualItem.svelte +1 -1
  145. package/package/components/flows/pickers/PickHubScript.svelte +1 -0
  146. package/package/components/flows/types.d.ts +7 -6
  147. package/package/components/flows/utils.d.ts +9 -0
  148. package/package/components/flows/utils.js +21 -0
  149. package/package/components/graph/graphBuilder.js +1 -0
  150. package/package/components/graph/model.d.ts +1 -0
  151. package/package/components/graph/renderers/edges/BaseEdge.svelte +16 -0
  152. package/package/components/graph/renderers/nodes/BranchOneStart.svelte +1 -1
  153. package/package/components/graph/renderers/nodes/NoBranchNode.svelte +5 -1
  154. package/package/components/graph/renderers/nodes/NoBranchNode.svelte.d.ts +1 -0
  155. package/package/components/home/Item.svelte +0 -17
  156. package/package/components/home/deploy_ui.d.ts +2 -0
  157. package/package/components/home/deploy_ui.js +21 -0
  158. package/package/components/icons/RustIcon.svelte +70 -0
  159. package/package/components/icons/RustIcon.svelte.d.ts +25 -0
  160. package/package/components/icons/rust-logo.svg +1 -0
  161. package/package/components/instanceSettings.js +2 -2
  162. package/package/components/monaco_keybindings.d.ts +3 -0
  163. package/package/components/monaco_keybindings.js +9 -0
  164. package/package/components/preview/FlowPreviewStatus.svelte +6 -2
  165. package/package/components/runs/JobLoader.svelte +12 -3
  166. package/package/components/runs/JobLoader.svelte.d.ts +1 -1
  167. package/package/components/runs/ManuelDatePicker.svelte +31 -44
  168. package/package/components/runs/ManuelDatePicker.svelte.d.ts +6 -2
  169. package/package/components/runs/RunsFilter.svelte +4 -1
  170. package/package/components/runs/RunsFilter.svelte.d.ts +1 -0
  171. package/package/components/search/GlobalSearchModal.svelte +36 -25
  172. package/package/components/wizards/TableActionsWizard.svelte +84 -0
  173. package/package/components/wizards/TableActionsWizard.svelte.d.ts +22 -0
  174. package/package/editorUtils.js +2 -0
  175. package/package/gen/core/OpenAPI.js +1 -1
  176. package/package/gen/schemas.gen.d.ts +8 -8
  177. package/package/gen/schemas.gen.js +8 -8
  178. package/package/gen/services.gen.d.ts +4 -0
  179. package/package/gen/services.gen.js +16 -0
  180. package/package/gen/types.gen.d.ts +20 -8
  181. package/package/infer.d.ts +1 -1
  182. package/package/infer.js +48 -7
  183. package/package/script_helpers.d.ts +1 -0
  184. package/package/script_helpers.js +39 -1
  185. package/package/scripts.d.ts +1 -1
  186. package/package/scripts.js +11 -3
  187. package/package/stores.d.ts +5 -1
  188. package/package/stores.js +7 -2
  189. package/package.json +13 -7
@@ -1,6 +1,6 @@
1
1
  import { SvelteComponent } from "svelte";
2
2
  import type { AppInput } from '../../../inputType';
3
- import type { ComponentCustomCSS, RichConfigurations } from '../../../types';
3
+ import type { ComponentCustomCSS, RichConfiguration, RichConfigurations } from '../../../types';
4
4
  import { type TableAction } from '../../../editor/component';
5
5
  import 'ag-grid-community/styles/ag-grid.css';
6
6
  import './theme/windmill-theme.css';
@@ -13,6 +13,7 @@ declare const __propDef: {
13
13
  render: boolean;
14
14
  customCss?: ComponentCustomCSS<'aggridinfinitecomponent'> | undefined;
15
15
  actions?: TableAction[] | undefined;
16
+ actionsOrder?: RichConfiguration | undefined;
16
17
  };
17
18
  events: {
18
19
  [evt: string]: CustomEvent<any>;
@@ -13,6 +13,7 @@ export let initializing = undefined;
13
13
  export let render;
14
14
  export let customCss = undefined;
15
15
  export let actions = [];
16
+ export let actionsOrder = undefined;
16
17
  let loaded = false;
17
18
  async function load() {
18
19
  await import('ag-grid-enterprise');
@@ -32,6 +33,7 @@ load();
32
33
  {render}
33
34
  {customCss}
34
35
  {actions}
36
+ {actionsOrder}
35
37
  />
36
38
  {:else}
37
39
  <Loader2 class="animate-spin" />
@@ -1,6 +1,6 @@
1
1
  import { SvelteComponent } from "svelte";
2
2
  import type { AppInput } from '../../../inputType';
3
- import type { ComponentCustomCSS, RichConfigurations } from '../../../types';
3
+ import type { ComponentCustomCSS, RichConfiguration, RichConfigurations } from '../../../types';
4
4
  import 'ag-grid-community/styles/ag-grid.css';
5
5
  import 'ag-grid-community/styles/ag-theme-alpine.css';
6
6
  import type { TableAction } from '../../../editor/component';
@@ -14,6 +14,7 @@ declare const __propDef: {
14
14
  render: boolean;
15
15
  customCss?: ComponentCustomCSS<'aggridinfinitecomponentee'> | undefined;
16
16
  actions?: TableAction[] | undefined;
17
+ actionsOrder?: RichConfiguration | undefined;
17
18
  };
18
19
  events: {
19
20
  [evt: string]: CustomEvent<any>;
@@ -18,6 +18,7 @@ import AppAggridTableActions from './AppAggridTableActions.svelte';
18
18
  import { cellRendererFactory, defaultCellRenderer } from './utils';
19
19
  import Popover from '../../../../Popover.svelte';
20
20
  import { Button } from '../../../../common';
21
+ import InputValue from '../../helpers/InputValue.svelte';
21
22
  // import 'ag-grid-community/dist/styles/ag-theme-alpine-dark.css'
22
23
  export let id;
23
24
  export let componentInput;
@@ -26,11 +27,12 @@ export let initializing = undefined;
26
27
  export let render;
27
28
  export let customCss = undefined;
28
29
  export let actions = undefined;
30
+ export let actionsOrder = undefined;
29
31
  const context = getContext('AppViewerContext');
30
32
  const contextPanel = getContext('ContextPanel');
31
33
  const iterContext = getContext('ListWrapperContext');
32
34
  const listInputs = getContext('ListInputs');
33
- const { app, worldStore, selectedComponent, componentControl, darkMode } = context;
35
+ const { app, worldStore, selectedComponent, componentControl, darkMode, mode } = context;
34
36
  const rowHeights = {
35
37
  normal: 40,
36
38
  compact: 30,
@@ -139,6 +141,19 @@ function refreshActions(actions) {
139
141
  }
140
142
  let lastActions = undefined;
141
143
  $: actions && refreshActions(actions);
144
+ let lastActionsOrder = undefined;
145
+ $: computedOrder && refreshActionsOrder(computedOrder);
146
+ function clearActionOrder() {
147
+ computedOrder = undefined;
148
+ updateOptions();
149
+ }
150
+ $: computedOrder && computedOrder.length > 0 && actionsOrder === undefined && clearActionOrder();
151
+ function refreshActionsOrder(actionsOrder) {
152
+ if (Array.isArray(actionsOrder) && !deepEqual(actionsOrder, lastActionsOrder)) {
153
+ lastActionsOrder = [...actionsOrder];
154
+ updateOptions();
155
+ }
156
+ }
142
157
  let inputs = {};
143
158
  const tableActionsFactory = cellRendererFactory((c, p) => {
144
159
  const rowIndex = p.node.rowIndex ?? 0;
@@ -147,12 +162,17 @@ const tableActionsFactory = cellRendererFactory((c, p) => {
147
162
  ['AppViewerContext', context],
148
163
  ['ContextPanel', contextPanel]
149
164
  ]);
165
+ const sortedActions = computedOrder
166
+ ? computedOrder
167
+ .map((key) => actions?.find((a) => a.id === key))
168
+ .filter(Boolean)
169
+ : actions;
150
170
  let ta = new AppAggridTableActions({
151
171
  target: c.eGui,
152
172
  props: {
153
173
  p,
154
174
  id: id,
155
- actions,
175
+ actions: sortedActions,
156
176
  rowIndex,
157
177
  row,
158
178
  render,
@@ -381,8 +401,13 @@ function updateOptions() {
381
401
  let loading = false;
382
402
  let refreshCount = 0;
383
403
  let footerRenderCount = 0;
404
+ let computedOrder = undefined;
384
405
  </script>
385
406
 
407
+ {#if actionsOrder}
408
+ <InputValue key="actionsOrder" {id} input={actionsOrder} bind:value={computedOrder} />
409
+ {/if}
410
+
386
411
  {#each Object.keys(components['aggridcomponent'].initialData.configuration) as key (key)}
387
412
  <ResolveConfig
388
413
  {id}
@@ -440,7 +465,24 @@ let footerRenderCount = 0;
440
465
  >
441
466
  {#key resolvedConfig?.pagination}
442
467
  {#if loaded}
443
- <div bind:this={eGui} style:height="100%" />
468
+ <!-- svelte-ignore a11y-no-static-element-interactions -->
469
+ <div
470
+ bind:this={eGui}
471
+ style:height="100%"
472
+ on:keydown={(e) => {
473
+ if ((e.ctrlKey || e.metaKey) && e.key === 'c' && $mode !== 'dnd') {
474
+ const selectedCell = api?.getFocusedCell()
475
+ if (selectedCell) {
476
+ const rowIndex = selectedCell.rowIndex
477
+ const colId = selectedCell.column?.getId()
478
+ const rowNode = api?.getDisplayedRowAtIndex(rowIndex)
479
+ const selectedValue = rowNode?.data?.[colId]
480
+ navigator.clipboard.writeText(selectedValue)
481
+ sendUserToast('Copied cell value to clipboard', false)
482
+ }
483
+ }
484
+ }}
485
+ />
444
486
  {:else}
445
487
  <Loader2 class="animate-spin" />
446
488
  {/if}
@@ -1,6 +1,6 @@
1
1
  import { SvelteComponent } from "svelte";
2
2
  import type { AppInput } from '../../../inputType';
3
- import type { ComponentCustomCSS, RichConfigurations } from '../../../types';
3
+ import type { ComponentCustomCSS, RichConfiguration, RichConfigurations } from '../../../types';
4
4
  import { type TableAction } from '../../../editor/component';
5
5
  import 'ag-grid-community/styles/ag-grid.css';
6
6
  import './theme/windmill-theme.css';
@@ -13,6 +13,7 @@ declare const __propDef: {
13
13
  render: boolean;
14
14
  customCss?: ComponentCustomCSS<'aggridcomponent'> | undefined;
15
15
  actions?: TableAction[] | undefined;
16
+ actionsOrder?: RichConfiguration | undefined;
16
17
  };
17
18
  events: {
18
19
  [evt: string]: CustomEvent<any>;
@@ -13,6 +13,7 @@ export let initializing = undefined;
13
13
  export let render;
14
14
  export let customCss = undefined;
15
15
  export let actions = [];
16
+ export let actionsOrder = undefined;
16
17
  let loaded = false;
17
18
  async function load() {
18
19
  await import('ag-grid-enterprise');
@@ -32,6 +33,7 @@ load();
32
33
  {render}
33
34
  {customCss}
34
35
  {actions}
36
+ {actionsOrder}
35
37
  />
36
38
  {:else}
37
39
  <Loader2 class="animate-spin" />
@@ -1,6 +1,6 @@
1
1
  import { SvelteComponent } from "svelte";
2
2
  import type { AppInput } from '../../../inputType';
3
- import type { ComponentCustomCSS, RichConfigurations } from '../../../types';
3
+ import type { ComponentCustomCSS, RichConfiguration, RichConfigurations } from '../../../types';
4
4
  import 'ag-grid-community/styles/ag-grid.css';
5
5
  import 'ag-grid-community/styles/ag-theme-alpine.css';
6
6
  import type { TableAction } from '../../../editor/component';
@@ -14,6 +14,7 @@ declare const __propDef: {
14
14
  render: boolean;
15
15
  customCss?: ComponentCustomCSS<'aggridcomponent'> | undefined;
16
16
  actions?: TableAction[] | undefined;
17
+ actionsOrder?: RichConfiguration | undefined;
17
18
  };
18
19
  events: {
19
20
  [evt: string]: CustomEvent<any>;
@@ -14,7 +14,6 @@ import { classNames, encodeState, sendUserToast } from '../../../utils';
14
14
  import AppPreview from './AppPreview.svelte';
15
15
  import ComponentList from './componentsPanel/ComponentList.svelte';
16
16
  import ContextPanel from './contextPanel/ContextPanel.svelte';
17
- import InlineScriptsPanel from './inlineScriptsPanel/InlineScriptsPanel.svelte';
18
17
  import { page } from '$app/stores';
19
18
  import ItemPicker from '../../ItemPicker.svelte';
20
19
  import VariableEditor from '../../VariableEditor.svelte';
@@ -34,6 +33,8 @@ import { getTheme } from './componentsPanel/themeUtils';
34
33
  import StylePanel from './settingsPanel/StylePanel.svelte';
35
34
  import RunnableJobPanel from './RunnableJobPanel.svelte';
36
35
  import { goto, replaceState } from '$app/navigation';
36
+ import HideButton from './settingsPanel/HideButton.svelte';
37
+ import AppEditorBottomPanel from './AppEditorBottomPanel.svelte';
37
38
  export let app;
38
39
  export let path;
39
40
  export let policy;
@@ -238,7 +239,7 @@ function onThemeChange() {
238
239
  let runnablePanelSize = 30;
239
240
  let gridPanelSize = 70;
240
241
  let leftPanelSize = 22;
241
- let centerPanelSize = 63;
242
+ let centerPanelSize = 56;
242
243
  let rightPanelSize = 22;
243
244
  let tmpRunnablePanelSize = -1;
244
245
  let tmpGridPanelSize = -1;
@@ -407,11 +408,96 @@ function setGridPanelSize(x) {
407
408
  }
408
409
  let runnableJobEnterTimeout = undefined;
409
410
  let stillInJobEnter = false;
411
+ let storedLeftPanelSize = 0;
412
+ let storedRightPanelSize = 0;
413
+ let storedBottomPanelSize = 0;
414
+ let centerPanelWidth = 0;
415
+ function hideLeftPanel() {
416
+ storedLeftPanelSize = leftPanelSize;
417
+ leftPanelSize = 0;
418
+ centerPanelSize = centerPanelSize + storedLeftPanelSize;
419
+ }
420
+ function hideRightPanel() {
421
+ storedRightPanelSize = rightPanelSize;
422
+ rightPanelSize = 0;
423
+ centerPanelSize = centerPanelSize + storedRightPanelSize;
424
+ }
425
+ function hideBottomPanel() {
426
+ storedBottomPanelSize = runnablePanelSize;
427
+ gridPanelSize = 99;
428
+ runnablePanelSize = 0;
429
+ }
430
+ function showLeftPanel() {
431
+ leftPanelSize = storedLeftPanelSize;
432
+ centerPanelSize = centerPanelSize - storedLeftPanelSize;
433
+ storedLeftPanelSize = 0;
434
+ }
435
+ function showRightPanel() {
436
+ rightPanelSize = storedRightPanelSize;
437
+ centerPanelSize = centerPanelSize - storedRightPanelSize;
438
+ storedRightPanelSize = 0;
439
+ }
440
+ function showBottomPanel() {
441
+ runnablePanelSize = storedBottomPanelSize;
442
+ gridPanelSize = gridPanelSize - storedBottomPanelSize;
443
+ storedBottomPanelSize = 0;
444
+ }
445
+ function keydown(event) {
446
+ let classes = event.target?.['className'];
447
+ if ((typeof classes === 'string' && classes.includes('inputarea')) ||
448
+ ['INPUT', 'TEXTAREA'].includes(document.activeElement?.tagName)) {
449
+ return;
450
+ }
451
+ switch (event.key) {
452
+ case 'b': {
453
+ if (event.ctrlKey || event.metaKey) {
454
+ event.preventDefault();
455
+ if (leftPanelSize !== 0) {
456
+ hideLeftPanel();
457
+ }
458
+ else {
459
+ showLeftPanel();
460
+ }
461
+ }
462
+ break;
463
+ }
464
+ case 'u': {
465
+ if (event.ctrlKey || event.metaKey) {
466
+ event.preventDefault();
467
+ if (rightPanelSize !== 0) {
468
+ hideRightPanel();
469
+ }
470
+ else {
471
+ showRightPanel();
472
+ }
473
+ }
474
+ break;
475
+ }
476
+ case 'l': {
477
+ if (event.ctrlKey || event.metaKey) {
478
+ event.preventDefault();
479
+ if (runnablePanelSize !== 0) {
480
+ hideBottomPanel();
481
+ }
482
+ else {
483
+ showBottomPanel();
484
+ }
485
+ }
486
+ break;
487
+ }
488
+ }
489
+ }
490
+ let testJob = undefined;
491
+ let jobToWatch = undefined;
410
492
  </script>
411
493
 
494
+ <svelte:head>
495
+ <link rel="stylesheet" href="/tailwind_full.css" />
496
+ </svelte:head>
497
+
412
498
  <DarkModeObserver on:change={onThemeChange} />
413
499
 
414
- <svelte:window on:hashchange={hashchange} />
500
+ <svelte:window on:hashchange={hashchange} on:keydown={keydown} />
415
501
 
416
502
  {#if !$userStore?.operator}
417
503
  {#if $appStore}
@@ -423,6 +509,15 @@ let stillInJobEnter = false;
423
509
  {diffDrawer}
424
510
  bind:savedApp
425
511
  {version}
512
+ leftPanelHidden={leftPanelSize === 0}
513
+ rightPanelHidden={rightPanelSize === 0}
514
+ bottomPanelHidden={runnablePanelSize === 0}
515
+ on:showLeftPanel={() => showLeftPanel()}
516
+ on:showRightPanel={() => showRightPanel()}
517
+ on:hideLeftPanel={() => hideLeftPanel()}
518
+ on:hideRightPanel={() => hideRightPanel()}
519
+ on:hideBottomPanel={() => hideBottomPanel()}
520
+ on:showBottomPanel={() => showBottomPanel()}
426
521
  />
427
522
  {#if $mode === 'preview'}
428
523
  <SplitPanesWrapper>
@@ -468,7 +563,7 @@ let stillInJobEnter = false;
468
563
  <!-- {yTop} -->
469
564
 
470
565
  <SecondaryMenu right={false} />
471
- <ContextPanel />
566
+ <ContextPanel on:hidePanel={() => hideLeftPanel()} />
472
567
  </div>
473
568
  </Pane>
474
569
  <Pane bind:size={centerPanelSize}>
@@ -485,7 +580,39 @@ let stillInJobEnter = false;
485
580
  'wm-app-viewer h-full overflow-visible'
486
581
  )}
487
582
  style={$appStore.css?.['app']?.['viewer']?.style}
583
+ bind:clientWidth={centerPanelWidth}
488
584
  >
585
+ {#if leftPanelSize === 0}
586
+ <div class="absolute top-0.5 left-0.5 z-50">
587
+ <HideButton
588
+ on:click={() => showLeftPanel()}
589
+ direction="right"
590
+ hidden
591
+ btnClasses="border bg-surface"
592
+ />
593
+ </div>
594
+ {/if}
595
+ {#if rightPanelSize === 0}
596
+ <div class="absolute top-0.5 right-0.5 z-50">
597
+ <HideButton
598
+ on:click={() => showRightPanel()}
599
+ direction="left"
600
+ hidden
601
+ btnClasses="border bg-surface"
602
+ />
603
+ </div>
604
+ {/if}
605
+ {#if runnablePanelSize === 0}
606
+ <div class="absolute bottom-0.5 right-0.5 z-50">
607
+ <HideButton
608
+ on:click={() => showBottomPanel()}
609
+ direction="bottom"
610
+ hidden
611
+ btnClasses="border bg-surface"
612
+ />
613
+ </div>
614
+ {/if}
615
+
489
616
  <div class="absolute bottom-2 left-2 z-50 border bg-surface">
490
617
  <div class="flex flex-row gap-2 text-xs items-center h-8 px-1">
491
618
  <Button
@@ -573,9 +700,7 @@ let stillInJobEnter = false;
573
700
  </Pane>
574
701
  {#if $connectingInput?.opened == false && !$componentActive}
575
702
  <Pane bind:size={runnablePanelSize}>
576
- <!-- svelte-ignore a11y-no-static-element-interactions -->
577
- <div
578
- class="relative h-full w-full overflow-x-visible"
703
+ <AppEditorBottomPanel
579
704
  on:mouseenter={() => {
580
705
  runnableJobEnterTimeout && clearTimeout(runnableJobEnterTimeout)
581
706
  stillInJobEnter = true
@@ -585,6 +710,7 @@ let stillInJobEnter = false;
585
710
  }
586
711
  }, 200)
587
712
  }}
713
+ on:hidePanel={() => hideBottomPanel()}
588
714
  on:mouseleave={() => {
589
715
  stillInJobEnter = false
590
716
  runnableJobEnterTimeout = setTimeout(
@@ -592,98 +718,119 @@ let stillInJobEnter = false;
592
718
  200
593
719
  )
594
720
  }}
721
+ {rightPanelSize}
722
+ {centerPanelWidth}
723
+ {runnablePanelSize}
595
724
  >
596
- <InlineScriptsPanel />
597
- <RunnableJobPanel />
598
- </div>
725
+ <RunnableJobPanel
726
+ float={rightPanelSize !== 0}
727
+ hidden={runnablePanelSize === 0}
728
+ bind:testJob
729
+ bind:jobToWatch
730
+ />
731
+ </AppEditorBottomPanel>
599
732
  </Pane>
600
733
  {/if}
601
734
  </Splitpanes>
602
735
  </Pane>
603
- <Pane bind:size={rightPanelSize} minSize={15} maxSize={33}>
604
- <div bind:clientWidth={$runnableJob.width} class="relative flex flex-col h-full">
605
- <Tabs bind:selected={selectedTab} wrapperClass="!min-h-[42px]" class="!h-full">
606
- <Popover disappearTimeout={0} notClickable placement="bottom">
607
- <svelte:fragment slot="text">Component library</svelte:fragment>
608
- <Tab
609
- value="insert"
610
- size="xs"
611
- class="h-full"
612
- on:pointerdown={() => {
613
- if ($cssEditorOpen) {
614
- $cssEditorOpen = false
615
- selectedTab = 'insert'
616
- }
617
- }}
618
- id="app-editor-component-library-tab"
619
- >
620
- <div class="m-1 center-center">
621
- <Plus size={18} />
622
- </div>
623
- </Tab>
624
- </Popover>
625
- <Popover disappearTimeout={0} notClickable placement="bottom">
626
- <svelte:fragment slot="text">Component settings</svelte:fragment>
627
- <Tab
628
- value="settings"
629
- size="xs"
630
- class="h-full"
631
- on:pointerdown={() => {
632
- if ($cssEditorOpen) {
633
- $cssEditorOpen = false
634
- selectedTab = 'settings'
635
- }
636
- }}
637
- >
638
- <div class="m-1 center-center">
639
- <Component size={18} />
640
- </div>
641
- </Tab>
642
- </Popover>
643
- <Popover disappearTimeout={0} notClickable placement="bottom">
644
- <svelte:fragment slot="text">Global styling</svelte:fragment>
645
- <Tab
646
- value="css"
647
- size="xs"
648
- class="h-full"
649
- on:pointerdown={() => {
650
- if (!$cssEditorOpen) {
651
- $cssEditorOpen = true
652
- selectedTab = 'css'
653
- }
654
- }}
655
- >
656
- <div class="m-1 center-center">
657
- <Paintbrush size={18} />
658
- </div>
659
- </Tab>
660
- </Popover>
661
- <div slot="content" class="h-full overflow-y-auto">
662
- <TabContent class="overflow-auto h-full" value="settings">
663
- {#if $selectedComponent !== undefined}
664
- <SettingsPanel
665
- on:delete={() => {
666
- befSelected = undefined
736
+ {#if rightPanelSize === 0}
737
+ <div class="relative flex flex-col h-full" />
738
+ {:else}
739
+ <Pane bind:size={rightPanelSize} minSize={15} maxSize={33}>
740
+ <div bind:clientWidth={$runnableJob.width} class="relative flex flex-col h-full">
741
+ <Tabs bind:selected={selectedTab} wrapperClass="!min-h-[42px]" class="!h-full">
742
+ <Popover disappearTimeout={0} notClickable placement="bottom">
743
+ <svelte:fragment slot="text">Component library</svelte:fragment>
744
+ <Tab
745
+ value="insert"
746
+ size="xs"
747
+ class="h-full"
748
+ on:pointerdown={() => {
749
+ if ($cssEditorOpen) {
750
+ $cssEditorOpen = false
667
751
  selectedTab = 'insert'
668
- }}
669
- />
670
- <SecondaryMenu right />
671
- {:else}
672
- <div class="min-w-[150px] text-sm !text-secondary text-center py-8 px-2">
673
- Select a component to see the settings&nbsp;for&nbsp;it
752
+ }
753
+ }}
754
+ id="app-editor-component-library-tab"
755
+ >
756
+ <div class="m-1 center-center">
757
+ <Plus size={18} />
674
758
  </div>
675
- {/if}
676
- </TabContent>
677
- <TabContent value="insert">
678
- <ComponentList />
679
- </TabContent>
680
- <TabContent value="css" class="h-full">
681
- <CssSettings />
682
- </TabContent>
683
- </div>
684
- </Tabs>
685
- </div>
686
- </Pane>
759
+ </Tab>
760
+ </Popover>
761
+ <Popover disappearTimeout={0} notClickable placement="bottom">
762
+ <svelte:fragment slot="text">Component settings</svelte:fragment>
763
+ <Tab
764
+ value="settings"
765
+ size="xs"
766
+ class="h-full"
767
+ on:pointerdown={() => {
768
+ if ($cssEditorOpen) {
769
+ $cssEditorOpen = false
770
+ selectedTab = 'settings'
771
+ }
772
+ }}
773
+ >
774
+ <div class="m-1 center-center">
775
+ <Component size={18} />
776
+ </div>
777
+ </Tab>
778
+ </Popover>
779
+ <Popover disappearTimeout={0} notClickable placement="bottom">
780
+ <svelte:fragment slot="text">Global styling</svelte:fragment>
781
+ <Tab
782
+ value="css"
783
+ size="xs"
784
+ class="h-full"
785
+ on:pointerdown={() => {
786
+ if (!$cssEditorOpen) {
787
+ $cssEditorOpen = true
788
+ selectedTab = 'css'
789
+ }
790
+ }}
791
+ >
792
+ <div class="m-1 center-center">
793
+ <Paintbrush size={18} />
794
+ </div>
795
+ </Tab>
796
+ </Popover>
797
+ <div class="h-full w-full flex justify-end px-1">
798
+ <HideButton
799
+ on:click={() => {
800
+ storedRightPanelSize = rightPanelSize
801
+ rightPanelSize = 0
802
+ centerPanelSize = centerPanelSize + storedRightPanelSize
803
+ }}
804
+ direction="right"
805
+ />
806
+ </div>
807
+ <div slot="content" class="h-full overflow-y-auto">
808
+ <TabContent class="overflow-auto h-full" value="settings">
809
+ {#if $selectedComponent !== undefined}
810
+ <SettingsPanel
811
+ on:delete={() => {
812
+ befSelected = undefined
813
+ selectedTab = 'insert'
814
+ }}
815
+ />
816
+ <SecondaryMenu right />
817
+ {:else}
818
+ <div class="min-w-[150px] text-sm !text-secondary text-center py-8 px-2">
819
+ Select a component to see the settings&nbsp;for&nbsp;it
820
+ </div>
821
+ {/if}
822
+ </TabContent>
823
+ <TabContent value="insert">
824
+ <ComponentList />
825
+ </TabContent>
826
+ <TabContent value="css" class="h-full">
827
+ <CssSettings />
828
+ </TabContent>
829
+ </div>
830
+ </Tabs>
831
+ </div>
832
+ </Pane>
833
+ {/if}
687
834
  </Splitpanes>
688
835
  </SplitPanesWrapper>
689
836
  {/if}
@@ -0,0 +1,22 @@
1
+ <script>import { twMerge } from 'tailwind-merge';
2
+ import InlineScriptsPanel from './inlineScriptsPanel/InlineScriptsPanel.svelte';
3
+ import RunnableJobPanel from './RunnableJobPanel.svelte';
4
+ export let rightPanelSize = 0;
5
+ export let centerPanelWidth = 0;
6
+ export let runnablePanelSize = 0;
7
+ </script>
8
+
9
+ {#if rightPanelSize !== 0}
10
+ <!-- svelte-ignore a11y-no-static-element-interactions -->
11
+ <div class={twMerge('relative h-full w-full overflow-x-visible')} on:mouseenter on:mouseleave>
12
+ <InlineScriptsPanel on:hidePanel />
13
+ <RunnableJobPanel hidden={runnablePanelSize === 0} />
14
+ <slot />
15
+ </div>
16
+ {:else}
17
+ <div class="flex flex-row relative w-full h-full">
18
+ <InlineScriptsPanel width={centerPanelWidth - 400} on:hidePanel />
19
+
20
+ <slot />
21
+ </div>
22
+ {/if}
@@ -0,0 +1,24 @@
1
+ import { SvelteComponent } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ rightPanelSize?: number | undefined;
5
+ centerPanelWidth?: number | undefined;
6
+ runnablePanelSize?: number | undefined;
7
+ };
8
+ events: {
9
+ mouseenter: MouseEvent;
10
+ mouseleave: MouseEvent;
11
+ hidePanel: CustomEvent<any>;
12
+ } & {
13
+ [evt: string]: CustomEvent<any>;
14
+ };
15
+ slots: {
16
+ default: {};
17
+ };
18
+ };
19
+ export type AppEditorBottomPanelProps = typeof __propDef.props;
20
+ export type AppEditorBottomPanelEvents = typeof __propDef.events;
21
+ export type AppEditorBottomPanelSlots = typeof __propDef.slots;
22
+ export default class AppEditorBottomPanel extends SvelteComponent<AppEditorBottomPanelProps, AppEditorBottomPanelEvents, AppEditorBottomPanelSlots> {
23
+ }
24
+ export {};