dockview-core 1.9.1 → 1.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/api/component.api.d.ts +25 -6
- package/dist/cjs/api/component.api.js +27 -5
- package/dist/cjs/api/dockviewGroupPanelApi.d.ts +7 -1
- package/dist/cjs/api/dockviewGroupPanelApi.js +22 -3
- package/dist/cjs/api/dockviewPanelApi.d.ts +23 -7
- package/dist/cjs/api/dockviewPanelApi.js +49 -12
- package/dist/cjs/api/gridviewPanelApi.d.ts +0 -1
- package/dist/cjs/api/gridviewPanelApi.js +1 -4
- package/dist/cjs/api/panelApi.d.ts +20 -9
- package/dist/cjs/api/panelApi.js +30 -30
- package/dist/cjs/api/paneviewPanelApi.d.ts +0 -1
- package/dist/cjs/api/paneviewPanelApi.js +0 -1
- package/dist/cjs/api/splitviewPanelApi.d.ts +0 -1
- package/dist/cjs/api/splitviewPanelApi.js +0 -1
- package/dist/cjs/array.d.ts +0 -1
- package/dist/cjs/array.js +0 -1
- package/dist/cjs/constants.d.ts +0 -1
- package/dist/cjs/constants.js +0 -1
- package/dist/cjs/dnd/abstractDragHandler.d.ts +0 -1
- package/dist/cjs/dnd/abstractDragHandler.js +0 -1
- package/dist/cjs/dnd/dataTransfer.d.ts +0 -1
- package/dist/cjs/dnd/dataTransfer.js +0 -1
- package/dist/cjs/dnd/dnd.d.ts +0 -1
- package/dist/cjs/dnd/dnd.js +0 -1
- package/dist/cjs/dnd/droptarget.d.ts +20 -9
- package/dist/cjs/dnd/droptarget.js +71 -14
- package/dist/cjs/dnd/ghost.d.ts +0 -1
- package/dist/cjs/dnd/ghost.js +0 -1
- package/dist/cjs/dnd/groupDragHandler.d.ts +0 -1
- package/dist/cjs/dnd/groupDragHandler.js +1 -2
- package/dist/cjs/dnd/overlay.d.ts +0 -1
- package/dist/cjs/dnd/overlay.js +0 -1
- package/dist/cjs/dockview/components/panel/content.d.ts +0 -1
- package/dist/cjs/dockview/components/panel/content.js +8 -9
- package/dist/cjs/dockview/components/tab/defaultTab.d.ts +0 -1
- package/dist/cjs/dockview/components/tab/defaultTab.js +0 -1
- package/dist/cjs/dockview/components/tab/tab.d.ts +5 -13
- package/dist/cjs/dockview/components/tab/tab.js +5 -6
- package/dist/cjs/dockview/components/titlebar/tabsContainer.d.ts +17 -14
- package/dist/cjs/dockview/components/titlebar/tabsContainer.js +26 -22
- package/dist/cjs/dockview/components/titlebar/voidContainer.d.ts +3 -3
- package/dist/cjs/dockview/components/titlebar/voidContainer.js +5 -6
- package/dist/cjs/dockview/components/watermark/watermark.d.ts +0 -1
- package/dist/cjs/dockview/components/watermark/watermark.js +0 -1
- package/dist/cjs/dockview/deserializer.d.ts +0 -1
- package/dist/cjs/dockview/deserializer.js +0 -1
- package/dist/cjs/dockview/dockviewComponent.d.ts +86 -25
- package/dist/cjs/dockview/dockviewComponent.js +578 -198
- package/dist/cjs/dockview/dockviewFloatingGroupPanel.d.ts +0 -1
- package/dist/cjs/dockview/dockviewFloatingGroupPanel.js +0 -1
- package/dist/cjs/dockview/dockviewGroupPanel.d.ts +1 -1
- package/dist/cjs/dockview/dockviewGroupPanel.js +6 -1
- package/dist/cjs/dockview/dockviewGroupPanelModel.d.ts +79 -34
- package/dist/cjs/dockview/dockviewGroupPanelModel.js +227 -57
- package/dist/cjs/dockview/dockviewPanel.d.ts +8 -3
- package/dist/cjs/dockview/dockviewPanel.js +39 -12
- package/dist/cjs/dockview/dockviewPanelModel.d.ts +1 -4
- package/dist/cjs/dockview/dockviewPanelModel.js +2 -22
- package/dist/cjs/dockview/options.d.ts +9 -4
- package/dist/cjs/dockview/options.js +0 -1
- package/dist/cjs/dockview/types.d.ts +1 -11
- package/dist/cjs/dockview/types.js +0 -9
- package/dist/cjs/dom.d.ts +0 -1
- package/dist/cjs/dom.js +0 -1
- package/dist/cjs/events.d.ts +10 -1
- package/dist/cjs/events.js +25 -2
- package/dist/cjs/gridview/baseComponentGridview.d.ts +15 -16
- package/dist/cjs/gridview/baseComponentGridview.js +37 -27
- package/dist/cjs/gridview/basePanelView.d.ts +0 -1
- package/dist/cjs/gridview/basePanelView.js +7 -2
- package/dist/cjs/gridview/branchNode.d.ts +3 -2
- package/dist/cjs/gridview/branchNode.js +12 -2
- package/dist/cjs/gridview/gridview.d.ts +5 -3
- package/dist/cjs/gridview/gridview.js +54 -21
- package/dist/cjs/gridview/gridviewComponent.d.ts +10 -2
- package/dist/cjs/gridview/gridviewComponent.js +14 -1
- package/dist/cjs/gridview/gridviewPanel.d.ts +3 -3
- package/dist/cjs/gridview/gridviewPanel.js +4 -5
- package/dist/cjs/gridview/leafNode.d.ts +0 -1
- package/dist/cjs/gridview/leafNode.js +0 -1
- package/dist/cjs/gridview/options.d.ts +1 -2
- package/dist/cjs/gridview/options.js +0 -1
- package/dist/cjs/gridview/types.d.ts +0 -1
- package/dist/cjs/gridview/types.js +0 -1
- package/dist/cjs/index.d.ts +2 -2
- package/dist/cjs/index.js +0 -2
- package/dist/cjs/lifecycle.d.ts +2 -3
- package/dist/cjs/lifecycle.js +5 -2
- package/dist/cjs/math.d.ts +0 -1
- package/dist/cjs/math.js +0 -1
- package/dist/cjs/overlayRenderContainer.d.ts +1 -1
- package/dist/cjs/overlayRenderContainer.js +8 -4
- package/dist/cjs/panel/componentFactory.d.ts +0 -1
- package/dist/cjs/panel/componentFactory.js +0 -1
- package/dist/cjs/panel/types.d.ts +1 -2
- package/dist/cjs/panel/types.js +0 -1
- package/dist/cjs/paneview/defaultPaneviewHeader.d.ts +0 -1
- package/dist/cjs/paneview/defaultPaneviewHeader.js +0 -1
- package/dist/cjs/paneview/draggablePaneviewPanel.d.ts +0 -1
- package/dist/cjs/paneview/draggablePaneviewPanel.js +0 -1
- package/dist/cjs/paneview/options.d.ts +1 -2
- package/dist/cjs/paneview/options.js +0 -1
- package/dist/cjs/paneview/paneview.d.ts +0 -1
- package/dist/cjs/paneview/paneview.js +0 -1
- package/dist/cjs/paneview/paneviewComponent.d.ts +0 -1
- package/dist/cjs/paneview/paneviewComponent.js +0 -1
- package/dist/cjs/paneview/paneviewPanel.d.ts +0 -1
- package/dist/cjs/paneview/paneviewPanel.js +0 -1
- package/dist/cjs/popoutWindow.d.ts +15 -4
- package/dist/cjs/popoutWindow.js +140 -56
- package/dist/cjs/resizable.d.ts +1 -2
- package/dist/cjs/resizable.js +1 -10
- package/dist/cjs/splitview/options.d.ts +3 -7
- package/dist/cjs/splitview/options.js +0 -1
- package/dist/cjs/splitview/splitview.d.ts +3 -1
- package/dist/cjs/splitview/splitview.js +12 -1
- package/dist/cjs/splitview/splitviewComponent.d.ts +0 -1
- package/dist/cjs/splitview/splitviewComponent.js +0 -1
- package/dist/cjs/splitview/splitviewPanel.d.ts +2 -3
- package/dist/cjs/splitview/splitviewPanel.js +3 -4
- package/dist/cjs/splitview/viewItem.d.ts +0 -1
- package/dist/cjs/splitview/viewItem.js +0 -1
- package/dist/cjs/svg.d.ts +0 -1
- package/dist/cjs/svg.js +0 -1
- package/dist/cjs/types.d.ts +0 -1
- package/dist/cjs/types.js +0 -1
- package/dist/dockview-core.amd.js +1265 -529
- 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 +1264 -528
- package/dist/dockview-core.amd.noStyle.js.map +1 -1
- package/dist/dockview-core.cjs.js +1265 -529
- package/dist/dockview-core.cjs.js.map +1 -1
- package/dist/dockview-core.esm.js +1263 -530
- 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 +1265 -529
- 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 +1264 -528
- package/dist/dockview-core.noStyle.js.map +1 -1
- package/dist/esm/api/component.api.d.ts +25 -6
- package/dist/esm/api/component.api.js +19 -5
- package/dist/esm/api/dockviewGroupPanelApi.d.ts +7 -1
- package/dist/esm/api/dockviewGroupPanelApi.js +22 -3
- package/dist/esm/api/dockviewPanelApi.d.ts +23 -7
- package/dist/esm/api/dockviewPanelApi.js +46 -13
- package/dist/esm/api/gridviewPanelApi.d.ts +0 -1
- package/dist/esm/api/gridviewPanelApi.js +1 -4
- package/dist/esm/api/panelApi.d.ts +20 -9
- package/dist/esm/api/panelApi.js +23 -30
- package/dist/esm/api/paneviewPanelApi.d.ts +0 -1
- package/dist/esm/api/paneviewPanelApi.js +0 -1
- package/dist/esm/api/splitviewPanelApi.d.ts +0 -1
- package/dist/esm/api/splitviewPanelApi.js +0 -1
- package/dist/esm/array.d.ts +0 -1
- package/dist/esm/array.js +0 -1
- package/dist/esm/constants.d.ts +0 -1
- package/dist/esm/constants.js +0 -1
- package/dist/esm/dnd/abstractDragHandler.d.ts +0 -1
- package/dist/esm/dnd/abstractDragHandler.js +0 -1
- package/dist/esm/dnd/dataTransfer.d.ts +0 -1
- package/dist/esm/dnd/dataTransfer.js +0 -1
- package/dist/esm/dnd/dnd.d.ts +0 -1
- package/dist/esm/dnd/dnd.js +0 -1
- package/dist/esm/dnd/droptarget.d.ts +20 -9
- package/dist/esm/dnd/droptarget.js +59 -14
- package/dist/esm/dnd/ghost.d.ts +0 -1
- package/dist/esm/dnd/ghost.js +0 -1
- package/dist/esm/dnd/groupDragHandler.d.ts +0 -1
- package/dist/esm/dnd/groupDragHandler.js +1 -2
- package/dist/esm/dnd/overlay.d.ts +0 -1
- package/dist/esm/dnd/overlay.js +0 -1
- package/dist/esm/dockview/components/panel/content.d.ts +0 -1
- package/dist/esm/dockview/components/panel/content.js +8 -9
- package/dist/esm/dockview/components/tab/defaultTab.d.ts +0 -1
- package/dist/esm/dockview/components/tab/defaultTab.js +0 -1
- package/dist/esm/dockview/components/tab/tab.d.ts +5 -13
- package/dist/esm/dockview/components/tab/tab.js +6 -7
- package/dist/esm/dockview/components/titlebar/tabsContainer.d.ts +17 -14
- package/dist/esm/dockview/components/titlebar/tabsContainer.js +24 -20
- package/dist/esm/dockview/components/titlebar/voidContainer.d.ts +3 -3
- package/dist/esm/dockview/components/titlebar/voidContainer.js +6 -7
- package/dist/esm/dockview/components/watermark/watermark.d.ts +0 -1
- package/dist/esm/dockview/components/watermark/watermark.js +0 -1
- package/dist/esm/dockview/deserializer.d.ts +0 -1
- package/dist/esm/dockview/deserializer.js +0 -1
- package/dist/esm/dockview/dockviewComponent.d.ts +86 -25
- package/dist/esm/dockview/dockviewComponent.js +521 -163
- package/dist/esm/dockview/dockviewFloatingGroupPanel.d.ts +0 -1
- package/dist/esm/dockview/dockviewFloatingGroupPanel.js +0 -1
- package/dist/esm/dockview/dockviewGroupPanel.d.ts +1 -1
- package/dist/esm/dockview/dockviewGroupPanel.js +6 -1
- package/dist/esm/dockview/dockviewGroupPanelModel.d.ts +79 -34
- package/dist/esm/dockview/dockviewGroupPanelModel.js +170 -53
- package/dist/esm/dockview/dockviewPanel.d.ts +8 -3
- package/dist/esm/dockview/dockviewPanel.js +39 -12
- package/dist/esm/dockview/dockviewPanelModel.d.ts +1 -4
- package/dist/esm/dockview/dockviewPanelModel.js +2 -22
- package/dist/esm/dockview/options.d.ts +9 -4
- package/dist/esm/dockview/options.js +0 -1
- package/dist/esm/dockview/types.d.ts +1 -11
- package/dist/esm/dockview/types.js +1 -8
- package/dist/esm/dom.d.ts +0 -1
- package/dist/esm/dom.js +0 -1
- package/dist/esm/events.d.ts +10 -1
- package/dist/esm/events.js +14 -1
- package/dist/esm/gridview/baseComponentGridview.d.ts +15 -16
- package/dist/esm/gridview/baseComponentGridview.js +33 -27
- package/dist/esm/gridview/basePanelView.d.ts +0 -1
- package/dist/esm/gridview/basePanelView.js +7 -2
- package/dist/esm/gridview/branchNode.d.ts +3 -2
- package/dist/esm/gridview/branchNode.js +8 -2
- package/dist/esm/gridview/gridview.d.ts +5 -3
- package/dist/esm/gridview/gridview.js +49 -20
- package/dist/esm/gridview/gridviewComponent.d.ts +10 -2
- package/dist/esm/gridview/gridviewComponent.js +14 -1
- package/dist/esm/gridview/gridviewPanel.d.ts +3 -3
- package/dist/esm/gridview/gridviewPanel.js +4 -5
- package/dist/esm/gridview/leafNode.d.ts +0 -1
- package/dist/esm/gridview/leafNode.js +0 -1
- package/dist/esm/gridview/options.d.ts +1 -2
- package/dist/esm/gridview/options.js +0 -1
- package/dist/esm/gridview/types.d.ts +0 -1
- package/dist/esm/gridview/types.js +0 -1
- package/dist/esm/index.d.ts +2 -2
- package/dist/esm/index.js +0 -2
- package/dist/esm/lifecycle.d.ts +2 -3
- package/dist/esm/lifecycle.js +5 -2
- package/dist/esm/math.d.ts +0 -1
- package/dist/esm/math.js +0 -1
- package/dist/esm/overlayRenderContainer.d.ts +1 -1
- package/dist/esm/overlayRenderContainer.js +8 -4
- package/dist/esm/panel/componentFactory.d.ts +0 -1
- package/dist/esm/panel/componentFactory.js +0 -1
- package/dist/esm/panel/types.d.ts +1 -2
- package/dist/esm/panel/types.js +0 -1
- package/dist/esm/paneview/defaultPaneviewHeader.d.ts +0 -1
- package/dist/esm/paneview/defaultPaneviewHeader.js +0 -1
- package/dist/esm/paneview/draggablePaneviewPanel.d.ts +0 -1
- package/dist/esm/paneview/draggablePaneviewPanel.js +0 -1
- package/dist/esm/paneview/options.d.ts +1 -2
- package/dist/esm/paneview/options.js +0 -1
- package/dist/esm/paneview/paneview.d.ts +0 -1
- package/dist/esm/paneview/paneview.js +0 -1
- package/dist/esm/paneview/paneviewComponent.d.ts +0 -1
- package/dist/esm/paneview/paneviewComponent.js +0 -1
- package/dist/esm/paneview/paneviewPanel.d.ts +0 -1
- package/dist/esm/paneview/paneviewPanel.js +0 -1
- package/dist/esm/popoutWindow.d.ts +15 -4
- package/dist/esm/popoutWindow.js +105 -52
- package/dist/esm/resizable.d.ts +1 -2
- package/dist/esm/resizable.js +1 -10
- package/dist/esm/splitview/options.d.ts +3 -7
- package/dist/esm/splitview/options.js +0 -1
- package/dist/esm/splitview/splitview.d.ts +3 -1
- package/dist/esm/splitview/splitview.js +8 -1
- package/dist/esm/splitview/splitviewComponent.d.ts +0 -1
- package/dist/esm/splitview/splitviewComponent.js +0 -1
- package/dist/esm/splitview/splitviewPanel.d.ts +2 -3
- package/dist/esm/splitview/splitviewPanel.js +3 -4
- package/dist/esm/splitview/viewItem.d.ts +0 -1
- package/dist/esm/splitview/viewItem.js +0 -1
- package/dist/esm/svg.d.ts +0 -1
- package/dist/esm/svg.js +0 -1
- package/dist/esm/types.d.ts +0 -1
- package/dist/esm/types.js +0 -1
- package/dist/styles/dockview.css +20 -6
- package/package.json +3 -3
- package/dist/cjs/api/component.api.d.ts.map +0 -1
- package/dist/cjs/api/component.api.js.map +0 -1
- package/dist/cjs/api/dockviewGroupPanelApi.d.ts.map +0 -1
- package/dist/cjs/api/dockviewGroupPanelApi.js.map +0 -1
- package/dist/cjs/api/dockviewPanelApi.d.ts.map +0 -1
- package/dist/cjs/api/dockviewPanelApi.js.map +0 -1
- package/dist/cjs/api/gridviewPanelApi.d.ts.map +0 -1
- package/dist/cjs/api/gridviewPanelApi.js.map +0 -1
- package/dist/cjs/api/panelApi.d.ts.map +0 -1
- package/dist/cjs/api/panelApi.js.map +0 -1
- package/dist/cjs/api/paneviewPanelApi.d.ts.map +0 -1
- package/dist/cjs/api/paneviewPanelApi.js.map +0 -1
- package/dist/cjs/api/splitviewPanelApi.d.ts.map +0 -1
- package/dist/cjs/api/splitviewPanelApi.js.map +0 -1
- package/dist/cjs/array.d.ts.map +0 -1
- package/dist/cjs/array.js.map +0 -1
- package/dist/cjs/constants.d.ts.map +0 -1
- package/dist/cjs/constants.js.map +0 -1
- package/dist/cjs/dnd/abstractDragHandler.d.ts.map +0 -1
- package/dist/cjs/dnd/abstractDragHandler.js.map +0 -1
- package/dist/cjs/dnd/dataTransfer.d.ts.map +0 -1
- package/dist/cjs/dnd/dataTransfer.js.map +0 -1
- package/dist/cjs/dnd/dnd.d.ts.map +0 -1
- package/dist/cjs/dnd/dnd.js.map +0 -1
- package/dist/cjs/dnd/droptarget.d.ts.map +0 -1
- package/dist/cjs/dnd/droptarget.js.map +0 -1
- package/dist/cjs/dnd/ghost.d.ts.map +0 -1
- package/dist/cjs/dnd/ghost.js.map +0 -1
- package/dist/cjs/dnd/groupDragHandler.d.ts.map +0 -1
- package/dist/cjs/dnd/groupDragHandler.js.map +0 -1
- package/dist/cjs/dnd/overlay.d.ts.map +0 -1
- package/dist/cjs/dnd/overlay.js.map +0 -1
- package/dist/cjs/dockview/components/panel/content.d.ts.map +0 -1
- package/dist/cjs/dockview/components/panel/content.js.map +0 -1
- package/dist/cjs/dockview/components/tab/defaultTab.d.ts.map +0 -1
- package/dist/cjs/dockview/components/tab/defaultTab.js.map +0 -1
- package/dist/cjs/dockview/components/tab/tab.d.ts.map +0 -1
- package/dist/cjs/dockview/components/tab/tab.js.map +0 -1
- package/dist/cjs/dockview/components/titlebar/tabsContainer.d.ts.map +0 -1
- package/dist/cjs/dockview/components/titlebar/tabsContainer.js.map +0 -1
- package/dist/cjs/dockview/components/titlebar/voidContainer.d.ts.map +0 -1
- package/dist/cjs/dockview/components/titlebar/voidContainer.js.map +0 -1
- package/dist/cjs/dockview/components/watermark/watermark.d.ts.map +0 -1
- package/dist/cjs/dockview/components/watermark/watermark.js.map +0 -1
- package/dist/cjs/dockview/deserializer.d.ts.map +0 -1
- package/dist/cjs/dockview/deserializer.js.map +0 -1
- package/dist/cjs/dockview/dockviewComponent.d.ts.map +0 -1
- package/dist/cjs/dockview/dockviewComponent.js.map +0 -1
- package/dist/cjs/dockview/dockviewFloatingGroupPanel.d.ts.map +0 -1
- package/dist/cjs/dockview/dockviewFloatingGroupPanel.js.map +0 -1
- package/dist/cjs/dockview/dockviewGroupPanel.d.ts.map +0 -1
- package/dist/cjs/dockview/dockviewGroupPanel.js.map +0 -1
- package/dist/cjs/dockview/dockviewGroupPanelModel.d.ts.map +0 -1
- package/dist/cjs/dockview/dockviewGroupPanelModel.js.map +0 -1
- package/dist/cjs/dockview/dockviewPanel.d.ts.map +0 -1
- package/dist/cjs/dockview/dockviewPanel.js.map +0 -1
- package/dist/cjs/dockview/dockviewPanelModel.d.ts.map +0 -1
- package/dist/cjs/dockview/dockviewPanelModel.js.map +0 -1
- package/dist/cjs/dockview/dockviewPopoutGroupPanel.d.ts +0 -16
- package/dist/cjs/dockview/dockviewPopoutGroupPanel.d.ts.map +0 -1
- package/dist/cjs/dockview/dockviewPopoutGroupPanel.js +0 -50
- package/dist/cjs/dockview/dockviewPopoutGroupPanel.js.map +0 -1
- package/dist/cjs/dockview/options.d.ts.map +0 -1
- package/dist/cjs/dockview/options.js.map +0 -1
- package/dist/cjs/dockview/types.d.ts.map +0 -1
- package/dist/cjs/dockview/types.js.map +0 -1
- package/dist/cjs/dom.d.ts.map +0 -1
- package/dist/cjs/dom.js.map +0 -1
- package/dist/cjs/events.d.ts.map +0 -1
- package/dist/cjs/events.js.map +0 -1
- package/dist/cjs/gridview/baseComponentGridview.d.ts.map +0 -1
- package/dist/cjs/gridview/baseComponentGridview.js.map +0 -1
- package/dist/cjs/gridview/basePanelView.d.ts.map +0 -1
- package/dist/cjs/gridview/basePanelView.js.map +0 -1
- package/dist/cjs/gridview/branchNode.d.ts.map +0 -1
- package/dist/cjs/gridview/branchNode.js.map +0 -1
- package/dist/cjs/gridview/gridview.d.ts.map +0 -1
- package/dist/cjs/gridview/gridview.js.map +0 -1
- package/dist/cjs/gridview/gridviewComponent.d.ts.map +0 -1
- package/dist/cjs/gridview/gridviewComponent.js.map +0 -1
- package/dist/cjs/gridview/gridviewPanel.d.ts.map +0 -1
- package/dist/cjs/gridview/gridviewPanel.js.map +0 -1
- package/dist/cjs/gridview/leafNode.d.ts.map +0 -1
- package/dist/cjs/gridview/leafNode.js.map +0 -1
- package/dist/cjs/gridview/options.d.ts.map +0 -1
- package/dist/cjs/gridview/options.js.map +0 -1
- package/dist/cjs/gridview/types.d.ts.map +0 -1
- package/dist/cjs/gridview/types.js.map +0 -1
- package/dist/cjs/index.d.ts.map +0 -1
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/lifecycle.d.ts.map +0 -1
- package/dist/cjs/lifecycle.js.map +0 -1
- package/dist/cjs/math.d.ts.map +0 -1
- package/dist/cjs/math.js.map +0 -1
- package/dist/cjs/overlayRenderContainer.d.ts.map +0 -1
- package/dist/cjs/overlayRenderContainer.js.map +0 -1
- package/dist/cjs/panel/componentFactory.d.ts.map +0 -1
- package/dist/cjs/panel/componentFactory.js.map +0 -1
- package/dist/cjs/panel/types.d.ts.map +0 -1
- package/dist/cjs/panel/types.js.map +0 -1
- package/dist/cjs/paneview/defaultPaneviewHeader.d.ts.map +0 -1
- package/dist/cjs/paneview/defaultPaneviewHeader.js.map +0 -1
- package/dist/cjs/paneview/draggablePaneviewPanel.d.ts.map +0 -1
- package/dist/cjs/paneview/draggablePaneviewPanel.js.map +0 -1
- package/dist/cjs/paneview/options.d.ts.map +0 -1
- package/dist/cjs/paneview/options.js.map +0 -1
- package/dist/cjs/paneview/paneview.d.ts.map +0 -1
- package/dist/cjs/paneview/paneview.js.map +0 -1
- package/dist/cjs/paneview/paneviewComponent.d.ts.map +0 -1
- package/dist/cjs/paneview/paneviewComponent.js.map +0 -1
- package/dist/cjs/paneview/paneviewPanel.d.ts.map +0 -1
- package/dist/cjs/paneview/paneviewPanel.js.map +0 -1
- package/dist/cjs/popoutWindow.d.ts.map +0 -1
- package/dist/cjs/popoutWindow.js.map +0 -1
- package/dist/cjs/resizable.d.ts.map +0 -1
- package/dist/cjs/resizable.js.map +0 -1
- package/dist/cjs/splitview/options.d.ts.map +0 -1
- package/dist/cjs/splitview/options.js.map +0 -1
- package/dist/cjs/splitview/splitview.d.ts.map +0 -1
- package/dist/cjs/splitview/splitview.js.map +0 -1
- package/dist/cjs/splitview/splitviewComponent.d.ts.map +0 -1
- package/dist/cjs/splitview/splitviewComponent.js.map +0 -1
- package/dist/cjs/splitview/splitviewPanel.d.ts.map +0 -1
- package/dist/cjs/splitview/splitviewPanel.js.map +0 -1
- package/dist/cjs/splitview/viewItem.d.ts.map +0 -1
- package/dist/cjs/splitview/viewItem.js.map +0 -1
- package/dist/cjs/svg.d.ts.map +0 -1
- package/dist/cjs/svg.js.map +0 -1
- package/dist/cjs/types.d.ts.map +0 -1
- package/dist/cjs/types.js.map +0 -1
- package/dist/esm/api/component.api.d.ts.map +0 -1
- package/dist/esm/api/component.api.js.map +0 -1
- package/dist/esm/api/dockviewGroupPanelApi.d.ts.map +0 -1
- package/dist/esm/api/dockviewGroupPanelApi.js.map +0 -1
- package/dist/esm/api/dockviewPanelApi.d.ts.map +0 -1
- package/dist/esm/api/dockviewPanelApi.js.map +0 -1
- package/dist/esm/api/gridviewPanelApi.d.ts.map +0 -1
- package/dist/esm/api/gridviewPanelApi.js.map +0 -1
- package/dist/esm/api/panelApi.d.ts.map +0 -1
- package/dist/esm/api/panelApi.js.map +0 -1
- package/dist/esm/api/paneviewPanelApi.d.ts.map +0 -1
- package/dist/esm/api/paneviewPanelApi.js.map +0 -1
- package/dist/esm/api/splitviewPanelApi.d.ts.map +0 -1
- package/dist/esm/api/splitviewPanelApi.js.map +0 -1
- package/dist/esm/array.d.ts.map +0 -1
- package/dist/esm/array.js.map +0 -1
- package/dist/esm/constants.d.ts.map +0 -1
- package/dist/esm/constants.js.map +0 -1
- package/dist/esm/dnd/abstractDragHandler.d.ts.map +0 -1
- package/dist/esm/dnd/abstractDragHandler.js.map +0 -1
- package/dist/esm/dnd/dataTransfer.d.ts.map +0 -1
- package/dist/esm/dnd/dataTransfer.js.map +0 -1
- package/dist/esm/dnd/dnd.d.ts.map +0 -1
- package/dist/esm/dnd/dnd.js.map +0 -1
- package/dist/esm/dnd/droptarget.d.ts.map +0 -1
- package/dist/esm/dnd/droptarget.js.map +0 -1
- package/dist/esm/dnd/ghost.d.ts.map +0 -1
- package/dist/esm/dnd/ghost.js.map +0 -1
- package/dist/esm/dnd/groupDragHandler.d.ts.map +0 -1
- package/dist/esm/dnd/groupDragHandler.js.map +0 -1
- package/dist/esm/dnd/overlay.d.ts.map +0 -1
- package/dist/esm/dnd/overlay.js.map +0 -1
- package/dist/esm/dockview/components/panel/content.d.ts.map +0 -1
- package/dist/esm/dockview/components/panel/content.js.map +0 -1
- package/dist/esm/dockview/components/tab/defaultTab.d.ts.map +0 -1
- package/dist/esm/dockview/components/tab/defaultTab.js.map +0 -1
- package/dist/esm/dockview/components/tab/tab.d.ts.map +0 -1
- package/dist/esm/dockview/components/tab/tab.js.map +0 -1
- package/dist/esm/dockview/components/titlebar/tabsContainer.d.ts.map +0 -1
- package/dist/esm/dockview/components/titlebar/tabsContainer.js.map +0 -1
- package/dist/esm/dockview/components/titlebar/voidContainer.d.ts.map +0 -1
- package/dist/esm/dockview/components/titlebar/voidContainer.js.map +0 -1
- package/dist/esm/dockview/components/watermark/watermark.d.ts.map +0 -1
- package/dist/esm/dockview/components/watermark/watermark.js.map +0 -1
- package/dist/esm/dockview/deserializer.d.ts.map +0 -1
- package/dist/esm/dockview/deserializer.js.map +0 -1
- package/dist/esm/dockview/dockviewComponent.d.ts.map +0 -1
- package/dist/esm/dockview/dockviewComponent.js.map +0 -1
- package/dist/esm/dockview/dockviewFloatingGroupPanel.d.ts.map +0 -1
- package/dist/esm/dockview/dockviewFloatingGroupPanel.js.map +0 -1
- package/dist/esm/dockview/dockviewGroupPanel.d.ts.map +0 -1
- package/dist/esm/dockview/dockviewGroupPanel.js.map +0 -1
- package/dist/esm/dockview/dockviewGroupPanelModel.d.ts.map +0 -1
- package/dist/esm/dockview/dockviewGroupPanelModel.js.map +0 -1
- package/dist/esm/dockview/dockviewPanel.d.ts.map +0 -1
- package/dist/esm/dockview/dockviewPanel.js.map +0 -1
- package/dist/esm/dockview/dockviewPanelModel.d.ts.map +0 -1
- package/dist/esm/dockview/dockviewPanelModel.js.map +0 -1
- package/dist/esm/dockview/dockviewPopoutGroupPanel.d.ts +0 -16
- package/dist/esm/dockview/dockviewPopoutGroupPanel.d.ts.map +0 -1
- package/dist/esm/dockview/dockviewPopoutGroupPanel.js +0 -28
- package/dist/esm/dockview/dockviewPopoutGroupPanel.js.map +0 -1
- package/dist/esm/dockview/options.d.ts.map +0 -1
- package/dist/esm/dockview/options.js.map +0 -1
- package/dist/esm/dockview/types.d.ts.map +0 -1
- package/dist/esm/dockview/types.js.map +0 -1
- package/dist/esm/dom.d.ts.map +0 -1
- package/dist/esm/dom.js.map +0 -1
- package/dist/esm/events.d.ts.map +0 -1
- package/dist/esm/events.js.map +0 -1
- package/dist/esm/gridview/baseComponentGridview.d.ts.map +0 -1
- package/dist/esm/gridview/baseComponentGridview.js.map +0 -1
- package/dist/esm/gridview/basePanelView.d.ts.map +0 -1
- package/dist/esm/gridview/basePanelView.js.map +0 -1
- package/dist/esm/gridview/branchNode.d.ts.map +0 -1
- package/dist/esm/gridview/branchNode.js.map +0 -1
- package/dist/esm/gridview/gridview.d.ts.map +0 -1
- package/dist/esm/gridview/gridview.js.map +0 -1
- package/dist/esm/gridview/gridviewComponent.d.ts.map +0 -1
- package/dist/esm/gridview/gridviewComponent.js.map +0 -1
- package/dist/esm/gridview/gridviewPanel.d.ts.map +0 -1
- package/dist/esm/gridview/gridviewPanel.js.map +0 -1
- package/dist/esm/gridview/leafNode.d.ts.map +0 -1
- package/dist/esm/gridview/leafNode.js.map +0 -1
- package/dist/esm/gridview/options.d.ts.map +0 -1
- package/dist/esm/gridview/options.js.map +0 -1
- package/dist/esm/gridview/types.d.ts.map +0 -1
- package/dist/esm/gridview/types.js.map +0 -1
- package/dist/esm/index.d.ts.map +0 -1
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/lifecycle.d.ts.map +0 -1
- package/dist/esm/lifecycle.js.map +0 -1
- package/dist/esm/math.d.ts.map +0 -1
- package/dist/esm/math.js.map +0 -1
- package/dist/esm/overlayRenderContainer.d.ts.map +0 -1
- package/dist/esm/overlayRenderContainer.js.map +0 -1
- package/dist/esm/panel/componentFactory.d.ts.map +0 -1
- package/dist/esm/panel/componentFactory.js.map +0 -1
- package/dist/esm/panel/types.d.ts.map +0 -1
- package/dist/esm/panel/types.js.map +0 -1
- package/dist/esm/paneview/defaultPaneviewHeader.d.ts.map +0 -1
- package/dist/esm/paneview/defaultPaneviewHeader.js.map +0 -1
- package/dist/esm/paneview/draggablePaneviewPanel.d.ts.map +0 -1
- package/dist/esm/paneview/draggablePaneviewPanel.js.map +0 -1
- package/dist/esm/paneview/options.d.ts.map +0 -1
- package/dist/esm/paneview/options.js.map +0 -1
- package/dist/esm/paneview/paneview.d.ts.map +0 -1
- package/dist/esm/paneview/paneview.js.map +0 -1
- package/dist/esm/paneview/paneviewComponent.d.ts.map +0 -1
- package/dist/esm/paneview/paneviewComponent.js.map +0 -1
- package/dist/esm/paneview/paneviewPanel.d.ts.map +0 -1
- package/dist/esm/paneview/paneviewPanel.js.map +0 -1
- package/dist/esm/popoutWindow.d.ts.map +0 -1
- package/dist/esm/popoutWindow.js.map +0 -1
- package/dist/esm/resizable.d.ts.map +0 -1
- package/dist/esm/resizable.js.map +0 -1
- package/dist/esm/splitview/options.d.ts.map +0 -1
- package/dist/esm/splitview/options.js.map +0 -1
- package/dist/esm/splitview/splitview.d.ts.map +0 -1
- package/dist/esm/splitview/splitview.js.map +0 -1
- package/dist/esm/splitview/splitviewComponent.d.ts.map +0 -1
- package/dist/esm/splitview/splitviewComponent.js.map +0 -1
- package/dist/esm/splitview/splitviewPanel.d.ts.map +0 -1
- package/dist/esm/splitview/splitviewPanel.js.map +0 -1
- package/dist/esm/splitview/viewItem.d.ts.map +0 -1
- package/dist/esm/splitview/viewItem.js.map +0 -1
- package/dist/esm/svg.d.ts.map +0 -1
- package/dist/esm/svg.js.map +0 -1
- package/dist/esm/types.d.ts.map +0 -1
- package/dist/esm/types.js.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* dockview-core
|
|
3
|
-
* @version 1.
|
|
3
|
+
* @version 1.10.0
|
|
4
4
|
* @link https://github.com/mathuo/dockview
|
|
5
5
|
* @license MIT
|
|
6
6
|
*/
|
|
@@ -88,6 +88,17 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
88
88
|
};
|
|
89
89
|
};
|
|
90
90
|
})(exports.DockviewEvent || (exports.DockviewEvent = {}));
|
|
91
|
+
class DockviewEvent {
|
|
92
|
+
constructor() {
|
|
93
|
+
this._defaultPrevented = false;
|
|
94
|
+
}
|
|
95
|
+
get defaultPrevented() {
|
|
96
|
+
return this._defaultPrevented;
|
|
97
|
+
}
|
|
98
|
+
preventDefault() {
|
|
99
|
+
this._defaultPrevented = true;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
91
102
|
class LeakageMonitor {
|
|
92
103
|
constructor() {
|
|
93
104
|
this.events = new Map();
|
|
@@ -131,6 +142,9 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
131
142
|
}
|
|
132
143
|
Emitter.ENABLE_TRACKING = isEnabled;
|
|
133
144
|
}
|
|
145
|
+
get value() {
|
|
146
|
+
return this._last;
|
|
147
|
+
}
|
|
134
148
|
constructor(options) {
|
|
135
149
|
this.options = options;
|
|
136
150
|
this._listeners = [];
|
|
@@ -253,8 +267,12 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
253
267
|
args.forEach((arg) => this._disposables.push(arg));
|
|
254
268
|
}
|
|
255
269
|
dispose() {
|
|
256
|
-
this.
|
|
270
|
+
if (this._isDisposed) {
|
|
271
|
+
return;
|
|
272
|
+
}
|
|
257
273
|
this._isDisposed = true;
|
|
274
|
+
this._disposables.forEach((arg) => arg.dispose());
|
|
275
|
+
this._disposables = [];
|
|
258
276
|
}
|
|
259
277
|
}
|
|
260
278
|
class MutableDisposable {
|
|
@@ -738,6 +756,13 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
738
756
|
this._endSnappingEnabled = endSnappingEnabled;
|
|
739
757
|
this.updateSashEnablement();
|
|
740
758
|
}
|
|
759
|
+
get disabled() {
|
|
760
|
+
return this._disabled;
|
|
761
|
+
}
|
|
762
|
+
set disabled(value) {
|
|
763
|
+
this._disabled = value;
|
|
764
|
+
toggleClass(this.element, 'dv-splitview-disabled', value);
|
|
765
|
+
}
|
|
741
766
|
constructor(container, options) {
|
|
742
767
|
this.container = container;
|
|
743
768
|
this.viewItems = [];
|
|
@@ -748,6 +773,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
748
773
|
this._proportions = undefined;
|
|
749
774
|
this._startSnappingEnabled = true;
|
|
750
775
|
this._endSnappingEnabled = true;
|
|
776
|
+
this._disabled = false;
|
|
751
777
|
this._onDidSashEnd = new Emitter();
|
|
752
778
|
this.onDidSashEnd = this._onDidSashEnd.event;
|
|
753
779
|
this._onDidAddView = new Emitter();
|
|
@@ -1675,7 +1701,13 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
1675
1701
|
}
|
|
1676
1702
|
return exports.LayoutPriority.Normal;
|
|
1677
1703
|
}
|
|
1678
|
-
|
|
1704
|
+
get disabled() {
|
|
1705
|
+
return this.splitview.disabled;
|
|
1706
|
+
}
|
|
1707
|
+
set disabled(value) {
|
|
1708
|
+
this.splitview.disabled = value;
|
|
1709
|
+
}
|
|
1710
|
+
constructor(orientation, proportionalLayout, styles, size, orthogonalSize, disabled, childDescriptors) {
|
|
1679
1711
|
super();
|
|
1680
1712
|
this.orientation = orientation;
|
|
1681
1713
|
this.proportionalLayout = proportionalLayout;
|
|
@@ -1720,6 +1752,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
1720
1752
|
styles,
|
|
1721
1753
|
});
|
|
1722
1754
|
}
|
|
1755
|
+
this.disabled = disabled;
|
|
1723
1756
|
this.addDisposables(this._onDidChange, this._onDidVisibilityChange, this.splitview.onDidSashEnd(() => {
|
|
1724
1757
|
this._onDidChange.fire({});
|
|
1725
1758
|
}));
|
|
@@ -1853,7 +1886,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
1853
1886
|
}
|
|
1854
1887
|
function flipNode(node, size, orthogonalSize) {
|
|
1855
1888
|
if (node instanceof BranchNode) {
|
|
1856
|
-
const result = new BranchNode(orthogonal(node.orientation), node.proportionalLayout, node.styles, size, orthogonalSize);
|
|
1889
|
+
const result = new BranchNode(orthogonal(node.orientation), node.proportionalLayout, node.styles, size, orthogonalSize, node.disabled);
|
|
1857
1890
|
let totalSize = 0;
|
|
1858
1891
|
for (let i = node.children.length - 1; i >= 0; i--) {
|
|
1859
1892
|
const child = node.children[i];
|
|
@@ -1989,31 +2022,57 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
1989
2022
|
get maximumHeight() {
|
|
1990
2023
|
return this.root.maximumHeight;
|
|
1991
2024
|
}
|
|
2025
|
+
get locked() {
|
|
2026
|
+
return this._locked;
|
|
2027
|
+
}
|
|
2028
|
+
set locked(value) {
|
|
2029
|
+
this._locked = value;
|
|
2030
|
+
const branch = [this.root];
|
|
2031
|
+
/**
|
|
2032
|
+
* simple depth-first-search to cover all nodes
|
|
2033
|
+
*
|
|
2034
|
+
* @see https://en.wikipedia.org/wiki/Depth-first_search
|
|
2035
|
+
*/
|
|
2036
|
+
while (branch.length > 0) {
|
|
2037
|
+
const node = branch.pop();
|
|
2038
|
+
if (node instanceof BranchNode) {
|
|
2039
|
+
node.disabled = value;
|
|
2040
|
+
branch.push(...node.children);
|
|
2041
|
+
}
|
|
2042
|
+
}
|
|
2043
|
+
}
|
|
1992
2044
|
maximizedView() {
|
|
1993
2045
|
var _a;
|
|
1994
|
-
return (_a = this._maximizedNode) === null || _a === void 0 ? void 0 : _a.view;
|
|
2046
|
+
return (_a = this._maximizedNode) === null || _a === void 0 ? void 0 : _a.leaf.view;
|
|
1995
2047
|
}
|
|
1996
2048
|
hasMaximizedView() {
|
|
1997
2049
|
return this._maximizedNode !== undefined;
|
|
1998
2050
|
}
|
|
1999
2051
|
maximizeView(view) {
|
|
2052
|
+
var _a;
|
|
2000
2053
|
const location = getGridLocation(view.element);
|
|
2001
2054
|
const [_, node] = this.getNode(location);
|
|
2002
2055
|
if (!(node instanceof LeafNode)) {
|
|
2003
2056
|
return;
|
|
2004
2057
|
}
|
|
2005
|
-
if (this._maximizedNode === node) {
|
|
2058
|
+
if (((_a = this._maximizedNode) === null || _a === void 0 ? void 0 : _a.leaf) === node) {
|
|
2006
2059
|
return;
|
|
2007
2060
|
}
|
|
2008
2061
|
if (this.hasMaximizedView()) {
|
|
2009
2062
|
this.exitMaximizedView();
|
|
2010
2063
|
}
|
|
2064
|
+
const hiddenOnMaximize = [];
|
|
2011
2065
|
function hideAllViewsBut(parent, exclude) {
|
|
2012
2066
|
for (let i = 0; i < parent.children.length; i++) {
|
|
2013
2067
|
const child = parent.children[i];
|
|
2014
2068
|
if (child instanceof LeafNode) {
|
|
2015
2069
|
if (child !== exclude) {
|
|
2016
|
-
parent.
|
|
2070
|
+
if (parent.isChildVisible(i)) {
|
|
2071
|
+
parent.setChildVisible(i, false);
|
|
2072
|
+
}
|
|
2073
|
+
else {
|
|
2074
|
+
hiddenOnMaximize.push(child);
|
|
2075
|
+
}
|
|
2017
2076
|
}
|
|
2018
2077
|
}
|
|
2019
2078
|
else {
|
|
@@ -2022,18 +2081,21 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
2022
2081
|
}
|
|
2023
2082
|
}
|
|
2024
2083
|
hideAllViewsBut(this.root, node);
|
|
2025
|
-
this._maximizedNode = node;
|
|
2026
|
-
this.
|
|
2084
|
+
this._maximizedNode = { leaf: node, hiddenOnMaximize };
|
|
2085
|
+
this._onDidMaximizedNodeChange.fire();
|
|
2027
2086
|
}
|
|
2028
2087
|
exitMaximizedView() {
|
|
2029
2088
|
if (!this._maximizedNode) {
|
|
2030
2089
|
return;
|
|
2031
2090
|
}
|
|
2091
|
+
const hiddenOnMaximize = this._maximizedNode.hiddenOnMaximize;
|
|
2032
2092
|
function showViewsInReverseOrder(parent) {
|
|
2033
2093
|
for (let index = parent.children.length - 1; index >= 0; index--) {
|
|
2034
2094
|
const child = parent.children[index];
|
|
2035
2095
|
if (child instanceof LeafNode) {
|
|
2036
|
-
|
|
2096
|
+
if (!hiddenOnMaximize.includes(child)) {
|
|
2097
|
+
parent.setChildVisible(index, true);
|
|
2098
|
+
}
|
|
2037
2099
|
}
|
|
2038
2100
|
else {
|
|
2039
2101
|
showViewsInReverseOrder(child);
|
|
@@ -2042,13 +2104,13 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
2042
2104
|
}
|
|
2043
2105
|
showViewsInReverseOrder(this.root);
|
|
2044
2106
|
this._maximizedNode = undefined;
|
|
2045
|
-
this.
|
|
2107
|
+
this._onDidMaximizedNodeChange.fire();
|
|
2046
2108
|
}
|
|
2047
2109
|
serialize() {
|
|
2048
2110
|
if (this.hasMaximizedView()) {
|
|
2049
2111
|
/**
|
|
2050
|
-
* do not persist maximized view state
|
|
2051
|
-
*
|
|
2112
|
+
* do not persist maximized view state
|
|
2113
|
+
* firstly exit any maximized views to ensure the correct dimensions are persisted
|
|
2052
2114
|
*/
|
|
2053
2115
|
this.exitMaximizedView();
|
|
2054
2116
|
}
|
|
@@ -2063,14 +2125,14 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
2063
2125
|
dispose() {
|
|
2064
2126
|
this.disposable.dispose();
|
|
2065
2127
|
this._onDidChange.dispose();
|
|
2066
|
-
this.
|
|
2128
|
+
this._onDidMaximizedNodeChange.dispose();
|
|
2067
2129
|
this.root.dispose();
|
|
2068
2130
|
this._maximizedNode = undefined;
|
|
2069
2131
|
this.element.remove();
|
|
2070
2132
|
}
|
|
2071
2133
|
clear() {
|
|
2072
2134
|
const orientation = this.root.orientation;
|
|
2073
|
-
this.root = new BranchNode(orientation, this.proportionalLayout, this.styles, this.root.size, this.root.orthogonalSize);
|
|
2135
|
+
this.root = new BranchNode(orientation, this.proportionalLayout, this.styles, this.root.size, this.root.orthogonalSize, this._locked);
|
|
2074
2136
|
}
|
|
2075
2137
|
deserialize(json, deserializer) {
|
|
2076
2138
|
const orientation = json.orientation;
|
|
@@ -2091,8 +2153,8 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
2091
2153
|
};
|
|
2092
2154
|
});
|
|
2093
2155
|
result = new BranchNode(orientation, this.proportionalLayout, this.styles, node.size, // <- orthogonal size - flips at each depth
|
|
2094
|
-
orthogonalSize, // <- size - flips at each depth
|
|
2095
|
-
children);
|
|
2156
|
+
orthogonalSize, // <- size - flips at each depth,
|
|
2157
|
+
this._locked, children);
|
|
2096
2158
|
}
|
|
2097
2159
|
else {
|
|
2098
2160
|
result = new LeafNode(deserializer.fromJSON(node), orientation, orthogonalSize, node.size);
|
|
@@ -2125,7 +2187,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
2125
2187
|
}
|
|
2126
2188
|
const oldRoot = this.root;
|
|
2127
2189
|
oldRoot.element.remove();
|
|
2128
|
-
this._root = new BranchNode(orthogonal(oldRoot.orientation), this.proportionalLayout, this.styles, this.root.orthogonalSize, this.root.size);
|
|
2190
|
+
this._root = new BranchNode(orthogonal(oldRoot.orientation), this.proportionalLayout, this.styles, this.root.orthogonalSize, this.root.size, this._locked);
|
|
2129
2191
|
if (oldRoot.children.length === 0) ;
|
|
2130
2192
|
else if (oldRoot.children.length === 1) {
|
|
2131
2193
|
// can remove one level of redundant branching if there is only a single child
|
|
@@ -2193,15 +2255,16 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
2193
2255
|
constructor(proportionalLayout, styles, orientation) {
|
|
2194
2256
|
this.proportionalLayout = proportionalLayout;
|
|
2195
2257
|
this.styles = styles;
|
|
2258
|
+
this._locked = false;
|
|
2196
2259
|
this._maximizedNode = undefined;
|
|
2197
2260
|
this.disposable = new MutableDisposable();
|
|
2198
2261
|
this._onDidChange = new Emitter();
|
|
2199
2262
|
this.onDidChange = this._onDidChange.event;
|
|
2200
|
-
this.
|
|
2201
|
-
this.
|
|
2263
|
+
this._onDidMaximizedNodeChange = new Emitter();
|
|
2264
|
+
this.onDidMaximizedNodeChange = this._onDidMaximizedNodeChange.event;
|
|
2202
2265
|
this.element = document.createElement('div');
|
|
2203
2266
|
this.element.className = 'grid-view';
|
|
2204
|
-
this.root = new BranchNode(orientation, proportionalLayout, styles, 0, 0);
|
|
2267
|
+
this.root = new BranchNode(orientation, proportionalLayout, styles, 0, 0, this._locked);
|
|
2205
2268
|
}
|
|
2206
2269
|
isViewVisible(location) {
|
|
2207
2270
|
const [rest, index] = tail(location);
|
|
@@ -2252,7 +2315,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
2252
2315
|
}
|
|
2253
2316
|
const child = grandParent.removeChild(parentIndex);
|
|
2254
2317
|
child.dispose();
|
|
2255
|
-
const newParent = new BranchNode(parent.orientation, this.proportionalLayout, this.styles, parent.size, parent.orthogonalSize);
|
|
2318
|
+
const newParent = new BranchNode(parent.orientation, this.proportionalLayout, this.styles, parent.size, parent.orthogonalSize, this._locked);
|
|
2256
2319
|
grandParent.addChild(newParent, parent.size, parentIndex);
|
|
2257
2320
|
const newSibling = new LeafNode(parent.view, grandParent.orientation, parent.size);
|
|
2258
2321
|
newParent.addChild(newSibling, newSiblingSize, 0);
|
|
@@ -2879,6 +2942,21 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
2879
2942
|
get onDidDrop() {
|
|
2880
2943
|
return this.component.onDidDrop;
|
|
2881
2944
|
}
|
|
2945
|
+
/**
|
|
2946
|
+
* Invoked when a Drag'n'Drop event occurs but before dockview handles it giving the user an opportunity to intecept and
|
|
2947
|
+
* prevent the event from occuring using the standard `preventDefault()` syntax.
|
|
2948
|
+
*
|
|
2949
|
+
* Preventing certain events may causes unexpected behaviours, use carefully.
|
|
2950
|
+
*/
|
|
2951
|
+
get onWillDrop() {
|
|
2952
|
+
return this.component.onWillDrop;
|
|
2953
|
+
}
|
|
2954
|
+
/**
|
|
2955
|
+
*
|
|
2956
|
+
*/
|
|
2957
|
+
get onWillShowOverlay() {
|
|
2958
|
+
return this.component.onWillShowOverlay;
|
|
2959
|
+
}
|
|
2882
2960
|
/**
|
|
2883
2961
|
* Invoked before a group is dragged. Exposed for custom Drag'n'Drop functionality.
|
|
2884
2962
|
*/
|
|
@@ -3014,17 +3092,17 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
3014
3092
|
hasMaximizedGroup() {
|
|
3015
3093
|
return this.component.hasMaximizedGroup();
|
|
3016
3094
|
}
|
|
3017
|
-
|
|
3095
|
+
exitMaximizedGroup() {
|
|
3018
3096
|
this.component.exitMaximizedGroup();
|
|
3019
3097
|
}
|
|
3020
|
-
get
|
|
3021
|
-
return this.component.
|
|
3098
|
+
get onDidMaximizedGroupChange() {
|
|
3099
|
+
return this.component.onDidMaximizedGroupChange;
|
|
3022
3100
|
}
|
|
3023
3101
|
/**
|
|
3024
3102
|
* Add a popout group in a new Window
|
|
3025
3103
|
*/
|
|
3026
3104
|
addPopoutGroup(item, options) {
|
|
3027
|
-
this.component.addPopoutGroup(item, options);
|
|
3105
|
+
return this.component.addPopoutGroup(item, options);
|
|
3028
3106
|
}
|
|
3029
3107
|
}
|
|
3030
3108
|
|
|
@@ -3078,6 +3156,18 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
3078
3156
|
}
|
|
3079
3157
|
}
|
|
3080
3158
|
|
|
3159
|
+
class WillShowOverlayEvent extends DockviewEvent {
|
|
3160
|
+
get nativeEvent() {
|
|
3161
|
+
return this.options.nativeEvent;
|
|
3162
|
+
}
|
|
3163
|
+
get position() {
|
|
3164
|
+
return this.options.position;
|
|
3165
|
+
}
|
|
3166
|
+
constructor(options) {
|
|
3167
|
+
super();
|
|
3168
|
+
this.options = options;
|
|
3169
|
+
}
|
|
3170
|
+
}
|
|
3081
3171
|
function directionToPosition(direction) {
|
|
3082
3172
|
switch (direction) {
|
|
3083
3173
|
case 'above':
|
|
@@ -3130,6 +3220,8 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
3130
3220
|
this.options = options;
|
|
3131
3221
|
this._onDrop = new Emitter();
|
|
3132
3222
|
this.onDrop = this._onDrop.event;
|
|
3223
|
+
this._onWillShowOverlay = new Emitter();
|
|
3224
|
+
this.onWillShowOverlay = this._onWillShowOverlay.event;
|
|
3133
3225
|
// use a set to take advantage of #<set>.has
|
|
3134
3226
|
this._acceptedTargetZonesSet = new Set(this.options.acceptedTargetZones);
|
|
3135
3227
|
this.dnd = new DragAndDropObserver(this.element, {
|
|
@@ -3158,6 +3250,19 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
3158
3250
|
this.removeDropTarget();
|
|
3159
3251
|
return;
|
|
3160
3252
|
}
|
|
3253
|
+
const willShowOverlayEvent = new WillShowOverlayEvent({
|
|
3254
|
+
nativeEvent: e,
|
|
3255
|
+
position: quadrant,
|
|
3256
|
+
});
|
|
3257
|
+
/**
|
|
3258
|
+
* Provide an opportunity to prevent the overlay appearing and in turn
|
|
3259
|
+
* any dnd behaviours
|
|
3260
|
+
*/
|
|
3261
|
+
this._onWillShowOverlay.fire(willShowOverlayEvent);
|
|
3262
|
+
if (willShowOverlayEvent.defaultPrevented) {
|
|
3263
|
+
this.removeDropTarget();
|
|
3264
|
+
return;
|
|
3265
|
+
}
|
|
3161
3266
|
if (typeof this.options.canDisplayOverlay === 'boolean') {
|
|
3162
3267
|
if (!this.options.canDisplayOverlay) {
|
|
3163
3268
|
this.removeDropTarget();
|
|
@@ -3200,7 +3305,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
3200
3305
|
}
|
|
3201
3306
|
},
|
|
3202
3307
|
});
|
|
3203
|
-
this.addDisposables(this._onDrop, this.dnd);
|
|
3308
|
+
this.addDisposables(this._onDrop, this._onWillShowOverlay, this.dnd);
|
|
3204
3309
|
}
|
|
3205
3310
|
setTargetZones(acceptedTargetZones) {
|
|
3206
3311
|
this._acceptedTargetZonesSet = new Set(acceptedTargetZones);
|
|
@@ -3253,25 +3358,44 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
3253
3358
|
size = clamp(0, sizeOptions.value, height) / height;
|
|
3254
3359
|
}
|
|
3255
3360
|
}
|
|
3256
|
-
const
|
|
3257
|
-
|
|
3258
|
-
|
|
3361
|
+
const box = { top: '0px', left: '0px', width: '100%', height: '100%' };
|
|
3362
|
+
/**
|
|
3363
|
+
* You can also achieve the overlay placement using the transform CSS property
|
|
3364
|
+
* to translate and scale the element however this has the undesired effect of
|
|
3365
|
+
* 'skewing' the element. Comment left here for anybody that ever revisits this.
|
|
3366
|
+
*
|
|
3367
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/CSS/transform
|
|
3368
|
+
*
|
|
3369
|
+
* right
|
|
3370
|
+
* translateX(${100 * (1 - size) / 2}%) scaleX(${scale})
|
|
3371
|
+
*
|
|
3372
|
+
* left
|
|
3373
|
+
* translateX(-${100 * (1 - size) / 2}%) scaleX(${scale})
|
|
3374
|
+
*
|
|
3375
|
+
* top
|
|
3376
|
+
* translateY(-${100 * (1 - size) / 2}%) scaleY(${scale})
|
|
3377
|
+
*
|
|
3378
|
+
* bottom
|
|
3379
|
+
* translateY(${100 * (1 - size) / 2}%) scaleY(${scale})
|
|
3380
|
+
*/
|
|
3259
3381
|
if (rightClass) {
|
|
3260
|
-
|
|
3382
|
+
box.left = `${100 * (1 - size)}%`;
|
|
3383
|
+
box.width = `${100 * size}%`;
|
|
3261
3384
|
}
|
|
3262
3385
|
else if (leftClass) {
|
|
3263
|
-
|
|
3386
|
+
box.width = `${100 * size}%`;
|
|
3264
3387
|
}
|
|
3265
3388
|
else if (topClass) {
|
|
3266
|
-
|
|
3389
|
+
box.height = `${100 * size}%`;
|
|
3267
3390
|
}
|
|
3268
3391
|
else if (bottomClass) {
|
|
3269
|
-
|
|
3270
|
-
|
|
3271
|
-
else {
|
|
3272
|
-
transform = '';
|
|
3392
|
+
box.top = `${100 * (1 - size)}%`;
|
|
3393
|
+
box.height = `${100 * size}%`;
|
|
3273
3394
|
}
|
|
3274
|
-
this.overlayElement.style.
|
|
3395
|
+
this.overlayElement.style.top = box.top;
|
|
3396
|
+
this.overlayElement.style.left = box.left;
|
|
3397
|
+
this.overlayElement.style.width = box.width;
|
|
3398
|
+
this.overlayElement.style.height = box.height;
|
|
3275
3399
|
toggleClass(this.overlayElement, 'dv-drop-target-small-vertical', isSmallY);
|
|
3276
3400
|
toggleClass(this.overlayElement, 'dv-drop-target-small-horizontal', isSmallX);
|
|
3277
3401
|
toggleClass(this.overlayElement, 'dv-drop-target-left', isLeft);
|
|
@@ -3339,14 +3463,6 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
3339
3463
|
return 'center';
|
|
3340
3464
|
}
|
|
3341
3465
|
|
|
3342
|
-
exports.DockviewDropTargets = void 0;
|
|
3343
|
-
(function (DockviewDropTargets) {
|
|
3344
|
-
DockviewDropTargets[DockviewDropTargets["Tab"] = 0] = "Tab";
|
|
3345
|
-
DockviewDropTargets[DockviewDropTargets["Panel"] = 1] = "Panel";
|
|
3346
|
-
DockviewDropTargets[DockviewDropTargets["TabContainer"] = 2] = "TabContainer";
|
|
3347
|
-
DockviewDropTargets[DockviewDropTargets["Edge"] = 3] = "Edge";
|
|
3348
|
-
})(exports.DockviewDropTargets || (exports.DockviewDropTargets = {}));
|
|
3349
|
-
|
|
3350
3466
|
class ContentContainer extends CompositeDisposable {
|
|
3351
3467
|
get element() {
|
|
3352
3468
|
return this._element;
|
|
@@ -3374,7 +3490,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
3374
3490
|
const data = getPanelData();
|
|
3375
3491
|
if (!data &&
|
|
3376
3492
|
event.shiftKey &&
|
|
3377
|
-
this.group.location !== 'floating') {
|
|
3493
|
+
this.group.location.type !== 'floating') {
|
|
3378
3494
|
return false;
|
|
3379
3495
|
}
|
|
3380
3496
|
if (data && data.viewId === this.accessor.id) {
|
|
@@ -3392,7 +3508,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
3392
3508
|
data.groupId === this.group.id;
|
|
3393
3509
|
return !groupHasOnePanelAndIsActiveDragElement;
|
|
3394
3510
|
}
|
|
3395
|
-
return this.group.canDisplayOverlay(event, position,
|
|
3511
|
+
return this.group.canDisplayOverlay(event, position, 'panel');
|
|
3396
3512
|
},
|
|
3397
3513
|
});
|
|
3398
3514
|
this.addDisposables(this.dropTarget);
|
|
@@ -3417,7 +3533,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
3417
3533
|
let container;
|
|
3418
3534
|
switch (panel.api.renderer) {
|
|
3419
3535
|
case 'onlyWhenVisibile':
|
|
3420
|
-
this.
|
|
3536
|
+
this.group.renderContainer.detatch(panel);
|
|
3421
3537
|
if (this.panel) {
|
|
3422
3538
|
if (doRender) {
|
|
3423
3539
|
this._element.appendChild(this.panel.view.content.element);
|
|
@@ -3429,7 +3545,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
3429
3545
|
if (panel.view.content.element.parentElement === this._element) {
|
|
3430
3546
|
this._element.removeChild(panel.view.content.element);
|
|
3431
3547
|
}
|
|
3432
|
-
container = this.
|
|
3548
|
+
container = this.group.renderContainer.attach({
|
|
3433
3549
|
panel,
|
|
3434
3550
|
referenceContainer: this,
|
|
3435
3551
|
});
|
|
@@ -3460,12 +3576,13 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
3460
3576
|
// noop
|
|
3461
3577
|
}
|
|
3462
3578
|
closePanel() {
|
|
3579
|
+
var _a;
|
|
3463
3580
|
if (this.panel) {
|
|
3464
|
-
if (this.
|
|
3465
|
-
this.
|
|
3581
|
+
if (this.panel.api.renderer === 'onlyWhenVisibile') {
|
|
3582
|
+
(_a = this.panel.view.content.element.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(this.panel.view.content.element);
|
|
3466
3583
|
}
|
|
3467
|
-
this.panel = undefined;
|
|
3468
3584
|
}
|
|
3585
|
+
this.panel = undefined;
|
|
3469
3586
|
}
|
|
3470
3587
|
dispose() {
|
|
3471
3588
|
this.disposable.dispose();
|
|
@@ -3573,7 +3690,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
3573
3690
|
this._element.draggable = true;
|
|
3574
3691
|
toggleClass(this.element, 'inactive-tab', true);
|
|
3575
3692
|
const dragHandler = new TabDragHandler(this._element, this.accessor, this.group, this.panel);
|
|
3576
|
-
this.
|
|
3693
|
+
this.dropTarget = new Droptarget(this._element, {
|
|
3577
3694
|
acceptedTargetZones: ['center'],
|
|
3578
3695
|
canDisplayOverlay: (event, position) => {
|
|
3579
3696
|
if (this.group.locked) {
|
|
@@ -3588,9 +3705,10 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
3588
3705
|
}
|
|
3589
3706
|
return this.panel.id !== data.panelId;
|
|
3590
3707
|
}
|
|
3591
|
-
return this.group.model.canDisplayOverlay(event, position,
|
|
3708
|
+
return this.group.model.canDisplayOverlay(event, position, 'tab');
|
|
3592
3709
|
},
|
|
3593
3710
|
});
|
|
3711
|
+
this.onWillShowOverlay = this.dropTarget.onWillShowOverlay;
|
|
3594
3712
|
this.addDisposables(this._onChanged, this._onDropped, this._onDragStart, dragHandler.onDragStart((event) => {
|
|
3595
3713
|
this._onDragStart.fire(event);
|
|
3596
3714
|
}), dragHandler, addDisposableListener(this._element, 'mousedown', (event) => {
|
|
@@ -3598,9 +3716,9 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
3598
3716
|
return;
|
|
3599
3717
|
}
|
|
3600
3718
|
this._onChanged.fire(event);
|
|
3601
|
-
}), this.
|
|
3719
|
+
}), this.dropTarget.onDrop((event) => {
|
|
3602
3720
|
this._onDropped.fire(event);
|
|
3603
|
-
}), this.
|
|
3721
|
+
}), this.dropTarget);
|
|
3604
3722
|
}
|
|
3605
3723
|
setActive(isActive) {
|
|
3606
3724
|
toggleClass(this.element, 'active-tab', isActive);
|
|
@@ -3647,7 +3765,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
3647
3765
|
}, true));
|
|
3648
3766
|
}
|
|
3649
3767
|
isCancelled(_event) {
|
|
3650
|
-
if (this.group.api.location === 'floating' && !_event.shiftKey) {
|
|
3768
|
+
if (this.group.api.location.type === 'floating' && !_event.shiftKey) {
|
|
3651
3769
|
return true;
|
|
3652
3770
|
}
|
|
3653
3771
|
return false;
|
|
@@ -3699,7 +3817,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
3699
3817
|
this.accessor.doSetGroupActive(this.group);
|
|
3700
3818
|
}));
|
|
3701
3819
|
const handler = new GroupDragHandler(this._element, accessor, group);
|
|
3702
|
-
this.
|
|
3820
|
+
this.dropTraget = new Droptarget(this._element, {
|
|
3703
3821
|
acceptedTargetZones: ['center'],
|
|
3704
3822
|
canDisplayOverlay: (event, position) => {
|
|
3705
3823
|
var _a;
|
|
@@ -3713,14 +3831,15 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
3713
3831
|
// don't show the overlay if the tab being dragged is the last panel of this group
|
|
3714
3832
|
return ((_a = last(this.group.panels)) === null || _a === void 0 ? void 0 : _a.id) !== data.panelId;
|
|
3715
3833
|
}
|
|
3716
|
-
return group.model.canDisplayOverlay(event, position,
|
|
3834
|
+
return group.model.canDisplayOverlay(event, position, 'panel');
|
|
3717
3835
|
},
|
|
3718
3836
|
});
|
|
3837
|
+
this.onWillShowOverlay = this.dropTraget.onWillShowOverlay;
|
|
3719
3838
|
this.addDisposables(handler, handler.onDragStart((event) => {
|
|
3720
3839
|
this._onDragStart.fire(event);
|
|
3721
|
-
}), this.
|
|
3840
|
+
}), this.dropTraget.onDrop((event) => {
|
|
3722
3841
|
this._onDrop.fire(event);
|
|
3723
|
-
}), this.
|
|
3842
|
+
}), this.dropTraget);
|
|
3724
3843
|
}
|
|
3725
3844
|
}
|
|
3726
3845
|
|
|
@@ -3808,19 +3927,11 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
3808
3927
|
this.onTabDragStart = this._onTabDragStart.event;
|
|
3809
3928
|
this._onGroupDragStart = new Emitter();
|
|
3810
3929
|
this.onGroupDragStart = this._onGroupDragStart.event;
|
|
3811
|
-
this.
|
|
3930
|
+
this._onWillShowOverlay = new Emitter();
|
|
3931
|
+
this.onWillShowOverlay = this._onWillShowOverlay.event;
|
|
3812
3932
|
this._element = document.createElement('div');
|
|
3813
3933
|
this._element.className = 'tabs-and-actions-container';
|
|
3814
3934
|
toggleClass(this._element, 'dv-full-width-single-tab', this.accessor.options.singleTabMode === 'fullwidth');
|
|
3815
|
-
this.addDisposables(this.accessor.onDidAddPanel((e) => {
|
|
3816
|
-
if (e.api.group === this.group) {
|
|
3817
|
-
toggleClass(this._element, 'dv-single-tab', this.size === 1);
|
|
3818
|
-
}
|
|
3819
|
-
}), this.accessor.onDidRemovePanel((e) => {
|
|
3820
|
-
if (e.api.group === this.group) {
|
|
3821
|
-
toggleClass(this._element, 'dv-single-tab', this.size === 1);
|
|
3822
|
-
}
|
|
3823
|
-
}));
|
|
3824
3935
|
this.rightActionsContainer = document.createElement('div');
|
|
3825
3936
|
this.rightActionsContainer.className = 'right-actions-container';
|
|
3826
3937
|
this.leftActionsContainer = document.createElement('div');
|
|
@@ -3835,7 +3946,15 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
3835
3946
|
this._element.appendChild(this.leftActionsContainer);
|
|
3836
3947
|
this._element.appendChild(this.voidContainer.element);
|
|
3837
3948
|
this._element.appendChild(this.rightActionsContainer);
|
|
3838
|
-
this.addDisposables(this.
|
|
3949
|
+
this.addDisposables(this.accessor.onDidAddPanel((e) => {
|
|
3950
|
+
if (e.api.group === this.group) {
|
|
3951
|
+
toggleClass(this._element, 'dv-single-tab', this.size === 1);
|
|
3952
|
+
}
|
|
3953
|
+
}), this.accessor.onDidRemovePanel((e) => {
|
|
3954
|
+
if (e.api.group === this.group) {
|
|
3955
|
+
toggleClass(this._element, 'dv-single-tab', this.size === 1);
|
|
3956
|
+
}
|
|
3957
|
+
}), this._onWillShowOverlay, this._onDrop, this._onTabDragStart, this._onGroupDragStart, this.voidContainer, this.voidContainer.onDragStart((event) => {
|
|
3839
3958
|
this._onGroupDragStart.fire({
|
|
3840
3959
|
nativeEvent: event,
|
|
3841
3960
|
group: this.group,
|
|
@@ -3845,11 +3964,15 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
3845
3964
|
event: event.nativeEvent,
|
|
3846
3965
|
index: this.tabs.length,
|
|
3847
3966
|
});
|
|
3967
|
+
}), this.voidContainer.onWillShowOverlay((event) => {
|
|
3968
|
+
this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {
|
|
3969
|
+
kind: 'header_space',
|
|
3970
|
+
}));
|
|
3848
3971
|
}), addDisposableListener(this.voidContainer.element, 'mousedown', (event) => {
|
|
3849
3972
|
const isFloatingGroupsEnabled = !this.accessor.options.disableFloatingGroups;
|
|
3850
3973
|
if (isFloatingGroupsEnabled &&
|
|
3851
3974
|
event.shiftKey &&
|
|
3852
|
-
this.group.api.location !== 'floating') {
|
|
3975
|
+
this.group.api.location.type !== 'floating') {
|
|
3853
3976
|
event.preventDefault();
|
|
3854
3977
|
const { top, left } = this.element.getBoundingClientRect();
|
|
3855
3978
|
const { top: rootTop, left: rootLeft } = this.accessor.element.getBoundingClientRect();
|
|
@@ -3912,9 +4035,9 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
3912
4035
|
const disposable = new CompositeDisposable(tab.onDragStart((event) => {
|
|
3913
4036
|
this._onTabDragStart.fire({ nativeEvent: event, panel });
|
|
3914
4037
|
}), tab.onChanged((event) => {
|
|
3915
|
-
var _a;
|
|
3916
4038
|
const isFloatingGroupsEnabled = !this.accessor.options.disableFloatingGroups;
|
|
3917
|
-
const isFloatingWithOnePanel = this.group.api.location === 'floating' &&
|
|
4039
|
+
const isFloatingWithOnePanel = this.group.api.location.type === 'floating' &&
|
|
4040
|
+
this.size === 1;
|
|
3918
4041
|
if (isFloatingGroupsEnabled &&
|
|
3919
4042
|
!isFloatingWithOnePanel &&
|
|
3920
4043
|
event.shiftKey) {
|
|
@@ -3928,20 +4051,20 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
3928
4051
|
}, { inDragMode: true });
|
|
3929
4052
|
return;
|
|
3930
4053
|
}
|
|
3931
|
-
const alreadyFocused = panel.id === ((_a = this.group.model.activePanel) === null || _a === void 0 ? void 0 : _a.id) &&
|
|
3932
|
-
this.group.model.isContentFocused;
|
|
3933
4054
|
const isLeftClick = event.button === 0;
|
|
3934
4055
|
if (!isLeftClick || event.defaultPrevented) {
|
|
3935
4056
|
return;
|
|
3936
4057
|
}
|
|
3937
|
-
this.group.
|
|
3938
|
-
|
|
3939
|
-
}
|
|
4058
|
+
if (this.group.activePanel !== panel) {
|
|
4059
|
+
this.group.model.openPanel(panel);
|
|
4060
|
+
}
|
|
3940
4061
|
}), tab.onDrop((event) => {
|
|
3941
4062
|
this._onDrop.fire({
|
|
3942
4063
|
event: event.nativeEvent,
|
|
3943
4064
|
index: this.tabs.findIndex((x) => x.value === tab),
|
|
3944
4065
|
});
|
|
4066
|
+
}), tab.onWillShowOverlay((event) => {
|
|
4067
|
+
this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, { kind: 'tab' }));
|
|
3945
4068
|
}));
|
|
3946
4069
|
const value = { value: tab, disposable };
|
|
3947
4070
|
this.addTab(value, index);
|
|
@@ -3959,6 +4082,60 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
3959
4082
|
}
|
|
3960
4083
|
}
|
|
3961
4084
|
|
|
4085
|
+
class DockviewDidDropEvent extends DockviewEvent {
|
|
4086
|
+
get nativeEvent() {
|
|
4087
|
+
return this.options.nativeEvent;
|
|
4088
|
+
}
|
|
4089
|
+
get position() {
|
|
4090
|
+
return this.options.position;
|
|
4091
|
+
}
|
|
4092
|
+
get panel() {
|
|
4093
|
+
return this.options.panel;
|
|
4094
|
+
}
|
|
4095
|
+
get group() {
|
|
4096
|
+
return this.options.group;
|
|
4097
|
+
}
|
|
4098
|
+
get api() {
|
|
4099
|
+
return this.options.api;
|
|
4100
|
+
}
|
|
4101
|
+
constructor(options) {
|
|
4102
|
+
super();
|
|
4103
|
+
this.options = options;
|
|
4104
|
+
}
|
|
4105
|
+
getData() {
|
|
4106
|
+
return this.options.getData();
|
|
4107
|
+
}
|
|
4108
|
+
}
|
|
4109
|
+
class DockviewWillDropEvent extends DockviewDidDropEvent {
|
|
4110
|
+
get kind() {
|
|
4111
|
+
return this._kind;
|
|
4112
|
+
}
|
|
4113
|
+
constructor(options) {
|
|
4114
|
+
super(options);
|
|
4115
|
+
this._kind = options.kind;
|
|
4116
|
+
}
|
|
4117
|
+
}
|
|
4118
|
+
class WillShowOverlayLocationEvent {
|
|
4119
|
+
get kind() {
|
|
4120
|
+
return this._kind;
|
|
4121
|
+
}
|
|
4122
|
+
get nativeEvent() {
|
|
4123
|
+
return this.event.nativeEvent;
|
|
4124
|
+
}
|
|
4125
|
+
get position() {
|
|
4126
|
+
return this.event.position;
|
|
4127
|
+
}
|
|
4128
|
+
get defaultPrevented() {
|
|
4129
|
+
return this.event.defaultPrevented;
|
|
4130
|
+
}
|
|
4131
|
+
preventDefault() {
|
|
4132
|
+
this.event.preventDefault();
|
|
4133
|
+
}
|
|
4134
|
+
constructor(event, options) {
|
|
4135
|
+
this.event = event;
|
|
4136
|
+
this._kind = options.kind;
|
|
4137
|
+
}
|
|
4138
|
+
}
|
|
3962
4139
|
class DockviewGroupPanelModel extends CompositeDisposable {
|
|
3963
4140
|
get element() {
|
|
3964
4141
|
throw new Error('not supported');
|
|
@@ -4004,7 +4181,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4004
4181
|
this._location = value;
|
|
4005
4182
|
toggleClass(this.container, 'dv-groupview-floating', false);
|
|
4006
4183
|
toggleClass(this.container, 'dv-groupview-popout', false);
|
|
4007
|
-
switch (value) {
|
|
4184
|
+
switch (value.type) {
|
|
4008
4185
|
case 'grid':
|
|
4009
4186
|
this.contentContainer.dropTarget.setTargetZones([
|
|
4010
4187
|
'top',
|
|
@@ -4040,7 +4217,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4040
4217
|
this.groupPanel = groupPanel;
|
|
4041
4218
|
this._isGroupActive = false;
|
|
4042
4219
|
this._locked = false;
|
|
4043
|
-
this._location = 'grid';
|
|
4220
|
+
this._location = { type: 'grid' };
|
|
4044
4221
|
this.mostRecentlyUsed = [];
|
|
4045
4222
|
this._onDidChange = new Emitter();
|
|
4046
4223
|
this.onDidChange = this._onDidChange.event;
|
|
@@ -4051,6 +4228,10 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4051
4228
|
this.onMove = this._onMove.event;
|
|
4052
4229
|
this._onDidDrop = new Emitter();
|
|
4053
4230
|
this.onDidDrop = this._onDidDrop.event;
|
|
4231
|
+
this._onWillDrop = new Emitter();
|
|
4232
|
+
this.onWillDrop = this._onWillDrop.event;
|
|
4233
|
+
this._onWillShowOverlay = new Emitter();
|
|
4234
|
+
this.onWillShowOverlay = this._onWillShowOverlay.event;
|
|
4054
4235
|
this._onTabDragStart = new Emitter();
|
|
4055
4236
|
this.onTabDragStart = this._onTabDragStart.event;
|
|
4056
4237
|
this._onGroupDragStart = new Emitter();
|
|
@@ -4061,46 +4242,69 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4061
4242
|
this.onDidRemovePanel = this._onDidRemovePanel.event;
|
|
4062
4243
|
this._onDidActivePanelChange = new Emitter();
|
|
4063
4244
|
this.onDidActivePanelChange = this._onDidActivePanelChange.event;
|
|
4245
|
+
this._overwriteRenderContainer = null;
|
|
4064
4246
|
toggleClass(this.container, 'groupview', true);
|
|
4247
|
+
this._api = new DockviewApi(this.accessor);
|
|
4065
4248
|
this.tabsContainer = new TabsContainer(this.accessor, this.groupPanel);
|
|
4066
4249
|
this.contentContainer = new ContentContainer(this.accessor, this);
|
|
4067
4250
|
container.append(this.tabsContainer.element, this.contentContainer.element);
|
|
4068
4251
|
this.header.hidden = !!options.hideHeader;
|
|
4069
4252
|
this.locked = (_a = options.locked) !== null && _a !== void 0 ? _a : false;
|
|
4070
|
-
this.addDisposables(this._onTabDragStart, this._onGroupDragStart, this.tabsContainer.onTabDragStart((event) => {
|
|
4253
|
+
this.addDisposables(this._onTabDragStart, this._onGroupDragStart, this._onWillShowOverlay, this.tabsContainer.onTabDragStart((event) => {
|
|
4071
4254
|
this._onTabDragStart.fire(event);
|
|
4072
4255
|
}), this.tabsContainer.onGroupDragStart((event) => {
|
|
4073
4256
|
this._onGroupDragStart.fire(event);
|
|
4074
4257
|
}), this.tabsContainer.onDrop((event) => {
|
|
4075
|
-
this.handleDropEvent(event.event, 'center', event.index);
|
|
4258
|
+
this.handleDropEvent('header', event.event, 'center', event.index);
|
|
4076
4259
|
}), this.contentContainer.onDidFocus(() => {
|
|
4077
|
-
this.accessor.doSetGroupActive(this.groupPanel
|
|
4260
|
+
this.accessor.doSetGroupActive(this.groupPanel);
|
|
4078
4261
|
}), this.contentContainer.onDidBlur(() => {
|
|
4079
4262
|
// noop
|
|
4080
4263
|
}), this.contentContainer.dropTarget.onDrop((event) => {
|
|
4081
|
-
this.handleDropEvent(event.nativeEvent, event.position);
|
|
4082
|
-
}), this.
|
|
4264
|
+
this.handleDropEvent('content', event.nativeEvent, event.position);
|
|
4265
|
+
}), this.tabsContainer.onWillShowOverlay((event) => {
|
|
4266
|
+
this._onWillShowOverlay.fire(event);
|
|
4267
|
+
}), this.contentContainer.dropTarget.onWillShowOverlay((event) => {
|
|
4268
|
+
this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {
|
|
4269
|
+
kind: 'content',
|
|
4270
|
+
}));
|
|
4271
|
+
}), this._onMove, this._onDidChange, this._onDidDrop, this._onWillDrop, this._onDidAddPanel, this._onDidRemovePanel, this._onDidActivePanelChange);
|
|
4272
|
+
}
|
|
4273
|
+
focusContent() {
|
|
4274
|
+
this.contentContainer.element.focus();
|
|
4275
|
+
}
|
|
4276
|
+
set renderContainer(value) {
|
|
4277
|
+
this.panels.forEach((panel) => {
|
|
4278
|
+
this.renderContainer.detatch(panel);
|
|
4279
|
+
});
|
|
4280
|
+
this._overwriteRenderContainer = value;
|
|
4281
|
+
this.panels.forEach((panel) => {
|
|
4282
|
+
this.rerender(panel);
|
|
4283
|
+
});
|
|
4284
|
+
}
|
|
4285
|
+
get renderContainer() {
|
|
4286
|
+
var _a;
|
|
4287
|
+
return ((_a = this._overwriteRenderContainer) !== null && _a !== void 0 ? _a : this.accessor.overlayRenderContainer);
|
|
4083
4288
|
}
|
|
4084
4289
|
initialize() {
|
|
4085
|
-
|
|
4086
|
-
if ((_a = this.options) === null || _a === void 0 ? void 0 : _a.panels) {
|
|
4290
|
+
if (this.options.panels) {
|
|
4087
4291
|
this.options.panels.forEach((panel) => {
|
|
4088
4292
|
this.doAddPanel(panel);
|
|
4089
4293
|
});
|
|
4090
4294
|
}
|
|
4091
|
-
if (
|
|
4295
|
+
if (this.options.activePanel) {
|
|
4092
4296
|
this.openPanel(this.options.activePanel);
|
|
4093
4297
|
}
|
|
4094
4298
|
// must be run after the constructor otherwise this.parent may not be
|
|
4095
4299
|
// correctly initialized
|
|
4096
|
-
this.setActive(this.isActive, true
|
|
4300
|
+
this.setActive(this.isActive, true);
|
|
4097
4301
|
this.updateContainer();
|
|
4098
4302
|
if (this.accessor.options.createRightHeaderActionsElement) {
|
|
4099
4303
|
this._rightHeaderActions =
|
|
4100
4304
|
this.accessor.options.createRightHeaderActionsElement(this.groupPanel);
|
|
4101
4305
|
this.addDisposables(this._rightHeaderActions);
|
|
4102
4306
|
this._rightHeaderActions.init({
|
|
4103
|
-
containerApi:
|
|
4307
|
+
containerApi: this._api,
|
|
4104
4308
|
api: this.groupPanel.api,
|
|
4105
4309
|
});
|
|
4106
4310
|
this.tabsContainer.setRightActionsElement(this._rightHeaderActions.element);
|
|
@@ -4110,7 +4314,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4110
4314
|
this.accessor.options.createLeftHeaderActionsElement(this.groupPanel);
|
|
4111
4315
|
this.addDisposables(this._leftHeaderActions);
|
|
4112
4316
|
this._leftHeaderActions.init({
|
|
4113
|
-
containerApi:
|
|
4317
|
+
containerApi: this._api,
|
|
4114
4318
|
api: this.groupPanel.api,
|
|
4115
4319
|
});
|
|
4116
4320
|
this.tabsContainer.setLeftActionsElement(this._leftHeaderActions.element);
|
|
@@ -4120,7 +4324,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4120
4324
|
this.accessor.options.createPrefixHeaderActionsElement(this.groupPanel);
|
|
4121
4325
|
this.addDisposables(this._prefixHeaderActions);
|
|
4122
4326
|
this._prefixHeaderActions.init({
|
|
4123
|
-
containerApi:
|
|
4327
|
+
containerApi: this._api,
|
|
4124
4328
|
api: this.groupPanel.api,
|
|
4125
4329
|
});
|
|
4126
4330
|
this.tabsContainer.setPrefixActionsElement(this._prefixHeaderActions.element);
|
|
@@ -4200,34 +4404,45 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4200
4404
|
//noop
|
|
4201
4405
|
}
|
|
4202
4406
|
focus() {
|
|
4203
|
-
var _a
|
|
4204
|
-
(
|
|
4407
|
+
var _a;
|
|
4408
|
+
(_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.focus();
|
|
4205
4409
|
}
|
|
4206
4410
|
openPanel(panel, options = {}) {
|
|
4411
|
+
/**
|
|
4412
|
+
* set the panel group
|
|
4413
|
+
* add the panel
|
|
4414
|
+
* check if group active
|
|
4415
|
+
* check if panel active
|
|
4416
|
+
*/
|
|
4207
4417
|
if (typeof options.index !== 'number' ||
|
|
4208
4418
|
options.index > this.panels.length) {
|
|
4209
4419
|
options.index = this.panels.length;
|
|
4210
4420
|
}
|
|
4211
|
-
const
|
|
4212
|
-
const skipSetGroupActive = !!options.skipSetGroupActive;
|
|
4421
|
+
const skipSetActive = !!options.skipSetActive;
|
|
4213
4422
|
// ensure the group is updated before we fire any events
|
|
4214
|
-
panel.updateParentGroup(this.groupPanel,
|
|
4423
|
+
panel.updateParentGroup(this.groupPanel, {
|
|
4424
|
+
skipSetActive: options.skipSetActive,
|
|
4425
|
+
});
|
|
4426
|
+
this.doAddPanel(panel, options.index, {
|
|
4427
|
+
skipSetActive: skipSetActive,
|
|
4428
|
+
});
|
|
4215
4429
|
if (this._activePanel === panel) {
|
|
4216
|
-
|
|
4217
|
-
this.accessor.doSetGroupActive(this.groupPanel);
|
|
4218
|
-
}
|
|
4430
|
+
this.contentContainer.renderPanel(panel, { asActive: true });
|
|
4219
4431
|
return;
|
|
4220
4432
|
}
|
|
4221
|
-
|
|
4222
|
-
if (!skipSetPanelActive) {
|
|
4433
|
+
if (!skipSetActive) {
|
|
4223
4434
|
this.doSetActivePanel(panel);
|
|
4224
4435
|
}
|
|
4225
|
-
if (!skipSetGroupActive) {
|
|
4226
|
-
this.accessor.doSetGroupActive(this.groupPanel
|
|
4436
|
+
if (!options.skipSetGroupActive) {
|
|
4437
|
+
this.accessor.doSetGroupActive(this.groupPanel);
|
|
4438
|
+
}
|
|
4439
|
+
if (!options.skipSetActive) {
|
|
4440
|
+
this.updateContainer();
|
|
4227
4441
|
}
|
|
4228
|
-
this.updateContainer();
|
|
4229
4442
|
}
|
|
4230
|
-
removePanel(groupItemOrId
|
|
4443
|
+
removePanel(groupItemOrId, options = {
|
|
4444
|
+
skipSetActive: false,
|
|
4445
|
+
}) {
|
|
4231
4446
|
const id = typeof groupItemOrId === 'string'
|
|
4232
4447
|
? groupItemOrId
|
|
4233
4448
|
: groupItemOrId.id;
|
|
@@ -4235,7 +4450,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4235
4450
|
if (!panelToRemove) {
|
|
4236
4451
|
throw new Error('invalid operation');
|
|
4237
4452
|
}
|
|
4238
|
-
return this._removePanel(panelToRemove);
|
|
4453
|
+
return this._removePanel(panelToRemove, options);
|
|
4239
4454
|
}
|
|
4240
4455
|
closeAllPanels() {
|
|
4241
4456
|
if (this.panels.length > 0) {
|
|
@@ -4261,12 +4476,8 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4261
4476
|
updateActions(element) {
|
|
4262
4477
|
this.tabsContainer.setRightActionsElement(element);
|
|
4263
4478
|
}
|
|
4264
|
-
setActive(isGroupActive,
|
|
4265
|
-
var _a, _b, _c, _d;
|
|
4479
|
+
setActive(isGroupActive, force = false) {
|
|
4266
4480
|
if (!force && this.isActive === isGroupActive) {
|
|
4267
|
-
if (!skipFocus) {
|
|
4268
|
-
(_b = (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.focus) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
4269
|
-
}
|
|
4270
4481
|
return;
|
|
4271
4482
|
}
|
|
4272
4483
|
this._isGroupActive = isGroupActive;
|
|
@@ -4277,11 +4488,6 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4277
4488
|
this.doSetActivePanel(this.panels[0]);
|
|
4278
4489
|
}
|
|
4279
4490
|
this.updateContainer();
|
|
4280
|
-
if (isGroupActive) {
|
|
4281
|
-
if (!skipFocus) {
|
|
4282
|
-
(_d = (_c = this._activePanel) === null || _c === void 0 ? void 0 : _c.focus) === null || _d === void 0 ? void 0 : _d.call(_c);
|
|
4283
|
-
}
|
|
4284
|
-
}
|
|
4285
4491
|
}
|
|
4286
4492
|
layout(width, height) {
|
|
4287
4493
|
var _a;
|
|
@@ -4292,17 +4498,22 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4292
4498
|
this._activePanel.layout(this._width, this._height);
|
|
4293
4499
|
}
|
|
4294
4500
|
}
|
|
4295
|
-
_removePanel(panel) {
|
|
4501
|
+
_removePanel(panel, options) {
|
|
4296
4502
|
const isActivePanel = this._activePanel === panel;
|
|
4297
4503
|
this.doRemovePanel(panel);
|
|
4298
4504
|
if (isActivePanel && this.panels.length > 0) {
|
|
4299
4505
|
const nextPanel = this.mostRecentlyUsed[0];
|
|
4300
|
-
this.openPanel(nextPanel
|
|
4506
|
+
this.openPanel(nextPanel, {
|
|
4507
|
+
skipSetActive: options.skipSetActive,
|
|
4508
|
+
skipSetGroupActive: options.skipSetActiveGroup,
|
|
4509
|
+
});
|
|
4301
4510
|
}
|
|
4302
4511
|
if (this._activePanel && this.panels.length === 0) {
|
|
4303
4512
|
this.doSetActivePanel(undefined);
|
|
4304
4513
|
}
|
|
4305
|
-
|
|
4514
|
+
if (!options.skipSetActive) {
|
|
4515
|
+
this.updateContainer();
|
|
4516
|
+
}
|
|
4306
4517
|
return panel;
|
|
4307
4518
|
}
|
|
4308
4519
|
doRemovePanel(panel) {
|
|
@@ -4317,13 +4528,13 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4317
4528
|
}
|
|
4318
4529
|
this._onDidRemovePanel.fire({ panel });
|
|
4319
4530
|
}
|
|
4320
|
-
doAddPanel(panel, index = this.panels.length,
|
|
4531
|
+
doAddPanel(panel, index = this.panels.length, options = { skipSetActive: false }) {
|
|
4321
4532
|
const existingPanel = this._panels.indexOf(panel);
|
|
4322
4533
|
const hasExistingPanel = existingPanel > -1;
|
|
4323
4534
|
this.tabsContainer.show();
|
|
4324
4535
|
this.contentContainer.show();
|
|
4325
4536
|
this.tabsContainer.openPanel(panel, index);
|
|
4326
|
-
if (!skipSetActive) {
|
|
4537
|
+
if (!options.skipSetActive) {
|
|
4327
4538
|
this.contentContainer.openPanel(panel);
|
|
4328
4539
|
}
|
|
4329
4540
|
if (hasExistingPanel) {
|
|
@@ -4335,12 +4546,17 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4335
4546
|
this._onDidAddPanel.fire({ panel });
|
|
4336
4547
|
}
|
|
4337
4548
|
doSetActivePanel(panel) {
|
|
4549
|
+
if (this._activePanel === panel) {
|
|
4550
|
+
return;
|
|
4551
|
+
}
|
|
4338
4552
|
this._activePanel = panel;
|
|
4339
4553
|
if (panel) {
|
|
4340
4554
|
this.tabsContainer.setActivePanel(panel);
|
|
4341
4555
|
panel.layout(this._width, this._height);
|
|
4342
4556
|
this.updateMru(panel);
|
|
4343
|
-
this._onDidActivePanelChange.fire({
|
|
4557
|
+
this._onDidActivePanelChange.fire({
|
|
4558
|
+
panel,
|
|
4559
|
+
});
|
|
4344
4560
|
}
|
|
4345
4561
|
}
|
|
4346
4562
|
updateMru(panel) {
|
|
@@ -4352,11 +4568,11 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4352
4568
|
updateContainer() {
|
|
4353
4569
|
var _a, _b;
|
|
4354
4570
|
toggleClass(this.container, 'empty', this.isEmpty);
|
|
4355
|
-
this.panels.forEach((panel) => panel.
|
|
4571
|
+
this.panels.forEach((panel) => panel.runEvents());
|
|
4356
4572
|
if (this.isEmpty && !this.watermark) {
|
|
4357
4573
|
const watermark = this.accessor.createWatermarkComponent();
|
|
4358
4574
|
watermark.init({
|
|
4359
|
-
containerApi:
|
|
4575
|
+
containerApi: this._api,
|
|
4360
4576
|
group: this.groupPanel,
|
|
4361
4577
|
});
|
|
4362
4578
|
this.watermark = watermark;
|
|
@@ -4389,10 +4605,32 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4389
4605
|
}
|
|
4390
4606
|
return false;
|
|
4391
4607
|
}
|
|
4392
|
-
handleDropEvent(event, position, index) {
|
|
4608
|
+
handleDropEvent(type, event, position, index) {
|
|
4393
4609
|
if (this.locked === 'no-drop-target') {
|
|
4394
4610
|
return;
|
|
4395
4611
|
}
|
|
4612
|
+
function getKind() {
|
|
4613
|
+
switch (type) {
|
|
4614
|
+
case 'header':
|
|
4615
|
+
return typeof index === 'number' ? 'tab' : 'header_space';
|
|
4616
|
+
case 'content':
|
|
4617
|
+
return 'content';
|
|
4618
|
+
}
|
|
4619
|
+
}
|
|
4620
|
+
const panel = typeof index === 'number' ? this.panels[index] : undefined;
|
|
4621
|
+
const willDropEvent = new DockviewWillDropEvent({
|
|
4622
|
+
nativeEvent: event,
|
|
4623
|
+
position,
|
|
4624
|
+
panel,
|
|
4625
|
+
getData: () => getPanelData(),
|
|
4626
|
+
kind: getKind(),
|
|
4627
|
+
group: this.groupPanel,
|
|
4628
|
+
api: this._api,
|
|
4629
|
+
});
|
|
4630
|
+
this._onWillDrop.fire(willDropEvent);
|
|
4631
|
+
if (willDropEvent.defaultPrevented) {
|
|
4632
|
+
return;
|
|
4633
|
+
}
|
|
4396
4634
|
const data = getPanelData();
|
|
4397
4635
|
if (data && data.viewId === this.accessor.id) {
|
|
4398
4636
|
if (data.panelId === null) {
|
|
@@ -4425,12 +4663,14 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4425
4663
|
});
|
|
4426
4664
|
}
|
|
4427
4665
|
else {
|
|
4428
|
-
this._onDidDrop.fire({
|
|
4666
|
+
this._onDidDrop.fire(new DockviewDidDropEvent({
|
|
4429
4667
|
nativeEvent: event,
|
|
4430
4668
|
position,
|
|
4431
|
-
|
|
4669
|
+
panel,
|
|
4432
4670
|
getData: () => getPanelData(),
|
|
4433
|
-
|
|
4671
|
+
group: this.groupPanel,
|
|
4672
|
+
api: this._api,
|
|
4673
|
+
}));
|
|
4434
4674
|
}
|
|
4435
4675
|
}
|
|
4436
4676
|
dispose() {
|
|
@@ -4438,6 +4678,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4438
4678
|
super.dispose();
|
|
4439
4679
|
(_a = this.watermark) === null || _a === void 0 ? void 0 : _a.element.remove();
|
|
4440
4680
|
(_c = (_b = this.watermark) === null || _b === void 0 ? void 0 : _b.dispose) === null || _c === void 0 ? void 0 : _c.call(_b);
|
|
4681
|
+
this.watermark = undefined;
|
|
4441
4682
|
for (const panel of this.panels) {
|
|
4442
4683
|
panel.dispose();
|
|
4443
4684
|
}
|
|
@@ -4459,15 +4700,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4459
4700
|
constructor(parentElement, disableResizing = false) {
|
|
4460
4701
|
super();
|
|
4461
4702
|
this._disableResizing = disableResizing;
|
|
4462
|
-
|
|
4463
|
-
this._element = parentElement;
|
|
4464
|
-
}
|
|
4465
|
-
else {
|
|
4466
|
-
this._element = document.createElement('div');
|
|
4467
|
-
this._element.style.height = '100%';
|
|
4468
|
-
this._element.style.width = '100%';
|
|
4469
|
-
this._element.className = 'dv-resizable-container';
|
|
4470
|
-
}
|
|
4703
|
+
this._element = parentElement;
|
|
4471
4704
|
this.addDisposables(watchElementResize(this._element, (entry) => {
|
|
4472
4705
|
if (this.isDisposed) {
|
|
4473
4706
|
/**
|
|
@@ -4555,25 +4788,38 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4555
4788
|
get activeGroup() {
|
|
4556
4789
|
return this._activeGroup;
|
|
4557
4790
|
}
|
|
4791
|
+
get locked() {
|
|
4792
|
+
return this.gridview.locked;
|
|
4793
|
+
}
|
|
4794
|
+
set locked(value) {
|
|
4795
|
+
this.gridview.locked = value;
|
|
4796
|
+
}
|
|
4558
4797
|
constructor(options) {
|
|
4559
|
-
super(
|
|
4798
|
+
super(document.createElement('div'), options.disableAutoResizing);
|
|
4560
4799
|
this._id = nextLayoutId$1.next();
|
|
4561
4800
|
this._groups = new Map();
|
|
4562
4801
|
this._onDidLayoutChange = new Emitter();
|
|
4563
4802
|
this.onDidLayoutChange = this._onDidLayoutChange.event;
|
|
4564
|
-
this.
|
|
4565
|
-
this.
|
|
4566
|
-
this.
|
|
4567
|
-
this.
|
|
4568
|
-
this.
|
|
4569
|
-
this.
|
|
4803
|
+
this._onDidRemove = new Emitter();
|
|
4804
|
+
this.onDidRemove = this._onDidRemove.event;
|
|
4805
|
+
this._onDidAdd = new Emitter();
|
|
4806
|
+
this.onDidAdd = this._onDidAdd.event;
|
|
4807
|
+
this._onDidActiveChange = new Emitter();
|
|
4808
|
+
this.onDidActiveChange = this._onDidActiveChange.event;
|
|
4570
4809
|
this._bufferOnDidLayoutChange = new TickDelayedEvent();
|
|
4810
|
+
this.element.style.height = '100%';
|
|
4811
|
+
this.element.style.width = '100%';
|
|
4812
|
+
options.parentElement.appendChild(this.element);
|
|
4571
4813
|
this.gridview = new Gridview(!!options.proportionalLayout, options.styles, options.orientation);
|
|
4814
|
+
this.gridview.locked = !!options.locked;
|
|
4572
4815
|
this.element.appendChild(this.gridview.element);
|
|
4573
4816
|
this.layout(0, 0, true); // set some elements height/widths
|
|
4574
|
-
this.addDisposables(
|
|
4817
|
+
this.addDisposables(Disposable.from(() => {
|
|
4818
|
+
var _a;
|
|
4819
|
+
(_a = this.element.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(this.element);
|
|
4820
|
+
}), this.gridview.onDidChange(() => {
|
|
4575
4821
|
this._bufferOnDidLayoutChange.fire();
|
|
4576
|
-
}), exports.DockviewEvent.any(this.
|
|
4822
|
+
}), exports.DockviewEvent.any(this.onDidAdd, this.onDidRemove, this.onDidActiveChange)(() => {
|
|
4577
4823
|
this._bufferOnDidLayoutChange.fire();
|
|
4578
4824
|
}), this._bufferOnDidLayoutChange.onEvent(() => {
|
|
4579
4825
|
this._onDidLayoutChange.fire();
|
|
@@ -4588,6 +4834,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4588
4834
|
}
|
|
4589
4835
|
maximizeGroup(panel) {
|
|
4590
4836
|
this.gridview.maximizeView(panel);
|
|
4837
|
+
this.doSetGroupActive(panel);
|
|
4591
4838
|
}
|
|
4592
4839
|
isMaximizedGroup(panel) {
|
|
4593
4840
|
return this.gridview.maximizedView() === panel;
|
|
@@ -4598,13 +4845,12 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4598
4845
|
hasMaximizedGroup() {
|
|
4599
4846
|
return this.gridview.hasMaximizedView();
|
|
4600
4847
|
}
|
|
4601
|
-
get
|
|
4602
|
-
return this.gridview.
|
|
4848
|
+
get onDidMaximizedGroupChange() {
|
|
4849
|
+
return this.gridview.onDidMaximizedNodeChange;
|
|
4603
4850
|
}
|
|
4604
4851
|
doAddGroup(group, location = [0], size) {
|
|
4605
4852
|
this.gridview.addView(group, size !== null && size !== void 0 ? size : exports.Sizing.Distribute, location);
|
|
4606
|
-
this.
|
|
4607
|
-
this.doSetGroupActive(group);
|
|
4853
|
+
this._onDidAdd.fire(group);
|
|
4608
4854
|
}
|
|
4609
4855
|
doRemoveGroup(group, options) {
|
|
4610
4856
|
if (!this._groups.has(group.id)) {
|
|
@@ -4616,8 +4862,8 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4616
4862
|
item.disposable.dispose();
|
|
4617
4863
|
item.value.dispose();
|
|
4618
4864
|
this._groups.delete(group.id);
|
|
4865
|
+
this._onDidRemove.fire(group);
|
|
4619
4866
|
}
|
|
4620
|
-
this._onDidRemoveGroup.fire(group);
|
|
4621
4867
|
if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {
|
|
4622
4868
|
const groups = Array.from(this._groups.values());
|
|
4623
4869
|
this.doSetGroupActive(groups.length > 0 ? groups[0].value : undefined);
|
|
@@ -4628,25 +4874,18 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4628
4874
|
var _a;
|
|
4629
4875
|
return (_a = this._groups.get(id)) === null || _a === void 0 ? void 0 : _a.value;
|
|
4630
4876
|
}
|
|
4631
|
-
doSetGroupActive(group
|
|
4632
|
-
var _a, _b, _c;
|
|
4877
|
+
doSetGroupActive(group) {
|
|
4633
4878
|
if (this._activeGroup === group) {
|
|
4634
4879
|
return;
|
|
4635
4880
|
}
|
|
4636
4881
|
if (this._activeGroup) {
|
|
4637
4882
|
this._activeGroup.setActive(false);
|
|
4638
|
-
if (!skipFocus) {
|
|
4639
|
-
(_b = (_a = this._activeGroup).focus) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
4640
|
-
}
|
|
4641
4883
|
}
|
|
4642
4884
|
if (group) {
|
|
4643
4885
|
group.setActive(true);
|
|
4644
|
-
if (!skipFocus) {
|
|
4645
|
-
(_c = group.focus) === null || _c === void 0 ? void 0 : _c.call(group);
|
|
4646
|
-
}
|
|
4647
4886
|
}
|
|
4648
4887
|
this._activeGroup = group;
|
|
4649
|
-
this.
|
|
4888
|
+
this._onDidActiveChange.fire(group);
|
|
4650
4889
|
}
|
|
4651
4890
|
removeGroup(group) {
|
|
4652
4891
|
this.doRemoveGroup(group);
|
|
@@ -4691,9 +4930,9 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4691
4930
|
this.gridview.layout(width, height);
|
|
4692
4931
|
}
|
|
4693
4932
|
dispose() {
|
|
4694
|
-
this.
|
|
4695
|
-
this.
|
|
4696
|
-
this.
|
|
4933
|
+
this._onDidActiveChange.dispose();
|
|
4934
|
+
this._onDidAdd.dispose();
|
|
4935
|
+
this._onDidRemove.dispose();
|
|
4697
4936
|
this._onDidLayoutChange.dispose();
|
|
4698
4937
|
for (const group of this.groups) {
|
|
4699
4938
|
group.dispose();
|
|
@@ -4703,11 +4942,15 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4703
4942
|
}
|
|
4704
4943
|
}
|
|
4705
4944
|
|
|
4945
|
+
class WillFocusEvent extends DockviewEvent {
|
|
4946
|
+
constructor() {
|
|
4947
|
+
super();
|
|
4948
|
+
}
|
|
4949
|
+
}
|
|
4706
4950
|
/**
|
|
4707
4951
|
* A core api implementation that should be used across all panel-like objects
|
|
4708
4952
|
*/
|
|
4709
4953
|
class PanelApiImpl extends CompositeDisposable {
|
|
4710
|
-
//
|
|
4711
4954
|
get isFocused() {
|
|
4712
4955
|
return this._isFocused;
|
|
4713
4956
|
}
|
|
@@ -4717,6 +4960,9 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4717
4960
|
get isVisible() {
|
|
4718
4961
|
return this._isVisible;
|
|
4719
4962
|
}
|
|
4963
|
+
get isHidden() {
|
|
4964
|
+
return this._isHidden;
|
|
4965
|
+
}
|
|
4720
4966
|
get width() {
|
|
4721
4967
|
return this._width;
|
|
4722
4968
|
}
|
|
@@ -4729,38 +4975,26 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4729
4975
|
this._isFocused = false;
|
|
4730
4976
|
this._isActive = false;
|
|
4731
4977
|
this._isVisible = true;
|
|
4978
|
+
this._isHidden = false;
|
|
4732
4979
|
this._width = 0;
|
|
4733
4980
|
this._height = 0;
|
|
4734
4981
|
this.panelUpdatesDisposable = new MutableDisposable();
|
|
4735
|
-
this._onDidDimensionChange = new Emitter(
|
|
4736
|
-
replay: true,
|
|
4737
|
-
});
|
|
4982
|
+
this._onDidDimensionChange = new Emitter();
|
|
4738
4983
|
this.onDidDimensionsChange = this._onDidDimensionChange.event;
|
|
4739
|
-
|
|
4740
|
-
this._onDidChangeFocus = new Emitter({
|
|
4741
|
-
replay: true,
|
|
4742
|
-
});
|
|
4984
|
+
this._onDidChangeFocus = new Emitter();
|
|
4743
4985
|
this.onDidFocusChange = this._onDidChangeFocus.event;
|
|
4744
4986
|
//
|
|
4745
|
-
this.
|
|
4746
|
-
this.
|
|
4987
|
+
this._onWillFocus = new Emitter();
|
|
4988
|
+
this.onWillFocus = this._onWillFocus.event;
|
|
4747
4989
|
//
|
|
4748
|
-
this._onDidVisibilityChange = new Emitter(
|
|
4749
|
-
replay: true,
|
|
4750
|
-
});
|
|
4990
|
+
this._onDidVisibilityChange = new Emitter();
|
|
4751
4991
|
this.onDidVisibilityChange = this._onDidVisibilityChange.event;
|
|
4752
|
-
|
|
4753
|
-
this.
|
|
4754
|
-
this.
|
|
4755
|
-
//
|
|
4756
|
-
this._onDidActiveChange = new Emitter({
|
|
4757
|
-
replay: true,
|
|
4758
|
-
});
|
|
4992
|
+
this._onDidHiddenChange = new Emitter();
|
|
4993
|
+
this.onDidHiddenChange = this._onDidHiddenChange.event;
|
|
4994
|
+
this._onDidActiveChange = new Emitter();
|
|
4759
4995
|
this.onDidActiveChange = this._onDidActiveChange.event;
|
|
4760
|
-
//
|
|
4761
4996
|
this._onActiveChange = new Emitter();
|
|
4762
4997
|
this.onActiveChange = this._onActiveChange.event;
|
|
4763
|
-
//
|
|
4764
4998
|
this._onUpdateParameters = new Emitter();
|
|
4765
4999
|
this.onUpdateParameters = this._onUpdateParameters.event;
|
|
4766
5000
|
this.addDisposables(this.onDidFocusChange((event) => {
|
|
@@ -4769,10 +5003,12 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4769
5003
|
this._isActive = event.isActive;
|
|
4770
5004
|
}), this.onDidVisibilityChange((event) => {
|
|
4771
5005
|
this._isVisible = event.isVisible;
|
|
5006
|
+
}), this.onDidHiddenChange((event) => {
|
|
5007
|
+
this._isHidden = event.isHidden;
|
|
4772
5008
|
}), this.onDidDimensionsChange((event) => {
|
|
4773
5009
|
this._width = event.width;
|
|
4774
5010
|
this._height = event.height;
|
|
4775
|
-
}), this.panelUpdatesDisposable, this._onDidDimensionChange, this._onDidChangeFocus, this._onDidVisibilityChange, this._onDidActiveChange, this.
|
|
5011
|
+
}), this.panelUpdatesDisposable, this._onDidDimensionChange, this._onDidChangeFocus, this._onDidVisibilityChange, this._onDidActiveChange, this._onWillFocus, this._onActiveChange, this._onUpdateParameters, this._onWillFocus, this._onDidHiddenChange, this._onUpdateParameters);
|
|
4776
5012
|
}
|
|
4777
5013
|
initialize(panel) {
|
|
4778
5014
|
this.panelUpdatesDisposable.value = this._onUpdateParameters.event((parameters) => {
|
|
@@ -4781,8 +5017,8 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4781
5017
|
});
|
|
4782
5018
|
});
|
|
4783
5019
|
}
|
|
4784
|
-
|
|
4785
|
-
this.
|
|
5020
|
+
setHidden(isHidden) {
|
|
5021
|
+
this._onDidHiddenChange.fire({ isHidden });
|
|
4786
5022
|
}
|
|
4787
5023
|
setActive() {
|
|
4788
5024
|
this._onActiveChange.fire();
|
|
@@ -4790,9 +5026,6 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4790
5026
|
updateParameters(parameters) {
|
|
4791
5027
|
this._onUpdateParameters.fire(parameters);
|
|
4792
5028
|
}
|
|
4793
|
-
dispose() {
|
|
4794
|
-
super.dispose();
|
|
4795
|
-
}
|
|
4796
5029
|
}
|
|
4797
5030
|
|
|
4798
5031
|
class SplitviewPanelApiImpl extends PanelApiImpl {
|
|
@@ -4880,7 +5113,12 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4880
5113
|
}), focusTracker);
|
|
4881
5114
|
}
|
|
4882
5115
|
focus() {
|
|
4883
|
-
|
|
5116
|
+
const event = new WillFocusEvent();
|
|
5117
|
+
this.api._onWillFocus.fire(event);
|
|
5118
|
+
if (event.defaultPrevented) {
|
|
5119
|
+
return;
|
|
5120
|
+
}
|
|
5121
|
+
this._element.focus();
|
|
4884
5122
|
}
|
|
4885
5123
|
layout(width, height) {
|
|
4886
5124
|
this._width = width;
|
|
@@ -5209,9 +5447,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
5209
5447
|
super(id);
|
|
5210
5448
|
this._onDidConstraintsChangeInternal = new Emitter();
|
|
5211
5449
|
this.onDidConstraintsChangeInternal = this._onDidConstraintsChangeInternal.event;
|
|
5212
|
-
this._onDidConstraintsChange = new Emitter(
|
|
5213
|
-
replay: true,
|
|
5214
|
-
});
|
|
5450
|
+
this._onDidConstraintsChange = new Emitter();
|
|
5215
5451
|
this.onDidConstraintsChange = this._onDidConstraintsChange.event;
|
|
5216
5452
|
this._onDidSizeChange = new Emitter();
|
|
5217
5453
|
this.onDidSizeChange = this._onDidSizeChange.event;
|
|
@@ -5304,13 +5540,13 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
5304
5540
|
this._maximumHeight = options.maximumHeight;
|
|
5305
5541
|
}
|
|
5306
5542
|
this.api.initialize(this); // TODO: required to by-pass 'super before this' requirement
|
|
5307
|
-
this.addDisposables(this.api.
|
|
5308
|
-
const {
|
|
5543
|
+
this.addDisposables(this.api.onDidHiddenChange((event) => {
|
|
5544
|
+
const { isHidden } = event;
|
|
5309
5545
|
const { accessor } = this._params;
|
|
5310
|
-
accessor.setVisible(this,
|
|
5546
|
+
accessor.setVisible(this, !isHidden);
|
|
5311
5547
|
}), this.api.onActiveChange(() => {
|
|
5312
5548
|
const { accessor } = this._params;
|
|
5313
|
-
accessor.
|
|
5549
|
+
accessor.doSetGroupActive(this);
|
|
5314
5550
|
}), this.api.onDidConstraintsChangeInternal((event) => {
|
|
5315
5551
|
if (typeof event.minimumWidth === 'number' ||
|
|
5316
5552
|
typeof event.minimumWidth === 'function') {
|
|
@@ -5393,6 +5629,17 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
5393
5629
|
this.onDidLocationChange = this._onDidLocationChange.event;
|
|
5394
5630
|
this.addDisposables(this._onDidLocationChange);
|
|
5395
5631
|
}
|
|
5632
|
+
close() {
|
|
5633
|
+
if (!this._group) {
|
|
5634
|
+
return;
|
|
5635
|
+
}
|
|
5636
|
+
return this.accessor.removeGroup(this._group);
|
|
5637
|
+
}
|
|
5638
|
+
getWindow() {
|
|
5639
|
+
return this.location.type === 'popout'
|
|
5640
|
+
? this.location.getWindow()
|
|
5641
|
+
: window;
|
|
5642
|
+
}
|
|
5396
5643
|
moveTo(options) {
|
|
5397
5644
|
var _a, _b, _c;
|
|
5398
5645
|
if (!this._group) {
|
|
@@ -5400,14 +5647,23 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
5400
5647
|
}
|
|
5401
5648
|
const group = (_a = options.group) !== null && _a !== void 0 ? _a : this.accessor.addGroup({
|
|
5402
5649
|
direction: positionToDirection((_b = options.position) !== null && _b !== void 0 ? _b : 'right'),
|
|
5650
|
+
skipSetActive: true,
|
|
5651
|
+
});
|
|
5652
|
+
this.accessor.moveGroupOrPanel({
|
|
5653
|
+
from: { groupId: this._group.id },
|
|
5654
|
+
to: {
|
|
5655
|
+
group,
|
|
5656
|
+
position: options.group
|
|
5657
|
+
? (_c = options.position) !== null && _c !== void 0 ? _c : 'center'
|
|
5658
|
+
: 'center',
|
|
5659
|
+
},
|
|
5403
5660
|
});
|
|
5404
|
-
this.accessor.moveGroupOrPanel(group, this._group.id, undefined, options.group ? (_c = options.position) !== null && _c !== void 0 ? _c : 'center' : 'center');
|
|
5405
5661
|
}
|
|
5406
5662
|
maximize() {
|
|
5407
5663
|
if (!this._group) {
|
|
5408
5664
|
throw new Error(NOT_INITIALIZED_MESSAGE);
|
|
5409
5665
|
}
|
|
5410
|
-
if (this.location !== 'grid') {
|
|
5666
|
+
if (this.location.type !== 'grid') {
|
|
5411
5667
|
// only grid groups can be maximized
|
|
5412
5668
|
return;
|
|
5413
5669
|
}
|
|
@@ -5464,6 +5720,12 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
5464
5720
|
this.api.initialize(this); // cannot use 'this' after after 'super' call
|
|
5465
5721
|
this._model = new DockviewGroupPanelModel(this.element, accessor, id, options, this);
|
|
5466
5722
|
}
|
|
5723
|
+
focus() {
|
|
5724
|
+
if (!this.api.isActive) {
|
|
5725
|
+
this.api.setActive();
|
|
5726
|
+
}
|
|
5727
|
+
super.focus();
|
|
5728
|
+
}
|
|
5467
5729
|
initialize() {
|
|
5468
5730
|
this._model.initialize();
|
|
5469
5731
|
}
|
|
@@ -5509,6 +5771,9 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
5509
5771
|
}
|
|
5510
5772
|
|
|
5511
5773
|
class DockviewPanelApiImpl extends GridviewPanelApiImpl {
|
|
5774
|
+
get location() {
|
|
5775
|
+
return this.group.api.location;
|
|
5776
|
+
}
|
|
5512
5777
|
get title() {
|
|
5513
5778
|
return this.panel.title;
|
|
5514
5779
|
}
|
|
@@ -5520,15 +5785,34 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
5520
5785
|
}
|
|
5521
5786
|
set group(value) {
|
|
5522
5787
|
const isOldGroupActive = this.isGroupActive;
|
|
5523
|
-
this._group
|
|
5524
|
-
|
|
5525
|
-
|
|
5526
|
-
|
|
5527
|
-
|
|
5788
|
+
if (this._group !== value) {
|
|
5789
|
+
this._group = value;
|
|
5790
|
+
this._onDidGroupChange.fire({});
|
|
5791
|
+
let _trackGroupActive = isOldGroupActive; // prevent duplicate events with same state
|
|
5792
|
+
this.groupEventsDisposable.value = new CompositeDisposable(this.group.api.onDidLocationChange((event) => {
|
|
5793
|
+
if (this.group !== this.panel.group) {
|
|
5794
|
+
return;
|
|
5795
|
+
}
|
|
5796
|
+
this._onDidLocationChange.fire(event);
|
|
5797
|
+
}), this.group.api.onDidActiveChange(() => {
|
|
5798
|
+
if (this.group !== this.panel.group) {
|
|
5799
|
+
return;
|
|
5800
|
+
}
|
|
5801
|
+
if (_trackGroupActive !== this.isGroupActive) {
|
|
5802
|
+
_trackGroupActive = this.isGroupActive;
|
|
5803
|
+
this._onDidActiveGroupChange.fire({
|
|
5804
|
+
isActive: this.isGroupActive,
|
|
5805
|
+
});
|
|
5806
|
+
}
|
|
5807
|
+
}));
|
|
5808
|
+
// if (this.isGroupActive !== isOldGroupActive) {
|
|
5809
|
+
// this._onDidActiveGroupChange.fire({
|
|
5810
|
+
// isActive: this.isGroupActive,
|
|
5811
|
+
// });
|
|
5812
|
+
// }
|
|
5813
|
+
this._onDidLocationChange.fire({
|
|
5814
|
+
location: this.group.api.location,
|
|
5528
5815
|
});
|
|
5529
|
-
if (this.isGroupActive !== isOldGroupActive) {
|
|
5530
|
-
this._onDidActiveGroupChange.fire();
|
|
5531
|
-
}
|
|
5532
5816
|
}
|
|
5533
5817
|
}
|
|
5534
5818
|
get group() {
|
|
@@ -5546,14 +5830,26 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
5546
5830
|
this.onDidGroupChange = this._onDidGroupChange.event;
|
|
5547
5831
|
this._onDidRendererChange = new Emitter();
|
|
5548
5832
|
this.onDidRendererChange = this._onDidRendererChange.event;
|
|
5549
|
-
this.
|
|
5833
|
+
this._onDidLocationChange = new Emitter();
|
|
5834
|
+
this.onDidLocationChange = this._onDidLocationChange.event;
|
|
5835
|
+
this.groupEventsDisposable = new MutableDisposable();
|
|
5550
5836
|
this.initialize(panel);
|
|
5551
5837
|
this._group = group;
|
|
5552
|
-
this.addDisposables(this.
|
|
5838
|
+
this.addDisposables(this.groupEventsDisposable, this._onDidRendererChange, this._onDidTitleChange, this._onDidGroupChange, this._onDidActiveGroupChange, this._onDidLocationChange);
|
|
5839
|
+
}
|
|
5840
|
+
getWindow() {
|
|
5841
|
+
return this.group.api.getWindow();
|
|
5553
5842
|
}
|
|
5554
5843
|
moveTo(options) {
|
|
5555
5844
|
var _a;
|
|
5556
|
-
this.accessor.moveGroupOrPanel(
|
|
5845
|
+
this.accessor.moveGroupOrPanel({
|
|
5846
|
+
from: { groupId: this._group.id, panelId: this.panel.id },
|
|
5847
|
+
to: {
|
|
5848
|
+
group: options.group,
|
|
5849
|
+
position: (_a = options.position) !== null && _a !== void 0 ? _a : 'center',
|
|
5850
|
+
index: options.index,
|
|
5851
|
+
},
|
|
5852
|
+
});
|
|
5557
5853
|
}
|
|
5558
5854
|
setTitle(title) {
|
|
5559
5855
|
this.panel.setTitle(title);
|
|
@@ -5614,7 +5910,14 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
5614
5910
|
this.setTitle(params.title);
|
|
5615
5911
|
}
|
|
5616
5912
|
focus() {
|
|
5617
|
-
|
|
5913
|
+
const event = new WillFocusEvent();
|
|
5914
|
+
this.api._onWillFocus.fire(event);
|
|
5915
|
+
if (event.defaultPrevented) {
|
|
5916
|
+
return;
|
|
5917
|
+
}
|
|
5918
|
+
if (!this.api.isActive) {
|
|
5919
|
+
this.api.setActive();
|
|
5920
|
+
}
|
|
5618
5921
|
}
|
|
5619
5922
|
toJSON() {
|
|
5620
5923
|
return {
|
|
@@ -5671,20 +5974,40 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
5671
5974
|
},
|
|
5672
5975
|
});
|
|
5673
5976
|
}
|
|
5674
|
-
updateParentGroup(group,
|
|
5977
|
+
updateParentGroup(group, options) {
|
|
5675
5978
|
this._group = group;
|
|
5676
|
-
this.api.group =
|
|
5979
|
+
this.api.group = this._group;
|
|
5677
5980
|
const isPanelVisible = this._group.model.isPanelActive(this);
|
|
5678
|
-
this.api.
|
|
5679
|
-
|
|
5680
|
-
|
|
5681
|
-
|
|
5682
|
-
|
|
5683
|
-
|
|
5684
|
-
|
|
5981
|
+
const isActive = this.group.api.isActive && isPanelVisible;
|
|
5982
|
+
if (!(options === null || options === void 0 ? void 0 : options.skipSetActive)) {
|
|
5983
|
+
if (this.api.isActive !== isActive) {
|
|
5984
|
+
this.api._onDidActiveChange.fire({
|
|
5985
|
+
isActive: this.group.api.isActive && isPanelVisible,
|
|
5986
|
+
});
|
|
5987
|
+
}
|
|
5988
|
+
}
|
|
5989
|
+
if (this.api.isVisible !== isPanelVisible) {
|
|
5990
|
+
this.api._onDidVisibilityChange.fire({
|
|
5991
|
+
isVisible: isPanelVisible,
|
|
5992
|
+
});
|
|
5993
|
+
}
|
|
5994
|
+
}
|
|
5995
|
+
runEvents() {
|
|
5996
|
+
const isPanelVisible = this._group.model.isPanelActive(this);
|
|
5997
|
+
const isActive = this.group.api.isActive && isPanelVisible;
|
|
5998
|
+
if (this.api.isActive !== isActive) {
|
|
5999
|
+
this.api._onDidActiveChange.fire({
|
|
6000
|
+
isActive: this.group.api.isActive && isPanelVisible,
|
|
6001
|
+
});
|
|
6002
|
+
}
|
|
6003
|
+
if (this.api.isVisible !== isPanelVisible) {
|
|
6004
|
+
this.api._onDidVisibilityChange.fire({
|
|
6005
|
+
isVisible: isPanelVisible,
|
|
6006
|
+
});
|
|
6007
|
+
}
|
|
5685
6008
|
}
|
|
5686
6009
|
layout(width, height) {
|
|
5687
|
-
//
|
|
6010
|
+
// TODO: Can we somehow do height without header height or indicate what the header height is?
|
|
5688
6011
|
this.api._onDidDimensionChange.fire({
|
|
5689
6012
|
width,
|
|
5690
6013
|
height: height,
|
|
@@ -5806,8 +6129,6 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
5806
6129
|
this.id = id;
|
|
5807
6130
|
this.contentComponent = contentComponent;
|
|
5808
6131
|
this.tabComponent = tabComponent;
|
|
5809
|
-
this._group = null;
|
|
5810
|
-
this._isPanelVisible = null;
|
|
5811
6132
|
this._content = this.createContentComponent(this.id, contentComponent);
|
|
5812
6133
|
this._tab = this.createTabComponent(this.id, tabComponent);
|
|
5813
6134
|
}
|
|
@@ -5815,25 +6136,8 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
5815
6136
|
this.content.init(Object.assign(Object.assign({}, params), { tab: this.tab }));
|
|
5816
6137
|
this.tab.init(params);
|
|
5817
6138
|
}
|
|
5818
|
-
updateParentGroup(
|
|
5819
|
-
|
|
5820
|
-
this._group = group;
|
|
5821
|
-
if (this._content.onGroupChange) {
|
|
5822
|
-
this._content.onGroupChange(group);
|
|
5823
|
-
}
|
|
5824
|
-
if (this._tab.onGroupChange) {
|
|
5825
|
-
this._tab.onGroupChange(group);
|
|
5826
|
-
}
|
|
5827
|
-
}
|
|
5828
|
-
if (isPanelVisible !== this._isPanelVisible) {
|
|
5829
|
-
this._isPanelVisible = isPanelVisible;
|
|
5830
|
-
if (this._content.onPanelVisibleChange) {
|
|
5831
|
-
this._content.onPanelVisibleChange(isPanelVisible);
|
|
5832
|
-
}
|
|
5833
|
-
if (this._tab.onPanelVisibleChange) {
|
|
5834
|
-
this._tab.onPanelVisibleChange(isPanelVisible);
|
|
5835
|
-
}
|
|
5836
|
-
}
|
|
6139
|
+
updateParentGroup(_group, _isPanelVisible) {
|
|
6140
|
+
// noop
|
|
5837
6141
|
}
|
|
5838
6142
|
layout(width, height) {
|
|
5839
6143
|
var _a, _b;
|
|
@@ -6266,117 +6570,6 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
6266
6570
|
}
|
|
6267
6571
|
}
|
|
6268
6572
|
|
|
6269
|
-
class PopoutWindow extends CompositeDisposable {
|
|
6270
|
-
constructor(id, className, options) {
|
|
6271
|
-
super();
|
|
6272
|
-
this.id = id;
|
|
6273
|
-
this.className = className;
|
|
6274
|
-
this.options = options;
|
|
6275
|
-
this._onDidClose = new Emitter();
|
|
6276
|
-
this.onDidClose = this._onDidClose.event;
|
|
6277
|
-
this._window = null;
|
|
6278
|
-
this.addDisposables(this._onDidClose, {
|
|
6279
|
-
dispose: () => {
|
|
6280
|
-
this.close();
|
|
6281
|
-
},
|
|
6282
|
-
});
|
|
6283
|
-
}
|
|
6284
|
-
dimensions() {
|
|
6285
|
-
if (!this._window) {
|
|
6286
|
-
return null;
|
|
6287
|
-
}
|
|
6288
|
-
const left = this._window.value.screenX;
|
|
6289
|
-
const top = this._window.value.screenY;
|
|
6290
|
-
const width = this._window.value.innerWidth;
|
|
6291
|
-
const height = this._window.value.innerHeight;
|
|
6292
|
-
return { top, left, width, height };
|
|
6293
|
-
}
|
|
6294
|
-
close() {
|
|
6295
|
-
if (this._window) {
|
|
6296
|
-
this._window.disposable.dispose();
|
|
6297
|
-
this._window.value.close();
|
|
6298
|
-
this._window = null;
|
|
6299
|
-
}
|
|
6300
|
-
}
|
|
6301
|
-
open(content) {
|
|
6302
|
-
if (this._window) {
|
|
6303
|
-
throw new Error('instance of popout window is already open');
|
|
6304
|
-
}
|
|
6305
|
-
const url = `${this.options.url}`;
|
|
6306
|
-
const features = Object.entries({
|
|
6307
|
-
top: this.options.top,
|
|
6308
|
-
left: this.options.left,
|
|
6309
|
-
width: this.options.width,
|
|
6310
|
-
height: this.options.height,
|
|
6311
|
-
})
|
|
6312
|
-
.map(([key, value]) => `${key}=${value}`)
|
|
6313
|
-
.join(',');
|
|
6314
|
-
// https://developer.mozilla.org/en-US/docs/Web/API/Window/open
|
|
6315
|
-
const externalWindow = window.open(url, this.id, features);
|
|
6316
|
-
if (!externalWindow) {
|
|
6317
|
-
return;
|
|
6318
|
-
}
|
|
6319
|
-
const disposable = new CompositeDisposable();
|
|
6320
|
-
this._window = { value: externalWindow, disposable };
|
|
6321
|
-
const cleanUp = () => {
|
|
6322
|
-
this._onDidClose.fire();
|
|
6323
|
-
this._window = null;
|
|
6324
|
-
};
|
|
6325
|
-
// prevent any default content from loading
|
|
6326
|
-
// externalWindow.document.body.replaceWith(document.createElement('div'));
|
|
6327
|
-
disposable.addDisposables(addDisposableWindowListener(window, 'beforeunload', () => {
|
|
6328
|
-
cleanUp();
|
|
6329
|
-
this.close();
|
|
6330
|
-
}));
|
|
6331
|
-
externalWindow.addEventListener('load', () => {
|
|
6332
|
-
const externalDocument = externalWindow.document;
|
|
6333
|
-
externalDocument.title = document.title;
|
|
6334
|
-
const div = document.createElement('div');
|
|
6335
|
-
div.classList.add('dv-popout-window');
|
|
6336
|
-
div.style.position = 'absolute';
|
|
6337
|
-
div.style.width = '100%';
|
|
6338
|
-
div.style.height = '100%';
|
|
6339
|
-
div.style.top = '0px';
|
|
6340
|
-
div.style.left = '0px';
|
|
6341
|
-
div.classList.add(this.className);
|
|
6342
|
-
div.appendChild(content);
|
|
6343
|
-
externalDocument.body.replaceChildren(div);
|
|
6344
|
-
externalDocument.body.classList.add(this.className);
|
|
6345
|
-
addStyles(externalDocument, window.document.styleSheets);
|
|
6346
|
-
externalWindow.addEventListener('beforeunload', () => {
|
|
6347
|
-
// TODO: indicate external window is closing
|
|
6348
|
-
cleanUp();
|
|
6349
|
-
});
|
|
6350
|
-
});
|
|
6351
|
-
}
|
|
6352
|
-
}
|
|
6353
|
-
|
|
6354
|
-
class DockviewPopoutGroupPanel extends CompositeDisposable {
|
|
6355
|
-
constructor(id, group, options) {
|
|
6356
|
-
var _a;
|
|
6357
|
-
super();
|
|
6358
|
-
this.id = id;
|
|
6359
|
-
this.group = group;
|
|
6360
|
-
this.options = options;
|
|
6361
|
-
this.window = new PopoutWindow(id, (_a = options.className) !== null && _a !== void 0 ? _a : '', {
|
|
6362
|
-
url: this.options.popoutUrl,
|
|
6363
|
-
left: this.options.box.left,
|
|
6364
|
-
top: this.options.box.top,
|
|
6365
|
-
width: this.options.box.width,
|
|
6366
|
-
height: this.options.box.height,
|
|
6367
|
-
});
|
|
6368
|
-
group.model.location = 'popout';
|
|
6369
|
-
this.addDisposables(this.window, {
|
|
6370
|
-
dispose: () => {
|
|
6371
|
-
group.model.location = 'grid';
|
|
6372
|
-
},
|
|
6373
|
-
}, this.window.onDidClose(() => {
|
|
6374
|
-
this.dispose();
|
|
6375
|
-
}));
|
|
6376
|
-
this.window.open(group.element);
|
|
6377
|
-
}
|
|
6378
|
-
}
|
|
6379
|
-
|
|
6380
6573
|
const DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE = 100;
|
|
6381
6574
|
const DEFAULT_FLOATING_GROUP_POSITION = { left: 100, top: 100 };
|
|
6382
6575
|
|
|
@@ -6390,11 +6583,13 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
6390
6583
|
super();
|
|
6391
6584
|
this.element = element;
|
|
6392
6585
|
this.map = {};
|
|
6586
|
+
this._disposed = false;
|
|
6393
6587
|
this.addDisposables(Disposable.from(() => {
|
|
6394
6588
|
for (const value of Object.values(this.map)) {
|
|
6395
6589
|
value.disposable.dispose();
|
|
6396
6590
|
value.destroy.dispose();
|
|
6397
6591
|
}
|
|
6592
|
+
this._disposed = true;
|
|
6398
6593
|
}));
|
|
6399
6594
|
}
|
|
6400
6595
|
detatch(panel) {
|
|
@@ -6434,7 +6629,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
6434
6629
|
focusContainer.style.top = `${box.top - box2.top}px`;
|
|
6435
6630
|
focusContainer.style.width = `${box.width}px`;
|
|
6436
6631
|
focusContainer.style.height = `${box.height}px`;
|
|
6437
|
-
toggleClass(focusContainer, 'dv-render-overlay-float', panel.group.api.location === 'floating');
|
|
6632
|
+
toggleClass(focusContainer, 'dv-render-overlay-float', panel.group.api.location.type === 'floating');
|
|
6438
6633
|
};
|
|
6439
6634
|
const visibilityChanged = () => {
|
|
6440
6635
|
if (panel.api.isVisible) {
|
|
@@ -6480,8 +6675,11 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
6480
6675
|
resize();
|
|
6481
6676
|
}));
|
|
6482
6677
|
this.map[panel.api.id].destroy = Disposable.from(() => {
|
|
6483
|
-
|
|
6484
|
-
|
|
6678
|
+
var _a;
|
|
6679
|
+
if (panel.view.content.element.parentElement === focusContainer) {
|
|
6680
|
+
focusContainer.removeChild(panel.view.content.element);
|
|
6681
|
+
}
|
|
6682
|
+
(_a = focusContainer.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(focusContainer);
|
|
6485
6683
|
});
|
|
6486
6684
|
queueMicrotask(() => {
|
|
6487
6685
|
if (this.isDisposed) {
|
|
@@ -6502,11 +6700,187 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
6502
6700
|
}
|
|
6503
6701
|
}
|
|
6504
6702
|
|
|
6703
|
+
/******************************************************************************
|
|
6704
|
+
Copyright (c) Microsoft Corporation.
|
|
6705
|
+
|
|
6706
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
6707
|
+
purpose with or without fee is hereby granted.
|
|
6708
|
+
|
|
6709
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
6710
|
+
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
6711
|
+
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
6712
|
+
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
6713
|
+
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
6714
|
+
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
6715
|
+
PERFORMANCE OF THIS SOFTWARE.
|
|
6716
|
+
***************************************************************************** */
|
|
6717
|
+
/* global Reflect, Promise, SuppressedError, Symbol */
|
|
6718
|
+
|
|
6719
|
+
|
|
6720
|
+
function __awaiter(thisArg, _arguments, P, generator) {
|
|
6721
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
6722
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
6723
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6724
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6725
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
6726
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
6727
|
+
});
|
|
6728
|
+
}
|
|
6729
|
+
|
|
6730
|
+
typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
|
|
6731
|
+
var e = new Error(message);
|
|
6732
|
+
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
6733
|
+
};
|
|
6734
|
+
|
|
6735
|
+
class PopoutWindow extends CompositeDisposable {
|
|
6736
|
+
get window() {
|
|
6737
|
+
var _a, _b;
|
|
6738
|
+
return (_b = (_a = this._window) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : null;
|
|
6739
|
+
}
|
|
6740
|
+
constructor(target, className, options) {
|
|
6741
|
+
super();
|
|
6742
|
+
this.target = target;
|
|
6743
|
+
this.className = className;
|
|
6744
|
+
this.options = options;
|
|
6745
|
+
this._onWillClose = new Emitter();
|
|
6746
|
+
this.onWillClose = this._onWillClose.event;
|
|
6747
|
+
this._onDidClose = new Emitter();
|
|
6748
|
+
this.onDidClose = this._onDidClose.event;
|
|
6749
|
+
this._window = null;
|
|
6750
|
+
this.addDisposables(this._onWillClose, this._onDidClose, {
|
|
6751
|
+
dispose: () => {
|
|
6752
|
+
this.close();
|
|
6753
|
+
},
|
|
6754
|
+
});
|
|
6755
|
+
}
|
|
6756
|
+
dimensions() {
|
|
6757
|
+
if (!this._window) {
|
|
6758
|
+
return null;
|
|
6759
|
+
}
|
|
6760
|
+
const left = this._window.value.screenX;
|
|
6761
|
+
const top = this._window.value.screenY;
|
|
6762
|
+
const width = this._window.value.innerWidth;
|
|
6763
|
+
const height = this._window.value.innerHeight;
|
|
6764
|
+
return { top, left, width, height };
|
|
6765
|
+
}
|
|
6766
|
+
close() {
|
|
6767
|
+
var _a, _b;
|
|
6768
|
+
if (this._window) {
|
|
6769
|
+
this._onWillClose.fire();
|
|
6770
|
+
(_b = (_a = this.options).onWillClose) === null || _b === void 0 ? void 0 : _b.call(_a, {
|
|
6771
|
+
id: this.target,
|
|
6772
|
+
window: this._window.value,
|
|
6773
|
+
});
|
|
6774
|
+
this._window.disposable.dispose();
|
|
6775
|
+
this._window.value.close();
|
|
6776
|
+
this._window = null;
|
|
6777
|
+
this._onDidClose.fire();
|
|
6778
|
+
}
|
|
6779
|
+
}
|
|
6780
|
+
open() {
|
|
6781
|
+
var _a, _b;
|
|
6782
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
6783
|
+
if (this._window) {
|
|
6784
|
+
throw new Error('instance of popout window is already open');
|
|
6785
|
+
}
|
|
6786
|
+
const url = `${this.options.url}`;
|
|
6787
|
+
const features = Object.entries({
|
|
6788
|
+
top: this.options.top,
|
|
6789
|
+
left: this.options.left,
|
|
6790
|
+
width: this.options.width,
|
|
6791
|
+
height: this.options.height,
|
|
6792
|
+
})
|
|
6793
|
+
.map(([key, value]) => `${key}=${value}`)
|
|
6794
|
+
.join(',');
|
|
6795
|
+
/**
|
|
6796
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/Window/open
|
|
6797
|
+
*/
|
|
6798
|
+
const externalWindow = window.open(url, this.target, features);
|
|
6799
|
+
if (!externalWindow) {
|
|
6800
|
+
/**
|
|
6801
|
+
* Popup blocked
|
|
6802
|
+
*/
|
|
6803
|
+
return null;
|
|
6804
|
+
}
|
|
6805
|
+
const disposable = new CompositeDisposable();
|
|
6806
|
+
this._window = { value: externalWindow, disposable };
|
|
6807
|
+
disposable.addDisposables(addDisposableWindowListener(window, 'beforeunload', () => {
|
|
6808
|
+
/**
|
|
6809
|
+
* before the main window closes we should close this popup too
|
|
6810
|
+
* to be good citizens
|
|
6811
|
+
*
|
|
6812
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event
|
|
6813
|
+
*/
|
|
6814
|
+
this.close();
|
|
6815
|
+
}));
|
|
6816
|
+
const container = this.createPopoutWindowContainer();
|
|
6817
|
+
if (this.className) {
|
|
6818
|
+
container.classList.add(this.className);
|
|
6819
|
+
}
|
|
6820
|
+
(_b = (_a = this.options).onDidOpen) === null || _b === void 0 ? void 0 : _b.call(_a, {
|
|
6821
|
+
id: this.target,
|
|
6822
|
+
window: externalWindow,
|
|
6823
|
+
});
|
|
6824
|
+
return new Promise((resolve) => {
|
|
6825
|
+
externalWindow.addEventListener('unload', (e) => {
|
|
6826
|
+
// if page fails to load before unloading
|
|
6827
|
+
// this.close();
|
|
6828
|
+
});
|
|
6829
|
+
externalWindow.addEventListener('load', () => {
|
|
6830
|
+
/**
|
|
6831
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/Window/load_event
|
|
6832
|
+
*/
|
|
6833
|
+
const externalDocument = externalWindow.document;
|
|
6834
|
+
externalDocument.title = document.title;
|
|
6835
|
+
externalDocument.body.appendChild(container);
|
|
6836
|
+
addStyles(externalDocument, window.document.styleSheets);
|
|
6837
|
+
/**
|
|
6838
|
+
* beforeunload must be registered after load for reasons I could not determine
|
|
6839
|
+
* otherwise the beforeunload event will not fire when the window is closed
|
|
6840
|
+
*/
|
|
6841
|
+
addDisposableWindowListener(externalWindow, 'beforeunload', () => {
|
|
6842
|
+
/**
|
|
6843
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event
|
|
6844
|
+
*/
|
|
6845
|
+
this.close();
|
|
6846
|
+
});
|
|
6847
|
+
resolve(container);
|
|
6848
|
+
});
|
|
6849
|
+
});
|
|
6850
|
+
});
|
|
6851
|
+
}
|
|
6852
|
+
createPopoutWindowContainer() {
|
|
6853
|
+
const el = document.createElement('div');
|
|
6854
|
+
el.classList.add('dv-popout-window');
|
|
6855
|
+
el.id = 'dv-popout-window';
|
|
6856
|
+
el.style.position = 'absolute';
|
|
6857
|
+
el.style.width = '100%';
|
|
6858
|
+
el.style.height = '100%';
|
|
6859
|
+
el.style.top = '0px';
|
|
6860
|
+
el.style.left = '0px';
|
|
6861
|
+
return el;
|
|
6862
|
+
}
|
|
6863
|
+
}
|
|
6864
|
+
|
|
6505
6865
|
const DEFAULT_ROOT_OVERLAY_MODEL = {
|
|
6506
6866
|
activationSize: { type: 'pixels', value: 10 },
|
|
6507
6867
|
size: { type: 'pixels', value: 20 },
|
|
6508
6868
|
};
|
|
6509
|
-
function
|
|
6869
|
+
function moveGroupWithoutDestroying(options) {
|
|
6870
|
+
const activePanel = options.from.activePanel;
|
|
6871
|
+
const panels = [...options.from.panels].map((panel) => {
|
|
6872
|
+
const removedPanel = options.from.model.removePanel(panel);
|
|
6873
|
+
options.from.model.renderContainer.detatch(panel);
|
|
6874
|
+
return removedPanel;
|
|
6875
|
+
});
|
|
6876
|
+
panels.forEach((panel) => {
|
|
6877
|
+
options.to.model.openPanel(panel, {
|
|
6878
|
+
skipSetActive: activePanel !== panel,
|
|
6879
|
+
skipSetGroupActive: true,
|
|
6880
|
+
});
|
|
6881
|
+
});
|
|
6882
|
+
}
|
|
6883
|
+
function getDockviewTheme(element) {
|
|
6510
6884
|
function toClassList(element) {
|
|
6511
6885
|
const list = [];
|
|
6512
6886
|
for (let i = 0; i < element.classList.length; i++) {
|
|
@@ -6557,6 +6931,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
6557
6931
|
styles: options.styles,
|
|
6558
6932
|
parentElement: options.parentElement,
|
|
6559
6933
|
disableAutoResizing: options.disableAutoResizing,
|
|
6934
|
+
locked: options.locked,
|
|
6560
6935
|
});
|
|
6561
6936
|
this.nextGroupId = sequentialNumberGenerator();
|
|
6562
6937
|
this._deserializer = new DefaultDockviewDeserialzier(this);
|
|
@@ -6567,6 +6942,10 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
6567
6942
|
this.onWillDragGroup = this._onWillDragGroup.event;
|
|
6568
6943
|
this._onDidDrop = new Emitter();
|
|
6569
6944
|
this.onDidDrop = this._onDidDrop.event;
|
|
6945
|
+
this._onWillDrop = new Emitter();
|
|
6946
|
+
this.onWillDrop = this._onWillDrop.event;
|
|
6947
|
+
this._onWillShowOverlay = new Emitter();
|
|
6948
|
+
this.onWillShowOverlay = this._onWillShowOverlay.event;
|
|
6570
6949
|
this._onDidRemovePanel = new Emitter();
|
|
6571
6950
|
this.onDidRemovePanel = this._onDidRemovePanel.event;
|
|
6572
6951
|
this._onDidAddPanel = new Emitter();
|
|
@@ -6575,15 +6954,36 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
6575
6954
|
this.onDidLayoutFromJSON = this._onDidLayoutFromJSON.event;
|
|
6576
6955
|
this._onDidActivePanelChange = new Emitter();
|
|
6577
6956
|
this.onDidActivePanelChange = this._onDidActivePanelChange.event;
|
|
6957
|
+
this._onDidMovePanel = new Emitter();
|
|
6578
6958
|
this._floatingGroups = [];
|
|
6579
6959
|
this._popoutGroups = [];
|
|
6960
|
+
this._ignoreEvents = 0;
|
|
6961
|
+
this._onDidRemoveGroup = new Emitter();
|
|
6962
|
+
this.onDidRemoveGroup = this._onDidRemoveGroup.event;
|
|
6963
|
+
this._onDidAddGroup = new Emitter();
|
|
6964
|
+
this.onDidAddGroup = this._onDidAddGroup.event;
|
|
6965
|
+
this._onDidActiveGroupChange = new Emitter();
|
|
6966
|
+
this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;
|
|
6967
|
+
this._moving = false;
|
|
6580
6968
|
const gready = document.createElement('div');
|
|
6581
6969
|
gready.className = 'dv-overlay-render-container';
|
|
6582
6970
|
this.gridview.element.appendChild(gready);
|
|
6583
6971
|
this.overlayRenderContainer = new OverlayRenderContainer(gready);
|
|
6584
6972
|
toggleClass(this.gridview.element, 'dv-dockview', true);
|
|
6585
6973
|
toggleClass(this.element, 'dv-debug', !!options.debug);
|
|
6586
|
-
this.addDisposables(this.overlayRenderContainer, this._onWillDragPanel, this._onWillDragGroup, this._onDidActivePanelChange, this._onDidAddPanel, this._onDidRemovePanel, this._onDidLayoutFromJSON, this._onDidDrop,
|
|
6974
|
+
this.addDisposables(this.overlayRenderContainer, this._onWillDragPanel, this._onWillDragGroup, this._onWillShowOverlay, this._onDidActivePanelChange, this._onDidAddPanel, this._onDidRemovePanel, this._onDidLayoutFromJSON, this._onDidDrop, this._onWillDrop, this._onDidMovePanel, this._onDidAddGroup, this._onDidRemoveGroup, this._onDidActiveGroupChange, this.onDidAdd((event) => {
|
|
6975
|
+
if (!this._moving) {
|
|
6976
|
+
this._onDidAddGroup.fire(event);
|
|
6977
|
+
}
|
|
6978
|
+
}), this.onDidRemove((event) => {
|
|
6979
|
+
if (!this._moving) {
|
|
6980
|
+
this._onDidRemoveGroup.fire(event);
|
|
6981
|
+
}
|
|
6982
|
+
}), this.onDidActiveChange((event) => {
|
|
6983
|
+
if (!this._moving) {
|
|
6984
|
+
this._onDidActiveGroupChange.fire(event);
|
|
6985
|
+
}
|
|
6986
|
+
}), exports.DockviewEvent.any(this.onDidAdd, this.onDidRemove)(() => {
|
|
6587
6987
|
this.updateWatermark();
|
|
6588
6988
|
}), exports.DockviewEvent.any(this.onDidAddPanel, this.onDidRemovePanel, this.onDidActivePanelChange)(() => {
|
|
6589
6989
|
this._bufferOnDidLayoutChange.fire();
|
|
@@ -6594,7 +6994,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
6594
6994
|
}
|
|
6595
6995
|
// iterate over a copy of the array since .dispose() mutates the original array
|
|
6596
6996
|
for (const group of [...this._popoutGroups]) {
|
|
6597
|
-
group.dispose();
|
|
6997
|
+
group.disposable.dispose();
|
|
6598
6998
|
}
|
|
6599
6999
|
}));
|
|
6600
7000
|
this._options = options;
|
|
@@ -6640,7 +7040,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
6640
7040
|
return this.options.showDndOverlay({
|
|
6641
7041
|
nativeEvent: event,
|
|
6642
7042
|
position: position,
|
|
6643
|
-
target:
|
|
7043
|
+
target: 'edge',
|
|
6644
7044
|
getData: getPanelData,
|
|
6645
7045
|
});
|
|
6646
7046
|
}
|
|
@@ -6651,86 +7051,249 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
6651
7051
|
});
|
|
6652
7052
|
this.addDisposables(this._rootDropTarget.onDrop((event) => {
|
|
6653
7053
|
var _a;
|
|
7054
|
+
const willDropEvent = new DockviewWillDropEvent({
|
|
7055
|
+
nativeEvent: event.nativeEvent,
|
|
7056
|
+
position: event.position,
|
|
7057
|
+
panel: undefined,
|
|
7058
|
+
api: this._api,
|
|
7059
|
+
group: undefined,
|
|
7060
|
+
getData: getPanelData,
|
|
7061
|
+
kind: 'content',
|
|
7062
|
+
});
|
|
7063
|
+
this._onWillDrop.fire(willDropEvent);
|
|
7064
|
+
if (willDropEvent.defaultPrevented) {
|
|
7065
|
+
return;
|
|
7066
|
+
}
|
|
6654
7067
|
const data = getPanelData();
|
|
6655
7068
|
if (data) {
|
|
6656
|
-
this.moveGroupOrPanel(
|
|
7069
|
+
this.moveGroupOrPanel({
|
|
7070
|
+
from: {
|
|
7071
|
+
groupId: data.groupId,
|
|
7072
|
+
panelId: (_a = data.panelId) !== null && _a !== void 0 ? _a : undefined,
|
|
7073
|
+
},
|
|
7074
|
+
to: {
|
|
7075
|
+
group: this.orthogonalize(event.position),
|
|
7076
|
+
position: 'center',
|
|
7077
|
+
},
|
|
7078
|
+
});
|
|
6657
7079
|
}
|
|
6658
7080
|
else {
|
|
6659
|
-
this._onDidDrop.fire(
|
|
7081
|
+
this._onDidDrop.fire(new DockviewDidDropEvent({
|
|
7082
|
+
nativeEvent: event.nativeEvent,
|
|
7083
|
+
position: event.position,
|
|
7084
|
+
panel: undefined,
|
|
7085
|
+
api: this._api,
|
|
7086
|
+
group: undefined,
|
|
7087
|
+
getData: getPanelData,
|
|
7088
|
+
}));
|
|
6660
7089
|
}
|
|
6661
7090
|
}), this._rootDropTarget);
|
|
6662
7091
|
this._api = new DockviewApi(this);
|
|
6663
7092
|
this.updateWatermark();
|
|
6664
7093
|
}
|
|
6665
|
-
addPopoutGroup(
|
|
6666
|
-
var _a;
|
|
6667
|
-
|
|
6668
|
-
|
|
6669
|
-
|
|
6670
|
-
|
|
6671
|
-
|
|
6672
|
-
|
|
6673
|
-
|
|
6674
|
-
|
|
6675
|
-
|
|
6676
|
-
|
|
6677
|
-
|
|
7094
|
+
addPopoutGroup(itemToPopout, options) {
|
|
7095
|
+
var _a, _b, _c;
|
|
7096
|
+
if (itemToPopout instanceof DockviewPanel &&
|
|
7097
|
+
itemToPopout.group.size === 1) {
|
|
7098
|
+
return this.addPopoutGroup(itemToPopout.group);
|
|
7099
|
+
}
|
|
7100
|
+
const theme = getDockviewTheme(this.gridview.element);
|
|
7101
|
+
const element = this.element;
|
|
7102
|
+
function getBox() {
|
|
7103
|
+
if (options === null || options === void 0 ? void 0 : options.position) {
|
|
7104
|
+
return options.position;
|
|
7105
|
+
}
|
|
7106
|
+
if (itemToPopout instanceof DockviewGroupPanel) {
|
|
7107
|
+
return itemToPopout.element.getBoundingClientRect();
|
|
7108
|
+
}
|
|
7109
|
+
if (itemToPopout.group) {
|
|
7110
|
+
return itemToPopout.group.element.getBoundingClientRect();
|
|
7111
|
+
}
|
|
7112
|
+
return element.getBoundingClientRect();
|
|
7113
|
+
}
|
|
7114
|
+
const box = getBox();
|
|
7115
|
+
const groupId = (_b = (_a = options === null || options === void 0 ? void 0 : options.overridePopoutGroup) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : this.getNextGroupId(); //item.id;
|
|
7116
|
+
if (itemToPopout.api.location.type === 'grid') {
|
|
7117
|
+
itemToPopout.api.setHidden(true);
|
|
7118
|
+
}
|
|
7119
|
+
const _window = new PopoutWindow(`${this.id}-${groupId}`, // unique id
|
|
7120
|
+
theme !== null && theme !== void 0 ? theme : '', {
|
|
7121
|
+
url: (_c = options === null || options === void 0 ? void 0 : options.popoutUrl) !== null && _c !== void 0 ? _c : '/popout.html',
|
|
7122
|
+
left: window.screenX + box.left,
|
|
7123
|
+
top: window.screenY + box.top,
|
|
7124
|
+
width: box.width,
|
|
7125
|
+
height: box.height,
|
|
7126
|
+
onDidOpen: options === null || options === void 0 ? void 0 : options.onDidOpen,
|
|
7127
|
+
onWillClose: options === null || options === void 0 ? void 0 : options.onWillClose,
|
|
7128
|
+
});
|
|
7129
|
+
const popoutWindowDisposable = new CompositeDisposable(_window, _window.onDidClose(() => {
|
|
7130
|
+
popoutWindowDisposable.dispose();
|
|
7131
|
+
}));
|
|
7132
|
+
return _window
|
|
7133
|
+
.open()
|
|
7134
|
+
.then((popoutContainer) => {
|
|
7135
|
+
var _a;
|
|
7136
|
+
if (_window.isDisposed) {
|
|
7137
|
+
return;
|
|
6678
7138
|
}
|
|
6679
|
-
|
|
6680
|
-
|
|
6681
|
-
|
|
6682
|
-
if (!box) {
|
|
6683
|
-
box = group.element.getBoundingClientRect();
|
|
7139
|
+
if (popoutContainer === null) {
|
|
7140
|
+
popoutWindowDisposable.dispose();
|
|
7141
|
+
return;
|
|
6684
7142
|
}
|
|
6685
|
-
const
|
|
6686
|
-
|
|
6687
|
-
|
|
6688
|
-
|
|
6689
|
-
|
|
6690
|
-
|
|
6691
|
-
|
|
6692
|
-
|
|
6693
|
-
|
|
6694
|
-
|
|
6695
|
-
|
|
6696
|
-
|
|
6697
|
-
|
|
6698
|
-
|
|
6699
|
-
|
|
6700
|
-
|
|
6701
|
-
|
|
7143
|
+
const gready = document.createElement('div');
|
|
7144
|
+
gready.className = 'dv-overlay-render-container';
|
|
7145
|
+
const overlayRenderContainer = new OverlayRenderContainer(gready);
|
|
7146
|
+
const referenceGroup = itemToPopout instanceof DockviewPanel
|
|
7147
|
+
? itemToPopout.group
|
|
7148
|
+
: itemToPopout;
|
|
7149
|
+
const referenceLocation = itemToPopout.api.location.type;
|
|
7150
|
+
const group = (_a = options === null || options === void 0 ? void 0 : options.overridePopoutGroup) !== null && _a !== void 0 ? _a : this.createGroup({ id: groupId });
|
|
7151
|
+
group.model.renderContainer = overlayRenderContainer;
|
|
7152
|
+
if (!(options === null || options === void 0 ? void 0 : options.overridePopoutGroup)) {
|
|
7153
|
+
this._onDidAddGroup.fire(group);
|
|
7154
|
+
}
|
|
7155
|
+
if (itemToPopout instanceof DockviewPanel) {
|
|
7156
|
+
this.movingLock(() => {
|
|
7157
|
+
const panel = referenceGroup.model.removePanel(itemToPopout);
|
|
7158
|
+
group.model.openPanel(panel);
|
|
7159
|
+
});
|
|
7160
|
+
}
|
|
7161
|
+
else {
|
|
7162
|
+
this.movingLock(() => moveGroupWithoutDestroying({
|
|
7163
|
+
from: referenceGroup,
|
|
7164
|
+
to: group,
|
|
7165
|
+
}));
|
|
7166
|
+
switch (referenceLocation) {
|
|
7167
|
+
case 'grid':
|
|
7168
|
+
referenceGroup.api.setHidden(true);
|
|
7169
|
+
break;
|
|
7170
|
+
case 'floating':
|
|
7171
|
+
case 'popout':
|
|
7172
|
+
this.removeGroup(referenceGroup);
|
|
7173
|
+
break;
|
|
7174
|
+
}
|
|
7175
|
+
}
|
|
7176
|
+
popoutContainer.classList.add('dv-dockview');
|
|
7177
|
+
popoutContainer.style.overflow = 'hidden';
|
|
7178
|
+
popoutContainer.appendChild(gready);
|
|
7179
|
+
popoutContainer.appendChild(group.element);
|
|
7180
|
+
group.model.location = {
|
|
7181
|
+
type: 'popout',
|
|
7182
|
+
getWindow: () => _window.window,
|
|
7183
|
+
};
|
|
7184
|
+
this.doSetGroupAndPanelActive(group);
|
|
7185
|
+
popoutWindowDisposable.addDisposables(group.api.onDidActiveChange((event) => {
|
|
7186
|
+
var _a;
|
|
7187
|
+
if (event.isActive) {
|
|
7188
|
+
(_a = _window.window) === null || _a === void 0 ? void 0 : _a.focus();
|
|
7189
|
+
}
|
|
7190
|
+
}), group.api.onWillFocus(() => {
|
|
7191
|
+
var _a;
|
|
7192
|
+
(_a = _window.window) === null || _a === void 0 ? void 0 : _a.focus();
|
|
7193
|
+
}));
|
|
7194
|
+
let returnedGroup;
|
|
7195
|
+
const value = {
|
|
7196
|
+
window: _window,
|
|
7197
|
+
popoutGroup: group,
|
|
7198
|
+
referenceGroup: this.getPanel(referenceGroup.id)
|
|
7199
|
+
? referenceGroup.id
|
|
7200
|
+
: undefined,
|
|
7201
|
+
disposable: {
|
|
7202
|
+
dispose: () => {
|
|
7203
|
+
popoutWindowDisposable.dispose();
|
|
7204
|
+
return returnedGroup;
|
|
7205
|
+
},
|
|
7206
|
+
},
|
|
7207
|
+
};
|
|
7208
|
+
popoutWindowDisposable.addDisposables(
|
|
7209
|
+
/**
|
|
7210
|
+
* ResizeObserver seems slow here, I do not know why but we don't need it
|
|
7211
|
+
* since we can reply on the window resize event as we will occupy the full
|
|
7212
|
+
* window dimensions
|
|
7213
|
+
*/
|
|
7214
|
+
addDisposableWindowListener(_window.window, 'resize', () => {
|
|
7215
|
+
group.layout(window.innerWidth, window.innerHeight);
|
|
7216
|
+
}), overlayRenderContainer, Disposable.from(() => {
|
|
7217
|
+
if (this.getPanel(referenceGroup.id)) {
|
|
7218
|
+
this.movingLock(() => moveGroupWithoutDestroying({
|
|
7219
|
+
from: group,
|
|
7220
|
+
to: referenceGroup,
|
|
7221
|
+
}));
|
|
7222
|
+
if (referenceGroup.api.isHidden) {
|
|
7223
|
+
referenceGroup.api.setHidden(false);
|
|
7224
|
+
}
|
|
7225
|
+
if (this.getPanel(group.id)) {
|
|
7226
|
+
this.doRemoveGroup(group, {
|
|
7227
|
+
skipPopoutAssociated: true,
|
|
7228
|
+
});
|
|
7229
|
+
}
|
|
7230
|
+
}
|
|
7231
|
+
else {
|
|
7232
|
+
if (this.getPanel(group.id)) {
|
|
7233
|
+
const removedGroup = this.doRemoveGroup(group, {
|
|
7234
|
+
skipDispose: true,
|
|
7235
|
+
skipActive: true,
|
|
7236
|
+
});
|
|
7237
|
+
removedGroup.model.renderContainer =
|
|
7238
|
+
this.overlayRenderContainer;
|
|
7239
|
+
removedGroup.model.location = { type: 'grid' };
|
|
7240
|
+
returnedGroup = removedGroup;
|
|
7241
|
+
}
|
|
7242
|
+
}
|
|
7243
|
+
}));
|
|
7244
|
+
this._popoutGroups.push(value);
|
|
7245
|
+
this.updateWatermark();
|
|
7246
|
+
})
|
|
7247
|
+
.catch((err) => {
|
|
7248
|
+
console.error(err);
|
|
6702
7249
|
});
|
|
6703
|
-
popoutWindow.addDisposables({
|
|
6704
|
-
dispose: () => {
|
|
6705
|
-
remove(this._popoutGroups, popoutWindow);
|
|
6706
|
-
this.updateWatermark();
|
|
6707
|
-
},
|
|
6708
|
-
}, popoutWindow.window.onDidClose(() => {
|
|
6709
|
-
this.doAddGroup(group, [0]);
|
|
6710
|
-
}));
|
|
6711
|
-
this._popoutGroups.push(popoutWindow);
|
|
6712
|
-
this.updateWatermark();
|
|
6713
7250
|
}
|
|
6714
7251
|
addFloatingGroup(item, coord, options) {
|
|
6715
|
-
var _a, _b, _c, _d, _e, _f;
|
|
7252
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
6716
7253
|
let group;
|
|
6717
7254
|
if (item instanceof DockviewPanel) {
|
|
6718
7255
|
group = this.createGroup();
|
|
6719
|
-
this.
|
|
7256
|
+
this._onDidAddGroup.fire(group);
|
|
7257
|
+
this.movingLock(() => this.removePanel(item, {
|
|
6720
7258
|
removeEmptyGroup: true,
|
|
6721
7259
|
skipDispose: true,
|
|
6722
|
-
|
|
6723
|
-
|
|
7260
|
+
skipSetActiveGroup: true,
|
|
7261
|
+
}));
|
|
7262
|
+
group.model.openPanel(item, { skipSetGroupActive: true });
|
|
6724
7263
|
}
|
|
6725
7264
|
else {
|
|
6726
7265
|
group = item;
|
|
7266
|
+
const popoutReferenceGroupId = (_a = this._popoutGroups.find((_) => _.popoutGroup === group)) === null || _a === void 0 ? void 0 : _a.referenceGroup;
|
|
7267
|
+
const popoutReferenceGroup = popoutReferenceGroupId
|
|
7268
|
+
? this.getPanel(popoutReferenceGroupId)
|
|
7269
|
+
: undefined;
|
|
6727
7270
|
const skip = typeof (options === null || options === void 0 ? void 0 : options.skipRemoveGroup) === 'boolean' &&
|
|
6728
7271
|
options.skipRemoveGroup;
|
|
6729
7272
|
if (!skip) {
|
|
6730
|
-
|
|
7273
|
+
if (popoutReferenceGroup) {
|
|
7274
|
+
this.movingLock(() => moveGroupWithoutDestroying({
|
|
7275
|
+
from: item,
|
|
7276
|
+
to: popoutReferenceGroup,
|
|
7277
|
+
}));
|
|
7278
|
+
this.doRemoveGroup(item, {
|
|
7279
|
+
skipPopoutReturn: true,
|
|
7280
|
+
skipPopoutAssociated: true,
|
|
7281
|
+
});
|
|
7282
|
+
this.doRemoveGroup(popoutReferenceGroup, {
|
|
7283
|
+
skipDispose: true,
|
|
7284
|
+
});
|
|
7285
|
+
group = popoutReferenceGroup;
|
|
7286
|
+
}
|
|
7287
|
+
else {
|
|
7288
|
+
this.doRemoveGroup(item, {
|
|
7289
|
+
skipDispose: true,
|
|
7290
|
+
skipPopoutReturn: true,
|
|
7291
|
+
skipPopoutAssociated: !!popoutReferenceGroup,
|
|
7292
|
+
});
|
|
7293
|
+
}
|
|
6731
7294
|
}
|
|
6732
7295
|
}
|
|
6733
|
-
group.model.location = 'floating';
|
|
7296
|
+
group.model.location = { type: 'floating' };
|
|
6734
7297
|
const overlayLeft = typeof (coord === null || coord === void 0 ? void 0 : coord.x) === 'number'
|
|
6735
7298
|
? Math.max(coord.x, 0)
|
|
6736
7299
|
: DEFAULT_FLOATING_GROUP_POSITION.left;
|
|
@@ -6740,16 +7303,16 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
6740
7303
|
const overlay = new Overlay({
|
|
6741
7304
|
container: this.gridview.element,
|
|
6742
7305
|
content: group.element,
|
|
6743
|
-
height: (
|
|
6744
|
-
width: (
|
|
7306
|
+
height: (_b = coord === null || coord === void 0 ? void 0 : coord.height) !== null && _b !== void 0 ? _b : 300,
|
|
7307
|
+
width: (_c = coord === null || coord === void 0 ? void 0 : coord.width) !== null && _c !== void 0 ? _c : 300,
|
|
6745
7308
|
left: overlayLeft,
|
|
6746
7309
|
top: overlayTop,
|
|
6747
7310
|
minimumInViewportWidth: this.options.floatingGroupBounds === 'boundedWithinViewport'
|
|
6748
7311
|
? undefined
|
|
6749
|
-
: (
|
|
7312
|
+
: (_e = (_d = this.options.floatingGroupBounds) === null || _d === void 0 ? void 0 : _d.minimumWidthWithinViewport) !== null && _e !== void 0 ? _e : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,
|
|
6750
7313
|
minimumInViewportHeight: this.options.floatingGroupBounds === 'boundedWithinViewport'
|
|
6751
7314
|
? undefined
|
|
6752
|
-
: (
|
|
7315
|
+
: (_g = (_f = this.options.floatingGroupBounds) === null || _f === void 0 ? void 0 : _f.minimumHeightWithinViewport) !== null && _g !== void 0 ? _g : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,
|
|
6753
7316
|
});
|
|
6754
7317
|
const el = group.element.querySelector('.void-container');
|
|
6755
7318
|
if (!el) {
|
|
@@ -6780,12 +7343,15 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
6780
7343
|
}), {
|
|
6781
7344
|
dispose: () => {
|
|
6782
7345
|
disposable.dispose();
|
|
6783
|
-
group.model.location = 'grid';
|
|
7346
|
+
group.model.location = { type: 'grid' };
|
|
6784
7347
|
remove(this._floatingGroups, floatingGroupPanel);
|
|
6785
7348
|
this.updateWatermark();
|
|
6786
7349
|
},
|
|
6787
7350
|
});
|
|
6788
7351
|
this._floatingGroups.push(floatingGroupPanel);
|
|
7352
|
+
if (!(options === null || options === void 0 ? void 0 : options.skipActiveGroup)) {
|
|
7353
|
+
this.doSetGroupAndPanelActive(group);
|
|
7354
|
+
}
|
|
6789
7355
|
this.updateWatermark();
|
|
6790
7356
|
}
|
|
6791
7357
|
orthogonalize(position) {
|
|
@@ -6875,8 +7441,8 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
6875
7441
|
return this.panels.find((panel) => panel.id === id);
|
|
6876
7442
|
}
|
|
6877
7443
|
setActivePanel(panel) {
|
|
6878
|
-
this.doSetGroupActive(panel.group);
|
|
6879
7444
|
panel.group.model.openPanel(panel);
|
|
7445
|
+
this.doSetGroupAndPanelActive(panel.group);
|
|
6880
7446
|
}
|
|
6881
7447
|
moveToNext(options = {}) {
|
|
6882
7448
|
var _a;
|
|
@@ -6937,7 +7503,8 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
6937
7503
|
});
|
|
6938
7504
|
const popoutGroups = this._popoutGroups.map((group) => {
|
|
6939
7505
|
return {
|
|
6940
|
-
data: group.
|
|
7506
|
+
data: group.popoutGroup.toJSON(),
|
|
7507
|
+
gridReferenceGroup: group.referenceGroup,
|
|
6941
7508
|
position: group.window.dimensions(),
|
|
6942
7509
|
};
|
|
6943
7510
|
});
|
|
@@ -6955,7 +7522,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
6955
7522
|
return result;
|
|
6956
7523
|
}
|
|
6957
7524
|
fromJSON(data) {
|
|
6958
|
-
var _a, _b;
|
|
7525
|
+
var _a, _b, _c;
|
|
6959
7526
|
this.clear();
|
|
6960
7527
|
if (typeof data !== 'object' || data === null) {
|
|
6961
7528
|
throw new Error('serialized layout must be a non-null object');
|
|
@@ -6994,7 +7561,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
6994
7561
|
const isActive = typeof activeView === 'string' &&
|
|
6995
7562
|
activeView === panel.id;
|
|
6996
7563
|
group.model.openPanel(panel, {
|
|
6997
|
-
|
|
7564
|
+
skipSetActive: !isActive,
|
|
6998
7565
|
skipSetGroupActive: true,
|
|
6999
7566
|
});
|
|
7000
7567
|
}
|
|
@@ -7024,11 +7591,16 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
7024
7591
|
}
|
|
7025
7592
|
const serializedPopoutGroups = (_b = data.popoutGroups) !== null && _b !== void 0 ? _b : [];
|
|
7026
7593
|
for (const serializedPopoutGroup of serializedPopoutGroups) {
|
|
7027
|
-
const { data, position } = serializedPopoutGroup;
|
|
7594
|
+
const { data, position, gridReferenceGroup } = serializedPopoutGroup;
|
|
7028
7595
|
const group = createGroupFromSerializedState(data);
|
|
7029
|
-
this.addPopoutGroup(
|
|
7596
|
+
this.addPopoutGroup((_c = (gridReferenceGroup
|
|
7597
|
+
? this.getPanel(gridReferenceGroup)
|
|
7598
|
+
: undefined)) !== null && _c !== void 0 ? _c : group, {
|
|
7030
7599
|
skipRemoveGroup: true,
|
|
7031
7600
|
position: position !== null && position !== void 0 ? position : undefined,
|
|
7601
|
+
overridePopoutGroup: gridReferenceGroup
|
|
7602
|
+
? group
|
|
7603
|
+
: undefined,
|
|
7032
7604
|
});
|
|
7033
7605
|
}
|
|
7034
7606
|
for (const floatingGroup of this._floatingGroups) {
|
|
@@ -7075,12 +7647,13 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
7075
7647
|
*/
|
|
7076
7648
|
throw err;
|
|
7077
7649
|
}
|
|
7650
|
+
this.updateWatermark();
|
|
7078
7651
|
this._onDidLayoutFromJSON.fire();
|
|
7079
7652
|
}
|
|
7080
7653
|
clear() {
|
|
7081
7654
|
const groups = Array.from(this._groups.values()).map((_) => _.value);
|
|
7082
7655
|
const hasActiveGroup = !!this.activeGroup;
|
|
7083
|
-
|
|
7656
|
+
!!this.activePanel;
|
|
7084
7657
|
for (const group of groups) {
|
|
7085
7658
|
// remove the group will automatically remove the panels
|
|
7086
7659
|
this.removeGroup(group, { skipActive: true });
|
|
@@ -7088,9 +7661,6 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
7088
7661
|
if (hasActiveGroup) {
|
|
7089
7662
|
this.doSetGroupAndPanelActive(undefined);
|
|
7090
7663
|
}
|
|
7091
|
-
if (hasActivePanel) {
|
|
7092
|
-
this._onDidActivePanelChange.fire(undefined);
|
|
7093
|
-
}
|
|
7094
7664
|
this.gridview.clear();
|
|
7095
7665
|
}
|
|
7096
7666
|
closeAllGroups() {
|
|
@@ -7131,6 +7701,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
7131
7701
|
const group = this.orthogonalize(directionToPosition(options.position.direction));
|
|
7132
7702
|
const panel = this.createPanel(options, group);
|
|
7133
7703
|
group.model.openPanel(panel);
|
|
7704
|
+
this.doSetGroupAndPanelActive(group);
|
|
7134
7705
|
return panel;
|
|
7135
7706
|
}
|
|
7136
7707
|
}
|
|
@@ -7142,6 +7713,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
7142
7713
|
const target = toTarget(((_b = options.position) === null || _b === void 0 ? void 0 : _b.direction) || 'within');
|
|
7143
7714
|
if (options.floating) {
|
|
7144
7715
|
const group = this.createGroup();
|
|
7716
|
+
this._onDidAddGroup.fire(group);
|
|
7145
7717
|
const o = typeof options.floating === 'object' &&
|
|
7146
7718
|
options.floating !== null
|
|
7147
7719
|
? options.floating
|
|
@@ -7149,16 +7721,16 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
7149
7721
|
this.addFloatingGroup(group, o, {
|
|
7150
7722
|
inDragMode: false,
|
|
7151
7723
|
skipRemoveGroup: true,
|
|
7724
|
+
skipActiveGroup: true,
|
|
7152
7725
|
});
|
|
7153
|
-
this._onDidAddGroup.fire(group);
|
|
7154
7726
|
panel = this.createPanel(options, group);
|
|
7155
7727
|
group.model.openPanel(panel);
|
|
7156
|
-
this.doSetGroupAndPanelActive(group);
|
|
7157
7728
|
}
|
|
7158
|
-
else if (referenceGroup.api.location === 'floating' ||
|
|
7729
|
+
else if (referenceGroup.api.location.type === 'floating' ||
|
|
7159
7730
|
target === 'center') {
|
|
7160
7731
|
panel = this.createPanel(options, referenceGroup);
|
|
7161
7732
|
referenceGroup.model.openPanel(panel);
|
|
7733
|
+
this.doSetGroupAndPanelActive(referenceGroup);
|
|
7162
7734
|
}
|
|
7163
7735
|
else {
|
|
7164
7736
|
const location = getGridLocation(referenceGroup.element);
|
|
@@ -7166,10 +7738,12 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
7166
7738
|
const group = this.createGroupAtLocation(relativeLocation);
|
|
7167
7739
|
panel = this.createPanel(options, group);
|
|
7168
7740
|
group.model.openPanel(panel);
|
|
7741
|
+
this.doSetGroupAndPanelActive(group);
|
|
7169
7742
|
}
|
|
7170
7743
|
}
|
|
7171
7744
|
else if (options.floating) {
|
|
7172
7745
|
const group = this.createGroup();
|
|
7746
|
+
this._onDidAddGroup.fire(group);
|
|
7173
7747
|
const o = typeof options.floating === 'object' &&
|
|
7174
7748
|
options.floating !== null
|
|
7175
7749
|
? options.floating
|
|
@@ -7177,16 +7751,16 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
7177
7751
|
this.addFloatingGroup(group, o, {
|
|
7178
7752
|
inDragMode: false,
|
|
7179
7753
|
skipRemoveGroup: true,
|
|
7754
|
+
skipActiveGroup: true,
|
|
7180
7755
|
});
|
|
7181
|
-
this._onDidAddGroup.fire(group);
|
|
7182
7756
|
panel = this.createPanel(options, group);
|
|
7183
7757
|
group.model.openPanel(panel);
|
|
7184
|
-
this.doSetGroupAndPanelActive(group);
|
|
7185
7758
|
}
|
|
7186
7759
|
else {
|
|
7187
7760
|
const group = this.createGroupAtLocation();
|
|
7188
7761
|
panel = this.createPanel(options, group);
|
|
7189
7762
|
group.model.openPanel(panel);
|
|
7763
|
+
this.doSetGroupAndPanelActive(group);
|
|
7190
7764
|
}
|
|
7191
7765
|
return panel;
|
|
7192
7766
|
}
|
|
@@ -7198,13 +7772,15 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
7198
7772
|
if (!group) {
|
|
7199
7773
|
throw new Error(`cannot remove panel ${panel.id}. it's missing a group.`);
|
|
7200
7774
|
}
|
|
7201
|
-
group.model.removePanel(panel
|
|
7775
|
+
group.model.removePanel(panel, {
|
|
7776
|
+
skipSetActiveGroup: options.skipSetActiveGroup,
|
|
7777
|
+
});
|
|
7202
7778
|
if (!options.skipDispose) {
|
|
7203
|
-
|
|
7779
|
+
panel.group.model.renderContainer.detatch(panel);
|
|
7204
7780
|
panel.dispose();
|
|
7205
7781
|
}
|
|
7206
7782
|
if (group.size === 0 && options.removeEmptyGroup) {
|
|
7207
|
-
this.removeGroup(group);
|
|
7783
|
+
this.removeGroup(group, { skipActive: options.skipSetActiveGroup });
|
|
7208
7784
|
}
|
|
7209
7785
|
}
|
|
7210
7786
|
createWatermarkComponent() {
|
|
@@ -7217,7 +7793,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
7217
7793
|
}
|
|
7218
7794
|
updateWatermark() {
|
|
7219
7795
|
var _a, _b;
|
|
7220
|
-
if (this.groups.filter((x) => x.api.location === 'grid').length === 0) {
|
|
7796
|
+
if (this.groups.filter((x) => x.api.location.type === 'grid' && !x.api.isHidden).length === 0) {
|
|
7221
7797
|
if (!this.watermark) {
|
|
7222
7798
|
this.watermark = this.createWatermarkComponent();
|
|
7223
7799
|
this.watermark.init({
|
|
@@ -7237,7 +7813,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
7237
7813
|
}
|
|
7238
7814
|
addGroup(options) {
|
|
7239
7815
|
var _a;
|
|
7240
|
-
const group = this.createGroup();
|
|
7816
|
+
const group = this.createGroup(options);
|
|
7241
7817
|
if (options) {
|
|
7242
7818
|
let referenceGroup;
|
|
7243
7819
|
if (isGroupOptionsWithPanel(options)) {
|
|
@@ -7263,36 +7839,42 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
7263
7839
|
}
|
|
7264
7840
|
else {
|
|
7265
7841
|
const group = this.orthogonalize(directionToPosition(options.direction));
|
|
7842
|
+
if (!options.skipSetActive) {
|
|
7843
|
+
this.doSetGroupAndPanelActive(group);
|
|
7844
|
+
}
|
|
7266
7845
|
return group;
|
|
7267
7846
|
}
|
|
7268
7847
|
const target = toTarget(options.direction || 'within');
|
|
7269
7848
|
const location = getGridLocation(referenceGroup.element);
|
|
7270
7849
|
const relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);
|
|
7271
7850
|
this.doAddGroup(group, relativeLocation);
|
|
7851
|
+
if (!options.skipSetActive) {
|
|
7852
|
+
this.doSetGroupAndPanelActive(group);
|
|
7853
|
+
}
|
|
7272
7854
|
return group;
|
|
7273
7855
|
}
|
|
7274
7856
|
else {
|
|
7275
7857
|
this.doAddGroup(group);
|
|
7858
|
+
this.doSetGroupAndPanelActive(group);
|
|
7276
7859
|
return group;
|
|
7277
7860
|
}
|
|
7278
7861
|
}
|
|
7279
7862
|
removeGroup(group, options) {
|
|
7863
|
+
this.doRemoveGroup(group, options);
|
|
7864
|
+
}
|
|
7865
|
+
doRemoveGroup(group, options) {
|
|
7280
7866
|
var _a;
|
|
7281
7867
|
const panels = [...group.panels]; // reassign since group panels will mutate
|
|
7282
|
-
|
|
7283
|
-
|
|
7284
|
-
|
|
7285
|
-
|
|
7286
|
-
|
|
7868
|
+
if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {
|
|
7869
|
+
for (const panel of panels) {
|
|
7870
|
+
this.removePanel(panel, {
|
|
7871
|
+
removeEmptyGroup: false,
|
|
7872
|
+
skipDispose: (_a = options === null || options === void 0 ? void 0 : options.skipDispose) !== null && _a !== void 0 ? _a : false,
|
|
7873
|
+
});
|
|
7874
|
+
}
|
|
7287
7875
|
}
|
|
7288
7876
|
const activePanel = this.activePanel;
|
|
7289
|
-
|
|
7290
|
-
if (this.activePanel !== activePanel) {
|
|
7291
|
-
this._onDidActivePanelChange.fire(this.activePanel);
|
|
7292
|
-
}
|
|
7293
|
-
}
|
|
7294
|
-
doRemoveGroup(group, options) {
|
|
7295
|
-
if (group.api.location === 'floating') {
|
|
7877
|
+
if (group.api.location.type === 'floating') {
|
|
7296
7878
|
const floatingGroup = this._floatingGroups.find((_) => _.group === group);
|
|
7297
7879
|
if (floatingGroup) {
|
|
7298
7880
|
if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {
|
|
@@ -7304,60 +7886,124 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
7304
7886
|
floatingGroup.dispose();
|
|
7305
7887
|
if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {
|
|
7306
7888
|
const groups = Array.from(this._groups.values());
|
|
7307
|
-
this.
|
|
7889
|
+
this.doSetGroupAndPanelActive(groups.length > 0 ? groups[0].value : undefined);
|
|
7308
7890
|
}
|
|
7309
7891
|
return floatingGroup.group;
|
|
7310
7892
|
}
|
|
7311
7893
|
throw new Error('failed to find floating group');
|
|
7312
7894
|
}
|
|
7313
|
-
if (group.api.location === 'popout') {
|
|
7314
|
-
const selectedGroup = this._popoutGroups.find((_) => _.
|
|
7895
|
+
if (group.api.location.type === 'popout') {
|
|
7896
|
+
const selectedGroup = this._popoutGroups.find((_) => _.popoutGroup === group);
|
|
7315
7897
|
if (selectedGroup) {
|
|
7316
7898
|
if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {
|
|
7317
|
-
|
|
7899
|
+
if (!(options === null || options === void 0 ? void 0 : options.skipPopoutAssociated)) {
|
|
7900
|
+
const refGroup = selectedGroup.referenceGroup
|
|
7901
|
+
? this.getPanel(selectedGroup.referenceGroup)
|
|
7902
|
+
: undefined;
|
|
7903
|
+
if (refGroup) {
|
|
7904
|
+
this.removeGroup(refGroup);
|
|
7905
|
+
}
|
|
7906
|
+
}
|
|
7907
|
+
selectedGroup.popoutGroup.dispose();
|
|
7318
7908
|
this._groups.delete(group.id);
|
|
7319
7909
|
this._onDidRemoveGroup.fire(group);
|
|
7320
7910
|
}
|
|
7321
|
-
selectedGroup.dispose();
|
|
7911
|
+
const removedGroup = selectedGroup.disposable.dispose();
|
|
7912
|
+
if (!(options === null || options === void 0 ? void 0 : options.skipPopoutReturn) && removedGroup) {
|
|
7913
|
+
this.doAddGroup(removedGroup, [0]);
|
|
7914
|
+
this.doSetGroupAndPanelActive(removedGroup);
|
|
7915
|
+
}
|
|
7322
7916
|
if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {
|
|
7323
7917
|
const groups = Array.from(this._groups.values());
|
|
7324
|
-
this.
|
|
7918
|
+
this.doSetGroupAndPanelActive(groups.length > 0 ? groups[0].value : undefined);
|
|
7325
7919
|
}
|
|
7326
|
-
|
|
7920
|
+
this.updateWatermark();
|
|
7921
|
+
return selectedGroup.popoutGroup;
|
|
7327
7922
|
}
|
|
7328
7923
|
throw new Error('failed to find popout group');
|
|
7329
7924
|
}
|
|
7330
|
-
|
|
7925
|
+
const re = super.doRemoveGroup(group, options);
|
|
7926
|
+
if (!(options === null || options === void 0 ? void 0 : options.skipActive)) {
|
|
7927
|
+
if (this.activePanel !== activePanel) {
|
|
7928
|
+
this._onDidActivePanelChange.fire(this.activePanel);
|
|
7929
|
+
}
|
|
7930
|
+
}
|
|
7931
|
+
return re;
|
|
7331
7932
|
}
|
|
7332
|
-
|
|
7333
|
-
|
|
7933
|
+
movingLock(func) {
|
|
7934
|
+
const isMoving = this._moving;
|
|
7935
|
+
try {
|
|
7936
|
+
this._moving = true;
|
|
7937
|
+
return func();
|
|
7938
|
+
}
|
|
7939
|
+
finally {
|
|
7940
|
+
this._moving = isMoving;
|
|
7941
|
+
}
|
|
7942
|
+
}
|
|
7943
|
+
moveGroupOrPanel(options) {
|
|
7944
|
+
var _a;
|
|
7945
|
+
const destinationGroup = options.to.group;
|
|
7946
|
+
const sourceGroupId = options.from.groupId;
|
|
7947
|
+
const sourceItemId = options.from.panelId;
|
|
7948
|
+
const destinationTarget = options.to.position;
|
|
7949
|
+
const destinationIndex = options.to.index;
|
|
7334
7950
|
const sourceGroup = sourceGroupId
|
|
7335
7951
|
? (_a = this._groups.get(sourceGroupId)) === null || _a === void 0 ? void 0 : _a.value
|
|
7336
7952
|
: undefined;
|
|
7953
|
+
if (!sourceGroup) {
|
|
7954
|
+
throw new Error(`Failed to find group id ${sourceGroupId}`);
|
|
7955
|
+
}
|
|
7337
7956
|
if (sourceItemId === undefined) {
|
|
7338
|
-
|
|
7339
|
-
|
|
7340
|
-
|
|
7957
|
+
/**
|
|
7958
|
+
* Moving an entire group into another group
|
|
7959
|
+
*/
|
|
7960
|
+
this.moveGroup({
|
|
7961
|
+
from: { group: sourceGroup },
|
|
7962
|
+
to: {
|
|
7963
|
+
group: destinationGroup,
|
|
7964
|
+
position: destinationTarget,
|
|
7965
|
+
},
|
|
7966
|
+
});
|
|
7341
7967
|
return;
|
|
7342
7968
|
}
|
|
7343
7969
|
if (!destinationTarget || destinationTarget === 'center') {
|
|
7344
|
-
|
|
7345
|
-
|
|
7970
|
+
/**
|
|
7971
|
+
* Dropping a panel within another group
|
|
7972
|
+
*/
|
|
7973
|
+
const removedPanel = this.movingLock(() => sourceGroup.model.removePanel(sourceItemId, {
|
|
7974
|
+
skipSetActive: false,
|
|
7975
|
+
skipSetActiveGroup: true,
|
|
7976
|
+
}));
|
|
7977
|
+
if (!removedPanel) {
|
|
7346
7978
|
throw new Error(`No panel with id ${sourceItemId}`);
|
|
7347
7979
|
}
|
|
7348
|
-
if (
|
|
7349
|
-
|
|
7980
|
+
if (sourceGroup.model.size === 0) {
|
|
7981
|
+
// remove the group and do not set a new group as active
|
|
7982
|
+
this.doRemoveGroup(sourceGroup, { skipActive: true });
|
|
7350
7983
|
}
|
|
7351
|
-
destinationGroup.model.openPanel(
|
|
7984
|
+
this.movingLock(() => destinationGroup.model.openPanel(removedPanel, {
|
|
7352
7985
|
index: destinationIndex,
|
|
7986
|
+
skipSetGroupActive: true,
|
|
7987
|
+
}));
|
|
7988
|
+
this.doSetGroupAndPanelActive(destinationGroup);
|
|
7989
|
+
this._onDidMovePanel.fire({
|
|
7990
|
+
panel: removedPanel,
|
|
7353
7991
|
});
|
|
7354
7992
|
}
|
|
7355
7993
|
else {
|
|
7994
|
+
/**
|
|
7995
|
+
* Dropping a panel to the extremities of a group which will place that panel
|
|
7996
|
+
* into an adjacent group
|
|
7997
|
+
*/
|
|
7356
7998
|
const referenceLocation = getGridLocation(destinationGroup.element);
|
|
7357
7999
|
const targetLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, destinationTarget);
|
|
7358
|
-
if (sourceGroup
|
|
8000
|
+
if (sourceGroup.size < 2) {
|
|
8001
|
+
/**
|
|
8002
|
+
* If we are moving from a group which only has one panel left we will consider
|
|
8003
|
+
* moving the group itself rather than moving the panel into a newly created group
|
|
8004
|
+
*/
|
|
7359
8005
|
const [targetParentLocation, to] = tail(targetLocation);
|
|
7360
|
-
if (sourceGroup.api.location === 'grid') {
|
|
8006
|
+
if (sourceGroup.api.location.type === 'grid') {
|
|
7361
8007
|
const sourceLocation = getGridLocation(sourceGroup.element);
|
|
7362
8008
|
const [sourceParentLocation, from] = tail(sourceLocation);
|
|
7363
8009
|
if (sequenceEquals(sourceParentLocation, targetParentLocation)) {
|
|
@@ -7365,78 +8011,123 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
7365
8011
|
// if a group has one tab - we are essentially moving the 'group'
|
|
7366
8012
|
// which is equivalent to swapping two views in this case
|
|
7367
8013
|
this.gridview.moveView(sourceParentLocation, from, to);
|
|
8014
|
+
return;
|
|
7368
8015
|
}
|
|
7369
8016
|
}
|
|
7370
8017
|
// source group will become empty so delete the group
|
|
7371
|
-
const targetGroup = this.doRemoveGroup(sourceGroup, {
|
|
8018
|
+
const targetGroup = this.movingLock(() => this.doRemoveGroup(sourceGroup, {
|
|
7372
8019
|
skipActive: true,
|
|
7373
8020
|
skipDispose: true,
|
|
7374
|
-
});
|
|
8021
|
+
}));
|
|
7375
8022
|
// after deleting the group we need to re-evaulate the ref location
|
|
7376
8023
|
const updatedReferenceLocation = getGridLocation(destinationGroup.element);
|
|
7377
8024
|
const location = getRelativeLocation(this.gridview.orientation, updatedReferenceLocation, destinationTarget);
|
|
7378
|
-
this.doAddGroup(targetGroup, location);
|
|
8025
|
+
this.movingLock(() => this.doAddGroup(targetGroup, location));
|
|
8026
|
+
this.doSetGroupAndPanelActive(targetGroup);
|
|
7379
8027
|
}
|
|
7380
8028
|
else {
|
|
7381
|
-
|
|
7382
|
-
|
|
8029
|
+
/**
|
|
8030
|
+
* The group we are removing from has many panels, we need to remove the panels we are moving,
|
|
8031
|
+
* create a new group, add the panels to that new group and add the new group in an appropiate position
|
|
8032
|
+
*/
|
|
8033
|
+
const removedPanel = this.movingLock(() => sourceGroup.model.removePanel(sourceItemId, {
|
|
8034
|
+
skipSetActive: false,
|
|
8035
|
+
skipSetActiveGroup: true,
|
|
8036
|
+
}));
|
|
8037
|
+
if (!removedPanel) {
|
|
7383
8038
|
throw new Error(`No panel with id ${sourceItemId}`);
|
|
7384
8039
|
}
|
|
7385
8040
|
const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, destinationTarget);
|
|
7386
8041
|
const group = this.createGroupAtLocation(dropLocation);
|
|
7387
|
-
group.model.openPanel(
|
|
8042
|
+
this.movingLock(() => group.model.openPanel(removedPanel, {
|
|
8043
|
+
skipSetGroupActive: true,
|
|
8044
|
+
}));
|
|
8045
|
+
this.doSetGroupAndPanelActive(group);
|
|
7388
8046
|
}
|
|
7389
8047
|
}
|
|
7390
8048
|
}
|
|
7391
|
-
moveGroup(
|
|
7392
|
-
|
|
7393
|
-
|
|
7394
|
-
|
|
7395
|
-
|
|
7396
|
-
|
|
7397
|
-
|
|
7398
|
-
|
|
8049
|
+
moveGroup(options) {
|
|
8050
|
+
const from = options.from.group;
|
|
8051
|
+
const to = options.to.group;
|
|
8052
|
+
const target = options.to.position;
|
|
8053
|
+
if (target === 'center') {
|
|
8054
|
+
const activePanel = from.activePanel;
|
|
8055
|
+
const panels = this.movingLock(() => [...from.panels].map((p) => from.model.removePanel(p.id, {
|
|
8056
|
+
skipSetActive: true,
|
|
8057
|
+
})));
|
|
8058
|
+
if ((from === null || from === void 0 ? void 0 : from.model.size) === 0) {
|
|
8059
|
+
this.doRemoveGroup(from, { skipActive: true });
|
|
8060
|
+
}
|
|
8061
|
+
this.movingLock(() => {
|
|
7399
8062
|
for (const panel of panels) {
|
|
7400
|
-
|
|
7401
|
-
|
|
8063
|
+
to.model.openPanel(panel, {
|
|
8064
|
+
skipSetActive: panel !== activePanel,
|
|
8065
|
+
skipSetGroupActive: true,
|
|
7402
8066
|
});
|
|
7403
8067
|
}
|
|
7404
|
-
}
|
|
7405
|
-
|
|
7406
|
-
|
|
7407
|
-
|
|
7408
|
-
|
|
7409
|
-
|
|
7410
|
-
|
|
7411
|
-
|
|
7412
|
-
|
|
7413
|
-
|
|
7414
|
-
|
|
7415
|
-
|
|
7416
|
-
|
|
8068
|
+
});
|
|
8069
|
+
this.doSetGroupAndPanelActive(to);
|
|
8070
|
+
panels.forEach((panel) => {
|
|
8071
|
+
this._onDidMovePanel.fire({ panel });
|
|
8072
|
+
});
|
|
8073
|
+
}
|
|
8074
|
+
else {
|
|
8075
|
+
switch (from.api.location.type) {
|
|
8076
|
+
case 'grid':
|
|
8077
|
+
this.gridview.removeView(getGridLocation(from.element));
|
|
8078
|
+
break;
|
|
8079
|
+
case 'floating': {
|
|
8080
|
+
const selectedFloatingGroup = this._floatingGroups.find((x) => x.group === from);
|
|
8081
|
+
if (!selectedFloatingGroup) {
|
|
8082
|
+
throw new Error('failed to find floating group');
|
|
7417
8083
|
}
|
|
7418
|
-
|
|
7419
|
-
|
|
7420
|
-
|
|
7421
|
-
|
|
7422
|
-
|
|
7423
|
-
|
|
8084
|
+
selectedFloatingGroup.dispose();
|
|
8085
|
+
break;
|
|
8086
|
+
}
|
|
8087
|
+
case 'popout': {
|
|
8088
|
+
const selectedPopoutGroup = this._popoutGroups.find((x) => x.popoutGroup === from);
|
|
8089
|
+
if (!selectedPopoutGroup) {
|
|
8090
|
+
throw new Error('failed to find popout group');
|
|
7424
8091
|
}
|
|
8092
|
+
selectedPopoutGroup.disposable.dispose();
|
|
7425
8093
|
}
|
|
7426
|
-
const referenceLocation = getGridLocation(referenceGroup.element);
|
|
7427
|
-
const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, target);
|
|
7428
|
-
this.gridview.addView(sourceGroup, exports.Sizing.Distribute, dropLocation);
|
|
7429
8094
|
}
|
|
8095
|
+
const referenceLocation = getGridLocation(to.element);
|
|
8096
|
+
const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, target);
|
|
8097
|
+
this.gridview.addView(from, exports.Sizing.Distribute, dropLocation);
|
|
8098
|
+
from.panels.forEach((panel) => {
|
|
8099
|
+
this._onDidMovePanel.fire({ panel });
|
|
8100
|
+
});
|
|
7430
8101
|
}
|
|
7431
8102
|
}
|
|
7432
|
-
|
|
7433
|
-
|
|
8103
|
+
doSetGroupActive(group) {
|
|
8104
|
+
super.doSetGroupActive(group);
|
|
8105
|
+
const activePanel = this.activePanel;
|
|
8106
|
+
if (!this._moving &&
|
|
8107
|
+
activePanel !== this._onDidActivePanelChange.value) {
|
|
8108
|
+
this._onDidActivePanelChange.fire(activePanel);
|
|
8109
|
+
}
|
|
8110
|
+
}
|
|
8111
|
+
doSetGroupAndPanelActive(group) {
|
|
8112
|
+
super.doSetGroupActive(group);
|
|
7434
8113
|
const activePanel = this.activePanel;
|
|
7435
|
-
|
|
7436
|
-
|
|
7437
|
-
this.
|
|
8114
|
+
if (group &&
|
|
8115
|
+
this.hasMaximizedGroup() &&
|
|
8116
|
+
!this.isMaximizedGroup(group)) {
|
|
8117
|
+
this.exitMaximizedGroup();
|
|
8118
|
+
}
|
|
8119
|
+
if (!this._moving &&
|
|
8120
|
+
activePanel !== this._onDidActivePanelChange.value) {
|
|
8121
|
+
this._onDidActivePanelChange.fire(activePanel);
|
|
7438
8122
|
}
|
|
7439
8123
|
}
|
|
8124
|
+
getNextGroupId() {
|
|
8125
|
+
let id = this.nextGroupId.next();
|
|
8126
|
+
while (this._groups.has(id)) {
|
|
8127
|
+
id = this.nextGroupId.next();
|
|
8128
|
+
}
|
|
8129
|
+
return id;
|
|
8130
|
+
}
|
|
7440
8131
|
createGroup(options) {
|
|
7441
8132
|
if (!options) {
|
|
7442
8133
|
options = {};
|
|
@@ -7453,7 +8144,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
7453
8144
|
}
|
|
7454
8145
|
}
|
|
7455
8146
|
const view = new DockviewGroupPanel(this, id, options);
|
|
7456
|
-
view.init({ params: {}, accessor:
|
|
8147
|
+
view.init({ params: {}, accessor: this });
|
|
7457
8148
|
if (!this._groups.has(view.id)) {
|
|
7458
8149
|
const disposable = new CompositeDisposable(view.model.onTabDragStart((event) => {
|
|
7459
8150
|
this._onWillDragPanel.fire(event);
|
|
@@ -7461,20 +8152,48 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
7461
8152
|
this._onWillDragGroup.fire(event);
|
|
7462
8153
|
}), view.model.onMove((event) => {
|
|
7463
8154
|
const { groupId, itemId, target, index } = event;
|
|
7464
|
-
this.moveGroupOrPanel(
|
|
8155
|
+
this.moveGroupOrPanel({
|
|
8156
|
+
from: { groupId: groupId, panelId: itemId },
|
|
8157
|
+
to: {
|
|
8158
|
+
group: view,
|
|
8159
|
+
position: target,
|
|
8160
|
+
index,
|
|
8161
|
+
},
|
|
8162
|
+
});
|
|
7465
8163
|
}), view.model.onDidDrop((event) => {
|
|
7466
|
-
this._onDidDrop.fire(
|
|
8164
|
+
this._onDidDrop.fire(event);
|
|
8165
|
+
}), view.model.onWillDrop((event) => {
|
|
8166
|
+
this._onWillDrop.fire(event);
|
|
8167
|
+
}), view.model.onWillShowOverlay((event) => {
|
|
8168
|
+
if (this.options.disableDnd) {
|
|
8169
|
+
event.preventDefault();
|
|
8170
|
+
return;
|
|
8171
|
+
}
|
|
8172
|
+
this._onWillShowOverlay.fire(event);
|
|
7467
8173
|
}), view.model.onDidAddPanel((event) => {
|
|
8174
|
+
if (this._moving) {
|
|
8175
|
+
return;
|
|
8176
|
+
}
|
|
7468
8177
|
this._onDidAddPanel.fire(event.panel);
|
|
7469
8178
|
}), view.model.onDidRemovePanel((event) => {
|
|
8179
|
+
if (this._moving) {
|
|
8180
|
+
return;
|
|
8181
|
+
}
|
|
7470
8182
|
this._onDidRemovePanel.fire(event.panel);
|
|
7471
8183
|
}), view.model.onDidActivePanelChange((event) => {
|
|
7472
|
-
this.
|
|
8184
|
+
if (this._moving) {
|
|
8185
|
+
return;
|
|
8186
|
+
}
|
|
8187
|
+
if (event.panel !== this.activePanel) {
|
|
8188
|
+
return;
|
|
8189
|
+
}
|
|
8190
|
+
if (this._onDidActivePanelChange.value !== event.panel) {
|
|
8191
|
+
this._onDidActivePanelChange.fire(event.panel);
|
|
8192
|
+
}
|
|
7473
8193
|
}));
|
|
7474
8194
|
this._groups.set(view.id, { value: view, disposable });
|
|
7475
8195
|
}
|
|
7476
|
-
// TODO: must be called after the above listeners have been setup,
|
|
7477
|
-
// not an ideal pattern
|
|
8196
|
+
// TODO: must be called after the above listeners have been setup, not an ideal pattern
|
|
7478
8197
|
view.initialize();
|
|
7479
8198
|
return view;
|
|
7480
8199
|
}
|
|
@@ -7527,7 +8246,20 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
7527
8246
|
});
|
|
7528
8247
|
this._onDidLayoutfromJSON = new Emitter();
|
|
7529
8248
|
this.onDidLayoutFromJSON = this._onDidLayoutfromJSON.event;
|
|
8249
|
+
this._onDidRemoveGroup = new Emitter();
|
|
8250
|
+
this.onDidRemoveGroup = this._onDidRemoveGroup.event;
|
|
8251
|
+
this._onDidAddGroup = new Emitter();
|
|
8252
|
+
this.onDidAddGroup = this._onDidAddGroup.event;
|
|
8253
|
+
this._onDidActiveGroupChange = new Emitter();
|
|
8254
|
+
this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;
|
|
7530
8255
|
this._options = options;
|
|
8256
|
+
this.addDisposables(this._onDidAddGroup, this._onDidRemoveGroup, this._onDidActiveGroupChange, this.onDidAdd((event) => {
|
|
8257
|
+
this._onDidAddGroup.fire(event);
|
|
8258
|
+
}), this.onDidRemove((event) => {
|
|
8259
|
+
this._onDidRemoveGroup.fire(event);
|
|
8260
|
+
}), this.onDidActiveChange((event) => {
|
|
8261
|
+
this._onDidActiveGroupChange.fire(event);
|
|
8262
|
+
}));
|
|
7531
8263
|
if (!this.options.components) {
|
|
7532
8264
|
this.options.components = {};
|
|
7533
8265
|
}
|
|
@@ -7702,6 +8434,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
7702
8434
|
});
|
|
7703
8435
|
this.registerPanel(view);
|
|
7704
8436
|
this.doAddGroup(view, relativeLocation, options.size);
|
|
8437
|
+
this.doSetGroupActive(view);
|
|
7705
8438
|
return view;
|
|
7706
8439
|
}
|
|
7707
8440
|
registerPanel(panel) {
|
|
@@ -8387,10 +9120,10 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
8387
9120
|
this._onDidChange = new Emitter();
|
|
8388
9121
|
this.onDidChange = this._onDidChange.event;
|
|
8389
9122
|
this.api.initialize(this);
|
|
8390
|
-
this.addDisposables(this._onDidChange, this.api.
|
|
8391
|
-
const {
|
|
9123
|
+
this.addDisposables(this._onDidChange, this.api.onDidHiddenChange((event) => {
|
|
9124
|
+
const { isHidden } = event;
|
|
8392
9125
|
const { accessor } = this._params;
|
|
8393
|
-
accessor.setVisible(this,
|
|
9126
|
+
accessor.setVisible(this, !isHidden);
|
|
8394
9127
|
}), this.api.onActiveChange(() => {
|
|
8395
9128
|
const { accessor } = this._params;
|
|
8396
9129
|
accessor.setActive(this);
|
|
@@ -8456,11 +9189,13 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
8456
9189
|
exports.DockviewApi = DockviewApi;
|
|
8457
9190
|
exports.DockviewComponent = DockviewComponent;
|
|
8458
9191
|
exports.DockviewCompositeDisposable = CompositeDisposable;
|
|
9192
|
+
exports.DockviewDidDropEvent = DockviewDidDropEvent;
|
|
8459
9193
|
exports.DockviewEmitter = Emitter;
|
|
8460
9194
|
exports.DockviewGroupPanel = DockviewGroupPanel;
|
|
8461
9195
|
exports.DockviewGroupPanelModel = DockviewGroupPanelModel;
|
|
8462
9196
|
exports.DockviewMutableDisposable = MutableDisposable;
|
|
8463
9197
|
exports.DockviewPanel = DockviewPanel;
|
|
9198
|
+
exports.DockviewWillDropEvent = DockviewWillDropEvent;
|
|
8464
9199
|
exports.DraggablePaneviewPanel = DraggablePaneviewPanel;
|
|
8465
9200
|
exports.Gridview = Gridview;
|
|
8466
9201
|
exports.GridviewApi = GridviewApi;
|
|
@@ -8479,6 +9214,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
8479
9214
|
exports.SplitviewComponent = SplitviewComponent;
|
|
8480
9215
|
exports.SplitviewPanel = SplitviewPanel;
|
|
8481
9216
|
exports.Tab = Tab;
|
|
9217
|
+
exports.WillShowOverlayLocationEvent = WillShowOverlayLocationEvent;
|
|
8482
9218
|
exports.createComponent = createComponent;
|
|
8483
9219
|
exports.directionToPosition = directionToPosition;
|
|
8484
9220
|
exports.getDirectionOrientation = getDirectionOrientation;
|