dockview-core 1.8.5 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -11
- package/dist/cjs/api/component.api.d.ts +12 -0
- package/dist/cjs/api/component.api.d.ts.map +1 -1
- package/dist/cjs/api/component.api.js +22 -0
- package/dist/cjs/api/component.api.js.map +1 -1
- package/dist/cjs/api/dockviewGroupPanelApi.d.ts +15 -8
- package/dist/cjs/api/dockviewGroupPanelApi.d.ts.map +1 -1
- package/dist/cjs/api/dockviewGroupPanelApi.js +39 -9
- package/dist/cjs/api/dockviewGroupPanelApi.js.map +1 -1
- package/dist/cjs/api/dockviewPanelApi.d.ts +19 -2
- package/dist/cjs/api/dockviewPanelApi.d.ts.map +1 -1
- package/dist/cjs/api/dockviewPanelApi.js +23 -3
- package/dist/cjs/api/dockviewPanelApi.js.map +1 -1
- package/dist/cjs/api/gridviewPanelApi.js.map +1 -1
- package/dist/cjs/api/panelApi.js.map +1 -1
- package/dist/cjs/api/paneviewPanelApi.js.map +1 -1
- package/dist/cjs/api/splitviewPanelApi.js.map +1 -1
- package/dist/cjs/array.js.map +1 -1
- package/dist/cjs/constants.d.ts +6 -0
- package/dist/cjs/constants.d.ts.map +1 -0
- package/dist/cjs/constants.js +6 -0
- package/dist/cjs/constants.js.map +1 -0
- package/dist/cjs/dnd/abstractDragHandler.js.map +1 -1
- package/dist/cjs/dnd/dataTransfer.js.map +1 -1
- package/dist/cjs/dnd/dnd.d.ts +5 -0
- package/dist/cjs/dnd/dnd.d.ts.map +1 -1
- package/dist/cjs/dnd/dnd.js +28 -13
- package/dist/cjs/dnd/dnd.js.map +1 -1
- package/dist/cjs/dnd/droptarget.d.ts +2 -0
- package/dist/cjs/dnd/droptarget.d.ts.map +1 -1
- package/dist/cjs/dnd/droptarget.js +3 -2
- package/dist/cjs/dnd/droptarget.js.map +1 -1
- package/dist/cjs/dnd/groupDragHandler.js +1 -1
- package/dist/cjs/dnd/groupDragHandler.js.map +1 -1
- package/dist/cjs/dnd/overlay.d.ts +4 -17
- package/dist/cjs/dnd/overlay.d.ts.map +1 -1
- package/dist/cjs/dnd/overlay.js.map +1 -1
- package/dist/cjs/dockview/components/panel/content.d.ts +14 -1
- package/dist/cjs/dockview/components/panel/content.d.ts.map +1 -1
- package/dist/cjs/dockview/components/panel/content.js +85 -26
- package/dist/cjs/dockview/components/panel/content.js.map +1 -1
- package/dist/cjs/dockview/components/tab/defaultTab.js.map +1 -1
- package/dist/cjs/dockview/components/tab/tab.js.map +1 -1
- package/dist/cjs/dockview/components/titlebar/tabsContainer.js +2 -2
- package/dist/cjs/dockview/components/titlebar/tabsContainer.js.map +1 -1
- package/dist/cjs/dockview/components/titlebar/voidContainer.js.map +1 -1
- package/dist/cjs/dockview/components/watermark/watermark.js.map +1 -1
- package/dist/cjs/dockview/deserializer.d.ts +2 -2
- package/dist/cjs/dockview/deserializer.d.ts.map +1 -1
- package/dist/cjs/dockview/deserializer.js +6 -4
- package/dist/cjs/dockview/deserializer.js.map +1 -1
- package/dist/cjs/dockview/dockviewComponent.d.ts +21 -9
- package/dist/cjs/dockview/dockviewComponent.d.ts.map +1 -1
- package/dist/cjs/dockview/dockviewComponent.js +287 -103
- package/dist/cjs/dockview/dockviewComponent.js.map +1 -1
- package/dist/cjs/dockview/dockviewFloatingGroupPanel.js.map +1 -1
- package/dist/cjs/dockview/dockviewGroupPanel.d.ts.map +1 -1
- package/dist/cjs/dockview/dockviewGroupPanel.js +4 -2
- package/dist/cjs/dockview/dockviewGroupPanel.js.map +1 -1
- package/dist/cjs/dockview/dockviewGroupPanelModel.d.ts +5 -4
- package/dist/cjs/dockview/dockviewGroupPanelModel.d.ts.map +1 -1
- package/dist/cjs/dockview/dockviewGroupPanelModel.js +37 -43
- package/dist/cjs/dockview/dockviewGroupPanelModel.js.map +1 -1
- package/dist/cjs/dockview/dockviewPanel.d.ts +8 -1
- package/dist/cjs/dockview/dockviewPanel.d.ts.map +1 -1
- package/dist/cjs/dockview/dockviewPanel.js +23 -1
- package/dist/cjs/dockview/dockviewPanel.js.map +1 -1
- package/dist/cjs/dockview/dockviewPanelModel.js.map +1 -1
- package/dist/cjs/dockview/dockviewPopoutGroupPanel.d.ts +16 -0
- package/dist/cjs/dockview/dockviewPopoutGroupPanel.d.ts.map +1 -0
- package/dist/cjs/dockview/dockviewPopoutGroupPanel.js +50 -0
- package/dist/cjs/dockview/dockviewPopoutGroupPanel.js.map +1 -0
- package/dist/cjs/dockview/options.d.ts +5 -0
- package/dist/cjs/dockview/options.d.ts.map +1 -1
- package/dist/cjs/dockview/options.js.map +1 -1
- package/dist/cjs/dockview/types.d.ts +2 -0
- package/dist/cjs/dockview/types.d.ts.map +1 -1
- package/dist/cjs/dockview/types.js.map +1 -1
- package/dist/cjs/dom.d.ts +12 -0
- package/dist/cjs/dom.d.ts.map +1 -1
- package/dist/cjs/dom.js +80 -1
- package/dist/cjs/dom.js.map +1 -1
- package/dist/cjs/events.js.map +1 -1
- package/dist/cjs/gridview/baseComponentGridview.d.ts +10 -0
- package/dist/cjs/gridview/baseComponentGridview.d.ts.map +1 -1
- package/dist/cjs/gridview/baseComponentGridview.js +19 -0
- package/dist/cjs/gridview/baseComponentGridview.js.map +1 -1
- package/dist/cjs/gridview/basePanelView.js.map +1 -1
- package/dist/cjs/gridview/branchNode.d.ts +2 -0
- package/dist/cjs/gridview/branchNode.d.ts.map +1 -1
- package/dist/cjs/gridview/branchNode.js +37 -10
- package/dist/cjs/gridview/branchNode.js.map +1 -1
- package/dist/cjs/gridview/gridview.d.ts +10 -3
- package/dist/cjs/gridview/gridview.d.ts.map +1 -1
- package/dist/cjs/gridview/gridview.js +80 -0
- package/dist/cjs/gridview/gridview.js.map +1 -1
- package/dist/cjs/gridview/gridviewComponent.js.map +1 -1
- package/dist/cjs/gridview/gridviewPanel.js.map +1 -1
- package/dist/cjs/gridview/leafNode.d.ts.map +1 -1
- package/dist/cjs/gridview/leafNode.js +1 -2
- package/dist/cjs/gridview/leafNode.js.map +1 -1
- package/dist/cjs/index.d.ts +2 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/lifecycle.d.ts +1 -0
- package/dist/cjs/lifecycle.d.ts.map +1 -1
- package/dist/cjs/lifecycle.js +8 -0
- package/dist/cjs/lifecycle.js.map +1 -1
- package/dist/cjs/math.js.map +1 -1
- package/dist/cjs/overlayRenderContainer.d.ts +19 -0
- package/dist/cjs/overlayRenderContainer.d.ts.map +1 -0
- package/dist/cjs/overlayRenderContainer.js +170 -0
- package/dist/cjs/overlayRenderContainer.js.map +1 -0
- package/dist/cjs/panel/componentFactory.js.map +1 -1
- package/dist/cjs/paneview/defaultPaneviewHeader.js.map +1 -1
- package/dist/cjs/paneview/draggablePaneviewPanel.js.map +1 -1
- package/dist/cjs/paneview/paneview.js.map +1 -1
- package/dist/cjs/paneview/paneviewComponent.js.map +1 -1
- package/dist/cjs/paneview/paneviewPanel.js.map +1 -1
- package/dist/cjs/popoutWindow.d.ts +18 -0
- package/dist/cjs/popoutWindow.d.ts.map +1 -0
- package/dist/cjs/popoutWindow.js +130 -0
- package/dist/cjs/popoutWindow.js.map +1 -0
- package/dist/cjs/resizable.js +1 -1
- package/dist/cjs/resizable.js.map +1 -1
- package/dist/cjs/splitview/splitview.d.ts +5 -4
- package/dist/cjs/splitview/splitview.d.ts.map +1 -1
- package/dist/cjs/splitview/splitview.js +31 -8
- package/dist/cjs/splitview/splitview.js.map +1 -1
- package/dist/cjs/splitview/splitviewComponent.js.map +1 -1
- package/dist/cjs/splitview/splitviewPanel.js.map +1 -1
- package/dist/cjs/splitview/viewItem.js.map +1 -1
- package/dist/cjs/types.d.ts +6 -0
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/dockview-core.amd.js +896 -170
- 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 +895 -169
- package/dist/dockview-core.amd.noStyle.js.map +1 -1
- package/dist/dockview-core.cjs.js +896 -170
- package/dist/dockview-core.cjs.js.map +1 -1
- package/dist/dockview-core.esm.js +896 -170
- 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 +896 -170
- 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 +895 -169
- package/dist/dockview-core.noStyle.js.map +1 -1
- package/dist/esm/api/component.api.d.ts +12 -0
- package/dist/esm/api/component.api.d.ts.map +1 -1
- package/dist/esm/api/component.api.js +18 -0
- package/dist/esm/api/component.api.js.map +1 -1
- package/dist/esm/api/dockviewGroupPanelApi.d.ts +15 -8
- package/dist/esm/api/dockviewGroupPanelApi.d.ts.map +1 -1
- package/dist/esm/api/dockviewGroupPanelApi.js +39 -9
- package/dist/esm/api/dockviewGroupPanelApi.js.map +1 -1
- package/dist/esm/api/dockviewPanelApi.d.ts +19 -2
- package/dist/esm/api/dockviewPanelApi.d.ts.map +1 -1
- package/dist/esm/api/dockviewPanelApi.js +19 -3
- package/dist/esm/api/dockviewPanelApi.js.map +1 -1
- package/dist/esm/api/gridviewPanelApi.js.map +1 -1
- package/dist/esm/array.js.map +1 -1
- package/dist/esm/constants.d.ts +6 -0
- package/dist/esm/constants.d.ts.map +1 -0
- package/dist/esm/constants.js +3 -0
- package/dist/esm/constants.js.map +1 -0
- package/dist/esm/dnd/abstractDragHandler.js.map +1 -1
- package/dist/esm/dnd/dataTransfer.js.map +1 -1
- package/dist/esm/dnd/dnd.d.ts +5 -0
- package/dist/esm/dnd/dnd.d.ts.map +1 -1
- package/dist/esm/dnd/dnd.js +28 -13
- package/dist/esm/dnd/dnd.js.map +1 -1
- package/dist/esm/dnd/droptarget.d.ts +2 -0
- package/dist/esm/dnd/droptarget.d.ts.map +1 -1
- package/dist/esm/dnd/droptarget.js +3 -2
- package/dist/esm/dnd/droptarget.js.map +1 -1
- package/dist/esm/dnd/groupDragHandler.js +1 -1
- package/dist/esm/dnd/groupDragHandler.js.map +1 -1
- package/dist/esm/dnd/overlay.d.ts +4 -17
- package/dist/esm/dnd/overlay.d.ts.map +1 -1
- package/dist/esm/dnd/overlay.js.map +1 -1
- package/dist/esm/dockview/components/panel/content.d.ts +14 -1
- package/dist/esm/dockview/components/panel/content.d.ts.map +1 -1
- package/dist/esm/dockview/components/panel/content.js +84 -26
- package/dist/esm/dockview/components/panel/content.js.map +1 -1
- package/dist/esm/dockview/components/tab/defaultTab.js.map +1 -1
- package/dist/esm/dockview/components/tab/tab.js.map +1 -1
- package/dist/esm/dockview/components/titlebar/tabsContainer.js +2 -2
- package/dist/esm/dockview/components/titlebar/tabsContainer.js.map +1 -1
- package/dist/esm/dockview/components/titlebar/voidContainer.js.map +1 -1
- package/dist/esm/dockview/components/watermark/watermark.js.map +1 -1
- package/dist/esm/dockview/deserializer.d.ts +2 -2
- package/dist/esm/dockview/deserializer.d.ts.map +1 -1
- package/dist/esm/dockview/deserializer.js +6 -4
- package/dist/esm/dockview/deserializer.js.map +1 -1
- package/dist/esm/dockview/dockviewComponent.d.ts +21 -9
- package/dist/esm/dockview/dockviewComponent.d.ts.map +1 -1
- package/dist/esm/dockview/dockviewComponent.js +188 -42
- package/dist/esm/dockview/dockviewComponent.js.map +1 -1
- package/dist/esm/dockview/dockviewGroupPanel.d.ts.map +1 -1
- package/dist/esm/dockview/dockviewGroupPanel.js +4 -2
- package/dist/esm/dockview/dockviewGroupPanel.js.map +1 -1
- package/dist/esm/dockview/dockviewGroupPanelModel.d.ts +5 -4
- package/dist/esm/dockview/dockviewGroupPanelModel.d.ts.map +1 -1
- package/dist/esm/dockview/dockviewGroupPanelModel.js +39 -45
- package/dist/esm/dockview/dockviewGroupPanelModel.js.map +1 -1
- package/dist/esm/dockview/dockviewPanel.d.ts +8 -1
- package/dist/esm/dockview/dockviewPanel.d.ts.map +1 -1
- package/dist/esm/dockview/dockviewPanel.js +19 -1
- package/dist/esm/dockview/dockviewPanel.js.map +1 -1
- package/dist/esm/dockview/dockviewPanelModel.js.map +1 -1
- package/dist/esm/dockview/dockviewPopoutGroupPanel.d.ts +16 -0
- package/dist/esm/dockview/dockviewPopoutGroupPanel.d.ts.map +1 -0
- package/dist/esm/dockview/dockviewPopoutGroupPanel.js +28 -0
- package/dist/esm/dockview/dockviewPopoutGroupPanel.js.map +1 -0
- package/dist/esm/dockview/options.d.ts +5 -0
- package/dist/esm/dockview/options.d.ts.map +1 -1
- package/dist/esm/dockview/options.js.map +1 -1
- package/dist/esm/dockview/types.d.ts +2 -0
- package/dist/esm/dockview/types.d.ts.map +1 -1
- package/dist/esm/dockview/types.js.map +1 -1
- package/dist/esm/dom.d.ts +12 -0
- package/dist/esm/dom.d.ts.map +1 -1
- package/dist/esm/dom.js +55 -0
- package/dist/esm/dom.js.map +1 -1
- package/dist/esm/events.js.map +1 -1
- package/dist/esm/gridview/baseComponentGridview.d.ts +10 -0
- package/dist/esm/gridview/baseComponentGridview.d.ts.map +1 -1
- package/dist/esm/gridview/baseComponentGridview.js +15 -0
- package/dist/esm/gridview/baseComponentGridview.js.map +1 -1
- package/dist/esm/gridview/basePanelView.js.map +1 -1
- package/dist/esm/gridview/branchNode.d.ts +2 -0
- package/dist/esm/gridview/branchNode.d.ts.map +1 -1
- package/dist/esm/gridview/branchNode.js +26 -5
- package/dist/esm/gridview/branchNode.js.map +1 -1
- package/dist/esm/gridview/gridview.d.ts +10 -3
- package/dist/esm/gridview/gridview.d.ts.map +1 -1
- package/dist/esm/gridview/gridview.js +80 -0
- package/dist/esm/gridview/gridview.js.map +1 -1
- package/dist/esm/gridview/gridviewComponent.js.map +1 -1
- package/dist/esm/gridview/gridviewPanel.js.map +1 -1
- package/dist/esm/gridview/leafNode.d.ts.map +1 -1
- package/dist/esm/gridview/leafNode.js +0 -1
- package/dist/esm/gridview/leafNode.js.map +1 -1
- package/dist/esm/index.d.ts +2 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lifecycle.d.ts +1 -0
- package/dist/esm/lifecycle.d.ts.map +1 -1
- package/dist/esm/lifecycle.js +8 -0
- package/dist/esm/lifecycle.js.map +1 -1
- package/dist/esm/math.js.map +1 -1
- package/dist/esm/overlayRenderContainer.d.ts +19 -0
- package/dist/esm/overlayRenderContainer.d.ts.map +1 -0
- package/dist/esm/overlayRenderContainer.js +125 -0
- package/dist/esm/overlayRenderContainer.js.map +1 -0
- package/dist/esm/panel/componentFactory.js.map +1 -1
- package/dist/esm/paneview/defaultPaneviewHeader.js.map +1 -1
- package/dist/esm/paneview/draggablePaneviewPanel.js.map +1 -1
- package/dist/esm/paneview/paneview.js.map +1 -1
- package/dist/esm/paneview/paneviewComponent.js.map +1 -1
- package/dist/esm/paneview/paneviewPanel.js.map +1 -1
- package/dist/esm/popoutWindow.d.ts +18 -0
- package/dist/esm/popoutWindow.d.ts.map +1 -0
- package/dist/esm/popoutWindow.js +88 -0
- package/dist/esm/popoutWindow.js.map +1 -0
- package/dist/esm/resizable.js +2 -2
- package/dist/esm/resizable.js.map +1 -1
- package/dist/esm/splitview/splitview.d.ts +5 -4
- package/dist/esm/splitview/splitview.d.ts.map +1 -1
- package/dist/esm/splitview/splitview.js +25 -8
- package/dist/esm/splitview/splitview.js.map +1 -1
- package/dist/esm/splitview/splitviewComponent.js.map +1 -1
- package/dist/esm/splitview/splitviewPanel.js.map +1 -1
- package/dist/esm/splitview/viewItem.js.map +1 -1
- package/dist/esm/types.d.ts +6 -0
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/styles/dockview.css +33 -2
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* dockview-core
|
|
3
|
-
* @version 1.
|
|
3
|
+
* @version 1.9.0
|
|
4
4
|
* @link https://github.com/mathuo/dockview
|
|
5
5
|
* @license MIT
|
|
6
6
|
*/
|
|
@@ -31,7 +31,7 @@ function styleInject(css, ref) {
|
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
var css_248z = ".dockview-svg {\n display: inline-block;\n fill: currentcolor;\n line-height: 1;\n stroke: currentcolor;\n stroke-width: 0;\n}\n.dockview-theme-dark {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-view-background-color: #1e1e1e;\n --dv-tabs-and-actions-container-background-color: #252526;\n --dv-activegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-activegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-inactivegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-tab-divider-color: #1e1e1e;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: #969696;\n --dv-inactivegroup-visiblepanel-tab-color: #8f8f8f;\n --dv-inactivegroup-hiddenpanel-tab-color: #626262;\n --dv-separator-border: rgb(68, 68, 68);\n --dv-paneview-header-border-color: rgba(204, 204, 204, 0.2);\n}\n\n.dockview-theme-light {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-view-background-color: white;\n --dv-tabs-and-actions-container-background-color: #f3f3f3;\n --dv-activegroup-visiblepanel-tab-background-color: white;\n --dv-activegroup-hiddenpanel-tab-background-color: #ececec;\n --dv-inactivegroup-visiblepanel-tab-background-color: white;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #ececec;\n --dv-tab-divider-color: white;\n --dv-activegroup-visiblepanel-tab-color: rgb(51, 51, 51);\n --dv-activegroup-hiddenpanel-tab-color: rgba(51, 51, 51, 0.7);\n --dv-inactivegroup-visiblepanel-tab-color: rgba(51, 51, 51, 0.7);\n --dv-inactivegroup-hiddenpanel-tab-color: rgba(51, 51, 51, 0.35);\n --dv-separator-border: rgba(128, 128, 128, 0.35);\n --dv-paneview-header-border-color: rgb(51, 51, 51);\n}\n\n.dockview-theme-vs {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-view-background-color: #1e1e1e;\n --dv-tabs-and-actions-container-background-color: #252526;\n --dv-activegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-activegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-inactivegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-tab-divider-color: #1e1e1e;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: #969696;\n --dv-inactivegroup-visiblepanel-tab-color: #8f8f8f;\n --dv-inactivegroup-hiddenpanel-tab-color: #626262;\n --dv-separator-border: rgb(68, 68, 68);\n --dv-paneview-header-border-color: rgba(204, 204, 204, 0.2);\n --dv-tabs-and-actions-container-background-color: #2d2d30;\n --dv-tabs-and-actions-container-height: 20px;\n --dv-tabs-and-actions-container-font-size: 11px;\n --dv-activegroup-visiblepanel-tab-background-color: #007acc;\n --dv-inactivegroup-visiblepanel-tab-background-color: #3f3f46;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: white;\n --dv-inactivegroup-visiblepanel-tab-color: white;\n --dv-inactivegroup-hiddenpanel-tab-color: white;\n}\n.dockview-theme-vs .groupview.active-group > .tabs-and-actions-container {\n box-sizing: content-box;\n border-bottom: 2px solid var(--dv-activegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.active-group > .tabs-and-actions-container .tab.active-tab {\n border-top: 2px solid var(--dv-activegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.active-group > .tabs-and-actions-container .tab.inactive-tab {\n border-top: 2px solid var(--dv-activegroup-hiddenpanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.inactive-group > .tabs-and-actions-container {\n box-sizing: content-box;\n border-bottom: 2px solid var(--dv-inactivegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.inactive-group > .tabs-and-actions-container .tab.active-tab {\n border-top: 2px solid var(--dv-inactivegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.inactive-group > .tabs-and-actions-container .tab.inactive-tab {\n border-top: 2px solid var(--dv-inactivegroup-hiddenpanel-tab-background-color);\n}\n\n.dockview-theme-abyss {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-view-background-color: #000c18;\n --dv-tabs-and-actions-container-background-color: #1c1c2a;\n --dv-activegroup-visiblepanel-tab-background-color: #000c18;\n --dv-activegroup-hiddenpanel-tab-background-color: #10192c;\n --dv-inactivegroup-visiblepanel-tab-background-color: #000c18;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #10192c;\n --dv-tab-divider-color: #2b2b4a;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: rgba(255, 255, 255, 0.5);\n --dv-inactivegroup-visiblepanel-tab-color: rgba(255, 255, 255, 0.5);\n --dv-inactivegroup-hiddenpanel-tab-color: rgba(255, 255, 255, 0.25);\n --dv-separator-border: #2b2b4a;\n --dv-paneview-header-border-color: #2b2b4a;\n --dv-paneview-active-outline-color: #596f99;\n}\n\n.dockview-theme-dracula {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-view-background-color: #282a36;\n --dv-tabs-and-actions-container-background-color: #191a21;\n --dv-activegroup-visiblepanel-tab-background-color: #282a36;\n --dv-activegroup-hiddenpanel-tab-background-color: #21222c;\n --dv-inactivegroup-visiblepanel-tab-background-color: #282a36;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #21222c;\n --dv-tab-divider-color: #191a21;\n --dv-activegroup-visiblepanel-tab-color: rgb(248, 248, 242);\n --dv-activegroup-hiddenpanel-tab-color: rgb(98, 114, 164);\n --dv-inactivegroup-visiblepanel-tab-color: rgba(248, 248, 242, 0.5);\n --dv-inactivegroup-hiddenpanel-tab-color: rgba(98, 114, 164, 0.5);\n --dv-separator-border: #bd93f9;\n --dv-paneview-header-border-color: #bd93f9;\n --dv-paneview-active-outline-color: #6272a4;\n}\n.dockview-theme-dracula .groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n position: relative;\n}\n.dockview-theme-dracula .groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab::after {\n position: absolute;\n left: 0px;\n top: 0px;\n content: \"\";\n width: 100%;\n height: 1px;\n background-color: #94527e;\n z-index: 999;\n}\n.dockview-theme-dracula .groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n position: relative;\n}\n.dockview-theme-dracula .groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab::after {\n position: absolute;\n left: 0px;\n bottom: 0px;\n content: \"\";\n width: 100%;\n height: 1px;\n background-color: #5e3d5a;\n z-index: 999;\n}\n\n.dockview-theme-replit {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-view-background-color: #ebeced;\n --dv-tabs-and-actions-container-background-color: #fcfcfc;\n --dv-activegroup-visiblepanel-tab-background-color: #f0f1f2;\n --dv-activegroup-hiddenpanel-tab-background-color: ##fcfcfc;\n --dv-inactivegroup-visiblepanel-tab-background-color: #f0f1f2;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #fcfcfc;\n --dv-tab-divider-color: transparent;\n --dv-activegroup-visiblepanel-tab-color: rgb(51, 51, 51);\n --dv-activegroup-hiddenpanel-tab-color: rgb(51, 51, 51);\n --dv-inactivegroup-visiblepanel-tab-color: rgb(51, 51, 51);\n --dv-inactivegroup-hiddenpanel-tab-color: rgb(51, 51, 51);\n --dv-separator-border: transparent;\n --dv-paneview-header-border-color: rgb(51, 51, 51);\n --dv-background-color: #ebeced;\n --dv-separator-handle-background-color: #cfd1d3;\n --dv-separator-handle-hover-background-color: #babbbb;\n}\n.dockview-theme-replit.dv-dockview {\n padding: 3px;\n}\n.dockview-theme-replit .view:has(> .groupview) {\n padding: 3px;\n}\n.dockview-theme-replit .dv-resize-container:has(> .groupview) {\n border-radius: 8px;\n}\n.dockview-theme-replit .groupview {\n overflow: hidden;\n border-radius: 10px;\n}\n.dockview-theme-replit .groupview .tabs-and-actions-container {\n border-bottom: 1px solid rgba(128, 128, 128, 0.35);\n}\n.dockview-theme-replit .groupview .tabs-and-actions-container .tab {\n margin: 4px;\n border-radius: 8px;\n}\n.dockview-theme-replit .groupview .tabs-and-actions-container .tab .dockview-svg {\n height: 8px;\n width: 8px;\n}\n.dockview-theme-replit .groupview .tabs-and-actions-container .tab:hover {\n background-color: #e4e5e6 !important;\n}\n.dockview-theme-replit .groupview .content-container {\n background-color: #fcfcfc;\n}\n.dockview-theme-replit .groupview.active-group {\n border: 1px solid rgba(128, 128, 128, 0.35);\n}\n.dockview-theme-replit .groupview.inactive-group {\n border: 1px solid transparent;\n}\n.dockview-theme-replit .vertical > .sash-container > .sash::after {\n content: \"\";\n height: 4px;\n width: 40px;\n border-radius: 2px;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n background-color: var(--dv-separator-handle-background-color);\n position: absolute;\n}\n.dockview-theme-replit .vertical > .sash-container > .sash:hover::after {\n background-color: var(--dv-separator-handle-hover-background-color);\n}\n.dockview-theme-replit .horizontal > .sash-container > .sash::after {\n content: \"\";\n height: 40px;\n width: 4px;\n border-radius: 2px;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n background-color: var(--dv-separator-handle-background-color);\n position: absolute;\n}\n.dockview-theme-replit .horizontal > .sash-container > .sash:hover::after {\n background-color: var(--dv-separator-handle-hover-background-color);\n}\n.drop-target {\n position: relative;\n}\n.drop-target > .drop-target-dropzone {\n position: absolute;\n left: 0px;\n top: 0px;\n height: 100%;\n width: 100%;\n z-index: 1000;\n pointer-events: none;\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection {\n position: relative;\n box-sizing: border-box;\n height: 100%;\n width: 100%;\n background-color: var(--dv-drag-over-background-color);\n transition: top 70ms ease-out, left 70ms ease-out, width 70ms ease-out, height 70ms ease-out, opacity 0.15s ease-out;\n will-change: transform;\n pointer-events: none;\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.small-top {\n border-top: 1px solid var(--dv-drag-over-border-color);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.small-bottom {\n border-bottom: 1px solid var(--dv-drag-over-border-color);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.small-left {\n border-left: 1px solid var(--dv-drag-over-border-color);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.small-right {\n border-right: 1px solid var(--dv-drag-over-border-color);\n}\n.dv-debug .dv-resize-container .dv-resize-handle-top {\n background-color: red;\n}\n.dv-debug .dv-resize-container .dv-resize-handle-bottom {\n background-color: green;\n}\n.dv-debug .dv-resize-container .dv-resize-handle-left {\n background-color: yellow;\n}\n.dv-debug .dv-resize-container .dv-resize-handle-right {\n background-color: blue;\n}\n.dv-debug .dv-resize-container .dv-resize-handle-topleft,\n.dv-debug .dv-resize-container .dv-resize-handle-topright,\n.dv-debug .dv-resize-container .dv-resize-handle-bottomleft,\n.dv-debug .dv-resize-container .dv-resize-handle-bottomright {\n background-color: cyan;\n}\n\n.dv-resize-container {\n position: absolute;\n z-index: 997;\n border: 1px solid var(--dv-tab-divider-color);\n box-shadow: var(--dv-floating-box-shadow);\n}\n.dv-resize-container.dv-bring-to-front {\n z-index: 998;\n}\n.dv-resize-container.dv-resize-container-dragging {\n opacity: 0.5;\n}\n.dv-resize-container .dv-resize-handle-top {\n height: 4px;\n width: calc(100% - 8px);\n left: 4px;\n top: -2px;\n z-index: 999;\n position: absolute;\n cursor: ns-resize;\n}\n.dv-resize-container .dv-resize-handle-bottom {\n height: 4px;\n width: calc(100% - 8px);\n left: 4px;\n bottom: -2px;\n z-index: 999;\n position: absolute;\n cursor: ns-resize;\n}\n.dv-resize-container .dv-resize-handle-left {\n height: calc(100% - 8px);\n width: 4px;\n left: -2px;\n top: 4px;\n z-index: 999;\n position: absolute;\n cursor: ew-resize;\n}\n.dv-resize-container .dv-resize-handle-right {\n height: calc(100% - 8px);\n width: 4px;\n right: -2px;\n top: 4px;\n z-index: 999;\n position: absolute;\n cursor: ew-resize;\n}\n.dv-resize-container .dv-resize-handle-topleft {\n height: 4px;\n width: 4px;\n top: -2px;\n left: -2px;\n z-index: 999;\n position: absolute;\n cursor: nw-resize;\n}\n.dv-resize-container .dv-resize-handle-topright {\n height: 4px;\n width: 4px;\n right: -2px;\n top: -2px;\n z-index: 999;\n position: absolute;\n cursor: ne-resize;\n}\n.dv-resize-container .dv-resize-handle-bottomleft {\n height: 4px;\n width: 4px;\n left: -2px;\n bottom: -2px;\n z-index: 999;\n position: absolute;\n cursor: sw-resize;\n}\n.dv-resize-container .dv-resize-handle-bottomright {\n height: 4px;\n width: 4px;\n right: -2px;\n bottom: -2px;\n z-index: 999;\n position: absolute;\n cursor: se-resize;\n}\n.dv-dockview {\n position: relative;\n background-color: var(--dv-group-view-background-color);\n}\n.dv-dockview .dv-watermark-container {\n position: absolute;\n top: 0px;\n left: 0px;\n height: 100%;\n width: 100%;\n z-index: 1;\n}\n\n.groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n background-color: var(--dv-activegroup-visiblepanel-tab-background-color);\n color: var(--dv-activegroup-visiblepanel-tab-color);\n}\n.groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.inactive-tab {\n background-color: var(--dv-activegroup-hiddenpanel-tab-background-color);\n color: var(--dv-activegroup-hiddenpanel-tab-color);\n}\n.groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n background-color: var(--dv-inactivegroup-visiblepanel-tab-background-color);\n color: var(--dv-inactivegroup-visiblepanel-tab-color);\n}\n.groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.inactive-tab {\n background-color: var(--dv-inactivegroup-hiddenpanel-tab-background-color);\n color: var(--dv-inactivegroup-hiddenpanel-tab-color);\n}\n\n/**\n * when a tab is dragged we lose the above stylings because they are conditional on parent elements\n * therefore we also set some stylings for the dragging event\n **/\n.tab.dv-tab-dragging {\n background-color: var(--dv-activegroup-visiblepanel-tab-background-color);\n color: var(--dv-activegroup-visiblepanel-tab-color);\n}\n.groupview {\n display: flex;\n flex-direction: column;\n height: 100%;\n background-color: var(--dv-group-view-background-color);\n overflow: hidden;\n}\n.groupview:focus {\n outline: none;\n}\n.groupview.empty > .tabs-and-actions-container {\n display: none;\n}\n.groupview > .content-container {\n flex-grow: 1;\n overflow: hidden;\n outline: none;\n}\n.grid-view,\n.branch-node {\n height: 100%;\n width: 100%;\n}\n.pane-container {\n height: 100%;\n width: 100%;\n}\n.pane-container.animated .view {\n transition-duration: 0.15s;\n transition-timing-function: ease-out;\n}\n.pane-container .view {\n overflow: hidden;\n display: flex;\n flex-direction: column;\n padding: 0px !important;\n}\n.pane-container .view:not(:first-child)::before {\n background-color: transparent !important;\n}\n.pane-container .view:not(:first-child) .pane > .pane-header {\n border-top: 1px solid var(--dv-paneview-header-border-color);\n}\n.pane-container .view .default-header {\n background-color: var(--dv-group-view-background-color);\n color: var(--dv-activegroup-visiblepanel-tab-color);\n display: flex;\n padding: 0px 8px;\n cursor: pointer;\n}\n.pane-container .view .default-header .dockview-pane-header-icon {\n display: flex;\n justify-content: center;\n align-items: center;\n}\n.pane-container .view .default-header > span {\n padding-left: 8px;\n flex-grow: 1;\n}\n.pane-container:first-of-type > .pane > .pane-header {\n border-top: none !important;\n}\n.pane-container .pane {\n display: flex;\n flex-direction: column;\n overflow: hidden;\n height: 100%;\n}\n.pane-container .pane .pane-header {\n box-sizing: border-box;\n user-select: none;\n position: relative;\n outline: none;\n}\n.pane-container .pane .pane-header.pane-draggable {\n cursor: pointer;\n}\n.pane-container .pane .pane-header:focus:before, .pane-container .pane .pane-header:focus-within:before {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 5;\n content: \"\";\n pointer-events: none;\n outline: 1px solid;\n outline-width: -1px;\n outline-style: solid;\n outline-offset: -1px;\n outline-color: var(--dv-paneview-active-outline-color);\n}\n.pane-container .pane .pane-body {\n overflow-y: auto;\n overflow-x: hidden;\n flex-grow: 1;\n position: relative;\n outline: none;\n}\n.pane-container .pane .pane-body:focus:before, .pane-container .pane .pane-body:focus-within:before {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 5;\n content: \"\";\n pointer-events: none;\n outline: 1px solid;\n outline-width: -1px;\n outline-style: solid;\n outline-offset: -1px;\n outline-color: var(--dv-paneview-active-outline-color);\n}\n.dv-debug .split-view-container .sash-container .sash.enabled {\n background-color: black;\n}\n.dv-debug .split-view-container .sash-container .sash.disabled {\n background-color: orange;\n}\n.dv-debug .split-view-container .sash-container .sash.maximum {\n background-color: green;\n}\n.dv-debug .split-view-container .sash-container .sash.minimum {\n background-color: red;\n}\n\n.split-view-container {\n position: relative;\n overflow: hidden;\n height: 100%;\n width: 100%;\n}\n.split-view-container.animation .view,\n.split-view-container.animation .sash {\n transition-duration: 0.15s;\n transition-timing-function: ease-out;\n}\n.split-view-container.horizontal {\n height: 100%;\n}\n.split-view-container.horizontal > .sash-container > .sash {\n height: 100%;\n width: 4px;\n}\n.split-view-container.horizontal > .sash-container > .sash.enabled {\n cursor: ew-resize;\n}\n.split-view-container.horizontal > .sash-container > .sash.disabled {\n cursor: default;\n}\n.split-view-container.horizontal > .sash-container > .sash.maximum {\n cursor: w-resize;\n}\n.split-view-container.horizontal > .sash-container > .sash.minimum {\n cursor: e-resize;\n}\n.split-view-container.horizontal > .view-container > .view:not(:first-child)::before {\n height: 100%;\n width: 1px;\n}\n.split-view-container.vertical {\n width: 100%;\n}\n.split-view-container.vertical > .sash-container > .sash {\n width: 100%;\n height: 4px;\n}\n.split-view-container.vertical > .sash-container > .sash.enabled {\n cursor: ns-resize;\n}\n.split-view-container.vertical > .sash-container > .sash.disabled {\n cursor: default;\n}\n.split-view-container.vertical > .sash-container > .sash.maximum {\n cursor: n-resize;\n}\n.split-view-container.vertical > .sash-container > .sash.minimum {\n cursor: s-resize;\n}\n.split-view-container.vertical > .view-container > .view {\n width: 100%;\n}\n.split-view-container.vertical > .view-container > .view:not(:first-child)::before {\n height: 1px;\n width: 100%;\n}\n.split-view-container .sash-container {\n height: 100%;\n width: 100%;\n position: absolute;\n}\n.split-view-container .sash-container .sash {\n position: absolute;\n z-index: 99;\n outline: none;\n user-select: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n touch-action: none;\n}\n.split-view-container .sash-container .sash:active {\n transition: background-color 0.1s ease-in-out;\n background-color: var(--dv-active-sash-color, transparent);\n}\n.split-view-container .sash-container .sash:hover {\n background-color: var(--dv-active-sash-color, transparent);\n transition: background-color 0.1s ease-in-out;\n transition-delay: 0.5s;\n}\n.split-view-container .view-container {\n position: relative;\n height: 100%;\n width: 100%;\n background-color: var(--dv-background-color);\n}\n.split-view-container .view-container .view {\n height: 100%;\n box-sizing: border-box;\n overflow: auto;\n position: absolute;\n}\n.split-view-container.separator-border .view:not(:first-child)::before {\n content: \" \";\n position: absolute;\n top: 0;\n left: 0;\n z-index: 5;\n pointer-events: none;\n background-color: var(--dv-separator-border);\n}\n.dv-dragged {\n transform: translate3d(0px, 0px, 0px); /* forces tab to be drawn on a separate layer (see https://github.com/microsoft/vscode/issues/18733) */\n}\n\n.tab {\n flex-shrink: 0;\n}\n.tab.dv-tab-dragging .tab-action {\n background-color: var(--dv-activegroup-visiblepanel-tab-color);\n}\n.tab.active-tab > .default-tab .tab-action {\n visibility: visible;\n}\n.tab.inactive-tab > .default-tab .tab-action {\n visibility: hidden;\n}\n.tab.inactive-tab > .default-tab:hover .tab-action {\n visibility: visible;\n}\n.tab .default-tab {\n position: relative;\n height: 100%;\n display: flex;\n min-width: 80px;\n align-items: center;\n padding: 0px 8px;\n white-space: nowrap;\n text-overflow: elipsis;\n}\n.tab .default-tab .tab-content {\n padding: 0px 8px;\n flex-grow: 1;\n}\n.tab .default-tab .action-container {\n text-align: right;\n display: flex;\n}\n.tab .default-tab .action-container .tab-list {\n display: flex;\n padding: 0px;\n margin: 0px;\n justify-content: flex-end;\n}\n.tab .default-tab .action-container .tab-list .tab-action {\n padding: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n}\n.tab .default-tab .action-container .tab-list .tab-action:hover {\n border-radius: 2px;\n background-color: var(--dv-icon-hover-background-color);\n}\n.tabs-and-actions-container {\n display: flex;\n background-color: var(--dv-tabs-and-actions-container-background-color);\n flex-shrink: 0;\n box-sizing: border-box;\n height: var(--dv-tabs-and-actions-container-height);\n font-size: var(--dv-tabs-and-actions-container-font-size);\n}\n.tabs-and-actions-container.hidden {\n display: none;\n}\n.tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .tabs-container {\n flex-grow: 1;\n}\n.tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .tabs-container .tab {\n flex-grow: 1;\n}\n.tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .void-container {\n flex-grow: 0;\n}\n.tabs-and-actions-container .void-container {\n display: flex;\n flex-grow: 1;\n cursor: grab;\n}\n.tabs-and-actions-container .tabs-container {\n display: flex;\n overflow-x: overlay;\n overflow-y: hidden;\n scrollbar-width: thin;\n /* Track */\n /* Handle */\n}\n.tabs-and-actions-container .tabs-container::-webkit-scrollbar {\n height: 3px;\n}\n.tabs-and-actions-container .tabs-container::-webkit-scrollbar-track {\n background: transparent;\n}\n.tabs-and-actions-container .tabs-container::-webkit-scrollbar-thumb {\n background: var(--dv-tabs-container-scrollbar-color);\n}\n.tabs-and-actions-container .tabs-container .tab {\n -webkit-user-drag: element;\n outline: none;\n min-width: 75px;\n cursor: pointer;\n position: relative;\n box-sizing: border-box;\n}\n.tabs-and-actions-container .tabs-container .tab:not(:first-child)::before {\n content: \" \";\n position: absolute;\n top: 0;\n left: 0;\n z-index: 5;\n pointer-events: none;\n background-color: var(--dv-tab-divider-color);\n width: 1px;\n height: 100%;\n}\n.watermark {\n display: flex;\n width: 100%;\n}\n.watermark.has-actions .watermark-title .actions-container {\n display: none;\n}\n.watermark .watermark-title {\n height: 35px;\n width: 100%;\n display: flex;\n}\n.watermark .watermark-content {\n flex-grow: 1;\n}\n.watermark .actions-container {\n display: flex;\n align-items: center;\n padding: 0px 8px;\n}\n.watermark .actions-container .close-action {\n padding: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n cursor: pointer;\n color: var(--dv-activegroup-hiddenpanel-tab-color);\n}\n.watermark .actions-container .close-action:hover {\n border-radius: 2px;\n background-color: var(--dv-icon-hover-background-color);\n}";
|
|
34
|
+
var css_248z = ".dv-render-overlay {\n position: absolute;\n z-index: 1;\n height: 100%;\n}\n.dv-render-overlay.dv-render-overlay-float {\n z-index: 999;\n}\n\n.dv-debug .dv-render-overlay {\n outline: 1px solid red;\n outline-offset: -1;\n}\n.dockview-svg {\n display: inline-block;\n fill: currentcolor;\n line-height: 1;\n stroke: currentcolor;\n stroke-width: 0;\n}\n.dockview-theme-dark {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-view-background-color: #1e1e1e;\n --dv-tabs-and-actions-container-background-color: #252526;\n --dv-activegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-activegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-inactivegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-tab-divider-color: #1e1e1e;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: #969696;\n --dv-inactivegroup-visiblepanel-tab-color: #8f8f8f;\n --dv-inactivegroup-hiddenpanel-tab-color: #626262;\n --dv-separator-border: rgb(68, 68, 68);\n --dv-paneview-header-border-color: rgba(204, 204, 204, 0.2);\n}\n\n.dockview-theme-light {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-view-background-color: white;\n --dv-tabs-and-actions-container-background-color: #f3f3f3;\n --dv-activegroup-visiblepanel-tab-background-color: white;\n --dv-activegroup-hiddenpanel-tab-background-color: #ececec;\n --dv-inactivegroup-visiblepanel-tab-background-color: white;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #ececec;\n --dv-tab-divider-color: white;\n --dv-activegroup-visiblepanel-tab-color: rgb(51, 51, 51);\n --dv-activegroup-hiddenpanel-tab-color: rgba(51, 51, 51, 0.7);\n --dv-inactivegroup-visiblepanel-tab-color: rgba(51, 51, 51, 0.7);\n --dv-inactivegroup-hiddenpanel-tab-color: rgba(51, 51, 51, 0.35);\n --dv-separator-border: rgba(128, 128, 128, 0.35);\n --dv-paneview-header-border-color: rgb(51, 51, 51);\n}\n\n.dockview-theme-vs {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-view-background-color: #1e1e1e;\n --dv-tabs-and-actions-container-background-color: #252526;\n --dv-activegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-activegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-inactivegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-tab-divider-color: #1e1e1e;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: #969696;\n --dv-inactivegroup-visiblepanel-tab-color: #8f8f8f;\n --dv-inactivegroup-hiddenpanel-tab-color: #626262;\n --dv-separator-border: rgb(68, 68, 68);\n --dv-paneview-header-border-color: rgba(204, 204, 204, 0.2);\n --dv-tabs-and-actions-container-background-color: #2d2d30;\n --dv-tabs-and-actions-container-height: 20px;\n --dv-tabs-and-actions-container-font-size: 11px;\n --dv-activegroup-visiblepanel-tab-background-color: #007acc;\n --dv-inactivegroup-visiblepanel-tab-background-color: #3f3f46;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: white;\n --dv-inactivegroup-visiblepanel-tab-color: white;\n --dv-inactivegroup-hiddenpanel-tab-color: white;\n}\n.dockview-theme-vs .groupview.active-group > .tabs-and-actions-container {\n box-sizing: content-box;\n border-bottom: 2px solid var(--dv-activegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.active-group > .tabs-and-actions-container .tab.active-tab {\n border-top: 2px solid var(--dv-activegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.active-group > .tabs-and-actions-container .tab.inactive-tab {\n border-top: 2px solid var(--dv-activegroup-hiddenpanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.inactive-group > .tabs-and-actions-container {\n box-sizing: content-box;\n border-bottom: 2px solid var(--dv-inactivegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.inactive-group > .tabs-and-actions-container .tab.active-tab {\n border-top: 2px solid var(--dv-inactivegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.inactive-group > .tabs-and-actions-container .tab.inactive-tab {\n border-top: 2px solid var(--dv-inactivegroup-hiddenpanel-tab-background-color);\n}\n\n.dockview-theme-abyss {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-view-background-color: #000c18;\n --dv-tabs-and-actions-container-background-color: #1c1c2a;\n --dv-activegroup-visiblepanel-tab-background-color: #000c18;\n --dv-activegroup-hiddenpanel-tab-background-color: #10192c;\n --dv-inactivegroup-visiblepanel-tab-background-color: #000c18;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #10192c;\n --dv-tab-divider-color: #2b2b4a;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: rgba(255, 255, 255, 0.5);\n --dv-inactivegroup-visiblepanel-tab-color: rgba(255, 255, 255, 0.5);\n --dv-inactivegroup-hiddenpanel-tab-color: rgba(255, 255, 255, 0.25);\n --dv-separator-border: #2b2b4a;\n --dv-paneview-header-border-color: #2b2b4a;\n --dv-paneview-active-outline-color: #596f99;\n}\n\n.dockview-theme-dracula {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-view-background-color: #282a36;\n --dv-tabs-and-actions-container-background-color: #191a21;\n --dv-activegroup-visiblepanel-tab-background-color: #282a36;\n --dv-activegroup-hiddenpanel-tab-background-color: #21222c;\n --dv-inactivegroup-visiblepanel-tab-background-color: #282a36;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #21222c;\n --dv-tab-divider-color: #191a21;\n --dv-activegroup-visiblepanel-tab-color: rgb(248, 248, 242);\n --dv-activegroup-hiddenpanel-tab-color: rgb(98, 114, 164);\n --dv-inactivegroup-visiblepanel-tab-color: rgba(248, 248, 242, 0.5);\n --dv-inactivegroup-hiddenpanel-tab-color: rgba(98, 114, 164, 0.5);\n --dv-separator-border: #bd93f9;\n --dv-paneview-header-border-color: #bd93f9;\n --dv-paneview-active-outline-color: #6272a4;\n}\n.dockview-theme-dracula .groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n position: relative;\n}\n.dockview-theme-dracula .groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab::after {\n position: absolute;\n left: 0px;\n top: 0px;\n content: \"\";\n width: 100%;\n height: 1px;\n background-color: #94527e;\n z-index: 999;\n}\n.dockview-theme-dracula .groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n position: relative;\n}\n.dockview-theme-dracula .groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab::after {\n position: absolute;\n left: 0px;\n bottom: 0px;\n content: \"\";\n width: 100%;\n height: 1px;\n background-color: #5e3d5a;\n z-index: 999;\n}\n\n.dockview-theme-replit {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-view-background-color: #ebeced;\n --dv-tabs-and-actions-container-background-color: #fcfcfc;\n --dv-activegroup-visiblepanel-tab-background-color: #f0f1f2;\n --dv-activegroup-hiddenpanel-tab-background-color: ##fcfcfc;\n --dv-inactivegroup-visiblepanel-tab-background-color: #f0f1f2;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #fcfcfc;\n --dv-tab-divider-color: transparent;\n --dv-activegroup-visiblepanel-tab-color: rgb(51, 51, 51);\n --dv-activegroup-hiddenpanel-tab-color: rgb(51, 51, 51);\n --dv-inactivegroup-visiblepanel-tab-color: rgb(51, 51, 51);\n --dv-inactivegroup-hiddenpanel-tab-color: rgb(51, 51, 51);\n --dv-separator-border: transparent;\n --dv-paneview-header-border-color: rgb(51, 51, 51);\n --dv-background-color: #ebeced;\n --dv-separator-handle-background-color: #cfd1d3;\n --dv-separator-handle-hover-background-color: #babbbb;\n}\n.dockview-theme-replit.dv-dockview {\n padding: 3px;\n}\n.dockview-theme-replit .view:has(> .groupview) {\n padding: 3px;\n}\n.dockview-theme-replit .dv-resize-container:has(> .groupview) {\n border-radius: 8px;\n}\n.dockview-theme-replit .groupview {\n overflow: hidden;\n border-radius: 10px;\n}\n.dockview-theme-replit .groupview .tabs-and-actions-container {\n border-bottom: 1px solid rgba(128, 128, 128, 0.35);\n}\n.dockview-theme-replit .groupview .tabs-and-actions-container .tab {\n margin: 4px;\n border-radius: 8px;\n}\n.dockview-theme-replit .groupview .tabs-and-actions-container .tab .dockview-svg {\n height: 8px;\n width: 8px;\n}\n.dockview-theme-replit .groupview .tabs-and-actions-container .tab:hover {\n background-color: #e4e5e6 !important;\n}\n.dockview-theme-replit .groupview .content-container {\n background-color: #fcfcfc;\n}\n.dockview-theme-replit .groupview.active-group {\n border: 1px solid rgba(128, 128, 128, 0.35);\n}\n.dockview-theme-replit .groupview.inactive-group {\n border: 1px solid transparent;\n}\n.dockview-theme-replit .vertical > .sash-container > .sash::after {\n content: \"\";\n height: 4px;\n width: 40px;\n border-radius: 2px;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n background-color: var(--dv-separator-handle-background-color);\n position: absolute;\n}\n.dockview-theme-replit .vertical > .sash-container > .sash:hover::after {\n background-color: var(--dv-separator-handle-hover-background-color);\n}\n.dockview-theme-replit .horizontal > .sash-container > .sash::after {\n content: \"\";\n height: 40px;\n width: 4px;\n border-radius: 2px;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n background-color: var(--dv-separator-handle-background-color);\n position: absolute;\n}\n.dockview-theme-replit .horizontal > .sash-container > .sash:hover::after {\n background-color: var(--dv-separator-handle-hover-background-color);\n}\n.drop-target {\n position: relative;\n}\n.drop-target > .drop-target-dropzone {\n position: absolute;\n left: 0px;\n top: 0px;\n height: 100%;\n width: 100%;\n z-index: 1000;\n pointer-events: none;\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection {\n position: relative;\n box-sizing: border-box;\n height: 100%;\n width: 100%;\n background-color: var(--dv-drag-over-background-color);\n transition: top 70ms ease-out, left 70ms ease-out, width 70ms ease-out, height 70ms ease-out, opacity 0.15s ease-out;\n will-change: transform;\n pointer-events: none;\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.small-top {\n border-top: 1px solid var(--dv-drag-over-border-color);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.small-bottom {\n border-bottom: 1px solid var(--dv-drag-over-border-color);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.small-left {\n border-left: 1px solid var(--dv-drag-over-border-color);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.small-right {\n border-right: 1px solid var(--dv-drag-over-border-color);\n}\n.dv-debug .dv-resize-container .dv-resize-handle-top {\n background-color: red;\n}\n.dv-debug .dv-resize-container .dv-resize-handle-bottom {\n background-color: green;\n}\n.dv-debug .dv-resize-container .dv-resize-handle-left {\n background-color: yellow;\n}\n.dv-debug .dv-resize-container .dv-resize-handle-right {\n background-color: blue;\n}\n.dv-debug .dv-resize-container .dv-resize-handle-topleft,\n.dv-debug .dv-resize-container .dv-resize-handle-topright,\n.dv-debug .dv-resize-container .dv-resize-handle-bottomleft,\n.dv-debug .dv-resize-container .dv-resize-handle-bottomright {\n background-color: cyan;\n}\n\n.dv-resize-container {\n position: absolute;\n z-index: 997;\n border: 1px solid var(--dv-tab-divider-color);\n box-shadow: var(--dv-floating-box-shadow);\n}\n.dv-resize-container.dv-bring-to-front {\n z-index: 998;\n}\n.dv-resize-container.dv-resize-container-dragging {\n opacity: 0.5;\n}\n.dv-resize-container .dv-resize-handle-top {\n height: 4px;\n width: calc(100% - 8px);\n left: 4px;\n top: -2px;\n z-index: 999;\n position: absolute;\n cursor: ns-resize;\n}\n.dv-resize-container .dv-resize-handle-bottom {\n height: 4px;\n width: calc(100% - 8px);\n left: 4px;\n bottom: -2px;\n z-index: 999;\n position: absolute;\n cursor: ns-resize;\n}\n.dv-resize-container .dv-resize-handle-left {\n height: calc(100% - 8px);\n width: 4px;\n left: -2px;\n top: 4px;\n z-index: 999;\n position: absolute;\n cursor: ew-resize;\n}\n.dv-resize-container .dv-resize-handle-right {\n height: calc(100% - 8px);\n width: 4px;\n right: -2px;\n top: 4px;\n z-index: 999;\n position: absolute;\n cursor: ew-resize;\n}\n.dv-resize-container .dv-resize-handle-topleft {\n height: 4px;\n width: 4px;\n top: -2px;\n left: -2px;\n z-index: 999;\n position: absolute;\n cursor: nw-resize;\n}\n.dv-resize-container .dv-resize-handle-topright {\n height: 4px;\n width: 4px;\n right: -2px;\n top: -2px;\n z-index: 999;\n position: absolute;\n cursor: ne-resize;\n}\n.dv-resize-container .dv-resize-handle-bottomleft {\n height: 4px;\n width: 4px;\n left: -2px;\n bottom: -2px;\n z-index: 999;\n position: absolute;\n cursor: sw-resize;\n}\n.dv-resize-container .dv-resize-handle-bottomright {\n height: 4px;\n width: 4px;\n right: -2px;\n bottom: -2px;\n z-index: 999;\n position: absolute;\n cursor: se-resize;\n}\n.dv-dockview {\n position: relative;\n background-color: var(--dv-group-view-background-color);\n}\n.dv-dockview .dv-watermark-container {\n position: absolute;\n top: 0px;\n left: 0px;\n height: 100%;\n width: 100%;\n z-index: 1;\n}\n.dv-dockview .dv-overlay-render-container {\n position: relative;\n}\n\n.groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n background-color: var(--dv-activegroup-visiblepanel-tab-background-color);\n color: var(--dv-activegroup-visiblepanel-tab-color);\n}\n.groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.inactive-tab {\n background-color: var(--dv-activegroup-hiddenpanel-tab-background-color);\n color: var(--dv-activegroup-hiddenpanel-tab-color);\n}\n.groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n background-color: var(--dv-inactivegroup-visiblepanel-tab-background-color);\n color: var(--dv-inactivegroup-visiblepanel-tab-color);\n}\n.groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.inactive-tab {\n background-color: var(--dv-inactivegroup-hiddenpanel-tab-background-color);\n color: var(--dv-inactivegroup-hiddenpanel-tab-color);\n}\n\n/**\n * when a tab is dragged we lose the above stylings because they are conditional on parent elements\n * therefore we also set some stylings for the dragging event\n **/\n.tab.dv-tab-dragging {\n background-color: var(--dv-activegroup-visiblepanel-tab-background-color);\n color: var(--dv-activegroup-visiblepanel-tab-color);\n}\n.groupview {\n display: flex;\n flex-direction: column;\n height: 100%;\n background-color: var(--dv-group-view-background-color);\n overflow: hidden;\n}\n.groupview:focus {\n outline: none;\n}\n.groupview.empty > .tabs-and-actions-container {\n display: none;\n}\n.groupview > .content-container {\n flex-grow: 1;\n overflow: hidden;\n outline: none;\n}\n.grid-view,\n.branch-node {\n height: 100%;\n width: 100%;\n}\n.pane-container {\n height: 100%;\n width: 100%;\n}\n.pane-container.animated .view {\n transition-duration: 0.15s;\n transition-timing-function: ease-out;\n}\n.pane-container .view {\n overflow: hidden;\n display: flex;\n flex-direction: column;\n padding: 0px !important;\n}\n.pane-container .view:not(:first-child)::before {\n background-color: transparent !important;\n}\n.pane-container .view:not(:first-child) .pane > .pane-header {\n border-top: 1px solid var(--dv-paneview-header-border-color);\n}\n.pane-container .view .default-header {\n background-color: var(--dv-group-view-background-color);\n color: var(--dv-activegroup-visiblepanel-tab-color);\n display: flex;\n padding: 0px 8px;\n cursor: pointer;\n}\n.pane-container .view .default-header .dockview-pane-header-icon {\n display: flex;\n justify-content: center;\n align-items: center;\n}\n.pane-container .view .default-header > span {\n padding-left: 8px;\n flex-grow: 1;\n}\n.pane-container:first-of-type > .pane > .pane-header {\n border-top: none !important;\n}\n.pane-container .pane {\n display: flex;\n flex-direction: column;\n overflow: hidden;\n height: 100%;\n}\n.pane-container .pane .pane-header {\n box-sizing: border-box;\n user-select: none;\n position: relative;\n outline: none;\n}\n.pane-container .pane .pane-header.pane-draggable {\n cursor: pointer;\n}\n.pane-container .pane .pane-header:focus:before, .pane-container .pane .pane-header:focus-within:before {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 5;\n content: \"\";\n pointer-events: none;\n outline: 1px solid;\n outline-width: -1px;\n outline-style: solid;\n outline-offset: -1px;\n outline-color: var(--dv-paneview-active-outline-color);\n}\n.pane-container .pane .pane-body {\n overflow-y: auto;\n overflow-x: hidden;\n flex-grow: 1;\n position: relative;\n outline: none;\n}\n.pane-container .pane .pane-body:focus:before, .pane-container .pane .pane-body:focus-within:before {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 5;\n content: \"\";\n pointer-events: none;\n outline: 1px solid;\n outline-width: -1px;\n outline-style: solid;\n outline-offset: -1px;\n outline-color: var(--dv-paneview-active-outline-color);\n}\n.dv-debug .split-view-container .sash-container .sash.enabled {\n background-color: black;\n}\n.dv-debug .split-view-container .sash-container .sash.disabled {\n background-color: orange;\n}\n.dv-debug .split-view-container .sash-container .sash.maximum {\n background-color: green;\n}\n.dv-debug .split-view-container .sash-container .sash.minimum {\n background-color: red;\n}\n\n.split-view-container {\n position: relative;\n overflow: hidden;\n height: 100%;\n width: 100%;\n}\n.split-view-container.animation .view,\n.split-view-container.animation .sash {\n transition-duration: 0.15s;\n transition-timing-function: ease-out;\n}\n.split-view-container.horizontal {\n height: 100%;\n}\n.split-view-container.horizontal > .sash-container > .sash {\n height: 100%;\n width: 4px;\n}\n.split-view-container.horizontal > .sash-container > .sash.enabled {\n cursor: ew-resize;\n}\n.split-view-container.horizontal > .sash-container > .sash.disabled {\n cursor: default;\n}\n.split-view-container.horizontal > .sash-container > .sash.maximum {\n cursor: w-resize;\n}\n.split-view-container.horizontal > .sash-container > .sash.minimum {\n cursor: e-resize;\n}\n.split-view-container.horizontal > .view-container > .view:not(:first-child)::before {\n height: 100%;\n width: 1px;\n}\n.split-view-container.vertical {\n width: 100%;\n}\n.split-view-container.vertical > .sash-container > .sash {\n width: 100%;\n height: 4px;\n}\n.split-view-container.vertical > .sash-container > .sash.enabled {\n cursor: ns-resize;\n}\n.split-view-container.vertical > .sash-container > .sash.disabled {\n cursor: default;\n}\n.split-view-container.vertical > .sash-container > .sash.maximum {\n cursor: n-resize;\n}\n.split-view-container.vertical > .sash-container > .sash.minimum {\n cursor: s-resize;\n}\n.split-view-container.vertical > .view-container > .view {\n width: 100%;\n}\n.split-view-container.vertical > .view-container > .view:not(:first-child)::before {\n height: 1px;\n width: 100%;\n}\n.split-view-container .sash-container {\n height: 100%;\n width: 100%;\n position: absolute;\n}\n.split-view-container .sash-container .sash {\n position: absolute;\n z-index: 99;\n outline: none;\n user-select: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n touch-action: none;\n}\n.split-view-container .sash-container .sash:not(.disabled):active {\n transition: background-color 0.1s ease-in-out;\n background-color: var(--dv-active-sash-color, transparent);\n}\n.split-view-container .sash-container .sash:not(.disabled):hover {\n background-color: var(--dv-active-sash-color, transparent);\n transition: background-color 0.1s ease-in-out;\n transition-delay: 0.5s;\n}\n.split-view-container .view-container {\n position: relative;\n height: 100%;\n width: 100%;\n background-color: var(--dv-background-color);\n}\n.split-view-container .view-container .view {\n height: 100%;\n box-sizing: border-box;\n overflow: auto;\n position: absolute;\n}\n.split-view-container.separator-border .view:not(:first-child)::before {\n content: \" \";\n position: absolute;\n top: 0;\n left: 0;\n z-index: 5;\n pointer-events: none;\n background-color: var(--dv-separator-border);\n}\n.dv-dragged {\n transform: translate3d(0px, 0px, 0px); /* forces tab to be drawn on a separate layer (see https://github.com/microsoft/vscode/issues/18733) */\n}\n\n.tab {\n flex-shrink: 0;\n}\n.tab:focus-within, .tab:focus {\n position: relative;\n}\n.tab:focus-within::after, .tab:focus::after {\n position: absolute;\n content: \"\";\n height: 100%;\n width: 100%;\n top: 0px;\n left: 0px;\n pointer-events: none;\n outline: 1px solid var(--dv-tab-divider-color) !important;\n outline-offset: -1px;\n z-index: 5;\n}\n.tab.dv-tab-dragging .tab-action {\n background-color: var(--dv-activegroup-visiblepanel-tab-color);\n}\n.tab.active-tab > .default-tab .tab-action {\n visibility: visible;\n}\n.tab.inactive-tab > .default-tab .tab-action {\n visibility: hidden;\n}\n.tab.inactive-tab > .default-tab:hover .tab-action {\n visibility: visible;\n}\n.tab .default-tab {\n position: relative;\n height: 100%;\n display: flex;\n min-width: 80px;\n align-items: center;\n padding: 0px 8px;\n white-space: nowrap;\n text-overflow: elipsis;\n}\n.tab .default-tab .tab-content {\n padding: 0px 8px;\n flex-grow: 1;\n}\n.tab .default-tab .action-container {\n text-align: right;\n display: flex;\n}\n.tab .default-tab .action-container .tab-list {\n display: flex;\n padding: 0px;\n margin: 0px;\n justify-content: flex-end;\n}\n.tab .default-tab .action-container .tab-list .tab-action {\n padding: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n}\n.tab .default-tab .action-container .tab-list .tab-action:hover {\n border-radius: 2px;\n background-color: var(--dv-icon-hover-background-color);\n}\n.tabs-and-actions-container {\n display: flex;\n background-color: var(--dv-tabs-and-actions-container-background-color);\n flex-shrink: 0;\n box-sizing: border-box;\n height: var(--dv-tabs-and-actions-container-height);\n font-size: var(--dv-tabs-and-actions-container-font-size);\n}\n.tabs-and-actions-container.hidden {\n display: none;\n}\n.tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .tabs-container {\n flex-grow: 1;\n}\n.tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .tabs-container .tab {\n flex-grow: 1;\n}\n.tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .void-container {\n flex-grow: 0;\n}\n.tabs-and-actions-container .void-container {\n display: flex;\n flex-grow: 1;\n cursor: grab;\n}\n.tabs-and-actions-container .tabs-container {\n display: flex;\n overflow-x: overlay;\n overflow-y: hidden;\n scrollbar-width: thin;\n /* Track */\n /* Handle */\n}\n.tabs-and-actions-container .tabs-container::-webkit-scrollbar {\n height: 3px;\n}\n.tabs-and-actions-container .tabs-container::-webkit-scrollbar-track {\n background: transparent;\n}\n.tabs-and-actions-container .tabs-container::-webkit-scrollbar-thumb {\n background: var(--dv-tabs-container-scrollbar-color);\n}\n.tabs-and-actions-container .tabs-container .tab {\n -webkit-user-drag: element;\n outline: none;\n min-width: 75px;\n cursor: pointer;\n position: relative;\n box-sizing: border-box;\n}\n.tabs-and-actions-container .tabs-container .tab:not(:first-child)::before {\n content: \" \";\n position: absolute;\n top: 0;\n left: 0;\n z-index: 5;\n pointer-events: none;\n background-color: var(--dv-tab-divider-color);\n width: 1px;\n height: 100%;\n}\n.watermark {\n display: flex;\n width: 100%;\n}\n.watermark.has-actions .watermark-title .actions-container {\n display: none;\n}\n.watermark .watermark-title {\n height: 35px;\n width: 100%;\n display: flex;\n}\n.watermark .watermark-content {\n flex-grow: 1;\n}\n.watermark .actions-container {\n display: flex;\n align-items: center;\n padding: 0px 8px;\n}\n.watermark .actions-container .close-action {\n padding: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n cursor: pointer;\n color: var(--dv-activegroup-hiddenpanel-tab-color);\n}\n.watermark .actions-container .close-action:hover {\n border-radius: 2px;\n background-color: var(--dv-icon-hover-background-color);\n}";
|
|
35
35
|
styleInject(css_248z);
|
|
36
36
|
|
|
37
37
|
class TransferObject {
|
|
@@ -260,6 +260,14 @@ var Disposable;
|
|
|
260
260
|
// noop
|
|
261
261
|
},
|
|
262
262
|
};
|
|
263
|
+
function from(func) {
|
|
264
|
+
return {
|
|
265
|
+
dispose: () => {
|
|
266
|
+
func();
|
|
267
|
+
},
|
|
268
|
+
};
|
|
269
|
+
}
|
|
270
|
+
Disposable.from = from;
|
|
263
271
|
})(Disposable || (Disposable = {}));
|
|
264
272
|
class CompositeDisposable {
|
|
265
273
|
get isDisposed() {
|
|
@@ -444,6 +452,61 @@ function quasiPreventDefault(event) {
|
|
|
444
452
|
function quasiDefaultPrevented(event) {
|
|
445
453
|
return event[QUASI_PREVENT_DEFAULT_KEY];
|
|
446
454
|
}
|
|
455
|
+
function addStyles(document, styleSheetList) {
|
|
456
|
+
const styleSheets = Array.from(styleSheetList);
|
|
457
|
+
for (const styleSheet of styleSheets) {
|
|
458
|
+
if (styleSheet.href) {
|
|
459
|
+
const link = document.createElement('link');
|
|
460
|
+
link.href = styleSheet.href;
|
|
461
|
+
link.type = styleSheet.type;
|
|
462
|
+
link.rel = 'stylesheet';
|
|
463
|
+
document.head.appendChild(link);
|
|
464
|
+
}
|
|
465
|
+
let cssTexts = [];
|
|
466
|
+
try {
|
|
467
|
+
if (styleSheet.cssRules) {
|
|
468
|
+
cssTexts = Array.from(styleSheet.cssRules).map((rule) => rule.cssText);
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
catch (err) {
|
|
472
|
+
// security errors (lack of permissions), ignore
|
|
473
|
+
}
|
|
474
|
+
for (const rule of cssTexts) {
|
|
475
|
+
const style = document.createElement('style');
|
|
476
|
+
style.appendChild(document.createTextNode(rule));
|
|
477
|
+
document.head.appendChild(style);
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
function getDomNodePagePosition(domNode) {
|
|
482
|
+
const { left, top, width, height } = domNode.getBoundingClientRect();
|
|
483
|
+
return {
|
|
484
|
+
left: left + window.scrollX,
|
|
485
|
+
top: top + window.scrollY,
|
|
486
|
+
width: width,
|
|
487
|
+
height: height,
|
|
488
|
+
};
|
|
489
|
+
}
|
|
490
|
+
/**
|
|
491
|
+
* Check whether an element is in the DOM (including the Shadow DOM)
|
|
492
|
+
* @see https://terodox.tech/how-to-tell-if-an-element-is-in-the-dom-including-the-shadow-dom/
|
|
493
|
+
*/
|
|
494
|
+
function isInDocument(element) {
|
|
495
|
+
let currentElement = element;
|
|
496
|
+
while (currentElement === null || currentElement === void 0 ? void 0 : currentElement.parentNode) {
|
|
497
|
+
if (currentElement.parentNode === document) {
|
|
498
|
+
return true;
|
|
499
|
+
}
|
|
500
|
+
else if (currentElement.parentNode instanceof DocumentFragment) {
|
|
501
|
+
// handle shadow DOMs
|
|
502
|
+
currentElement = currentElement.parentNode.host;
|
|
503
|
+
}
|
|
504
|
+
else {
|
|
505
|
+
currentElement = currentElement.parentNode;
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
return false;
|
|
509
|
+
}
|
|
447
510
|
|
|
448
511
|
function tail(arr) {
|
|
449
512
|
if (arr.length === 0) {
|
|
@@ -641,6 +704,9 @@ var Sizing;
|
|
|
641
704
|
Sizing.Invisible = Invisible;
|
|
642
705
|
})(Sizing || (Sizing = {}));
|
|
643
706
|
class Splitview {
|
|
707
|
+
get contentSize() {
|
|
708
|
+
return this._contentSize;
|
|
709
|
+
}
|
|
644
710
|
get size() {
|
|
645
711
|
return this._size;
|
|
646
712
|
}
|
|
@@ -706,7 +772,7 @@ class Splitview {
|
|
|
706
772
|
this.sashes = [];
|
|
707
773
|
this._size = 0;
|
|
708
774
|
this._orthogonalSize = 0;
|
|
709
|
-
this.
|
|
775
|
+
this._contentSize = 0;
|
|
710
776
|
this._proportions = undefined;
|
|
711
777
|
this._startSnappingEnabled = true;
|
|
712
778
|
this._endSnappingEnabled = true;
|
|
@@ -825,7 +891,7 @@ class Splitview {
|
|
|
825
891
|
);
|
|
826
892
|
});
|
|
827
893
|
// Initialize content size and proportions for first layout
|
|
828
|
-
this.
|
|
894
|
+
this._contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);
|
|
829
895
|
this.saveProportions();
|
|
830
896
|
}
|
|
831
897
|
}
|
|
@@ -1099,7 +1165,7 @@ class Splitview {
|
|
|
1099
1165
|
this.addView(view, sizing, to);
|
|
1100
1166
|
}
|
|
1101
1167
|
layout(size, orthogonalSize) {
|
|
1102
|
-
const previousSize = Math.max(this.size, this.
|
|
1168
|
+
const previousSize = Math.max(this.size, this._contentSize);
|
|
1103
1169
|
this.size = size;
|
|
1104
1170
|
this.orthogonalSize = orthogonalSize;
|
|
1105
1171
|
if (!this.proportions) {
|
|
@@ -1109,9 +1175,23 @@ class Splitview {
|
|
|
1109
1175
|
this.resize(this.viewItems.length - 1, size - previousSize, undefined, lowPriorityIndexes, highPriorityIndexes);
|
|
1110
1176
|
}
|
|
1111
1177
|
else {
|
|
1178
|
+
let total = 0;
|
|
1179
|
+
for (let i = 0; i < this.viewItems.length; i++) {
|
|
1180
|
+
const item = this.viewItems[i];
|
|
1181
|
+
const proportion = this.proportions[i];
|
|
1182
|
+
if (typeof proportion === 'number') {
|
|
1183
|
+
total += proportion;
|
|
1184
|
+
}
|
|
1185
|
+
else {
|
|
1186
|
+
size -= item.size;
|
|
1187
|
+
}
|
|
1188
|
+
}
|
|
1112
1189
|
for (let i = 0; i < this.viewItems.length; i++) {
|
|
1113
1190
|
const item = this.viewItems[i];
|
|
1114
|
-
|
|
1191
|
+
const proportion = this.proportions[i];
|
|
1192
|
+
if (typeof proportion === 'number' && total > 0) {
|
|
1193
|
+
item.size = clamp(Math.round((proportion * size) / total), item.minimumSize, item.maximumSize);
|
|
1194
|
+
}
|
|
1115
1195
|
}
|
|
1116
1196
|
}
|
|
1117
1197
|
this.distributeEmptySpace();
|
|
@@ -1148,12 +1228,12 @@ class Splitview {
|
|
|
1148
1228
|
}
|
|
1149
1229
|
}
|
|
1150
1230
|
saveProportions() {
|
|
1151
|
-
if (this.proportionalLayout && this.
|
|
1152
|
-
this._proportions = this.viewItems.map((i) => i.size / this.
|
|
1231
|
+
if (this.proportionalLayout && this._contentSize > 0) {
|
|
1232
|
+
this._proportions = this.viewItems.map((i) => i.visible ? i.size / this._contentSize : undefined);
|
|
1153
1233
|
}
|
|
1154
1234
|
}
|
|
1155
1235
|
layoutViews() {
|
|
1156
|
-
this.
|
|
1236
|
+
this._contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);
|
|
1157
1237
|
let sum = 0;
|
|
1158
1238
|
const x = [];
|
|
1159
1239
|
this.updateSashEnablement();
|
|
@@ -1247,7 +1327,7 @@ class Splitview {
|
|
|
1247
1327
|
}
|
|
1248
1328
|
else if (snappedAfter &&
|
|
1249
1329
|
collapsesDown[index] &&
|
|
1250
|
-
(position < this.
|
|
1330
|
+
(position < this._contentSize || this.endSnappingEnabled)) {
|
|
1251
1331
|
this.updateSash(sash, SashState.MAXIMUM);
|
|
1252
1332
|
}
|
|
1253
1333
|
else {
|
|
@@ -1536,7 +1616,6 @@ class LeafNode {
|
|
|
1536
1616
|
setVisible(visible) {
|
|
1537
1617
|
if (this.view.setVisible) {
|
|
1538
1618
|
this.view.setVisible(visible);
|
|
1539
|
-
this._onDidChange.fire({});
|
|
1540
1619
|
}
|
|
1541
1620
|
}
|
|
1542
1621
|
layout(size, orthogonalSize) {
|
|
@@ -1568,10 +1647,14 @@ class BranchNode extends CompositeDisposable {
|
|
|
1568
1647
|
get minimumSize() {
|
|
1569
1648
|
return this.children.length === 0
|
|
1570
1649
|
? 0
|
|
1571
|
-
: Math.max(...this.children.map((c) =>
|
|
1650
|
+
: Math.max(...this.children.map((c, index) => this.splitview.isViewVisible(index)
|
|
1651
|
+
? c.minimumOrthogonalSize
|
|
1652
|
+
: 0));
|
|
1572
1653
|
}
|
|
1573
1654
|
get maximumSize() {
|
|
1574
|
-
return Math.min(...this.children.map((c) =>
|
|
1655
|
+
return Math.min(...this.children.map((c, index) => this.splitview.isViewVisible(index)
|
|
1656
|
+
? c.maximumOrthogonalSize
|
|
1657
|
+
: Number.POSITIVE_INFINITY));
|
|
1575
1658
|
}
|
|
1576
1659
|
get minimumOrthogonalSize() {
|
|
1577
1660
|
return this.splitview.minimumSize;
|
|
@@ -1629,6 +1712,8 @@ class BranchNode extends CompositeDisposable {
|
|
|
1629
1712
|
this.children = [];
|
|
1630
1713
|
this._onDidChange = new Emitter();
|
|
1631
1714
|
this.onDidChange = this._onDidChange.event;
|
|
1715
|
+
this._onDidVisibilityChange = new Emitter();
|
|
1716
|
+
this.onDidVisibilityChange = this._onDidVisibilityChange.event;
|
|
1632
1717
|
this._orthogonalSize = orthogonalSize;
|
|
1633
1718
|
this._size = size;
|
|
1634
1719
|
this.element = document.createElement('div');
|
|
@@ -1663,7 +1748,7 @@ class BranchNode extends CompositeDisposable {
|
|
|
1663
1748
|
styles,
|
|
1664
1749
|
});
|
|
1665
1750
|
}
|
|
1666
|
-
this.addDisposables(this._onDidChange, this.splitview.onDidSashEnd(() => {
|
|
1751
|
+
this.addDisposables(this._onDidChange, this._onDidVisibilityChange, this.splitview.onDidSashEnd(() => {
|
|
1667
1752
|
this._onDidChange.fire({});
|
|
1668
1753
|
}));
|
|
1669
1754
|
this.setupChildrenEvents();
|
|
@@ -1686,7 +1771,15 @@ class BranchNode extends CompositeDisposable {
|
|
|
1686
1771
|
if (this.splitview.isViewVisible(index) === visible) {
|
|
1687
1772
|
return;
|
|
1688
1773
|
}
|
|
1774
|
+
const wereAllChildrenHidden = this.splitview.contentSize === 0;
|
|
1689
1775
|
this.splitview.setViewVisible(index, visible);
|
|
1776
|
+
const areAllChildrenHidden = this.splitview.contentSize === 0;
|
|
1777
|
+
// If all children are hidden then the parent should hide the entire splitview
|
|
1778
|
+
// If the entire splitview is hidden then the parent should show the splitview when a child is shown
|
|
1779
|
+
if ((visible && wereAllChildrenHidden) ||
|
|
1780
|
+
(!visible && areAllChildrenHidden)) {
|
|
1781
|
+
this._onDidVisibilityChange.fire(visible);
|
|
1782
|
+
}
|
|
1690
1783
|
}
|
|
1691
1784
|
moveChild(from, to) {
|
|
1692
1785
|
if (from === to) {
|
|
@@ -1750,13 +1843,20 @@ class BranchNode extends CompositeDisposable {
|
|
|
1750
1843
|
}
|
|
1751
1844
|
setupChildrenEvents() {
|
|
1752
1845
|
this._childrenDisposable.dispose();
|
|
1753
|
-
this._childrenDisposable = Event.any(...this.children.map((c) => c.onDidChange))((e) => {
|
|
1846
|
+
this._childrenDisposable = new CompositeDisposable(Event.any(...this.children.map((c) => c.onDidChange))((e) => {
|
|
1754
1847
|
/**
|
|
1755
1848
|
* indicate a change has occured to allows any re-rendering but don't bubble
|
|
1756
1849
|
* event because that was specific to this branch
|
|
1757
1850
|
*/
|
|
1758
1851
|
this._onDidChange.fire({ size: e.orthogonalSize });
|
|
1759
|
-
})
|
|
1852
|
+
}), ...this.children.map((c, i) => {
|
|
1853
|
+
if (c instanceof BranchNode) {
|
|
1854
|
+
return c.onDidVisibilityChange((visible) => {
|
|
1855
|
+
this.setChildVisible(i, visible);
|
|
1856
|
+
});
|
|
1857
|
+
}
|
|
1858
|
+
return Disposable.NONE;
|
|
1859
|
+
}));
|
|
1760
1860
|
}
|
|
1761
1861
|
dispose() {
|
|
1762
1862
|
this._childrenDisposable.dispose();
|
|
@@ -1917,7 +2017,69 @@ class Gridview {
|
|
|
1917
2017
|
get maximumHeight() {
|
|
1918
2018
|
return this.root.maximumHeight;
|
|
1919
2019
|
}
|
|
2020
|
+
maximizedView() {
|
|
2021
|
+
var _a;
|
|
2022
|
+
return (_a = this._maximizedNode) === null || _a === void 0 ? void 0 : _a.view;
|
|
2023
|
+
}
|
|
2024
|
+
hasMaximizedView() {
|
|
2025
|
+
return this._maximizedNode !== undefined;
|
|
2026
|
+
}
|
|
2027
|
+
maximizeView(view) {
|
|
2028
|
+
const location = getGridLocation(view.element);
|
|
2029
|
+
const [_, node] = this.getNode(location);
|
|
2030
|
+
if (!(node instanceof LeafNode)) {
|
|
2031
|
+
return;
|
|
2032
|
+
}
|
|
2033
|
+
if (this._maximizedNode === node) {
|
|
2034
|
+
return;
|
|
2035
|
+
}
|
|
2036
|
+
if (this.hasMaximizedView()) {
|
|
2037
|
+
this.exitMaximizedView();
|
|
2038
|
+
}
|
|
2039
|
+
function hideAllViewsBut(parent, exclude) {
|
|
2040
|
+
for (let i = 0; i < parent.children.length; i++) {
|
|
2041
|
+
const child = parent.children[i];
|
|
2042
|
+
if (child instanceof LeafNode) {
|
|
2043
|
+
if (child !== exclude) {
|
|
2044
|
+
parent.setChildVisible(i, false);
|
|
2045
|
+
}
|
|
2046
|
+
}
|
|
2047
|
+
else {
|
|
2048
|
+
hideAllViewsBut(child, exclude);
|
|
2049
|
+
}
|
|
2050
|
+
}
|
|
2051
|
+
}
|
|
2052
|
+
hideAllViewsBut(this.root, node);
|
|
2053
|
+
this._maximizedNode = node;
|
|
2054
|
+
this._onDidMaxmizedNodeChange.fire();
|
|
2055
|
+
}
|
|
2056
|
+
exitMaximizedView() {
|
|
2057
|
+
if (!this._maximizedNode) {
|
|
2058
|
+
return;
|
|
2059
|
+
}
|
|
2060
|
+
function showViewsInReverseOrder(parent) {
|
|
2061
|
+
for (let index = parent.children.length - 1; index >= 0; index--) {
|
|
2062
|
+
const child = parent.children[index];
|
|
2063
|
+
if (child instanceof LeafNode) {
|
|
2064
|
+
parent.setChildVisible(index, true);
|
|
2065
|
+
}
|
|
2066
|
+
else {
|
|
2067
|
+
showViewsInReverseOrder(child);
|
|
2068
|
+
}
|
|
2069
|
+
}
|
|
2070
|
+
}
|
|
2071
|
+
showViewsInReverseOrder(this.root);
|
|
2072
|
+
this._maximizedNode = undefined;
|
|
2073
|
+
this._onDidMaxmizedNodeChange.fire();
|
|
2074
|
+
}
|
|
1920
2075
|
serialize() {
|
|
2076
|
+
if (this.hasMaximizedView()) {
|
|
2077
|
+
/**
|
|
2078
|
+
* do not persist maximized view state but we must first exit any maximized views
|
|
2079
|
+
* before serialization to ensure the correct dimensions are persisted
|
|
2080
|
+
*/
|
|
2081
|
+
this.exitMaximizedView();
|
|
2082
|
+
}
|
|
1921
2083
|
const root = serializeBranchNode(this.getView(), this.orientation);
|
|
1922
2084
|
return {
|
|
1923
2085
|
root,
|
|
@@ -1929,7 +2091,9 @@ class Gridview {
|
|
|
1929
2091
|
dispose() {
|
|
1930
2092
|
this.disposable.dispose();
|
|
1931
2093
|
this._onDidChange.dispose();
|
|
2094
|
+
this._onDidMaxmizedNodeChange.dispose();
|
|
1932
2095
|
this.root.dispose();
|
|
2096
|
+
this._maximizedNode = undefined;
|
|
1933
2097
|
this.element.remove();
|
|
1934
2098
|
}
|
|
1935
2099
|
clear() {
|
|
@@ -1970,6 +2134,7 @@ class Gridview {
|
|
|
1970
2134
|
const oldRoot = this._root;
|
|
1971
2135
|
if (oldRoot) {
|
|
1972
2136
|
oldRoot.dispose();
|
|
2137
|
+
this._maximizedNode = undefined;
|
|
1973
2138
|
this.element.removeChild(oldRoot.element);
|
|
1974
2139
|
}
|
|
1975
2140
|
this._root = root;
|
|
@@ -2056,9 +2221,12 @@ class Gridview {
|
|
|
2056
2221
|
constructor(proportionalLayout, styles, orientation) {
|
|
2057
2222
|
this.proportionalLayout = proportionalLayout;
|
|
2058
2223
|
this.styles = styles;
|
|
2224
|
+
this._maximizedNode = undefined;
|
|
2059
2225
|
this.disposable = new MutableDisposable();
|
|
2060
2226
|
this._onDidChange = new Emitter();
|
|
2061
2227
|
this.onDidChange = this._onDidChange.event;
|
|
2228
|
+
this._onDidMaxmizedNodeChange = new Emitter();
|
|
2229
|
+
this.onDidMaxmizedNodeChange = this._onDidMaxmizedNodeChange.event;
|
|
2062
2230
|
this.element = document.createElement('div');
|
|
2063
2231
|
this.element.className = 'grid-view';
|
|
2064
2232
|
this.root = new BranchNode(orientation, proportionalLayout, styles, 0, 0);
|
|
@@ -2072,6 +2240,9 @@ class Gridview {
|
|
|
2072
2240
|
return parent.isChildVisible(index);
|
|
2073
2241
|
}
|
|
2074
2242
|
setViewVisible(location, visible) {
|
|
2243
|
+
if (this.hasMaximizedView()) {
|
|
2244
|
+
this.exitMaximizedView();
|
|
2245
|
+
}
|
|
2075
2246
|
const [rest, index] = tail(location);
|
|
2076
2247
|
const [, parent] = this.getNode(rest);
|
|
2077
2248
|
if (!(parent instanceof BranchNode)) {
|
|
@@ -2080,6 +2251,9 @@ class Gridview {
|
|
|
2080
2251
|
parent.setChildVisible(index, visible);
|
|
2081
2252
|
}
|
|
2082
2253
|
moveView(parentLocation, from, to) {
|
|
2254
|
+
if (this.hasMaximizedView()) {
|
|
2255
|
+
this.exitMaximizedView();
|
|
2256
|
+
}
|
|
2083
2257
|
const [, parent] = this.getNode(parentLocation);
|
|
2084
2258
|
if (!(parent instanceof BranchNode)) {
|
|
2085
2259
|
throw new Error('Invalid location');
|
|
@@ -2087,6 +2261,9 @@ class Gridview {
|
|
|
2087
2261
|
parent.moveChild(from, to);
|
|
2088
2262
|
}
|
|
2089
2263
|
addView(view, size, location) {
|
|
2264
|
+
if (this.hasMaximizedView()) {
|
|
2265
|
+
this.exitMaximizedView();
|
|
2266
|
+
}
|
|
2090
2267
|
const [rest, index] = tail(location);
|
|
2091
2268
|
const [pathToParent, parent] = this.getNode(rest);
|
|
2092
2269
|
if (parent instanceof BranchNode) {
|
|
@@ -2119,6 +2296,9 @@ class Gridview {
|
|
|
2119
2296
|
return this.removeView(location, sizing);
|
|
2120
2297
|
}
|
|
2121
2298
|
removeView(location, sizing) {
|
|
2299
|
+
if (this.hasMaximizedView()) {
|
|
2300
|
+
this.exitMaximizedView();
|
|
2301
|
+
}
|
|
2122
2302
|
const [rest, index] = tail(location);
|
|
2123
2303
|
const [pathToParent, parent] = this.getNode(rest);
|
|
2124
2304
|
if (!(parent instanceof BranchNode)) {
|
|
@@ -2856,6 +3036,24 @@ class DockviewApi {
|
|
|
2856
3036
|
moveToPrevious(options) {
|
|
2857
3037
|
this.component.moveToPrevious(options);
|
|
2858
3038
|
}
|
|
3039
|
+
maximizeGroup(panel) {
|
|
3040
|
+
this.component.maximizeGroup(panel.group);
|
|
3041
|
+
}
|
|
3042
|
+
hasMaximizedGroup() {
|
|
3043
|
+
return this.component.hasMaximizedGroup();
|
|
3044
|
+
}
|
|
3045
|
+
exitMaxmizedGroup() {
|
|
3046
|
+
this.component.exitMaximizedGroup();
|
|
3047
|
+
}
|
|
3048
|
+
get onDidMaxmizedGroupChange() {
|
|
3049
|
+
return this.component.onDidMaxmizedGroupChange;
|
|
3050
|
+
}
|
|
3051
|
+
/**
|
|
3052
|
+
* Add a popout group in a new Window
|
|
3053
|
+
*/
|
|
3054
|
+
addPopoutGroup(item, options) {
|
|
3055
|
+
this.component.addPopoutGroup(item, options);
|
|
3056
|
+
}
|
|
2859
3057
|
}
|
|
2860
3058
|
|
|
2861
3059
|
class DragAndDropObserver extends CompositeDisposable {
|
|
@@ -2866,29 +3064,44 @@ class DragAndDropObserver extends CompositeDisposable {
|
|
|
2866
3064
|
this.target = null;
|
|
2867
3065
|
this.registerListeners();
|
|
2868
3066
|
}
|
|
3067
|
+
onDragEnter(e) {
|
|
3068
|
+
this.target = e.target;
|
|
3069
|
+
this.callbacks.onDragEnter(e);
|
|
3070
|
+
}
|
|
3071
|
+
onDragOver(e) {
|
|
3072
|
+
e.preventDefault(); // needed so that the drop event fires (https://stackoverflow.com/questions/21339924/drop-event-not-firing-in-chrome)
|
|
3073
|
+
if (this.callbacks.onDragOver) {
|
|
3074
|
+
this.callbacks.onDragOver(e);
|
|
3075
|
+
}
|
|
3076
|
+
}
|
|
3077
|
+
onDragLeave(e) {
|
|
3078
|
+
if (this.target === e.target) {
|
|
3079
|
+
this.target = null;
|
|
3080
|
+
this.callbacks.onDragLeave(e);
|
|
3081
|
+
}
|
|
3082
|
+
}
|
|
3083
|
+
onDragEnd(e) {
|
|
3084
|
+
this.target = null;
|
|
3085
|
+
this.callbacks.onDragEnd(e);
|
|
3086
|
+
}
|
|
3087
|
+
onDrop(e) {
|
|
3088
|
+
this.callbacks.onDrop(e);
|
|
3089
|
+
}
|
|
2869
3090
|
registerListeners() {
|
|
2870
3091
|
this.addDisposables(addDisposableListener(this.element, 'dragenter', (e) => {
|
|
2871
|
-
this.
|
|
2872
|
-
this.callbacks.onDragEnter(e);
|
|
3092
|
+
this.onDragEnter(e);
|
|
2873
3093
|
}, true));
|
|
2874
3094
|
this.addDisposables(addDisposableListener(this.element, 'dragover', (e) => {
|
|
2875
|
-
|
|
2876
|
-
if (this.callbacks.onDragOver) {
|
|
2877
|
-
this.callbacks.onDragOver(e);
|
|
2878
|
-
}
|
|
3095
|
+
this.onDragOver(e);
|
|
2879
3096
|
}, true));
|
|
2880
3097
|
this.addDisposables(addDisposableListener(this.element, 'dragleave', (e) => {
|
|
2881
|
-
|
|
2882
|
-
this.target = null;
|
|
2883
|
-
this.callbacks.onDragLeave(e);
|
|
2884
|
-
}
|
|
3098
|
+
this.onDragLeave(e);
|
|
2885
3099
|
}));
|
|
2886
3100
|
this.addDisposables(addDisposableListener(this.element, 'dragend', (e) => {
|
|
2887
|
-
this.
|
|
2888
|
-
this.callbacks.onDragEnd(e);
|
|
3101
|
+
this.onDragEnd(e);
|
|
2889
3102
|
}));
|
|
2890
3103
|
this.addDisposables(addDisposableListener(this.element, 'drop', (e) => {
|
|
2891
|
-
this.
|
|
3104
|
+
this.onDrop(e);
|
|
2892
3105
|
}));
|
|
2893
3106
|
}
|
|
2894
3107
|
}
|
|
@@ -2940,7 +3153,7 @@ class Droptarget extends CompositeDisposable {
|
|
|
2940
3153
|
this.onDrop = this._onDrop.event;
|
|
2941
3154
|
// use a set to take advantage of #<set>.has
|
|
2942
3155
|
this._acceptedTargetZonesSet = new Set(this.options.acceptedTargetZones);
|
|
2943
|
-
this.
|
|
3156
|
+
this.dnd = new DragAndDropObserver(this.element, {
|
|
2944
3157
|
onDragEnter: () => undefined,
|
|
2945
3158
|
onDragOver: (e) => {
|
|
2946
3159
|
if (this._acceptedTargetZonesSet.size === 0) {
|
|
@@ -3007,7 +3220,8 @@ class Droptarget extends CompositeDisposable {
|
|
|
3007
3220
|
this._onDrop.fire({ position: state, nativeEvent: e });
|
|
3008
3221
|
}
|
|
3009
3222
|
},
|
|
3010
|
-
})
|
|
3223
|
+
});
|
|
3224
|
+
this.addDisposables(this._onDrop, this.dnd);
|
|
3011
3225
|
}
|
|
3012
3226
|
setTargetZones(acceptedTargetZones) {
|
|
3013
3227
|
this._acceptedTargetZonesSet = new Set(acceptedTargetZones);
|
|
@@ -3163,12 +3377,22 @@ function calculateQuadrantAsPixels(overlayType, x, y, width, height, threshold)
|
|
|
3163
3377
|
return 'center';
|
|
3164
3378
|
}
|
|
3165
3379
|
|
|
3380
|
+
var DockviewDropTargets;
|
|
3381
|
+
(function (DockviewDropTargets) {
|
|
3382
|
+
DockviewDropTargets[DockviewDropTargets["Tab"] = 0] = "Tab";
|
|
3383
|
+
DockviewDropTargets[DockviewDropTargets["Panel"] = 1] = "Panel";
|
|
3384
|
+
DockviewDropTargets[DockviewDropTargets["TabContainer"] = 2] = "TabContainer";
|
|
3385
|
+
DockviewDropTargets[DockviewDropTargets["Edge"] = 3] = "Edge";
|
|
3386
|
+
})(DockviewDropTargets || (DockviewDropTargets = {}));
|
|
3387
|
+
|
|
3166
3388
|
class ContentContainer extends CompositeDisposable {
|
|
3167
3389
|
get element() {
|
|
3168
3390
|
return this._element;
|
|
3169
3391
|
}
|
|
3170
|
-
constructor() {
|
|
3392
|
+
constructor(accessor, group) {
|
|
3171
3393
|
super();
|
|
3394
|
+
this.accessor = accessor;
|
|
3395
|
+
this.group = group;
|
|
3172
3396
|
this.disposable = new MutableDisposable();
|
|
3173
3397
|
this._onDidFocus = new Emitter();
|
|
3174
3398
|
this.onDidFocus = this._onDidFocus.event;
|
|
@@ -3178,11 +3402,38 @@ class ContentContainer extends CompositeDisposable {
|
|
|
3178
3402
|
this._element.className = 'content-container';
|
|
3179
3403
|
this._element.tabIndex = -1;
|
|
3180
3404
|
this.addDisposables(this._onDidFocus, this._onDidBlur);
|
|
3181
|
-
|
|
3182
|
-
|
|
3183
|
-
|
|
3184
|
-
|
|
3185
|
-
|
|
3405
|
+
this.dropTarget = new Droptarget(this.element, {
|
|
3406
|
+
acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],
|
|
3407
|
+
canDisplayOverlay: (event, position) => {
|
|
3408
|
+
if (this.group.locked === 'no-drop-target' ||
|
|
3409
|
+
(this.group.locked && position === 'center')) {
|
|
3410
|
+
return false;
|
|
3411
|
+
}
|
|
3412
|
+
const data = getPanelData();
|
|
3413
|
+
if (!data &&
|
|
3414
|
+
event.shiftKey &&
|
|
3415
|
+
this.group.location !== 'floating') {
|
|
3416
|
+
return false;
|
|
3417
|
+
}
|
|
3418
|
+
if (data && data.viewId === this.accessor.id) {
|
|
3419
|
+
if (data.groupId === this.group.id) {
|
|
3420
|
+
if (position === 'center') {
|
|
3421
|
+
// don't allow to drop on self for center position
|
|
3422
|
+
return false;
|
|
3423
|
+
}
|
|
3424
|
+
if (data.panelId === null) {
|
|
3425
|
+
// don't allow group move to drop anywhere on self
|
|
3426
|
+
return false;
|
|
3427
|
+
}
|
|
3428
|
+
}
|
|
3429
|
+
const groupHasOnePanelAndIsActiveDragElement = this.group.panels.length === 1 &&
|
|
3430
|
+
data.groupId === this.group.id;
|
|
3431
|
+
return !groupHasOnePanelAndIsActiveDragElement;
|
|
3432
|
+
}
|
|
3433
|
+
return this.group.canDisplayOverlay(event, position, DockviewDropTargets.Panel);
|
|
3434
|
+
},
|
|
3435
|
+
});
|
|
3436
|
+
this.addDisposables(this.dropTarget);
|
|
3186
3437
|
}
|
|
3187
3438
|
show() {
|
|
3188
3439
|
this.element.style.display = '';
|
|
@@ -3190,23 +3441,43 @@ class ContentContainer extends CompositeDisposable {
|
|
|
3190
3441
|
hide() {
|
|
3191
3442
|
this.element.style.display = 'none';
|
|
3192
3443
|
}
|
|
3193
|
-
|
|
3194
|
-
|
|
3195
|
-
|
|
3196
|
-
|
|
3197
|
-
|
|
3198
|
-
|
|
3199
|
-
|
|
3200
|
-
|
|
3201
|
-
|
|
3202
|
-
this.panel = undefined;
|
|
3444
|
+
renderPanel(panel, options = { asActive: true }) {
|
|
3445
|
+
const doRender = options.asActive ||
|
|
3446
|
+
(this.panel && this.group.isPanelActive(this.panel));
|
|
3447
|
+
if (this.panel &&
|
|
3448
|
+
this.panel.view.content.element.parentElement === this._element) {
|
|
3449
|
+
/**
|
|
3450
|
+
* If the currently attached panel is mounted directly to the content then remove it
|
|
3451
|
+
*/
|
|
3452
|
+
this._element.removeChild(this.panel.view.content.element);
|
|
3203
3453
|
}
|
|
3204
3454
|
this.panel = panel;
|
|
3205
|
-
|
|
3206
|
-
|
|
3207
|
-
|
|
3208
|
-
|
|
3209
|
-
|
|
3455
|
+
let container;
|
|
3456
|
+
switch (panel.api.renderer) {
|
|
3457
|
+
case 'onlyWhenVisibile':
|
|
3458
|
+
this.accessor.overlayRenderContainer.detatch(panel);
|
|
3459
|
+
if (this.panel) {
|
|
3460
|
+
if (doRender) {
|
|
3461
|
+
this._element.appendChild(this.panel.view.content.element);
|
|
3462
|
+
}
|
|
3463
|
+
}
|
|
3464
|
+
container = this._element;
|
|
3465
|
+
break;
|
|
3466
|
+
case 'always':
|
|
3467
|
+
if (panel.view.content.element.parentElement === this._element) {
|
|
3468
|
+
this._element.removeChild(panel.view.content.element);
|
|
3469
|
+
}
|
|
3470
|
+
container = this.accessor.overlayRenderContainer.attach({
|
|
3471
|
+
panel,
|
|
3472
|
+
referenceContainer: this,
|
|
3473
|
+
});
|
|
3474
|
+
break;
|
|
3475
|
+
}
|
|
3476
|
+
if (doRender) {
|
|
3477
|
+
const _onDidFocus = panel.view.content.onDidFocus;
|
|
3478
|
+
const _onDidBlur = panel.view.content.onDidBlur;
|
|
3479
|
+
const focusTracker = trackFocus(container);
|
|
3480
|
+
const disposable = new CompositeDisposable();
|
|
3210
3481
|
disposable.addDisposables(focusTracker, focusTracker.onDidFocus(() => this._onDidFocus.fire()), focusTracker.onDidBlur(() => this._onDidBlur.fire()));
|
|
3211
3482
|
if (_onDidFocus) {
|
|
3212
3483
|
disposable.addDisposables(_onDidFocus(() => this._onDidFocus.fire()));
|
|
@@ -3214,17 +3485,23 @@ class ContentContainer extends CompositeDisposable {
|
|
|
3214
3485
|
if (_onDidBlur) {
|
|
3215
3486
|
disposable.addDisposables(_onDidBlur(() => this._onDidBlur.fire()));
|
|
3216
3487
|
}
|
|
3217
|
-
this.
|
|
3488
|
+
this.disposable.value = disposable;
|
|
3218
3489
|
}
|
|
3219
|
-
|
|
3490
|
+
}
|
|
3491
|
+
openPanel(panel) {
|
|
3492
|
+
if (this.panel === panel) {
|
|
3493
|
+
return;
|
|
3494
|
+
}
|
|
3495
|
+
this.renderPanel(panel);
|
|
3220
3496
|
}
|
|
3221
3497
|
layout(_width, _height) {
|
|
3222
3498
|
// noop
|
|
3223
3499
|
}
|
|
3224
3500
|
closePanel() {
|
|
3225
|
-
|
|
3226
|
-
|
|
3227
|
-
|
|
3501
|
+
if (this.panel) {
|
|
3502
|
+
if (this.accessor.options.defaultRenderer === 'onlyWhenVisibile') {
|
|
3503
|
+
this._element.removeChild(this.panel.view.content.element);
|
|
3504
|
+
}
|
|
3228
3505
|
this.panel = undefined;
|
|
3229
3506
|
}
|
|
3230
3507
|
}
|
|
@@ -3234,14 +3511,6 @@ class ContentContainer extends CompositeDisposable {
|
|
|
3234
3511
|
}
|
|
3235
3512
|
}
|
|
3236
3513
|
|
|
3237
|
-
var DockviewDropTargets;
|
|
3238
|
-
(function (DockviewDropTargets) {
|
|
3239
|
-
DockviewDropTargets[DockviewDropTargets["Tab"] = 0] = "Tab";
|
|
3240
|
-
DockviewDropTargets[DockviewDropTargets["Panel"] = 1] = "Panel";
|
|
3241
|
-
DockviewDropTargets[DockviewDropTargets["TabContainer"] = 2] = "TabContainer";
|
|
3242
|
-
DockviewDropTargets[DockviewDropTargets["Edge"] = 3] = "Edge";
|
|
3243
|
-
})(DockviewDropTargets || (DockviewDropTargets = {}));
|
|
3244
|
-
|
|
3245
3514
|
class DragHandler extends CompositeDisposable {
|
|
3246
3515
|
constructor(el) {
|
|
3247
3516
|
super();
|
|
@@ -3416,7 +3685,7 @@ class GroupDragHandler extends DragHandler {
|
|
|
3416
3685
|
}, true));
|
|
3417
3686
|
}
|
|
3418
3687
|
isCancelled(_event) {
|
|
3419
|
-
if (this.group.api.
|
|
3688
|
+
if (this.group.api.location === 'floating' && !_event.shiftKey) {
|
|
3420
3689
|
return true;
|
|
3421
3690
|
}
|
|
3422
3691
|
return false;
|
|
@@ -3618,7 +3887,7 @@ class TabsContainer extends CompositeDisposable {
|
|
|
3618
3887
|
const isFloatingGroupsEnabled = !this.accessor.options.disableFloatingGroups;
|
|
3619
3888
|
if (isFloatingGroupsEnabled &&
|
|
3620
3889
|
event.shiftKey &&
|
|
3621
|
-
|
|
3890
|
+
this.group.api.location !== 'floating') {
|
|
3622
3891
|
event.preventDefault();
|
|
3623
3892
|
const { top, left } = this.element.getBoundingClientRect();
|
|
3624
3893
|
const { top: rootTop, left: rootLeft } = this.accessor.element.getBoundingClientRect();
|
|
@@ -3683,7 +3952,7 @@ class TabsContainer extends CompositeDisposable {
|
|
|
3683
3952
|
}), tab.onChanged((event) => {
|
|
3684
3953
|
var _a;
|
|
3685
3954
|
const isFloatingGroupsEnabled = !this.accessor.options.disableFloatingGroups;
|
|
3686
|
-
const isFloatingWithOnePanel = this.group.api.
|
|
3955
|
+
const isFloatingWithOnePanel = this.group.api.location === 'floating' && this.size === 1;
|
|
3687
3956
|
if (isFloatingGroupsEnabled &&
|
|
3688
3957
|
!isFloatingWithOnePanel &&
|
|
3689
3958
|
event.shiftKey) {
|
|
@@ -3766,15 +4035,37 @@ class DockviewGroupPanelModel extends CompositeDisposable {
|
|
|
3766
4035
|
}
|
|
3767
4036
|
return isAncestor(document.activeElement, this.contentContainer.element);
|
|
3768
4037
|
}
|
|
3769
|
-
get
|
|
3770
|
-
return this.
|
|
3771
|
-
}
|
|
3772
|
-
set
|
|
3773
|
-
this.
|
|
3774
|
-
this.
|
|
3775
|
-
toggleClass(this.container, 'dv-groupview-
|
|
3776
|
-
|
|
3777
|
-
|
|
4038
|
+
get location() {
|
|
4039
|
+
return this._location;
|
|
4040
|
+
}
|
|
4041
|
+
set location(value) {
|
|
4042
|
+
this._location = value;
|
|
4043
|
+
toggleClass(this.container, 'dv-groupview-floating', false);
|
|
4044
|
+
toggleClass(this.container, 'dv-groupview-popout', false);
|
|
4045
|
+
switch (value) {
|
|
4046
|
+
case 'grid':
|
|
4047
|
+
this.contentContainer.dropTarget.setTargetZones([
|
|
4048
|
+
'top',
|
|
4049
|
+
'bottom',
|
|
4050
|
+
'left',
|
|
4051
|
+
'right',
|
|
4052
|
+
'center',
|
|
4053
|
+
]);
|
|
4054
|
+
break;
|
|
4055
|
+
case 'floating':
|
|
4056
|
+
this.contentContainer.dropTarget.setTargetZones(['center']);
|
|
4057
|
+
this.contentContainer.dropTarget.setTargetZones(value
|
|
4058
|
+
? ['center']
|
|
4059
|
+
: ['top', 'bottom', 'left', 'right', 'center']);
|
|
4060
|
+
toggleClass(this.container, 'dv-groupview-floating', true);
|
|
4061
|
+
break;
|
|
4062
|
+
case 'popout':
|
|
4063
|
+
this.contentContainer.dropTarget.setTargetZones(['center']);
|
|
4064
|
+
toggleClass(this.container, 'dv-groupview-popout', true);
|
|
4065
|
+
break;
|
|
4066
|
+
}
|
|
4067
|
+
this.groupPanel.api._onDidLocationChange.fire({
|
|
4068
|
+
location: this.location,
|
|
3778
4069
|
});
|
|
3779
4070
|
}
|
|
3780
4071
|
constructor(container, accessor, id, options, groupPanel) {
|
|
@@ -3787,7 +4078,7 @@ class DockviewGroupPanelModel extends CompositeDisposable {
|
|
|
3787
4078
|
this.groupPanel = groupPanel;
|
|
3788
4079
|
this._isGroupActive = false;
|
|
3789
4080
|
this._locked = false;
|
|
3790
|
-
this.
|
|
4081
|
+
this._location = 'grid';
|
|
3791
4082
|
this.mostRecentlyUsed = [];
|
|
3792
4083
|
this._onDidChange = new Emitter();
|
|
3793
4084
|
this.onDidChange = this._onDidChange.event;
|
|
@@ -3810,35 +4101,7 @@ class DockviewGroupPanelModel extends CompositeDisposable {
|
|
|
3810
4101
|
this.onDidActivePanelChange = this._onDidActivePanelChange.event;
|
|
3811
4102
|
toggleClass(this.container, 'groupview', true);
|
|
3812
4103
|
this.tabsContainer = new TabsContainer(this.accessor, this.groupPanel);
|
|
3813
|
-
this.contentContainer = new ContentContainer();
|
|
3814
|
-
this.dropTarget = new Droptarget(this.contentContainer.element, {
|
|
3815
|
-
acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],
|
|
3816
|
-
canDisplayOverlay: (event, position) => {
|
|
3817
|
-
if (this.locked === 'no-drop-target' ||
|
|
3818
|
-
(this.locked && position === 'center')) {
|
|
3819
|
-
return false;
|
|
3820
|
-
}
|
|
3821
|
-
const data = getPanelData();
|
|
3822
|
-
if (!data && event.shiftKey && !this.isFloating) {
|
|
3823
|
-
return false;
|
|
3824
|
-
}
|
|
3825
|
-
if (data && data.viewId === this.accessor.id) {
|
|
3826
|
-
if (data.groupId === this.id) {
|
|
3827
|
-
if (position === 'center') {
|
|
3828
|
-
// don't allow to drop on self for center position
|
|
3829
|
-
return false;
|
|
3830
|
-
}
|
|
3831
|
-
if (data.panelId === null) {
|
|
3832
|
-
// don't allow group move to drop anywhere on self
|
|
3833
|
-
return false;
|
|
3834
|
-
}
|
|
3835
|
-
}
|
|
3836
|
-
const groupHasOnePanelAndIsActiveDragElement = this._panels.length === 1 && data.groupId === this.id;
|
|
3837
|
-
return !groupHasOnePanelAndIsActiveDragElement;
|
|
3838
|
-
}
|
|
3839
|
-
return this.canDisplayOverlay(event, position, DockviewDropTargets.Panel);
|
|
3840
|
-
},
|
|
3841
|
-
});
|
|
4104
|
+
this.contentContainer = new ContentContainer(this.accessor, this);
|
|
3842
4105
|
container.append(this.tabsContainer.element, this.contentContainer.element);
|
|
3843
4106
|
this.header.hidden = !!options.hideHeader;
|
|
3844
4107
|
this.locked = (_a = options.locked) !== null && _a !== void 0 ? _a : false;
|
|
@@ -3852,7 +4115,7 @@ class DockviewGroupPanelModel extends CompositeDisposable {
|
|
|
3852
4115
|
this.accessor.doSetGroupActive(this.groupPanel, true);
|
|
3853
4116
|
}), this.contentContainer.onDidBlur(() => {
|
|
3854
4117
|
// noop
|
|
3855
|
-
}), this.dropTarget.onDrop((event) => {
|
|
4118
|
+
}), this.contentContainer.dropTarget.onDrop((event) => {
|
|
3856
4119
|
this.handleDropEvent(event.nativeEvent, event.position);
|
|
3857
4120
|
}), this._onMove, this._onDidChange, this._onDidDrop, this._onDidAddPanel, this._onDidRemovePanel, this._onDidActivePanelChange);
|
|
3858
4121
|
}
|
|
@@ -3901,6 +4164,9 @@ class DockviewGroupPanelModel extends CompositeDisposable {
|
|
|
3901
4164
|
this.tabsContainer.setPrefixActionsElement(this._prefixHeaderActions.element);
|
|
3902
4165
|
}
|
|
3903
4166
|
}
|
|
4167
|
+
rerender(panel) {
|
|
4168
|
+
this.contentContainer.renderPanel(panel, { asActive: false });
|
|
4169
|
+
}
|
|
3904
4170
|
indexOf(panel) {
|
|
3905
4171
|
return this.tabsContainer.indexOf(panel.id);
|
|
3906
4172
|
}
|
|
@@ -4092,12 +4358,12 @@ class DockviewGroupPanelModel extends CompositeDisposable {
|
|
|
4092
4358
|
doAddPanel(panel, index = this.panels.length, skipSetActive = false) {
|
|
4093
4359
|
const existingPanel = this._panels.indexOf(panel);
|
|
4094
4360
|
const hasExistingPanel = existingPanel > -1;
|
|
4361
|
+
this.tabsContainer.show();
|
|
4362
|
+
this.contentContainer.show();
|
|
4095
4363
|
this.tabsContainer.openPanel(panel, index);
|
|
4096
4364
|
if (!skipSetActive) {
|
|
4097
4365
|
this.contentContainer.openPanel(panel);
|
|
4098
4366
|
}
|
|
4099
|
-
this.tabsContainer.show();
|
|
4100
|
-
this.contentContainer.show();
|
|
4101
4367
|
if (hasExistingPanel) {
|
|
4102
4368
|
// TODO - need to ensure ordering hasn't changed and if it has need to re-order this.panels
|
|
4103
4369
|
return;
|
|
@@ -4213,7 +4479,6 @@ class DockviewGroupPanelModel extends CompositeDisposable {
|
|
|
4213
4479
|
for (const panel of this.panels) {
|
|
4214
4480
|
panel.dispose();
|
|
4215
4481
|
}
|
|
4216
|
-
this.dropTarget.dispose();
|
|
4217
4482
|
this.tabsContainer.dispose();
|
|
4218
4483
|
this.contentContainer.dispose();
|
|
4219
4484
|
}
|
|
@@ -4252,7 +4517,7 @@ class Resizable extends CompositeDisposable {
|
|
|
4252
4517
|
if (this.disableResizing) {
|
|
4253
4518
|
return;
|
|
4254
4519
|
}
|
|
4255
|
-
if (!
|
|
4520
|
+
if (!isInDocument(this._element)) {
|
|
4256
4521
|
/**
|
|
4257
4522
|
* since the event is dispatched through requestAnimationFrame there is a small chance
|
|
4258
4523
|
* the component is no longer attached to the DOM, if that is the case the dimensions
|
|
@@ -4344,6 +4609,21 @@ class BaseGrid extends Resizable {
|
|
|
4344
4609
|
isVisible(panel) {
|
|
4345
4610
|
return this.gridview.isViewVisible(getGridLocation(panel.element));
|
|
4346
4611
|
}
|
|
4612
|
+
maximizeGroup(panel) {
|
|
4613
|
+
this.gridview.maximizeView(panel);
|
|
4614
|
+
}
|
|
4615
|
+
isMaximizedGroup(panel) {
|
|
4616
|
+
return this.gridview.maximizedView() === panel;
|
|
4617
|
+
}
|
|
4618
|
+
exitMaximizedGroup() {
|
|
4619
|
+
this.gridview.exitMaximizedView();
|
|
4620
|
+
}
|
|
4621
|
+
hasMaximizedGroup() {
|
|
4622
|
+
return this.gridview.hasMaximizedView();
|
|
4623
|
+
}
|
|
4624
|
+
get onDidMaxmizedGroupChange() {
|
|
4625
|
+
return this.gridview.onDidMaxmizedNodeChange;
|
|
4626
|
+
}
|
|
4347
4627
|
doAddGroup(group, location = [0], size) {
|
|
4348
4628
|
this.gridview.addView(group, size !== null && size !== void 0 ? size : Sizing.Distribute, location);
|
|
4349
4629
|
this._onDidAddGroup.fire(group);
|
|
@@ -5120,32 +5400,63 @@ class GridviewPanel extends BasePanelView {
|
|
|
5120
5400
|
}
|
|
5121
5401
|
}
|
|
5122
5402
|
|
|
5403
|
+
// TODO find a better way to initialize and avoid needing null checks
|
|
5404
|
+
const NOT_INITIALIZED_MESSAGE = 'DockviewGroupPanelApiImpl not initialized';
|
|
5123
5405
|
class DockviewGroupPanelApiImpl extends GridviewPanelApiImpl {
|
|
5124
|
-
get
|
|
5406
|
+
get location() {
|
|
5125
5407
|
if (!this._group) {
|
|
5126
|
-
throw new Error(
|
|
5408
|
+
throw new Error(NOT_INITIALIZED_MESSAGE);
|
|
5127
5409
|
}
|
|
5128
|
-
return this._group.model.
|
|
5410
|
+
return this._group.model.location;
|
|
5129
5411
|
}
|
|
5130
5412
|
constructor(id, accessor) {
|
|
5131
5413
|
super(id);
|
|
5132
5414
|
this.accessor = accessor;
|
|
5133
|
-
this.
|
|
5134
|
-
this.
|
|
5135
|
-
this.addDisposables(this.
|
|
5415
|
+
this._onDidLocationChange = new Emitter();
|
|
5416
|
+
this.onDidLocationChange = this._onDidLocationChange.event;
|
|
5417
|
+
this.addDisposables(this._onDidLocationChange);
|
|
5136
5418
|
}
|
|
5137
5419
|
moveTo(options) {
|
|
5138
|
-
var _a;
|
|
5420
|
+
var _a, _b, _c;
|
|
5421
|
+
if (!this._group) {
|
|
5422
|
+
throw new Error(NOT_INITIALIZED_MESSAGE);
|
|
5423
|
+
}
|
|
5424
|
+
const group = (_a = options.group) !== null && _a !== void 0 ? _a : this.accessor.addGroup({
|
|
5425
|
+
direction: positionToDirection((_b = options.position) !== null && _b !== void 0 ? _b : 'right'),
|
|
5426
|
+
});
|
|
5427
|
+
this.accessor.moveGroupOrPanel(group, this._group.id, undefined, options.group ? (_c = options.position) !== null && _c !== void 0 ? _c : 'center' : 'center');
|
|
5428
|
+
}
|
|
5429
|
+
maximize() {
|
|
5430
|
+
if (!this._group) {
|
|
5431
|
+
throw new Error(NOT_INITIALIZED_MESSAGE);
|
|
5432
|
+
}
|
|
5433
|
+
if (this.location !== 'grid') {
|
|
5434
|
+
// only grid groups can be maximized
|
|
5435
|
+
return;
|
|
5436
|
+
}
|
|
5437
|
+
this.accessor.maximizeGroup(this._group);
|
|
5438
|
+
}
|
|
5439
|
+
isMaximized() {
|
|
5139
5440
|
if (!this._group) {
|
|
5140
|
-
throw new Error(
|
|
5441
|
+
throw new Error(NOT_INITIALIZED_MESSAGE);
|
|
5442
|
+
}
|
|
5443
|
+
return this.accessor.isMaximizedGroup(this._group);
|
|
5444
|
+
}
|
|
5445
|
+
exitMaximized() {
|
|
5446
|
+
if (!this._group) {
|
|
5447
|
+
throw new Error(NOT_INITIALIZED_MESSAGE);
|
|
5448
|
+
}
|
|
5449
|
+
if (this.isMaximized()) {
|
|
5450
|
+
this.accessor.exitMaximizedGroup();
|
|
5141
5451
|
}
|
|
5142
|
-
this.accessor.moveGroupOrPanel(options.group, this._group.id, undefined, (_a = options.position) !== null && _a !== void 0 ? _a : 'center');
|
|
5143
5452
|
}
|
|
5144
5453
|
initialize(group) {
|
|
5145
5454
|
this._group = group;
|
|
5146
5455
|
}
|
|
5147
5456
|
}
|
|
5148
5457
|
|
|
5458
|
+
const MINIMUM_DOCKVIEW_GROUP_PANEL_WIDTH = 100;
|
|
5459
|
+
const MINIMUM_DOCKVIEW_GROUP_PANEL_HEIGHT = 100;
|
|
5149
5460
|
class DockviewGroupPanel extends GridviewPanel {
|
|
5150
5461
|
get panels() {
|
|
5151
5462
|
return this._model.panels;
|
|
@@ -5170,8 +5481,8 @@ class DockviewGroupPanel extends GridviewPanel {
|
|
|
5170
5481
|
}
|
|
5171
5482
|
constructor(accessor, id, options) {
|
|
5172
5483
|
super(id, 'groupview_default', {
|
|
5173
|
-
minimumHeight:
|
|
5174
|
-
minimumWidth:
|
|
5484
|
+
minimumHeight: MINIMUM_DOCKVIEW_GROUP_PANEL_HEIGHT,
|
|
5485
|
+
minimumWidth: MINIMUM_DOCKVIEW_GROUP_PANEL_WIDTH,
|
|
5175
5486
|
}, new DockviewGroupPanelApiImpl(id, accessor));
|
|
5176
5487
|
this.api.initialize(this); // cannot use 'this' after after 'super' call
|
|
5177
5488
|
this._model = new DockviewGroupPanelModel(this.element, accessor, id, options, this);
|
|
@@ -5225,8 +5536,10 @@ class DockviewPanelApiImpl extends GridviewPanelApiImpl {
|
|
|
5225
5536
|
return this.panel.title;
|
|
5226
5537
|
}
|
|
5227
5538
|
get isGroupActive() {
|
|
5228
|
-
|
|
5229
|
-
|
|
5539
|
+
return this.group.isActive;
|
|
5540
|
+
}
|
|
5541
|
+
get renderer() {
|
|
5542
|
+
return this.panel.renderer;
|
|
5230
5543
|
}
|
|
5231
5544
|
set group(value) {
|
|
5232
5545
|
const isOldGroupActive = this.isGroupActive;
|
|
@@ -5254,10 +5567,12 @@ class DockviewPanelApiImpl extends GridviewPanelApiImpl {
|
|
|
5254
5567
|
this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;
|
|
5255
5568
|
this._onDidGroupChange = new Emitter();
|
|
5256
5569
|
this.onDidGroupChange = this._onDidGroupChange.event;
|
|
5570
|
+
this._onDidRendererChange = new Emitter();
|
|
5571
|
+
this.onDidRendererChange = this._onDidRendererChange.event;
|
|
5257
5572
|
this.disposable = new MutableDisposable();
|
|
5258
5573
|
this.initialize(panel);
|
|
5259
5574
|
this._group = group;
|
|
5260
|
-
this.addDisposables(this.disposable, this._onDidTitleChange, this._onDidGroupChange, this._onDidActiveGroupChange);
|
|
5575
|
+
this.addDisposables(this.disposable, this._onDidRendererChange, this._onDidTitleChange, this._onDidGroupChange, this._onDidActiveGroupChange);
|
|
5261
5576
|
}
|
|
5262
5577
|
moveTo(options) {
|
|
5263
5578
|
var _a;
|
|
@@ -5266,9 +5581,21 @@ class DockviewPanelApiImpl extends GridviewPanelApiImpl {
|
|
|
5266
5581
|
setTitle(title) {
|
|
5267
5582
|
this.panel.setTitle(title);
|
|
5268
5583
|
}
|
|
5584
|
+
setRenderer(renderer) {
|
|
5585
|
+
this.panel.setRenderer(renderer);
|
|
5586
|
+
}
|
|
5269
5587
|
close() {
|
|
5270
5588
|
this.group.model.closePanel(this.panel);
|
|
5271
5589
|
}
|
|
5590
|
+
maximize() {
|
|
5591
|
+
this.group.api.maximize();
|
|
5592
|
+
}
|
|
5593
|
+
isMaximized() {
|
|
5594
|
+
return this.group.api.isMaximized();
|
|
5595
|
+
}
|
|
5596
|
+
exitMaximized() {
|
|
5597
|
+
this.group.api.exitMaximized();
|
|
5598
|
+
}
|
|
5272
5599
|
}
|
|
5273
5600
|
|
|
5274
5601
|
class DockviewPanel extends CompositeDisposable {
|
|
@@ -5281,11 +5608,17 @@ class DockviewPanel extends CompositeDisposable {
|
|
|
5281
5608
|
get group() {
|
|
5282
5609
|
return this._group;
|
|
5283
5610
|
}
|
|
5284
|
-
|
|
5611
|
+
get renderer() {
|
|
5612
|
+
var _a;
|
|
5613
|
+
return (_a = this._renderer) !== null && _a !== void 0 ? _a : this.accessor.renderer;
|
|
5614
|
+
}
|
|
5615
|
+
constructor(id, accessor, containerApi, group, view, options) {
|
|
5285
5616
|
super();
|
|
5286
5617
|
this.id = id;
|
|
5618
|
+
this.accessor = accessor;
|
|
5287
5619
|
this.containerApi = containerApi;
|
|
5288
5620
|
this.view = view;
|
|
5621
|
+
this._renderer = options.renderer;
|
|
5289
5622
|
this._group = group;
|
|
5290
5623
|
this.api = new DockviewPanelApiImpl(this, this._group, accessor);
|
|
5291
5624
|
this.addDisposables(this.api.onActiveChange(() => {
|
|
@@ -5294,6 +5627,8 @@ class DockviewPanel extends CompositeDisposable {
|
|
|
5294
5627
|
// forward the resize event to the group since if you want to resize a panel
|
|
5295
5628
|
// you are actually just resizing the panels parent which is the group
|
|
5296
5629
|
this.group.api.setSize(event);
|
|
5630
|
+
}), this.api.onDidRendererChange((event) => {
|
|
5631
|
+
this.group.model.rerender(this);
|
|
5297
5632
|
}));
|
|
5298
5633
|
}
|
|
5299
5634
|
init(params) {
|
|
@@ -5313,6 +5648,7 @@ class DockviewPanel extends CompositeDisposable {
|
|
|
5313
5648
|
? this._params
|
|
5314
5649
|
: undefined,
|
|
5315
5650
|
title: this.title,
|
|
5651
|
+
renderer: this._renderer,
|
|
5316
5652
|
};
|
|
5317
5653
|
}
|
|
5318
5654
|
setTitle(title) {
|
|
@@ -5328,6 +5664,15 @@ class DockviewPanel extends CompositeDisposable {
|
|
|
5328
5664
|
this.api._onDidTitleChange.fire({ title });
|
|
5329
5665
|
}
|
|
5330
5666
|
}
|
|
5667
|
+
setRenderer(renderer) {
|
|
5668
|
+
const didChange = renderer !== this.renderer;
|
|
5669
|
+
if (didChange) {
|
|
5670
|
+
this._renderer = renderer;
|
|
5671
|
+
this.api._onDidRendererChange.fire({
|
|
5672
|
+
renderer: renderer,
|
|
5673
|
+
});
|
|
5674
|
+
}
|
|
5675
|
+
}
|
|
5331
5676
|
update(event) {
|
|
5332
5677
|
var _a;
|
|
5333
5678
|
// merge the new parameters with the existing parameters
|
|
@@ -5546,8 +5891,8 @@ class DockviewPanelModel {
|
|
|
5546
5891
|
}
|
|
5547
5892
|
|
|
5548
5893
|
class DefaultDockviewDeserialzier {
|
|
5549
|
-
constructor(
|
|
5550
|
-
this.
|
|
5894
|
+
constructor(accessor) {
|
|
5895
|
+
this.accessor = accessor;
|
|
5551
5896
|
}
|
|
5552
5897
|
fromJSON(panelData, group) {
|
|
5553
5898
|
var _a, _b;
|
|
@@ -5561,8 +5906,10 @@ class DefaultDockviewDeserialzier {
|
|
|
5561
5906
|
const tabComponent = viewData
|
|
5562
5907
|
? (_b = viewData.tab) === null || _b === void 0 ? void 0 : _b.id
|
|
5563
5908
|
: panelData.tabComponent;
|
|
5564
|
-
const view = new DockviewPanelModel(this.
|
|
5565
|
-
const panel = new DockviewPanel(panelId, this.
|
|
5909
|
+
const view = new DockviewPanelModel(this.accessor, panelId, contentComponent, tabComponent);
|
|
5910
|
+
const panel = new DockviewPanel(panelId, this.accessor, new DockviewApi(this.accessor), group, view, {
|
|
5911
|
+
renderer: panelData.renderer,
|
|
5912
|
+
});
|
|
5566
5913
|
panel.init({
|
|
5567
5914
|
title: title !== null && title !== void 0 ? title : panelId,
|
|
5568
5915
|
params: params !== null && params !== void 0 ? params : {},
|
|
@@ -5942,7 +6289,261 @@ class DockviewFloatingGroupPanel extends CompositeDisposable {
|
|
|
5942
6289
|
}
|
|
5943
6290
|
}
|
|
5944
6291
|
|
|
6292
|
+
class PopoutWindow extends CompositeDisposable {
|
|
6293
|
+
constructor(id, className, options) {
|
|
6294
|
+
super();
|
|
6295
|
+
this.id = id;
|
|
6296
|
+
this.className = className;
|
|
6297
|
+
this.options = options;
|
|
6298
|
+
this._onDidClose = new Emitter();
|
|
6299
|
+
this.onDidClose = this._onDidClose.event;
|
|
6300
|
+
this._window = null;
|
|
6301
|
+
this.addDisposables(this._onDidClose, {
|
|
6302
|
+
dispose: () => {
|
|
6303
|
+
this.close();
|
|
6304
|
+
},
|
|
6305
|
+
});
|
|
6306
|
+
}
|
|
6307
|
+
dimensions() {
|
|
6308
|
+
if (!this._window) {
|
|
6309
|
+
return null;
|
|
6310
|
+
}
|
|
6311
|
+
const left = this._window.value.screenX;
|
|
6312
|
+
const top = this._window.value.screenY;
|
|
6313
|
+
const width = this._window.value.innerWidth;
|
|
6314
|
+
const height = this._window.value.innerHeight;
|
|
6315
|
+
return { top, left, width, height };
|
|
6316
|
+
}
|
|
6317
|
+
close() {
|
|
6318
|
+
if (this._window) {
|
|
6319
|
+
this._window.disposable.dispose();
|
|
6320
|
+
this._window.value.close();
|
|
6321
|
+
this._window = null;
|
|
6322
|
+
}
|
|
6323
|
+
}
|
|
6324
|
+
open(content) {
|
|
6325
|
+
if (this._window) {
|
|
6326
|
+
throw new Error('instance of popout window is already open');
|
|
6327
|
+
}
|
|
6328
|
+
const url = `${this.options.url}`;
|
|
6329
|
+
const features = Object.entries({
|
|
6330
|
+
top: this.options.top,
|
|
6331
|
+
left: this.options.left,
|
|
6332
|
+
width: this.options.width,
|
|
6333
|
+
height: this.options.height,
|
|
6334
|
+
})
|
|
6335
|
+
.map(([key, value]) => `${key}=${value}`)
|
|
6336
|
+
.join(',');
|
|
6337
|
+
// https://developer.mozilla.org/en-US/docs/Web/API/Window/open
|
|
6338
|
+
const externalWindow = window.open(url, this.id, features);
|
|
6339
|
+
if (!externalWindow) {
|
|
6340
|
+
return;
|
|
6341
|
+
}
|
|
6342
|
+
const disposable = new CompositeDisposable();
|
|
6343
|
+
this._window = { value: externalWindow, disposable };
|
|
6344
|
+
const cleanUp = () => {
|
|
6345
|
+
this._onDidClose.fire();
|
|
6346
|
+
this._window = null;
|
|
6347
|
+
};
|
|
6348
|
+
// prevent any default content from loading
|
|
6349
|
+
// externalWindow.document.body.replaceWith(document.createElement('div'));
|
|
6350
|
+
disposable.addDisposables(addDisposableWindowListener(window, 'beforeunload', () => {
|
|
6351
|
+
cleanUp();
|
|
6352
|
+
this.close();
|
|
6353
|
+
}));
|
|
6354
|
+
externalWindow.addEventListener('load', () => {
|
|
6355
|
+
const externalDocument = externalWindow.document;
|
|
6356
|
+
externalDocument.title = document.title;
|
|
6357
|
+
const div = document.createElement('div');
|
|
6358
|
+
div.classList.add('dv-popout-window');
|
|
6359
|
+
div.style.position = 'absolute';
|
|
6360
|
+
div.style.width = '100%';
|
|
6361
|
+
div.style.height = '100%';
|
|
6362
|
+
div.style.top = '0px';
|
|
6363
|
+
div.style.left = '0px';
|
|
6364
|
+
div.classList.add(this.className);
|
|
6365
|
+
div.appendChild(content);
|
|
6366
|
+
externalDocument.body.replaceChildren(div);
|
|
6367
|
+
externalDocument.body.classList.add(this.className);
|
|
6368
|
+
addStyles(externalDocument, window.document.styleSheets);
|
|
6369
|
+
externalWindow.addEventListener('beforeunload', () => {
|
|
6370
|
+
// TODO: indicate external window is closing
|
|
6371
|
+
cleanUp();
|
|
6372
|
+
});
|
|
6373
|
+
});
|
|
6374
|
+
}
|
|
6375
|
+
}
|
|
6376
|
+
|
|
6377
|
+
class DockviewPopoutGroupPanel extends CompositeDisposable {
|
|
6378
|
+
constructor(id, group, options) {
|
|
6379
|
+
var _a;
|
|
6380
|
+
super();
|
|
6381
|
+
this.id = id;
|
|
6382
|
+
this.group = group;
|
|
6383
|
+
this.options = options;
|
|
6384
|
+
this.window = new PopoutWindow(id, (_a = options.className) !== null && _a !== void 0 ? _a : '', {
|
|
6385
|
+
url: this.options.popoutUrl,
|
|
6386
|
+
left: this.options.box.left,
|
|
6387
|
+
top: this.options.box.top,
|
|
6388
|
+
width: this.options.box.width,
|
|
6389
|
+
height: this.options.box.height,
|
|
6390
|
+
});
|
|
6391
|
+
group.model.location = 'popout';
|
|
6392
|
+
this.addDisposables(this.window, {
|
|
6393
|
+
dispose: () => {
|
|
6394
|
+
group.model.location = 'grid';
|
|
6395
|
+
},
|
|
6396
|
+
}, this.window.onDidClose(() => {
|
|
6397
|
+
this.dispose();
|
|
6398
|
+
}));
|
|
6399
|
+
this.window.open(group.element);
|
|
6400
|
+
}
|
|
6401
|
+
}
|
|
6402
|
+
|
|
5945
6403
|
const DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE = 100;
|
|
6404
|
+
const DEFAULT_FLOATING_GROUP_POSITION = { left: 100, top: 100 };
|
|
6405
|
+
|
|
6406
|
+
function createFocusableElement() {
|
|
6407
|
+
const element = document.createElement('div');
|
|
6408
|
+
element.tabIndex = -1;
|
|
6409
|
+
return element;
|
|
6410
|
+
}
|
|
6411
|
+
class OverlayRenderContainer extends CompositeDisposable {
|
|
6412
|
+
constructor(element) {
|
|
6413
|
+
super();
|
|
6414
|
+
this.element = element;
|
|
6415
|
+
this.map = {};
|
|
6416
|
+
this.addDisposables(Disposable.from(() => {
|
|
6417
|
+
for (const value of Object.values(this.map)) {
|
|
6418
|
+
value.disposable.dispose();
|
|
6419
|
+
value.destroy.dispose();
|
|
6420
|
+
}
|
|
6421
|
+
}));
|
|
6422
|
+
}
|
|
6423
|
+
detatch(panel) {
|
|
6424
|
+
if (this.map[panel.api.id]) {
|
|
6425
|
+
const { disposable, destroy } = this.map[panel.api.id];
|
|
6426
|
+
disposable.dispose();
|
|
6427
|
+
destroy.dispose();
|
|
6428
|
+
delete this.map[panel.api.id];
|
|
6429
|
+
return true;
|
|
6430
|
+
}
|
|
6431
|
+
return false;
|
|
6432
|
+
}
|
|
6433
|
+
attach(options) {
|
|
6434
|
+
const { panel, referenceContainer } = options;
|
|
6435
|
+
if (!this.map[panel.api.id]) {
|
|
6436
|
+
const element = createFocusableElement();
|
|
6437
|
+
element.className = 'dv-render-overlay';
|
|
6438
|
+
this.map[panel.api.id] = {
|
|
6439
|
+
panel,
|
|
6440
|
+
disposable: Disposable.NONE,
|
|
6441
|
+
destroy: Disposable.NONE,
|
|
6442
|
+
element,
|
|
6443
|
+
};
|
|
6444
|
+
}
|
|
6445
|
+
const focusContainer = this.map[panel.api.id].element;
|
|
6446
|
+
if (panel.view.content.element.parentElement !== focusContainer) {
|
|
6447
|
+
focusContainer.appendChild(panel.view.content.element);
|
|
6448
|
+
}
|
|
6449
|
+
if (focusContainer.parentElement !== this.element) {
|
|
6450
|
+
this.element.appendChild(focusContainer);
|
|
6451
|
+
}
|
|
6452
|
+
const resize = () => {
|
|
6453
|
+
// TODO propagate position to avoid getDomNodePagePosition calls, possible performance bottleneck?
|
|
6454
|
+
const box = getDomNodePagePosition(referenceContainer.element);
|
|
6455
|
+
const box2 = getDomNodePagePosition(this.element);
|
|
6456
|
+
focusContainer.style.left = `${box.left - box2.left}px`;
|
|
6457
|
+
focusContainer.style.top = `${box.top - box2.top}px`;
|
|
6458
|
+
focusContainer.style.width = `${box.width}px`;
|
|
6459
|
+
focusContainer.style.height = `${box.height}px`;
|
|
6460
|
+
toggleClass(focusContainer, 'dv-render-overlay-float', panel.group.api.location === 'floating');
|
|
6461
|
+
};
|
|
6462
|
+
const visibilityChanged = () => {
|
|
6463
|
+
if (panel.api.isVisible) {
|
|
6464
|
+
resize();
|
|
6465
|
+
}
|
|
6466
|
+
focusContainer.style.display = panel.api.isVisible ? '' : 'none';
|
|
6467
|
+
};
|
|
6468
|
+
const disposable = new CompositeDisposable(
|
|
6469
|
+
/**
|
|
6470
|
+
* since container is positioned absoutely we must explicitly forward
|
|
6471
|
+
* the dnd events for the expect behaviours to continue to occur in terms of dnd
|
|
6472
|
+
*
|
|
6473
|
+
* the dnd observer does not need to be conditional on whether the panel is visible since
|
|
6474
|
+
* non-visible panels are 'display: none' and in such case the dnd observer will not fire.
|
|
6475
|
+
*/
|
|
6476
|
+
new DragAndDropObserver(focusContainer, {
|
|
6477
|
+
onDragEnd: (e) => {
|
|
6478
|
+
referenceContainer.dropTarget.dnd.onDragEnd(e);
|
|
6479
|
+
},
|
|
6480
|
+
onDragEnter: (e) => {
|
|
6481
|
+
referenceContainer.dropTarget.dnd.onDragEnter(e);
|
|
6482
|
+
},
|
|
6483
|
+
onDragLeave: (e) => {
|
|
6484
|
+
referenceContainer.dropTarget.dnd.onDragLeave(e);
|
|
6485
|
+
},
|
|
6486
|
+
onDrop: (e) => {
|
|
6487
|
+
referenceContainer.dropTarget.dnd.onDrop(e);
|
|
6488
|
+
},
|
|
6489
|
+
onDragOver: (e) => {
|
|
6490
|
+
referenceContainer.dropTarget.dnd.onDragOver(e);
|
|
6491
|
+
},
|
|
6492
|
+
}), panel.api.onDidVisibilityChange((event) => {
|
|
6493
|
+
/**
|
|
6494
|
+
* Control the visibility of the content, however even when not visible (display: none)
|
|
6495
|
+
* the content is still maintained within the DOM hence DOM specific attributes
|
|
6496
|
+
* such as scroll position are maintained when next made visible.
|
|
6497
|
+
*/
|
|
6498
|
+
visibilityChanged();
|
|
6499
|
+
}), panel.api.onDidDimensionsChange(() => {
|
|
6500
|
+
if (!panel.api.isVisible) {
|
|
6501
|
+
return;
|
|
6502
|
+
}
|
|
6503
|
+
resize();
|
|
6504
|
+
}));
|
|
6505
|
+
this.map[panel.api.id].destroy = Disposable.from(() => {
|
|
6506
|
+
focusContainer.removeChild(panel.view.content.element);
|
|
6507
|
+
this.element.removeChild(focusContainer);
|
|
6508
|
+
});
|
|
6509
|
+
queueMicrotask(() => {
|
|
6510
|
+
if (this.isDisposed) {
|
|
6511
|
+
return;
|
|
6512
|
+
}
|
|
6513
|
+
/**
|
|
6514
|
+
* wait until everything has finished in the current stack-frame call before
|
|
6515
|
+
* calling the first resize as other size-altering events may still occur before
|
|
6516
|
+
* the end of the stack-frame.
|
|
6517
|
+
*/
|
|
6518
|
+
visibilityChanged();
|
|
6519
|
+
});
|
|
6520
|
+
// dispose of logic asoccciated with previous reference-container
|
|
6521
|
+
this.map[panel.api.id].disposable.dispose();
|
|
6522
|
+
// and reset the disposable to the active reference-container
|
|
6523
|
+
this.map[panel.api.id].disposable = disposable;
|
|
6524
|
+
return focusContainer;
|
|
6525
|
+
}
|
|
6526
|
+
}
|
|
6527
|
+
|
|
6528
|
+
function getTheme(element) {
|
|
6529
|
+
function toClassList(element) {
|
|
6530
|
+
const list = [];
|
|
6531
|
+
for (let i = 0; i < element.classList.length; i++) {
|
|
6532
|
+
list.push(element.classList.item(i));
|
|
6533
|
+
}
|
|
6534
|
+
return list;
|
|
6535
|
+
}
|
|
6536
|
+
let theme = undefined;
|
|
6537
|
+
let parent = element;
|
|
6538
|
+
while (parent !== null) {
|
|
6539
|
+
theme = toClassList(parent).find((cls) => cls.startsWith('dockview-theme-'));
|
|
6540
|
+
if (typeof theme === 'string') {
|
|
6541
|
+
break;
|
|
6542
|
+
}
|
|
6543
|
+
parent = parent.parentElement;
|
|
6544
|
+
}
|
|
6545
|
+
return theme;
|
|
6546
|
+
}
|
|
5946
6547
|
class DockviewComponent extends BaseGrid {
|
|
5947
6548
|
get orientation() {
|
|
5948
6549
|
return this.gridview.orientation;
|
|
@@ -5963,6 +6564,10 @@ class DockviewComponent extends BaseGrid {
|
|
|
5963
6564
|
}
|
|
5964
6565
|
return activeGroup.activePanel;
|
|
5965
6566
|
}
|
|
6567
|
+
get renderer() {
|
|
6568
|
+
var _a;
|
|
6569
|
+
return (_a = this.options.defaultRenderer) !== null && _a !== void 0 ? _a : 'onlyWhenVisibile';
|
|
6570
|
+
}
|
|
5966
6571
|
constructor(options) {
|
|
5967
6572
|
var _a;
|
|
5968
6573
|
super({
|
|
@@ -5989,12 +6594,27 @@ class DockviewComponent extends BaseGrid {
|
|
|
5989
6594
|
this.onDidLayoutFromJSON = this._onDidLayoutFromJSON.event;
|
|
5990
6595
|
this._onDidActivePanelChange = new Emitter();
|
|
5991
6596
|
this.onDidActivePanelChange = this._onDidActivePanelChange.event;
|
|
5992
|
-
this.
|
|
6597
|
+
this._floatingGroups = [];
|
|
6598
|
+
this._popoutGroups = [];
|
|
6599
|
+
const gready = document.createElement('div');
|
|
6600
|
+
gready.className = 'dv-overlay-render-container';
|
|
6601
|
+
this.gridview.element.appendChild(gready);
|
|
6602
|
+
this.overlayRenderContainer = new OverlayRenderContainer(gready);
|
|
5993
6603
|
toggleClass(this.gridview.element, 'dv-dockview', true);
|
|
5994
|
-
|
|
6604
|
+
toggleClass(this.element, 'dv-debug', !!options.debug);
|
|
6605
|
+
this.addDisposables(this.overlayRenderContainer, this._onWillDragPanel, this._onWillDragGroup, this._onDidActivePanelChange, this._onDidAddPanel, this._onDidRemovePanel, this._onDidLayoutFromJSON, this._onDidDrop, Event.any(this.onDidAddGroup, this.onDidRemoveGroup)(() => {
|
|
5995
6606
|
this.updateWatermark();
|
|
5996
6607
|
}), Event.any(this.onDidAddPanel, this.onDidRemovePanel, this.onDidActivePanelChange)(() => {
|
|
5997
6608
|
this._bufferOnDidLayoutChange.fire();
|
|
6609
|
+
}), Disposable.from(() => {
|
|
6610
|
+
// iterate over a copy of the array since .dispose() mutates the original array
|
|
6611
|
+
for (const group of [...this._floatingGroups]) {
|
|
6612
|
+
group.dispose();
|
|
6613
|
+
}
|
|
6614
|
+
// iterate over a copy of the array since .dispose() mutates the original array
|
|
6615
|
+
for (const group of [...this._popoutGroups]) {
|
|
6616
|
+
group.dispose();
|
|
6617
|
+
}
|
|
5998
6618
|
}));
|
|
5999
6619
|
this._options = options;
|
|
6000
6620
|
if (!this.options.components) {
|
|
@@ -6064,6 +6684,55 @@ class DockviewComponent extends BaseGrid {
|
|
|
6064
6684
|
this._api = new DockviewApi(this);
|
|
6065
6685
|
this.updateWatermark();
|
|
6066
6686
|
}
|
|
6687
|
+
addPopoutGroup(item, options) {
|
|
6688
|
+
var _a;
|
|
6689
|
+
let group;
|
|
6690
|
+
let box = options === null || options === void 0 ? void 0 : options.position;
|
|
6691
|
+
if (item instanceof DockviewPanel) {
|
|
6692
|
+
group = this.createGroup();
|
|
6693
|
+
this.removePanel(item, {
|
|
6694
|
+
removeEmptyGroup: true,
|
|
6695
|
+
skipDispose: true,
|
|
6696
|
+
});
|
|
6697
|
+
group.model.openPanel(item);
|
|
6698
|
+
if (!box) {
|
|
6699
|
+
box = this.element.getBoundingClientRect();
|
|
6700
|
+
}
|
|
6701
|
+
}
|
|
6702
|
+
else {
|
|
6703
|
+
group = item;
|
|
6704
|
+
if (!box) {
|
|
6705
|
+
box = group.element.getBoundingClientRect();
|
|
6706
|
+
}
|
|
6707
|
+
const skip = typeof (options === null || options === void 0 ? void 0 : options.skipRemoveGroup) === 'boolean' &&
|
|
6708
|
+
options.skipRemoveGroup;
|
|
6709
|
+
if (!skip) {
|
|
6710
|
+
this.doRemoveGroup(item, { skipDispose: true });
|
|
6711
|
+
}
|
|
6712
|
+
}
|
|
6713
|
+
const theme = getTheme(this.gridview.element);
|
|
6714
|
+
const popoutWindow = new DockviewPopoutGroupPanel(`${this.id}-${group.id}`, // globally unique within dockview
|
|
6715
|
+
group, {
|
|
6716
|
+
className: theme !== null && theme !== void 0 ? theme : '',
|
|
6717
|
+
popoutUrl: (_a = options === null || options === void 0 ? void 0 : options.popoutUrl) !== null && _a !== void 0 ? _a : '/popout.html',
|
|
6718
|
+
box: {
|
|
6719
|
+
left: window.screenX + box.left,
|
|
6720
|
+
top: window.screenY + box.top,
|
|
6721
|
+
width: box.width,
|
|
6722
|
+
height: box.height,
|
|
6723
|
+
},
|
|
6724
|
+
});
|
|
6725
|
+
popoutWindow.addDisposables({
|
|
6726
|
+
dispose: () => {
|
|
6727
|
+
remove(this._popoutGroups, popoutWindow);
|
|
6728
|
+
this.updateWatermark();
|
|
6729
|
+
},
|
|
6730
|
+
}, popoutWindow.window.onDidClose(() => {
|
|
6731
|
+
this.doAddGroup(group, [0]);
|
|
6732
|
+
}));
|
|
6733
|
+
this._popoutGroups.push(popoutWindow);
|
|
6734
|
+
this.updateWatermark();
|
|
6735
|
+
}
|
|
6067
6736
|
addFloatingGroup(item, coord, options) {
|
|
6068
6737
|
var _a, _b, _c, _d, _e, _f;
|
|
6069
6738
|
let group;
|
|
@@ -6083,9 +6752,13 @@ class DockviewComponent extends BaseGrid {
|
|
|
6083
6752
|
this.doRemoveGroup(item, { skipDispose: true });
|
|
6084
6753
|
}
|
|
6085
6754
|
}
|
|
6086
|
-
group.model.
|
|
6087
|
-
const overlayLeft = typeof (coord === null || coord === void 0 ? void 0 : coord.x) === 'number'
|
|
6088
|
-
|
|
6755
|
+
group.model.location = 'floating';
|
|
6756
|
+
const overlayLeft = typeof (coord === null || coord === void 0 ? void 0 : coord.x) === 'number'
|
|
6757
|
+
? Math.max(coord.x, 0)
|
|
6758
|
+
: DEFAULT_FLOATING_GROUP_POSITION.left;
|
|
6759
|
+
const overlayTop = typeof (coord === null || coord === void 0 ? void 0 : coord.y) === 'number'
|
|
6760
|
+
? Math.max(coord.y, 0)
|
|
6761
|
+
: DEFAULT_FLOATING_GROUP_POSITION.top;
|
|
6089
6762
|
const overlay = new Overlay({
|
|
6090
6763
|
container: this.gridview.element,
|
|
6091
6764
|
content: group.element,
|
|
@@ -6129,12 +6802,12 @@ class DockviewComponent extends BaseGrid {
|
|
|
6129
6802
|
}), {
|
|
6130
6803
|
dispose: () => {
|
|
6131
6804
|
disposable.dispose();
|
|
6132
|
-
group.model.
|
|
6133
|
-
remove(this.
|
|
6805
|
+
group.model.location = 'grid';
|
|
6806
|
+
remove(this._floatingGroups, floatingGroupPanel);
|
|
6134
6807
|
this.updateWatermark();
|
|
6135
6808
|
},
|
|
6136
6809
|
});
|
|
6137
|
-
this.
|
|
6810
|
+
this._floatingGroups.push(floatingGroupPanel);
|
|
6138
6811
|
this.updateWatermark();
|
|
6139
6812
|
}
|
|
6140
6813
|
orthogonalize(position) {
|
|
@@ -6179,7 +6852,7 @@ class DockviewComponent extends BaseGrid {
|
|
|
6179
6852
|
this.gridview.orientation = options.orientation;
|
|
6180
6853
|
}
|
|
6181
6854
|
if (hasFloatingGroupOptionsChanged) {
|
|
6182
|
-
for (const group of this.
|
|
6855
|
+
for (const group of this._floatingGroups) {
|
|
6183
6856
|
switch (this.options.floatingGroupBounds) {
|
|
6184
6857
|
case 'boundedWithinViewport':
|
|
6185
6858
|
group.overlay.minimumInViewportHeight = undefined;
|
|
@@ -6204,8 +6877,8 @@ class DockviewComponent extends BaseGrid {
|
|
|
6204
6877
|
}
|
|
6205
6878
|
layout(width, height, forceResize) {
|
|
6206
6879
|
super.layout(width, height, forceResize);
|
|
6207
|
-
if (this.
|
|
6208
|
-
for (const floating of this.
|
|
6880
|
+
if (this._floatingGroups) {
|
|
6881
|
+
for (const floating of this._floatingGroups) {
|
|
6209
6882
|
// ensure floting groups stay within visible boundaries
|
|
6210
6883
|
floating.overlay.setBounds();
|
|
6211
6884
|
}
|
|
@@ -6273,10 +6946,16 @@ class DockviewComponent extends BaseGrid {
|
|
|
6273
6946
|
collection[panel.id] = panel.toJSON();
|
|
6274
6947
|
return collection;
|
|
6275
6948
|
}, {});
|
|
6276
|
-
const floats = this.
|
|
6949
|
+
const floats = this._floatingGroups.map((group) => {
|
|
6950
|
+
return {
|
|
6951
|
+
data: group.group.toJSON(),
|
|
6952
|
+
position: group.overlay.toJSON(),
|
|
6953
|
+
};
|
|
6954
|
+
});
|
|
6955
|
+
const popoutGroups = this._popoutGroups.map((group) => {
|
|
6277
6956
|
return {
|
|
6278
|
-
data:
|
|
6279
|
-
position:
|
|
6957
|
+
data: group.group.toJSON(),
|
|
6958
|
+
position: group.window.dimensions(),
|
|
6280
6959
|
};
|
|
6281
6960
|
});
|
|
6282
6961
|
const result = {
|
|
@@ -6287,10 +6966,13 @@ class DockviewComponent extends BaseGrid {
|
|
|
6287
6966
|
if (floats.length > 0) {
|
|
6288
6967
|
result.floatingGroups = floats;
|
|
6289
6968
|
}
|
|
6969
|
+
if (popoutGroups.length > 0) {
|
|
6970
|
+
result.popoutGroups = popoutGroups;
|
|
6971
|
+
}
|
|
6290
6972
|
return result;
|
|
6291
6973
|
}
|
|
6292
6974
|
fromJSON(data) {
|
|
6293
|
-
var _a;
|
|
6975
|
+
var _a, _b;
|
|
6294
6976
|
this.clear();
|
|
6295
6977
|
if (typeof data !== 'object' || data === null) {
|
|
6296
6978
|
throw new Error('serialized layout must be a non-null object');
|
|
@@ -6357,7 +7039,16 @@ class DockviewComponent extends BaseGrid {
|
|
|
6357
7039
|
width: position.width,
|
|
6358
7040
|
}, { skipRemoveGroup: true, inDragMode: false });
|
|
6359
7041
|
}
|
|
6360
|
-
|
|
7042
|
+
const serializedPopoutGroups = (_b = data.popoutGroups) !== null && _b !== void 0 ? _b : [];
|
|
7043
|
+
for (const serializedPopoutGroup of serializedPopoutGroups) {
|
|
7044
|
+
const { data, position } = serializedPopoutGroup;
|
|
7045
|
+
const group = createGroupFromSerializedState(data);
|
|
7046
|
+
this.addPopoutGroup(group, {
|
|
7047
|
+
skipRemoveGroup: true,
|
|
7048
|
+
position: position !== null && position !== void 0 ? position : undefined,
|
|
7049
|
+
});
|
|
7050
|
+
}
|
|
7051
|
+
for (const floatingGroup of this._floatingGroups) {
|
|
6361
7052
|
floatingGroup.overlay.setBounds();
|
|
6362
7053
|
}
|
|
6363
7054
|
if (typeof activeGroup === 'string') {
|
|
@@ -6389,7 +7080,7 @@ class DockviewComponent extends BaseGrid {
|
|
|
6389
7080
|
this._onDidRemoveGroup.fire(group);
|
|
6390
7081
|
}
|
|
6391
7082
|
// iterate over a reassigned array since original array will be modified
|
|
6392
|
-
for (const floatingGroup of [...this.
|
|
7083
|
+
for (const floatingGroup of [...this._floatingGroups]) {
|
|
6393
7084
|
floatingGroup.dispose();
|
|
6394
7085
|
}
|
|
6395
7086
|
// fires clean-up events and clears the underlying HTML gridview.
|
|
@@ -6481,7 +7172,8 @@ class DockviewComponent extends BaseGrid {
|
|
|
6481
7172
|
group.model.openPanel(panel);
|
|
6482
7173
|
this.doSetGroupAndPanelActive(group);
|
|
6483
7174
|
}
|
|
6484
|
-
else if (referenceGroup.api.
|
|
7175
|
+
else if (referenceGroup.api.location === 'floating' ||
|
|
7176
|
+
target === 'center') {
|
|
6485
7177
|
panel = this.createPanel(options, referenceGroup);
|
|
6486
7178
|
referenceGroup.model.openPanel(panel);
|
|
6487
7179
|
}
|
|
@@ -6525,6 +7217,7 @@ class DockviewComponent extends BaseGrid {
|
|
|
6525
7217
|
}
|
|
6526
7218
|
group.model.removePanel(panel);
|
|
6527
7219
|
if (!options.skipDispose) {
|
|
7220
|
+
this.overlayRenderContainer.detatch(panel);
|
|
6528
7221
|
panel.dispose();
|
|
6529
7222
|
}
|
|
6530
7223
|
if (group.size === 0 && options.removeEmptyGroup) {
|
|
@@ -6541,7 +7234,7 @@ class DockviewComponent extends BaseGrid {
|
|
|
6541
7234
|
}
|
|
6542
7235
|
updateWatermark() {
|
|
6543
7236
|
var _a, _b;
|
|
6544
|
-
if (this.groups.filter((x) =>
|
|
7237
|
+
if (this.groups.filter((x) => x.api.location === 'grid').length === 0) {
|
|
6545
7238
|
if (!this.watermark) {
|
|
6546
7239
|
this.watermark = this.createWatermarkComponent();
|
|
6547
7240
|
this.watermark.init({
|
|
@@ -6616,19 +7309,40 @@ class DockviewComponent extends BaseGrid {
|
|
|
6616
7309
|
}
|
|
6617
7310
|
}
|
|
6618
7311
|
doRemoveGroup(group, options) {
|
|
6619
|
-
|
|
6620
|
-
|
|
6621
|
-
if (
|
|
6622
|
-
|
|
6623
|
-
|
|
6624
|
-
|
|
7312
|
+
if (group.api.location === 'floating') {
|
|
7313
|
+
const floatingGroup = this._floatingGroups.find((_) => _.group === group);
|
|
7314
|
+
if (floatingGroup) {
|
|
7315
|
+
if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {
|
|
7316
|
+
floatingGroup.group.dispose();
|
|
7317
|
+
this._groups.delete(group.id);
|
|
7318
|
+
this._onDidRemoveGroup.fire(group);
|
|
7319
|
+
}
|
|
7320
|
+
remove(this._floatingGroups, floatingGroup);
|
|
7321
|
+
floatingGroup.dispose();
|
|
7322
|
+
if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {
|
|
7323
|
+
const groups = Array.from(this._groups.values());
|
|
7324
|
+
this.doSetGroupActive(groups.length > 0 ? groups[0].value : undefined);
|
|
7325
|
+
}
|
|
7326
|
+
return floatingGroup.group;
|
|
6625
7327
|
}
|
|
6626
|
-
|
|
6627
|
-
|
|
6628
|
-
|
|
6629
|
-
|
|
7328
|
+
throw new Error('failed to find floating group');
|
|
7329
|
+
}
|
|
7330
|
+
if (group.api.location === 'popout') {
|
|
7331
|
+
const selectedGroup = this._popoutGroups.find((_) => _.group === group);
|
|
7332
|
+
if (selectedGroup) {
|
|
7333
|
+
if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {
|
|
7334
|
+
selectedGroup.group.dispose();
|
|
7335
|
+
this._groups.delete(group.id);
|
|
7336
|
+
this._onDidRemoveGroup.fire(group);
|
|
7337
|
+
}
|
|
7338
|
+
selectedGroup.dispose();
|
|
7339
|
+
if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {
|
|
7340
|
+
const groups = Array.from(this._groups.values());
|
|
7341
|
+
this.doSetGroupActive(groups.length > 0 ? groups[0].value : undefined);
|
|
7342
|
+
}
|
|
7343
|
+
return selectedGroup.group;
|
|
6630
7344
|
}
|
|
6631
|
-
|
|
7345
|
+
throw new Error('failed to find popout group');
|
|
6632
7346
|
}
|
|
6633
7347
|
return super.doRemoveGroup(group, options);
|
|
6634
7348
|
}
|
|
@@ -6660,8 +7374,7 @@ class DockviewComponent extends BaseGrid {
|
|
|
6660
7374
|
const targetLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, destinationTarget);
|
|
6661
7375
|
if (sourceGroup && sourceGroup.size < 2) {
|
|
6662
7376
|
const [targetParentLocation, to] = tail(targetLocation);
|
|
6663
|
-
|
|
6664
|
-
if (!isFloating) {
|
|
7377
|
+
if (sourceGroup.api.location === 'grid') {
|
|
6665
7378
|
const sourceLocation = getGridLocation(sourceGroup.element);
|
|
6666
7379
|
const [sourceParentLocation, from] = tail(sourceLocation);
|
|
6667
7380
|
if (sequenceEquals(sourceParentLocation, targetParentLocation)) {
|
|
@@ -6707,12 +7420,25 @@ class DockviewComponent extends BaseGrid {
|
|
|
6707
7420
|
}
|
|
6708
7421
|
}
|
|
6709
7422
|
else {
|
|
6710
|
-
|
|
6711
|
-
|
|
6712
|
-
|
|
6713
|
-
|
|
6714
|
-
|
|
6715
|
-
|
|
7423
|
+
switch (sourceGroup.api.location) {
|
|
7424
|
+
case 'grid':
|
|
7425
|
+
this.gridview.removeView(getGridLocation(sourceGroup.element));
|
|
7426
|
+
break;
|
|
7427
|
+
case 'floating': {
|
|
7428
|
+
const selectedFloatingGroup = this._floatingGroups.find((x) => x.group === sourceGroup);
|
|
7429
|
+
if (!selectedFloatingGroup) {
|
|
7430
|
+
throw new Error('failed to find floating group');
|
|
7431
|
+
}
|
|
7432
|
+
selectedFloatingGroup.dispose();
|
|
7433
|
+
break;
|
|
7434
|
+
}
|
|
7435
|
+
case 'popout': {
|
|
7436
|
+
const selectedPopoutGroup = this._popoutGroups.find((x) => x.group === sourceGroup);
|
|
7437
|
+
if (!selectedPopoutGroup) {
|
|
7438
|
+
throw new Error('failed to find popout group');
|
|
7439
|
+
}
|
|
7440
|
+
selectedPopoutGroup.dispose();
|
|
7441
|
+
}
|
|
6716
7442
|
}
|
|
6717
7443
|
const referenceLocation = getGridLocation(referenceGroup.element);
|
|
6718
7444
|
const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, target);
|
|
@@ -6774,7 +7500,7 @@ class DockviewComponent extends BaseGrid {
|
|
|
6774
7500
|
const contentComponent = options.component;
|
|
6775
7501
|
const tabComponent = (_a = options.tabComponent) !== null && _a !== void 0 ? _a : this.options.defaultTabComponent;
|
|
6776
7502
|
const view = new DockviewPanelModel(this, options.id, contentComponent, tabComponent);
|
|
6777
|
-
const panel = new DockviewPanel(options.id, this, this._api, group, view);
|
|
7503
|
+
const panel = new DockviewPanel(options.id, this, this._api, group, view, { renderer: options.renderer });
|
|
6778
7504
|
panel.init({
|
|
6779
7505
|
title: (_b = options.title) !== null && _b !== void 0 ? _b : options.id,
|
|
6780
7506
|
params: (_c = options === null || options === void 0 ? void 0 : options.params) !== null && _c !== void 0 ? _c : {},
|