dockview-core 3.2.0 → 4.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/api/component.api.d.ts +0 -2
- package/dist/cjs/api/component.api.js +0 -10
- package/dist/cjs/dnd/abstractDragHandler.js +4 -2
- package/dist/cjs/dnd/dropTargetAnchorContainer.d.ts +16 -0
- package/dist/cjs/dnd/dropTargetAnchorContainer.js +105 -0
- package/dist/cjs/dnd/droptarget.d.ts +16 -0
- package/dist/cjs/dnd/droptarget.js +138 -14
- package/dist/cjs/dnd/ghost.d.ts +4 -1
- package/dist/cjs/dnd/ghost.js +3 -2
- package/dist/cjs/dnd/groupDragHandler.js +3 -1
- package/dist/cjs/dockview/components/panel/content.js +10 -13
- package/dist/cjs/dockview/components/popupService.d.ts +13 -0
- package/dist/cjs/dockview/components/popupService.js +76 -0
- package/dist/cjs/dockview/components/tab/tab.js +17 -7
- package/dist/cjs/dockview/components/titlebar/tabOverflowControl.d.ts +8 -0
- package/dist/cjs/dockview/components/titlebar/tabOverflowControl.js +20 -0
- package/dist/cjs/dockview/components/titlebar/tabs.d.ts +45 -0
- package/dist/cjs/dockview/components/titlebar/tabs.js +288 -0
- package/dist/cjs/dockview/components/titlebar/tabsContainer.d.ts +8 -9
- package/dist/cjs/dockview/components/titlebar/tabsContainer.js +108 -152
- package/dist/cjs/dockview/components/titlebar/voidContainer.js +2 -9
- package/dist/cjs/dockview/dockviewComponent.d.ts +10 -3
- package/dist/cjs/dockview/dockviewComponent.js +71 -30
- package/dist/cjs/dockview/dockviewGroupPanelModel.d.ts +4 -0
- package/dist/cjs/dockview/dockviewGroupPanelModel.js +31 -0
- package/dist/cjs/dockview/dockviewPanelModel.d.ts +5 -3
- package/dist/cjs/dockview/dockviewPanelModel.js +25 -4
- package/dist/cjs/dockview/framework.d.ts +4 -1
- package/dist/cjs/dockview/options.d.ts +8 -5
- package/dist/cjs/dockview/options.js +3 -1
- package/dist/cjs/dockview/theme.d.ts +31 -0
- package/dist/cjs/dockview/theme.js +42 -0
- package/dist/cjs/dockview/types.d.ts +5 -1
- package/dist/cjs/dom.d.ts +1 -0
- package/dist/cjs/dom.js +15 -1
- package/dist/cjs/gridview/baseComponentGridview.d.ts +3 -0
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/paneview/paneviewComponent.js +1 -0
- package/dist/cjs/scrollbar.d.ts +12 -0
- package/dist/cjs/scrollbar.js +106 -0
- package/dist/cjs/splitview/splitview.js +1 -0
- package/dist/cjs/splitview/splitviewComponent.js +1 -0
- package/dist/dockview-core.amd.js +930 -293
- package/dist/dockview-core.amd.js.map +1 -1
- package/dist/dockview-core.amd.min.js +2 -2
- package/dist/dockview-core.amd.min.js.map +1 -1
- package/dist/dockview-core.amd.min.noStyle.js +2 -2
- package/dist/dockview-core.amd.min.noStyle.js.map +1 -1
- package/dist/dockview-core.amd.noStyle.js +929 -292
- package/dist/dockview-core.amd.noStyle.js.map +1 -1
- package/dist/dockview-core.cjs.js +930 -293
- package/dist/dockview-core.cjs.js.map +1 -1
- package/dist/dockview-core.esm.js +923 -294
- package/dist/dockview-core.esm.js.map +1 -1
- package/dist/dockview-core.esm.min.js +2 -2
- package/dist/dockview-core.esm.min.js.map +1 -1
- package/dist/dockview-core.js +930 -293
- package/dist/dockview-core.js.map +1 -1
- package/dist/dockview-core.min.js +2 -2
- package/dist/dockview-core.min.js.map +1 -1
- package/dist/dockview-core.min.noStyle.js +2 -2
- package/dist/dockview-core.min.noStyle.js.map +1 -1
- package/dist/dockview-core.noStyle.js +929 -292
- package/dist/dockview-core.noStyle.js.map +1 -1
- package/dist/esm/api/component.api.d.ts +0 -2
- package/dist/esm/api/component.api.js +0 -6
- package/dist/esm/dnd/abstractDragHandler.js +4 -2
- package/dist/esm/dnd/dropTargetAnchorContainer.d.ts +16 -0
- package/dist/esm/dnd/dropTargetAnchorContainer.js +74 -0
- package/dist/esm/dnd/droptarget.d.ts +16 -0
- package/dist/esm/dnd/droptarget.js +134 -14
- package/dist/esm/dnd/ghost.d.ts +4 -1
- package/dist/esm/dnd/ghost.js +3 -2
- package/dist/esm/dnd/groupDragHandler.js +3 -1
- package/dist/esm/dockview/components/panel/content.js +10 -13
- package/dist/esm/dockview/components/popupService.d.ts +13 -0
- package/dist/esm/dockview/components/popupService.js +53 -0
- package/dist/esm/dockview/components/tab/tab.js +15 -7
- package/dist/esm/dockview/components/titlebar/tabOverflowControl.d.ts +8 -0
- package/dist/esm/dockview/components/titlebar/tabOverflowControl.js +16 -0
- package/dist/esm/dockview/components/titlebar/tabs.d.ts +45 -0
- package/dist/esm/dockview/components/titlebar/tabs.js +183 -0
- package/dist/esm/dockview/components/titlebar/tabsContainer.d.ts +8 -9
- package/dist/esm/dockview/components/titlebar/tabsContainer.js +133 -162
- package/dist/esm/dockview/components/titlebar/voidContainer.js +2 -9
- package/dist/esm/dockview/dockviewComponent.d.ts +10 -3
- package/dist/esm/dockview/dockviewComponent.js +69 -24
- package/dist/esm/dockview/dockviewGroupPanelModel.d.ts +4 -0
- package/dist/esm/dockview/dockviewGroupPanelModel.js +27 -0
- package/dist/esm/dockview/dockviewPanelModel.d.ts +5 -3
- package/dist/esm/dockview/dockviewPanelModel.js +14 -4
- package/dist/esm/dockview/framework.d.ts +4 -1
- package/dist/esm/dockview/options.d.ts +8 -5
- package/dist/esm/dockview/options.js +3 -1
- package/dist/esm/dockview/theme.d.ts +31 -0
- package/dist/esm/dockview/theme.js +39 -0
- package/dist/esm/dockview/types.d.ts +5 -1
- package/dist/esm/dom.d.ts +1 -0
- package/dist/esm/dom.js +13 -0
- package/dist/esm/gridview/baseComponentGridview.d.ts +3 -0
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/paneview/paneviewComponent.js +1 -0
- package/dist/esm/scrollbar.d.ts +12 -0
- package/dist/esm/scrollbar.js +80 -0
- package/dist/esm/splitview/splitview.js +1 -0
- package/dist/esm/splitview/splitviewComponent.js +1 -0
- package/dist/styles/dockview.css +423 -69
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* dockview-core
|
|
3
|
-
* @version
|
|
3
|
+
* @version 4.0.1
|
|
4
4
|
* @link https://github.com/mathuo/dockview
|
|
5
5
|
* @license MIT
|
|
6
6
|
*/
|
|
@@ -33,7 +33,7 @@ function styleInject(css, ref) {
|
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
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-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\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-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}\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-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-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-active-sash-transition-duration: 0.1s;\n --dv-active-sash-transition-delay: 0.5s;\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-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-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-active-sash-transition-duration: 0.1s;\n --dv-active-sash-transition-delay: 0.5s;\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, .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 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}";
|
|
36
|
+
var css_248z = ".dv-scrollable {\n position: relative;\n overflow: hidden;\n width: 100%;\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-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 padding: 0px;\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}";
|
|
37
37
|
styleInject(css_248z);
|
|
38
38
|
|
|
39
39
|
class TransferObject {
|
|
@@ -365,6 +365,20 @@ class MutableDisposable {
|
|
|
365
365
|
}
|
|
366
366
|
}
|
|
367
367
|
|
|
368
|
+
class OverflowObserver extends CompositeDisposable {
|
|
369
|
+
constructor(el) {
|
|
370
|
+
super();
|
|
371
|
+
this._onDidChange = new Emitter();
|
|
372
|
+
this.onDidChange = this._onDidChange.event;
|
|
373
|
+
this._value = null;
|
|
374
|
+
this.addDisposables(this._onDidChange, watchElementResize(el, (entry) => {
|
|
375
|
+
const hasScrollX = entry.target.scrollWidth > entry.target.clientWidth;
|
|
376
|
+
const hasScrollY = entry.target.scrollHeight > entry.target.clientHeight;
|
|
377
|
+
this._value = { hasScrollX, hasScrollY };
|
|
378
|
+
this._onDidChange.fire(this._value);
|
|
379
|
+
}));
|
|
380
|
+
}
|
|
381
|
+
}
|
|
368
382
|
function watchElementResize(element, cb) {
|
|
369
383
|
const observer = new ResizeObserver((entires) => {
|
|
370
384
|
/**
|
|
@@ -603,6 +617,19 @@ class Classnames {
|
|
|
603
617
|
}
|
|
604
618
|
}
|
|
605
619
|
}
|
|
620
|
+
function isChildEntirelyVisibleWithinParent(child, parent) {
|
|
621
|
+
//
|
|
622
|
+
const childPosition = getDomNodePagePosition(child);
|
|
623
|
+
const parentPosition = getDomNodePagePosition(parent);
|
|
624
|
+
if (childPosition.left < parentPosition.left) {
|
|
625
|
+
return false;
|
|
626
|
+
}
|
|
627
|
+
if (childPosition.left + childPosition.width >
|
|
628
|
+
parentPosition.left + parentPosition.width) {
|
|
629
|
+
return false;
|
|
630
|
+
}
|
|
631
|
+
return true;
|
|
632
|
+
}
|
|
606
633
|
|
|
607
634
|
function tail(arr) {
|
|
608
635
|
if (arr.length === 0) {
|
|
@@ -610,9 +637,6 @@ function tail(arr) {
|
|
|
610
637
|
}
|
|
611
638
|
return [arr.slice(0, arr.length - 1), arr[arr.length - 1]];
|
|
612
639
|
}
|
|
613
|
-
function last(arr) {
|
|
614
|
-
return arr.length > 0 ? arr[arr.length - 1] : undefined;
|
|
615
|
-
}
|
|
616
640
|
function sequenceEquals(arr1, arr2) {
|
|
617
641
|
if (arr1.length !== arr2.length) {
|
|
618
642
|
return false;
|
|
@@ -878,6 +902,7 @@ class Splitview {
|
|
|
878
902
|
}
|
|
879
903
|
set margin(value) {
|
|
880
904
|
this._margin = value;
|
|
905
|
+
toggleClass(this.element, 'dv-splitview-has-margin', value !== 0);
|
|
881
906
|
}
|
|
882
907
|
constructor(container, options) {
|
|
883
908
|
var _a, _b;
|
|
@@ -3449,9 +3474,6 @@ class DockviewApi {
|
|
|
3449
3474
|
get totalPanels() {
|
|
3450
3475
|
return this.component.totalPanels;
|
|
3451
3476
|
}
|
|
3452
|
-
get gap() {
|
|
3453
|
-
return this.component.gap;
|
|
3454
|
-
}
|
|
3455
3477
|
/**
|
|
3456
3478
|
* Invoked when the active group changes. May be undefined if no group is active.
|
|
3457
3479
|
*/
|
|
@@ -3682,9 +3704,6 @@ class DockviewApi {
|
|
|
3682
3704
|
addPopoutGroup(item, options) {
|
|
3683
3705
|
return this.component.addPopoutGroup(item, options);
|
|
3684
3706
|
}
|
|
3685
|
-
setGap(gap) {
|
|
3686
|
-
this.component.updateOptions({ gap });
|
|
3687
|
-
}
|
|
3688
3707
|
updateOptions(options) {
|
|
3689
3708
|
this.component.updateOptions(options);
|
|
3690
3709
|
}
|
|
@@ -3737,14 +3756,16 @@ class DragHandler extends CompositeDisposable {
|
|
|
3737
3756
|
* For example: in react-dnd if dataTransfer.types is not set then the dragStart event will be cancelled
|
|
3738
3757
|
* through .preventDefault(). Since this is applied globally to all drag events this would break dockviews
|
|
3739
3758
|
* dnd logic. You can see the code at
|
|
3740
|
-
|
|
3759
|
+
P * https://github.com/react-dnd/react-dnd/blob/main/packages/backend-html5/src/HTML5BackendImpl.ts#L542
|
|
3741
3760
|
*/
|
|
3742
3761
|
event.dataTransfer.setData('text/plain', '');
|
|
3743
3762
|
}
|
|
3744
3763
|
}
|
|
3745
3764
|
}), addDisposableListener(this.el, 'dragend', () => {
|
|
3746
3765
|
this.pointerEventsDisposable.dispose();
|
|
3747
|
-
|
|
3766
|
+
setTimeout(() => {
|
|
3767
|
+
this.dataDisposable.dispose(); // allow the data to be read by other handlers before disposing
|
|
3768
|
+
}, 0);
|
|
3748
3769
|
}));
|
|
3749
3770
|
}
|
|
3750
3771
|
}
|
|
@@ -3854,6 +3875,12 @@ const DEFAULT_SIZE = {
|
|
|
3854
3875
|
const SMALL_WIDTH_BOUNDARY = 100;
|
|
3855
3876
|
const SMALL_HEIGHT_BOUNDARY = 100;
|
|
3856
3877
|
class Droptarget extends CompositeDisposable {
|
|
3878
|
+
get disabled() {
|
|
3879
|
+
return this._disabled;
|
|
3880
|
+
}
|
|
3881
|
+
set disabled(value) {
|
|
3882
|
+
this._disabled = value;
|
|
3883
|
+
}
|
|
3857
3884
|
get state() {
|
|
3858
3885
|
return this._state;
|
|
3859
3886
|
}
|
|
@@ -3865,23 +3892,34 @@ class Droptarget extends CompositeDisposable {
|
|
|
3865
3892
|
this.onDrop = this._onDrop.event;
|
|
3866
3893
|
this._onWillShowOverlay = new Emitter();
|
|
3867
3894
|
this.onWillShowOverlay = this._onWillShowOverlay.event;
|
|
3895
|
+
this._disabled = false;
|
|
3868
3896
|
// use a set to take advantage of #<set>.has
|
|
3869
3897
|
this._acceptedTargetZonesSet = new Set(this.options.acceptedTargetZones);
|
|
3870
3898
|
this.dnd = new DragAndDropObserver(this.element, {
|
|
3871
|
-
onDragEnter: () =>
|
|
3899
|
+
onDragEnter: () => {
|
|
3900
|
+
var _a, _b, _c;
|
|
3901
|
+
(_c = (_b = (_a = this.options).getOverrideTarget) === null || _b === void 0 ? void 0 : _b.call(_a)) === null || _c === void 0 ? void 0 : _c.getElements();
|
|
3902
|
+
},
|
|
3872
3903
|
onDragOver: (e) => {
|
|
3904
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
3905
|
+
Droptarget.ACTUAL_TARGET = this;
|
|
3906
|
+
const overrideTraget = (_b = (_a = this.options).getOverrideTarget) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
3873
3907
|
if (this._acceptedTargetZonesSet.size === 0) {
|
|
3908
|
+
if (overrideTraget) {
|
|
3909
|
+
return;
|
|
3910
|
+
}
|
|
3874
3911
|
this.removeDropTarget();
|
|
3875
3912
|
return;
|
|
3876
3913
|
}
|
|
3877
|
-
const
|
|
3878
|
-
const
|
|
3914
|
+
const target = (_e = (_d = (_c = this.options).getOverlayOutline) === null || _d === void 0 ? void 0 : _d.call(_c)) !== null && _e !== void 0 ? _e : this.element;
|
|
3915
|
+
const width = target.offsetWidth;
|
|
3916
|
+
const height = target.offsetHeight;
|
|
3879
3917
|
if (width === 0 || height === 0) {
|
|
3880
3918
|
return; // avoid div!0
|
|
3881
3919
|
}
|
|
3882
3920
|
const rect = e.currentTarget.getBoundingClientRect();
|
|
3883
|
-
const x = e.clientX - rect.left;
|
|
3884
|
-
const y = e.clientY - rect.top;
|
|
3921
|
+
const x = ((_f = e.clientX) !== null && _f !== void 0 ? _f : 0) - rect.left;
|
|
3922
|
+
const y = ((_g = e.clientY) !== null && _g !== void 0 ? _g : 0) - rect.top;
|
|
3885
3923
|
const quadrant = this.calculateQuadrant(this._acceptedTargetZonesSet, x, y, width, height);
|
|
3886
3924
|
/**
|
|
3887
3925
|
* If the event has already been used by another DropTarget instance
|
|
@@ -3894,6 +3932,9 @@ class Droptarget extends CompositeDisposable {
|
|
|
3894
3932
|
return;
|
|
3895
3933
|
}
|
|
3896
3934
|
if (!this.options.canDisplayOverlay(e, quadrant)) {
|
|
3935
|
+
if (overrideTraget) {
|
|
3936
|
+
return;
|
|
3937
|
+
}
|
|
3897
3938
|
this.removeDropTarget();
|
|
3898
3939
|
return;
|
|
3899
3940
|
}
|
|
@@ -3911,29 +3952,57 @@ class Droptarget extends CompositeDisposable {
|
|
|
3911
3952
|
return;
|
|
3912
3953
|
}
|
|
3913
3954
|
this.markAsUsed(e);
|
|
3914
|
-
if (
|
|
3955
|
+
if (overrideTraget) ;
|
|
3956
|
+
else if (!this.targetElement) {
|
|
3915
3957
|
this.targetElement = document.createElement('div');
|
|
3916
3958
|
this.targetElement.className = 'dv-drop-target-dropzone';
|
|
3917
3959
|
this.overlayElement = document.createElement('div');
|
|
3918
3960
|
this.overlayElement.className = 'dv-drop-target-selection';
|
|
3919
3961
|
this._state = 'center';
|
|
3920
3962
|
this.targetElement.appendChild(this.overlayElement);
|
|
3921
|
-
|
|
3922
|
-
|
|
3963
|
+
target.classList.add('dv-drop-target');
|
|
3964
|
+
target.append(this.targetElement);
|
|
3965
|
+
// this.overlayElement.style.opacity = '0';
|
|
3966
|
+
// requestAnimationFrame(() => {
|
|
3967
|
+
// if (this.overlayElement) {
|
|
3968
|
+
// this.overlayElement.style.opacity = '';
|
|
3969
|
+
// }
|
|
3970
|
+
// });
|
|
3923
3971
|
}
|
|
3924
3972
|
this.toggleClasses(quadrant, width, height);
|
|
3925
3973
|
this._state = quadrant;
|
|
3926
3974
|
},
|
|
3927
3975
|
onDragLeave: () => {
|
|
3976
|
+
var _a, _b;
|
|
3977
|
+
const target = (_b = (_a = this.options).getOverrideTarget) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
3978
|
+
if (target) {
|
|
3979
|
+
return;
|
|
3980
|
+
}
|
|
3928
3981
|
this.removeDropTarget();
|
|
3929
3982
|
},
|
|
3930
|
-
onDragEnd: () => {
|
|
3983
|
+
onDragEnd: (e) => {
|
|
3984
|
+
var _a, _b;
|
|
3985
|
+
const target = (_b = (_a = this.options).getOverrideTarget) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
3986
|
+
if (target && Droptarget.ACTUAL_TARGET === this) {
|
|
3987
|
+
if (this._state) {
|
|
3988
|
+
// only stop the propagation of the event if we are dealing with it
|
|
3989
|
+
// which is only when the target has state
|
|
3990
|
+
e.stopPropagation();
|
|
3991
|
+
this._onDrop.fire({
|
|
3992
|
+
position: this._state,
|
|
3993
|
+
nativeEvent: e,
|
|
3994
|
+
});
|
|
3995
|
+
}
|
|
3996
|
+
}
|
|
3931
3997
|
this.removeDropTarget();
|
|
3998
|
+
target === null || target === void 0 ? void 0 : target.clear();
|
|
3932
3999
|
},
|
|
3933
4000
|
onDrop: (e) => {
|
|
4001
|
+
var _a, _b, _c;
|
|
3934
4002
|
e.preventDefault();
|
|
3935
4003
|
const state = this._state;
|
|
3936
4004
|
this.removeDropTarget();
|
|
4005
|
+
(_c = (_b = (_a = this.options).getOverrideTarget) === null || _b === void 0 ? void 0 : _b.call(_a)) === null || _c === void 0 ? void 0 : _c.clear();
|
|
3937
4006
|
if (state) {
|
|
3938
4007
|
// only stop the propagation of the event if we are dealing with it
|
|
3939
4008
|
// which is only when the target has state
|
|
@@ -3968,8 +4037,9 @@ class Droptarget extends CompositeDisposable {
|
|
|
3968
4037
|
return typeof value === 'boolean' && value;
|
|
3969
4038
|
}
|
|
3970
4039
|
toggleClasses(quadrant, width, height) {
|
|
3971
|
-
var _a, _b;
|
|
3972
|
-
|
|
4040
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
4041
|
+
const target = (_b = (_a = this.options).getOverrideTarget) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
4042
|
+
if (!target && !this.overlayElement) {
|
|
3973
4043
|
return;
|
|
3974
4044
|
}
|
|
3975
4045
|
const isSmallX = width < SMALL_WIDTH_BOUNDARY;
|
|
@@ -3983,7 +4053,7 @@ class Droptarget extends CompositeDisposable {
|
|
|
3983
4053
|
const topClass = !isSmallY && isTop;
|
|
3984
4054
|
const bottomClass = !isSmallY && isBottom;
|
|
3985
4055
|
let size = 1;
|
|
3986
|
-
const sizeOptions = (
|
|
4056
|
+
const sizeOptions = (_d = (_c = this.options.overlayModel) === null || _c === void 0 ? void 0 : _c.size) !== null && _d !== void 0 ? _d : DEFAULT_SIZE;
|
|
3987
4057
|
if (sizeOptions.type === 'percentage') {
|
|
3988
4058
|
size = clamp(sizeOptions.value, 0, 100) / 100;
|
|
3989
4059
|
}
|
|
@@ -3995,6 +4065,74 @@ class Droptarget extends CompositeDisposable {
|
|
|
3995
4065
|
size = clamp(0, sizeOptions.value, height) / height;
|
|
3996
4066
|
}
|
|
3997
4067
|
}
|
|
4068
|
+
if (target) {
|
|
4069
|
+
const outlineEl = (_g = (_f = (_e = this.options).getOverlayOutline) === null || _f === void 0 ? void 0 : _f.call(_e)) !== null && _g !== void 0 ? _g : this.element;
|
|
4070
|
+
const elBox = outlineEl.getBoundingClientRect();
|
|
4071
|
+
const ta = target.getElements(undefined, outlineEl);
|
|
4072
|
+
const el = ta.root;
|
|
4073
|
+
const overlay = ta.overlay;
|
|
4074
|
+
const bigbox = el.getBoundingClientRect();
|
|
4075
|
+
const rootTop = elBox.top - bigbox.top;
|
|
4076
|
+
const rootLeft = elBox.left - bigbox.left;
|
|
4077
|
+
const box = {
|
|
4078
|
+
top: rootTop,
|
|
4079
|
+
left: rootLeft,
|
|
4080
|
+
width: width,
|
|
4081
|
+
height: height,
|
|
4082
|
+
};
|
|
4083
|
+
if (rightClass) {
|
|
4084
|
+
box.left = rootLeft + width * (1 - size);
|
|
4085
|
+
box.width = width * size;
|
|
4086
|
+
}
|
|
4087
|
+
else if (leftClass) {
|
|
4088
|
+
box.width = width * size;
|
|
4089
|
+
}
|
|
4090
|
+
else if (topClass) {
|
|
4091
|
+
box.height = height * size;
|
|
4092
|
+
}
|
|
4093
|
+
else if (bottomClass) {
|
|
4094
|
+
box.top = rootTop + height * (1 - size);
|
|
4095
|
+
box.height = height * size;
|
|
4096
|
+
}
|
|
4097
|
+
if (isSmallX && isLeft) {
|
|
4098
|
+
box.width = 4;
|
|
4099
|
+
}
|
|
4100
|
+
if (isSmallX && isRight) {
|
|
4101
|
+
box.left = rootLeft + width - 4;
|
|
4102
|
+
box.width = 4;
|
|
4103
|
+
}
|
|
4104
|
+
const topPx = `${Math.round(box.top)}px`;
|
|
4105
|
+
const leftPx = `${Math.round(box.left)}px`;
|
|
4106
|
+
const widthPx = `${Math.round(box.width)}px`;
|
|
4107
|
+
const heightPx = `${Math.round(box.height)}px`;
|
|
4108
|
+
if (overlay.style.top === topPx &&
|
|
4109
|
+
overlay.style.left === leftPx &&
|
|
4110
|
+
overlay.style.width === widthPx &&
|
|
4111
|
+
overlay.style.height === heightPx) {
|
|
4112
|
+
return;
|
|
4113
|
+
}
|
|
4114
|
+
overlay.style.top = topPx;
|
|
4115
|
+
overlay.style.left = leftPx;
|
|
4116
|
+
overlay.style.width = widthPx;
|
|
4117
|
+
overlay.style.height = heightPx;
|
|
4118
|
+
overlay.style.visibility = 'visible';
|
|
4119
|
+
overlay.className = `dv-drop-target-anchor${this.options.className ? ` ${this.options.className}` : ''}`;
|
|
4120
|
+
toggleClass(overlay, 'dv-drop-target-left', isLeft);
|
|
4121
|
+
toggleClass(overlay, 'dv-drop-target-right', isRight);
|
|
4122
|
+
toggleClass(overlay, 'dv-drop-target-top', isTop);
|
|
4123
|
+
toggleClass(overlay, 'dv-drop-target-bottom', isBottom);
|
|
4124
|
+
toggleClass(overlay, 'dv-drop-target-center', quadrant === 'center');
|
|
4125
|
+
if (ta.changed) {
|
|
4126
|
+
toggleClass(overlay, 'dv-drop-target-anchor-container-changed', true);
|
|
4127
|
+
setTimeout(() => {
|
|
4128
|
+
toggleClass(overlay, 'dv-drop-target-anchor-container-changed', false);
|
|
4129
|
+
}, 10);
|
|
4130
|
+
}
|
|
4131
|
+
return;
|
|
4132
|
+
}
|
|
4133
|
+
if (!this.overlayElement) {
|
|
4134
|
+
return;
|
|
4135
|
+
}
|
|
3998
4136
|
const box = { top: '0px', left: '0px', width: '100%', height: '100%' };
|
|
3999
4137
|
/**
|
|
4000
4138
|
* You can also achieve the overlay placement using the transform CSS property
|
|
@@ -4051,12 +4189,13 @@ class Droptarget extends CompositeDisposable {
|
|
|
4051
4189
|
return calculateQuadrantAsPixels(overlayType, x, y, width, height, activationSizeOptions.value);
|
|
4052
4190
|
}
|
|
4053
4191
|
removeDropTarget() {
|
|
4192
|
+
var _a;
|
|
4054
4193
|
if (this.targetElement) {
|
|
4055
4194
|
this._state = undefined;
|
|
4056
|
-
|
|
4195
|
+
(_a = this.targetElement.parentElement) === null || _a === void 0 ? void 0 : _a.classList.remove('dv-drop-target');
|
|
4196
|
+
this.targetElement.remove();
|
|
4057
4197
|
this.targetElement = undefined;
|
|
4058
4198
|
this.overlayElement = undefined;
|
|
4059
|
-
this.element.classList.remove('dv-drop-target');
|
|
4060
4199
|
}
|
|
4061
4200
|
}
|
|
4062
4201
|
}
|
|
@@ -4641,7 +4780,15 @@ class ContentContainer extends CompositeDisposable {
|
|
|
4641
4780
|
this._element.className = 'dv-content-container';
|
|
4642
4781
|
this._element.tabIndex = -1;
|
|
4643
4782
|
this.addDisposables(this._onDidFocus, this._onDidBlur);
|
|
4783
|
+
const target = group.dropTargetContainer;
|
|
4644
4784
|
this.dropTarget = new Droptarget(this.element, {
|
|
4785
|
+
getOverlayOutline: () => {
|
|
4786
|
+
var _a;
|
|
4787
|
+
return ((_a = accessor.options.theme) === null || _a === void 0 ? void 0 : _a.dndPanelOverlay) === 'group'
|
|
4788
|
+
? this.element.parentElement
|
|
4789
|
+
: null;
|
|
4790
|
+
},
|
|
4791
|
+
className: 'dv-drop-target-content',
|
|
4645
4792
|
acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],
|
|
4646
4793
|
canDisplayOverlay: (event, position) => {
|
|
4647
4794
|
if (this.group.locked === 'no-drop-target' ||
|
|
@@ -4655,22 +4802,11 @@ class ContentContainer extends CompositeDisposable {
|
|
|
4655
4802
|
return false;
|
|
4656
4803
|
}
|
|
4657
4804
|
if (data && data.viewId === this.accessor.id) {
|
|
4658
|
-
|
|
4659
|
-
if (position === 'center') {
|
|
4660
|
-
// don't allow to drop on self for center position
|
|
4661
|
-
return false;
|
|
4662
|
-
}
|
|
4663
|
-
if (data.panelId === null) {
|
|
4664
|
-
// don't allow group move to drop anywhere on self
|
|
4665
|
-
return false;
|
|
4666
|
-
}
|
|
4667
|
-
}
|
|
4668
|
-
const groupHasOnePanelAndIsActiveDragElement = this.group.panels.length === 1 &&
|
|
4669
|
-
data.groupId === this.group.id;
|
|
4670
|
-
return !groupHasOnePanelAndIsActiveDragElement;
|
|
4805
|
+
return true;
|
|
4671
4806
|
}
|
|
4672
4807
|
return this.group.canDisplayOverlay(event, position, 'content');
|
|
4673
4808
|
},
|
|
4809
|
+
getOverrideTarget: target ? () => target.model : undefined,
|
|
4674
4810
|
});
|
|
4675
4811
|
this.addDisposables(this.dropTarget);
|
|
4676
4812
|
}
|
|
@@ -4745,6 +4881,18 @@ class ContentContainer extends CompositeDisposable {
|
|
|
4745
4881
|
}
|
|
4746
4882
|
}
|
|
4747
4883
|
|
|
4884
|
+
function addGhostImage(dataTransfer, ghostElement, options) {
|
|
4885
|
+
var _a, _b;
|
|
4886
|
+
// class dockview provides to force ghost image to be drawn on a different layer and prevent weird rendering issues
|
|
4887
|
+
addClasses(ghostElement, 'dv-dragged');
|
|
4888
|
+
document.body.appendChild(ghostElement);
|
|
4889
|
+
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);
|
|
4890
|
+
setTimeout(() => {
|
|
4891
|
+
removeClasses(ghostElement, 'dv-dragged');
|
|
4892
|
+
ghostElement.remove();
|
|
4893
|
+
}, 0);
|
|
4894
|
+
}
|
|
4895
|
+
|
|
4748
4896
|
class TabDragHandler extends DragHandler {
|
|
4749
4897
|
constructor(element, accessor, group, panel) {
|
|
4750
4898
|
super(element);
|
|
@@ -4785,25 +4933,32 @@ class Tab extends CompositeDisposable {
|
|
|
4785
4933
|
toggleClass(this.element, 'dv-inactive-tab', true);
|
|
4786
4934
|
const dragHandler = new TabDragHandler(this._element, this.accessor, this.group, this.panel);
|
|
4787
4935
|
this.dropTarget = new Droptarget(this._element, {
|
|
4788
|
-
acceptedTargetZones: ['
|
|
4936
|
+
acceptedTargetZones: ['left', 'right'],
|
|
4937
|
+
overlayModel: { activationSize: { value: 50, type: 'percentage' } },
|
|
4789
4938
|
canDisplayOverlay: (event, position) => {
|
|
4790
4939
|
if (this.group.locked) {
|
|
4791
4940
|
return false;
|
|
4792
4941
|
}
|
|
4793
4942
|
const data = getPanelData();
|
|
4794
4943
|
if (data && this.accessor.id === data.viewId) {
|
|
4795
|
-
|
|
4796
|
-
data.groupId === this.group.id) {
|
|
4797
|
-
// don't allow group move to drop on self
|
|
4798
|
-
return false;
|
|
4799
|
-
}
|
|
4800
|
-
return this.panel.id !== data.panelId;
|
|
4944
|
+
return true;
|
|
4801
4945
|
}
|
|
4802
4946
|
return this.group.model.canDisplayOverlay(event, position, 'tab');
|
|
4803
4947
|
},
|
|
4948
|
+
getOverrideTarget: () => { var _a; return (_a = group.model.dropTargetContainer) === null || _a === void 0 ? void 0 : _a.model; },
|
|
4804
4949
|
});
|
|
4805
4950
|
this.onWillShowOverlay = this.dropTarget.onWillShowOverlay;
|
|
4806
4951
|
this.addDisposables(this._onPointDown, this._onDropped, this._onDragStart, dragHandler.onDragStart((event) => {
|
|
4952
|
+
if (event.dataTransfer) {
|
|
4953
|
+
const style = getComputedStyle(this.element);
|
|
4954
|
+
const newNode = this.element.cloneNode(true);
|
|
4955
|
+
Array.from(style).forEach((key) => newNode.style.setProperty(key, style.getPropertyValue(key), style.getPropertyPriority(key)));
|
|
4956
|
+
newNode.style.position = 'absolute';
|
|
4957
|
+
addGhostImage(event.dataTransfer, newNode, {
|
|
4958
|
+
y: -10,
|
|
4959
|
+
x: 30,
|
|
4960
|
+
});
|
|
4961
|
+
}
|
|
4807
4962
|
this._onDragStart.fire(event);
|
|
4808
4963
|
}), dragHandler, addDisposableListener(this._element, 'pointerdown', (event) => {
|
|
4809
4964
|
this._onPointDown.fire(event);
|
|
@@ -4827,17 +4982,6 @@ class Tab extends CompositeDisposable {
|
|
|
4827
4982
|
}
|
|
4828
4983
|
}
|
|
4829
4984
|
|
|
4830
|
-
function addGhostImage(dataTransfer, ghostElement) {
|
|
4831
|
-
// class dockview provides to force ghost image to be drawn on a different layer and prevent weird rendering issues
|
|
4832
|
-
addClasses(ghostElement, 'dv-dragged');
|
|
4833
|
-
document.body.appendChild(ghostElement);
|
|
4834
|
-
dataTransfer.setDragImage(ghostElement, 0, 0);
|
|
4835
|
-
setTimeout(() => {
|
|
4836
|
-
removeClasses(ghostElement, 'dv-dragged');
|
|
4837
|
-
ghostElement.remove();
|
|
4838
|
-
}, 0);
|
|
4839
|
-
}
|
|
4840
|
-
|
|
4841
4985
|
class GroupDragHandler extends DragHandler {
|
|
4842
4986
|
constructor(element, accessor, group) {
|
|
4843
4987
|
super(element);
|
|
@@ -4877,8 +5021,10 @@ class GroupDragHandler extends DragHandler {
|
|
|
4877
5021
|
ghostElement.style.lineHeight = '20px';
|
|
4878
5022
|
ghostElement.style.borderRadius = '12px';
|
|
4879
5023
|
ghostElement.style.position = 'absolute';
|
|
5024
|
+
ghostElement.style.pointerEvents = 'none';
|
|
5025
|
+
ghostElement.style.top = '-9999px';
|
|
4880
5026
|
ghostElement.textContent = `Multiple Panels (${this.group.size})`;
|
|
4881
|
-
addGhostImage(dataTransfer, ghostElement);
|
|
5027
|
+
addGhostImage(dataTransfer, ghostElement, { y: -10, x: 30 });
|
|
4882
5028
|
}
|
|
4883
5029
|
return {
|
|
4884
5030
|
dispose: () => {
|
|
@@ -4910,19 +5056,13 @@ class VoidContainer extends CompositeDisposable {
|
|
|
4910
5056
|
this.dropTraget = new Droptarget(this._element, {
|
|
4911
5057
|
acceptedTargetZones: ['center'],
|
|
4912
5058
|
canDisplayOverlay: (event, position) => {
|
|
4913
|
-
var _a;
|
|
4914
5059
|
const data = getPanelData();
|
|
4915
5060
|
if (data && this.accessor.id === data.viewId) {
|
|
4916
|
-
|
|
4917
|
-
data.groupId === this.group.id) {
|
|
4918
|
-
// don't allow group move to drop on self
|
|
4919
|
-
return false;
|
|
4920
|
-
}
|
|
4921
|
-
// don't show the overlay if the tab being dragged is the last panel of this group
|
|
4922
|
-
return ((_a = last(this.group.panels)) === null || _a === void 0 ? void 0 : _a.id) !== data.panelId;
|
|
5061
|
+
return true;
|
|
4923
5062
|
}
|
|
4924
5063
|
return group.model.canDisplayOverlay(event, position, 'header_space');
|
|
4925
5064
|
},
|
|
5065
|
+
getOverrideTarget: () => { var _a; return (_a = group.model.dropTargetContainer) === null || _a === void 0 ? void 0 : _a.model; },
|
|
4926
5066
|
});
|
|
4927
5067
|
this.onWillShowOverlay = this.dropTraget.onWillShowOverlay;
|
|
4928
5068
|
this.addDisposables(handler, handler.onDragStart((event) => {
|
|
@@ -4933,88 +5073,338 @@ class VoidContainer extends CompositeDisposable {
|
|
|
4933
5073
|
}
|
|
4934
5074
|
}
|
|
4935
5075
|
|
|
4936
|
-
class
|
|
4937
|
-
get
|
|
4938
|
-
return this.
|
|
4939
|
-
}
|
|
4940
|
-
get size() {
|
|
4941
|
-
return this.tabs.length;
|
|
4942
|
-
}
|
|
4943
|
-
get hidden() {
|
|
4944
|
-
return this._hidden;
|
|
5076
|
+
class Scrollbar extends CompositeDisposable {
|
|
5077
|
+
get element() {
|
|
5078
|
+
return this._element;
|
|
4945
5079
|
}
|
|
4946
|
-
|
|
4947
|
-
|
|
4948
|
-
this.
|
|
5080
|
+
constructor(scrollableElement) {
|
|
5081
|
+
super();
|
|
5082
|
+
this.scrollableElement = scrollableElement;
|
|
5083
|
+
this._scrollLeft = 0;
|
|
5084
|
+
this._element = document.createElement('div');
|
|
5085
|
+
this._element.className = 'dv-scrollable';
|
|
5086
|
+
this._horizontalScrollbar = document.createElement('div');
|
|
5087
|
+
this._horizontalScrollbar.className = 'dv-scrollbar-horizontal';
|
|
5088
|
+
this.element.appendChild(scrollableElement);
|
|
5089
|
+
this.element.appendChild(this._horizontalScrollbar);
|
|
5090
|
+
this.addDisposables(addDisposableListener(this.element, 'wheel', (event) => {
|
|
5091
|
+
this._scrollLeft += event.deltaY * Scrollbar.MouseWheelSpeed;
|
|
5092
|
+
this.calculateScrollbarStyles();
|
|
5093
|
+
}), addDisposableListener(this._horizontalScrollbar, 'pointerdown', (event) => {
|
|
5094
|
+
event.preventDefault();
|
|
5095
|
+
toggleClass(this.element, 'dv-scrollable-scrolling', true);
|
|
5096
|
+
const originalClientX = event.clientX;
|
|
5097
|
+
const originalScrollLeft = this._scrollLeft;
|
|
5098
|
+
const onPointerMove = (event) => {
|
|
5099
|
+
const deltaX = event.clientX - originalClientX;
|
|
5100
|
+
const { clientWidth } = this.element;
|
|
5101
|
+
const { scrollWidth } = this.scrollableElement;
|
|
5102
|
+
const p = clientWidth / scrollWidth;
|
|
5103
|
+
this._scrollLeft = originalScrollLeft + deltaX / p;
|
|
5104
|
+
this.calculateScrollbarStyles();
|
|
5105
|
+
};
|
|
5106
|
+
const onEnd = () => {
|
|
5107
|
+
toggleClass(this.element, 'dv-scrollable-scrolling', false);
|
|
5108
|
+
document.removeEventListener('pointermove', onPointerMove);
|
|
5109
|
+
document.removeEventListener('pointerup', onEnd);
|
|
5110
|
+
document.removeEventListener('pointercancel', onEnd);
|
|
5111
|
+
};
|
|
5112
|
+
document.addEventListener('pointermove', onPointerMove);
|
|
5113
|
+
document.addEventListener('pointerup', onEnd);
|
|
5114
|
+
document.addEventListener('pointercancel', onEnd);
|
|
5115
|
+
}), addDisposableListener(this.element, 'scroll', () => {
|
|
5116
|
+
this.calculateScrollbarStyles();
|
|
5117
|
+
}), addDisposableListener(this.scrollableElement, 'scroll', () => {
|
|
5118
|
+
this._scrollLeft = this.scrollableElement.scrollLeft;
|
|
5119
|
+
this.calculateScrollbarStyles();
|
|
5120
|
+
}), watchElementResize(this.element, () => {
|
|
5121
|
+
toggleClass(this.element, 'dv-scrollable-resizing', true);
|
|
5122
|
+
if (this._animationTimer) {
|
|
5123
|
+
clearTimeout(this._animationTimer);
|
|
5124
|
+
}
|
|
5125
|
+
this._animationTimer = setTimeout(() => {
|
|
5126
|
+
clearTimeout(this._animationTimer);
|
|
5127
|
+
toggleClass(this.element, 'dv-scrollable-resizing', false);
|
|
5128
|
+
}, 500);
|
|
5129
|
+
this.calculateScrollbarStyles();
|
|
5130
|
+
}));
|
|
4949
5131
|
}
|
|
4950
|
-
|
|
4951
|
-
|
|
4952
|
-
|
|
5132
|
+
calculateScrollbarStyles() {
|
|
5133
|
+
const { clientWidth } = this.element;
|
|
5134
|
+
const { scrollWidth } = this.scrollableElement;
|
|
5135
|
+
const hasScrollbar = scrollWidth > clientWidth;
|
|
5136
|
+
if (hasScrollbar) {
|
|
5137
|
+
const px = clientWidth * (clientWidth / scrollWidth);
|
|
5138
|
+
this._horizontalScrollbar.style.width = `${px}px`;
|
|
5139
|
+
this._scrollLeft = clamp(this._scrollLeft, 0, this.scrollableElement.scrollWidth - clientWidth);
|
|
5140
|
+
this.scrollableElement.scrollLeft = this._scrollLeft;
|
|
5141
|
+
const percentageComplete = this._scrollLeft / (scrollWidth - clientWidth);
|
|
5142
|
+
this._horizontalScrollbar.style.left = `${(clientWidth - px) * percentageComplete}px`;
|
|
5143
|
+
}
|
|
5144
|
+
else {
|
|
5145
|
+
this._horizontalScrollbar.style.width = `0px`;
|
|
5146
|
+
this._horizontalScrollbar.style.left = `0px`;
|
|
5147
|
+
this._scrollLeft = 0;
|
|
4953
5148
|
}
|
|
4954
5149
|
}
|
|
4955
|
-
|
|
4956
|
-
|
|
5150
|
+
}
|
|
5151
|
+
Scrollbar.MouseWheelSpeed = 1;
|
|
5152
|
+
|
|
5153
|
+
class Tabs extends CompositeDisposable {
|
|
5154
|
+
get showTabsOverflowControl() {
|
|
5155
|
+
return this._showTabsOverflowControl;
|
|
4957
5156
|
}
|
|
4958
|
-
|
|
4959
|
-
if (this.
|
|
5157
|
+
set showTabsOverflowControl(value) {
|
|
5158
|
+
if (this._showTabsOverflowControl == value) {
|
|
4960
5159
|
return;
|
|
4961
5160
|
}
|
|
4962
|
-
|
|
4963
|
-
|
|
4964
|
-
|
|
4965
|
-
|
|
4966
|
-
|
|
4967
|
-
|
|
4968
|
-
this.
|
|
5161
|
+
this._showTabsOverflowControl = value;
|
|
5162
|
+
if (value) {
|
|
5163
|
+
const observer = new OverflowObserver(this._tabsList);
|
|
5164
|
+
this._observerDisposable.value = new CompositeDisposable(observer, observer.onDidChange((event) => {
|
|
5165
|
+
const hasOverflow = event.hasScrollX || event.hasScrollY;
|
|
5166
|
+
this.toggleDropdown({ reset: !hasOverflow });
|
|
5167
|
+
}), addDisposableListener(this._tabsList, 'scroll', () => {
|
|
5168
|
+
this.toggleDropdown({ reset: false });
|
|
5169
|
+
}));
|
|
4969
5170
|
}
|
|
4970
5171
|
}
|
|
4971
|
-
|
|
4972
|
-
|
|
4973
|
-
|
|
4974
|
-
|
|
4975
|
-
|
|
4976
|
-
|
|
4977
|
-
|
|
4978
|
-
|
|
4979
|
-
|
|
4980
|
-
|
|
4981
|
-
|
|
5172
|
+
get element() {
|
|
5173
|
+
return this._element;
|
|
5174
|
+
}
|
|
5175
|
+
get panels() {
|
|
5176
|
+
return this._tabs.map((_) => _.value.panel.id);
|
|
5177
|
+
}
|
|
5178
|
+
get size() {
|
|
5179
|
+
return this._tabs.length;
|
|
5180
|
+
}
|
|
5181
|
+
get tabs() {
|
|
5182
|
+
return this._tabs.map((_) => _.value);
|
|
5183
|
+
}
|
|
5184
|
+
constructor(group, accessor, options) {
|
|
5185
|
+
super();
|
|
5186
|
+
this.group = group;
|
|
5187
|
+
this.accessor = accessor;
|
|
5188
|
+
this._observerDisposable = new MutableDisposable();
|
|
5189
|
+
this._tabs = [];
|
|
5190
|
+
this.selectedIndex = -1;
|
|
5191
|
+
this._showTabsOverflowControl = false;
|
|
5192
|
+
this._onTabDragStart = new Emitter();
|
|
5193
|
+
this.onTabDragStart = this._onTabDragStart.event;
|
|
5194
|
+
this._onDrop = new Emitter();
|
|
5195
|
+
this.onDrop = this._onDrop.event;
|
|
5196
|
+
this._onWillShowOverlay = new Emitter();
|
|
5197
|
+
this.onWillShowOverlay = this._onWillShowOverlay.event;
|
|
5198
|
+
this._onOverflowTabsChange = new Emitter();
|
|
5199
|
+
this.onOverflowTabsChange = this._onOverflowTabsChange.event;
|
|
5200
|
+
this._tabsList = document.createElement('div');
|
|
5201
|
+
this._tabsList.className = 'dv-tabs-container dv-horizontal';
|
|
5202
|
+
this.showTabsOverflowControl = options.showTabsOverflowControl;
|
|
5203
|
+
const scrollbar = new Scrollbar(this._tabsList);
|
|
5204
|
+
this._element = scrollbar.element;
|
|
5205
|
+
this.addDisposables(this._onOverflowTabsChange, this._observerDisposable, scrollbar, this._onWillShowOverlay, this._onDrop, this._onTabDragStart, addDisposableListener(this.element, 'pointerdown', (event) => {
|
|
5206
|
+
if (event.defaultPrevented) {
|
|
5207
|
+
return;
|
|
5208
|
+
}
|
|
5209
|
+
const isLeftClick = event.button === 0;
|
|
5210
|
+
if (isLeftClick) {
|
|
5211
|
+
this.accessor.doSetGroupActive(this.group);
|
|
5212
|
+
}
|
|
5213
|
+
}), exports.DockviewDisposable.from(() => {
|
|
5214
|
+
for (const { value, disposable } of this._tabs) {
|
|
5215
|
+
disposable.dispose();
|
|
5216
|
+
value.dispose();
|
|
5217
|
+
}
|
|
5218
|
+
this._tabs = [];
|
|
5219
|
+
}));
|
|
5220
|
+
}
|
|
5221
|
+
indexOf(id) {
|
|
5222
|
+
return this._tabs.findIndex((tab) => tab.value.panel.id === id);
|
|
5223
|
+
}
|
|
5224
|
+
isActive(tab) {
|
|
5225
|
+
return (this.selectedIndex > -1 &&
|
|
5226
|
+
this._tabs[this.selectedIndex].value === tab);
|
|
5227
|
+
}
|
|
5228
|
+
setActivePanel(panel) {
|
|
5229
|
+
let runningWidth = 0;
|
|
5230
|
+
for (const tab of this._tabs) {
|
|
5231
|
+
const isActivePanel = panel.id === tab.value.panel.id;
|
|
5232
|
+
tab.value.setActive(isActivePanel);
|
|
5233
|
+
if (isActivePanel) {
|
|
5234
|
+
const element = tab.value.element;
|
|
5235
|
+
const parentElement = element.parentElement;
|
|
5236
|
+
if (runningWidth < parentElement.scrollLeft ||
|
|
5237
|
+
runningWidth + element.clientWidth >
|
|
5238
|
+
parentElement.scrollLeft + parentElement.clientWidth) {
|
|
5239
|
+
parentElement.scrollLeft = runningWidth;
|
|
5240
|
+
}
|
|
5241
|
+
}
|
|
5242
|
+
runningWidth += tab.value.element.clientWidth;
|
|
4982
5243
|
}
|
|
4983
5244
|
}
|
|
4984
|
-
|
|
4985
|
-
if (this.
|
|
5245
|
+
openPanel(panel, index = this._tabs.length) {
|
|
5246
|
+
if (this._tabs.find((tab) => tab.value.panel.id === panel.id)) {
|
|
4986
5247
|
return;
|
|
4987
5248
|
}
|
|
4988
|
-
|
|
4989
|
-
|
|
4990
|
-
|
|
5249
|
+
const tab = new Tab(panel, this.accessor, this.group);
|
|
5250
|
+
tab.setContent(panel.view.tab);
|
|
5251
|
+
const disposable = new CompositeDisposable(tab.onDragStart((event) => {
|
|
5252
|
+
this._onTabDragStart.fire({ nativeEvent: event, panel });
|
|
5253
|
+
}), tab.onPointerDown((event) => {
|
|
5254
|
+
if (event.defaultPrevented) {
|
|
5255
|
+
return;
|
|
5256
|
+
}
|
|
5257
|
+
const isFloatingGroupsEnabled = !this.accessor.options.disableFloatingGroups;
|
|
5258
|
+
const isFloatingWithOnePanel = this.group.api.location.type === 'floating' &&
|
|
5259
|
+
this.size === 1;
|
|
5260
|
+
if (isFloatingGroupsEnabled &&
|
|
5261
|
+
!isFloatingWithOnePanel &&
|
|
5262
|
+
event.shiftKey) {
|
|
5263
|
+
event.preventDefault();
|
|
5264
|
+
const panel = this.accessor.getGroupPanel(tab.panel.id);
|
|
5265
|
+
const { top, left } = tab.element.getBoundingClientRect();
|
|
5266
|
+
const { top: rootTop, left: rootLeft } = this.accessor.element.getBoundingClientRect();
|
|
5267
|
+
this.accessor.addFloatingGroup(panel, {
|
|
5268
|
+
x: left - rootLeft,
|
|
5269
|
+
y: top - rootTop,
|
|
5270
|
+
inDragMode: true,
|
|
5271
|
+
});
|
|
5272
|
+
return;
|
|
5273
|
+
}
|
|
5274
|
+
switch (event.button) {
|
|
5275
|
+
case 0: // left click or touch
|
|
5276
|
+
if (this.group.activePanel !== panel) {
|
|
5277
|
+
this.group.model.openPanel(panel);
|
|
5278
|
+
}
|
|
5279
|
+
break;
|
|
5280
|
+
}
|
|
5281
|
+
}), tab.onDrop((event) => {
|
|
5282
|
+
this._onDrop.fire({
|
|
5283
|
+
event: event.nativeEvent,
|
|
5284
|
+
index: this._tabs.findIndex((x) => x.value === tab),
|
|
5285
|
+
});
|
|
5286
|
+
}), tab.onWillShowOverlay((event) => {
|
|
5287
|
+
this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {
|
|
5288
|
+
kind: 'tab',
|
|
5289
|
+
panel: this.group.activePanel,
|
|
5290
|
+
api: this.accessor.api,
|
|
5291
|
+
group: this.group,
|
|
5292
|
+
getData: getPanelData,
|
|
5293
|
+
}));
|
|
5294
|
+
}));
|
|
5295
|
+
const value = { value: tab, disposable };
|
|
5296
|
+
this.addTab(value, index);
|
|
5297
|
+
}
|
|
5298
|
+
delete(id) {
|
|
5299
|
+
const index = this.indexOf(id);
|
|
5300
|
+
const tabToRemove = this._tabs.splice(index, 1)[0];
|
|
5301
|
+
const { value, disposable } = tabToRemove;
|
|
5302
|
+
disposable.dispose();
|
|
5303
|
+
value.dispose();
|
|
5304
|
+
value.element.remove();
|
|
5305
|
+
}
|
|
5306
|
+
addTab(tab, index = this._tabs.length) {
|
|
5307
|
+
if (index < 0 || index > this._tabs.length) {
|
|
5308
|
+
throw new Error('invalid location');
|
|
4991
5309
|
}
|
|
4992
|
-
|
|
4993
|
-
|
|
4994
|
-
this.
|
|
5310
|
+
this._tabsList.insertBefore(tab.value.element, this._tabsList.children[index]);
|
|
5311
|
+
this._tabs = [
|
|
5312
|
+
...this._tabs.slice(0, index),
|
|
5313
|
+
tab,
|
|
5314
|
+
...this._tabs.slice(index),
|
|
5315
|
+
];
|
|
5316
|
+
if (this.selectedIndex < 0) {
|
|
5317
|
+
this.selectedIndex = index;
|
|
4995
5318
|
}
|
|
4996
5319
|
}
|
|
4997
|
-
|
|
4998
|
-
|
|
5320
|
+
toggleDropdown(options) {
|
|
5321
|
+
const tabs = options.reset
|
|
5322
|
+
? []
|
|
5323
|
+
: this._tabs
|
|
5324
|
+
.filter((tab) => !isChildEntirelyVisibleWithinParent(tab.value.element, this._tabsList))
|
|
5325
|
+
.map((x) => x.value.panel.id);
|
|
5326
|
+
this._onOverflowTabsChange.fire({ tabs, reset: options.reset });
|
|
4999
5327
|
}
|
|
5000
|
-
|
|
5001
|
-
|
|
5002
|
-
|
|
5328
|
+
}
|
|
5329
|
+
|
|
5330
|
+
const createSvgElementFromPath = (params) => {
|
|
5331
|
+
const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
|
|
5332
|
+
svg.setAttributeNS(null, 'height', params.height);
|
|
5333
|
+
svg.setAttributeNS(null, 'width', params.width);
|
|
5334
|
+
svg.setAttributeNS(null, 'viewBox', params.viewbox);
|
|
5335
|
+
svg.setAttributeNS(null, 'aria-hidden', 'false');
|
|
5336
|
+
svg.setAttributeNS(null, 'focusable', 'false');
|
|
5337
|
+
svg.classList.add('dv-svg');
|
|
5338
|
+
const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');
|
|
5339
|
+
path.setAttributeNS(null, 'd', params.path);
|
|
5340
|
+
svg.appendChild(path);
|
|
5341
|
+
return svg;
|
|
5342
|
+
};
|
|
5343
|
+
const createCloseButton = () => createSvgElementFromPath({
|
|
5344
|
+
width: '11',
|
|
5345
|
+
height: '11',
|
|
5346
|
+
viewbox: '0 0 28 28',
|
|
5347
|
+
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',
|
|
5348
|
+
});
|
|
5349
|
+
const createExpandMoreButton = () => createSvgElementFromPath({
|
|
5350
|
+
width: '11',
|
|
5351
|
+
height: '11',
|
|
5352
|
+
viewbox: '0 0 24 15',
|
|
5353
|
+
path: 'M12 14.15L0 2.15L2.15 0L12 9.9L21.85 0.0499992L24 2.2L12 14.15Z',
|
|
5354
|
+
});
|
|
5355
|
+
const createChevronRightButton = () => createSvgElementFromPath({
|
|
5356
|
+
width: '11',
|
|
5357
|
+
height: '11',
|
|
5358
|
+
viewbox: '0 0 15 25',
|
|
5359
|
+
path: 'M2.15 24.1L0 21.95L9.9 12.05L0 2.15L2.15 0L14.2 12.05L2.15 24.1Z',
|
|
5360
|
+
});
|
|
5361
|
+
|
|
5362
|
+
function createDropdownElementHandle() {
|
|
5363
|
+
const el = document.createElement('div');
|
|
5364
|
+
el.className = 'dv-tabs-overflow-dropdown-default';
|
|
5365
|
+
const text = document.createElement('span');
|
|
5366
|
+
text.textContent = ``;
|
|
5367
|
+
const icon = createChevronRightButton();
|
|
5368
|
+
el.appendChild(icon);
|
|
5369
|
+
el.appendChild(text);
|
|
5370
|
+
return {
|
|
5371
|
+
element: el,
|
|
5372
|
+
update: (params) => {
|
|
5373
|
+
text.textContent = `${params.tabs}`;
|
|
5374
|
+
},
|
|
5375
|
+
};
|
|
5376
|
+
}
|
|
5377
|
+
|
|
5378
|
+
class TabsContainer extends CompositeDisposable {
|
|
5379
|
+
get onTabDragStart() {
|
|
5380
|
+
return this.tabs.onTabDragStart;
|
|
5003
5381
|
}
|
|
5004
|
-
|
|
5005
|
-
return this.tabs.
|
|
5382
|
+
get panels() {
|
|
5383
|
+
return this.tabs.panels;
|
|
5384
|
+
}
|
|
5385
|
+
get size() {
|
|
5386
|
+
return this.tabs.size;
|
|
5387
|
+
}
|
|
5388
|
+
get hidden() {
|
|
5389
|
+
return this._hidden;
|
|
5390
|
+
}
|
|
5391
|
+
set hidden(value) {
|
|
5392
|
+
this._hidden = value;
|
|
5393
|
+
this.element.style.display = value ? 'none' : '';
|
|
5394
|
+
}
|
|
5395
|
+
get element() {
|
|
5396
|
+
return this._element;
|
|
5006
5397
|
}
|
|
5007
5398
|
constructor(accessor, group) {
|
|
5008
5399
|
super();
|
|
5009
5400
|
this.accessor = accessor;
|
|
5010
5401
|
this.group = group;
|
|
5011
|
-
this.tabs = [];
|
|
5012
|
-
this.selectedIndex = -1;
|
|
5013
5402
|
this._hidden = false;
|
|
5403
|
+
this.dropdownPart = null;
|
|
5404
|
+
this._overflowTabs = [];
|
|
5405
|
+
this._dropdownDisposable = new MutableDisposable();
|
|
5014
5406
|
this._onDrop = new Emitter();
|
|
5015
5407
|
this.onDrop = this._onDrop.event;
|
|
5016
|
-
this._onTabDragStart = new Emitter();
|
|
5017
|
-
this.onTabDragStart = this._onTabDragStart.event;
|
|
5018
5408
|
this._onGroupDragStart = new Emitter();
|
|
5019
5409
|
this.onGroupDragStart = this._onGroupDragStart.event;
|
|
5020
5410
|
this._onWillShowOverlay = new Emitter();
|
|
@@ -5028,15 +5418,21 @@ class TabsContainer extends CompositeDisposable {
|
|
|
5028
5418
|
this.leftActionsContainer.className = 'dv-left-actions-container';
|
|
5029
5419
|
this.preActionsContainer = document.createElement('div');
|
|
5030
5420
|
this.preActionsContainer.className = 'dv-pre-actions-container';
|
|
5031
|
-
this.
|
|
5032
|
-
|
|
5421
|
+
this.tabs = new Tabs(group, accessor, {
|
|
5422
|
+
showTabsOverflowControl: !accessor.options.disableTabsOverflowList,
|
|
5423
|
+
});
|
|
5033
5424
|
this.voidContainer = new VoidContainer(this.accessor, this.group);
|
|
5034
5425
|
this._element.appendChild(this.preActionsContainer);
|
|
5035
|
-
this._element.appendChild(this.
|
|
5426
|
+
this._element.appendChild(this.tabs.element);
|
|
5036
5427
|
this._element.appendChild(this.leftActionsContainer);
|
|
5037
5428
|
this._element.appendChild(this.voidContainer.element);
|
|
5038
5429
|
this._element.appendChild(this.rightActionsContainer);
|
|
5039
|
-
this.addDisposables(
|
|
5430
|
+
this.addDisposables(accessor.onDidOptionsChange(() => {
|
|
5431
|
+
this.tabs.showTabsOverflowControl =
|
|
5432
|
+
!accessor.options.disableTabsOverflowList;
|
|
5433
|
+
}), this.tabs.onOverflowTabsChange((event) => {
|
|
5434
|
+
this.toggleDropdown(event);
|
|
5435
|
+
}), this.tabs, this._onWillShowOverlay, this._onDrop, this._onGroupDragStart, this.voidContainer, this.voidContainer.onDragStart((event) => {
|
|
5040
5436
|
this._onGroupDragStart.fire({
|
|
5041
5437
|
nativeEvent: event,
|
|
5042
5438
|
group: this.group,
|
|
@@ -5044,7 +5440,7 @@ class TabsContainer extends CompositeDisposable {
|
|
|
5044
5440
|
}), this.voidContainer.onDrop((event) => {
|
|
5045
5441
|
this._onDrop.fire({
|
|
5046
5442
|
event: event.nativeEvent,
|
|
5047
|
-
index: this.tabs.
|
|
5443
|
+
index: this.tabs.size,
|
|
5048
5444
|
});
|
|
5049
5445
|
}), this.voidContainer.onWillShowOverlay((event) => {
|
|
5050
5446
|
this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {
|
|
@@ -5054,133 +5450,149 @@ class TabsContainer extends CompositeDisposable {
|
|
|
5054
5450
|
group: this.group,
|
|
5055
5451
|
getData: getPanelData,
|
|
5056
5452
|
}));
|
|
5057
|
-
}), addDisposableListener(this.voidContainer.element, 'pointerdown', (event) => {
|
|
5058
|
-
const isFloatingGroupsEnabled = !this.accessor.options.disableFloatingGroups;
|
|
5059
|
-
if (isFloatingGroupsEnabled &&
|
|
5060
|
-
event.shiftKey &&
|
|
5061
|
-
this.group.api.location.type !== 'floating') {
|
|
5062
|
-
event.preventDefault();
|
|
5063
|
-
const { top, left } = this.element.getBoundingClientRect();
|
|
5064
|
-
const { top: rootTop, left: rootLeft } = this.accessor.element.getBoundingClientRect();
|
|
5065
|
-
this.accessor.addFloatingGroup(this.group, {
|
|
5066
|
-
x: left - rootLeft + 20,
|
|
5067
|
-
y: top - rootTop + 20,
|
|
5068
|
-
inDragMode: true,
|
|
5069
|
-
});
|
|
5070
|
-
}
|
|
5071
|
-
}), addDisposableListener(this.tabContainer, 'pointerdown', (event) => {
|
|
5072
|
-
if (event.defaultPrevented) {
|
|
5073
|
-
return;
|
|
5074
|
-
}
|
|
5075
|
-
const isLeftClick = event.button === 0;
|
|
5076
|
-
if (isLeftClick) {
|
|
5077
|
-
this.accessor.doSetGroupActive(this.group);
|
|
5078
|
-
}
|
|
5079
|
-
}));
|
|
5080
|
-
}
|
|
5081
|
-
setActive(_isGroupActive) {
|
|
5082
|
-
// noop
|
|
5083
|
-
}
|
|
5084
|
-
delete(id) {
|
|
5085
|
-
const index = this.tabs.findIndex((tab) => tab.value.panel.id === id);
|
|
5086
|
-
const tabToRemove = this.tabs.splice(index, 1)[0];
|
|
5087
|
-
if (!tabToRemove) {
|
|
5088
|
-
throw new Error(`dockview: Tab not found`);
|
|
5089
|
-
}
|
|
5090
|
-
const { value, disposable } = tabToRemove;
|
|
5091
|
-
disposable.dispose();
|
|
5092
|
-
value.dispose();
|
|
5093
|
-
value.element.remove();
|
|
5094
|
-
this.updateClassnames();
|
|
5095
|
-
}
|
|
5096
|
-
setActivePanel(panel) {
|
|
5097
|
-
this.tabs.forEach((tab) => {
|
|
5098
|
-
const isActivePanel = panel.id === tab.value.panel.id;
|
|
5099
|
-
tab.value.setActive(isActivePanel);
|
|
5100
|
-
});
|
|
5101
|
-
}
|
|
5102
|
-
openPanel(panel, index = this.tabs.length) {
|
|
5103
|
-
if (this.tabs.find((tab) => tab.value.panel.id === panel.id)) {
|
|
5104
|
-
return;
|
|
5105
|
-
}
|
|
5106
|
-
const tab = new Tab(panel, this.accessor, this.group);
|
|
5107
|
-
tab.setContent(panel.view.tab);
|
|
5108
|
-
const disposable = new CompositeDisposable(tab.onDragStart((event) => {
|
|
5109
|
-
this._onTabDragStart.fire({ nativeEvent: event, panel });
|
|
5110
|
-
}), tab.onPointerDown((event) => {
|
|
5453
|
+
}), addDisposableListener(this.voidContainer.element, 'pointerdown', (event) => {
|
|
5111
5454
|
if (event.defaultPrevented) {
|
|
5112
5455
|
return;
|
|
5113
5456
|
}
|
|
5114
5457
|
const isFloatingGroupsEnabled = !this.accessor.options.disableFloatingGroups;
|
|
5115
|
-
const isFloatingWithOnePanel = this.group.api.location.type === 'floating' &&
|
|
5116
|
-
this.size === 1;
|
|
5117
5458
|
if (isFloatingGroupsEnabled &&
|
|
5118
|
-
|
|
5119
|
-
|
|
5459
|
+
event.shiftKey &&
|
|
5460
|
+
this.group.api.location.type !== 'floating') {
|
|
5120
5461
|
event.preventDefault();
|
|
5121
|
-
const
|
|
5122
|
-
const { top, left } = tab.element.getBoundingClientRect();
|
|
5462
|
+
const { top, left } = this.element.getBoundingClientRect();
|
|
5123
5463
|
const { top: rootTop, left: rootLeft } = this.accessor.element.getBoundingClientRect();
|
|
5124
|
-
this.accessor.addFloatingGroup(
|
|
5125
|
-
x: left - rootLeft,
|
|
5126
|
-
y: top - rootTop,
|
|
5464
|
+
this.accessor.addFloatingGroup(this.group, {
|
|
5465
|
+
x: left - rootLeft + 20,
|
|
5466
|
+
y: top - rootTop + 20,
|
|
5127
5467
|
inDragMode: true,
|
|
5128
5468
|
});
|
|
5129
|
-
return;
|
|
5130
|
-
}
|
|
5131
|
-
switch (event.button) {
|
|
5132
|
-
case 0: // left click or touch
|
|
5133
|
-
if (this.group.activePanel !== panel) {
|
|
5134
|
-
this.group.model.openPanel(panel);
|
|
5135
|
-
}
|
|
5136
|
-
break;
|
|
5137
5469
|
}
|
|
5138
|
-
}), tab.onDrop((event) => {
|
|
5139
|
-
this._onDrop.fire({
|
|
5140
|
-
event: event.nativeEvent,
|
|
5141
|
-
index: this.tabs.findIndex((x) => x.value === tab),
|
|
5142
|
-
});
|
|
5143
|
-
}), tab.onWillShowOverlay((event) => {
|
|
5144
|
-
this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {
|
|
5145
|
-
kind: 'tab',
|
|
5146
|
-
panel: this.group.activePanel,
|
|
5147
|
-
api: this.accessor.api,
|
|
5148
|
-
group: this.group,
|
|
5149
|
-
getData: getPanelData,
|
|
5150
|
-
}));
|
|
5151
5470
|
}));
|
|
5152
|
-
const value = { value: tab, disposable };
|
|
5153
|
-
this.addTab(value, index);
|
|
5154
5471
|
}
|
|
5155
|
-
|
|
5156
|
-
this.
|
|
5472
|
+
show() {
|
|
5473
|
+
if (!this.hidden) {
|
|
5474
|
+
this.element.style.display = '';
|
|
5475
|
+
}
|
|
5157
5476
|
}
|
|
5158
|
-
|
|
5159
|
-
|
|
5160
|
-
|
|
5161
|
-
|
|
5162
|
-
|
|
5477
|
+
hide() {
|
|
5478
|
+
this._element.style.display = 'none';
|
|
5479
|
+
}
|
|
5480
|
+
setRightActionsElement(element) {
|
|
5481
|
+
if (this.rightActions === element) {
|
|
5482
|
+
return;
|
|
5483
|
+
}
|
|
5484
|
+
if (this.rightActions) {
|
|
5485
|
+
this.rightActions.remove();
|
|
5486
|
+
this.rightActions = undefined;
|
|
5487
|
+
}
|
|
5488
|
+
if (element) {
|
|
5489
|
+
this.rightActionsContainer.appendChild(element);
|
|
5490
|
+
this.rightActions = element;
|
|
5163
5491
|
}
|
|
5164
|
-
this.tabs = [];
|
|
5165
5492
|
}
|
|
5166
|
-
|
|
5167
|
-
if (
|
|
5168
|
-
|
|
5493
|
+
setLeftActionsElement(element) {
|
|
5494
|
+
if (this.leftActions === element) {
|
|
5495
|
+
return;
|
|
5169
5496
|
}
|
|
5170
|
-
|
|
5171
|
-
|
|
5172
|
-
|
|
5173
|
-
|
|
5174
|
-
|
|
5175
|
-
|
|
5176
|
-
|
|
5177
|
-
|
|
5497
|
+
if (this.leftActions) {
|
|
5498
|
+
this.leftActions.remove();
|
|
5499
|
+
this.leftActions = undefined;
|
|
5500
|
+
}
|
|
5501
|
+
if (element) {
|
|
5502
|
+
this.leftActionsContainer.appendChild(element);
|
|
5503
|
+
this.leftActions = element;
|
|
5504
|
+
}
|
|
5505
|
+
}
|
|
5506
|
+
setPrefixActionsElement(element) {
|
|
5507
|
+
if (this.preActions === element) {
|
|
5508
|
+
return;
|
|
5509
|
+
}
|
|
5510
|
+
if (this.preActions) {
|
|
5511
|
+
this.preActions.remove();
|
|
5512
|
+
this.preActions = undefined;
|
|
5513
|
+
}
|
|
5514
|
+
if (element) {
|
|
5515
|
+
this.preActionsContainer.appendChild(element);
|
|
5516
|
+
this.preActions = element;
|
|
5178
5517
|
}
|
|
5518
|
+
}
|
|
5519
|
+
isActive(tab) {
|
|
5520
|
+
return this.tabs.isActive(tab);
|
|
5521
|
+
}
|
|
5522
|
+
indexOf(id) {
|
|
5523
|
+
return this.tabs.indexOf(id);
|
|
5524
|
+
}
|
|
5525
|
+
setActive(_isGroupActive) {
|
|
5526
|
+
// noop
|
|
5527
|
+
}
|
|
5528
|
+
delete(id) {
|
|
5529
|
+
this.tabs.delete(id);
|
|
5530
|
+
this.updateClassnames();
|
|
5531
|
+
}
|
|
5532
|
+
setActivePanel(panel) {
|
|
5533
|
+
this.tabs.setActivePanel(panel);
|
|
5534
|
+
}
|
|
5535
|
+
openPanel(panel, index = this.tabs.size) {
|
|
5536
|
+
this.tabs.openPanel(panel, index);
|
|
5179
5537
|
this.updateClassnames();
|
|
5180
5538
|
}
|
|
5539
|
+
closePanel(panel) {
|
|
5540
|
+
this.delete(panel.id);
|
|
5541
|
+
}
|
|
5181
5542
|
updateClassnames() {
|
|
5182
5543
|
toggleClass(this._element, 'dv-single-tab', this.size === 1);
|
|
5183
5544
|
}
|
|
5545
|
+
toggleDropdown(options) {
|
|
5546
|
+
const tabs = options.reset ? [] : options.tabs;
|
|
5547
|
+
this._overflowTabs = tabs;
|
|
5548
|
+
if (this._overflowTabs.length > 0 && this.dropdownPart) {
|
|
5549
|
+
this.dropdownPart.update({ tabs: tabs.length });
|
|
5550
|
+
return;
|
|
5551
|
+
}
|
|
5552
|
+
if (this._overflowTabs.length === 0) {
|
|
5553
|
+
this._dropdownDisposable.dispose();
|
|
5554
|
+
return;
|
|
5555
|
+
}
|
|
5556
|
+
const root = document.createElement('div');
|
|
5557
|
+
root.className = 'dv-tabs-overflow-dropdown-root';
|
|
5558
|
+
const part = createDropdownElementHandle();
|
|
5559
|
+
part.update({ tabs: tabs.length });
|
|
5560
|
+
this.dropdownPart = part;
|
|
5561
|
+
root.appendChild(part.element);
|
|
5562
|
+
this.rightActionsContainer.prepend(root);
|
|
5563
|
+
this._dropdownDisposable.value = new CompositeDisposable(exports.DockviewDisposable.from(() => {
|
|
5564
|
+
var _a, _b;
|
|
5565
|
+
root.remove();
|
|
5566
|
+
(_b = (_a = this.dropdownPart) === null || _a === void 0 ? void 0 : _a.dispose) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
5567
|
+
this.dropdownPart = null;
|
|
5568
|
+
}), addDisposableListener(root, 'pointerdown', (event) => {
|
|
5569
|
+
event.preventDefault();
|
|
5570
|
+
}, { capture: true }), addDisposableListener(root, 'click', (event) => {
|
|
5571
|
+
const el = document.createElement('div');
|
|
5572
|
+
el.style.overflow = 'auto';
|
|
5573
|
+
el.className = 'dv-tabs-overflow-container';
|
|
5574
|
+
for (const tab of this.tabs.tabs.filter((tab) => this._overflowTabs.includes(tab.panel.id))) {
|
|
5575
|
+
const panelObject = this.group.panels.find((panel) => panel === tab.panel);
|
|
5576
|
+
const tabComponent = panelObject.view.createTabRenderer('headerOverflow');
|
|
5577
|
+
const child = tabComponent.element;
|
|
5578
|
+
const wrapper = document.createElement('div');
|
|
5579
|
+
toggleClass(wrapper, 'dv-tab', true);
|
|
5580
|
+
toggleClass(wrapper, 'dv-active-tab', panelObject.api.isActive);
|
|
5581
|
+
toggleClass(wrapper, 'dv-inactive-tab', !panelObject.api.isActive);
|
|
5582
|
+
wrapper.addEventListener('mousedown', () => {
|
|
5583
|
+
this.accessor.popupService.close();
|
|
5584
|
+
tab.element.scrollIntoView();
|
|
5585
|
+
tab.panel.api.setActive();
|
|
5586
|
+
});
|
|
5587
|
+
wrapper.appendChild(child);
|
|
5588
|
+
el.appendChild(wrapper);
|
|
5589
|
+
}
|
|
5590
|
+
this.accessor.popupService.openPopover(el, {
|
|
5591
|
+
x: event.clientX,
|
|
5592
|
+
y: event.clientY,
|
|
5593
|
+
});
|
|
5594
|
+
}));
|
|
5595
|
+
}
|
|
5184
5596
|
}
|
|
5185
5597
|
|
|
5186
5598
|
class DockviewUnhandledDragOverEvent extends AcceptableEvent {
|
|
@@ -5210,9 +5622,11 @@ const PROPERTY_KEYS_DOCKVIEW = (() => {
|
|
|
5210
5622
|
rootOverlayModel: undefined,
|
|
5211
5623
|
locked: undefined,
|
|
5212
5624
|
disableDnd: undefined,
|
|
5213
|
-
gap: undefined,
|
|
5214
5625
|
className: undefined,
|
|
5215
5626
|
noPanelsOverlay: undefined,
|
|
5627
|
+
dndEdges: undefined,
|
|
5628
|
+
theme: undefined,
|
|
5629
|
+
disableTabsOverflowList: undefined,
|
|
5216
5630
|
};
|
|
5217
5631
|
return Object.keys(properties);
|
|
5218
5632
|
})();
|
|
@@ -5391,6 +5805,7 @@ class DockviewGroupPanelModel extends CompositeDisposable {
|
|
|
5391
5805
|
this._location = { type: 'grid' };
|
|
5392
5806
|
this.mostRecentlyUsed = [];
|
|
5393
5807
|
this._overwriteRenderContainer = null;
|
|
5808
|
+
this._overwriteDropTargetContainer = null;
|
|
5394
5809
|
this._onDidChange = new Emitter();
|
|
5395
5810
|
this.onDidChange = this._onDidChange.event;
|
|
5396
5811
|
this._width = 0;
|
|
@@ -5468,6 +5883,13 @@ class DockviewGroupPanelModel extends CompositeDisposable {
|
|
|
5468
5883
|
var _a;
|
|
5469
5884
|
return ((_a = this._overwriteRenderContainer) !== null && _a !== void 0 ? _a : this.accessor.overlayRenderContainer);
|
|
5470
5885
|
}
|
|
5886
|
+
set dropTargetContainer(value) {
|
|
5887
|
+
this._overwriteDropTargetContainer = value;
|
|
5888
|
+
}
|
|
5889
|
+
get dropTargetContainer() {
|
|
5890
|
+
var _a;
|
|
5891
|
+
return ((_a = this._overwriteDropTargetContainer) !== null && _a !== void 0 ? _a : this.accessor.rootDropTargetContainer);
|
|
5892
|
+
}
|
|
5471
5893
|
initialize() {
|
|
5472
5894
|
if (this.options.panels) {
|
|
5473
5895
|
this.options.panels.forEach((panel) => {
|
|
@@ -5816,6 +6238,25 @@ class DockviewGroupPanelModel extends CompositeDisposable {
|
|
|
5816
6238
|
}
|
|
5817
6239
|
const data = getPanelData();
|
|
5818
6240
|
if (data && data.viewId === this.accessor.id) {
|
|
6241
|
+
if (type === 'content') {
|
|
6242
|
+
if (data.groupId === this.id) {
|
|
6243
|
+
// don't allow to drop on self for center position
|
|
6244
|
+
if (position === 'center') {
|
|
6245
|
+
return;
|
|
6246
|
+
}
|
|
6247
|
+
if (data.panelId === null) {
|
|
6248
|
+
// don't allow group move to drop anywhere on self
|
|
6249
|
+
return;
|
|
6250
|
+
}
|
|
6251
|
+
}
|
|
6252
|
+
}
|
|
6253
|
+
if (type === 'header') {
|
|
6254
|
+
if (data.groupId === this.id) {
|
|
6255
|
+
if (data.panelId === null) {
|
|
6256
|
+
return;
|
|
6257
|
+
}
|
|
6258
|
+
}
|
|
6259
|
+
}
|
|
5819
6260
|
if (data.panelId === null) {
|
|
5820
6261
|
// this is a group move dnd event
|
|
5821
6262
|
const { groupId } = data;
|
|
@@ -6244,6 +6685,46 @@ class DockviewGroupPanel extends GridviewPanel {
|
|
|
6244
6685
|
}
|
|
6245
6686
|
}
|
|
6246
6687
|
|
|
6688
|
+
const themeDark = {
|
|
6689
|
+
name: 'dark',
|
|
6690
|
+
className: 'dockview-theme-dark',
|
|
6691
|
+
};
|
|
6692
|
+
const themeLight = {
|
|
6693
|
+
name: 'light',
|
|
6694
|
+
className: 'dockview-theme-light',
|
|
6695
|
+
};
|
|
6696
|
+
const themeVisualStudio = {
|
|
6697
|
+
name: 'visualStudio',
|
|
6698
|
+
className: 'dockview-theme-vs',
|
|
6699
|
+
};
|
|
6700
|
+
const themeAbyss = {
|
|
6701
|
+
name: 'abyss',
|
|
6702
|
+
className: 'dockview-theme-abyss',
|
|
6703
|
+
};
|
|
6704
|
+
const themeDracula = {
|
|
6705
|
+
name: 'dracula',
|
|
6706
|
+
className: 'dockview-theme-dracula',
|
|
6707
|
+
};
|
|
6708
|
+
const themeReplit = {
|
|
6709
|
+
name: 'replit',
|
|
6710
|
+
className: 'dockview-theme-replit',
|
|
6711
|
+
gap: 10,
|
|
6712
|
+
};
|
|
6713
|
+
const themeAbyssSpaced = {
|
|
6714
|
+
name: 'abyssSpaced',
|
|
6715
|
+
className: 'dockview-theme-abyss-spaced',
|
|
6716
|
+
gap: 10,
|
|
6717
|
+
dndOverlayMounting: 'absolute',
|
|
6718
|
+
dndPanelOverlay: 'group',
|
|
6719
|
+
};
|
|
6720
|
+
const themeLightSpaced = {
|
|
6721
|
+
name: 'lightSpaced',
|
|
6722
|
+
className: 'dockview-theme-light-spaced',
|
|
6723
|
+
gap: 10,
|
|
6724
|
+
dndOverlayMounting: 'absolute',
|
|
6725
|
+
dndPanelOverlay: 'group',
|
|
6726
|
+
};
|
|
6727
|
+
|
|
6247
6728
|
class DockviewPanelApiImpl extends GridviewPanelApiImpl {
|
|
6248
6729
|
get location() {
|
|
6249
6730
|
return this.group.api.location;
|
|
@@ -6518,38 +6999,6 @@ class DockviewPanel extends CompositeDisposable {
|
|
|
6518
6999
|
}
|
|
6519
7000
|
}
|
|
6520
7001
|
|
|
6521
|
-
const createSvgElementFromPath = (params) => {
|
|
6522
|
-
const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
|
|
6523
|
-
svg.setAttributeNS(null, 'height', params.height);
|
|
6524
|
-
svg.setAttributeNS(null, 'width', params.width);
|
|
6525
|
-
svg.setAttributeNS(null, 'viewBox', params.viewbox);
|
|
6526
|
-
svg.setAttributeNS(null, 'aria-hidden', 'false');
|
|
6527
|
-
svg.setAttributeNS(null, 'focusable', 'false');
|
|
6528
|
-
svg.classList.add('dv-svg');
|
|
6529
|
-
const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');
|
|
6530
|
-
path.setAttributeNS(null, 'd', params.path);
|
|
6531
|
-
svg.appendChild(path);
|
|
6532
|
-
return svg;
|
|
6533
|
-
};
|
|
6534
|
-
const createCloseButton = () => createSvgElementFromPath({
|
|
6535
|
-
width: '11',
|
|
6536
|
-
height: '11',
|
|
6537
|
-
viewbox: '0 0 28 28',
|
|
6538
|
-
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',
|
|
6539
|
-
});
|
|
6540
|
-
const createExpandMoreButton = () => createSvgElementFromPath({
|
|
6541
|
-
width: '11',
|
|
6542
|
-
height: '11',
|
|
6543
|
-
viewbox: '0 0 24 15',
|
|
6544
|
-
path: 'M12 14.15L0 2.15L2.15 0L12 9.9L21.85 0.0499992L24 2.2L12 14.15Z',
|
|
6545
|
-
});
|
|
6546
|
-
const createChevronRightButton = () => createSvgElementFromPath({
|
|
6547
|
-
width: '11',
|
|
6548
|
-
height: '11',
|
|
6549
|
-
viewbox: '0 0 15 25',
|
|
6550
|
-
path: 'M2.15 24.1L0 21.95L9.9 12.05L0 2.15L2.15 0L14.2 12.05L2.15 24.1Z',
|
|
6551
|
-
});
|
|
6552
|
-
|
|
6553
7002
|
class DefaultTab extends CompositeDisposable {
|
|
6554
7003
|
get element() {
|
|
6555
7004
|
return this._element;
|
|
@@ -6606,12 +7055,21 @@ class DockviewPanelModel {
|
|
|
6606
7055
|
this._content = this.createContentComponent(this.id, contentComponent);
|
|
6607
7056
|
this._tab = this.createTabComponent(this.id, tabComponent);
|
|
6608
7057
|
}
|
|
7058
|
+
createTabRenderer(tabLocation) {
|
|
7059
|
+
var _a;
|
|
7060
|
+
const cmp = this.createTabComponent(this.id, this.tabComponent);
|
|
7061
|
+
if (this._params) {
|
|
7062
|
+
cmp.init(Object.assign(Object.assign({}, this._params), { tabLocation }));
|
|
7063
|
+
}
|
|
7064
|
+
if (this._updateEvent) {
|
|
7065
|
+
(_a = cmp.update) === null || _a === void 0 ? void 0 : _a.call(cmp, this._updateEvent);
|
|
7066
|
+
}
|
|
7067
|
+
return cmp;
|
|
7068
|
+
}
|
|
6609
7069
|
init(params) {
|
|
7070
|
+
this._params = params;
|
|
6610
7071
|
this.content.init(params);
|
|
6611
|
-
this.tab.init(params);
|
|
6612
|
-
}
|
|
6613
|
-
updateParentGroup(_group, _isPanelVisible) {
|
|
6614
|
-
// noop
|
|
7072
|
+
this.tab.init(Object.assign(Object.assign({}, params), { tabLocation: 'header' }));
|
|
6615
7073
|
}
|
|
6616
7074
|
layout(width, height) {
|
|
6617
7075
|
var _a, _b;
|
|
@@ -6619,6 +7077,7 @@ class DockviewPanelModel {
|
|
|
6619
7077
|
}
|
|
6620
7078
|
update(event) {
|
|
6621
7079
|
var _a, _b, _c, _d;
|
|
7080
|
+
this._updateEvent = event;
|
|
6622
7081
|
(_b = (_a = this.content).update) === null || _b === void 0 ? void 0 : _b.call(_a, event);
|
|
6623
7082
|
(_d = (_c = this.tab).update) === null || _d === void 0 ? void 0 : _d.call(_c, event);
|
|
6624
7083
|
}
|
|
@@ -7479,6 +7938,132 @@ class StrictEventsSequencing extends CompositeDisposable {
|
|
|
7479
7938
|
}
|
|
7480
7939
|
}
|
|
7481
7940
|
|
|
7941
|
+
class PopupService extends CompositeDisposable {
|
|
7942
|
+
constructor(root) {
|
|
7943
|
+
super();
|
|
7944
|
+
this.root = root;
|
|
7945
|
+
this._active = null;
|
|
7946
|
+
this._activeDisposable = new MutableDisposable();
|
|
7947
|
+
this._element = document.createElement('div');
|
|
7948
|
+
this._element.className = 'dv-popover-anchor';
|
|
7949
|
+
this._element.style.position = 'relative';
|
|
7950
|
+
this.root.prepend(this._element);
|
|
7951
|
+
this.addDisposables(exports.DockviewDisposable.from(() => {
|
|
7952
|
+
this.close();
|
|
7953
|
+
}), this._activeDisposable);
|
|
7954
|
+
}
|
|
7955
|
+
openPopover(element, position) {
|
|
7956
|
+
this.close();
|
|
7957
|
+
const wrapper = document.createElement('div');
|
|
7958
|
+
wrapper.style.position = 'absolute';
|
|
7959
|
+
wrapper.style.zIndex = '99';
|
|
7960
|
+
wrapper.appendChild(element);
|
|
7961
|
+
const anchorBox = this._element.getBoundingClientRect();
|
|
7962
|
+
const offsetX = anchorBox.left;
|
|
7963
|
+
const offsetY = anchorBox.top;
|
|
7964
|
+
wrapper.style.top = `${position.y - offsetY}px`;
|
|
7965
|
+
wrapper.style.left = `${position.x - offsetX}px`;
|
|
7966
|
+
this._element.appendChild(wrapper);
|
|
7967
|
+
this._active = wrapper;
|
|
7968
|
+
this._activeDisposable.value = new CompositeDisposable(addDisposableWindowListener(window, 'pointerdown', (event) => {
|
|
7969
|
+
var _a;
|
|
7970
|
+
const target = event.target;
|
|
7971
|
+
if (!(target instanceof HTMLElement)) {
|
|
7972
|
+
return;
|
|
7973
|
+
}
|
|
7974
|
+
let el = target;
|
|
7975
|
+
while (el && el !== wrapper) {
|
|
7976
|
+
el = (_a = el === null || el === void 0 ? void 0 : el.parentElement) !== null && _a !== void 0 ? _a : null;
|
|
7977
|
+
}
|
|
7978
|
+
if (el) {
|
|
7979
|
+
return; // clicked within popover
|
|
7980
|
+
}
|
|
7981
|
+
this.close();
|
|
7982
|
+
}));
|
|
7983
|
+
}
|
|
7984
|
+
close() {
|
|
7985
|
+
if (this._active) {
|
|
7986
|
+
this._active.remove();
|
|
7987
|
+
this._activeDisposable.dispose();
|
|
7988
|
+
this._active = null;
|
|
7989
|
+
}
|
|
7990
|
+
}
|
|
7991
|
+
}
|
|
7992
|
+
|
|
7993
|
+
class DropTargetAnchorContainer extends CompositeDisposable {
|
|
7994
|
+
get disabled() {
|
|
7995
|
+
return this._disabled;
|
|
7996
|
+
}
|
|
7997
|
+
set disabled(value) {
|
|
7998
|
+
var _a;
|
|
7999
|
+
if (this.disabled === value) {
|
|
8000
|
+
return;
|
|
8001
|
+
}
|
|
8002
|
+
this._disabled = value;
|
|
8003
|
+
if (value) {
|
|
8004
|
+
(_a = this.model) === null || _a === void 0 ? void 0 : _a.clear();
|
|
8005
|
+
}
|
|
8006
|
+
}
|
|
8007
|
+
get model() {
|
|
8008
|
+
if (this.disabled) {
|
|
8009
|
+
return undefined;
|
|
8010
|
+
}
|
|
8011
|
+
return {
|
|
8012
|
+
clear: () => {
|
|
8013
|
+
var _a;
|
|
8014
|
+
if (this._model) {
|
|
8015
|
+
(_a = this._model.root.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(this._model.root);
|
|
8016
|
+
}
|
|
8017
|
+
this._model = undefined;
|
|
8018
|
+
},
|
|
8019
|
+
exists: () => {
|
|
8020
|
+
return !!this._model;
|
|
8021
|
+
},
|
|
8022
|
+
getElements: (event, outline) => {
|
|
8023
|
+
const changed = this._outline !== outline;
|
|
8024
|
+
this._outline = outline;
|
|
8025
|
+
if (this._model) {
|
|
8026
|
+
this._model.changed = changed;
|
|
8027
|
+
return this._model;
|
|
8028
|
+
}
|
|
8029
|
+
const container = this.createContainer();
|
|
8030
|
+
const anchor = this.createAnchor();
|
|
8031
|
+
this._model = { root: container, overlay: anchor, changed };
|
|
8032
|
+
container.appendChild(anchor);
|
|
8033
|
+
this.element.appendChild(container);
|
|
8034
|
+
if ((event === null || event === void 0 ? void 0 : event.target) instanceof HTMLElement) {
|
|
8035
|
+
const targetBox = event.target.getBoundingClientRect();
|
|
8036
|
+
const box = this.element.getBoundingClientRect();
|
|
8037
|
+
anchor.style.left = `${targetBox.left - box.left}px`;
|
|
8038
|
+
anchor.style.top = `${targetBox.top - box.top}px`;
|
|
8039
|
+
}
|
|
8040
|
+
return this._model;
|
|
8041
|
+
},
|
|
8042
|
+
};
|
|
8043
|
+
}
|
|
8044
|
+
constructor(element, options) {
|
|
8045
|
+
super();
|
|
8046
|
+
this.element = element;
|
|
8047
|
+
this._disabled = false;
|
|
8048
|
+
this._disabled = options.disabled;
|
|
8049
|
+
this.addDisposables(exports.DockviewDisposable.from(() => {
|
|
8050
|
+
var _a;
|
|
8051
|
+
(_a = this.model) === null || _a === void 0 ? void 0 : _a.clear();
|
|
8052
|
+
}));
|
|
8053
|
+
}
|
|
8054
|
+
createContainer() {
|
|
8055
|
+
const el = document.createElement('div');
|
|
8056
|
+
el.className = 'dv-drop-target-container';
|
|
8057
|
+
return el;
|
|
8058
|
+
}
|
|
8059
|
+
createAnchor() {
|
|
8060
|
+
const el = document.createElement('div');
|
|
8061
|
+
el.className = 'dv-drop-target-anchor';
|
|
8062
|
+
el.style.visibility = 'hidden';
|
|
8063
|
+
return el;
|
|
8064
|
+
}
|
|
8065
|
+
}
|
|
8066
|
+
|
|
7482
8067
|
const DEFAULT_ROOT_OVERLAY_MODEL = {
|
|
7483
8068
|
activationSize: { type: 'pixels', value: 10 },
|
|
7484
8069
|
size: { type: 'pixels', value: 20 },
|
|
@@ -7524,14 +8109,11 @@ class DockviewComponent extends BaseGrid {
|
|
|
7524
8109
|
get api() {
|
|
7525
8110
|
return this._api;
|
|
7526
8111
|
}
|
|
7527
|
-
get gap() {
|
|
7528
|
-
return this.gridview.margin;
|
|
7529
|
-
}
|
|
7530
8112
|
get floatingGroups() {
|
|
7531
8113
|
return this._floatingGroups;
|
|
7532
8114
|
}
|
|
7533
8115
|
constructor(container, options) {
|
|
7534
|
-
var _a;
|
|
8116
|
+
var _a, _b, _c;
|
|
7535
8117
|
super(container, {
|
|
7536
8118
|
proportionalLayout: true,
|
|
7537
8119
|
orientation: exports.Orientation.HORIZONTAL,
|
|
@@ -7540,12 +8122,12 @@ class DockviewComponent extends BaseGrid {
|
|
|
7540
8122
|
: undefined,
|
|
7541
8123
|
disableAutoResizing: options.disableAutoResizing,
|
|
7542
8124
|
locked: options.locked,
|
|
7543
|
-
margin: options.gap,
|
|
8125
|
+
margin: (_b = (_a = options.theme) === null || _a === void 0 ? void 0 : _a.gap) !== null && _b !== void 0 ? _b : 0,
|
|
7544
8126
|
className: options.className,
|
|
7545
8127
|
});
|
|
7546
8128
|
this.nextGroupId = sequentialNumberGenerator();
|
|
7547
8129
|
this._deserializer = new DefaultDockviewDeserialzier(this);
|
|
7548
|
-
this.
|
|
8130
|
+
this._watermark = null;
|
|
7549
8131
|
this._onWillDragPanel = new Emitter();
|
|
7550
8132
|
this.onWillDragPanel = this._onWillDragPanel.event;
|
|
7551
8133
|
this._onWillDragGroup = new Emitter();
|
|
@@ -7576,16 +8158,22 @@ class DockviewComponent extends BaseGrid {
|
|
|
7576
8158
|
this.onDidRemoveGroup = this._onDidRemoveGroup.event;
|
|
7577
8159
|
this._onDidAddGroup = new Emitter();
|
|
7578
8160
|
this.onDidAddGroup = this._onDidAddGroup.event;
|
|
8161
|
+
this._onDidOptionsChange = new Emitter();
|
|
8162
|
+
this.onDidOptionsChange = this._onDidOptionsChange.event;
|
|
7579
8163
|
this._onDidActiveGroupChange = new Emitter();
|
|
7580
8164
|
this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;
|
|
7581
8165
|
this._moving = false;
|
|
8166
|
+
this.popupService = new PopupService(this.element);
|
|
8167
|
+
this.updateDropTargetModel(options);
|
|
8168
|
+
this._themeClassnames = new Classnames(this.element);
|
|
8169
|
+
this.rootDropTargetContainer = new DropTargetAnchorContainer(this.element, { disabled: true });
|
|
7582
8170
|
this.overlayRenderContainer = new OverlayRenderContainer(this.gridview.element, this);
|
|
7583
8171
|
toggleClass(this.gridview.element, 'dv-dockview', true);
|
|
7584
8172
|
toggleClass(this.element, 'dv-debug', !!options.debug);
|
|
7585
8173
|
if (options.debug) {
|
|
7586
8174
|
this.addDisposables(new StrictEventsSequencing(this));
|
|
7587
8175
|
}
|
|
7588
|
-
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(() => {
|
|
8176
|
+
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(() => {
|
|
7589
8177
|
this.updateWatermark();
|
|
7590
8178
|
}), this.onDidAdd((event) => {
|
|
7591
8179
|
if (!this._moving) {
|
|
@@ -7619,7 +8207,9 @@ class DockviewComponent extends BaseGrid {
|
|
|
7619
8207
|
}
|
|
7620
8208
|
}));
|
|
7621
8209
|
this._options = options;
|
|
8210
|
+
this.updateTheme();
|
|
7622
8211
|
this._rootDropTarget = new Droptarget(this.element, {
|
|
8212
|
+
className: 'dv-drop-target-edge',
|
|
7623
8213
|
canDisplayOverlay: (event, position) => {
|
|
7624
8214
|
const data = getPanelData();
|
|
7625
8215
|
if (data) {
|
|
@@ -7646,7 +8236,8 @@ class DockviewComponent extends BaseGrid {
|
|
|
7646
8236
|
return firedEvent.isAccepted;
|
|
7647
8237
|
},
|
|
7648
8238
|
acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],
|
|
7649
|
-
overlayModel: (
|
|
8239
|
+
overlayModel: (_c = this.options.rootOverlayModel) !== null && _c !== void 0 ? _c : DEFAULT_ROOT_OVERLAY_MODEL,
|
|
8240
|
+
getOverrideTarget: () => { var _a; return (_a = this.rootDropTargetContainer) === null || _a === void 0 ? void 0 : _a.model; },
|
|
7650
8241
|
});
|
|
7651
8242
|
this.addDisposables(this._rootDropTarget, this._rootDropTarget.onWillShowOverlay((event) => {
|
|
7652
8243
|
if (this.gridview.length > 0 && event.position === 'center') {
|
|
@@ -7824,6 +8415,10 @@ class DockviewComponent extends BaseGrid {
|
|
|
7824
8415
|
popoutContainer.style.overflow = 'hidden';
|
|
7825
8416
|
popoutContainer.appendChild(gready);
|
|
7826
8417
|
popoutContainer.appendChild(group.element);
|
|
8418
|
+
const anchor = document.createElement('div');
|
|
8419
|
+
const dropTargetContainer = new DropTargetAnchorContainer(anchor, { disabled: this.rootDropTargetContainer.disabled });
|
|
8420
|
+
popoutContainer.appendChild(anchor);
|
|
8421
|
+
group.model.dropTargetContainer = dropTargetContainer;
|
|
7827
8422
|
group.model.location = {
|
|
7828
8423
|
type: 'popout',
|
|
7829
8424
|
getWindow: () => _window.window,
|
|
@@ -7890,6 +8485,8 @@ class DockviewComponent extends BaseGrid {
|
|
|
7890
8485
|
else if (this.getPanel(group.id)) {
|
|
7891
8486
|
group.model.renderContainer =
|
|
7892
8487
|
this.overlayRenderContainer;
|
|
8488
|
+
group.model.dropTargetContainer =
|
|
8489
|
+
this.rootDropTargetContainer;
|
|
7893
8490
|
returnedGroup = group;
|
|
7894
8491
|
const alreadyRemoved = !this._popoutGroups.find((p) => p.popoutGroup === group);
|
|
7895
8492
|
if (alreadyRemoved) {
|
|
@@ -8110,7 +8707,7 @@ class DockviewComponent extends BaseGrid {
|
|
|
8110
8707
|
}
|
|
8111
8708
|
}
|
|
8112
8709
|
updateOptions(options) {
|
|
8113
|
-
var _a, _b
|
|
8710
|
+
var _a, _b;
|
|
8114
8711
|
super.updateOptions(options);
|
|
8115
8712
|
if ('floatingGroupBounds' in options) {
|
|
8116
8713
|
for (const group of this._floatingGroups) {
|
|
@@ -8134,13 +8731,11 @@ class DockviewComponent extends BaseGrid {
|
|
|
8134
8731
|
group.overlay.setBounds();
|
|
8135
8732
|
}
|
|
8136
8733
|
}
|
|
8137
|
-
|
|
8138
|
-
this._rootDropTarget.setOverlayModel((_c = options.rootOverlayModel) !== null && _c !== void 0 ? _c : DEFAULT_ROOT_OVERLAY_MODEL);
|
|
8139
|
-
}
|
|
8140
|
-
if ('gap' in options) {
|
|
8141
|
-
this.gridview.margin = (_d = options.gap) !== null && _d !== void 0 ? _d : 0;
|
|
8142
|
-
}
|
|
8734
|
+
this.updateDropTargetModel(options);
|
|
8143
8735
|
this._options = Object.assign(Object.assign({}, this.options), options);
|
|
8736
|
+
if ('theme' in options) {
|
|
8737
|
+
this.updateTheme();
|
|
8738
|
+
}
|
|
8144
8739
|
this.layout(this.gridview.width, this.gridview.height, true);
|
|
8145
8740
|
}
|
|
8146
8741
|
layout(width, height, forceResize) {
|
|
@@ -8558,22 +9153,22 @@ class DockviewComponent extends BaseGrid {
|
|
|
8558
9153
|
updateWatermark() {
|
|
8559
9154
|
var _a, _b;
|
|
8560
9155
|
if (this.groups.filter((x) => x.api.location.type === 'grid' && x.api.isVisible).length === 0) {
|
|
8561
|
-
if (!this.
|
|
8562
|
-
this.
|
|
8563
|
-
this.
|
|
9156
|
+
if (!this._watermark) {
|
|
9157
|
+
this._watermark = this.createWatermarkComponent();
|
|
9158
|
+
this._watermark.init({
|
|
8564
9159
|
containerApi: new DockviewApi(this),
|
|
8565
9160
|
});
|
|
8566
9161
|
const watermarkContainer = document.createElement('div');
|
|
8567
9162
|
watermarkContainer.className = 'dv-watermark-container';
|
|
8568
9163
|
addTestId(watermarkContainer, 'watermark-component');
|
|
8569
|
-
watermarkContainer.appendChild(this.
|
|
9164
|
+
watermarkContainer.appendChild(this._watermark.element);
|
|
8570
9165
|
this.gridview.element.appendChild(watermarkContainer);
|
|
8571
9166
|
}
|
|
8572
9167
|
}
|
|
8573
|
-
else if (this.
|
|
8574
|
-
this.
|
|
8575
|
-
(_b = (_a = this.
|
|
8576
|
-
this.
|
|
9168
|
+
else if (this._watermark) {
|
|
9169
|
+
this._watermark.element.parentElement.remove();
|
|
9170
|
+
(_b = (_a = this._watermark).dispose) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
9171
|
+
this._watermark = null;
|
|
8577
9172
|
}
|
|
8578
9173
|
}
|
|
8579
9174
|
addGroup(options) {
|
|
@@ -9059,6 +9654,38 @@ class DockviewComponent extends BaseGrid {
|
|
|
9059
9654
|
? rootOrientation
|
|
9060
9655
|
: orthogonal(rootOrientation);
|
|
9061
9656
|
}
|
|
9657
|
+
updateDropTargetModel(options) {
|
|
9658
|
+
if ('dndEdges' in options) {
|
|
9659
|
+
this._rootDropTarget.disabled =
|
|
9660
|
+
typeof options.dndEdges === 'boolean' &&
|
|
9661
|
+
options.dndEdges === false;
|
|
9662
|
+
if (typeof options.dndEdges === 'object' &&
|
|
9663
|
+
options.dndEdges !== null) {
|
|
9664
|
+
this._rootDropTarget.setOverlayModel(options.dndEdges);
|
|
9665
|
+
}
|
|
9666
|
+
else {
|
|
9667
|
+
this._rootDropTarget.setOverlayModel(DEFAULT_ROOT_OVERLAY_MODEL);
|
|
9668
|
+
}
|
|
9669
|
+
}
|
|
9670
|
+
if ('rootOverlayModel' in options) {
|
|
9671
|
+
this.updateDropTargetModel({ dndEdges: options.dndEdges });
|
|
9672
|
+
}
|
|
9673
|
+
}
|
|
9674
|
+
updateTheme() {
|
|
9675
|
+
var _a, _b;
|
|
9676
|
+
const theme = (_a = this._options.theme) !== null && _a !== void 0 ? _a : themeAbyss;
|
|
9677
|
+
this._themeClassnames.setClassNames(theme.className);
|
|
9678
|
+
this.gridview.margin = (_b = theme.gap) !== null && _b !== void 0 ? _b : 0;
|
|
9679
|
+
switch (theme.dndOverlayMounting) {
|
|
9680
|
+
case 'absolute':
|
|
9681
|
+
this.rootDropTargetContainer.disabled = false;
|
|
9682
|
+
break;
|
|
9683
|
+
case 'relative':
|
|
9684
|
+
default:
|
|
9685
|
+
this.rootDropTargetContainer.disabled = true;
|
|
9686
|
+
break;
|
|
9687
|
+
}
|
|
9688
|
+
}
|
|
9062
9689
|
}
|
|
9063
9690
|
|
|
9064
9691
|
class GridviewComponent extends BaseGrid {
|
|
@@ -9582,6 +10209,7 @@ class SplitviewComponent extends Resizable {
|
|
|
9582
10209
|
for (const view of views) {
|
|
9583
10210
|
view.dispose();
|
|
9584
10211
|
}
|
|
10212
|
+
this.element.remove();
|
|
9585
10213
|
super.dispose();
|
|
9586
10214
|
}
|
|
9587
10215
|
}
|
|
@@ -9922,6 +10550,7 @@ class PaneviewComponent extends Resizable {
|
|
|
9922
10550
|
value.dispose();
|
|
9923
10551
|
}
|
|
9924
10552
|
this._viewDisposables.clear();
|
|
10553
|
+
this.element.remove();
|
|
9925
10554
|
this.paneview.dispose();
|
|
9926
10555
|
}
|
|
9927
10556
|
}
|
|
@@ -10105,5 +10734,13 @@ exports.isPanelOptionsWithGroup = isPanelOptionsWithGroup;
|
|
|
10105
10734
|
exports.isPanelOptionsWithPanel = isPanelOptionsWithPanel;
|
|
10106
10735
|
exports.orthogonal = orthogonal;
|
|
10107
10736
|
exports.positionToDirection = positionToDirection;
|
|
10737
|
+
exports.themeAbyss = themeAbyss;
|
|
10738
|
+
exports.themeAbyssSpaced = themeAbyssSpaced;
|
|
10739
|
+
exports.themeDark = themeDark;
|
|
10740
|
+
exports.themeDracula = themeDracula;
|
|
10741
|
+
exports.themeLight = themeLight;
|
|
10742
|
+
exports.themeLightSpaced = themeLightSpaced;
|
|
10743
|
+
exports.themeReplit = themeReplit;
|
|
10744
|
+
exports.themeVisualStudio = themeVisualStudio;
|
|
10108
10745
|
exports.toTarget = toTarget;
|
|
10109
10746
|
//# sourceMappingURL=dockview-core.cjs.js.map
|