dockview-core 1.8.5 → 1.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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 +13 -12
- package/dist/cjs/dnd/droptarget.d.ts.map +1 -1
- package/dist/cjs/dnd/droptarget.js +40 -49
- 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 +23 -10
- package/dist/cjs/dockview/dockviewComponent.d.ts.map +1 -1
- package/dist/cjs/dockview/dockviewComponent.js +305 -115
- 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 +7 -1
- 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 +3 -2
- 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.d.ts.map +1 -1
- package/dist/cjs/resizable.js +16 -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 +966 -229
- 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 +965 -228
- package/dist/dockview-core.amd.noStyle.js.map +1 -1
- package/dist/dockview-core.cjs.js +966 -229
- package/dist/dockview-core.cjs.js.map +1 -1
- package/dist/dockview-core.esm.js +966 -229
- 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 +966 -229
- 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 +965 -228
- 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 +13 -12
- package/dist/esm/dnd/droptarget.d.ts.map +1 -1
- package/dist/esm/dnd/droptarget.js +40 -49
- 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 +23 -10
- package/dist/esm/dockview/dockviewComponent.d.ts.map +1 -1
- package/dist/esm/dockview/dockviewComponent.js +207 -55
- 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 +7 -1
- 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 +3 -2
- 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.d.ts.map +1 -1
- package/dist/esm/resizable.js +17 -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 +38 -7
- 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.1
|
|
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.dv-drop-target-top.dv-drop-target-small-vertical {\n border-top: 1px solid var(--dv-drag-over-border-color);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.dv-drop-target-bottom.dv-drop-target-small-vertical {\n border-bottom: 1px solid var(--dv-drag-over-border-color);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.dv-drop-target-left.dv-drop-target-small-horizontal {\n border-left: 1px solid var(--dv-drag-over-border-color);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.dv-drop-target-right.dv-drop-target-small-horizontal {\n border-right: 1px solid var(--dv-drag-over-border-color);\n}\n.dv-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 min-height: 0;\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;
|
|
1118
1185
|
for (let i = 0; i < this.viewItems.length; i++) {
|
|
1119
1186
|
const item = this.viewItems[i];
|
|
1120
|
-
|
|
1187
|
+
const proportion = this.proportions[i];
|
|
1188
|
+
if (typeof proportion === 'number') {
|
|
1189
|
+
total += proportion;
|
|
1190
|
+
}
|
|
1191
|
+
else {
|
|
1192
|
+
size -= item.size;
|
|
1193
|
+
}
|
|
1194
|
+
}
|
|
1195
|
+
for (let i = 0; i < this.viewItems.length; i++) {
|
|
1196
|
+
const item = this.viewItems[i];
|
|
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,36 +3070,48 @@
|
|
|
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
|
}
|
|
2901
3114
|
|
|
2902
|
-
function numberOrFallback(maybeNumber, fallback) {
|
|
2903
|
-
return typeof maybeNumber === 'number' ? maybeNumber : fallback;
|
|
2904
|
-
}
|
|
2905
3115
|
function directionToPosition(direction) {
|
|
2906
3116
|
switch (direction) {
|
|
2907
3117
|
case 'above':
|
|
@@ -2934,6 +3144,16 @@
|
|
|
2934
3144
|
throw new Error(`invalid position '${position}'`);
|
|
2935
3145
|
}
|
|
2936
3146
|
}
|
|
3147
|
+
const DEFAULT_ACTIVATION_SIZE = {
|
|
3148
|
+
value: 20,
|
|
3149
|
+
type: 'percentage',
|
|
3150
|
+
};
|
|
3151
|
+
const DEFAULT_SIZE = {
|
|
3152
|
+
value: 50,
|
|
3153
|
+
type: 'percentage',
|
|
3154
|
+
};
|
|
3155
|
+
const SMALL_WIDTH_BOUNDARY = 100;
|
|
3156
|
+
const SMALL_HEIGHT_BOUNDARY = 100;
|
|
2937
3157
|
class Droptarget extends CompositeDisposable {
|
|
2938
3158
|
get state() {
|
|
2939
3159
|
return this._state;
|
|
@@ -2946,7 +3166,7 @@
|
|
|
2946
3166
|
this.onDrop = this._onDrop.event;
|
|
2947
3167
|
// use a set to take advantage of #<set>.has
|
|
2948
3168
|
this._acceptedTargetZonesSet = new Set(this.options.acceptedTargetZones);
|
|
2949
|
-
this.
|
|
3169
|
+
this.dnd = new DragAndDropObserver(this.element, {
|
|
2950
3170
|
onDragEnter: () => undefined,
|
|
2951
3171
|
onDragOver: (e) => {
|
|
2952
3172
|
if (this._acceptedTargetZonesSet.size === 0) {
|
|
@@ -2994,7 +3214,7 @@
|
|
|
2994
3214
|
this.element.append(this.targetElement);
|
|
2995
3215
|
}
|
|
2996
3216
|
this.toggleClasses(quadrant, width, height);
|
|
2997
|
-
this.
|
|
3217
|
+
this._state = quadrant;
|
|
2998
3218
|
},
|
|
2999
3219
|
onDragLeave: () => {
|
|
3000
3220
|
this.removeDropTarget();
|
|
@@ -3013,11 +3233,15 @@
|
|
|
3013
3233
|
this._onDrop.fire({ position: state, nativeEvent: e });
|
|
3014
3234
|
}
|
|
3015
3235
|
},
|
|
3016
|
-
})
|
|
3236
|
+
});
|
|
3237
|
+
this.addDisposables(this._onDrop, this.dnd);
|
|
3017
3238
|
}
|
|
3018
3239
|
setTargetZones(acceptedTargetZones) {
|
|
3019
3240
|
this._acceptedTargetZonesSet = new Set(acceptedTargetZones);
|
|
3020
3241
|
}
|
|
3242
|
+
setOverlayModel(model) {
|
|
3243
|
+
this.options.overlayModel = model;
|
|
3244
|
+
}
|
|
3021
3245
|
dispose() {
|
|
3022
3246
|
this.removeDropTarget();
|
|
3023
3247
|
super.dispose();
|
|
@@ -3029,19 +3253,19 @@
|
|
|
3029
3253
|
event[Droptarget.USED_EVENT_ID] = true;
|
|
3030
3254
|
}
|
|
3031
3255
|
/**
|
|
3032
|
-
* Check is the event has already been used by another instance
|
|
3256
|
+
* Check is the event has already been used by another instance of DropTarget
|
|
3033
3257
|
*/
|
|
3034
3258
|
isAlreadyUsed(event) {
|
|
3035
3259
|
const value = event[Droptarget.USED_EVENT_ID];
|
|
3036
3260
|
return typeof value === 'boolean' && value;
|
|
3037
3261
|
}
|
|
3038
3262
|
toggleClasses(quadrant, width, height) {
|
|
3039
|
-
var _a, _b
|
|
3263
|
+
var _a, _b;
|
|
3040
3264
|
if (!this.overlayElement) {
|
|
3041
3265
|
return;
|
|
3042
3266
|
}
|
|
3043
|
-
const isSmallX = width <
|
|
3044
|
-
const isSmallY = height <
|
|
3267
|
+
const isSmallX = width < SMALL_WIDTH_BOUNDARY;
|
|
3268
|
+
const isSmallY = height < SMALL_HEIGHT_BOUNDARY;
|
|
3045
3269
|
const isLeft = quadrant === 'left';
|
|
3046
3270
|
const isRight = quadrant === 'right';
|
|
3047
3271
|
const isTop = quadrant === 'top';
|
|
@@ -3050,20 +3274,17 @@
|
|
|
3050
3274
|
const leftClass = !isSmallX && isLeft;
|
|
3051
3275
|
const topClass = !isSmallY && isTop;
|
|
3052
3276
|
const bottomClass = !isSmallY && isBottom;
|
|
3053
|
-
let size =
|
|
3054
|
-
|
|
3055
|
-
|
|
3277
|
+
let size = 1;
|
|
3278
|
+
const sizeOptions = (_b = (_a = this.options.overlayModel) === null || _a === void 0 ? void 0 : _a.size) !== null && _b !== void 0 ? _b : DEFAULT_SIZE;
|
|
3279
|
+
if (sizeOptions.type === 'percentage') {
|
|
3280
|
+
size = clamp(sizeOptions.value, 0, 100) / 100;
|
|
3056
3281
|
}
|
|
3057
|
-
|
|
3282
|
+
else {
|
|
3058
3283
|
if (rightClass || leftClass) {
|
|
3059
|
-
size =
|
|
3060
|
-
clamp(0, this.options.overlayModel.size.value, width) /
|
|
3061
|
-
width;
|
|
3284
|
+
size = clamp(0, sizeOptions.value, width) / width;
|
|
3062
3285
|
}
|
|
3063
3286
|
if (topClass || bottomClass) {
|
|
3064
|
-
size =
|
|
3065
|
-
clamp(0, this.options.overlayModel.size.value, height) /
|
|
3066
|
-
height;
|
|
3287
|
+
size = clamp(0, sizeOptions.value, height) / height;
|
|
3067
3288
|
}
|
|
3068
3289
|
}
|
|
3069
3290
|
const translate = (1 - size) / 2;
|
|
@@ -3085,39 +3306,22 @@
|
|
|
3085
3306
|
transform = '';
|
|
3086
3307
|
}
|
|
3087
3308
|
this.overlayElement.style.transform = transform;
|
|
3088
|
-
toggleClass(this.overlayElement, 'small-
|
|
3089
|
-
toggleClass(this.overlayElement, 'small-
|
|
3090
|
-
toggleClass(this.overlayElement, '
|
|
3091
|
-
toggleClass(this.overlayElement, '
|
|
3092
|
-
|
|
3093
|
-
|
|
3094
|
-
|
|
3095
|
-
case 'top':
|
|
3096
|
-
this._state = 'top';
|
|
3097
|
-
break;
|
|
3098
|
-
case 'left':
|
|
3099
|
-
this._state = 'left';
|
|
3100
|
-
break;
|
|
3101
|
-
case 'bottom':
|
|
3102
|
-
this._state = 'bottom';
|
|
3103
|
-
break;
|
|
3104
|
-
case 'right':
|
|
3105
|
-
this._state = 'right';
|
|
3106
|
-
break;
|
|
3107
|
-
case 'center':
|
|
3108
|
-
this._state = 'center';
|
|
3109
|
-
break;
|
|
3110
|
-
}
|
|
3309
|
+
toggleClass(this.overlayElement, 'dv-drop-target-small-vertical', isSmallY);
|
|
3310
|
+
toggleClass(this.overlayElement, 'dv-drop-target-small-horizontal', isSmallX);
|
|
3311
|
+
toggleClass(this.overlayElement, 'dv-drop-target-left', isLeft);
|
|
3312
|
+
toggleClass(this.overlayElement, 'dv-drop-target-right', isRight);
|
|
3313
|
+
toggleClass(this.overlayElement, 'dv-drop-target-top', isTop);
|
|
3314
|
+
toggleClass(this.overlayElement, 'dv-drop-target-bottom', isBottom);
|
|
3315
|
+
toggleClass(this.overlayElement, 'dv-drop-target-center', quadrant === 'center');
|
|
3111
3316
|
}
|
|
3112
3317
|
calculateQuadrant(overlayType, x, y, width, height) {
|
|
3113
|
-
var _a, _b
|
|
3114
|
-
const
|
|
3115
|
-
|
|
3116
|
-
const value = numberOrFallback((_f = (_e = (_d = this.options) === null || _d === void 0 ? void 0 : _d.overlayModel) === null || _e === void 0 ? void 0 : _e.activationSize) === null || _f === void 0 ? void 0 : _f.value, 20);
|
|
3318
|
+
var _a, _b;
|
|
3319
|
+
const activationSizeOptions = (_b = (_a = this.options.overlayModel) === null || _a === void 0 ? void 0 : _a.activationSize) !== null && _b !== void 0 ? _b : DEFAULT_ACTIVATION_SIZE;
|
|
3320
|
+
const isPercentage = activationSizeOptions.type === 'percentage';
|
|
3117
3321
|
if (isPercentage) {
|
|
3118
|
-
return calculateQuadrantAsPercentage(overlayType, x, y, width, height, value);
|
|
3322
|
+
return calculateQuadrantAsPercentage(overlayType, x, y, width, height, activationSizeOptions.value);
|
|
3119
3323
|
}
|
|
3120
|
-
return calculateQuadrantAsPixels(overlayType, x, y, width, height, value);
|
|
3324
|
+
return calculateQuadrantAsPixels(overlayType, x, y, width, height, activationSizeOptions.value);
|
|
3121
3325
|
}
|
|
3122
3326
|
removeDropTarget() {
|
|
3123
3327
|
if (this.targetElement) {
|
|
@@ -3169,12 +3373,22 @@
|
|
|
3169
3373
|
return 'center';
|
|
3170
3374
|
}
|
|
3171
3375
|
|
|
3376
|
+
exports.DockviewDropTargets = void 0;
|
|
3377
|
+
(function (DockviewDropTargets) {
|
|
3378
|
+
DockviewDropTargets[DockviewDropTargets["Tab"] = 0] = "Tab";
|
|
3379
|
+
DockviewDropTargets[DockviewDropTargets["Panel"] = 1] = "Panel";
|
|
3380
|
+
DockviewDropTargets[DockviewDropTargets["TabContainer"] = 2] = "TabContainer";
|
|
3381
|
+
DockviewDropTargets[DockviewDropTargets["Edge"] = 3] = "Edge";
|
|
3382
|
+
})(exports.DockviewDropTargets || (exports.DockviewDropTargets = {}));
|
|
3383
|
+
|
|
3172
3384
|
class ContentContainer extends CompositeDisposable {
|
|
3173
3385
|
get element() {
|
|
3174
3386
|
return this._element;
|
|
3175
3387
|
}
|
|
3176
|
-
constructor() {
|
|
3388
|
+
constructor(accessor, group) {
|
|
3177
3389
|
super();
|
|
3390
|
+
this.accessor = accessor;
|
|
3391
|
+
this.group = group;
|
|
3178
3392
|
this.disposable = new MutableDisposable();
|
|
3179
3393
|
this._onDidFocus = new Emitter();
|
|
3180
3394
|
this.onDidFocus = this._onDidFocus.event;
|
|
@@ -3184,11 +3398,38 @@
|
|
|
3184
3398
|
this._element.className = 'content-container';
|
|
3185
3399
|
this._element.tabIndex = -1;
|
|
3186
3400
|
this.addDisposables(this._onDidFocus, this._onDidBlur);
|
|
3187
|
-
|
|
3188
|
-
|
|
3189
|
-
|
|
3190
|
-
|
|
3191
|
-
|
|
3401
|
+
this.dropTarget = new Droptarget(this.element, {
|
|
3402
|
+
acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],
|
|
3403
|
+
canDisplayOverlay: (event, position) => {
|
|
3404
|
+
if (this.group.locked === 'no-drop-target' ||
|
|
3405
|
+
(this.group.locked && position === 'center')) {
|
|
3406
|
+
return false;
|
|
3407
|
+
}
|
|
3408
|
+
const data = getPanelData();
|
|
3409
|
+
if (!data &&
|
|
3410
|
+
event.shiftKey &&
|
|
3411
|
+
this.group.location !== 'floating') {
|
|
3412
|
+
return false;
|
|
3413
|
+
}
|
|
3414
|
+
if (data && data.viewId === this.accessor.id) {
|
|
3415
|
+
if (data.groupId === this.group.id) {
|
|
3416
|
+
if (position === 'center') {
|
|
3417
|
+
// don't allow to drop on self for center position
|
|
3418
|
+
return false;
|
|
3419
|
+
}
|
|
3420
|
+
if (data.panelId === null) {
|
|
3421
|
+
// don't allow group move to drop anywhere on self
|
|
3422
|
+
return false;
|
|
3423
|
+
}
|
|
3424
|
+
}
|
|
3425
|
+
const groupHasOnePanelAndIsActiveDragElement = this.group.panels.length === 1 &&
|
|
3426
|
+
data.groupId === this.group.id;
|
|
3427
|
+
return !groupHasOnePanelAndIsActiveDragElement;
|
|
3428
|
+
}
|
|
3429
|
+
return this.group.canDisplayOverlay(event, position, exports.DockviewDropTargets.Panel);
|
|
3430
|
+
},
|
|
3431
|
+
});
|
|
3432
|
+
this.addDisposables(this.dropTarget);
|
|
3192
3433
|
}
|
|
3193
3434
|
show() {
|
|
3194
3435
|
this.element.style.display = '';
|
|
@@ -3196,23 +3437,43 @@
|
|
|
3196
3437
|
hide() {
|
|
3197
3438
|
this.element.style.display = 'none';
|
|
3198
3439
|
}
|
|
3199
|
-
|
|
3200
|
-
|
|
3201
|
-
|
|
3202
|
-
|
|
3203
|
-
|
|
3204
|
-
|
|
3205
|
-
|
|
3206
|
-
|
|
3207
|
-
|
|
3208
|
-
this.panel = undefined;
|
|
3440
|
+
renderPanel(panel, options = { asActive: true }) {
|
|
3441
|
+
const doRender = options.asActive ||
|
|
3442
|
+
(this.panel && this.group.isPanelActive(this.panel));
|
|
3443
|
+
if (this.panel &&
|
|
3444
|
+
this.panel.view.content.element.parentElement === this._element) {
|
|
3445
|
+
/**
|
|
3446
|
+
* If the currently attached panel is mounted directly to the content then remove it
|
|
3447
|
+
*/
|
|
3448
|
+
this._element.removeChild(this.panel.view.content.element);
|
|
3209
3449
|
}
|
|
3210
3450
|
this.panel = panel;
|
|
3211
|
-
|
|
3212
|
-
|
|
3213
|
-
|
|
3214
|
-
|
|
3215
|
-
|
|
3451
|
+
let container;
|
|
3452
|
+
switch (panel.api.renderer) {
|
|
3453
|
+
case 'onlyWhenVisibile':
|
|
3454
|
+
this.accessor.overlayRenderContainer.detatch(panel);
|
|
3455
|
+
if (this.panel) {
|
|
3456
|
+
if (doRender) {
|
|
3457
|
+
this._element.appendChild(this.panel.view.content.element);
|
|
3458
|
+
}
|
|
3459
|
+
}
|
|
3460
|
+
container = this._element;
|
|
3461
|
+
break;
|
|
3462
|
+
case 'always':
|
|
3463
|
+
if (panel.view.content.element.parentElement === this._element) {
|
|
3464
|
+
this._element.removeChild(panel.view.content.element);
|
|
3465
|
+
}
|
|
3466
|
+
container = this.accessor.overlayRenderContainer.attach({
|
|
3467
|
+
panel,
|
|
3468
|
+
referenceContainer: this,
|
|
3469
|
+
});
|
|
3470
|
+
break;
|
|
3471
|
+
}
|
|
3472
|
+
if (doRender) {
|
|
3473
|
+
const _onDidFocus = panel.view.content.onDidFocus;
|
|
3474
|
+
const _onDidBlur = panel.view.content.onDidBlur;
|
|
3475
|
+
const focusTracker = trackFocus(container);
|
|
3476
|
+
const disposable = new CompositeDisposable();
|
|
3216
3477
|
disposable.addDisposables(focusTracker, focusTracker.onDidFocus(() => this._onDidFocus.fire()), focusTracker.onDidBlur(() => this._onDidBlur.fire()));
|
|
3217
3478
|
if (_onDidFocus) {
|
|
3218
3479
|
disposable.addDisposables(_onDidFocus(() => this._onDidFocus.fire()));
|
|
@@ -3220,17 +3481,23 @@
|
|
|
3220
3481
|
if (_onDidBlur) {
|
|
3221
3482
|
disposable.addDisposables(_onDidBlur(() => this._onDidBlur.fire()));
|
|
3222
3483
|
}
|
|
3223
|
-
this.
|
|
3484
|
+
this.disposable.value = disposable;
|
|
3485
|
+
}
|
|
3486
|
+
}
|
|
3487
|
+
openPanel(panel) {
|
|
3488
|
+
if (this.panel === panel) {
|
|
3489
|
+
return;
|
|
3224
3490
|
}
|
|
3225
|
-
this.
|
|
3491
|
+
this.renderPanel(panel);
|
|
3226
3492
|
}
|
|
3227
3493
|
layout(_width, _height) {
|
|
3228
3494
|
// noop
|
|
3229
3495
|
}
|
|
3230
3496
|
closePanel() {
|
|
3231
|
-
|
|
3232
|
-
|
|
3233
|
-
|
|
3497
|
+
if (this.panel) {
|
|
3498
|
+
if (this.accessor.options.defaultRenderer === 'onlyWhenVisibile') {
|
|
3499
|
+
this._element.removeChild(this.panel.view.content.element);
|
|
3500
|
+
}
|
|
3234
3501
|
this.panel = undefined;
|
|
3235
3502
|
}
|
|
3236
3503
|
}
|
|
@@ -3240,14 +3507,6 @@
|
|
|
3240
3507
|
}
|
|
3241
3508
|
}
|
|
3242
3509
|
|
|
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
3510
|
class DragHandler extends CompositeDisposable {
|
|
3252
3511
|
constructor(el) {
|
|
3253
3512
|
super();
|
|
@@ -3422,7 +3681,7 @@
|
|
|
3422
3681
|
}, true));
|
|
3423
3682
|
}
|
|
3424
3683
|
isCancelled(_event) {
|
|
3425
|
-
if (this.group.api.
|
|
3684
|
+
if (this.group.api.location === 'floating' && !_event.shiftKey) {
|
|
3426
3685
|
return true;
|
|
3427
3686
|
}
|
|
3428
3687
|
return false;
|
|
@@ -3624,7 +3883,7 @@
|
|
|
3624
3883
|
const isFloatingGroupsEnabled = !this.accessor.options.disableFloatingGroups;
|
|
3625
3884
|
if (isFloatingGroupsEnabled &&
|
|
3626
3885
|
event.shiftKey &&
|
|
3627
|
-
|
|
3886
|
+
this.group.api.location !== 'floating') {
|
|
3628
3887
|
event.preventDefault();
|
|
3629
3888
|
const { top, left } = this.element.getBoundingClientRect();
|
|
3630
3889
|
const { top: rootTop, left: rootLeft } = this.accessor.element.getBoundingClientRect();
|
|
@@ -3689,7 +3948,7 @@
|
|
|
3689
3948
|
}), tab.onChanged((event) => {
|
|
3690
3949
|
var _a;
|
|
3691
3950
|
const isFloatingGroupsEnabled = !this.accessor.options.disableFloatingGroups;
|
|
3692
|
-
const isFloatingWithOnePanel = this.group.api.
|
|
3951
|
+
const isFloatingWithOnePanel = this.group.api.location === 'floating' && this.size === 1;
|
|
3693
3952
|
if (isFloatingGroupsEnabled &&
|
|
3694
3953
|
!isFloatingWithOnePanel &&
|
|
3695
3954
|
event.shiftKey) {
|
|
@@ -3772,15 +4031,37 @@
|
|
|
3772
4031
|
}
|
|
3773
4032
|
return isAncestor(document.activeElement, this.contentContainer.element);
|
|
3774
4033
|
}
|
|
3775
|
-
get
|
|
3776
|
-
return this.
|
|
3777
|
-
}
|
|
3778
|
-
set
|
|
3779
|
-
this.
|
|
3780
|
-
this.
|
|
3781
|
-
toggleClass(this.container, 'dv-groupview-
|
|
3782
|
-
|
|
3783
|
-
|
|
4034
|
+
get location() {
|
|
4035
|
+
return this._location;
|
|
4036
|
+
}
|
|
4037
|
+
set location(value) {
|
|
4038
|
+
this._location = value;
|
|
4039
|
+
toggleClass(this.container, 'dv-groupview-floating', false);
|
|
4040
|
+
toggleClass(this.container, 'dv-groupview-popout', false);
|
|
4041
|
+
switch (value) {
|
|
4042
|
+
case 'grid':
|
|
4043
|
+
this.contentContainer.dropTarget.setTargetZones([
|
|
4044
|
+
'top',
|
|
4045
|
+
'bottom',
|
|
4046
|
+
'left',
|
|
4047
|
+
'right',
|
|
4048
|
+
'center',
|
|
4049
|
+
]);
|
|
4050
|
+
break;
|
|
4051
|
+
case 'floating':
|
|
4052
|
+
this.contentContainer.dropTarget.setTargetZones(['center']);
|
|
4053
|
+
this.contentContainer.dropTarget.setTargetZones(value
|
|
4054
|
+
? ['center']
|
|
4055
|
+
: ['top', 'bottom', 'left', 'right', 'center']);
|
|
4056
|
+
toggleClass(this.container, 'dv-groupview-floating', true);
|
|
4057
|
+
break;
|
|
4058
|
+
case 'popout':
|
|
4059
|
+
this.contentContainer.dropTarget.setTargetZones(['center']);
|
|
4060
|
+
toggleClass(this.container, 'dv-groupview-popout', true);
|
|
4061
|
+
break;
|
|
4062
|
+
}
|
|
4063
|
+
this.groupPanel.api._onDidLocationChange.fire({
|
|
4064
|
+
location: this.location,
|
|
3784
4065
|
});
|
|
3785
4066
|
}
|
|
3786
4067
|
constructor(container, accessor, id, options, groupPanel) {
|
|
@@ -3793,7 +4074,7 @@
|
|
|
3793
4074
|
this.groupPanel = groupPanel;
|
|
3794
4075
|
this._isGroupActive = false;
|
|
3795
4076
|
this._locked = false;
|
|
3796
|
-
this.
|
|
4077
|
+
this._location = 'grid';
|
|
3797
4078
|
this.mostRecentlyUsed = [];
|
|
3798
4079
|
this._onDidChange = new Emitter();
|
|
3799
4080
|
this.onDidChange = this._onDidChange.event;
|
|
@@ -3816,35 +4097,7 @@
|
|
|
3816
4097
|
this.onDidActivePanelChange = this._onDidActivePanelChange.event;
|
|
3817
4098
|
toggleClass(this.container, 'groupview', true);
|
|
3818
4099
|
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
|
-
});
|
|
4100
|
+
this.contentContainer = new ContentContainer(this.accessor, this);
|
|
3848
4101
|
container.append(this.tabsContainer.element, this.contentContainer.element);
|
|
3849
4102
|
this.header.hidden = !!options.hideHeader;
|
|
3850
4103
|
this.locked = (_a = options.locked) !== null && _a !== void 0 ? _a : false;
|
|
@@ -3858,7 +4111,7 @@
|
|
|
3858
4111
|
this.accessor.doSetGroupActive(this.groupPanel, true);
|
|
3859
4112
|
}), this.contentContainer.onDidBlur(() => {
|
|
3860
4113
|
// noop
|
|
3861
|
-
}), this.dropTarget.onDrop((event) => {
|
|
4114
|
+
}), this.contentContainer.dropTarget.onDrop((event) => {
|
|
3862
4115
|
this.handleDropEvent(event.nativeEvent, event.position);
|
|
3863
4116
|
}), this._onMove, this._onDidChange, this._onDidDrop, this._onDidAddPanel, this._onDidRemovePanel, this._onDidActivePanelChange);
|
|
3864
4117
|
}
|
|
@@ -3907,6 +4160,9 @@
|
|
|
3907
4160
|
this.tabsContainer.setPrefixActionsElement(this._prefixHeaderActions.element);
|
|
3908
4161
|
}
|
|
3909
4162
|
}
|
|
4163
|
+
rerender(panel) {
|
|
4164
|
+
this.contentContainer.renderPanel(panel, { asActive: false });
|
|
4165
|
+
}
|
|
3910
4166
|
indexOf(panel) {
|
|
3911
4167
|
return this.tabsContainer.indexOf(panel.id);
|
|
3912
4168
|
}
|
|
@@ -4098,12 +4354,12 @@
|
|
|
4098
4354
|
doAddPanel(panel, index = this.panels.length, skipSetActive = false) {
|
|
4099
4355
|
const existingPanel = this._panels.indexOf(panel);
|
|
4100
4356
|
const hasExistingPanel = existingPanel > -1;
|
|
4357
|
+
this.tabsContainer.show();
|
|
4358
|
+
this.contentContainer.show();
|
|
4101
4359
|
this.tabsContainer.openPanel(panel, index);
|
|
4102
4360
|
if (!skipSetActive) {
|
|
4103
4361
|
this.contentContainer.openPanel(panel);
|
|
4104
4362
|
}
|
|
4105
|
-
this.tabsContainer.show();
|
|
4106
|
-
this.contentContainer.show();
|
|
4107
4363
|
if (hasExistingPanel) {
|
|
4108
4364
|
// TODO - need to ensure ordering hasn't changed and if it has need to re-order this.panels
|
|
4109
4365
|
return;
|
|
@@ -4219,7 +4475,6 @@
|
|
|
4219
4475
|
for (const panel of this.panels) {
|
|
4220
4476
|
panel.dispose();
|
|
4221
4477
|
}
|
|
4222
|
-
this.dropTarget.dispose();
|
|
4223
4478
|
this.tabsContainer.dispose();
|
|
4224
4479
|
this.contentContainer.dispose();
|
|
4225
4480
|
}
|
|
@@ -4258,7 +4513,22 @@
|
|
|
4258
4513
|
if (this.disableResizing) {
|
|
4259
4514
|
return;
|
|
4260
4515
|
}
|
|
4261
|
-
if (!
|
|
4516
|
+
if (!this._element.offsetParent) {
|
|
4517
|
+
/**
|
|
4518
|
+
* offsetParent === null is equivalent to display: none being set on the element or one
|
|
4519
|
+
* of it's parents. In the display: none case the size will become (0, 0) which we do
|
|
4520
|
+
* not want to propagate.
|
|
4521
|
+
*
|
|
4522
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetParent
|
|
4523
|
+
*
|
|
4524
|
+
* You could use checkVisibility() but at the time of writing it's not supported across
|
|
4525
|
+
* all Browsers
|
|
4526
|
+
*
|
|
4527
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/Element/checkVisibility
|
|
4528
|
+
*/
|
|
4529
|
+
return;
|
|
4530
|
+
}
|
|
4531
|
+
if (!isInDocument(this._element)) {
|
|
4262
4532
|
/**
|
|
4263
4533
|
* since the event is dispatched through requestAnimationFrame there is a small chance
|
|
4264
4534
|
* the component is no longer attached to the DOM, if that is the case the dimensions
|
|
@@ -4350,6 +4620,21 @@
|
|
|
4350
4620
|
isVisible(panel) {
|
|
4351
4621
|
return this.gridview.isViewVisible(getGridLocation(panel.element));
|
|
4352
4622
|
}
|
|
4623
|
+
maximizeGroup(panel) {
|
|
4624
|
+
this.gridview.maximizeView(panel);
|
|
4625
|
+
}
|
|
4626
|
+
isMaximizedGroup(panel) {
|
|
4627
|
+
return this.gridview.maximizedView() === panel;
|
|
4628
|
+
}
|
|
4629
|
+
exitMaximizedGroup() {
|
|
4630
|
+
this.gridview.exitMaximizedView();
|
|
4631
|
+
}
|
|
4632
|
+
hasMaximizedGroup() {
|
|
4633
|
+
return this.gridview.hasMaximizedView();
|
|
4634
|
+
}
|
|
4635
|
+
get onDidMaxmizedGroupChange() {
|
|
4636
|
+
return this.gridview.onDidMaxmizedNodeChange;
|
|
4637
|
+
}
|
|
4353
4638
|
doAddGroup(group, location = [0], size) {
|
|
4354
4639
|
this.gridview.addView(group, size !== null && size !== void 0 ? size : exports.Sizing.Distribute, location);
|
|
4355
4640
|
this._onDidAddGroup.fire(group);
|
|
@@ -5126,32 +5411,63 @@
|
|
|
5126
5411
|
}
|
|
5127
5412
|
}
|
|
5128
5413
|
|
|
5414
|
+
// TODO find a better way to initialize and avoid needing null checks
|
|
5415
|
+
const NOT_INITIALIZED_MESSAGE = 'DockviewGroupPanelApiImpl not initialized';
|
|
5129
5416
|
class DockviewGroupPanelApiImpl extends GridviewPanelApiImpl {
|
|
5130
|
-
get
|
|
5417
|
+
get location() {
|
|
5131
5418
|
if (!this._group) {
|
|
5132
|
-
throw new Error(
|
|
5419
|
+
throw new Error(NOT_INITIALIZED_MESSAGE);
|
|
5133
5420
|
}
|
|
5134
|
-
return this._group.model.
|
|
5421
|
+
return this._group.model.location;
|
|
5135
5422
|
}
|
|
5136
5423
|
constructor(id, accessor) {
|
|
5137
5424
|
super(id);
|
|
5138
5425
|
this.accessor = accessor;
|
|
5139
|
-
this.
|
|
5140
|
-
this.
|
|
5141
|
-
this.addDisposables(this.
|
|
5426
|
+
this._onDidLocationChange = new Emitter();
|
|
5427
|
+
this.onDidLocationChange = this._onDidLocationChange.event;
|
|
5428
|
+
this.addDisposables(this._onDidLocationChange);
|
|
5142
5429
|
}
|
|
5143
5430
|
moveTo(options) {
|
|
5144
|
-
var _a;
|
|
5431
|
+
var _a, _b, _c;
|
|
5432
|
+
if (!this._group) {
|
|
5433
|
+
throw new Error(NOT_INITIALIZED_MESSAGE);
|
|
5434
|
+
}
|
|
5435
|
+
const group = (_a = options.group) !== null && _a !== void 0 ? _a : this.accessor.addGroup({
|
|
5436
|
+
direction: positionToDirection((_b = options.position) !== null && _b !== void 0 ? _b : 'right'),
|
|
5437
|
+
});
|
|
5438
|
+
this.accessor.moveGroupOrPanel(group, this._group.id, undefined, options.group ? (_c = options.position) !== null && _c !== void 0 ? _c : 'center' : 'center');
|
|
5439
|
+
}
|
|
5440
|
+
maximize() {
|
|
5441
|
+
if (!this._group) {
|
|
5442
|
+
throw new Error(NOT_INITIALIZED_MESSAGE);
|
|
5443
|
+
}
|
|
5444
|
+
if (this.location !== 'grid') {
|
|
5445
|
+
// only grid groups can be maximized
|
|
5446
|
+
return;
|
|
5447
|
+
}
|
|
5448
|
+
this.accessor.maximizeGroup(this._group);
|
|
5449
|
+
}
|
|
5450
|
+
isMaximized() {
|
|
5145
5451
|
if (!this._group) {
|
|
5146
|
-
throw new Error(
|
|
5452
|
+
throw new Error(NOT_INITIALIZED_MESSAGE);
|
|
5453
|
+
}
|
|
5454
|
+
return this.accessor.isMaximizedGroup(this._group);
|
|
5455
|
+
}
|
|
5456
|
+
exitMaximized() {
|
|
5457
|
+
if (!this._group) {
|
|
5458
|
+
throw new Error(NOT_INITIALIZED_MESSAGE);
|
|
5459
|
+
}
|
|
5460
|
+
if (this.isMaximized()) {
|
|
5461
|
+
this.accessor.exitMaximizedGroup();
|
|
5147
5462
|
}
|
|
5148
|
-
this.accessor.moveGroupOrPanel(options.group, this._group.id, undefined, (_a = options.position) !== null && _a !== void 0 ? _a : 'center');
|
|
5149
5463
|
}
|
|
5150
5464
|
initialize(group) {
|
|
5151
5465
|
this._group = group;
|
|
5152
5466
|
}
|
|
5153
5467
|
}
|
|
5154
5468
|
|
|
5469
|
+
const MINIMUM_DOCKVIEW_GROUP_PANEL_WIDTH = 100;
|
|
5470
|
+
const MINIMUM_DOCKVIEW_GROUP_PANEL_HEIGHT = 100;
|
|
5155
5471
|
class DockviewGroupPanel extends GridviewPanel {
|
|
5156
5472
|
get panels() {
|
|
5157
5473
|
return this._model.panels;
|
|
@@ -5176,8 +5492,8 @@
|
|
|
5176
5492
|
}
|
|
5177
5493
|
constructor(accessor, id, options) {
|
|
5178
5494
|
super(id, 'groupview_default', {
|
|
5179
|
-
minimumHeight:
|
|
5180
|
-
minimumWidth:
|
|
5495
|
+
minimumHeight: MINIMUM_DOCKVIEW_GROUP_PANEL_HEIGHT,
|
|
5496
|
+
minimumWidth: MINIMUM_DOCKVIEW_GROUP_PANEL_WIDTH,
|
|
5181
5497
|
}, new DockviewGroupPanelApiImpl(id, accessor));
|
|
5182
5498
|
this.api.initialize(this); // cannot use 'this' after after 'super' call
|
|
5183
5499
|
this._model = new DockviewGroupPanelModel(this.element, accessor, id, options, this);
|
|
@@ -5231,8 +5547,10 @@
|
|
|
5231
5547
|
return this.panel.title;
|
|
5232
5548
|
}
|
|
5233
5549
|
get isGroupActive() {
|
|
5234
|
-
|
|
5235
|
-
|
|
5550
|
+
return this.group.isActive;
|
|
5551
|
+
}
|
|
5552
|
+
get renderer() {
|
|
5553
|
+
return this.panel.renderer;
|
|
5236
5554
|
}
|
|
5237
5555
|
set group(value) {
|
|
5238
5556
|
const isOldGroupActive = this.isGroupActive;
|
|
@@ -5260,10 +5578,12 @@
|
|
|
5260
5578
|
this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;
|
|
5261
5579
|
this._onDidGroupChange = new Emitter();
|
|
5262
5580
|
this.onDidGroupChange = this._onDidGroupChange.event;
|
|
5581
|
+
this._onDidRendererChange = new Emitter();
|
|
5582
|
+
this.onDidRendererChange = this._onDidRendererChange.event;
|
|
5263
5583
|
this.disposable = new MutableDisposable();
|
|
5264
5584
|
this.initialize(panel);
|
|
5265
5585
|
this._group = group;
|
|
5266
|
-
this.addDisposables(this.disposable, this._onDidTitleChange, this._onDidGroupChange, this._onDidActiveGroupChange);
|
|
5586
|
+
this.addDisposables(this.disposable, this._onDidRendererChange, this._onDidTitleChange, this._onDidGroupChange, this._onDidActiveGroupChange);
|
|
5267
5587
|
}
|
|
5268
5588
|
moveTo(options) {
|
|
5269
5589
|
var _a;
|
|
@@ -5272,9 +5592,21 @@
|
|
|
5272
5592
|
setTitle(title) {
|
|
5273
5593
|
this.panel.setTitle(title);
|
|
5274
5594
|
}
|
|
5595
|
+
setRenderer(renderer) {
|
|
5596
|
+
this.panel.setRenderer(renderer);
|
|
5597
|
+
}
|
|
5275
5598
|
close() {
|
|
5276
5599
|
this.group.model.closePanel(this.panel);
|
|
5277
5600
|
}
|
|
5601
|
+
maximize() {
|
|
5602
|
+
this.group.api.maximize();
|
|
5603
|
+
}
|
|
5604
|
+
isMaximized() {
|
|
5605
|
+
return this.group.api.isMaximized();
|
|
5606
|
+
}
|
|
5607
|
+
exitMaximized() {
|
|
5608
|
+
this.group.api.exitMaximized();
|
|
5609
|
+
}
|
|
5278
5610
|
}
|
|
5279
5611
|
|
|
5280
5612
|
class DockviewPanel extends CompositeDisposable {
|
|
@@ -5287,11 +5619,17 @@
|
|
|
5287
5619
|
get group() {
|
|
5288
5620
|
return this._group;
|
|
5289
5621
|
}
|
|
5290
|
-
|
|
5622
|
+
get renderer() {
|
|
5623
|
+
var _a;
|
|
5624
|
+
return (_a = this._renderer) !== null && _a !== void 0 ? _a : this.accessor.renderer;
|
|
5625
|
+
}
|
|
5626
|
+
constructor(id, accessor, containerApi, group, view, options) {
|
|
5291
5627
|
super();
|
|
5292
5628
|
this.id = id;
|
|
5629
|
+
this.accessor = accessor;
|
|
5293
5630
|
this.containerApi = containerApi;
|
|
5294
5631
|
this.view = view;
|
|
5632
|
+
this._renderer = options.renderer;
|
|
5295
5633
|
this._group = group;
|
|
5296
5634
|
this.api = new DockviewPanelApiImpl(this, this._group, accessor);
|
|
5297
5635
|
this.addDisposables(this.api.onActiveChange(() => {
|
|
@@ -5300,6 +5638,8 @@
|
|
|
5300
5638
|
// forward the resize event to the group since if you want to resize a panel
|
|
5301
5639
|
// you are actually just resizing the panels parent which is the group
|
|
5302
5640
|
this.group.api.setSize(event);
|
|
5641
|
+
}), this.api.onDidRendererChange((event) => {
|
|
5642
|
+
this.group.model.rerender(this);
|
|
5303
5643
|
}));
|
|
5304
5644
|
}
|
|
5305
5645
|
init(params) {
|
|
@@ -5319,6 +5659,7 @@
|
|
|
5319
5659
|
? this._params
|
|
5320
5660
|
: undefined,
|
|
5321
5661
|
title: this.title,
|
|
5662
|
+
renderer: this._renderer,
|
|
5322
5663
|
};
|
|
5323
5664
|
}
|
|
5324
5665
|
setTitle(title) {
|
|
@@ -5334,6 +5675,15 @@
|
|
|
5334
5675
|
this.api._onDidTitleChange.fire({ title });
|
|
5335
5676
|
}
|
|
5336
5677
|
}
|
|
5678
|
+
setRenderer(renderer) {
|
|
5679
|
+
const didChange = renderer !== this.renderer;
|
|
5680
|
+
if (didChange) {
|
|
5681
|
+
this._renderer = renderer;
|
|
5682
|
+
this.api._onDidRendererChange.fire({
|
|
5683
|
+
renderer: renderer,
|
|
5684
|
+
});
|
|
5685
|
+
}
|
|
5686
|
+
}
|
|
5337
5687
|
update(event) {
|
|
5338
5688
|
var _a;
|
|
5339
5689
|
// merge the new parameters with the existing parameters
|
|
@@ -5552,8 +5902,8 @@
|
|
|
5552
5902
|
}
|
|
5553
5903
|
|
|
5554
5904
|
class DefaultDockviewDeserialzier {
|
|
5555
|
-
constructor(
|
|
5556
|
-
this.
|
|
5905
|
+
constructor(accessor) {
|
|
5906
|
+
this.accessor = accessor;
|
|
5557
5907
|
}
|
|
5558
5908
|
fromJSON(panelData, group) {
|
|
5559
5909
|
var _a, _b;
|
|
@@ -5567,8 +5917,10 @@
|
|
|
5567
5917
|
const tabComponent = viewData
|
|
5568
5918
|
? (_b = viewData.tab) === null || _b === void 0 ? void 0 : _b.id
|
|
5569
5919
|
: panelData.tabComponent;
|
|
5570
|
-
const view = new DockviewPanelModel(this.
|
|
5571
|
-
const panel = new DockviewPanel(panelId, this.
|
|
5920
|
+
const view = new DockviewPanelModel(this.accessor, panelId, contentComponent, tabComponent);
|
|
5921
|
+
const panel = new DockviewPanel(panelId, this.accessor, new DockviewApi(this.accessor), group, view, {
|
|
5922
|
+
renderer: panelData.renderer,
|
|
5923
|
+
});
|
|
5572
5924
|
panel.init({
|
|
5573
5925
|
title: title !== null && title !== void 0 ? title : panelId,
|
|
5574
5926
|
params: params !== null && params !== void 0 ? params : {},
|
|
@@ -5948,7 +6300,265 @@
|
|
|
5948
6300
|
}
|
|
5949
6301
|
}
|
|
5950
6302
|
|
|
6303
|
+
class PopoutWindow extends CompositeDisposable {
|
|
6304
|
+
constructor(id, className, options) {
|
|
6305
|
+
super();
|
|
6306
|
+
this.id = id;
|
|
6307
|
+
this.className = className;
|
|
6308
|
+
this.options = options;
|
|
6309
|
+
this._onDidClose = new Emitter();
|
|
6310
|
+
this.onDidClose = this._onDidClose.event;
|
|
6311
|
+
this._window = null;
|
|
6312
|
+
this.addDisposables(this._onDidClose, {
|
|
6313
|
+
dispose: () => {
|
|
6314
|
+
this.close();
|
|
6315
|
+
},
|
|
6316
|
+
});
|
|
6317
|
+
}
|
|
6318
|
+
dimensions() {
|
|
6319
|
+
if (!this._window) {
|
|
6320
|
+
return null;
|
|
6321
|
+
}
|
|
6322
|
+
const left = this._window.value.screenX;
|
|
6323
|
+
const top = this._window.value.screenY;
|
|
6324
|
+
const width = this._window.value.innerWidth;
|
|
6325
|
+
const height = this._window.value.innerHeight;
|
|
6326
|
+
return { top, left, width, height };
|
|
6327
|
+
}
|
|
6328
|
+
close() {
|
|
6329
|
+
if (this._window) {
|
|
6330
|
+
this._window.disposable.dispose();
|
|
6331
|
+
this._window.value.close();
|
|
6332
|
+
this._window = null;
|
|
6333
|
+
}
|
|
6334
|
+
}
|
|
6335
|
+
open(content) {
|
|
6336
|
+
if (this._window) {
|
|
6337
|
+
throw new Error('instance of popout window is already open');
|
|
6338
|
+
}
|
|
6339
|
+
const url = `${this.options.url}`;
|
|
6340
|
+
const features = Object.entries({
|
|
6341
|
+
top: this.options.top,
|
|
6342
|
+
left: this.options.left,
|
|
6343
|
+
width: this.options.width,
|
|
6344
|
+
height: this.options.height,
|
|
6345
|
+
})
|
|
6346
|
+
.map(([key, value]) => `${key}=${value}`)
|
|
6347
|
+
.join(',');
|
|
6348
|
+
// https://developer.mozilla.org/en-US/docs/Web/API/Window/open
|
|
6349
|
+
const externalWindow = window.open(url, this.id, features);
|
|
6350
|
+
if (!externalWindow) {
|
|
6351
|
+
return;
|
|
6352
|
+
}
|
|
6353
|
+
const disposable = new CompositeDisposable();
|
|
6354
|
+
this._window = { value: externalWindow, disposable };
|
|
6355
|
+
const cleanUp = () => {
|
|
6356
|
+
this._onDidClose.fire();
|
|
6357
|
+
this._window = null;
|
|
6358
|
+
};
|
|
6359
|
+
// prevent any default content from loading
|
|
6360
|
+
// externalWindow.document.body.replaceWith(document.createElement('div'));
|
|
6361
|
+
disposable.addDisposables(addDisposableWindowListener(window, 'beforeunload', () => {
|
|
6362
|
+
cleanUp();
|
|
6363
|
+
this.close();
|
|
6364
|
+
}));
|
|
6365
|
+
externalWindow.addEventListener('load', () => {
|
|
6366
|
+
const externalDocument = externalWindow.document;
|
|
6367
|
+
externalDocument.title = document.title;
|
|
6368
|
+
const div = document.createElement('div');
|
|
6369
|
+
div.classList.add('dv-popout-window');
|
|
6370
|
+
div.style.position = 'absolute';
|
|
6371
|
+
div.style.width = '100%';
|
|
6372
|
+
div.style.height = '100%';
|
|
6373
|
+
div.style.top = '0px';
|
|
6374
|
+
div.style.left = '0px';
|
|
6375
|
+
div.classList.add(this.className);
|
|
6376
|
+
div.appendChild(content);
|
|
6377
|
+
externalDocument.body.replaceChildren(div);
|
|
6378
|
+
externalDocument.body.classList.add(this.className);
|
|
6379
|
+
addStyles(externalDocument, window.document.styleSheets);
|
|
6380
|
+
externalWindow.addEventListener('beforeunload', () => {
|
|
6381
|
+
// TODO: indicate external window is closing
|
|
6382
|
+
cleanUp();
|
|
6383
|
+
});
|
|
6384
|
+
});
|
|
6385
|
+
}
|
|
6386
|
+
}
|
|
6387
|
+
|
|
6388
|
+
class DockviewPopoutGroupPanel extends CompositeDisposable {
|
|
6389
|
+
constructor(id, group, options) {
|
|
6390
|
+
var _a;
|
|
6391
|
+
super();
|
|
6392
|
+
this.id = id;
|
|
6393
|
+
this.group = group;
|
|
6394
|
+
this.options = options;
|
|
6395
|
+
this.window = new PopoutWindow(id, (_a = options.className) !== null && _a !== void 0 ? _a : '', {
|
|
6396
|
+
url: this.options.popoutUrl,
|
|
6397
|
+
left: this.options.box.left,
|
|
6398
|
+
top: this.options.box.top,
|
|
6399
|
+
width: this.options.box.width,
|
|
6400
|
+
height: this.options.box.height,
|
|
6401
|
+
});
|
|
6402
|
+
group.model.location = 'popout';
|
|
6403
|
+
this.addDisposables(this.window, {
|
|
6404
|
+
dispose: () => {
|
|
6405
|
+
group.model.location = 'grid';
|
|
6406
|
+
},
|
|
6407
|
+
}, this.window.onDidClose(() => {
|
|
6408
|
+
this.dispose();
|
|
6409
|
+
}));
|
|
6410
|
+
this.window.open(group.element);
|
|
6411
|
+
}
|
|
6412
|
+
}
|
|
6413
|
+
|
|
5951
6414
|
const DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE = 100;
|
|
6415
|
+
const DEFAULT_FLOATING_GROUP_POSITION = { left: 100, top: 100 };
|
|
6416
|
+
|
|
6417
|
+
function createFocusableElement() {
|
|
6418
|
+
const element = document.createElement('div');
|
|
6419
|
+
element.tabIndex = -1;
|
|
6420
|
+
return element;
|
|
6421
|
+
}
|
|
6422
|
+
class OverlayRenderContainer extends CompositeDisposable {
|
|
6423
|
+
constructor(element) {
|
|
6424
|
+
super();
|
|
6425
|
+
this.element = element;
|
|
6426
|
+
this.map = {};
|
|
6427
|
+
this.addDisposables(Disposable.from(() => {
|
|
6428
|
+
for (const value of Object.values(this.map)) {
|
|
6429
|
+
value.disposable.dispose();
|
|
6430
|
+
value.destroy.dispose();
|
|
6431
|
+
}
|
|
6432
|
+
}));
|
|
6433
|
+
}
|
|
6434
|
+
detatch(panel) {
|
|
6435
|
+
if (this.map[panel.api.id]) {
|
|
6436
|
+
const { disposable, destroy } = this.map[panel.api.id];
|
|
6437
|
+
disposable.dispose();
|
|
6438
|
+
destroy.dispose();
|
|
6439
|
+
delete this.map[panel.api.id];
|
|
6440
|
+
return true;
|
|
6441
|
+
}
|
|
6442
|
+
return false;
|
|
6443
|
+
}
|
|
6444
|
+
attach(options) {
|
|
6445
|
+
const { panel, referenceContainer } = options;
|
|
6446
|
+
if (!this.map[panel.api.id]) {
|
|
6447
|
+
const element = createFocusableElement();
|
|
6448
|
+
element.className = 'dv-render-overlay';
|
|
6449
|
+
this.map[panel.api.id] = {
|
|
6450
|
+
panel,
|
|
6451
|
+
disposable: Disposable.NONE,
|
|
6452
|
+
destroy: Disposable.NONE,
|
|
6453
|
+
element,
|
|
6454
|
+
};
|
|
6455
|
+
}
|
|
6456
|
+
const focusContainer = this.map[panel.api.id].element;
|
|
6457
|
+
if (panel.view.content.element.parentElement !== focusContainer) {
|
|
6458
|
+
focusContainer.appendChild(panel.view.content.element);
|
|
6459
|
+
}
|
|
6460
|
+
if (focusContainer.parentElement !== this.element) {
|
|
6461
|
+
this.element.appendChild(focusContainer);
|
|
6462
|
+
}
|
|
6463
|
+
const resize = () => {
|
|
6464
|
+
// TODO propagate position to avoid getDomNodePagePosition calls, possible performance bottleneck?
|
|
6465
|
+
const box = getDomNodePagePosition(referenceContainer.element);
|
|
6466
|
+
const box2 = getDomNodePagePosition(this.element);
|
|
6467
|
+
focusContainer.style.left = `${box.left - box2.left}px`;
|
|
6468
|
+
focusContainer.style.top = `${box.top - box2.top}px`;
|
|
6469
|
+
focusContainer.style.width = `${box.width}px`;
|
|
6470
|
+
focusContainer.style.height = `${box.height}px`;
|
|
6471
|
+
toggleClass(focusContainer, 'dv-render-overlay-float', panel.group.api.location === 'floating');
|
|
6472
|
+
};
|
|
6473
|
+
const visibilityChanged = () => {
|
|
6474
|
+
if (panel.api.isVisible) {
|
|
6475
|
+
resize();
|
|
6476
|
+
}
|
|
6477
|
+
focusContainer.style.display = panel.api.isVisible ? '' : 'none';
|
|
6478
|
+
};
|
|
6479
|
+
const disposable = new CompositeDisposable(
|
|
6480
|
+
/**
|
|
6481
|
+
* since container is positioned absoutely we must explicitly forward
|
|
6482
|
+
* the dnd events for the expect behaviours to continue to occur in terms of dnd
|
|
6483
|
+
*
|
|
6484
|
+
* the dnd observer does not need to be conditional on whether the panel is visible since
|
|
6485
|
+
* non-visible panels are 'display: none' and in such case the dnd observer will not fire.
|
|
6486
|
+
*/
|
|
6487
|
+
new DragAndDropObserver(focusContainer, {
|
|
6488
|
+
onDragEnd: (e) => {
|
|
6489
|
+
referenceContainer.dropTarget.dnd.onDragEnd(e);
|
|
6490
|
+
},
|
|
6491
|
+
onDragEnter: (e) => {
|
|
6492
|
+
referenceContainer.dropTarget.dnd.onDragEnter(e);
|
|
6493
|
+
},
|
|
6494
|
+
onDragLeave: (e) => {
|
|
6495
|
+
referenceContainer.dropTarget.dnd.onDragLeave(e);
|
|
6496
|
+
},
|
|
6497
|
+
onDrop: (e) => {
|
|
6498
|
+
referenceContainer.dropTarget.dnd.onDrop(e);
|
|
6499
|
+
},
|
|
6500
|
+
onDragOver: (e) => {
|
|
6501
|
+
referenceContainer.dropTarget.dnd.onDragOver(e);
|
|
6502
|
+
},
|
|
6503
|
+
}), panel.api.onDidVisibilityChange((event) => {
|
|
6504
|
+
/**
|
|
6505
|
+
* Control the visibility of the content, however even when not visible (display: none)
|
|
6506
|
+
* the content is still maintained within the DOM hence DOM specific attributes
|
|
6507
|
+
* such as scroll position are maintained when next made visible.
|
|
6508
|
+
*/
|
|
6509
|
+
visibilityChanged();
|
|
6510
|
+
}), panel.api.onDidDimensionsChange(() => {
|
|
6511
|
+
if (!panel.api.isVisible) {
|
|
6512
|
+
return;
|
|
6513
|
+
}
|
|
6514
|
+
resize();
|
|
6515
|
+
}));
|
|
6516
|
+
this.map[panel.api.id].destroy = Disposable.from(() => {
|
|
6517
|
+
focusContainer.removeChild(panel.view.content.element);
|
|
6518
|
+
this.element.removeChild(focusContainer);
|
|
6519
|
+
});
|
|
6520
|
+
queueMicrotask(() => {
|
|
6521
|
+
if (this.isDisposed) {
|
|
6522
|
+
return;
|
|
6523
|
+
}
|
|
6524
|
+
/**
|
|
6525
|
+
* wait until everything has finished in the current stack-frame call before
|
|
6526
|
+
* calling the first resize as other size-altering events may still occur before
|
|
6527
|
+
* the end of the stack-frame.
|
|
6528
|
+
*/
|
|
6529
|
+
visibilityChanged();
|
|
6530
|
+
});
|
|
6531
|
+
// dispose of logic asoccciated with previous reference-container
|
|
6532
|
+
this.map[panel.api.id].disposable.dispose();
|
|
6533
|
+
// and reset the disposable to the active reference-container
|
|
6534
|
+
this.map[panel.api.id].disposable = disposable;
|
|
6535
|
+
return focusContainer;
|
|
6536
|
+
}
|
|
6537
|
+
}
|
|
6538
|
+
|
|
6539
|
+
const DEFAULT_ROOT_OVERLAY_MODEL = {
|
|
6540
|
+
activationSize: { type: 'pixels', value: 10 },
|
|
6541
|
+
size: { type: 'pixels', value: 20 },
|
|
6542
|
+
};
|
|
6543
|
+
function getTheme(element) {
|
|
6544
|
+
function toClassList(element) {
|
|
6545
|
+
const list = [];
|
|
6546
|
+
for (let i = 0; i < element.classList.length; i++) {
|
|
6547
|
+
list.push(element.classList.item(i));
|
|
6548
|
+
}
|
|
6549
|
+
return list;
|
|
6550
|
+
}
|
|
6551
|
+
let theme = undefined;
|
|
6552
|
+
let parent = element;
|
|
6553
|
+
while (parent !== null) {
|
|
6554
|
+
theme = toClassList(parent).find((cls) => cls.startsWith('dockview-theme-'));
|
|
6555
|
+
if (typeof theme === 'string') {
|
|
6556
|
+
break;
|
|
6557
|
+
}
|
|
6558
|
+
parent = parent.parentElement;
|
|
6559
|
+
}
|
|
6560
|
+
return theme;
|
|
6561
|
+
}
|
|
5952
6562
|
class DockviewComponent extends BaseGrid {
|
|
5953
6563
|
get orientation() {
|
|
5954
6564
|
return this.gridview.orientation;
|
|
@@ -5969,8 +6579,12 @@
|
|
|
5969
6579
|
}
|
|
5970
6580
|
return activeGroup.activePanel;
|
|
5971
6581
|
}
|
|
5972
|
-
|
|
6582
|
+
get renderer() {
|
|
5973
6583
|
var _a;
|
|
6584
|
+
return (_a = this.options.defaultRenderer) !== null && _a !== void 0 ? _a : 'onlyWhenVisibile';
|
|
6585
|
+
}
|
|
6586
|
+
constructor(options) {
|
|
6587
|
+
var _a, _b;
|
|
5974
6588
|
super({
|
|
5975
6589
|
proportionalLayout: true,
|
|
5976
6590
|
orientation: (_a = options.orientation) !== null && _a !== void 0 ? _a : exports.Orientation.HORIZONTAL,
|
|
@@ -5995,12 +6609,27 @@
|
|
|
5995
6609
|
this.onDidLayoutFromJSON = this._onDidLayoutFromJSON.event;
|
|
5996
6610
|
this._onDidActivePanelChange = new Emitter();
|
|
5997
6611
|
this.onDidActivePanelChange = this._onDidActivePanelChange.event;
|
|
5998
|
-
this.
|
|
6612
|
+
this._floatingGroups = [];
|
|
6613
|
+
this._popoutGroups = [];
|
|
6614
|
+
const gready = document.createElement('div');
|
|
6615
|
+
gready.className = 'dv-overlay-render-container';
|
|
6616
|
+
this.gridview.element.appendChild(gready);
|
|
6617
|
+
this.overlayRenderContainer = new OverlayRenderContainer(gready);
|
|
5999
6618
|
toggleClass(this.gridview.element, 'dv-dockview', true);
|
|
6000
|
-
|
|
6619
|
+
toggleClass(this.element, 'dv-debug', !!options.debug);
|
|
6620
|
+
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
6621
|
this.updateWatermark();
|
|
6002
6622
|
}), exports.DockviewEvent.any(this.onDidAddPanel, this.onDidRemovePanel, this.onDidActivePanelChange)(() => {
|
|
6003
6623
|
this._bufferOnDidLayoutChange.fire();
|
|
6624
|
+
}), Disposable.from(() => {
|
|
6625
|
+
// iterate over a copy of the array since .dispose() mutates the original array
|
|
6626
|
+
for (const group of [...this._floatingGroups]) {
|
|
6627
|
+
group.dispose();
|
|
6628
|
+
}
|
|
6629
|
+
// iterate over a copy of the array since .dispose() mutates the original array
|
|
6630
|
+
for (const group of [...this._popoutGroups]) {
|
|
6631
|
+
group.dispose();
|
|
6632
|
+
}
|
|
6004
6633
|
}));
|
|
6005
6634
|
this._options = options;
|
|
6006
6635
|
if (!this.options.components) {
|
|
@@ -6019,7 +6648,7 @@
|
|
|
6019
6648
|
!this.options.watermarkFrameworkComponent) {
|
|
6020
6649
|
this.options.watermarkComponent = Watermark;
|
|
6021
6650
|
}
|
|
6022
|
-
|
|
6651
|
+
this._rootDropTarget = new Droptarget(this.element, {
|
|
6023
6652
|
canDisplayOverlay: (event, position) => {
|
|
6024
6653
|
const data = getPanelData();
|
|
6025
6654
|
if (data) {
|
|
@@ -6052,12 +6681,9 @@
|
|
|
6052
6681
|
return false;
|
|
6053
6682
|
},
|
|
6054
6683
|
acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],
|
|
6055
|
-
overlayModel:
|
|
6056
|
-
activationSize: { type: 'pixels', value: 10 },
|
|
6057
|
-
size: { type: 'pixels', value: 20 },
|
|
6058
|
-
},
|
|
6684
|
+
overlayModel: (_b = this.options.rootOverlayModel) !== null && _b !== void 0 ? _b : DEFAULT_ROOT_OVERLAY_MODEL,
|
|
6059
6685
|
});
|
|
6060
|
-
this.addDisposables(
|
|
6686
|
+
this.addDisposables(this._rootDropTarget.onDrop((event) => {
|
|
6061
6687
|
var _a;
|
|
6062
6688
|
const data = getPanelData();
|
|
6063
6689
|
if (data) {
|
|
@@ -6066,10 +6692,59 @@
|
|
|
6066
6692
|
else {
|
|
6067
6693
|
this._onDidDrop.fire(Object.assign(Object.assign({}, event), { api: this._api, group: null, getData: getPanelData }));
|
|
6068
6694
|
}
|
|
6069
|
-
}),
|
|
6695
|
+
}), this._rootDropTarget);
|
|
6070
6696
|
this._api = new DockviewApi(this);
|
|
6071
6697
|
this.updateWatermark();
|
|
6072
6698
|
}
|
|
6699
|
+
addPopoutGroup(item, options) {
|
|
6700
|
+
var _a;
|
|
6701
|
+
let group;
|
|
6702
|
+
let box = options === null || options === void 0 ? void 0 : options.position;
|
|
6703
|
+
if (item instanceof DockviewPanel) {
|
|
6704
|
+
group = this.createGroup();
|
|
6705
|
+
this.removePanel(item, {
|
|
6706
|
+
removeEmptyGroup: true,
|
|
6707
|
+
skipDispose: true,
|
|
6708
|
+
});
|
|
6709
|
+
group.model.openPanel(item);
|
|
6710
|
+
if (!box) {
|
|
6711
|
+
box = this.element.getBoundingClientRect();
|
|
6712
|
+
}
|
|
6713
|
+
}
|
|
6714
|
+
else {
|
|
6715
|
+
group = item;
|
|
6716
|
+
if (!box) {
|
|
6717
|
+
box = group.element.getBoundingClientRect();
|
|
6718
|
+
}
|
|
6719
|
+
const skip = typeof (options === null || options === void 0 ? void 0 : options.skipRemoveGroup) === 'boolean' &&
|
|
6720
|
+
options.skipRemoveGroup;
|
|
6721
|
+
if (!skip) {
|
|
6722
|
+
this.doRemoveGroup(item, { skipDispose: true });
|
|
6723
|
+
}
|
|
6724
|
+
}
|
|
6725
|
+
const theme = getTheme(this.gridview.element);
|
|
6726
|
+
const popoutWindow = new DockviewPopoutGroupPanel(`${this.id}-${group.id}`, // globally unique within dockview
|
|
6727
|
+
group, {
|
|
6728
|
+
className: theme !== null && theme !== void 0 ? theme : '',
|
|
6729
|
+
popoutUrl: (_a = options === null || options === void 0 ? void 0 : options.popoutUrl) !== null && _a !== void 0 ? _a : '/popout.html',
|
|
6730
|
+
box: {
|
|
6731
|
+
left: window.screenX + box.left,
|
|
6732
|
+
top: window.screenY + box.top,
|
|
6733
|
+
width: box.width,
|
|
6734
|
+
height: box.height,
|
|
6735
|
+
},
|
|
6736
|
+
});
|
|
6737
|
+
popoutWindow.addDisposables({
|
|
6738
|
+
dispose: () => {
|
|
6739
|
+
remove(this._popoutGroups, popoutWindow);
|
|
6740
|
+
this.updateWatermark();
|
|
6741
|
+
},
|
|
6742
|
+
}, popoutWindow.window.onDidClose(() => {
|
|
6743
|
+
this.doAddGroup(group, [0]);
|
|
6744
|
+
}));
|
|
6745
|
+
this._popoutGroups.push(popoutWindow);
|
|
6746
|
+
this.updateWatermark();
|
|
6747
|
+
}
|
|
6073
6748
|
addFloatingGroup(item, coord, options) {
|
|
6074
6749
|
var _a, _b, _c, _d, _e, _f;
|
|
6075
6750
|
let group;
|
|
@@ -6089,9 +6764,13 @@
|
|
|
6089
6764
|
this.doRemoveGroup(item, { skipDispose: true });
|
|
6090
6765
|
}
|
|
6091
6766
|
}
|
|
6092
|
-
group.model.
|
|
6093
|
-
const overlayLeft = typeof (coord === null || coord === void 0 ? void 0 : coord.x) === 'number'
|
|
6094
|
-
|
|
6767
|
+
group.model.location = 'floating';
|
|
6768
|
+
const overlayLeft = typeof (coord === null || coord === void 0 ? void 0 : coord.x) === 'number'
|
|
6769
|
+
? Math.max(coord.x, 0)
|
|
6770
|
+
: DEFAULT_FLOATING_GROUP_POSITION.left;
|
|
6771
|
+
const overlayTop = typeof (coord === null || coord === void 0 ? void 0 : coord.y) === 'number'
|
|
6772
|
+
? Math.max(coord.y, 0)
|
|
6773
|
+
: DEFAULT_FLOATING_GROUP_POSITION.top;
|
|
6095
6774
|
const overlay = new Overlay({
|
|
6096
6775
|
container: this.gridview.element,
|
|
6097
6776
|
content: group.element,
|
|
@@ -6135,12 +6814,12 @@
|
|
|
6135
6814
|
}), {
|
|
6136
6815
|
dispose: () => {
|
|
6137
6816
|
disposable.dispose();
|
|
6138
|
-
group.model.
|
|
6139
|
-
remove(this.
|
|
6817
|
+
group.model.location = 'grid';
|
|
6818
|
+
remove(this._floatingGroups, floatingGroupPanel);
|
|
6140
6819
|
this.updateWatermark();
|
|
6141
6820
|
},
|
|
6142
6821
|
});
|
|
6143
|
-
this.
|
|
6822
|
+
this._floatingGroups.push(floatingGroupPanel);
|
|
6144
6823
|
this.updateWatermark();
|
|
6145
6824
|
}
|
|
6146
6825
|
orthogonalize(position) {
|
|
@@ -6176,16 +6855,18 @@
|
|
|
6176
6855
|
}
|
|
6177
6856
|
updateOptions(options) {
|
|
6178
6857
|
var _a, _b;
|
|
6179
|
-
const
|
|
6858
|
+
const changed_orientation = typeof options.orientation === 'string' &&
|
|
6180
6859
|
this.gridview.orientation !== options.orientation;
|
|
6181
|
-
const
|
|
6860
|
+
const changed_floatingGroupBounds = options.floatingGroupBounds !== undefined &&
|
|
6182
6861
|
options.floatingGroupBounds !== this.options.floatingGroupBounds;
|
|
6862
|
+
const changed_rootOverlayOptions = options.rootOverlayModel !== undefined &&
|
|
6863
|
+
options.rootOverlayModel !== this.options.rootOverlayModel;
|
|
6183
6864
|
this._options = Object.assign(Object.assign({}, this.options), options);
|
|
6184
|
-
if (
|
|
6865
|
+
if (changed_orientation) {
|
|
6185
6866
|
this.gridview.orientation = options.orientation;
|
|
6186
6867
|
}
|
|
6187
|
-
if (
|
|
6188
|
-
for (const group of this.
|
|
6868
|
+
if (changed_floatingGroupBounds) {
|
|
6869
|
+
for (const group of this._floatingGroups) {
|
|
6189
6870
|
switch (this.options.floatingGroupBounds) {
|
|
6190
6871
|
case 'boundedWithinViewport':
|
|
6191
6872
|
group.overlay.minimumInViewportHeight = undefined;
|
|
@@ -6206,12 +6887,15 @@
|
|
|
6206
6887
|
group.overlay.setBounds({});
|
|
6207
6888
|
}
|
|
6208
6889
|
}
|
|
6890
|
+
if (changed_rootOverlayOptions) {
|
|
6891
|
+
this._rootDropTarget.setOverlayModel(options.rootOverlayModel);
|
|
6892
|
+
}
|
|
6209
6893
|
this.layout(this.gridview.width, this.gridview.height, true);
|
|
6210
6894
|
}
|
|
6211
6895
|
layout(width, height, forceResize) {
|
|
6212
6896
|
super.layout(width, height, forceResize);
|
|
6213
|
-
if (this.
|
|
6214
|
-
for (const floating of this.
|
|
6897
|
+
if (this._floatingGroups) {
|
|
6898
|
+
for (const floating of this._floatingGroups) {
|
|
6215
6899
|
// ensure floting groups stay within visible boundaries
|
|
6216
6900
|
floating.overlay.setBounds();
|
|
6217
6901
|
}
|
|
@@ -6279,10 +6963,16 @@
|
|
|
6279
6963
|
collection[panel.id] = panel.toJSON();
|
|
6280
6964
|
return collection;
|
|
6281
6965
|
}, {});
|
|
6282
|
-
const floats = this.
|
|
6966
|
+
const floats = this._floatingGroups.map((group) => {
|
|
6283
6967
|
return {
|
|
6284
|
-
data:
|
|
6285
|
-
position:
|
|
6968
|
+
data: group.group.toJSON(),
|
|
6969
|
+
position: group.overlay.toJSON(),
|
|
6970
|
+
};
|
|
6971
|
+
});
|
|
6972
|
+
const popoutGroups = this._popoutGroups.map((group) => {
|
|
6973
|
+
return {
|
|
6974
|
+
data: group.group.toJSON(),
|
|
6975
|
+
position: group.window.dimensions(),
|
|
6286
6976
|
};
|
|
6287
6977
|
});
|
|
6288
6978
|
const result = {
|
|
@@ -6293,10 +6983,13 @@
|
|
|
6293
6983
|
if (floats.length > 0) {
|
|
6294
6984
|
result.floatingGroups = floats;
|
|
6295
6985
|
}
|
|
6986
|
+
if (popoutGroups.length > 0) {
|
|
6987
|
+
result.popoutGroups = popoutGroups;
|
|
6988
|
+
}
|
|
6296
6989
|
return result;
|
|
6297
6990
|
}
|
|
6298
6991
|
fromJSON(data) {
|
|
6299
|
-
var _a;
|
|
6992
|
+
var _a, _b;
|
|
6300
6993
|
this.clear();
|
|
6301
6994
|
if (typeof data !== 'object' || data === null) {
|
|
6302
6995
|
throw new Error('serialized layout must be a non-null object');
|
|
@@ -6363,7 +7056,16 @@
|
|
|
6363
7056
|
width: position.width,
|
|
6364
7057
|
}, { skipRemoveGroup: true, inDragMode: false });
|
|
6365
7058
|
}
|
|
6366
|
-
|
|
7059
|
+
const serializedPopoutGroups = (_b = data.popoutGroups) !== null && _b !== void 0 ? _b : [];
|
|
7060
|
+
for (const serializedPopoutGroup of serializedPopoutGroups) {
|
|
7061
|
+
const { data, position } = serializedPopoutGroup;
|
|
7062
|
+
const group = createGroupFromSerializedState(data);
|
|
7063
|
+
this.addPopoutGroup(group, {
|
|
7064
|
+
skipRemoveGroup: true,
|
|
7065
|
+
position: position !== null && position !== void 0 ? position : undefined,
|
|
7066
|
+
});
|
|
7067
|
+
}
|
|
7068
|
+
for (const floatingGroup of this._floatingGroups) {
|
|
6367
7069
|
floatingGroup.overlay.setBounds();
|
|
6368
7070
|
}
|
|
6369
7071
|
if (typeof activeGroup === 'string') {
|
|
@@ -6395,7 +7097,7 @@
|
|
|
6395
7097
|
this._onDidRemoveGroup.fire(group);
|
|
6396
7098
|
}
|
|
6397
7099
|
// iterate over a reassigned array since original array will be modified
|
|
6398
|
-
for (const floatingGroup of [...this.
|
|
7100
|
+
for (const floatingGroup of [...this._floatingGroups]) {
|
|
6399
7101
|
floatingGroup.dispose();
|
|
6400
7102
|
}
|
|
6401
7103
|
// fires clean-up events and clears the underlying HTML gridview.
|
|
@@ -6487,7 +7189,8 @@
|
|
|
6487
7189
|
group.model.openPanel(panel);
|
|
6488
7190
|
this.doSetGroupAndPanelActive(group);
|
|
6489
7191
|
}
|
|
6490
|
-
else if (referenceGroup.api.
|
|
7192
|
+
else if (referenceGroup.api.location === 'floating' ||
|
|
7193
|
+
target === 'center') {
|
|
6491
7194
|
panel = this.createPanel(options, referenceGroup);
|
|
6492
7195
|
referenceGroup.model.openPanel(panel);
|
|
6493
7196
|
}
|
|
@@ -6531,6 +7234,7 @@
|
|
|
6531
7234
|
}
|
|
6532
7235
|
group.model.removePanel(panel);
|
|
6533
7236
|
if (!options.skipDispose) {
|
|
7237
|
+
this.overlayRenderContainer.detatch(panel);
|
|
6534
7238
|
panel.dispose();
|
|
6535
7239
|
}
|
|
6536
7240
|
if (group.size === 0 && options.removeEmptyGroup) {
|
|
@@ -6547,7 +7251,7 @@
|
|
|
6547
7251
|
}
|
|
6548
7252
|
updateWatermark() {
|
|
6549
7253
|
var _a, _b;
|
|
6550
|
-
if (this.groups.filter((x) =>
|
|
7254
|
+
if (this.groups.filter((x) => x.api.location === 'grid').length === 0) {
|
|
6551
7255
|
if (!this.watermark) {
|
|
6552
7256
|
this.watermark = this.createWatermarkComponent();
|
|
6553
7257
|
this.watermark.init({
|
|
@@ -6622,19 +7326,40 @@
|
|
|
6622
7326
|
}
|
|
6623
7327
|
}
|
|
6624
7328
|
doRemoveGroup(group, options) {
|
|
6625
|
-
|
|
6626
|
-
|
|
6627
|
-
if (
|
|
6628
|
-
|
|
6629
|
-
|
|
6630
|
-
|
|
7329
|
+
if (group.api.location === 'floating') {
|
|
7330
|
+
const floatingGroup = this._floatingGroups.find((_) => _.group === group);
|
|
7331
|
+
if (floatingGroup) {
|
|
7332
|
+
if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {
|
|
7333
|
+
floatingGroup.group.dispose();
|
|
7334
|
+
this._groups.delete(group.id);
|
|
7335
|
+
this._onDidRemoveGroup.fire(group);
|
|
7336
|
+
}
|
|
7337
|
+
remove(this._floatingGroups, floatingGroup);
|
|
7338
|
+
floatingGroup.dispose();
|
|
7339
|
+
if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {
|
|
7340
|
+
const groups = Array.from(this._groups.values());
|
|
7341
|
+
this.doSetGroupActive(groups.length > 0 ? groups[0].value : undefined);
|
|
7342
|
+
}
|
|
7343
|
+
return floatingGroup.group;
|
|
6631
7344
|
}
|
|
6632
|
-
|
|
6633
|
-
|
|
6634
|
-
|
|
6635
|
-
|
|
7345
|
+
throw new Error('failed to find floating group');
|
|
7346
|
+
}
|
|
7347
|
+
if (group.api.location === 'popout') {
|
|
7348
|
+
const selectedGroup = this._popoutGroups.find((_) => _.group === group);
|
|
7349
|
+
if (selectedGroup) {
|
|
7350
|
+
if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {
|
|
7351
|
+
selectedGroup.group.dispose();
|
|
7352
|
+
this._groups.delete(group.id);
|
|
7353
|
+
this._onDidRemoveGroup.fire(group);
|
|
7354
|
+
}
|
|
7355
|
+
selectedGroup.dispose();
|
|
7356
|
+
if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {
|
|
7357
|
+
const groups = Array.from(this._groups.values());
|
|
7358
|
+
this.doSetGroupActive(groups.length > 0 ? groups[0].value : undefined);
|
|
7359
|
+
}
|
|
7360
|
+
return selectedGroup.group;
|
|
6636
7361
|
}
|
|
6637
|
-
|
|
7362
|
+
throw new Error('failed to find popout group');
|
|
6638
7363
|
}
|
|
6639
7364
|
return super.doRemoveGroup(group, options);
|
|
6640
7365
|
}
|
|
@@ -6666,8 +7391,7 @@
|
|
|
6666
7391
|
const targetLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, destinationTarget);
|
|
6667
7392
|
if (sourceGroup && sourceGroup.size < 2) {
|
|
6668
7393
|
const [targetParentLocation, to] = tail(targetLocation);
|
|
6669
|
-
|
|
6670
|
-
if (!isFloating) {
|
|
7394
|
+
if (sourceGroup.api.location === 'grid') {
|
|
6671
7395
|
const sourceLocation = getGridLocation(sourceGroup.element);
|
|
6672
7396
|
const [sourceParentLocation, from] = tail(sourceLocation);
|
|
6673
7397
|
if (sequenceEquals(sourceParentLocation, targetParentLocation)) {
|
|
@@ -6713,12 +7437,25 @@
|
|
|
6713
7437
|
}
|
|
6714
7438
|
}
|
|
6715
7439
|
else {
|
|
6716
|
-
|
|
6717
|
-
|
|
6718
|
-
|
|
6719
|
-
|
|
6720
|
-
|
|
6721
|
-
|
|
7440
|
+
switch (sourceGroup.api.location) {
|
|
7441
|
+
case 'grid':
|
|
7442
|
+
this.gridview.removeView(getGridLocation(sourceGroup.element));
|
|
7443
|
+
break;
|
|
7444
|
+
case 'floating': {
|
|
7445
|
+
const selectedFloatingGroup = this._floatingGroups.find((x) => x.group === sourceGroup);
|
|
7446
|
+
if (!selectedFloatingGroup) {
|
|
7447
|
+
throw new Error('failed to find floating group');
|
|
7448
|
+
}
|
|
7449
|
+
selectedFloatingGroup.dispose();
|
|
7450
|
+
break;
|
|
7451
|
+
}
|
|
7452
|
+
case 'popout': {
|
|
7453
|
+
const selectedPopoutGroup = this._popoutGroups.find((x) => x.group === sourceGroup);
|
|
7454
|
+
if (!selectedPopoutGroup) {
|
|
7455
|
+
throw new Error('failed to find popout group');
|
|
7456
|
+
}
|
|
7457
|
+
selectedPopoutGroup.dispose();
|
|
7458
|
+
}
|
|
6722
7459
|
}
|
|
6723
7460
|
const referenceLocation = getGridLocation(referenceGroup.element);
|
|
6724
7461
|
const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, target);
|
|
@@ -6780,7 +7517,7 @@
|
|
|
6780
7517
|
const contentComponent = options.component;
|
|
6781
7518
|
const tabComponent = (_a = options.tabComponent) !== null && _a !== void 0 ? _a : this.options.defaultTabComponent;
|
|
6782
7519
|
const view = new DockviewPanelModel(this, options.id, contentComponent, tabComponent);
|
|
6783
|
-
const panel = new DockviewPanel(options.id, this, this._api, group, view);
|
|
7520
|
+
const panel = new DockviewPanel(options.id, this, this._api, group, view, { renderer: options.renderer });
|
|
6784
7521
|
panel.init({
|
|
6785
7522
|
title: (_b = options.title) !== null && _b !== void 0 ? _b : options.id,
|
|
6786
7523
|
params: (_c = options === null || options === void 0 ? void 0 : options.params) !== null && _c !== void 0 ? _c : {},
|