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
|
@@ -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
|
*/
|
|
@@ -33,7 +33,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
var css_248z = ".dockview-svg {\n display: inline-block;\n fill: currentcolor;\n line-height: 1;\n stroke: currentcolor;\n stroke-width: 0;\n}\n.dockview-theme-dark {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-view-background-color: #1e1e1e;\n --dv-tabs-and-actions-container-background-color: #252526;\n --dv-activegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-activegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-inactivegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-tab-divider-color: #1e1e1e;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: #969696;\n --dv-inactivegroup-visiblepanel-tab-color: #8f8f8f;\n --dv-inactivegroup-hiddenpanel-tab-color: #626262;\n --dv-separator-border: rgb(68, 68, 68);\n --dv-paneview-header-border-color: rgba(204, 204, 204, 0.2);\n}\n\n.dockview-theme-light {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-view-background-color: white;\n --dv-tabs-and-actions-container-background-color: #f3f3f3;\n --dv-activegroup-visiblepanel-tab-background-color: white;\n --dv-activegroup-hiddenpanel-tab-background-color: #ececec;\n --dv-inactivegroup-visiblepanel-tab-background-color: white;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #ececec;\n --dv-tab-divider-color: white;\n --dv-activegroup-visiblepanel-tab-color: rgb(51, 51, 51);\n --dv-activegroup-hiddenpanel-tab-color: rgba(51, 51, 51, 0.7);\n --dv-inactivegroup-visiblepanel-tab-color: rgba(51, 51, 51, 0.7);\n --dv-inactivegroup-hiddenpanel-tab-color: rgba(51, 51, 51, 0.35);\n --dv-separator-border: rgba(128, 128, 128, 0.35);\n --dv-paneview-header-border-color: rgb(51, 51, 51);\n}\n\n.dockview-theme-vs {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-view-background-color: #1e1e1e;\n --dv-tabs-and-actions-container-background-color: #252526;\n --dv-activegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-activegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-inactivegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-tab-divider-color: #1e1e1e;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: #969696;\n --dv-inactivegroup-visiblepanel-tab-color: #8f8f8f;\n --dv-inactivegroup-hiddenpanel-tab-color: #626262;\n --dv-separator-border: rgb(68, 68, 68);\n --dv-paneview-header-border-color: rgba(204, 204, 204, 0.2);\n --dv-tabs-and-actions-container-background-color: #2d2d30;\n --dv-tabs-and-actions-container-height: 20px;\n --dv-tabs-and-actions-container-font-size: 11px;\n --dv-activegroup-visiblepanel-tab-background-color: #007acc;\n --dv-inactivegroup-visiblepanel-tab-background-color: #3f3f46;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: white;\n --dv-inactivegroup-visiblepanel-tab-color: white;\n --dv-inactivegroup-hiddenpanel-tab-color: white;\n}\n.dockview-theme-vs .groupview.active-group > .tabs-and-actions-container {\n box-sizing: content-box;\n border-bottom: 2px solid var(--dv-activegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.active-group > .tabs-and-actions-container .tab.active-tab {\n border-top: 2px solid var(--dv-activegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.active-group > .tabs-and-actions-container .tab.inactive-tab {\n border-top: 2px solid var(--dv-activegroup-hiddenpanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.inactive-group > .tabs-and-actions-container {\n box-sizing: content-box;\n border-bottom: 2px solid var(--dv-inactivegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.inactive-group > .tabs-and-actions-container .tab.active-tab {\n border-top: 2px solid var(--dv-inactivegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.inactive-group > .tabs-and-actions-container .tab.inactive-tab {\n border-top: 2px solid var(--dv-inactivegroup-hiddenpanel-tab-background-color);\n}\n\n.dockview-theme-abyss {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-view-background-color: #000c18;\n --dv-tabs-and-actions-container-background-color: #1c1c2a;\n --dv-activegroup-visiblepanel-tab-background-color: #000c18;\n --dv-activegroup-hiddenpanel-tab-background-color: #10192c;\n --dv-inactivegroup-visiblepanel-tab-background-color: #000c18;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #10192c;\n --dv-tab-divider-color: #2b2b4a;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: rgba(255, 255, 255, 0.5);\n --dv-inactivegroup-visiblepanel-tab-color: rgba(255, 255, 255, 0.5);\n --dv-inactivegroup-hiddenpanel-tab-color: rgba(255, 255, 255, 0.25);\n --dv-separator-border: #2b2b4a;\n --dv-paneview-header-border-color: #2b2b4a;\n --dv-paneview-active-outline-color: #596f99;\n}\n\n.dockview-theme-dracula {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-view-background-color: #282a36;\n --dv-tabs-and-actions-container-background-color: #191a21;\n --dv-activegroup-visiblepanel-tab-background-color: #282a36;\n --dv-activegroup-hiddenpanel-tab-background-color: #21222c;\n --dv-inactivegroup-visiblepanel-tab-background-color: #282a36;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #21222c;\n --dv-tab-divider-color: #191a21;\n --dv-activegroup-visiblepanel-tab-color: rgb(248, 248, 242);\n --dv-activegroup-hiddenpanel-tab-color: rgb(98, 114, 164);\n --dv-inactivegroup-visiblepanel-tab-color: rgba(248, 248, 242, 0.5);\n --dv-inactivegroup-hiddenpanel-tab-color: rgba(98, 114, 164, 0.5);\n --dv-separator-border: #bd93f9;\n --dv-paneview-header-border-color: #bd93f9;\n --dv-paneview-active-outline-color: #6272a4;\n}\n.dockview-theme-dracula .groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n position: relative;\n}\n.dockview-theme-dracula .groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab::after {\n position: absolute;\n left: 0px;\n top: 0px;\n content: \"\";\n width: 100%;\n height: 1px;\n background-color: #94527e;\n z-index: 999;\n}\n.dockview-theme-dracula .groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n position: relative;\n}\n.dockview-theme-dracula .groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab::after {\n position: absolute;\n left: 0px;\n bottom: 0px;\n content: \"\";\n width: 100%;\n height: 1px;\n background-color: #5e3d5a;\n z-index: 999;\n}\n\n.dockview-theme-replit {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-view-background-color: #ebeced;\n --dv-tabs-and-actions-container-background-color: #fcfcfc;\n --dv-activegroup-visiblepanel-tab-background-color: #f0f1f2;\n --dv-activegroup-hiddenpanel-tab-background-color: ##fcfcfc;\n --dv-inactivegroup-visiblepanel-tab-background-color: #f0f1f2;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #fcfcfc;\n --dv-tab-divider-color: transparent;\n --dv-activegroup-visiblepanel-tab-color: rgb(51, 51, 51);\n --dv-activegroup-hiddenpanel-tab-color: rgb(51, 51, 51);\n --dv-inactivegroup-visiblepanel-tab-color: rgb(51, 51, 51);\n --dv-inactivegroup-hiddenpanel-tab-color: rgb(51, 51, 51);\n --dv-separator-border: transparent;\n --dv-paneview-header-border-color: rgb(51, 51, 51);\n --dv-background-color: #ebeced;\n --dv-separator-handle-background-color: #cfd1d3;\n --dv-separator-handle-hover-background-color: #babbbb;\n}\n.dockview-theme-replit.dv-dockview {\n padding: 3px;\n}\n.dockview-theme-replit .view:has(> .groupview) {\n padding: 3px;\n}\n.dockview-theme-replit .dv-resize-container:has(> .groupview) {\n border-radius: 8px;\n}\n.dockview-theme-replit .groupview {\n overflow: hidden;\n border-radius: 10px;\n}\n.dockview-theme-replit .groupview .tabs-and-actions-container {\n border-bottom: 1px solid rgba(128, 128, 128, 0.35);\n}\n.dockview-theme-replit .groupview .tabs-and-actions-container .tab {\n margin: 4px;\n border-radius: 8px;\n}\n.dockview-theme-replit .groupview .tabs-and-actions-container .tab .dockview-svg {\n height: 8px;\n width: 8px;\n}\n.dockview-theme-replit .groupview .tabs-and-actions-container .tab:hover {\n background-color: #e4e5e6 !important;\n}\n.dockview-theme-replit .groupview .content-container {\n background-color: #fcfcfc;\n}\n.dockview-theme-replit .groupview.active-group {\n border: 1px solid rgba(128, 128, 128, 0.35);\n}\n.dockview-theme-replit .groupview.inactive-group {\n border: 1px solid transparent;\n}\n.dockview-theme-replit .vertical > .sash-container > .sash::after {\n content: \"\";\n height: 4px;\n width: 40px;\n border-radius: 2px;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n background-color: var(--dv-separator-handle-background-color);\n position: absolute;\n}\n.dockview-theme-replit .vertical > .sash-container > .sash:hover::after {\n background-color: var(--dv-separator-handle-hover-background-color);\n}\n.dockview-theme-replit .horizontal > .sash-container > .sash::after {\n content: \"\";\n height: 40px;\n width: 4px;\n border-radius: 2px;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n background-color: var(--dv-separator-handle-background-color);\n position: absolute;\n}\n.dockview-theme-replit .horizontal > .sash-container > .sash:hover::after {\n background-color: var(--dv-separator-handle-hover-background-color);\n}\n.drop-target {\n position: relative;\n}\n.drop-target > .drop-target-dropzone {\n position: absolute;\n left: 0px;\n top: 0px;\n height: 100%;\n width: 100%;\n z-index: 1000;\n pointer-events: none;\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection {\n position: relative;\n box-sizing: border-box;\n height: 100%;\n width: 100%;\n background-color: var(--dv-drag-over-background-color);\n transition: top 70ms ease-out, left 70ms ease-out, width 70ms ease-out, height 70ms ease-out, opacity 0.15s ease-out;\n will-change: transform;\n pointer-events: none;\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.small-top {\n border-top: 1px solid var(--dv-drag-over-border-color);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.small-bottom {\n border-bottom: 1px solid var(--dv-drag-over-border-color);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.small-left {\n border-left: 1px solid var(--dv-drag-over-border-color);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.small-right {\n border-right: 1px solid var(--dv-drag-over-border-color);\n}\n.dv-debug .dv-resize-container .dv-resize-handle-top {\n background-color: red;\n}\n.dv-debug .dv-resize-container .dv-resize-handle-bottom {\n background-color: green;\n}\n.dv-debug .dv-resize-container .dv-resize-handle-left {\n background-color: yellow;\n}\n.dv-debug .dv-resize-container .dv-resize-handle-right {\n background-color: blue;\n}\n.dv-debug .dv-resize-container .dv-resize-handle-topleft,\n.dv-debug .dv-resize-container .dv-resize-handle-topright,\n.dv-debug .dv-resize-container .dv-resize-handle-bottomleft,\n.dv-debug .dv-resize-container .dv-resize-handle-bottomright {\n background-color: cyan;\n}\n\n.dv-resize-container {\n position: absolute;\n z-index: 997;\n border: 1px solid var(--dv-tab-divider-color);\n box-shadow: var(--dv-floating-box-shadow);\n}\n.dv-resize-container.dv-bring-to-front {\n z-index: 998;\n}\n.dv-resize-container.dv-resize-container-dragging {\n opacity: 0.5;\n}\n.dv-resize-container .dv-resize-handle-top {\n height: 4px;\n width: calc(100% - 8px);\n left: 4px;\n top: -2px;\n z-index: 999;\n position: absolute;\n cursor: ns-resize;\n}\n.dv-resize-container .dv-resize-handle-bottom {\n height: 4px;\n width: calc(100% - 8px);\n left: 4px;\n bottom: -2px;\n z-index: 999;\n position: absolute;\n cursor: ns-resize;\n}\n.dv-resize-container .dv-resize-handle-left {\n height: calc(100% - 8px);\n width: 4px;\n left: -2px;\n top: 4px;\n z-index: 999;\n position: absolute;\n cursor: ew-resize;\n}\n.dv-resize-container .dv-resize-handle-right {\n height: calc(100% - 8px);\n width: 4px;\n right: -2px;\n top: 4px;\n z-index: 999;\n position: absolute;\n cursor: ew-resize;\n}\n.dv-resize-container .dv-resize-handle-topleft {\n height: 4px;\n width: 4px;\n top: -2px;\n left: -2px;\n z-index: 999;\n position: absolute;\n cursor: nw-resize;\n}\n.dv-resize-container .dv-resize-handle-topright {\n height: 4px;\n width: 4px;\n right: -2px;\n top: -2px;\n z-index: 999;\n position: absolute;\n cursor: ne-resize;\n}\n.dv-resize-container .dv-resize-handle-bottomleft {\n height: 4px;\n width: 4px;\n left: -2px;\n bottom: -2px;\n z-index: 999;\n position: absolute;\n cursor: sw-resize;\n}\n.dv-resize-container .dv-resize-handle-bottomright {\n height: 4px;\n width: 4px;\n right: -2px;\n bottom: -2px;\n z-index: 999;\n position: absolute;\n cursor: se-resize;\n}\n.dv-dockview {\n position: relative;\n background-color: var(--dv-group-view-background-color);\n}\n.dv-dockview .dv-watermark-container {\n position: absolute;\n top: 0px;\n left: 0px;\n height: 100%;\n width: 100%;\n z-index: 1;\n}\n\n.groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n background-color: var(--dv-activegroup-visiblepanel-tab-background-color);\n color: var(--dv-activegroup-visiblepanel-tab-color);\n}\n.groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.inactive-tab {\n background-color: var(--dv-activegroup-hiddenpanel-tab-background-color);\n color: var(--dv-activegroup-hiddenpanel-tab-color);\n}\n.groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n background-color: var(--dv-inactivegroup-visiblepanel-tab-background-color);\n color: var(--dv-inactivegroup-visiblepanel-tab-color);\n}\n.groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.inactive-tab {\n background-color: var(--dv-inactivegroup-hiddenpanel-tab-background-color);\n color: var(--dv-inactivegroup-hiddenpanel-tab-color);\n}\n\n/**\n * when a tab is dragged we lose the above stylings because they are conditional on parent elements\n * therefore we also set some stylings for the dragging event\n **/\n.tab.dv-tab-dragging {\n background-color: var(--dv-activegroup-visiblepanel-tab-background-color);\n color: var(--dv-activegroup-visiblepanel-tab-color);\n}\n.groupview {\n display: flex;\n flex-direction: column;\n height: 100%;\n background-color: var(--dv-group-view-background-color);\n overflow: hidden;\n}\n.groupview:focus {\n outline: none;\n}\n.groupview.empty > .tabs-and-actions-container {\n display: none;\n}\n.groupview > .content-container {\n flex-grow: 1;\n overflow: hidden;\n outline: none;\n}\n.grid-view,\n.branch-node {\n height: 100%;\n width: 100%;\n}\n.pane-container {\n height: 100%;\n width: 100%;\n}\n.pane-container.animated .view {\n transition-duration: 0.15s;\n transition-timing-function: ease-out;\n}\n.pane-container .view {\n overflow: hidden;\n display: flex;\n flex-direction: column;\n padding: 0px !important;\n}\n.pane-container .view:not(:first-child)::before {\n background-color: transparent !important;\n}\n.pane-container .view:not(:first-child) .pane > .pane-header {\n border-top: 1px solid var(--dv-paneview-header-border-color);\n}\n.pane-container .view .default-header {\n background-color: var(--dv-group-view-background-color);\n color: var(--dv-activegroup-visiblepanel-tab-color);\n display: flex;\n padding: 0px 8px;\n cursor: pointer;\n}\n.pane-container .view .default-header .dockview-pane-header-icon {\n display: flex;\n justify-content: center;\n align-items: center;\n}\n.pane-container .view .default-header > span {\n padding-left: 8px;\n flex-grow: 1;\n}\n.pane-container:first-of-type > .pane > .pane-header {\n border-top: none !important;\n}\n.pane-container .pane {\n display: flex;\n flex-direction: column;\n overflow: hidden;\n height: 100%;\n}\n.pane-container .pane .pane-header {\n box-sizing: border-box;\n user-select: none;\n position: relative;\n outline: none;\n}\n.pane-container .pane .pane-header.pane-draggable {\n cursor: pointer;\n}\n.pane-container .pane .pane-header:focus:before, .pane-container .pane .pane-header:focus-within:before {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 5;\n content: \"\";\n pointer-events: none;\n outline: 1px solid;\n outline-width: -1px;\n outline-style: solid;\n outline-offset: -1px;\n outline-color: var(--dv-paneview-active-outline-color);\n}\n.pane-container .pane .pane-body {\n overflow-y: auto;\n overflow-x: hidden;\n flex-grow: 1;\n position: relative;\n outline: none;\n}\n.pane-container .pane .pane-body:focus:before, .pane-container .pane .pane-body:focus-within:before {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 5;\n content: \"\";\n pointer-events: none;\n outline: 1px solid;\n outline-width: -1px;\n outline-style: solid;\n outline-offset: -1px;\n outline-color: var(--dv-paneview-active-outline-color);\n}\n.dv-debug .split-view-container .sash-container .sash.enabled {\n background-color: black;\n}\n.dv-debug .split-view-container .sash-container .sash.disabled {\n background-color: orange;\n}\n.dv-debug .split-view-container .sash-container .sash.maximum {\n background-color: green;\n}\n.dv-debug .split-view-container .sash-container .sash.minimum {\n background-color: red;\n}\n\n.split-view-container {\n position: relative;\n overflow: hidden;\n height: 100%;\n width: 100%;\n}\n.split-view-container.animation .view,\n.split-view-container.animation .sash {\n transition-duration: 0.15s;\n transition-timing-function: ease-out;\n}\n.split-view-container.horizontal {\n height: 100%;\n}\n.split-view-container.horizontal > .sash-container > .sash {\n height: 100%;\n width: 4px;\n}\n.split-view-container.horizontal > .sash-container > .sash.enabled {\n cursor: ew-resize;\n}\n.split-view-container.horizontal > .sash-container > .sash.disabled {\n cursor: default;\n}\n.split-view-container.horizontal > .sash-container > .sash.maximum {\n cursor: w-resize;\n}\n.split-view-container.horizontal > .sash-container > .sash.minimum {\n cursor: e-resize;\n}\n.split-view-container.horizontal > .view-container > .view:not(:first-child)::before {\n height: 100%;\n width: 1px;\n}\n.split-view-container.vertical {\n width: 100%;\n}\n.split-view-container.vertical > .sash-container > .sash {\n width: 100%;\n height: 4px;\n}\n.split-view-container.vertical > .sash-container > .sash.enabled {\n cursor: ns-resize;\n}\n.split-view-container.vertical > .sash-container > .sash.disabled {\n cursor: default;\n}\n.split-view-container.vertical > .sash-container > .sash.maximum {\n cursor: n-resize;\n}\n.split-view-container.vertical > .sash-container > .sash.minimum {\n cursor: s-resize;\n}\n.split-view-container.vertical > .view-container > .view {\n width: 100%;\n}\n.split-view-container.vertical > .view-container > .view:not(:first-child)::before {\n height: 1px;\n width: 100%;\n}\n.split-view-container .sash-container {\n height: 100%;\n width: 100%;\n position: absolute;\n}\n.split-view-container .sash-container .sash {\n position: absolute;\n z-index: 99;\n outline: none;\n user-select: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n touch-action: none;\n}\n.split-view-container .sash-container .sash:active {\n transition: background-color 0.1s ease-in-out;\n background-color: var(--dv-active-sash-color, transparent);\n}\n.split-view-container .sash-container .sash:hover {\n background-color: var(--dv-active-sash-color, transparent);\n transition: background-color 0.1s ease-in-out;\n transition-delay: 0.5s;\n}\n.split-view-container .view-container {\n position: relative;\n height: 100%;\n width: 100%;\n background-color: var(--dv-background-color);\n}\n.split-view-container .view-container .view {\n height: 100%;\n box-sizing: border-box;\n overflow: auto;\n position: absolute;\n}\n.split-view-container.separator-border .view:not(:first-child)::before {\n content: \" \";\n position: absolute;\n top: 0;\n left: 0;\n z-index: 5;\n pointer-events: none;\n background-color: var(--dv-separator-border);\n}\n.dv-dragged {\n transform: translate3d(0px, 0px, 0px); /* forces tab to be drawn on a separate layer (see https://github.com/microsoft/vscode/issues/18733) */\n}\n\n.tab {\n flex-shrink: 0;\n}\n.tab.dv-tab-dragging .tab-action {\n background-color: var(--dv-activegroup-visiblepanel-tab-color);\n}\n.tab.active-tab > .default-tab .tab-action {\n visibility: visible;\n}\n.tab.inactive-tab > .default-tab .tab-action {\n visibility: hidden;\n}\n.tab.inactive-tab > .default-tab:hover .tab-action {\n visibility: visible;\n}\n.tab .default-tab {\n position: relative;\n height: 100%;\n display: flex;\n min-width: 80px;\n align-items: center;\n padding: 0px 8px;\n white-space: nowrap;\n text-overflow: elipsis;\n}\n.tab .default-tab .tab-content {\n padding: 0px 8px;\n flex-grow: 1;\n}\n.tab .default-tab .action-container {\n text-align: right;\n display: flex;\n}\n.tab .default-tab .action-container .tab-list {\n display: flex;\n padding: 0px;\n margin: 0px;\n justify-content: flex-end;\n}\n.tab .default-tab .action-container .tab-list .tab-action {\n padding: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n}\n.tab .default-tab .action-container .tab-list .tab-action:hover {\n border-radius: 2px;\n background-color: var(--dv-icon-hover-background-color);\n}\n.tabs-and-actions-container {\n display: flex;\n background-color: var(--dv-tabs-and-actions-container-background-color);\n flex-shrink: 0;\n box-sizing: border-box;\n height: var(--dv-tabs-and-actions-container-height);\n font-size: var(--dv-tabs-and-actions-container-font-size);\n}\n.tabs-and-actions-container.hidden {\n display: none;\n}\n.tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .tabs-container {\n flex-grow: 1;\n}\n.tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .tabs-container .tab {\n flex-grow: 1;\n}\n.tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .void-container {\n flex-grow: 0;\n}\n.tabs-and-actions-container .void-container {\n display: flex;\n flex-grow: 1;\n cursor: grab;\n}\n.tabs-and-actions-container .tabs-container {\n display: flex;\n overflow-x: overlay;\n overflow-y: hidden;\n scrollbar-width: thin;\n /* Track */\n /* Handle */\n}\n.tabs-and-actions-container .tabs-container::-webkit-scrollbar {\n height: 3px;\n}\n.tabs-and-actions-container .tabs-container::-webkit-scrollbar-track {\n background: transparent;\n}\n.tabs-and-actions-container .tabs-container::-webkit-scrollbar-thumb {\n background: var(--dv-tabs-container-scrollbar-color);\n}\n.tabs-and-actions-container .tabs-container .tab {\n -webkit-user-drag: element;\n outline: none;\n min-width: 75px;\n cursor: pointer;\n position: relative;\n box-sizing: border-box;\n}\n.tabs-and-actions-container .tabs-container .tab:not(:first-child)::before {\n content: \" \";\n position: absolute;\n top: 0;\n left: 0;\n z-index: 5;\n pointer-events: none;\n background-color: var(--dv-tab-divider-color);\n width: 1px;\n height: 100%;\n}\n.watermark {\n display: flex;\n width: 100%;\n}\n.watermark.has-actions .watermark-title .actions-container {\n display: none;\n}\n.watermark .watermark-title {\n height: 35px;\n width: 100%;\n display: flex;\n}\n.watermark .watermark-content {\n flex-grow: 1;\n}\n.watermark .actions-container {\n display: flex;\n align-items: center;\n padding: 0px 8px;\n}\n.watermark .actions-container .close-action {\n padding: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n cursor: pointer;\n color: var(--dv-activegroup-hiddenpanel-tab-color);\n}\n.watermark .actions-container .close-action:hover {\n border-radius: 2px;\n background-color: var(--dv-icon-hover-background-color);\n}";
|
|
36
|
+
var css_248z = ".dv-render-overlay {\n position: absolute;\n z-index: 1;\n height: 100%;\n}\n.dv-render-overlay.dv-render-overlay-float {\n z-index: 999;\n}\n\n.dv-debug .dv-render-overlay {\n outline: 1px solid red;\n outline-offset: -1;\n}\n.dockview-svg {\n display: inline-block;\n fill: currentcolor;\n line-height: 1;\n stroke: currentcolor;\n stroke-width: 0;\n}\n.dockview-theme-dark {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-view-background-color: #1e1e1e;\n --dv-tabs-and-actions-container-background-color: #252526;\n --dv-activegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-activegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-inactivegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-tab-divider-color: #1e1e1e;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: #969696;\n --dv-inactivegroup-visiblepanel-tab-color: #8f8f8f;\n --dv-inactivegroup-hiddenpanel-tab-color: #626262;\n --dv-separator-border: rgb(68, 68, 68);\n --dv-paneview-header-border-color: rgba(204, 204, 204, 0.2);\n}\n\n.dockview-theme-light {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-view-background-color: white;\n --dv-tabs-and-actions-container-background-color: #f3f3f3;\n --dv-activegroup-visiblepanel-tab-background-color: white;\n --dv-activegroup-hiddenpanel-tab-background-color: #ececec;\n --dv-inactivegroup-visiblepanel-tab-background-color: white;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #ececec;\n --dv-tab-divider-color: white;\n --dv-activegroup-visiblepanel-tab-color: rgb(51, 51, 51);\n --dv-activegroup-hiddenpanel-tab-color: rgba(51, 51, 51, 0.7);\n --dv-inactivegroup-visiblepanel-tab-color: rgba(51, 51, 51, 0.7);\n --dv-inactivegroup-hiddenpanel-tab-color: rgba(51, 51, 51, 0.35);\n --dv-separator-border: rgba(128, 128, 128, 0.35);\n --dv-paneview-header-border-color: rgb(51, 51, 51);\n}\n\n.dockview-theme-vs {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-view-background-color: #1e1e1e;\n --dv-tabs-and-actions-container-background-color: #252526;\n --dv-activegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-activegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-inactivegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-tab-divider-color: #1e1e1e;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: #969696;\n --dv-inactivegroup-visiblepanel-tab-color: #8f8f8f;\n --dv-inactivegroup-hiddenpanel-tab-color: #626262;\n --dv-separator-border: rgb(68, 68, 68);\n --dv-paneview-header-border-color: rgba(204, 204, 204, 0.2);\n --dv-tabs-and-actions-container-background-color: #2d2d30;\n --dv-tabs-and-actions-container-height: 20px;\n --dv-tabs-and-actions-container-font-size: 11px;\n --dv-activegroup-visiblepanel-tab-background-color: #007acc;\n --dv-inactivegroup-visiblepanel-tab-background-color: #3f3f46;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: white;\n --dv-inactivegroup-visiblepanel-tab-color: white;\n --dv-inactivegroup-hiddenpanel-tab-color: white;\n}\n.dockview-theme-vs .groupview.active-group > .tabs-and-actions-container {\n box-sizing: content-box;\n border-bottom: 2px solid var(--dv-activegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.active-group > .tabs-and-actions-container .tab.active-tab {\n border-top: 2px solid var(--dv-activegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.active-group > .tabs-and-actions-container .tab.inactive-tab {\n border-top: 2px solid var(--dv-activegroup-hiddenpanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.inactive-group > .tabs-and-actions-container {\n box-sizing: content-box;\n border-bottom: 2px solid var(--dv-inactivegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.inactive-group > .tabs-and-actions-container .tab.active-tab {\n border-top: 2px solid var(--dv-inactivegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.inactive-group > .tabs-and-actions-container .tab.inactive-tab {\n border-top: 2px solid var(--dv-inactivegroup-hiddenpanel-tab-background-color);\n}\n\n.dockview-theme-abyss {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-view-background-color: #000c18;\n --dv-tabs-and-actions-container-background-color: #1c1c2a;\n --dv-activegroup-visiblepanel-tab-background-color: #000c18;\n --dv-activegroup-hiddenpanel-tab-background-color: #10192c;\n --dv-inactivegroup-visiblepanel-tab-background-color: #000c18;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #10192c;\n --dv-tab-divider-color: #2b2b4a;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: rgba(255, 255, 255, 0.5);\n --dv-inactivegroup-visiblepanel-tab-color: rgba(255, 255, 255, 0.5);\n --dv-inactivegroup-hiddenpanel-tab-color: rgba(255, 255, 255, 0.25);\n --dv-separator-border: #2b2b4a;\n --dv-paneview-header-border-color: #2b2b4a;\n --dv-paneview-active-outline-color: #596f99;\n}\n\n.dockview-theme-dracula {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-view-background-color: #282a36;\n --dv-tabs-and-actions-container-background-color: #191a21;\n --dv-activegroup-visiblepanel-tab-background-color: #282a36;\n --dv-activegroup-hiddenpanel-tab-background-color: #21222c;\n --dv-inactivegroup-visiblepanel-tab-background-color: #282a36;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #21222c;\n --dv-tab-divider-color: #191a21;\n --dv-activegroup-visiblepanel-tab-color: rgb(248, 248, 242);\n --dv-activegroup-hiddenpanel-tab-color: rgb(98, 114, 164);\n --dv-inactivegroup-visiblepanel-tab-color: rgba(248, 248, 242, 0.5);\n --dv-inactivegroup-hiddenpanel-tab-color: rgba(98, 114, 164, 0.5);\n --dv-separator-border: #bd93f9;\n --dv-paneview-header-border-color: #bd93f9;\n --dv-paneview-active-outline-color: #6272a4;\n}\n.dockview-theme-dracula .groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n position: relative;\n}\n.dockview-theme-dracula .groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab::after {\n position: absolute;\n left: 0px;\n top: 0px;\n content: \"\";\n width: 100%;\n height: 1px;\n background-color: #94527e;\n z-index: 999;\n}\n.dockview-theme-dracula .groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n position: relative;\n}\n.dockview-theme-dracula .groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab::after {\n position: absolute;\n left: 0px;\n bottom: 0px;\n content: \"\";\n width: 100%;\n height: 1px;\n background-color: #5e3d5a;\n z-index: 999;\n}\n\n.dockview-theme-replit {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-view-background-color: #ebeced;\n --dv-tabs-and-actions-container-background-color: #fcfcfc;\n --dv-activegroup-visiblepanel-tab-background-color: #f0f1f2;\n --dv-activegroup-hiddenpanel-tab-background-color: ##fcfcfc;\n --dv-inactivegroup-visiblepanel-tab-background-color: #f0f1f2;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #fcfcfc;\n --dv-tab-divider-color: transparent;\n --dv-activegroup-visiblepanel-tab-color: rgb(51, 51, 51);\n --dv-activegroup-hiddenpanel-tab-color: rgb(51, 51, 51);\n --dv-inactivegroup-visiblepanel-tab-color: rgb(51, 51, 51);\n --dv-inactivegroup-hiddenpanel-tab-color: rgb(51, 51, 51);\n --dv-separator-border: transparent;\n --dv-paneview-header-border-color: rgb(51, 51, 51);\n --dv-background-color: #ebeced;\n --dv-separator-handle-background-color: #cfd1d3;\n --dv-separator-handle-hover-background-color: #babbbb;\n}\n.dockview-theme-replit.dv-dockview {\n padding: 3px;\n}\n.dockview-theme-replit .view:has(> .groupview) {\n padding: 3px;\n}\n.dockview-theme-replit .dv-resize-container:has(> .groupview) {\n border-radius: 8px;\n}\n.dockview-theme-replit .groupview {\n overflow: hidden;\n border-radius: 10px;\n}\n.dockview-theme-replit .groupview .tabs-and-actions-container {\n border-bottom: 1px solid rgba(128, 128, 128, 0.35);\n}\n.dockview-theme-replit .groupview .tabs-and-actions-container .tab {\n margin: 4px;\n border-radius: 8px;\n}\n.dockview-theme-replit .groupview .tabs-and-actions-container .tab .dockview-svg {\n height: 8px;\n width: 8px;\n}\n.dockview-theme-replit .groupview .tabs-and-actions-container .tab:hover {\n background-color: #e4e5e6 !important;\n}\n.dockview-theme-replit .groupview .content-container {\n background-color: #fcfcfc;\n}\n.dockview-theme-replit .groupview.active-group {\n border: 1px solid rgba(128, 128, 128, 0.35);\n}\n.dockview-theme-replit .groupview.inactive-group {\n border: 1px solid transparent;\n}\n.dockview-theme-replit .vertical > .sash-container > .sash::after {\n content: \"\";\n height: 4px;\n width: 40px;\n border-radius: 2px;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n background-color: var(--dv-separator-handle-background-color);\n position: absolute;\n}\n.dockview-theme-replit .vertical > .sash-container > .sash:hover::after {\n background-color: var(--dv-separator-handle-hover-background-color);\n}\n.dockview-theme-replit .horizontal > .sash-container > .sash::after {\n content: \"\";\n height: 40px;\n width: 4px;\n border-radius: 2px;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n background-color: var(--dv-separator-handle-background-color);\n position: absolute;\n}\n.dockview-theme-replit .horizontal > .sash-container > .sash:hover::after {\n background-color: var(--dv-separator-handle-hover-background-color);\n}\n.drop-target {\n position: relative;\n}\n.drop-target > .drop-target-dropzone {\n position: absolute;\n left: 0px;\n top: 0px;\n height: 100%;\n width: 100%;\n z-index: 1000;\n pointer-events: none;\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection {\n position: relative;\n box-sizing: border-box;\n height: 100%;\n width: 100%;\n background-color: var(--dv-drag-over-background-color);\n transition: top 70ms ease-out, left 70ms ease-out, width 70ms ease-out, height 70ms ease-out, opacity 0.15s ease-out;\n will-change: transform;\n pointer-events: none;\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.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}";
|
|
37
37
|
styleInject(css_248z);
|
|
38
38
|
|
|
39
39
|
class TransferObject {
|
|
@@ -262,6 +262,14 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
262
262
|
// noop
|
|
263
263
|
},
|
|
264
264
|
};
|
|
265
|
+
function from(func) {
|
|
266
|
+
return {
|
|
267
|
+
dispose: () => {
|
|
268
|
+
func();
|
|
269
|
+
},
|
|
270
|
+
};
|
|
271
|
+
}
|
|
272
|
+
Disposable.from = from;
|
|
265
273
|
})(Disposable || (Disposable = {}));
|
|
266
274
|
class CompositeDisposable {
|
|
267
275
|
get isDisposed() {
|
|
@@ -446,6 +454,61 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
446
454
|
function quasiDefaultPrevented(event) {
|
|
447
455
|
return event[QUASI_PREVENT_DEFAULT_KEY];
|
|
448
456
|
}
|
|
457
|
+
function addStyles(document, styleSheetList) {
|
|
458
|
+
const styleSheets = Array.from(styleSheetList);
|
|
459
|
+
for (const styleSheet of styleSheets) {
|
|
460
|
+
if (styleSheet.href) {
|
|
461
|
+
const link = document.createElement('link');
|
|
462
|
+
link.href = styleSheet.href;
|
|
463
|
+
link.type = styleSheet.type;
|
|
464
|
+
link.rel = 'stylesheet';
|
|
465
|
+
document.head.appendChild(link);
|
|
466
|
+
}
|
|
467
|
+
let cssTexts = [];
|
|
468
|
+
try {
|
|
469
|
+
if (styleSheet.cssRules) {
|
|
470
|
+
cssTexts = Array.from(styleSheet.cssRules).map((rule) => rule.cssText);
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
catch (err) {
|
|
474
|
+
// security errors (lack of permissions), ignore
|
|
475
|
+
}
|
|
476
|
+
for (const rule of cssTexts) {
|
|
477
|
+
const style = document.createElement('style');
|
|
478
|
+
style.appendChild(document.createTextNode(rule));
|
|
479
|
+
document.head.appendChild(style);
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
function getDomNodePagePosition(domNode) {
|
|
484
|
+
const { left, top, width, height } = domNode.getBoundingClientRect();
|
|
485
|
+
return {
|
|
486
|
+
left: left + window.scrollX,
|
|
487
|
+
top: top + window.scrollY,
|
|
488
|
+
width: width,
|
|
489
|
+
height: height,
|
|
490
|
+
};
|
|
491
|
+
}
|
|
492
|
+
/**
|
|
493
|
+
* Check whether an element is in the DOM (including the Shadow DOM)
|
|
494
|
+
* @see https://terodox.tech/how-to-tell-if-an-element-is-in-the-dom-including-the-shadow-dom/
|
|
495
|
+
*/
|
|
496
|
+
function isInDocument(element) {
|
|
497
|
+
let currentElement = element;
|
|
498
|
+
while (currentElement === null || currentElement === void 0 ? void 0 : currentElement.parentNode) {
|
|
499
|
+
if (currentElement.parentNode === document) {
|
|
500
|
+
return true;
|
|
501
|
+
}
|
|
502
|
+
else if (currentElement.parentNode instanceof DocumentFragment) {
|
|
503
|
+
// handle shadow DOMs
|
|
504
|
+
currentElement = currentElement.parentNode.host;
|
|
505
|
+
}
|
|
506
|
+
else {
|
|
507
|
+
currentElement = currentElement.parentNode;
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
return false;
|
|
511
|
+
}
|
|
449
512
|
|
|
450
513
|
function tail(arr) {
|
|
451
514
|
if (arr.length === 0) {
|
|
@@ -643,6 +706,9 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
643
706
|
Sizing.Invisible = Invisible;
|
|
644
707
|
})(exports.Sizing || (exports.Sizing = {}));
|
|
645
708
|
class Splitview {
|
|
709
|
+
get contentSize() {
|
|
710
|
+
return this._contentSize;
|
|
711
|
+
}
|
|
646
712
|
get size() {
|
|
647
713
|
return this._size;
|
|
648
714
|
}
|
|
@@ -708,7 +774,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
708
774
|
this.sashes = [];
|
|
709
775
|
this._size = 0;
|
|
710
776
|
this._orthogonalSize = 0;
|
|
711
|
-
this.
|
|
777
|
+
this._contentSize = 0;
|
|
712
778
|
this._proportions = undefined;
|
|
713
779
|
this._startSnappingEnabled = true;
|
|
714
780
|
this._endSnappingEnabled = true;
|
|
@@ -827,7 +893,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
827
893
|
);
|
|
828
894
|
});
|
|
829
895
|
// Initialize content size and proportions for first layout
|
|
830
|
-
this.
|
|
896
|
+
this._contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);
|
|
831
897
|
this.saveProportions();
|
|
832
898
|
}
|
|
833
899
|
}
|
|
@@ -1101,7 +1167,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
1101
1167
|
this.addView(view, sizing, to);
|
|
1102
1168
|
}
|
|
1103
1169
|
layout(size, orthogonalSize) {
|
|
1104
|
-
const previousSize = Math.max(this.size, this.
|
|
1170
|
+
const previousSize = Math.max(this.size, this._contentSize);
|
|
1105
1171
|
this.size = size;
|
|
1106
1172
|
this.orthogonalSize = orthogonalSize;
|
|
1107
1173
|
if (!this.proportions) {
|
|
@@ -1111,9 +1177,23 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
1111
1177
|
this.resize(this.viewItems.length - 1, size - previousSize, undefined, lowPriorityIndexes, highPriorityIndexes);
|
|
1112
1178
|
}
|
|
1113
1179
|
else {
|
|
1180
|
+
let total = 0;
|
|
1114
1181
|
for (let i = 0; i < this.viewItems.length; i++) {
|
|
1115
1182
|
const item = this.viewItems[i];
|
|
1116
|
-
|
|
1183
|
+
const proportion = this.proportions[i];
|
|
1184
|
+
if (typeof proportion === 'number') {
|
|
1185
|
+
total += proportion;
|
|
1186
|
+
}
|
|
1187
|
+
else {
|
|
1188
|
+
size -= item.size;
|
|
1189
|
+
}
|
|
1190
|
+
}
|
|
1191
|
+
for (let i = 0; i < this.viewItems.length; i++) {
|
|
1192
|
+
const item = this.viewItems[i];
|
|
1193
|
+
const proportion = this.proportions[i];
|
|
1194
|
+
if (typeof proportion === 'number' && total > 0) {
|
|
1195
|
+
item.size = clamp(Math.round((proportion * size) / total), item.minimumSize, item.maximumSize);
|
|
1196
|
+
}
|
|
1117
1197
|
}
|
|
1118
1198
|
}
|
|
1119
1199
|
this.distributeEmptySpace();
|
|
@@ -1150,12 +1230,12 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
1150
1230
|
}
|
|
1151
1231
|
}
|
|
1152
1232
|
saveProportions() {
|
|
1153
|
-
if (this.proportionalLayout && this.
|
|
1154
|
-
this._proportions = this.viewItems.map((i) => i.size / this.
|
|
1233
|
+
if (this.proportionalLayout && this._contentSize > 0) {
|
|
1234
|
+
this._proportions = this.viewItems.map((i) => i.visible ? i.size / this._contentSize : undefined);
|
|
1155
1235
|
}
|
|
1156
1236
|
}
|
|
1157
1237
|
layoutViews() {
|
|
1158
|
-
this.
|
|
1238
|
+
this._contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);
|
|
1159
1239
|
let sum = 0;
|
|
1160
1240
|
const x = [];
|
|
1161
1241
|
this.updateSashEnablement();
|
|
@@ -1249,7 +1329,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
1249
1329
|
}
|
|
1250
1330
|
else if (snappedAfter &&
|
|
1251
1331
|
collapsesDown[index] &&
|
|
1252
|
-
(position < this.
|
|
1332
|
+
(position < this._contentSize || this.endSnappingEnabled)) {
|
|
1253
1333
|
this.updateSash(sash, exports.SashState.MAXIMUM);
|
|
1254
1334
|
}
|
|
1255
1335
|
else {
|
|
@@ -1538,7 +1618,6 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
1538
1618
|
setVisible(visible) {
|
|
1539
1619
|
if (this.view.setVisible) {
|
|
1540
1620
|
this.view.setVisible(visible);
|
|
1541
|
-
this._onDidChange.fire({});
|
|
1542
1621
|
}
|
|
1543
1622
|
}
|
|
1544
1623
|
layout(size, orthogonalSize) {
|
|
@@ -1570,10 +1649,14 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
1570
1649
|
get minimumSize() {
|
|
1571
1650
|
return this.children.length === 0
|
|
1572
1651
|
? 0
|
|
1573
|
-
: Math.max(...this.children.map((c) =>
|
|
1652
|
+
: Math.max(...this.children.map((c, index) => this.splitview.isViewVisible(index)
|
|
1653
|
+
? c.minimumOrthogonalSize
|
|
1654
|
+
: 0));
|
|
1574
1655
|
}
|
|
1575
1656
|
get maximumSize() {
|
|
1576
|
-
return Math.min(...this.children.map((c) =>
|
|
1657
|
+
return Math.min(...this.children.map((c, index) => this.splitview.isViewVisible(index)
|
|
1658
|
+
? c.maximumOrthogonalSize
|
|
1659
|
+
: Number.POSITIVE_INFINITY));
|
|
1577
1660
|
}
|
|
1578
1661
|
get minimumOrthogonalSize() {
|
|
1579
1662
|
return this.splitview.minimumSize;
|
|
@@ -1631,6 +1714,8 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
1631
1714
|
this.children = [];
|
|
1632
1715
|
this._onDidChange = new Emitter();
|
|
1633
1716
|
this.onDidChange = this._onDidChange.event;
|
|
1717
|
+
this._onDidVisibilityChange = new Emitter();
|
|
1718
|
+
this.onDidVisibilityChange = this._onDidVisibilityChange.event;
|
|
1634
1719
|
this._orthogonalSize = orthogonalSize;
|
|
1635
1720
|
this._size = size;
|
|
1636
1721
|
this.element = document.createElement('div');
|
|
@@ -1665,7 +1750,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
1665
1750
|
styles,
|
|
1666
1751
|
});
|
|
1667
1752
|
}
|
|
1668
|
-
this.addDisposables(this._onDidChange, this.splitview.onDidSashEnd(() => {
|
|
1753
|
+
this.addDisposables(this._onDidChange, this._onDidVisibilityChange, this.splitview.onDidSashEnd(() => {
|
|
1669
1754
|
this._onDidChange.fire({});
|
|
1670
1755
|
}));
|
|
1671
1756
|
this.setupChildrenEvents();
|
|
@@ -1688,7 +1773,15 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
1688
1773
|
if (this.splitview.isViewVisible(index) === visible) {
|
|
1689
1774
|
return;
|
|
1690
1775
|
}
|
|
1776
|
+
const wereAllChildrenHidden = this.splitview.contentSize === 0;
|
|
1691
1777
|
this.splitview.setViewVisible(index, visible);
|
|
1778
|
+
const areAllChildrenHidden = this.splitview.contentSize === 0;
|
|
1779
|
+
// If all children are hidden then the parent should hide the entire splitview
|
|
1780
|
+
// If the entire splitview is hidden then the parent should show the splitview when a child is shown
|
|
1781
|
+
if ((visible && wereAllChildrenHidden) ||
|
|
1782
|
+
(!visible && areAllChildrenHidden)) {
|
|
1783
|
+
this._onDidVisibilityChange.fire(visible);
|
|
1784
|
+
}
|
|
1692
1785
|
}
|
|
1693
1786
|
moveChild(from, to) {
|
|
1694
1787
|
if (from === to) {
|
|
@@ -1752,13 +1845,20 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
1752
1845
|
}
|
|
1753
1846
|
setupChildrenEvents() {
|
|
1754
1847
|
this._childrenDisposable.dispose();
|
|
1755
|
-
this._childrenDisposable = exports.DockviewEvent.any(...this.children.map((c) => c.onDidChange))((e) => {
|
|
1848
|
+
this._childrenDisposable = new CompositeDisposable(exports.DockviewEvent.any(...this.children.map((c) => c.onDidChange))((e) => {
|
|
1756
1849
|
/**
|
|
1757
1850
|
* indicate a change has occured to allows any re-rendering but don't bubble
|
|
1758
1851
|
* event because that was specific to this branch
|
|
1759
1852
|
*/
|
|
1760
1853
|
this._onDidChange.fire({ size: e.orthogonalSize });
|
|
1761
|
-
})
|
|
1854
|
+
}), ...this.children.map((c, i) => {
|
|
1855
|
+
if (c instanceof BranchNode) {
|
|
1856
|
+
return c.onDidVisibilityChange((visible) => {
|
|
1857
|
+
this.setChildVisible(i, visible);
|
|
1858
|
+
});
|
|
1859
|
+
}
|
|
1860
|
+
return Disposable.NONE;
|
|
1861
|
+
}));
|
|
1762
1862
|
}
|
|
1763
1863
|
dispose() {
|
|
1764
1864
|
this._childrenDisposable.dispose();
|
|
@@ -1919,7 +2019,69 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
1919
2019
|
get maximumHeight() {
|
|
1920
2020
|
return this.root.maximumHeight;
|
|
1921
2021
|
}
|
|
2022
|
+
maximizedView() {
|
|
2023
|
+
var _a;
|
|
2024
|
+
return (_a = this._maximizedNode) === null || _a === void 0 ? void 0 : _a.view;
|
|
2025
|
+
}
|
|
2026
|
+
hasMaximizedView() {
|
|
2027
|
+
return this._maximizedNode !== undefined;
|
|
2028
|
+
}
|
|
2029
|
+
maximizeView(view) {
|
|
2030
|
+
const location = getGridLocation(view.element);
|
|
2031
|
+
const [_, node] = this.getNode(location);
|
|
2032
|
+
if (!(node instanceof LeafNode)) {
|
|
2033
|
+
return;
|
|
2034
|
+
}
|
|
2035
|
+
if (this._maximizedNode === node) {
|
|
2036
|
+
return;
|
|
2037
|
+
}
|
|
2038
|
+
if (this.hasMaximizedView()) {
|
|
2039
|
+
this.exitMaximizedView();
|
|
2040
|
+
}
|
|
2041
|
+
function hideAllViewsBut(parent, exclude) {
|
|
2042
|
+
for (let i = 0; i < parent.children.length; i++) {
|
|
2043
|
+
const child = parent.children[i];
|
|
2044
|
+
if (child instanceof LeafNode) {
|
|
2045
|
+
if (child !== exclude) {
|
|
2046
|
+
parent.setChildVisible(i, false);
|
|
2047
|
+
}
|
|
2048
|
+
}
|
|
2049
|
+
else {
|
|
2050
|
+
hideAllViewsBut(child, exclude);
|
|
2051
|
+
}
|
|
2052
|
+
}
|
|
2053
|
+
}
|
|
2054
|
+
hideAllViewsBut(this.root, node);
|
|
2055
|
+
this._maximizedNode = node;
|
|
2056
|
+
this._onDidMaxmizedNodeChange.fire();
|
|
2057
|
+
}
|
|
2058
|
+
exitMaximizedView() {
|
|
2059
|
+
if (!this._maximizedNode) {
|
|
2060
|
+
return;
|
|
2061
|
+
}
|
|
2062
|
+
function showViewsInReverseOrder(parent) {
|
|
2063
|
+
for (let index = parent.children.length - 1; index >= 0; index--) {
|
|
2064
|
+
const child = parent.children[index];
|
|
2065
|
+
if (child instanceof LeafNode) {
|
|
2066
|
+
parent.setChildVisible(index, true);
|
|
2067
|
+
}
|
|
2068
|
+
else {
|
|
2069
|
+
showViewsInReverseOrder(child);
|
|
2070
|
+
}
|
|
2071
|
+
}
|
|
2072
|
+
}
|
|
2073
|
+
showViewsInReverseOrder(this.root);
|
|
2074
|
+
this._maximizedNode = undefined;
|
|
2075
|
+
this._onDidMaxmizedNodeChange.fire();
|
|
2076
|
+
}
|
|
1922
2077
|
serialize() {
|
|
2078
|
+
if (this.hasMaximizedView()) {
|
|
2079
|
+
/**
|
|
2080
|
+
* do not persist maximized view state but we must first exit any maximized views
|
|
2081
|
+
* before serialization to ensure the correct dimensions are persisted
|
|
2082
|
+
*/
|
|
2083
|
+
this.exitMaximizedView();
|
|
2084
|
+
}
|
|
1923
2085
|
const root = serializeBranchNode(this.getView(), this.orientation);
|
|
1924
2086
|
return {
|
|
1925
2087
|
root,
|
|
@@ -1931,7 +2093,9 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
1931
2093
|
dispose() {
|
|
1932
2094
|
this.disposable.dispose();
|
|
1933
2095
|
this._onDidChange.dispose();
|
|
2096
|
+
this._onDidMaxmizedNodeChange.dispose();
|
|
1934
2097
|
this.root.dispose();
|
|
2098
|
+
this._maximizedNode = undefined;
|
|
1935
2099
|
this.element.remove();
|
|
1936
2100
|
}
|
|
1937
2101
|
clear() {
|
|
@@ -1972,6 +2136,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
1972
2136
|
const oldRoot = this._root;
|
|
1973
2137
|
if (oldRoot) {
|
|
1974
2138
|
oldRoot.dispose();
|
|
2139
|
+
this._maximizedNode = undefined;
|
|
1975
2140
|
this.element.removeChild(oldRoot.element);
|
|
1976
2141
|
}
|
|
1977
2142
|
this._root = root;
|
|
@@ -2058,9 +2223,12 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
2058
2223
|
constructor(proportionalLayout, styles, orientation) {
|
|
2059
2224
|
this.proportionalLayout = proportionalLayout;
|
|
2060
2225
|
this.styles = styles;
|
|
2226
|
+
this._maximizedNode = undefined;
|
|
2061
2227
|
this.disposable = new MutableDisposable();
|
|
2062
2228
|
this._onDidChange = new Emitter();
|
|
2063
2229
|
this.onDidChange = this._onDidChange.event;
|
|
2230
|
+
this._onDidMaxmizedNodeChange = new Emitter();
|
|
2231
|
+
this.onDidMaxmizedNodeChange = this._onDidMaxmizedNodeChange.event;
|
|
2064
2232
|
this.element = document.createElement('div');
|
|
2065
2233
|
this.element.className = 'grid-view';
|
|
2066
2234
|
this.root = new BranchNode(orientation, proportionalLayout, styles, 0, 0);
|
|
@@ -2074,6 +2242,9 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
2074
2242
|
return parent.isChildVisible(index);
|
|
2075
2243
|
}
|
|
2076
2244
|
setViewVisible(location, visible) {
|
|
2245
|
+
if (this.hasMaximizedView()) {
|
|
2246
|
+
this.exitMaximizedView();
|
|
2247
|
+
}
|
|
2077
2248
|
const [rest, index] = tail(location);
|
|
2078
2249
|
const [, parent] = this.getNode(rest);
|
|
2079
2250
|
if (!(parent instanceof BranchNode)) {
|
|
@@ -2082,6 +2253,9 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
2082
2253
|
parent.setChildVisible(index, visible);
|
|
2083
2254
|
}
|
|
2084
2255
|
moveView(parentLocation, from, to) {
|
|
2256
|
+
if (this.hasMaximizedView()) {
|
|
2257
|
+
this.exitMaximizedView();
|
|
2258
|
+
}
|
|
2085
2259
|
const [, parent] = this.getNode(parentLocation);
|
|
2086
2260
|
if (!(parent instanceof BranchNode)) {
|
|
2087
2261
|
throw new Error('Invalid location');
|
|
@@ -2089,6 +2263,9 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
2089
2263
|
parent.moveChild(from, to);
|
|
2090
2264
|
}
|
|
2091
2265
|
addView(view, size, location) {
|
|
2266
|
+
if (this.hasMaximizedView()) {
|
|
2267
|
+
this.exitMaximizedView();
|
|
2268
|
+
}
|
|
2092
2269
|
const [rest, index] = tail(location);
|
|
2093
2270
|
const [pathToParent, parent] = this.getNode(rest);
|
|
2094
2271
|
if (parent instanceof BranchNode) {
|
|
@@ -2121,6 +2298,9 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
2121
2298
|
return this.removeView(location, sizing);
|
|
2122
2299
|
}
|
|
2123
2300
|
removeView(location, sizing) {
|
|
2301
|
+
if (this.hasMaximizedView()) {
|
|
2302
|
+
this.exitMaximizedView();
|
|
2303
|
+
}
|
|
2124
2304
|
const [rest, index] = tail(location);
|
|
2125
2305
|
const [pathToParent, parent] = this.getNode(rest);
|
|
2126
2306
|
if (!(parent instanceof BranchNode)) {
|
|
@@ -2858,6 +3038,24 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
2858
3038
|
moveToPrevious(options) {
|
|
2859
3039
|
this.component.moveToPrevious(options);
|
|
2860
3040
|
}
|
|
3041
|
+
maximizeGroup(panel) {
|
|
3042
|
+
this.component.maximizeGroup(panel.group);
|
|
3043
|
+
}
|
|
3044
|
+
hasMaximizedGroup() {
|
|
3045
|
+
return this.component.hasMaximizedGroup();
|
|
3046
|
+
}
|
|
3047
|
+
exitMaxmizedGroup() {
|
|
3048
|
+
this.component.exitMaximizedGroup();
|
|
3049
|
+
}
|
|
3050
|
+
get onDidMaxmizedGroupChange() {
|
|
3051
|
+
return this.component.onDidMaxmizedGroupChange;
|
|
3052
|
+
}
|
|
3053
|
+
/**
|
|
3054
|
+
* Add a popout group in a new Window
|
|
3055
|
+
*/
|
|
3056
|
+
addPopoutGroup(item, options) {
|
|
3057
|
+
this.component.addPopoutGroup(item, options);
|
|
3058
|
+
}
|
|
2861
3059
|
}
|
|
2862
3060
|
|
|
2863
3061
|
class DragAndDropObserver extends CompositeDisposable {
|
|
@@ -2868,36 +3066,48 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
2868
3066
|
this.target = null;
|
|
2869
3067
|
this.registerListeners();
|
|
2870
3068
|
}
|
|
3069
|
+
onDragEnter(e) {
|
|
3070
|
+
this.target = e.target;
|
|
3071
|
+
this.callbacks.onDragEnter(e);
|
|
3072
|
+
}
|
|
3073
|
+
onDragOver(e) {
|
|
3074
|
+
e.preventDefault(); // needed so that the drop event fires (https://stackoverflow.com/questions/21339924/drop-event-not-firing-in-chrome)
|
|
3075
|
+
if (this.callbacks.onDragOver) {
|
|
3076
|
+
this.callbacks.onDragOver(e);
|
|
3077
|
+
}
|
|
3078
|
+
}
|
|
3079
|
+
onDragLeave(e) {
|
|
3080
|
+
if (this.target === e.target) {
|
|
3081
|
+
this.target = null;
|
|
3082
|
+
this.callbacks.onDragLeave(e);
|
|
3083
|
+
}
|
|
3084
|
+
}
|
|
3085
|
+
onDragEnd(e) {
|
|
3086
|
+
this.target = null;
|
|
3087
|
+
this.callbacks.onDragEnd(e);
|
|
3088
|
+
}
|
|
3089
|
+
onDrop(e) {
|
|
3090
|
+
this.callbacks.onDrop(e);
|
|
3091
|
+
}
|
|
2871
3092
|
registerListeners() {
|
|
2872
3093
|
this.addDisposables(addDisposableListener(this.element, 'dragenter', (e) => {
|
|
2873
|
-
this.
|
|
2874
|
-
this.callbacks.onDragEnter(e);
|
|
3094
|
+
this.onDragEnter(e);
|
|
2875
3095
|
}, true));
|
|
2876
3096
|
this.addDisposables(addDisposableListener(this.element, 'dragover', (e) => {
|
|
2877
|
-
|
|
2878
|
-
if (this.callbacks.onDragOver) {
|
|
2879
|
-
this.callbacks.onDragOver(e);
|
|
2880
|
-
}
|
|
3097
|
+
this.onDragOver(e);
|
|
2881
3098
|
}, true));
|
|
2882
3099
|
this.addDisposables(addDisposableListener(this.element, 'dragleave', (e) => {
|
|
2883
|
-
|
|
2884
|
-
this.target = null;
|
|
2885
|
-
this.callbacks.onDragLeave(e);
|
|
2886
|
-
}
|
|
3100
|
+
this.onDragLeave(e);
|
|
2887
3101
|
}));
|
|
2888
3102
|
this.addDisposables(addDisposableListener(this.element, 'dragend', (e) => {
|
|
2889
|
-
this.
|
|
2890
|
-
this.callbacks.onDragEnd(e);
|
|
3103
|
+
this.onDragEnd(e);
|
|
2891
3104
|
}));
|
|
2892
3105
|
this.addDisposables(addDisposableListener(this.element, 'drop', (e) => {
|
|
2893
|
-
this.
|
|
3106
|
+
this.onDrop(e);
|
|
2894
3107
|
}));
|
|
2895
3108
|
}
|
|
2896
3109
|
}
|
|
2897
3110
|
|
|
2898
|
-
function numberOrFallback(maybeNumber, fallback) {
|
|
2899
|
-
return typeof maybeNumber === 'number' ? maybeNumber : fallback;
|
|
2900
|
-
}
|
|
2901
3111
|
function directionToPosition(direction) {
|
|
2902
3112
|
switch (direction) {
|
|
2903
3113
|
case 'above':
|
|
@@ -2930,6 +3140,16 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
2930
3140
|
throw new Error(`invalid position '${position}'`);
|
|
2931
3141
|
}
|
|
2932
3142
|
}
|
|
3143
|
+
const DEFAULT_ACTIVATION_SIZE = {
|
|
3144
|
+
value: 20,
|
|
3145
|
+
type: 'percentage',
|
|
3146
|
+
};
|
|
3147
|
+
const DEFAULT_SIZE = {
|
|
3148
|
+
value: 50,
|
|
3149
|
+
type: 'percentage',
|
|
3150
|
+
};
|
|
3151
|
+
const SMALL_WIDTH_BOUNDARY = 100;
|
|
3152
|
+
const SMALL_HEIGHT_BOUNDARY = 100;
|
|
2933
3153
|
class Droptarget extends CompositeDisposable {
|
|
2934
3154
|
get state() {
|
|
2935
3155
|
return this._state;
|
|
@@ -2942,7 +3162,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
2942
3162
|
this.onDrop = this._onDrop.event;
|
|
2943
3163
|
// use a set to take advantage of #<set>.has
|
|
2944
3164
|
this._acceptedTargetZonesSet = new Set(this.options.acceptedTargetZones);
|
|
2945
|
-
this.
|
|
3165
|
+
this.dnd = new DragAndDropObserver(this.element, {
|
|
2946
3166
|
onDragEnter: () => undefined,
|
|
2947
3167
|
onDragOver: (e) => {
|
|
2948
3168
|
if (this._acceptedTargetZonesSet.size === 0) {
|
|
@@ -2990,7 +3210,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
2990
3210
|
this.element.append(this.targetElement);
|
|
2991
3211
|
}
|
|
2992
3212
|
this.toggleClasses(quadrant, width, height);
|
|
2993
|
-
this.
|
|
3213
|
+
this._state = quadrant;
|
|
2994
3214
|
},
|
|
2995
3215
|
onDragLeave: () => {
|
|
2996
3216
|
this.removeDropTarget();
|
|
@@ -3009,11 +3229,15 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
3009
3229
|
this._onDrop.fire({ position: state, nativeEvent: e });
|
|
3010
3230
|
}
|
|
3011
3231
|
},
|
|
3012
|
-
})
|
|
3232
|
+
});
|
|
3233
|
+
this.addDisposables(this._onDrop, this.dnd);
|
|
3013
3234
|
}
|
|
3014
3235
|
setTargetZones(acceptedTargetZones) {
|
|
3015
3236
|
this._acceptedTargetZonesSet = new Set(acceptedTargetZones);
|
|
3016
3237
|
}
|
|
3238
|
+
setOverlayModel(model) {
|
|
3239
|
+
this.options.overlayModel = model;
|
|
3240
|
+
}
|
|
3017
3241
|
dispose() {
|
|
3018
3242
|
this.removeDropTarget();
|
|
3019
3243
|
super.dispose();
|
|
@@ -3025,19 +3249,19 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
3025
3249
|
event[Droptarget.USED_EVENT_ID] = true;
|
|
3026
3250
|
}
|
|
3027
3251
|
/**
|
|
3028
|
-
* Check is the event has already been used by another instance
|
|
3252
|
+
* Check is the event has already been used by another instance of DropTarget
|
|
3029
3253
|
*/
|
|
3030
3254
|
isAlreadyUsed(event) {
|
|
3031
3255
|
const value = event[Droptarget.USED_EVENT_ID];
|
|
3032
3256
|
return typeof value === 'boolean' && value;
|
|
3033
3257
|
}
|
|
3034
3258
|
toggleClasses(quadrant, width, height) {
|
|
3035
|
-
var _a, _b
|
|
3259
|
+
var _a, _b;
|
|
3036
3260
|
if (!this.overlayElement) {
|
|
3037
3261
|
return;
|
|
3038
3262
|
}
|
|
3039
|
-
const isSmallX = width <
|
|
3040
|
-
const isSmallY = height <
|
|
3263
|
+
const isSmallX = width < SMALL_WIDTH_BOUNDARY;
|
|
3264
|
+
const isSmallY = height < SMALL_HEIGHT_BOUNDARY;
|
|
3041
3265
|
const isLeft = quadrant === 'left';
|
|
3042
3266
|
const isRight = quadrant === 'right';
|
|
3043
3267
|
const isTop = quadrant === 'top';
|
|
@@ -3046,20 +3270,17 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
3046
3270
|
const leftClass = !isSmallX && isLeft;
|
|
3047
3271
|
const topClass = !isSmallY && isTop;
|
|
3048
3272
|
const bottomClass = !isSmallY && isBottom;
|
|
3049
|
-
let size =
|
|
3050
|
-
|
|
3051
|
-
|
|
3273
|
+
let size = 1;
|
|
3274
|
+
const sizeOptions = (_b = (_a = this.options.overlayModel) === null || _a === void 0 ? void 0 : _a.size) !== null && _b !== void 0 ? _b : DEFAULT_SIZE;
|
|
3275
|
+
if (sizeOptions.type === 'percentage') {
|
|
3276
|
+
size = clamp(sizeOptions.value, 0, 100) / 100;
|
|
3052
3277
|
}
|
|
3053
|
-
|
|
3278
|
+
else {
|
|
3054
3279
|
if (rightClass || leftClass) {
|
|
3055
|
-
size =
|
|
3056
|
-
clamp(0, this.options.overlayModel.size.value, width) /
|
|
3057
|
-
width;
|
|
3280
|
+
size = clamp(0, sizeOptions.value, width) / width;
|
|
3058
3281
|
}
|
|
3059
3282
|
if (topClass || bottomClass) {
|
|
3060
|
-
size =
|
|
3061
|
-
clamp(0, this.options.overlayModel.size.value, height) /
|
|
3062
|
-
height;
|
|
3283
|
+
size = clamp(0, sizeOptions.value, height) / height;
|
|
3063
3284
|
}
|
|
3064
3285
|
}
|
|
3065
3286
|
const translate = (1 - size) / 2;
|
|
@@ -3081,39 +3302,22 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
3081
3302
|
transform = '';
|
|
3082
3303
|
}
|
|
3083
3304
|
this.overlayElement.style.transform = transform;
|
|
3084
|
-
toggleClass(this.overlayElement, 'small-
|
|
3085
|
-
toggleClass(this.overlayElement, 'small-
|
|
3086
|
-
toggleClass(this.overlayElement, '
|
|
3087
|
-
toggleClass(this.overlayElement, '
|
|
3088
|
-
|
|
3089
|
-
|
|
3090
|
-
|
|
3091
|
-
case 'top':
|
|
3092
|
-
this._state = 'top';
|
|
3093
|
-
break;
|
|
3094
|
-
case 'left':
|
|
3095
|
-
this._state = 'left';
|
|
3096
|
-
break;
|
|
3097
|
-
case 'bottom':
|
|
3098
|
-
this._state = 'bottom';
|
|
3099
|
-
break;
|
|
3100
|
-
case 'right':
|
|
3101
|
-
this._state = 'right';
|
|
3102
|
-
break;
|
|
3103
|
-
case 'center':
|
|
3104
|
-
this._state = 'center';
|
|
3105
|
-
break;
|
|
3106
|
-
}
|
|
3305
|
+
toggleClass(this.overlayElement, 'dv-drop-target-small-vertical', isSmallY);
|
|
3306
|
+
toggleClass(this.overlayElement, 'dv-drop-target-small-horizontal', isSmallX);
|
|
3307
|
+
toggleClass(this.overlayElement, 'dv-drop-target-left', isLeft);
|
|
3308
|
+
toggleClass(this.overlayElement, 'dv-drop-target-right', isRight);
|
|
3309
|
+
toggleClass(this.overlayElement, 'dv-drop-target-top', isTop);
|
|
3310
|
+
toggleClass(this.overlayElement, 'dv-drop-target-bottom', isBottom);
|
|
3311
|
+
toggleClass(this.overlayElement, 'dv-drop-target-center', quadrant === 'center');
|
|
3107
3312
|
}
|
|
3108
3313
|
calculateQuadrant(overlayType, x, y, width, height) {
|
|
3109
|
-
var _a, _b
|
|
3110
|
-
const
|
|
3111
|
-
|
|
3112
|
-
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);
|
|
3314
|
+
var _a, _b;
|
|
3315
|
+
const activationSizeOptions = (_b = (_a = this.options.overlayModel) === null || _a === void 0 ? void 0 : _a.activationSize) !== null && _b !== void 0 ? _b : DEFAULT_ACTIVATION_SIZE;
|
|
3316
|
+
const isPercentage = activationSizeOptions.type === 'percentage';
|
|
3113
3317
|
if (isPercentage) {
|
|
3114
|
-
return calculateQuadrantAsPercentage(overlayType, x, y, width, height, value);
|
|
3318
|
+
return calculateQuadrantAsPercentage(overlayType, x, y, width, height, activationSizeOptions.value);
|
|
3115
3319
|
}
|
|
3116
|
-
return calculateQuadrantAsPixels(overlayType, x, y, width, height, value);
|
|
3320
|
+
return calculateQuadrantAsPixels(overlayType, x, y, width, height, activationSizeOptions.value);
|
|
3117
3321
|
}
|
|
3118
3322
|
removeDropTarget() {
|
|
3119
3323
|
if (this.targetElement) {
|
|
@@ -3165,12 +3369,22 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
3165
3369
|
return 'center';
|
|
3166
3370
|
}
|
|
3167
3371
|
|
|
3372
|
+
exports.DockviewDropTargets = void 0;
|
|
3373
|
+
(function (DockviewDropTargets) {
|
|
3374
|
+
DockviewDropTargets[DockviewDropTargets["Tab"] = 0] = "Tab";
|
|
3375
|
+
DockviewDropTargets[DockviewDropTargets["Panel"] = 1] = "Panel";
|
|
3376
|
+
DockviewDropTargets[DockviewDropTargets["TabContainer"] = 2] = "TabContainer";
|
|
3377
|
+
DockviewDropTargets[DockviewDropTargets["Edge"] = 3] = "Edge";
|
|
3378
|
+
})(exports.DockviewDropTargets || (exports.DockviewDropTargets = {}));
|
|
3379
|
+
|
|
3168
3380
|
class ContentContainer extends CompositeDisposable {
|
|
3169
3381
|
get element() {
|
|
3170
3382
|
return this._element;
|
|
3171
3383
|
}
|
|
3172
|
-
constructor() {
|
|
3384
|
+
constructor(accessor, group) {
|
|
3173
3385
|
super();
|
|
3386
|
+
this.accessor = accessor;
|
|
3387
|
+
this.group = group;
|
|
3174
3388
|
this.disposable = new MutableDisposable();
|
|
3175
3389
|
this._onDidFocus = new Emitter();
|
|
3176
3390
|
this.onDidFocus = this._onDidFocus.event;
|
|
@@ -3180,11 +3394,38 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
3180
3394
|
this._element.className = 'content-container';
|
|
3181
3395
|
this._element.tabIndex = -1;
|
|
3182
3396
|
this.addDisposables(this._onDidFocus, this._onDidBlur);
|
|
3183
|
-
|
|
3184
|
-
|
|
3185
|
-
|
|
3186
|
-
|
|
3187
|
-
|
|
3397
|
+
this.dropTarget = new Droptarget(this.element, {
|
|
3398
|
+
acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],
|
|
3399
|
+
canDisplayOverlay: (event, position) => {
|
|
3400
|
+
if (this.group.locked === 'no-drop-target' ||
|
|
3401
|
+
(this.group.locked && position === 'center')) {
|
|
3402
|
+
return false;
|
|
3403
|
+
}
|
|
3404
|
+
const data = getPanelData();
|
|
3405
|
+
if (!data &&
|
|
3406
|
+
event.shiftKey &&
|
|
3407
|
+
this.group.location !== 'floating') {
|
|
3408
|
+
return false;
|
|
3409
|
+
}
|
|
3410
|
+
if (data && data.viewId === this.accessor.id) {
|
|
3411
|
+
if (data.groupId === this.group.id) {
|
|
3412
|
+
if (position === 'center') {
|
|
3413
|
+
// don't allow to drop on self for center position
|
|
3414
|
+
return false;
|
|
3415
|
+
}
|
|
3416
|
+
if (data.panelId === null) {
|
|
3417
|
+
// don't allow group move to drop anywhere on self
|
|
3418
|
+
return false;
|
|
3419
|
+
}
|
|
3420
|
+
}
|
|
3421
|
+
const groupHasOnePanelAndIsActiveDragElement = this.group.panels.length === 1 &&
|
|
3422
|
+
data.groupId === this.group.id;
|
|
3423
|
+
return !groupHasOnePanelAndIsActiveDragElement;
|
|
3424
|
+
}
|
|
3425
|
+
return this.group.canDisplayOverlay(event, position, exports.DockviewDropTargets.Panel);
|
|
3426
|
+
},
|
|
3427
|
+
});
|
|
3428
|
+
this.addDisposables(this.dropTarget);
|
|
3188
3429
|
}
|
|
3189
3430
|
show() {
|
|
3190
3431
|
this.element.style.display = '';
|
|
@@ -3192,23 +3433,43 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
3192
3433
|
hide() {
|
|
3193
3434
|
this.element.style.display = 'none';
|
|
3194
3435
|
}
|
|
3195
|
-
|
|
3196
|
-
|
|
3197
|
-
|
|
3198
|
-
|
|
3199
|
-
|
|
3200
|
-
|
|
3201
|
-
|
|
3202
|
-
|
|
3203
|
-
|
|
3204
|
-
this.panel = undefined;
|
|
3436
|
+
renderPanel(panel, options = { asActive: true }) {
|
|
3437
|
+
const doRender = options.asActive ||
|
|
3438
|
+
(this.panel && this.group.isPanelActive(this.panel));
|
|
3439
|
+
if (this.panel &&
|
|
3440
|
+
this.panel.view.content.element.parentElement === this._element) {
|
|
3441
|
+
/**
|
|
3442
|
+
* If the currently attached panel is mounted directly to the content then remove it
|
|
3443
|
+
*/
|
|
3444
|
+
this._element.removeChild(this.panel.view.content.element);
|
|
3205
3445
|
}
|
|
3206
3446
|
this.panel = panel;
|
|
3207
|
-
|
|
3208
|
-
|
|
3209
|
-
|
|
3210
|
-
|
|
3211
|
-
|
|
3447
|
+
let container;
|
|
3448
|
+
switch (panel.api.renderer) {
|
|
3449
|
+
case 'onlyWhenVisibile':
|
|
3450
|
+
this.accessor.overlayRenderContainer.detatch(panel);
|
|
3451
|
+
if (this.panel) {
|
|
3452
|
+
if (doRender) {
|
|
3453
|
+
this._element.appendChild(this.panel.view.content.element);
|
|
3454
|
+
}
|
|
3455
|
+
}
|
|
3456
|
+
container = this._element;
|
|
3457
|
+
break;
|
|
3458
|
+
case 'always':
|
|
3459
|
+
if (panel.view.content.element.parentElement === this._element) {
|
|
3460
|
+
this._element.removeChild(panel.view.content.element);
|
|
3461
|
+
}
|
|
3462
|
+
container = this.accessor.overlayRenderContainer.attach({
|
|
3463
|
+
panel,
|
|
3464
|
+
referenceContainer: this,
|
|
3465
|
+
});
|
|
3466
|
+
break;
|
|
3467
|
+
}
|
|
3468
|
+
if (doRender) {
|
|
3469
|
+
const _onDidFocus = panel.view.content.onDidFocus;
|
|
3470
|
+
const _onDidBlur = panel.view.content.onDidBlur;
|
|
3471
|
+
const focusTracker = trackFocus(container);
|
|
3472
|
+
const disposable = new CompositeDisposable();
|
|
3212
3473
|
disposable.addDisposables(focusTracker, focusTracker.onDidFocus(() => this._onDidFocus.fire()), focusTracker.onDidBlur(() => this._onDidBlur.fire()));
|
|
3213
3474
|
if (_onDidFocus) {
|
|
3214
3475
|
disposable.addDisposables(_onDidFocus(() => this._onDidFocus.fire()));
|
|
@@ -3216,17 +3477,23 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
3216
3477
|
if (_onDidBlur) {
|
|
3217
3478
|
disposable.addDisposables(_onDidBlur(() => this._onDidBlur.fire()));
|
|
3218
3479
|
}
|
|
3219
|
-
this.
|
|
3480
|
+
this.disposable.value = disposable;
|
|
3481
|
+
}
|
|
3482
|
+
}
|
|
3483
|
+
openPanel(panel) {
|
|
3484
|
+
if (this.panel === panel) {
|
|
3485
|
+
return;
|
|
3220
3486
|
}
|
|
3221
|
-
this.
|
|
3487
|
+
this.renderPanel(panel);
|
|
3222
3488
|
}
|
|
3223
3489
|
layout(_width, _height) {
|
|
3224
3490
|
// noop
|
|
3225
3491
|
}
|
|
3226
3492
|
closePanel() {
|
|
3227
|
-
|
|
3228
|
-
|
|
3229
|
-
|
|
3493
|
+
if (this.panel) {
|
|
3494
|
+
if (this.accessor.options.defaultRenderer === 'onlyWhenVisibile') {
|
|
3495
|
+
this._element.removeChild(this.panel.view.content.element);
|
|
3496
|
+
}
|
|
3230
3497
|
this.panel = undefined;
|
|
3231
3498
|
}
|
|
3232
3499
|
}
|
|
@@ -3236,14 +3503,6 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
3236
3503
|
}
|
|
3237
3504
|
}
|
|
3238
3505
|
|
|
3239
|
-
exports.DockviewDropTargets = void 0;
|
|
3240
|
-
(function (DockviewDropTargets) {
|
|
3241
|
-
DockviewDropTargets[DockviewDropTargets["Tab"] = 0] = "Tab";
|
|
3242
|
-
DockviewDropTargets[DockviewDropTargets["Panel"] = 1] = "Panel";
|
|
3243
|
-
DockviewDropTargets[DockviewDropTargets["TabContainer"] = 2] = "TabContainer";
|
|
3244
|
-
DockviewDropTargets[DockviewDropTargets["Edge"] = 3] = "Edge";
|
|
3245
|
-
})(exports.DockviewDropTargets || (exports.DockviewDropTargets = {}));
|
|
3246
|
-
|
|
3247
3506
|
class DragHandler extends CompositeDisposable {
|
|
3248
3507
|
constructor(el) {
|
|
3249
3508
|
super();
|
|
@@ -3418,7 +3677,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
3418
3677
|
}, true));
|
|
3419
3678
|
}
|
|
3420
3679
|
isCancelled(_event) {
|
|
3421
|
-
if (this.group.api.
|
|
3680
|
+
if (this.group.api.location === 'floating' && !_event.shiftKey) {
|
|
3422
3681
|
return true;
|
|
3423
3682
|
}
|
|
3424
3683
|
return false;
|
|
@@ -3620,7 +3879,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
3620
3879
|
const isFloatingGroupsEnabled = !this.accessor.options.disableFloatingGroups;
|
|
3621
3880
|
if (isFloatingGroupsEnabled &&
|
|
3622
3881
|
event.shiftKey &&
|
|
3623
|
-
|
|
3882
|
+
this.group.api.location !== 'floating') {
|
|
3624
3883
|
event.preventDefault();
|
|
3625
3884
|
const { top, left } = this.element.getBoundingClientRect();
|
|
3626
3885
|
const { top: rootTop, left: rootLeft } = this.accessor.element.getBoundingClientRect();
|
|
@@ -3685,7 +3944,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
3685
3944
|
}), tab.onChanged((event) => {
|
|
3686
3945
|
var _a;
|
|
3687
3946
|
const isFloatingGroupsEnabled = !this.accessor.options.disableFloatingGroups;
|
|
3688
|
-
const isFloatingWithOnePanel = this.group.api.
|
|
3947
|
+
const isFloatingWithOnePanel = this.group.api.location === 'floating' && this.size === 1;
|
|
3689
3948
|
if (isFloatingGroupsEnabled &&
|
|
3690
3949
|
!isFloatingWithOnePanel &&
|
|
3691
3950
|
event.shiftKey) {
|
|
@@ -3768,15 +4027,37 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
3768
4027
|
}
|
|
3769
4028
|
return isAncestor(document.activeElement, this.contentContainer.element);
|
|
3770
4029
|
}
|
|
3771
|
-
get
|
|
3772
|
-
return this.
|
|
3773
|
-
}
|
|
3774
|
-
set
|
|
3775
|
-
this.
|
|
3776
|
-
this.
|
|
3777
|
-
toggleClass(this.container, 'dv-groupview-
|
|
3778
|
-
|
|
3779
|
-
|
|
4030
|
+
get location() {
|
|
4031
|
+
return this._location;
|
|
4032
|
+
}
|
|
4033
|
+
set location(value) {
|
|
4034
|
+
this._location = value;
|
|
4035
|
+
toggleClass(this.container, 'dv-groupview-floating', false);
|
|
4036
|
+
toggleClass(this.container, 'dv-groupview-popout', false);
|
|
4037
|
+
switch (value) {
|
|
4038
|
+
case 'grid':
|
|
4039
|
+
this.contentContainer.dropTarget.setTargetZones([
|
|
4040
|
+
'top',
|
|
4041
|
+
'bottom',
|
|
4042
|
+
'left',
|
|
4043
|
+
'right',
|
|
4044
|
+
'center',
|
|
4045
|
+
]);
|
|
4046
|
+
break;
|
|
4047
|
+
case 'floating':
|
|
4048
|
+
this.contentContainer.dropTarget.setTargetZones(['center']);
|
|
4049
|
+
this.contentContainer.dropTarget.setTargetZones(value
|
|
4050
|
+
? ['center']
|
|
4051
|
+
: ['top', 'bottom', 'left', 'right', 'center']);
|
|
4052
|
+
toggleClass(this.container, 'dv-groupview-floating', true);
|
|
4053
|
+
break;
|
|
4054
|
+
case 'popout':
|
|
4055
|
+
this.contentContainer.dropTarget.setTargetZones(['center']);
|
|
4056
|
+
toggleClass(this.container, 'dv-groupview-popout', true);
|
|
4057
|
+
break;
|
|
4058
|
+
}
|
|
4059
|
+
this.groupPanel.api._onDidLocationChange.fire({
|
|
4060
|
+
location: this.location,
|
|
3780
4061
|
});
|
|
3781
4062
|
}
|
|
3782
4063
|
constructor(container, accessor, id, options, groupPanel) {
|
|
@@ -3789,7 +4070,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
3789
4070
|
this.groupPanel = groupPanel;
|
|
3790
4071
|
this._isGroupActive = false;
|
|
3791
4072
|
this._locked = false;
|
|
3792
|
-
this.
|
|
4073
|
+
this._location = 'grid';
|
|
3793
4074
|
this.mostRecentlyUsed = [];
|
|
3794
4075
|
this._onDidChange = new Emitter();
|
|
3795
4076
|
this.onDidChange = this._onDidChange.event;
|
|
@@ -3812,35 +4093,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
3812
4093
|
this.onDidActivePanelChange = this._onDidActivePanelChange.event;
|
|
3813
4094
|
toggleClass(this.container, 'groupview', true);
|
|
3814
4095
|
this.tabsContainer = new TabsContainer(this.accessor, this.groupPanel);
|
|
3815
|
-
this.contentContainer = new ContentContainer();
|
|
3816
|
-
this.dropTarget = new Droptarget(this.contentContainer.element, {
|
|
3817
|
-
acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],
|
|
3818
|
-
canDisplayOverlay: (event, position) => {
|
|
3819
|
-
if (this.locked === 'no-drop-target' ||
|
|
3820
|
-
(this.locked && position === 'center')) {
|
|
3821
|
-
return false;
|
|
3822
|
-
}
|
|
3823
|
-
const data = getPanelData();
|
|
3824
|
-
if (!data && event.shiftKey && !this.isFloating) {
|
|
3825
|
-
return false;
|
|
3826
|
-
}
|
|
3827
|
-
if (data && data.viewId === this.accessor.id) {
|
|
3828
|
-
if (data.groupId === this.id) {
|
|
3829
|
-
if (position === 'center') {
|
|
3830
|
-
// don't allow to drop on self for center position
|
|
3831
|
-
return false;
|
|
3832
|
-
}
|
|
3833
|
-
if (data.panelId === null) {
|
|
3834
|
-
// don't allow group move to drop anywhere on self
|
|
3835
|
-
return false;
|
|
3836
|
-
}
|
|
3837
|
-
}
|
|
3838
|
-
const groupHasOnePanelAndIsActiveDragElement = this._panels.length === 1 && data.groupId === this.id;
|
|
3839
|
-
return !groupHasOnePanelAndIsActiveDragElement;
|
|
3840
|
-
}
|
|
3841
|
-
return this.canDisplayOverlay(event, position, exports.DockviewDropTargets.Panel);
|
|
3842
|
-
},
|
|
3843
|
-
});
|
|
4096
|
+
this.contentContainer = new ContentContainer(this.accessor, this);
|
|
3844
4097
|
container.append(this.tabsContainer.element, this.contentContainer.element);
|
|
3845
4098
|
this.header.hidden = !!options.hideHeader;
|
|
3846
4099
|
this.locked = (_a = options.locked) !== null && _a !== void 0 ? _a : false;
|
|
@@ -3854,7 +4107,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
3854
4107
|
this.accessor.doSetGroupActive(this.groupPanel, true);
|
|
3855
4108
|
}), this.contentContainer.onDidBlur(() => {
|
|
3856
4109
|
// noop
|
|
3857
|
-
}), this.dropTarget.onDrop((event) => {
|
|
4110
|
+
}), this.contentContainer.dropTarget.onDrop((event) => {
|
|
3858
4111
|
this.handleDropEvent(event.nativeEvent, event.position);
|
|
3859
4112
|
}), this._onMove, this._onDidChange, this._onDidDrop, this._onDidAddPanel, this._onDidRemovePanel, this._onDidActivePanelChange);
|
|
3860
4113
|
}
|
|
@@ -3903,6 +4156,9 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
3903
4156
|
this.tabsContainer.setPrefixActionsElement(this._prefixHeaderActions.element);
|
|
3904
4157
|
}
|
|
3905
4158
|
}
|
|
4159
|
+
rerender(panel) {
|
|
4160
|
+
this.contentContainer.renderPanel(panel, { asActive: false });
|
|
4161
|
+
}
|
|
3906
4162
|
indexOf(panel) {
|
|
3907
4163
|
return this.tabsContainer.indexOf(panel.id);
|
|
3908
4164
|
}
|
|
@@ -4094,12 +4350,12 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4094
4350
|
doAddPanel(panel, index = this.panels.length, skipSetActive = false) {
|
|
4095
4351
|
const existingPanel = this._panels.indexOf(panel);
|
|
4096
4352
|
const hasExistingPanel = existingPanel > -1;
|
|
4353
|
+
this.tabsContainer.show();
|
|
4354
|
+
this.contentContainer.show();
|
|
4097
4355
|
this.tabsContainer.openPanel(panel, index);
|
|
4098
4356
|
if (!skipSetActive) {
|
|
4099
4357
|
this.contentContainer.openPanel(panel);
|
|
4100
4358
|
}
|
|
4101
|
-
this.tabsContainer.show();
|
|
4102
|
-
this.contentContainer.show();
|
|
4103
4359
|
if (hasExistingPanel) {
|
|
4104
4360
|
// TODO - need to ensure ordering hasn't changed and if it has need to re-order this.panels
|
|
4105
4361
|
return;
|
|
@@ -4215,7 +4471,6 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4215
4471
|
for (const panel of this.panels) {
|
|
4216
4472
|
panel.dispose();
|
|
4217
4473
|
}
|
|
4218
|
-
this.dropTarget.dispose();
|
|
4219
4474
|
this.tabsContainer.dispose();
|
|
4220
4475
|
this.contentContainer.dispose();
|
|
4221
4476
|
}
|
|
@@ -4254,7 +4509,22 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4254
4509
|
if (this.disableResizing) {
|
|
4255
4510
|
return;
|
|
4256
4511
|
}
|
|
4257
|
-
if (!
|
|
4512
|
+
if (!this._element.offsetParent) {
|
|
4513
|
+
/**
|
|
4514
|
+
* offsetParent === null is equivalent to display: none being set on the element or one
|
|
4515
|
+
* of it's parents. In the display: none case the size will become (0, 0) which we do
|
|
4516
|
+
* not want to propagate.
|
|
4517
|
+
*
|
|
4518
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetParent
|
|
4519
|
+
*
|
|
4520
|
+
* You could use checkVisibility() but at the time of writing it's not supported across
|
|
4521
|
+
* all Browsers
|
|
4522
|
+
*
|
|
4523
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/Element/checkVisibility
|
|
4524
|
+
*/
|
|
4525
|
+
return;
|
|
4526
|
+
}
|
|
4527
|
+
if (!isInDocument(this._element)) {
|
|
4258
4528
|
/**
|
|
4259
4529
|
* since the event is dispatched through requestAnimationFrame there is a small chance
|
|
4260
4530
|
* the component is no longer attached to the DOM, if that is the case the dimensions
|
|
@@ -4346,6 +4616,21 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4346
4616
|
isVisible(panel) {
|
|
4347
4617
|
return this.gridview.isViewVisible(getGridLocation(panel.element));
|
|
4348
4618
|
}
|
|
4619
|
+
maximizeGroup(panel) {
|
|
4620
|
+
this.gridview.maximizeView(panel);
|
|
4621
|
+
}
|
|
4622
|
+
isMaximizedGroup(panel) {
|
|
4623
|
+
return this.gridview.maximizedView() === panel;
|
|
4624
|
+
}
|
|
4625
|
+
exitMaximizedGroup() {
|
|
4626
|
+
this.gridview.exitMaximizedView();
|
|
4627
|
+
}
|
|
4628
|
+
hasMaximizedGroup() {
|
|
4629
|
+
return this.gridview.hasMaximizedView();
|
|
4630
|
+
}
|
|
4631
|
+
get onDidMaxmizedGroupChange() {
|
|
4632
|
+
return this.gridview.onDidMaxmizedNodeChange;
|
|
4633
|
+
}
|
|
4349
4634
|
doAddGroup(group, location = [0], size) {
|
|
4350
4635
|
this.gridview.addView(group, size !== null && size !== void 0 ? size : exports.Sizing.Distribute, location);
|
|
4351
4636
|
this._onDidAddGroup.fire(group);
|
|
@@ -5122,32 +5407,63 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
5122
5407
|
}
|
|
5123
5408
|
}
|
|
5124
5409
|
|
|
5410
|
+
// TODO find a better way to initialize and avoid needing null checks
|
|
5411
|
+
const NOT_INITIALIZED_MESSAGE = 'DockviewGroupPanelApiImpl not initialized';
|
|
5125
5412
|
class DockviewGroupPanelApiImpl extends GridviewPanelApiImpl {
|
|
5126
|
-
get
|
|
5413
|
+
get location() {
|
|
5127
5414
|
if (!this._group) {
|
|
5128
|
-
throw new Error(
|
|
5415
|
+
throw new Error(NOT_INITIALIZED_MESSAGE);
|
|
5129
5416
|
}
|
|
5130
|
-
return this._group.model.
|
|
5417
|
+
return this._group.model.location;
|
|
5131
5418
|
}
|
|
5132
5419
|
constructor(id, accessor) {
|
|
5133
5420
|
super(id);
|
|
5134
5421
|
this.accessor = accessor;
|
|
5135
|
-
this.
|
|
5136
|
-
this.
|
|
5137
|
-
this.addDisposables(this.
|
|
5422
|
+
this._onDidLocationChange = new Emitter();
|
|
5423
|
+
this.onDidLocationChange = this._onDidLocationChange.event;
|
|
5424
|
+
this.addDisposables(this._onDidLocationChange);
|
|
5138
5425
|
}
|
|
5139
5426
|
moveTo(options) {
|
|
5140
|
-
var _a;
|
|
5427
|
+
var _a, _b, _c;
|
|
5428
|
+
if (!this._group) {
|
|
5429
|
+
throw new Error(NOT_INITIALIZED_MESSAGE);
|
|
5430
|
+
}
|
|
5431
|
+
const group = (_a = options.group) !== null && _a !== void 0 ? _a : this.accessor.addGroup({
|
|
5432
|
+
direction: positionToDirection((_b = options.position) !== null && _b !== void 0 ? _b : 'right'),
|
|
5433
|
+
});
|
|
5434
|
+
this.accessor.moveGroupOrPanel(group, this._group.id, undefined, options.group ? (_c = options.position) !== null && _c !== void 0 ? _c : 'center' : 'center');
|
|
5435
|
+
}
|
|
5436
|
+
maximize() {
|
|
5437
|
+
if (!this._group) {
|
|
5438
|
+
throw new Error(NOT_INITIALIZED_MESSAGE);
|
|
5439
|
+
}
|
|
5440
|
+
if (this.location !== 'grid') {
|
|
5441
|
+
// only grid groups can be maximized
|
|
5442
|
+
return;
|
|
5443
|
+
}
|
|
5444
|
+
this.accessor.maximizeGroup(this._group);
|
|
5445
|
+
}
|
|
5446
|
+
isMaximized() {
|
|
5141
5447
|
if (!this._group) {
|
|
5142
|
-
throw new Error(
|
|
5448
|
+
throw new Error(NOT_INITIALIZED_MESSAGE);
|
|
5449
|
+
}
|
|
5450
|
+
return this.accessor.isMaximizedGroup(this._group);
|
|
5451
|
+
}
|
|
5452
|
+
exitMaximized() {
|
|
5453
|
+
if (!this._group) {
|
|
5454
|
+
throw new Error(NOT_INITIALIZED_MESSAGE);
|
|
5455
|
+
}
|
|
5456
|
+
if (this.isMaximized()) {
|
|
5457
|
+
this.accessor.exitMaximizedGroup();
|
|
5143
5458
|
}
|
|
5144
|
-
this.accessor.moveGroupOrPanel(options.group, this._group.id, undefined, (_a = options.position) !== null && _a !== void 0 ? _a : 'center');
|
|
5145
5459
|
}
|
|
5146
5460
|
initialize(group) {
|
|
5147
5461
|
this._group = group;
|
|
5148
5462
|
}
|
|
5149
5463
|
}
|
|
5150
5464
|
|
|
5465
|
+
const MINIMUM_DOCKVIEW_GROUP_PANEL_WIDTH = 100;
|
|
5466
|
+
const MINIMUM_DOCKVIEW_GROUP_PANEL_HEIGHT = 100;
|
|
5151
5467
|
class DockviewGroupPanel extends GridviewPanel {
|
|
5152
5468
|
get panels() {
|
|
5153
5469
|
return this._model.panels;
|
|
@@ -5172,8 +5488,8 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
5172
5488
|
}
|
|
5173
5489
|
constructor(accessor, id, options) {
|
|
5174
5490
|
super(id, 'groupview_default', {
|
|
5175
|
-
minimumHeight:
|
|
5176
|
-
minimumWidth:
|
|
5491
|
+
minimumHeight: MINIMUM_DOCKVIEW_GROUP_PANEL_HEIGHT,
|
|
5492
|
+
minimumWidth: MINIMUM_DOCKVIEW_GROUP_PANEL_WIDTH,
|
|
5177
5493
|
}, new DockviewGroupPanelApiImpl(id, accessor));
|
|
5178
5494
|
this.api.initialize(this); // cannot use 'this' after after 'super' call
|
|
5179
5495
|
this._model = new DockviewGroupPanelModel(this.element, accessor, id, options, this);
|
|
@@ -5227,8 +5543,10 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
5227
5543
|
return this.panel.title;
|
|
5228
5544
|
}
|
|
5229
5545
|
get isGroupActive() {
|
|
5230
|
-
|
|
5231
|
-
|
|
5546
|
+
return this.group.isActive;
|
|
5547
|
+
}
|
|
5548
|
+
get renderer() {
|
|
5549
|
+
return this.panel.renderer;
|
|
5232
5550
|
}
|
|
5233
5551
|
set group(value) {
|
|
5234
5552
|
const isOldGroupActive = this.isGroupActive;
|
|
@@ -5256,10 +5574,12 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
5256
5574
|
this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;
|
|
5257
5575
|
this._onDidGroupChange = new Emitter();
|
|
5258
5576
|
this.onDidGroupChange = this._onDidGroupChange.event;
|
|
5577
|
+
this._onDidRendererChange = new Emitter();
|
|
5578
|
+
this.onDidRendererChange = this._onDidRendererChange.event;
|
|
5259
5579
|
this.disposable = new MutableDisposable();
|
|
5260
5580
|
this.initialize(panel);
|
|
5261
5581
|
this._group = group;
|
|
5262
|
-
this.addDisposables(this.disposable, this._onDidTitleChange, this._onDidGroupChange, this._onDidActiveGroupChange);
|
|
5582
|
+
this.addDisposables(this.disposable, this._onDidRendererChange, this._onDidTitleChange, this._onDidGroupChange, this._onDidActiveGroupChange);
|
|
5263
5583
|
}
|
|
5264
5584
|
moveTo(options) {
|
|
5265
5585
|
var _a;
|
|
@@ -5268,9 +5588,21 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
5268
5588
|
setTitle(title) {
|
|
5269
5589
|
this.panel.setTitle(title);
|
|
5270
5590
|
}
|
|
5591
|
+
setRenderer(renderer) {
|
|
5592
|
+
this.panel.setRenderer(renderer);
|
|
5593
|
+
}
|
|
5271
5594
|
close() {
|
|
5272
5595
|
this.group.model.closePanel(this.panel);
|
|
5273
5596
|
}
|
|
5597
|
+
maximize() {
|
|
5598
|
+
this.group.api.maximize();
|
|
5599
|
+
}
|
|
5600
|
+
isMaximized() {
|
|
5601
|
+
return this.group.api.isMaximized();
|
|
5602
|
+
}
|
|
5603
|
+
exitMaximized() {
|
|
5604
|
+
this.group.api.exitMaximized();
|
|
5605
|
+
}
|
|
5274
5606
|
}
|
|
5275
5607
|
|
|
5276
5608
|
class DockviewPanel extends CompositeDisposable {
|
|
@@ -5283,11 +5615,17 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
5283
5615
|
get group() {
|
|
5284
5616
|
return this._group;
|
|
5285
5617
|
}
|
|
5286
|
-
|
|
5618
|
+
get renderer() {
|
|
5619
|
+
var _a;
|
|
5620
|
+
return (_a = this._renderer) !== null && _a !== void 0 ? _a : this.accessor.renderer;
|
|
5621
|
+
}
|
|
5622
|
+
constructor(id, accessor, containerApi, group, view, options) {
|
|
5287
5623
|
super();
|
|
5288
5624
|
this.id = id;
|
|
5625
|
+
this.accessor = accessor;
|
|
5289
5626
|
this.containerApi = containerApi;
|
|
5290
5627
|
this.view = view;
|
|
5628
|
+
this._renderer = options.renderer;
|
|
5291
5629
|
this._group = group;
|
|
5292
5630
|
this.api = new DockviewPanelApiImpl(this, this._group, accessor);
|
|
5293
5631
|
this.addDisposables(this.api.onActiveChange(() => {
|
|
@@ -5296,6 +5634,8 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
5296
5634
|
// forward the resize event to the group since if you want to resize a panel
|
|
5297
5635
|
// you are actually just resizing the panels parent which is the group
|
|
5298
5636
|
this.group.api.setSize(event);
|
|
5637
|
+
}), this.api.onDidRendererChange((event) => {
|
|
5638
|
+
this.group.model.rerender(this);
|
|
5299
5639
|
}));
|
|
5300
5640
|
}
|
|
5301
5641
|
init(params) {
|
|
@@ -5315,6 +5655,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
5315
5655
|
? this._params
|
|
5316
5656
|
: undefined,
|
|
5317
5657
|
title: this.title,
|
|
5658
|
+
renderer: this._renderer,
|
|
5318
5659
|
};
|
|
5319
5660
|
}
|
|
5320
5661
|
setTitle(title) {
|
|
@@ -5330,6 +5671,15 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
5330
5671
|
this.api._onDidTitleChange.fire({ title });
|
|
5331
5672
|
}
|
|
5332
5673
|
}
|
|
5674
|
+
setRenderer(renderer) {
|
|
5675
|
+
const didChange = renderer !== this.renderer;
|
|
5676
|
+
if (didChange) {
|
|
5677
|
+
this._renderer = renderer;
|
|
5678
|
+
this.api._onDidRendererChange.fire({
|
|
5679
|
+
renderer: renderer,
|
|
5680
|
+
});
|
|
5681
|
+
}
|
|
5682
|
+
}
|
|
5333
5683
|
update(event) {
|
|
5334
5684
|
var _a;
|
|
5335
5685
|
// merge the new parameters with the existing parameters
|
|
@@ -5548,8 +5898,8 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
5548
5898
|
}
|
|
5549
5899
|
|
|
5550
5900
|
class DefaultDockviewDeserialzier {
|
|
5551
|
-
constructor(
|
|
5552
|
-
this.
|
|
5901
|
+
constructor(accessor) {
|
|
5902
|
+
this.accessor = accessor;
|
|
5553
5903
|
}
|
|
5554
5904
|
fromJSON(panelData, group) {
|
|
5555
5905
|
var _a, _b;
|
|
@@ -5563,8 +5913,10 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
5563
5913
|
const tabComponent = viewData
|
|
5564
5914
|
? (_b = viewData.tab) === null || _b === void 0 ? void 0 : _b.id
|
|
5565
5915
|
: panelData.tabComponent;
|
|
5566
|
-
const view = new DockviewPanelModel(this.
|
|
5567
|
-
const panel = new DockviewPanel(panelId, this.
|
|
5916
|
+
const view = new DockviewPanelModel(this.accessor, panelId, contentComponent, tabComponent);
|
|
5917
|
+
const panel = new DockviewPanel(panelId, this.accessor, new DockviewApi(this.accessor), group, view, {
|
|
5918
|
+
renderer: panelData.renderer,
|
|
5919
|
+
});
|
|
5568
5920
|
panel.init({
|
|
5569
5921
|
title: title !== null && title !== void 0 ? title : panelId,
|
|
5570
5922
|
params: params !== null && params !== void 0 ? params : {},
|
|
@@ -5944,7 +6296,265 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
5944
6296
|
}
|
|
5945
6297
|
}
|
|
5946
6298
|
|
|
6299
|
+
class PopoutWindow extends CompositeDisposable {
|
|
6300
|
+
constructor(id, className, options) {
|
|
6301
|
+
super();
|
|
6302
|
+
this.id = id;
|
|
6303
|
+
this.className = className;
|
|
6304
|
+
this.options = options;
|
|
6305
|
+
this._onDidClose = new Emitter();
|
|
6306
|
+
this.onDidClose = this._onDidClose.event;
|
|
6307
|
+
this._window = null;
|
|
6308
|
+
this.addDisposables(this._onDidClose, {
|
|
6309
|
+
dispose: () => {
|
|
6310
|
+
this.close();
|
|
6311
|
+
},
|
|
6312
|
+
});
|
|
6313
|
+
}
|
|
6314
|
+
dimensions() {
|
|
6315
|
+
if (!this._window) {
|
|
6316
|
+
return null;
|
|
6317
|
+
}
|
|
6318
|
+
const left = this._window.value.screenX;
|
|
6319
|
+
const top = this._window.value.screenY;
|
|
6320
|
+
const width = this._window.value.innerWidth;
|
|
6321
|
+
const height = this._window.value.innerHeight;
|
|
6322
|
+
return { top, left, width, height };
|
|
6323
|
+
}
|
|
6324
|
+
close() {
|
|
6325
|
+
if (this._window) {
|
|
6326
|
+
this._window.disposable.dispose();
|
|
6327
|
+
this._window.value.close();
|
|
6328
|
+
this._window = null;
|
|
6329
|
+
}
|
|
6330
|
+
}
|
|
6331
|
+
open(content) {
|
|
6332
|
+
if (this._window) {
|
|
6333
|
+
throw new Error('instance of popout window is already open');
|
|
6334
|
+
}
|
|
6335
|
+
const url = `${this.options.url}`;
|
|
6336
|
+
const features = Object.entries({
|
|
6337
|
+
top: this.options.top,
|
|
6338
|
+
left: this.options.left,
|
|
6339
|
+
width: this.options.width,
|
|
6340
|
+
height: this.options.height,
|
|
6341
|
+
})
|
|
6342
|
+
.map(([key, value]) => `${key}=${value}`)
|
|
6343
|
+
.join(',');
|
|
6344
|
+
// https://developer.mozilla.org/en-US/docs/Web/API/Window/open
|
|
6345
|
+
const externalWindow = window.open(url, this.id, features);
|
|
6346
|
+
if (!externalWindow) {
|
|
6347
|
+
return;
|
|
6348
|
+
}
|
|
6349
|
+
const disposable = new CompositeDisposable();
|
|
6350
|
+
this._window = { value: externalWindow, disposable };
|
|
6351
|
+
const cleanUp = () => {
|
|
6352
|
+
this._onDidClose.fire();
|
|
6353
|
+
this._window = null;
|
|
6354
|
+
};
|
|
6355
|
+
// prevent any default content from loading
|
|
6356
|
+
// externalWindow.document.body.replaceWith(document.createElement('div'));
|
|
6357
|
+
disposable.addDisposables(addDisposableWindowListener(window, 'beforeunload', () => {
|
|
6358
|
+
cleanUp();
|
|
6359
|
+
this.close();
|
|
6360
|
+
}));
|
|
6361
|
+
externalWindow.addEventListener('load', () => {
|
|
6362
|
+
const externalDocument = externalWindow.document;
|
|
6363
|
+
externalDocument.title = document.title;
|
|
6364
|
+
const div = document.createElement('div');
|
|
6365
|
+
div.classList.add('dv-popout-window');
|
|
6366
|
+
div.style.position = 'absolute';
|
|
6367
|
+
div.style.width = '100%';
|
|
6368
|
+
div.style.height = '100%';
|
|
6369
|
+
div.style.top = '0px';
|
|
6370
|
+
div.style.left = '0px';
|
|
6371
|
+
div.classList.add(this.className);
|
|
6372
|
+
div.appendChild(content);
|
|
6373
|
+
externalDocument.body.replaceChildren(div);
|
|
6374
|
+
externalDocument.body.classList.add(this.className);
|
|
6375
|
+
addStyles(externalDocument, window.document.styleSheets);
|
|
6376
|
+
externalWindow.addEventListener('beforeunload', () => {
|
|
6377
|
+
// TODO: indicate external window is closing
|
|
6378
|
+
cleanUp();
|
|
6379
|
+
});
|
|
6380
|
+
});
|
|
6381
|
+
}
|
|
6382
|
+
}
|
|
6383
|
+
|
|
6384
|
+
class DockviewPopoutGroupPanel extends CompositeDisposable {
|
|
6385
|
+
constructor(id, group, options) {
|
|
6386
|
+
var _a;
|
|
6387
|
+
super();
|
|
6388
|
+
this.id = id;
|
|
6389
|
+
this.group = group;
|
|
6390
|
+
this.options = options;
|
|
6391
|
+
this.window = new PopoutWindow(id, (_a = options.className) !== null && _a !== void 0 ? _a : '', {
|
|
6392
|
+
url: this.options.popoutUrl,
|
|
6393
|
+
left: this.options.box.left,
|
|
6394
|
+
top: this.options.box.top,
|
|
6395
|
+
width: this.options.box.width,
|
|
6396
|
+
height: this.options.box.height,
|
|
6397
|
+
});
|
|
6398
|
+
group.model.location = 'popout';
|
|
6399
|
+
this.addDisposables(this.window, {
|
|
6400
|
+
dispose: () => {
|
|
6401
|
+
group.model.location = 'grid';
|
|
6402
|
+
},
|
|
6403
|
+
}, this.window.onDidClose(() => {
|
|
6404
|
+
this.dispose();
|
|
6405
|
+
}));
|
|
6406
|
+
this.window.open(group.element);
|
|
6407
|
+
}
|
|
6408
|
+
}
|
|
6409
|
+
|
|
5947
6410
|
const DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE = 100;
|
|
6411
|
+
const DEFAULT_FLOATING_GROUP_POSITION = { left: 100, top: 100 };
|
|
6412
|
+
|
|
6413
|
+
function createFocusableElement() {
|
|
6414
|
+
const element = document.createElement('div');
|
|
6415
|
+
element.tabIndex = -1;
|
|
6416
|
+
return element;
|
|
6417
|
+
}
|
|
6418
|
+
class OverlayRenderContainer extends CompositeDisposable {
|
|
6419
|
+
constructor(element) {
|
|
6420
|
+
super();
|
|
6421
|
+
this.element = element;
|
|
6422
|
+
this.map = {};
|
|
6423
|
+
this.addDisposables(Disposable.from(() => {
|
|
6424
|
+
for (const value of Object.values(this.map)) {
|
|
6425
|
+
value.disposable.dispose();
|
|
6426
|
+
value.destroy.dispose();
|
|
6427
|
+
}
|
|
6428
|
+
}));
|
|
6429
|
+
}
|
|
6430
|
+
detatch(panel) {
|
|
6431
|
+
if (this.map[panel.api.id]) {
|
|
6432
|
+
const { disposable, destroy } = this.map[panel.api.id];
|
|
6433
|
+
disposable.dispose();
|
|
6434
|
+
destroy.dispose();
|
|
6435
|
+
delete this.map[panel.api.id];
|
|
6436
|
+
return true;
|
|
6437
|
+
}
|
|
6438
|
+
return false;
|
|
6439
|
+
}
|
|
6440
|
+
attach(options) {
|
|
6441
|
+
const { panel, referenceContainer } = options;
|
|
6442
|
+
if (!this.map[panel.api.id]) {
|
|
6443
|
+
const element = createFocusableElement();
|
|
6444
|
+
element.className = 'dv-render-overlay';
|
|
6445
|
+
this.map[panel.api.id] = {
|
|
6446
|
+
panel,
|
|
6447
|
+
disposable: Disposable.NONE,
|
|
6448
|
+
destroy: Disposable.NONE,
|
|
6449
|
+
element,
|
|
6450
|
+
};
|
|
6451
|
+
}
|
|
6452
|
+
const focusContainer = this.map[panel.api.id].element;
|
|
6453
|
+
if (panel.view.content.element.parentElement !== focusContainer) {
|
|
6454
|
+
focusContainer.appendChild(panel.view.content.element);
|
|
6455
|
+
}
|
|
6456
|
+
if (focusContainer.parentElement !== this.element) {
|
|
6457
|
+
this.element.appendChild(focusContainer);
|
|
6458
|
+
}
|
|
6459
|
+
const resize = () => {
|
|
6460
|
+
// TODO propagate position to avoid getDomNodePagePosition calls, possible performance bottleneck?
|
|
6461
|
+
const box = getDomNodePagePosition(referenceContainer.element);
|
|
6462
|
+
const box2 = getDomNodePagePosition(this.element);
|
|
6463
|
+
focusContainer.style.left = `${box.left - box2.left}px`;
|
|
6464
|
+
focusContainer.style.top = `${box.top - box2.top}px`;
|
|
6465
|
+
focusContainer.style.width = `${box.width}px`;
|
|
6466
|
+
focusContainer.style.height = `${box.height}px`;
|
|
6467
|
+
toggleClass(focusContainer, 'dv-render-overlay-float', panel.group.api.location === 'floating');
|
|
6468
|
+
};
|
|
6469
|
+
const visibilityChanged = () => {
|
|
6470
|
+
if (panel.api.isVisible) {
|
|
6471
|
+
resize();
|
|
6472
|
+
}
|
|
6473
|
+
focusContainer.style.display = panel.api.isVisible ? '' : 'none';
|
|
6474
|
+
};
|
|
6475
|
+
const disposable = new CompositeDisposable(
|
|
6476
|
+
/**
|
|
6477
|
+
* since container is positioned absoutely we must explicitly forward
|
|
6478
|
+
* the dnd events for the expect behaviours to continue to occur in terms of dnd
|
|
6479
|
+
*
|
|
6480
|
+
* the dnd observer does not need to be conditional on whether the panel is visible since
|
|
6481
|
+
* non-visible panels are 'display: none' and in such case the dnd observer will not fire.
|
|
6482
|
+
*/
|
|
6483
|
+
new DragAndDropObserver(focusContainer, {
|
|
6484
|
+
onDragEnd: (e) => {
|
|
6485
|
+
referenceContainer.dropTarget.dnd.onDragEnd(e);
|
|
6486
|
+
},
|
|
6487
|
+
onDragEnter: (e) => {
|
|
6488
|
+
referenceContainer.dropTarget.dnd.onDragEnter(e);
|
|
6489
|
+
},
|
|
6490
|
+
onDragLeave: (e) => {
|
|
6491
|
+
referenceContainer.dropTarget.dnd.onDragLeave(e);
|
|
6492
|
+
},
|
|
6493
|
+
onDrop: (e) => {
|
|
6494
|
+
referenceContainer.dropTarget.dnd.onDrop(e);
|
|
6495
|
+
},
|
|
6496
|
+
onDragOver: (e) => {
|
|
6497
|
+
referenceContainer.dropTarget.dnd.onDragOver(e);
|
|
6498
|
+
},
|
|
6499
|
+
}), panel.api.onDidVisibilityChange((event) => {
|
|
6500
|
+
/**
|
|
6501
|
+
* Control the visibility of the content, however even when not visible (display: none)
|
|
6502
|
+
* the content is still maintained within the DOM hence DOM specific attributes
|
|
6503
|
+
* such as scroll position are maintained when next made visible.
|
|
6504
|
+
*/
|
|
6505
|
+
visibilityChanged();
|
|
6506
|
+
}), panel.api.onDidDimensionsChange(() => {
|
|
6507
|
+
if (!panel.api.isVisible) {
|
|
6508
|
+
return;
|
|
6509
|
+
}
|
|
6510
|
+
resize();
|
|
6511
|
+
}));
|
|
6512
|
+
this.map[panel.api.id].destroy = Disposable.from(() => {
|
|
6513
|
+
focusContainer.removeChild(panel.view.content.element);
|
|
6514
|
+
this.element.removeChild(focusContainer);
|
|
6515
|
+
});
|
|
6516
|
+
queueMicrotask(() => {
|
|
6517
|
+
if (this.isDisposed) {
|
|
6518
|
+
return;
|
|
6519
|
+
}
|
|
6520
|
+
/**
|
|
6521
|
+
* wait until everything has finished in the current stack-frame call before
|
|
6522
|
+
* calling the first resize as other size-altering events may still occur before
|
|
6523
|
+
* the end of the stack-frame.
|
|
6524
|
+
*/
|
|
6525
|
+
visibilityChanged();
|
|
6526
|
+
});
|
|
6527
|
+
// dispose of logic asoccciated with previous reference-container
|
|
6528
|
+
this.map[panel.api.id].disposable.dispose();
|
|
6529
|
+
// and reset the disposable to the active reference-container
|
|
6530
|
+
this.map[panel.api.id].disposable = disposable;
|
|
6531
|
+
return focusContainer;
|
|
6532
|
+
}
|
|
6533
|
+
}
|
|
6534
|
+
|
|
6535
|
+
const DEFAULT_ROOT_OVERLAY_MODEL = {
|
|
6536
|
+
activationSize: { type: 'pixels', value: 10 },
|
|
6537
|
+
size: { type: 'pixels', value: 20 },
|
|
6538
|
+
};
|
|
6539
|
+
function getTheme(element) {
|
|
6540
|
+
function toClassList(element) {
|
|
6541
|
+
const list = [];
|
|
6542
|
+
for (let i = 0; i < element.classList.length; i++) {
|
|
6543
|
+
list.push(element.classList.item(i));
|
|
6544
|
+
}
|
|
6545
|
+
return list;
|
|
6546
|
+
}
|
|
6547
|
+
let theme = undefined;
|
|
6548
|
+
let parent = element;
|
|
6549
|
+
while (parent !== null) {
|
|
6550
|
+
theme = toClassList(parent).find((cls) => cls.startsWith('dockview-theme-'));
|
|
6551
|
+
if (typeof theme === 'string') {
|
|
6552
|
+
break;
|
|
6553
|
+
}
|
|
6554
|
+
parent = parent.parentElement;
|
|
6555
|
+
}
|
|
6556
|
+
return theme;
|
|
6557
|
+
}
|
|
5948
6558
|
class DockviewComponent extends BaseGrid {
|
|
5949
6559
|
get orientation() {
|
|
5950
6560
|
return this.gridview.orientation;
|
|
@@ -5965,8 +6575,12 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
5965
6575
|
}
|
|
5966
6576
|
return activeGroup.activePanel;
|
|
5967
6577
|
}
|
|
5968
|
-
|
|
6578
|
+
get renderer() {
|
|
5969
6579
|
var _a;
|
|
6580
|
+
return (_a = this.options.defaultRenderer) !== null && _a !== void 0 ? _a : 'onlyWhenVisibile';
|
|
6581
|
+
}
|
|
6582
|
+
constructor(options) {
|
|
6583
|
+
var _a, _b;
|
|
5970
6584
|
super({
|
|
5971
6585
|
proportionalLayout: true,
|
|
5972
6586
|
orientation: (_a = options.orientation) !== null && _a !== void 0 ? _a : exports.Orientation.HORIZONTAL,
|
|
@@ -5991,12 +6605,27 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
5991
6605
|
this.onDidLayoutFromJSON = this._onDidLayoutFromJSON.event;
|
|
5992
6606
|
this._onDidActivePanelChange = new Emitter();
|
|
5993
6607
|
this.onDidActivePanelChange = this._onDidActivePanelChange.event;
|
|
5994
|
-
this.
|
|
6608
|
+
this._floatingGroups = [];
|
|
6609
|
+
this._popoutGroups = [];
|
|
6610
|
+
const gready = document.createElement('div');
|
|
6611
|
+
gready.className = 'dv-overlay-render-container';
|
|
6612
|
+
this.gridview.element.appendChild(gready);
|
|
6613
|
+
this.overlayRenderContainer = new OverlayRenderContainer(gready);
|
|
5995
6614
|
toggleClass(this.gridview.element, 'dv-dockview', true);
|
|
5996
|
-
|
|
6615
|
+
toggleClass(this.element, 'dv-debug', !!options.debug);
|
|
6616
|
+
this.addDisposables(this.overlayRenderContainer, this._onWillDragPanel, this._onWillDragGroup, this._onDidActivePanelChange, this._onDidAddPanel, this._onDidRemovePanel, this._onDidLayoutFromJSON, this._onDidDrop, exports.DockviewEvent.any(this.onDidAddGroup, this.onDidRemoveGroup)(() => {
|
|
5997
6617
|
this.updateWatermark();
|
|
5998
6618
|
}), exports.DockviewEvent.any(this.onDidAddPanel, this.onDidRemovePanel, this.onDidActivePanelChange)(() => {
|
|
5999
6619
|
this._bufferOnDidLayoutChange.fire();
|
|
6620
|
+
}), Disposable.from(() => {
|
|
6621
|
+
// iterate over a copy of the array since .dispose() mutates the original array
|
|
6622
|
+
for (const group of [...this._floatingGroups]) {
|
|
6623
|
+
group.dispose();
|
|
6624
|
+
}
|
|
6625
|
+
// iterate over a copy of the array since .dispose() mutates the original array
|
|
6626
|
+
for (const group of [...this._popoutGroups]) {
|
|
6627
|
+
group.dispose();
|
|
6628
|
+
}
|
|
6000
6629
|
}));
|
|
6001
6630
|
this._options = options;
|
|
6002
6631
|
if (!this.options.components) {
|
|
@@ -6015,7 +6644,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
6015
6644
|
!this.options.watermarkFrameworkComponent) {
|
|
6016
6645
|
this.options.watermarkComponent = Watermark;
|
|
6017
6646
|
}
|
|
6018
|
-
|
|
6647
|
+
this._rootDropTarget = new Droptarget(this.element, {
|
|
6019
6648
|
canDisplayOverlay: (event, position) => {
|
|
6020
6649
|
const data = getPanelData();
|
|
6021
6650
|
if (data) {
|
|
@@ -6048,12 +6677,9 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
6048
6677
|
return false;
|
|
6049
6678
|
},
|
|
6050
6679
|
acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],
|
|
6051
|
-
overlayModel:
|
|
6052
|
-
activationSize: { type: 'pixels', value: 10 },
|
|
6053
|
-
size: { type: 'pixels', value: 20 },
|
|
6054
|
-
},
|
|
6680
|
+
overlayModel: (_b = this.options.rootOverlayModel) !== null && _b !== void 0 ? _b : DEFAULT_ROOT_OVERLAY_MODEL,
|
|
6055
6681
|
});
|
|
6056
|
-
this.addDisposables(
|
|
6682
|
+
this.addDisposables(this._rootDropTarget.onDrop((event) => {
|
|
6057
6683
|
var _a;
|
|
6058
6684
|
const data = getPanelData();
|
|
6059
6685
|
if (data) {
|
|
@@ -6062,10 +6688,59 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
6062
6688
|
else {
|
|
6063
6689
|
this._onDidDrop.fire(Object.assign(Object.assign({}, event), { api: this._api, group: null, getData: getPanelData }));
|
|
6064
6690
|
}
|
|
6065
|
-
}),
|
|
6691
|
+
}), this._rootDropTarget);
|
|
6066
6692
|
this._api = new DockviewApi(this);
|
|
6067
6693
|
this.updateWatermark();
|
|
6068
6694
|
}
|
|
6695
|
+
addPopoutGroup(item, options) {
|
|
6696
|
+
var _a;
|
|
6697
|
+
let group;
|
|
6698
|
+
let box = options === null || options === void 0 ? void 0 : options.position;
|
|
6699
|
+
if (item instanceof DockviewPanel) {
|
|
6700
|
+
group = this.createGroup();
|
|
6701
|
+
this.removePanel(item, {
|
|
6702
|
+
removeEmptyGroup: true,
|
|
6703
|
+
skipDispose: true,
|
|
6704
|
+
});
|
|
6705
|
+
group.model.openPanel(item);
|
|
6706
|
+
if (!box) {
|
|
6707
|
+
box = this.element.getBoundingClientRect();
|
|
6708
|
+
}
|
|
6709
|
+
}
|
|
6710
|
+
else {
|
|
6711
|
+
group = item;
|
|
6712
|
+
if (!box) {
|
|
6713
|
+
box = group.element.getBoundingClientRect();
|
|
6714
|
+
}
|
|
6715
|
+
const skip = typeof (options === null || options === void 0 ? void 0 : options.skipRemoveGroup) === 'boolean' &&
|
|
6716
|
+
options.skipRemoveGroup;
|
|
6717
|
+
if (!skip) {
|
|
6718
|
+
this.doRemoveGroup(item, { skipDispose: true });
|
|
6719
|
+
}
|
|
6720
|
+
}
|
|
6721
|
+
const theme = getTheme(this.gridview.element);
|
|
6722
|
+
const popoutWindow = new DockviewPopoutGroupPanel(`${this.id}-${group.id}`, // globally unique within dockview
|
|
6723
|
+
group, {
|
|
6724
|
+
className: theme !== null && theme !== void 0 ? theme : '',
|
|
6725
|
+
popoutUrl: (_a = options === null || options === void 0 ? void 0 : options.popoutUrl) !== null && _a !== void 0 ? _a : '/popout.html',
|
|
6726
|
+
box: {
|
|
6727
|
+
left: window.screenX + box.left,
|
|
6728
|
+
top: window.screenY + box.top,
|
|
6729
|
+
width: box.width,
|
|
6730
|
+
height: box.height,
|
|
6731
|
+
},
|
|
6732
|
+
});
|
|
6733
|
+
popoutWindow.addDisposables({
|
|
6734
|
+
dispose: () => {
|
|
6735
|
+
remove(this._popoutGroups, popoutWindow);
|
|
6736
|
+
this.updateWatermark();
|
|
6737
|
+
},
|
|
6738
|
+
}, popoutWindow.window.onDidClose(() => {
|
|
6739
|
+
this.doAddGroup(group, [0]);
|
|
6740
|
+
}));
|
|
6741
|
+
this._popoutGroups.push(popoutWindow);
|
|
6742
|
+
this.updateWatermark();
|
|
6743
|
+
}
|
|
6069
6744
|
addFloatingGroup(item, coord, options) {
|
|
6070
6745
|
var _a, _b, _c, _d, _e, _f;
|
|
6071
6746
|
let group;
|
|
@@ -6085,9 +6760,13 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
6085
6760
|
this.doRemoveGroup(item, { skipDispose: true });
|
|
6086
6761
|
}
|
|
6087
6762
|
}
|
|
6088
|
-
group.model.
|
|
6089
|
-
const overlayLeft = typeof (coord === null || coord === void 0 ? void 0 : coord.x) === 'number'
|
|
6090
|
-
|
|
6763
|
+
group.model.location = 'floating';
|
|
6764
|
+
const overlayLeft = typeof (coord === null || coord === void 0 ? void 0 : coord.x) === 'number'
|
|
6765
|
+
? Math.max(coord.x, 0)
|
|
6766
|
+
: DEFAULT_FLOATING_GROUP_POSITION.left;
|
|
6767
|
+
const overlayTop = typeof (coord === null || coord === void 0 ? void 0 : coord.y) === 'number'
|
|
6768
|
+
? Math.max(coord.y, 0)
|
|
6769
|
+
: DEFAULT_FLOATING_GROUP_POSITION.top;
|
|
6091
6770
|
const overlay = new Overlay({
|
|
6092
6771
|
container: this.gridview.element,
|
|
6093
6772
|
content: group.element,
|
|
@@ -6131,12 +6810,12 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
6131
6810
|
}), {
|
|
6132
6811
|
dispose: () => {
|
|
6133
6812
|
disposable.dispose();
|
|
6134
|
-
group.model.
|
|
6135
|
-
remove(this.
|
|
6813
|
+
group.model.location = 'grid';
|
|
6814
|
+
remove(this._floatingGroups, floatingGroupPanel);
|
|
6136
6815
|
this.updateWatermark();
|
|
6137
6816
|
},
|
|
6138
6817
|
});
|
|
6139
|
-
this.
|
|
6818
|
+
this._floatingGroups.push(floatingGroupPanel);
|
|
6140
6819
|
this.updateWatermark();
|
|
6141
6820
|
}
|
|
6142
6821
|
orthogonalize(position) {
|
|
@@ -6172,16 +6851,18 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
6172
6851
|
}
|
|
6173
6852
|
updateOptions(options) {
|
|
6174
6853
|
var _a, _b;
|
|
6175
|
-
const
|
|
6854
|
+
const changed_orientation = typeof options.orientation === 'string' &&
|
|
6176
6855
|
this.gridview.orientation !== options.orientation;
|
|
6177
|
-
const
|
|
6856
|
+
const changed_floatingGroupBounds = options.floatingGroupBounds !== undefined &&
|
|
6178
6857
|
options.floatingGroupBounds !== this.options.floatingGroupBounds;
|
|
6858
|
+
const changed_rootOverlayOptions = options.rootOverlayModel !== undefined &&
|
|
6859
|
+
options.rootOverlayModel !== this.options.rootOverlayModel;
|
|
6179
6860
|
this._options = Object.assign(Object.assign({}, this.options), options);
|
|
6180
|
-
if (
|
|
6861
|
+
if (changed_orientation) {
|
|
6181
6862
|
this.gridview.orientation = options.orientation;
|
|
6182
6863
|
}
|
|
6183
|
-
if (
|
|
6184
|
-
for (const group of this.
|
|
6864
|
+
if (changed_floatingGroupBounds) {
|
|
6865
|
+
for (const group of this._floatingGroups) {
|
|
6185
6866
|
switch (this.options.floatingGroupBounds) {
|
|
6186
6867
|
case 'boundedWithinViewport':
|
|
6187
6868
|
group.overlay.minimumInViewportHeight = undefined;
|
|
@@ -6202,12 +6883,15 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
6202
6883
|
group.overlay.setBounds({});
|
|
6203
6884
|
}
|
|
6204
6885
|
}
|
|
6886
|
+
if (changed_rootOverlayOptions) {
|
|
6887
|
+
this._rootDropTarget.setOverlayModel(options.rootOverlayModel);
|
|
6888
|
+
}
|
|
6205
6889
|
this.layout(this.gridview.width, this.gridview.height, true);
|
|
6206
6890
|
}
|
|
6207
6891
|
layout(width, height, forceResize) {
|
|
6208
6892
|
super.layout(width, height, forceResize);
|
|
6209
|
-
if (this.
|
|
6210
|
-
for (const floating of this.
|
|
6893
|
+
if (this._floatingGroups) {
|
|
6894
|
+
for (const floating of this._floatingGroups) {
|
|
6211
6895
|
// ensure floting groups stay within visible boundaries
|
|
6212
6896
|
floating.overlay.setBounds();
|
|
6213
6897
|
}
|
|
@@ -6275,10 +6959,16 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
6275
6959
|
collection[panel.id] = panel.toJSON();
|
|
6276
6960
|
return collection;
|
|
6277
6961
|
}, {});
|
|
6278
|
-
const floats = this.
|
|
6962
|
+
const floats = this._floatingGroups.map((group) => {
|
|
6279
6963
|
return {
|
|
6280
|
-
data:
|
|
6281
|
-
position:
|
|
6964
|
+
data: group.group.toJSON(),
|
|
6965
|
+
position: group.overlay.toJSON(),
|
|
6966
|
+
};
|
|
6967
|
+
});
|
|
6968
|
+
const popoutGroups = this._popoutGroups.map((group) => {
|
|
6969
|
+
return {
|
|
6970
|
+
data: group.group.toJSON(),
|
|
6971
|
+
position: group.window.dimensions(),
|
|
6282
6972
|
};
|
|
6283
6973
|
});
|
|
6284
6974
|
const result = {
|
|
@@ -6289,10 +6979,13 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
6289
6979
|
if (floats.length > 0) {
|
|
6290
6980
|
result.floatingGroups = floats;
|
|
6291
6981
|
}
|
|
6982
|
+
if (popoutGroups.length > 0) {
|
|
6983
|
+
result.popoutGroups = popoutGroups;
|
|
6984
|
+
}
|
|
6292
6985
|
return result;
|
|
6293
6986
|
}
|
|
6294
6987
|
fromJSON(data) {
|
|
6295
|
-
var _a;
|
|
6988
|
+
var _a, _b;
|
|
6296
6989
|
this.clear();
|
|
6297
6990
|
if (typeof data !== 'object' || data === null) {
|
|
6298
6991
|
throw new Error('serialized layout must be a non-null object');
|
|
@@ -6359,7 +7052,16 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
6359
7052
|
width: position.width,
|
|
6360
7053
|
}, { skipRemoveGroup: true, inDragMode: false });
|
|
6361
7054
|
}
|
|
6362
|
-
|
|
7055
|
+
const serializedPopoutGroups = (_b = data.popoutGroups) !== null && _b !== void 0 ? _b : [];
|
|
7056
|
+
for (const serializedPopoutGroup of serializedPopoutGroups) {
|
|
7057
|
+
const { data, position } = serializedPopoutGroup;
|
|
7058
|
+
const group = createGroupFromSerializedState(data);
|
|
7059
|
+
this.addPopoutGroup(group, {
|
|
7060
|
+
skipRemoveGroup: true,
|
|
7061
|
+
position: position !== null && position !== void 0 ? position : undefined,
|
|
7062
|
+
});
|
|
7063
|
+
}
|
|
7064
|
+
for (const floatingGroup of this._floatingGroups) {
|
|
6363
7065
|
floatingGroup.overlay.setBounds();
|
|
6364
7066
|
}
|
|
6365
7067
|
if (typeof activeGroup === 'string') {
|
|
@@ -6391,7 +7093,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
6391
7093
|
this._onDidRemoveGroup.fire(group);
|
|
6392
7094
|
}
|
|
6393
7095
|
// iterate over a reassigned array since original array will be modified
|
|
6394
|
-
for (const floatingGroup of [...this.
|
|
7096
|
+
for (const floatingGroup of [...this._floatingGroups]) {
|
|
6395
7097
|
floatingGroup.dispose();
|
|
6396
7098
|
}
|
|
6397
7099
|
// fires clean-up events and clears the underlying HTML gridview.
|
|
@@ -6483,7 +7185,8 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
6483
7185
|
group.model.openPanel(panel);
|
|
6484
7186
|
this.doSetGroupAndPanelActive(group);
|
|
6485
7187
|
}
|
|
6486
|
-
else if (referenceGroup.api.
|
|
7188
|
+
else if (referenceGroup.api.location === 'floating' ||
|
|
7189
|
+
target === 'center') {
|
|
6487
7190
|
panel = this.createPanel(options, referenceGroup);
|
|
6488
7191
|
referenceGroup.model.openPanel(panel);
|
|
6489
7192
|
}
|
|
@@ -6527,6 +7230,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
6527
7230
|
}
|
|
6528
7231
|
group.model.removePanel(panel);
|
|
6529
7232
|
if (!options.skipDispose) {
|
|
7233
|
+
this.overlayRenderContainer.detatch(panel);
|
|
6530
7234
|
panel.dispose();
|
|
6531
7235
|
}
|
|
6532
7236
|
if (group.size === 0 && options.removeEmptyGroup) {
|
|
@@ -6543,7 +7247,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
6543
7247
|
}
|
|
6544
7248
|
updateWatermark() {
|
|
6545
7249
|
var _a, _b;
|
|
6546
|
-
if (this.groups.filter((x) =>
|
|
7250
|
+
if (this.groups.filter((x) => x.api.location === 'grid').length === 0) {
|
|
6547
7251
|
if (!this.watermark) {
|
|
6548
7252
|
this.watermark = this.createWatermarkComponent();
|
|
6549
7253
|
this.watermark.init({
|
|
@@ -6618,19 +7322,40 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
6618
7322
|
}
|
|
6619
7323
|
}
|
|
6620
7324
|
doRemoveGroup(group, options) {
|
|
6621
|
-
|
|
6622
|
-
|
|
6623
|
-
if (
|
|
6624
|
-
|
|
6625
|
-
|
|
6626
|
-
|
|
7325
|
+
if (group.api.location === 'floating') {
|
|
7326
|
+
const floatingGroup = this._floatingGroups.find((_) => _.group === group);
|
|
7327
|
+
if (floatingGroup) {
|
|
7328
|
+
if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {
|
|
7329
|
+
floatingGroup.group.dispose();
|
|
7330
|
+
this._groups.delete(group.id);
|
|
7331
|
+
this._onDidRemoveGroup.fire(group);
|
|
7332
|
+
}
|
|
7333
|
+
remove(this._floatingGroups, floatingGroup);
|
|
7334
|
+
floatingGroup.dispose();
|
|
7335
|
+
if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {
|
|
7336
|
+
const groups = Array.from(this._groups.values());
|
|
7337
|
+
this.doSetGroupActive(groups.length > 0 ? groups[0].value : undefined);
|
|
7338
|
+
}
|
|
7339
|
+
return floatingGroup.group;
|
|
6627
7340
|
}
|
|
6628
|
-
|
|
6629
|
-
|
|
6630
|
-
|
|
6631
|
-
|
|
7341
|
+
throw new Error('failed to find floating group');
|
|
7342
|
+
}
|
|
7343
|
+
if (group.api.location === 'popout') {
|
|
7344
|
+
const selectedGroup = this._popoutGroups.find((_) => _.group === group);
|
|
7345
|
+
if (selectedGroup) {
|
|
7346
|
+
if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {
|
|
7347
|
+
selectedGroup.group.dispose();
|
|
7348
|
+
this._groups.delete(group.id);
|
|
7349
|
+
this._onDidRemoveGroup.fire(group);
|
|
7350
|
+
}
|
|
7351
|
+
selectedGroup.dispose();
|
|
7352
|
+
if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {
|
|
7353
|
+
const groups = Array.from(this._groups.values());
|
|
7354
|
+
this.doSetGroupActive(groups.length > 0 ? groups[0].value : undefined);
|
|
7355
|
+
}
|
|
7356
|
+
return selectedGroup.group;
|
|
6632
7357
|
}
|
|
6633
|
-
|
|
7358
|
+
throw new Error('failed to find popout group');
|
|
6634
7359
|
}
|
|
6635
7360
|
return super.doRemoveGroup(group, options);
|
|
6636
7361
|
}
|
|
@@ -6662,8 +7387,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
6662
7387
|
const targetLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, destinationTarget);
|
|
6663
7388
|
if (sourceGroup && sourceGroup.size < 2) {
|
|
6664
7389
|
const [targetParentLocation, to] = tail(targetLocation);
|
|
6665
|
-
|
|
6666
|
-
if (!isFloating) {
|
|
7390
|
+
if (sourceGroup.api.location === 'grid') {
|
|
6667
7391
|
const sourceLocation = getGridLocation(sourceGroup.element);
|
|
6668
7392
|
const [sourceParentLocation, from] = tail(sourceLocation);
|
|
6669
7393
|
if (sequenceEquals(sourceParentLocation, targetParentLocation)) {
|
|
@@ -6709,12 +7433,25 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
6709
7433
|
}
|
|
6710
7434
|
}
|
|
6711
7435
|
else {
|
|
6712
|
-
|
|
6713
|
-
|
|
6714
|
-
|
|
6715
|
-
|
|
6716
|
-
|
|
6717
|
-
|
|
7436
|
+
switch (sourceGroup.api.location) {
|
|
7437
|
+
case 'grid':
|
|
7438
|
+
this.gridview.removeView(getGridLocation(sourceGroup.element));
|
|
7439
|
+
break;
|
|
7440
|
+
case 'floating': {
|
|
7441
|
+
const selectedFloatingGroup = this._floatingGroups.find((x) => x.group === sourceGroup);
|
|
7442
|
+
if (!selectedFloatingGroup) {
|
|
7443
|
+
throw new Error('failed to find floating group');
|
|
7444
|
+
}
|
|
7445
|
+
selectedFloatingGroup.dispose();
|
|
7446
|
+
break;
|
|
7447
|
+
}
|
|
7448
|
+
case 'popout': {
|
|
7449
|
+
const selectedPopoutGroup = this._popoutGroups.find((x) => x.group === sourceGroup);
|
|
7450
|
+
if (!selectedPopoutGroup) {
|
|
7451
|
+
throw new Error('failed to find popout group');
|
|
7452
|
+
}
|
|
7453
|
+
selectedPopoutGroup.dispose();
|
|
7454
|
+
}
|
|
6718
7455
|
}
|
|
6719
7456
|
const referenceLocation = getGridLocation(referenceGroup.element);
|
|
6720
7457
|
const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, target);
|
|
@@ -6776,7 +7513,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
6776
7513
|
const contentComponent = options.component;
|
|
6777
7514
|
const tabComponent = (_a = options.tabComponent) !== null && _a !== void 0 ? _a : this.options.defaultTabComponent;
|
|
6778
7515
|
const view = new DockviewPanelModel(this, options.id, contentComponent, tabComponent);
|
|
6779
|
-
const panel = new DockviewPanel(options.id, this, this._api, group, view);
|
|
7516
|
+
const panel = new DockviewPanel(options.id, this, this._api, group, view, { renderer: options.renderer });
|
|
6780
7517
|
panel.init({
|
|
6781
7518
|
title: (_b = options.title) !== null && _b !== void 0 ? _b : options.id,
|
|
6782
7519
|
params: (_c = options === null || options === void 0 ? void 0 : options.params) !== null && _c !== void 0 ? _c : {},
|