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
package/dist/dockview-core.js
CHANGED
|
@@ -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
|
*/
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
-
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}";
|
|
40
|
+
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}";
|
|
41
41
|
styleInject(css_248z);
|
|
42
42
|
|
|
43
43
|
class TransferObject {
|
|
@@ -266,6 +266,14 @@
|
|
|
266
266
|
// noop
|
|
267
267
|
},
|
|
268
268
|
};
|
|
269
|
+
function from(func) {
|
|
270
|
+
return {
|
|
271
|
+
dispose: () => {
|
|
272
|
+
func();
|
|
273
|
+
},
|
|
274
|
+
};
|
|
275
|
+
}
|
|
276
|
+
Disposable.from = from;
|
|
269
277
|
})(Disposable || (Disposable = {}));
|
|
270
278
|
class CompositeDisposable {
|
|
271
279
|
get isDisposed() {
|
|
@@ -450,6 +458,61 @@
|
|
|
450
458
|
function quasiDefaultPrevented(event) {
|
|
451
459
|
return event[QUASI_PREVENT_DEFAULT_KEY];
|
|
452
460
|
}
|
|
461
|
+
function addStyles(document, styleSheetList) {
|
|
462
|
+
const styleSheets = Array.from(styleSheetList);
|
|
463
|
+
for (const styleSheet of styleSheets) {
|
|
464
|
+
if (styleSheet.href) {
|
|
465
|
+
const link = document.createElement('link');
|
|
466
|
+
link.href = styleSheet.href;
|
|
467
|
+
link.type = styleSheet.type;
|
|
468
|
+
link.rel = 'stylesheet';
|
|
469
|
+
document.head.appendChild(link);
|
|
470
|
+
}
|
|
471
|
+
let cssTexts = [];
|
|
472
|
+
try {
|
|
473
|
+
if (styleSheet.cssRules) {
|
|
474
|
+
cssTexts = Array.from(styleSheet.cssRules).map((rule) => rule.cssText);
|
|
475
|
+
}
|
|
476
|
+
}
|
|
477
|
+
catch (err) {
|
|
478
|
+
// security errors (lack of permissions), ignore
|
|
479
|
+
}
|
|
480
|
+
for (const rule of cssTexts) {
|
|
481
|
+
const style = document.createElement('style');
|
|
482
|
+
style.appendChild(document.createTextNode(rule));
|
|
483
|
+
document.head.appendChild(style);
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
function getDomNodePagePosition(domNode) {
|
|
488
|
+
const { left, top, width, height } = domNode.getBoundingClientRect();
|
|
489
|
+
return {
|
|
490
|
+
left: left + window.scrollX,
|
|
491
|
+
top: top + window.scrollY,
|
|
492
|
+
width: width,
|
|
493
|
+
height: height,
|
|
494
|
+
};
|
|
495
|
+
}
|
|
496
|
+
/**
|
|
497
|
+
* Check whether an element is in the DOM (including the Shadow DOM)
|
|
498
|
+
* @see https://terodox.tech/how-to-tell-if-an-element-is-in-the-dom-including-the-shadow-dom/
|
|
499
|
+
*/
|
|
500
|
+
function isInDocument(element) {
|
|
501
|
+
let currentElement = element;
|
|
502
|
+
while (currentElement === null || currentElement === void 0 ? void 0 : currentElement.parentNode) {
|
|
503
|
+
if (currentElement.parentNode === document) {
|
|
504
|
+
return true;
|
|
505
|
+
}
|
|
506
|
+
else if (currentElement.parentNode instanceof DocumentFragment) {
|
|
507
|
+
// handle shadow DOMs
|
|
508
|
+
currentElement = currentElement.parentNode.host;
|
|
509
|
+
}
|
|
510
|
+
else {
|
|
511
|
+
currentElement = currentElement.parentNode;
|
|
512
|
+
}
|
|
513
|
+
}
|
|
514
|
+
return false;
|
|
515
|
+
}
|
|
453
516
|
|
|
454
517
|
function tail(arr) {
|
|
455
518
|
if (arr.length === 0) {
|
|
@@ -647,6 +710,9 @@
|
|
|
647
710
|
Sizing.Invisible = Invisible;
|
|
648
711
|
})(exports.Sizing || (exports.Sizing = {}));
|
|
649
712
|
class Splitview {
|
|
713
|
+
get contentSize() {
|
|
714
|
+
return this._contentSize;
|
|
715
|
+
}
|
|
650
716
|
get size() {
|
|
651
717
|
return this._size;
|
|
652
718
|
}
|
|
@@ -712,7 +778,7 @@
|
|
|
712
778
|
this.sashes = [];
|
|
713
779
|
this._size = 0;
|
|
714
780
|
this._orthogonalSize = 0;
|
|
715
|
-
this.
|
|
781
|
+
this._contentSize = 0;
|
|
716
782
|
this._proportions = undefined;
|
|
717
783
|
this._startSnappingEnabled = true;
|
|
718
784
|
this._endSnappingEnabled = true;
|
|
@@ -831,7 +897,7 @@
|
|
|
831
897
|
);
|
|
832
898
|
});
|
|
833
899
|
// Initialize content size and proportions for first layout
|
|
834
|
-
this.
|
|
900
|
+
this._contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);
|
|
835
901
|
this.saveProportions();
|
|
836
902
|
}
|
|
837
903
|
}
|
|
@@ -1105,7 +1171,7 @@
|
|
|
1105
1171
|
this.addView(view, sizing, to);
|
|
1106
1172
|
}
|
|
1107
1173
|
layout(size, orthogonalSize) {
|
|
1108
|
-
const previousSize = Math.max(this.size, this.
|
|
1174
|
+
const previousSize = Math.max(this.size, this._contentSize);
|
|
1109
1175
|
this.size = size;
|
|
1110
1176
|
this.orthogonalSize = orthogonalSize;
|
|
1111
1177
|
if (!this.proportions) {
|
|
@@ -1115,9 +1181,23 @@
|
|
|
1115
1181
|
this.resize(this.viewItems.length - 1, size - previousSize, undefined, lowPriorityIndexes, highPriorityIndexes);
|
|
1116
1182
|
}
|
|
1117
1183
|
else {
|
|
1184
|
+
let total = 0;
|
|
1185
|
+
for (let i = 0; i < this.viewItems.length; i++) {
|
|
1186
|
+
const item = this.viewItems[i];
|
|
1187
|
+
const proportion = this.proportions[i];
|
|
1188
|
+
if (typeof proportion === 'number') {
|
|
1189
|
+
total += proportion;
|
|
1190
|
+
}
|
|
1191
|
+
else {
|
|
1192
|
+
size -= item.size;
|
|
1193
|
+
}
|
|
1194
|
+
}
|
|
1118
1195
|
for (let i = 0; i < this.viewItems.length; i++) {
|
|
1119
1196
|
const item = this.viewItems[i];
|
|
1120
|
-
|
|
1197
|
+
const proportion = this.proportions[i];
|
|
1198
|
+
if (typeof proportion === 'number' && total > 0) {
|
|
1199
|
+
item.size = clamp(Math.round((proportion * size) / total), item.minimumSize, item.maximumSize);
|
|
1200
|
+
}
|
|
1121
1201
|
}
|
|
1122
1202
|
}
|
|
1123
1203
|
this.distributeEmptySpace();
|
|
@@ -1154,12 +1234,12 @@
|
|
|
1154
1234
|
}
|
|
1155
1235
|
}
|
|
1156
1236
|
saveProportions() {
|
|
1157
|
-
if (this.proportionalLayout && this.
|
|
1158
|
-
this._proportions = this.viewItems.map((i) => i.size / this.
|
|
1237
|
+
if (this.proportionalLayout && this._contentSize > 0) {
|
|
1238
|
+
this._proportions = this.viewItems.map((i) => i.visible ? i.size / this._contentSize : undefined);
|
|
1159
1239
|
}
|
|
1160
1240
|
}
|
|
1161
1241
|
layoutViews() {
|
|
1162
|
-
this.
|
|
1242
|
+
this._contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);
|
|
1163
1243
|
let sum = 0;
|
|
1164
1244
|
const x = [];
|
|
1165
1245
|
this.updateSashEnablement();
|
|
@@ -1253,7 +1333,7 @@
|
|
|
1253
1333
|
}
|
|
1254
1334
|
else if (snappedAfter &&
|
|
1255
1335
|
collapsesDown[index] &&
|
|
1256
|
-
(position < this.
|
|
1336
|
+
(position < this._contentSize || this.endSnappingEnabled)) {
|
|
1257
1337
|
this.updateSash(sash, exports.SashState.MAXIMUM);
|
|
1258
1338
|
}
|
|
1259
1339
|
else {
|
|
@@ -1542,7 +1622,6 @@
|
|
|
1542
1622
|
setVisible(visible) {
|
|
1543
1623
|
if (this.view.setVisible) {
|
|
1544
1624
|
this.view.setVisible(visible);
|
|
1545
|
-
this._onDidChange.fire({});
|
|
1546
1625
|
}
|
|
1547
1626
|
}
|
|
1548
1627
|
layout(size, orthogonalSize) {
|
|
@@ -1574,10 +1653,14 @@
|
|
|
1574
1653
|
get minimumSize() {
|
|
1575
1654
|
return this.children.length === 0
|
|
1576
1655
|
? 0
|
|
1577
|
-
: Math.max(...this.children.map((c) =>
|
|
1656
|
+
: Math.max(...this.children.map((c, index) => this.splitview.isViewVisible(index)
|
|
1657
|
+
? c.minimumOrthogonalSize
|
|
1658
|
+
: 0));
|
|
1578
1659
|
}
|
|
1579
1660
|
get maximumSize() {
|
|
1580
|
-
return Math.min(...this.children.map((c) =>
|
|
1661
|
+
return Math.min(...this.children.map((c, index) => this.splitview.isViewVisible(index)
|
|
1662
|
+
? c.maximumOrthogonalSize
|
|
1663
|
+
: Number.POSITIVE_INFINITY));
|
|
1581
1664
|
}
|
|
1582
1665
|
get minimumOrthogonalSize() {
|
|
1583
1666
|
return this.splitview.minimumSize;
|
|
@@ -1635,6 +1718,8 @@
|
|
|
1635
1718
|
this.children = [];
|
|
1636
1719
|
this._onDidChange = new Emitter();
|
|
1637
1720
|
this.onDidChange = this._onDidChange.event;
|
|
1721
|
+
this._onDidVisibilityChange = new Emitter();
|
|
1722
|
+
this.onDidVisibilityChange = this._onDidVisibilityChange.event;
|
|
1638
1723
|
this._orthogonalSize = orthogonalSize;
|
|
1639
1724
|
this._size = size;
|
|
1640
1725
|
this.element = document.createElement('div');
|
|
@@ -1669,7 +1754,7 @@
|
|
|
1669
1754
|
styles,
|
|
1670
1755
|
});
|
|
1671
1756
|
}
|
|
1672
|
-
this.addDisposables(this._onDidChange, this.splitview.onDidSashEnd(() => {
|
|
1757
|
+
this.addDisposables(this._onDidChange, this._onDidVisibilityChange, this.splitview.onDidSashEnd(() => {
|
|
1673
1758
|
this._onDidChange.fire({});
|
|
1674
1759
|
}));
|
|
1675
1760
|
this.setupChildrenEvents();
|
|
@@ -1692,7 +1777,15 @@
|
|
|
1692
1777
|
if (this.splitview.isViewVisible(index) === visible) {
|
|
1693
1778
|
return;
|
|
1694
1779
|
}
|
|
1780
|
+
const wereAllChildrenHidden = this.splitview.contentSize === 0;
|
|
1695
1781
|
this.splitview.setViewVisible(index, visible);
|
|
1782
|
+
const areAllChildrenHidden = this.splitview.contentSize === 0;
|
|
1783
|
+
// If all children are hidden then the parent should hide the entire splitview
|
|
1784
|
+
// If the entire splitview is hidden then the parent should show the splitview when a child is shown
|
|
1785
|
+
if ((visible && wereAllChildrenHidden) ||
|
|
1786
|
+
(!visible && areAllChildrenHidden)) {
|
|
1787
|
+
this._onDidVisibilityChange.fire(visible);
|
|
1788
|
+
}
|
|
1696
1789
|
}
|
|
1697
1790
|
moveChild(from, to) {
|
|
1698
1791
|
if (from === to) {
|
|
@@ -1756,13 +1849,20 @@
|
|
|
1756
1849
|
}
|
|
1757
1850
|
setupChildrenEvents() {
|
|
1758
1851
|
this._childrenDisposable.dispose();
|
|
1759
|
-
this._childrenDisposable = exports.DockviewEvent.any(...this.children.map((c) => c.onDidChange))((e) => {
|
|
1852
|
+
this._childrenDisposable = new CompositeDisposable(exports.DockviewEvent.any(...this.children.map((c) => c.onDidChange))((e) => {
|
|
1760
1853
|
/**
|
|
1761
1854
|
* indicate a change has occured to allows any re-rendering but don't bubble
|
|
1762
1855
|
* event because that was specific to this branch
|
|
1763
1856
|
*/
|
|
1764
1857
|
this._onDidChange.fire({ size: e.orthogonalSize });
|
|
1765
|
-
})
|
|
1858
|
+
}), ...this.children.map((c, i) => {
|
|
1859
|
+
if (c instanceof BranchNode) {
|
|
1860
|
+
return c.onDidVisibilityChange((visible) => {
|
|
1861
|
+
this.setChildVisible(i, visible);
|
|
1862
|
+
});
|
|
1863
|
+
}
|
|
1864
|
+
return Disposable.NONE;
|
|
1865
|
+
}));
|
|
1766
1866
|
}
|
|
1767
1867
|
dispose() {
|
|
1768
1868
|
this._childrenDisposable.dispose();
|
|
@@ -1923,7 +2023,69 @@
|
|
|
1923
2023
|
get maximumHeight() {
|
|
1924
2024
|
return this.root.maximumHeight;
|
|
1925
2025
|
}
|
|
2026
|
+
maximizedView() {
|
|
2027
|
+
var _a;
|
|
2028
|
+
return (_a = this._maximizedNode) === null || _a === void 0 ? void 0 : _a.view;
|
|
2029
|
+
}
|
|
2030
|
+
hasMaximizedView() {
|
|
2031
|
+
return this._maximizedNode !== undefined;
|
|
2032
|
+
}
|
|
2033
|
+
maximizeView(view) {
|
|
2034
|
+
const location = getGridLocation(view.element);
|
|
2035
|
+
const [_, node] = this.getNode(location);
|
|
2036
|
+
if (!(node instanceof LeafNode)) {
|
|
2037
|
+
return;
|
|
2038
|
+
}
|
|
2039
|
+
if (this._maximizedNode === node) {
|
|
2040
|
+
return;
|
|
2041
|
+
}
|
|
2042
|
+
if (this.hasMaximizedView()) {
|
|
2043
|
+
this.exitMaximizedView();
|
|
2044
|
+
}
|
|
2045
|
+
function hideAllViewsBut(parent, exclude) {
|
|
2046
|
+
for (let i = 0; i < parent.children.length; i++) {
|
|
2047
|
+
const child = parent.children[i];
|
|
2048
|
+
if (child instanceof LeafNode) {
|
|
2049
|
+
if (child !== exclude) {
|
|
2050
|
+
parent.setChildVisible(i, false);
|
|
2051
|
+
}
|
|
2052
|
+
}
|
|
2053
|
+
else {
|
|
2054
|
+
hideAllViewsBut(child, exclude);
|
|
2055
|
+
}
|
|
2056
|
+
}
|
|
2057
|
+
}
|
|
2058
|
+
hideAllViewsBut(this.root, node);
|
|
2059
|
+
this._maximizedNode = node;
|
|
2060
|
+
this._onDidMaxmizedNodeChange.fire();
|
|
2061
|
+
}
|
|
2062
|
+
exitMaximizedView() {
|
|
2063
|
+
if (!this._maximizedNode) {
|
|
2064
|
+
return;
|
|
2065
|
+
}
|
|
2066
|
+
function showViewsInReverseOrder(parent) {
|
|
2067
|
+
for (let index = parent.children.length - 1; index >= 0; index--) {
|
|
2068
|
+
const child = parent.children[index];
|
|
2069
|
+
if (child instanceof LeafNode) {
|
|
2070
|
+
parent.setChildVisible(index, true);
|
|
2071
|
+
}
|
|
2072
|
+
else {
|
|
2073
|
+
showViewsInReverseOrder(child);
|
|
2074
|
+
}
|
|
2075
|
+
}
|
|
2076
|
+
}
|
|
2077
|
+
showViewsInReverseOrder(this.root);
|
|
2078
|
+
this._maximizedNode = undefined;
|
|
2079
|
+
this._onDidMaxmizedNodeChange.fire();
|
|
2080
|
+
}
|
|
1926
2081
|
serialize() {
|
|
2082
|
+
if (this.hasMaximizedView()) {
|
|
2083
|
+
/**
|
|
2084
|
+
* do not persist maximized view state but we must first exit any maximized views
|
|
2085
|
+
* before serialization to ensure the correct dimensions are persisted
|
|
2086
|
+
*/
|
|
2087
|
+
this.exitMaximizedView();
|
|
2088
|
+
}
|
|
1927
2089
|
const root = serializeBranchNode(this.getView(), this.orientation);
|
|
1928
2090
|
return {
|
|
1929
2091
|
root,
|
|
@@ -1935,7 +2097,9 @@
|
|
|
1935
2097
|
dispose() {
|
|
1936
2098
|
this.disposable.dispose();
|
|
1937
2099
|
this._onDidChange.dispose();
|
|
2100
|
+
this._onDidMaxmizedNodeChange.dispose();
|
|
1938
2101
|
this.root.dispose();
|
|
2102
|
+
this._maximizedNode = undefined;
|
|
1939
2103
|
this.element.remove();
|
|
1940
2104
|
}
|
|
1941
2105
|
clear() {
|
|
@@ -1976,6 +2140,7 @@
|
|
|
1976
2140
|
const oldRoot = this._root;
|
|
1977
2141
|
if (oldRoot) {
|
|
1978
2142
|
oldRoot.dispose();
|
|
2143
|
+
this._maximizedNode = undefined;
|
|
1979
2144
|
this.element.removeChild(oldRoot.element);
|
|
1980
2145
|
}
|
|
1981
2146
|
this._root = root;
|
|
@@ -2062,9 +2227,12 @@
|
|
|
2062
2227
|
constructor(proportionalLayout, styles, orientation) {
|
|
2063
2228
|
this.proportionalLayout = proportionalLayout;
|
|
2064
2229
|
this.styles = styles;
|
|
2230
|
+
this._maximizedNode = undefined;
|
|
2065
2231
|
this.disposable = new MutableDisposable();
|
|
2066
2232
|
this._onDidChange = new Emitter();
|
|
2067
2233
|
this.onDidChange = this._onDidChange.event;
|
|
2234
|
+
this._onDidMaxmizedNodeChange = new Emitter();
|
|
2235
|
+
this.onDidMaxmizedNodeChange = this._onDidMaxmizedNodeChange.event;
|
|
2068
2236
|
this.element = document.createElement('div');
|
|
2069
2237
|
this.element.className = 'grid-view';
|
|
2070
2238
|
this.root = new BranchNode(orientation, proportionalLayout, styles, 0, 0);
|
|
@@ -2078,6 +2246,9 @@
|
|
|
2078
2246
|
return parent.isChildVisible(index);
|
|
2079
2247
|
}
|
|
2080
2248
|
setViewVisible(location, visible) {
|
|
2249
|
+
if (this.hasMaximizedView()) {
|
|
2250
|
+
this.exitMaximizedView();
|
|
2251
|
+
}
|
|
2081
2252
|
const [rest, index] = tail(location);
|
|
2082
2253
|
const [, parent] = this.getNode(rest);
|
|
2083
2254
|
if (!(parent instanceof BranchNode)) {
|
|
@@ -2086,6 +2257,9 @@
|
|
|
2086
2257
|
parent.setChildVisible(index, visible);
|
|
2087
2258
|
}
|
|
2088
2259
|
moveView(parentLocation, from, to) {
|
|
2260
|
+
if (this.hasMaximizedView()) {
|
|
2261
|
+
this.exitMaximizedView();
|
|
2262
|
+
}
|
|
2089
2263
|
const [, parent] = this.getNode(parentLocation);
|
|
2090
2264
|
if (!(parent instanceof BranchNode)) {
|
|
2091
2265
|
throw new Error('Invalid location');
|
|
@@ -2093,6 +2267,9 @@
|
|
|
2093
2267
|
parent.moveChild(from, to);
|
|
2094
2268
|
}
|
|
2095
2269
|
addView(view, size, location) {
|
|
2270
|
+
if (this.hasMaximizedView()) {
|
|
2271
|
+
this.exitMaximizedView();
|
|
2272
|
+
}
|
|
2096
2273
|
const [rest, index] = tail(location);
|
|
2097
2274
|
const [pathToParent, parent] = this.getNode(rest);
|
|
2098
2275
|
if (parent instanceof BranchNode) {
|
|
@@ -2125,6 +2302,9 @@
|
|
|
2125
2302
|
return this.removeView(location, sizing);
|
|
2126
2303
|
}
|
|
2127
2304
|
removeView(location, sizing) {
|
|
2305
|
+
if (this.hasMaximizedView()) {
|
|
2306
|
+
this.exitMaximizedView();
|
|
2307
|
+
}
|
|
2128
2308
|
const [rest, index] = tail(location);
|
|
2129
2309
|
const [pathToParent, parent] = this.getNode(rest);
|
|
2130
2310
|
if (!(parent instanceof BranchNode)) {
|
|
@@ -2862,6 +3042,24 @@
|
|
|
2862
3042
|
moveToPrevious(options) {
|
|
2863
3043
|
this.component.moveToPrevious(options);
|
|
2864
3044
|
}
|
|
3045
|
+
maximizeGroup(panel) {
|
|
3046
|
+
this.component.maximizeGroup(panel.group);
|
|
3047
|
+
}
|
|
3048
|
+
hasMaximizedGroup() {
|
|
3049
|
+
return this.component.hasMaximizedGroup();
|
|
3050
|
+
}
|
|
3051
|
+
exitMaxmizedGroup() {
|
|
3052
|
+
this.component.exitMaximizedGroup();
|
|
3053
|
+
}
|
|
3054
|
+
get onDidMaxmizedGroupChange() {
|
|
3055
|
+
return this.component.onDidMaxmizedGroupChange;
|
|
3056
|
+
}
|
|
3057
|
+
/**
|
|
3058
|
+
* Add a popout group in a new Window
|
|
3059
|
+
*/
|
|
3060
|
+
addPopoutGroup(item, options) {
|
|
3061
|
+
this.component.addPopoutGroup(item, options);
|
|
3062
|
+
}
|
|
2865
3063
|
}
|
|
2866
3064
|
|
|
2867
3065
|
class DragAndDropObserver extends CompositeDisposable {
|
|
@@ -2872,29 +3070,44 @@
|
|
|
2872
3070
|
this.target = null;
|
|
2873
3071
|
this.registerListeners();
|
|
2874
3072
|
}
|
|
3073
|
+
onDragEnter(e) {
|
|
3074
|
+
this.target = e.target;
|
|
3075
|
+
this.callbacks.onDragEnter(e);
|
|
3076
|
+
}
|
|
3077
|
+
onDragOver(e) {
|
|
3078
|
+
e.preventDefault(); // needed so that the drop event fires (https://stackoverflow.com/questions/21339924/drop-event-not-firing-in-chrome)
|
|
3079
|
+
if (this.callbacks.onDragOver) {
|
|
3080
|
+
this.callbacks.onDragOver(e);
|
|
3081
|
+
}
|
|
3082
|
+
}
|
|
3083
|
+
onDragLeave(e) {
|
|
3084
|
+
if (this.target === e.target) {
|
|
3085
|
+
this.target = null;
|
|
3086
|
+
this.callbacks.onDragLeave(e);
|
|
3087
|
+
}
|
|
3088
|
+
}
|
|
3089
|
+
onDragEnd(e) {
|
|
3090
|
+
this.target = null;
|
|
3091
|
+
this.callbacks.onDragEnd(e);
|
|
3092
|
+
}
|
|
3093
|
+
onDrop(e) {
|
|
3094
|
+
this.callbacks.onDrop(e);
|
|
3095
|
+
}
|
|
2875
3096
|
registerListeners() {
|
|
2876
3097
|
this.addDisposables(addDisposableListener(this.element, 'dragenter', (e) => {
|
|
2877
|
-
this.
|
|
2878
|
-
this.callbacks.onDragEnter(e);
|
|
3098
|
+
this.onDragEnter(e);
|
|
2879
3099
|
}, true));
|
|
2880
3100
|
this.addDisposables(addDisposableListener(this.element, 'dragover', (e) => {
|
|
2881
|
-
|
|
2882
|
-
if (this.callbacks.onDragOver) {
|
|
2883
|
-
this.callbacks.onDragOver(e);
|
|
2884
|
-
}
|
|
3101
|
+
this.onDragOver(e);
|
|
2885
3102
|
}, true));
|
|
2886
3103
|
this.addDisposables(addDisposableListener(this.element, 'dragleave', (e) => {
|
|
2887
|
-
|
|
2888
|
-
this.target = null;
|
|
2889
|
-
this.callbacks.onDragLeave(e);
|
|
2890
|
-
}
|
|
3104
|
+
this.onDragLeave(e);
|
|
2891
3105
|
}));
|
|
2892
3106
|
this.addDisposables(addDisposableListener(this.element, 'dragend', (e) => {
|
|
2893
|
-
this.
|
|
2894
|
-
this.callbacks.onDragEnd(e);
|
|
3107
|
+
this.onDragEnd(e);
|
|
2895
3108
|
}));
|
|
2896
3109
|
this.addDisposables(addDisposableListener(this.element, 'drop', (e) => {
|
|
2897
|
-
this.
|
|
3110
|
+
this.onDrop(e);
|
|
2898
3111
|
}));
|
|
2899
3112
|
}
|
|
2900
3113
|
}
|
|
@@ -2946,7 +3159,7 @@
|
|
|
2946
3159
|
this.onDrop = this._onDrop.event;
|
|
2947
3160
|
// use a set to take advantage of #<set>.has
|
|
2948
3161
|
this._acceptedTargetZonesSet = new Set(this.options.acceptedTargetZones);
|
|
2949
|
-
this.
|
|
3162
|
+
this.dnd = new DragAndDropObserver(this.element, {
|
|
2950
3163
|
onDragEnter: () => undefined,
|
|
2951
3164
|
onDragOver: (e) => {
|
|
2952
3165
|
if (this._acceptedTargetZonesSet.size === 0) {
|
|
@@ -3013,7 +3226,8 @@
|
|
|
3013
3226
|
this._onDrop.fire({ position: state, nativeEvent: e });
|
|
3014
3227
|
}
|
|
3015
3228
|
},
|
|
3016
|
-
})
|
|
3229
|
+
});
|
|
3230
|
+
this.addDisposables(this._onDrop, this.dnd);
|
|
3017
3231
|
}
|
|
3018
3232
|
setTargetZones(acceptedTargetZones) {
|
|
3019
3233
|
this._acceptedTargetZonesSet = new Set(acceptedTargetZones);
|
|
@@ -3169,12 +3383,22 @@
|
|
|
3169
3383
|
return 'center';
|
|
3170
3384
|
}
|
|
3171
3385
|
|
|
3386
|
+
exports.DockviewDropTargets = void 0;
|
|
3387
|
+
(function (DockviewDropTargets) {
|
|
3388
|
+
DockviewDropTargets[DockviewDropTargets["Tab"] = 0] = "Tab";
|
|
3389
|
+
DockviewDropTargets[DockviewDropTargets["Panel"] = 1] = "Panel";
|
|
3390
|
+
DockviewDropTargets[DockviewDropTargets["TabContainer"] = 2] = "TabContainer";
|
|
3391
|
+
DockviewDropTargets[DockviewDropTargets["Edge"] = 3] = "Edge";
|
|
3392
|
+
})(exports.DockviewDropTargets || (exports.DockviewDropTargets = {}));
|
|
3393
|
+
|
|
3172
3394
|
class ContentContainer extends CompositeDisposable {
|
|
3173
3395
|
get element() {
|
|
3174
3396
|
return this._element;
|
|
3175
3397
|
}
|
|
3176
|
-
constructor() {
|
|
3398
|
+
constructor(accessor, group) {
|
|
3177
3399
|
super();
|
|
3400
|
+
this.accessor = accessor;
|
|
3401
|
+
this.group = group;
|
|
3178
3402
|
this.disposable = new MutableDisposable();
|
|
3179
3403
|
this._onDidFocus = new Emitter();
|
|
3180
3404
|
this.onDidFocus = this._onDidFocus.event;
|
|
@@ -3184,11 +3408,38 @@
|
|
|
3184
3408
|
this._element.className = 'content-container';
|
|
3185
3409
|
this._element.tabIndex = -1;
|
|
3186
3410
|
this.addDisposables(this._onDidFocus, this._onDidBlur);
|
|
3187
|
-
|
|
3188
|
-
|
|
3189
|
-
|
|
3190
|
-
|
|
3191
|
-
|
|
3411
|
+
this.dropTarget = new Droptarget(this.element, {
|
|
3412
|
+
acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],
|
|
3413
|
+
canDisplayOverlay: (event, position) => {
|
|
3414
|
+
if (this.group.locked === 'no-drop-target' ||
|
|
3415
|
+
(this.group.locked && position === 'center')) {
|
|
3416
|
+
return false;
|
|
3417
|
+
}
|
|
3418
|
+
const data = getPanelData();
|
|
3419
|
+
if (!data &&
|
|
3420
|
+
event.shiftKey &&
|
|
3421
|
+
this.group.location !== 'floating') {
|
|
3422
|
+
return false;
|
|
3423
|
+
}
|
|
3424
|
+
if (data && data.viewId === this.accessor.id) {
|
|
3425
|
+
if (data.groupId === this.group.id) {
|
|
3426
|
+
if (position === 'center') {
|
|
3427
|
+
// don't allow to drop on self for center position
|
|
3428
|
+
return false;
|
|
3429
|
+
}
|
|
3430
|
+
if (data.panelId === null) {
|
|
3431
|
+
// don't allow group move to drop anywhere on self
|
|
3432
|
+
return false;
|
|
3433
|
+
}
|
|
3434
|
+
}
|
|
3435
|
+
const groupHasOnePanelAndIsActiveDragElement = this.group.panels.length === 1 &&
|
|
3436
|
+
data.groupId === this.group.id;
|
|
3437
|
+
return !groupHasOnePanelAndIsActiveDragElement;
|
|
3438
|
+
}
|
|
3439
|
+
return this.group.canDisplayOverlay(event, position, exports.DockviewDropTargets.Panel);
|
|
3440
|
+
},
|
|
3441
|
+
});
|
|
3442
|
+
this.addDisposables(this.dropTarget);
|
|
3192
3443
|
}
|
|
3193
3444
|
show() {
|
|
3194
3445
|
this.element.style.display = '';
|
|
@@ -3196,23 +3447,43 @@
|
|
|
3196
3447
|
hide() {
|
|
3197
3448
|
this.element.style.display = 'none';
|
|
3198
3449
|
}
|
|
3199
|
-
|
|
3200
|
-
|
|
3201
|
-
|
|
3202
|
-
|
|
3203
|
-
|
|
3204
|
-
|
|
3205
|
-
|
|
3206
|
-
|
|
3207
|
-
|
|
3208
|
-
this.panel = undefined;
|
|
3450
|
+
renderPanel(panel, options = { asActive: true }) {
|
|
3451
|
+
const doRender = options.asActive ||
|
|
3452
|
+
(this.panel && this.group.isPanelActive(this.panel));
|
|
3453
|
+
if (this.panel &&
|
|
3454
|
+
this.panel.view.content.element.parentElement === this._element) {
|
|
3455
|
+
/**
|
|
3456
|
+
* If the currently attached panel is mounted directly to the content then remove it
|
|
3457
|
+
*/
|
|
3458
|
+
this._element.removeChild(this.panel.view.content.element);
|
|
3209
3459
|
}
|
|
3210
3460
|
this.panel = panel;
|
|
3211
|
-
|
|
3212
|
-
|
|
3213
|
-
|
|
3214
|
-
|
|
3215
|
-
|
|
3461
|
+
let container;
|
|
3462
|
+
switch (panel.api.renderer) {
|
|
3463
|
+
case 'onlyWhenVisibile':
|
|
3464
|
+
this.accessor.overlayRenderContainer.detatch(panel);
|
|
3465
|
+
if (this.panel) {
|
|
3466
|
+
if (doRender) {
|
|
3467
|
+
this._element.appendChild(this.panel.view.content.element);
|
|
3468
|
+
}
|
|
3469
|
+
}
|
|
3470
|
+
container = this._element;
|
|
3471
|
+
break;
|
|
3472
|
+
case 'always':
|
|
3473
|
+
if (panel.view.content.element.parentElement === this._element) {
|
|
3474
|
+
this._element.removeChild(panel.view.content.element);
|
|
3475
|
+
}
|
|
3476
|
+
container = this.accessor.overlayRenderContainer.attach({
|
|
3477
|
+
panel,
|
|
3478
|
+
referenceContainer: this,
|
|
3479
|
+
});
|
|
3480
|
+
break;
|
|
3481
|
+
}
|
|
3482
|
+
if (doRender) {
|
|
3483
|
+
const _onDidFocus = panel.view.content.onDidFocus;
|
|
3484
|
+
const _onDidBlur = panel.view.content.onDidBlur;
|
|
3485
|
+
const focusTracker = trackFocus(container);
|
|
3486
|
+
const disposable = new CompositeDisposable();
|
|
3216
3487
|
disposable.addDisposables(focusTracker, focusTracker.onDidFocus(() => this._onDidFocus.fire()), focusTracker.onDidBlur(() => this._onDidBlur.fire()));
|
|
3217
3488
|
if (_onDidFocus) {
|
|
3218
3489
|
disposable.addDisposables(_onDidFocus(() => this._onDidFocus.fire()));
|
|
@@ -3220,17 +3491,23 @@
|
|
|
3220
3491
|
if (_onDidBlur) {
|
|
3221
3492
|
disposable.addDisposables(_onDidBlur(() => this._onDidBlur.fire()));
|
|
3222
3493
|
}
|
|
3223
|
-
this.
|
|
3494
|
+
this.disposable.value = disposable;
|
|
3224
3495
|
}
|
|
3225
|
-
|
|
3496
|
+
}
|
|
3497
|
+
openPanel(panel) {
|
|
3498
|
+
if (this.panel === panel) {
|
|
3499
|
+
return;
|
|
3500
|
+
}
|
|
3501
|
+
this.renderPanel(panel);
|
|
3226
3502
|
}
|
|
3227
3503
|
layout(_width, _height) {
|
|
3228
3504
|
// noop
|
|
3229
3505
|
}
|
|
3230
3506
|
closePanel() {
|
|
3231
|
-
|
|
3232
|
-
|
|
3233
|
-
|
|
3507
|
+
if (this.panel) {
|
|
3508
|
+
if (this.accessor.options.defaultRenderer === 'onlyWhenVisibile') {
|
|
3509
|
+
this._element.removeChild(this.panel.view.content.element);
|
|
3510
|
+
}
|
|
3234
3511
|
this.panel = undefined;
|
|
3235
3512
|
}
|
|
3236
3513
|
}
|
|
@@ -3240,14 +3517,6 @@
|
|
|
3240
3517
|
}
|
|
3241
3518
|
}
|
|
3242
3519
|
|
|
3243
|
-
exports.DockviewDropTargets = void 0;
|
|
3244
|
-
(function (DockviewDropTargets) {
|
|
3245
|
-
DockviewDropTargets[DockviewDropTargets["Tab"] = 0] = "Tab";
|
|
3246
|
-
DockviewDropTargets[DockviewDropTargets["Panel"] = 1] = "Panel";
|
|
3247
|
-
DockviewDropTargets[DockviewDropTargets["TabContainer"] = 2] = "TabContainer";
|
|
3248
|
-
DockviewDropTargets[DockviewDropTargets["Edge"] = 3] = "Edge";
|
|
3249
|
-
})(exports.DockviewDropTargets || (exports.DockviewDropTargets = {}));
|
|
3250
|
-
|
|
3251
3520
|
class DragHandler extends CompositeDisposable {
|
|
3252
3521
|
constructor(el) {
|
|
3253
3522
|
super();
|
|
@@ -3422,7 +3691,7 @@
|
|
|
3422
3691
|
}, true));
|
|
3423
3692
|
}
|
|
3424
3693
|
isCancelled(_event) {
|
|
3425
|
-
if (this.group.api.
|
|
3694
|
+
if (this.group.api.location === 'floating' && !_event.shiftKey) {
|
|
3426
3695
|
return true;
|
|
3427
3696
|
}
|
|
3428
3697
|
return false;
|
|
@@ -3624,7 +3893,7 @@
|
|
|
3624
3893
|
const isFloatingGroupsEnabled = !this.accessor.options.disableFloatingGroups;
|
|
3625
3894
|
if (isFloatingGroupsEnabled &&
|
|
3626
3895
|
event.shiftKey &&
|
|
3627
|
-
|
|
3896
|
+
this.group.api.location !== 'floating') {
|
|
3628
3897
|
event.preventDefault();
|
|
3629
3898
|
const { top, left } = this.element.getBoundingClientRect();
|
|
3630
3899
|
const { top: rootTop, left: rootLeft } = this.accessor.element.getBoundingClientRect();
|
|
@@ -3689,7 +3958,7 @@
|
|
|
3689
3958
|
}), tab.onChanged((event) => {
|
|
3690
3959
|
var _a;
|
|
3691
3960
|
const isFloatingGroupsEnabled = !this.accessor.options.disableFloatingGroups;
|
|
3692
|
-
const isFloatingWithOnePanel = this.group.api.
|
|
3961
|
+
const isFloatingWithOnePanel = this.group.api.location === 'floating' && this.size === 1;
|
|
3693
3962
|
if (isFloatingGroupsEnabled &&
|
|
3694
3963
|
!isFloatingWithOnePanel &&
|
|
3695
3964
|
event.shiftKey) {
|
|
@@ -3772,15 +4041,37 @@
|
|
|
3772
4041
|
}
|
|
3773
4042
|
return isAncestor(document.activeElement, this.contentContainer.element);
|
|
3774
4043
|
}
|
|
3775
|
-
get
|
|
3776
|
-
return this.
|
|
3777
|
-
}
|
|
3778
|
-
set
|
|
3779
|
-
this.
|
|
3780
|
-
this.
|
|
3781
|
-
toggleClass(this.container, 'dv-groupview-
|
|
3782
|
-
|
|
3783
|
-
|
|
4044
|
+
get location() {
|
|
4045
|
+
return this._location;
|
|
4046
|
+
}
|
|
4047
|
+
set location(value) {
|
|
4048
|
+
this._location = value;
|
|
4049
|
+
toggleClass(this.container, 'dv-groupview-floating', false);
|
|
4050
|
+
toggleClass(this.container, 'dv-groupview-popout', false);
|
|
4051
|
+
switch (value) {
|
|
4052
|
+
case 'grid':
|
|
4053
|
+
this.contentContainer.dropTarget.setTargetZones([
|
|
4054
|
+
'top',
|
|
4055
|
+
'bottom',
|
|
4056
|
+
'left',
|
|
4057
|
+
'right',
|
|
4058
|
+
'center',
|
|
4059
|
+
]);
|
|
4060
|
+
break;
|
|
4061
|
+
case 'floating':
|
|
4062
|
+
this.contentContainer.dropTarget.setTargetZones(['center']);
|
|
4063
|
+
this.contentContainer.dropTarget.setTargetZones(value
|
|
4064
|
+
? ['center']
|
|
4065
|
+
: ['top', 'bottom', 'left', 'right', 'center']);
|
|
4066
|
+
toggleClass(this.container, 'dv-groupview-floating', true);
|
|
4067
|
+
break;
|
|
4068
|
+
case 'popout':
|
|
4069
|
+
this.contentContainer.dropTarget.setTargetZones(['center']);
|
|
4070
|
+
toggleClass(this.container, 'dv-groupview-popout', true);
|
|
4071
|
+
break;
|
|
4072
|
+
}
|
|
4073
|
+
this.groupPanel.api._onDidLocationChange.fire({
|
|
4074
|
+
location: this.location,
|
|
3784
4075
|
});
|
|
3785
4076
|
}
|
|
3786
4077
|
constructor(container, accessor, id, options, groupPanel) {
|
|
@@ -3793,7 +4084,7 @@
|
|
|
3793
4084
|
this.groupPanel = groupPanel;
|
|
3794
4085
|
this._isGroupActive = false;
|
|
3795
4086
|
this._locked = false;
|
|
3796
|
-
this.
|
|
4087
|
+
this._location = 'grid';
|
|
3797
4088
|
this.mostRecentlyUsed = [];
|
|
3798
4089
|
this._onDidChange = new Emitter();
|
|
3799
4090
|
this.onDidChange = this._onDidChange.event;
|
|
@@ -3816,35 +4107,7 @@
|
|
|
3816
4107
|
this.onDidActivePanelChange = this._onDidActivePanelChange.event;
|
|
3817
4108
|
toggleClass(this.container, 'groupview', true);
|
|
3818
4109
|
this.tabsContainer = new TabsContainer(this.accessor, this.groupPanel);
|
|
3819
|
-
this.contentContainer = new ContentContainer();
|
|
3820
|
-
this.dropTarget = new Droptarget(this.contentContainer.element, {
|
|
3821
|
-
acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],
|
|
3822
|
-
canDisplayOverlay: (event, position) => {
|
|
3823
|
-
if (this.locked === 'no-drop-target' ||
|
|
3824
|
-
(this.locked && position === 'center')) {
|
|
3825
|
-
return false;
|
|
3826
|
-
}
|
|
3827
|
-
const data = getPanelData();
|
|
3828
|
-
if (!data && event.shiftKey && !this.isFloating) {
|
|
3829
|
-
return false;
|
|
3830
|
-
}
|
|
3831
|
-
if (data && data.viewId === this.accessor.id) {
|
|
3832
|
-
if (data.groupId === this.id) {
|
|
3833
|
-
if (position === 'center') {
|
|
3834
|
-
// don't allow to drop on self for center position
|
|
3835
|
-
return false;
|
|
3836
|
-
}
|
|
3837
|
-
if (data.panelId === null) {
|
|
3838
|
-
// don't allow group move to drop anywhere on self
|
|
3839
|
-
return false;
|
|
3840
|
-
}
|
|
3841
|
-
}
|
|
3842
|
-
const groupHasOnePanelAndIsActiveDragElement = this._panels.length === 1 && data.groupId === this.id;
|
|
3843
|
-
return !groupHasOnePanelAndIsActiveDragElement;
|
|
3844
|
-
}
|
|
3845
|
-
return this.canDisplayOverlay(event, position, exports.DockviewDropTargets.Panel);
|
|
3846
|
-
},
|
|
3847
|
-
});
|
|
4110
|
+
this.contentContainer = new ContentContainer(this.accessor, this);
|
|
3848
4111
|
container.append(this.tabsContainer.element, this.contentContainer.element);
|
|
3849
4112
|
this.header.hidden = !!options.hideHeader;
|
|
3850
4113
|
this.locked = (_a = options.locked) !== null && _a !== void 0 ? _a : false;
|
|
@@ -3858,7 +4121,7 @@
|
|
|
3858
4121
|
this.accessor.doSetGroupActive(this.groupPanel, true);
|
|
3859
4122
|
}), this.contentContainer.onDidBlur(() => {
|
|
3860
4123
|
// noop
|
|
3861
|
-
}), this.dropTarget.onDrop((event) => {
|
|
4124
|
+
}), this.contentContainer.dropTarget.onDrop((event) => {
|
|
3862
4125
|
this.handleDropEvent(event.nativeEvent, event.position);
|
|
3863
4126
|
}), this._onMove, this._onDidChange, this._onDidDrop, this._onDidAddPanel, this._onDidRemovePanel, this._onDidActivePanelChange);
|
|
3864
4127
|
}
|
|
@@ -3907,6 +4170,9 @@
|
|
|
3907
4170
|
this.tabsContainer.setPrefixActionsElement(this._prefixHeaderActions.element);
|
|
3908
4171
|
}
|
|
3909
4172
|
}
|
|
4173
|
+
rerender(panel) {
|
|
4174
|
+
this.contentContainer.renderPanel(panel, { asActive: false });
|
|
4175
|
+
}
|
|
3910
4176
|
indexOf(panel) {
|
|
3911
4177
|
return this.tabsContainer.indexOf(panel.id);
|
|
3912
4178
|
}
|
|
@@ -4098,12 +4364,12 @@
|
|
|
4098
4364
|
doAddPanel(panel, index = this.panels.length, skipSetActive = false) {
|
|
4099
4365
|
const existingPanel = this._panels.indexOf(panel);
|
|
4100
4366
|
const hasExistingPanel = existingPanel > -1;
|
|
4367
|
+
this.tabsContainer.show();
|
|
4368
|
+
this.contentContainer.show();
|
|
4101
4369
|
this.tabsContainer.openPanel(panel, index);
|
|
4102
4370
|
if (!skipSetActive) {
|
|
4103
4371
|
this.contentContainer.openPanel(panel);
|
|
4104
4372
|
}
|
|
4105
|
-
this.tabsContainer.show();
|
|
4106
|
-
this.contentContainer.show();
|
|
4107
4373
|
if (hasExistingPanel) {
|
|
4108
4374
|
// TODO - need to ensure ordering hasn't changed and if it has need to re-order this.panels
|
|
4109
4375
|
return;
|
|
@@ -4219,7 +4485,6 @@
|
|
|
4219
4485
|
for (const panel of this.panels) {
|
|
4220
4486
|
panel.dispose();
|
|
4221
4487
|
}
|
|
4222
|
-
this.dropTarget.dispose();
|
|
4223
4488
|
this.tabsContainer.dispose();
|
|
4224
4489
|
this.contentContainer.dispose();
|
|
4225
4490
|
}
|
|
@@ -4258,7 +4523,7 @@
|
|
|
4258
4523
|
if (this.disableResizing) {
|
|
4259
4524
|
return;
|
|
4260
4525
|
}
|
|
4261
|
-
if (!
|
|
4526
|
+
if (!isInDocument(this._element)) {
|
|
4262
4527
|
/**
|
|
4263
4528
|
* since the event is dispatched through requestAnimationFrame there is a small chance
|
|
4264
4529
|
* the component is no longer attached to the DOM, if that is the case the dimensions
|
|
@@ -4350,6 +4615,21 @@
|
|
|
4350
4615
|
isVisible(panel) {
|
|
4351
4616
|
return this.gridview.isViewVisible(getGridLocation(panel.element));
|
|
4352
4617
|
}
|
|
4618
|
+
maximizeGroup(panel) {
|
|
4619
|
+
this.gridview.maximizeView(panel);
|
|
4620
|
+
}
|
|
4621
|
+
isMaximizedGroup(panel) {
|
|
4622
|
+
return this.gridview.maximizedView() === panel;
|
|
4623
|
+
}
|
|
4624
|
+
exitMaximizedGroup() {
|
|
4625
|
+
this.gridview.exitMaximizedView();
|
|
4626
|
+
}
|
|
4627
|
+
hasMaximizedGroup() {
|
|
4628
|
+
return this.gridview.hasMaximizedView();
|
|
4629
|
+
}
|
|
4630
|
+
get onDidMaxmizedGroupChange() {
|
|
4631
|
+
return this.gridview.onDidMaxmizedNodeChange;
|
|
4632
|
+
}
|
|
4353
4633
|
doAddGroup(group, location = [0], size) {
|
|
4354
4634
|
this.gridview.addView(group, size !== null && size !== void 0 ? size : exports.Sizing.Distribute, location);
|
|
4355
4635
|
this._onDidAddGroup.fire(group);
|
|
@@ -5126,32 +5406,63 @@
|
|
|
5126
5406
|
}
|
|
5127
5407
|
}
|
|
5128
5408
|
|
|
5409
|
+
// TODO find a better way to initialize and avoid needing null checks
|
|
5410
|
+
const NOT_INITIALIZED_MESSAGE = 'DockviewGroupPanelApiImpl not initialized';
|
|
5129
5411
|
class DockviewGroupPanelApiImpl extends GridviewPanelApiImpl {
|
|
5130
|
-
get
|
|
5412
|
+
get location() {
|
|
5131
5413
|
if (!this._group) {
|
|
5132
|
-
throw new Error(
|
|
5414
|
+
throw new Error(NOT_INITIALIZED_MESSAGE);
|
|
5133
5415
|
}
|
|
5134
|
-
return this._group.model.
|
|
5416
|
+
return this._group.model.location;
|
|
5135
5417
|
}
|
|
5136
5418
|
constructor(id, accessor) {
|
|
5137
5419
|
super(id);
|
|
5138
5420
|
this.accessor = accessor;
|
|
5139
|
-
this.
|
|
5140
|
-
this.
|
|
5141
|
-
this.addDisposables(this.
|
|
5421
|
+
this._onDidLocationChange = new Emitter();
|
|
5422
|
+
this.onDidLocationChange = this._onDidLocationChange.event;
|
|
5423
|
+
this.addDisposables(this._onDidLocationChange);
|
|
5142
5424
|
}
|
|
5143
5425
|
moveTo(options) {
|
|
5144
|
-
var _a;
|
|
5426
|
+
var _a, _b, _c;
|
|
5427
|
+
if (!this._group) {
|
|
5428
|
+
throw new Error(NOT_INITIALIZED_MESSAGE);
|
|
5429
|
+
}
|
|
5430
|
+
const group = (_a = options.group) !== null && _a !== void 0 ? _a : this.accessor.addGroup({
|
|
5431
|
+
direction: positionToDirection((_b = options.position) !== null && _b !== void 0 ? _b : 'right'),
|
|
5432
|
+
});
|
|
5433
|
+
this.accessor.moveGroupOrPanel(group, this._group.id, undefined, options.group ? (_c = options.position) !== null && _c !== void 0 ? _c : 'center' : 'center');
|
|
5434
|
+
}
|
|
5435
|
+
maximize() {
|
|
5436
|
+
if (!this._group) {
|
|
5437
|
+
throw new Error(NOT_INITIALIZED_MESSAGE);
|
|
5438
|
+
}
|
|
5439
|
+
if (this.location !== 'grid') {
|
|
5440
|
+
// only grid groups can be maximized
|
|
5441
|
+
return;
|
|
5442
|
+
}
|
|
5443
|
+
this.accessor.maximizeGroup(this._group);
|
|
5444
|
+
}
|
|
5445
|
+
isMaximized() {
|
|
5145
5446
|
if (!this._group) {
|
|
5146
|
-
throw new Error(
|
|
5447
|
+
throw new Error(NOT_INITIALIZED_MESSAGE);
|
|
5448
|
+
}
|
|
5449
|
+
return this.accessor.isMaximizedGroup(this._group);
|
|
5450
|
+
}
|
|
5451
|
+
exitMaximized() {
|
|
5452
|
+
if (!this._group) {
|
|
5453
|
+
throw new Error(NOT_INITIALIZED_MESSAGE);
|
|
5454
|
+
}
|
|
5455
|
+
if (this.isMaximized()) {
|
|
5456
|
+
this.accessor.exitMaximizedGroup();
|
|
5147
5457
|
}
|
|
5148
|
-
this.accessor.moveGroupOrPanel(options.group, this._group.id, undefined, (_a = options.position) !== null && _a !== void 0 ? _a : 'center');
|
|
5149
5458
|
}
|
|
5150
5459
|
initialize(group) {
|
|
5151
5460
|
this._group = group;
|
|
5152
5461
|
}
|
|
5153
5462
|
}
|
|
5154
5463
|
|
|
5464
|
+
const MINIMUM_DOCKVIEW_GROUP_PANEL_WIDTH = 100;
|
|
5465
|
+
const MINIMUM_DOCKVIEW_GROUP_PANEL_HEIGHT = 100;
|
|
5155
5466
|
class DockviewGroupPanel extends GridviewPanel {
|
|
5156
5467
|
get panels() {
|
|
5157
5468
|
return this._model.panels;
|
|
@@ -5176,8 +5487,8 @@
|
|
|
5176
5487
|
}
|
|
5177
5488
|
constructor(accessor, id, options) {
|
|
5178
5489
|
super(id, 'groupview_default', {
|
|
5179
|
-
minimumHeight:
|
|
5180
|
-
minimumWidth:
|
|
5490
|
+
minimumHeight: MINIMUM_DOCKVIEW_GROUP_PANEL_HEIGHT,
|
|
5491
|
+
minimumWidth: MINIMUM_DOCKVIEW_GROUP_PANEL_WIDTH,
|
|
5181
5492
|
}, new DockviewGroupPanelApiImpl(id, accessor));
|
|
5182
5493
|
this.api.initialize(this); // cannot use 'this' after after 'super' call
|
|
5183
5494
|
this._model = new DockviewGroupPanelModel(this.element, accessor, id, options, this);
|
|
@@ -5231,8 +5542,10 @@
|
|
|
5231
5542
|
return this.panel.title;
|
|
5232
5543
|
}
|
|
5233
5544
|
get isGroupActive() {
|
|
5234
|
-
|
|
5235
|
-
|
|
5545
|
+
return this.group.isActive;
|
|
5546
|
+
}
|
|
5547
|
+
get renderer() {
|
|
5548
|
+
return this.panel.renderer;
|
|
5236
5549
|
}
|
|
5237
5550
|
set group(value) {
|
|
5238
5551
|
const isOldGroupActive = this.isGroupActive;
|
|
@@ -5260,10 +5573,12 @@
|
|
|
5260
5573
|
this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;
|
|
5261
5574
|
this._onDidGroupChange = new Emitter();
|
|
5262
5575
|
this.onDidGroupChange = this._onDidGroupChange.event;
|
|
5576
|
+
this._onDidRendererChange = new Emitter();
|
|
5577
|
+
this.onDidRendererChange = this._onDidRendererChange.event;
|
|
5263
5578
|
this.disposable = new MutableDisposable();
|
|
5264
5579
|
this.initialize(panel);
|
|
5265
5580
|
this._group = group;
|
|
5266
|
-
this.addDisposables(this.disposable, this._onDidTitleChange, this._onDidGroupChange, this._onDidActiveGroupChange);
|
|
5581
|
+
this.addDisposables(this.disposable, this._onDidRendererChange, this._onDidTitleChange, this._onDidGroupChange, this._onDidActiveGroupChange);
|
|
5267
5582
|
}
|
|
5268
5583
|
moveTo(options) {
|
|
5269
5584
|
var _a;
|
|
@@ -5272,9 +5587,21 @@
|
|
|
5272
5587
|
setTitle(title) {
|
|
5273
5588
|
this.panel.setTitle(title);
|
|
5274
5589
|
}
|
|
5590
|
+
setRenderer(renderer) {
|
|
5591
|
+
this.panel.setRenderer(renderer);
|
|
5592
|
+
}
|
|
5275
5593
|
close() {
|
|
5276
5594
|
this.group.model.closePanel(this.panel);
|
|
5277
5595
|
}
|
|
5596
|
+
maximize() {
|
|
5597
|
+
this.group.api.maximize();
|
|
5598
|
+
}
|
|
5599
|
+
isMaximized() {
|
|
5600
|
+
return this.group.api.isMaximized();
|
|
5601
|
+
}
|
|
5602
|
+
exitMaximized() {
|
|
5603
|
+
this.group.api.exitMaximized();
|
|
5604
|
+
}
|
|
5278
5605
|
}
|
|
5279
5606
|
|
|
5280
5607
|
class DockviewPanel extends CompositeDisposable {
|
|
@@ -5287,11 +5614,17 @@
|
|
|
5287
5614
|
get group() {
|
|
5288
5615
|
return this._group;
|
|
5289
5616
|
}
|
|
5290
|
-
|
|
5617
|
+
get renderer() {
|
|
5618
|
+
var _a;
|
|
5619
|
+
return (_a = this._renderer) !== null && _a !== void 0 ? _a : this.accessor.renderer;
|
|
5620
|
+
}
|
|
5621
|
+
constructor(id, accessor, containerApi, group, view, options) {
|
|
5291
5622
|
super();
|
|
5292
5623
|
this.id = id;
|
|
5624
|
+
this.accessor = accessor;
|
|
5293
5625
|
this.containerApi = containerApi;
|
|
5294
5626
|
this.view = view;
|
|
5627
|
+
this._renderer = options.renderer;
|
|
5295
5628
|
this._group = group;
|
|
5296
5629
|
this.api = new DockviewPanelApiImpl(this, this._group, accessor);
|
|
5297
5630
|
this.addDisposables(this.api.onActiveChange(() => {
|
|
@@ -5300,6 +5633,8 @@
|
|
|
5300
5633
|
// forward the resize event to the group since if you want to resize a panel
|
|
5301
5634
|
// you are actually just resizing the panels parent which is the group
|
|
5302
5635
|
this.group.api.setSize(event);
|
|
5636
|
+
}), this.api.onDidRendererChange((event) => {
|
|
5637
|
+
this.group.model.rerender(this);
|
|
5303
5638
|
}));
|
|
5304
5639
|
}
|
|
5305
5640
|
init(params) {
|
|
@@ -5319,6 +5654,7 @@
|
|
|
5319
5654
|
? this._params
|
|
5320
5655
|
: undefined,
|
|
5321
5656
|
title: this.title,
|
|
5657
|
+
renderer: this._renderer,
|
|
5322
5658
|
};
|
|
5323
5659
|
}
|
|
5324
5660
|
setTitle(title) {
|
|
@@ -5334,6 +5670,15 @@
|
|
|
5334
5670
|
this.api._onDidTitleChange.fire({ title });
|
|
5335
5671
|
}
|
|
5336
5672
|
}
|
|
5673
|
+
setRenderer(renderer) {
|
|
5674
|
+
const didChange = renderer !== this.renderer;
|
|
5675
|
+
if (didChange) {
|
|
5676
|
+
this._renderer = renderer;
|
|
5677
|
+
this.api._onDidRendererChange.fire({
|
|
5678
|
+
renderer: renderer,
|
|
5679
|
+
});
|
|
5680
|
+
}
|
|
5681
|
+
}
|
|
5337
5682
|
update(event) {
|
|
5338
5683
|
var _a;
|
|
5339
5684
|
// merge the new parameters with the existing parameters
|
|
@@ -5552,8 +5897,8 @@
|
|
|
5552
5897
|
}
|
|
5553
5898
|
|
|
5554
5899
|
class DefaultDockviewDeserialzier {
|
|
5555
|
-
constructor(
|
|
5556
|
-
this.
|
|
5900
|
+
constructor(accessor) {
|
|
5901
|
+
this.accessor = accessor;
|
|
5557
5902
|
}
|
|
5558
5903
|
fromJSON(panelData, group) {
|
|
5559
5904
|
var _a, _b;
|
|
@@ -5567,8 +5912,10 @@
|
|
|
5567
5912
|
const tabComponent = viewData
|
|
5568
5913
|
? (_b = viewData.tab) === null || _b === void 0 ? void 0 : _b.id
|
|
5569
5914
|
: panelData.tabComponent;
|
|
5570
|
-
const view = new DockviewPanelModel(this.
|
|
5571
|
-
const panel = new DockviewPanel(panelId, this.
|
|
5915
|
+
const view = new DockviewPanelModel(this.accessor, panelId, contentComponent, tabComponent);
|
|
5916
|
+
const panel = new DockviewPanel(panelId, this.accessor, new DockviewApi(this.accessor), group, view, {
|
|
5917
|
+
renderer: panelData.renderer,
|
|
5918
|
+
});
|
|
5572
5919
|
panel.init({
|
|
5573
5920
|
title: title !== null && title !== void 0 ? title : panelId,
|
|
5574
5921
|
params: params !== null && params !== void 0 ? params : {},
|
|
@@ -5948,7 +6295,261 @@
|
|
|
5948
6295
|
}
|
|
5949
6296
|
}
|
|
5950
6297
|
|
|
6298
|
+
class PopoutWindow extends CompositeDisposable {
|
|
6299
|
+
constructor(id, className, options) {
|
|
6300
|
+
super();
|
|
6301
|
+
this.id = id;
|
|
6302
|
+
this.className = className;
|
|
6303
|
+
this.options = options;
|
|
6304
|
+
this._onDidClose = new Emitter();
|
|
6305
|
+
this.onDidClose = this._onDidClose.event;
|
|
6306
|
+
this._window = null;
|
|
6307
|
+
this.addDisposables(this._onDidClose, {
|
|
6308
|
+
dispose: () => {
|
|
6309
|
+
this.close();
|
|
6310
|
+
},
|
|
6311
|
+
});
|
|
6312
|
+
}
|
|
6313
|
+
dimensions() {
|
|
6314
|
+
if (!this._window) {
|
|
6315
|
+
return null;
|
|
6316
|
+
}
|
|
6317
|
+
const left = this._window.value.screenX;
|
|
6318
|
+
const top = this._window.value.screenY;
|
|
6319
|
+
const width = this._window.value.innerWidth;
|
|
6320
|
+
const height = this._window.value.innerHeight;
|
|
6321
|
+
return { top, left, width, height };
|
|
6322
|
+
}
|
|
6323
|
+
close() {
|
|
6324
|
+
if (this._window) {
|
|
6325
|
+
this._window.disposable.dispose();
|
|
6326
|
+
this._window.value.close();
|
|
6327
|
+
this._window = null;
|
|
6328
|
+
}
|
|
6329
|
+
}
|
|
6330
|
+
open(content) {
|
|
6331
|
+
if (this._window) {
|
|
6332
|
+
throw new Error('instance of popout window is already open');
|
|
6333
|
+
}
|
|
6334
|
+
const url = `${this.options.url}`;
|
|
6335
|
+
const features = Object.entries({
|
|
6336
|
+
top: this.options.top,
|
|
6337
|
+
left: this.options.left,
|
|
6338
|
+
width: this.options.width,
|
|
6339
|
+
height: this.options.height,
|
|
6340
|
+
})
|
|
6341
|
+
.map(([key, value]) => `${key}=${value}`)
|
|
6342
|
+
.join(',');
|
|
6343
|
+
// https://developer.mozilla.org/en-US/docs/Web/API/Window/open
|
|
6344
|
+
const externalWindow = window.open(url, this.id, features);
|
|
6345
|
+
if (!externalWindow) {
|
|
6346
|
+
return;
|
|
6347
|
+
}
|
|
6348
|
+
const disposable = new CompositeDisposable();
|
|
6349
|
+
this._window = { value: externalWindow, disposable };
|
|
6350
|
+
const cleanUp = () => {
|
|
6351
|
+
this._onDidClose.fire();
|
|
6352
|
+
this._window = null;
|
|
6353
|
+
};
|
|
6354
|
+
// prevent any default content from loading
|
|
6355
|
+
// externalWindow.document.body.replaceWith(document.createElement('div'));
|
|
6356
|
+
disposable.addDisposables(addDisposableWindowListener(window, 'beforeunload', () => {
|
|
6357
|
+
cleanUp();
|
|
6358
|
+
this.close();
|
|
6359
|
+
}));
|
|
6360
|
+
externalWindow.addEventListener('load', () => {
|
|
6361
|
+
const externalDocument = externalWindow.document;
|
|
6362
|
+
externalDocument.title = document.title;
|
|
6363
|
+
const div = document.createElement('div');
|
|
6364
|
+
div.classList.add('dv-popout-window');
|
|
6365
|
+
div.style.position = 'absolute';
|
|
6366
|
+
div.style.width = '100%';
|
|
6367
|
+
div.style.height = '100%';
|
|
6368
|
+
div.style.top = '0px';
|
|
6369
|
+
div.style.left = '0px';
|
|
6370
|
+
div.classList.add(this.className);
|
|
6371
|
+
div.appendChild(content);
|
|
6372
|
+
externalDocument.body.replaceChildren(div);
|
|
6373
|
+
externalDocument.body.classList.add(this.className);
|
|
6374
|
+
addStyles(externalDocument, window.document.styleSheets);
|
|
6375
|
+
externalWindow.addEventListener('beforeunload', () => {
|
|
6376
|
+
// TODO: indicate external window is closing
|
|
6377
|
+
cleanUp();
|
|
6378
|
+
});
|
|
6379
|
+
});
|
|
6380
|
+
}
|
|
6381
|
+
}
|
|
6382
|
+
|
|
6383
|
+
class DockviewPopoutGroupPanel extends CompositeDisposable {
|
|
6384
|
+
constructor(id, group, options) {
|
|
6385
|
+
var _a;
|
|
6386
|
+
super();
|
|
6387
|
+
this.id = id;
|
|
6388
|
+
this.group = group;
|
|
6389
|
+
this.options = options;
|
|
6390
|
+
this.window = new PopoutWindow(id, (_a = options.className) !== null && _a !== void 0 ? _a : '', {
|
|
6391
|
+
url: this.options.popoutUrl,
|
|
6392
|
+
left: this.options.box.left,
|
|
6393
|
+
top: this.options.box.top,
|
|
6394
|
+
width: this.options.box.width,
|
|
6395
|
+
height: this.options.box.height,
|
|
6396
|
+
});
|
|
6397
|
+
group.model.location = 'popout';
|
|
6398
|
+
this.addDisposables(this.window, {
|
|
6399
|
+
dispose: () => {
|
|
6400
|
+
group.model.location = 'grid';
|
|
6401
|
+
},
|
|
6402
|
+
}, this.window.onDidClose(() => {
|
|
6403
|
+
this.dispose();
|
|
6404
|
+
}));
|
|
6405
|
+
this.window.open(group.element);
|
|
6406
|
+
}
|
|
6407
|
+
}
|
|
6408
|
+
|
|
5951
6409
|
const DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE = 100;
|
|
6410
|
+
const DEFAULT_FLOATING_GROUP_POSITION = { left: 100, top: 100 };
|
|
6411
|
+
|
|
6412
|
+
function createFocusableElement() {
|
|
6413
|
+
const element = document.createElement('div');
|
|
6414
|
+
element.tabIndex = -1;
|
|
6415
|
+
return element;
|
|
6416
|
+
}
|
|
6417
|
+
class OverlayRenderContainer extends CompositeDisposable {
|
|
6418
|
+
constructor(element) {
|
|
6419
|
+
super();
|
|
6420
|
+
this.element = element;
|
|
6421
|
+
this.map = {};
|
|
6422
|
+
this.addDisposables(Disposable.from(() => {
|
|
6423
|
+
for (const value of Object.values(this.map)) {
|
|
6424
|
+
value.disposable.dispose();
|
|
6425
|
+
value.destroy.dispose();
|
|
6426
|
+
}
|
|
6427
|
+
}));
|
|
6428
|
+
}
|
|
6429
|
+
detatch(panel) {
|
|
6430
|
+
if (this.map[panel.api.id]) {
|
|
6431
|
+
const { disposable, destroy } = this.map[panel.api.id];
|
|
6432
|
+
disposable.dispose();
|
|
6433
|
+
destroy.dispose();
|
|
6434
|
+
delete this.map[panel.api.id];
|
|
6435
|
+
return true;
|
|
6436
|
+
}
|
|
6437
|
+
return false;
|
|
6438
|
+
}
|
|
6439
|
+
attach(options) {
|
|
6440
|
+
const { panel, referenceContainer } = options;
|
|
6441
|
+
if (!this.map[panel.api.id]) {
|
|
6442
|
+
const element = createFocusableElement();
|
|
6443
|
+
element.className = 'dv-render-overlay';
|
|
6444
|
+
this.map[panel.api.id] = {
|
|
6445
|
+
panel,
|
|
6446
|
+
disposable: Disposable.NONE,
|
|
6447
|
+
destroy: Disposable.NONE,
|
|
6448
|
+
element,
|
|
6449
|
+
};
|
|
6450
|
+
}
|
|
6451
|
+
const focusContainer = this.map[panel.api.id].element;
|
|
6452
|
+
if (panel.view.content.element.parentElement !== focusContainer) {
|
|
6453
|
+
focusContainer.appendChild(panel.view.content.element);
|
|
6454
|
+
}
|
|
6455
|
+
if (focusContainer.parentElement !== this.element) {
|
|
6456
|
+
this.element.appendChild(focusContainer);
|
|
6457
|
+
}
|
|
6458
|
+
const resize = () => {
|
|
6459
|
+
// TODO propagate position to avoid getDomNodePagePosition calls, possible performance bottleneck?
|
|
6460
|
+
const box = getDomNodePagePosition(referenceContainer.element);
|
|
6461
|
+
const box2 = getDomNodePagePosition(this.element);
|
|
6462
|
+
focusContainer.style.left = `${box.left - box2.left}px`;
|
|
6463
|
+
focusContainer.style.top = `${box.top - box2.top}px`;
|
|
6464
|
+
focusContainer.style.width = `${box.width}px`;
|
|
6465
|
+
focusContainer.style.height = `${box.height}px`;
|
|
6466
|
+
toggleClass(focusContainer, 'dv-render-overlay-float', panel.group.api.location === 'floating');
|
|
6467
|
+
};
|
|
6468
|
+
const visibilityChanged = () => {
|
|
6469
|
+
if (panel.api.isVisible) {
|
|
6470
|
+
resize();
|
|
6471
|
+
}
|
|
6472
|
+
focusContainer.style.display = panel.api.isVisible ? '' : 'none';
|
|
6473
|
+
};
|
|
6474
|
+
const disposable = new CompositeDisposable(
|
|
6475
|
+
/**
|
|
6476
|
+
* since container is positioned absoutely we must explicitly forward
|
|
6477
|
+
* the dnd events for the expect behaviours to continue to occur in terms of dnd
|
|
6478
|
+
*
|
|
6479
|
+
* the dnd observer does not need to be conditional on whether the panel is visible since
|
|
6480
|
+
* non-visible panels are 'display: none' and in such case the dnd observer will not fire.
|
|
6481
|
+
*/
|
|
6482
|
+
new DragAndDropObserver(focusContainer, {
|
|
6483
|
+
onDragEnd: (e) => {
|
|
6484
|
+
referenceContainer.dropTarget.dnd.onDragEnd(e);
|
|
6485
|
+
},
|
|
6486
|
+
onDragEnter: (e) => {
|
|
6487
|
+
referenceContainer.dropTarget.dnd.onDragEnter(e);
|
|
6488
|
+
},
|
|
6489
|
+
onDragLeave: (e) => {
|
|
6490
|
+
referenceContainer.dropTarget.dnd.onDragLeave(e);
|
|
6491
|
+
},
|
|
6492
|
+
onDrop: (e) => {
|
|
6493
|
+
referenceContainer.dropTarget.dnd.onDrop(e);
|
|
6494
|
+
},
|
|
6495
|
+
onDragOver: (e) => {
|
|
6496
|
+
referenceContainer.dropTarget.dnd.onDragOver(e);
|
|
6497
|
+
},
|
|
6498
|
+
}), panel.api.onDidVisibilityChange((event) => {
|
|
6499
|
+
/**
|
|
6500
|
+
* Control the visibility of the content, however even when not visible (display: none)
|
|
6501
|
+
* the content is still maintained within the DOM hence DOM specific attributes
|
|
6502
|
+
* such as scroll position are maintained when next made visible.
|
|
6503
|
+
*/
|
|
6504
|
+
visibilityChanged();
|
|
6505
|
+
}), panel.api.onDidDimensionsChange(() => {
|
|
6506
|
+
if (!panel.api.isVisible) {
|
|
6507
|
+
return;
|
|
6508
|
+
}
|
|
6509
|
+
resize();
|
|
6510
|
+
}));
|
|
6511
|
+
this.map[panel.api.id].destroy = Disposable.from(() => {
|
|
6512
|
+
focusContainer.removeChild(panel.view.content.element);
|
|
6513
|
+
this.element.removeChild(focusContainer);
|
|
6514
|
+
});
|
|
6515
|
+
queueMicrotask(() => {
|
|
6516
|
+
if (this.isDisposed) {
|
|
6517
|
+
return;
|
|
6518
|
+
}
|
|
6519
|
+
/**
|
|
6520
|
+
* wait until everything has finished in the current stack-frame call before
|
|
6521
|
+
* calling the first resize as other size-altering events may still occur before
|
|
6522
|
+
* the end of the stack-frame.
|
|
6523
|
+
*/
|
|
6524
|
+
visibilityChanged();
|
|
6525
|
+
});
|
|
6526
|
+
// dispose of logic asoccciated with previous reference-container
|
|
6527
|
+
this.map[panel.api.id].disposable.dispose();
|
|
6528
|
+
// and reset the disposable to the active reference-container
|
|
6529
|
+
this.map[panel.api.id].disposable = disposable;
|
|
6530
|
+
return focusContainer;
|
|
6531
|
+
}
|
|
6532
|
+
}
|
|
6533
|
+
|
|
6534
|
+
function getTheme(element) {
|
|
6535
|
+
function toClassList(element) {
|
|
6536
|
+
const list = [];
|
|
6537
|
+
for (let i = 0; i < element.classList.length; i++) {
|
|
6538
|
+
list.push(element.classList.item(i));
|
|
6539
|
+
}
|
|
6540
|
+
return list;
|
|
6541
|
+
}
|
|
6542
|
+
let theme = undefined;
|
|
6543
|
+
let parent = element;
|
|
6544
|
+
while (parent !== null) {
|
|
6545
|
+
theme = toClassList(parent).find((cls) => cls.startsWith('dockview-theme-'));
|
|
6546
|
+
if (typeof theme === 'string') {
|
|
6547
|
+
break;
|
|
6548
|
+
}
|
|
6549
|
+
parent = parent.parentElement;
|
|
6550
|
+
}
|
|
6551
|
+
return theme;
|
|
6552
|
+
}
|
|
5952
6553
|
class DockviewComponent extends BaseGrid {
|
|
5953
6554
|
get orientation() {
|
|
5954
6555
|
return this.gridview.orientation;
|
|
@@ -5969,6 +6570,10 @@
|
|
|
5969
6570
|
}
|
|
5970
6571
|
return activeGroup.activePanel;
|
|
5971
6572
|
}
|
|
6573
|
+
get renderer() {
|
|
6574
|
+
var _a;
|
|
6575
|
+
return (_a = this.options.defaultRenderer) !== null && _a !== void 0 ? _a : 'onlyWhenVisibile';
|
|
6576
|
+
}
|
|
5972
6577
|
constructor(options) {
|
|
5973
6578
|
var _a;
|
|
5974
6579
|
super({
|
|
@@ -5995,12 +6600,27 @@
|
|
|
5995
6600
|
this.onDidLayoutFromJSON = this._onDidLayoutFromJSON.event;
|
|
5996
6601
|
this._onDidActivePanelChange = new Emitter();
|
|
5997
6602
|
this.onDidActivePanelChange = this._onDidActivePanelChange.event;
|
|
5998
|
-
this.
|
|
6603
|
+
this._floatingGroups = [];
|
|
6604
|
+
this._popoutGroups = [];
|
|
6605
|
+
const gready = document.createElement('div');
|
|
6606
|
+
gready.className = 'dv-overlay-render-container';
|
|
6607
|
+
this.gridview.element.appendChild(gready);
|
|
6608
|
+
this.overlayRenderContainer = new OverlayRenderContainer(gready);
|
|
5999
6609
|
toggleClass(this.gridview.element, 'dv-dockview', true);
|
|
6000
|
-
|
|
6610
|
+
toggleClass(this.element, 'dv-debug', !!options.debug);
|
|
6611
|
+
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)(() => {
|
|
6001
6612
|
this.updateWatermark();
|
|
6002
6613
|
}), exports.DockviewEvent.any(this.onDidAddPanel, this.onDidRemovePanel, this.onDidActivePanelChange)(() => {
|
|
6003
6614
|
this._bufferOnDidLayoutChange.fire();
|
|
6615
|
+
}), Disposable.from(() => {
|
|
6616
|
+
// iterate over a copy of the array since .dispose() mutates the original array
|
|
6617
|
+
for (const group of [...this._floatingGroups]) {
|
|
6618
|
+
group.dispose();
|
|
6619
|
+
}
|
|
6620
|
+
// iterate over a copy of the array since .dispose() mutates the original array
|
|
6621
|
+
for (const group of [...this._popoutGroups]) {
|
|
6622
|
+
group.dispose();
|
|
6623
|
+
}
|
|
6004
6624
|
}));
|
|
6005
6625
|
this._options = options;
|
|
6006
6626
|
if (!this.options.components) {
|
|
@@ -6070,6 +6690,55 @@
|
|
|
6070
6690
|
this._api = new DockviewApi(this);
|
|
6071
6691
|
this.updateWatermark();
|
|
6072
6692
|
}
|
|
6693
|
+
addPopoutGroup(item, options) {
|
|
6694
|
+
var _a;
|
|
6695
|
+
let group;
|
|
6696
|
+
let box = options === null || options === void 0 ? void 0 : options.position;
|
|
6697
|
+
if (item instanceof DockviewPanel) {
|
|
6698
|
+
group = this.createGroup();
|
|
6699
|
+
this.removePanel(item, {
|
|
6700
|
+
removeEmptyGroup: true,
|
|
6701
|
+
skipDispose: true,
|
|
6702
|
+
});
|
|
6703
|
+
group.model.openPanel(item);
|
|
6704
|
+
if (!box) {
|
|
6705
|
+
box = this.element.getBoundingClientRect();
|
|
6706
|
+
}
|
|
6707
|
+
}
|
|
6708
|
+
else {
|
|
6709
|
+
group = item;
|
|
6710
|
+
if (!box) {
|
|
6711
|
+
box = group.element.getBoundingClientRect();
|
|
6712
|
+
}
|
|
6713
|
+
const skip = typeof (options === null || options === void 0 ? void 0 : options.skipRemoveGroup) === 'boolean' &&
|
|
6714
|
+
options.skipRemoveGroup;
|
|
6715
|
+
if (!skip) {
|
|
6716
|
+
this.doRemoveGroup(item, { skipDispose: true });
|
|
6717
|
+
}
|
|
6718
|
+
}
|
|
6719
|
+
const theme = getTheme(this.gridview.element);
|
|
6720
|
+
const popoutWindow = new DockviewPopoutGroupPanel(`${this.id}-${group.id}`, // globally unique within dockview
|
|
6721
|
+
group, {
|
|
6722
|
+
className: theme !== null && theme !== void 0 ? theme : '',
|
|
6723
|
+
popoutUrl: (_a = options === null || options === void 0 ? void 0 : options.popoutUrl) !== null && _a !== void 0 ? _a : '/popout.html',
|
|
6724
|
+
box: {
|
|
6725
|
+
left: window.screenX + box.left,
|
|
6726
|
+
top: window.screenY + box.top,
|
|
6727
|
+
width: box.width,
|
|
6728
|
+
height: box.height,
|
|
6729
|
+
},
|
|
6730
|
+
});
|
|
6731
|
+
popoutWindow.addDisposables({
|
|
6732
|
+
dispose: () => {
|
|
6733
|
+
remove(this._popoutGroups, popoutWindow);
|
|
6734
|
+
this.updateWatermark();
|
|
6735
|
+
},
|
|
6736
|
+
}, popoutWindow.window.onDidClose(() => {
|
|
6737
|
+
this.doAddGroup(group, [0]);
|
|
6738
|
+
}));
|
|
6739
|
+
this._popoutGroups.push(popoutWindow);
|
|
6740
|
+
this.updateWatermark();
|
|
6741
|
+
}
|
|
6073
6742
|
addFloatingGroup(item, coord, options) {
|
|
6074
6743
|
var _a, _b, _c, _d, _e, _f;
|
|
6075
6744
|
let group;
|
|
@@ -6089,9 +6758,13 @@
|
|
|
6089
6758
|
this.doRemoveGroup(item, { skipDispose: true });
|
|
6090
6759
|
}
|
|
6091
6760
|
}
|
|
6092
|
-
group.model.
|
|
6093
|
-
const overlayLeft = typeof (coord === null || coord === void 0 ? void 0 : coord.x) === 'number'
|
|
6094
|
-
|
|
6761
|
+
group.model.location = 'floating';
|
|
6762
|
+
const overlayLeft = typeof (coord === null || coord === void 0 ? void 0 : coord.x) === 'number'
|
|
6763
|
+
? Math.max(coord.x, 0)
|
|
6764
|
+
: DEFAULT_FLOATING_GROUP_POSITION.left;
|
|
6765
|
+
const overlayTop = typeof (coord === null || coord === void 0 ? void 0 : coord.y) === 'number'
|
|
6766
|
+
? Math.max(coord.y, 0)
|
|
6767
|
+
: DEFAULT_FLOATING_GROUP_POSITION.top;
|
|
6095
6768
|
const overlay = new Overlay({
|
|
6096
6769
|
container: this.gridview.element,
|
|
6097
6770
|
content: group.element,
|
|
@@ -6135,12 +6808,12 @@
|
|
|
6135
6808
|
}), {
|
|
6136
6809
|
dispose: () => {
|
|
6137
6810
|
disposable.dispose();
|
|
6138
|
-
group.model.
|
|
6139
|
-
remove(this.
|
|
6811
|
+
group.model.location = 'grid';
|
|
6812
|
+
remove(this._floatingGroups, floatingGroupPanel);
|
|
6140
6813
|
this.updateWatermark();
|
|
6141
6814
|
},
|
|
6142
6815
|
});
|
|
6143
|
-
this.
|
|
6816
|
+
this._floatingGroups.push(floatingGroupPanel);
|
|
6144
6817
|
this.updateWatermark();
|
|
6145
6818
|
}
|
|
6146
6819
|
orthogonalize(position) {
|
|
@@ -6185,7 +6858,7 @@
|
|
|
6185
6858
|
this.gridview.orientation = options.orientation;
|
|
6186
6859
|
}
|
|
6187
6860
|
if (hasFloatingGroupOptionsChanged) {
|
|
6188
|
-
for (const group of this.
|
|
6861
|
+
for (const group of this._floatingGroups) {
|
|
6189
6862
|
switch (this.options.floatingGroupBounds) {
|
|
6190
6863
|
case 'boundedWithinViewport':
|
|
6191
6864
|
group.overlay.minimumInViewportHeight = undefined;
|
|
@@ -6210,8 +6883,8 @@
|
|
|
6210
6883
|
}
|
|
6211
6884
|
layout(width, height, forceResize) {
|
|
6212
6885
|
super.layout(width, height, forceResize);
|
|
6213
|
-
if (this.
|
|
6214
|
-
for (const floating of this.
|
|
6886
|
+
if (this._floatingGroups) {
|
|
6887
|
+
for (const floating of this._floatingGroups) {
|
|
6215
6888
|
// ensure floting groups stay within visible boundaries
|
|
6216
6889
|
floating.overlay.setBounds();
|
|
6217
6890
|
}
|
|
@@ -6279,10 +6952,16 @@
|
|
|
6279
6952
|
collection[panel.id] = panel.toJSON();
|
|
6280
6953
|
return collection;
|
|
6281
6954
|
}, {});
|
|
6282
|
-
const floats = this.
|
|
6955
|
+
const floats = this._floatingGroups.map((group) => {
|
|
6956
|
+
return {
|
|
6957
|
+
data: group.group.toJSON(),
|
|
6958
|
+
position: group.overlay.toJSON(),
|
|
6959
|
+
};
|
|
6960
|
+
});
|
|
6961
|
+
const popoutGroups = this._popoutGroups.map((group) => {
|
|
6283
6962
|
return {
|
|
6284
|
-
data:
|
|
6285
|
-
position:
|
|
6963
|
+
data: group.group.toJSON(),
|
|
6964
|
+
position: group.window.dimensions(),
|
|
6286
6965
|
};
|
|
6287
6966
|
});
|
|
6288
6967
|
const result = {
|
|
@@ -6293,10 +6972,13 @@
|
|
|
6293
6972
|
if (floats.length > 0) {
|
|
6294
6973
|
result.floatingGroups = floats;
|
|
6295
6974
|
}
|
|
6975
|
+
if (popoutGroups.length > 0) {
|
|
6976
|
+
result.popoutGroups = popoutGroups;
|
|
6977
|
+
}
|
|
6296
6978
|
return result;
|
|
6297
6979
|
}
|
|
6298
6980
|
fromJSON(data) {
|
|
6299
|
-
var _a;
|
|
6981
|
+
var _a, _b;
|
|
6300
6982
|
this.clear();
|
|
6301
6983
|
if (typeof data !== 'object' || data === null) {
|
|
6302
6984
|
throw new Error('serialized layout must be a non-null object');
|
|
@@ -6363,7 +7045,16 @@
|
|
|
6363
7045
|
width: position.width,
|
|
6364
7046
|
}, { skipRemoveGroup: true, inDragMode: false });
|
|
6365
7047
|
}
|
|
6366
|
-
|
|
7048
|
+
const serializedPopoutGroups = (_b = data.popoutGroups) !== null && _b !== void 0 ? _b : [];
|
|
7049
|
+
for (const serializedPopoutGroup of serializedPopoutGroups) {
|
|
7050
|
+
const { data, position } = serializedPopoutGroup;
|
|
7051
|
+
const group = createGroupFromSerializedState(data);
|
|
7052
|
+
this.addPopoutGroup(group, {
|
|
7053
|
+
skipRemoveGroup: true,
|
|
7054
|
+
position: position !== null && position !== void 0 ? position : undefined,
|
|
7055
|
+
});
|
|
7056
|
+
}
|
|
7057
|
+
for (const floatingGroup of this._floatingGroups) {
|
|
6367
7058
|
floatingGroup.overlay.setBounds();
|
|
6368
7059
|
}
|
|
6369
7060
|
if (typeof activeGroup === 'string') {
|
|
@@ -6395,7 +7086,7 @@
|
|
|
6395
7086
|
this._onDidRemoveGroup.fire(group);
|
|
6396
7087
|
}
|
|
6397
7088
|
// iterate over a reassigned array since original array will be modified
|
|
6398
|
-
for (const floatingGroup of [...this.
|
|
7089
|
+
for (const floatingGroup of [...this._floatingGroups]) {
|
|
6399
7090
|
floatingGroup.dispose();
|
|
6400
7091
|
}
|
|
6401
7092
|
// fires clean-up events and clears the underlying HTML gridview.
|
|
@@ -6487,7 +7178,8 @@
|
|
|
6487
7178
|
group.model.openPanel(panel);
|
|
6488
7179
|
this.doSetGroupAndPanelActive(group);
|
|
6489
7180
|
}
|
|
6490
|
-
else if (referenceGroup.api.
|
|
7181
|
+
else if (referenceGroup.api.location === 'floating' ||
|
|
7182
|
+
target === 'center') {
|
|
6491
7183
|
panel = this.createPanel(options, referenceGroup);
|
|
6492
7184
|
referenceGroup.model.openPanel(panel);
|
|
6493
7185
|
}
|
|
@@ -6531,6 +7223,7 @@
|
|
|
6531
7223
|
}
|
|
6532
7224
|
group.model.removePanel(panel);
|
|
6533
7225
|
if (!options.skipDispose) {
|
|
7226
|
+
this.overlayRenderContainer.detatch(panel);
|
|
6534
7227
|
panel.dispose();
|
|
6535
7228
|
}
|
|
6536
7229
|
if (group.size === 0 && options.removeEmptyGroup) {
|
|
@@ -6547,7 +7240,7 @@
|
|
|
6547
7240
|
}
|
|
6548
7241
|
updateWatermark() {
|
|
6549
7242
|
var _a, _b;
|
|
6550
|
-
if (this.groups.filter((x) =>
|
|
7243
|
+
if (this.groups.filter((x) => x.api.location === 'grid').length === 0) {
|
|
6551
7244
|
if (!this.watermark) {
|
|
6552
7245
|
this.watermark = this.createWatermarkComponent();
|
|
6553
7246
|
this.watermark.init({
|
|
@@ -6622,19 +7315,40 @@
|
|
|
6622
7315
|
}
|
|
6623
7316
|
}
|
|
6624
7317
|
doRemoveGroup(group, options) {
|
|
6625
|
-
|
|
6626
|
-
|
|
6627
|
-
if (
|
|
6628
|
-
|
|
6629
|
-
|
|
6630
|
-
|
|
7318
|
+
if (group.api.location === 'floating') {
|
|
7319
|
+
const floatingGroup = this._floatingGroups.find((_) => _.group === group);
|
|
7320
|
+
if (floatingGroup) {
|
|
7321
|
+
if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {
|
|
7322
|
+
floatingGroup.group.dispose();
|
|
7323
|
+
this._groups.delete(group.id);
|
|
7324
|
+
this._onDidRemoveGroup.fire(group);
|
|
7325
|
+
}
|
|
7326
|
+
remove(this._floatingGroups, floatingGroup);
|
|
7327
|
+
floatingGroup.dispose();
|
|
7328
|
+
if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {
|
|
7329
|
+
const groups = Array.from(this._groups.values());
|
|
7330
|
+
this.doSetGroupActive(groups.length > 0 ? groups[0].value : undefined);
|
|
7331
|
+
}
|
|
7332
|
+
return floatingGroup.group;
|
|
6631
7333
|
}
|
|
6632
|
-
|
|
6633
|
-
|
|
6634
|
-
|
|
6635
|
-
|
|
7334
|
+
throw new Error('failed to find floating group');
|
|
7335
|
+
}
|
|
7336
|
+
if (group.api.location === 'popout') {
|
|
7337
|
+
const selectedGroup = this._popoutGroups.find((_) => _.group === group);
|
|
7338
|
+
if (selectedGroup) {
|
|
7339
|
+
if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {
|
|
7340
|
+
selectedGroup.group.dispose();
|
|
7341
|
+
this._groups.delete(group.id);
|
|
7342
|
+
this._onDidRemoveGroup.fire(group);
|
|
7343
|
+
}
|
|
7344
|
+
selectedGroup.dispose();
|
|
7345
|
+
if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {
|
|
7346
|
+
const groups = Array.from(this._groups.values());
|
|
7347
|
+
this.doSetGroupActive(groups.length > 0 ? groups[0].value : undefined);
|
|
7348
|
+
}
|
|
7349
|
+
return selectedGroup.group;
|
|
6636
7350
|
}
|
|
6637
|
-
|
|
7351
|
+
throw new Error('failed to find popout group');
|
|
6638
7352
|
}
|
|
6639
7353
|
return super.doRemoveGroup(group, options);
|
|
6640
7354
|
}
|
|
@@ -6666,8 +7380,7 @@
|
|
|
6666
7380
|
const targetLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, destinationTarget);
|
|
6667
7381
|
if (sourceGroup && sourceGroup.size < 2) {
|
|
6668
7382
|
const [targetParentLocation, to] = tail(targetLocation);
|
|
6669
|
-
|
|
6670
|
-
if (!isFloating) {
|
|
7383
|
+
if (sourceGroup.api.location === 'grid') {
|
|
6671
7384
|
const sourceLocation = getGridLocation(sourceGroup.element);
|
|
6672
7385
|
const [sourceParentLocation, from] = tail(sourceLocation);
|
|
6673
7386
|
if (sequenceEquals(sourceParentLocation, targetParentLocation)) {
|
|
@@ -6713,12 +7426,25 @@
|
|
|
6713
7426
|
}
|
|
6714
7427
|
}
|
|
6715
7428
|
else {
|
|
6716
|
-
|
|
6717
|
-
|
|
6718
|
-
|
|
6719
|
-
|
|
6720
|
-
|
|
6721
|
-
|
|
7429
|
+
switch (sourceGroup.api.location) {
|
|
7430
|
+
case 'grid':
|
|
7431
|
+
this.gridview.removeView(getGridLocation(sourceGroup.element));
|
|
7432
|
+
break;
|
|
7433
|
+
case 'floating': {
|
|
7434
|
+
const selectedFloatingGroup = this._floatingGroups.find((x) => x.group === sourceGroup);
|
|
7435
|
+
if (!selectedFloatingGroup) {
|
|
7436
|
+
throw new Error('failed to find floating group');
|
|
7437
|
+
}
|
|
7438
|
+
selectedFloatingGroup.dispose();
|
|
7439
|
+
break;
|
|
7440
|
+
}
|
|
7441
|
+
case 'popout': {
|
|
7442
|
+
const selectedPopoutGroup = this._popoutGroups.find((x) => x.group === sourceGroup);
|
|
7443
|
+
if (!selectedPopoutGroup) {
|
|
7444
|
+
throw new Error('failed to find popout group');
|
|
7445
|
+
}
|
|
7446
|
+
selectedPopoutGroup.dispose();
|
|
7447
|
+
}
|
|
6722
7448
|
}
|
|
6723
7449
|
const referenceLocation = getGridLocation(referenceGroup.element);
|
|
6724
7450
|
const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, target);
|
|
@@ -6780,7 +7506,7 @@
|
|
|
6780
7506
|
const contentComponent = options.component;
|
|
6781
7507
|
const tabComponent = (_a = options.tabComponent) !== null && _a !== void 0 ? _a : this.options.defaultTabComponent;
|
|
6782
7508
|
const view = new DockviewPanelModel(this, options.id, contentComponent, tabComponent);
|
|
6783
|
-
const panel = new DockviewPanel(options.id, this, this._api, group, view);
|
|
7509
|
+
const panel = new DockviewPanel(options.id, this, this._api, group, view, { renderer: options.renderer });
|
|
6784
7510
|
panel.init({
|
|
6785
7511
|
title: (_b = options.title) !== null && _b !== void 0 ? _b : options.id,
|
|
6786
7512
|
params: (_c = options === null || options === void 0 ? void 0 : options.params) !== null && _c !== void 0 ? _c : {},
|