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
|
*/
|
|
@@ -33,7 +33,7 @@ function styleInject(css, ref) {
|
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
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}";
|
|
36
|
+
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}";
|
|
37
37
|
styleInject(css_248z);
|
|
38
38
|
|
|
39
39
|
class TransferObject {
|
|
@@ -262,6 +262,14 @@ var Disposable;
|
|
|
262
262
|
// noop
|
|
263
263
|
},
|
|
264
264
|
};
|
|
265
|
+
function from(func) {
|
|
266
|
+
return {
|
|
267
|
+
dispose: () => {
|
|
268
|
+
func();
|
|
269
|
+
},
|
|
270
|
+
};
|
|
271
|
+
}
|
|
272
|
+
Disposable.from = from;
|
|
265
273
|
})(Disposable || (Disposable = {}));
|
|
266
274
|
class CompositeDisposable {
|
|
267
275
|
get isDisposed() {
|
|
@@ -446,6 +454,61 @@ function quasiPreventDefault(event) {
|
|
|
446
454
|
function quasiDefaultPrevented(event) {
|
|
447
455
|
return event[QUASI_PREVENT_DEFAULT_KEY];
|
|
448
456
|
}
|
|
457
|
+
function addStyles(document, styleSheetList) {
|
|
458
|
+
const styleSheets = Array.from(styleSheetList);
|
|
459
|
+
for (const styleSheet of styleSheets) {
|
|
460
|
+
if (styleSheet.href) {
|
|
461
|
+
const link = document.createElement('link');
|
|
462
|
+
link.href = styleSheet.href;
|
|
463
|
+
link.type = styleSheet.type;
|
|
464
|
+
link.rel = 'stylesheet';
|
|
465
|
+
document.head.appendChild(link);
|
|
466
|
+
}
|
|
467
|
+
let cssTexts = [];
|
|
468
|
+
try {
|
|
469
|
+
if (styleSheet.cssRules) {
|
|
470
|
+
cssTexts = Array.from(styleSheet.cssRules).map((rule) => rule.cssText);
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
catch (err) {
|
|
474
|
+
// security errors (lack of permissions), ignore
|
|
475
|
+
}
|
|
476
|
+
for (const rule of cssTexts) {
|
|
477
|
+
const style = document.createElement('style');
|
|
478
|
+
style.appendChild(document.createTextNode(rule));
|
|
479
|
+
document.head.appendChild(style);
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
function getDomNodePagePosition(domNode) {
|
|
484
|
+
const { left, top, width, height } = domNode.getBoundingClientRect();
|
|
485
|
+
return {
|
|
486
|
+
left: left + window.scrollX,
|
|
487
|
+
top: top + window.scrollY,
|
|
488
|
+
width: width,
|
|
489
|
+
height: height,
|
|
490
|
+
};
|
|
491
|
+
}
|
|
492
|
+
/**
|
|
493
|
+
* Check whether an element is in the DOM (including the Shadow DOM)
|
|
494
|
+
* @see https://terodox.tech/how-to-tell-if-an-element-is-in-the-dom-including-the-shadow-dom/
|
|
495
|
+
*/
|
|
496
|
+
function isInDocument(element) {
|
|
497
|
+
let currentElement = element;
|
|
498
|
+
while (currentElement === null || currentElement === void 0 ? void 0 : currentElement.parentNode) {
|
|
499
|
+
if (currentElement.parentNode === document) {
|
|
500
|
+
return true;
|
|
501
|
+
}
|
|
502
|
+
else if (currentElement.parentNode instanceof DocumentFragment) {
|
|
503
|
+
// handle shadow DOMs
|
|
504
|
+
currentElement = currentElement.parentNode.host;
|
|
505
|
+
}
|
|
506
|
+
else {
|
|
507
|
+
currentElement = currentElement.parentNode;
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
return false;
|
|
511
|
+
}
|
|
449
512
|
|
|
450
513
|
function tail(arr) {
|
|
451
514
|
if (arr.length === 0) {
|
|
@@ -643,6 +706,9 @@ exports.Sizing = void 0;
|
|
|
643
706
|
Sizing.Invisible = Invisible;
|
|
644
707
|
})(exports.Sizing || (exports.Sizing = {}));
|
|
645
708
|
class Splitview {
|
|
709
|
+
get contentSize() {
|
|
710
|
+
return this._contentSize;
|
|
711
|
+
}
|
|
646
712
|
get size() {
|
|
647
713
|
return this._size;
|
|
648
714
|
}
|
|
@@ -708,7 +774,7 @@ class Splitview {
|
|
|
708
774
|
this.sashes = [];
|
|
709
775
|
this._size = 0;
|
|
710
776
|
this._orthogonalSize = 0;
|
|
711
|
-
this.
|
|
777
|
+
this._contentSize = 0;
|
|
712
778
|
this._proportions = undefined;
|
|
713
779
|
this._startSnappingEnabled = true;
|
|
714
780
|
this._endSnappingEnabled = true;
|
|
@@ -827,7 +893,7 @@ class Splitview {
|
|
|
827
893
|
);
|
|
828
894
|
});
|
|
829
895
|
// Initialize content size and proportions for first layout
|
|
830
|
-
this.
|
|
896
|
+
this._contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);
|
|
831
897
|
this.saveProportions();
|
|
832
898
|
}
|
|
833
899
|
}
|
|
@@ -1101,7 +1167,7 @@ class Splitview {
|
|
|
1101
1167
|
this.addView(view, sizing, to);
|
|
1102
1168
|
}
|
|
1103
1169
|
layout(size, orthogonalSize) {
|
|
1104
|
-
const previousSize = Math.max(this.size, this.
|
|
1170
|
+
const previousSize = Math.max(this.size, this._contentSize);
|
|
1105
1171
|
this.size = size;
|
|
1106
1172
|
this.orthogonalSize = orthogonalSize;
|
|
1107
1173
|
if (!this.proportions) {
|
|
@@ -1111,9 +1177,23 @@ class Splitview {
|
|
|
1111
1177
|
this.resize(this.viewItems.length - 1, size - previousSize, undefined, lowPriorityIndexes, highPriorityIndexes);
|
|
1112
1178
|
}
|
|
1113
1179
|
else {
|
|
1180
|
+
let total = 0;
|
|
1181
|
+
for (let i = 0; i < this.viewItems.length; i++) {
|
|
1182
|
+
const item = this.viewItems[i];
|
|
1183
|
+
const proportion = this.proportions[i];
|
|
1184
|
+
if (typeof proportion === 'number') {
|
|
1185
|
+
total += proportion;
|
|
1186
|
+
}
|
|
1187
|
+
else {
|
|
1188
|
+
size -= item.size;
|
|
1189
|
+
}
|
|
1190
|
+
}
|
|
1114
1191
|
for (let i = 0; i < this.viewItems.length; i++) {
|
|
1115
1192
|
const item = this.viewItems[i];
|
|
1116
|
-
|
|
1193
|
+
const proportion = this.proportions[i];
|
|
1194
|
+
if (typeof proportion === 'number' && total > 0) {
|
|
1195
|
+
item.size = clamp(Math.round((proportion * size) / total), item.minimumSize, item.maximumSize);
|
|
1196
|
+
}
|
|
1117
1197
|
}
|
|
1118
1198
|
}
|
|
1119
1199
|
this.distributeEmptySpace();
|
|
@@ -1150,12 +1230,12 @@ class Splitview {
|
|
|
1150
1230
|
}
|
|
1151
1231
|
}
|
|
1152
1232
|
saveProportions() {
|
|
1153
|
-
if (this.proportionalLayout && this.
|
|
1154
|
-
this._proportions = this.viewItems.map((i) => i.size / this.
|
|
1233
|
+
if (this.proportionalLayout && this._contentSize > 0) {
|
|
1234
|
+
this._proportions = this.viewItems.map((i) => i.visible ? i.size / this._contentSize : undefined);
|
|
1155
1235
|
}
|
|
1156
1236
|
}
|
|
1157
1237
|
layoutViews() {
|
|
1158
|
-
this.
|
|
1238
|
+
this._contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);
|
|
1159
1239
|
let sum = 0;
|
|
1160
1240
|
const x = [];
|
|
1161
1241
|
this.updateSashEnablement();
|
|
@@ -1249,7 +1329,7 @@ class Splitview {
|
|
|
1249
1329
|
}
|
|
1250
1330
|
else if (snappedAfter &&
|
|
1251
1331
|
collapsesDown[index] &&
|
|
1252
|
-
(position < this.
|
|
1332
|
+
(position < this._contentSize || this.endSnappingEnabled)) {
|
|
1253
1333
|
this.updateSash(sash, exports.SashState.MAXIMUM);
|
|
1254
1334
|
}
|
|
1255
1335
|
else {
|
|
@@ -1538,7 +1618,6 @@ class LeafNode {
|
|
|
1538
1618
|
setVisible(visible) {
|
|
1539
1619
|
if (this.view.setVisible) {
|
|
1540
1620
|
this.view.setVisible(visible);
|
|
1541
|
-
this._onDidChange.fire({});
|
|
1542
1621
|
}
|
|
1543
1622
|
}
|
|
1544
1623
|
layout(size, orthogonalSize) {
|
|
@@ -1570,10 +1649,14 @@ class BranchNode extends CompositeDisposable {
|
|
|
1570
1649
|
get minimumSize() {
|
|
1571
1650
|
return this.children.length === 0
|
|
1572
1651
|
? 0
|
|
1573
|
-
: Math.max(...this.children.map((c) =>
|
|
1652
|
+
: Math.max(...this.children.map((c, index) => this.splitview.isViewVisible(index)
|
|
1653
|
+
? c.minimumOrthogonalSize
|
|
1654
|
+
: 0));
|
|
1574
1655
|
}
|
|
1575
1656
|
get maximumSize() {
|
|
1576
|
-
return Math.min(...this.children.map((c) =>
|
|
1657
|
+
return Math.min(...this.children.map((c, index) => this.splitview.isViewVisible(index)
|
|
1658
|
+
? c.maximumOrthogonalSize
|
|
1659
|
+
: Number.POSITIVE_INFINITY));
|
|
1577
1660
|
}
|
|
1578
1661
|
get minimumOrthogonalSize() {
|
|
1579
1662
|
return this.splitview.minimumSize;
|
|
@@ -1631,6 +1714,8 @@ class BranchNode extends CompositeDisposable {
|
|
|
1631
1714
|
this.children = [];
|
|
1632
1715
|
this._onDidChange = new Emitter();
|
|
1633
1716
|
this.onDidChange = this._onDidChange.event;
|
|
1717
|
+
this._onDidVisibilityChange = new Emitter();
|
|
1718
|
+
this.onDidVisibilityChange = this._onDidVisibilityChange.event;
|
|
1634
1719
|
this._orthogonalSize = orthogonalSize;
|
|
1635
1720
|
this._size = size;
|
|
1636
1721
|
this.element = document.createElement('div');
|
|
@@ -1665,7 +1750,7 @@ class BranchNode extends CompositeDisposable {
|
|
|
1665
1750
|
styles,
|
|
1666
1751
|
});
|
|
1667
1752
|
}
|
|
1668
|
-
this.addDisposables(this._onDidChange, this.splitview.onDidSashEnd(() => {
|
|
1753
|
+
this.addDisposables(this._onDidChange, this._onDidVisibilityChange, this.splitview.onDidSashEnd(() => {
|
|
1669
1754
|
this._onDidChange.fire({});
|
|
1670
1755
|
}));
|
|
1671
1756
|
this.setupChildrenEvents();
|
|
@@ -1688,7 +1773,15 @@ class BranchNode extends CompositeDisposable {
|
|
|
1688
1773
|
if (this.splitview.isViewVisible(index) === visible) {
|
|
1689
1774
|
return;
|
|
1690
1775
|
}
|
|
1776
|
+
const wereAllChildrenHidden = this.splitview.contentSize === 0;
|
|
1691
1777
|
this.splitview.setViewVisible(index, visible);
|
|
1778
|
+
const areAllChildrenHidden = this.splitview.contentSize === 0;
|
|
1779
|
+
// If all children are hidden then the parent should hide the entire splitview
|
|
1780
|
+
// If the entire splitview is hidden then the parent should show the splitview when a child is shown
|
|
1781
|
+
if ((visible && wereAllChildrenHidden) ||
|
|
1782
|
+
(!visible && areAllChildrenHidden)) {
|
|
1783
|
+
this._onDidVisibilityChange.fire(visible);
|
|
1784
|
+
}
|
|
1692
1785
|
}
|
|
1693
1786
|
moveChild(from, to) {
|
|
1694
1787
|
if (from === to) {
|
|
@@ -1752,13 +1845,20 @@ class BranchNode extends CompositeDisposable {
|
|
|
1752
1845
|
}
|
|
1753
1846
|
setupChildrenEvents() {
|
|
1754
1847
|
this._childrenDisposable.dispose();
|
|
1755
|
-
this._childrenDisposable = exports.DockviewEvent.any(...this.children.map((c) => c.onDidChange))((e) => {
|
|
1848
|
+
this._childrenDisposable = new CompositeDisposable(exports.DockviewEvent.any(...this.children.map((c) => c.onDidChange))((e) => {
|
|
1756
1849
|
/**
|
|
1757
1850
|
* indicate a change has occured to allows any re-rendering but don't bubble
|
|
1758
1851
|
* event because that was specific to this branch
|
|
1759
1852
|
*/
|
|
1760
1853
|
this._onDidChange.fire({ size: e.orthogonalSize });
|
|
1761
|
-
})
|
|
1854
|
+
}), ...this.children.map((c, i) => {
|
|
1855
|
+
if (c instanceof BranchNode) {
|
|
1856
|
+
return c.onDidVisibilityChange((visible) => {
|
|
1857
|
+
this.setChildVisible(i, visible);
|
|
1858
|
+
});
|
|
1859
|
+
}
|
|
1860
|
+
return Disposable.NONE;
|
|
1861
|
+
}));
|
|
1762
1862
|
}
|
|
1763
1863
|
dispose() {
|
|
1764
1864
|
this._childrenDisposable.dispose();
|
|
@@ -1919,7 +2019,69 @@ class Gridview {
|
|
|
1919
2019
|
get maximumHeight() {
|
|
1920
2020
|
return this.root.maximumHeight;
|
|
1921
2021
|
}
|
|
2022
|
+
maximizedView() {
|
|
2023
|
+
var _a;
|
|
2024
|
+
return (_a = this._maximizedNode) === null || _a === void 0 ? void 0 : _a.view;
|
|
2025
|
+
}
|
|
2026
|
+
hasMaximizedView() {
|
|
2027
|
+
return this._maximizedNode !== undefined;
|
|
2028
|
+
}
|
|
2029
|
+
maximizeView(view) {
|
|
2030
|
+
const location = getGridLocation(view.element);
|
|
2031
|
+
const [_, node] = this.getNode(location);
|
|
2032
|
+
if (!(node instanceof LeafNode)) {
|
|
2033
|
+
return;
|
|
2034
|
+
}
|
|
2035
|
+
if (this._maximizedNode === node) {
|
|
2036
|
+
return;
|
|
2037
|
+
}
|
|
2038
|
+
if (this.hasMaximizedView()) {
|
|
2039
|
+
this.exitMaximizedView();
|
|
2040
|
+
}
|
|
2041
|
+
function hideAllViewsBut(parent, exclude) {
|
|
2042
|
+
for (let i = 0; i < parent.children.length; i++) {
|
|
2043
|
+
const child = parent.children[i];
|
|
2044
|
+
if (child instanceof LeafNode) {
|
|
2045
|
+
if (child !== exclude) {
|
|
2046
|
+
parent.setChildVisible(i, false);
|
|
2047
|
+
}
|
|
2048
|
+
}
|
|
2049
|
+
else {
|
|
2050
|
+
hideAllViewsBut(child, exclude);
|
|
2051
|
+
}
|
|
2052
|
+
}
|
|
2053
|
+
}
|
|
2054
|
+
hideAllViewsBut(this.root, node);
|
|
2055
|
+
this._maximizedNode = node;
|
|
2056
|
+
this._onDidMaxmizedNodeChange.fire();
|
|
2057
|
+
}
|
|
2058
|
+
exitMaximizedView() {
|
|
2059
|
+
if (!this._maximizedNode) {
|
|
2060
|
+
return;
|
|
2061
|
+
}
|
|
2062
|
+
function showViewsInReverseOrder(parent) {
|
|
2063
|
+
for (let index = parent.children.length - 1; index >= 0; index--) {
|
|
2064
|
+
const child = parent.children[index];
|
|
2065
|
+
if (child instanceof LeafNode) {
|
|
2066
|
+
parent.setChildVisible(index, true);
|
|
2067
|
+
}
|
|
2068
|
+
else {
|
|
2069
|
+
showViewsInReverseOrder(child);
|
|
2070
|
+
}
|
|
2071
|
+
}
|
|
2072
|
+
}
|
|
2073
|
+
showViewsInReverseOrder(this.root);
|
|
2074
|
+
this._maximizedNode = undefined;
|
|
2075
|
+
this._onDidMaxmizedNodeChange.fire();
|
|
2076
|
+
}
|
|
1922
2077
|
serialize() {
|
|
2078
|
+
if (this.hasMaximizedView()) {
|
|
2079
|
+
/**
|
|
2080
|
+
* do not persist maximized view state but we must first exit any maximized views
|
|
2081
|
+
* before serialization to ensure the correct dimensions are persisted
|
|
2082
|
+
*/
|
|
2083
|
+
this.exitMaximizedView();
|
|
2084
|
+
}
|
|
1923
2085
|
const root = serializeBranchNode(this.getView(), this.orientation);
|
|
1924
2086
|
return {
|
|
1925
2087
|
root,
|
|
@@ -1931,7 +2093,9 @@ class Gridview {
|
|
|
1931
2093
|
dispose() {
|
|
1932
2094
|
this.disposable.dispose();
|
|
1933
2095
|
this._onDidChange.dispose();
|
|
2096
|
+
this._onDidMaxmizedNodeChange.dispose();
|
|
1934
2097
|
this.root.dispose();
|
|
2098
|
+
this._maximizedNode = undefined;
|
|
1935
2099
|
this.element.remove();
|
|
1936
2100
|
}
|
|
1937
2101
|
clear() {
|
|
@@ -1972,6 +2136,7 @@ class Gridview {
|
|
|
1972
2136
|
const oldRoot = this._root;
|
|
1973
2137
|
if (oldRoot) {
|
|
1974
2138
|
oldRoot.dispose();
|
|
2139
|
+
this._maximizedNode = undefined;
|
|
1975
2140
|
this.element.removeChild(oldRoot.element);
|
|
1976
2141
|
}
|
|
1977
2142
|
this._root = root;
|
|
@@ -2058,9 +2223,12 @@ class Gridview {
|
|
|
2058
2223
|
constructor(proportionalLayout, styles, orientation) {
|
|
2059
2224
|
this.proportionalLayout = proportionalLayout;
|
|
2060
2225
|
this.styles = styles;
|
|
2226
|
+
this._maximizedNode = undefined;
|
|
2061
2227
|
this.disposable = new MutableDisposable();
|
|
2062
2228
|
this._onDidChange = new Emitter();
|
|
2063
2229
|
this.onDidChange = this._onDidChange.event;
|
|
2230
|
+
this._onDidMaxmizedNodeChange = new Emitter();
|
|
2231
|
+
this.onDidMaxmizedNodeChange = this._onDidMaxmizedNodeChange.event;
|
|
2064
2232
|
this.element = document.createElement('div');
|
|
2065
2233
|
this.element.className = 'grid-view';
|
|
2066
2234
|
this.root = new BranchNode(orientation, proportionalLayout, styles, 0, 0);
|
|
@@ -2074,6 +2242,9 @@ class Gridview {
|
|
|
2074
2242
|
return parent.isChildVisible(index);
|
|
2075
2243
|
}
|
|
2076
2244
|
setViewVisible(location, visible) {
|
|
2245
|
+
if (this.hasMaximizedView()) {
|
|
2246
|
+
this.exitMaximizedView();
|
|
2247
|
+
}
|
|
2077
2248
|
const [rest, index] = tail(location);
|
|
2078
2249
|
const [, parent] = this.getNode(rest);
|
|
2079
2250
|
if (!(parent instanceof BranchNode)) {
|
|
@@ -2082,6 +2253,9 @@ class Gridview {
|
|
|
2082
2253
|
parent.setChildVisible(index, visible);
|
|
2083
2254
|
}
|
|
2084
2255
|
moveView(parentLocation, from, to) {
|
|
2256
|
+
if (this.hasMaximizedView()) {
|
|
2257
|
+
this.exitMaximizedView();
|
|
2258
|
+
}
|
|
2085
2259
|
const [, parent] = this.getNode(parentLocation);
|
|
2086
2260
|
if (!(parent instanceof BranchNode)) {
|
|
2087
2261
|
throw new Error('Invalid location');
|
|
@@ -2089,6 +2263,9 @@ class Gridview {
|
|
|
2089
2263
|
parent.moveChild(from, to);
|
|
2090
2264
|
}
|
|
2091
2265
|
addView(view, size, location) {
|
|
2266
|
+
if (this.hasMaximizedView()) {
|
|
2267
|
+
this.exitMaximizedView();
|
|
2268
|
+
}
|
|
2092
2269
|
const [rest, index] = tail(location);
|
|
2093
2270
|
const [pathToParent, parent] = this.getNode(rest);
|
|
2094
2271
|
if (parent instanceof BranchNode) {
|
|
@@ -2121,6 +2298,9 @@ class Gridview {
|
|
|
2121
2298
|
return this.removeView(location, sizing);
|
|
2122
2299
|
}
|
|
2123
2300
|
removeView(location, sizing) {
|
|
2301
|
+
if (this.hasMaximizedView()) {
|
|
2302
|
+
this.exitMaximizedView();
|
|
2303
|
+
}
|
|
2124
2304
|
const [rest, index] = tail(location);
|
|
2125
2305
|
const [pathToParent, parent] = this.getNode(rest);
|
|
2126
2306
|
if (!(parent instanceof BranchNode)) {
|
|
@@ -2858,6 +3038,24 @@ class DockviewApi {
|
|
|
2858
3038
|
moveToPrevious(options) {
|
|
2859
3039
|
this.component.moveToPrevious(options);
|
|
2860
3040
|
}
|
|
3041
|
+
maximizeGroup(panel) {
|
|
3042
|
+
this.component.maximizeGroup(panel.group);
|
|
3043
|
+
}
|
|
3044
|
+
hasMaximizedGroup() {
|
|
3045
|
+
return this.component.hasMaximizedGroup();
|
|
3046
|
+
}
|
|
3047
|
+
exitMaxmizedGroup() {
|
|
3048
|
+
this.component.exitMaximizedGroup();
|
|
3049
|
+
}
|
|
3050
|
+
get onDidMaxmizedGroupChange() {
|
|
3051
|
+
return this.component.onDidMaxmizedGroupChange;
|
|
3052
|
+
}
|
|
3053
|
+
/**
|
|
3054
|
+
* Add a popout group in a new Window
|
|
3055
|
+
*/
|
|
3056
|
+
addPopoutGroup(item, options) {
|
|
3057
|
+
this.component.addPopoutGroup(item, options);
|
|
3058
|
+
}
|
|
2861
3059
|
}
|
|
2862
3060
|
|
|
2863
3061
|
class DragAndDropObserver extends CompositeDisposable {
|
|
@@ -2868,29 +3066,44 @@ class DragAndDropObserver extends CompositeDisposable {
|
|
|
2868
3066
|
this.target = null;
|
|
2869
3067
|
this.registerListeners();
|
|
2870
3068
|
}
|
|
3069
|
+
onDragEnter(e) {
|
|
3070
|
+
this.target = e.target;
|
|
3071
|
+
this.callbacks.onDragEnter(e);
|
|
3072
|
+
}
|
|
3073
|
+
onDragOver(e) {
|
|
3074
|
+
e.preventDefault(); // needed so that the drop event fires (https://stackoverflow.com/questions/21339924/drop-event-not-firing-in-chrome)
|
|
3075
|
+
if (this.callbacks.onDragOver) {
|
|
3076
|
+
this.callbacks.onDragOver(e);
|
|
3077
|
+
}
|
|
3078
|
+
}
|
|
3079
|
+
onDragLeave(e) {
|
|
3080
|
+
if (this.target === e.target) {
|
|
3081
|
+
this.target = null;
|
|
3082
|
+
this.callbacks.onDragLeave(e);
|
|
3083
|
+
}
|
|
3084
|
+
}
|
|
3085
|
+
onDragEnd(e) {
|
|
3086
|
+
this.target = null;
|
|
3087
|
+
this.callbacks.onDragEnd(e);
|
|
3088
|
+
}
|
|
3089
|
+
onDrop(e) {
|
|
3090
|
+
this.callbacks.onDrop(e);
|
|
3091
|
+
}
|
|
2871
3092
|
registerListeners() {
|
|
2872
3093
|
this.addDisposables(addDisposableListener(this.element, 'dragenter', (e) => {
|
|
2873
|
-
this.
|
|
2874
|
-
this.callbacks.onDragEnter(e);
|
|
3094
|
+
this.onDragEnter(e);
|
|
2875
3095
|
}, true));
|
|
2876
3096
|
this.addDisposables(addDisposableListener(this.element, 'dragover', (e) => {
|
|
2877
|
-
|
|
2878
|
-
if (this.callbacks.onDragOver) {
|
|
2879
|
-
this.callbacks.onDragOver(e);
|
|
2880
|
-
}
|
|
3097
|
+
this.onDragOver(e);
|
|
2881
3098
|
}, true));
|
|
2882
3099
|
this.addDisposables(addDisposableListener(this.element, 'dragleave', (e) => {
|
|
2883
|
-
|
|
2884
|
-
this.target = null;
|
|
2885
|
-
this.callbacks.onDragLeave(e);
|
|
2886
|
-
}
|
|
3100
|
+
this.onDragLeave(e);
|
|
2887
3101
|
}));
|
|
2888
3102
|
this.addDisposables(addDisposableListener(this.element, 'dragend', (e) => {
|
|
2889
|
-
this.
|
|
2890
|
-
this.callbacks.onDragEnd(e);
|
|
3103
|
+
this.onDragEnd(e);
|
|
2891
3104
|
}));
|
|
2892
3105
|
this.addDisposables(addDisposableListener(this.element, 'drop', (e) => {
|
|
2893
|
-
this.
|
|
3106
|
+
this.onDrop(e);
|
|
2894
3107
|
}));
|
|
2895
3108
|
}
|
|
2896
3109
|
}
|
|
@@ -2942,7 +3155,7 @@ class Droptarget extends CompositeDisposable {
|
|
|
2942
3155
|
this.onDrop = this._onDrop.event;
|
|
2943
3156
|
// use a set to take advantage of #<set>.has
|
|
2944
3157
|
this._acceptedTargetZonesSet = new Set(this.options.acceptedTargetZones);
|
|
2945
|
-
this.
|
|
3158
|
+
this.dnd = new DragAndDropObserver(this.element, {
|
|
2946
3159
|
onDragEnter: () => undefined,
|
|
2947
3160
|
onDragOver: (e) => {
|
|
2948
3161
|
if (this._acceptedTargetZonesSet.size === 0) {
|
|
@@ -3009,7 +3222,8 @@ class Droptarget extends CompositeDisposable {
|
|
|
3009
3222
|
this._onDrop.fire({ position: state, nativeEvent: e });
|
|
3010
3223
|
}
|
|
3011
3224
|
},
|
|
3012
|
-
})
|
|
3225
|
+
});
|
|
3226
|
+
this.addDisposables(this._onDrop, this.dnd);
|
|
3013
3227
|
}
|
|
3014
3228
|
setTargetZones(acceptedTargetZones) {
|
|
3015
3229
|
this._acceptedTargetZonesSet = new Set(acceptedTargetZones);
|
|
@@ -3165,12 +3379,22 @@ function calculateQuadrantAsPixels(overlayType, x, y, width, height, threshold)
|
|
|
3165
3379
|
return 'center';
|
|
3166
3380
|
}
|
|
3167
3381
|
|
|
3382
|
+
exports.DockviewDropTargets = void 0;
|
|
3383
|
+
(function (DockviewDropTargets) {
|
|
3384
|
+
DockviewDropTargets[DockviewDropTargets["Tab"] = 0] = "Tab";
|
|
3385
|
+
DockviewDropTargets[DockviewDropTargets["Panel"] = 1] = "Panel";
|
|
3386
|
+
DockviewDropTargets[DockviewDropTargets["TabContainer"] = 2] = "TabContainer";
|
|
3387
|
+
DockviewDropTargets[DockviewDropTargets["Edge"] = 3] = "Edge";
|
|
3388
|
+
})(exports.DockviewDropTargets || (exports.DockviewDropTargets = {}));
|
|
3389
|
+
|
|
3168
3390
|
class ContentContainer extends CompositeDisposable {
|
|
3169
3391
|
get element() {
|
|
3170
3392
|
return this._element;
|
|
3171
3393
|
}
|
|
3172
|
-
constructor() {
|
|
3394
|
+
constructor(accessor, group) {
|
|
3173
3395
|
super();
|
|
3396
|
+
this.accessor = accessor;
|
|
3397
|
+
this.group = group;
|
|
3174
3398
|
this.disposable = new MutableDisposable();
|
|
3175
3399
|
this._onDidFocus = new Emitter();
|
|
3176
3400
|
this.onDidFocus = this._onDidFocus.event;
|
|
@@ -3180,11 +3404,38 @@ class ContentContainer extends CompositeDisposable {
|
|
|
3180
3404
|
this._element.className = 'content-container';
|
|
3181
3405
|
this._element.tabIndex = -1;
|
|
3182
3406
|
this.addDisposables(this._onDidFocus, this._onDidBlur);
|
|
3183
|
-
|
|
3184
|
-
|
|
3185
|
-
|
|
3186
|
-
|
|
3187
|
-
|
|
3407
|
+
this.dropTarget = new Droptarget(this.element, {
|
|
3408
|
+
acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],
|
|
3409
|
+
canDisplayOverlay: (event, position) => {
|
|
3410
|
+
if (this.group.locked === 'no-drop-target' ||
|
|
3411
|
+
(this.group.locked && position === 'center')) {
|
|
3412
|
+
return false;
|
|
3413
|
+
}
|
|
3414
|
+
const data = getPanelData();
|
|
3415
|
+
if (!data &&
|
|
3416
|
+
event.shiftKey &&
|
|
3417
|
+
this.group.location !== 'floating') {
|
|
3418
|
+
return false;
|
|
3419
|
+
}
|
|
3420
|
+
if (data && data.viewId === this.accessor.id) {
|
|
3421
|
+
if (data.groupId === this.group.id) {
|
|
3422
|
+
if (position === 'center') {
|
|
3423
|
+
// don't allow to drop on self for center position
|
|
3424
|
+
return false;
|
|
3425
|
+
}
|
|
3426
|
+
if (data.panelId === null) {
|
|
3427
|
+
// don't allow group move to drop anywhere on self
|
|
3428
|
+
return false;
|
|
3429
|
+
}
|
|
3430
|
+
}
|
|
3431
|
+
const groupHasOnePanelAndIsActiveDragElement = this.group.panels.length === 1 &&
|
|
3432
|
+
data.groupId === this.group.id;
|
|
3433
|
+
return !groupHasOnePanelAndIsActiveDragElement;
|
|
3434
|
+
}
|
|
3435
|
+
return this.group.canDisplayOverlay(event, position, exports.DockviewDropTargets.Panel);
|
|
3436
|
+
},
|
|
3437
|
+
});
|
|
3438
|
+
this.addDisposables(this.dropTarget);
|
|
3188
3439
|
}
|
|
3189
3440
|
show() {
|
|
3190
3441
|
this.element.style.display = '';
|
|
@@ -3192,23 +3443,43 @@ class ContentContainer extends CompositeDisposable {
|
|
|
3192
3443
|
hide() {
|
|
3193
3444
|
this.element.style.display = 'none';
|
|
3194
3445
|
}
|
|
3195
|
-
|
|
3196
|
-
|
|
3197
|
-
|
|
3198
|
-
|
|
3199
|
-
|
|
3200
|
-
|
|
3201
|
-
|
|
3202
|
-
|
|
3203
|
-
|
|
3204
|
-
this.panel = undefined;
|
|
3446
|
+
renderPanel(panel, options = { asActive: true }) {
|
|
3447
|
+
const doRender = options.asActive ||
|
|
3448
|
+
(this.panel && this.group.isPanelActive(this.panel));
|
|
3449
|
+
if (this.panel &&
|
|
3450
|
+
this.panel.view.content.element.parentElement === this._element) {
|
|
3451
|
+
/**
|
|
3452
|
+
* If the currently attached panel is mounted directly to the content then remove it
|
|
3453
|
+
*/
|
|
3454
|
+
this._element.removeChild(this.panel.view.content.element);
|
|
3205
3455
|
}
|
|
3206
3456
|
this.panel = panel;
|
|
3207
|
-
|
|
3208
|
-
|
|
3209
|
-
|
|
3210
|
-
|
|
3211
|
-
|
|
3457
|
+
let container;
|
|
3458
|
+
switch (panel.api.renderer) {
|
|
3459
|
+
case 'onlyWhenVisibile':
|
|
3460
|
+
this.accessor.overlayRenderContainer.detatch(panel);
|
|
3461
|
+
if (this.panel) {
|
|
3462
|
+
if (doRender) {
|
|
3463
|
+
this._element.appendChild(this.panel.view.content.element);
|
|
3464
|
+
}
|
|
3465
|
+
}
|
|
3466
|
+
container = this._element;
|
|
3467
|
+
break;
|
|
3468
|
+
case 'always':
|
|
3469
|
+
if (panel.view.content.element.parentElement === this._element) {
|
|
3470
|
+
this._element.removeChild(panel.view.content.element);
|
|
3471
|
+
}
|
|
3472
|
+
container = this.accessor.overlayRenderContainer.attach({
|
|
3473
|
+
panel,
|
|
3474
|
+
referenceContainer: this,
|
|
3475
|
+
});
|
|
3476
|
+
break;
|
|
3477
|
+
}
|
|
3478
|
+
if (doRender) {
|
|
3479
|
+
const _onDidFocus = panel.view.content.onDidFocus;
|
|
3480
|
+
const _onDidBlur = panel.view.content.onDidBlur;
|
|
3481
|
+
const focusTracker = trackFocus(container);
|
|
3482
|
+
const disposable = new CompositeDisposable();
|
|
3212
3483
|
disposable.addDisposables(focusTracker, focusTracker.onDidFocus(() => this._onDidFocus.fire()), focusTracker.onDidBlur(() => this._onDidBlur.fire()));
|
|
3213
3484
|
if (_onDidFocus) {
|
|
3214
3485
|
disposable.addDisposables(_onDidFocus(() => this._onDidFocus.fire()));
|
|
@@ -3216,17 +3487,23 @@ class ContentContainer extends CompositeDisposable {
|
|
|
3216
3487
|
if (_onDidBlur) {
|
|
3217
3488
|
disposable.addDisposables(_onDidBlur(() => this._onDidBlur.fire()));
|
|
3218
3489
|
}
|
|
3219
|
-
this.
|
|
3490
|
+
this.disposable.value = disposable;
|
|
3220
3491
|
}
|
|
3221
|
-
|
|
3492
|
+
}
|
|
3493
|
+
openPanel(panel) {
|
|
3494
|
+
if (this.panel === panel) {
|
|
3495
|
+
return;
|
|
3496
|
+
}
|
|
3497
|
+
this.renderPanel(panel);
|
|
3222
3498
|
}
|
|
3223
3499
|
layout(_width, _height) {
|
|
3224
3500
|
// noop
|
|
3225
3501
|
}
|
|
3226
3502
|
closePanel() {
|
|
3227
|
-
|
|
3228
|
-
|
|
3229
|
-
|
|
3503
|
+
if (this.panel) {
|
|
3504
|
+
if (this.accessor.options.defaultRenderer === 'onlyWhenVisibile') {
|
|
3505
|
+
this._element.removeChild(this.panel.view.content.element);
|
|
3506
|
+
}
|
|
3230
3507
|
this.panel = undefined;
|
|
3231
3508
|
}
|
|
3232
3509
|
}
|
|
@@ -3236,14 +3513,6 @@ class ContentContainer extends CompositeDisposable {
|
|
|
3236
3513
|
}
|
|
3237
3514
|
}
|
|
3238
3515
|
|
|
3239
|
-
exports.DockviewDropTargets = void 0;
|
|
3240
|
-
(function (DockviewDropTargets) {
|
|
3241
|
-
DockviewDropTargets[DockviewDropTargets["Tab"] = 0] = "Tab";
|
|
3242
|
-
DockviewDropTargets[DockviewDropTargets["Panel"] = 1] = "Panel";
|
|
3243
|
-
DockviewDropTargets[DockviewDropTargets["TabContainer"] = 2] = "TabContainer";
|
|
3244
|
-
DockviewDropTargets[DockviewDropTargets["Edge"] = 3] = "Edge";
|
|
3245
|
-
})(exports.DockviewDropTargets || (exports.DockviewDropTargets = {}));
|
|
3246
|
-
|
|
3247
3516
|
class DragHandler extends CompositeDisposable {
|
|
3248
3517
|
constructor(el) {
|
|
3249
3518
|
super();
|
|
@@ -3418,7 +3687,7 @@ class GroupDragHandler extends DragHandler {
|
|
|
3418
3687
|
}, true));
|
|
3419
3688
|
}
|
|
3420
3689
|
isCancelled(_event) {
|
|
3421
|
-
if (this.group.api.
|
|
3690
|
+
if (this.group.api.location === 'floating' && !_event.shiftKey) {
|
|
3422
3691
|
return true;
|
|
3423
3692
|
}
|
|
3424
3693
|
return false;
|
|
@@ -3620,7 +3889,7 @@ class TabsContainer extends CompositeDisposable {
|
|
|
3620
3889
|
const isFloatingGroupsEnabled = !this.accessor.options.disableFloatingGroups;
|
|
3621
3890
|
if (isFloatingGroupsEnabled &&
|
|
3622
3891
|
event.shiftKey &&
|
|
3623
|
-
|
|
3892
|
+
this.group.api.location !== 'floating') {
|
|
3624
3893
|
event.preventDefault();
|
|
3625
3894
|
const { top, left } = this.element.getBoundingClientRect();
|
|
3626
3895
|
const { top: rootTop, left: rootLeft } = this.accessor.element.getBoundingClientRect();
|
|
@@ -3685,7 +3954,7 @@ class TabsContainer extends CompositeDisposable {
|
|
|
3685
3954
|
}), tab.onChanged((event) => {
|
|
3686
3955
|
var _a;
|
|
3687
3956
|
const isFloatingGroupsEnabled = !this.accessor.options.disableFloatingGroups;
|
|
3688
|
-
const isFloatingWithOnePanel = this.group.api.
|
|
3957
|
+
const isFloatingWithOnePanel = this.group.api.location === 'floating' && this.size === 1;
|
|
3689
3958
|
if (isFloatingGroupsEnabled &&
|
|
3690
3959
|
!isFloatingWithOnePanel &&
|
|
3691
3960
|
event.shiftKey) {
|
|
@@ -3768,15 +4037,37 @@ class DockviewGroupPanelModel extends CompositeDisposable {
|
|
|
3768
4037
|
}
|
|
3769
4038
|
return isAncestor(document.activeElement, this.contentContainer.element);
|
|
3770
4039
|
}
|
|
3771
|
-
get
|
|
3772
|
-
return this.
|
|
3773
|
-
}
|
|
3774
|
-
set
|
|
3775
|
-
this.
|
|
3776
|
-
this.
|
|
3777
|
-
toggleClass(this.container, 'dv-groupview-
|
|
3778
|
-
|
|
3779
|
-
|
|
4040
|
+
get location() {
|
|
4041
|
+
return this._location;
|
|
4042
|
+
}
|
|
4043
|
+
set location(value) {
|
|
4044
|
+
this._location = value;
|
|
4045
|
+
toggleClass(this.container, 'dv-groupview-floating', false);
|
|
4046
|
+
toggleClass(this.container, 'dv-groupview-popout', false);
|
|
4047
|
+
switch (value) {
|
|
4048
|
+
case 'grid':
|
|
4049
|
+
this.contentContainer.dropTarget.setTargetZones([
|
|
4050
|
+
'top',
|
|
4051
|
+
'bottom',
|
|
4052
|
+
'left',
|
|
4053
|
+
'right',
|
|
4054
|
+
'center',
|
|
4055
|
+
]);
|
|
4056
|
+
break;
|
|
4057
|
+
case 'floating':
|
|
4058
|
+
this.contentContainer.dropTarget.setTargetZones(['center']);
|
|
4059
|
+
this.contentContainer.dropTarget.setTargetZones(value
|
|
4060
|
+
? ['center']
|
|
4061
|
+
: ['top', 'bottom', 'left', 'right', 'center']);
|
|
4062
|
+
toggleClass(this.container, 'dv-groupview-floating', true);
|
|
4063
|
+
break;
|
|
4064
|
+
case 'popout':
|
|
4065
|
+
this.contentContainer.dropTarget.setTargetZones(['center']);
|
|
4066
|
+
toggleClass(this.container, 'dv-groupview-popout', true);
|
|
4067
|
+
break;
|
|
4068
|
+
}
|
|
4069
|
+
this.groupPanel.api._onDidLocationChange.fire({
|
|
4070
|
+
location: this.location,
|
|
3780
4071
|
});
|
|
3781
4072
|
}
|
|
3782
4073
|
constructor(container, accessor, id, options, groupPanel) {
|
|
@@ -3789,7 +4080,7 @@ class DockviewGroupPanelModel extends CompositeDisposable {
|
|
|
3789
4080
|
this.groupPanel = groupPanel;
|
|
3790
4081
|
this._isGroupActive = false;
|
|
3791
4082
|
this._locked = false;
|
|
3792
|
-
this.
|
|
4083
|
+
this._location = 'grid';
|
|
3793
4084
|
this.mostRecentlyUsed = [];
|
|
3794
4085
|
this._onDidChange = new Emitter();
|
|
3795
4086
|
this.onDidChange = this._onDidChange.event;
|
|
@@ -3812,35 +4103,7 @@ class DockviewGroupPanelModel extends CompositeDisposable {
|
|
|
3812
4103
|
this.onDidActivePanelChange = this._onDidActivePanelChange.event;
|
|
3813
4104
|
toggleClass(this.container, 'groupview', true);
|
|
3814
4105
|
this.tabsContainer = new TabsContainer(this.accessor, this.groupPanel);
|
|
3815
|
-
this.contentContainer = new ContentContainer();
|
|
3816
|
-
this.dropTarget = new Droptarget(this.contentContainer.element, {
|
|
3817
|
-
acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],
|
|
3818
|
-
canDisplayOverlay: (event, position) => {
|
|
3819
|
-
if (this.locked === 'no-drop-target' ||
|
|
3820
|
-
(this.locked && position === 'center')) {
|
|
3821
|
-
return false;
|
|
3822
|
-
}
|
|
3823
|
-
const data = getPanelData();
|
|
3824
|
-
if (!data && event.shiftKey && !this.isFloating) {
|
|
3825
|
-
return false;
|
|
3826
|
-
}
|
|
3827
|
-
if (data && data.viewId === this.accessor.id) {
|
|
3828
|
-
if (data.groupId === this.id) {
|
|
3829
|
-
if (position === 'center') {
|
|
3830
|
-
// don't allow to drop on self for center position
|
|
3831
|
-
return false;
|
|
3832
|
-
}
|
|
3833
|
-
if (data.panelId === null) {
|
|
3834
|
-
// don't allow group move to drop anywhere on self
|
|
3835
|
-
return false;
|
|
3836
|
-
}
|
|
3837
|
-
}
|
|
3838
|
-
const groupHasOnePanelAndIsActiveDragElement = this._panels.length === 1 && data.groupId === this.id;
|
|
3839
|
-
return !groupHasOnePanelAndIsActiveDragElement;
|
|
3840
|
-
}
|
|
3841
|
-
return this.canDisplayOverlay(event, position, exports.DockviewDropTargets.Panel);
|
|
3842
|
-
},
|
|
3843
|
-
});
|
|
4106
|
+
this.contentContainer = new ContentContainer(this.accessor, this);
|
|
3844
4107
|
container.append(this.tabsContainer.element, this.contentContainer.element);
|
|
3845
4108
|
this.header.hidden = !!options.hideHeader;
|
|
3846
4109
|
this.locked = (_a = options.locked) !== null && _a !== void 0 ? _a : false;
|
|
@@ -3854,7 +4117,7 @@ class DockviewGroupPanelModel extends CompositeDisposable {
|
|
|
3854
4117
|
this.accessor.doSetGroupActive(this.groupPanel, true);
|
|
3855
4118
|
}), this.contentContainer.onDidBlur(() => {
|
|
3856
4119
|
// noop
|
|
3857
|
-
}), this.dropTarget.onDrop((event) => {
|
|
4120
|
+
}), this.contentContainer.dropTarget.onDrop((event) => {
|
|
3858
4121
|
this.handleDropEvent(event.nativeEvent, event.position);
|
|
3859
4122
|
}), this._onMove, this._onDidChange, this._onDidDrop, this._onDidAddPanel, this._onDidRemovePanel, this._onDidActivePanelChange);
|
|
3860
4123
|
}
|
|
@@ -3903,6 +4166,9 @@ class DockviewGroupPanelModel extends CompositeDisposable {
|
|
|
3903
4166
|
this.tabsContainer.setPrefixActionsElement(this._prefixHeaderActions.element);
|
|
3904
4167
|
}
|
|
3905
4168
|
}
|
|
4169
|
+
rerender(panel) {
|
|
4170
|
+
this.contentContainer.renderPanel(panel, { asActive: false });
|
|
4171
|
+
}
|
|
3906
4172
|
indexOf(panel) {
|
|
3907
4173
|
return this.tabsContainer.indexOf(panel.id);
|
|
3908
4174
|
}
|
|
@@ -4094,12 +4360,12 @@ class DockviewGroupPanelModel extends CompositeDisposable {
|
|
|
4094
4360
|
doAddPanel(panel, index = this.panels.length, skipSetActive = false) {
|
|
4095
4361
|
const existingPanel = this._panels.indexOf(panel);
|
|
4096
4362
|
const hasExistingPanel = existingPanel > -1;
|
|
4363
|
+
this.tabsContainer.show();
|
|
4364
|
+
this.contentContainer.show();
|
|
4097
4365
|
this.tabsContainer.openPanel(panel, index);
|
|
4098
4366
|
if (!skipSetActive) {
|
|
4099
4367
|
this.contentContainer.openPanel(panel);
|
|
4100
4368
|
}
|
|
4101
|
-
this.tabsContainer.show();
|
|
4102
|
-
this.contentContainer.show();
|
|
4103
4369
|
if (hasExistingPanel) {
|
|
4104
4370
|
// TODO - need to ensure ordering hasn't changed and if it has need to re-order this.panels
|
|
4105
4371
|
return;
|
|
@@ -4215,7 +4481,6 @@ class DockviewGroupPanelModel extends CompositeDisposable {
|
|
|
4215
4481
|
for (const panel of this.panels) {
|
|
4216
4482
|
panel.dispose();
|
|
4217
4483
|
}
|
|
4218
|
-
this.dropTarget.dispose();
|
|
4219
4484
|
this.tabsContainer.dispose();
|
|
4220
4485
|
this.contentContainer.dispose();
|
|
4221
4486
|
}
|
|
@@ -4254,7 +4519,7 @@ class Resizable extends CompositeDisposable {
|
|
|
4254
4519
|
if (this.disableResizing) {
|
|
4255
4520
|
return;
|
|
4256
4521
|
}
|
|
4257
|
-
if (!
|
|
4522
|
+
if (!isInDocument(this._element)) {
|
|
4258
4523
|
/**
|
|
4259
4524
|
* since the event is dispatched through requestAnimationFrame there is a small chance
|
|
4260
4525
|
* the component is no longer attached to the DOM, if that is the case the dimensions
|
|
@@ -4346,6 +4611,21 @@ class BaseGrid extends Resizable {
|
|
|
4346
4611
|
isVisible(panel) {
|
|
4347
4612
|
return this.gridview.isViewVisible(getGridLocation(panel.element));
|
|
4348
4613
|
}
|
|
4614
|
+
maximizeGroup(panel) {
|
|
4615
|
+
this.gridview.maximizeView(panel);
|
|
4616
|
+
}
|
|
4617
|
+
isMaximizedGroup(panel) {
|
|
4618
|
+
return this.gridview.maximizedView() === panel;
|
|
4619
|
+
}
|
|
4620
|
+
exitMaximizedGroup() {
|
|
4621
|
+
this.gridview.exitMaximizedView();
|
|
4622
|
+
}
|
|
4623
|
+
hasMaximizedGroup() {
|
|
4624
|
+
return this.gridview.hasMaximizedView();
|
|
4625
|
+
}
|
|
4626
|
+
get onDidMaxmizedGroupChange() {
|
|
4627
|
+
return this.gridview.onDidMaxmizedNodeChange;
|
|
4628
|
+
}
|
|
4349
4629
|
doAddGroup(group, location = [0], size) {
|
|
4350
4630
|
this.gridview.addView(group, size !== null && size !== void 0 ? size : exports.Sizing.Distribute, location);
|
|
4351
4631
|
this._onDidAddGroup.fire(group);
|
|
@@ -5122,32 +5402,63 @@ class GridviewPanel extends BasePanelView {
|
|
|
5122
5402
|
}
|
|
5123
5403
|
}
|
|
5124
5404
|
|
|
5405
|
+
// TODO find a better way to initialize and avoid needing null checks
|
|
5406
|
+
const NOT_INITIALIZED_MESSAGE = 'DockviewGroupPanelApiImpl not initialized';
|
|
5125
5407
|
class DockviewGroupPanelApiImpl extends GridviewPanelApiImpl {
|
|
5126
|
-
get
|
|
5408
|
+
get location() {
|
|
5127
5409
|
if (!this._group) {
|
|
5128
|
-
throw new Error(
|
|
5410
|
+
throw new Error(NOT_INITIALIZED_MESSAGE);
|
|
5129
5411
|
}
|
|
5130
|
-
return this._group.model.
|
|
5412
|
+
return this._group.model.location;
|
|
5131
5413
|
}
|
|
5132
5414
|
constructor(id, accessor) {
|
|
5133
5415
|
super(id);
|
|
5134
5416
|
this.accessor = accessor;
|
|
5135
|
-
this.
|
|
5136
|
-
this.
|
|
5137
|
-
this.addDisposables(this.
|
|
5417
|
+
this._onDidLocationChange = new Emitter();
|
|
5418
|
+
this.onDidLocationChange = this._onDidLocationChange.event;
|
|
5419
|
+
this.addDisposables(this._onDidLocationChange);
|
|
5138
5420
|
}
|
|
5139
5421
|
moveTo(options) {
|
|
5140
|
-
var _a;
|
|
5422
|
+
var _a, _b, _c;
|
|
5423
|
+
if (!this._group) {
|
|
5424
|
+
throw new Error(NOT_INITIALIZED_MESSAGE);
|
|
5425
|
+
}
|
|
5426
|
+
const group = (_a = options.group) !== null && _a !== void 0 ? _a : this.accessor.addGroup({
|
|
5427
|
+
direction: positionToDirection((_b = options.position) !== null && _b !== void 0 ? _b : 'right'),
|
|
5428
|
+
});
|
|
5429
|
+
this.accessor.moveGroupOrPanel(group, this._group.id, undefined, options.group ? (_c = options.position) !== null && _c !== void 0 ? _c : 'center' : 'center');
|
|
5430
|
+
}
|
|
5431
|
+
maximize() {
|
|
5432
|
+
if (!this._group) {
|
|
5433
|
+
throw new Error(NOT_INITIALIZED_MESSAGE);
|
|
5434
|
+
}
|
|
5435
|
+
if (this.location !== 'grid') {
|
|
5436
|
+
// only grid groups can be maximized
|
|
5437
|
+
return;
|
|
5438
|
+
}
|
|
5439
|
+
this.accessor.maximizeGroup(this._group);
|
|
5440
|
+
}
|
|
5441
|
+
isMaximized() {
|
|
5141
5442
|
if (!this._group) {
|
|
5142
|
-
throw new Error(
|
|
5443
|
+
throw new Error(NOT_INITIALIZED_MESSAGE);
|
|
5444
|
+
}
|
|
5445
|
+
return this.accessor.isMaximizedGroup(this._group);
|
|
5446
|
+
}
|
|
5447
|
+
exitMaximized() {
|
|
5448
|
+
if (!this._group) {
|
|
5449
|
+
throw new Error(NOT_INITIALIZED_MESSAGE);
|
|
5450
|
+
}
|
|
5451
|
+
if (this.isMaximized()) {
|
|
5452
|
+
this.accessor.exitMaximizedGroup();
|
|
5143
5453
|
}
|
|
5144
|
-
this.accessor.moveGroupOrPanel(options.group, this._group.id, undefined, (_a = options.position) !== null && _a !== void 0 ? _a : 'center');
|
|
5145
5454
|
}
|
|
5146
5455
|
initialize(group) {
|
|
5147
5456
|
this._group = group;
|
|
5148
5457
|
}
|
|
5149
5458
|
}
|
|
5150
5459
|
|
|
5460
|
+
const MINIMUM_DOCKVIEW_GROUP_PANEL_WIDTH = 100;
|
|
5461
|
+
const MINIMUM_DOCKVIEW_GROUP_PANEL_HEIGHT = 100;
|
|
5151
5462
|
class DockviewGroupPanel extends GridviewPanel {
|
|
5152
5463
|
get panels() {
|
|
5153
5464
|
return this._model.panels;
|
|
@@ -5172,8 +5483,8 @@ class DockviewGroupPanel extends GridviewPanel {
|
|
|
5172
5483
|
}
|
|
5173
5484
|
constructor(accessor, id, options) {
|
|
5174
5485
|
super(id, 'groupview_default', {
|
|
5175
|
-
minimumHeight:
|
|
5176
|
-
minimumWidth:
|
|
5486
|
+
minimumHeight: MINIMUM_DOCKVIEW_GROUP_PANEL_HEIGHT,
|
|
5487
|
+
minimumWidth: MINIMUM_DOCKVIEW_GROUP_PANEL_WIDTH,
|
|
5177
5488
|
}, new DockviewGroupPanelApiImpl(id, accessor));
|
|
5178
5489
|
this.api.initialize(this); // cannot use 'this' after after 'super' call
|
|
5179
5490
|
this._model = new DockviewGroupPanelModel(this.element, accessor, id, options, this);
|
|
@@ -5227,8 +5538,10 @@ class DockviewPanelApiImpl extends GridviewPanelApiImpl {
|
|
|
5227
5538
|
return this.panel.title;
|
|
5228
5539
|
}
|
|
5229
5540
|
get isGroupActive() {
|
|
5230
|
-
|
|
5231
|
-
|
|
5541
|
+
return this.group.isActive;
|
|
5542
|
+
}
|
|
5543
|
+
get renderer() {
|
|
5544
|
+
return this.panel.renderer;
|
|
5232
5545
|
}
|
|
5233
5546
|
set group(value) {
|
|
5234
5547
|
const isOldGroupActive = this.isGroupActive;
|
|
@@ -5256,10 +5569,12 @@ class DockviewPanelApiImpl extends GridviewPanelApiImpl {
|
|
|
5256
5569
|
this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;
|
|
5257
5570
|
this._onDidGroupChange = new Emitter();
|
|
5258
5571
|
this.onDidGroupChange = this._onDidGroupChange.event;
|
|
5572
|
+
this._onDidRendererChange = new Emitter();
|
|
5573
|
+
this.onDidRendererChange = this._onDidRendererChange.event;
|
|
5259
5574
|
this.disposable = new MutableDisposable();
|
|
5260
5575
|
this.initialize(panel);
|
|
5261
5576
|
this._group = group;
|
|
5262
|
-
this.addDisposables(this.disposable, this._onDidTitleChange, this._onDidGroupChange, this._onDidActiveGroupChange);
|
|
5577
|
+
this.addDisposables(this.disposable, this._onDidRendererChange, this._onDidTitleChange, this._onDidGroupChange, this._onDidActiveGroupChange);
|
|
5263
5578
|
}
|
|
5264
5579
|
moveTo(options) {
|
|
5265
5580
|
var _a;
|
|
@@ -5268,9 +5583,21 @@ class DockviewPanelApiImpl extends GridviewPanelApiImpl {
|
|
|
5268
5583
|
setTitle(title) {
|
|
5269
5584
|
this.panel.setTitle(title);
|
|
5270
5585
|
}
|
|
5586
|
+
setRenderer(renderer) {
|
|
5587
|
+
this.panel.setRenderer(renderer);
|
|
5588
|
+
}
|
|
5271
5589
|
close() {
|
|
5272
5590
|
this.group.model.closePanel(this.panel);
|
|
5273
5591
|
}
|
|
5592
|
+
maximize() {
|
|
5593
|
+
this.group.api.maximize();
|
|
5594
|
+
}
|
|
5595
|
+
isMaximized() {
|
|
5596
|
+
return this.group.api.isMaximized();
|
|
5597
|
+
}
|
|
5598
|
+
exitMaximized() {
|
|
5599
|
+
this.group.api.exitMaximized();
|
|
5600
|
+
}
|
|
5274
5601
|
}
|
|
5275
5602
|
|
|
5276
5603
|
class DockviewPanel extends CompositeDisposable {
|
|
@@ -5283,11 +5610,17 @@ class DockviewPanel extends CompositeDisposable {
|
|
|
5283
5610
|
get group() {
|
|
5284
5611
|
return this._group;
|
|
5285
5612
|
}
|
|
5286
|
-
|
|
5613
|
+
get renderer() {
|
|
5614
|
+
var _a;
|
|
5615
|
+
return (_a = this._renderer) !== null && _a !== void 0 ? _a : this.accessor.renderer;
|
|
5616
|
+
}
|
|
5617
|
+
constructor(id, accessor, containerApi, group, view, options) {
|
|
5287
5618
|
super();
|
|
5288
5619
|
this.id = id;
|
|
5620
|
+
this.accessor = accessor;
|
|
5289
5621
|
this.containerApi = containerApi;
|
|
5290
5622
|
this.view = view;
|
|
5623
|
+
this._renderer = options.renderer;
|
|
5291
5624
|
this._group = group;
|
|
5292
5625
|
this.api = new DockviewPanelApiImpl(this, this._group, accessor);
|
|
5293
5626
|
this.addDisposables(this.api.onActiveChange(() => {
|
|
@@ -5296,6 +5629,8 @@ class DockviewPanel extends CompositeDisposable {
|
|
|
5296
5629
|
// forward the resize event to the group since if you want to resize a panel
|
|
5297
5630
|
// you are actually just resizing the panels parent which is the group
|
|
5298
5631
|
this.group.api.setSize(event);
|
|
5632
|
+
}), this.api.onDidRendererChange((event) => {
|
|
5633
|
+
this.group.model.rerender(this);
|
|
5299
5634
|
}));
|
|
5300
5635
|
}
|
|
5301
5636
|
init(params) {
|
|
@@ -5315,6 +5650,7 @@ class DockviewPanel extends CompositeDisposable {
|
|
|
5315
5650
|
? this._params
|
|
5316
5651
|
: undefined,
|
|
5317
5652
|
title: this.title,
|
|
5653
|
+
renderer: this._renderer,
|
|
5318
5654
|
};
|
|
5319
5655
|
}
|
|
5320
5656
|
setTitle(title) {
|
|
@@ -5330,6 +5666,15 @@ class DockviewPanel extends CompositeDisposable {
|
|
|
5330
5666
|
this.api._onDidTitleChange.fire({ title });
|
|
5331
5667
|
}
|
|
5332
5668
|
}
|
|
5669
|
+
setRenderer(renderer) {
|
|
5670
|
+
const didChange = renderer !== this.renderer;
|
|
5671
|
+
if (didChange) {
|
|
5672
|
+
this._renderer = renderer;
|
|
5673
|
+
this.api._onDidRendererChange.fire({
|
|
5674
|
+
renderer: renderer,
|
|
5675
|
+
});
|
|
5676
|
+
}
|
|
5677
|
+
}
|
|
5333
5678
|
update(event) {
|
|
5334
5679
|
var _a;
|
|
5335
5680
|
// merge the new parameters with the existing parameters
|
|
@@ -5548,8 +5893,8 @@ class DockviewPanelModel {
|
|
|
5548
5893
|
}
|
|
5549
5894
|
|
|
5550
5895
|
class DefaultDockviewDeserialzier {
|
|
5551
|
-
constructor(
|
|
5552
|
-
this.
|
|
5896
|
+
constructor(accessor) {
|
|
5897
|
+
this.accessor = accessor;
|
|
5553
5898
|
}
|
|
5554
5899
|
fromJSON(panelData, group) {
|
|
5555
5900
|
var _a, _b;
|
|
@@ -5563,8 +5908,10 @@ class DefaultDockviewDeserialzier {
|
|
|
5563
5908
|
const tabComponent = viewData
|
|
5564
5909
|
? (_b = viewData.tab) === null || _b === void 0 ? void 0 : _b.id
|
|
5565
5910
|
: panelData.tabComponent;
|
|
5566
|
-
const view = new DockviewPanelModel(this.
|
|
5567
|
-
const panel = new DockviewPanel(panelId, this.
|
|
5911
|
+
const view = new DockviewPanelModel(this.accessor, panelId, contentComponent, tabComponent);
|
|
5912
|
+
const panel = new DockviewPanel(panelId, this.accessor, new DockviewApi(this.accessor), group, view, {
|
|
5913
|
+
renderer: panelData.renderer,
|
|
5914
|
+
});
|
|
5568
5915
|
panel.init({
|
|
5569
5916
|
title: title !== null && title !== void 0 ? title : panelId,
|
|
5570
5917
|
params: params !== null && params !== void 0 ? params : {},
|
|
@@ -5944,7 +6291,261 @@ class DockviewFloatingGroupPanel extends CompositeDisposable {
|
|
|
5944
6291
|
}
|
|
5945
6292
|
}
|
|
5946
6293
|
|
|
6294
|
+
class PopoutWindow extends CompositeDisposable {
|
|
6295
|
+
constructor(id, className, options) {
|
|
6296
|
+
super();
|
|
6297
|
+
this.id = id;
|
|
6298
|
+
this.className = className;
|
|
6299
|
+
this.options = options;
|
|
6300
|
+
this._onDidClose = new Emitter();
|
|
6301
|
+
this.onDidClose = this._onDidClose.event;
|
|
6302
|
+
this._window = null;
|
|
6303
|
+
this.addDisposables(this._onDidClose, {
|
|
6304
|
+
dispose: () => {
|
|
6305
|
+
this.close();
|
|
6306
|
+
},
|
|
6307
|
+
});
|
|
6308
|
+
}
|
|
6309
|
+
dimensions() {
|
|
6310
|
+
if (!this._window) {
|
|
6311
|
+
return null;
|
|
6312
|
+
}
|
|
6313
|
+
const left = this._window.value.screenX;
|
|
6314
|
+
const top = this._window.value.screenY;
|
|
6315
|
+
const width = this._window.value.innerWidth;
|
|
6316
|
+
const height = this._window.value.innerHeight;
|
|
6317
|
+
return { top, left, width, height };
|
|
6318
|
+
}
|
|
6319
|
+
close() {
|
|
6320
|
+
if (this._window) {
|
|
6321
|
+
this._window.disposable.dispose();
|
|
6322
|
+
this._window.value.close();
|
|
6323
|
+
this._window = null;
|
|
6324
|
+
}
|
|
6325
|
+
}
|
|
6326
|
+
open(content) {
|
|
6327
|
+
if (this._window) {
|
|
6328
|
+
throw new Error('instance of popout window is already open');
|
|
6329
|
+
}
|
|
6330
|
+
const url = `${this.options.url}`;
|
|
6331
|
+
const features = Object.entries({
|
|
6332
|
+
top: this.options.top,
|
|
6333
|
+
left: this.options.left,
|
|
6334
|
+
width: this.options.width,
|
|
6335
|
+
height: this.options.height,
|
|
6336
|
+
})
|
|
6337
|
+
.map(([key, value]) => `${key}=${value}`)
|
|
6338
|
+
.join(',');
|
|
6339
|
+
// https://developer.mozilla.org/en-US/docs/Web/API/Window/open
|
|
6340
|
+
const externalWindow = window.open(url, this.id, features);
|
|
6341
|
+
if (!externalWindow) {
|
|
6342
|
+
return;
|
|
6343
|
+
}
|
|
6344
|
+
const disposable = new CompositeDisposable();
|
|
6345
|
+
this._window = { value: externalWindow, disposable };
|
|
6346
|
+
const cleanUp = () => {
|
|
6347
|
+
this._onDidClose.fire();
|
|
6348
|
+
this._window = null;
|
|
6349
|
+
};
|
|
6350
|
+
// prevent any default content from loading
|
|
6351
|
+
// externalWindow.document.body.replaceWith(document.createElement('div'));
|
|
6352
|
+
disposable.addDisposables(addDisposableWindowListener(window, 'beforeunload', () => {
|
|
6353
|
+
cleanUp();
|
|
6354
|
+
this.close();
|
|
6355
|
+
}));
|
|
6356
|
+
externalWindow.addEventListener('load', () => {
|
|
6357
|
+
const externalDocument = externalWindow.document;
|
|
6358
|
+
externalDocument.title = document.title;
|
|
6359
|
+
const div = document.createElement('div');
|
|
6360
|
+
div.classList.add('dv-popout-window');
|
|
6361
|
+
div.style.position = 'absolute';
|
|
6362
|
+
div.style.width = '100%';
|
|
6363
|
+
div.style.height = '100%';
|
|
6364
|
+
div.style.top = '0px';
|
|
6365
|
+
div.style.left = '0px';
|
|
6366
|
+
div.classList.add(this.className);
|
|
6367
|
+
div.appendChild(content);
|
|
6368
|
+
externalDocument.body.replaceChildren(div);
|
|
6369
|
+
externalDocument.body.classList.add(this.className);
|
|
6370
|
+
addStyles(externalDocument, window.document.styleSheets);
|
|
6371
|
+
externalWindow.addEventListener('beforeunload', () => {
|
|
6372
|
+
// TODO: indicate external window is closing
|
|
6373
|
+
cleanUp();
|
|
6374
|
+
});
|
|
6375
|
+
});
|
|
6376
|
+
}
|
|
6377
|
+
}
|
|
6378
|
+
|
|
6379
|
+
class DockviewPopoutGroupPanel extends CompositeDisposable {
|
|
6380
|
+
constructor(id, group, options) {
|
|
6381
|
+
var _a;
|
|
6382
|
+
super();
|
|
6383
|
+
this.id = id;
|
|
6384
|
+
this.group = group;
|
|
6385
|
+
this.options = options;
|
|
6386
|
+
this.window = new PopoutWindow(id, (_a = options.className) !== null && _a !== void 0 ? _a : '', {
|
|
6387
|
+
url: this.options.popoutUrl,
|
|
6388
|
+
left: this.options.box.left,
|
|
6389
|
+
top: this.options.box.top,
|
|
6390
|
+
width: this.options.box.width,
|
|
6391
|
+
height: this.options.box.height,
|
|
6392
|
+
});
|
|
6393
|
+
group.model.location = 'popout';
|
|
6394
|
+
this.addDisposables(this.window, {
|
|
6395
|
+
dispose: () => {
|
|
6396
|
+
group.model.location = 'grid';
|
|
6397
|
+
},
|
|
6398
|
+
}, this.window.onDidClose(() => {
|
|
6399
|
+
this.dispose();
|
|
6400
|
+
}));
|
|
6401
|
+
this.window.open(group.element);
|
|
6402
|
+
}
|
|
6403
|
+
}
|
|
6404
|
+
|
|
5947
6405
|
const DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE = 100;
|
|
6406
|
+
const DEFAULT_FLOATING_GROUP_POSITION = { left: 100, top: 100 };
|
|
6407
|
+
|
|
6408
|
+
function createFocusableElement() {
|
|
6409
|
+
const element = document.createElement('div');
|
|
6410
|
+
element.tabIndex = -1;
|
|
6411
|
+
return element;
|
|
6412
|
+
}
|
|
6413
|
+
class OverlayRenderContainer extends CompositeDisposable {
|
|
6414
|
+
constructor(element) {
|
|
6415
|
+
super();
|
|
6416
|
+
this.element = element;
|
|
6417
|
+
this.map = {};
|
|
6418
|
+
this.addDisposables(Disposable.from(() => {
|
|
6419
|
+
for (const value of Object.values(this.map)) {
|
|
6420
|
+
value.disposable.dispose();
|
|
6421
|
+
value.destroy.dispose();
|
|
6422
|
+
}
|
|
6423
|
+
}));
|
|
6424
|
+
}
|
|
6425
|
+
detatch(panel) {
|
|
6426
|
+
if (this.map[panel.api.id]) {
|
|
6427
|
+
const { disposable, destroy } = this.map[panel.api.id];
|
|
6428
|
+
disposable.dispose();
|
|
6429
|
+
destroy.dispose();
|
|
6430
|
+
delete this.map[panel.api.id];
|
|
6431
|
+
return true;
|
|
6432
|
+
}
|
|
6433
|
+
return false;
|
|
6434
|
+
}
|
|
6435
|
+
attach(options) {
|
|
6436
|
+
const { panel, referenceContainer } = options;
|
|
6437
|
+
if (!this.map[panel.api.id]) {
|
|
6438
|
+
const element = createFocusableElement();
|
|
6439
|
+
element.className = 'dv-render-overlay';
|
|
6440
|
+
this.map[panel.api.id] = {
|
|
6441
|
+
panel,
|
|
6442
|
+
disposable: Disposable.NONE,
|
|
6443
|
+
destroy: Disposable.NONE,
|
|
6444
|
+
element,
|
|
6445
|
+
};
|
|
6446
|
+
}
|
|
6447
|
+
const focusContainer = this.map[panel.api.id].element;
|
|
6448
|
+
if (panel.view.content.element.parentElement !== focusContainer) {
|
|
6449
|
+
focusContainer.appendChild(panel.view.content.element);
|
|
6450
|
+
}
|
|
6451
|
+
if (focusContainer.parentElement !== this.element) {
|
|
6452
|
+
this.element.appendChild(focusContainer);
|
|
6453
|
+
}
|
|
6454
|
+
const resize = () => {
|
|
6455
|
+
// TODO propagate position to avoid getDomNodePagePosition calls, possible performance bottleneck?
|
|
6456
|
+
const box = getDomNodePagePosition(referenceContainer.element);
|
|
6457
|
+
const box2 = getDomNodePagePosition(this.element);
|
|
6458
|
+
focusContainer.style.left = `${box.left - box2.left}px`;
|
|
6459
|
+
focusContainer.style.top = `${box.top - box2.top}px`;
|
|
6460
|
+
focusContainer.style.width = `${box.width}px`;
|
|
6461
|
+
focusContainer.style.height = `${box.height}px`;
|
|
6462
|
+
toggleClass(focusContainer, 'dv-render-overlay-float', panel.group.api.location === 'floating');
|
|
6463
|
+
};
|
|
6464
|
+
const visibilityChanged = () => {
|
|
6465
|
+
if (panel.api.isVisible) {
|
|
6466
|
+
resize();
|
|
6467
|
+
}
|
|
6468
|
+
focusContainer.style.display = panel.api.isVisible ? '' : 'none';
|
|
6469
|
+
};
|
|
6470
|
+
const disposable = new CompositeDisposable(
|
|
6471
|
+
/**
|
|
6472
|
+
* since container is positioned absoutely we must explicitly forward
|
|
6473
|
+
* the dnd events for the expect behaviours to continue to occur in terms of dnd
|
|
6474
|
+
*
|
|
6475
|
+
* the dnd observer does not need to be conditional on whether the panel is visible since
|
|
6476
|
+
* non-visible panels are 'display: none' and in such case the dnd observer will not fire.
|
|
6477
|
+
*/
|
|
6478
|
+
new DragAndDropObserver(focusContainer, {
|
|
6479
|
+
onDragEnd: (e) => {
|
|
6480
|
+
referenceContainer.dropTarget.dnd.onDragEnd(e);
|
|
6481
|
+
},
|
|
6482
|
+
onDragEnter: (e) => {
|
|
6483
|
+
referenceContainer.dropTarget.dnd.onDragEnter(e);
|
|
6484
|
+
},
|
|
6485
|
+
onDragLeave: (e) => {
|
|
6486
|
+
referenceContainer.dropTarget.dnd.onDragLeave(e);
|
|
6487
|
+
},
|
|
6488
|
+
onDrop: (e) => {
|
|
6489
|
+
referenceContainer.dropTarget.dnd.onDrop(e);
|
|
6490
|
+
},
|
|
6491
|
+
onDragOver: (e) => {
|
|
6492
|
+
referenceContainer.dropTarget.dnd.onDragOver(e);
|
|
6493
|
+
},
|
|
6494
|
+
}), panel.api.onDidVisibilityChange((event) => {
|
|
6495
|
+
/**
|
|
6496
|
+
* Control the visibility of the content, however even when not visible (display: none)
|
|
6497
|
+
* the content is still maintained within the DOM hence DOM specific attributes
|
|
6498
|
+
* such as scroll position are maintained when next made visible.
|
|
6499
|
+
*/
|
|
6500
|
+
visibilityChanged();
|
|
6501
|
+
}), panel.api.onDidDimensionsChange(() => {
|
|
6502
|
+
if (!panel.api.isVisible) {
|
|
6503
|
+
return;
|
|
6504
|
+
}
|
|
6505
|
+
resize();
|
|
6506
|
+
}));
|
|
6507
|
+
this.map[panel.api.id].destroy = Disposable.from(() => {
|
|
6508
|
+
focusContainer.removeChild(panel.view.content.element);
|
|
6509
|
+
this.element.removeChild(focusContainer);
|
|
6510
|
+
});
|
|
6511
|
+
queueMicrotask(() => {
|
|
6512
|
+
if (this.isDisposed) {
|
|
6513
|
+
return;
|
|
6514
|
+
}
|
|
6515
|
+
/**
|
|
6516
|
+
* wait until everything has finished in the current stack-frame call before
|
|
6517
|
+
* calling the first resize as other size-altering events may still occur before
|
|
6518
|
+
* the end of the stack-frame.
|
|
6519
|
+
*/
|
|
6520
|
+
visibilityChanged();
|
|
6521
|
+
});
|
|
6522
|
+
// dispose of logic asoccciated with previous reference-container
|
|
6523
|
+
this.map[panel.api.id].disposable.dispose();
|
|
6524
|
+
// and reset the disposable to the active reference-container
|
|
6525
|
+
this.map[panel.api.id].disposable = disposable;
|
|
6526
|
+
return focusContainer;
|
|
6527
|
+
}
|
|
6528
|
+
}
|
|
6529
|
+
|
|
6530
|
+
function getTheme(element) {
|
|
6531
|
+
function toClassList(element) {
|
|
6532
|
+
const list = [];
|
|
6533
|
+
for (let i = 0; i < element.classList.length; i++) {
|
|
6534
|
+
list.push(element.classList.item(i));
|
|
6535
|
+
}
|
|
6536
|
+
return list;
|
|
6537
|
+
}
|
|
6538
|
+
let theme = undefined;
|
|
6539
|
+
let parent = element;
|
|
6540
|
+
while (parent !== null) {
|
|
6541
|
+
theme = toClassList(parent).find((cls) => cls.startsWith('dockview-theme-'));
|
|
6542
|
+
if (typeof theme === 'string') {
|
|
6543
|
+
break;
|
|
6544
|
+
}
|
|
6545
|
+
parent = parent.parentElement;
|
|
6546
|
+
}
|
|
6547
|
+
return theme;
|
|
6548
|
+
}
|
|
5948
6549
|
class DockviewComponent extends BaseGrid {
|
|
5949
6550
|
get orientation() {
|
|
5950
6551
|
return this.gridview.orientation;
|
|
@@ -5965,6 +6566,10 @@ class DockviewComponent extends BaseGrid {
|
|
|
5965
6566
|
}
|
|
5966
6567
|
return activeGroup.activePanel;
|
|
5967
6568
|
}
|
|
6569
|
+
get renderer() {
|
|
6570
|
+
var _a;
|
|
6571
|
+
return (_a = this.options.defaultRenderer) !== null && _a !== void 0 ? _a : 'onlyWhenVisibile';
|
|
6572
|
+
}
|
|
5968
6573
|
constructor(options) {
|
|
5969
6574
|
var _a;
|
|
5970
6575
|
super({
|
|
@@ -5991,12 +6596,27 @@ class DockviewComponent extends BaseGrid {
|
|
|
5991
6596
|
this.onDidLayoutFromJSON = this._onDidLayoutFromJSON.event;
|
|
5992
6597
|
this._onDidActivePanelChange = new Emitter();
|
|
5993
6598
|
this.onDidActivePanelChange = this._onDidActivePanelChange.event;
|
|
5994
|
-
this.
|
|
6599
|
+
this._floatingGroups = [];
|
|
6600
|
+
this._popoutGroups = [];
|
|
6601
|
+
const gready = document.createElement('div');
|
|
6602
|
+
gready.className = 'dv-overlay-render-container';
|
|
6603
|
+
this.gridview.element.appendChild(gready);
|
|
6604
|
+
this.overlayRenderContainer = new OverlayRenderContainer(gready);
|
|
5995
6605
|
toggleClass(this.gridview.element, 'dv-dockview', true);
|
|
5996
|
-
|
|
6606
|
+
toggleClass(this.element, 'dv-debug', !!options.debug);
|
|
6607
|
+
this.addDisposables(this.overlayRenderContainer, this._onWillDragPanel, this._onWillDragGroup, this._onDidActivePanelChange, this._onDidAddPanel, this._onDidRemovePanel, this._onDidLayoutFromJSON, this._onDidDrop, exports.DockviewEvent.any(this.onDidAddGroup, this.onDidRemoveGroup)(() => {
|
|
5997
6608
|
this.updateWatermark();
|
|
5998
6609
|
}), exports.DockviewEvent.any(this.onDidAddPanel, this.onDidRemovePanel, this.onDidActivePanelChange)(() => {
|
|
5999
6610
|
this._bufferOnDidLayoutChange.fire();
|
|
6611
|
+
}), Disposable.from(() => {
|
|
6612
|
+
// iterate over a copy of the array since .dispose() mutates the original array
|
|
6613
|
+
for (const group of [...this._floatingGroups]) {
|
|
6614
|
+
group.dispose();
|
|
6615
|
+
}
|
|
6616
|
+
// iterate over a copy of the array since .dispose() mutates the original array
|
|
6617
|
+
for (const group of [...this._popoutGroups]) {
|
|
6618
|
+
group.dispose();
|
|
6619
|
+
}
|
|
6000
6620
|
}));
|
|
6001
6621
|
this._options = options;
|
|
6002
6622
|
if (!this.options.components) {
|
|
@@ -6066,6 +6686,55 @@ class DockviewComponent extends BaseGrid {
|
|
|
6066
6686
|
this._api = new DockviewApi(this);
|
|
6067
6687
|
this.updateWatermark();
|
|
6068
6688
|
}
|
|
6689
|
+
addPopoutGroup(item, options) {
|
|
6690
|
+
var _a;
|
|
6691
|
+
let group;
|
|
6692
|
+
let box = options === null || options === void 0 ? void 0 : options.position;
|
|
6693
|
+
if (item instanceof DockviewPanel) {
|
|
6694
|
+
group = this.createGroup();
|
|
6695
|
+
this.removePanel(item, {
|
|
6696
|
+
removeEmptyGroup: true,
|
|
6697
|
+
skipDispose: true,
|
|
6698
|
+
});
|
|
6699
|
+
group.model.openPanel(item);
|
|
6700
|
+
if (!box) {
|
|
6701
|
+
box = this.element.getBoundingClientRect();
|
|
6702
|
+
}
|
|
6703
|
+
}
|
|
6704
|
+
else {
|
|
6705
|
+
group = item;
|
|
6706
|
+
if (!box) {
|
|
6707
|
+
box = group.element.getBoundingClientRect();
|
|
6708
|
+
}
|
|
6709
|
+
const skip = typeof (options === null || options === void 0 ? void 0 : options.skipRemoveGroup) === 'boolean' &&
|
|
6710
|
+
options.skipRemoveGroup;
|
|
6711
|
+
if (!skip) {
|
|
6712
|
+
this.doRemoveGroup(item, { skipDispose: true });
|
|
6713
|
+
}
|
|
6714
|
+
}
|
|
6715
|
+
const theme = getTheme(this.gridview.element);
|
|
6716
|
+
const popoutWindow = new DockviewPopoutGroupPanel(`${this.id}-${group.id}`, // globally unique within dockview
|
|
6717
|
+
group, {
|
|
6718
|
+
className: theme !== null && theme !== void 0 ? theme : '',
|
|
6719
|
+
popoutUrl: (_a = options === null || options === void 0 ? void 0 : options.popoutUrl) !== null && _a !== void 0 ? _a : '/popout.html',
|
|
6720
|
+
box: {
|
|
6721
|
+
left: window.screenX + box.left,
|
|
6722
|
+
top: window.screenY + box.top,
|
|
6723
|
+
width: box.width,
|
|
6724
|
+
height: box.height,
|
|
6725
|
+
},
|
|
6726
|
+
});
|
|
6727
|
+
popoutWindow.addDisposables({
|
|
6728
|
+
dispose: () => {
|
|
6729
|
+
remove(this._popoutGroups, popoutWindow);
|
|
6730
|
+
this.updateWatermark();
|
|
6731
|
+
},
|
|
6732
|
+
}, popoutWindow.window.onDidClose(() => {
|
|
6733
|
+
this.doAddGroup(group, [0]);
|
|
6734
|
+
}));
|
|
6735
|
+
this._popoutGroups.push(popoutWindow);
|
|
6736
|
+
this.updateWatermark();
|
|
6737
|
+
}
|
|
6069
6738
|
addFloatingGroup(item, coord, options) {
|
|
6070
6739
|
var _a, _b, _c, _d, _e, _f;
|
|
6071
6740
|
let group;
|
|
@@ -6085,9 +6754,13 @@ class DockviewComponent extends BaseGrid {
|
|
|
6085
6754
|
this.doRemoveGroup(item, { skipDispose: true });
|
|
6086
6755
|
}
|
|
6087
6756
|
}
|
|
6088
|
-
group.model.
|
|
6089
|
-
const overlayLeft = typeof (coord === null || coord === void 0 ? void 0 : coord.x) === 'number'
|
|
6090
|
-
|
|
6757
|
+
group.model.location = 'floating';
|
|
6758
|
+
const overlayLeft = typeof (coord === null || coord === void 0 ? void 0 : coord.x) === 'number'
|
|
6759
|
+
? Math.max(coord.x, 0)
|
|
6760
|
+
: DEFAULT_FLOATING_GROUP_POSITION.left;
|
|
6761
|
+
const overlayTop = typeof (coord === null || coord === void 0 ? void 0 : coord.y) === 'number'
|
|
6762
|
+
? Math.max(coord.y, 0)
|
|
6763
|
+
: DEFAULT_FLOATING_GROUP_POSITION.top;
|
|
6091
6764
|
const overlay = new Overlay({
|
|
6092
6765
|
container: this.gridview.element,
|
|
6093
6766
|
content: group.element,
|
|
@@ -6131,12 +6804,12 @@ class DockviewComponent extends BaseGrid {
|
|
|
6131
6804
|
}), {
|
|
6132
6805
|
dispose: () => {
|
|
6133
6806
|
disposable.dispose();
|
|
6134
|
-
group.model.
|
|
6135
|
-
remove(this.
|
|
6807
|
+
group.model.location = 'grid';
|
|
6808
|
+
remove(this._floatingGroups, floatingGroupPanel);
|
|
6136
6809
|
this.updateWatermark();
|
|
6137
6810
|
},
|
|
6138
6811
|
});
|
|
6139
|
-
this.
|
|
6812
|
+
this._floatingGroups.push(floatingGroupPanel);
|
|
6140
6813
|
this.updateWatermark();
|
|
6141
6814
|
}
|
|
6142
6815
|
orthogonalize(position) {
|
|
@@ -6181,7 +6854,7 @@ class DockviewComponent extends BaseGrid {
|
|
|
6181
6854
|
this.gridview.orientation = options.orientation;
|
|
6182
6855
|
}
|
|
6183
6856
|
if (hasFloatingGroupOptionsChanged) {
|
|
6184
|
-
for (const group of this.
|
|
6857
|
+
for (const group of this._floatingGroups) {
|
|
6185
6858
|
switch (this.options.floatingGroupBounds) {
|
|
6186
6859
|
case 'boundedWithinViewport':
|
|
6187
6860
|
group.overlay.minimumInViewportHeight = undefined;
|
|
@@ -6206,8 +6879,8 @@ class DockviewComponent extends BaseGrid {
|
|
|
6206
6879
|
}
|
|
6207
6880
|
layout(width, height, forceResize) {
|
|
6208
6881
|
super.layout(width, height, forceResize);
|
|
6209
|
-
if (this.
|
|
6210
|
-
for (const floating of this.
|
|
6882
|
+
if (this._floatingGroups) {
|
|
6883
|
+
for (const floating of this._floatingGroups) {
|
|
6211
6884
|
// ensure floting groups stay within visible boundaries
|
|
6212
6885
|
floating.overlay.setBounds();
|
|
6213
6886
|
}
|
|
@@ -6275,10 +6948,16 @@ class DockviewComponent extends BaseGrid {
|
|
|
6275
6948
|
collection[panel.id] = panel.toJSON();
|
|
6276
6949
|
return collection;
|
|
6277
6950
|
}, {});
|
|
6278
|
-
const floats = this.
|
|
6951
|
+
const floats = this._floatingGroups.map((group) => {
|
|
6952
|
+
return {
|
|
6953
|
+
data: group.group.toJSON(),
|
|
6954
|
+
position: group.overlay.toJSON(),
|
|
6955
|
+
};
|
|
6956
|
+
});
|
|
6957
|
+
const popoutGroups = this._popoutGroups.map((group) => {
|
|
6279
6958
|
return {
|
|
6280
|
-
data:
|
|
6281
|
-
position:
|
|
6959
|
+
data: group.group.toJSON(),
|
|
6960
|
+
position: group.window.dimensions(),
|
|
6282
6961
|
};
|
|
6283
6962
|
});
|
|
6284
6963
|
const result = {
|
|
@@ -6289,10 +6968,13 @@ class DockviewComponent extends BaseGrid {
|
|
|
6289
6968
|
if (floats.length > 0) {
|
|
6290
6969
|
result.floatingGroups = floats;
|
|
6291
6970
|
}
|
|
6971
|
+
if (popoutGroups.length > 0) {
|
|
6972
|
+
result.popoutGroups = popoutGroups;
|
|
6973
|
+
}
|
|
6292
6974
|
return result;
|
|
6293
6975
|
}
|
|
6294
6976
|
fromJSON(data) {
|
|
6295
|
-
var _a;
|
|
6977
|
+
var _a, _b;
|
|
6296
6978
|
this.clear();
|
|
6297
6979
|
if (typeof data !== 'object' || data === null) {
|
|
6298
6980
|
throw new Error('serialized layout must be a non-null object');
|
|
@@ -6359,7 +7041,16 @@ class DockviewComponent extends BaseGrid {
|
|
|
6359
7041
|
width: position.width,
|
|
6360
7042
|
}, { skipRemoveGroup: true, inDragMode: false });
|
|
6361
7043
|
}
|
|
6362
|
-
|
|
7044
|
+
const serializedPopoutGroups = (_b = data.popoutGroups) !== null && _b !== void 0 ? _b : [];
|
|
7045
|
+
for (const serializedPopoutGroup of serializedPopoutGroups) {
|
|
7046
|
+
const { data, position } = serializedPopoutGroup;
|
|
7047
|
+
const group = createGroupFromSerializedState(data);
|
|
7048
|
+
this.addPopoutGroup(group, {
|
|
7049
|
+
skipRemoveGroup: true,
|
|
7050
|
+
position: position !== null && position !== void 0 ? position : undefined,
|
|
7051
|
+
});
|
|
7052
|
+
}
|
|
7053
|
+
for (const floatingGroup of this._floatingGroups) {
|
|
6363
7054
|
floatingGroup.overlay.setBounds();
|
|
6364
7055
|
}
|
|
6365
7056
|
if (typeof activeGroup === 'string') {
|
|
@@ -6391,7 +7082,7 @@ class DockviewComponent extends BaseGrid {
|
|
|
6391
7082
|
this._onDidRemoveGroup.fire(group);
|
|
6392
7083
|
}
|
|
6393
7084
|
// iterate over a reassigned array since original array will be modified
|
|
6394
|
-
for (const floatingGroup of [...this.
|
|
7085
|
+
for (const floatingGroup of [...this._floatingGroups]) {
|
|
6395
7086
|
floatingGroup.dispose();
|
|
6396
7087
|
}
|
|
6397
7088
|
// fires clean-up events and clears the underlying HTML gridview.
|
|
@@ -6483,7 +7174,8 @@ class DockviewComponent extends BaseGrid {
|
|
|
6483
7174
|
group.model.openPanel(panel);
|
|
6484
7175
|
this.doSetGroupAndPanelActive(group);
|
|
6485
7176
|
}
|
|
6486
|
-
else if (referenceGroup.api.
|
|
7177
|
+
else if (referenceGroup.api.location === 'floating' ||
|
|
7178
|
+
target === 'center') {
|
|
6487
7179
|
panel = this.createPanel(options, referenceGroup);
|
|
6488
7180
|
referenceGroup.model.openPanel(panel);
|
|
6489
7181
|
}
|
|
@@ -6527,6 +7219,7 @@ class DockviewComponent extends BaseGrid {
|
|
|
6527
7219
|
}
|
|
6528
7220
|
group.model.removePanel(panel);
|
|
6529
7221
|
if (!options.skipDispose) {
|
|
7222
|
+
this.overlayRenderContainer.detatch(panel);
|
|
6530
7223
|
panel.dispose();
|
|
6531
7224
|
}
|
|
6532
7225
|
if (group.size === 0 && options.removeEmptyGroup) {
|
|
@@ -6543,7 +7236,7 @@ class DockviewComponent extends BaseGrid {
|
|
|
6543
7236
|
}
|
|
6544
7237
|
updateWatermark() {
|
|
6545
7238
|
var _a, _b;
|
|
6546
|
-
if (this.groups.filter((x) =>
|
|
7239
|
+
if (this.groups.filter((x) => x.api.location === 'grid').length === 0) {
|
|
6547
7240
|
if (!this.watermark) {
|
|
6548
7241
|
this.watermark = this.createWatermarkComponent();
|
|
6549
7242
|
this.watermark.init({
|
|
@@ -6618,19 +7311,40 @@ class DockviewComponent extends BaseGrid {
|
|
|
6618
7311
|
}
|
|
6619
7312
|
}
|
|
6620
7313
|
doRemoveGroup(group, options) {
|
|
6621
|
-
|
|
6622
|
-
|
|
6623
|
-
if (
|
|
6624
|
-
|
|
6625
|
-
|
|
6626
|
-
|
|
7314
|
+
if (group.api.location === 'floating') {
|
|
7315
|
+
const floatingGroup = this._floatingGroups.find((_) => _.group === group);
|
|
7316
|
+
if (floatingGroup) {
|
|
7317
|
+
if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {
|
|
7318
|
+
floatingGroup.group.dispose();
|
|
7319
|
+
this._groups.delete(group.id);
|
|
7320
|
+
this._onDidRemoveGroup.fire(group);
|
|
7321
|
+
}
|
|
7322
|
+
remove(this._floatingGroups, floatingGroup);
|
|
7323
|
+
floatingGroup.dispose();
|
|
7324
|
+
if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {
|
|
7325
|
+
const groups = Array.from(this._groups.values());
|
|
7326
|
+
this.doSetGroupActive(groups.length > 0 ? groups[0].value : undefined);
|
|
7327
|
+
}
|
|
7328
|
+
return floatingGroup.group;
|
|
6627
7329
|
}
|
|
6628
|
-
|
|
6629
|
-
|
|
6630
|
-
|
|
6631
|
-
|
|
7330
|
+
throw new Error('failed to find floating group');
|
|
7331
|
+
}
|
|
7332
|
+
if (group.api.location === 'popout') {
|
|
7333
|
+
const selectedGroup = this._popoutGroups.find((_) => _.group === group);
|
|
7334
|
+
if (selectedGroup) {
|
|
7335
|
+
if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {
|
|
7336
|
+
selectedGroup.group.dispose();
|
|
7337
|
+
this._groups.delete(group.id);
|
|
7338
|
+
this._onDidRemoveGroup.fire(group);
|
|
7339
|
+
}
|
|
7340
|
+
selectedGroup.dispose();
|
|
7341
|
+
if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {
|
|
7342
|
+
const groups = Array.from(this._groups.values());
|
|
7343
|
+
this.doSetGroupActive(groups.length > 0 ? groups[0].value : undefined);
|
|
7344
|
+
}
|
|
7345
|
+
return selectedGroup.group;
|
|
6632
7346
|
}
|
|
6633
|
-
|
|
7347
|
+
throw new Error('failed to find popout group');
|
|
6634
7348
|
}
|
|
6635
7349
|
return super.doRemoveGroup(group, options);
|
|
6636
7350
|
}
|
|
@@ -6662,8 +7376,7 @@ class DockviewComponent extends BaseGrid {
|
|
|
6662
7376
|
const targetLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, destinationTarget);
|
|
6663
7377
|
if (sourceGroup && sourceGroup.size < 2) {
|
|
6664
7378
|
const [targetParentLocation, to] = tail(targetLocation);
|
|
6665
|
-
|
|
6666
|
-
if (!isFloating) {
|
|
7379
|
+
if (sourceGroup.api.location === 'grid') {
|
|
6667
7380
|
const sourceLocation = getGridLocation(sourceGroup.element);
|
|
6668
7381
|
const [sourceParentLocation, from] = tail(sourceLocation);
|
|
6669
7382
|
if (sequenceEquals(sourceParentLocation, targetParentLocation)) {
|
|
@@ -6709,12 +7422,25 @@ class DockviewComponent extends BaseGrid {
|
|
|
6709
7422
|
}
|
|
6710
7423
|
}
|
|
6711
7424
|
else {
|
|
6712
|
-
|
|
6713
|
-
|
|
6714
|
-
|
|
6715
|
-
|
|
6716
|
-
|
|
6717
|
-
|
|
7425
|
+
switch (sourceGroup.api.location) {
|
|
7426
|
+
case 'grid':
|
|
7427
|
+
this.gridview.removeView(getGridLocation(sourceGroup.element));
|
|
7428
|
+
break;
|
|
7429
|
+
case 'floating': {
|
|
7430
|
+
const selectedFloatingGroup = this._floatingGroups.find((x) => x.group === sourceGroup);
|
|
7431
|
+
if (!selectedFloatingGroup) {
|
|
7432
|
+
throw new Error('failed to find floating group');
|
|
7433
|
+
}
|
|
7434
|
+
selectedFloatingGroup.dispose();
|
|
7435
|
+
break;
|
|
7436
|
+
}
|
|
7437
|
+
case 'popout': {
|
|
7438
|
+
const selectedPopoutGroup = this._popoutGroups.find((x) => x.group === sourceGroup);
|
|
7439
|
+
if (!selectedPopoutGroup) {
|
|
7440
|
+
throw new Error('failed to find popout group');
|
|
7441
|
+
}
|
|
7442
|
+
selectedPopoutGroup.dispose();
|
|
7443
|
+
}
|
|
6718
7444
|
}
|
|
6719
7445
|
const referenceLocation = getGridLocation(referenceGroup.element);
|
|
6720
7446
|
const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, target);
|
|
@@ -6776,7 +7502,7 @@ class DockviewComponent extends BaseGrid {
|
|
|
6776
7502
|
const contentComponent = options.component;
|
|
6777
7503
|
const tabComponent = (_a = options.tabComponent) !== null && _a !== void 0 ? _a : this.options.defaultTabComponent;
|
|
6778
7504
|
const view = new DockviewPanelModel(this, options.id, contentComponent, tabComponent);
|
|
6779
|
-
const panel = new DockviewPanel(options.id, this, this._api, group, view);
|
|
7505
|
+
const panel = new DockviewPanel(options.id, this, this._api, group, view, { renderer: options.renderer });
|
|
6780
7506
|
panel.init({
|
|
6781
7507
|
title: (_b = options.title) !== null && _b !== void 0 ? _b : options.id,
|
|
6782
7508
|
params: (_c = options === null || options === void 0 ? void 0 : options.params) !== null && _c !== void 0 ? _c : {},
|