windmill-components 1.383.8 → 1.389.1

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 (195) 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 +13 -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 +142 -128
  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 +12 -1
  49. package/package/components/ScriptBuilder.svelte.d.ts +3 -0
  50. package/package/components/ScriptEditor.svelte +2 -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 +75 -37
  55. package/package/components/SimpleEditor.svelte.d.ts +9 -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 +4 -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/editor/settingsPanel/inputEditor/JsonEditor.svelte +2 -1
  108. package/package/components/apps/editor/settingsPanel/inputEditor/JsonEditor.svelte.d.ts +1 -0
  109. package/package/components/apps/svelte-grid/Grid.svelte +6 -2
  110. package/package/components/apps/svelte-grid/Grid.svelte.d.ts +1 -0
  111. package/package/components/apps/svelte-grid/MoveResize.svelte +11 -3
  112. package/package/components/apps/svelte-grid/MoveResize.svelte.d.ts +1 -0
  113. package/package/components/apps/svelte-grid/utils/item.d.ts +4 -1
  114. package/package/components/apps/svelte-grid/utils/item.js +11 -4
  115. package/package/components/build_workers.d.ts +1 -1
  116. package/package/components/build_workers.js +16 -122
  117. package/package/components/common/button/Button.svelte.d.ts +2 -2
  118. package/package/components/common/calendarPicker/CalendarPicker.svelte +6 -2
  119. package/package/components/common/calendarPicker/CalendarPicker.svelte.d.ts +2 -0
  120. package/package/components/common/drawer/ConditionalPortal.svelte +2 -1
  121. package/package/components/common/drawer/ConditionalPortal.svelte.d.ts +1 -0
  122. package/package/components/common/languageIcons/LanguageIcon.svelte +5 -2
  123. package/package/components/common/popup/Popup.svelte +2 -1
  124. package/package/components/common/popup/Popup.svelte.d.ts +1 -0
  125. package/package/components/common/table/AppRow.svelte +11 -8
  126. package/package/components/common/table/AppRow.svelte.d.ts +1 -2
  127. package/package/components/common/table/FlowRow.svelte +3 -3
  128. package/package/components/common/table/FlowRow.svelte.d.ts +1 -2
  129. package/package/components/common/table/RawAppRow.svelte +3 -3
  130. package/package/components/common/table/RawAppRow.svelte.d.ts +1 -2
  131. package/package/components/common/table/ScriptRow.svelte +3 -3
  132. package/package/components/common/table/ScriptRow.svelte.d.ts +1 -2
  133. package/package/components/copilot/CodeCompletionStatus.svelte +21 -46
  134. package/package/components/copilot/StepGen.svelte +2 -1
  135. package/package/components/custom_ui.d.ts +4 -1
  136. package/package/components/flows/CreateActionsApp.svelte +11 -8
  137. package/package/components/flows/CreateActionsFlow.svelte +11 -8
  138. package/package/components/flows/FlowEditor.svelte +1 -2
  139. package/package/components/flows/FlowEditor.svelte.d.ts +0 -1
  140. package/package/components/flows/FlowHistory.svelte +6 -3
  141. package/package/components/flows/content/FlowModuleComponent.svelte +1 -0
  142. package/package/components/flows/content/FlowModuleScript.svelte +15 -11
  143. package/package/components/flows/content/FlowSettings.svelte +1 -4
  144. package/package/components/flows/content/ScriptEditorDrawer.svelte +3 -0
  145. package/package/components/flows/header/FlowYamlEditor.svelte +55 -0
  146. package/package/components/flows/header/FlowYamlEditor.svelte.d.ts +17 -0
  147. package/package/components/flows/map/InsertTriggerButton.svelte +1 -1
  148. package/package/components/flows/map/InsertTriggerButton.svelte.d.ts +1 -0
  149. package/package/components/flows/map/VirtualItem.svelte +1 -1
  150. package/package/components/flows/pickers/PickHubScript.svelte +1 -0
  151. package/package/components/flows/types.d.ts +7 -6
  152. package/package/components/flows/utils.d.ts +9 -0
  153. package/package/components/flows/utils.js +21 -0
  154. package/package/components/graph/graphBuilder.js +1 -0
  155. package/package/components/graph/model.d.ts +1 -0
  156. package/package/components/graph/renderers/edges/BaseEdge.svelte +16 -0
  157. package/package/components/graph/renderers/nodes/BranchOneStart.svelte +1 -1
  158. package/package/components/graph/renderers/nodes/NoBranchNode.svelte +5 -1
  159. package/package/components/graph/renderers/nodes/NoBranchNode.svelte.d.ts +1 -0
  160. package/package/components/home/Item.svelte +0 -17
  161. package/package/components/home/deploy_ui.d.ts +2 -0
  162. package/package/components/home/deploy_ui.js +21 -0
  163. package/package/components/icons/RustIcon.svelte +70 -0
  164. package/package/components/icons/RustIcon.svelte.d.ts +25 -0
  165. package/package/components/icons/rust-logo.svg +1 -0
  166. package/package/components/instanceSettings.js +2 -2
  167. package/package/components/monaco_keybindings.d.ts +3 -0
  168. package/package/components/monaco_keybindings.js +9 -0
  169. package/package/components/preview/FlowPreviewStatus.svelte +6 -2
  170. package/package/components/runs/JobLoader.svelte +12 -3
  171. package/package/components/runs/JobLoader.svelte.d.ts +1 -1
  172. package/package/components/runs/ManuelDatePicker.svelte +31 -44
  173. package/package/components/runs/ManuelDatePicker.svelte.d.ts +6 -2
  174. package/package/components/runs/RunsFilter.svelte +4 -1
  175. package/package/components/runs/RunsFilter.svelte.d.ts +1 -0
  176. package/package/components/search/GlobalSearchModal.svelte +36 -25
  177. package/package/components/vscode.js +1 -1
  178. package/package/components/wizards/TableActionsWizard.svelte +84 -0
  179. package/package/components/wizards/TableActionsWizard.svelte.d.ts +22 -0
  180. package/package/editorUtils.js +2 -0
  181. package/package/gen/core/OpenAPI.js +1 -1
  182. package/package/gen/schemas.gen.d.ts +8 -8
  183. package/package/gen/schemas.gen.js +8 -8
  184. package/package/gen/services.gen.d.ts +4 -0
  185. package/package/gen/services.gen.js +16 -0
  186. package/package/gen/types.gen.d.ts +20 -8
  187. package/package/infer.d.ts +1 -1
  188. package/package/infer.js +48 -7
  189. package/package/script_helpers.d.ts +1 -0
  190. package/package/script_helpers.js +39 -1
  191. package/package/scripts.d.ts +1 -1
  192. package/package/scripts.js +12 -4
  193. package/package/stores.d.ts +5 -1
  194. package/package/stores.js +7 -2
  195. package/package.json +18 -9
@@ -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 {};
@@ -14,7 +14,7 @@ import { AppService, DraftService } from '../../../gen';
14
14
  import { redo, undo } from '../../../history';
15
15
  import { enterpriseLicense, workspaceStore } from '../../../stores';
16
16
  import { AlignHorizontalSpaceAround, BellOff, Bug, Clipboard, DiffIcon, Expand, FileJson, FileUp, FormInput, History, Laptop2, Loader2, MoreVertical, RefreshCw, Save, Smartphone, FileClock } from 'lucide-svelte';
17
- import { getContext } from 'svelte';
17
+ import { createEventDispatcher, getContext } from 'svelte';
18
18
  import { Pane, Splitpanes } from 'svelte-splitpanes';
19
19
  import { classNames, cleanValueProperties, copyToClipboard, truncateRev, orderedJsonStringify } from '../../../utils';
20
20
  import { BG_PREFIX, allItems, toStatic } from '../utils';
@@ -47,6 +47,7 @@ import { getDeleteInput } from '../components/display/dbtable/queries/delete';
47
47
  import { collectOneOfFields } from './appUtils';
48
48
  import Summary from '../../Summary.svelte';
49
49
  import ToggleEnable from '../../common/toggleButton-v2/ToggleEnable.svelte';
50
+ import HideButton from './settingsPanel/HideButton.svelte';
50
51
  async function hash(message) {
51
52
  try {
52
53
  const msgUint8 = new TextEncoder().encode(message); // encode as (utf-8) Uint8Array
@@ -69,7 +70,10 @@ export let fromHub = false;
69
70
  export let diffDrawer = undefined;
70
71
  export let savedApp = undefined;
71
72
  export let version = undefined;
72
- const { app, summary, breakpoint, appPath, jobs, jobsById, staticExporter, errorByComponent, openDebugRun } = getContext('AppViewerContext');
73
+ export let leftPanelHidden = false;
74
+ export let rightPanelHidden = false;
75
+ export let bottomPanelHidden = false;
76
+ const { app, summary, breakpoint, appPath, jobs, jobsById, staticExporter, errorByComponent, openDebugRun, mode } = getContext('AppViewerContext');
73
77
  const { history, jobsDrawerOpen, refreshComponents } = getContext('AppEditorContext');
74
78
  const loading = {
75
79
  publish: false,
@@ -612,6 +616,7 @@ let appReportingDrawerOpen = false;
612
616
  export function openTroubleshootPanel() {
613
617
  debugAppDrawerOpen = true;
614
618
  }
619
+ const dispatch = createEventDispatcher();
615
620
  </script>
616
621
 
617
622
  <svelte:window on:keydown={onKeyDown} />
@@ -1191,6 +1196,43 @@ export function openTroubleshootPanel() {
1191
1196
  </div>
1192
1197
  </div>
1193
1198
 
1199
+ {#if $mode !== 'preview'}
1200
+ <div class="flex gap-1">
1201
+ <HideButton
1202
+ direction="left"
1203
+ hidden={leftPanelHidden}
1204
+ on:click={() => {
1205
+ if (leftPanelHidden) {
1206
+ dispatch('showLeftPanel')
1207
+ } else {
1208
+ dispatch('hideLeftPanel')
1209
+ }
1210
+ }}
1211
+ />
1212
+ <HideButton
1213
+ hidden={bottomPanelHidden}
1214
+ direction="bottom"
1215
+ on:click={() => {
1216
+ if (bottomPanelHidden) {
1217
+ dispatch('showBottomPanel')
1218
+ } else {
1219
+ dispatch('hideBottomPanel')
1220
+ }
1221
+ }}
1222
+ />
1223
+ <HideButton
1224
+ hidden={rightPanelHidden}
1225
+ direction="right"
1226
+ on:click={() => {
1227
+ if (rightPanelHidden) {
1228
+ dispatch('showRightPanel')
1229
+ } else {
1230
+ dispatch('hideRightPanel')
1231
+ }
1232
+ }}
1233
+ />
1234
+ </div>
1235
+ {/if}
1194
1236
  {#if $enterpriseLicense && appPath != ''}
1195
1237
  <Awareness />
1196
1238
  {/if}
@@ -16,12 +16,21 @@ declare const __propDef: {
16
16
  draft_only?: boolean | undefined;
17
17
  } | undefined;
18
18
  version?: number | undefined;
19
+ leftPanelHidden?: boolean | undefined;
20
+ rightPanelHidden?: boolean | undefined;
21
+ bottomPanelHidden?: boolean | undefined;
19
22
  toggleTutorial?: (() => void) | undefined;
20
23
  openTroubleshootPanel?: (() => void) | undefined;
21
24
  };
22
25
  events: {
23
26
  keydown: KeyboardEvent;
24
27
  restore: CustomEvent<any>;
28
+ showLeftPanel: CustomEvent<any>;
29
+ hideLeftPanel: CustomEvent<any>;
30
+ showBottomPanel: CustomEvent<any>;
31
+ hideBottomPanel: CustomEvent<any>;
32
+ showRightPanel: CustomEvent<any>;
33
+ hideRightPanel: CustomEvent<any>;
25
34
  } & {
26
35
  [evt: string]: CustomEvent<any>;
27
36
  };
@@ -40,7 +40,7 @@ export function open(app_l) {
40
40
  variant="border"
41
41
  size="sm"
42
42
  startIcon={{ icon: Clipboard }}
43
- btnClasses="absolute top-2 right-2 w-min"
43
+ btnClasses="absolute top-2 right-2 w-min z-20"
44
44
  >
45
45
  Copy content
46
46
  </Button>
@@ -177,6 +177,10 @@ let appHeight = 0;
177
177
  $: maxRow = maxHeight($appStore.grid, appHeight, $breakpoint);
178
178
  </script>
179
179
 
180
+ <svelte:head>
181
+ <link rel="stylesheet" href="/tailwind_full.css" />
182
+ </svelte:head>
183
+
180
184
  <DarkModeObserver on:change={onThemeChange} />
181
185
 
182
186
  <svelte:window on:hashchange={hashchange} on:resize={resizeWindow} />
@@ -3,11 +3,10 @@ import PanelSection from './settingsPanel/common/PanelSection.svelte';
3
3
  import { classNames, displayDate, emptyString } from '../../../utils';
4
4
  import { AppService } from '../../../gen';
5
5
  import { workspaceStore } from '../../../stores';
6
- import AppPreview from './AppPreview.svelte';
7
6
  import { Skeleton } from '../../common';
8
7
  import Button from '../../common/button/Button.svelte';
9
8
  import { createEventDispatcher } from 'svelte';
10
- import { Pencil, ArrowRight, X } from 'lucide-svelte';
9
+ import { Pencil, ArrowRight, X, Loader2 } from 'lucide-svelte';
11
10
  export let appPath;
12
11
  let loading = false;
13
12
  let versions = [];
@@ -165,7 +164,12 @@ loadVersions();
165
164
  </Button>
166
165
  </div>
167
166
  </div>
168
- <AppPreview noBackend app={selected.value} context={{}} />
167
+
168
+ {#await import('./AppPreview.svelte')}
169
+ <Loader2 class="animate-spin" />
170
+ {:then Module}
171
+ <Module.default noBackend app={selected.value} context={{}} />
172
+ {/await}
169
173
  {:else}
170
174
  <Skeleton layout={[[40]]} />
171
175
  {/if}
@@ -17,7 +17,7 @@ import Tooltip from '../../Tooltip.svelte';
17
17
  import { Loader2 } from 'lucide-svelte';
18
18
  import Popover from '../../Popover.svelte';
19
19
  export let policy;
20
- const { selectedComponent, app, mode, connectingInput, summary, focusedGrid, parentWidth, breakpoint, allIdsInPath, bgRuns } = getContext('AppViewerContext');
20
+ const { selectedComponent, app, connectingInput, summary, focusedGrid, parentWidth, breakpoint, allIdsInPath, bgRuns } = getContext('AppViewerContext');
21
21
  const { history, scale, componentActive } = getContext('AppEditorContext');
22
22
  let previousSelectedIds = undefined;
23
23
  $: if (!deepEqual(previousSelectedIds, $selectedComponent)) {
@@ -105,14 +105,7 @@ function handleFillHeight(id) {
105
105
  }}
106
106
  bind:clientWidth={$parentWidth}
107
107
  >
108
- <div
109
- class={twMerge(
110
- !$focusedGrid && $mode !== 'preview' ? 'outline-dashed' : '',
111
- 'subgrid overflow-visible z-100',
112
- 'outline-[#999999] dark:outline-[#aaaaaa] outline-dotted outline-offset-2 outline-1 '
113
- )}
114
- style={`transform: scale(${$scale / 100});`}
115
- >
108
+ <div class="subgrid overflow-visible z-100" style={`transform: scale(${$scale / 100});`}>
116
109
  <Grid
117
110
  allIdsInPath={$allIdsInPath}
118
111
  selectedIds={$selectedComponent}
@@ -123,6 +116,7 @@ function handleFillHeight(id) {
123
116
  }}
124
117
  let:dataItem
125
118
  let:hidden
119
+ let:overlapped
126
120
  cols={columnConfiguration}
127
121
  >
128
122
  <ComponentWrapper
@@ -163,6 +157,7 @@ function handleFillHeight(id) {
163
157
  on:fillHeight={() => {
164
158
  handleFillHeight(dataItem.id)
165
159
  }}
160
+ overlapped={overlapped !== undefined}
166
161
  />
167
162
  </GridEditorMenu>
168
163
  </ComponentWrapper>
@@ -180,10 +175,6 @@ function handleFillHeight(id) {
180
175
  {/if}
181
176
 
182
177
  <style global>
183
- :global(.svlt-grid-shadow) {
184
- /* Back shadow */
185
- background: #93c4fdd0 !important;
186
- }
187
178
  :global(.svlt-grid-active) {
188
179
  opacity: 1 !important;
189
180
  }</style>