dockview-react 1.14.2 → 1.15.1

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