dockview-react 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-react
3
- * @version 1.14.2
3
+ * @version 1.15.1
4
4
  * @link https://github.com/mathuo/dockview
5
5
  * @license MIT
6
6
  */
@@ -36,7 +36,7 @@ function styleInject(css, ref) {
36
36
  }
37
37
  }
38
38
 
39
- 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}";
39
+ 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}";
40
40
  styleInject(css_248z);
41
41
 
42
42
  class TransferObject {
@@ -561,6 +561,9 @@ function isInDocument(element) {
561
561
  }
562
562
  return false;
563
563
  }
564
+ function addTestId(element, id) {
565
+ element.setAttribute('data-testid', id);
566
+ }
564
567
 
565
568
  function tail(arr) {
566
569
  if (arr.length === 0) {
@@ -622,7 +625,11 @@ function remove(array, value) {
622
625
 
623
626
  const clamp = (value, min, max) => {
624
627
  if (min > max) {
625
- throw new Error(`${min} > ${max} is an invalid condition`);
628
+ /**
629
+ * caveat: an error should be thrown here if this was a proper `clamp` function but we need to handle
630
+ * cases where `min` > `max` and in those cases return `min`.
631
+ */
632
+ return min;
626
633
  }
627
634
  return Math.min(max, Math.max(value, min));
628
635
  };
@@ -827,7 +834,14 @@ class Splitview {
827
834
  this._disabled = value;
828
835
  toggleClass(this.element, 'dv-splitview-disabled', value);
829
836
  }
837
+ get margin() {
838
+ return this._margin;
839
+ }
840
+ set margin(value) {
841
+ this._margin = value;
842
+ }
830
843
  constructor(container, options) {
844
+ var _a;
831
845
  this.container = container;
832
846
  this.viewItems = [];
833
847
  this.sashes = [];
@@ -838,6 +852,7 @@ class Splitview {
838
852
  this._startSnappingEnabled = true;
839
853
  this._endSnappingEnabled = true;
840
854
  this._disabled = false;
855
+ this._margin = 0;
841
856
  this._onDidSashEnd = new Emitter();
842
857
  this.onDidSashEnd = this._onDidSashEnd.event;
843
858
  this._onDidAddView = new Emitter();
@@ -926,6 +941,7 @@ class Splitview {
926
941
  };
927
942
  this._orientation = options.orientation;
928
943
  this.element = this.createContainer();
944
+ this.margin = (_a = options.margin) !== null && _a !== void 0 ? _a : 0;
929
945
  this.proportionalLayout =
930
946
  options.proportionalLayout === undefined
931
947
  ? true
@@ -980,9 +996,7 @@ class Splitview {
980
996
  if (index < 0 || index >= this.viewItems.length) {
981
997
  throw new Error('Index out of bounds');
982
998
  }
983
- toggleClass(this.container, 'visible', visible);
984
999
  const viewItem = this.viewItems[index];
985
- toggleClass(this.container, 'visible', visible);
986
1000
  viewItem.setVisible(visible, viewItem.size);
987
1001
  this.distributeEmptySpace(index);
988
1002
  this.layoutViews();
@@ -1294,15 +1308,29 @@ class Splitview {
1294
1308
  this._proportions = this.viewItems.map((i) => i.visible ? i.size / this._contentSize : undefined);
1295
1309
  }
1296
1310
  }
1311
+ /**
1312
+ * Margin explain:
1313
+ *
1314
+ * For `n` views in a splitview there will be `n-1` margins `m`.
1315
+ *
1316
+ * To fit the margins each view must reduce in size by `(m * (n - 1)) / n`.
1317
+ *
1318
+ * For each view `i` the offet must be adjusted by `m * i/(n - 1)`.
1319
+ */
1297
1320
  layoutViews() {
1298
1321
  this._contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);
1299
- let sum = 0;
1300
- const x = [];
1301
1322
  this.updateSashEnablement();
1323
+ if (this.viewItems.length === 0) {
1324
+ return;
1325
+ }
1326
+ const sashCount = this.viewItems.length - 1;
1327
+ const marginReducedSize = (this.margin * sashCount) / this.viewItems.length;
1328
+ let totalLeftOffset = 0;
1329
+ const viewLeftOffsets = [];
1302
1330
  for (let i = 0; i < this.viewItems.length - 1; i++) {
1303
- sum += this.viewItems[i].size;
1304
- x.push(sum);
1305
- const offset = Math.min(Math.max(0, sum - 2), this.size - 4);
1331
+ totalLeftOffset += this.viewItems[i].size;
1332
+ viewLeftOffsets.push(totalLeftOffset);
1333
+ const offset = Math.min(Math.max(0, totalLeftOffset - 2), this.size - this.margin);
1306
1334
  if (this._orientation === exports.Orientation.HORIZONTAL) {
1307
1335
  this.sashes[i].container.style.left = `${offset}px`;
1308
1336
  this.sashes[i].container.style.top = `0px`;
@@ -1313,19 +1341,24 @@ class Splitview {
1313
1341
  }
1314
1342
  }
1315
1343
  this.viewItems.forEach((view, i) => {
1344
+ const size = view.size - marginReducedSize;
1345
+ const offset = i === 0
1346
+ ? 0
1347
+ : viewLeftOffsets[i - 1] +
1348
+ (i / sashCount) * marginReducedSize;
1316
1349
  if (this._orientation === exports.Orientation.HORIZONTAL) {
1317
- view.container.style.width = `${view.size}px`;
1318
- view.container.style.left = i == 0 ? '0px' : `${x[i - 1]}px`;
1350
+ view.container.style.width = `${size}px`;
1351
+ view.container.style.left = `${offset}px`;
1319
1352
  view.container.style.top = '';
1320
1353
  view.container.style.height = '';
1321
1354
  }
1322
1355
  if (this._orientation === exports.Orientation.VERTICAL) {
1323
- view.container.style.height = `${view.size}px`;
1324
- view.container.style.top = i == 0 ? '0px' : `${x[i - 1]}px`;
1356
+ view.container.style.height = `${size}px`;
1357
+ view.container.style.top = `${offset}px`;
1325
1358
  view.container.style.width = '';
1326
1359
  view.container.style.left = '';
1327
1360
  }
1328
- view.view.layout(view.size, this._orthogonalSize);
1361
+ view.view.layout(view.size - marginReducedSize, this._orthogonalSize);
1329
1362
  });
1330
1363
  }
1331
1364
  findFirstSnapIndex(indexes) {
@@ -1774,7 +1807,18 @@ class BranchNode extends CompositeDisposable {
1774
1807
  set disabled(value) {
1775
1808
  this.splitview.disabled = value;
1776
1809
  }
1777
- constructor(orientation, proportionalLayout, styles, size, orthogonalSize, disabled, childDescriptors) {
1810
+ get margin() {
1811
+ return this.splitview.margin;
1812
+ }
1813
+ set margin(value) {
1814
+ this.splitview.margin = value;
1815
+ this.children.forEach((child) => {
1816
+ if (child instanceof BranchNode) {
1817
+ child.margin = value;
1818
+ }
1819
+ });
1820
+ }
1821
+ constructor(orientation, proportionalLayout, styles, size, orthogonalSize, disabled, margin, childDescriptors) {
1778
1822
  super();
1779
1823
  this.orientation = orientation;
1780
1824
  this.proportionalLayout = proportionalLayout;
@@ -1794,6 +1838,7 @@ class BranchNode extends CompositeDisposable {
1794
1838
  orientation: this.orientation,
1795
1839
  proportionalLayout,
1796
1840
  styles,
1841
+ margin,
1797
1842
  });
1798
1843
  this.splitview.layout(this.size, this.orthogonalSize);
1799
1844
  }
@@ -1817,6 +1862,7 @@ class BranchNode extends CompositeDisposable {
1817
1862
  descriptor,
1818
1863
  proportionalLayout,
1819
1864
  styles,
1865
+ margin,
1820
1866
  });
1821
1867
  }
1822
1868
  this.disabled = disabled;
@@ -1825,10 +1871,8 @@ class BranchNode extends CompositeDisposable {
1825
1871
  }));
1826
1872
  this.setupChildrenEvents();
1827
1873
  }
1828
- setVisible(visible) {
1829
- for (const child of this.children) {
1830
- child.setVisible(visible);
1831
- }
1874
+ setVisible(_visible) {
1875
+ // noop
1832
1876
  }
1833
1877
  isChildVisible(index) {
1834
1878
  if (index < 0 || index >= this.children.length) {
@@ -1845,12 +1889,13 @@ class BranchNode extends CompositeDisposable {
1845
1889
  }
1846
1890
  const wereAllChildrenHidden = this.splitview.contentSize === 0;
1847
1891
  this.splitview.setViewVisible(index, visible);
1892
+ // }
1848
1893
  const areAllChildrenHidden = this.splitview.contentSize === 0;
1849
1894
  // If all children are hidden then the parent should hide the entire splitview
1850
1895
  // If the entire splitview is hidden then the parent should show the splitview when a child is shown
1851
1896
  if ((visible && wereAllChildrenHidden) ||
1852
1897
  (!visible && areAllChildrenHidden)) {
1853
- this._onDidVisibilityChange.fire(visible);
1898
+ this._onDidVisibilityChange.fire({ visible });
1854
1899
  }
1855
1900
  }
1856
1901
  moveChild(from, to) {
@@ -1923,7 +1968,7 @@ class BranchNode extends CompositeDisposable {
1923
1968
  this._onDidChange.fire({ size: e.orthogonalSize });
1924
1969
  }), ...this.children.map((c, i) => {
1925
1970
  if (c instanceof BranchNode) {
1926
- return c.onDidVisibilityChange((visible) => {
1971
+ return c.onDidVisibilityChange(({ visible }) => {
1927
1972
  this.setChildVisible(i, visible);
1928
1973
  });
1929
1974
  }
@@ -1953,7 +1998,7 @@ function findLeaf(candiateNode, last) {
1953
1998
  }
1954
1999
  function flipNode(node, size, orthogonalSize) {
1955
2000
  if (node instanceof BranchNode) {
1956
- const result = new BranchNode(orthogonal(node.orientation), node.proportionalLayout, node.styles, size, orthogonalSize, node.disabled);
2001
+ const result = new BranchNode(orthogonal(node.orientation), node.proportionalLayout, node.styles, size, orthogonalSize, node.disabled, node.margin);
1957
2002
  let totalSize = 0;
1958
2003
  for (let i = node.children.length - 1; i >= 0; i--) {
1959
2004
  const child = node.children[i];
@@ -2108,6 +2153,13 @@ class Gridview {
2108
2153
  }
2109
2154
  }
2110
2155
  }
2156
+ get margin() {
2157
+ return this._margin;
2158
+ }
2159
+ set margin(value) {
2160
+ this._margin = value;
2161
+ this.root.margin = value;
2162
+ }
2111
2163
  maximizedView() {
2112
2164
  var _a;
2113
2165
  return (_a = this._maximizedNode) === null || _a === void 0 ? void 0 : _a.leaf.view;
@@ -2193,13 +2245,14 @@ class Gridview {
2193
2245
  this.disposable.dispose();
2194
2246
  this._onDidChange.dispose();
2195
2247
  this._onDidMaximizedNodeChange.dispose();
2248
+ this._onDidViewVisibilityChange.dispose();
2196
2249
  this.root.dispose();
2197
2250
  this._maximizedNode = undefined;
2198
2251
  this.element.remove();
2199
2252
  }
2200
2253
  clear() {
2201
2254
  const orientation = this.root.orientation;
2202
- this.root = new BranchNode(orientation, this.proportionalLayout, this.styles, this.root.size, this.root.orthogonalSize, this._locked);
2255
+ this.root = new BranchNode(orientation, this.proportionalLayout, this.styles, this.root.size, this.root.orthogonalSize, this.locked, this.margin);
2203
2256
  }
2204
2257
  deserialize(json, deserializer) {
2205
2258
  const orientation = json.orientation;
@@ -2210,6 +2263,7 @@ class Gridview {
2210
2263
  this.root = this._deserializeNode(root, orientation, deserializer, orthogonalSize);
2211
2264
  }
2212
2265
  _deserializeNode(node, orientation, deserializer, orthogonalSize) {
2266
+ var _a;
2213
2267
  let result;
2214
2268
  if (node.type === 'branch') {
2215
2269
  const serializedChildren = node.data;
@@ -2221,10 +2275,14 @@ class Gridview {
2221
2275
  });
2222
2276
  result = new BranchNode(orientation, this.proportionalLayout, this.styles, node.size, // <- orthogonal size - flips at each depth
2223
2277
  orthogonalSize, // <- size - flips at each depth,
2224
- this._locked, children);
2278
+ this.locked, this.margin, children);
2225
2279
  }
2226
2280
  else {
2227
- result = new LeafNode(deserializer.fromJSON(node), orientation, orthogonalSize, node.size);
2281
+ const view = deserializer.fromJSON(node);
2282
+ if (typeof node.visible === 'boolean') {
2283
+ (_a = view.setVisible) === null || _a === void 0 ? void 0 : _a.call(view, node.visible);
2284
+ }
2285
+ result = new LeafNode(view, orientation, orthogonalSize, node.size);
2228
2286
  }
2229
2287
  return result;
2230
2288
  }
@@ -2254,7 +2312,7 @@ class Gridview {
2254
2312
  }
2255
2313
  const oldRoot = this.root;
2256
2314
  oldRoot.element.remove();
2257
- this._root = new BranchNode(orthogonal(oldRoot.orientation), this.proportionalLayout, this.styles, this.root.orthogonalSize, this.root.size, this._locked);
2315
+ this._root = new BranchNode(orthogonal(oldRoot.orientation), this.proportionalLayout, this.styles, this.root.orthogonalSize, this.root.size, this.locked, this.margin);
2258
2316
  if (oldRoot.children.length === 0) ;
2259
2317
  else if (oldRoot.children.length === 1) {
2260
2318
  // can remove one level of redundant branching if there is only a single child
@@ -2319,19 +2377,24 @@ class Gridview {
2319
2377
  }
2320
2378
  return findLeaf(this.root, reverse);
2321
2379
  }
2322
- constructor(proportionalLayout, styles, orientation) {
2380
+ constructor(proportionalLayout, styles, orientation, locked, margin) {
2323
2381
  this.proportionalLayout = proportionalLayout;
2324
2382
  this.styles = styles;
2325
2383
  this._locked = false;
2384
+ this._margin = 0;
2326
2385
  this._maximizedNode = undefined;
2327
2386
  this.disposable = new MutableDisposable();
2328
2387
  this._onDidChange = new Emitter();
2329
2388
  this.onDidChange = this._onDidChange.event;
2389
+ this._onDidViewVisibilityChange = new Emitter();
2390
+ this.onDidViewVisibilityChange = this._onDidViewVisibilityChange.event;
2330
2391
  this._onDidMaximizedNodeChange = new Emitter();
2331
2392
  this.onDidMaximizedNodeChange = this._onDidMaximizedNodeChange.event;
2332
2393
  this.element = document.createElement('div');
2333
2394
  this.element.className = 'grid-view';
2334
- this.root = new BranchNode(orientation, proportionalLayout, styles, 0, 0, this._locked);
2395
+ this._locked = locked !== null && locked !== void 0 ? locked : false;
2396
+ this._margin = margin !== null && margin !== void 0 ? margin : 0;
2397
+ this.root = new BranchNode(orientation, proportionalLayout, styles, 0, 0, this.locked, this.margin);
2335
2398
  }
2336
2399
  isViewVisible(location) {
2337
2400
  const [rest, index] = tail(location);
@@ -2350,6 +2413,7 @@ class Gridview {
2350
2413
  if (!(parent instanceof BranchNode)) {
2351
2414
  throw new Error('Invalid from location');
2352
2415
  }
2416
+ this._onDidViewVisibilityChange.fire();
2353
2417
  parent.setChildVisible(index, visible);
2354
2418
  }
2355
2419
  moveView(parentLocation, from, to) {
@@ -2382,7 +2446,7 @@ class Gridview {
2382
2446
  }
2383
2447
  const child = grandParent.removeChild(parentIndex);
2384
2448
  child.dispose();
2385
- const newParent = new BranchNode(parent.orientation, this.proportionalLayout, this.styles, parent.size, parent.orthogonalSize, this._locked);
2449
+ const newParent = new BranchNode(parent.orientation, this.proportionalLayout, this.styles, parent.size, parent.orthogonalSize, this.locked, this.margin);
2386
2450
  grandParent.addChild(newParent, parent.size, parentIndex);
2387
2451
  const newSibling = new LeafNode(parent.view, grandParent.orientation, parent.size);
2388
2452
  newParent.addChild(newSibling, newSiblingSize, 0);
@@ -2621,14 +2685,18 @@ class BaseGrid extends Resizable {
2621
2685
  this.onDidActiveChange = this._onDidActiveChange.event;
2622
2686
  this._bufferOnDidLayoutChange = new AsapEvent();
2623
2687
  this.onDidLayoutChange = this._bufferOnDidLayoutChange.onEvent;
2688
+ this._onDidViewVisibilityChangeMicroTaskQueue = new AsapEvent();
2689
+ this.onDidViewVisibilityChangeMicroTaskQueue = this._onDidViewVisibilityChangeMicroTaskQueue.onEvent;
2624
2690
  this.element.style.height = '100%';
2625
2691
  this.element.style.width = '100%';
2626
2692
  options.parentElement.appendChild(this.element);
2627
- this.gridview = new Gridview(!!options.proportionalLayout, options.styles, options.orientation);
2693
+ this.gridview = new Gridview(!!options.proportionalLayout, options.styles, options.orientation, options.locked, options.margin);
2628
2694
  this.gridview.locked = !!options.locked;
2629
2695
  this.element.appendChild(this.gridview.element);
2630
2696
  this.layout(0, 0, true); // set some elements height/widths
2631
- this.addDisposables(exports.DockviewDisposable.from(() => {
2697
+ this.addDisposables(this.gridview.onDidViewVisibilityChange(() => this._onDidViewVisibilityChangeMicroTaskQueue.fire()), this.onDidViewVisibilityChangeMicroTaskQueue(() => {
2698
+ this.layout(this.width, this.height, true);
2699
+ }), exports.DockviewDisposable.from(() => {
2632
2700
  var _a;
2633
2701
  (_a = this.element.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(this.element);
2634
2702
  }), this.gridview.onDidChange(() => {
@@ -3206,6 +3274,9 @@ class DockviewApi {
3206
3274
  get totalPanels() {
3207
3275
  return this.component.totalPanels;
3208
3276
  }
3277
+ get gap() {
3278
+ return this.component.gap;
3279
+ }
3209
3280
  /**
3210
3281
  * Invoked when the active group changes. May be undefined if no group is active.
3211
3282
  */
@@ -3242,6 +3313,9 @@ class DockviewApi {
3242
3313
  get onDidRemovePanel() {
3243
3314
  return this.component.onDidRemovePanel;
3244
3315
  }
3316
+ get onDidMovePanel() {
3317
+ return this.component.onDidMovePanel;
3318
+ }
3245
3319
  /**
3246
3320
  * Invoked after a layout is deserialzied using the `fromJSON` method.
3247
3321
  */
@@ -3382,8 +3456,8 @@ class DockviewApi {
3382
3456
  /**
3383
3457
  * Add a floating group
3384
3458
  */
3385
- addFloatingGroup(item, coord) {
3386
- return this.component.addFloatingGroup(item, coord);
3459
+ addFloatingGroup(item, options) {
3460
+ return this.component.addFloatingGroup(item, options);
3387
3461
  }
3388
3462
  /**
3389
3463
  * Create a component from a serialized object.
@@ -3433,6 +3507,9 @@ class DockviewApi {
3433
3507
  addPopoutGroup(item, options) {
3434
3508
  return this.component.addPopoutGroup(item, options);
3435
3509
  }
3510
+ setGap(gap) {
3511
+ this.component.updateOptions({ gap });
3512
+ }
3436
3513
  }
3437
3514
 
3438
3515
  class DragHandler extends CompositeDisposable {
@@ -4802,7 +4879,8 @@ class TabsContainer extends CompositeDisposable {
4802
4879
  this.accessor.addFloatingGroup(this.group, {
4803
4880
  x: left - rootLeft + 20,
4804
4881
  y: top - rootTop + 20,
4805
- }, { inDragMode: true });
4882
+ inDragMode: true,
4883
+ });
4806
4884
  }
4807
4885
  }), addDisposableListener(this.tabContainer, 'mousedown', (event) => {
4808
4886
  if (event.defaultPrevented) {
@@ -4871,7 +4949,8 @@ class TabsContainer extends CompositeDisposable {
4871
4949
  this.accessor.addFloatingGroup(panel, {
4872
4950
  x: left - rootLeft,
4873
4951
  y: top - rootTop,
4874
- }, { inDragMode: true });
4952
+ inDragMode: true,
4953
+ });
4875
4954
  return;
4876
4955
  }
4877
4956
  const isLeftClick = event.button === 0;
@@ -4944,6 +5023,7 @@ const PROPERTY_KEYS = (() => {
4944
5023
  rootOverlayModel: undefined,
4945
5024
  locked: undefined,
4946
5025
  disableDnd: undefined,
5026
+ gap: undefined,
4947
5027
  };
4948
5028
  return Object.keys(properties);
4949
5029
  })();
@@ -5674,6 +5754,9 @@ class GridviewPanel extends BasePanelView {
5674
5754
  get isActive() {
5675
5755
  return this.api.isActive;
5676
5756
  }
5757
+ get isVisible() {
5758
+ return this.api.isVisible;
5759
+ }
5677
5760
  constructor(id, component, options, api) {
5678
5761
  super(id, component, api !== null && api !== void 0 ? api : new GridviewPanelApiImpl(id, component));
5679
5762
  this._evaluatedMinimumWidth = 0;
@@ -6436,12 +6519,7 @@ class Overlay extends CompositeDisposable {
6436
6519
  this._element.appendChild(this.options.content);
6437
6520
  this.options.container.appendChild(this._element);
6438
6521
  // if input bad resize within acceptable boundaries
6439
- this.setBounds({
6440
- height: this.options.height,
6441
- width: this.options.width,
6442
- top: this.options.top,
6443
- left: this.options.left,
6444
- });
6522
+ 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 })));
6445
6523
  }
6446
6524
  setBounds(bounds = {}) {
6447
6525
  if (typeof bounds.height === 'number') {
@@ -6450,11 +6528,25 @@ class Overlay extends CompositeDisposable {
6450
6528
  if (typeof bounds.width === 'number') {
6451
6529
  this._element.style.width = `${bounds.width}px`;
6452
6530
  }
6453
- if (typeof bounds.top === 'number') {
6531
+ if ('top' in bounds && typeof bounds.top === 'number') {
6454
6532
  this._element.style.top = `${bounds.top}px`;
6533
+ this._element.style.bottom = 'auto';
6534
+ this.verticalAlignment = 'top';
6535
+ }
6536
+ if ('bottom' in bounds && typeof bounds.bottom === 'number') {
6537
+ this._element.style.bottom = `${bounds.bottom}px`;
6538
+ this._element.style.top = 'auto';
6539
+ this.verticalAlignment = 'bottom';
6455
6540
  }
6456
- if (typeof bounds.left === 'number') {
6541
+ if ('left' in bounds && typeof bounds.left === 'number') {
6457
6542
  this._element.style.left = `${bounds.left}px`;
6543
+ this._element.style.right = 'auto';
6544
+ this.horiziontalAlignment = 'left';
6545
+ }
6546
+ if ('right' in bounds && typeof bounds.right === 'number') {
6547
+ this._element.style.right = `${bounds.right}px`;
6548
+ this._element.style.left = 'auto';
6549
+ this.horiziontalAlignment = 'right';
6458
6550
  }
6459
6551
  const containerRect = this.options.container.getBoundingClientRect();
6460
6552
  const overlayRect = this._element.getBoundingClientRect();
@@ -6462,24 +6554,54 @@ class Overlay extends CompositeDisposable {
6462
6554
  // a minimum width of minimumViewportWidth must be inside the viewport
6463
6555
  const xOffset = Math.max(0, this.getMinimumWidth(overlayRect.width));
6464
6556
  // a minimum height of minimumViewportHeight must be inside the viewport
6465
- const yOffset = typeof this.options.minimumInViewportHeight === 'number'
6466
- ? Math.max(0, this.getMinimumHeight(overlayRect.height))
6467
- : 0;
6468
- const left = clamp(overlayRect.left - containerRect.left, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));
6469
- const top = clamp(overlayRect.top - containerRect.top, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));
6470
- this._element.style.left = `${left}px`;
6471
- this._element.style.top = `${top}px`;
6557
+ const yOffset = Math.max(0, this.getMinimumHeight(overlayRect.height));
6558
+ if (this.verticalAlignment === 'top') {
6559
+ const top = clamp(overlayRect.top - containerRect.top, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));
6560
+ this._element.style.top = `${top}px`;
6561
+ this._element.style.bottom = 'auto';
6562
+ }
6563
+ if (this.verticalAlignment === 'bottom') {
6564
+ const bottom = clamp(containerRect.bottom - overlayRect.bottom, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));
6565
+ this._element.style.bottom = `${bottom}px`;
6566
+ this._element.style.top = 'auto';
6567
+ }
6568
+ if (this.horiziontalAlignment === 'left') {
6569
+ const left = clamp(overlayRect.left - containerRect.left, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));
6570
+ this._element.style.left = `${left}px`;
6571
+ this._element.style.right = 'auto';
6572
+ }
6573
+ if (this.horiziontalAlignment === 'right') {
6574
+ const right = clamp(containerRect.right - overlayRect.right, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));
6575
+ this._element.style.right = `${right}px`;
6576
+ this._element.style.left = 'auto';
6577
+ }
6472
6578
  this._onDidChange.fire();
6473
6579
  }
6474
6580
  toJSON() {
6475
6581
  const container = this.options.container.getBoundingClientRect();
6476
6582
  const element = this._element.getBoundingClientRect();
6477
- return {
6478
- top: element.top - container.top,
6479
- left: element.left - container.left,
6480
- width: element.width,
6481
- height: element.height,
6482
- };
6583
+ const result = {};
6584
+ if (this.verticalAlignment === 'top') {
6585
+ result.top = parseFloat(this._element.style.top);
6586
+ }
6587
+ else if (this.verticalAlignment === 'bottom') {
6588
+ result.bottom = parseFloat(this._element.style.bottom);
6589
+ }
6590
+ else {
6591
+ result.top = element.top - container.top;
6592
+ }
6593
+ if (this.horiziontalAlignment === 'left') {
6594
+ result.left = parseFloat(this._element.style.left);
6595
+ }
6596
+ else if (this.horiziontalAlignment === 'right') {
6597
+ result.right = parseFloat(this._element.style.right);
6598
+ }
6599
+ else {
6600
+ result.left = element.left - container.left;
6601
+ }
6602
+ result.width = element.width;
6603
+ result.height = element.height;
6604
+ return result;
6483
6605
  }
6484
6606
  setupDrag(dragTarget, options = { inDragMode: false }) {
6485
6607
  const move = new MutableDisposable();
@@ -6511,12 +6633,30 @@ class Overlay extends CompositeDisposable {
6511
6633
  };
6512
6634
  }
6513
6635
  const xOffset = Math.max(0, this.getMinimumWidth(overlayRect.width));
6514
- const yOffset = Math.max(0, this.options.minimumInViewportHeight
6515
- ? this.getMinimumHeight(overlayRect.height)
6516
- : 0);
6517
- const left = clamp(x - offset.x, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));
6636
+ const yOffset = Math.max(0, this.getMinimumHeight(overlayRect.height));
6518
6637
  const top = clamp(y - offset.y, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));
6519
- this.setBounds({ top, left });
6638
+ const bottom = clamp(offset.y -
6639
+ y +
6640
+ containerRect.height -
6641
+ overlayRect.height, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));
6642
+ const left = clamp(x - offset.x, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));
6643
+ const right = clamp(offset.x - x + containerRect.width - overlayRect.width, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));
6644
+ const bounds = {};
6645
+ // Anchor to top or to bottom depending on which one is closer
6646
+ if (top <= bottom) {
6647
+ bounds.top = top;
6648
+ }
6649
+ else {
6650
+ bounds.bottom = bottom;
6651
+ }
6652
+ // Anchor to left or to right depending on which one is closer
6653
+ if (left <= right) {
6654
+ bounds.left = left;
6655
+ }
6656
+ else {
6657
+ bounds.right = right;
6658
+ }
6659
+ this.setBounds(bounds);
6520
6660
  }), addDisposableWindowListener(window, 'mouseup', () => {
6521
6661
  toggleClass(this._element, 'dv-resize-container-dragging', false);
6522
6662
  move.dispose();
@@ -6584,8 +6724,10 @@ class Overlay extends CompositeDisposable {
6584
6724
  };
6585
6725
  }
6586
6726
  let top = undefined;
6727
+ let bottom = undefined;
6587
6728
  let height = undefined;
6588
6729
  let left = undefined;
6730
+ let right = undefined;
6589
6731
  let width = undefined;
6590
6732
  const moveTop = () => {
6591
6733
  top = clamp(y, -Number.MAX_VALUE, startPosition.originalY +
@@ -6599,6 +6741,7 @@ class Overlay extends CompositeDisposable {
6599
6741
  startPosition.originalY +
6600
6742
  startPosition.originalHeight -
6601
6743
  top;
6744
+ bottom = containerRect.height - top - height;
6602
6745
  };
6603
6746
  const moveBottom = () => {
6604
6747
  top =
@@ -6610,6 +6753,7 @@ class Overlay extends CompositeDisposable {
6610
6753
  ? -top +
6611
6754
  this.options.minimumInViewportHeight
6612
6755
  : Overlay.MINIMUM_HEIGHT, Number.MAX_VALUE);
6756
+ bottom = containerRect.height - top - height;
6613
6757
  };
6614
6758
  const moveLeft = () => {
6615
6759
  left = clamp(x, -Number.MAX_VALUE, startPosition.originalX +
@@ -6623,6 +6767,7 @@ class Overlay extends CompositeDisposable {
6623
6767
  startPosition.originalX +
6624
6768
  startPosition.originalWidth -
6625
6769
  left;
6770
+ right = containerRect.width - left - width;
6626
6771
  };
6627
6772
  const moveRight = () => {
6628
6773
  left =
@@ -6634,6 +6779,7 @@ class Overlay extends CompositeDisposable {
6634
6779
  ? -left +
6635
6780
  this.options.minimumInViewportWidth
6636
6781
  : Overlay.MINIMUM_WIDTH, Number.MAX_VALUE);
6782
+ right = containerRect.width - left - width;
6637
6783
  };
6638
6784
  switch (direction) {
6639
6785
  case 'top':
@@ -6665,7 +6811,24 @@ class Overlay extends CompositeDisposable {
6665
6811
  moveRight();
6666
6812
  break;
6667
6813
  }
6668
- this.setBounds({ height, width, top, left });
6814
+ const bounds = {};
6815
+ // Anchor to top or to bottom depending on which one is closer
6816
+ if (top <= bottom) {
6817
+ bounds.top = top;
6818
+ }
6819
+ else {
6820
+ bounds.bottom = bottom;
6821
+ }
6822
+ // Anchor to left or to right depending on which one is closer
6823
+ if (left <= right) {
6824
+ bounds.left = left;
6825
+ }
6826
+ else {
6827
+ bounds.right = right;
6828
+ }
6829
+ bounds.height = height;
6830
+ bounds.width = width;
6831
+ this.setBounds(bounds);
6669
6832
  }), {
6670
6833
  dispose: () => {
6671
6834
  for (const iframe of iframes) {
@@ -6688,7 +6851,7 @@ class Overlay extends CompositeDisposable {
6688
6851
  if (typeof this.options.minimumInViewportHeight === 'number') {
6689
6852
  return height - this.options.minimumInViewportHeight;
6690
6853
  }
6691
- return height;
6854
+ return 0;
6692
6855
  }
6693
6856
  dispose() {
6694
6857
  this._element.remove();
@@ -6711,7 +6874,7 @@ class DockviewFloatingGroupPanel extends CompositeDisposable {
6711
6874
  }
6712
6875
 
6713
6876
  const DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE = 100;
6714
- const DEFAULT_FLOATING_GROUP_POSITION = { left: 100, top: 100 };
6877
+ const DEFAULT_FLOATING_GROUP_POSITION = { left: 100, top: 100, width: 300, height: 300 };
6715
6878
 
6716
6879
  function createFocusableElement() {
6717
6880
  const element = document.createElement('div');
@@ -7043,6 +7206,9 @@ class DockviewComponent extends BaseGrid {
7043
7206
  get api() {
7044
7207
  return this._api;
7045
7208
  }
7209
+ get gap() {
7210
+ return this.gridview.margin;
7211
+ }
7046
7212
  constructor(options) {
7047
7213
  var _a;
7048
7214
  super({
@@ -7054,6 +7220,7 @@ class DockviewComponent extends BaseGrid {
7054
7220
  parentElement: options.parentElement,
7055
7221
  disableAutoResizing: options.disableAutoResizing,
7056
7222
  locked: options.locked,
7223
+ margin: options.gap,
7057
7224
  });
7058
7225
  this.nextGroupId = sequentialNumberGenerator();
7059
7226
  this._deserializer = new DefaultDockviewDeserialzier(this);
@@ -7079,9 +7246,9 @@ class DockviewComponent extends BaseGrid {
7079
7246
  this._onDidActivePanelChange = new Emitter();
7080
7247
  this.onDidActivePanelChange = this._onDidActivePanelChange.event;
7081
7248
  this._onDidMovePanel = new Emitter();
7249
+ this.onDidMovePanel = this._onDidMovePanel.event;
7082
7250
  this._floatingGroups = [];
7083
7251
  this._popoutGroups = [];
7084
- this._ignoreEvents = 0;
7085
7252
  this._onDidRemoveGroup = new Emitter();
7086
7253
  this.onDidRemoveGroup = this._onDidRemoveGroup.event;
7087
7254
  this._onDidAddGroup = new Emitter();
@@ -7095,7 +7262,9 @@ class DockviewComponent extends BaseGrid {
7095
7262
  this.overlayRenderContainer = new OverlayRenderContainer(gready);
7096
7263
  toggleClass(this.gridview.element, 'dv-dockview', true);
7097
7264
  toggleClass(this.element, 'dv-debug', !!options.debug);
7098
- 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) => {
7265
+ 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(() => {
7266
+ this.updateWatermark();
7267
+ }), this.onDidAdd((event) => {
7099
7268
  if (!this._moving) {
7100
7269
  this._onDidAddGroup.fire(event);
7101
7270
  }
@@ -7109,7 +7278,7 @@ class DockviewComponent extends BaseGrid {
7109
7278
  }
7110
7279
  }), exports.DockviewEvent.any(this.onDidAdd, this.onDidRemove)(() => {
7111
7280
  this.updateWatermark();
7112
- }), exports.DockviewEvent.any(this.onDidAddPanel, this.onDidRemovePanel, this.onDidActivePanelChange)(() => {
7281
+ }), exports.DockviewEvent.any(this.onDidAddPanel, this.onDidRemovePanel, this.onDidAddGroup, this.onDidRemove, this.onDidMovePanel, this.onDidActivePanelChange)(() => {
7113
7282
  this._bufferOnDidLayoutChange.fire();
7114
7283
  }), exports.DockviewDisposable.from(() => {
7115
7284
  // iterate over a copy of the array since .dispose() mutates the original array
@@ -7209,7 +7378,7 @@ class DockviewComponent extends BaseGrid {
7209
7378
  var _a, _b, _c;
7210
7379
  if (itemToPopout instanceof DockviewPanel &&
7211
7380
  itemToPopout.group.size === 1) {
7212
- return this.addPopoutGroup(itemToPopout.group);
7381
+ return this.addPopoutGroup(itemToPopout.group, options);
7213
7382
  }
7214
7383
  const theme = getDockviewTheme(this.gridview.element);
7215
7384
  const element = this.element;
@@ -7360,8 +7529,8 @@ class DockviewComponent extends BaseGrid {
7360
7529
  console.error('dockview: failed to create popout window', err);
7361
7530
  });
7362
7531
  }
7363
- addFloatingGroup(item, coord, options) {
7364
- var _a, _b, _c, _d, _e, _f, _g;
7532
+ addFloatingGroup(item, options) {
7533
+ var _a, _b, _c, _d, _e;
7365
7534
  let group;
7366
7535
  if (item instanceof DockviewPanel) {
7367
7536
  group = this.createGroup();
@@ -7406,26 +7575,62 @@ class DockviewComponent extends BaseGrid {
7406
7575
  }
7407
7576
  }
7408
7577
  group.model.location = { type: 'floating' };
7409
- const overlayLeft = typeof (coord === null || coord === void 0 ? void 0 : coord.x) === 'number'
7410
- ? Math.max(coord.x, 0)
7411
- : DEFAULT_FLOATING_GROUP_POSITION.left;
7412
- const overlayTop = typeof (coord === null || coord === void 0 ? void 0 : coord.y) === 'number'
7413
- ? Math.max(coord.y, 0)
7414
- : DEFAULT_FLOATING_GROUP_POSITION.top;
7415
- const overlay = new Overlay({
7416
- container: this.gridview.element,
7417
- content: group.element,
7418
- height: (_b = coord === null || coord === void 0 ? void 0 : coord.height) !== null && _b !== void 0 ? _b : 300,
7419
- width: (_c = coord === null || coord === void 0 ? void 0 : coord.width) !== null && _c !== void 0 ? _c : 300,
7420
- left: overlayLeft,
7421
- top: overlayTop,
7422
- minimumInViewportWidth: this.options.floatingGroupBounds === 'boundedWithinViewport'
7578
+ function getAnchoredBox() {
7579
+ if (options === null || options === void 0 ? void 0 : options.position) {
7580
+ const result = {};
7581
+ if ('left' in options.position) {
7582
+ result.left = Math.max(options.position.left, 0);
7583
+ }
7584
+ else if ('right' in options.position) {
7585
+ result.right = Math.max(options.position.right, 0);
7586
+ }
7587
+ else {
7588
+ result.left = DEFAULT_FLOATING_GROUP_POSITION.left;
7589
+ }
7590
+ if ('top' in options.position) {
7591
+ result.top = Math.max(options.position.top, 0);
7592
+ }
7593
+ else if ('bottom' in options.position) {
7594
+ result.bottom = Math.max(options.position.bottom, 0);
7595
+ }
7596
+ else {
7597
+ result.top = DEFAULT_FLOATING_GROUP_POSITION.top;
7598
+ }
7599
+ if (typeof options.width === 'number') {
7600
+ result.width = Math.max(options.width, 0);
7601
+ }
7602
+ else {
7603
+ result.width = DEFAULT_FLOATING_GROUP_POSITION.width;
7604
+ }
7605
+ if (typeof options.height === 'number') {
7606
+ result.height = Math.max(options.height, 0);
7607
+ }
7608
+ else {
7609
+ result.height = DEFAULT_FLOATING_GROUP_POSITION.height;
7610
+ }
7611
+ return result;
7612
+ }
7613
+ return {
7614
+ left: typeof (options === null || options === void 0 ? void 0 : options.x) === 'number'
7615
+ ? Math.max(options.x, 0)
7616
+ : DEFAULT_FLOATING_GROUP_POSITION.left,
7617
+ top: typeof (options === null || options === void 0 ? void 0 : options.y) === 'number'
7618
+ ? Math.max(options.y, 0)
7619
+ : DEFAULT_FLOATING_GROUP_POSITION.top,
7620
+ width: typeof (options === null || options === void 0 ? void 0 : options.width) === 'number'
7621
+ ? Math.max(options.width, 0)
7622
+ : DEFAULT_FLOATING_GROUP_POSITION.width,
7623
+ height: typeof (options === null || options === void 0 ? void 0 : options.height) === 'number'
7624
+ ? Math.max(options.height, 0)
7625
+ : DEFAULT_FLOATING_GROUP_POSITION.height,
7626
+ };
7627
+ }
7628
+ const anchoredBox = getAnchoredBox();
7629
+ const overlay = new Overlay(Object.assign(Object.assign({ container: this.gridview.element, content: group.element }, anchoredBox), { minimumInViewportWidth: this.options.floatingGroupBounds === 'boundedWithinViewport'
7423
7630
  ? undefined
7424
- : (_e = (_d = this.options.floatingGroupBounds) === null || _d === void 0 ? void 0 : _d.minimumWidthWithinViewport) !== null && _e !== void 0 ? _e : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,
7425
- minimumInViewportHeight: this.options.floatingGroupBounds === 'boundedWithinViewport'
7631
+ : (_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'
7426
7632
  ? undefined
7427
- : (_g = (_f = this.options.floatingGroupBounds) === null || _f === void 0 ? void 0 : _f.minimumHeightWithinViewport) !== null && _g !== void 0 ? _g : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,
7428
- });
7633
+ : (_e = (_d = this.options.floatingGroupBounds) === null || _d === void 0 ? void 0 : _d.minimumHeightWithinViewport) !== null && _e !== void 0 ? _e : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE }));
7429
7634
  const el = group.element.querySelector('.void-container');
7430
7635
  if (!el) {
7431
7636
  throw new Error('failed to find drag handle');
@@ -7523,12 +7728,21 @@ class DockviewComponent extends BaseGrid {
7523
7728
  group.overlay.minimumInViewportWidth =
7524
7729
  (_b = this.options.floatingGroupBounds) === null || _b === void 0 ? void 0 : _b.minimumWidthWithinViewport;
7525
7730
  }
7526
- group.overlay.setBounds({});
7731
+ group.overlay.setBounds();
7527
7732
  }
7528
7733
  }
7529
7734
  if (changed_rootOverlayOptions) {
7530
7735
  this._rootDropTarget.setOverlayModel(options.rootOverlayModel);
7531
7736
  }
7737
+ if (
7738
+ // if explicitly set as `undefined`
7739
+ 'gap' in options &&
7740
+ options.gap === undefined) {
7741
+ this.gridview.margin = 0;
7742
+ }
7743
+ if (typeof options.gap === 'number') {
7744
+ this.gridview.margin = options.gap;
7745
+ }
7532
7746
  this.layout(this.gridview.width, this.gridview.height, true);
7533
7747
  }
7534
7748
  layout(width, height, forceResize) {
@@ -7690,11 +7904,10 @@ class DockviewComponent extends BaseGrid {
7690
7904
  const { data, position } = serializedFloatingGroup;
7691
7905
  const group = createGroupFromSerializedState(data);
7692
7906
  this.addFloatingGroup(group, {
7693
- x: position.left,
7694
- y: position.top,
7695
- height: position.height,
7696
- width: position.width,
7697
- }, { skipRemoveGroup: true, inDragMode: false });
7907
+ position: position,
7908
+ skipRemoveGroup: true,
7909
+ inDragMode: false,
7910
+ });
7698
7911
  }
7699
7912
  const serializedPopoutGroups = (_b = data.popoutGroups) !== null && _b !== void 0 ? _b : [];
7700
7913
  for (const serializedPopoutGroup of serializedPopoutGroups) {
@@ -7825,15 +8038,11 @@ class DockviewComponent extends BaseGrid {
7825
8038
  if (options.floating) {
7826
8039
  const group = this.createGroup();
7827
8040
  this._onDidAddGroup.fire(group);
7828
- const o = typeof options.floating === 'object' &&
8041
+ const floatingGroupOptions = typeof options.floating === 'object' &&
7829
8042
  options.floating !== null
7830
8043
  ? options.floating
7831
8044
  : {};
7832
- this.addFloatingGroup(group, o, {
7833
- inDragMode: false,
7834
- skipRemoveGroup: true,
7835
- skipActiveGroup: true,
7836
- });
8045
+ this.addFloatingGroup(group, Object.assign(Object.assign({}, floatingGroupOptions), { inDragMode: false, skipRemoveGroup: true, skipActiveGroup: true }));
7837
8046
  panel = this.createPanel(options, group);
7838
8047
  group.model.openPanel(panel, {
7839
8048
  skipSetActive: options.inactive,
@@ -7872,11 +8081,7 @@ class DockviewComponent extends BaseGrid {
7872
8081
  options.floating !== null
7873
8082
  ? options.floating
7874
8083
  : {};
7875
- this.addFloatingGroup(group, coordinates, {
7876
- inDragMode: false,
7877
- skipRemoveGroup: true,
7878
- skipActiveGroup: true,
7879
- });
8084
+ this.addFloatingGroup(group, Object.assign(Object.assign({}, coordinates), { inDragMode: false, skipRemoveGroup: true, skipActiveGroup: true }));
7880
8085
  panel = this.createPanel(options, group);
7881
8086
  group.model.openPanel(panel, {
7882
8087
  skipSetActive: options.inactive,
@@ -7931,6 +8136,7 @@ class DockviewComponent extends BaseGrid {
7931
8136
  });
7932
8137
  const watermarkContainer = document.createElement('div');
7933
8138
  watermarkContainer.className = 'dv-watermark-container';
8139
+ addTestId(watermarkContainer, 'watermark-component');
7934
8140
  watermarkContainer.appendChild(this.watermark.element);
7935
8141
  this.gridview.element.appendChild(watermarkContainer);
7936
8142
  }
@@ -8119,6 +8325,7 @@ class DockviewComponent extends BaseGrid {
8119
8325
  this.doSetGroupAndPanelActive(destinationGroup);
8120
8326
  this._onDidMovePanel.fire({
8121
8327
  panel: removedPanel,
8328
+ from: sourceGroup,
8122
8329
  });
8123
8330
  }
8124
8331
  else {
@@ -8142,6 +8349,10 @@ class DockviewComponent extends BaseGrid {
8142
8349
  // if a group has one tab - we are essentially moving the 'group'
8143
8350
  // which is equivalent to swapping two views in this case
8144
8351
  this.gridview.moveView(sourceParentLocation, from, to);
8352
+ this._onDidMovePanel.fire({
8353
+ panel: this.getGroupPanel(sourceItemId),
8354
+ from: sourceGroup,
8355
+ });
8145
8356
  return;
8146
8357
  }
8147
8358
  }
@@ -8155,6 +8366,10 @@ class DockviewComponent extends BaseGrid {
8155
8366
  const location = getRelativeLocation(this.gridview.orientation, updatedReferenceLocation, destinationTarget);
8156
8367
  this.movingLock(() => this.doAddGroup(targetGroup, location));
8157
8368
  this.doSetGroupAndPanelActive(targetGroup);
8369
+ this._onDidMovePanel.fire({
8370
+ panel: this.getGroupPanel(sourceItemId),
8371
+ from: sourceGroup,
8372
+ });
8158
8373
  }
8159
8374
  else {
8160
8375
  /**
@@ -8174,6 +8389,10 @@ class DockviewComponent extends BaseGrid {
8174
8389
  skipSetGroupActive: true,
8175
8390
  }));
8176
8391
  this.doSetGroupAndPanelActive(group);
8392
+ this._onDidMovePanel.fire({
8393
+ panel: removedPanel,
8394
+ from: sourceGroup,
8395
+ });
8177
8396
  }
8178
8397
  }
8179
8398
  }
@@ -8198,9 +8417,6 @@ class DockviewComponent extends BaseGrid {
8198
8417
  }
8199
8418
  });
8200
8419
  this.doSetGroupAndPanelActive(to);
8201
- panels.forEach((panel) => {
8202
- this._onDidMovePanel.fire({ panel });
8203
- });
8204
8420
  }
8205
8421
  else {
8206
8422
  switch (from.api.location.type) {
@@ -8226,10 +8442,10 @@ class DockviewComponent extends BaseGrid {
8226
8442
  const referenceLocation = getGridLocation(to.element);
8227
8443
  const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, target);
8228
8444
  this.gridview.addView(from, exports.Sizing.Distribute, dropLocation);
8229
- from.panels.forEach((panel) => {
8230
- this._onDidMovePanel.fire({ panel });
8231
- });
8232
8445
  }
8446
+ from.panels.forEach((panel) => {
8447
+ this._onDidMovePanel.fire({ panel, from });
8448
+ });
8233
8449
  }
8234
8450
  doSetGroupActive(group) {
8235
8451
  super.doSetGroupActive(group);