dockview 1.14.2 → 1.15.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * dockview
3
- * @version 1.14.2
3
+ * @version 1.15.1
4
4
  * @link https://github.com/mathuo/dockview
5
5
  * @license MIT
6
6
  */
@@ -33,7 +33,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
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', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
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', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
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', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
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', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
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', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
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', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
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', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
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', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
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', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
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', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
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', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
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', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
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', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
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', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
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', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
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', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
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', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
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', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
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', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
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', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
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', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
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', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
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', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
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', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
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(() => {
@@ -3203,6 +3271,9 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
3203
3271
  get totalPanels() {
3204
3272
  return this.component.totalPanels;
3205
3273
  }
3274
+ get gap() {
3275
+ return this.component.gap;
3276
+ }
3206
3277
  /**
3207
3278
  * Invoked when the active group changes. May be undefined if no group is active.
3208
3279
  */
@@ -3239,6 +3310,9 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
3239
3310
  get onDidRemovePanel() {
3240
3311
  return this.component.onDidRemovePanel;
3241
3312
  }
3313
+ get onDidMovePanel() {
3314
+ return this.component.onDidMovePanel;
3315
+ }
3242
3316
  /**
3243
3317
  * Invoked after a layout is deserialzied using the `fromJSON` method.
3244
3318
  */
@@ -3379,8 +3453,8 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
3379
3453
  /**
3380
3454
  * Add a floating group
3381
3455
  */
3382
- addFloatingGroup(item, coord) {
3383
- return this.component.addFloatingGroup(item, coord);
3456
+ addFloatingGroup(item, options) {
3457
+ return this.component.addFloatingGroup(item, options);
3384
3458
  }
3385
3459
  /**
3386
3460
  * Create a component from a serialized object.
@@ -3430,6 +3504,9 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
3430
3504
  addPopoutGroup(item, options) {
3431
3505
  return this.component.addPopoutGroup(item, options);
3432
3506
  }
3507
+ setGap(gap) {
3508
+ this.component.updateOptions({ gap });
3509
+ }
3433
3510
  }
3434
3511
 
3435
3512
  class DragHandler extends CompositeDisposable {
@@ -4799,7 +4876,8 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
4799
4876
  this.accessor.addFloatingGroup(this.group, {
4800
4877
  x: left - rootLeft + 20,
4801
4878
  y: top - rootTop + 20,
4802
- }, { inDragMode: true });
4879
+ inDragMode: true,
4880
+ });
4803
4881
  }
4804
4882
  }), addDisposableListener(this.tabContainer, 'mousedown', (event) => {
4805
4883
  if (event.defaultPrevented) {
@@ -4868,7 +4946,8 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
4868
4946
  this.accessor.addFloatingGroup(panel, {
4869
4947
  x: left - rootLeft,
4870
4948
  y: top - rootTop,
4871
- }, { inDragMode: true });
4949
+ inDragMode: true,
4950
+ });
4872
4951
  return;
4873
4952
  }
4874
4953
  const isLeftClick = event.button === 0;
@@ -4941,6 +5020,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
4941
5020
  rootOverlayModel: undefined,
4942
5021
  locked: undefined,
4943
5022
  disableDnd: undefined,
5023
+ gap: undefined,
4944
5024
  };
4945
5025
  return Object.keys(properties);
4946
5026
  })();
@@ -5671,6 +5751,9 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
5671
5751
  get isActive() {
5672
5752
  return this.api.isActive;
5673
5753
  }
5754
+ get isVisible() {
5755
+ return this.api.isVisible;
5756
+ }
5674
5757
  constructor(id, component, options, api) {
5675
5758
  super(id, component, api !== null && api !== void 0 ? api : new GridviewPanelApiImpl(id, component));
5676
5759
  this._evaluatedMinimumWidth = 0;
@@ -6433,12 +6516,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
6433
6516
  this._element.appendChild(this.options.content);
6434
6517
  this.options.container.appendChild(this._element);
6435
6518
  // if input bad resize within acceptable boundaries
6436
- this.setBounds({
6437
- height: this.options.height,
6438
- width: this.options.width,
6439
- top: this.options.top,
6440
- left: this.options.left,
6441
- });
6519
+ 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 })));
6442
6520
  }
6443
6521
  setBounds(bounds = {}) {
6444
6522
  if (typeof bounds.height === 'number') {
@@ -6447,11 +6525,25 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
6447
6525
  if (typeof bounds.width === 'number') {
6448
6526
  this._element.style.width = `${bounds.width}px`;
6449
6527
  }
6450
- if (typeof bounds.top === 'number') {
6528
+ if ('top' in bounds && typeof bounds.top === 'number') {
6451
6529
  this._element.style.top = `${bounds.top}px`;
6530
+ this._element.style.bottom = 'auto';
6531
+ this.verticalAlignment = 'top';
6532
+ }
6533
+ if ('bottom' in bounds && typeof bounds.bottom === 'number') {
6534
+ this._element.style.bottom = `${bounds.bottom}px`;
6535
+ this._element.style.top = 'auto';
6536
+ this.verticalAlignment = 'bottom';
6452
6537
  }
6453
- if (typeof bounds.left === 'number') {
6538
+ if ('left' in bounds && typeof bounds.left === 'number') {
6454
6539
  this._element.style.left = `${bounds.left}px`;
6540
+ this._element.style.right = 'auto';
6541
+ this.horiziontalAlignment = 'left';
6542
+ }
6543
+ if ('right' in bounds && typeof bounds.right === 'number') {
6544
+ this._element.style.right = `${bounds.right}px`;
6545
+ this._element.style.left = 'auto';
6546
+ this.horiziontalAlignment = 'right';
6455
6547
  }
6456
6548
  const containerRect = this.options.container.getBoundingClientRect();
6457
6549
  const overlayRect = this._element.getBoundingClientRect();
@@ -6459,24 +6551,54 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
6459
6551
  // a minimum width of minimumViewportWidth must be inside the viewport
6460
6552
  const xOffset = Math.max(0, this.getMinimumWidth(overlayRect.width));
6461
6553
  // a minimum height of minimumViewportHeight must be inside the viewport
6462
- const yOffset = typeof this.options.minimumInViewportHeight === 'number'
6463
- ? Math.max(0, this.getMinimumHeight(overlayRect.height))
6464
- : 0;
6465
- const left = clamp(overlayRect.left - containerRect.left, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));
6466
- const top = clamp(overlayRect.top - containerRect.top, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));
6467
- this._element.style.left = `${left}px`;
6468
- this._element.style.top = `${top}px`;
6554
+ const yOffset = Math.max(0, this.getMinimumHeight(overlayRect.height));
6555
+ if (this.verticalAlignment === 'top') {
6556
+ const top = clamp(overlayRect.top - containerRect.top, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));
6557
+ this._element.style.top = `${top}px`;
6558
+ this._element.style.bottom = 'auto';
6559
+ }
6560
+ if (this.verticalAlignment === 'bottom') {
6561
+ const bottom = clamp(containerRect.bottom - overlayRect.bottom, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));
6562
+ this._element.style.bottom = `${bottom}px`;
6563
+ this._element.style.top = 'auto';
6564
+ }
6565
+ if (this.horiziontalAlignment === 'left') {
6566
+ const left = clamp(overlayRect.left - containerRect.left, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));
6567
+ this._element.style.left = `${left}px`;
6568
+ this._element.style.right = 'auto';
6569
+ }
6570
+ if (this.horiziontalAlignment === 'right') {
6571
+ const right = clamp(containerRect.right - overlayRect.right, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));
6572
+ this._element.style.right = `${right}px`;
6573
+ this._element.style.left = 'auto';
6574
+ }
6469
6575
  this._onDidChange.fire();
6470
6576
  }
6471
6577
  toJSON() {
6472
6578
  const container = this.options.container.getBoundingClientRect();
6473
6579
  const element = this._element.getBoundingClientRect();
6474
- return {
6475
- top: element.top - container.top,
6476
- left: element.left - container.left,
6477
- width: element.width,
6478
- height: element.height,
6479
- };
6580
+ const result = {};
6581
+ if (this.verticalAlignment === 'top') {
6582
+ result.top = parseFloat(this._element.style.top);
6583
+ }
6584
+ else if (this.verticalAlignment === 'bottom') {
6585
+ result.bottom = parseFloat(this._element.style.bottom);
6586
+ }
6587
+ else {
6588
+ result.top = element.top - container.top;
6589
+ }
6590
+ if (this.horiziontalAlignment === 'left') {
6591
+ result.left = parseFloat(this._element.style.left);
6592
+ }
6593
+ else if (this.horiziontalAlignment === 'right') {
6594
+ result.right = parseFloat(this._element.style.right);
6595
+ }
6596
+ else {
6597
+ result.left = element.left - container.left;
6598
+ }
6599
+ result.width = element.width;
6600
+ result.height = element.height;
6601
+ return result;
6480
6602
  }
6481
6603
  setupDrag(dragTarget, options = { inDragMode: false }) {
6482
6604
  const move = new MutableDisposable();
@@ -6508,12 +6630,30 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
6508
6630
  };
6509
6631
  }
6510
6632
  const xOffset = Math.max(0, this.getMinimumWidth(overlayRect.width));
6511
- const yOffset = Math.max(0, this.options.minimumInViewportHeight
6512
- ? this.getMinimumHeight(overlayRect.height)
6513
- : 0);
6514
- const left = clamp(x - offset.x, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));
6633
+ const yOffset = Math.max(0, this.getMinimumHeight(overlayRect.height));
6515
6634
  const top = clamp(y - offset.y, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));
6516
- this.setBounds({ top, left });
6635
+ const bottom = clamp(offset.y -
6636
+ y +
6637
+ containerRect.height -
6638
+ overlayRect.height, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));
6639
+ const left = clamp(x - offset.x, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));
6640
+ const right = clamp(offset.x - x + containerRect.width - overlayRect.width, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));
6641
+ const bounds = {};
6642
+ // Anchor to top or to bottom depending on which one is closer
6643
+ if (top <= bottom) {
6644
+ bounds.top = top;
6645
+ }
6646
+ else {
6647
+ bounds.bottom = bottom;
6648
+ }
6649
+ // Anchor to left or to right depending on which one is closer
6650
+ if (left <= right) {
6651
+ bounds.left = left;
6652
+ }
6653
+ else {
6654
+ bounds.right = right;
6655
+ }
6656
+ this.setBounds(bounds);
6517
6657
  }), addDisposableWindowListener(window, 'mouseup', () => {
6518
6658
  toggleClass(this._element, 'dv-resize-container-dragging', false);
6519
6659
  move.dispose();
@@ -6581,8 +6721,10 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
6581
6721
  };
6582
6722
  }
6583
6723
  let top = undefined;
6724
+ let bottom = undefined;
6584
6725
  let height = undefined;
6585
6726
  let left = undefined;
6727
+ let right = undefined;
6586
6728
  let width = undefined;
6587
6729
  const moveTop = () => {
6588
6730
  top = clamp(y, -Number.MAX_VALUE, startPosition.originalY +
@@ -6596,6 +6738,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
6596
6738
  startPosition.originalY +
6597
6739
  startPosition.originalHeight -
6598
6740
  top;
6741
+ bottom = containerRect.height - top - height;
6599
6742
  };
6600
6743
  const moveBottom = () => {
6601
6744
  top =
@@ -6607,6 +6750,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
6607
6750
  ? -top +
6608
6751
  this.options.minimumInViewportHeight
6609
6752
  : Overlay.MINIMUM_HEIGHT, Number.MAX_VALUE);
6753
+ bottom = containerRect.height - top - height;
6610
6754
  };
6611
6755
  const moveLeft = () => {
6612
6756
  left = clamp(x, -Number.MAX_VALUE, startPosition.originalX +
@@ -6620,6 +6764,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
6620
6764
  startPosition.originalX +
6621
6765
  startPosition.originalWidth -
6622
6766
  left;
6767
+ right = containerRect.width - left - width;
6623
6768
  };
6624
6769
  const moveRight = () => {
6625
6770
  left =
@@ -6631,6 +6776,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
6631
6776
  ? -left +
6632
6777
  this.options.minimumInViewportWidth
6633
6778
  : Overlay.MINIMUM_WIDTH, Number.MAX_VALUE);
6779
+ right = containerRect.width - left - width;
6634
6780
  };
6635
6781
  switch (direction) {
6636
6782
  case 'top':
@@ -6662,7 +6808,24 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
6662
6808
  moveRight();
6663
6809
  break;
6664
6810
  }
6665
- this.setBounds({ height, width, top, left });
6811
+ const bounds = {};
6812
+ // Anchor to top or to bottom depending on which one is closer
6813
+ if (top <= bottom) {
6814
+ bounds.top = top;
6815
+ }
6816
+ else {
6817
+ bounds.bottom = bottom;
6818
+ }
6819
+ // Anchor to left or to right depending on which one is closer
6820
+ if (left <= right) {
6821
+ bounds.left = left;
6822
+ }
6823
+ else {
6824
+ bounds.right = right;
6825
+ }
6826
+ bounds.height = height;
6827
+ bounds.width = width;
6828
+ this.setBounds(bounds);
6666
6829
  }), {
6667
6830
  dispose: () => {
6668
6831
  for (const iframe of iframes) {
@@ -6685,7 +6848,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
6685
6848
  if (typeof this.options.minimumInViewportHeight === 'number') {
6686
6849
  return height - this.options.minimumInViewportHeight;
6687
6850
  }
6688
- return height;
6851
+ return 0;
6689
6852
  }
6690
6853
  dispose() {
6691
6854
  this._element.remove();
@@ -6708,7 +6871,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
6708
6871
  }
6709
6872
 
6710
6873
  const DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE = 100;
6711
- const DEFAULT_FLOATING_GROUP_POSITION = { left: 100, top: 100 };
6874
+ const DEFAULT_FLOATING_GROUP_POSITION = { left: 100, top: 100, width: 300, height: 300 };
6712
6875
 
6713
6876
  function createFocusableElement() {
6714
6877
  const element = document.createElement('div');
@@ -7040,6 +7203,9 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
7040
7203
  get api() {
7041
7204
  return this._api;
7042
7205
  }
7206
+ get gap() {
7207
+ return this.gridview.margin;
7208
+ }
7043
7209
  constructor(options) {
7044
7210
  var _a;
7045
7211
  super({
@@ -7051,6 +7217,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
7051
7217
  parentElement: options.parentElement,
7052
7218
  disableAutoResizing: options.disableAutoResizing,
7053
7219
  locked: options.locked,
7220
+ margin: options.gap,
7054
7221
  });
7055
7222
  this.nextGroupId = sequentialNumberGenerator();
7056
7223
  this._deserializer = new DefaultDockviewDeserialzier(this);
@@ -7076,9 +7243,9 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
7076
7243
  this._onDidActivePanelChange = new Emitter();
7077
7244
  this.onDidActivePanelChange = this._onDidActivePanelChange.event;
7078
7245
  this._onDidMovePanel = new Emitter();
7246
+ this.onDidMovePanel = this._onDidMovePanel.event;
7079
7247
  this._floatingGroups = [];
7080
7248
  this._popoutGroups = [];
7081
- this._ignoreEvents = 0;
7082
7249
  this._onDidRemoveGroup = new Emitter();
7083
7250
  this.onDidRemoveGroup = this._onDidRemoveGroup.event;
7084
7251
  this._onDidAddGroup = new Emitter();
@@ -7092,7 +7259,9 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
7092
7259
  this.overlayRenderContainer = new OverlayRenderContainer(gready);
7093
7260
  toggleClass(this.gridview.element, 'dv-dockview', true);
7094
7261
  toggleClass(this.element, 'dv-debug', !!options.debug);
7095
- 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) => {
7262
+ 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(() => {
7263
+ this.updateWatermark();
7264
+ }), this.onDidAdd((event) => {
7096
7265
  if (!this._moving) {
7097
7266
  this._onDidAddGroup.fire(event);
7098
7267
  }
@@ -7106,7 +7275,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
7106
7275
  }
7107
7276
  }), exports.DockviewEvent.any(this.onDidAdd, this.onDidRemove)(() => {
7108
7277
  this.updateWatermark();
7109
- }), exports.DockviewEvent.any(this.onDidAddPanel, this.onDidRemovePanel, this.onDidActivePanelChange)(() => {
7278
+ }), exports.DockviewEvent.any(this.onDidAddPanel, this.onDidRemovePanel, this.onDidAddGroup, this.onDidRemove, this.onDidMovePanel, this.onDidActivePanelChange)(() => {
7110
7279
  this._bufferOnDidLayoutChange.fire();
7111
7280
  }), exports.DockviewDisposable.from(() => {
7112
7281
  // iterate over a copy of the array since .dispose() mutates the original array
@@ -7206,7 +7375,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
7206
7375
  var _a, _b, _c;
7207
7376
  if (itemToPopout instanceof DockviewPanel &&
7208
7377
  itemToPopout.group.size === 1) {
7209
- return this.addPopoutGroup(itemToPopout.group);
7378
+ return this.addPopoutGroup(itemToPopout.group, options);
7210
7379
  }
7211
7380
  const theme = getDockviewTheme(this.gridview.element);
7212
7381
  const element = this.element;
@@ -7357,8 +7526,8 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
7357
7526
  console.error('dockview: failed to create popout window', err);
7358
7527
  });
7359
7528
  }
7360
- addFloatingGroup(item, coord, options) {
7361
- var _a, _b, _c, _d, _e, _f, _g;
7529
+ addFloatingGroup(item, options) {
7530
+ var _a, _b, _c, _d, _e;
7362
7531
  let group;
7363
7532
  if (item instanceof DockviewPanel) {
7364
7533
  group = this.createGroup();
@@ -7403,26 +7572,62 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
7403
7572
  }
7404
7573
  }
7405
7574
  group.model.location = { type: 'floating' };
7406
- const overlayLeft = typeof (coord === null || coord === void 0 ? void 0 : coord.x) === 'number'
7407
- ? Math.max(coord.x, 0)
7408
- : DEFAULT_FLOATING_GROUP_POSITION.left;
7409
- const overlayTop = typeof (coord === null || coord === void 0 ? void 0 : coord.y) === 'number'
7410
- ? Math.max(coord.y, 0)
7411
- : DEFAULT_FLOATING_GROUP_POSITION.top;
7412
- const overlay = new Overlay({
7413
- container: this.gridview.element,
7414
- content: group.element,
7415
- height: (_b = coord === null || coord === void 0 ? void 0 : coord.height) !== null && _b !== void 0 ? _b : 300,
7416
- width: (_c = coord === null || coord === void 0 ? void 0 : coord.width) !== null && _c !== void 0 ? _c : 300,
7417
- left: overlayLeft,
7418
- top: overlayTop,
7419
- minimumInViewportWidth: this.options.floatingGroupBounds === 'boundedWithinViewport'
7575
+ function getAnchoredBox() {
7576
+ if (options === null || options === void 0 ? void 0 : options.position) {
7577
+ const result = {};
7578
+ if ('left' in options.position) {
7579
+ result.left = Math.max(options.position.left, 0);
7580
+ }
7581
+ else if ('right' in options.position) {
7582
+ result.right = Math.max(options.position.right, 0);
7583
+ }
7584
+ else {
7585
+ result.left = DEFAULT_FLOATING_GROUP_POSITION.left;
7586
+ }
7587
+ if ('top' in options.position) {
7588
+ result.top = Math.max(options.position.top, 0);
7589
+ }
7590
+ else if ('bottom' in options.position) {
7591
+ result.bottom = Math.max(options.position.bottom, 0);
7592
+ }
7593
+ else {
7594
+ result.top = DEFAULT_FLOATING_GROUP_POSITION.top;
7595
+ }
7596
+ if (typeof options.width === 'number') {
7597
+ result.width = Math.max(options.width, 0);
7598
+ }
7599
+ else {
7600
+ result.width = DEFAULT_FLOATING_GROUP_POSITION.width;
7601
+ }
7602
+ if (typeof options.height === 'number') {
7603
+ result.height = Math.max(options.height, 0);
7604
+ }
7605
+ else {
7606
+ result.height = DEFAULT_FLOATING_GROUP_POSITION.height;
7607
+ }
7608
+ return result;
7609
+ }
7610
+ return {
7611
+ left: typeof (options === null || options === void 0 ? void 0 : options.x) === 'number'
7612
+ ? Math.max(options.x, 0)
7613
+ : DEFAULT_FLOATING_GROUP_POSITION.left,
7614
+ top: typeof (options === null || options === void 0 ? void 0 : options.y) === 'number'
7615
+ ? Math.max(options.y, 0)
7616
+ : DEFAULT_FLOATING_GROUP_POSITION.top,
7617
+ width: typeof (options === null || options === void 0 ? void 0 : options.width) === 'number'
7618
+ ? Math.max(options.width, 0)
7619
+ : DEFAULT_FLOATING_GROUP_POSITION.width,
7620
+ height: typeof (options === null || options === void 0 ? void 0 : options.height) === 'number'
7621
+ ? Math.max(options.height, 0)
7622
+ : DEFAULT_FLOATING_GROUP_POSITION.height,
7623
+ };
7624
+ }
7625
+ const anchoredBox = getAnchoredBox();
7626
+ const overlay = new Overlay(Object.assign(Object.assign({ container: this.gridview.element, content: group.element }, anchoredBox), { minimumInViewportWidth: this.options.floatingGroupBounds === 'boundedWithinViewport'
7420
7627
  ? undefined
7421
- : (_e = (_d = this.options.floatingGroupBounds) === null || _d === void 0 ? void 0 : _d.minimumWidthWithinViewport) !== null && _e !== void 0 ? _e : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,
7422
- minimumInViewportHeight: this.options.floatingGroupBounds === 'boundedWithinViewport'
7628
+ : (_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'
7423
7629
  ? undefined
7424
- : (_g = (_f = this.options.floatingGroupBounds) === null || _f === void 0 ? void 0 : _f.minimumHeightWithinViewport) !== null && _g !== void 0 ? _g : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,
7425
- });
7630
+ : (_e = (_d = this.options.floatingGroupBounds) === null || _d === void 0 ? void 0 : _d.minimumHeightWithinViewport) !== null && _e !== void 0 ? _e : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE }));
7426
7631
  const el = group.element.querySelector('.void-container');
7427
7632
  if (!el) {
7428
7633
  throw new Error('failed to find drag handle');
@@ -7520,12 +7725,21 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
7520
7725
  group.overlay.minimumInViewportWidth =
7521
7726
  (_b = this.options.floatingGroupBounds) === null || _b === void 0 ? void 0 : _b.minimumWidthWithinViewport;
7522
7727
  }
7523
- group.overlay.setBounds({});
7728
+ group.overlay.setBounds();
7524
7729
  }
7525
7730
  }
7526
7731
  if (changed_rootOverlayOptions) {
7527
7732
  this._rootDropTarget.setOverlayModel(options.rootOverlayModel);
7528
7733
  }
7734
+ if (
7735
+ // if explicitly set as `undefined`
7736
+ 'gap' in options &&
7737
+ options.gap === undefined) {
7738
+ this.gridview.margin = 0;
7739
+ }
7740
+ if (typeof options.gap === 'number') {
7741
+ this.gridview.margin = options.gap;
7742
+ }
7529
7743
  this.layout(this.gridview.width, this.gridview.height, true);
7530
7744
  }
7531
7745
  layout(width, height, forceResize) {
@@ -7687,11 +7901,10 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
7687
7901
  const { data, position } = serializedFloatingGroup;
7688
7902
  const group = createGroupFromSerializedState(data);
7689
7903
  this.addFloatingGroup(group, {
7690
- x: position.left,
7691
- y: position.top,
7692
- height: position.height,
7693
- width: position.width,
7694
- }, { skipRemoveGroup: true, inDragMode: false });
7904
+ position: position,
7905
+ skipRemoveGroup: true,
7906
+ inDragMode: false,
7907
+ });
7695
7908
  }
7696
7909
  const serializedPopoutGroups = (_b = data.popoutGroups) !== null && _b !== void 0 ? _b : [];
7697
7910
  for (const serializedPopoutGroup of serializedPopoutGroups) {
@@ -7822,15 +8035,11 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
7822
8035
  if (options.floating) {
7823
8036
  const group = this.createGroup();
7824
8037
  this._onDidAddGroup.fire(group);
7825
- const o = typeof options.floating === 'object' &&
8038
+ const floatingGroupOptions = typeof options.floating === 'object' &&
7826
8039
  options.floating !== null
7827
8040
  ? options.floating
7828
8041
  : {};
7829
- this.addFloatingGroup(group, o, {
7830
- inDragMode: false,
7831
- skipRemoveGroup: true,
7832
- skipActiveGroup: true,
7833
- });
8042
+ this.addFloatingGroup(group, Object.assign(Object.assign({}, floatingGroupOptions), { inDragMode: false, skipRemoveGroup: true, skipActiveGroup: true }));
7834
8043
  panel = this.createPanel(options, group);
7835
8044
  group.model.openPanel(panel, {
7836
8045
  skipSetActive: options.inactive,
@@ -7869,11 +8078,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
7869
8078
  options.floating !== null
7870
8079
  ? options.floating
7871
8080
  : {};
7872
- this.addFloatingGroup(group, coordinates, {
7873
- inDragMode: false,
7874
- skipRemoveGroup: true,
7875
- skipActiveGroup: true,
7876
- });
8081
+ this.addFloatingGroup(group, Object.assign(Object.assign({}, coordinates), { inDragMode: false, skipRemoveGroup: true, skipActiveGroup: true }));
7877
8082
  panel = this.createPanel(options, group);
7878
8083
  group.model.openPanel(panel, {
7879
8084
  skipSetActive: options.inactive,
@@ -7928,6 +8133,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
7928
8133
  });
7929
8134
  const watermarkContainer = document.createElement('div');
7930
8135
  watermarkContainer.className = 'dv-watermark-container';
8136
+ addTestId(watermarkContainer, 'watermark-component');
7931
8137
  watermarkContainer.appendChild(this.watermark.element);
7932
8138
  this.gridview.element.appendChild(watermarkContainer);
7933
8139
  }
@@ -8116,6 +8322,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
8116
8322
  this.doSetGroupAndPanelActive(destinationGroup);
8117
8323
  this._onDidMovePanel.fire({
8118
8324
  panel: removedPanel,
8325
+ from: sourceGroup,
8119
8326
  });
8120
8327
  }
8121
8328
  else {
@@ -8139,6 +8346,10 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
8139
8346
  // if a group has one tab - we are essentially moving the 'group'
8140
8347
  // which is equivalent to swapping two views in this case
8141
8348
  this.gridview.moveView(sourceParentLocation, from, to);
8349
+ this._onDidMovePanel.fire({
8350
+ panel: this.getGroupPanel(sourceItemId),
8351
+ from: sourceGroup,
8352
+ });
8142
8353
  return;
8143
8354
  }
8144
8355
  }
@@ -8152,6 +8363,10 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
8152
8363
  const location = getRelativeLocation(this.gridview.orientation, updatedReferenceLocation, destinationTarget);
8153
8364
  this.movingLock(() => this.doAddGroup(targetGroup, location));
8154
8365
  this.doSetGroupAndPanelActive(targetGroup);
8366
+ this._onDidMovePanel.fire({
8367
+ panel: this.getGroupPanel(sourceItemId),
8368
+ from: sourceGroup,
8369
+ });
8155
8370
  }
8156
8371
  else {
8157
8372
  /**
@@ -8171,6 +8386,10 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
8171
8386
  skipSetGroupActive: true,
8172
8387
  }));
8173
8388
  this.doSetGroupAndPanelActive(group);
8389
+ this._onDidMovePanel.fire({
8390
+ panel: removedPanel,
8391
+ from: sourceGroup,
8392
+ });
8174
8393
  }
8175
8394
  }
8176
8395
  }
@@ -8195,9 +8414,6 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
8195
8414
  }
8196
8415
  });
8197
8416
  this.doSetGroupAndPanelActive(to);
8198
- panels.forEach((panel) => {
8199
- this._onDidMovePanel.fire({ panel });
8200
- });
8201
8417
  }
8202
8418
  else {
8203
8419
  switch (from.api.location.type) {
@@ -8223,10 +8439,10 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
8223
8439
  const referenceLocation = getGridLocation(to.element);
8224
8440
  const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, target);
8225
8441
  this.gridview.addView(from, exports.Sizing.Distribute, dropLocation);
8226
- from.panels.forEach((panel) => {
8227
- this._onDidMovePanel.fire({ panel });
8228
- });
8229
8442
  }
8443
+ from.panels.forEach((panel) => {
8444
+ this._onDidMovePanel.fire({ panel, from });
8445
+ });
8230
8446
  }
8231
8447
  doSetGroupActive(group) {
8232
8448
  super.doSetGroupActive(group);