dockview-react 1.14.2 → 1.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * dockview-react
3
- * @version 1.14.2
3
+ * @version 1.15.0
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(() => {
@@ -3242,6 +3310,9 @@ class DockviewApi {
3242
3310
  get onDidRemovePanel() {
3243
3311
  return this.component.onDidRemovePanel;
3244
3312
  }
3313
+ get onDidMovePanel() {
3314
+ return this.component.onDidMovePanel;
3315
+ }
3245
3316
  /**
3246
3317
  * Invoked after a layout is deserialzied using the `fromJSON` method.
3247
3318
  */
@@ -3382,8 +3453,8 @@ class DockviewApi {
3382
3453
  /**
3383
3454
  * Add a floating group
3384
3455
  */
3385
- addFloatingGroup(item, coord) {
3386
- return this.component.addFloatingGroup(item, coord);
3456
+ addFloatingGroup(item, options) {
3457
+ return this.component.addFloatingGroup(item, options);
3387
3458
  }
3388
3459
  /**
3389
3460
  * Create a component from a serialized object.
@@ -3433,6 +3504,9 @@ class DockviewApi {
3433
3504
  addPopoutGroup(item, options) {
3434
3505
  return this.component.addPopoutGroup(item, options);
3435
3506
  }
3507
+ setGap(gap) {
3508
+ this.component.updateOptions({ gap });
3509
+ }
3436
3510
  }
3437
3511
 
3438
3512
  class DragHandler extends CompositeDisposable {
@@ -4802,7 +4876,8 @@ class TabsContainer extends CompositeDisposable {
4802
4876
  this.accessor.addFloatingGroup(this.group, {
4803
4877
  x: left - rootLeft + 20,
4804
4878
  y: top - rootTop + 20,
4805
- }, { inDragMode: true });
4879
+ inDragMode: true,
4880
+ });
4806
4881
  }
4807
4882
  }), addDisposableListener(this.tabContainer, 'mousedown', (event) => {
4808
4883
  if (event.defaultPrevented) {
@@ -4871,7 +4946,8 @@ class TabsContainer extends CompositeDisposable {
4871
4946
  this.accessor.addFloatingGroup(panel, {
4872
4947
  x: left - rootLeft,
4873
4948
  y: top - rootTop,
4874
- }, { inDragMode: true });
4949
+ inDragMode: true,
4950
+ });
4875
4951
  return;
4876
4952
  }
4877
4953
  const isLeftClick = event.button === 0;
@@ -4944,6 +5020,7 @@ const PROPERTY_KEYS = (() => {
4944
5020
  rootOverlayModel: undefined,
4945
5021
  locked: undefined,
4946
5022
  disableDnd: undefined,
5023
+ gap: undefined,
4947
5024
  };
4948
5025
  return Object.keys(properties);
4949
5026
  })();
@@ -5674,6 +5751,9 @@ class GridviewPanel extends BasePanelView {
5674
5751
  get isActive() {
5675
5752
  return this.api.isActive;
5676
5753
  }
5754
+ get isVisible() {
5755
+ return this.api.isVisible;
5756
+ }
5677
5757
  constructor(id, component, options, api) {
5678
5758
  super(id, component, api !== null && api !== void 0 ? api : new GridviewPanelApiImpl(id, component));
5679
5759
  this._evaluatedMinimumWidth = 0;
@@ -6436,12 +6516,7 @@ class Overlay extends CompositeDisposable {
6436
6516
  this._element.appendChild(this.options.content);
6437
6517
  this.options.container.appendChild(this._element);
6438
6518
  // 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
- });
6519
+ this.setBounds(Object.assign(Object.assign(Object.assign(Object.assign({ height: this.options.height, width: this.options.width }, ('top' in this.options && { top: this.options.top })), ('bottom' in this.options && { bottom: this.options.bottom })), ('left' in this.options && { left: this.options.left })), ('right' in this.options && { right: this.options.right })));
6445
6520
  }
6446
6521
  setBounds(bounds = {}) {
6447
6522
  if (typeof bounds.height === 'number') {
@@ -6450,11 +6525,25 @@ class Overlay extends CompositeDisposable {
6450
6525
  if (typeof bounds.width === 'number') {
6451
6526
  this._element.style.width = `${bounds.width}px`;
6452
6527
  }
6453
- if (typeof bounds.top === 'number') {
6528
+ if ('top' in bounds && typeof bounds.top === 'number') {
6454
6529
  this._element.style.top = `${bounds.top}px`;
6530
+ this._element.style.bottom = 'auto';
6531
+ this.verticalAlignment = 'top';
6532
+ }
6533
+ if ('bottom' in bounds && typeof bounds.bottom === 'number') {
6534
+ this._element.style.bottom = `${bounds.bottom}px`;
6535
+ this._element.style.top = 'auto';
6536
+ this.verticalAlignment = 'bottom';
6455
6537
  }
6456
- if (typeof bounds.left === 'number') {
6538
+ if ('left' in bounds && typeof bounds.left === 'number') {
6457
6539
  this._element.style.left = `${bounds.left}px`;
6540
+ this._element.style.right = 'auto';
6541
+ this.horiziontalAlignment = 'left';
6542
+ }
6543
+ if ('right' in bounds && typeof bounds.right === 'number') {
6544
+ this._element.style.right = `${bounds.right}px`;
6545
+ this._element.style.left = 'auto';
6546
+ this.horiziontalAlignment = 'right';
6458
6547
  }
6459
6548
  const containerRect = this.options.container.getBoundingClientRect();
6460
6549
  const overlayRect = this._element.getBoundingClientRect();
@@ -6462,24 +6551,54 @@ class Overlay extends CompositeDisposable {
6462
6551
  // a minimum width of minimumViewportWidth must be inside the viewport
6463
6552
  const xOffset = Math.max(0, this.getMinimumWidth(overlayRect.width));
6464
6553
  // 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`;
6554
+ const yOffset = Math.max(0, this.getMinimumHeight(overlayRect.height));
6555
+ if (this.verticalAlignment === 'top') {
6556
+ const top = clamp(overlayRect.top - containerRect.top, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));
6557
+ this._element.style.top = `${top}px`;
6558
+ this._element.style.bottom = 'auto';
6559
+ }
6560
+ if (this.verticalAlignment === 'bottom') {
6561
+ const bottom = clamp(containerRect.bottom - overlayRect.bottom, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));
6562
+ this._element.style.bottom = `${bottom}px`;
6563
+ this._element.style.top = 'auto';
6564
+ }
6565
+ if (this.horiziontalAlignment === 'left') {
6566
+ const left = clamp(overlayRect.left - containerRect.left, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));
6567
+ this._element.style.left = `${left}px`;
6568
+ this._element.style.right = 'auto';
6569
+ }
6570
+ if (this.horiziontalAlignment === 'right') {
6571
+ const right = clamp(containerRect.right - overlayRect.right, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));
6572
+ this._element.style.right = `${right}px`;
6573
+ this._element.style.left = 'auto';
6574
+ }
6472
6575
  this._onDidChange.fire();
6473
6576
  }
6474
6577
  toJSON() {
6475
6578
  const container = this.options.container.getBoundingClientRect();
6476
6579
  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
- };
6580
+ const result = {};
6581
+ if (this.verticalAlignment === 'top') {
6582
+ result.top = parseFloat(this._element.style.top);
6583
+ }
6584
+ else if (this.verticalAlignment === 'bottom') {
6585
+ result.bottom = parseFloat(this._element.style.bottom);
6586
+ }
6587
+ else {
6588
+ result.top = element.top - container.top;
6589
+ }
6590
+ if (this.horiziontalAlignment === 'left') {
6591
+ result.left = parseFloat(this._element.style.left);
6592
+ }
6593
+ else if (this.horiziontalAlignment === 'right') {
6594
+ result.right = parseFloat(this._element.style.right);
6595
+ }
6596
+ else {
6597
+ result.left = element.left - container.left;
6598
+ }
6599
+ result.width = element.width;
6600
+ result.height = element.height;
6601
+ return result;
6483
6602
  }
6484
6603
  setupDrag(dragTarget, options = { inDragMode: false }) {
6485
6604
  const move = new MutableDisposable();
@@ -6511,12 +6630,30 @@ class Overlay extends CompositeDisposable {
6511
6630
  };
6512
6631
  }
6513
6632
  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));
6633
+ const yOffset = Math.max(0, this.getMinimumHeight(overlayRect.height));
6518
6634
  const top = clamp(y - offset.y, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));
6519
- this.setBounds({ top, left });
6635
+ const bottom = clamp(offset.y -
6636
+ y +
6637
+ containerRect.height -
6638
+ overlayRect.height, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));
6639
+ const left = clamp(x - offset.x, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));
6640
+ const right = clamp(offset.x - x + containerRect.width - overlayRect.width, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));
6641
+ const bounds = {};
6642
+ // Anchor to top or to bottom depending on which one is closer
6643
+ if (top <= bottom) {
6644
+ bounds.top = top;
6645
+ }
6646
+ else {
6647
+ bounds.bottom = bottom;
6648
+ }
6649
+ // Anchor to left or to right depending on which one is closer
6650
+ if (left <= right) {
6651
+ bounds.left = left;
6652
+ }
6653
+ else {
6654
+ bounds.right = right;
6655
+ }
6656
+ this.setBounds(bounds);
6520
6657
  }), addDisposableWindowListener(window, 'mouseup', () => {
6521
6658
  toggleClass(this._element, 'dv-resize-container-dragging', false);
6522
6659
  move.dispose();
@@ -6584,8 +6721,10 @@ class Overlay extends CompositeDisposable {
6584
6721
  };
6585
6722
  }
6586
6723
  let top = undefined;
6724
+ let bottom = undefined;
6587
6725
  let height = undefined;
6588
6726
  let left = undefined;
6727
+ let right = undefined;
6589
6728
  let width = undefined;
6590
6729
  const moveTop = () => {
6591
6730
  top = clamp(y, -Number.MAX_VALUE, startPosition.originalY +
@@ -6599,6 +6738,7 @@ class Overlay extends CompositeDisposable {
6599
6738
  startPosition.originalY +
6600
6739
  startPosition.originalHeight -
6601
6740
  top;
6741
+ bottom = containerRect.height - top - height;
6602
6742
  };
6603
6743
  const moveBottom = () => {
6604
6744
  top =
@@ -6610,6 +6750,7 @@ class Overlay extends CompositeDisposable {
6610
6750
  ? -top +
6611
6751
  this.options.minimumInViewportHeight
6612
6752
  : Overlay.MINIMUM_HEIGHT, Number.MAX_VALUE);
6753
+ bottom = containerRect.height - top - height;
6613
6754
  };
6614
6755
  const moveLeft = () => {
6615
6756
  left = clamp(x, -Number.MAX_VALUE, startPosition.originalX +
@@ -6623,6 +6764,7 @@ class Overlay extends CompositeDisposable {
6623
6764
  startPosition.originalX +
6624
6765
  startPosition.originalWidth -
6625
6766
  left;
6767
+ right = containerRect.width - left - width;
6626
6768
  };
6627
6769
  const moveRight = () => {
6628
6770
  left =
@@ -6634,6 +6776,7 @@ class Overlay extends CompositeDisposable {
6634
6776
  ? -left +
6635
6777
  this.options.minimumInViewportWidth
6636
6778
  : Overlay.MINIMUM_WIDTH, Number.MAX_VALUE);
6779
+ right = containerRect.width - left - width;
6637
6780
  };
6638
6781
  switch (direction) {
6639
6782
  case 'top':
@@ -6665,7 +6808,24 @@ class Overlay extends CompositeDisposable {
6665
6808
  moveRight();
6666
6809
  break;
6667
6810
  }
6668
- this.setBounds({ height, width, top, left });
6811
+ const bounds = {};
6812
+ // Anchor to top or to bottom depending on which one is closer
6813
+ if (top <= bottom) {
6814
+ bounds.top = top;
6815
+ }
6816
+ else {
6817
+ bounds.bottom = bottom;
6818
+ }
6819
+ // Anchor to left or to right depending on which one is closer
6820
+ if (left <= right) {
6821
+ bounds.left = left;
6822
+ }
6823
+ else {
6824
+ bounds.right = right;
6825
+ }
6826
+ bounds.height = height;
6827
+ bounds.width = width;
6828
+ this.setBounds(bounds);
6669
6829
  }), {
6670
6830
  dispose: () => {
6671
6831
  for (const iframe of iframes) {
@@ -6688,7 +6848,7 @@ class Overlay extends CompositeDisposable {
6688
6848
  if (typeof this.options.minimumInViewportHeight === 'number') {
6689
6849
  return height - this.options.minimumInViewportHeight;
6690
6850
  }
6691
- return height;
6851
+ return 0;
6692
6852
  }
6693
6853
  dispose() {
6694
6854
  this._element.remove();
@@ -6711,7 +6871,7 @@ class DockviewFloatingGroupPanel extends CompositeDisposable {
6711
6871
  }
6712
6872
 
6713
6873
  const DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE = 100;
6714
- const DEFAULT_FLOATING_GROUP_POSITION = { left: 100, top: 100 };
6874
+ const DEFAULT_FLOATING_GROUP_POSITION = { left: 100, top: 100, width: 300, height: 300 };
6715
6875
 
6716
6876
  function createFocusableElement() {
6717
6877
  const element = document.createElement('div');
@@ -7054,6 +7214,7 @@ class DockviewComponent extends BaseGrid {
7054
7214
  parentElement: options.parentElement,
7055
7215
  disableAutoResizing: options.disableAutoResizing,
7056
7216
  locked: options.locked,
7217
+ margin: options.gap,
7057
7218
  });
7058
7219
  this.nextGroupId = sequentialNumberGenerator();
7059
7220
  this._deserializer = new DefaultDockviewDeserialzier(this);
@@ -7079,9 +7240,9 @@ class DockviewComponent extends BaseGrid {
7079
7240
  this._onDidActivePanelChange = new Emitter();
7080
7241
  this.onDidActivePanelChange = this._onDidActivePanelChange.event;
7081
7242
  this._onDidMovePanel = new Emitter();
7243
+ this.onDidMovePanel = this._onDidMovePanel.event;
7082
7244
  this._floatingGroups = [];
7083
7245
  this._popoutGroups = [];
7084
- this._ignoreEvents = 0;
7085
7246
  this._onDidRemoveGroup = new Emitter();
7086
7247
  this.onDidRemoveGroup = this._onDidRemoveGroup.event;
7087
7248
  this._onDidAddGroup = new Emitter();
@@ -7095,7 +7256,9 @@ class DockviewComponent extends BaseGrid {
7095
7256
  this.overlayRenderContainer = new OverlayRenderContainer(gready);
7096
7257
  toggleClass(this.gridview.element, 'dv-dockview', true);
7097
7258
  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) => {
7259
+ 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(() => {
7260
+ this.updateWatermark();
7261
+ }), this.onDidAdd((event) => {
7099
7262
  if (!this._moving) {
7100
7263
  this._onDidAddGroup.fire(event);
7101
7264
  }
@@ -7109,7 +7272,7 @@ class DockviewComponent extends BaseGrid {
7109
7272
  }
7110
7273
  }), exports.DockviewEvent.any(this.onDidAdd, this.onDidRemove)(() => {
7111
7274
  this.updateWatermark();
7112
- }), exports.DockviewEvent.any(this.onDidAddPanel, this.onDidRemovePanel, this.onDidActivePanelChange)(() => {
7275
+ }), exports.DockviewEvent.any(this.onDidAddPanel, this.onDidRemovePanel, this.onDidAddGroup, this.onDidRemove, this.onDidMovePanel, this.onDidActivePanelChange)(() => {
7113
7276
  this._bufferOnDidLayoutChange.fire();
7114
7277
  }), exports.DockviewDisposable.from(() => {
7115
7278
  // iterate over a copy of the array since .dispose() mutates the original array
@@ -7360,8 +7523,8 @@ class DockviewComponent extends BaseGrid {
7360
7523
  console.error('dockview: failed to create popout window', err);
7361
7524
  });
7362
7525
  }
7363
- addFloatingGroup(item, coord, options) {
7364
- var _a, _b, _c, _d, _e, _f, _g;
7526
+ addFloatingGroup(item, options) {
7527
+ var _a, _b, _c, _d, _e;
7365
7528
  let group;
7366
7529
  if (item instanceof DockviewPanel) {
7367
7530
  group = this.createGroup();
@@ -7406,26 +7569,62 @@ class DockviewComponent extends BaseGrid {
7406
7569
  }
7407
7570
  }
7408
7571
  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'
7572
+ function getAnchoredBox() {
7573
+ if (options === null || options === void 0 ? void 0 : options.position) {
7574
+ const result = {};
7575
+ if ('left' in options.position) {
7576
+ result.left = Math.max(options.position.left, 0);
7577
+ }
7578
+ else if ('right' in options.position) {
7579
+ result.right = Math.max(options.position.right, 0);
7580
+ }
7581
+ else {
7582
+ result.left = DEFAULT_FLOATING_GROUP_POSITION.left;
7583
+ }
7584
+ if ('top' in options.position) {
7585
+ result.top = Math.max(options.position.top, 0);
7586
+ }
7587
+ else if ('bottom' in options.position) {
7588
+ result.bottom = Math.max(options.position.bottom, 0);
7589
+ }
7590
+ else {
7591
+ result.top = DEFAULT_FLOATING_GROUP_POSITION.top;
7592
+ }
7593
+ if ('width' in options.position) {
7594
+ result.width = Math.max(options.position.width, 0);
7595
+ }
7596
+ else {
7597
+ result.width = DEFAULT_FLOATING_GROUP_POSITION.width;
7598
+ }
7599
+ if ('height' in options.position) {
7600
+ result.height = Math.max(options.position.height, 0);
7601
+ }
7602
+ else {
7603
+ result.height = DEFAULT_FLOATING_GROUP_POSITION.height;
7604
+ }
7605
+ return result;
7606
+ }
7607
+ return {
7608
+ left: typeof (options === null || options === void 0 ? void 0 : options.x) === 'number'
7609
+ ? Math.max(options.x, 0)
7610
+ : DEFAULT_FLOATING_GROUP_POSITION.left,
7611
+ top: typeof (options === null || options === void 0 ? void 0 : options.y) === 'number'
7612
+ ? Math.max(options.y, 0)
7613
+ : DEFAULT_FLOATING_GROUP_POSITION.top,
7614
+ width: typeof (options === null || options === void 0 ? void 0 : options.width) === 'number'
7615
+ ? Math.max(options.width, 0)
7616
+ : DEFAULT_FLOATING_GROUP_POSITION.width,
7617
+ height: typeof (options === null || options === void 0 ? void 0 : options.height) === 'number'
7618
+ ? Math.max(options.height, 0)
7619
+ : DEFAULT_FLOATING_GROUP_POSITION.height,
7620
+ };
7621
+ }
7622
+ const anchoredBox = getAnchoredBox();
7623
+ const overlay = new Overlay(Object.assign(Object.assign({ container: this.gridview.element, content: group.element }, anchoredBox), { minimumInViewportWidth: this.options.floatingGroupBounds === 'boundedWithinViewport'
7423
7624
  ? 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'
7625
+ : (_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
7626
  ? 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
- });
7627
+ : (_e = (_d = this.options.floatingGroupBounds) === null || _d === void 0 ? void 0 : _d.minimumHeightWithinViewport) !== null && _e !== void 0 ? _e : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE }));
7429
7628
  const el = group.element.querySelector('.void-container');
7430
7629
  if (!el) {
7431
7630
  throw new Error('failed to find drag handle');
@@ -7523,12 +7722,18 @@ class DockviewComponent extends BaseGrid {
7523
7722
  group.overlay.minimumInViewportWidth =
7524
7723
  (_b = this.options.floatingGroupBounds) === null || _b === void 0 ? void 0 : _b.minimumWidthWithinViewport;
7525
7724
  }
7526
- group.overlay.setBounds({});
7725
+ group.overlay.setBounds();
7527
7726
  }
7528
7727
  }
7529
7728
  if (changed_rootOverlayOptions) {
7530
7729
  this._rootDropTarget.setOverlayModel(options.rootOverlayModel);
7531
7730
  }
7731
+ if (this.gridview.margin !== 0 && options.gap === undefined) {
7732
+ this.gridview.margin = 0;
7733
+ }
7734
+ if (typeof options.gap === 'number') {
7735
+ this.gridview.margin = options.gap;
7736
+ }
7532
7737
  this.layout(this.gridview.width, this.gridview.height, true);
7533
7738
  }
7534
7739
  layout(width, height, forceResize) {
@@ -7690,11 +7895,10 @@ class DockviewComponent extends BaseGrid {
7690
7895
  const { data, position } = serializedFloatingGroup;
7691
7896
  const group = createGroupFromSerializedState(data);
7692
7897
  this.addFloatingGroup(group, {
7693
- x: position.left,
7694
- y: position.top,
7695
- height: position.height,
7696
- width: position.width,
7697
- }, { skipRemoveGroup: true, inDragMode: false });
7898
+ position: position,
7899
+ skipRemoveGroup: true,
7900
+ inDragMode: false,
7901
+ });
7698
7902
  }
7699
7903
  const serializedPopoutGroups = (_b = data.popoutGroups) !== null && _b !== void 0 ? _b : [];
7700
7904
  for (const serializedPopoutGroup of serializedPopoutGroups) {
@@ -7829,11 +8033,7 @@ class DockviewComponent extends BaseGrid {
7829
8033
  options.floating !== null
7830
8034
  ? options.floating
7831
8035
  : {};
7832
- this.addFloatingGroup(group, o, {
7833
- inDragMode: false,
7834
- skipRemoveGroup: true,
7835
- skipActiveGroup: true,
7836
- });
8036
+ this.addFloatingGroup(group, Object.assign(Object.assign({}, o), { inDragMode: false, skipRemoveGroup: true, skipActiveGroup: true }));
7837
8037
  panel = this.createPanel(options, group);
7838
8038
  group.model.openPanel(panel, {
7839
8039
  skipSetActive: options.inactive,
@@ -7872,11 +8072,7 @@ class DockviewComponent extends BaseGrid {
7872
8072
  options.floating !== null
7873
8073
  ? options.floating
7874
8074
  : {};
7875
- this.addFloatingGroup(group, coordinates, {
7876
- inDragMode: false,
7877
- skipRemoveGroup: true,
7878
- skipActiveGroup: true,
7879
- });
8075
+ this.addFloatingGroup(group, Object.assign(Object.assign({}, coordinates), { inDragMode: false, skipRemoveGroup: true, skipActiveGroup: true }));
7880
8076
  panel = this.createPanel(options, group);
7881
8077
  group.model.openPanel(panel, {
7882
8078
  skipSetActive: options.inactive,
@@ -7931,6 +8127,7 @@ class DockviewComponent extends BaseGrid {
7931
8127
  });
7932
8128
  const watermarkContainer = document.createElement('div');
7933
8129
  watermarkContainer.className = 'dv-watermark-container';
8130
+ addTestId(watermarkContainer, 'watermark-component');
7934
8131
  watermarkContainer.appendChild(this.watermark.element);
7935
8132
  this.gridview.element.appendChild(watermarkContainer);
7936
8133
  }
@@ -8119,6 +8316,7 @@ class DockviewComponent extends BaseGrid {
8119
8316
  this.doSetGroupAndPanelActive(destinationGroup);
8120
8317
  this._onDidMovePanel.fire({
8121
8318
  panel: removedPanel,
8319
+ from: sourceGroup,
8122
8320
  });
8123
8321
  }
8124
8322
  else {
@@ -8142,6 +8340,10 @@ class DockviewComponent extends BaseGrid {
8142
8340
  // if a group has one tab - we are essentially moving the 'group'
8143
8341
  // which is equivalent to swapping two views in this case
8144
8342
  this.gridview.moveView(sourceParentLocation, from, to);
8343
+ this._onDidMovePanel.fire({
8344
+ panel: this.getGroupPanel(sourceItemId),
8345
+ from: sourceGroup,
8346
+ });
8145
8347
  return;
8146
8348
  }
8147
8349
  }
@@ -8155,6 +8357,10 @@ class DockviewComponent extends BaseGrid {
8155
8357
  const location = getRelativeLocation(this.gridview.orientation, updatedReferenceLocation, destinationTarget);
8156
8358
  this.movingLock(() => this.doAddGroup(targetGroup, location));
8157
8359
  this.doSetGroupAndPanelActive(targetGroup);
8360
+ this._onDidMovePanel.fire({
8361
+ panel: this.getGroupPanel(sourceItemId),
8362
+ from: sourceGroup,
8363
+ });
8158
8364
  }
8159
8365
  else {
8160
8366
  /**
@@ -8174,6 +8380,10 @@ class DockviewComponent extends BaseGrid {
8174
8380
  skipSetGroupActive: true,
8175
8381
  }));
8176
8382
  this.doSetGroupAndPanelActive(group);
8383
+ this._onDidMovePanel.fire({
8384
+ panel: removedPanel,
8385
+ from: sourceGroup,
8386
+ });
8177
8387
  }
8178
8388
  }
8179
8389
  }
@@ -8198,9 +8408,6 @@ class DockviewComponent extends BaseGrid {
8198
8408
  }
8199
8409
  });
8200
8410
  this.doSetGroupAndPanelActive(to);
8201
- panels.forEach((panel) => {
8202
- this._onDidMovePanel.fire({ panel });
8203
- });
8204
8411
  }
8205
8412
  else {
8206
8413
  switch (from.api.location.type) {
@@ -8226,10 +8433,10 @@ class DockviewComponent extends BaseGrid {
8226
8433
  const referenceLocation = getGridLocation(to.element);
8227
8434
  const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, target);
8228
8435
  this.gridview.addView(from, exports.Sizing.Distribute, dropLocation);
8229
- from.panels.forEach((panel) => {
8230
- this._onDidMovePanel.fire({ panel });
8231
- });
8232
8436
  }
8437
+ from.panels.forEach((panel) => {
8438
+ this._onDidMovePanel.fire({ panel, from });
8439
+ });
8233
8440
  }
8234
8441
  doSetGroupActive(group) {
8235
8442
  super.doSetGroupActive(group);