dockview-react 3.1.1 → 4.0.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.
- package/dist/dockview-react.amd.js +934 -296
- package/dist/dockview-react.amd.js.map +1 -1
- package/dist/dockview-react.amd.min.js +2 -2
- package/dist/dockview-react.amd.min.js.map +1 -1
- package/dist/dockview-react.amd.min.noStyle.js +2 -2
- package/dist/dockview-react.amd.min.noStyle.js.map +1 -1
- package/dist/dockview-react.amd.noStyle.js +933 -295
- package/dist/dockview-react.amd.noStyle.js.map +1 -1
- package/dist/dockview-react.cjs.js +934 -296
- package/dist/dockview-react.cjs.js.map +1 -1
- package/dist/dockview-react.esm.js +927 -297
- package/dist/dockview-react.esm.js.map +1 -1
- package/dist/dockview-react.esm.min.js +2 -2
- package/dist/dockview-react.esm.min.js.map +1 -1
- package/dist/dockview-react.js +934 -296
- package/dist/dockview-react.js.map +1 -1
- package/dist/dockview-react.min.js +2 -2
- package/dist/dockview-react.min.js.map +1 -1
- package/dist/dockview-react.min.noStyle.js +2 -2
- package/dist/dockview-react.min.noStyle.js.map +1 -1
- package/dist/dockview-react.noStyle.js +933 -295
- package/dist/dockview-react.noStyle.js.map +1 -1
- package/dist/styles/dockview.css +444 -76
- package/package.json +2 -2
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* dockview-react
|
|
3
|
-
* @version
|
|
3
|
+
* @version 4.0.0
|
|
4
4
|
* @link https://github.com/mathuo/dockview
|
|
5
5
|
* @license MIT
|
|
6
6
|
*/
|
|
@@ -36,7 +36,7 @@ function styleInject(css, ref) {
|
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
-
var css_248z = ".dv-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 .dv-vertical > .dv-sash-container > .dv-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 .dv-vertical > .dv-sash-container > .dv-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}";
|
|
39
|
+
var css_248z = ".dv-scrollable {\n position: relative;\n overflow: hidden;\n}\n.dv-scrollable .dv-scrollbar-horizontal {\n position: absolute;\n bottom: 0px;\n left: 0px;\n height: 4px;\n border-radius: 2px;\n background-color: transparent;\n transition-property: background-color;\n transition-timing-function: ease-in-out;\n transition-duration: 1s;\n transition-delay: 0s;\n}\n.dv-scrollable:hover .dv-scrollbar-horizontal, .dv-scrollable.dv-scrollable-resizing .dv-scrollbar-horizontal, .dv-scrollable.dv-scrollable-scrolling .dv-scrollbar-horizontal {\n background-color: var(--dv-scrollbar-background-color, rgba(255, 255, 255, 0.25));\n}\n.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: transparent;\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-tab-font-size: inherit;\n --dv-border-radius: 0px;\n --dv-tab-margin: 0;\n --dv-sash-color: transparent;\n --dv-active-sash-color: transparent;\n --dv-active-sash-transition-duration: 0.1s;\n --dv-active-sash-transition-delay: 0.5s;\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.dockview-theme-dark .dv-drop-target-container .dv-drop-target-anchor.dv-drop-target-anchor-container-changed {\n opacity: 0;\n transition: none;\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: transparent;\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-tab-font-size: inherit;\n --dv-border-radius: 0px;\n --dv-tab-margin: 0;\n --dv-sash-color: transparent;\n --dv-active-sash-color: transparent;\n --dv-active-sash-transition-duration: 0.1s;\n --dv-active-sash-transition-delay: 0.5s;\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 --dv-scrollbar-background-color: rgba(0, 0, 0, 0.25);\n}\n.dockview-theme-light .dv-drop-target-container .dv-drop-target-anchor.dv-drop-target-anchor-container-changed {\n opacity: 0;\n transition: none;\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: transparent;\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-tab-font-size: inherit;\n --dv-border-radius: 0px;\n --dv-tab-margin: 0;\n --dv-sash-color: transparent;\n --dv-active-sash-color: transparent;\n --dv-active-sash-transition-duration: 0.1s;\n --dv-active-sash-transition-delay: 0.5s;\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-drop-target-container .dv-drop-target-anchor.dv-drop-target-anchor-container-changed {\n opacity: 0;\n transition: none;\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: transparent;\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-tab-font-size: inherit;\n --dv-border-radius: 0px;\n --dv-tab-margin: 0;\n --dv-sash-color: transparent;\n --dv-active-sash-color: transparent;\n --dv-active-sash-transition-duration: 0.1s;\n --dv-active-sash-transition-delay: 0.5s;\n --dv-color-abyss-dark: #000c18;\n --dv-color-abyss: #10192c;\n --dv-color-abyss-light: #1c1c2a;\n --dv-color-abyss-lighter: #2b2b4a;\n --dv-color-abyss-accent: rgb(91, 30, 207);\n --dv-color-abyss-primary-text: white;\n --dv-color-abyss-secondary-text: rgb(148, 151, 169);\n --dv-group-view-background-color: var(--dv-color-abyss-dark);\n --dv-tabs-and-actions-container-background-color: var(\n --dv-color-abyss-light\n );\n --dv-activegroup-visiblepanel-tab-background-color: var(\n --dv-color-abyss-dark\n );\n --dv-activegroup-hiddenpanel-tab-background-color: var(--dv-color-abyss);\n --dv-inactivegroup-visiblepanel-tab-background-color: var(\n --dv-color-abyss-dark\n );\n --dv-inactivegroup-hiddenpanel-tab-background-color: var(--dv-color-abyss);\n --dv-tab-divider-color: var(--dv-color-abyss-lighter);\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: var(--dv-color-abyss-lighter);\n --dv-paneview-header-border-color: var(--dv-color-abyss-lighter);\n --dv-paneview-active-outline-color: #596f99;\n}\n.dockview-theme-abyss .dv-drop-target-container .dv-drop-target-anchor.dv-drop-target-anchor-container-changed {\n opacity: 0;\n transition: none;\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: transparent;\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-tab-font-size: inherit;\n --dv-border-radius: 0px;\n --dv-tab-margin: 0;\n --dv-sash-color: transparent;\n --dv-active-sash-color: transparent;\n --dv-active-sash-transition-duration: 0.1s;\n --dv-active-sash-transition-delay: 0.5s;\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-drop-target-container .dv-drop-target-anchor.dv-drop-target-anchor-container-changed {\n opacity: 0;\n transition: none;\n}\n.dockview-theme-dracula .dv-groupview.dv-active-group > .dv-tabs-and-actions-container > .dv-scrollable > .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-scrollable > .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-scrollable > .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-scrollable > .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: transparent;\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-tab-font-size: inherit;\n --dv-border-radius: 0px;\n --dv-tab-margin: 0;\n --dv-sash-color: transparent;\n --dv-active-sash-color: transparent;\n --dv-active-sash-transition-duration: 0.1s;\n --dv-active-sash-transition-delay: 0.5s;\n padding: 10px;\n background-color: #ebeced;\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-sash-color: #cfd1d3;\n --dv-active-sash-color: #babbbb;\n}\n.dockview-theme-replit .dv-drop-target-container .dv-drop-target-anchor.dv-drop-target-anchor-container-changed {\n opacity: 0;\n transition: none;\n}\n.dockview-theme-replit .dv-resize-container:has(> .dv-groupview) {\n border-radius: 8px;\n}\n.dockview-theme-replit .dv-resize-container {\n border-radius: 10px !important;\n border: none;\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 .dv-vertical > .dv-sash-container > .dv-sash {\n background-color: transparent;\n}\n.dockview-theme-replit .dv-vertical > .dv-sash-container > .dv-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-sash-color);\n position: absolute;\n}\n.dockview-theme-replit .dv-vertical > .dv-sash-container > .dv-sash:not(.disabled):hover, .dockview-theme-replit .dv-vertical > .dv-sash-container > .dv-sash:not(.disabled):active {\n background-color: transparent;\n}\n.dockview-theme-replit .dv-vertical > .dv-sash-container > .dv-sash:not(.disabled):hover::after, .dockview-theme-replit .dv-vertical > .dv-sash-container > .dv-sash:not(.disabled):active::after {\n background-color: var(--dv-active-sash-color);\n}\n.dockview-theme-replit .dv-horizontal > .dv-sash-container > .dv-sash {\n background-color: transparent;\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-sash-color);\n position: absolute;\n}\n.dockview-theme-replit .dv-horizontal > .dv-sash-container > .dv-sash:not(.disabled):hover, .dockview-theme-replit .dv-horizontal > .dv-sash-container > .dv-sash:not(.disabled):active {\n background-color: transparent;\n}\n.dockview-theme-replit .dv-horizontal > .dv-sash-container > .dv-sash:not(.disabled):hover::after, .dockview-theme-replit .dv-horizontal > .dv-sash-container > .dv-sash:not(.disabled):active::after {\n background-color: var(--dv-active-sash-color);\n}\n\n.dockview-theme-abyss-spaced {\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: transparent;\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-tab-font-size: inherit;\n --dv-border-radius: 0px;\n --dv-tab-margin: 0;\n --dv-sash-color: transparent;\n --dv-active-sash-color: transparent;\n --dv-active-sash-transition-duration: 0.1s;\n --dv-active-sash-transition-delay: 0.5s;\n --dv-tab-font-size: 12px;\n --dv-border-radius: 20px;\n --dv-tab-margin: 0.5rem 0.25rem;\n --dv-tabs-and-actions-container-height: 44px;\n --dv-border-radius: 20px;\n --dv-color-abyss-dark: rgb(11, 6, 17);\n --dv-color-abyss: #16121f;\n --dv-color-abyss-light: #201d2b;\n --dv-color-abyss-lighter: #2a2837;\n --dv-color-abyss-accent: rgb(91, 30, 207);\n --dv-color-abyss-primary-text: white;\n --dv-color-abyss-secondary-text: rgb(148, 151, 169);\n --dv-drag-over-border: 2px solid var(--dv-color-abyss-accent);\n --dv-drag-over-background-color: \"\";\n --dv-group-view-background-color: var(--dv-color-abyss-dark);\n --dv-tabs-and-actions-container-background-color: var(--dv-color-abyss);\n --dv-activegroup-visiblepanel-tab-background-color: var(\n --dv-color-abyss-lighter\n );\n --dv-activegroup-hiddenpanel-tab-background-color: var(\n --dv-color-abyss-light\n );\n --dv-inactivegroup-visiblepanel-tab-background-color: var(\n --dv-color-abyss-lighter\n );\n --dv-inactivegroup-hiddenpanel-tab-background-color: var(\n --dv-color-abyss-light\n );\n --dv-tab-divider-color: transparent;\n --dv-activegroup-visiblepanel-tab-color: var(--dv-color-abyss-primary-text);\n --dv-activegroup-hiddenpanel-tab-color: var(\n --dv-color-abyss-secondary-text\n );\n --dv-inactivegroup-visiblepanel-tab-color: var(\n --dv-color-abyss-primary-text\n );\n --dv-inactivegroup-hiddenpanel-tab-color: var(\n --dv-color-abyss-secondary-text\n );\n --dv-separator-border: transparent;\n --dv-paneview-header-border-color: rgb(51, 51, 51);\n --dv-active-sash-color: var(--dv-color-abyss-accent);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(0, 0, 0, 0.5);\n padding: 10px;\n background-color: var(--dv-color-abyss-dark);\n}\n.dockview-theme-abyss-spaced .dv-resize-container:has(> .dv-groupview) {\n border-radius: 8px;\n}\n.dockview-theme-abyss-spaced .dv-sash {\n border-radius: 4px;\n}\n.dockview-theme-abyss-spaced .dv-drop-target-anchor {\n border-radius: calc(var(--dv-border-radius) / 4);\n}\n.dockview-theme-abyss-spaced .dv-drop-target-anchor.dv-drop-target-content {\n border-radius: var(--dv-border-radius);\n}\n.dockview-theme-abyss-spaced .dv-resize-container {\n border-radius: var(--dv-border-radius) !important;\n border: none;\n}\n.dockview-theme-abyss-spaced .dv-tabs-overflow-container,\n.dockview-theme-abyss-spaced .dv-tabs-overflow-dropdown-default {\n border-radius: 8px;\n height: unset !important;\n}\n.dockview-theme-abyss-spaced .dv-tab {\n border-radius: 8px;\n}\n.dockview-theme-abyss-spaced .dv-tab .dv-svg {\n height: 8px;\n width: 8px;\n}\n.dockview-theme-abyss-spaced .dv-groupview {\n border-radius: var(--dv-border-radius);\n}\n.dockview-theme-abyss-spaced .dv-groupview .dv-tabs-and-actions-container {\n padding: 0px calc(var(--dv-border-radius) / 2);\n}\n.dockview-theme-abyss-spaced .dv-groupview .dv-content-container {\n background-color: var(--dv-tabs-and-actions-container-background-color);\n}\n.dockview-theme-abyss-spaced .dv-resize-container .dv-groupview {\n border: 2px solid var(--dv-color-abyss-dark);\n}\n\n.dockview-theme-light-spaced {\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: transparent;\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-tab-font-size: inherit;\n --dv-border-radius: 0px;\n --dv-tab-margin: 0;\n --dv-sash-color: transparent;\n --dv-active-sash-color: transparent;\n --dv-active-sash-transition-duration: 0.1s;\n --dv-active-sash-transition-delay: 0.5s;\n --dv-tab-font-size: 12px;\n --dv-border-radius: 20px;\n --dv-tab-margin: 0.5rem 0.25rem;\n --dv-tabs-and-actions-container-height: 44px;\n --dv-border-radius: 20px;\n --dv-drag-over-border: 2px solid rgb(91, 30, 207);\n --dv-drag-over-background-color: \"\";\n --dv-group-view-background-color: #f6f5f9;\n --dv-tabs-and-actions-container-background-color: white;\n --dv-activegroup-visiblepanel-tab-background-color: #ededf0;\n --dv-activegroup-hiddenpanel-tab-background-color: #f9f9fa;\n --dv-inactivegroup-visiblepanel-tab-background-color: #ededf0;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #f9f9fa;\n --dv-tab-divider-color: transparent;\n --dv-activegroup-visiblepanel-tab-color: rgb(104, 107, 130);\n --dv-activegroup-hiddenpanel-tab-color: rgb(148, 151, 169);\n --dv-inactivegroup-visiblepanel-tab-color: rgb(104, 107, 130);\n --dv-inactivegroup-hiddenpanel-tab-color: rgb(148, 151, 169);\n --dv-separator-border: transparent;\n --dv-paneview-header-border-color: rgb(51, 51, 51);\n --dv-active-sash-color: rgb(91, 30, 207);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(0, 0, 0, 0.1);\n padding: 10px;\n background-color: #f6f5f9;\n --dv-scrollbar-background-color: rgba(0, 0, 0, 0.25);\n}\n.dockview-theme-light-spaced .dv-resize-container:has(> .dv-groupview) {\n border-radius: 8px;\n}\n.dockview-theme-light-spaced .dv-sash {\n border-radius: 4px;\n}\n.dockview-theme-light-spaced .dv-drop-target-anchor {\n border-radius: calc(var(--dv-border-radius) / 4);\n}\n.dockview-theme-light-spaced .dv-drop-target-anchor.dv-drop-target-content {\n border-radius: var(--dv-border-radius);\n}\n.dockview-theme-light-spaced .dv-resize-container {\n border-radius: var(--dv-border-radius) !important;\n border: none;\n}\n.dockview-theme-light-spaced .dv-tabs-overflow-container,\n.dockview-theme-light-spaced .dv-tabs-overflow-dropdown-default {\n border-radius: 8px;\n height: unset !important;\n}\n.dockview-theme-light-spaced .dv-tab {\n border-radius: 8px;\n}\n.dockview-theme-light-spaced .dv-tab .dv-svg {\n height: 8px;\n width: 8px;\n}\n.dockview-theme-light-spaced .dv-groupview {\n border-radius: var(--dv-border-radius);\n}\n.dockview-theme-light-spaced .dv-groupview .dv-tabs-and-actions-container {\n padding: 0px calc(var(--dv-border-radius) / 2);\n}\n.dockview-theme-light-spaced .dv-groupview .dv-content-container {\n background-color: var(--dv-tabs-and-actions-container-background-color);\n}\n.dockview-theme-light-spaced .dv-resize-container .dv-groupview {\n border: 2px solid rgba(255, 255, 255, 0.1);\n}\n.dv-drop-target-container {\n position: absolute;\n z-index: 9999;\n top: 0px;\n left: 0px;\n height: 100%;\n width: 100%;\n pointer-events: none;\n overflow: hidden;\n --dv-transition-duration: 300ms;\n}\n.dv-drop-target-container .dv-drop-target-anchor {\n position: relative;\n border: var(--dv-drag-over-border);\n transition: opacity var(--dv-transition-duration) ease-in, top var(--dv-transition-duration) ease-out, left var(--dv-transition-duration) ease-out, width var(--dv-transition-duration) ease-out, height var(--dv-transition-duration) ease-out;\n background-color: var(--dv-drag-over-background-color);\n opacity: 1;\n}\n.dv-drop-target {\n position: relative;\n --dv-transition-duration: 70ms;\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 border: var(--dv-drag-over-border);\n background-color: var(--dv-drag-over-background-color);\n transition: top var(--dv-transition-duration) ease-out, left var(--dv-transition-duration) ease-out, width var(--dv-transition-duration) ease-out, height var(--dv-transition-duration) ease-out, opacity var(--dv-transition-duration) 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-scrollable > .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-scrollable > .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-scrollable > .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-scrollable > .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 background-color: var(--dv-sash-color, transparent);\n}\n.dv-split-view-container .dv-sash-container .dv-sash:not(.disabled):active, .dv-split-view-container .dv-sash-container .dv-sash:not(.disabled):hover {\n background-color: var(--dv-active-sash-color, transparent);\n transition-property: background-color;\n transition-timing-function: ease-in-out;\n transition-duration: var(--dv-active-sash-transition-duration, 0.1s);\n transition-delay: var(--dv-active-sash-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 align-items: center;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.dv-tab .dv-default-tab .dv-default-tab-content {\n flex-grow: 1;\n margin-right: 4px;\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-overflow-dropdown-default {\n height: 100%;\n color: var(--dv-activegroup-hiddenpanel-tab-color);\n margin: var(--dv-tab-margin);\n display: flex;\n align-items: center;\n flex-shrink: 0;\n padding: 0.25rem 0.5rem;\n cursor: pointer;\n}\n.dv-tabs-overflow-dropdown-default > span {\n padding-left: 0.25rem;\n}\n.dv-tabs-overflow-dropdown-default > svg {\n transform: rotate(90deg);\n}\n.dv-tabs-container {\n display: flex;\n height: 100%;\n overflow: hidden;\n scrollbar-width: thin;\n /* Track */\n /* Handle */\n}\n.dv-tabs-container.dv-horizontal .dv-tabs-container .dv-tab:last-child {\n margin-right: 0;\n}\n.dv-tabs-container.dv-horizontal .dv-tabs-container .dv-tab:not(:nth-last-child(1)) {\n margin-left: 0;\n}\n.dv-tabs-container.dv-horizontal .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-tabs-container::-webkit-scrollbar {\n height: 3px;\n}\n.dv-tabs-container::-webkit-scrollbar-track {\n background: transparent;\n}\n.dv-tabs-container::-webkit-scrollbar-thumb {\n background: var(--dv-tabs-container-scrollbar-color);\n}\n\n.dv-tab {\n -webkit-user-drag: element;\n outline: none;\n padding: 0.25rem 0.5rem;\n cursor: pointer;\n position: relative;\n box-sizing: border-box;\n font-size: var(--dv-tab-font-size);\n margin: var(--dv-tab-margin);\n}\n\n.dv-tabs-overflow-container {\n flex-direction: column;\n height: unset;\n border: 1px solid var(--dv-tab-divider-color);\n background-color: var(--dv-group-view-background-color);\n}\n.dv-tabs-overflow-container .dv-tab:not(:last-child) {\n border-bottom: 1px solid var(--dv-tab-divider-color);\n}\n.dv-tabs-overflow-container .dv-active-tab {\n background-color: var(--dv-activegroup-visiblepanel-tab-background-color);\n color: var(--dv-activegroup-visiblepanel-tab-color);\n}\n.dv-tabs-overflow-container .dv-inactive-tab {\n background-color: var(--dv-activegroup-hiddenpanel-tab-background-color);\n color: var(--dv-activegroup-hiddenpanel-tab-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-right-actions-container {\n display: flex;\n}\n.dv-watermark {\n display: flex;\n height: 100%;\n}";
|
|
40
40
|
styleInject(css_248z);
|
|
41
41
|
|
|
42
42
|
class TransferObject {
|
|
@@ -368,6 +368,20 @@ class MutableDisposable {
|
|
|
368
368
|
}
|
|
369
369
|
}
|
|
370
370
|
|
|
371
|
+
class OverflowObserver extends CompositeDisposable {
|
|
372
|
+
constructor(el) {
|
|
373
|
+
super();
|
|
374
|
+
this._onDidChange = new Emitter();
|
|
375
|
+
this.onDidChange = this._onDidChange.event;
|
|
376
|
+
this._value = null;
|
|
377
|
+
this.addDisposables(this._onDidChange, watchElementResize(el, (entry) => {
|
|
378
|
+
const hasScrollX = entry.target.scrollWidth > entry.target.clientWidth;
|
|
379
|
+
const hasScrollY = entry.target.scrollHeight > entry.target.clientHeight;
|
|
380
|
+
this._value = { hasScrollX, hasScrollY };
|
|
381
|
+
this._onDidChange.fire(this._value);
|
|
382
|
+
}));
|
|
383
|
+
}
|
|
384
|
+
}
|
|
371
385
|
function watchElementResize(element, cb) {
|
|
372
386
|
const observer = new ResizeObserver((entires) => {
|
|
373
387
|
/**
|
|
@@ -606,6 +620,19 @@ class Classnames {
|
|
|
606
620
|
}
|
|
607
621
|
}
|
|
608
622
|
}
|
|
623
|
+
function isChildEntirelyVisibleWithinParent(child, parent) {
|
|
624
|
+
//
|
|
625
|
+
const childPosition = getDomNodePagePosition(child);
|
|
626
|
+
const parentPosition = getDomNodePagePosition(parent);
|
|
627
|
+
if (childPosition.left < parentPosition.left) {
|
|
628
|
+
return false;
|
|
629
|
+
}
|
|
630
|
+
if (childPosition.left + childPosition.width >
|
|
631
|
+
parentPosition.left + parentPosition.width) {
|
|
632
|
+
return false;
|
|
633
|
+
}
|
|
634
|
+
return true;
|
|
635
|
+
}
|
|
609
636
|
|
|
610
637
|
function tail(arr) {
|
|
611
638
|
if (arr.length === 0) {
|
|
@@ -613,9 +640,6 @@ function tail(arr) {
|
|
|
613
640
|
}
|
|
614
641
|
return [arr.slice(0, arr.length - 1), arr[arr.length - 1]];
|
|
615
642
|
}
|
|
616
|
-
function last(arr) {
|
|
617
|
-
return arr.length > 0 ? arr[arr.length - 1] : undefined;
|
|
618
|
-
}
|
|
619
643
|
function sequenceEquals(arr1, arr2) {
|
|
620
644
|
if (arr1.length !== arr2.length) {
|
|
621
645
|
return false;
|
|
@@ -881,6 +905,7 @@ class Splitview {
|
|
|
881
905
|
}
|
|
882
906
|
set margin(value) {
|
|
883
907
|
this._margin = value;
|
|
908
|
+
toggleClass(this.element, 'dv-splitview-has-margin', value !== 0);
|
|
884
909
|
}
|
|
885
910
|
constructor(container, options) {
|
|
886
911
|
var _a, _b;
|
|
@@ -3452,9 +3477,6 @@ class DockviewApi {
|
|
|
3452
3477
|
get totalPanels() {
|
|
3453
3478
|
return this.component.totalPanels;
|
|
3454
3479
|
}
|
|
3455
|
-
get gap() {
|
|
3456
|
-
return this.component.gap;
|
|
3457
|
-
}
|
|
3458
3480
|
/**
|
|
3459
3481
|
* Invoked when the active group changes. May be undefined if no group is active.
|
|
3460
3482
|
*/
|
|
@@ -3685,9 +3707,6 @@ class DockviewApi {
|
|
|
3685
3707
|
addPopoutGroup(item, options) {
|
|
3686
3708
|
return this.component.addPopoutGroup(item, options);
|
|
3687
3709
|
}
|
|
3688
|
-
setGap(gap) {
|
|
3689
|
-
this.component.updateOptions({ gap });
|
|
3690
|
-
}
|
|
3691
3710
|
updateOptions(options) {
|
|
3692
3711
|
this.component.updateOptions(options);
|
|
3693
3712
|
}
|
|
@@ -3740,14 +3759,16 @@ class DragHandler extends CompositeDisposable {
|
|
|
3740
3759
|
* For example: in react-dnd if dataTransfer.types is not set then the dragStart event will be cancelled
|
|
3741
3760
|
* through .preventDefault(). Since this is applied globally to all drag events this would break dockviews
|
|
3742
3761
|
* dnd logic. You can see the code at
|
|
3743
|
-
|
|
3762
|
+
P * https://github.com/react-dnd/react-dnd/blob/main/packages/backend-html5/src/HTML5BackendImpl.ts#L542
|
|
3744
3763
|
*/
|
|
3745
3764
|
event.dataTransfer.setData('text/plain', '');
|
|
3746
3765
|
}
|
|
3747
3766
|
}
|
|
3748
3767
|
}), addDisposableListener(this.el, 'dragend', () => {
|
|
3749
3768
|
this.pointerEventsDisposable.dispose();
|
|
3750
|
-
|
|
3769
|
+
setTimeout(() => {
|
|
3770
|
+
this.dataDisposable.dispose(); // allow the data to be read by other handlers before disposing
|
|
3771
|
+
}, 0);
|
|
3751
3772
|
}));
|
|
3752
3773
|
}
|
|
3753
3774
|
}
|
|
@@ -3857,6 +3878,12 @@ const DEFAULT_SIZE = {
|
|
|
3857
3878
|
const SMALL_WIDTH_BOUNDARY = 100;
|
|
3858
3879
|
const SMALL_HEIGHT_BOUNDARY = 100;
|
|
3859
3880
|
class Droptarget extends CompositeDisposable {
|
|
3881
|
+
get disabled() {
|
|
3882
|
+
return this._disabled;
|
|
3883
|
+
}
|
|
3884
|
+
set disabled(value) {
|
|
3885
|
+
this._disabled = value;
|
|
3886
|
+
}
|
|
3860
3887
|
get state() {
|
|
3861
3888
|
return this._state;
|
|
3862
3889
|
}
|
|
@@ -3868,23 +3895,34 @@ class Droptarget extends CompositeDisposable {
|
|
|
3868
3895
|
this.onDrop = this._onDrop.event;
|
|
3869
3896
|
this._onWillShowOverlay = new Emitter();
|
|
3870
3897
|
this.onWillShowOverlay = this._onWillShowOverlay.event;
|
|
3898
|
+
this._disabled = false;
|
|
3871
3899
|
// use a set to take advantage of #<set>.has
|
|
3872
3900
|
this._acceptedTargetZonesSet = new Set(this.options.acceptedTargetZones);
|
|
3873
3901
|
this.dnd = new DragAndDropObserver(this.element, {
|
|
3874
|
-
onDragEnter: () =>
|
|
3902
|
+
onDragEnter: () => {
|
|
3903
|
+
var _a, _b, _c;
|
|
3904
|
+
(_c = (_b = (_a = this.options).getOverrideTarget) === null || _b === void 0 ? void 0 : _b.call(_a)) === null || _c === void 0 ? void 0 : _c.getElements();
|
|
3905
|
+
},
|
|
3875
3906
|
onDragOver: (e) => {
|
|
3907
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
3908
|
+
Droptarget.ACTUAL_TARGET = this;
|
|
3909
|
+
const overrideTraget = (_b = (_a = this.options).getOverrideTarget) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
3876
3910
|
if (this._acceptedTargetZonesSet.size === 0) {
|
|
3911
|
+
if (overrideTraget) {
|
|
3912
|
+
return;
|
|
3913
|
+
}
|
|
3877
3914
|
this.removeDropTarget();
|
|
3878
3915
|
return;
|
|
3879
3916
|
}
|
|
3880
|
-
const
|
|
3881
|
-
const
|
|
3917
|
+
const target = (_e = (_d = (_c = this.options).getOverlayOutline) === null || _d === void 0 ? void 0 : _d.call(_c)) !== null && _e !== void 0 ? _e : this.element;
|
|
3918
|
+
const width = target.offsetWidth;
|
|
3919
|
+
const height = target.offsetHeight;
|
|
3882
3920
|
if (width === 0 || height === 0) {
|
|
3883
3921
|
return; // avoid div!0
|
|
3884
3922
|
}
|
|
3885
3923
|
const rect = e.currentTarget.getBoundingClientRect();
|
|
3886
|
-
const x = e.clientX - rect.left;
|
|
3887
|
-
const y = e.clientY - rect.top;
|
|
3924
|
+
const x = ((_f = e.clientX) !== null && _f !== void 0 ? _f : 0) - rect.left;
|
|
3925
|
+
const y = ((_g = e.clientY) !== null && _g !== void 0 ? _g : 0) - rect.top;
|
|
3888
3926
|
const quadrant = this.calculateQuadrant(this._acceptedTargetZonesSet, x, y, width, height);
|
|
3889
3927
|
/**
|
|
3890
3928
|
* If the event has already been used by another DropTarget instance
|
|
@@ -3897,6 +3935,9 @@ class Droptarget extends CompositeDisposable {
|
|
|
3897
3935
|
return;
|
|
3898
3936
|
}
|
|
3899
3937
|
if (!this.options.canDisplayOverlay(e, quadrant)) {
|
|
3938
|
+
if (overrideTraget) {
|
|
3939
|
+
return;
|
|
3940
|
+
}
|
|
3900
3941
|
this.removeDropTarget();
|
|
3901
3942
|
return;
|
|
3902
3943
|
}
|
|
@@ -3914,29 +3955,57 @@ class Droptarget extends CompositeDisposable {
|
|
|
3914
3955
|
return;
|
|
3915
3956
|
}
|
|
3916
3957
|
this.markAsUsed(e);
|
|
3917
|
-
if (
|
|
3958
|
+
if (overrideTraget) ;
|
|
3959
|
+
else if (!this.targetElement) {
|
|
3918
3960
|
this.targetElement = document.createElement('div');
|
|
3919
3961
|
this.targetElement.className = 'dv-drop-target-dropzone';
|
|
3920
3962
|
this.overlayElement = document.createElement('div');
|
|
3921
3963
|
this.overlayElement.className = 'dv-drop-target-selection';
|
|
3922
3964
|
this._state = 'center';
|
|
3923
3965
|
this.targetElement.appendChild(this.overlayElement);
|
|
3924
|
-
|
|
3925
|
-
|
|
3966
|
+
target.classList.add('dv-drop-target');
|
|
3967
|
+
target.append(this.targetElement);
|
|
3968
|
+
// this.overlayElement.style.opacity = '0';
|
|
3969
|
+
// requestAnimationFrame(() => {
|
|
3970
|
+
// if (this.overlayElement) {
|
|
3971
|
+
// this.overlayElement.style.opacity = '';
|
|
3972
|
+
// }
|
|
3973
|
+
// });
|
|
3926
3974
|
}
|
|
3927
3975
|
this.toggleClasses(quadrant, width, height);
|
|
3928
3976
|
this._state = quadrant;
|
|
3929
3977
|
},
|
|
3930
3978
|
onDragLeave: () => {
|
|
3979
|
+
var _a, _b;
|
|
3980
|
+
const target = (_b = (_a = this.options).getOverrideTarget) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
3981
|
+
if (target) {
|
|
3982
|
+
return;
|
|
3983
|
+
}
|
|
3931
3984
|
this.removeDropTarget();
|
|
3932
3985
|
},
|
|
3933
|
-
onDragEnd: () => {
|
|
3986
|
+
onDragEnd: (e) => {
|
|
3987
|
+
var _a, _b;
|
|
3988
|
+
const target = (_b = (_a = this.options).getOverrideTarget) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
3989
|
+
if (target && Droptarget.ACTUAL_TARGET === this) {
|
|
3990
|
+
if (this._state) {
|
|
3991
|
+
// only stop the propagation of the event if we are dealing with it
|
|
3992
|
+
// which is only when the target has state
|
|
3993
|
+
e.stopPropagation();
|
|
3994
|
+
this._onDrop.fire({
|
|
3995
|
+
position: this._state,
|
|
3996
|
+
nativeEvent: e,
|
|
3997
|
+
});
|
|
3998
|
+
}
|
|
3999
|
+
}
|
|
3934
4000
|
this.removeDropTarget();
|
|
4001
|
+
target === null || target === void 0 ? void 0 : target.clear();
|
|
3935
4002
|
},
|
|
3936
4003
|
onDrop: (e) => {
|
|
4004
|
+
var _a, _b, _c;
|
|
3937
4005
|
e.preventDefault();
|
|
3938
4006
|
const state = this._state;
|
|
3939
4007
|
this.removeDropTarget();
|
|
4008
|
+
(_c = (_b = (_a = this.options).getOverrideTarget) === null || _b === void 0 ? void 0 : _b.call(_a)) === null || _c === void 0 ? void 0 : _c.clear();
|
|
3940
4009
|
if (state) {
|
|
3941
4010
|
// only stop the propagation of the event if we are dealing with it
|
|
3942
4011
|
// which is only when the target has state
|
|
@@ -3971,8 +4040,9 @@ class Droptarget extends CompositeDisposable {
|
|
|
3971
4040
|
return typeof value === 'boolean' && value;
|
|
3972
4041
|
}
|
|
3973
4042
|
toggleClasses(quadrant, width, height) {
|
|
3974
|
-
var _a, _b;
|
|
3975
|
-
|
|
4043
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
4044
|
+
const target = (_b = (_a = this.options).getOverrideTarget) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
4045
|
+
if (!target && !this.overlayElement) {
|
|
3976
4046
|
return;
|
|
3977
4047
|
}
|
|
3978
4048
|
const isSmallX = width < SMALL_WIDTH_BOUNDARY;
|
|
@@ -3986,7 +4056,7 @@ class Droptarget extends CompositeDisposable {
|
|
|
3986
4056
|
const topClass = !isSmallY && isTop;
|
|
3987
4057
|
const bottomClass = !isSmallY && isBottom;
|
|
3988
4058
|
let size = 1;
|
|
3989
|
-
const sizeOptions = (
|
|
4059
|
+
const sizeOptions = (_d = (_c = this.options.overlayModel) === null || _c === void 0 ? void 0 : _c.size) !== null && _d !== void 0 ? _d : DEFAULT_SIZE;
|
|
3990
4060
|
if (sizeOptions.type === 'percentage') {
|
|
3991
4061
|
size = clamp(sizeOptions.value, 0, 100) / 100;
|
|
3992
4062
|
}
|
|
@@ -3998,6 +4068,74 @@ class Droptarget extends CompositeDisposable {
|
|
|
3998
4068
|
size = clamp(0, sizeOptions.value, height) / height;
|
|
3999
4069
|
}
|
|
4000
4070
|
}
|
|
4071
|
+
if (target) {
|
|
4072
|
+
const outlineEl = (_g = (_f = (_e = this.options).getOverlayOutline) === null || _f === void 0 ? void 0 : _f.call(_e)) !== null && _g !== void 0 ? _g : this.element;
|
|
4073
|
+
const elBox = outlineEl.getBoundingClientRect();
|
|
4074
|
+
const ta = target.getElements(undefined, outlineEl);
|
|
4075
|
+
const el = ta.root;
|
|
4076
|
+
const overlay = ta.overlay;
|
|
4077
|
+
const bigbox = el.getBoundingClientRect();
|
|
4078
|
+
const rootTop = elBox.top - bigbox.top;
|
|
4079
|
+
const rootLeft = elBox.left - bigbox.left;
|
|
4080
|
+
const box = {
|
|
4081
|
+
top: rootTop,
|
|
4082
|
+
left: rootLeft,
|
|
4083
|
+
width: width,
|
|
4084
|
+
height: height,
|
|
4085
|
+
};
|
|
4086
|
+
if (rightClass) {
|
|
4087
|
+
box.left = rootLeft + width * (1 - size);
|
|
4088
|
+
box.width = width * size;
|
|
4089
|
+
}
|
|
4090
|
+
else if (leftClass) {
|
|
4091
|
+
box.width = width * size;
|
|
4092
|
+
}
|
|
4093
|
+
else if (topClass) {
|
|
4094
|
+
box.height = height * size;
|
|
4095
|
+
}
|
|
4096
|
+
else if (bottomClass) {
|
|
4097
|
+
box.top = rootTop + height * (1 - size);
|
|
4098
|
+
box.height = height * size;
|
|
4099
|
+
}
|
|
4100
|
+
if (isSmallX && isLeft) {
|
|
4101
|
+
box.width = 4;
|
|
4102
|
+
}
|
|
4103
|
+
if (isSmallX && isRight) {
|
|
4104
|
+
box.left = rootLeft + width - 4;
|
|
4105
|
+
box.width = 4;
|
|
4106
|
+
}
|
|
4107
|
+
const topPx = `${Math.round(box.top)}px`;
|
|
4108
|
+
const leftPx = `${Math.round(box.left)}px`;
|
|
4109
|
+
const widthPx = `${Math.round(box.width)}px`;
|
|
4110
|
+
const heightPx = `${Math.round(box.height)}px`;
|
|
4111
|
+
if (overlay.style.top === topPx &&
|
|
4112
|
+
overlay.style.left === leftPx &&
|
|
4113
|
+
overlay.style.width === widthPx &&
|
|
4114
|
+
overlay.style.height === heightPx) {
|
|
4115
|
+
return;
|
|
4116
|
+
}
|
|
4117
|
+
overlay.style.top = topPx;
|
|
4118
|
+
overlay.style.left = leftPx;
|
|
4119
|
+
overlay.style.width = widthPx;
|
|
4120
|
+
overlay.style.height = heightPx;
|
|
4121
|
+
overlay.style.visibility = 'visible';
|
|
4122
|
+
overlay.className = `dv-drop-target-anchor${this.options.className ? ` ${this.options.className}` : ''}`;
|
|
4123
|
+
toggleClass(overlay, 'dv-drop-target-left', isLeft);
|
|
4124
|
+
toggleClass(overlay, 'dv-drop-target-right', isRight);
|
|
4125
|
+
toggleClass(overlay, 'dv-drop-target-top', isTop);
|
|
4126
|
+
toggleClass(overlay, 'dv-drop-target-bottom', isBottom);
|
|
4127
|
+
toggleClass(overlay, 'dv-drop-target-center', quadrant === 'center');
|
|
4128
|
+
if (ta.changed) {
|
|
4129
|
+
toggleClass(overlay, 'dv-drop-target-anchor-container-changed', true);
|
|
4130
|
+
setTimeout(() => {
|
|
4131
|
+
toggleClass(overlay, 'dv-drop-target-anchor-container-changed', false);
|
|
4132
|
+
}, 10);
|
|
4133
|
+
}
|
|
4134
|
+
return;
|
|
4135
|
+
}
|
|
4136
|
+
if (!this.overlayElement) {
|
|
4137
|
+
return;
|
|
4138
|
+
}
|
|
4001
4139
|
const box = { top: '0px', left: '0px', width: '100%', height: '100%' };
|
|
4002
4140
|
/**
|
|
4003
4141
|
* You can also achieve the overlay placement using the transform CSS property
|
|
@@ -4054,12 +4192,13 @@ class Droptarget extends CompositeDisposable {
|
|
|
4054
4192
|
return calculateQuadrantAsPixels(overlayType, x, y, width, height, activationSizeOptions.value);
|
|
4055
4193
|
}
|
|
4056
4194
|
removeDropTarget() {
|
|
4195
|
+
var _a;
|
|
4057
4196
|
if (this.targetElement) {
|
|
4058
4197
|
this._state = undefined;
|
|
4059
|
-
|
|
4198
|
+
(_a = this.targetElement.parentElement) === null || _a === void 0 ? void 0 : _a.classList.remove('dv-drop-target');
|
|
4199
|
+
this.targetElement.remove();
|
|
4060
4200
|
this.targetElement = undefined;
|
|
4061
4201
|
this.overlayElement = undefined;
|
|
4062
|
-
this.element.classList.remove('dv-drop-target');
|
|
4063
4202
|
}
|
|
4064
4203
|
}
|
|
4065
4204
|
}
|
|
@@ -4644,7 +4783,15 @@ class ContentContainer extends CompositeDisposable {
|
|
|
4644
4783
|
this._element.className = 'dv-content-container';
|
|
4645
4784
|
this._element.tabIndex = -1;
|
|
4646
4785
|
this.addDisposables(this._onDidFocus, this._onDidBlur);
|
|
4786
|
+
const target = group.dropTargetContainer;
|
|
4647
4787
|
this.dropTarget = new Droptarget(this.element, {
|
|
4788
|
+
getOverlayOutline: () => {
|
|
4789
|
+
var _a;
|
|
4790
|
+
return ((_a = accessor.options.theme) === null || _a === void 0 ? void 0 : _a.dndPanelOverlay) === 'group'
|
|
4791
|
+
? this.element.parentElement
|
|
4792
|
+
: null;
|
|
4793
|
+
},
|
|
4794
|
+
className: 'dv-drop-target-content',
|
|
4648
4795
|
acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],
|
|
4649
4796
|
canDisplayOverlay: (event, position) => {
|
|
4650
4797
|
if (this.group.locked === 'no-drop-target' ||
|
|
@@ -4658,22 +4805,11 @@ class ContentContainer extends CompositeDisposable {
|
|
|
4658
4805
|
return false;
|
|
4659
4806
|
}
|
|
4660
4807
|
if (data && data.viewId === this.accessor.id) {
|
|
4661
|
-
|
|
4662
|
-
if (position === 'center') {
|
|
4663
|
-
// don't allow to drop on self for center position
|
|
4664
|
-
return false;
|
|
4665
|
-
}
|
|
4666
|
-
if (data.panelId === null) {
|
|
4667
|
-
// don't allow group move to drop anywhere on self
|
|
4668
|
-
return false;
|
|
4669
|
-
}
|
|
4670
|
-
}
|
|
4671
|
-
const groupHasOnePanelAndIsActiveDragElement = this.group.panels.length === 1 &&
|
|
4672
|
-
data.groupId === this.group.id;
|
|
4673
|
-
return !groupHasOnePanelAndIsActiveDragElement;
|
|
4808
|
+
return true;
|
|
4674
4809
|
}
|
|
4675
4810
|
return this.group.canDisplayOverlay(event, position, 'content');
|
|
4676
4811
|
},
|
|
4812
|
+
getOverrideTarget: target ? () => target.model : undefined,
|
|
4677
4813
|
});
|
|
4678
4814
|
this.addDisposables(this.dropTarget);
|
|
4679
4815
|
}
|
|
@@ -4748,6 +4884,18 @@ class ContentContainer extends CompositeDisposable {
|
|
|
4748
4884
|
}
|
|
4749
4885
|
}
|
|
4750
4886
|
|
|
4887
|
+
function addGhostImage(dataTransfer, ghostElement, options) {
|
|
4888
|
+
var _a, _b;
|
|
4889
|
+
// class dockview provides to force ghost image to be drawn on a different layer and prevent weird rendering issues
|
|
4890
|
+
addClasses(ghostElement, 'dv-dragged');
|
|
4891
|
+
document.body.appendChild(ghostElement);
|
|
4892
|
+
dataTransfer.setDragImage(ghostElement, (_a = options === null || options === void 0 ? void 0 : options.x) !== null && _a !== void 0 ? _a : 0, (_b = options === null || options === void 0 ? void 0 : options.y) !== null && _b !== void 0 ? _b : 0);
|
|
4893
|
+
setTimeout(() => {
|
|
4894
|
+
removeClasses(ghostElement, 'dv-dragged');
|
|
4895
|
+
ghostElement.remove();
|
|
4896
|
+
}, 0);
|
|
4897
|
+
}
|
|
4898
|
+
|
|
4751
4899
|
class TabDragHandler extends DragHandler {
|
|
4752
4900
|
constructor(element, accessor, group, panel) {
|
|
4753
4901
|
super(element);
|
|
@@ -4788,25 +4936,32 @@ class Tab extends CompositeDisposable {
|
|
|
4788
4936
|
toggleClass(this.element, 'dv-inactive-tab', true);
|
|
4789
4937
|
const dragHandler = new TabDragHandler(this._element, this.accessor, this.group, this.panel);
|
|
4790
4938
|
this.dropTarget = new Droptarget(this._element, {
|
|
4791
|
-
acceptedTargetZones: ['
|
|
4939
|
+
acceptedTargetZones: ['left', 'right'],
|
|
4940
|
+
overlayModel: { activationSize: { value: 50, type: 'percentage' } },
|
|
4792
4941
|
canDisplayOverlay: (event, position) => {
|
|
4793
4942
|
if (this.group.locked) {
|
|
4794
4943
|
return false;
|
|
4795
4944
|
}
|
|
4796
4945
|
const data = getPanelData();
|
|
4797
4946
|
if (data && this.accessor.id === data.viewId) {
|
|
4798
|
-
|
|
4799
|
-
data.groupId === this.group.id) {
|
|
4800
|
-
// don't allow group move to drop on self
|
|
4801
|
-
return false;
|
|
4802
|
-
}
|
|
4803
|
-
return this.panel.id !== data.panelId;
|
|
4947
|
+
return true;
|
|
4804
4948
|
}
|
|
4805
4949
|
return this.group.model.canDisplayOverlay(event, position, 'tab');
|
|
4806
4950
|
},
|
|
4951
|
+
getOverrideTarget: () => { var _a; return (_a = group.model.dropTargetContainer) === null || _a === void 0 ? void 0 : _a.model; },
|
|
4807
4952
|
});
|
|
4808
4953
|
this.onWillShowOverlay = this.dropTarget.onWillShowOverlay;
|
|
4809
4954
|
this.addDisposables(this._onPointDown, this._onDropped, this._onDragStart, dragHandler.onDragStart((event) => {
|
|
4955
|
+
if (event.dataTransfer) {
|
|
4956
|
+
const style = getComputedStyle(this.element);
|
|
4957
|
+
const newNode = this.element.cloneNode(true);
|
|
4958
|
+
Array.from(style).forEach((key) => newNode.style.setProperty(key, style.getPropertyValue(key), style.getPropertyPriority(key)));
|
|
4959
|
+
newNode.style.position = 'absolute';
|
|
4960
|
+
addGhostImage(event.dataTransfer, newNode, {
|
|
4961
|
+
y: -10,
|
|
4962
|
+
x: 30,
|
|
4963
|
+
});
|
|
4964
|
+
}
|
|
4810
4965
|
this._onDragStart.fire(event);
|
|
4811
4966
|
}), dragHandler, addDisposableListener(this._element, 'pointerdown', (event) => {
|
|
4812
4967
|
this._onPointDown.fire(event);
|
|
@@ -4830,17 +4985,6 @@ class Tab extends CompositeDisposable {
|
|
|
4830
4985
|
}
|
|
4831
4986
|
}
|
|
4832
4987
|
|
|
4833
|
-
function addGhostImage(dataTransfer, ghostElement) {
|
|
4834
|
-
// class dockview provides to force ghost image to be drawn on a different layer and prevent weird rendering issues
|
|
4835
|
-
addClasses(ghostElement, 'dv-dragged');
|
|
4836
|
-
document.body.appendChild(ghostElement);
|
|
4837
|
-
dataTransfer.setDragImage(ghostElement, 0, 0);
|
|
4838
|
-
setTimeout(() => {
|
|
4839
|
-
removeClasses(ghostElement, 'dv-dragged');
|
|
4840
|
-
ghostElement.remove();
|
|
4841
|
-
}, 0);
|
|
4842
|
-
}
|
|
4843
|
-
|
|
4844
4988
|
class GroupDragHandler extends DragHandler {
|
|
4845
4989
|
constructor(element, accessor, group) {
|
|
4846
4990
|
super(element);
|
|
@@ -4880,8 +5024,10 @@ class GroupDragHandler extends DragHandler {
|
|
|
4880
5024
|
ghostElement.style.lineHeight = '20px';
|
|
4881
5025
|
ghostElement.style.borderRadius = '12px';
|
|
4882
5026
|
ghostElement.style.position = 'absolute';
|
|
5027
|
+
ghostElement.style.pointerEvents = 'none';
|
|
5028
|
+
ghostElement.style.top = '-9999px';
|
|
4883
5029
|
ghostElement.textContent = `Multiple Panels (${this.group.size})`;
|
|
4884
|
-
addGhostImage(dataTransfer, ghostElement);
|
|
5030
|
+
addGhostImage(dataTransfer, ghostElement, { y: -10, x: 30 });
|
|
4885
5031
|
}
|
|
4886
5032
|
return {
|
|
4887
5033
|
dispose: () => {
|
|
@@ -4913,19 +5059,13 @@ class VoidContainer extends CompositeDisposable {
|
|
|
4913
5059
|
this.dropTraget = new Droptarget(this._element, {
|
|
4914
5060
|
acceptedTargetZones: ['center'],
|
|
4915
5061
|
canDisplayOverlay: (event, position) => {
|
|
4916
|
-
var _a;
|
|
4917
5062
|
const data = getPanelData();
|
|
4918
5063
|
if (data && this.accessor.id === data.viewId) {
|
|
4919
|
-
|
|
4920
|
-
data.groupId === this.group.id) {
|
|
4921
|
-
// don't allow group move to drop on self
|
|
4922
|
-
return false;
|
|
4923
|
-
}
|
|
4924
|
-
// don't show the overlay if the tab being dragged is the last panel of this group
|
|
4925
|
-
return ((_a = last(this.group.panels)) === null || _a === void 0 ? void 0 : _a.id) !== data.panelId;
|
|
5064
|
+
return true;
|
|
4926
5065
|
}
|
|
4927
5066
|
return group.model.canDisplayOverlay(event, position, 'header_space');
|
|
4928
5067
|
},
|
|
5068
|
+
getOverrideTarget: () => { var _a; return (_a = group.model.dropTargetContainer) === null || _a === void 0 ? void 0 : _a.model; },
|
|
4929
5069
|
});
|
|
4930
5070
|
this.onWillShowOverlay = this.dropTraget.onWillShowOverlay;
|
|
4931
5071
|
this.addDisposables(handler, handler.onDragStart((event) => {
|
|
@@ -4936,88 +5076,338 @@ class VoidContainer extends CompositeDisposable {
|
|
|
4936
5076
|
}
|
|
4937
5077
|
}
|
|
4938
5078
|
|
|
4939
|
-
class
|
|
4940
|
-
get
|
|
4941
|
-
return this.
|
|
4942
|
-
}
|
|
4943
|
-
get size() {
|
|
4944
|
-
return this.tabs.length;
|
|
4945
|
-
}
|
|
4946
|
-
get hidden() {
|
|
4947
|
-
return this._hidden;
|
|
5079
|
+
class Scrollbar extends CompositeDisposable {
|
|
5080
|
+
get element() {
|
|
5081
|
+
return this._element;
|
|
4948
5082
|
}
|
|
4949
|
-
|
|
4950
|
-
|
|
4951
|
-
this.
|
|
5083
|
+
constructor(scrollableElement) {
|
|
5084
|
+
super();
|
|
5085
|
+
this.scrollableElement = scrollableElement;
|
|
5086
|
+
this._scrollLeft = 0;
|
|
5087
|
+
this._element = document.createElement('div');
|
|
5088
|
+
this._element.className = 'dv-scrollable';
|
|
5089
|
+
this._horizontalScrollbar = document.createElement('div');
|
|
5090
|
+
this._horizontalScrollbar.className = 'dv-scrollbar-horizontal';
|
|
5091
|
+
this.element.appendChild(scrollableElement);
|
|
5092
|
+
this.element.appendChild(this._horizontalScrollbar);
|
|
5093
|
+
this.addDisposables(addDisposableListener(this.element, 'wheel', (event) => {
|
|
5094
|
+
this._scrollLeft += event.deltaY * Scrollbar.MouseWheelSpeed;
|
|
5095
|
+
this.calculateScrollbarStyles();
|
|
5096
|
+
}), addDisposableListener(this._horizontalScrollbar, 'pointerdown', (event) => {
|
|
5097
|
+
event.preventDefault();
|
|
5098
|
+
toggleClass(this.element, 'dv-scrollable-scrolling', true);
|
|
5099
|
+
const originalClientX = event.clientX;
|
|
5100
|
+
const originalScrollLeft = this._scrollLeft;
|
|
5101
|
+
const onPointerMove = (event) => {
|
|
5102
|
+
const deltaX = event.clientX - originalClientX;
|
|
5103
|
+
const { clientWidth } = this.element;
|
|
5104
|
+
const { scrollWidth } = this.scrollableElement;
|
|
5105
|
+
const p = clientWidth / scrollWidth;
|
|
5106
|
+
this._scrollLeft = originalScrollLeft + deltaX / p;
|
|
5107
|
+
this.calculateScrollbarStyles();
|
|
5108
|
+
};
|
|
5109
|
+
const onEnd = () => {
|
|
5110
|
+
toggleClass(this.element, 'dv-scrollable-scrolling', false);
|
|
5111
|
+
document.removeEventListener('pointermove', onPointerMove);
|
|
5112
|
+
document.removeEventListener('pointerup', onEnd);
|
|
5113
|
+
document.removeEventListener('pointercancel', onEnd);
|
|
5114
|
+
};
|
|
5115
|
+
document.addEventListener('pointermove', onPointerMove);
|
|
5116
|
+
document.addEventListener('pointerup', onEnd);
|
|
5117
|
+
document.addEventListener('pointercancel', onEnd);
|
|
5118
|
+
}), addDisposableListener(this.element, 'scroll', () => {
|
|
5119
|
+
this.calculateScrollbarStyles();
|
|
5120
|
+
}), addDisposableListener(this.scrollableElement, 'scroll', () => {
|
|
5121
|
+
this._scrollLeft = this.scrollableElement.scrollLeft;
|
|
5122
|
+
this.calculateScrollbarStyles();
|
|
5123
|
+
}), watchElementResize(this.element, () => {
|
|
5124
|
+
toggleClass(this.element, 'dv-scrollable-resizing', true);
|
|
5125
|
+
if (this._animationTimer) {
|
|
5126
|
+
clearTimeout(this._animationTimer);
|
|
5127
|
+
}
|
|
5128
|
+
this._animationTimer = setTimeout(() => {
|
|
5129
|
+
clearTimeout(this._animationTimer);
|
|
5130
|
+
toggleClass(this.element, 'dv-scrollable-resizing', false);
|
|
5131
|
+
}, 500);
|
|
5132
|
+
this.calculateScrollbarStyles();
|
|
5133
|
+
}));
|
|
4952
5134
|
}
|
|
4953
|
-
|
|
4954
|
-
|
|
4955
|
-
|
|
5135
|
+
calculateScrollbarStyles() {
|
|
5136
|
+
const { clientWidth } = this.element;
|
|
5137
|
+
const { scrollWidth } = this.scrollableElement;
|
|
5138
|
+
const hasScrollbar = scrollWidth > clientWidth;
|
|
5139
|
+
if (hasScrollbar) {
|
|
5140
|
+
const px = clientWidth * (clientWidth / scrollWidth);
|
|
5141
|
+
this._horizontalScrollbar.style.width = `${px}px`;
|
|
5142
|
+
this._scrollLeft = clamp(this._scrollLeft, 0, this.scrollableElement.scrollWidth - clientWidth);
|
|
5143
|
+
this.scrollableElement.scrollLeft = this._scrollLeft;
|
|
5144
|
+
const percentageComplete = this._scrollLeft / (scrollWidth - clientWidth);
|
|
5145
|
+
this._horizontalScrollbar.style.left = `${(clientWidth - px) * percentageComplete}px`;
|
|
5146
|
+
}
|
|
5147
|
+
else {
|
|
5148
|
+
this._horizontalScrollbar.style.width = `0px`;
|
|
5149
|
+
this._horizontalScrollbar.style.left = `0px`;
|
|
5150
|
+
this._scrollLeft = 0;
|
|
4956
5151
|
}
|
|
4957
5152
|
}
|
|
4958
|
-
|
|
4959
|
-
|
|
5153
|
+
}
|
|
5154
|
+
Scrollbar.MouseWheelSpeed = 1;
|
|
5155
|
+
|
|
5156
|
+
class Tabs extends CompositeDisposable {
|
|
5157
|
+
get showTabsOverflowControl() {
|
|
5158
|
+
return this._showTabsOverflowControl;
|
|
4960
5159
|
}
|
|
4961
|
-
|
|
4962
|
-
if (this.
|
|
5160
|
+
set showTabsOverflowControl(value) {
|
|
5161
|
+
if (this._showTabsOverflowControl == value) {
|
|
4963
5162
|
return;
|
|
4964
5163
|
}
|
|
4965
|
-
|
|
4966
|
-
|
|
4967
|
-
|
|
4968
|
-
|
|
4969
|
-
|
|
4970
|
-
|
|
4971
|
-
this.
|
|
5164
|
+
this._showTabsOverflowControl = value;
|
|
5165
|
+
if (value) {
|
|
5166
|
+
const observer = new OverflowObserver(this._tabsList);
|
|
5167
|
+
this._observerDisposable.value = new CompositeDisposable(observer, observer.onDidChange((event) => {
|
|
5168
|
+
const hasOverflow = event.hasScrollX || event.hasScrollY;
|
|
5169
|
+
this.toggleDropdown({ reset: !hasOverflow });
|
|
5170
|
+
}), addDisposableListener(this._tabsList, 'scroll', () => {
|
|
5171
|
+
this.toggleDropdown({ reset: false });
|
|
5172
|
+
}));
|
|
4972
5173
|
}
|
|
4973
5174
|
}
|
|
4974
|
-
|
|
4975
|
-
|
|
4976
|
-
|
|
4977
|
-
|
|
4978
|
-
|
|
4979
|
-
|
|
4980
|
-
|
|
4981
|
-
|
|
4982
|
-
|
|
4983
|
-
|
|
4984
|
-
|
|
5175
|
+
get element() {
|
|
5176
|
+
return this._element;
|
|
5177
|
+
}
|
|
5178
|
+
get panels() {
|
|
5179
|
+
return this._tabs.map((_) => _.value.panel.id);
|
|
5180
|
+
}
|
|
5181
|
+
get size() {
|
|
5182
|
+
return this._tabs.length;
|
|
5183
|
+
}
|
|
5184
|
+
get tabs() {
|
|
5185
|
+
return this._tabs.map((_) => _.value);
|
|
5186
|
+
}
|
|
5187
|
+
constructor(group, accessor, options) {
|
|
5188
|
+
super();
|
|
5189
|
+
this.group = group;
|
|
5190
|
+
this.accessor = accessor;
|
|
5191
|
+
this._observerDisposable = new MutableDisposable();
|
|
5192
|
+
this._tabs = [];
|
|
5193
|
+
this.selectedIndex = -1;
|
|
5194
|
+
this._showTabsOverflowControl = false;
|
|
5195
|
+
this._onTabDragStart = new Emitter();
|
|
5196
|
+
this.onTabDragStart = this._onTabDragStart.event;
|
|
5197
|
+
this._onDrop = new Emitter();
|
|
5198
|
+
this.onDrop = this._onDrop.event;
|
|
5199
|
+
this._onWillShowOverlay = new Emitter();
|
|
5200
|
+
this.onWillShowOverlay = this._onWillShowOverlay.event;
|
|
5201
|
+
this._onOverflowTabsChange = new Emitter();
|
|
5202
|
+
this.onOverflowTabsChange = this._onOverflowTabsChange.event;
|
|
5203
|
+
this._tabsList = document.createElement('div');
|
|
5204
|
+
this._tabsList.className = 'dv-tabs-container dv-horizontal';
|
|
5205
|
+
this.showTabsOverflowControl = options.showTabsOverflowControl;
|
|
5206
|
+
const scrollbar = new Scrollbar(this._tabsList);
|
|
5207
|
+
this._element = scrollbar.element;
|
|
5208
|
+
this.addDisposables(this._onOverflowTabsChange, this._observerDisposable, scrollbar, this._onWillShowOverlay, this._onDrop, this._onTabDragStart, addDisposableListener(this.element, 'pointerdown', (event) => {
|
|
5209
|
+
if (event.defaultPrevented) {
|
|
5210
|
+
return;
|
|
5211
|
+
}
|
|
5212
|
+
const isLeftClick = event.button === 0;
|
|
5213
|
+
if (isLeftClick) {
|
|
5214
|
+
this.accessor.doSetGroupActive(this.group);
|
|
5215
|
+
}
|
|
5216
|
+
}), exports.DockviewDisposable.from(() => {
|
|
5217
|
+
for (const { value, disposable } of this._tabs) {
|
|
5218
|
+
disposable.dispose();
|
|
5219
|
+
value.dispose();
|
|
5220
|
+
}
|
|
5221
|
+
this._tabs = [];
|
|
5222
|
+
}));
|
|
5223
|
+
}
|
|
5224
|
+
indexOf(id) {
|
|
5225
|
+
return this._tabs.findIndex((tab) => tab.value.panel.id === id);
|
|
5226
|
+
}
|
|
5227
|
+
isActive(tab) {
|
|
5228
|
+
return (this.selectedIndex > -1 &&
|
|
5229
|
+
this._tabs[this.selectedIndex].value === tab);
|
|
5230
|
+
}
|
|
5231
|
+
setActivePanel(panel) {
|
|
5232
|
+
let runningWidth = 0;
|
|
5233
|
+
for (const tab of this._tabs) {
|
|
5234
|
+
const isActivePanel = panel.id === tab.value.panel.id;
|
|
5235
|
+
tab.value.setActive(isActivePanel);
|
|
5236
|
+
if (isActivePanel) {
|
|
5237
|
+
const element = tab.value.element;
|
|
5238
|
+
const parentElement = element.parentElement;
|
|
5239
|
+
if (runningWidth < parentElement.scrollLeft ||
|
|
5240
|
+
runningWidth + element.clientWidth >
|
|
5241
|
+
parentElement.scrollLeft + parentElement.clientWidth) {
|
|
5242
|
+
parentElement.scrollLeft = runningWidth;
|
|
5243
|
+
}
|
|
5244
|
+
}
|
|
5245
|
+
runningWidth += tab.value.element.clientWidth;
|
|
4985
5246
|
}
|
|
4986
5247
|
}
|
|
4987
|
-
|
|
4988
|
-
if (this.
|
|
5248
|
+
openPanel(panel, index = this._tabs.length) {
|
|
5249
|
+
if (this._tabs.find((tab) => tab.value.panel.id === panel.id)) {
|
|
4989
5250
|
return;
|
|
4990
5251
|
}
|
|
4991
|
-
|
|
4992
|
-
|
|
4993
|
-
|
|
5252
|
+
const tab = new Tab(panel, this.accessor, this.group);
|
|
5253
|
+
tab.setContent(panel.view.tab);
|
|
5254
|
+
const disposable = new CompositeDisposable(tab.onDragStart((event) => {
|
|
5255
|
+
this._onTabDragStart.fire({ nativeEvent: event, panel });
|
|
5256
|
+
}), tab.onPointerDown((event) => {
|
|
5257
|
+
if (event.defaultPrevented) {
|
|
5258
|
+
return;
|
|
5259
|
+
}
|
|
5260
|
+
const isFloatingGroupsEnabled = !this.accessor.options.disableFloatingGroups;
|
|
5261
|
+
const isFloatingWithOnePanel = this.group.api.location.type === 'floating' &&
|
|
5262
|
+
this.size === 1;
|
|
5263
|
+
if (isFloatingGroupsEnabled &&
|
|
5264
|
+
!isFloatingWithOnePanel &&
|
|
5265
|
+
event.shiftKey) {
|
|
5266
|
+
event.preventDefault();
|
|
5267
|
+
const panel = this.accessor.getGroupPanel(tab.panel.id);
|
|
5268
|
+
const { top, left } = tab.element.getBoundingClientRect();
|
|
5269
|
+
const { top: rootTop, left: rootLeft } = this.accessor.element.getBoundingClientRect();
|
|
5270
|
+
this.accessor.addFloatingGroup(panel, {
|
|
5271
|
+
x: left - rootLeft,
|
|
5272
|
+
y: top - rootTop,
|
|
5273
|
+
inDragMode: true,
|
|
5274
|
+
});
|
|
5275
|
+
return;
|
|
5276
|
+
}
|
|
5277
|
+
switch (event.button) {
|
|
5278
|
+
case 0: // left click or touch
|
|
5279
|
+
if (this.group.activePanel !== panel) {
|
|
5280
|
+
this.group.model.openPanel(panel);
|
|
5281
|
+
}
|
|
5282
|
+
break;
|
|
5283
|
+
}
|
|
5284
|
+
}), tab.onDrop((event) => {
|
|
5285
|
+
this._onDrop.fire({
|
|
5286
|
+
event: event.nativeEvent,
|
|
5287
|
+
index: this._tabs.findIndex((x) => x.value === tab),
|
|
5288
|
+
});
|
|
5289
|
+
}), tab.onWillShowOverlay((event) => {
|
|
5290
|
+
this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {
|
|
5291
|
+
kind: 'tab',
|
|
5292
|
+
panel: this.group.activePanel,
|
|
5293
|
+
api: this.accessor.api,
|
|
5294
|
+
group: this.group,
|
|
5295
|
+
getData: getPanelData,
|
|
5296
|
+
}));
|
|
5297
|
+
}));
|
|
5298
|
+
const value = { value: tab, disposable };
|
|
5299
|
+
this.addTab(value, index);
|
|
5300
|
+
}
|
|
5301
|
+
delete(id) {
|
|
5302
|
+
const index = this.indexOf(id);
|
|
5303
|
+
const tabToRemove = this._tabs.splice(index, 1)[0];
|
|
5304
|
+
const { value, disposable } = tabToRemove;
|
|
5305
|
+
disposable.dispose();
|
|
5306
|
+
value.dispose();
|
|
5307
|
+
value.element.remove();
|
|
5308
|
+
}
|
|
5309
|
+
addTab(tab, index = this._tabs.length) {
|
|
5310
|
+
if (index < 0 || index > this._tabs.length) {
|
|
5311
|
+
throw new Error('invalid location');
|
|
4994
5312
|
}
|
|
4995
|
-
|
|
4996
|
-
|
|
4997
|
-
this.
|
|
5313
|
+
this._tabsList.insertBefore(tab.value.element, this._tabsList.children[index]);
|
|
5314
|
+
this._tabs = [
|
|
5315
|
+
...this._tabs.slice(0, index),
|
|
5316
|
+
tab,
|
|
5317
|
+
...this._tabs.slice(index),
|
|
5318
|
+
];
|
|
5319
|
+
if (this.selectedIndex < 0) {
|
|
5320
|
+
this.selectedIndex = index;
|
|
4998
5321
|
}
|
|
4999
5322
|
}
|
|
5000
|
-
|
|
5001
|
-
|
|
5323
|
+
toggleDropdown(options) {
|
|
5324
|
+
const tabs = options.reset
|
|
5325
|
+
? []
|
|
5326
|
+
: this._tabs
|
|
5327
|
+
.filter((tab) => !isChildEntirelyVisibleWithinParent(tab.value.element, this._tabsList))
|
|
5328
|
+
.map((x) => x.value.panel.id);
|
|
5329
|
+
this._onOverflowTabsChange.fire({ tabs, reset: options.reset });
|
|
5002
5330
|
}
|
|
5003
|
-
|
|
5004
|
-
|
|
5005
|
-
|
|
5331
|
+
}
|
|
5332
|
+
|
|
5333
|
+
const createSvgElementFromPath = (params) => {
|
|
5334
|
+
const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
|
|
5335
|
+
svg.setAttributeNS(null, 'height', params.height);
|
|
5336
|
+
svg.setAttributeNS(null, 'width', params.width);
|
|
5337
|
+
svg.setAttributeNS(null, 'viewBox', params.viewbox);
|
|
5338
|
+
svg.setAttributeNS(null, 'aria-hidden', 'false');
|
|
5339
|
+
svg.setAttributeNS(null, 'focusable', 'false');
|
|
5340
|
+
svg.classList.add('dv-svg');
|
|
5341
|
+
const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');
|
|
5342
|
+
path.setAttributeNS(null, 'd', params.path);
|
|
5343
|
+
svg.appendChild(path);
|
|
5344
|
+
return svg;
|
|
5345
|
+
};
|
|
5346
|
+
const createCloseButton = () => createSvgElementFromPath({
|
|
5347
|
+
width: '11',
|
|
5348
|
+
height: '11',
|
|
5349
|
+
viewbox: '0 0 28 28',
|
|
5350
|
+
path: 'M2.1 27.3L0 25.2L11.55 13.65L0 2.1L2.1 0L13.65 11.55L25.2 0L27.3 2.1L15.75 13.65L27.3 25.2L25.2 27.3L13.65 15.75L2.1 27.3Z',
|
|
5351
|
+
});
|
|
5352
|
+
const createExpandMoreButton = () => createSvgElementFromPath({
|
|
5353
|
+
width: '11',
|
|
5354
|
+
height: '11',
|
|
5355
|
+
viewbox: '0 0 24 15',
|
|
5356
|
+
path: 'M12 14.15L0 2.15L2.15 0L12 9.9L21.85 0.0499992L24 2.2L12 14.15Z',
|
|
5357
|
+
});
|
|
5358
|
+
const createChevronRightButton = () => createSvgElementFromPath({
|
|
5359
|
+
width: '11',
|
|
5360
|
+
height: '11',
|
|
5361
|
+
viewbox: '0 0 15 25',
|
|
5362
|
+
path: 'M2.15 24.1L0 21.95L9.9 12.05L0 2.15L2.15 0L14.2 12.05L2.15 24.1Z',
|
|
5363
|
+
});
|
|
5364
|
+
|
|
5365
|
+
function createDropdownElementHandle() {
|
|
5366
|
+
const el = document.createElement('div');
|
|
5367
|
+
el.className = 'dv-tabs-overflow-dropdown-default';
|
|
5368
|
+
const text = document.createElement('span');
|
|
5369
|
+
text.textContent = ``;
|
|
5370
|
+
const icon = createChevronRightButton();
|
|
5371
|
+
el.appendChild(icon);
|
|
5372
|
+
el.appendChild(text);
|
|
5373
|
+
return {
|
|
5374
|
+
element: el,
|
|
5375
|
+
update: (params) => {
|
|
5376
|
+
text.textContent = `${params.tabs}`;
|
|
5377
|
+
},
|
|
5378
|
+
};
|
|
5379
|
+
}
|
|
5380
|
+
|
|
5381
|
+
class TabsContainer extends CompositeDisposable {
|
|
5382
|
+
get onTabDragStart() {
|
|
5383
|
+
return this.tabs.onTabDragStart;
|
|
5006
5384
|
}
|
|
5007
|
-
|
|
5008
|
-
return this.tabs.
|
|
5385
|
+
get panels() {
|
|
5386
|
+
return this.tabs.panels;
|
|
5387
|
+
}
|
|
5388
|
+
get size() {
|
|
5389
|
+
return this.tabs.size;
|
|
5390
|
+
}
|
|
5391
|
+
get hidden() {
|
|
5392
|
+
return this._hidden;
|
|
5393
|
+
}
|
|
5394
|
+
set hidden(value) {
|
|
5395
|
+
this._hidden = value;
|
|
5396
|
+
this.element.style.display = value ? 'none' : '';
|
|
5397
|
+
}
|
|
5398
|
+
get element() {
|
|
5399
|
+
return this._element;
|
|
5009
5400
|
}
|
|
5010
5401
|
constructor(accessor, group) {
|
|
5011
5402
|
super();
|
|
5012
5403
|
this.accessor = accessor;
|
|
5013
5404
|
this.group = group;
|
|
5014
|
-
this.tabs = [];
|
|
5015
|
-
this.selectedIndex = -1;
|
|
5016
5405
|
this._hidden = false;
|
|
5406
|
+
this.dropdownPart = null;
|
|
5407
|
+
this._overflowTabs = [];
|
|
5408
|
+
this._dropdownDisposable = new MutableDisposable();
|
|
5017
5409
|
this._onDrop = new Emitter();
|
|
5018
5410
|
this.onDrop = this._onDrop.event;
|
|
5019
|
-
this._onTabDragStart = new Emitter();
|
|
5020
|
-
this.onTabDragStart = this._onTabDragStart.event;
|
|
5021
5411
|
this._onGroupDragStart = new Emitter();
|
|
5022
5412
|
this.onGroupDragStart = this._onGroupDragStart.event;
|
|
5023
5413
|
this._onWillShowOverlay = new Emitter();
|
|
@@ -5031,15 +5421,21 @@ class TabsContainer extends CompositeDisposable {
|
|
|
5031
5421
|
this.leftActionsContainer.className = 'dv-left-actions-container';
|
|
5032
5422
|
this.preActionsContainer = document.createElement('div');
|
|
5033
5423
|
this.preActionsContainer.className = 'dv-pre-actions-container';
|
|
5034
|
-
this.
|
|
5035
|
-
|
|
5424
|
+
this.tabs = new Tabs(group, accessor, {
|
|
5425
|
+
showTabsOverflowControl: !accessor.options.disableTabsOverflowList,
|
|
5426
|
+
});
|
|
5036
5427
|
this.voidContainer = new VoidContainer(this.accessor, this.group);
|
|
5037
5428
|
this._element.appendChild(this.preActionsContainer);
|
|
5038
|
-
this._element.appendChild(this.
|
|
5429
|
+
this._element.appendChild(this.tabs.element);
|
|
5039
5430
|
this._element.appendChild(this.leftActionsContainer);
|
|
5040
5431
|
this._element.appendChild(this.voidContainer.element);
|
|
5041
5432
|
this._element.appendChild(this.rightActionsContainer);
|
|
5042
|
-
this.addDisposables(
|
|
5433
|
+
this.addDisposables(accessor.onDidOptionsChange(() => {
|
|
5434
|
+
this.tabs.showTabsOverflowControl =
|
|
5435
|
+
!accessor.options.disableTabsOverflowList;
|
|
5436
|
+
}), this.tabs.onOverflowTabsChange((event) => {
|
|
5437
|
+
this.toggleDropdown(event);
|
|
5438
|
+
}), this.tabs, this._onWillShowOverlay, this._onDrop, this._onGroupDragStart, this.voidContainer, this.voidContainer.onDragStart((event) => {
|
|
5043
5439
|
this._onGroupDragStart.fire({
|
|
5044
5440
|
nativeEvent: event,
|
|
5045
5441
|
group: this.group,
|
|
@@ -5047,7 +5443,7 @@ class TabsContainer extends CompositeDisposable {
|
|
|
5047
5443
|
}), this.voidContainer.onDrop((event) => {
|
|
5048
5444
|
this._onDrop.fire({
|
|
5049
5445
|
event: event.nativeEvent,
|
|
5050
|
-
index: this.tabs.
|
|
5446
|
+
index: this.tabs.size,
|
|
5051
5447
|
});
|
|
5052
5448
|
}), this.voidContainer.onWillShowOverlay((event) => {
|
|
5053
5449
|
this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {
|
|
@@ -5057,133 +5453,149 @@ class TabsContainer extends CompositeDisposable {
|
|
|
5057
5453
|
group: this.group,
|
|
5058
5454
|
getData: getPanelData,
|
|
5059
5455
|
}));
|
|
5060
|
-
}), addDisposableListener(this.voidContainer.element, 'pointerdown', (event) => {
|
|
5061
|
-
const isFloatingGroupsEnabled = !this.accessor.options.disableFloatingGroups;
|
|
5062
|
-
if (isFloatingGroupsEnabled &&
|
|
5063
|
-
event.shiftKey &&
|
|
5064
|
-
this.group.api.location.type !== 'floating') {
|
|
5065
|
-
event.preventDefault();
|
|
5066
|
-
const { top, left } = this.element.getBoundingClientRect();
|
|
5067
|
-
const { top: rootTop, left: rootLeft } = this.accessor.element.getBoundingClientRect();
|
|
5068
|
-
this.accessor.addFloatingGroup(this.group, {
|
|
5069
|
-
x: left - rootLeft + 20,
|
|
5070
|
-
y: top - rootTop + 20,
|
|
5071
|
-
inDragMode: true,
|
|
5072
|
-
});
|
|
5073
|
-
}
|
|
5074
|
-
}), addDisposableListener(this.tabContainer, 'pointerdown', (event) => {
|
|
5075
|
-
if (event.defaultPrevented) {
|
|
5076
|
-
return;
|
|
5077
|
-
}
|
|
5078
|
-
const isLeftClick = event.button === 0;
|
|
5079
|
-
if (isLeftClick) {
|
|
5080
|
-
this.accessor.doSetGroupActive(this.group);
|
|
5081
|
-
}
|
|
5082
|
-
}));
|
|
5083
|
-
}
|
|
5084
|
-
setActive(_isGroupActive) {
|
|
5085
|
-
// noop
|
|
5086
|
-
}
|
|
5087
|
-
delete(id) {
|
|
5088
|
-
const index = this.tabs.findIndex((tab) => tab.value.panel.id === id);
|
|
5089
|
-
const tabToRemove = this.tabs.splice(index, 1)[0];
|
|
5090
|
-
if (!tabToRemove) {
|
|
5091
|
-
throw new Error(`dockview: Tab not found`);
|
|
5092
|
-
}
|
|
5093
|
-
const { value, disposable } = tabToRemove;
|
|
5094
|
-
disposable.dispose();
|
|
5095
|
-
value.dispose();
|
|
5096
|
-
value.element.remove();
|
|
5097
|
-
this.updateClassnames();
|
|
5098
|
-
}
|
|
5099
|
-
setActivePanel(panel) {
|
|
5100
|
-
this.tabs.forEach((tab) => {
|
|
5101
|
-
const isActivePanel = panel.id === tab.value.panel.id;
|
|
5102
|
-
tab.value.setActive(isActivePanel);
|
|
5103
|
-
});
|
|
5104
|
-
}
|
|
5105
|
-
openPanel(panel, index = this.tabs.length) {
|
|
5106
|
-
if (this.tabs.find((tab) => tab.value.panel.id === panel.id)) {
|
|
5107
|
-
return;
|
|
5108
|
-
}
|
|
5109
|
-
const tab = new Tab(panel, this.accessor, this.group);
|
|
5110
|
-
tab.setContent(panel.view.tab);
|
|
5111
|
-
const disposable = new CompositeDisposable(tab.onDragStart((event) => {
|
|
5112
|
-
this._onTabDragStart.fire({ nativeEvent: event, panel });
|
|
5113
|
-
}), tab.onPointerDown((event) => {
|
|
5456
|
+
}), addDisposableListener(this.voidContainer.element, 'pointerdown', (event) => {
|
|
5114
5457
|
if (event.defaultPrevented) {
|
|
5115
5458
|
return;
|
|
5116
5459
|
}
|
|
5117
5460
|
const isFloatingGroupsEnabled = !this.accessor.options.disableFloatingGroups;
|
|
5118
|
-
const isFloatingWithOnePanel = this.group.api.location.type === 'floating' &&
|
|
5119
|
-
this.size === 1;
|
|
5120
5461
|
if (isFloatingGroupsEnabled &&
|
|
5121
|
-
|
|
5122
|
-
|
|
5462
|
+
event.shiftKey &&
|
|
5463
|
+
this.group.api.location.type !== 'floating') {
|
|
5123
5464
|
event.preventDefault();
|
|
5124
|
-
const
|
|
5125
|
-
const { top, left } = tab.element.getBoundingClientRect();
|
|
5465
|
+
const { top, left } = this.element.getBoundingClientRect();
|
|
5126
5466
|
const { top: rootTop, left: rootLeft } = this.accessor.element.getBoundingClientRect();
|
|
5127
|
-
this.accessor.addFloatingGroup(
|
|
5128
|
-
x: left - rootLeft,
|
|
5129
|
-
y: top - rootTop,
|
|
5467
|
+
this.accessor.addFloatingGroup(this.group, {
|
|
5468
|
+
x: left - rootLeft + 20,
|
|
5469
|
+
y: top - rootTop + 20,
|
|
5130
5470
|
inDragMode: true,
|
|
5131
5471
|
});
|
|
5132
|
-
return;
|
|
5133
|
-
}
|
|
5134
|
-
switch (event.button) {
|
|
5135
|
-
case 0: // left click or touch
|
|
5136
|
-
if (this.group.activePanel !== panel) {
|
|
5137
|
-
this.group.model.openPanel(panel);
|
|
5138
|
-
}
|
|
5139
|
-
break;
|
|
5140
5472
|
}
|
|
5141
|
-
}), tab.onDrop((event) => {
|
|
5142
|
-
this._onDrop.fire({
|
|
5143
|
-
event: event.nativeEvent,
|
|
5144
|
-
index: this.tabs.findIndex((x) => x.value === tab),
|
|
5145
|
-
});
|
|
5146
|
-
}), tab.onWillShowOverlay((event) => {
|
|
5147
|
-
this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {
|
|
5148
|
-
kind: 'tab',
|
|
5149
|
-
panel: this.group.activePanel,
|
|
5150
|
-
api: this.accessor.api,
|
|
5151
|
-
group: this.group,
|
|
5152
|
-
getData: getPanelData,
|
|
5153
|
-
}));
|
|
5154
5473
|
}));
|
|
5155
|
-
const value = { value: tab, disposable };
|
|
5156
|
-
this.addTab(value, index);
|
|
5157
5474
|
}
|
|
5158
|
-
|
|
5159
|
-
this.
|
|
5475
|
+
show() {
|
|
5476
|
+
if (!this.hidden) {
|
|
5477
|
+
this.element.style.display = '';
|
|
5478
|
+
}
|
|
5160
5479
|
}
|
|
5161
|
-
|
|
5162
|
-
|
|
5163
|
-
|
|
5164
|
-
|
|
5165
|
-
|
|
5480
|
+
hide() {
|
|
5481
|
+
this._element.style.display = 'none';
|
|
5482
|
+
}
|
|
5483
|
+
setRightActionsElement(element) {
|
|
5484
|
+
if (this.rightActions === element) {
|
|
5485
|
+
return;
|
|
5486
|
+
}
|
|
5487
|
+
if (this.rightActions) {
|
|
5488
|
+
this.rightActions.remove();
|
|
5489
|
+
this.rightActions = undefined;
|
|
5490
|
+
}
|
|
5491
|
+
if (element) {
|
|
5492
|
+
this.rightActionsContainer.appendChild(element);
|
|
5493
|
+
this.rightActions = element;
|
|
5166
5494
|
}
|
|
5167
|
-
this.tabs = [];
|
|
5168
5495
|
}
|
|
5169
|
-
|
|
5170
|
-
if (
|
|
5171
|
-
|
|
5496
|
+
setLeftActionsElement(element) {
|
|
5497
|
+
if (this.leftActions === element) {
|
|
5498
|
+
return;
|
|
5172
5499
|
}
|
|
5173
|
-
|
|
5174
|
-
|
|
5175
|
-
|
|
5176
|
-
|
|
5177
|
-
|
|
5178
|
-
|
|
5179
|
-
|
|
5180
|
-
|
|
5500
|
+
if (this.leftActions) {
|
|
5501
|
+
this.leftActions.remove();
|
|
5502
|
+
this.leftActions = undefined;
|
|
5503
|
+
}
|
|
5504
|
+
if (element) {
|
|
5505
|
+
this.leftActionsContainer.appendChild(element);
|
|
5506
|
+
this.leftActions = element;
|
|
5507
|
+
}
|
|
5508
|
+
}
|
|
5509
|
+
setPrefixActionsElement(element) {
|
|
5510
|
+
if (this.preActions === element) {
|
|
5511
|
+
return;
|
|
5512
|
+
}
|
|
5513
|
+
if (this.preActions) {
|
|
5514
|
+
this.preActions.remove();
|
|
5515
|
+
this.preActions = undefined;
|
|
5516
|
+
}
|
|
5517
|
+
if (element) {
|
|
5518
|
+
this.preActionsContainer.appendChild(element);
|
|
5519
|
+
this.preActions = element;
|
|
5181
5520
|
}
|
|
5521
|
+
}
|
|
5522
|
+
isActive(tab) {
|
|
5523
|
+
return this.tabs.isActive(tab);
|
|
5524
|
+
}
|
|
5525
|
+
indexOf(id) {
|
|
5526
|
+
return this.tabs.indexOf(id);
|
|
5527
|
+
}
|
|
5528
|
+
setActive(_isGroupActive) {
|
|
5529
|
+
// noop
|
|
5530
|
+
}
|
|
5531
|
+
delete(id) {
|
|
5532
|
+
this.tabs.delete(id);
|
|
5533
|
+
this.updateClassnames();
|
|
5534
|
+
}
|
|
5535
|
+
setActivePanel(panel) {
|
|
5536
|
+
this.tabs.setActivePanel(panel);
|
|
5537
|
+
}
|
|
5538
|
+
openPanel(panel, index = this.tabs.size) {
|
|
5539
|
+
this.tabs.openPanel(panel, index);
|
|
5182
5540
|
this.updateClassnames();
|
|
5183
5541
|
}
|
|
5542
|
+
closePanel(panel) {
|
|
5543
|
+
this.delete(panel.id);
|
|
5544
|
+
}
|
|
5184
5545
|
updateClassnames() {
|
|
5185
5546
|
toggleClass(this._element, 'dv-single-tab', this.size === 1);
|
|
5186
5547
|
}
|
|
5548
|
+
toggleDropdown(options) {
|
|
5549
|
+
const tabs = options.reset ? [] : options.tabs;
|
|
5550
|
+
this._overflowTabs = tabs;
|
|
5551
|
+
if (this._overflowTabs.length > 0 && this.dropdownPart) {
|
|
5552
|
+
this.dropdownPart.update({ tabs: tabs.length });
|
|
5553
|
+
return;
|
|
5554
|
+
}
|
|
5555
|
+
if (this._overflowTabs.length === 0) {
|
|
5556
|
+
this._dropdownDisposable.dispose();
|
|
5557
|
+
return;
|
|
5558
|
+
}
|
|
5559
|
+
const root = document.createElement('div');
|
|
5560
|
+
root.className = 'dv-tabs-overflow-dropdown-root';
|
|
5561
|
+
const part = createDropdownElementHandle();
|
|
5562
|
+
part.update({ tabs: tabs.length });
|
|
5563
|
+
this.dropdownPart = part;
|
|
5564
|
+
root.appendChild(part.element);
|
|
5565
|
+
this.rightActionsContainer.prepend(root);
|
|
5566
|
+
this._dropdownDisposable.value = new CompositeDisposable(exports.DockviewDisposable.from(() => {
|
|
5567
|
+
var _a, _b;
|
|
5568
|
+
root.remove();
|
|
5569
|
+
(_b = (_a = this.dropdownPart) === null || _a === void 0 ? void 0 : _a.dispose) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
5570
|
+
this.dropdownPart = null;
|
|
5571
|
+
}), addDisposableListener(root, 'pointerdown', (event) => {
|
|
5572
|
+
event.preventDefault();
|
|
5573
|
+
}, { capture: true }), addDisposableListener(root, 'click', (event) => {
|
|
5574
|
+
const el = document.createElement('div');
|
|
5575
|
+
el.style.overflow = 'auto';
|
|
5576
|
+
el.className = 'dv-tabs-overflow-container';
|
|
5577
|
+
for (const tab of this.tabs.tabs.filter((tab) => this._overflowTabs.includes(tab.panel.id))) {
|
|
5578
|
+
const panelObject = this.group.panels.find((panel) => panel === tab.panel);
|
|
5579
|
+
const tabComponent = panelObject.view.createTabRenderer('headerOverflow');
|
|
5580
|
+
const child = tabComponent.element;
|
|
5581
|
+
const wrapper = document.createElement('div');
|
|
5582
|
+
toggleClass(wrapper, 'dv-tab', true);
|
|
5583
|
+
toggleClass(wrapper, 'dv-active-tab', panelObject.api.isActive);
|
|
5584
|
+
toggleClass(wrapper, 'dv-inactive-tab', !panelObject.api.isActive);
|
|
5585
|
+
wrapper.addEventListener('mousedown', () => {
|
|
5586
|
+
this.accessor.popupService.close();
|
|
5587
|
+
tab.element.scrollIntoView();
|
|
5588
|
+
tab.panel.api.setActive();
|
|
5589
|
+
});
|
|
5590
|
+
wrapper.appendChild(child);
|
|
5591
|
+
el.appendChild(wrapper);
|
|
5592
|
+
}
|
|
5593
|
+
this.accessor.popupService.openPopover(el, {
|
|
5594
|
+
x: event.clientX,
|
|
5595
|
+
y: event.clientY,
|
|
5596
|
+
});
|
|
5597
|
+
}));
|
|
5598
|
+
}
|
|
5187
5599
|
}
|
|
5188
5600
|
|
|
5189
5601
|
class DockviewUnhandledDragOverEvent extends AcceptableEvent {
|
|
@@ -5213,9 +5625,11 @@ const PROPERTY_KEYS_DOCKVIEW = (() => {
|
|
|
5213
5625
|
rootOverlayModel: undefined,
|
|
5214
5626
|
locked: undefined,
|
|
5215
5627
|
disableDnd: undefined,
|
|
5216
|
-
gap: undefined,
|
|
5217
5628
|
className: undefined,
|
|
5218
5629
|
noPanelsOverlay: undefined,
|
|
5630
|
+
dndEdges: undefined,
|
|
5631
|
+
theme: undefined,
|
|
5632
|
+
disableTabsOverflowList: undefined,
|
|
5219
5633
|
};
|
|
5220
5634
|
return Object.keys(properties);
|
|
5221
5635
|
})();
|
|
@@ -5394,6 +5808,7 @@ class DockviewGroupPanelModel extends CompositeDisposable {
|
|
|
5394
5808
|
this._location = { type: 'grid' };
|
|
5395
5809
|
this.mostRecentlyUsed = [];
|
|
5396
5810
|
this._overwriteRenderContainer = null;
|
|
5811
|
+
this._overwriteDropTargetContainer = null;
|
|
5397
5812
|
this._onDidChange = new Emitter();
|
|
5398
5813
|
this.onDidChange = this._onDidChange.event;
|
|
5399
5814
|
this._width = 0;
|
|
@@ -5471,6 +5886,13 @@ class DockviewGroupPanelModel extends CompositeDisposable {
|
|
|
5471
5886
|
var _a;
|
|
5472
5887
|
return ((_a = this._overwriteRenderContainer) !== null && _a !== void 0 ? _a : this.accessor.overlayRenderContainer);
|
|
5473
5888
|
}
|
|
5889
|
+
set dropTargetContainer(value) {
|
|
5890
|
+
this._overwriteDropTargetContainer = value;
|
|
5891
|
+
}
|
|
5892
|
+
get dropTargetContainer() {
|
|
5893
|
+
var _a;
|
|
5894
|
+
return ((_a = this._overwriteDropTargetContainer) !== null && _a !== void 0 ? _a : this.accessor.rootDropTargetContainer);
|
|
5895
|
+
}
|
|
5474
5896
|
initialize() {
|
|
5475
5897
|
if (this.options.panels) {
|
|
5476
5898
|
this.options.panels.forEach((panel) => {
|
|
@@ -5819,6 +6241,25 @@ class DockviewGroupPanelModel extends CompositeDisposable {
|
|
|
5819
6241
|
}
|
|
5820
6242
|
const data = getPanelData();
|
|
5821
6243
|
if (data && data.viewId === this.accessor.id) {
|
|
6244
|
+
if (type === 'content') {
|
|
6245
|
+
if (data.groupId === this.id) {
|
|
6246
|
+
// don't allow to drop on self for center position
|
|
6247
|
+
if (position === 'center') {
|
|
6248
|
+
return;
|
|
6249
|
+
}
|
|
6250
|
+
if (data.panelId === null) {
|
|
6251
|
+
// don't allow group move to drop anywhere on self
|
|
6252
|
+
return;
|
|
6253
|
+
}
|
|
6254
|
+
}
|
|
6255
|
+
}
|
|
6256
|
+
if (type === 'header') {
|
|
6257
|
+
if (data.groupId === this.id) {
|
|
6258
|
+
if (data.panelId === null) {
|
|
6259
|
+
return;
|
|
6260
|
+
}
|
|
6261
|
+
}
|
|
6262
|
+
}
|
|
5822
6263
|
if (data.panelId === null) {
|
|
5823
6264
|
// this is a group move dnd event
|
|
5824
6265
|
const { groupId } = data;
|
|
@@ -6247,6 +6688,46 @@ class DockviewGroupPanel extends GridviewPanel {
|
|
|
6247
6688
|
}
|
|
6248
6689
|
}
|
|
6249
6690
|
|
|
6691
|
+
const themeDark = {
|
|
6692
|
+
name: 'dark',
|
|
6693
|
+
className: 'dockview-theme-dark',
|
|
6694
|
+
};
|
|
6695
|
+
const themeLight = {
|
|
6696
|
+
name: 'light',
|
|
6697
|
+
className: 'dockview-theme-light',
|
|
6698
|
+
};
|
|
6699
|
+
const themeVisualStudio = {
|
|
6700
|
+
name: 'visualStudio',
|
|
6701
|
+
className: 'dockview-theme-vs',
|
|
6702
|
+
};
|
|
6703
|
+
const themeAbyss = {
|
|
6704
|
+
name: 'abyss',
|
|
6705
|
+
className: 'dockview-theme-abyss',
|
|
6706
|
+
};
|
|
6707
|
+
const themeDracula = {
|
|
6708
|
+
name: 'dracula',
|
|
6709
|
+
className: 'dockview-theme-dracula',
|
|
6710
|
+
};
|
|
6711
|
+
const themeReplit = {
|
|
6712
|
+
name: 'replit',
|
|
6713
|
+
className: 'dockview-theme-replit',
|
|
6714
|
+
gap: 10,
|
|
6715
|
+
};
|
|
6716
|
+
const themeAbyssSpaced = {
|
|
6717
|
+
name: 'abyssSpaced',
|
|
6718
|
+
className: 'dockview-theme-abyss-spaced',
|
|
6719
|
+
gap: 10,
|
|
6720
|
+
dndOverlayMounting: 'absolute',
|
|
6721
|
+
dndPanelOverlay: 'group',
|
|
6722
|
+
};
|
|
6723
|
+
const themeLightSpaced = {
|
|
6724
|
+
name: 'lightSpaced',
|
|
6725
|
+
className: 'dockview-theme-light-spaced',
|
|
6726
|
+
gap: 10,
|
|
6727
|
+
dndOverlayMounting: 'absolute',
|
|
6728
|
+
dndPanelOverlay: 'group',
|
|
6729
|
+
};
|
|
6730
|
+
|
|
6250
6731
|
class DockviewPanelApiImpl extends GridviewPanelApiImpl {
|
|
6251
6732
|
get location() {
|
|
6252
6733
|
return this.group.api.location;
|
|
@@ -6521,38 +7002,6 @@ class DockviewPanel extends CompositeDisposable {
|
|
|
6521
7002
|
}
|
|
6522
7003
|
}
|
|
6523
7004
|
|
|
6524
|
-
const createSvgElementFromPath = (params) => {
|
|
6525
|
-
const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
|
|
6526
|
-
svg.setAttributeNS(null, 'height', params.height);
|
|
6527
|
-
svg.setAttributeNS(null, 'width', params.width);
|
|
6528
|
-
svg.setAttributeNS(null, 'viewBox', params.viewbox);
|
|
6529
|
-
svg.setAttributeNS(null, 'aria-hidden', 'false');
|
|
6530
|
-
svg.setAttributeNS(null, 'focusable', 'false');
|
|
6531
|
-
svg.classList.add('dv-svg');
|
|
6532
|
-
const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');
|
|
6533
|
-
path.setAttributeNS(null, 'd', params.path);
|
|
6534
|
-
svg.appendChild(path);
|
|
6535
|
-
return svg;
|
|
6536
|
-
};
|
|
6537
|
-
const createCloseButton = () => createSvgElementFromPath({
|
|
6538
|
-
width: '11',
|
|
6539
|
-
height: '11',
|
|
6540
|
-
viewbox: '0 0 28 28',
|
|
6541
|
-
path: 'M2.1 27.3L0 25.2L11.55 13.65L0 2.1L2.1 0L13.65 11.55L25.2 0L27.3 2.1L15.75 13.65L27.3 25.2L25.2 27.3L13.65 15.75L2.1 27.3Z',
|
|
6542
|
-
});
|
|
6543
|
-
const createExpandMoreButton = () => createSvgElementFromPath({
|
|
6544
|
-
width: '11',
|
|
6545
|
-
height: '11',
|
|
6546
|
-
viewbox: '0 0 24 15',
|
|
6547
|
-
path: 'M12 14.15L0 2.15L2.15 0L12 9.9L21.85 0.0499992L24 2.2L12 14.15Z',
|
|
6548
|
-
});
|
|
6549
|
-
const createChevronRightButton = () => createSvgElementFromPath({
|
|
6550
|
-
width: '11',
|
|
6551
|
-
height: '11',
|
|
6552
|
-
viewbox: '0 0 15 25',
|
|
6553
|
-
path: 'M2.15 24.1L0 21.95L9.9 12.05L0 2.15L2.15 0L14.2 12.05L2.15 24.1Z',
|
|
6554
|
-
});
|
|
6555
|
-
|
|
6556
7005
|
class DefaultTab extends CompositeDisposable {
|
|
6557
7006
|
get element() {
|
|
6558
7007
|
return this._element;
|
|
@@ -6609,12 +7058,21 @@ class DockviewPanelModel {
|
|
|
6609
7058
|
this._content = this.createContentComponent(this.id, contentComponent);
|
|
6610
7059
|
this._tab = this.createTabComponent(this.id, tabComponent);
|
|
6611
7060
|
}
|
|
7061
|
+
createTabRenderer(tabLocation) {
|
|
7062
|
+
var _a;
|
|
7063
|
+
const cmp = this.createTabComponent(this.id, this.tabComponent);
|
|
7064
|
+
if (this._params) {
|
|
7065
|
+
cmp.init(Object.assign(Object.assign({}, this._params), { tabLocation }));
|
|
7066
|
+
}
|
|
7067
|
+
if (this._updateEvent) {
|
|
7068
|
+
(_a = cmp.update) === null || _a === void 0 ? void 0 : _a.call(cmp, this._updateEvent);
|
|
7069
|
+
}
|
|
7070
|
+
return cmp;
|
|
7071
|
+
}
|
|
6612
7072
|
init(params) {
|
|
7073
|
+
this._params = params;
|
|
6613
7074
|
this.content.init(params);
|
|
6614
|
-
this.tab.init(params);
|
|
6615
|
-
}
|
|
6616
|
-
updateParentGroup(_group, _isPanelVisible) {
|
|
6617
|
-
// noop
|
|
7075
|
+
this.tab.init(Object.assign(Object.assign({}, params), { tabLocation: 'header' }));
|
|
6618
7076
|
}
|
|
6619
7077
|
layout(width, height) {
|
|
6620
7078
|
var _a, _b;
|
|
@@ -6622,6 +7080,7 @@ class DockviewPanelModel {
|
|
|
6622
7080
|
}
|
|
6623
7081
|
update(event) {
|
|
6624
7082
|
var _a, _b, _c, _d;
|
|
7083
|
+
this._updateEvent = event;
|
|
6625
7084
|
(_b = (_a = this.content).update) === null || _b === void 0 ? void 0 : _b.call(_a, event);
|
|
6626
7085
|
(_d = (_c = this.tab).update) === null || _d === void 0 ? void 0 : _d.call(_c, event);
|
|
6627
7086
|
}
|
|
@@ -7459,6 +7918,132 @@ class StrictEventsSequencing extends CompositeDisposable {
|
|
|
7459
7918
|
}
|
|
7460
7919
|
}
|
|
7461
7920
|
|
|
7921
|
+
class PopupService extends CompositeDisposable {
|
|
7922
|
+
constructor(root) {
|
|
7923
|
+
super();
|
|
7924
|
+
this.root = root;
|
|
7925
|
+
this._active = null;
|
|
7926
|
+
this._activeDisposable = new MutableDisposable();
|
|
7927
|
+
this._element = document.createElement('div');
|
|
7928
|
+
this._element.className = 'dv-popover-anchor';
|
|
7929
|
+
this._element.style.position = 'relative';
|
|
7930
|
+
this.root.prepend(this._element);
|
|
7931
|
+
this.addDisposables(exports.DockviewDisposable.from(() => {
|
|
7932
|
+
this.close();
|
|
7933
|
+
}), this._activeDisposable);
|
|
7934
|
+
}
|
|
7935
|
+
openPopover(element, position) {
|
|
7936
|
+
this.close();
|
|
7937
|
+
const wrapper = document.createElement('div');
|
|
7938
|
+
wrapper.style.position = 'absolute';
|
|
7939
|
+
wrapper.style.zIndex = '99';
|
|
7940
|
+
wrapper.appendChild(element);
|
|
7941
|
+
const anchorBox = this._element.getBoundingClientRect();
|
|
7942
|
+
const offsetX = anchorBox.left;
|
|
7943
|
+
const offsetY = anchorBox.top;
|
|
7944
|
+
wrapper.style.top = `${position.y - offsetY}px`;
|
|
7945
|
+
wrapper.style.left = `${position.x - offsetX}px`;
|
|
7946
|
+
this._element.appendChild(wrapper);
|
|
7947
|
+
this._active = wrapper;
|
|
7948
|
+
this._activeDisposable.value = new CompositeDisposable(addDisposableWindowListener(window, 'pointerdown', (event) => {
|
|
7949
|
+
var _a;
|
|
7950
|
+
const target = event.target;
|
|
7951
|
+
if (!(target instanceof HTMLElement)) {
|
|
7952
|
+
return;
|
|
7953
|
+
}
|
|
7954
|
+
let el = target;
|
|
7955
|
+
while (el && el !== wrapper) {
|
|
7956
|
+
el = (_a = el === null || el === void 0 ? void 0 : el.parentElement) !== null && _a !== void 0 ? _a : null;
|
|
7957
|
+
}
|
|
7958
|
+
if (el) {
|
|
7959
|
+
return; // clicked within popover
|
|
7960
|
+
}
|
|
7961
|
+
this.close();
|
|
7962
|
+
}));
|
|
7963
|
+
}
|
|
7964
|
+
close() {
|
|
7965
|
+
if (this._active) {
|
|
7966
|
+
this._active.remove();
|
|
7967
|
+
this._activeDisposable.dispose();
|
|
7968
|
+
this._active = null;
|
|
7969
|
+
}
|
|
7970
|
+
}
|
|
7971
|
+
}
|
|
7972
|
+
|
|
7973
|
+
class DropTargetAnchorContainer extends CompositeDisposable {
|
|
7974
|
+
get disabled() {
|
|
7975
|
+
return this._disabled;
|
|
7976
|
+
}
|
|
7977
|
+
set disabled(value) {
|
|
7978
|
+
var _a;
|
|
7979
|
+
if (this.disabled === value) {
|
|
7980
|
+
return;
|
|
7981
|
+
}
|
|
7982
|
+
this._disabled = value;
|
|
7983
|
+
if (value) {
|
|
7984
|
+
(_a = this.model) === null || _a === void 0 ? void 0 : _a.clear();
|
|
7985
|
+
}
|
|
7986
|
+
}
|
|
7987
|
+
get model() {
|
|
7988
|
+
if (this.disabled) {
|
|
7989
|
+
return undefined;
|
|
7990
|
+
}
|
|
7991
|
+
return {
|
|
7992
|
+
clear: () => {
|
|
7993
|
+
var _a;
|
|
7994
|
+
if (this._model) {
|
|
7995
|
+
(_a = this._model.root.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(this._model.root);
|
|
7996
|
+
}
|
|
7997
|
+
this._model = undefined;
|
|
7998
|
+
},
|
|
7999
|
+
exists: () => {
|
|
8000
|
+
return !!this._model;
|
|
8001
|
+
},
|
|
8002
|
+
getElements: (event, outline) => {
|
|
8003
|
+
const changed = this._outline !== outline;
|
|
8004
|
+
this._outline = outline;
|
|
8005
|
+
if (this._model) {
|
|
8006
|
+
this._model.changed = changed;
|
|
8007
|
+
return this._model;
|
|
8008
|
+
}
|
|
8009
|
+
const container = this.createContainer();
|
|
8010
|
+
const anchor = this.createAnchor();
|
|
8011
|
+
this._model = { root: container, overlay: anchor, changed };
|
|
8012
|
+
container.appendChild(anchor);
|
|
8013
|
+
this.element.appendChild(container);
|
|
8014
|
+
if ((event === null || event === void 0 ? void 0 : event.target) instanceof HTMLElement) {
|
|
8015
|
+
const targetBox = event.target.getBoundingClientRect();
|
|
8016
|
+
const box = this.element.getBoundingClientRect();
|
|
8017
|
+
anchor.style.left = `${targetBox.left - box.left}px`;
|
|
8018
|
+
anchor.style.top = `${targetBox.top - box.top}px`;
|
|
8019
|
+
}
|
|
8020
|
+
return this._model;
|
|
8021
|
+
},
|
|
8022
|
+
};
|
|
8023
|
+
}
|
|
8024
|
+
constructor(element, options) {
|
|
8025
|
+
super();
|
|
8026
|
+
this.element = element;
|
|
8027
|
+
this._disabled = false;
|
|
8028
|
+
this._disabled = options.disabled;
|
|
8029
|
+
this.addDisposables(exports.DockviewDisposable.from(() => {
|
|
8030
|
+
var _a;
|
|
8031
|
+
(_a = this.model) === null || _a === void 0 ? void 0 : _a.clear();
|
|
8032
|
+
}));
|
|
8033
|
+
}
|
|
8034
|
+
createContainer() {
|
|
8035
|
+
const el = document.createElement('div');
|
|
8036
|
+
el.className = 'dv-drop-target-container';
|
|
8037
|
+
return el;
|
|
8038
|
+
}
|
|
8039
|
+
createAnchor() {
|
|
8040
|
+
const el = document.createElement('div');
|
|
8041
|
+
el.className = 'dv-drop-target-anchor';
|
|
8042
|
+
el.style.visibility = 'hidden';
|
|
8043
|
+
return el;
|
|
8044
|
+
}
|
|
8045
|
+
}
|
|
8046
|
+
|
|
7462
8047
|
const DEFAULT_ROOT_OVERLAY_MODEL = {
|
|
7463
8048
|
activationSize: { type: 'pixels', value: 10 },
|
|
7464
8049
|
size: { type: 'pixels', value: 20 },
|
|
@@ -7504,14 +8089,11 @@ class DockviewComponent extends BaseGrid {
|
|
|
7504
8089
|
get api() {
|
|
7505
8090
|
return this._api;
|
|
7506
8091
|
}
|
|
7507
|
-
get gap() {
|
|
7508
|
-
return this.gridview.margin;
|
|
7509
|
-
}
|
|
7510
8092
|
get floatingGroups() {
|
|
7511
8093
|
return this._floatingGroups;
|
|
7512
8094
|
}
|
|
7513
8095
|
constructor(container, options) {
|
|
7514
|
-
var _a;
|
|
8096
|
+
var _a, _b, _c;
|
|
7515
8097
|
super(container, {
|
|
7516
8098
|
proportionalLayout: true,
|
|
7517
8099
|
orientation: exports.Orientation.HORIZONTAL,
|
|
@@ -7520,12 +8102,12 @@ class DockviewComponent extends BaseGrid {
|
|
|
7520
8102
|
: undefined,
|
|
7521
8103
|
disableAutoResizing: options.disableAutoResizing,
|
|
7522
8104
|
locked: options.locked,
|
|
7523
|
-
margin: options.gap,
|
|
8105
|
+
margin: (_b = (_a = options.theme) === null || _a === void 0 ? void 0 : _a.gap) !== null && _b !== void 0 ? _b : 0,
|
|
7524
8106
|
className: options.className,
|
|
7525
8107
|
});
|
|
7526
8108
|
this.nextGroupId = sequentialNumberGenerator();
|
|
7527
8109
|
this._deserializer = new DefaultDockviewDeserialzier(this);
|
|
7528
|
-
this.
|
|
8110
|
+
this._watermark = null;
|
|
7529
8111
|
this._onWillDragPanel = new Emitter();
|
|
7530
8112
|
this.onWillDragPanel = this._onWillDragPanel.event;
|
|
7531
8113
|
this._onWillDragGroup = new Emitter();
|
|
@@ -7556,16 +8138,22 @@ class DockviewComponent extends BaseGrid {
|
|
|
7556
8138
|
this.onDidRemoveGroup = this._onDidRemoveGroup.event;
|
|
7557
8139
|
this._onDidAddGroup = new Emitter();
|
|
7558
8140
|
this.onDidAddGroup = this._onDidAddGroup.event;
|
|
8141
|
+
this._onDidOptionsChange = new Emitter();
|
|
8142
|
+
this.onDidOptionsChange = this._onDidOptionsChange.event;
|
|
7559
8143
|
this._onDidActiveGroupChange = new Emitter();
|
|
7560
8144
|
this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;
|
|
7561
8145
|
this._moving = false;
|
|
8146
|
+
this.popupService = new PopupService(this.element);
|
|
8147
|
+
this.updateDropTargetModel(options);
|
|
8148
|
+
this._themeClassnames = new Classnames(this.element);
|
|
8149
|
+
this.rootDropTargetContainer = new DropTargetAnchorContainer(this.element, { disabled: true });
|
|
7562
8150
|
this.overlayRenderContainer = new OverlayRenderContainer(this.gridview.element, this);
|
|
7563
8151
|
toggleClass(this.gridview.element, 'dv-dockview', true);
|
|
7564
8152
|
toggleClass(this.element, 'dv-debug', !!options.debug);
|
|
7565
8153
|
if (options.debug) {
|
|
7566
8154
|
this.addDisposables(new StrictEventsSequencing(this));
|
|
7567
8155
|
}
|
|
7568
|
-
this.addDisposables(this.overlayRenderContainer, this._onWillDragPanel, this._onWillDragGroup, this._onWillShowOverlay, this._onDidActivePanelChange, this._onDidAddPanel, this._onDidRemovePanel, this._onDidLayoutFromJSON, this._onDidDrop, this._onWillDrop, this._onDidMovePanel, this._onDidAddGroup, this._onDidRemoveGroup, this._onDidActiveGroupChange, this._onUnhandledDragOverEvent, this._onDidMaximizedGroupChange, this.onDidViewVisibilityChangeMicroTaskQueue(() => {
|
|
8156
|
+
this.addDisposables(this.rootDropTargetContainer, this.overlayRenderContainer, this._onWillDragPanel, this._onWillDragGroup, this._onWillShowOverlay, this._onDidActivePanelChange, this._onDidAddPanel, this._onDidRemovePanel, this._onDidLayoutFromJSON, this._onDidDrop, this._onWillDrop, this._onDidMovePanel, this._onDidAddGroup, this._onDidRemoveGroup, this._onDidActiveGroupChange, this._onUnhandledDragOverEvent, this._onDidMaximizedGroupChange, this._onDidOptionsChange, this.onDidViewVisibilityChangeMicroTaskQueue(() => {
|
|
7569
8157
|
this.updateWatermark();
|
|
7570
8158
|
}), this.onDidAdd((event) => {
|
|
7571
8159
|
if (!this._moving) {
|
|
@@ -7599,7 +8187,9 @@ class DockviewComponent extends BaseGrid {
|
|
|
7599
8187
|
}
|
|
7600
8188
|
}));
|
|
7601
8189
|
this._options = options;
|
|
8190
|
+
this.updateTheme();
|
|
7602
8191
|
this._rootDropTarget = new Droptarget(this.element, {
|
|
8192
|
+
className: 'dv-drop-target-edge',
|
|
7603
8193
|
canDisplayOverlay: (event, position) => {
|
|
7604
8194
|
const data = getPanelData();
|
|
7605
8195
|
if (data) {
|
|
@@ -7626,7 +8216,8 @@ class DockviewComponent extends BaseGrid {
|
|
|
7626
8216
|
return firedEvent.isAccepted;
|
|
7627
8217
|
},
|
|
7628
8218
|
acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],
|
|
7629
|
-
overlayModel: (
|
|
8219
|
+
overlayModel: (_c = this.options.rootOverlayModel) !== null && _c !== void 0 ? _c : DEFAULT_ROOT_OVERLAY_MODEL,
|
|
8220
|
+
getOverrideTarget: () => { var _a; return (_a = this.rootDropTargetContainer) === null || _a === void 0 ? void 0 : _a.model; },
|
|
7630
8221
|
});
|
|
7631
8222
|
this.addDisposables(this._rootDropTarget, this._rootDropTarget.onWillShowOverlay((event) => {
|
|
7632
8223
|
if (this.gridview.length > 0 && event.position === 'center') {
|
|
@@ -7804,6 +8395,10 @@ class DockviewComponent extends BaseGrid {
|
|
|
7804
8395
|
popoutContainer.style.overflow = 'hidden';
|
|
7805
8396
|
popoutContainer.appendChild(gready);
|
|
7806
8397
|
popoutContainer.appendChild(group.element);
|
|
8398
|
+
const anchor = document.createElement('div');
|
|
8399
|
+
const dropTargetContainer = new DropTargetAnchorContainer(anchor, { disabled: this.rootDropTargetContainer.disabled });
|
|
8400
|
+
popoutContainer.appendChild(anchor);
|
|
8401
|
+
group.model.dropTargetContainer = dropTargetContainer;
|
|
7807
8402
|
group.model.location = {
|
|
7808
8403
|
type: 'popout',
|
|
7809
8404
|
getWindow: () => _window.window,
|
|
@@ -7870,6 +8465,8 @@ class DockviewComponent extends BaseGrid {
|
|
|
7870
8465
|
else if (this.getPanel(group.id)) {
|
|
7871
8466
|
group.model.renderContainer =
|
|
7872
8467
|
this.overlayRenderContainer;
|
|
8468
|
+
group.model.dropTargetContainer =
|
|
8469
|
+
this.rootDropTargetContainer;
|
|
7873
8470
|
returnedGroup = group;
|
|
7874
8471
|
const alreadyRemoved = !this._popoutGroups.find((p) => p.popoutGroup === group);
|
|
7875
8472
|
if (alreadyRemoved) {
|
|
@@ -8090,7 +8687,7 @@ class DockviewComponent extends BaseGrid {
|
|
|
8090
8687
|
}
|
|
8091
8688
|
}
|
|
8092
8689
|
updateOptions(options) {
|
|
8093
|
-
var _a, _b
|
|
8690
|
+
var _a, _b;
|
|
8094
8691
|
super.updateOptions(options);
|
|
8095
8692
|
if ('floatingGroupBounds' in options) {
|
|
8096
8693
|
for (const group of this._floatingGroups) {
|
|
@@ -8114,13 +8711,11 @@ class DockviewComponent extends BaseGrid {
|
|
|
8114
8711
|
group.overlay.setBounds();
|
|
8115
8712
|
}
|
|
8116
8713
|
}
|
|
8117
|
-
|
|
8118
|
-
this._rootDropTarget.setOverlayModel((_c = options.rootOverlayModel) !== null && _c !== void 0 ? _c : DEFAULT_ROOT_OVERLAY_MODEL);
|
|
8119
|
-
}
|
|
8120
|
-
if ('gap' in options) {
|
|
8121
|
-
this.gridview.margin = (_d = options.gap) !== null && _d !== void 0 ? _d : 0;
|
|
8122
|
-
}
|
|
8714
|
+
this.updateDropTargetModel(options);
|
|
8123
8715
|
this._options = Object.assign(Object.assign({}, this.options), options);
|
|
8716
|
+
if ('theme' in options) {
|
|
8717
|
+
this.updateTheme();
|
|
8718
|
+
}
|
|
8124
8719
|
this.layout(this.gridview.width, this.gridview.height, true);
|
|
8125
8720
|
}
|
|
8126
8721
|
layout(width, height, forceResize) {
|
|
@@ -8538,22 +9133,22 @@ class DockviewComponent extends BaseGrid {
|
|
|
8538
9133
|
updateWatermark() {
|
|
8539
9134
|
var _a, _b;
|
|
8540
9135
|
if (this.groups.filter((x) => x.api.location.type === 'grid' && x.api.isVisible).length === 0) {
|
|
8541
|
-
if (!this.
|
|
8542
|
-
this.
|
|
8543
|
-
this.
|
|
9136
|
+
if (!this._watermark) {
|
|
9137
|
+
this._watermark = this.createWatermarkComponent();
|
|
9138
|
+
this._watermark.init({
|
|
8544
9139
|
containerApi: new DockviewApi(this),
|
|
8545
9140
|
});
|
|
8546
9141
|
const watermarkContainer = document.createElement('div');
|
|
8547
9142
|
watermarkContainer.className = 'dv-watermark-container';
|
|
8548
9143
|
addTestId(watermarkContainer, 'watermark-component');
|
|
8549
|
-
watermarkContainer.appendChild(this.
|
|
9144
|
+
watermarkContainer.appendChild(this._watermark.element);
|
|
8550
9145
|
this.gridview.element.appendChild(watermarkContainer);
|
|
8551
9146
|
}
|
|
8552
9147
|
}
|
|
8553
|
-
else if (this.
|
|
8554
|
-
this.
|
|
8555
|
-
(_b = (_a = this.
|
|
8556
|
-
this.
|
|
9148
|
+
else if (this._watermark) {
|
|
9149
|
+
this._watermark.element.parentElement.remove();
|
|
9150
|
+
(_b = (_a = this._watermark).dispose) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
9151
|
+
this._watermark = null;
|
|
8557
9152
|
}
|
|
8558
9153
|
}
|
|
8559
9154
|
addGroup(options) {
|
|
@@ -9039,6 +9634,38 @@ class DockviewComponent extends BaseGrid {
|
|
|
9039
9634
|
? rootOrientation
|
|
9040
9635
|
: orthogonal(rootOrientation);
|
|
9041
9636
|
}
|
|
9637
|
+
updateDropTargetModel(options) {
|
|
9638
|
+
if ('dndEdges' in options) {
|
|
9639
|
+
this._rootDropTarget.disabled =
|
|
9640
|
+
typeof options.dndEdges === 'boolean' &&
|
|
9641
|
+
options.dndEdges === false;
|
|
9642
|
+
if (typeof options.dndEdges === 'object' &&
|
|
9643
|
+
options.dndEdges !== null) {
|
|
9644
|
+
this._rootDropTarget.setOverlayModel(options.dndEdges);
|
|
9645
|
+
}
|
|
9646
|
+
else {
|
|
9647
|
+
this._rootDropTarget.setOverlayModel(DEFAULT_ROOT_OVERLAY_MODEL);
|
|
9648
|
+
}
|
|
9649
|
+
}
|
|
9650
|
+
if ('rootOverlayModel' in options) {
|
|
9651
|
+
this.updateDropTargetModel({ dndEdges: options.dndEdges });
|
|
9652
|
+
}
|
|
9653
|
+
}
|
|
9654
|
+
updateTheme() {
|
|
9655
|
+
var _a, _b;
|
|
9656
|
+
const theme = (_a = this._options.theme) !== null && _a !== void 0 ? _a : themeAbyss;
|
|
9657
|
+
this._themeClassnames.setClassNames(theme.className);
|
|
9658
|
+
this.gridview.margin = (_b = theme.gap) !== null && _b !== void 0 ? _b : 0;
|
|
9659
|
+
switch (theme.dndOverlayMounting) {
|
|
9660
|
+
case 'absolute':
|
|
9661
|
+
this.rootDropTargetContainer.disabled = false;
|
|
9662
|
+
break;
|
|
9663
|
+
case 'relative':
|
|
9664
|
+
default:
|
|
9665
|
+
this.rootDropTargetContainer.disabled = true;
|
|
9666
|
+
break;
|
|
9667
|
+
}
|
|
9668
|
+
}
|
|
9042
9669
|
}
|
|
9043
9670
|
|
|
9044
9671
|
class GridviewComponent extends BaseGrid {
|
|
@@ -9562,6 +10189,7 @@ class SplitviewComponent extends Resizable {
|
|
|
9562
10189
|
for (const view of views) {
|
|
9563
10190
|
view.dispose();
|
|
9564
10191
|
}
|
|
10192
|
+
this.element.remove();
|
|
9565
10193
|
super.dispose();
|
|
9566
10194
|
}
|
|
9567
10195
|
}
|
|
@@ -9902,6 +10530,7 @@ class PaneviewComponent extends Resizable {
|
|
|
9902
10530
|
value.dispose();
|
|
9903
10531
|
}
|
|
9904
10532
|
this._viewDisposables.clear();
|
|
10533
|
+
this.element.remove();
|
|
9905
10534
|
this.paneview.dispose();
|
|
9906
10535
|
}
|
|
9907
10536
|
}
|
|
@@ -10219,6 +10848,7 @@ class ReactPanelHeaderPart {
|
|
|
10219
10848
|
params: parameters.params,
|
|
10220
10849
|
api: parameters.api,
|
|
10221
10850
|
containerApi: parameters.containerApi,
|
|
10851
|
+
tabLocation: parameters.tabLocation,
|
|
10222
10852
|
});
|
|
10223
10853
|
}
|
|
10224
10854
|
update(event) {
|
|
@@ -10524,7 +11154,7 @@ const DockviewReact = React.forwardRef((props, ref) => {
|
|
|
10524
11154
|
});
|
|
10525
11155
|
DockviewReact.displayName = 'DockviewComponent';
|
|
10526
11156
|
|
|
10527
|
-
const CloseButton = () => (React.createElement("svg", { height: "11", width: "11", viewBox: "0 0 28 28", "aria-hidden": 'false', focusable: false, className: "
|
|
11157
|
+
const CloseButton = () => (React.createElement("svg", { height: "11", width: "11", viewBox: "0 0 28 28", "aria-hidden": 'false', focusable: false, className: "dv-svg" },
|
|
10528
11158
|
React.createElement("path", { d: "M2.1 27.3L0 25.2L11.55 13.65L0 2.1L2.1 0L13.65 11.55L25.2 0L27.3 2.1L15.75 13.65L27.3 25.2L25.2 27.3L13.65 15.75L2.1 27.3Z" })));
|
|
10529
11159
|
|
|
10530
11160
|
var __rest = (undefined && undefined.__rest) || function (s, e) {
|
|
@@ -10551,7 +11181,7 @@ function useTitle(api) {
|
|
|
10551
11181
|
return title;
|
|
10552
11182
|
}
|
|
10553
11183
|
const DockviewDefaultTab = (_a) => {
|
|
10554
|
-
var { api, containerApi: _containerApi, params: _params, hideClose, closeActionOverride, onPointerDown, onPointerUp, onPointerLeave } = _a, rest = __rest(_a, ["api", "containerApi", "params", "hideClose", "closeActionOverride", "onPointerDown", "onPointerUp", "onPointerLeave"]);
|
|
11184
|
+
var { api, containerApi: _containerApi, params: _params, hideClose, closeActionOverride, onPointerDown, onPointerUp, onPointerLeave, tabLocation } = _a, rest = __rest(_a, ["api", "containerApi", "params", "hideClose", "closeActionOverride", "onPointerDown", "onPointerUp", "onPointerLeave", "tabLocation"]);
|
|
10555
11185
|
const title = useTitle(api);
|
|
10556
11186
|
const isMiddleMouseButton = React.useRef(false);
|
|
10557
11187
|
const onClose = React.useCallback((event) => {
|
|
@@ -10583,7 +11213,7 @@ const DockviewDefaultTab = (_a) => {
|
|
|
10583
11213
|
}, [onPointerLeave]);
|
|
10584
11214
|
return (React.createElement("div", Object.assign({ "data-testid": "dockview-dv-default-tab" }, rest, { onPointerDown: _onPointerDown, onPointerUp: _onPointerUp, onPointerLeave: _onPointerLeave, className: "dv-default-tab" }),
|
|
10585
11215
|
React.createElement("span", { className: "dv-default-tab-content" }, title),
|
|
10586
|
-
!hideClose && (React.createElement("div", { className: "dv-default-tab-action", onPointerDown: onBtnPointerDown, onClick: onClose },
|
|
11216
|
+
!hideClose && tabLocation !== 'headerOverflow' && (React.createElement("div", { className: "dv-default-tab-action", onPointerDown: onBtnPointerDown, onClick: onClose },
|
|
10587
11217
|
React.createElement(CloseButton, null)))));
|
|
10588
11218
|
};
|
|
10589
11219
|
|
|
@@ -10948,6 +11578,14 @@ exports.isPanelOptionsWithPanel = isPanelOptionsWithPanel;
|
|
|
10948
11578
|
exports.isReactComponent = isReactComponent;
|
|
10949
11579
|
exports.orthogonal = orthogonal;
|
|
10950
11580
|
exports.positionToDirection = positionToDirection;
|
|
11581
|
+
exports.themeAbyss = themeAbyss;
|
|
11582
|
+
exports.themeAbyssSpaced = themeAbyssSpaced;
|
|
11583
|
+
exports.themeDark = themeDark;
|
|
11584
|
+
exports.themeDracula = themeDracula;
|
|
11585
|
+
exports.themeLight = themeLight;
|
|
11586
|
+
exports.themeLightSpaced = themeLightSpaced;
|
|
11587
|
+
exports.themeReplit = themeReplit;
|
|
11588
|
+
exports.themeVisualStudio = themeVisualStudio;
|
|
10951
11589
|
exports.toTarget = toTarget;
|
|
10952
11590
|
exports.usePortalsLifecycle = usePortalsLifecycle;
|
|
10953
11591
|
//# sourceMappingURL=dockview-react.cjs.js.map
|