dockview-react 1.17.2 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * dockview-react
3
- * @version 1.17.2
3
+ * @version 2.1.0
4
4
  * @link https://github.com/mathuo/dockview
5
5
  * @license MIT
6
6
  */
@@ -36,7 +36,7 @@ function styleInject(css, ref) {
36
36
  }
37
37
  }
38
38
 
39
- var css_248z = ".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-overlay-z-index: 999;\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-overlay-z-index: 999;\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-overlay-z-index: 999;\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-overlay-z-index: 999;\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-overlay-z-index: 999;\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-overlay-z-index: 999;\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:not(.disabled)::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:not(.disabled):hover::after {\n background-color: var(--dv-separator-handle-hover-background-color);\n}\n.dockview-theme-replit .horizontal > .sash-container > .sash:not(.disabled)::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:not(.disabled):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-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.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 --dv-overlay-z-index: var(--dv-overlay-z-index, 999);\n position: absolute;\n z-index: calc(var(--dv-overlay-z-index) - 2);\n border: 1px solid var(--dv-tab-divider-color);\n box-shadow: var(--dv-floating-box-shadow);\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: var(--dv-overlay-z-index);\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: var(--dv-overlay-z-index);\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: var(--dv-overlay-z-index);\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: var(--dv-overlay-z-index);\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: var(--dv-overlay-z-index);\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: var(--dv-overlay-z-index);\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: var(--dv-overlay-z-index);\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: var(--dv-overlay-z-index);\n position: absolute;\n cursor: se-resize;\n}\n.dv-render-overlay {\n --dv-overlay-z-index: var(--dv-overlay-z-index, 999);\n position: absolute;\n z-index: 1;\n height: 100%;\n}\n.dv-render-overlay.dv-render-overlay-float {\n z-index: calc(var(--dv-overlay-z-index) - 1);\n}\n\n.dv-debug .dv-render-overlay {\n outline: 1px solid red;\n outline-offset: -1;\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: ellipsis;\n}\n.tab .dv-default-tab .dv-default-tab-content {\n padding: 0px 8px;\n flex-grow: 1;\n}\n.tab .dv-default-tab .dv-default-tab-action {\n padding: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n}\n.tab .dv-default-tab .dv-default-tab-action:hover {\n border-radius: 2px;\n background-color: var(--dv-icon-hover-background-color);\n}\n.tabs-and-actions-container {\n display: flex;\n background-color: var(--dv-tabs-and-actions-container-background-color);\n flex-shrink: 0;\n box-sizing: border-box;\n height: var(--dv-tabs-and-actions-container-height);\n font-size: var(--dv-tabs-and-actions-container-font-size);\n}\n.tabs-and-actions-container.hidden {\n display: none;\n}\n.tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .tabs-container {\n flex-grow: 1;\n}\n.tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .tabs-container .tab {\n flex-grow: 1;\n}\n.tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .void-container {\n flex-grow: 0;\n}\n.tabs-and-actions-container .void-container {\n display: flex;\n flex-grow: 1;\n cursor: grab;\n}\n.tabs-and-actions-container .tabs-container {\n display: flex;\n overflow-x: overlay;\n overflow-y: hidden;\n scrollbar-width: thin;\n /* Track */\n /* Handle */\n}\n.tabs-and-actions-container .tabs-container::-webkit-scrollbar {\n height: 3px;\n}\n.tabs-and-actions-container .tabs-container::-webkit-scrollbar-track {\n background: transparent;\n}\n.tabs-and-actions-container .tabs-container::-webkit-scrollbar-thumb {\n background: var(--dv-tabs-container-scrollbar-color);\n}\n.tabs-and-actions-container .tabs-container .tab {\n -webkit-user-drag: element;\n outline: none;\n min-width: 75px;\n cursor: pointer;\n position: relative;\n box-sizing: border-box;\n}\n.tabs-and-actions-container .tabs-container .tab:not(:first-child)::before {\n content: \" \";\n position: absolute;\n top: 0;\n left: 0;\n z-index: 5;\n pointer-events: none;\n background-color: var(--dv-tab-divider-color);\n width: 1px;\n height: 100%;\n}\n.watermark {\n display: flex;\n width: 100%;\n}\n.watermark.has-actions .watermark-title .actions-container {\n display: none;\n}\n.watermark .watermark-title {\n height: 35px;\n width: 100%;\n display: flex;\n}\n.watermark .watermark-content {\n flex-grow: 1;\n}\n.watermark .actions-container {\n display: flex;\n align-items: center;\n padding: 0px 8px;\n}\n.watermark .actions-container .close-action {\n padding: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n cursor: pointer;\n color: var(--dv-activegroup-hiddenpanel-tab-color);\n}\n.watermark .actions-container .close-action:hover {\n border-radius: 2px;\n background-color: var(--dv-icon-hover-background-color);\n}";
39
+ var css_248z = ".dv-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-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-overlay-z-index: 999;\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-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-overlay-z-index: 999;\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-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-overlay-z-index: 999;\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 .dv-groupview.dv-active-group > .dv-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 .dv-groupview.dv-active-group > .dv-tabs-and-actions-container .dv-tab.dv-active-tab {\n border-top: 2px solid var(--dv-activegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .dv-groupview.dv-active-group > .dv-tabs-and-actions-container .dv-tab.dv-inactive-tab {\n border-top: 2px solid var(--dv-activegroup-hiddenpanel-tab-background-color);\n}\n.dockview-theme-vs .dv-groupview.dv-inactive-group > .dv-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 .dv-groupview.dv-inactive-group > .dv-tabs-and-actions-container .dv-tab.dv-active-tab {\n border-top: 2px solid var(--dv-inactivegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .dv-groupview.dv-inactive-group > .dv-tabs-and-actions-container .dv-tab.dv-inactive-tab {\n border-top: 2px solid var(--dv-inactivegroup-hiddenpanel-tab-background-color);\n}\n\n.dockview-theme-abyss {\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-overlay-z-index: 999;\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-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-overlay-z-index: 999;\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 .dv-groupview.dv-active-group > .dv-tabs-and-actions-container > .dv-tabs-container > .dv-tab.dv-active-tab {\n position: relative;\n}\n.dockview-theme-dracula .dv-groupview.dv-active-group > .dv-tabs-and-actions-container > .dv-tabs-container > .dv-tab.dv-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 .dv-groupview.dv-inactive-group > .dv-tabs-and-actions-container > .dv-tabs-container > .dv-tab.dv-active-tab {\n position: relative;\n}\n.dockview-theme-dracula .dv-groupview.dv-inactive-group > .dv-tabs-and-actions-container > .dv-tabs-container > .dv-tab.dv-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-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-overlay-z-index: 999;\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-separator-handle-background-color: #cfd1d3;\n --dv-separator-handle-hover-background-color: #babbbb;\n}\n.dockview-theme-replit .dv-resize-container:has(> .dv-groupview) {\n border-radius: 8px;\n}\n.dockview-theme-replit .dv-groupview {\n overflow: hidden;\n border-radius: 10px;\n}\n.dockview-theme-replit .dv-groupview .dv-tabs-and-actions-container {\n border-bottom: 1px solid rgba(128, 128, 128, 0.35);\n}\n.dockview-theme-replit .dv-groupview .dv-tabs-and-actions-container .dv-tab {\n margin: 4px;\n border-radius: 8px;\n}\n.dockview-theme-replit .dv-groupview .dv-tabs-and-actions-container .dv-tab .dv-svg {\n height: 8px;\n width: 8px;\n}\n.dockview-theme-replit .dv-groupview .dv-tabs-and-actions-container .dv-tab:hover {\n background-color: #e4e5e6 !important;\n}\n.dockview-theme-replit .dv-groupview .dv-content-container {\n background-color: #fcfcfc;\n}\n.dockview-theme-replit .dv-groupview.dv-active-group {\n border: 1px solid rgba(128, 128, 128, 0.35);\n}\n.dockview-theme-replit .dv-groupview.dv-inactive-group {\n border: 1px solid transparent;\n}\n.dockview-theme-replit .vertical > .sash-container > .sash:not(.disabled)::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:not(.disabled):hover::after {\n background-color: var(--dv-separator-handle-hover-background-color);\n}\n.dockview-theme-replit .dv-horizontal > .dv-sash-container > .dv-sash:not(.disabled)::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 .dv-horizontal > .dv-sash-container > .dv-sash:not(.disabled):hover::after {\n background-color: var(--dv-separator-handle-hover-background-color);\n}\n.dv-drop-target {\n position: relative;\n}\n.dv-drop-target > .dv-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.dv-drop-target > .dv-drop-target-dropzone > .dv-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.dv-drop-target > .dv-drop-target-dropzone > .dv-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.dv-drop-target > .dv-drop-target-dropzone > .dv-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.dv-drop-target > .dv-drop-target-dropzone > .dv-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.dv-drop-target > .dv-drop-target-dropzone > .dv-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-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.dv-groupview.dv-active-group > .dv-tabs-and-actions-container > .dv-tabs-container > .dv-tab.dv-active-tab {\n background-color: var(--dv-activegroup-visiblepanel-tab-background-color);\n color: var(--dv-activegroup-visiblepanel-tab-color);\n}\n.dv-groupview.dv-active-group > .dv-tabs-and-actions-container > .dv-tabs-container > .dv-tab.dv-inactive-tab {\n background-color: var(--dv-activegroup-hiddenpanel-tab-background-color);\n color: var(--dv-activegroup-hiddenpanel-tab-color);\n}\n.dv-groupview.dv-inactive-group > .dv-tabs-and-actions-container > .dv-tabs-container > .dv-tab.dv-active-tab {\n background-color: var(--dv-inactivegroup-visiblepanel-tab-background-color);\n color: var(--dv-inactivegroup-visiblepanel-tab-color);\n}\n.dv-groupview.dv-inactive-group > .dv-tabs-and-actions-container > .dv-tabs-container > .dv-tab.dv-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.dv-tab.dv-tab-dragging {\n background-color: var(--dv-activegroup-visiblepanel-tab-background-color);\n color: var(--dv-activegroup-visiblepanel-tab-color);\n}\n.dv-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.dv-groupview:focus {\n outline: none;\n}\n.dv-groupview > .dv-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.dv-grid-view,\n.dv-branch-node {\n height: 100%;\n width: 100%;\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 --dv-overlay-z-index: var(--dv-overlay-z-index, 999);\n position: absolute;\n z-index: calc(var(--dv-overlay-z-index) - 2);\n border: 1px solid var(--dv-tab-divider-color);\n box-shadow: var(--dv-floating-box-shadow);\n}\n.dv-resize-container.dv-hidden {\n display: none;\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: var(--dv-overlay-z-index);\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: var(--dv-overlay-z-index);\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: var(--dv-overlay-z-index);\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: var(--dv-overlay-z-index);\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: var(--dv-overlay-z-index);\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: var(--dv-overlay-z-index);\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: var(--dv-overlay-z-index);\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: var(--dv-overlay-z-index);\n position: absolute;\n cursor: se-resize;\n}\n.dv-render-overlay {\n --dv-overlay-z-index: var(--dv-overlay-z-index, 999);\n position: absolute;\n z-index: 1;\n height: 100%;\n}\n.dv-render-overlay.dv-render-overlay-float {\n z-index: calc(var(--dv-overlay-z-index) - 1);\n}\n\n.dv-debug .dv-render-overlay {\n outline: 1px solid red;\n outline-offset: -1;\n}\n.dv-pane-container {\n height: 100%;\n width: 100%;\n}\n.dv-pane-container.dv-animated .dv-view {\n transition-duration: 0.15s;\n transition-timing-function: ease-out;\n}\n.dv-pane-container .dv-view {\n overflow: hidden;\n display: flex;\n flex-direction: column;\n padding: 0px !important;\n}\n.dv-pane-container .dv-view:not(:first-child)::before {\n background-color: transparent !important;\n}\n.dv-pane-container .dv-view:not(:first-child) .dv-pane > .dv-pane-header {\n border-top: 1px solid var(--dv-paneview-header-border-color);\n}\n.dv-pane-container .dv-view .dv-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.dv-pane-container .dv-view .dv-default-header .dv-pane-header-icon {\n display: flex;\n justify-content: center;\n align-items: center;\n}\n.dv-pane-container .dv-view .dv-default-header > span {\n padding-left: 8px;\n flex-grow: 1;\n}\n.dv-pane-container:first-of-type > .dv-pane > .dv-pane-header {\n border-top: none !important;\n}\n.dv-pane-container .dv-pane {\n display: flex;\n flex-direction: column;\n overflow: hidden;\n height: 100%;\n}\n.dv-pane-container .dv-pane .dv-pane-header {\n box-sizing: border-box;\n user-select: none;\n position: relative;\n outline: none;\n}\n.dv-pane-container .dv-pane .dv-pane-header.dv-pane-draggable {\n cursor: pointer;\n}\n.dv-pane-container .dv-pane .dv-pane-header:focus:before, .dv-pane-container .dv-pane .dv-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.dv-pane-container .dv-pane .dv-pane-body {\n overflow-y: auto;\n overflow-x: hidden;\n flex-grow: 1;\n position: relative;\n outline: none;\n}\n.dv-pane-container .dv-pane .dv-pane-body:focus:before, .dv-pane-container .dv-pane .dv-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 .dv-split-view-container .dv-sash-container .dv-sash.dv-enabled {\n background-color: black;\n}\n.dv-debug .dv-split-view-container .dv-sash-container .dv-sash.dv-disabled {\n background-color: orange;\n}\n.dv-debug .dv-split-view-container .dv-sash-container .dv-sash.dv-maximum {\n background-color: green;\n}\n.dv-debug .dv-split-view-container .dv-sash-container .dv-sash.dv-minimum {\n background-color: red;\n}\n\n.dv-split-view-container {\n position: relative;\n overflow: hidden;\n height: 100%;\n width: 100%;\n}\n.dv-split-view-container.dv-splitview-disabled > .dv-sash-container > .dv-sash {\n pointer-events: none;\n}\n.dv-split-view-container.dv-animation .dv-view,\n.dv-split-view-container.dv-animation .dv-sash {\n transition-duration: 0.15s;\n transition-timing-function: ease-out;\n}\n.dv-split-view-container.dv-horizontal {\n height: 100%;\n}\n.dv-split-view-container.dv-horizontal > .dv-sash-container > .dv-sash {\n height: 100%;\n width: 4px;\n}\n.dv-split-view-container.dv-horizontal > .dv-sash-container > .dv-sash.dv-enabled {\n cursor: ew-resize;\n}\n.dv-split-view-container.dv-horizontal > .dv-sash-container > .dv-sash.dv-disabled {\n cursor: default;\n}\n.dv-split-view-container.dv-horizontal > .dv-sash-container > .dv-sash.dv-maximum {\n cursor: w-resize;\n}\n.dv-split-view-container.dv-horizontal > .dv-sash-container > .dv-sash.dv-minimum {\n cursor: e-resize;\n}\n.dv-split-view-container.dv-horizontal > .dv-view-container > .dv-view:not(:first-child)::before {\n height: 100%;\n width: 1px;\n}\n.dv-split-view-container.dv-vertical {\n width: 100%;\n}\n.dv-split-view-container.dv-vertical > .dv-sash-container > .dv-sash {\n width: 100%;\n height: 4px;\n}\n.dv-split-view-container.dv-vertical > .dv-sash-container > .dv-sash.dv-enabled {\n cursor: ns-resize;\n}\n.dv-split-view-container.dv-vertical > .dv-sash-container > .dv-sash.dv-disabled {\n cursor: default;\n}\n.dv-split-view-container.dv-vertical > .dv-sash-container > .dv-sash.dv-maximum {\n cursor: n-resize;\n}\n.dv-split-view-container.dv-vertical > .dv-sash-container > .dv-sash.dv-minimum {\n cursor: s-resize;\n}\n.dv-split-view-container.dv-vertical > .dv-view-container > .dv-view {\n width: 100%;\n}\n.dv-split-view-container.dv-vertical > .dv-view-container > .dv-view:not(:first-child)::before {\n height: 1px;\n width: 100%;\n}\n.dv-split-view-container .dv-sash-container {\n height: 100%;\n width: 100%;\n position: absolute;\n}\n.dv-split-view-container .dv-sash-container .dv-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.dv-split-view-container .dv-sash-container .dv-sash:not(.disabled):active {\n transition: background-color 0.1s ease-in-out;\n background-color: var(--dv-active-sash-color, transparent);\n}\n.dv-split-view-container .dv-sash-container .dv-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.dv-split-view-container .dv-view-container {\n position: relative;\n height: 100%;\n width: 100%;\n}\n.dv-split-view-container .dv-view-container .dv-view {\n height: 100%;\n box-sizing: border-box;\n overflow: auto;\n position: absolute;\n}\n.dv-split-view-container.dv-separator-border .dv-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.dv-tab {\n flex-shrink: 0;\n}\n.dv-tab:focus-within, .dv-tab:focus {\n position: relative;\n}\n.dv-tab:focus-within::after, .dv-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.dv-tab.dv-tab-dragging .dv-default-tab-action {\n background-color: var(--dv-activegroup-visiblepanel-tab-color);\n}\n.dv-tab.dv-active-tab .dv-default-tab .dv-default-tab-action {\n visibility: visible;\n}\n.dv-tab.dv-inactive-tab .dv-default-tab .dv-default-tab-action {\n visibility: hidden;\n}\n.dv-tab.dv-inactive-tab .dv-default-tab:hover .dv-default-tab-action {\n visibility: visible;\n}\n.dv-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: ellipsis;\n}\n.dv-tab .dv-default-tab .dv-default-tab-content {\n padding: 0px 8px;\n flex-grow: 1;\n}\n.dv-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.dv-tab .dv-default-tab .dv-default-tab-action:hover {\n border-radius: 2px;\n background-color: var(--dv-icon-hover-background-color);\n}\n.dv-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.dv-tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .dv-tabs-container {\n flex-grow: 1;\n}\n.dv-tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .dv-tabs-container .dv-tab {\n flex-grow: 1;\n}\n.dv-tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .dv-void-container {\n flex-grow: 0;\n}\n.dv-tabs-and-actions-container .dv-void-container {\n display: flex;\n flex-grow: 1;\n cursor: grab;\n}\n.dv-tabs-and-actions-container .dv-tabs-container {\n display: flex;\n overflow-x: overlay;\n overflow-y: hidden;\n scrollbar-width: thin;\n /* Track */\n /* Handle */\n}\n.dv-tabs-and-actions-container .dv-tabs-container::-webkit-scrollbar {\n height: 3px;\n}\n.dv-tabs-and-actions-container .dv-tabs-container::-webkit-scrollbar-track {\n background: transparent;\n}\n.dv-tabs-and-actions-container .dv-tabs-container::-webkit-scrollbar-thumb {\n background: var(--dv-tabs-container-scrollbar-color);\n}\n.dv-tabs-and-actions-container .dv-tabs-container .dv-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.dv-tabs-and-actions-container .dv-tabs-container .dv-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.dv-watermark {\n display: flex;\n height: 100%;\n}";
40
40
  styleInject(css_248z);
41
41
 
42
42
  class TransferObject {
@@ -357,31 +357,6 @@ class MutableDisposable {
357
357
  }
358
358
  }
359
359
 
360
- function createComponent(id, componentName, components = {}, frameworkComponents = {}, createFrameworkComponent, fallback) {
361
- const Component = typeof componentName === 'string'
362
- ? components[componentName]
363
- : undefined;
364
- const FrameworkComponent = typeof componentName === 'string'
365
- ? frameworkComponents[componentName]
366
- : undefined;
367
- if (Component && FrameworkComponent) {
368
- throw new Error(`Cannot create '${id}'. component '${componentName}' registered as both a component and frameworkComponent`);
369
- }
370
- if (FrameworkComponent) {
371
- if (!createFrameworkComponent) {
372
- throw new Error(`Cannot create '${id}' for framework component '${componentName}'. you must register a frameworkPanelWrapper to use framework components`);
373
- }
374
- return createFrameworkComponent.createComponent(id, componentName, FrameworkComponent);
375
- }
376
- if (!Component) {
377
- if (fallback) {
378
- return fallback();
379
- }
380
- throw new Error(`Cannot create '${id}', no component '${componentName}' provided`);
381
- }
382
- return new Component(id, componentName);
383
- }
384
-
385
360
  function watchElementResize(element, cb) {
386
361
  const observer = new ResizeObserver((entires) => {
387
362
  /**
@@ -850,10 +825,10 @@ class Splitview {
850
825
  const tmp = this.size;
851
826
  this.size = this.orthogonalSize;
852
827
  this.orthogonalSize = tmp;
853
- removeClasses(this.element, 'horizontal', 'vertical');
828
+ removeClasses(this.element, 'dv-horizontal', 'dv-vertical');
854
829
  this.element.classList.add(this.orientation == exports.Orientation.HORIZONTAL
855
- ? 'horizontal'
856
- : 'vertical');
830
+ ? 'dv-horizontal'
831
+ : 'dv-vertical');
857
832
  }
858
833
  get minimumSize() {
859
834
  return this.viewItems.reduce((r, item) => r + item.minimumSize, 0);
@@ -1031,11 +1006,11 @@ class Splitview {
1031
1006
  }
1032
1007
  style(styles) {
1033
1008
  if ((styles === null || styles === void 0 ? void 0 : styles.separatorBorder) === 'transparent') {
1034
- removeClasses(this.element, 'separator-border');
1009
+ removeClasses(this.element, 'dv-separator-border');
1035
1010
  this.element.style.removeProperty('--dv-separator-border');
1036
1011
  }
1037
1012
  else {
1038
- addClasses(this.element, 'separator-border');
1013
+ addClasses(this.element, 'dv-separator-border');
1039
1014
  if (styles === null || styles === void 0 ? void 0 : styles.separatorBorder) {
1040
1015
  this.element.style.setProperty('--dv-separator-border', styles.separatorBorder);
1041
1016
  }
@@ -1105,7 +1080,7 @@ class Splitview {
1105
1080
  }
1106
1081
  addView(view, size = { type: 'distribute' }, index = this.viewItems.length, skipLayout) {
1107
1082
  const container = document.createElement('div');
1108
- container.className = 'view';
1083
+ container.className = 'dv-view';
1109
1084
  container.appendChild(view.element);
1110
1085
  let viewSize;
1111
1086
  if (typeof size === 'number') {
@@ -1137,7 +1112,7 @@ class Splitview {
1137
1112
  if (this.viewItems.length > 1) {
1138
1113
  //add sash
1139
1114
  const sash = document.createElement('div');
1140
- sash.className = 'sash';
1115
+ sash.className = 'dv-sash';
1141
1116
  const onPointerStart = (event) => {
1142
1117
  for (const item of this.viewItems) {
1143
1118
  item.enabled = false;
@@ -1396,7 +1371,8 @@ class Splitview {
1396
1371
  const offset = i === 0 || visiblePanelsBeforeThisView === 0
1397
1372
  ? 0
1398
1373
  : viewLeftOffsets[i - 1] +
1399
- (visiblePanelsBeforeThisView / sashCount) * marginReducedSize;
1374
+ (visiblePanelsBeforeThisView / sashCount) *
1375
+ marginReducedSize;
1400
1376
  if (i < this.viewItems.length - 1) {
1401
1377
  // calculate sash position
1402
1378
  const newSize = view.visible
@@ -1507,27 +1483,27 @@ class Splitview {
1507
1483
  }
1508
1484
  }
1509
1485
  updateSash(sash, state) {
1510
- toggleClass(sash.container, 'disabled', state === exports.SashState.DISABLED);
1511
- toggleClass(sash.container, 'enabled', state === exports.SashState.ENABLED);
1512
- toggleClass(sash.container, 'maximum', state === exports.SashState.MAXIMUM);
1513
- toggleClass(sash.container, 'minimum', state === exports.SashState.MINIMUM);
1486
+ toggleClass(sash.container, 'dv-disabled', state === exports.SashState.DISABLED);
1487
+ toggleClass(sash.container, 'dv-enabled', state === exports.SashState.ENABLED);
1488
+ toggleClass(sash.container, 'dv-maximum', state === exports.SashState.MAXIMUM);
1489
+ toggleClass(sash.container, 'dv-minimum', state === exports.SashState.MINIMUM);
1514
1490
  }
1515
1491
  createViewContainer() {
1516
1492
  const element = document.createElement('div');
1517
- element.className = 'view-container';
1493
+ element.className = 'dv-view-container';
1518
1494
  return element;
1519
1495
  }
1520
1496
  createSashContainer() {
1521
1497
  const element = document.createElement('div');
1522
- element.className = 'sash-container';
1498
+ element.className = 'dv-sash-container';
1523
1499
  return element;
1524
1500
  }
1525
1501
  createContainer() {
1526
1502
  const element = document.createElement('div');
1527
1503
  const orientationClassname = this._orientation === exports.Orientation.HORIZONTAL
1528
- ? 'horizontal'
1529
- : 'vertical';
1530
- element.className = `split-view-container ${orientationClassname}`;
1504
+ ? 'dv-horizontal'
1505
+ : 'dv-vertical';
1506
+ element.className = `dv-split-view-container ${orientationClassname}`;
1531
1507
  return element;
1532
1508
  }
1533
1509
  dispose() {
@@ -1578,7 +1554,7 @@ class Paneview extends CompositeDisposable {
1578
1554
  this.onDidChange = this._onDidChange.event;
1579
1555
  this._orientation = (_a = options.orientation) !== null && _a !== void 0 ? _a : exports.Orientation.VERTICAL;
1580
1556
  this.element = document.createElement('div');
1581
- this.element.className = 'pane-container';
1557
+ this.element.className = 'dv-pane-container';
1582
1558
  container.appendChild(this.element);
1583
1559
  this.splitview = new Splitview(this.element, {
1584
1560
  orientation: this._orientation,
@@ -1670,10 +1646,10 @@ class Paneview extends CompositeDisposable {
1670
1646
  clearTimeout(this.animationTimer);
1671
1647
  this.animationTimer = undefined;
1672
1648
  }
1673
- addClasses(this.element, 'animated');
1649
+ addClasses(this.element, 'dv-animated');
1674
1650
  this.animationTimer = setTimeout(() => {
1675
1651
  this.animationTimer = undefined;
1676
- removeClasses(this.element, 'animated');
1652
+ removeClasses(this.element, 'dv-animated');
1677
1653
  }, 200);
1678
1654
  }
1679
1655
  dispose() {
@@ -1898,7 +1874,7 @@ class BranchNode extends CompositeDisposable {
1898
1874
  this._orthogonalSize = orthogonalSize;
1899
1875
  this._size = size;
1900
1876
  this.element = document.createElement('div');
1901
- this.element.className = 'branch-node';
1877
+ this.element.className = 'dv-branch-node';
1902
1878
  if (!childDescriptors) {
1903
1879
  this.splitview = new Splitview(this.element, {
1904
1880
  orientation: this.orientation,
@@ -2109,7 +2085,7 @@ function getGridLocation(element) {
2109
2085
  if (!parentElement) {
2110
2086
  throw new Error('Invalid grid element');
2111
2087
  }
2112
- if (/\bgrid-view\b/.test(parentElement.className)) {
2088
+ if (/\bdv-grid-view\b/.test(parentElement.className)) {
2113
2089
  return [];
2114
2090
  }
2115
2091
  const index = indexInParent(parentElement);
@@ -2246,6 +2222,7 @@ class Gridview {
2246
2222
  if (this.hasMaximizedView()) {
2247
2223
  this.exitMaximizedView();
2248
2224
  }
2225
+ serializeBranchNode(this.getView(), this.orientation);
2249
2226
  const hiddenOnMaximize = [];
2250
2227
  function hideAllViewsBut(parent, exclude) {
2251
2228
  for (let i = 0; i < parent.children.length; i++) {
@@ -2267,7 +2244,10 @@ class Gridview {
2267
2244
  }
2268
2245
  hideAllViewsBut(this.root, node);
2269
2246
  this._maximizedNode = { leaf: node, hiddenOnMaximize };
2270
- this._onDidMaximizedNodeChange.fire();
2247
+ this._onDidMaximizedNodeChange.fire({
2248
+ view: node.view,
2249
+ isMaximized: true,
2250
+ });
2271
2251
  }
2272
2252
  exitMaximizedView() {
2273
2253
  if (!this._maximizedNode) {
@@ -2288,24 +2268,51 @@ class Gridview {
2288
2268
  }
2289
2269
  }
2290
2270
  showViewsInReverseOrder(this.root);
2271
+ const tmp = this._maximizedNode.leaf;
2291
2272
  this._maximizedNode = undefined;
2292
- this._onDidMaximizedNodeChange.fire();
2273
+ this._onDidMaximizedNodeChange.fire({
2274
+ view: tmp.view,
2275
+ isMaximized: false,
2276
+ });
2293
2277
  }
2294
2278
  serialize() {
2279
+ const maximizedView = this.maximizedView();
2280
+ let maxmizedViewLocation;
2281
+ if (maximizedView) {
2282
+ /**
2283
+ * The minimum information we can get away with in order to serialize a maxmized view is it's location within the grid
2284
+ * which is represented as a branch of indices
2285
+ */
2286
+ maxmizedViewLocation = getGridLocation(maximizedView.element);
2287
+ }
2295
2288
  if (this.hasMaximizedView()) {
2296
2289
  /**
2297
- * do not persist maximized view state
2298
- * firstly exit any maximized views to ensure the correct dimensions are persisted
2290
+ * the saved layout cannot be in its maxmized state otherwise all of the underlying
2291
+ * view dimensions will be wrong
2292
+ *
2293
+ * To counteract this we temporaily remove the maximized view to compute the serialized output
2294
+ * of the grid before adding back the maxmized view as to not alter the layout from the users
2295
+ * perspective when `.toJSON()` is called
2299
2296
  */
2300
2297
  this.exitMaximizedView();
2301
2298
  }
2302
2299
  const root = serializeBranchNode(this.getView(), this.orientation);
2303
- return {
2300
+ const resullt = {
2304
2301
  root,
2305
2302
  width: this.width,
2306
2303
  height: this.height,
2307
2304
  orientation: this.orientation,
2308
2305
  };
2306
+ if (maxmizedViewLocation) {
2307
+ resullt.maximizedNode = {
2308
+ location: maxmizedViewLocation,
2309
+ };
2310
+ }
2311
+ if (maximizedView) {
2312
+ // replace any maximzied view that was removed for serialization purposes
2313
+ this.maximizeView(maximizedView);
2314
+ }
2315
+ return resullt;
2309
2316
  }
2310
2317
  dispose() {
2311
2318
  this.disposable.dispose();
@@ -2324,6 +2331,19 @@ class Gridview {
2324
2331
  const orientation = json.orientation;
2325
2332
  const height = orientation === exports.Orientation.VERTICAL ? json.height : json.width;
2326
2333
  this._deserialize(json.root, orientation, deserializer, height);
2334
+ /**
2335
+ * The deserialied layout must be positioned through this.layout(...)
2336
+ * before any maximizedNode can be positioned
2337
+ */
2338
+ this.layout(json.width, json.height);
2339
+ if (json.maximizedNode) {
2340
+ const location = json.maximizedNode.location;
2341
+ const [_, node] = this.getNode(location);
2342
+ if (!(node instanceof LeafNode)) {
2343
+ return;
2344
+ }
2345
+ this.maximizeView(node.view);
2346
+ }
2327
2347
  }
2328
2348
  _deserialize(root, orientation, deserializer, orthogonalSize) {
2329
2349
  this.root = this._deserializeNode(root, orientation, deserializer, orthogonalSize);
@@ -2457,7 +2477,7 @@ class Gridview {
2457
2477
  this._onDidMaximizedNodeChange = new Emitter();
2458
2478
  this.onDidMaximizedNodeChange = this._onDidMaximizedNodeChange.event;
2459
2479
  this.element = document.createElement('div');
2460
- this.element.className = 'grid-view';
2480
+ this.element.className = 'dv-grid-view';
2461
2481
  this._locked = locked !== null && locked !== void 0 ? locked : false;
2462
2482
  this._margin = margin !== null && margin !== void 0 ? margin : 0;
2463
2483
  this.root = new BranchNode(orientation, proportionalLayout, styles, 0, 0, this.locked, this.margin);
@@ -2748,6 +2768,8 @@ class BaseGrid extends Resizable {
2748
2768
  this.onDidRemove = this._onDidRemove.event;
2749
2769
  this._onDidAdd = new Emitter();
2750
2770
  this.onDidAdd = this._onDidAdd.event;
2771
+ this._onDidMaximizedChange = new Emitter();
2772
+ this.onDidMaximizedChange = this._onDidMaximizedChange.event;
2751
2773
  this._onDidActiveChange = new Emitter();
2752
2774
  this.onDidActiveChange = this._onDidActiveChange.event;
2753
2775
  this._bufferOnDidLayoutChange = new AsapEvent();
@@ -2763,7 +2785,12 @@ class BaseGrid extends Resizable {
2763
2785
  this.gridview.locked = !!options.locked;
2764
2786
  this.element.appendChild(this.gridview.element);
2765
2787
  this.layout(0, 0, true); // set some elements height/widths
2766
- this.addDisposables(this.gridview.onDidViewVisibilityChange(() => this._onDidViewVisibilityChangeMicroTaskQueue.fire()), this.onDidViewVisibilityChangeMicroTaskQueue(() => {
2788
+ this.addDisposables(this.gridview.onDidMaximizedNodeChange((event) => {
2789
+ this._onDidMaximizedChange.fire({
2790
+ panel: event.view,
2791
+ isMaximized: event.isMaximized,
2792
+ });
2793
+ }), this.gridview.onDidViewVisibilityChange(() => this._onDidViewVisibilityChangeMicroTaskQueue.fire()), this.onDidViewVisibilityChangeMicroTaskQueue(() => {
2767
2794
  this.layout(this.width, this.height, true);
2768
2795
  }), exports.DockviewDisposable.from(() => {
2769
2796
  var _a;
@@ -2813,9 +2840,6 @@ class BaseGrid extends Resizable {
2813
2840
  hasMaximizedGroup() {
2814
2841
  return this.gridview.hasMaximizedView();
2815
2842
  }
2816
- get onDidMaximizedGroupChange() {
2817
- return this.gridview.onDidMaximizedNodeChange;
2818
- }
2819
2843
  doAddGroup(group, location = [0], size) {
2820
2844
  this.gridview.addView(group, size !== null && size !== void 0 ? size : exports.Sizing.Distribute, location);
2821
2845
  this._onDidAdd.fire(group);
@@ -3679,7 +3703,7 @@ class DragHandler extends CompositeDisposable {
3679
3703
  * dnd logic. You can see the code at
3680
3704
  * https://github.com/react-dnd/react-dnd/blob/main/packages/backend-html5/src/HTML5BackendImpl.ts#L542
3681
3705
  */
3682
- event.dataTransfer.setData('text/plain', '__dockview_internal_drag_event__');
3706
+ event.dataTransfer.setData('text/plain', '');
3683
3707
  }
3684
3708
  }
3685
3709
  }), addDisposableListener(this.el, 'dragend', () => {
@@ -3853,12 +3877,12 @@ class Droptarget extends CompositeDisposable {
3853
3877
  this.markAsUsed(e);
3854
3878
  if (!this.targetElement) {
3855
3879
  this.targetElement = document.createElement('div');
3856
- this.targetElement.className = 'drop-target-dropzone';
3880
+ this.targetElement.className = 'dv-drop-target-dropzone';
3857
3881
  this.overlayElement = document.createElement('div');
3858
- this.overlayElement.className = 'drop-target-selection';
3882
+ this.overlayElement.className = 'dv-drop-target-selection';
3859
3883
  this._state = 'center';
3860
3884
  this.targetElement.appendChild(this.overlayElement);
3861
- this.element.classList.add('drop-target');
3885
+ this.element.classList.add('dv-drop-target');
3862
3886
  this.element.append(this.targetElement);
3863
3887
  }
3864
3888
  this.toggleClasses(quadrant, width, height);
@@ -3996,7 +4020,7 @@ class Droptarget extends CompositeDisposable {
3996
4020
  this.element.removeChild(this.targetElement);
3997
4021
  this.targetElement = undefined;
3998
4022
  this.overlayElement = undefined;
3999
- this.element.classList.remove('drop-target');
4023
+ this.element.classList.remove('dv-drop-target');
4000
4024
  }
4001
4025
  }
4002
4026
  }
@@ -4333,7 +4357,7 @@ class PaneviewPanel extends BasePanelView {
4333
4357
  this._headerVisible = isHeaderVisible;
4334
4358
  this._onDidChangeExpansionState.fire(this.isExpanded()); // initialize value
4335
4359
  this._orientation = orientation;
4336
- this.element.classList.add('pane');
4360
+ this.element.classList.add('dv-pane');
4337
4361
  this.addDisposables(this.api.onWillVisibilityChange((event) => {
4338
4362
  const { isVisible } = event;
4339
4363
  const { accessor } = this._params;
@@ -4430,14 +4454,14 @@ class PaneviewPanel extends BasePanelView {
4430
4454
  renderOnce() {
4431
4455
  this.header = document.createElement('div');
4432
4456
  this.header.tabIndex = 0;
4433
- this.header.className = 'pane-header';
4457
+ this.header.className = 'dv-pane-header';
4434
4458
  this.header.style.height = `${this.headerSize}px`;
4435
4459
  this.header.style.lineHeight = `${this.headerSize}px`;
4436
4460
  this.header.style.minHeight = `${this.headerSize}px`;
4437
4461
  this.header.style.maxHeight = `${this.headerSize}px`;
4438
4462
  this.element.appendChild(this.header);
4439
4463
  this.body = document.createElement('div');
4440
- this.body.className = 'pane-body';
4464
+ this.body.className = 'dv-pane-body';
4441
4465
  this.element.appendChild(this.body);
4442
4466
  }
4443
4467
  // TODO slightly hacky by-pass of the component to create a body and header component
@@ -4558,7 +4582,7 @@ class ContentContainer extends CompositeDisposable {
4558
4582
  this._onDidBlur = new Emitter();
4559
4583
  this.onDidBlur = this._onDidBlur.event;
4560
4584
  this._element = document.createElement('div');
4561
- this._element.className = 'content-container';
4585
+ this._element.className = 'dv-content-container';
4562
4586
  this._element.tabIndex = -1;
4563
4587
  this.addDisposables(this._onDidFocus, this._onDidBlur);
4564
4588
  this.dropTarget = new Droptarget(this.element, {
@@ -4631,6 +4655,8 @@ class ContentContainer extends CompositeDisposable {
4631
4655
  referenceContainer: this,
4632
4656
  });
4633
4657
  break;
4658
+ default:
4659
+ throw new Error(`dockview: invalid renderer type '${panel.api.renderer}'`);
4634
4660
  }
4635
4661
  if (doRender) {
4636
4662
  const focusTracker = trackFocus(container);
@@ -4697,10 +4723,10 @@ class Tab extends CompositeDisposable {
4697
4723
  this._onDragStart = new Emitter();
4698
4724
  this.onDragStart = this._onDragStart.event;
4699
4725
  this._element = document.createElement('div');
4700
- this._element.className = 'tab';
4726
+ this._element.className = 'dv-tab';
4701
4727
  this._element.tabIndex = 0;
4702
4728
  this._element.draggable = true;
4703
- toggleClass(this.element, 'inactive-tab', true);
4729
+ toggleClass(this.element, 'dv-inactive-tab', true);
4704
4730
  const dragHandler = new TabDragHandler(this._element, this.accessor, this.group, this.panel);
4705
4731
  this.dropTarget = new Droptarget(this._element, {
4706
4732
  acceptedTargetZones: ['center'],
@@ -4733,8 +4759,8 @@ class Tab extends CompositeDisposable {
4733
4759
  }), this.dropTarget);
4734
4760
  }
4735
4761
  setActive(isActive) {
4736
- toggleClass(this.element, 'active-tab', isActive);
4737
- toggleClass(this.element, 'inactive-tab', !isActive);
4762
+ toggleClass(this.element, 'dv-active-tab', isActive);
4763
+ toggleClass(this.element, 'dv-inactive-tab', !isActive);
4738
4764
  }
4739
4765
  setContent(part) {
4740
4766
  if (this.content) {
@@ -4822,8 +4848,7 @@ class VoidContainer extends CompositeDisposable {
4822
4848
  this._onDragStart = new Emitter();
4823
4849
  this.onDragStart = this._onDragStart.event;
4824
4850
  this._element = document.createElement('div');
4825
- this._element.className = 'void-container';
4826
- this._element.tabIndex = 0;
4851
+ this._element.className = 'dv-void-container';
4827
4852
  this._element.draggable = true;
4828
4853
  this.addDisposables(this._onDrop, this._onDragStart, addDisposableListener(this._element, 'pointerdown', () => {
4829
4854
  this.accessor.doSetGroupActive(this.group);
@@ -4942,16 +4967,16 @@ class TabsContainer extends CompositeDisposable {
4942
4967
  this._onWillShowOverlay = new Emitter();
4943
4968
  this.onWillShowOverlay = this._onWillShowOverlay.event;
4944
4969
  this._element = document.createElement('div');
4945
- this._element.className = 'tabs-and-actions-container';
4970
+ this._element.className = 'dv-tabs-and-actions-container';
4946
4971
  toggleClass(this._element, 'dv-full-width-single-tab', this.accessor.options.singleTabMode === 'fullwidth');
4947
4972
  this.rightActionsContainer = document.createElement('div');
4948
- this.rightActionsContainer.className = 'right-actions-container';
4973
+ this.rightActionsContainer.className = 'dv-right-actions-container';
4949
4974
  this.leftActionsContainer = document.createElement('div');
4950
- this.leftActionsContainer.className = 'left-actions-container';
4975
+ this.leftActionsContainer.className = 'dv-left-actions-container';
4951
4976
  this.preActionsContainer = document.createElement('div');
4952
- this.preActionsContainer.className = 'pre-actions-container';
4977
+ this.preActionsContainer.className = 'dv-pre-actions-container';
4953
4978
  this.tabContainer = document.createElement('div');
4954
- this.tabContainer.className = 'tabs-container';
4979
+ this.tabContainer.className = 'dv-tabs-container';
4955
4980
  this.voidContainer = new VoidContainer(this.accessor, this.group);
4956
4981
  this._element.appendChild(this.preActionsContainer);
4957
4982
  this._element.appendChild(this.tabContainer);
@@ -5040,14 +5065,10 @@ class TabsContainer extends CompositeDisposable {
5040
5065
  });
5041
5066
  }
5042
5067
  openPanel(panel, index = this.tabs.length) {
5043
- var _a;
5044
5068
  if (this.tabs.find((tab) => tab.value.panel.id === panel.id)) {
5045
5069
  return;
5046
5070
  }
5047
5071
  const tab = new Tab(panel, this.accessor, this.group);
5048
- if (!((_a = panel.view) === null || _a === void 0 ? void 0 : _a.tab)) {
5049
- throw new Error('invalid header component');
5050
- }
5051
5072
  tab.setContent(panel.view.tab);
5052
5073
  const disposable = new CompositeDisposable(tab.onDragStart((event) => {
5053
5074
  this._onTabDragStart.fire({ nativeEvent: event, panel });
@@ -5141,6 +5162,7 @@ const PROPERTY_KEYS = (() => {
5141
5162
  disableDnd: undefined,
5142
5163
  gap: undefined,
5143
5164
  className: undefined,
5165
+ noPanelsOverlay: undefined,
5144
5166
  };
5145
5167
  return Object.keys(properties);
5146
5168
  })();
@@ -5237,7 +5259,7 @@ class WillShowOverlayLocationEvent {
5237
5259
  }
5238
5260
  class DockviewGroupPanelModel extends CompositeDisposable {
5239
5261
  get element() {
5240
- throw new Error('not supported');
5262
+ throw new Error('dockview: not supported');
5241
5263
  }
5242
5264
  get activePanel() {
5243
5265
  return this._activePanel;
@@ -5247,7 +5269,7 @@ class DockviewGroupPanelModel extends CompositeDisposable {
5247
5269
  }
5248
5270
  set locked(value) {
5249
5271
  this._locked = value;
5250
- toggleClass(this.container, 'locked-groupview', value === 'no-drop-target' || value);
5272
+ toggleClass(this.container, 'dv-locked-groupview', value === 'no-drop-target' || value);
5251
5273
  }
5252
5274
  get isActive() {
5253
5275
  return this._isGroupActive;
@@ -5318,6 +5340,7 @@ class DockviewGroupPanelModel extends CompositeDisposable {
5318
5340
  this._locked = false;
5319
5341
  this._location = { type: 'grid' };
5320
5342
  this.mostRecentlyUsed = [];
5343
+ this._overwriteRenderContainer = null;
5321
5344
  this._onDidChange = new Emitter();
5322
5345
  this.onDidChange = this._onDidChange.event;
5323
5346
  this._width = 0;
@@ -5348,8 +5371,7 @@ class DockviewGroupPanelModel extends CompositeDisposable {
5348
5371
  this.onDidActivePanelChange = this._onDidActivePanelChange.event;
5349
5372
  this._onUnhandledDragOverEvent = new Emitter();
5350
5373
  this.onUnhandledDragOverEvent = this._onUnhandledDragOverEvent.event;
5351
- this._overwriteRenderContainer = null;
5352
- toggleClass(this.container, 'groupview', true);
5374
+ toggleClass(this.container, 'dv-groupview', true);
5353
5375
  this._api = new DockviewApi(this.accessor);
5354
5376
  this.tabsContainer = new TabsContainer(this.accessor, this.groupPanel);
5355
5377
  this.contentContainer = new ContentContainer(this.accessor, this);
@@ -5581,7 +5603,10 @@ class DockviewGroupPanelModel extends CompositeDisposable {
5581
5603
  this.doClose(panel);
5582
5604
  }
5583
5605
  doClose(panel) {
5584
- this.accessor.removePanel(panel);
5606
+ const isLast = this.panels.length === 1 && this.accessor.groups.length === 1;
5607
+ this.accessor.removePanel(panel, isLast && this.accessor.options.noPanelsOverlay === 'emptyGroup'
5608
+ ? { removeEmptyGroup: false }
5609
+ : undefined);
5585
5610
  }
5586
5611
  isPanelActive(panel) {
5587
5612
  return this._activePanel === panel;
@@ -5594,8 +5619,8 @@ class DockviewGroupPanelModel extends CompositeDisposable {
5594
5619
  return;
5595
5620
  }
5596
5621
  this._isGroupActive = isGroupActive;
5597
- toggleClass(this.container, 'active-group', isGroupActive);
5598
- toggleClass(this.container, 'inactive-group', !isGroupActive);
5622
+ toggleClass(this.container, 'dv-active-group', isGroupActive);
5623
+ toggleClass(this.container, 'dv-inactive-group', !isGroupActive);
5599
5624
  this.tabsContainer.setActive(this.isActive);
5600
5625
  if (!this._activePanel && this.panels.length > 0) {
5601
5626
  this.doSetActivePanel(this.panels[0]);
@@ -5687,7 +5712,6 @@ class DockviewGroupPanelModel extends CompositeDisposable {
5687
5712
  }
5688
5713
  updateContainer() {
5689
5714
  var _a, _b;
5690
- toggleClass(this.container, 'empty', this.isEmpty);
5691
5715
  this.panels.forEach((panel) => panel.runEvents());
5692
5716
  if (this.isEmpty && !this.watermark) {
5693
5717
  const watermark = this.accessor.createWatermarkComponent();
@@ -5701,14 +5725,12 @@ class DockviewGroupPanelModel extends CompositeDisposable {
5701
5725
  this.accessor.doSetGroupActive(this.groupPanel);
5702
5726
  }
5703
5727
  });
5704
- this.tabsContainer.hide();
5705
5728
  this.contentContainer.element.appendChild(this.watermark.element);
5706
5729
  }
5707
5730
  if (!this.isEmpty && this.watermark) {
5708
5731
  this.watermark.element.remove();
5709
5732
  (_b = (_a = this.watermark).dispose) === null || _b === void 0 ? void 0 : _b.call(_a);
5710
5733
  this.watermark = undefined;
5711
- this.tabsContainer.show();
5712
5734
  }
5713
5735
  }
5714
5736
  canDisplayOverlay(event, position, target) {
@@ -5828,6 +5850,34 @@ class GridviewPanel extends BasePanelView {
5828
5850
  return this._snap;
5829
5851
  }
5830
5852
  get minimumWidth() {
5853
+ /**
5854
+ * defer to protected function to allow subclasses to override easily.
5855
+ * see https://github.com/microsoft/TypeScript/issues/338
5856
+ */
5857
+ return this.__minimumWidth();
5858
+ }
5859
+ get minimumHeight() {
5860
+ /**
5861
+ * defer to protected function to allow subclasses to override easily.
5862
+ * see https://github.com/microsoft/TypeScript/issues/338
5863
+ */
5864
+ return this.__minimumHeight();
5865
+ }
5866
+ get maximumHeight() {
5867
+ /**
5868
+ * defer to protected function to allow subclasses to override easily.
5869
+ * see https://github.com/microsoft/TypeScript/issues/338
5870
+ */
5871
+ return this.__maximumHeight();
5872
+ }
5873
+ get maximumWidth() {
5874
+ /**
5875
+ * defer to protected function to allow subclasses to override easily.
5876
+ * see https://github.com/microsoft/TypeScript/issues/338
5877
+ */
5878
+ return this.__maximumWidth();
5879
+ }
5880
+ __minimumWidth() {
5831
5881
  const width = typeof this._minimumWidth === 'function'
5832
5882
  ? this._minimumWidth()
5833
5883
  : this._minimumWidth;
@@ -5837,7 +5887,17 @@ class GridviewPanel extends BasePanelView {
5837
5887
  }
5838
5888
  return width;
5839
5889
  }
5840
- get minimumHeight() {
5890
+ __maximumWidth() {
5891
+ const width = typeof this._maximumWidth === 'function'
5892
+ ? this._maximumWidth()
5893
+ : this._maximumWidth;
5894
+ if (width !== this._evaluatedMaximumWidth) {
5895
+ this._evaluatedMaximumWidth = width;
5896
+ this.updateConstraints();
5897
+ }
5898
+ return width;
5899
+ }
5900
+ __minimumHeight() {
5841
5901
  const height = typeof this._minimumHeight === 'function'
5842
5902
  ? this._minimumHeight()
5843
5903
  : this._minimumHeight;
@@ -5847,7 +5907,7 @@ class GridviewPanel extends BasePanelView {
5847
5907
  }
5848
5908
  return height;
5849
5909
  }
5850
- get maximumHeight() {
5910
+ __maximumHeight() {
5851
5911
  const height = typeof this._maximumHeight === 'function'
5852
5912
  ? this._maximumHeight()
5853
5913
  : this._maximumHeight;
@@ -5857,16 +5917,6 @@ class GridviewPanel extends BasePanelView {
5857
5917
  }
5858
5918
  return height;
5859
5919
  }
5860
- get maximumWidth() {
5861
- const width = typeof this._maximumWidth === 'function'
5862
- ? this._maximumWidth()
5863
- : this._maximumWidth;
5864
- if (width !== this._evaluatedMaximumWidth) {
5865
- this._evaluatedMaximumWidth = width;
5866
- this.updateConstraints();
5867
- }
5868
- return width;
5869
- }
5870
5920
  get isActive() {
5871
5921
  return this.api.isActive;
5872
5922
  }
@@ -6017,6 +6067,7 @@ class DockviewGroupPanelApiImpl extends GridviewPanelApiImpl {
6017
6067
  position: options.group
6018
6068
  ? (_c = options.position) !== null && _c !== void 0 ? _c : 'center'
6019
6069
  : 'center',
6070
+ index: options.index,
6020
6071
  },
6021
6072
  });
6022
6073
  }
@@ -6068,30 +6119,34 @@ class DockviewGroupPanel extends GridviewPanel {
6068
6119
  get minimumWidth() {
6069
6120
  var _a;
6070
6121
  const activePanelMinimumWidth = (_a = this.activePanel) === null || _a === void 0 ? void 0 : _a.minimumWidth;
6071
- return typeof activePanelMinimumWidth === 'number'
6072
- ? activePanelMinimumWidth
6073
- : MINIMUM_DOCKVIEW_GROUP_PANEL_WIDTH;
6122
+ if (typeof activePanelMinimumWidth === 'number') {
6123
+ return activePanelMinimumWidth;
6124
+ }
6125
+ return super.__minimumWidth();
6074
6126
  }
6075
6127
  get minimumHeight() {
6076
6128
  var _a;
6077
6129
  const activePanelMinimumHeight = (_a = this.activePanel) === null || _a === void 0 ? void 0 : _a.minimumHeight;
6078
- return typeof activePanelMinimumHeight === 'number'
6079
- ? activePanelMinimumHeight
6080
- : MINIMUM_DOCKVIEW_GROUP_PANEL_HEIGHT;
6130
+ if (typeof activePanelMinimumHeight === 'number') {
6131
+ return activePanelMinimumHeight;
6132
+ }
6133
+ return super.__minimumHeight();
6081
6134
  }
6082
6135
  get maximumWidth() {
6083
6136
  var _a;
6084
6137
  const activePanelMaximumWidth = (_a = this.activePanel) === null || _a === void 0 ? void 0 : _a.maximumWidth;
6085
- return typeof activePanelMaximumWidth === 'number'
6086
- ? activePanelMaximumWidth
6087
- : Number.MAX_SAFE_INTEGER;
6138
+ if (typeof activePanelMaximumWidth === 'number') {
6139
+ return activePanelMaximumWidth;
6140
+ }
6141
+ return super.__maximumWidth();
6088
6142
  }
6089
6143
  get maximumHeight() {
6090
6144
  var _a;
6091
6145
  const activePanelMaximumHeight = (_a = this.activePanel) === null || _a === void 0 ? void 0 : _a.maximumHeight;
6092
- return typeof activePanelMaximumHeight === 'number'
6093
- ? activePanelMaximumHeight
6094
- : Number.MAX_SAFE_INTEGER;
6146
+ if (typeof activePanelMaximumHeight === 'number') {
6147
+ return activePanelMaximumHeight;
6148
+ }
6149
+ return super.__maximumHeight();
6095
6150
  }
6096
6151
  get panels() {
6097
6152
  return this._model.panels;
@@ -6205,12 +6260,14 @@ class DockviewPanelApiImpl extends GridviewPanelApiImpl {
6205
6260
  return this.group.api.getWindow();
6206
6261
  }
6207
6262
  moveTo(options) {
6208
- var _a;
6263
+ var _a, _b;
6209
6264
  this.accessor.moveGroupOrPanel({
6210
6265
  from: { groupId: this._group.id, panelId: this.panel.id },
6211
6266
  to: {
6212
- group: options.group,
6213
- position: (_a = options.position) !== null && _a !== void 0 ? _a : 'center',
6267
+ group: (_a = options.group) !== null && _a !== void 0 ? _a : this._group,
6268
+ position: options.group
6269
+ ? (_b = options.position) !== null && _b !== void 0 ? _b : 'center'
6270
+ : 'center',
6214
6271
  index: options.index,
6215
6272
  },
6216
6273
  });
@@ -6429,7 +6486,7 @@ const createSvgElementFromPath = (params) => {
6429
6486
  svg.setAttributeNS(null, 'viewBox', params.viewbox);
6430
6487
  svg.setAttributeNS(null, 'aria-hidden', 'false');
6431
6488
  svg.setAttributeNS(null, 'focusable', 'false');
6432
- svg.classList.add('dockview-svg');
6489
+ svg.classList.add('dv-svg');
6433
6490
  const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');
6434
6491
  path.setAttributeNS(null, 'd', params.path);
6435
6492
  svg.appendChild(path);
@@ -6600,39 +6657,10 @@ class Watermark extends CompositeDisposable {
6600
6657
  constructor() {
6601
6658
  super();
6602
6659
  this._element = document.createElement('div');
6603
- this._element.className = 'watermark';
6604
- const title = document.createElement('div');
6605
- title.className = 'watermark-title';
6606
- const emptySpace = document.createElement('span');
6607
- emptySpace.style.flexGrow = '1';
6608
- const content = document.createElement('div');
6609
- content.className = 'watermark-content';
6610
- this._element.appendChild(title);
6611
- this._element.appendChild(content);
6612
- const actionsContainer = document.createElement('div');
6613
- actionsContainer.className = 'actions-container';
6614
- const closeAnchor = document.createElement('div');
6615
- closeAnchor.className = 'close-action';
6616
- closeAnchor.appendChild(createCloseButton());
6617
- actionsContainer.appendChild(closeAnchor);
6618
- title.appendChild(emptySpace);
6619
- title.appendChild(actionsContainer);
6620
- this.addDisposables(addDisposableListener(closeAnchor, 'click', (event) => {
6621
- var _a;
6622
- event.preventDefault();
6623
- if (this._group) {
6624
- (_a = this._api) === null || _a === void 0 ? void 0 : _a.removeGroup(this._group);
6625
- }
6626
- }));
6660
+ this._element.className = 'dv-watermark';
6627
6661
  }
6628
6662
  init(_params) {
6629
- this._api = _params.containerApi;
6630
- this._group = _params.group;
6631
- this.render();
6632
- }
6633
- render() {
6634
- const isOneGroup = !!(this._api && this._api.size <= 1);
6635
- toggleClass(this.element, 'has-actions', isOneGroup);
6663
+ // noop
6636
6664
  }
6637
6665
  }
6638
6666
 
@@ -6669,6 +6697,9 @@ class Overlay extends CompositeDisposable {
6669
6697
  get element() {
6670
6698
  return this._element;
6671
6699
  }
6700
+ get isVisible() {
6701
+ return this._isVisible;
6702
+ }
6672
6703
  constructor(options) {
6673
6704
  super();
6674
6705
  this.options = options;
@@ -6679,6 +6710,7 @@ class Overlay extends CompositeDisposable {
6679
6710
  this.onDidChangeEnd = this._onDidChangeEnd.event;
6680
6711
  this.addDisposables(this._onDidChange, this._onDidChangeEnd);
6681
6712
  this._element.className = 'dv-resize-container';
6713
+ this._isVisible = true;
6682
6714
  this.setupResize('top');
6683
6715
  this.setupResize('bottom');
6684
6716
  this.setupResize('left');
@@ -6693,6 +6725,13 @@ class Overlay extends CompositeDisposable {
6693
6725
  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 })));
6694
6726
  arialLevelTracker.push(this._element);
6695
6727
  }
6728
+ setVisible(isVisible) {
6729
+ if (isVisible === this.isVisible) {
6730
+ return;
6731
+ }
6732
+ this._isVisible = isVisible;
6733
+ toggleClass(this.element, 'dv-hidden', !this.isVisible);
6734
+ }
6696
6735
  bringToFront() {
6697
6736
  arialLevelTracker.push(this._element);
6698
6737
  }
@@ -7243,7 +7282,6 @@ class PopoutWindow extends CompositeDisposable {
7243
7282
  window: this._window.value,
7244
7283
  });
7245
7284
  this._window.disposable.dispose();
7246
- this._window.value.close();
7247
7285
  this._window = null;
7248
7286
  this._onDidClose.fire();
7249
7287
  }
@@ -7275,7 +7313,9 @@ class PopoutWindow extends CompositeDisposable {
7275
7313
  }
7276
7314
  const disposable = new CompositeDisposable();
7277
7315
  this._window = { value: externalWindow, disposable };
7278
- disposable.addDisposables(addDisposableWindowListener(window, 'beforeunload', () => {
7316
+ disposable.addDisposables(exports.DockviewDisposable.from(() => {
7317
+ externalWindow.close();
7318
+ }), addDisposableWindowListener(window, 'beforeunload', () => {
7279
7319
  /**
7280
7320
  * before the main window closes we should close this popup too
7281
7321
  * to be good citizens
@@ -7292,7 +7332,7 @@ class PopoutWindow extends CompositeDisposable {
7292
7332
  id: this.target,
7293
7333
  window: externalWindow,
7294
7334
  });
7295
- return new Promise((resolve) => {
7335
+ return new Promise((resolve, reject) => {
7296
7336
  externalWindow.addEventListener('unload', (e) => {
7297
7337
  // if page fails to load before unloading
7298
7338
  // this.close();
@@ -7301,21 +7341,27 @@ class PopoutWindow extends CompositeDisposable {
7301
7341
  /**
7302
7342
  * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/load_event
7303
7343
  */
7304
- const externalDocument = externalWindow.document;
7305
- externalDocument.title = document.title;
7306
- externalDocument.body.appendChild(container);
7307
- addStyles(externalDocument, window.document.styleSheets);
7308
- /**
7309
- * beforeunload must be registered after load for reasons I could not determine
7310
- * otherwise the beforeunload event will not fire when the window is closed
7311
- */
7312
- addDisposableWindowListener(externalWindow, 'beforeunload', () => {
7344
+ try {
7345
+ const externalDocument = externalWindow.document;
7346
+ externalDocument.title = document.title;
7347
+ externalDocument.body.appendChild(container);
7348
+ addStyles(externalDocument, window.document.styleSheets);
7313
7349
  /**
7314
- * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event
7350
+ * beforeunload must be registered after load for reasons I could not determine
7351
+ * otherwise the beforeunload event will not fire when the window is closed
7315
7352
  */
7316
- this.close();
7317
- });
7318
- resolve(container);
7353
+ addDisposableWindowListener(externalWindow, 'beforeunload', () => {
7354
+ /**
7355
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event
7356
+ */
7357
+ this.close();
7358
+ });
7359
+ resolve(container);
7360
+ }
7361
+ catch (err) {
7362
+ // only except this is the DOM isn't setup. e.g. in a in correctly configured test
7363
+ reject(err);
7364
+ }
7319
7365
  });
7320
7366
  });
7321
7367
  });
@@ -7422,6 +7468,8 @@ class DockviewComponent extends BaseGrid {
7422
7468
  this.onDidActivePanelChange = this._onDidActivePanelChange.event;
7423
7469
  this._onDidMovePanel = new Emitter();
7424
7470
  this.onDidMovePanel = this._onDidMovePanel.event;
7471
+ this._onDidMaximizedGroupChange = new Emitter();
7472
+ this.onDidMaximizedGroupChange = this._onDidMaximizedGroupChange.event;
7425
7473
  this._floatingGroups = [];
7426
7474
  this._popoutGroups = [];
7427
7475
  this._onDidRemoveGroup = new Emitter();
@@ -7448,6 +7496,11 @@ class DockviewComponent extends BaseGrid {
7448
7496
  if (!this._moving) {
7449
7497
  this._onDidActiveGroupChange.fire(event);
7450
7498
  }
7499
+ }), this.onDidMaximizedChange((event) => {
7500
+ this._onDidMaximizedGroupChange.fire({
7501
+ group: event.panel,
7502
+ isMaximized: event.isMaximized,
7503
+ });
7451
7504
  }), exports.DockviewEvent.any(this.onDidAdd, this.onDidRemove)(() => {
7452
7505
  this.updateWatermark();
7453
7506
  }), exports.DockviewEvent.any(this.onDidAddPanel, this.onDidRemovePanel, this.onDidAddGroup, this.onDidRemove, this.onDidMovePanel, this.onDidActivePanelChange)(() => {
@@ -7546,8 +7599,28 @@ class DockviewComponent extends BaseGrid {
7546
7599
  this._api = new DockviewApi(this);
7547
7600
  this.updateWatermark();
7548
7601
  }
7602
+ setVisible(panel, visible) {
7603
+ switch (panel.api.location.type) {
7604
+ case 'grid':
7605
+ super.setVisible(panel, visible);
7606
+ break;
7607
+ case 'floating': {
7608
+ const item = this.floatingGroups.find((floatingGroup) => floatingGroup.group === panel);
7609
+ if (item) {
7610
+ item.overlay.setVisible(visible);
7611
+ panel.api._onDidVisibilityChange.fire({
7612
+ isVisible: visible,
7613
+ });
7614
+ }
7615
+ break;
7616
+ }
7617
+ case 'popout':
7618
+ console.warn('dockview: You cannot hide a group that is in a popout window');
7619
+ break;
7620
+ }
7621
+ }
7549
7622
  addPopoutGroup(itemToPopout, options) {
7550
- var _a, _b, _c;
7623
+ var _a, _b, _c, _d, _e;
7551
7624
  if (itemToPopout instanceof DockviewPanel &&
7552
7625
  itemToPopout.group.size === 1) {
7553
7626
  return this.addPopoutGroup(itemToPopout.group, options);
@@ -7568,12 +7641,9 @@ class DockviewComponent extends BaseGrid {
7568
7641
  }
7569
7642
  const box = getBox();
7570
7643
  const groupId = (_b = (_a = options === null || options === void 0 ? void 0 : options.overridePopoutGroup) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : this.getNextGroupId();
7571
- if (itemToPopout.api.location.type === 'grid') {
7572
- itemToPopout.api.setVisible(false);
7573
- }
7574
7644
  const _window = new PopoutWindow(`${this.id}-${groupId}`, // unique id
7575
7645
  theme !== null && theme !== void 0 ? theme : '', {
7576
- url: (_c = options === null || options === void 0 ? void 0 : options.popoutUrl) !== null && _c !== void 0 ? _c : '/popout.html',
7646
+ url: (_e = (_c = options === null || options === void 0 ? void 0 : options.popoutUrl) !== null && _c !== void 0 ? _c : (_d = this.options) === null || _d === void 0 ? void 0 : _d.popoutUrl) !== null && _e !== void 0 ? _e : '/popout.html',
7577
7647
  left: window.screenX + box.left,
7578
7648
  top: window.screenY + box.top,
7579
7649
  width: box.width,
@@ -7587,13 +7657,12 @@ class DockviewComponent extends BaseGrid {
7587
7657
  return _window
7588
7658
  .open()
7589
7659
  .then((popoutContainer) => {
7590
- var _a;
7591
7660
  if (_window.isDisposed) {
7592
- return;
7661
+ return false;
7593
7662
  }
7594
7663
  if (popoutContainer === null) {
7595
7664
  popoutWindowDisposable.dispose();
7596
- return;
7665
+ return false;
7597
7666
  }
7598
7667
  const gready = document.createElement('div');
7599
7668
  gready.className = 'dv-overlay-render-container';
@@ -7602,30 +7671,45 @@ class DockviewComponent extends BaseGrid {
7602
7671
  ? itemToPopout.group
7603
7672
  : itemToPopout;
7604
7673
  const referenceLocation = itemToPopout.api.location.type;
7605
- const group = (_a = options === null || options === void 0 ? void 0 : options.overridePopoutGroup) !== null && _a !== void 0 ? _a : this.createGroup({ id: groupId });
7606
- group.model.renderContainer = overlayRenderContainer;
7607
- if (!(options === null || options === void 0 ? void 0 : options.overridePopoutGroup)) {
7608
- this._onDidAddGroup.fire(group);
7674
+ /**
7675
+ * The group that is being added doesn't already exist within the DOM, the most likely occurance
7676
+ * of this case is when being called from the `fromJSON(...)` method
7677
+ */
7678
+ const isGroupAddedToDom = referenceGroup.element.parentElement !== null;
7679
+ let group;
7680
+ if (!isGroupAddedToDom) {
7681
+ group = referenceGroup;
7609
7682
  }
7610
- if (itemToPopout instanceof DockviewPanel) {
7611
- this.movingLock(() => {
7612
- const panel = referenceGroup.model.removePanel(itemToPopout);
7613
- group.model.openPanel(panel);
7614
- });
7683
+ else if (options === null || options === void 0 ? void 0 : options.overridePopoutGroup) {
7684
+ group = options.overridePopoutGroup;
7615
7685
  }
7616
7686
  else {
7617
- this.movingLock(() => moveGroupWithoutDestroying({
7618
- from: referenceGroup,
7619
- to: group,
7620
- }));
7621
- switch (referenceLocation) {
7622
- case 'grid':
7623
- referenceGroup.api.setVisible(false);
7624
- break;
7625
- case 'floating':
7626
- case 'popout':
7627
- this.removeGroup(referenceGroup);
7628
- break;
7687
+ group = this.createGroup({ id: groupId });
7688
+ this._onDidAddGroup.fire(group);
7689
+ }
7690
+ group.model.renderContainer = overlayRenderContainer;
7691
+ group.layout(_window.window.innerWidth, _window.window.innerHeight);
7692
+ if (!(options === null || options === void 0 ? void 0 : options.overridePopoutGroup) && isGroupAddedToDom) {
7693
+ if (itemToPopout instanceof DockviewPanel) {
7694
+ this.movingLock(() => {
7695
+ const panel = referenceGroup.model.removePanel(itemToPopout);
7696
+ group.model.openPanel(panel);
7697
+ });
7698
+ }
7699
+ else {
7700
+ this.movingLock(() => moveGroupWithoutDestroying({
7701
+ from: referenceGroup,
7702
+ to: group,
7703
+ }));
7704
+ switch (referenceLocation) {
7705
+ case 'grid':
7706
+ referenceGroup.api.setVisible(false);
7707
+ break;
7708
+ case 'floating':
7709
+ case 'popout':
7710
+ this.removeGroup(referenceGroup);
7711
+ break;
7712
+ }
7629
7713
  }
7630
7714
  }
7631
7715
  popoutContainer.classList.add('dv-dockview');
@@ -7635,7 +7719,12 @@ class DockviewComponent extends BaseGrid {
7635
7719
  group.model.location = {
7636
7720
  type: 'popout',
7637
7721
  getWindow: () => _window.window,
7722
+ popoutUrl: options === null || options === void 0 ? void 0 : options.popoutUrl,
7638
7723
  };
7724
+ if (isGroupAddedToDom &&
7725
+ itemToPopout.api.location.type === 'grid') {
7726
+ itemToPopout.api.setVisible(false);
7727
+ }
7639
7728
  this.doSetGroupAndPanelActive(group);
7640
7729
  popoutWindowDisposable.addDisposables(group.api.onDidActiveChange((event) => {
7641
7730
  var _a;
@@ -7647,10 +7736,13 @@ class DockviewComponent extends BaseGrid {
7647
7736
  (_a = _window.window) === null || _a === void 0 ? void 0 : _a.focus();
7648
7737
  }));
7649
7738
  let returnedGroup;
7739
+ const isValidReferenceGroup = isGroupAddedToDom &&
7740
+ referenceGroup &&
7741
+ this.getPanel(referenceGroup.id);
7650
7742
  const value = {
7651
7743
  window: _window,
7652
7744
  popoutGroup: group,
7653
- referenceGroup: this.getPanel(referenceGroup.id)
7745
+ referenceGroup: isValidReferenceGroup
7654
7746
  ? referenceGroup.id
7655
7747
  : undefined,
7656
7748
  disposable: {
@@ -7667,9 +7759,10 @@ class DockviewComponent extends BaseGrid {
7667
7759
  * window dimensions
7668
7760
  */
7669
7761
  addDisposableWindowListener(_window.window, 'resize', () => {
7670
- group.layout(window.innerWidth, window.innerHeight);
7762
+ group.layout(_window.window.innerWidth, _window.window.innerHeight);
7671
7763
  }), overlayRenderContainer, exports.DockviewDisposable.from(() => {
7672
- if (this.getPanel(referenceGroup.id)) {
7764
+ if (isGroupAddedToDom &&
7765
+ this.getPanel(referenceGroup.id)) {
7673
7766
  this.movingLock(() => moveGroupWithoutDestroying({
7674
7767
  from: group,
7675
7768
  to: referenceGroup,
@@ -7684,21 +7777,27 @@ class DockviewComponent extends BaseGrid {
7684
7777
  }
7685
7778
  }
7686
7779
  else if (this.getPanel(group.id)) {
7687
- const removedGroup = this.doRemoveGroup(group, {
7780
+ this.doRemoveGroup(group, {
7688
7781
  skipDispose: true,
7689
7782
  skipActive: true,
7783
+ skipPopoutReturn: true,
7690
7784
  });
7785
+ const removedGroup = group;
7691
7786
  removedGroup.model.renderContainer =
7692
7787
  this.overlayRenderContainer;
7693
7788
  removedGroup.model.location = { type: 'grid' };
7694
7789
  returnedGroup = removedGroup;
7790
+ this.doAddGroup(removedGroup, [0]);
7791
+ this.doSetGroupAndPanelActive(removedGroup);
7695
7792
  }
7696
7793
  }));
7697
7794
  this._popoutGroups.push(value);
7698
7795
  this.updateWatermark();
7796
+ return true;
7699
7797
  })
7700
7798
  .catch((err) => {
7701
7799
  console.error('dockview: failed to create popout window', err);
7800
+ return false;
7702
7801
  });
7703
7802
  }
7704
7803
  addFloatingGroup(item, options) {
@@ -7802,7 +7901,7 @@ class DockviewComponent extends BaseGrid {
7802
7901
  : (_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'
7803
7902
  ? undefined
7804
7903
  : (_e = (_d = this.options.floatingGroupBounds) === null || _d === void 0 ? void 0 : _d.minimumHeightWithinViewport) !== null && _e !== void 0 ? _e : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE }));
7805
- const el = group.element.querySelector('.void-container');
7904
+ const el = group.element.querySelector('.dv-void-container');
7806
7905
  if (!el) {
7807
7906
  throw new Error('failed to find drag handle');
7808
7907
  }
@@ -7994,6 +8093,9 @@ class DockviewComponent extends BaseGrid {
7994
8093
  data: group.popoutGroup.toJSON(),
7995
8094
  gridReferenceGroup: group.referenceGroup,
7996
8095
  position: group.window.dimensions(),
8096
+ url: group.popoutGroup.api.location.type === 'popout'
8097
+ ? group.popoutGroup.api.location.popoutUrl
8098
+ : undefined,
7997
8099
  };
7998
8100
  });
7999
8101
  const result = {
@@ -8080,16 +8182,16 @@ class DockviewComponent extends BaseGrid {
8080
8182
  }
8081
8183
  const serializedPopoutGroups = (_b = data.popoutGroups) !== null && _b !== void 0 ? _b : [];
8082
8184
  for (const serializedPopoutGroup of serializedPopoutGroups) {
8083
- const { data, position, gridReferenceGroup } = serializedPopoutGroup;
8185
+ const { data, position, gridReferenceGroup, url } = serializedPopoutGroup;
8084
8186
  const group = createGroupFromSerializedState(data);
8085
8187
  this.addPopoutGroup((_c = (gridReferenceGroup
8086
8188
  ? this.getPanel(gridReferenceGroup)
8087
8189
  : undefined)) !== null && _c !== void 0 ? _c : group, {
8088
- skipRemoveGroup: true,
8089
8190
  position: position !== null && position !== void 0 ? position : undefined,
8090
8191
  overridePopoutGroup: gridReferenceGroup
8091
8192
  ? group
8092
8193
  : undefined,
8194
+ popoutUrl: url,
8093
8195
  });
8094
8196
  }
8095
8197
  for (const floatingGroup of this._floatingGroups) {
@@ -8103,6 +8205,7 @@ class DockviewComponent extends BaseGrid {
8103
8205
  }
8104
8206
  }
8105
8207
  catch (err) {
8208
+ console.error('dockview: failed to deserialize layout. Reverting changes', err);
8106
8209
  /**
8107
8210
  * Takes all the successfully created groups and remove all of their panels.
8108
8211
  */
@@ -8170,11 +8273,13 @@ class DockviewComponent extends BaseGrid {
8170
8273
  width: options.initialWidth,
8171
8274
  height: options.initialHeight,
8172
8275
  };
8276
+ let index;
8173
8277
  if (options.position) {
8174
8278
  if (isPanelOptionsWithPanel(options.position)) {
8175
8279
  const referencePanel = typeof options.position.referencePanel === 'string'
8176
8280
  ? this.getGroupPanel(options.position.referencePanel)
8177
8281
  : options.position.referencePanel;
8282
+ index = options.position.index;
8178
8283
  if (!referencePanel) {
8179
8284
  throw new Error(`referencePanel '${options.position.referencePanel}' does not exist`);
8180
8285
  }
@@ -8185,6 +8290,7 @@ class DockviewComponent extends BaseGrid {
8185
8290
  typeof options.position.referenceGroup === 'string'
8186
8291
  ? (_a = this._groups.get(options.position.referenceGroup)) === null || _a === void 0 ? void 0 : _a.value
8187
8292
  : options.position.referenceGroup;
8293
+ index = options.position.index;
8188
8294
  if (!referenceGroup) {
8189
8295
  throw new Error(`referenceGroup '${options.position.referenceGroup}' does not exist`);
8190
8296
  }
@@ -8195,6 +8301,7 @@ class DockviewComponent extends BaseGrid {
8195
8301
  group.model.openPanel(panel, {
8196
8302
  skipSetActive: options.inactive,
8197
8303
  skipSetGroupActive: options.inactive,
8304
+ index,
8198
8305
  });
8199
8306
  if (!options.inactive) {
8200
8307
  this.doSetGroupAndPanelActive(group);
@@ -8224,6 +8331,7 @@ class DockviewComponent extends BaseGrid {
8224
8331
  group.model.openPanel(panel, {
8225
8332
  skipSetActive: options.inactive,
8226
8333
  skipSetGroupActive: options.inactive,
8334
+ index,
8227
8335
  });
8228
8336
  }
8229
8337
  else if (referenceGroup.api.location.type === 'floating' ||
@@ -8232,6 +8340,7 @@ class DockviewComponent extends BaseGrid {
8232
8340
  referenceGroup.model.openPanel(panel, {
8233
8341
  skipSetActive: options.inactive,
8234
8342
  skipSetGroupActive: options.inactive,
8343
+ index,
8235
8344
  });
8236
8345
  referenceGroup.api.setSize({
8237
8346
  width: initial === null || initial === void 0 ? void 0 : initial.width,
@@ -8252,6 +8361,7 @@ class DockviewComponent extends BaseGrid {
8252
8361
  group.model.openPanel(panel, {
8253
8362
  skipSetActive: options.inactive,
8254
8363
  skipSetGroupActive: options.inactive,
8364
+ index,
8255
8365
  });
8256
8366
  if (!options.inactive) {
8257
8367
  this.doSetGroupAndPanelActive(group);
@@ -8270,6 +8380,7 @@ class DockviewComponent extends BaseGrid {
8270
8380
  group.model.openPanel(panel, {
8271
8381
  skipSetActive: options.inactive,
8272
8382
  skipSetGroupActive: options.inactive,
8383
+ index,
8273
8384
  });
8274
8385
  }
8275
8386
  else {
@@ -8280,6 +8391,7 @@ class DockviewComponent extends BaseGrid {
8280
8391
  group.model.openPanel(panel, {
8281
8392
  skipSetActive: options.inactive,
8282
8393
  skipSetGroupActive: options.inactive,
8394
+ index,
8283
8395
  });
8284
8396
  if (!options.inactive) {
8285
8397
  this.doSetGroupAndPanelActive(group);
@@ -8289,7 +8401,6 @@ class DockviewComponent extends BaseGrid {
8289
8401
  }
8290
8402
  removePanel(panel, options = {
8291
8403
  removeEmptyGroup: true,
8292
- skipDispose: false,
8293
8404
  }) {
8294
8405
  const group = panel.group;
8295
8406
  if (!group) {
@@ -8820,6 +8931,31 @@ class DockviewComponent extends BaseGrid {
8820
8931
  }
8821
8932
  }
8822
8933
 
8934
+ function createComponent(id, componentName, components = {}, frameworkComponents = {}, createFrameworkComponent, fallback) {
8935
+ const Component = typeof componentName === 'string'
8936
+ ? components[componentName]
8937
+ : undefined;
8938
+ const FrameworkComponent = typeof componentName === 'string'
8939
+ ? frameworkComponents[componentName]
8940
+ : undefined;
8941
+ if (Component && FrameworkComponent) {
8942
+ throw new Error(`Cannot create '${id}'. component '${componentName}' registered as both a component and frameworkComponent`);
8943
+ }
8944
+ if (FrameworkComponent) {
8945
+ if (!createFrameworkComponent) {
8946
+ throw new Error(`Cannot create '${id}' for framework component '${componentName}'. you must register a frameworkPanelWrapper to use framework components`);
8947
+ }
8948
+ return createFrameworkComponent.createComponent(id, componentName, FrameworkComponent);
8949
+ }
8950
+ if (!Component) {
8951
+ if (fallback) {
8952
+ return fallback();
8953
+ }
8954
+ throw new Error(`Cannot create '${id}', no component '${componentName}' provided`);
8955
+ }
8956
+ return new Component(id, componentName);
8957
+ }
8958
+
8823
8959
  class GridviewComponent extends BaseGrid {
8824
8960
  get orientation() {
8825
8961
  return this.gridview.orientation;
@@ -9368,12 +9504,14 @@ class DefaultHeader extends CompositeDisposable {
9368
9504
  this._expandedIcon = createExpandMoreButton();
9369
9505
  this._collapsedIcon = createChevronRightButton();
9370
9506
  this.disposable = new MutableDisposable();
9371
- this.apiRef = { api: null };
9507
+ this.apiRef = {
9508
+ api: null,
9509
+ };
9372
9510
  this._element = document.createElement('div');
9373
- this.element.className = 'default-header';
9511
+ this.element.className = 'dv-default-header';
9374
9512
  this._content = document.createElement('span');
9375
9513
  this._expander = document.createElement('div');
9376
- this._expander.className = 'dockview-pane-header-icon';
9514
+ this._expander.className = 'dv-pane-header-icon';
9377
9515
  this.element.appendChild(this._expander);
9378
9516
  this.element.appendChild(this._content);
9379
9517
  this.addDisposables(addDisposableListener(this._element, 'click', () => {
@@ -10230,22 +10368,6 @@ const DockviewReact = React.forwardRef((props, ref) => {
10230
10368
  disposable.dispose();
10231
10369
  };
10232
10370
  }, [props.onDidDrop]);
10233
- React.useEffect(() => {
10234
- if (!dockviewRef.current) {
10235
- return () => {
10236
- // noop
10237
- };
10238
- }
10239
- const disposable = dockviewRef.current.onUnhandledDragOverEvent((event) => {
10240
- var _a;
10241
- if ((_a = props.showDndOverlay) === null || _a === void 0 ? void 0 : _a.call(props, event)) {
10242
- event.accept();
10243
- }
10244
- });
10245
- return () => {
10246
- disposable.dispose();
10247
- };
10248
- }, [props.showDndOverlay]);
10249
10371
  React.useEffect(() => {
10250
10372
  if (!dockviewRef.current) {
10251
10373
  return () => {
@@ -10663,7 +10785,6 @@ exports.GridviewApi = GridviewApi;
10663
10785
  exports.GridviewComponent = GridviewComponent;
10664
10786
  exports.GridviewPanel = GridviewPanel;
10665
10787
  exports.GridviewReact = GridviewReact;
10666
- exports.LocalSelectionTransfer = LocalSelectionTransfer;
10667
10788
  exports.PROPERTY_KEYS = PROPERTY_KEYS;
10668
10789
  exports.PaneFramework = PaneFramework;
10669
10790
  exports.PaneTransfer = PaneTransfer;
@@ -10682,7 +10803,6 @@ exports.SplitviewPanel = SplitviewPanel;
10682
10803
  exports.SplitviewReact = SplitviewReact;
10683
10804
  exports.Tab = Tab;
10684
10805
  exports.WillShowOverlayLocationEvent = WillShowOverlayLocationEvent;
10685
- exports.createComponent = createComponent;
10686
10806
  exports.createDockview = createDockview;
10687
10807
  exports.createGridview = createGridview;
10688
10808
  exports.createPaneview = createPaneview;