dockview-core 1.14.1 → 1.15.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 (80) hide show
  1. package/dist/cjs/api/component.api.d.ts +4 -5
  2. package/dist/cjs/api/component.api.js +12 -2
  3. package/dist/cjs/constants.d.ts +2 -0
  4. package/dist/cjs/constants.js +1 -1
  5. package/dist/cjs/dnd/overlay.d.ts +6 -4
  6. package/dist/cjs/dnd/overlay.js +119 -28
  7. package/dist/cjs/dockview/components/tab/defaultTab.d.ts +1 -8
  8. package/dist/cjs/dockview/components/tab/defaultTab.js +16 -39
  9. package/dist/cjs/dockview/components/titlebar/tabsContainer.js +4 -2
  10. package/dist/cjs/dockview/dockviewComponent.d.ts +20 -17
  11. package/dist/cjs/dockview/dockviewComponent.js +92 -45
  12. package/dist/cjs/dockview/dockviewFloatingGroupPanel.d.ts +3 -12
  13. package/dist/cjs/dockview/options.d.ts +10 -6
  14. package/dist/cjs/dockview/options.js +1 -0
  15. package/dist/cjs/dom.d.ts +1 -0
  16. package/dist/cjs/dom.js +5 -1
  17. package/dist/cjs/gridview/baseComponentGridview.d.ts +3 -0
  18. package/dist/cjs/gridview/baseComponentGridview.js +8 -2
  19. package/dist/cjs/gridview/branchNode.d.ts +7 -3
  20. package/dist/cjs/gridview/branchNode.js +24 -29
  21. package/dist/cjs/gridview/gridview.d.ts +7 -1
  22. package/dist/cjs/gridview/gridview.js +31 -8
  23. package/dist/cjs/gridview/gridviewPanel.d.ts +1 -0
  24. package/dist/cjs/gridview/gridviewPanel.js +7 -0
  25. package/dist/cjs/math.js +5 -1
  26. package/dist/cjs/splitview/splitview.d.ts +13 -0
  27. package/dist/cjs/splitview/splitview.js +42 -12
  28. package/dist/cjs/types.d.ts +23 -0
  29. package/dist/dockview-core.amd.js +333 -138
  30. package/dist/dockview-core.amd.js.map +1 -1
  31. package/dist/dockview-core.amd.min.js +2 -2
  32. package/dist/dockview-core.amd.min.js.map +1 -1
  33. package/dist/dockview-core.amd.min.noStyle.js +2 -2
  34. package/dist/dockview-core.amd.min.noStyle.js.map +1 -1
  35. package/dist/dockview-core.amd.noStyle.js +332 -137
  36. package/dist/dockview-core.amd.noStyle.js.map +1 -1
  37. package/dist/dockview-core.cjs.js +333 -138
  38. package/dist/dockview-core.cjs.js.map +1 -1
  39. package/dist/dockview-core.esm.js +333 -138
  40. package/dist/dockview-core.esm.js.map +1 -1
  41. package/dist/dockview-core.esm.min.js +2 -2
  42. package/dist/dockview-core.esm.min.js.map +1 -1
  43. package/dist/dockview-core.js +333 -138
  44. package/dist/dockview-core.js.map +1 -1
  45. package/dist/dockview-core.min.js +2 -2
  46. package/dist/dockview-core.min.js.map +1 -1
  47. package/dist/dockview-core.min.noStyle.js +2 -2
  48. package/dist/dockview-core.min.noStyle.js.map +1 -1
  49. package/dist/dockview-core.noStyle.js +332 -137
  50. package/dist/dockview-core.noStyle.js.map +1 -1
  51. package/dist/esm/api/component.api.d.ts +4 -5
  52. package/dist/esm/api/component.api.js +8 -2
  53. package/dist/esm/constants.d.ts +2 -0
  54. package/dist/esm/constants.js +1 -1
  55. package/dist/esm/dnd/overlay.d.ts +6 -4
  56. package/dist/esm/dnd/overlay.js +108 -28
  57. package/dist/esm/dockview/components/tab/defaultTab.d.ts +1 -8
  58. package/dist/esm/dockview/components/tab/defaultTab.js +16 -28
  59. package/dist/esm/dockview/components/titlebar/tabsContainer.js +4 -2
  60. package/dist/esm/dockview/dockviewComponent.d.ts +20 -17
  61. package/dist/esm/dockview/dockviewComponent.js +93 -46
  62. package/dist/esm/dockview/dockviewFloatingGroupPanel.d.ts +3 -12
  63. package/dist/esm/dockview/options.d.ts +10 -6
  64. package/dist/esm/dockview/options.js +1 -0
  65. package/dist/esm/dom.d.ts +1 -0
  66. package/dist/esm/dom.js +3 -0
  67. package/dist/esm/gridview/baseComponentGridview.d.ts +3 -0
  68. package/dist/esm/gridview/baseComponentGridview.js +6 -2
  69. package/dist/esm/gridview/branchNode.d.ts +7 -3
  70. package/dist/esm/gridview/branchNode.js +19 -7
  71. package/dist/esm/gridview/gridview.d.ts +7 -1
  72. package/dist/esm/gridview/gridview.js +27 -8
  73. package/dist/esm/gridview/gridviewPanel.d.ts +1 -0
  74. package/dist/esm/gridview/gridviewPanel.js +3 -0
  75. package/dist/esm/math.js +5 -1
  76. package/dist/esm/splitview/splitview.d.ts +13 -0
  77. package/dist/esm/splitview/splitview.js +38 -12
  78. package/dist/esm/types.d.ts +23 -0
  79. package/dist/styles/dockview.css +0 -13
  80. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * dockview-core
3
- * @version 1.14.1
3
+ * @version 1.15.0
4
4
  * @link https://github.com/mathuo/dockview
5
5
  * @license MIT
6
6
  */
@@ -33,7 +33,7 @@ define(['exports'], (function (exports) { 'use strict';
33
33
  }
34
34
  }
35
35
 
36
- var css_248z = ".dv-render-overlay {\n position: absolute;\n z-index: 1;\n height: 100%;\n}\n.dv-render-overlay.dv-render-overlay-float {\n z-index: 999;\n}\n\n.dv-debug .dv-render-overlay {\n outline: 1px solid red;\n outline-offset: -1;\n}\n.dockview-svg {\n display: inline-block;\n fill: currentcolor;\n line-height: 1;\n stroke: currentcolor;\n stroke-width: 0;\n}\n.dockview-theme-dark {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-view-background-color: #1e1e1e;\n --dv-tabs-and-actions-container-background-color: #252526;\n --dv-activegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-activegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-inactivegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-tab-divider-color: #1e1e1e;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: #969696;\n --dv-inactivegroup-visiblepanel-tab-color: #8f8f8f;\n --dv-inactivegroup-hiddenpanel-tab-color: #626262;\n --dv-separator-border: rgb(68, 68, 68);\n --dv-paneview-header-border-color: rgba(204, 204, 204, 0.2);\n}\n\n.dockview-theme-light {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-view-background-color: white;\n --dv-tabs-and-actions-container-background-color: #f3f3f3;\n --dv-activegroup-visiblepanel-tab-background-color: white;\n --dv-activegroup-hiddenpanel-tab-background-color: #ececec;\n --dv-inactivegroup-visiblepanel-tab-background-color: white;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #ececec;\n --dv-tab-divider-color: white;\n --dv-activegroup-visiblepanel-tab-color: rgb(51, 51, 51);\n --dv-activegroup-hiddenpanel-tab-color: rgba(51, 51, 51, 0.7);\n --dv-inactivegroup-visiblepanel-tab-color: rgba(51, 51, 51, 0.7);\n --dv-inactivegroup-hiddenpanel-tab-color: rgba(51, 51, 51, 0.35);\n --dv-separator-border: rgba(128, 128, 128, 0.35);\n --dv-paneview-header-border-color: rgb(51, 51, 51);\n}\n\n.dockview-theme-vs {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-view-background-color: #1e1e1e;\n --dv-tabs-and-actions-container-background-color: #252526;\n --dv-activegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-activegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-inactivegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-tab-divider-color: #1e1e1e;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: #969696;\n --dv-inactivegroup-visiblepanel-tab-color: #8f8f8f;\n --dv-inactivegroup-hiddenpanel-tab-color: #626262;\n --dv-separator-border: rgb(68, 68, 68);\n --dv-paneview-header-border-color: rgba(204, 204, 204, 0.2);\n --dv-tabs-and-actions-container-background-color: #2d2d30;\n --dv-tabs-and-actions-container-height: 20px;\n --dv-tabs-and-actions-container-font-size: 11px;\n --dv-activegroup-visiblepanel-tab-background-color: #007acc;\n --dv-inactivegroup-visiblepanel-tab-background-color: #3f3f46;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: white;\n --dv-inactivegroup-visiblepanel-tab-color: white;\n --dv-inactivegroup-hiddenpanel-tab-color: white;\n}\n.dockview-theme-vs .groupview.active-group > .tabs-and-actions-container {\n box-sizing: content-box;\n border-bottom: 2px solid var(--dv-activegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.active-group > .tabs-and-actions-container .tab.active-tab {\n border-top: 2px solid var(--dv-activegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.active-group > .tabs-and-actions-container .tab.inactive-tab {\n border-top: 2px solid var(--dv-activegroup-hiddenpanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.inactive-group > .tabs-and-actions-container {\n box-sizing: content-box;\n border-bottom: 2px solid var(--dv-inactivegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.inactive-group > .tabs-and-actions-container .tab.active-tab {\n border-top: 2px solid var(--dv-inactivegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.inactive-group > .tabs-and-actions-container .tab.inactive-tab {\n border-top: 2px solid var(--dv-inactivegroup-hiddenpanel-tab-background-color);\n}\n\n.dockview-theme-abyss {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-view-background-color: #000c18;\n --dv-tabs-and-actions-container-background-color: #1c1c2a;\n --dv-activegroup-visiblepanel-tab-background-color: #000c18;\n --dv-activegroup-hiddenpanel-tab-background-color: #10192c;\n --dv-inactivegroup-visiblepanel-tab-background-color: #000c18;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #10192c;\n --dv-tab-divider-color: #2b2b4a;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: rgba(255, 255, 255, 0.5);\n --dv-inactivegroup-visiblepanel-tab-color: rgba(255, 255, 255, 0.5);\n --dv-inactivegroup-hiddenpanel-tab-color: rgba(255, 255, 255, 0.25);\n --dv-separator-border: #2b2b4a;\n --dv-paneview-header-border-color: #2b2b4a;\n --dv-paneview-active-outline-color: #596f99;\n}\n\n.dockview-theme-dracula {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-view-background-color: #282a36;\n --dv-tabs-and-actions-container-background-color: #191a21;\n --dv-activegroup-visiblepanel-tab-background-color: #282a36;\n --dv-activegroup-hiddenpanel-tab-background-color: #21222c;\n --dv-inactivegroup-visiblepanel-tab-background-color: #282a36;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #21222c;\n --dv-tab-divider-color: #191a21;\n --dv-activegroup-visiblepanel-tab-color: rgb(248, 248, 242);\n --dv-activegroup-hiddenpanel-tab-color: rgb(98, 114, 164);\n --dv-inactivegroup-visiblepanel-tab-color: rgba(248, 248, 242, 0.5);\n --dv-inactivegroup-hiddenpanel-tab-color: rgba(98, 114, 164, 0.5);\n --dv-separator-border: #bd93f9;\n --dv-paneview-header-border-color: #bd93f9;\n --dv-paneview-active-outline-color: #6272a4;\n}\n.dockview-theme-dracula .groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n position: relative;\n}\n.dockview-theme-dracula .groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab::after {\n position: absolute;\n left: 0px;\n top: 0px;\n content: \"\";\n width: 100%;\n height: 1px;\n background-color: #94527e;\n z-index: 999;\n}\n.dockview-theme-dracula .groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n position: relative;\n}\n.dockview-theme-dracula .groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab::after {\n position: absolute;\n left: 0px;\n bottom: 0px;\n content: \"\";\n width: 100%;\n height: 1px;\n background-color: #5e3d5a;\n z-index: 999;\n}\n\n.dockview-theme-replit {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-gap-size: 3px;\n --dv-group-view-background-color: #ebeced;\n --dv-tabs-and-actions-container-background-color: #fcfcfc;\n --dv-activegroup-visiblepanel-tab-background-color: #f0f1f2;\n --dv-activegroup-hiddenpanel-tab-background-color: ##fcfcfc;\n --dv-inactivegroup-visiblepanel-tab-background-color: #f0f1f2;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #fcfcfc;\n --dv-tab-divider-color: transparent;\n --dv-activegroup-visiblepanel-tab-color: rgb(51, 51, 51);\n --dv-activegroup-hiddenpanel-tab-color: rgb(51, 51, 51);\n --dv-inactivegroup-visiblepanel-tab-color: rgb(51, 51, 51);\n --dv-inactivegroup-hiddenpanel-tab-color: rgb(51, 51, 51);\n --dv-separator-border: transparent;\n --dv-paneview-header-border-color: rgb(51, 51, 51);\n --dv-background-color: #ebeced;\n --dv-separator-handle-background-color: #cfd1d3;\n --dv-separator-handle-hover-background-color: #babbbb;\n}\n.dockview-theme-replit .dv-resize-container:has(> .groupview) {\n border-radius: 8px;\n}\n.dockview-theme-replit .groupview {\n overflow: hidden;\n border-radius: 10px;\n}\n.dockview-theme-replit .groupview .tabs-and-actions-container {\n border-bottom: 1px solid rgba(128, 128, 128, 0.35);\n}\n.dockview-theme-replit .groupview .tabs-and-actions-container .tab {\n margin: 4px;\n border-radius: 8px;\n}\n.dockview-theme-replit .groupview .tabs-and-actions-container .tab .dockview-svg {\n height: 8px;\n width: 8px;\n}\n.dockview-theme-replit .groupview .tabs-and-actions-container .tab:hover {\n background-color: #e4e5e6 !important;\n}\n.dockview-theme-replit .groupview .content-container {\n background-color: #fcfcfc;\n}\n.dockview-theme-replit .groupview.active-group {\n border: 1px solid rgba(128, 128, 128, 0.35);\n}\n.dockview-theme-replit .groupview.inactive-group {\n border: 1px solid transparent;\n}\n.dockview-theme-replit .vertical > .sash-container > .sash::after {\n content: \"\";\n height: 4px;\n width: 40px;\n border-radius: 2px;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n background-color: var(--dv-separator-handle-background-color);\n position: absolute;\n}\n.dockview-theme-replit .vertical > .sash-container > .sash:hover::after {\n background-color: var(--dv-separator-handle-hover-background-color);\n}\n.dockview-theme-replit .horizontal > .sash-container > .sash::after {\n content: \"\";\n height: 40px;\n width: 4px;\n border-radius: 2px;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n background-color: var(--dv-separator-handle-background-color);\n position: absolute;\n}\n.dockview-theme-replit .horizontal > .sash-container > .sash:hover::after {\n background-color: var(--dv-separator-handle-hover-background-color);\n}\n.drop-target {\n position: relative;\n}\n.drop-target > .drop-target-dropzone {\n position: absolute;\n left: 0px;\n top: 0px;\n height: 100%;\n width: 100%;\n z-index: 1000;\n pointer-events: none;\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection {\n position: relative;\n box-sizing: border-box;\n height: 100%;\n width: 100%;\n background-color: var(--dv-drag-over-background-color);\n transition: top 70ms ease-out, left 70ms ease-out, width 70ms ease-out, height 70ms ease-out, opacity 0.15s ease-out;\n will-change: transform;\n pointer-events: none;\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.dv-drop-target-top.dv-drop-target-small-vertical {\n border-top: 1px solid var(--dv-drag-over-border-color);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.dv-drop-target-bottom.dv-drop-target-small-vertical {\n border-bottom: 1px solid var(--dv-drag-over-border-color);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.dv-drop-target-left.dv-drop-target-small-horizontal {\n border-left: 1px solid var(--dv-drag-over-border-color);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.dv-drop-target-right.dv-drop-target-small-horizontal {\n border-right: 1px solid var(--dv-drag-over-border-color);\n}\n.dv-debug .dv-resize-container .dv-resize-handle-top {\n background-color: red;\n}\n.dv-debug .dv-resize-container .dv-resize-handle-bottom {\n background-color: green;\n}\n.dv-debug .dv-resize-container .dv-resize-handle-left {\n background-color: yellow;\n}\n.dv-debug .dv-resize-container .dv-resize-handle-right {\n background-color: blue;\n}\n.dv-debug .dv-resize-container .dv-resize-handle-topleft,\n.dv-debug .dv-resize-container .dv-resize-handle-topright,\n.dv-debug .dv-resize-container .dv-resize-handle-bottomleft,\n.dv-debug .dv-resize-container .dv-resize-handle-bottomright {\n background-color: cyan;\n}\n\n.dv-resize-container {\n position: absolute;\n z-index: 997;\n border: 1px solid var(--dv-tab-divider-color);\n box-shadow: var(--dv-floating-box-shadow);\n}\n.dv-resize-container.dv-bring-to-front {\n z-index: 998;\n}\n.dv-resize-container.dv-resize-container-dragging {\n opacity: 0.5;\n}\n.dv-resize-container .dv-resize-handle-top {\n height: 4px;\n width: calc(100% - 8px);\n left: 4px;\n top: -2px;\n z-index: 999;\n position: absolute;\n cursor: ns-resize;\n}\n.dv-resize-container .dv-resize-handle-bottom {\n height: 4px;\n width: calc(100% - 8px);\n left: 4px;\n bottom: -2px;\n z-index: 999;\n position: absolute;\n cursor: ns-resize;\n}\n.dv-resize-container .dv-resize-handle-left {\n height: calc(100% - 8px);\n width: 4px;\n left: -2px;\n top: 4px;\n z-index: 999;\n position: absolute;\n cursor: ew-resize;\n}\n.dv-resize-container .dv-resize-handle-right {\n height: calc(100% - 8px);\n width: 4px;\n right: -2px;\n top: 4px;\n z-index: 999;\n position: absolute;\n cursor: ew-resize;\n}\n.dv-resize-container .dv-resize-handle-topleft {\n height: 4px;\n width: 4px;\n top: -2px;\n left: -2px;\n z-index: 999;\n position: absolute;\n cursor: nw-resize;\n}\n.dv-resize-container .dv-resize-handle-topright {\n height: 4px;\n width: 4px;\n right: -2px;\n top: -2px;\n z-index: 999;\n position: absolute;\n cursor: ne-resize;\n}\n.dv-resize-container .dv-resize-handle-bottomleft {\n height: 4px;\n width: 4px;\n left: -2px;\n bottom: -2px;\n z-index: 999;\n position: absolute;\n cursor: sw-resize;\n}\n.dv-resize-container .dv-resize-handle-bottomright {\n height: 4px;\n width: 4px;\n right: -2px;\n bottom: -2px;\n z-index: 999;\n position: absolute;\n cursor: se-resize;\n}\n.dv-dockview {\n position: relative;\n background-color: var(--dv-group-view-background-color);\n}\n.dv-dockview .dv-watermark-container {\n position: absolute;\n top: 0px;\n left: 0px;\n height: 100%;\n width: 100%;\n z-index: 1;\n}\n.dv-dockview .dv-overlay-render-container {\n position: relative;\n}\n.dv-dockview .split-view-container.horizontal > .view-container > .view:not(:last-child) .groupview {\n border-right: var(--dv-group-gap-size) solid transparent;\n}\n.dv-dockview .split-view-container.horizontal > .view-container > .view:not(:first-child) .groupview {\n border-left: var(--dv-group-gap-size) solid transparent;\n}\n.dv-dockview .split-view-container.vertical > .view-container > .view:not(:last-child) .groupview {\n border-bottom: var(--dv-group-gap-size) solid transparent;\n}\n.dv-dockview .split-view-container.vertical > .view-container > .view:not(:first-child) .groupview {\n border-top: var(--dv-group-gap-size) solid transparent;\n}\n\n.groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n background-color: var(--dv-activegroup-visiblepanel-tab-background-color);\n color: var(--dv-activegroup-visiblepanel-tab-color);\n}\n.groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.inactive-tab {\n background-color: var(--dv-activegroup-hiddenpanel-tab-background-color);\n color: var(--dv-activegroup-hiddenpanel-tab-color);\n}\n.groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n background-color: var(--dv-inactivegroup-visiblepanel-tab-background-color);\n color: var(--dv-inactivegroup-visiblepanel-tab-color);\n}\n.groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.inactive-tab {\n background-color: var(--dv-inactivegroup-hiddenpanel-tab-background-color);\n color: var(--dv-inactivegroup-hiddenpanel-tab-color);\n}\n\n/**\n * when a tab is dragged we lose the above stylings because they are conditional on parent elements\n * therefore we also set some stylings for the dragging event\n **/\n.tab.dv-tab-dragging {\n background-color: var(--dv-activegroup-visiblepanel-tab-background-color);\n color: var(--dv-activegroup-visiblepanel-tab-color);\n}\n.groupview {\n display: flex;\n flex-direction: column;\n height: 100%;\n background-color: var(--dv-group-view-background-color);\n overflow: hidden;\n}\n.groupview:focus {\n outline: none;\n}\n.groupview.empty > .tabs-and-actions-container {\n display: none;\n}\n.groupview > .content-container {\n flex-grow: 1;\n min-height: 0;\n outline: none;\n}\n.dv-root-wrapper {\n height: 100%;\n width: 100%;\n}\n.grid-view,\n.branch-node {\n height: 100%;\n width: 100%;\n}\n.pane-container {\n height: 100%;\n width: 100%;\n}\n.pane-container.animated .view {\n transition-duration: 0.15s;\n transition-timing-function: ease-out;\n}\n.pane-container .view {\n overflow: hidden;\n display: flex;\n flex-direction: column;\n padding: 0px !important;\n}\n.pane-container .view:not(:first-child)::before {\n background-color: transparent !important;\n}\n.pane-container .view:not(:first-child) .pane > .pane-header {\n border-top: 1px solid var(--dv-paneview-header-border-color);\n}\n.pane-container .view .default-header {\n background-color: var(--dv-group-view-background-color);\n color: var(--dv-activegroup-visiblepanel-tab-color);\n display: flex;\n padding: 0px 8px;\n cursor: pointer;\n}\n.pane-container .view .default-header .dockview-pane-header-icon {\n display: flex;\n justify-content: center;\n align-items: center;\n}\n.pane-container .view .default-header > span {\n padding-left: 8px;\n flex-grow: 1;\n}\n.pane-container:first-of-type > .pane > .pane-header {\n border-top: none !important;\n}\n.pane-container .pane {\n display: flex;\n flex-direction: column;\n overflow: hidden;\n height: 100%;\n}\n.pane-container .pane .pane-header {\n box-sizing: border-box;\n user-select: none;\n position: relative;\n outline: none;\n}\n.pane-container .pane .pane-header.pane-draggable {\n cursor: pointer;\n}\n.pane-container .pane .pane-header:focus:before, .pane-container .pane .pane-header:focus-within:before {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 5;\n content: \"\";\n pointer-events: none;\n outline: 1px solid;\n outline-width: -1px;\n outline-style: solid;\n outline-offset: -1px;\n outline-color: var(--dv-paneview-active-outline-color);\n}\n.pane-container .pane .pane-body {\n overflow-y: auto;\n overflow-x: hidden;\n flex-grow: 1;\n position: relative;\n outline: none;\n}\n.pane-container .pane .pane-body:focus:before, .pane-container .pane .pane-body:focus-within:before {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 5;\n content: \"\";\n pointer-events: none;\n outline: 1px solid;\n outline-width: -1px;\n outline-style: solid;\n outline-offset: -1px;\n outline-color: var(--dv-paneview-active-outline-color);\n}\n.dv-debug .split-view-container .sash-container .sash.enabled {\n background-color: black;\n}\n.dv-debug .split-view-container .sash-container .sash.disabled {\n background-color: orange;\n}\n.dv-debug .split-view-container .sash-container .sash.maximum {\n background-color: green;\n}\n.dv-debug .split-view-container .sash-container .sash.minimum {\n background-color: red;\n}\n\n.split-view-container {\n position: relative;\n overflow: hidden;\n height: 100%;\n width: 100%;\n}\n.split-view-container.dv-splitview-disabled > .sash-container > .sash {\n pointer-events: none;\n}\n.split-view-container.animation .view,\n.split-view-container.animation .sash {\n transition-duration: 0.15s;\n transition-timing-function: ease-out;\n}\n.split-view-container.horizontal {\n height: 100%;\n}\n.split-view-container.horizontal > .sash-container > .sash {\n height: 100%;\n width: 4px;\n}\n.split-view-container.horizontal > .sash-container > .sash.enabled {\n cursor: ew-resize;\n}\n.split-view-container.horizontal > .sash-container > .sash.disabled {\n cursor: default;\n}\n.split-view-container.horizontal > .sash-container > .sash.maximum {\n cursor: w-resize;\n}\n.split-view-container.horizontal > .sash-container > .sash.minimum {\n cursor: e-resize;\n}\n.split-view-container.horizontal > .view-container > .view:not(:first-child)::before {\n height: 100%;\n width: 1px;\n}\n.split-view-container.vertical {\n width: 100%;\n}\n.split-view-container.vertical > .sash-container > .sash {\n width: 100%;\n height: 4px;\n}\n.split-view-container.vertical > .sash-container > .sash.enabled {\n cursor: ns-resize;\n}\n.split-view-container.vertical > .sash-container > .sash.disabled {\n cursor: default;\n}\n.split-view-container.vertical > .sash-container > .sash.maximum {\n cursor: n-resize;\n}\n.split-view-container.vertical > .sash-container > .sash.minimum {\n cursor: s-resize;\n}\n.split-view-container.vertical > .view-container > .view {\n width: 100%;\n}\n.split-view-container.vertical > .view-container > .view:not(:first-child)::before {\n height: 1px;\n width: 100%;\n}\n.split-view-container .sash-container {\n height: 100%;\n width: 100%;\n position: absolute;\n}\n.split-view-container .sash-container .sash {\n position: absolute;\n z-index: 99;\n outline: none;\n user-select: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n touch-action: none;\n}\n.split-view-container .sash-container .sash:not(.disabled):active {\n transition: background-color 0.1s ease-in-out;\n background-color: var(--dv-active-sash-color, transparent);\n}\n.split-view-container .sash-container .sash:not(.disabled):hover {\n background-color: var(--dv-active-sash-color, transparent);\n transition: background-color 0.1s ease-in-out;\n transition-delay: 0.5s;\n}\n.split-view-container .view-container {\n position: relative;\n height: 100%;\n width: 100%;\n background-color: var(--dv-background-color);\n}\n.split-view-container .view-container .view {\n height: 100%;\n box-sizing: border-box;\n overflow: auto;\n position: absolute;\n}\n.split-view-container.separator-border .view:not(:first-child)::before {\n content: \" \";\n position: absolute;\n top: 0;\n left: 0;\n z-index: 5;\n pointer-events: none;\n background-color: var(--dv-separator-border);\n}\n.dv-dragged {\n transform: translate3d(0px, 0px, 0px); /* forces tab to be drawn on a separate layer (see https://github.com/microsoft/vscode/issues/18733) */\n}\n\n.tab {\n flex-shrink: 0;\n}\n.tab:focus-within, .tab:focus {\n position: relative;\n}\n.tab:focus-within::after, .tab:focus::after {\n position: absolute;\n content: \"\";\n height: 100%;\n width: 100%;\n top: 0px;\n left: 0px;\n pointer-events: none;\n outline: 1px solid var(--dv-tab-divider-color) !important;\n outline-offset: -1px;\n z-index: 5;\n}\n.tab.dv-tab-dragging .dv-default-tab-action {\n background-color: var(--dv-activegroup-visiblepanel-tab-color);\n}\n.tab.active-tab .dv-default-tab .dv-default-tab-action {\n visibility: visible;\n}\n.tab.inactive-tab .dv-default-tab .dv-default-tab-action {\n visibility: hidden;\n}\n.tab.inactive-tab .dv-default-tab:hover .dv-default-tab-action {\n visibility: visible;\n}\n.tab .dv-default-tab {\n position: relative;\n height: 100%;\n display: flex;\n min-width: 80px;\n align-items: center;\n padding: 0px 8px;\n white-space: nowrap;\n text-overflow: elipsis;\n}\n.tab .dv-default-tab .dv-default-tab-content {\n padding: 0px 8px;\n flex-grow: 1;\n}\n.tab .dv-default-tab .dv-default-tab-action {\n padding: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n}\n.tab .dv-default-tab .dv-default-tab-action:hover {\n border-radius: 2px;\n background-color: var(--dv-icon-hover-background-color);\n}\n.tabs-and-actions-container {\n display: flex;\n background-color: var(--dv-tabs-and-actions-container-background-color);\n flex-shrink: 0;\n box-sizing: border-box;\n height: var(--dv-tabs-and-actions-container-height);\n font-size: var(--dv-tabs-and-actions-container-font-size);\n}\n.tabs-and-actions-container.hidden {\n display: none;\n}\n.tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .tabs-container {\n flex-grow: 1;\n}\n.tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .tabs-container .tab {\n flex-grow: 1;\n}\n.tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .void-container {\n flex-grow: 0;\n}\n.tabs-and-actions-container .void-container {\n display: flex;\n flex-grow: 1;\n cursor: grab;\n}\n.tabs-and-actions-container .tabs-container {\n display: flex;\n overflow-x: overlay;\n overflow-y: hidden;\n scrollbar-width: thin;\n /* Track */\n /* Handle */\n}\n.tabs-and-actions-container .tabs-container::-webkit-scrollbar {\n height: 3px;\n}\n.tabs-and-actions-container .tabs-container::-webkit-scrollbar-track {\n background: transparent;\n}\n.tabs-and-actions-container .tabs-container::-webkit-scrollbar-thumb {\n background: var(--dv-tabs-container-scrollbar-color);\n}\n.tabs-and-actions-container .tabs-container .tab {\n -webkit-user-drag: element;\n outline: none;\n min-width: 75px;\n cursor: pointer;\n position: relative;\n box-sizing: border-box;\n}\n.tabs-and-actions-container .tabs-container .tab:not(:first-child)::before {\n content: \" \";\n position: absolute;\n top: 0;\n left: 0;\n z-index: 5;\n pointer-events: none;\n background-color: var(--dv-tab-divider-color);\n width: 1px;\n height: 100%;\n}\n.watermark {\n display: flex;\n width: 100%;\n}\n.watermark.has-actions .watermark-title .actions-container {\n display: none;\n}\n.watermark .watermark-title {\n height: 35px;\n width: 100%;\n display: flex;\n}\n.watermark .watermark-content {\n flex-grow: 1;\n}\n.watermark .actions-container {\n display: flex;\n align-items: center;\n padding: 0px 8px;\n}\n.watermark .actions-container .close-action {\n padding: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n cursor: pointer;\n color: var(--dv-activegroup-hiddenpanel-tab-color);\n}\n.watermark .actions-container .close-action:hover {\n border-radius: 2px;\n background-color: var(--dv-icon-hover-background-color);\n}";
36
+ var css_248z = ".dv-render-overlay {\n position: absolute;\n z-index: 1;\n height: 100%;\n}\n.dv-render-overlay.dv-render-overlay-float {\n z-index: 999;\n}\n\n.dv-debug .dv-render-overlay {\n outline: 1px solid red;\n outline-offset: -1;\n}\n.dockview-svg {\n display: inline-block;\n fill: currentcolor;\n line-height: 1;\n stroke: currentcolor;\n stroke-width: 0;\n}\n.dockview-theme-dark {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-view-background-color: #1e1e1e;\n --dv-tabs-and-actions-container-background-color: #252526;\n --dv-activegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-activegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-inactivegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-tab-divider-color: #1e1e1e;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: #969696;\n --dv-inactivegroup-visiblepanel-tab-color: #8f8f8f;\n --dv-inactivegroup-hiddenpanel-tab-color: #626262;\n --dv-separator-border: rgb(68, 68, 68);\n --dv-paneview-header-border-color: rgba(204, 204, 204, 0.2);\n}\n\n.dockview-theme-light {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-view-background-color: white;\n --dv-tabs-and-actions-container-background-color: #f3f3f3;\n --dv-activegroup-visiblepanel-tab-background-color: white;\n --dv-activegroup-hiddenpanel-tab-background-color: #ececec;\n --dv-inactivegroup-visiblepanel-tab-background-color: white;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #ececec;\n --dv-tab-divider-color: white;\n --dv-activegroup-visiblepanel-tab-color: rgb(51, 51, 51);\n --dv-activegroup-hiddenpanel-tab-color: rgba(51, 51, 51, 0.7);\n --dv-inactivegroup-visiblepanel-tab-color: rgba(51, 51, 51, 0.7);\n --dv-inactivegroup-hiddenpanel-tab-color: rgba(51, 51, 51, 0.35);\n --dv-separator-border: rgba(128, 128, 128, 0.35);\n --dv-paneview-header-border-color: rgb(51, 51, 51);\n}\n\n.dockview-theme-vs {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-view-background-color: #1e1e1e;\n --dv-tabs-and-actions-container-background-color: #252526;\n --dv-activegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-activegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-inactivegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-tab-divider-color: #1e1e1e;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: #969696;\n --dv-inactivegroup-visiblepanel-tab-color: #8f8f8f;\n --dv-inactivegroup-hiddenpanel-tab-color: #626262;\n --dv-separator-border: rgb(68, 68, 68);\n --dv-paneview-header-border-color: rgba(204, 204, 204, 0.2);\n --dv-tabs-and-actions-container-background-color: #2d2d30;\n --dv-tabs-and-actions-container-height: 20px;\n --dv-tabs-and-actions-container-font-size: 11px;\n --dv-activegroup-visiblepanel-tab-background-color: #007acc;\n --dv-inactivegroup-visiblepanel-tab-background-color: #3f3f46;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: white;\n --dv-inactivegroup-visiblepanel-tab-color: white;\n --dv-inactivegroup-hiddenpanel-tab-color: white;\n}\n.dockview-theme-vs .groupview.active-group > .tabs-and-actions-container {\n box-sizing: content-box;\n border-bottom: 2px solid var(--dv-activegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.active-group > .tabs-and-actions-container .tab.active-tab {\n border-top: 2px solid var(--dv-activegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.active-group > .tabs-and-actions-container .tab.inactive-tab {\n border-top: 2px solid var(--dv-activegroup-hiddenpanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.inactive-group > .tabs-and-actions-container {\n box-sizing: content-box;\n border-bottom: 2px solid var(--dv-inactivegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.inactive-group > .tabs-and-actions-container .tab.active-tab {\n border-top: 2px solid var(--dv-inactivegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.inactive-group > .tabs-and-actions-container .tab.inactive-tab {\n border-top: 2px solid var(--dv-inactivegroup-hiddenpanel-tab-background-color);\n}\n\n.dockview-theme-abyss {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-view-background-color: #000c18;\n --dv-tabs-and-actions-container-background-color: #1c1c2a;\n --dv-activegroup-visiblepanel-tab-background-color: #000c18;\n --dv-activegroup-hiddenpanel-tab-background-color: #10192c;\n --dv-inactivegroup-visiblepanel-tab-background-color: #000c18;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #10192c;\n --dv-tab-divider-color: #2b2b4a;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: rgba(255, 255, 255, 0.5);\n --dv-inactivegroup-visiblepanel-tab-color: rgba(255, 255, 255, 0.5);\n --dv-inactivegroup-hiddenpanel-tab-color: rgba(255, 255, 255, 0.25);\n --dv-separator-border: #2b2b4a;\n --dv-paneview-header-border-color: #2b2b4a;\n --dv-paneview-active-outline-color: #596f99;\n}\n\n.dockview-theme-dracula {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-view-background-color: #282a36;\n --dv-tabs-and-actions-container-background-color: #191a21;\n --dv-activegroup-visiblepanel-tab-background-color: #282a36;\n --dv-activegroup-hiddenpanel-tab-background-color: #21222c;\n --dv-inactivegroup-visiblepanel-tab-background-color: #282a36;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #21222c;\n --dv-tab-divider-color: #191a21;\n --dv-activegroup-visiblepanel-tab-color: rgb(248, 248, 242);\n --dv-activegroup-hiddenpanel-tab-color: rgb(98, 114, 164);\n --dv-inactivegroup-visiblepanel-tab-color: rgba(248, 248, 242, 0.5);\n --dv-inactivegroup-hiddenpanel-tab-color: rgba(98, 114, 164, 0.5);\n --dv-separator-border: #bd93f9;\n --dv-paneview-header-border-color: #bd93f9;\n --dv-paneview-active-outline-color: #6272a4;\n}\n.dockview-theme-dracula .groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n position: relative;\n}\n.dockview-theme-dracula .groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab::after {\n position: absolute;\n left: 0px;\n top: 0px;\n content: \"\";\n width: 100%;\n height: 1px;\n background-color: #94527e;\n z-index: 999;\n}\n.dockview-theme-dracula .groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n position: relative;\n}\n.dockview-theme-dracula .groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab::after {\n position: absolute;\n left: 0px;\n bottom: 0px;\n content: \"\";\n width: 100%;\n height: 1px;\n background-color: #5e3d5a;\n z-index: 999;\n}\n\n.dockview-theme-replit {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-view-background-color: #ebeced;\n --dv-tabs-and-actions-container-background-color: #fcfcfc;\n --dv-activegroup-visiblepanel-tab-background-color: #f0f1f2;\n --dv-activegroup-hiddenpanel-tab-background-color: ##fcfcfc;\n --dv-inactivegroup-visiblepanel-tab-background-color: #f0f1f2;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #fcfcfc;\n --dv-tab-divider-color: transparent;\n --dv-activegroup-visiblepanel-tab-color: rgb(51, 51, 51);\n --dv-activegroup-hiddenpanel-tab-color: rgb(51, 51, 51);\n --dv-inactivegroup-visiblepanel-tab-color: rgb(51, 51, 51);\n --dv-inactivegroup-hiddenpanel-tab-color: rgb(51, 51, 51);\n --dv-separator-border: transparent;\n --dv-paneview-header-border-color: rgb(51, 51, 51);\n --dv-background-color: #ebeced;\n --dv-separator-handle-background-color: #cfd1d3;\n --dv-separator-handle-hover-background-color: #babbbb;\n}\n.dockview-theme-replit .dv-resize-container:has(> .groupview) {\n border-radius: 8px;\n}\n.dockview-theme-replit .groupview {\n overflow: hidden;\n border-radius: 10px;\n}\n.dockview-theme-replit .groupview .tabs-and-actions-container {\n border-bottom: 1px solid rgba(128, 128, 128, 0.35);\n}\n.dockview-theme-replit .groupview .tabs-and-actions-container .tab {\n margin: 4px;\n border-radius: 8px;\n}\n.dockview-theme-replit .groupview .tabs-and-actions-container .tab .dockview-svg {\n height: 8px;\n width: 8px;\n}\n.dockview-theme-replit .groupview .tabs-and-actions-container .tab:hover {\n background-color: #e4e5e6 !important;\n}\n.dockview-theme-replit .groupview .content-container {\n background-color: #fcfcfc;\n}\n.dockview-theme-replit .groupview.active-group {\n border: 1px solid rgba(128, 128, 128, 0.35);\n}\n.dockview-theme-replit .groupview.inactive-group {\n border: 1px solid transparent;\n}\n.dockview-theme-replit .vertical > .sash-container > .sash::after {\n content: \"\";\n height: 4px;\n width: 40px;\n border-radius: 2px;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n background-color: var(--dv-separator-handle-background-color);\n position: absolute;\n}\n.dockview-theme-replit .vertical > .sash-container > .sash:hover::after {\n background-color: var(--dv-separator-handle-hover-background-color);\n}\n.dockview-theme-replit .horizontal > .sash-container > .sash::after {\n content: \"\";\n height: 40px;\n width: 4px;\n border-radius: 2px;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n background-color: var(--dv-separator-handle-background-color);\n position: absolute;\n}\n.dockview-theme-replit .horizontal > .sash-container > .sash:hover::after {\n background-color: var(--dv-separator-handle-hover-background-color);\n}\n.drop-target {\n position: relative;\n}\n.drop-target > .drop-target-dropzone {\n position: absolute;\n left: 0px;\n top: 0px;\n height: 100%;\n width: 100%;\n z-index: 1000;\n pointer-events: none;\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection {\n position: relative;\n box-sizing: border-box;\n height: 100%;\n width: 100%;\n background-color: var(--dv-drag-over-background-color);\n transition: top 70ms ease-out, left 70ms ease-out, width 70ms ease-out, height 70ms ease-out, opacity 0.15s ease-out;\n will-change: transform;\n pointer-events: none;\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.dv-drop-target-top.dv-drop-target-small-vertical {\n border-top: 1px solid var(--dv-drag-over-border-color);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.dv-drop-target-bottom.dv-drop-target-small-vertical {\n border-bottom: 1px solid var(--dv-drag-over-border-color);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.dv-drop-target-left.dv-drop-target-small-horizontal {\n border-left: 1px solid var(--dv-drag-over-border-color);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.dv-drop-target-right.dv-drop-target-small-horizontal {\n border-right: 1px solid var(--dv-drag-over-border-color);\n}\n.dv-debug .dv-resize-container .dv-resize-handle-top {\n background-color: red;\n}\n.dv-debug .dv-resize-container .dv-resize-handle-bottom {\n background-color: green;\n}\n.dv-debug .dv-resize-container .dv-resize-handle-left {\n background-color: yellow;\n}\n.dv-debug .dv-resize-container .dv-resize-handle-right {\n background-color: blue;\n}\n.dv-debug .dv-resize-container .dv-resize-handle-topleft,\n.dv-debug .dv-resize-container .dv-resize-handle-topright,\n.dv-debug .dv-resize-container .dv-resize-handle-bottomleft,\n.dv-debug .dv-resize-container .dv-resize-handle-bottomright {\n background-color: cyan;\n}\n\n.dv-resize-container {\n position: absolute;\n z-index: 997;\n border: 1px solid var(--dv-tab-divider-color);\n box-shadow: var(--dv-floating-box-shadow);\n}\n.dv-resize-container.dv-bring-to-front {\n z-index: 998;\n}\n.dv-resize-container.dv-resize-container-dragging {\n opacity: 0.5;\n}\n.dv-resize-container .dv-resize-handle-top {\n height: 4px;\n width: calc(100% - 8px);\n left: 4px;\n top: -2px;\n z-index: 999;\n position: absolute;\n cursor: ns-resize;\n}\n.dv-resize-container .dv-resize-handle-bottom {\n height: 4px;\n width: calc(100% - 8px);\n left: 4px;\n bottom: -2px;\n z-index: 999;\n position: absolute;\n cursor: ns-resize;\n}\n.dv-resize-container .dv-resize-handle-left {\n height: calc(100% - 8px);\n width: 4px;\n left: -2px;\n top: 4px;\n z-index: 999;\n position: absolute;\n cursor: ew-resize;\n}\n.dv-resize-container .dv-resize-handle-right {\n height: calc(100% - 8px);\n width: 4px;\n right: -2px;\n top: 4px;\n z-index: 999;\n position: absolute;\n cursor: ew-resize;\n}\n.dv-resize-container .dv-resize-handle-topleft {\n height: 4px;\n width: 4px;\n top: -2px;\n left: -2px;\n z-index: 999;\n position: absolute;\n cursor: nw-resize;\n}\n.dv-resize-container .dv-resize-handle-topright {\n height: 4px;\n width: 4px;\n right: -2px;\n top: -2px;\n z-index: 999;\n position: absolute;\n cursor: ne-resize;\n}\n.dv-resize-container .dv-resize-handle-bottomleft {\n height: 4px;\n width: 4px;\n left: -2px;\n bottom: -2px;\n z-index: 999;\n position: absolute;\n cursor: sw-resize;\n}\n.dv-resize-container .dv-resize-handle-bottomright {\n height: 4px;\n width: 4px;\n right: -2px;\n bottom: -2px;\n z-index: 999;\n position: absolute;\n cursor: se-resize;\n}\n.dv-dockview {\n position: relative;\n background-color: var(--dv-group-view-background-color);\n}\n.dv-dockview .dv-watermark-container {\n position: absolute;\n top: 0px;\n left: 0px;\n height: 100%;\n width: 100%;\n z-index: 1;\n}\n.dv-dockview .dv-overlay-render-container {\n position: relative;\n}\n\n.groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n background-color: var(--dv-activegroup-visiblepanel-tab-background-color);\n color: var(--dv-activegroup-visiblepanel-tab-color);\n}\n.groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.inactive-tab {\n background-color: var(--dv-activegroup-hiddenpanel-tab-background-color);\n color: var(--dv-activegroup-hiddenpanel-tab-color);\n}\n.groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n background-color: var(--dv-inactivegroup-visiblepanel-tab-background-color);\n color: var(--dv-inactivegroup-visiblepanel-tab-color);\n}\n.groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.inactive-tab {\n background-color: var(--dv-inactivegroup-hiddenpanel-tab-background-color);\n color: var(--dv-inactivegroup-hiddenpanel-tab-color);\n}\n\n/**\n * when a tab is dragged we lose the above stylings because they are conditional on parent elements\n * therefore we also set some stylings for the dragging event\n **/\n.tab.dv-tab-dragging {\n background-color: var(--dv-activegroup-visiblepanel-tab-background-color);\n color: var(--dv-activegroup-visiblepanel-tab-color);\n}\n.groupview {\n display: flex;\n flex-direction: column;\n height: 100%;\n background-color: var(--dv-group-view-background-color);\n overflow: hidden;\n}\n.groupview:focus {\n outline: none;\n}\n.groupview.empty > .tabs-and-actions-container {\n display: none;\n}\n.groupview > .content-container {\n flex-grow: 1;\n min-height: 0;\n outline: none;\n}\n.dv-root-wrapper {\n height: 100%;\n width: 100%;\n}\n.grid-view,\n.branch-node {\n height: 100%;\n width: 100%;\n}\n.pane-container {\n height: 100%;\n width: 100%;\n}\n.pane-container.animated .view {\n transition-duration: 0.15s;\n transition-timing-function: ease-out;\n}\n.pane-container .view {\n overflow: hidden;\n display: flex;\n flex-direction: column;\n padding: 0px !important;\n}\n.pane-container .view:not(:first-child)::before {\n background-color: transparent !important;\n}\n.pane-container .view:not(:first-child) .pane > .pane-header {\n border-top: 1px solid var(--dv-paneview-header-border-color);\n}\n.pane-container .view .default-header {\n background-color: var(--dv-group-view-background-color);\n color: var(--dv-activegroup-visiblepanel-tab-color);\n display: flex;\n padding: 0px 8px;\n cursor: pointer;\n}\n.pane-container .view .default-header .dockview-pane-header-icon {\n display: flex;\n justify-content: center;\n align-items: center;\n}\n.pane-container .view .default-header > span {\n padding-left: 8px;\n flex-grow: 1;\n}\n.pane-container:first-of-type > .pane > .pane-header {\n border-top: none !important;\n}\n.pane-container .pane {\n display: flex;\n flex-direction: column;\n overflow: hidden;\n height: 100%;\n}\n.pane-container .pane .pane-header {\n box-sizing: border-box;\n user-select: none;\n position: relative;\n outline: none;\n}\n.pane-container .pane .pane-header.pane-draggable {\n cursor: pointer;\n}\n.pane-container .pane .pane-header:focus:before, .pane-container .pane .pane-header:focus-within:before {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 5;\n content: \"\";\n pointer-events: none;\n outline: 1px solid;\n outline-width: -1px;\n outline-style: solid;\n outline-offset: -1px;\n outline-color: var(--dv-paneview-active-outline-color);\n}\n.pane-container .pane .pane-body {\n overflow-y: auto;\n overflow-x: hidden;\n flex-grow: 1;\n position: relative;\n outline: none;\n}\n.pane-container .pane .pane-body:focus:before, .pane-container .pane .pane-body:focus-within:before {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 5;\n content: \"\";\n pointer-events: none;\n outline: 1px solid;\n outline-width: -1px;\n outline-style: solid;\n outline-offset: -1px;\n outline-color: var(--dv-paneview-active-outline-color);\n}\n.dv-debug .split-view-container .sash-container .sash.enabled {\n background-color: black;\n}\n.dv-debug .split-view-container .sash-container .sash.disabled {\n background-color: orange;\n}\n.dv-debug .split-view-container .sash-container .sash.maximum {\n background-color: green;\n}\n.dv-debug .split-view-container .sash-container .sash.minimum {\n background-color: red;\n}\n\n.split-view-container {\n position: relative;\n overflow: hidden;\n height: 100%;\n width: 100%;\n}\n.split-view-container.dv-splitview-disabled > .sash-container > .sash {\n pointer-events: none;\n}\n.split-view-container.animation .view,\n.split-view-container.animation .sash {\n transition-duration: 0.15s;\n transition-timing-function: ease-out;\n}\n.split-view-container.horizontal {\n height: 100%;\n}\n.split-view-container.horizontal > .sash-container > .sash {\n height: 100%;\n width: 4px;\n}\n.split-view-container.horizontal > .sash-container > .sash.enabled {\n cursor: ew-resize;\n}\n.split-view-container.horizontal > .sash-container > .sash.disabled {\n cursor: default;\n}\n.split-view-container.horizontal > .sash-container > .sash.maximum {\n cursor: w-resize;\n}\n.split-view-container.horizontal > .sash-container > .sash.minimum {\n cursor: e-resize;\n}\n.split-view-container.horizontal > .view-container > .view:not(:first-child)::before {\n height: 100%;\n width: 1px;\n}\n.split-view-container.vertical {\n width: 100%;\n}\n.split-view-container.vertical > .sash-container > .sash {\n width: 100%;\n height: 4px;\n}\n.split-view-container.vertical > .sash-container > .sash.enabled {\n cursor: ns-resize;\n}\n.split-view-container.vertical > .sash-container > .sash.disabled {\n cursor: default;\n}\n.split-view-container.vertical > .sash-container > .sash.maximum {\n cursor: n-resize;\n}\n.split-view-container.vertical > .sash-container > .sash.minimum {\n cursor: s-resize;\n}\n.split-view-container.vertical > .view-container > .view {\n width: 100%;\n}\n.split-view-container.vertical > .view-container > .view:not(:first-child)::before {\n height: 1px;\n width: 100%;\n}\n.split-view-container .sash-container {\n height: 100%;\n width: 100%;\n position: absolute;\n}\n.split-view-container .sash-container .sash {\n position: absolute;\n z-index: 99;\n outline: none;\n user-select: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n touch-action: none;\n}\n.split-view-container .sash-container .sash:not(.disabled):active {\n transition: background-color 0.1s ease-in-out;\n background-color: var(--dv-active-sash-color, transparent);\n}\n.split-view-container .sash-container .sash:not(.disabled):hover {\n background-color: var(--dv-active-sash-color, transparent);\n transition: background-color 0.1s ease-in-out;\n transition-delay: 0.5s;\n}\n.split-view-container .view-container {\n position: relative;\n height: 100%;\n width: 100%;\n background-color: var(--dv-background-color);\n}\n.split-view-container .view-container .view {\n height: 100%;\n box-sizing: border-box;\n overflow: auto;\n position: absolute;\n}\n.split-view-container.separator-border .view:not(:first-child)::before {\n content: \" \";\n position: absolute;\n top: 0;\n left: 0;\n z-index: 5;\n pointer-events: none;\n background-color: var(--dv-separator-border);\n}\n.dv-dragged {\n transform: translate3d(0px, 0px, 0px); /* forces tab to be drawn on a separate layer (see https://github.com/microsoft/vscode/issues/18733) */\n}\n\n.tab {\n flex-shrink: 0;\n}\n.tab:focus-within, .tab:focus {\n position: relative;\n}\n.tab:focus-within::after, .tab:focus::after {\n position: absolute;\n content: \"\";\n height: 100%;\n width: 100%;\n top: 0px;\n left: 0px;\n pointer-events: none;\n outline: 1px solid var(--dv-tab-divider-color) !important;\n outline-offset: -1px;\n z-index: 5;\n}\n.tab.dv-tab-dragging .dv-default-tab-action {\n background-color: var(--dv-activegroup-visiblepanel-tab-color);\n}\n.tab.active-tab .dv-default-tab .dv-default-tab-action {\n visibility: visible;\n}\n.tab.inactive-tab .dv-default-tab .dv-default-tab-action {\n visibility: hidden;\n}\n.tab.inactive-tab .dv-default-tab:hover .dv-default-tab-action {\n visibility: visible;\n}\n.tab .dv-default-tab {\n position: relative;\n height: 100%;\n display: flex;\n min-width: 80px;\n align-items: center;\n padding: 0px 8px;\n white-space: nowrap;\n text-overflow: elipsis;\n}\n.tab .dv-default-tab .dv-default-tab-content {\n padding: 0px 8px;\n flex-grow: 1;\n}\n.tab .dv-default-tab .dv-default-tab-action {\n padding: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n}\n.tab .dv-default-tab .dv-default-tab-action:hover {\n border-radius: 2px;\n background-color: var(--dv-icon-hover-background-color);\n}\n.tabs-and-actions-container {\n display: flex;\n background-color: var(--dv-tabs-and-actions-container-background-color);\n flex-shrink: 0;\n box-sizing: border-box;\n height: var(--dv-tabs-and-actions-container-height);\n font-size: var(--dv-tabs-and-actions-container-font-size);\n}\n.tabs-and-actions-container.hidden {\n display: none;\n}\n.tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .tabs-container {\n flex-grow: 1;\n}\n.tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .tabs-container .tab {\n flex-grow: 1;\n}\n.tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .void-container {\n flex-grow: 0;\n}\n.tabs-and-actions-container .void-container {\n display: flex;\n flex-grow: 1;\n cursor: grab;\n}\n.tabs-and-actions-container .tabs-container {\n display: flex;\n overflow-x: overlay;\n overflow-y: hidden;\n scrollbar-width: thin;\n /* Track */\n /* Handle */\n}\n.tabs-and-actions-container .tabs-container::-webkit-scrollbar {\n height: 3px;\n}\n.tabs-and-actions-container .tabs-container::-webkit-scrollbar-track {\n background: transparent;\n}\n.tabs-and-actions-container .tabs-container::-webkit-scrollbar-thumb {\n background: var(--dv-tabs-container-scrollbar-color);\n}\n.tabs-and-actions-container .tabs-container .tab {\n -webkit-user-drag: element;\n outline: none;\n min-width: 75px;\n cursor: pointer;\n position: relative;\n box-sizing: border-box;\n}\n.tabs-and-actions-container .tabs-container .tab:not(:first-child)::before {\n content: \" \";\n position: absolute;\n top: 0;\n left: 0;\n z-index: 5;\n pointer-events: none;\n background-color: var(--dv-tab-divider-color);\n width: 1px;\n height: 100%;\n}\n.watermark {\n display: flex;\n width: 100%;\n}\n.watermark.has-actions .watermark-title .actions-container {\n display: none;\n}\n.watermark .watermark-title {\n height: 35px;\n width: 100%;\n display: flex;\n}\n.watermark .watermark-content {\n flex-grow: 1;\n}\n.watermark .actions-container {\n display: flex;\n align-items: center;\n padding: 0px 8px;\n}\n.watermark .actions-container .close-action {\n padding: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n cursor: pointer;\n color: var(--dv-activegroup-hiddenpanel-tab-color);\n}\n.watermark .actions-container .close-action:hover {\n border-radius: 2px;\n background-color: var(--dv-icon-hover-background-color);\n}";
37
37
  styleInject(css_248z);
38
38
 
39
39
  class TransferObject {
@@ -558,6 +558,9 @@ define(['exports'], (function (exports) { 'use strict';
558
558
  }
559
559
  return false;
560
560
  }
561
+ function addTestId(element, id) {
562
+ element.setAttribute('data-testid', id);
563
+ }
561
564
 
562
565
  function tail(arr) {
563
566
  if (arr.length === 0) {
@@ -619,7 +622,11 @@ define(['exports'], (function (exports) { 'use strict';
619
622
 
620
623
  const clamp = (value, min, max) => {
621
624
  if (min > max) {
622
- throw new Error(`${min} > ${max} is an invalid condition`);
625
+ /**
626
+ * caveat: an error should be thrown here if this was a proper `clamp` function but we need to handle
627
+ * cases where `min` > `max` and in those cases return `min`.
628
+ */
629
+ return min;
623
630
  }
624
631
  return Math.min(max, Math.max(value, min));
625
632
  };
@@ -824,7 +831,14 @@ define(['exports'], (function (exports) { 'use strict';
824
831
  this._disabled = value;
825
832
  toggleClass(this.element, 'dv-splitview-disabled', value);
826
833
  }
834
+ get margin() {
835
+ return this._margin;
836
+ }
837
+ set margin(value) {
838
+ this._margin = value;
839
+ }
827
840
  constructor(container, options) {
841
+ var _a;
828
842
  this.container = container;
829
843
  this.viewItems = [];
830
844
  this.sashes = [];
@@ -835,6 +849,7 @@ define(['exports'], (function (exports) { 'use strict';
835
849
  this._startSnappingEnabled = true;
836
850
  this._endSnappingEnabled = true;
837
851
  this._disabled = false;
852
+ this._margin = 0;
838
853
  this._onDidSashEnd = new Emitter();
839
854
  this.onDidSashEnd = this._onDidSashEnd.event;
840
855
  this._onDidAddView = new Emitter();
@@ -923,6 +938,7 @@ define(['exports'], (function (exports) { 'use strict';
923
938
  };
924
939
  this._orientation = options.orientation;
925
940
  this.element = this.createContainer();
941
+ this.margin = (_a = options.margin) !== null && _a !== void 0 ? _a : 0;
926
942
  this.proportionalLayout =
927
943
  options.proportionalLayout === undefined
928
944
  ? true
@@ -977,9 +993,7 @@ define(['exports'], (function (exports) { 'use strict';
977
993
  if (index < 0 || index >= this.viewItems.length) {
978
994
  throw new Error('Index out of bounds');
979
995
  }
980
- toggleClass(this.container, 'visible', visible);
981
996
  const viewItem = this.viewItems[index];
982
- toggleClass(this.container, 'visible', visible);
983
997
  viewItem.setVisible(visible, viewItem.size);
984
998
  this.distributeEmptySpace(index);
985
999
  this.layoutViews();
@@ -1291,15 +1305,29 @@ define(['exports'], (function (exports) { 'use strict';
1291
1305
  this._proportions = this.viewItems.map((i) => i.visible ? i.size / this._contentSize : undefined);
1292
1306
  }
1293
1307
  }
1308
+ /**
1309
+ * Margin explain:
1310
+ *
1311
+ * For `n` views in a splitview there will be `n-1` margins `m`.
1312
+ *
1313
+ * To fit the margins each view must reduce in size by `(m * (n - 1)) / n`.
1314
+ *
1315
+ * For each view `i` the offet must be adjusted by `m * i/(n - 1)`.
1316
+ */
1294
1317
  layoutViews() {
1295
1318
  this._contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);
1296
- let sum = 0;
1297
- const x = [];
1298
1319
  this.updateSashEnablement();
1320
+ if (this.viewItems.length === 0) {
1321
+ return;
1322
+ }
1323
+ const sashCount = this.viewItems.length - 1;
1324
+ const marginReducedSize = (this.margin * sashCount) / this.viewItems.length;
1325
+ let totalLeftOffset = 0;
1326
+ const viewLeftOffsets = [];
1299
1327
  for (let i = 0; i < this.viewItems.length - 1; i++) {
1300
- sum += this.viewItems[i].size;
1301
- x.push(sum);
1302
- const offset = Math.min(Math.max(0, sum - 2), this.size - 4);
1328
+ totalLeftOffset += this.viewItems[i].size;
1329
+ viewLeftOffsets.push(totalLeftOffset);
1330
+ const offset = Math.min(Math.max(0, totalLeftOffset - 2), this.size - this.margin);
1303
1331
  if (this._orientation === exports.Orientation.HORIZONTAL) {
1304
1332
  this.sashes[i].container.style.left = `${offset}px`;
1305
1333
  this.sashes[i].container.style.top = `0px`;
@@ -1310,19 +1338,24 @@ define(['exports'], (function (exports) { 'use strict';
1310
1338
  }
1311
1339
  }
1312
1340
  this.viewItems.forEach((view, i) => {
1341
+ const size = view.size - marginReducedSize;
1342
+ const offset = i === 0
1343
+ ? 0
1344
+ : viewLeftOffsets[i - 1] +
1345
+ (i / sashCount) * marginReducedSize;
1313
1346
  if (this._orientation === exports.Orientation.HORIZONTAL) {
1314
- view.container.style.width = `${view.size}px`;
1315
- view.container.style.left = i == 0 ? '0px' : `${x[i - 1]}px`;
1347
+ view.container.style.width = `${size}px`;
1348
+ view.container.style.left = `${offset}px`;
1316
1349
  view.container.style.top = '';
1317
1350
  view.container.style.height = '';
1318
1351
  }
1319
1352
  if (this._orientation === exports.Orientation.VERTICAL) {
1320
- view.container.style.height = `${view.size}px`;
1321
- view.container.style.top = i == 0 ? '0px' : `${x[i - 1]}px`;
1353
+ view.container.style.height = `${size}px`;
1354
+ view.container.style.top = `${offset}px`;
1322
1355
  view.container.style.width = '';
1323
1356
  view.container.style.left = '';
1324
1357
  }
1325
- view.view.layout(view.size, this._orthogonalSize);
1358
+ view.view.layout(view.size - marginReducedSize, this._orthogonalSize);
1326
1359
  });
1327
1360
  }
1328
1361
  findFirstSnapIndex(indexes) {
@@ -1771,7 +1804,18 @@ define(['exports'], (function (exports) { 'use strict';
1771
1804
  set disabled(value) {
1772
1805
  this.splitview.disabled = value;
1773
1806
  }
1774
- constructor(orientation, proportionalLayout, styles, size, orthogonalSize, disabled, childDescriptors) {
1807
+ get margin() {
1808
+ return this.splitview.margin;
1809
+ }
1810
+ set margin(value) {
1811
+ this.splitview.margin = value;
1812
+ this.children.forEach((child) => {
1813
+ if (child instanceof BranchNode) {
1814
+ child.margin = value;
1815
+ }
1816
+ });
1817
+ }
1818
+ constructor(orientation, proportionalLayout, styles, size, orthogonalSize, disabled, margin, childDescriptors) {
1775
1819
  super();
1776
1820
  this.orientation = orientation;
1777
1821
  this.proportionalLayout = proportionalLayout;
@@ -1791,6 +1835,7 @@ define(['exports'], (function (exports) { 'use strict';
1791
1835
  orientation: this.orientation,
1792
1836
  proportionalLayout,
1793
1837
  styles,
1838
+ margin,
1794
1839
  });
1795
1840
  this.splitview.layout(this.size, this.orthogonalSize);
1796
1841
  }
@@ -1814,6 +1859,7 @@ define(['exports'], (function (exports) { 'use strict';
1814
1859
  descriptor,
1815
1860
  proportionalLayout,
1816
1861
  styles,
1862
+ margin,
1817
1863
  });
1818
1864
  }
1819
1865
  this.disabled = disabled;
@@ -1822,10 +1868,8 @@ define(['exports'], (function (exports) { 'use strict';
1822
1868
  }));
1823
1869
  this.setupChildrenEvents();
1824
1870
  }
1825
- setVisible(visible) {
1826
- for (const child of this.children) {
1827
- child.setVisible(visible);
1828
- }
1871
+ setVisible(_visible) {
1872
+ // noop
1829
1873
  }
1830
1874
  isChildVisible(index) {
1831
1875
  if (index < 0 || index >= this.children.length) {
@@ -1842,12 +1886,13 @@ define(['exports'], (function (exports) { 'use strict';
1842
1886
  }
1843
1887
  const wereAllChildrenHidden = this.splitview.contentSize === 0;
1844
1888
  this.splitview.setViewVisible(index, visible);
1889
+ // }
1845
1890
  const areAllChildrenHidden = this.splitview.contentSize === 0;
1846
1891
  // If all children are hidden then the parent should hide the entire splitview
1847
1892
  // If the entire splitview is hidden then the parent should show the splitview when a child is shown
1848
1893
  if ((visible && wereAllChildrenHidden) ||
1849
1894
  (!visible && areAllChildrenHidden)) {
1850
- this._onDidVisibilityChange.fire(visible);
1895
+ this._onDidVisibilityChange.fire({ visible });
1851
1896
  }
1852
1897
  }
1853
1898
  moveChild(from, to) {
@@ -1920,7 +1965,7 @@ define(['exports'], (function (exports) { 'use strict';
1920
1965
  this._onDidChange.fire({ size: e.orthogonalSize });
1921
1966
  }), ...this.children.map((c, i) => {
1922
1967
  if (c instanceof BranchNode) {
1923
- return c.onDidVisibilityChange((visible) => {
1968
+ return c.onDidVisibilityChange(({ visible }) => {
1924
1969
  this.setChildVisible(i, visible);
1925
1970
  });
1926
1971
  }
@@ -1950,7 +1995,7 @@ define(['exports'], (function (exports) { 'use strict';
1950
1995
  }
1951
1996
  function flipNode(node, size, orthogonalSize) {
1952
1997
  if (node instanceof BranchNode) {
1953
- const result = new BranchNode(orthogonal(node.orientation), node.proportionalLayout, node.styles, size, orthogonalSize, node.disabled);
1998
+ const result = new BranchNode(orthogonal(node.orientation), node.proportionalLayout, node.styles, size, orthogonalSize, node.disabled, node.margin);
1954
1999
  let totalSize = 0;
1955
2000
  for (let i = node.children.length - 1; i >= 0; i--) {
1956
2001
  const child = node.children[i];
@@ -2105,6 +2150,13 @@ define(['exports'], (function (exports) { 'use strict';
2105
2150
  }
2106
2151
  }
2107
2152
  }
2153
+ get margin() {
2154
+ return this._margin;
2155
+ }
2156
+ set margin(value) {
2157
+ this._margin = value;
2158
+ this.root.margin = value;
2159
+ }
2108
2160
  maximizedView() {
2109
2161
  var _a;
2110
2162
  return (_a = this._maximizedNode) === null || _a === void 0 ? void 0 : _a.leaf.view;
@@ -2190,13 +2242,14 @@ define(['exports'], (function (exports) { 'use strict';
2190
2242
  this.disposable.dispose();
2191
2243
  this._onDidChange.dispose();
2192
2244
  this._onDidMaximizedNodeChange.dispose();
2245
+ this._onDidViewVisibilityChange.dispose();
2193
2246
  this.root.dispose();
2194
2247
  this._maximizedNode = undefined;
2195
2248
  this.element.remove();
2196
2249
  }
2197
2250
  clear() {
2198
2251
  const orientation = this.root.orientation;
2199
- this.root = new BranchNode(orientation, this.proportionalLayout, this.styles, this.root.size, this.root.orthogonalSize, this._locked);
2252
+ this.root = new BranchNode(orientation, this.proportionalLayout, this.styles, this.root.size, this.root.orthogonalSize, this.locked, this.margin);
2200
2253
  }
2201
2254
  deserialize(json, deserializer) {
2202
2255
  const orientation = json.orientation;
@@ -2207,6 +2260,7 @@ define(['exports'], (function (exports) { 'use strict';
2207
2260
  this.root = this._deserializeNode(root, orientation, deserializer, orthogonalSize);
2208
2261
  }
2209
2262
  _deserializeNode(node, orientation, deserializer, orthogonalSize) {
2263
+ var _a;
2210
2264
  let result;
2211
2265
  if (node.type === 'branch') {
2212
2266
  const serializedChildren = node.data;
@@ -2218,10 +2272,14 @@ define(['exports'], (function (exports) { 'use strict';
2218
2272
  });
2219
2273
  result = new BranchNode(orientation, this.proportionalLayout, this.styles, node.size, // <- orthogonal size - flips at each depth
2220
2274
  orthogonalSize, // <- size - flips at each depth,
2221
- this._locked, children);
2275
+ this.locked, this.margin, children);
2222
2276
  }
2223
2277
  else {
2224
- result = new LeafNode(deserializer.fromJSON(node), orientation, orthogonalSize, node.size);
2278
+ const view = deserializer.fromJSON(node);
2279
+ if (typeof node.visible === 'boolean') {
2280
+ (_a = view.setVisible) === null || _a === void 0 ? void 0 : _a.call(view, node.visible);
2281
+ }
2282
+ result = new LeafNode(view, orientation, orthogonalSize, node.size);
2225
2283
  }
2226
2284
  return result;
2227
2285
  }
@@ -2251,7 +2309,7 @@ define(['exports'], (function (exports) { 'use strict';
2251
2309
  }
2252
2310
  const oldRoot = this.root;
2253
2311
  oldRoot.element.remove();
2254
- this._root = new BranchNode(orthogonal(oldRoot.orientation), this.proportionalLayout, this.styles, this.root.orthogonalSize, this.root.size, this._locked);
2312
+ this._root = new BranchNode(orthogonal(oldRoot.orientation), this.proportionalLayout, this.styles, this.root.orthogonalSize, this.root.size, this.locked, this.margin);
2255
2313
  if (oldRoot.children.length === 0) ;
2256
2314
  else if (oldRoot.children.length === 1) {
2257
2315
  // can remove one level of redundant branching if there is only a single child
@@ -2316,19 +2374,24 @@ define(['exports'], (function (exports) { 'use strict';
2316
2374
  }
2317
2375
  return findLeaf(this.root, reverse);
2318
2376
  }
2319
- constructor(proportionalLayout, styles, orientation) {
2377
+ constructor(proportionalLayout, styles, orientation, locked, margin) {
2320
2378
  this.proportionalLayout = proportionalLayout;
2321
2379
  this.styles = styles;
2322
2380
  this._locked = false;
2381
+ this._margin = 0;
2323
2382
  this._maximizedNode = undefined;
2324
2383
  this.disposable = new MutableDisposable();
2325
2384
  this._onDidChange = new Emitter();
2326
2385
  this.onDidChange = this._onDidChange.event;
2386
+ this._onDidViewVisibilityChange = new Emitter();
2387
+ this.onDidViewVisibilityChange = this._onDidViewVisibilityChange.event;
2327
2388
  this._onDidMaximizedNodeChange = new Emitter();
2328
2389
  this.onDidMaximizedNodeChange = this._onDidMaximizedNodeChange.event;
2329
2390
  this.element = document.createElement('div');
2330
2391
  this.element.className = 'grid-view';
2331
- this.root = new BranchNode(orientation, proportionalLayout, styles, 0, 0, this._locked);
2392
+ this._locked = locked !== null && locked !== void 0 ? locked : false;
2393
+ this._margin = margin !== null && margin !== void 0 ? margin : 0;
2394
+ this.root = new BranchNode(orientation, proportionalLayout, styles, 0, 0, this.locked, this.margin);
2332
2395
  }
2333
2396
  isViewVisible(location) {
2334
2397
  const [rest, index] = tail(location);
@@ -2347,6 +2410,7 @@ define(['exports'], (function (exports) { 'use strict';
2347
2410
  if (!(parent instanceof BranchNode)) {
2348
2411
  throw new Error('Invalid from location');
2349
2412
  }
2413
+ this._onDidViewVisibilityChange.fire();
2350
2414
  parent.setChildVisible(index, visible);
2351
2415
  }
2352
2416
  moveView(parentLocation, from, to) {
@@ -2379,7 +2443,7 @@ define(['exports'], (function (exports) { 'use strict';
2379
2443
  }
2380
2444
  const child = grandParent.removeChild(parentIndex);
2381
2445
  child.dispose();
2382
- const newParent = new BranchNode(parent.orientation, this.proportionalLayout, this.styles, parent.size, parent.orthogonalSize, this._locked);
2446
+ const newParent = new BranchNode(parent.orientation, this.proportionalLayout, this.styles, parent.size, parent.orthogonalSize, this.locked, this.margin);
2383
2447
  grandParent.addChild(newParent, parent.size, parentIndex);
2384
2448
  const newSibling = new LeafNode(parent.view, grandParent.orientation, parent.size);
2385
2449
  newParent.addChild(newSibling, newSiblingSize, 0);
@@ -2618,14 +2682,18 @@ define(['exports'], (function (exports) { 'use strict';
2618
2682
  this.onDidActiveChange = this._onDidActiveChange.event;
2619
2683
  this._bufferOnDidLayoutChange = new AsapEvent();
2620
2684
  this.onDidLayoutChange = this._bufferOnDidLayoutChange.onEvent;
2685
+ this._onDidViewVisibilityChangeMicroTaskQueue = new AsapEvent();
2686
+ this.onDidViewVisibilityChangeMicroTaskQueue = this._onDidViewVisibilityChangeMicroTaskQueue.onEvent;
2621
2687
  this.element.style.height = '100%';
2622
2688
  this.element.style.width = '100%';
2623
2689
  options.parentElement.appendChild(this.element);
2624
- this.gridview = new Gridview(!!options.proportionalLayout, options.styles, options.orientation);
2690
+ this.gridview = new Gridview(!!options.proportionalLayout, options.styles, options.orientation, options.locked, options.margin);
2625
2691
  this.gridview.locked = !!options.locked;
2626
2692
  this.element.appendChild(this.gridview.element);
2627
2693
  this.layout(0, 0, true); // set some elements height/widths
2628
- this.addDisposables(exports.DockviewDisposable.from(() => {
2694
+ this.addDisposables(this.gridview.onDidViewVisibilityChange(() => this._onDidViewVisibilityChangeMicroTaskQueue.fire()), this.onDidViewVisibilityChangeMicroTaskQueue(() => {
2695
+ this.layout(this.width, this.height, true);
2696
+ }), exports.DockviewDisposable.from(() => {
2629
2697
  var _a;
2630
2698
  (_a = this.element.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(this.element);
2631
2699
  }), this.gridview.onDidChange(() => {
@@ -3239,6 +3307,9 @@ define(['exports'], (function (exports) { 'use strict';
3239
3307
  get onDidRemovePanel() {
3240
3308
  return this.component.onDidRemovePanel;
3241
3309
  }
3310
+ get onDidMovePanel() {
3311
+ return this.component.onDidMovePanel;
3312
+ }
3242
3313
  /**
3243
3314
  * Invoked after a layout is deserialzied using the `fromJSON` method.
3244
3315
  */
@@ -3379,8 +3450,8 @@ define(['exports'], (function (exports) { 'use strict';
3379
3450
  /**
3380
3451
  * Add a floating group
3381
3452
  */
3382
- addFloatingGroup(item, coord) {
3383
- return this.component.addFloatingGroup(item, coord);
3453
+ addFloatingGroup(item, options) {
3454
+ return this.component.addFloatingGroup(item, options);
3384
3455
  }
3385
3456
  /**
3386
3457
  * Create a component from a serialized object.
@@ -3430,6 +3501,9 @@ define(['exports'], (function (exports) { 'use strict';
3430
3501
  addPopoutGroup(item, options) {
3431
3502
  return this.component.addPopoutGroup(item, options);
3432
3503
  }
3504
+ setGap(gap) {
3505
+ this.component.updateOptions({ gap });
3506
+ }
3433
3507
  }
3434
3508
 
3435
3509
  class DragHandler extends CompositeDisposable {
@@ -4799,7 +4873,8 @@ define(['exports'], (function (exports) { 'use strict';
4799
4873
  this.accessor.addFloatingGroup(this.group, {
4800
4874
  x: left - rootLeft + 20,
4801
4875
  y: top - rootTop + 20,
4802
- }, { inDragMode: true });
4876
+ inDragMode: true,
4877
+ });
4803
4878
  }
4804
4879
  }), addDisposableListener(this.tabContainer, 'mousedown', (event) => {
4805
4880
  if (event.defaultPrevented) {
@@ -4868,7 +4943,8 @@ define(['exports'], (function (exports) { 'use strict';
4868
4943
  this.accessor.addFloatingGroup(panel, {
4869
4944
  x: left - rootLeft,
4870
4945
  y: top - rootTop,
4871
- }, { inDragMode: true });
4946
+ inDragMode: true,
4947
+ });
4872
4948
  return;
4873
4949
  }
4874
4950
  const isLeftClick = event.button === 0;
@@ -4941,6 +5017,7 @@ define(['exports'], (function (exports) { 'use strict';
4941
5017
  rootOverlayModel: undefined,
4942
5018
  locked: undefined,
4943
5019
  disableDnd: undefined,
5020
+ gap: undefined,
4944
5021
  };
4945
5022
  return Object.keys(properties);
4946
5023
  })();
@@ -5671,6 +5748,9 @@ define(['exports'], (function (exports) { 'use strict';
5671
5748
  get isActive() {
5672
5749
  return this.api.isActive;
5673
5750
  }
5751
+ get isVisible() {
5752
+ return this.api.isVisible;
5753
+ }
5674
5754
  constructor(id, component, options, api) {
5675
5755
  super(id, component, api !== null && api !== void 0 ? api : new GridviewPanelApiImpl(id, component));
5676
5756
  this._evaluatedMinimumWidth = 0;
@@ -6207,52 +6287,40 @@ define(['exports'], (function (exports) { 'use strict';
6207
6287
  }
6208
6288
  constructor() {
6209
6289
  super();
6210
- //
6211
- this.params = {};
6212
6290
  this._element = document.createElement('div');
6213
6291
  this._element.className = 'dv-default-tab';
6214
- //
6215
6292
  this._content = document.createElement('div');
6216
6293
  this._content.className = 'dv-default-tab-content';
6217
6294
  this.action = document.createElement('div');
6218
6295
  this.action.className = 'dv-default-tab-action';
6219
6296
  this.action.appendChild(createCloseButton());
6220
- //
6221
6297
  this._element.appendChild(this._content);
6222
6298
  this._element.appendChild(this.action);
6223
- //
6224
6299
  this.addDisposables(addDisposableListener(this.action, 'mousedown', (ev) => {
6225
6300
  ev.preventDefault();
6226
6301
  }));
6227
6302
  this.render();
6228
6303
  }
6229
- update(event) {
6230
- this.params = Object.assign(Object.assign({}, this.params), event.params);
6231
- this.render();
6232
- }
6233
- focus() {
6234
- //noop
6235
- }
6236
6304
  init(params) {
6237
- this.params = params;
6238
- this._content.textContent = params.title;
6239
- addDisposableListener(this.action, 'click', (ev) => {
6240
- ev.preventDefault(); //
6241
- this.params.api.close();
6242
- });
6243
- }
6244
- onGroupChange(_group) {
6245
- this.render();
6246
- }
6247
- onPanelVisibleChange(_isPanelVisible) {
6305
+ this._title = params.title;
6306
+ this.addDisposables(params.api.onDidTitleChange((event) => {
6307
+ this._title = event.title;
6308
+ this.render();
6309
+ }), addDisposableListener(this.action, 'mousedown', (ev) => {
6310
+ ev.preventDefault();
6311
+ }), addDisposableListener(this.action, 'click', (ev) => {
6312
+ if (ev.defaultPrevented) {
6313
+ return;
6314
+ }
6315
+ ev.preventDefault();
6316
+ params.api.close();
6317
+ }));
6248
6318
  this.render();
6249
6319
  }
6250
- layout(_width, _height) {
6251
- // noop
6252
- }
6253
6320
  render() {
6254
- if (this._content.textContent !== this.params.title) {
6255
- this._content.textContent = this.params.title;
6321
+ var _a;
6322
+ if (this._content.textContent !== this._title) {
6323
+ this._content.textContent = (_a = this._title) !== null && _a !== void 0 ? _a : '';
6256
6324
  }
6257
6325
  }
6258
6326
  }
@@ -6445,12 +6513,7 @@ define(['exports'], (function (exports) { 'use strict';
6445
6513
  this._element.appendChild(this.options.content);
6446
6514
  this.options.container.appendChild(this._element);
6447
6515
  // if input bad resize within acceptable boundaries
6448
- this.setBounds({
6449
- height: this.options.height,
6450
- width: this.options.width,
6451
- top: this.options.top,
6452
- left: this.options.left,
6453
- });
6516
+ this.setBounds(Object.assign(Object.assign(Object.assign(Object.assign({ height: this.options.height, width: this.options.width }, ('top' in this.options && { top: this.options.top })), ('bottom' in this.options && { bottom: this.options.bottom })), ('left' in this.options && { left: this.options.left })), ('right' in this.options && { right: this.options.right })));
6454
6517
  }
6455
6518
  setBounds(bounds = {}) {
6456
6519
  if (typeof bounds.height === 'number') {
@@ -6459,11 +6522,25 @@ define(['exports'], (function (exports) { 'use strict';
6459
6522
  if (typeof bounds.width === 'number') {
6460
6523
  this._element.style.width = `${bounds.width}px`;
6461
6524
  }
6462
- if (typeof bounds.top === 'number') {
6525
+ if ('top' in bounds && typeof bounds.top === 'number') {
6463
6526
  this._element.style.top = `${bounds.top}px`;
6527
+ this._element.style.bottom = 'auto';
6528
+ this.verticalAlignment = 'top';
6529
+ }
6530
+ if ('bottom' in bounds && typeof bounds.bottom === 'number') {
6531
+ this._element.style.bottom = `${bounds.bottom}px`;
6532
+ this._element.style.top = 'auto';
6533
+ this.verticalAlignment = 'bottom';
6464
6534
  }
6465
- if (typeof bounds.left === 'number') {
6535
+ if ('left' in bounds && typeof bounds.left === 'number') {
6466
6536
  this._element.style.left = `${bounds.left}px`;
6537
+ this._element.style.right = 'auto';
6538
+ this.horiziontalAlignment = 'left';
6539
+ }
6540
+ if ('right' in bounds && typeof bounds.right === 'number') {
6541
+ this._element.style.right = `${bounds.right}px`;
6542
+ this._element.style.left = 'auto';
6543
+ this.horiziontalAlignment = 'right';
6467
6544
  }
6468
6545
  const containerRect = this.options.container.getBoundingClientRect();
6469
6546
  const overlayRect = this._element.getBoundingClientRect();
@@ -6471,24 +6548,54 @@ define(['exports'], (function (exports) { 'use strict';
6471
6548
  // a minimum width of minimumViewportWidth must be inside the viewport
6472
6549
  const xOffset = Math.max(0, this.getMinimumWidth(overlayRect.width));
6473
6550
  // a minimum height of minimumViewportHeight must be inside the viewport
6474
- const yOffset = typeof this.options.minimumInViewportHeight === 'number'
6475
- ? Math.max(0, this.getMinimumHeight(overlayRect.height))
6476
- : 0;
6477
- const left = clamp(overlayRect.left - containerRect.left, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));
6478
- const top = clamp(overlayRect.top - containerRect.top, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));
6479
- this._element.style.left = `${left}px`;
6480
- this._element.style.top = `${top}px`;
6551
+ const yOffset = Math.max(0, this.getMinimumHeight(overlayRect.height));
6552
+ if (this.verticalAlignment === 'top') {
6553
+ const top = clamp(overlayRect.top - containerRect.top, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));
6554
+ this._element.style.top = `${top}px`;
6555
+ this._element.style.bottom = 'auto';
6556
+ }
6557
+ if (this.verticalAlignment === 'bottom') {
6558
+ const bottom = clamp(containerRect.bottom - overlayRect.bottom, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));
6559
+ this._element.style.bottom = `${bottom}px`;
6560
+ this._element.style.top = 'auto';
6561
+ }
6562
+ if (this.horiziontalAlignment === 'left') {
6563
+ const left = clamp(overlayRect.left - containerRect.left, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));
6564
+ this._element.style.left = `${left}px`;
6565
+ this._element.style.right = 'auto';
6566
+ }
6567
+ if (this.horiziontalAlignment === 'right') {
6568
+ const right = clamp(containerRect.right - overlayRect.right, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));
6569
+ this._element.style.right = `${right}px`;
6570
+ this._element.style.left = 'auto';
6571
+ }
6481
6572
  this._onDidChange.fire();
6482
6573
  }
6483
6574
  toJSON() {
6484
6575
  const container = this.options.container.getBoundingClientRect();
6485
6576
  const element = this._element.getBoundingClientRect();
6486
- return {
6487
- top: element.top - container.top,
6488
- left: element.left - container.left,
6489
- width: element.width,
6490
- height: element.height,
6491
- };
6577
+ const result = {};
6578
+ if (this.verticalAlignment === 'top') {
6579
+ result.top = parseFloat(this._element.style.top);
6580
+ }
6581
+ else if (this.verticalAlignment === 'bottom') {
6582
+ result.bottom = parseFloat(this._element.style.bottom);
6583
+ }
6584
+ else {
6585
+ result.top = element.top - container.top;
6586
+ }
6587
+ if (this.horiziontalAlignment === 'left') {
6588
+ result.left = parseFloat(this._element.style.left);
6589
+ }
6590
+ else if (this.horiziontalAlignment === 'right') {
6591
+ result.right = parseFloat(this._element.style.right);
6592
+ }
6593
+ else {
6594
+ result.left = element.left - container.left;
6595
+ }
6596
+ result.width = element.width;
6597
+ result.height = element.height;
6598
+ return result;
6492
6599
  }
6493
6600
  setupDrag(dragTarget, options = { inDragMode: false }) {
6494
6601
  const move = new MutableDisposable();
@@ -6520,12 +6627,30 @@ define(['exports'], (function (exports) { 'use strict';
6520
6627
  };
6521
6628
  }
6522
6629
  const xOffset = Math.max(0, this.getMinimumWidth(overlayRect.width));
6523
- const yOffset = Math.max(0, this.options.minimumInViewportHeight
6524
- ? this.getMinimumHeight(overlayRect.height)
6525
- : 0);
6526
- const left = clamp(x - offset.x, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));
6630
+ const yOffset = Math.max(0, this.getMinimumHeight(overlayRect.height));
6527
6631
  const top = clamp(y - offset.y, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));
6528
- this.setBounds({ top, left });
6632
+ const bottom = clamp(offset.y -
6633
+ y +
6634
+ containerRect.height -
6635
+ overlayRect.height, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));
6636
+ const left = clamp(x - offset.x, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));
6637
+ const right = clamp(offset.x - x + containerRect.width - overlayRect.width, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));
6638
+ const bounds = {};
6639
+ // Anchor to top or to bottom depending on which one is closer
6640
+ if (top <= bottom) {
6641
+ bounds.top = top;
6642
+ }
6643
+ else {
6644
+ bounds.bottom = bottom;
6645
+ }
6646
+ // Anchor to left or to right depending on which one is closer
6647
+ if (left <= right) {
6648
+ bounds.left = left;
6649
+ }
6650
+ else {
6651
+ bounds.right = right;
6652
+ }
6653
+ this.setBounds(bounds);
6529
6654
  }), addDisposableWindowListener(window, 'mouseup', () => {
6530
6655
  toggleClass(this._element, 'dv-resize-container-dragging', false);
6531
6656
  move.dispose();
@@ -6593,8 +6718,10 @@ define(['exports'], (function (exports) { 'use strict';
6593
6718
  };
6594
6719
  }
6595
6720
  let top = undefined;
6721
+ let bottom = undefined;
6596
6722
  let height = undefined;
6597
6723
  let left = undefined;
6724
+ let right = undefined;
6598
6725
  let width = undefined;
6599
6726
  const moveTop = () => {
6600
6727
  top = clamp(y, -Number.MAX_VALUE, startPosition.originalY +
@@ -6608,6 +6735,7 @@ define(['exports'], (function (exports) { 'use strict';
6608
6735
  startPosition.originalY +
6609
6736
  startPosition.originalHeight -
6610
6737
  top;
6738
+ bottom = containerRect.height - top - height;
6611
6739
  };
6612
6740
  const moveBottom = () => {
6613
6741
  top =
@@ -6619,6 +6747,7 @@ define(['exports'], (function (exports) { 'use strict';
6619
6747
  ? -top +
6620
6748
  this.options.minimumInViewportHeight
6621
6749
  : Overlay.MINIMUM_HEIGHT, Number.MAX_VALUE);
6750
+ bottom = containerRect.height - top - height;
6622
6751
  };
6623
6752
  const moveLeft = () => {
6624
6753
  left = clamp(x, -Number.MAX_VALUE, startPosition.originalX +
@@ -6632,6 +6761,7 @@ define(['exports'], (function (exports) { 'use strict';
6632
6761
  startPosition.originalX +
6633
6762
  startPosition.originalWidth -
6634
6763
  left;
6764
+ right = containerRect.width - left - width;
6635
6765
  };
6636
6766
  const moveRight = () => {
6637
6767
  left =
@@ -6643,6 +6773,7 @@ define(['exports'], (function (exports) { 'use strict';
6643
6773
  ? -left +
6644
6774
  this.options.minimumInViewportWidth
6645
6775
  : Overlay.MINIMUM_WIDTH, Number.MAX_VALUE);
6776
+ right = containerRect.width - left - width;
6646
6777
  };
6647
6778
  switch (direction) {
6648
6779
  case 'top':
@@ -6674,7 +6805,24 @@ define(['exports'], (function (exports) { 'use strict';
6674
6805
  moveRight();
6675
6806
  break;
6676
6807
  }
6677
- this.setBounds({ height, width, top, left });
6808
+ const bounds = {};
6809
+ // Anchor to top or to bottom depending on which one is closer
6810
+ if (top <= bottom) {
6811
+ bounds.top = top;
6812
+ }
6813
+ else {
6814
+ bounds.bottom = bottom;
6815
+ }
6816
+ // Anchor to left or to right depending on which one is closer
6817
+ if (left <= right) {
6818
+ bounds.left = left;
6819
+ }
6820
+ else {
6821
+ bounds.right = right;
6822
+ }
6823
+ bounds.height = height;
6824
+ bounds.width = width;
6825
+ this.setBounds(bounds);
6678
6826
  }), {
6679
6827
  dispose: () => {
6680
6828
  for (const iframe of iframes) {
@@ -6697,7 +6845,7 @@ define(['exports'], (function (exports) { 'use strict';
6697
6845
  if (typeof this.options.minimumInViewportHeight === 'number') {
6698
6846
  return height - this.options.minimumInViewportHeight;
6699
6847
  }
6700
- return height;
6848
+ return 0;
6701
6849
  }
6702
6850
  dispose() {
6703
6851
  this._element.remove();
@@ -6720,7 +6868,7 @@ define(['exports'], (function (exports) { 'use strict';
6720
6868
  }
6721
6869
 
6722
6870
  const DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE = 100;
6723
- const DEFAULT_FLOATING_GROUP_POSITION = { left: 100, top: 100 };
6871
+ const DEFAULT_FLOATING_GROUP_POSITION = { left: 100, top: 100, width: 300, height: 300 };
6724
6872
 
6725
6873
  function createFocusableElement() {
6726
6874
  const element = document.createElement('div');
@@ -7086,6 +7234,7 @@ define(['exports'], (function (exports) { 'use strict';
7086
7234
  parentElement: options.parentElement,
7087
7235
  disableAutoResizing: options.disableAutoResizing,
7088
7236
  locked: options.locked,
7237
+ margin: options.gap,
7089
7238
  });
7090
7239
  this.nextGroupId = sequentialNumberGenerator();
7091
7240
  this._deserializer = new DefaultDockviewDeserialzier(this);
@@ -7111,9 +7260,9 @@ define(['exports'], (function (exports) { 'use strict';
7111
7260
  this._onDidActivePanelChange = new Emitter();
7112
7261
  this.onDidActivePanelChange = this._onDidActivePanelChange.event;
7113
7262
  this._onDidMovePanel = new Emitter();
7263
+ this.onDidMovePanel = this._onDidMovePanel.event;
7114
7264
  this._floatingGroups = [];
7115
7265
  this._popoutGroups = [];
7116
- this._ignoreEvents = 0;
7117
7266
  this._onDidRemoveGroup = new Emitter();
7118
7267
  this.onDidRemoveGroup = this._onDidRemoveGroup.event;
7119
7268
  this._onDidAddGroup = new Emitter();
@@ -7127,7 +7276,9 @@ define(['exports'], (function (exports) { 'use strict';
7127
7276
  this.overlayRenderContainer = new OverlayRenderContainer(gready);
7128
7277
  toggleClass(this.gridview.element, 'dv-dockview', true);
7129
7278
  toggleClass(this.element, 'dv-debug', !!options.debug);
7130
- this.addDisposables(this.overlayRenderContainer, this._onWillDragPanel, this._onWillDragGroup, this._onWillShowOverlay, this._onDidActivePanelChange, this._onDidAddPanel, this._onDidRemovePanel, this._onDidLayoutFromJSON, this._onDidDrop, this._onWillDrop, this._onDidMovePanel, this._onDidAddGroup, this._onDidRemoveGroup, this._onDidActiveGroupChange, this._onUnhandledDragOverEvent, this.onDidAdd((event) => {
7279
+ this.addDisposables(this.overlayRenderContainer, this._onWillDragPanel, this._onWillDragGroup, this._onWillShowOverlay, this._onDidActivePanelChange, this._onDidAddPanel, this._onDidRemovePanel, this._onDidLayoutFromJSON, this._onDidDrop, this._onWillDrop, this._onDidMovePanel, this._onDidAddGroup, this._onDidRemoveGroup, this._onDidActiveGroupChange, this._onUnhandledDragOverEvent, this.onDidViewVisibilityChangeMicroTaskQueue(() => {
7280
+ this.updateWatermark();
7281
+ }), this.onDidAdd((event) => {
7131
7282
  if (!this._moving) {
7132
7283
  this._onDidAddGroup.fire(event);
7133
7284
  }
@@ -7141,7 +7292,7 @@ define(['exports'], (function (exports) { 'use strict';
7141
7292
  }
7142
7293
  }), exports.DockviewEvent.any(this.onDidAdd, this.onDidRemove)(() => {
7143
7294
  this.updateWatermark();
7144
- }), exports.DockviewEvent.any(this.onDidAddPanel, this.onDidRemovePanel, this.onDidActivePanelChange)(() => {
7295
+ }), exports.DockviewEvent.any(this.onDidAddPanel, this.onDidRemovePanel, this.onDidAddGroup, this.onDidRemove, this.onDidMovePanel, this.onDidActivePanelChange)(() => {
7145
7296
  this._bufferOnDidLayoutChange.fire();
7146
7297
  }), exports.DockviewDisposable.from(() => {
7147
7298
  // iterate over a copy of the array since .dispose() mutates the original array
@@ -7392,8 +7543,8 @@ define(['exports'], (function (exports) { 'use strict';
7392
7543
  console.error('dockview: failed to create popout window', err);
7393
7544
  });
7394
7545
  }
7395
- addFloatingGroup(item, coord, options) {
7396
- var _a, _b, _c, _d, _e, _f, _g;
7546
+ addFloatingGroup(item, options) {
7547
+ var _a, _b, _c, _d, _e;
7397
7548
  let group;
7398
7549
  if (item instanceof DockviewPanel) {
7399
7550
  group = this.createGroup();
@@ -7438,26 +7589,62 @@ define(['exports'], (function (exports) { 'use strict';
7438
7589
  }
7439
7590
  }
7440
7591
  group.model.location = { type: 'floating' };
7441
- const overlayLeft = typeof (coord === null || coord === void 0 ? void 0 : coord.x) === 'number'
7442
- ? Math.max(coord.x, 0)
7443
- : DEFAULT_FLOATING_GROUP_POSITION.left;
7444
- const overlayTop = typeof (coord === null || coord === void 0 ? void 0 : coord.y) === 'number'
7445
- ? Math.max(coord.y, 0)
7446
- : DEFAULT_FLOATING_GROUP_POSITION.top;
7447
- const overlay = new Overlay({
7448
- container: this.gridview.element,
7449
- content: group.element,
7450
- height: (_b = coord === null || coord === void 0 ? void 0 : coord.height) !== null && _b !== void 0 ? _b : 300,
7451
- width: (_c = coord === null || coord === void 0 ? void 0 : coord.width) !== null && _c !== void 0 ? _c : 300,
7452
- left: overlayLeft,
7453
- top: overlayTop,
7454
- minimumInViewportWidth: this.options.floatingGroupBounds === 'boundedWithinViewport'
7592
+ function getAnchoredBox() {
7593
+ if (options === null || options === void 0 ? void 0 : options.position) {
7594
+ const result = {};
7595
+ if ('left' in options.position) {
7596
+ result.left = Math.max(options.position.left, 0);
7597
+ }
7598
+ else if ('right' in options.position) {
7599
+ result.right = Math.max(options.position.right, 0);
7600
+ }
7601
+ else {
7602
+ result.left = DEFAULT_FLOATING_GROUP_POSITION.left;
7603
+ }
7604
+ if ('top' in options.position) {
7605
+ result.top = Math.max(options.position.top, 0);
7606
+ }
7607
+ else if ('bottom' in options.position) {
7608
+ result.bottom = Math.max(options.position.bottom, 0);
7609
+ }
7610
+ else {
7611
+ result.top = DEFAULT_FLOATING_GROUP_POSITION.top;
7612
+ }
7613
+ if ('width' in options.position) {
7614
+ result.width = Math.max(options.position.width, 0);
7615
+ }
7616
+ else {
7617
+ result.width = DEFAULT_FLOATING_GROUP_POSITION.width;
7618
+ }
7619
+ if ('height' in options.position) {
7620
+ result.height = Math.max(options.position.height, 0);
7621
+ }
7622
+ else {
7623
+ result.height = DEFAULT_FLOATING_GROUP_POSITION.height;
7624
+ }
7625
+ return result;
7626
+ }
7627
+ return {
7628
+ left: typeof (options === null || options === void 0 ? void 0 : options.x) === 'number'
7629
+ ? Math.max(options.x, 0)
7630
+ : DEFAULT_FLOATING_GROUP_POSITION.left,
7631
+ top: typeof (options === null || options === void 0 ? void 0 : options.y) === 'number'
7632
+ ? Math.max(options.y, 0)
7633
+ : DEFAULT_FLOATING_GROUP_POSITION.top,
7634
+ width: typeof (options === null || options === void 0 ? void 0 : options.width) === 'number'
7635
+ ? Math.max(options.width, 0)
7636
+ : DEFAULT_FLOATING_GROUP_POSITION.width,
7637
+ height: typeof (options === null || options === void 0 ? void 0 : options.height) === 'number'
7638
+ ? Math.max(options.height, 0)
7639
+ : DEFAULT_FLOATING_GROUP_POSITION.height,
7640
+ };
7641
+ }
7642
+ const anchoredBox = getAnchoredBox();
7643
+ const overlay = new Overlay(Object.assign(Object.assign({ container: this.gridview.element, content: group.element }, anchoredBox), { minimumInViewportWidth: this.options.floatingGroupBounds === 'boundedWithinViewport'
7455
7644
  ? undefined
7456
- : (_e = (_d = this.options.floatingGroupBounds) === null || _d === void 0 ? void 0 : _d.minimumWidthWithinViewport) !== null && _e !== void 0 ? _e : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,
7457
- minimumInViewportHeight: this.options.floatingGroupBounds === 'boundedWithinViewport'
7645
+ : (_c = (_b = this.options.floatingGroupBounds) === null || _b === void 0 ? void 0 : _b.minimumWidthWithinViewport) !== null && _c !== void 0 ? _c : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE, minimumInViewportHeight: this.options.floatingGroupBounds === 'boundedWithinViewport'
7458
7646
  ? undefined
7459
- : (_g = (_f = this.options.floatingGroupBounds) === null || _f === void 0 ? void 0 : _f.minimumHeightWithinViewport) !== null && _g !== void 0 ? _g : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,
7460
- });
7647
+ : (_e = (_d = this.options.floatingGroupBounds) === null || _d === void 0 ? void 0 : _d.minimumHeightWithinViewport) !== null && _e !== void 0 ? _e : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE }));
7461
7648
  const el = group.element.querySelector('.void-container');
7462
7649
  if (!el) {
7463
7650
  throw new Error('failed to find drag handle');
@@ -7555,12 +7742,18 @@ define(['exports'], (function (exports) { 'use strict';
7555
7742
  group.overlay.minimumInViewportWidth =
7556
7743
  (_b = this.options.floatingGroupBounds) === null || _b === void 0 ? void 0 : _b.minimumWidthWithinViewport;
7557
7744
  }
7558
- group.overlay.setBounds({});
7745
+ group.overlay.setBounds();
7559
7746
  }
7560
7747
  }
7561
7748
  if (changed_rootOverlayOptions) {
7562
7749
  this._rootDropTarget.setOverlayModel(options.rootOverlayModel);
7563
7750
  }
7751
+ if (this.gridview.margin !== 0 && options.gap === undefined) {
7752
+ this.gridview.margin = 0;
7753
+ }
7754
+ if (typeof options.gap === 'number') {
7755
+ this.gridview.margin = options.gap;
7756
+ }
7564
7757
  this.layout(this.gridview.width, this.gridview.height, true);
7565
7758
  }
7566
7759
  layout(width, height, forceResize) {
@@ -7722,11 +7915,10 @@ define(['exports'], (function (exports) { 'use strict';
7722
7915
  const { data, position } = serializedFloatingGroup;
7723
7916
  const group = createGroupFromSerializedState(data);
7724
7917
  this.addFloatingGroup(group, {
7725
- x: position.left,
7726
- y: position.top,
7727
- height: position.height,
7728
- width: position.width,
7729
- }, { skipRemoveGroup: true, inDragMode: false });
7918
+ position: position,
7919
+ skipRemoveGroup: true,
7920
+ inDragMode: false,
7921
+ });
7730
7922
  }
7731
7923
  const serializedPopoutGroups = (_b = data.popoutGroups) !== null && _b !== void 0 ? _b : [];
7732
7924
  for (const serializedPopoutGroup of serializedPopoutGroups) {
@@ -7861,11 +8053,7 @@ define(['exports'], (function (exports) { 'use strict';
7861
8053
  options.floating !== null
7862
8054
  ? options.floating
7863
8055
  : {};
7864
- this.addFloatingGroup(group, o, {
7865
- inDragMode: false,
7866
- skipRemoveGroup: true,
7867
- skipActiveGroup: true,
7868
- });
8056
+ this.addFloatingGroup(group, Object.assign(Object.assign({}, o), { inDragMode: false, skipRemoveGroup: true, skipActiveGroup: true }));
7869
8057
  panel = this.createPanel(options, group);
7870
8058
  group.model.openPanel(panel, {
7871
8059
  skipSetActive: options.inactive,
@@ -7904,11 +8092,7 @@ define(['exports'], (function (exports) { 'use strict';
7904
8092
  options.floating !== null
7905
8093
  ? options.floating
7906
8094
  : {};
7907
- this.addFloatingGroup(group, coordinates, {
7908
- inDragMode: false,
7909
- skipRemoveGroup: true,
7910
- skipActiveGroup: true,
7911
- });
8095
+ this.addFloatingGroup(group, Object.assign(Object.assign({}, coordinates), { inDragMode: false, skipRemoveGroup: true, skipActiveGroup: true }));
7912
8096
  panel = this.createPanel(options, group);
7913
8097
  group.model.openPanel(panel, {
7914
8098
  skipSetActive: options.inactive,
@@ -7963,6 +8147,7 @@ define(['exports'], (function (exports) { 'use strict';
7963
8147
  });
7964
8148
  const watermarkContainer = document.createElement('div');
7965
8149
  watermarkContainer.className = 'dv-watermark-container';
8150
+ addTestId(watermarkContainer, 'watermark-component');
7966
8151
  watermarkContainer.appendChild(this.watermark.element);
7967
8152
  this.gridview.element.appendChild(watermarkContainer);
7968
8153
  }
@@ -8151,6 +8336,7 @@ define(['exports'], (function (exports) { 'use strict';
8151
8336
  this.doSetGroupAndPanelActive(destinationGroup);
8152
8337
  this._onDidMovePanel.fire({
8153
8338
  panel: removedPanel,
8339
+ from: sourceGroup,
8154
8340
  });
8155
8341
  }
8156
8342
  else {
@@ -8174,6 +8360,10 @@ define(['exports'], (function (exports) { 'use strict';
8174
8360
  // if a group has one tab - we are essentially moving the 'group'
8175
8361
  // which is equivalent to swapping two views in this case
8176
8362
  this.gridview.moveView(sourceParentLocation, from, to);
8363
+ this._onDidMovePanel.fire({
8364
+ panel: this.getGroupPanel(sourceItemId),
8365
+ from: sourceGroup,
8366
+ });
8177
8367
  return;
8178
8368
  }
8179
8369
  }
@@ -8187,6 +8377,10 @@ define(['exports'], (function (exports) { 'use strict';
8187
8377
  const location = getRelativeLocation(this.gridview.orientation, updatedReferenceLocation, destinationTarget);
8188
8378
  this.movingLock(() => this.doAddGroup(targetGroup, location));
8189
8379
  this.doSetGroupAndPanelActive(targetGroup);
8380
+ this._onDidMovePanel.fire({
8381
+ panel: this.getGroupPanel(sourceItemId),
8382
+ from: sourceGroup,
8383
+ });
8190
8384
  }
8191
8385
  else {
8192
8386
  /**
@@ -8206,6 +8400,10 @@ define(['exports'], (function (exports) { 'use strict';
8206
8400
  skipSetGroupActive: true,
8207
8401
  }));
8208
8402
  this.doSetGroupAndPanelActive(group);
8403
+ this._onDidMovePanel.fire({
8404
+ panel: removedPanel,
8405
+ from: sourceGroup,
8406
+ });
8209
8407
  }
8210
8408
  }
8211
8409
  }
@@ -8230,9 +8428,6 @@ define(['exports'], (function (exports) { 'use strict';
8230
8428
  }
8231
8429
  });
8232
8430
  this.doSetGroupAndPanelActive(to);
8233
- panels.forEach((panel) => {
8234
- this._onDidMovePanel.fire({ panel });
8235
- });
8236
8431
  }
8237
8432
  else {
8238
8433
  switch (from.api.location.type) {
@@ -8258,10 +8453,10 @@ define(['exports'], (function (exports) { 'use strict';
8258
8453
  const referenceLocation = getGridLocation(to.element);
8259
8454
  const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, target);
8260
8455
  this.gridview.addView(from, exports.Sizing.Distribute, dropLocation);
8261
- from.panels.forEach((panel) => {
8262
- this._onDidMovePanel.fire({ panel });
8263
- });
8264
8456
  }
8457
+ from.panels.forEach((panel) => {
8458
+ this._onDidMovePanel.fire({ panel, from });
8459
+ });
8265
8460
  }
8266
8461
  doSetGroupActive(group) {
8267
8462
  super.doSetGroupActive(group);