dockview-core 1.9.2 → 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 +6 -7
- 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 +577 -197
- 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 +226 -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 +7 -3
- 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 +1261 -526
- 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 +1260 -525
- package/dist/dockview-core.amd.noStyle.js.map +1 -1
- package/dist/dockview-core.cjs.js +1261 -526
- package/dist/dockview-core.cjs.js.map +1 -1
- package/dist/dockview-core.esm.js +1259 -527
- 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 +1261 -526
- 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 +1260 -525
- 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 +6 -7
- 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 +520 -162
- 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 +169 -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 +7 -3
- 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,9 +3576,10 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
3460
3576
|
// noop
|
|
3461
3577
|
}
|
|
3462
3578
|
closePanel() {
|
|
3579
|
+
var _a;
|
|
3463
3580
|
if (this.panel) {
|
|
3464
3581
|
if (this.panel.api.renderer === 'onlyWhenVisibile') {
|
|
3465
|
-
this.
|
|
3582
|
+
(_a = this.panel.view.content.element.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(this.panel.view.content.element);
|
|
3466
3583
|
}
|
|
3467
3584
|
}
|
|
3468
3585
|
this.panel = undefined;
|
|
@@ -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,35 +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
|
-
if (!skipSetGroupActive) {
|
|
4217
|
-
this.accessor.doSetGroupActive(this.groupPanel);
|
|
4218
|
-
}
|
|
4219
4430
|
this.contentContainer.renderPanel(panel, { asActive: true });
|
|
4220
4431
|
return;
|
|
4221
4432
|
}
|
|
4222
|
-
|
|
4223
|
-
if (!skipSetPanelActive) {
|
|
4433
|
+
if (!skipSetActive) {
|
|
4224
4434
|
this.doSetActivePanel(panel);
|
|
4225
4435
|
}
|
|
4226
|
-
if (!skipSetGroupActive) {
|
|
4227
|
-
this.accessor.doSetGroupActive(this.groupPanel
|
|
4436
|
+
if (!options.skipSetGroupActive) {
|
|
4437
|
+
this.accessor.doSetGroupActive(this.groupPanel);
|
|
4438
|
+
}
|
|
4439
|
+
if (!options.skipSetActive) {
|
|
4440
|
+
this.updateContainer();
|
|
4228
4441
|
}
|
|
4229
|
-
this.updateContainer();
|
|
4230
4442
|
}
|
|
4231
|
-
removePanel(groupItemOrId
|
|
4443
|
+
removePanel(groupItemOrId, options = {
|
|
4444
|
+
skipSetActive: false,
|
|
4445
|
+
}) {
|
|
4232
4446
|
const id = typeof groupItemOrId === 'string'
|
|
4233
4447
|
? groupItemOrId
|
|
4234
4448
|
: groupItemOrId.id;
|
|
@@ -4236,7 +4450,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4236
4450
|
if (!panelToRemove) {
|
|
4237
4451
|
throw new Error('invalid operation');
|
|
4238
4452
|
}
|
|
4239
|
-
return this._removePanel(panelToRemove);
|
|
4453
|
+
return this._removePanel(panelToRemove, options);
|
|
4240
4454
|
}
|
|
4241
4455
|
closeAllPanels() {
|
|
4242
4456
|
if (this.panels.length > 0) {
|
|
@@ -4262,12 +4476,8 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4262
4476
|
updateActions(element) {
|
|
4263
4477
|
this.tabsContainer.setRightActionsElement(element);
|
|
4264
4478
|
}
|
|
4265
|
-
setActive(isGroupActive,
|
|
4266
|
-
var _a, _b, _c, _d;
|
|
4479
|
+
setActive(isGroupActive, force = false) {
|
|
4267
4480
|
if (!force && this.isActive === isGroupActive) {
|
|
4268
|
-
if (!skipFocus) {
|
|
4269
|
-
(_b = (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.focus) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
4270
|
-
}
|
|
4271
4481
|
return;
|
|
4272
4482
|
}
|
|
4273
4483
|
this._isGroupActive = isGroupActive;
|
|
@@ -4278,11 +4488,6 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4278
4488
|
this.doSetActivePanel(this.panels[0]);
|
|
4279
4489
|
}
|
|
4280
4490
|
this.updateContainer();
|
|
4281
|
-
if (isGroupActive) {
|
|
4282
|
-
if (!skipFocus) {
|
|
4283
|
-
(_d = (_c = this._activePanel) === null || _c === void 0 ? void 0 : _c.focus) === null || _d === void 0 ? void 0 : _d.call(_c);
|
|
4284
|
-
}
|
|
4285
|
-
}
|
|
4286
4491
|
}
|
|
4287
4492
|
layout(width, height) {
|
|
4288
4493
|
var _a;
|
|
@@ -4293,17 +4498,22 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4293
4498
|
this._activePanel.layout(this._width, this._height);
|
|
4294
4499
|
}
|
|
4295
4500
|
}
|
|
4296
|
-
_removePanel(panel) {
|
|
4501
|
+
_removePanel(panel, options) {
|
|
4297
4502
|
const isActivePanel = this._activePanel === panel;
|
|
4298
4503
|
this.doRemovePanel(panel);
|
|
4299
4504
|
if (isActivePanel && this.panels.length > 0) {
|
|
4300
4505
|
const nextPanel = this.mostRecentlyUsed[0];
|
|
4301
|
-
this.openPanel(nextPanel
|
|
4506
|
+
this.openPanel(nextPanel, {
|
|
4507
|
+
skipSetActive: options.skipSetActive,
|
|
4508
|
+
skipSetGroupActive: options.skipSetActiveGroup,
|
|
4509
|
+
});
|
|
4302
4510
|
}
|
|
4303
4511
|
if (this._activePanel && this.panels.length === 0) {
|
|
4304
4512
|
this.doSetActivePanel(undefined);
|
|
4305
4513
|
}
|
|
4306
|
-
|
|
4514
|
+
if (!options.skipSetActive) {
|
|
4515
|
+
this.updateContainer();
|
|
4516
|
+
}
|
|
4307
4517
|
return panel;
|
|
4308
4518
|
}
|
|
4309
4519
|
doRemovePanel(panel) {
|
|
@@ -4318,13 +4528,13 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4318
4528
|
}
|
|
4319
4529
|
this._onDidRemovePanel.fire({ panel });
|
|
4320
4530
|
}
|
|
4321
|
-
doAddPanel(panel, index = this.panels.length,
|
|
4531
|
+
doAddPanel(panel, index = this.panels.length, options = { skipSetActive: false }) {
|
|
4322
4532
|
const existingPanel = this._panels.indexOf(panel);
|
|
4323
4533
|
const hasExistingPanel = existingPanel > -1;
|
|
4324
4534
|
this.tabsContainer.show();
|
|
4325
4535
|
this.contentContainer.show();
|
|
4326
4536
|
this.tabsContainer.openPanel(panel, index);
|
|
4327
|
-
if (!skipSetActive) {
|
|
4537
|
+
if (!options.skipSetActive) {
|
|
4328
4538
|
this.contentContainer.openPanel(panel);
|
|
4329
4539
|
}
|
|
4330
4540
|
if (hasExistingPanel) {
|
|
@@ -4336,12 +4546,17 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4336
4546
|
this._onDidAddPanel.fire({ panel });
|
|
4337
4547
|
}
|
|
4338
4548
|
doSetActivePanel(panel) {
|
|
4549
|
+
if (this._activePanel === panel) {
|
|
4550
|
+
return;
|
|
4551
|
+
}
|
|
4339
4552
|
this._activePanel = panel;
|
|
4340
4553
|
if (panel) {
|
|
4341
4554
|
this.tabsContainer.setActivePanel(panel);
|
|
4342
4555
|
panel.layout(this._width, this._height);
|
|
4343
4556
|
this.updateMru(panel);
|
|
4344
|
-
this._onDidActivePanelChange.fire({
|
|
4557
|
+
this._onDidActivePanelChange.fire({
|
|
4558
|
+
panel,
|
|
4559
|
+
});
|
|
4345
4560
|
}
|
|
4346
4561
|
}
|
|
4347
4562
|
updateMru(panel) {
|
|
@@ -4353,11 +4568,11 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4353
4568
|
updateContainer() {
|
|
4354
4569
|
var _a, _b;
|
|
4355
4570
|
toggleClass(this.container, 'empty', this.isEmpty);
|
|
4356
|
-
this.panels.forEach((panel) => panel.
|
|
4571
|
+
this.panels.forEach((panel) => panel.runEvents());
|
|
4357
4572
|
if (this.isEmpty && !this.watermark) {
|
|
4358
4573
|
const watermark = this.accessor.createWatermarkComponent();
|
|
4359
4574
|
watermark.init({
|
|
4360
|
-
containerApi:
|
|
4575
|
+
containerApi: this._api,
|
|
4361
4576
|
group: this.groupPanel,
|
|
4362
4577
|
});
|
|
4363
4578
|
this.watermark = watermark;
|
|
@@ -4390,10 +4605,32 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4390
4605
|
}
|
|
4391
4606
|
return false;
|
|
4392
4607
|
}
|
|
4393
|
-
handleDropEvent(event, position, index) {
|
|
4608
|
+
handleDropEvent(type, event, position, index) {
|
|
4394
4609
|
if (this.locked === 'no-drop-target') {
|
|
4395
4610
|
return;
|
|
4396
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
|
+
}
|
|
4397
4634
|
const data = getPanelData();
|
|
4398
4635
|
if (data && data.viewId === this.accessor.id) {
|
|
4399
4636
|
if (data.panelId === null) {
|
|
@@ -4426,12 +4663,14 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4426
4663
|
});
|
|
4427
4664
|
}
|
|
4428
4665
|
else {
|
|
4429
|
-
this._onDidDrop.fire({
|
|
4666
|
+
this._onDidDrop.fire(new DockviewDidDropEvent({
|
|
4430
4667
|
nativeEvent: event,
|
|
4431
4668
|
position,
|
|
4432
|
-
|
|
4669
|
+
panel,
|
|
4433
4670
|
getData: () => getPanelData(),
|
|
4434
|
-
|
|
4671
|
+
group: this.groupPanel,
|
|
4672
|
+
api: this._api,
|
|
4673
|
+
}));
|
|
4435
4674
|
}
|
|
4436
4675
|
}
|
|
4437
4676
|
dispose() {
|
|
@@ -4439,6 +4678,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4439
4678
|
super.dispose();
|
|
4440
4679
|
(_a = this.watermark) === null || _a === void 0 ? void 0 : _a.element.remove();
|
|
4441
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;
|
|
4442
4682
|
for (const panel of this.panels) {
|
|
4443
4683
|
panel.dispose();
|
|
4444
4684
|
}
|
|
@@ -4460,15 +4700,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4460
4700
|
constructor(parentElement, disableResizing = false) {
|
|
4461
4701
|
super();
|
|
4462
4702
|
this._disableResizing = disableResizing;
|
|
4463
|
-
|
|
4464
|
-
this._element = parentElement;
|
|
4465
|
-
}
|
|
4466
|
-
else {
|
|
4467
|
-
this._element = document.createElement('div');
|
|
4468
|
-
this._element.style.height = '100%';
|
|
4469
|
-
this._element.style.width = '100%';
|
|
4470
|
-
this._element.className = 'dv-resizable-container';
|
|
4471
|
-
}
|
|
4703
|
+
this._element = parentElement;
|
|
4472
4704
|
this.addDisposables(watchElementResize(this._element, (entry) => {
|
|
4473
4705
|
if (this.isDisposed) {
|
|
4474
4706
|
/**
|
|
@@ -4556,25 +4788,38 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4556
4788
|
get activeGroup() {
|
|
4557
4789
|
return this._activeGroup;
|
|
4558
4790
|
}
|
|
4791
|
+
get locked() {
|
|
4792
|
+
return this.gridview.locked;
|
|
4793
|
+
}
|
|
4794
|
+
set locked(value) {
|
|
4795
|
+
this.gridview.locked = value;
|
|
4796
|
+
}
|
|
4559
4797
|
constructor(options) {
|
|
4560
|
-
super(
|
|
4798
|
+
super(document.createElement('div'), options.disableAutoResizing);
|
|
4561
4799
|
this._id = nextLayoutId$1.next();
|
|
4562
4800
|
this._groups = new Map();
|
|
4563
4801
|
this._onDidLayoutChange = new Emitter();
|
|
4564
4802
|
this.onDidLayoutChange = this._onDidLayoutChange.event;
|
|
4565
|
-
this.
|
|
4566
|
-
this.
|
|
4567
|
-
this.
|
|
4568
|
-
this.
|
|
4569
|
-
this.
|
|
4570
|
-
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;
|
|
4571
4809
|
this._bufferOnDidLayoutChange = new TickDelayedEvent();
|
|
4810
|
+
this.element.style.height = '100%';
|
|
4811
|
+
this.element.style.width = '100%';
|
|
4812
|
+
options.parentElement.appendChild(this.element);
|
|
4572
4813
|
this.gridview = new Gridview(!!options.proportionalLayout, options.styles, options.orientation);
|
|
4814
|
+
this.gridview.locked = !!options.locked;
|
|
4573
4815
|
this.element.appendChild(this.gridview.element);
|
|
4574
4816
|
this.layout(0, 0, true); // set some elements height/widths
|
|
4575
|
-
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(() => {
|
|
4576
4821
|
this._bufferOnDidLayoutChange.fire();
|
|
4577
|
-
}), exports.DockviewEvent.any(this.
|
|
4822
|
+
}), exports.DockviewEvent.any(this.onDidAdd, this.onDidRemove, this.onDidActiveChange)(() => {
|
|
4578
4823
|
this._bufferOnDidLayoutChange.fire();
|
|
4579
4824
|
}), this._bufferOnDidLayoutChange.onEvent(() => {
|
|
4580
4825
|
this._onDidLayoutChange.fire();
|
|
@@ -4589,6 +4834,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4589
4834
|
}
|
|
4590
4835
|
maximizeGroup(panel) {
|
|
4591
4836
|
this.gridview.maximizeView(panel);
|
|
4837
|
+
this.doSetGroupActive(panel);
|
|
4592
4838
|
}
|
|
4593
4839
|
isMaximizedGroup(panel) {
|
|
4594
4840
|
return this.gridview.maximizedView() === panel;
|
|
@@ -4599,13 +4845,12 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4599
4845
|
hasMaximizedGroup() {
|
|
4600
4846
|
return this.gridview.hasMaximizedView();
|
|
4601
4847
|
}
|
|
4602
|
-
get
|
|
4603
|
-
return this.gridview.
|
|
4848
|
+
get onDidMaximizedGroupChange() {
|
|
4849
|
+
return this.gridview.onDidMaximizedNodeChange;
|
|
4604
4850
|
}
|
|
4605
4851
|
doAddGroup(group, location = [0], size) {
|
|
4606
4852
|
this.gridview.addView(group, size !== null && size !== void 0 ? size : exports.Sizing.Distribute, location);
|
|
4607
|
-
this.
|
|
4608
|
-
this.doSetGroupActive(group);
|
|
4853
|
+
this._onDidAdd.fire(group);
|
|
4609
4854
|
}
|
|
4610
4855
|
doRemoveGroup(group, options) {
|
|
4611
4856
|
if (!this._groups.has(group.id)) {
|
|
@@ -4617,8 +4862,8 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4617
4862
|
item.disposable.dispose();
|
|
4618
4863
|
item.value.dispose();
|
|
4619
4864
|
this._groups.delete(group.id);
|
|
4865
|
+
this._onDidRemove.fire(group);
|
|
4620
4866
|
}
|
|
4621
|
-
this._onDidRemoveGroup.fire(group);
|
|
4622
4867
|
if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {
|
|
4623
4868
|
const groups = Array.from(this._groups.values());
|
|
4624
4869
|
this.doSetGroupActive(groups.length > 0 ? groups[0].value : undefined);
|
|
@@ -4629,25 +4874,18 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4629
4874
|
var _a;
|
|
4630
4875
|
return (_a = this._groups.get(id)) === null || _a === void 0 ? void 0 : _a.value;
|
|
4631
4876
|
}
|
|
4632
|
-
doSetGroupActive(group
|
|
4633
|
-
var _a, _b, _c;
|
|
4877
|
+
doSetGroupActive(group) {
|
|
4634
4878
|
if (this._activeGroup === group) {
|
|
4635
4879
|
return;
|
|
4636
4880
|
}
|
|
4637
4881
|
if (this._activeGroup) {
|
|
4638
4882
|
this._activeGroup.setActive(false);
|
|
4639
|
-
if (!skipFocus) {
|
|
4640
|
-
(_b = (_a = this._activeGroup).focus) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
4641
|
-
}
|
|
4642
4883
|
}
|
|
4643
4884
|
if (group) {
|
|
4644
4885
|
group.setActive(true);
|
|
4645
|
-
if (!skipFocus) {
|
|
4646
|
-
(_c = group.focus) === null || _c === void 0 ? void 0 : _c.call(group);
|
|
4647
|
-
}
|
|
4648
4886
|
}
|
|
4649
4887
|
this._activeGroup = group;
|
|
4650
|
-
this.
|
|
4888
|
+
this._onDidActiveChange.fire(group);
|
|
4651
4889
|
}
|
|
4652
4890
|
removeGroup(group) {
|
|
4653
4891
|
this.doRemoveGroup(group);
|
|
@@ -4692,9 +4930,9 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4692
4930
|
this.gridview.layout(width, height);
|
|
4693
4931
|
}
|
|
4694
4932
|
dispose() {
|
|
4695
|
-
this.
|
|
4696
|
-
this.
|
|
4697
|
-
this.
|
|
4933
|
+
this._onDidActiveChange.dispose();
|
|
4934
|
+
this._onDidAdd.dispose();
|
|
4935
|
+
this._onDidRemove.dispose();
|
|
4698
4936
|
this._onDidLayoutChange.dispose();
|
|
4699
4937
|
for (const group of this.groups) {
|
|
4700
4938
|
group.dispose();
|
|
@@ -4704,11 +4942,15 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4704
4942
|
}
|
|
4705
4943
|
}
|
|
4706
4944
|
|
|
4945
|
+
class WillFocusEvent extends DockviewEvent {
|
|
4946
|
+
constructor() {
|
|
4947
|
+
super();
|
|
4948
|
+
}
|
|
4949
|
+
}
|
|
4707
4950
|
/**
|
|
4708
4951
|
* A core api implementation that should be used across all panel-like objects
|
|
4709
4952
|
*/
|
|
4710
4953
|
class PanelApiImpl extends CompositeDisposable {
|
|
4711
|
-
//
|
|
4712
4954
|
get isFocused() {
|
|
4713
4955
|
return this._isFocused;
|
|
4714
4956
|
}
|
|
@@ -4718,6 +4960,9 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4718
4960
|
get isVisible() {
|
|
4719
4961
|
return this._isVisible;
|
|
4720
4962
|
}
|
|
4963
|
+
get isHidden() {
|
|
4964
|
+
return this._isHidden;
|
|
4965
|
+
}
|
|
4721
4966
|
get width() {
|
|
4722
4967
|
return this._width;
|
|
4723
4968
|
}
|
|
@@ -4730,38 +4975,26 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4730
4975
|
this._isFocused = false;
|
|
4731
4976
|
this._isActive = false;
|
|
4732
4977
|
this._isVisible = true;
|
|
4978
|
+
this._isHidden = false;
|
|
4733
4979
|
this._width = 0;
|
|
4734
4980
|
this._height = 0;
|
|
4735
4981
|
this.panelUpdatesDisposable = new MutableDisposable();
|
|
4736
|
-
this._onDidDimensionChange = new Emitter(
|
|
4737
|
-
replay: true,
|
|
4738
|
-
});
|
|
4982
|
+
this._onDidDimensionChange = new Emitter();
|
|
4739
4983
|
this.onDidDimensionsChange = this._onDidDimensionChange.event;
|
|
4740
|
-
|
|
4741
|
-
this._onDidChangeFocus = new Emitter({
|
|
4742
|
-
replay: true,
|
|
4743
|
-
});
|
|
4984
|
+
this._onDidChangeFocus = new Emitter();
|
|
4744
4985
|
this.onDidFocusChange = this._onDidChangeFocus.event;
|
|
4745
4986
|
//
|
|
4746
|
-
this.
|
|
4747
|
-
this.
|
|
4987
|
+
this._onWillFocus = new Emitter();
|
|
4988
|
+
this.onWillFocus = this._onWillFocus.event;
|
|
4748
4989
|
//
|
|
4749
|
-
this._onDidVisibilityChange = new Emitter(
|
|
4750
|
-
replay: true,
|
|
4751
|
-
});
|
|
4990
|
+
this._onDidVisibilityChange = new Emitter();
|
|
4752
4991
|
this.onDidVisibilityChange = this._onDidVisibilityChange.event;
|
|
4753
|
-
|
|
4754
|
-
this.
|
|
4755
|
-
this.
|
|
4756
|
-
//
|
|
4757
|
-
this._onDidActiveChange = new Emitter({
|
|
4758
|
-
replay: true,
|
|
4759
|
-
});
|
|
4992
|
+
this._onDidHiddenChange = new Emitter();
|
|
4993
|
+
this.onDidHiddenChange = this._onDidHiddenChange.event;
|
|
4994
|
+
this._onDidActiveChange = new Emitter();
|
|
4760
4995
|
this.onDidActiveChange = this._onDidActiveChange.event;
|
|
4761
|
-
//
|
|
4762
4996
|
this._onActiveChange = new Emitter();
|
|
4763
4997
|
this.onActiveChange = this._onActiveChange.event;
|
|
4764
|
-
//
|
|
4765
4998
|
this._onUpdateParameters = new Emitter();
|
|
4766
4999
|
this.onUpdateParameters = this._onUpdateParameters.event;
|
|
4767
5000
|
this.addDisposables(this.onDidFocusChange((event) => {
|
|
@@ -4770,10 +5003,12 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4770
5003
|
this._isActive = event.isActive;
|
|
4771
5004
|
}), this.onDidVisibilityChange((event) => {
|
|
4772
5005
|
this._isVisible = event.isVisible;
|
|
5006
|
+
}), this.onDidHiddenChange((event) => {
|
|
5007
|
+
this._isHidden = event.isHidden;
|
|
4773
5008
|
}), this.onDidDimensionsChange((event) => {
|
|
4774
5009
|
this._width = event.width;
|
|
4775
5010
|
this._height = event.height;
|
|
4776
|
-
}), 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);
|
|
4777
5012
|
}
|
|
4778
5013
|
initialize(panel) {
|
|
4779
5014
|
this.panelUpdatesDisposable.value = this._onUpdateParameters.event((parameters) => {
|
|
@@ -4782,8 +5017,8 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4782
5017
|
});
|
|
4783
5018
|
});
|
|
4784
5019
|
}
|
|
4785
|
-
|
|
4786
|
-
this.
|
|
5020
|
+
setHidden(isHidden) {
|
|
5021
|
+
this._onDidHiddenChange.fire({ isHidden });
|
|
4787
5022
|
}
|
|
4788
5023
|
setActive() {
|
|
4789
5024
|
this._onActiveChange.fire();
|
|
@@ -4791,9 +5026,6 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4791
5026
|
updateParameters(parameters) {
|
|
4792
5027
|
this._onUpdateParameters.fire(parameters);
|
|
4793
5028
|
}
|
|
4794
|
-
dispose() {
|
|
4795
|
-
super.dispose();
|
|
4796
|
-
}
|
|
4797
5029
|
}
|
|
4798
5030
|
|
|
4799
5031
|
class SplitviewPanelApiImpl extends PanelApiImpl {
|
|
@@ -4881,7 +5113,12 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
4881
5113
|
}), focusTracker);
|
|
4882
5114
|
}
|
|
4883
5115
|
focus() {
|
|
4884
|
-
|
|
5116
|
+
const event = new WillFocusEvent();
|
|
5117
|
+
this.api._onWillFocus.fire(event);
|
|
5118
|
+
if (event.defaultPrevented) {
|
|
5119
|
+
return;
|
|
5120
|
+
}
|
|
5121
|
+
this._element.focus();
|
|
4885
5122
|
}
|
|
4886
5123
|
layout(width, height) {
|
|
4887
5124
|
this._width = width;
|
|
@@ -5210,9 +5447,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
5210
5447
|
super(id);
|
|
5211
5448
|
this._onDidConstraintsChangeInternal = new Emitter();
|
|
5212
5449
|
this.onDidConstraintsChangeInternal = this._onDidConstraintsChangeInternal.event;
|
|
5213
|
-
this._onDidConstraintsChange = new Emitter(
|
|
5214
|
-
replay: true,
|
|
5215
|
-
});
|
|
5450
|
+
this._onDidConstraintsChange = new Emitter();
|
|
5216
5451
|
this.onDidConstraintsChange = this._onDidConstraintsChange.event;
|
|
5217
5452
|
this._onDidSizeChange = new Emitter();
|
|
5218
5453
|
this.onDidSizeChange = this._onDidSizeChange.event;
|
|
@@ -5305,13 +5540,13 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
5305
5540
|
this._maximumHeight = options.maximumHeight;
|
|
5306
5541
|
}
|
|
5307
5542
|
this.api.initialize(this); // TODO: required to by-pass 'super before this' requirement
|
|
5308
|
-
this.addDisposables(this.api.
|
|
5309
|
-
const {
|
|
5543
|
+
this.addDisposables(this.api.onDidHiddenChange((event) => {
|
|
5544
|
+
const { isHidden } = event;
|
|
5310
5545
|
const { accessor } = this._params;
|
|
5311
|
-
accessor.setVisible(this,
|
|
5546
|
+
accessor.setVisible(this, !isHidden);
|
|
5312
5547
|
}), this.api.onActiveChange(() => {
|
|
5313
5548
|
const { accessor } = this._params;
|
|
5314
|
-
accessor.
|
|
5549
|
+
accessor.doSetGroupActive(this);
|
|
5315
5550
|
}), this.api.onDidConstraintsChangeInternal((event) => {
|
|
5316
5551
|
if (typeof event.minimumWidth === 'number' ||
|
|
5317
5552
|
typeof event.minimumWidth === 'function') {
|
|
@@ -5394,6 +5629,17 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
5394
5629
|
this.onDidLocationChange = this._onDidLocationChange.event;
|
|
5395
5630
|
this.addDisposables(this._onDidLocationChange);
|
|
5396
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
|
+
}
|
|
5397
5643
|
moveTo(options) {
|
|
5398
5644
|
var _a, _b, _c;
|
|
5399
5645
|
if (!this._group) {
|
|
@@ -5401,14 +5647,23 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
5401
5647
|
}
|
|
5402
5648
|
const group = (_a = options.group) !== null && _a !== void 0 ? _a : this.accessor.addGroup({
|
|
5403
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
|
+
},
|
|
5404
5660
|
});
|
|
5405
|
-
this.accessor.moveGroupOrPanel(group, this._group.id, undefined, options.group ? (_c = options.position) !== null && _c !== void 0 ? _c : 'center' : 'center');
|
|
5406
5661
|
}
|
|
5407
5662
|
maximize() {
|
|
5408
5663
|
if (!this._group) {
|
|
5409
5664
|
throw new Error(NOT_INITIALIZED_MESSAGE);
|
|
5410
5665
|
}
|
|
5411
|
-
if (this.location !== 'grid') {
|
|
5666
|
+
if (this.location.type !== 'grid') {
|
|
5412
5667
|
// only grid groups can be maximized
|
|
5413
5668
|
return;
|
|
5414
5669
|
}
|
|
@@ -5465,6 +5720,12 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
5465
5720
|
this.api.initialize(this); // cannot use 'this' after after 'super' call
|
|
5466
5721
|
this._model = new DockviewGroupPanelModel(this.element, accessor, id, options, this);
|
|
5467
5722
|
}
|
|
5723
|
+
focus() {
|
|
5724
|
+
if (!this.api.isActive) {
|
|
5725
|
+
this.api.setActive();
|
|
5726
|
+
}
|
|
5727
|
+
super.focus();
|
|
5728
|
+
}
|
|
5468
5729
|
initialize() {
|
|
5469
5730
|
this._model.initialize();
|
|
5470
5731
|
}
|
|
@@ -5510,6 +5771,9 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
5510
5771
|
}
|
|
5511
5772
|
|
|
5512
5773
|
class DockviewPanelApiImpl extends GridviewPanelApiImpl {
|
|
5774
|
+
get location() {
|
|
5775
|
+
return this.group.api.location;
|
|
5776
|
+
}
|
|
5513
5777
|
get title() {
|
|
5514
5778
|
return this.panel.title;
|
|
5515
5779
|
}
|
|
@@ -5521,15 +5785,34 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
5521
5785
|
}
|
|
5522
5786
|
set group(value) {
|
|
5523
5787
|
const isOldGroupActive = this.isGroupActive;
|
|
5524
|
-
this._group
|
|
5525
|
-
|
|
5526
|
-
|
|
5527
|
-
|
|
5528
|
-
|
|
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,
|
|
5529
5815
|
});
|
|
5530
|
-
if (this.isGroupActive !== isOldGroupActive) {
|
|
5531
|
-
this._onDidActiveGroupChange.fire();
|
|
5532
|
-
}
|
|
5533
5816
|
}
|
|
5534
5817
|
}
|
|
5535
5818
|
get group() {
|
|
@@ -5547,14 +5830,26 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
5547
5830
|
this.onDidGroupChange = this._onDidGroupChange.event;
|
|
5548
5831
|
this._onDidRendererChange = new Emitter();
|
|
5549
5832
|
this.onDidRendererChange = this._onDidRendererChange.event;
|
|
5550
|
-
this.
|
|
5833
|
+
this._onDidLocationChange = new Emitter();
|
|
5834
|
+
this.onDidLocationChange = this._onDidLocationChange.event;
|
|
5835
|
+
this.groupEventsDisposable = new MutableDisposable();
|
|
5551
5836
|
this.initialize(panel);
|
|
5552
5837
|
this._group = group;
|
|
5553
|
-
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();
|
|
5554
5842
|
}
|
|
5555
5843
|
moveTo(options) {
|
|
5556
5844
|
var _a;
|
|
5557
|
-
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
|
+
});
|
|
5558
5853
|
}
|
|
5559
5854
|
setTitle(title) {
|
|
5560
5855
|
this.panel.setTitle(title);
|
|
@@ -5615,7 +5910,14 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
5615
5910
|
this.setTitle(params.title);
|
|
5616
5911
|
}
|
|
5617
5912
|
focus() {
|
|
5618
|
-
|
|
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
|
+
}
|
|
5619
5921
|
}
|
|
5620
5922
|
toJSON() {
|
|
5621
5923
|
return {
|
|
@@ -5672,20 +5974,40 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
5672
5974
|
},
|
|
5673
5975
|
});
|
|
5674
5976
|
}
|
|
5675
|
-
updateParentGroup(group,
|
|
5977
|
+
updateParentGroup(group, options) {
|
|
5676
5978
|
this._group = group;
|
|
5677
|
-
this.api.group =
|
|
5979
|
+
this.api.group = this._group;
|
|
5678
5980
|
const isPanelVisible = this._group.model.isPanelActive(this);
|
|
5679
|
-
this.api.
|
|
5680
|
-
|
|
5681
|
-
|
|
5682
|
-
|
|
5683
|
-
|
|
5684
|
-
|
|
5685
|
-
|
|
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
|
+
}
|
|
5686
6008
|
}
|
|
5687
6009
|
layout(width, height) {
|
|
5688
|
-
//
|
|
6010
|
+
// TODO: Can we somehow do height without header height or indicate what the header height is?
|
|
5689
6011
|
this.api._onDidDimensionChange.fire({
|
|
5690
6012
|
width,
|
|
5691
6013
|
height: height,
|
|
@@ -5807,8 +6129,6 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
5807
6129
|
this.id = id;
|
|
5808
6130
|
this.contentComponent = contentComponent;
|
|
5809
6131
|
this.tabComponent = tabComponent;
|
|
5810
|
-
this._group = null;
|
|
5811
|
-
this._isPanelVisible = null;
|
|
5812
6132
|
this._content = this.createContentComponent(this.id, contentComponent);
|
|
5813
6133
|
this._tab = this.createTabComponent(this.id, tabComponent);
|
|
5814
6134
|
}
|
|
@@ -5816,25 +6136,8 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
5816
6136
|
this.content.init(Object.assign(Object.assign({}, params), { tab: this.tab }));
|
|
5817
6137
|
this.tab.init(params);
|
|
5818
6138
|
}
|
|
5819
|
-
updateParentGroup(
|
|
5820
|
-
|
|
5821
|
-
this._group = group;
|
|
5822
|
-
if (this._content.onGroupChange) {
|
|
5823
|
-
this._content.onGroupChange(group);
|
|
5824
|
-
}
|
|
5825
|
-
if (this._tab.onGroupChange) {
|
|
5826
|
-
this._tab.onGroupChange(group);
|
|
5827
|
-
}
|
|
5828
|
-
}
|
|
5829
|
-
if (isPanelVisible !== this._isPanelVisible) {
|
|
5830
|
-
this._isPanelVisible = isPanelVisible;
|
|
5831
|
-
if (this._content.onPanelVisibleChange) {
|
|
5832
|
-
this._content.onPanelVisibleChange(isPanelVisible);
|
|
5833
|
-
}
|
|
5834
|
-
if (this._tab.onPanelVisibleChange) {
|
|
5835
|
-
this._tab.onPanelVisibleChange(isPanelVisible);
|
|
5836
|
-
}
|
|
5837
|
-
}
|
|
6139
|
+
updateParentGroup(_group, _isPanelVisible) {
|
|
6140
|
+
// noop
|
|
5838
6141
|
}
|
|
5839
6142
|
layout(width, height) {
|
|
5840
6143
|
var _a, _b;
|
|
@@ -6267,117 +6570,6 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
6267
6570
|
}
|
|
6268
6571
|
}
|
|
6269
6572
|
|
|
6270
|
-
class PopoutWindow extends CompositeDisposable {
|
|
6271
|
-
constructor(id, className, options) {
|
|
6272
|
-
super();
|
|
6273
|
-
this.id = id;
|
|
6274
|
-
this.className = className;
|
|
6275
|
-
this.options = options;
|
|
6276
|
-
this._onDidClose = new Emitter();
|
|
6277
|
-
this.onDidClose = this._onDidClose.event;
|
|
6278
|
-
this._window = null;
|
|
6279
|
-
this.addDisposables(this._onDidClose, {
|
|
6280
|
-
dispose: () => {
|
|
6281
|
-
this.close();
|
|
6282
|
-
},
|
|
6283
|
-
});
|
|
6284
|
-
}
|
|
6285
|
-
dimensions() {
|
|
6286
|
-
if (!this._window) {
|
|
6287
|
-
return null;
|
|
6288
|
-
}
|
|
6289
|
-
const left = this._window.value.screenX;
|
|
6290
|
-
const top = this._window.value.screenY;
|
|
6291
|
-
const width = this._window.value.innerWidth;
|
|
6292
|
-
const height = this._window.value.innerHeight;
|
|
6293
|
-
return { top, left, width, height };
|
|
6294
|
-
}
|
|
6295
|
-
close() {
|
|
6296
|
-
if (this._window) {
|
|
6297
|
-
this._window.disposable.dispose();
|
|
6298
|
-
this._window.value.close();
|
|
6299
|
-
this._window = null;
|
|
6300
|
-
}
|
|
6301
|
-
}
|
|
6302
|
-
open(content) {
|
|
6303
|
-
if (this._window) {
|
|
6304
|
-
throw new Error('instance of popout window is already open');
|
|
6305
|
-
}
|
|
6306
|
-
const url = `${this.options.url}`;
|
|
6307
|
-
const features = Object.entries({
|
|
6308
|
-
top: this.options.top,
|
|
6309
|
-
left: this.options.left,
|
|
6310
|
-
width: this.options.width,
|
|
6311
|
-
height: this.options.height,
|
|
6312
|
-
})
|
|
6313
|
-
.map(([key, value]) => `${key}=${value}`)
|
|
6314
|
-
.join(',');
|
|
6315
|
-
// https://developer.mozilla.org/en-US/docs/Web/API/Window/open
|
|
6316
|
-
const externalWindow = window.open(url, this.id, features);
|
|
6317
|
-
if (!externalWindow) {
|
|
6318
|
-
return;
|
|
6319
|
-
}
|
|
6320
|
-
const disposable = new CompositeDisposable();
|
|
6321
|
-
this._window = { value: externalWindow, disposable };
|
|
6322
|
-
const cleanUp = () => {
|
|
6323
|
-
this._onDidClose.fire();
|
|
6324
|
-
this._window = null;
|
|
6325
|
-
};
|
|
6326
|
-
// prevent any default content from loading
|
|
6327
|
-
// externalWindow.document.body.replaceWith(document.createElement('div'));
|
|
6328
|
-
disposable.addDisposables(addDisposableWindowListener(window, 'beforeunload', () => {
|
|
6329
|
-
cleanUp();
|
|
6330
|
-
this.close();
|
|
6331
|
-
}));
|
|
6332
|
-
externalWindow.addEventListener('load', () => {
|
|
6333
|
-
const externalDocument = externalWindow.document;
|
|
6334
|
-
externalDocument.title = document.title;
|
|
6335
|
-
const div = document.createElement('div');
|
|
6336
|
-
div.classList.add('dv-popout-window');
|
|
6337
|
-
div.style.position = 'absolute';
|
|
6338
|
-
div.style.width = '100%';
|
|
6339
|
-
div.style.height = '100%';
|
|
6340
|
-
div.style.top = '0px';
|
|
6341
|
-
div.style.left = '0px';
|
|
6342
|
-
div.classList.add(this.className);
|
|
6343
|
-
div.appendChild(content);
|
|
6344
|
-
externalDocument.body.replaceChildren(div);
|
|
6345
|
-
externalDocument.body.classList.add(this.className);
|
|
6346
|
-
addStyles(externalDocument, window.document.styleSheets);
|
|
6347
|
-
externalWindow.addEventListener('beforeunload', () => {
|
|
6348
|
-
// TODO: indicate external window is closing
|
|
6349
|
-
cleanUp();
|
|
6350
|
-
});
|
|
6351
|
-
});
|
|
6352
|
-
}
|
|
6353
|
-
}
|
|
6354
|
-
|
|
6355
|
-
class DockviewPopoutGroupPanel extends CompositeDisposable {
|
|
6356
|
-
constructor(id, group, options) {
|
|
6357
|
-
var _a;
|
|
6358
|
-
super();
|
|
6359
|
-
this.id = id;
|
|
6360
|
-
this.group = group;
|
|
6361
|
-
this.options = options;
|
|
6362
|
-
this.window = new PopoutWindow(id, (_a = options.className) !== null && _a !== void 0 ? _a : '', {
|
|
6363
|
-
url: this.options.popoutUrl,
|
|
6364
|
-
left: this.options.box.left,
|
|
6365
|
-
top: this.options.box.top,
|
|
6366
|
-
width: this.options.box.width,
|
|
6367
|
-
height: this.options.box.height,
|
|
6368
|
-
});
|
|
6369
|
-
group.model.location = 'popout';
|
|
6370
|
-
this.addDisposables(this.window, {
|
|
6371
|
-
dispose: () => {
|
|
6372
|
-
group.model.location = 'grid';
|
|
6373
|
-
},
|
|
6374
|
-
}, this.window.onDidClose(() => {
|
|
6375
|
-
this.dispose();
|
|
6376
|
-
}));
|
|
6377
|
-
this.window.open(group.element);
|
|
6378
|
-
}
|
|
6379
|
-
}
|
|
6380
|
-
|
|
6381
6573
|
const DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE = 100;
|
|
6382
6574
|
const DEFAULT_FLOATING_GROUP_POSITION = { left: 100, top: 100 };
|
|
6383
6575
|
|
|
@@ -6391,11 +6583,13 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
6391
6583
|
super();
|
|
6392
6584
|
this.element = element;
|
|
6393
6585
|
this.map = {};
|
|
6586
|
+
this._disposed = false;
|
|
6394
6587
|
this.addDisposables(Disposable.from(() => {
|
|
6395
6588
|
for (const value of Object.values(this.map)) {
|
|
6396
6589
|
value.disposable.dispose();
|
|
6397
6590
|
value.destroy.dispose();
|
|
6398
6591
|
}
|
|
6592
|
+
this._disposed = true;
|
|
6399
6593
|
}));
|
|
6400
6594
|
}
|
|
6401
6595
|
detatch(panel) {
|
|
@@ -6435,7 +6629,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
6435
6629
|
focusContainer.style.top = `${box.top - box2.top}px`;
|
|
6436
6630
|
focusContainer.style.width = `${box.width}px`;
|
|
6437
6631
|
focusContainer.style.height = `${box.height}px`;
|
|
6438
|
-
toggleClass(focusContainer, 'dv-render-overlay-float', panel.group.api.location === 'floating');
|
|
6632
|
+
toggleClass(focusContainer, 'dv-render-overlay-float', panel.group.api.location.type === 'floating');
|
|
6439
6633
|
};
|
|
6440
6634
|
const visibilityChanged = () => {
|
|
6441
6635
|
if (panel.api.isVisible) {
|
|
@@ -6481,8 +6675,11 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
6481
6675
|
resize();
|
|
6482
6676
|
}));
|
|
6483
6677
|
this.map[panel.api.id].destroy = Disposable.from(() => {
|
|
6484
|
-
|
|
6485
|
-
|
|
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);
|
|
6486
6683
|
});
|
|
6487
6684
|
queueMicrotask(() => {
|
|
6488
6685
|
if (this.isDisposed) {
|
|
@@ -6503,11 +6700,187 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
6503
6700
|
}
|
|
6504
6701
|
}
|
|
6505
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
|
+
|
|
6506
6865
|
const DEFAULT_ROOT_OVERLAY_MODEL = {
|
|
6507
6866
|
activationSize: { type: 'pixels', value: 10 },
|
|
6508
6867
|
size: { type: 'pixels', value: 20 },
|
|
6509
6868
|
};
|
|
6510
|
-
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) {
|
|
6511
6884
|
function toClassList(element) {
|
|
6512
6885
|
const list = [];
|
|
6513
6886
|
for (let i = 0; i < element.classList.length; i++) {
|
|
@@ -6558,6 +6931,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
6558
6931
|
styles: options.styles,
|
|
6559
6932
|
parentElement: options.parentElement,
|
|
6560
6933
|
disableAutoResizing: options.disableAutoResizing,
|
|
6934
|
+
locked: options.locked,
|
|
6561
6935
|
});
|
|
6562
6936
|
this.nextGroupId = sequentialNumberGenerator();
|
|
6563
6937
|
this._deserializer = new DefaultDockviewDeserialzier(this);
|
|
@@ -6568,6 +6942,10 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
6568
6942
|
this.onWillDragGroup = this._onWillDragGroup.event;
|
|
6569
6943
|
this._onDidDrop = new Emitter();
|
|
6570
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;
|
|
6571
6949
|
this._onDidRemovePanel = new Emitter();
|
|
6572
6950
|
this.onDidRemovePanel = this._onDidRemovePanel.event;
|
|
6573
6951
|
this._onDidAddPanel = new Emitter();
|
|
@@ -6576,15 +6954,36 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
6576
6954
|
this.onDidLayoutFromJSON = this._onDidLayoutFromJSON.event;
|
|
6577
6955
|
this._onDidActivePanelChange = new Emitter();
|
|
6578
6956
|
this.onDidActivePanelChange = this._onDidActivePanelChange.event;
|
|
6957
|
+
this._onDidMovePanel = new Emitter();
|
|
6579
6958
|
this._floatingGroups = [];
|
|
6580
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;
|
|
6581
6968
|
const gready = document.createElement('div');
|
|
6582
6969
|
gready.className = 'dv-overlay-render-container';
|
|
6583
6970
|
this.gridview.element.appendChild(gready);
|
|
6584
6971
|
this.overlayRenderContainer = new OverlayRenderContainer(gready);
|
|
6585
6972
|
toggleClass(this.gridview.element, 'dv-dockview', true);
|
|
6586
6973
|
toggleClass(this.element, 'dv-debug', !!options.debug);
|
|
6587
|
-
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)(() => {
|
|
6588
6987
|
this.updateWatermark();
|
|
6589
6988
|
}), exports.DockviewEvent.any(this.onDidAddPanel, this.onDidRemovePanel, this.onDidActivePanelChange)(() => {
|
|
6590
6989
|
this._bufferOnDidLayoutChange.fire();
|
|
@@ -6595,7 +6994,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
6595
6994
|
}
|
|
6596
6995
|
// iterate over a copy of the array since .dispose() mutates the original array
|
|
6597
6996
|
for (const group of [...this._popoutGroups]) {
|
|
6598
|
-
group.dispose();
|
|
6997
|
+
group.disposable.dispose();
|
|
6599
6998
|
}
|
|
6600
6999
|
}));
|
|
6601
7000
|
this._options = options;
|
|
@@ -6641,7 +7040,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
6641
7040
|
return this.options.showDndOverlay({
|
|
6642
7041
|
nativeEvent: event,
|
|
6643
7042
|
position: position,
|
|
6644
|
-
target:
|
|
7043
|
+
target: 'edge',
|
|
6645
7044
|
getData: getPanelData,
|
|
6646
7045
|
});
|
|
6647
7046
|
}
|
|
@@ -6652,86 +7051,249 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
6652
7051
|
});
|
|
6653
7052
|
this.addDisposables(this._rootDropTarget.onDrop((event) => {
|
|
6654
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
|
+
}
|
|
6655
7067
|
const data = getPanelData();
|
|
6656
7068
|
if (data) {
|
|
6657
|
-
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
|
+
});
|
|
6658
7079
|
}
|
|
6659
7080
|
else {
|
|
6660
|
-
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
|
+
}));
|
|
6661
7089
|
}
|
|
6662
7090
|
}), this._rootDropTarget);
|
|
6663
7091
|
this._api = new DockviewApi(this);
|
|
6664
7092
|
this.updateWatermark();
|
|
6665
7093
|
}
|
|
6666
|
-
addPopoutGroup(
|
|
6667
|
-
var _a;
|
|
6668
|
-
|
|
6669
|
-
|
|
6670
|
-
|
|
6671
|
-
|
|
6672
|
-
|
|
6673
|
-
|
|
6674
|
-
|
|
6675
|
-
|
|
6676
|
-
|
|
6677
|
-
|
|
6678
|
-
|
|
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;
|
|
6679
7138
|
}
|
|
6680
|
-
|
|
6681
|
-
|
|
6682
|
-
|
|
6683
|
-
if (!box) {
|
|
6684
|
-
box = group.element.getBoundingClientRect();
|
|
7139
|
+
if (popoutContainer === null) {
|
|
7140
|
+
popoutWindowDisposable.dispose();
|
|
7141
|
+
return;
|
|
6685
7142
|
}
|
|
6686
|
-
const
|
|
6687
|
-
|
|
6688
|
-
|
|
6689
|
-
|
|
6690
|
-
|
|
6691
|
-
|
|
6692
|
-
|
|
6693
|
-
|
|
6694
|
-
|
|
6695
|
-
|
|
6696
|
-
|
|
6697
|
-
|
|
6698
|
-
|
|
6699
|
-
|
|
6700
|
-
|
|
6701
|
-
|
|
6702
|
-
|
|
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);
|
|
6703
7249
|
});
|
|
6704
|
-
popoutWindow.addDisposables({
|
|
6705
|
-
dispose: () => {
|
|
6706
|
-
remove(this._popoutGroups, popoutWindow);
|
|
6707
|
-
this.updateWatermark();
|
|
6708
|
-
},
|
|
6709
|
-
}, popoutWindow.window.onDidClose(() => {
|
|
6710
|
-
this.doAddGroup(group, [0]);
|
|
6711
|
-
}));
|
|
6712
|
-
this._popoutGroups.push(popoutWindow);
|
|
6713
|
-
this.updateWatermark();
|
|
6714
7250
|
}
|
|
6715
7251
|
addFloatingGroup(item, coord, options) {
|
|
6716
|
-
var _a, _b, _c, _d, _e, _f;
|
|
7252
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
6717
7253
|
let group;
|
|
6718
7254
|
if (item instanceof DockviewPanel) {
|
|
6719
7255
|
group = this.createGroup();
|
|
6720
|
-
this.
|
|
7256
|
+
this._onDidAddGroup.fire(group);
|
|
7257
|
+
this.movingLock(() => this.removePanel(item, {
|
|
6721
7258
|
removeEmptyGroup: true,
|
|
6722
7259
|
skipDispose: true,
|
|
6723
|
-
|
|
6724
|
-
|
|
7260
|
+
skipSetActiveGroup: true,
|
|
7261
|
+
}));
|
|
7262
|
+
group.model.openPanel(item, { skipSetGroupActive: true });
|
|
6725
7263
|
}
|
|
6726
7264
|
else {
|
|
6727
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;
|
|
6728
7270
|
const skip = typeof (options === null || options === void 0 ? void 0 : options.skipRemoveGroup) === 'boolean' &&
|
|
6729
7271
|
options.skipRemoveGroup;
|
|
6730
7272
|
if (!skip) {
|
|
6731
|
-
|
|
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
|
+
}
|
|
6732
7294
|
}
|
|
6733
7295
|
}
|
|
6734
|
-
group.model.location = 'floating';
|
|
7296
|
+
group.model.location = { type: 'floating' };
|
|
6735
7297
|
const overlayLeft = typeof (coord === null || coord === void 0 ? void 0 : coord.x) === 'number'
|
|
6736
7298
|
? Math.max(coord.x, 0)
|
|
6737
7299
|
: DEFAULT_FLOATING_GROUP_POSITION.left;
|
|
@@ -6741,16 +7303,16 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
6741
7303
|
const overlay = new Overlay({
|
|
6742
7304
|
container: this.gridview.element,
|
|
6743
7305
|
content: group.element,
|
|
6744
|
-
height: (
|
|
6745
|
-
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,
|
|
6746
7308
|
left: overlayLeft,
|
|
6747
7309
|
top: overlayTop,
|
|
6748
7310
|
minimumInViewportWidth: this.options.floatingGroupBounds === 'boundedWithinViewport'
|
|
6749
7311
|
? undefined
|
|
6750
|
-
: (
|
|
7312
|
+
: (_e = (_d = this.options.floatingGroupBounds) === null || _d === void 0 ? void 0 : _d.minimumWidthWithinViewport) !== null && _e !== void 0 ? _e : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,
|
|
6751
7313
|
minimumInViewportHeight: this.options.floatingGroupBounds === 'boundedWithinViewport'
|
|
6752
7314
|
? undefined
|
|
6753
|
-
: (
|
|
7315
|
+
: (_g = (_f = this.options.floatingGroupBounds) === null || _f === void 0 ? void 0 : _f.minimumHeightWithinViewport) !== null && _g !== void 0 ? _g : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,
|
|
6754
7316
|
});
|
|
6755
7317
|
const el = group.element.querySelector('.void-container');
|
|
6756
7318
|
if (!el) {
|
|
@@ -6781,12 +7343,15 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
6781
7343
|
}), {
|
|
6782
7344
|
dispose: () => {
|
|
6783
7345
|
disposable.dispose();
|
|
6784
|
-
group.model.location = 'grid';
|
|
7346
|
+
group.model.location = { type: 'grid' };
|
|
6785
7347
|
remove(this._floatingGroups, floatingGroupPanel);
|
|
6786
7348
|
this.updateWatermark();
|
|
6787
7349
|
},
|
|
6788
7350
|
});
|
|
6789
7351
|
this._floatingGroups.push(floatingGroupPanel);
|
|
7352
|
+
if (!(options === null || options === void 0 ? void 0 : options.skipActiveGroup)) {
|
|
7353
|
+
this.doSetGroupAndPanelActive(group);
|
|
7354
|
+
}
|
|
6790
7355
|
this.updateWatermark();
|
|
6791
7356
|
}
|
|
6792
7357
|
orthogonalize(position) {
|
|
@@ -6876,8 +7441,8 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
6876
7441
|
return this.panels.find((panel) => panel.id === id);
|
|
6877
7442
|
}
|
|
6878
7443
|
setActivePanel(panel) {
|
|
6879
|
-
this.doSetGroupActive(panel.group);
|
|
6880
7444
|
panel.group.model.openPanel(panel);
|
|
7445
|
+
this.doSetGroupAndPanelActive(panel.group);
|
|
6881
7446
|
}
|
|
6882
7447
|
moveToNext(options = {}) {
|
|
6883
7448
|
var _a;
|
|
@@ -6938,7 +7503,8 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
6938
7503
|
});
|
|
6939
7504
|
const popoutGroups = this._popoutGroups.map((group) => {
|
|
6940
7505
|
return {
|
|
6941
|
-
data: group.
|
|
7506
|
+
data: group.popoutGroup.toJSON(),
|
|
7507
|
+
gridReferenceGroup: group.referenceGroup,
|
|
6942
7508
|
position: group.window.dimensions(),
|
|
6943
7509
|
};
|
|
6944
7510
|
});
|
|
@@ -6956,7 +7522,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
6956
7522
|
return result;
|
|
6957
7523
|
}
|
|
6958
7524
|
fromJSON(data) {
|
|
6959
|
-
var _a, _b;
|
|
7525
|
+
var _a, _b, _c;
|
|
6960
7526
|
this.clear();
|
|
6961
7527
|
if (typeof data !== 'object' || data === null) {
|
|
6962
7528
|
throw new Error('serialized layout must be a non-null object');
|
|
@@ -6995,7 +7561,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
6995
7561
|
const isActive = typeof activeView === 'string' &&
|
|
6996
7562
|
activeView === panel.id;
|
|
6997
7563
|
group.model.openPanel(panel, {
|
|
6998
|
-
|
|
7564
|
+
skipSetActive: !isActive,
|
|
6999
7565
|
skipSetGroupActive: true,
|
|
7000
7566
|
});
|
|
7001
7567
|
}
|
|
@@ -7025,11 +7591,16 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
7025
7591
|
}
|
|
7026
7592
|
const serializedPopoutGroups = (_b = data.popoutGroups) !== null && _b !== void 0 ? _b : [];
|
|
7027
7593
|
for (const serializedPopoutGroup of serializedPopoutGroups) {
|
|
7028
|
-
const { data, position } = serializedPopoutGroup;
|
|
7594
|
+
const { data, position, gridReferenceGroup } = serializedPopoutGroup;
|
|
7029
7595
|
const group = createGroupFromSerializedState(data);
|
|
7030
|
-
this.addPopoutGroup(
|
|
7596
|
+
this.addPopoutGroup((_c = (gridReferenceGroup
|
|
7597
|
+
? this.getPanel(gridReferenceGroup)
|
|
7598
|
+
: undefined)) !== null && _c !== void 0 ? _c : group, {
|
|
7031
7599
|
skipRemoveGroup: true,
|
|
7032
7600
|
position: position !== null && position !== void 0 ? position : undefined,
|
|
7601
|
+
overridePopoutGroup: gridReferenceGroup
|
|
7602
|
+
? group
|
|
7603
|
+
: undefined,
|
|
7033
7604
|
});
|
|
7034
7605
|
}
|
|
7035
7606
|
for (const floatingGroup of this._floatingGroups) {
|
|
@@ -7076,12 +7647,13 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
7076
7647
|
*/
|
|
7077
7648
|
throw err;
|
|
7078
7649
|
}
|
|
7650
|
+
this.updateWatermark();
|
|
7079
7651
|
this._onDidLayoutFromJSON.fire();
|
|
7080
7652
|
}
|
|
7081
7653
|
clear() {
|
|
7082
7654
|
const groups = Array.from(this._groups.values()).map((_) => _.value);
|
|
7083
7655
|
const hasActiveGroup = !!this.activeGroup;
|
|
7084
|
-
|
|
7656
|
+
!!this.activePanel;
|
|
7085
7657
|
for (const group of groups) {
|
|
7086
7658
|
// remove the group will automatically remove the panels
|
|
7087
7659
|
this.removeGroup(group, { skipActive: true });
|
|
@@ -7089,9 +7661,6 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
7089
7661
|
if (hasActiveGroup) {
|
|
7090
7662
|
this.doSetGroupAndPanelActive(undefined);
|
|
7091
7663
|
}
|
|
7092
|
-
if (hasActivePanel) {
|
|
7093
|
-
this._onDidActivePanelChange.fire(undefined);
|
|
7094
|
-
}
|
|
7095
7664
|
this.gridview.clear();
|
|
7096
7665
|
}
|
|
7097
7666
|
closeAllGroups() {
|
|
@@ -7132,6 +7701,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
7132
7701
|
const group = this.orthogonalize(directionToPosition(options.position.direction));
|
|
7133
7702
|
const panel = this.createPanel(options, group);
|
|
7134
7703
|
group.model.openPanel(panel);
|
|
7704
|
+
this.doSetGroupAndPanelActive(group);
|
|
7135
7705
|
return panel;
|
|
7136
7706
|
}
|
|
7137
7707
|
}
|
|
@@ -7143,6 +7713,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
7143
7713
|
const target = toTarget(((_b = options.position) === null || _b === void 0 ? void 0 : _b.direction) || 'within');
|
|
7144
7714
|
if (options.floating) {
|
|
7145
7715
|
const group = this.createGroup();
|
|
7716
|
+
this._onDidAddGroup.fire(group);
|
|
7146
7717
|
const o = typeof options.floating === 'object' &&
|
|
7147
7718
|
options.floating !== null
|
|
7148
7719
|
? options.floating
|
|
@@ -7150,16 +7721,16 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
7150
7721
|
this.addFloatingGroup(group, o, {
|
|
7151
7722
|
inDragMode: false,
|
|
7152
7723
|
skipRemoveGroup: true,
|
|
7724
|
+
skipActiveGroup: true,
|
|
7153
7725
|
});
|
|
7154
|
-
this._onDidAddGroup.fire(group);
|
|
7155
7726
|
panel = this.createPanel(options, group);
|
|
7156
7727
|
group.model.openPanel(panel);
|
|
7157
|
-
this.doSetGroupAndPanelActive(group);
|
|
7158
7728
|
}
|
|
7159
|
-
else if (referenceGroup.api.location === 'floating' ||
|
|
7729
|
+
else if (referenceGroup.api.location.type === 'floating' ||
|
|
7160
7730
|
target === 'center') {
|
|
7161
7731
|
panel = this.createPanel(options, referenceGroup);
|
|
7162
7732
|
referenceGroup.model.openPanel(panel);
|
|
7733
|
+
this.doSetGroupAndPanelActive(referenceGroup);
|
|
7163
7734
|
}
|
|
7164
7735
|
else {
|
|
7165
7736
|
const location = getGridLocation(referenceGroup.element);
|
|
@@ -7167,10 +7738,12 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
7167
7738
|
const group = this.createGroupAtLocation(relativeLocation);
|
|
7168
7739
|
panel = this.createPanel(options, group);
|
|
7169
7740
|
group.model.openPanel(panel);
|
|
7741
|
+
this.doSetGroupAndPanelActive(group);
|
|
7170
7742
|
}
|
|
7171
7743
|
}
|
|
7172
7744
|
else if (options.floating) {
|
|
7173
7745
|
const group = this.createGroup();
|
|
7746
|
+
this._onDidAddGroup.fire(group);
|
|
7174
7747
|
const o = typeof options.floating === 'object' &&
|
|
7175
7748
|
options.floating !== null
|
|
7176
7749
|
? options.floating
|
|
@@ -7178,16 +7751,16 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
7178
7751
|
this.addFloatingGroup(group, o, {
|
|
7179
7752
|
inDragMode: false,
|
|
7180
7753
|
skipRemoveGroup: true,
|
|
7754
|
+
skipActiveGroup: true,
|
|
7181
7755
|
});
|
|
7182
|
-
this._onDidAddGroup.fire(group);
|
|
7183
7756
|
panel = this.createPanel(options, group);
|
|
7184
7757
|
group.model.openPanel(panel);
|
|
7185
|
-
this.doSetGroupAndPanelActive(group);
|
|
7186
7758
|
}
|
|
7187
7759
|
else {
|
|
7188
7760
|
const group = this.createGroupAtLocation();
|
|
7189
7761
|
panel = this.createPanel(options, group);
|
|
7190
7762
|
group.model.openPanel(panel);
|
|
7763
|
+
this.doSetGroupAndPanelActive(group);
|
|
7191
7764
|
}
|
|
7192
7765
|
return panel;
|
|
7193
7766
|
}
|
|
@@ -7199,13 +7772,15 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
7199
7772
|
if (!group) {
|
|
7200
7773
|
throw new Error(`cannot remove panel ${panel.id}. it's missing a group.`);
|
|
7201
7774
|
}
|
|
7202
|
-
group.model.removePanel(panel
|
|
7775
|
+
group.model.removePanel(panel, {
|
|
7776
|
+
skipSetActiveGroup: options.skipSetActiveGroup,
|
|
7777
|
+
});
|
|
7203
7778
|
if (!options.skipDispose) {
|
|
7204
|
-
|
|
7779
|
+
panel.group.model.renderContainer.detatch(panel);
|
|
7205
7780
|
panel.dispose();
|
|
7206
7781
|
}
|
|
7207
7782
|
if (group.size === 0 && options.removeEmptyGroup) {
|
|
7208
|
-
this.removeGroup(group);
|
|
7783
|
+
this.removeGroup(group, { skipActive: options.skipSetActiveGroup });
|
|
7209
7784
|
}
|
|
7210
7785
|
}
|
|
7211
7786
|
createWatermarkComponent() {
|
|
@@ -7218,7 +7793,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
7218
7793
|
}
|
|
7219
7794
|
updateWatermark() {
|
|
7220
7795
|
var _a, _b;
|
|
7221
|
-
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) {
|
|
7222
7797
|
if (!this.watermark) {
|
|
7223
7798
|
this.watermark = this.createWatermarkComponent();
|
|
7224
7799
|
this.watermark.init({
|
|
@@ -7264,36 +7839,42 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
7264
7839
|
}
|
|
7265
7840
|
else {
|
|
7266
7841
|
const group = this.orthogonalize(directionToPosition(options.direction));
|
|
7842
|
+
if (!options.skipSetActive) {
|
|
7843
|
+
this.doSetGroupAndPanelActive(group);
|
|
7844
|
+
}
|
|
7267
7845
|
return group;
|
|
7268
7846
|
}
|
|
7269
7847
|
const target = toTarget(options.direction || 'within');
|
|
7270
7848
|
const location = getGridLocation(referenceGroup.element);
|
|
7271
7849
|
const relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);
|
|
7272
7850
|
this.doAddGroup(group, relativeLocation);
|
|
7851
|
+
if (!options.skipSetActive) {
|
|
7852
|
+
this.doSetGroupAndPanelActive(group);
|
|
7853
|
+
}
|
|
7273
7854
|
return group;
|
|
7274
7855
|
}
|
|
7275
7856
|
else {
|
|
7276
7857
|
this.doAddGroup(group);
|
|
7858
|
+
this.doSetGroupAndPanelActive(group);
|
|
7277
7859
|
return group;
|
|
7278
7860
|
}
|
|
7279
7861
|
}
|
|
7280
7862
|
removeGroup(group, options) {
|
|
7863
|
+
this.doRemoveGroup(group, options);
|
|
7864
|
+
}
|
|
7865
|
+
doRemoveGroup(group, options) {
|
|
7281
7866
|
var _a;
|
|
7282
7867
|
const panels = [...group.panels]; // reassign since group panels will mutate
|
|
7283
|
-
|
|
7284
|
-
|
|
7285
|
-
|
|
7286
|
-
|
|
7287
|
-
|
|
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
|
+
}
|
|
7288
7875
|
}
|
|
7289
7876
|
const activePanel = this.activePanel;
|
|
7290
|
-
|
|
7291
|
-
if (this.activePanel !== activePanel) {
|
|
7292
|
-
this._onDidActivePanelChange.fire(this.activePanel);
|
|
7293
|
-
}
|
|
7294
|
-
}
|
|
7295
|
-
doRemoveGroup(group, options) {
|
|
7296
|
-
if (group.api.location === 'floating') {
|
|
7877
|
+
if (group.api.location.type === 'floating') {
|
|
7297
7878
|
const floatingGroup = this._floatingGroups.find((_) => _.group === group);
|
|
7298
7879
|
if (floatingGroup) {
|
|
7299
7880
|
if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {
|
|
@@ -7305,60 +7886,124 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
7305
7886
|
floatingGroup.dispose();
|
|
7306
7887
|
if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {
|
|
7307
7888
|
const groups = Array.from(this._groups.values());
|
|
7308
|
-
this.
|
|
7889
|
+
this.doSetGroupAndPanelActive(groups.length > 0 ? groups[0].value : undefined);
|
|
7309
7890
|
}
|
|
7310
7891
|
return floatingGroup.group;
|
|
7311
7892
|
}
|
|
7312
7893
|
throw new Error('failed to find floating group');
|
|
7313
7894
|
}
|
|
7314
|
-
if (group.api.location === 'popout') {
|
|
7315
|
-
const selectedGroup = this._popoutGroups.find((_) => _.
|
|
7895
|
+
if (group.api.location.type === 'popout') {
|
|
7896
|
+
const selectedGroup = this._popoutGroups.find((_) => _.popoutGroup === group);
|
|
7316
7897
|
if (selectedGroup) {
|
|
7317
7898
|
if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {
|
|
7318
|
-
|
|
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();
|
|
7319
7908
|
this._groups.delete(group.id);
|
|
7320
7909
|
this._onDidRemoveGroup.fire(group);
|
|
7321
7910
|
}
|
|
7322
|
-
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
|
+
}
|
|
7323
7916
|
if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {
|
|
7324
7917
|
const groups = Array.from(this._groups.values());
|
|
7325
|
-
this.
|
|
7918
|
+
this.doSetGroupAndPanelActive(groups.length > 0 ? groups[0].value : undefined);
|
|
7326
7919
|
}
|
|
7327
|
-
|
|
7920
|
+
this.updateWatermark();
|
|
7921
|
+
return selectedGroup.popoutGroup;
|
|
7328
7922
|
}
|
|
7329
7923
|
throw new Error('failed to find popout group');
|
|
7330
7924
|
}
|
|
7331
|
-
|
|
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;
|
|
7332
7932
|
}
|
|
7333
|
-
|
|
7334
|
-
|
|
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;
|
|
7335
7950
|
const sourceGroup = sourceGroupId
|
|
7336
7951
|
? (_a = this._groups.get(sourceGroupId)) === null || _a === void 0 ? void 0 : _a.value
|
|
7337
7952
|
: undefined;
|
|
7953
|
+
if (!sourceGroup) {
|
|
7954
|
+
throw new Error(`Failed to find group id ${sourceGroupId}`);
|
|
7955
|
+
}
|
|
7338
7956
|
if (sourceItemId === undefined) {
|
|
7339
|
-
|
|
7340
|
-
|
|
7341
|
-
|
|
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
|
+
});
|
|
7342
7967
|
return;
|
|
7343
7968
|
}
|
|
7344
7969
|
if (!destinationTarget || destinationTarget === 'center') {
|
|
7345
|
-
|
|
7346
|
-
|
|
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) {
|
|
7347
7978
|
throw new Error(`No panel with id ${sourceItemId}`);
|
|
7348
7979
|
}
|
|
7349
|
-
if (
|
|
7350
|
-
|
|
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 });
|
|
7351
7983
|
}
|
|
7352
|
-
destinationGroup.model.openPanel(
|
|
7984
|
+
this.movingLock(() => destinationGroup.model.openPanel(removedPanel, {
|
|
7353
7985
|
index: destinationIndex,
|
|
7986
|
+
skipSetGroupActive: true,
|
|
7987
|
+
}));
|
|
7988
|
+
this.doSetGroupAndPanelActive(destinationGroup);
|
|
7989
|
+
this._onDidMovePanel.fire({
|
|
7990
|
+
panel: removedPanel,
|
|
7354
7991
|
});
|
|
7355
7992
|
}
|
|
7356
7993
|
else {
|
|
7994
|
+
/**
|
|
7995
|
+
* Dropping a panel to the extremities of a group which will place that panel
|
|
7996
|
+
* into an adjacent group
|
|
7997
|
+
*/
|
|
7357
7998
|
const referenceLocation = getGridLocation(destinationGroup.element);
|
|
7358
7999
|
const targetLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, destinationTarget);
|
|
7359
|
-
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
|
+
*/
|
|
7360
8005
|
const [targetParentLocation, to] = tail(targetLocation);
|
|
7361
|
-
if (sourceGroup.api.location === 'grid') {
|
|
8006
|
+
if (sourceGroup.api.location.type === 'grid') {
|
|
7362
8007
|
const sourceLocation = getGridLocation(sourceGroup.element);
|
|
7363
8008
|
const [sourceParentLocation, from] = tail(sourceLocation);
|
|
7364
8009
|
if (sequenceEquals(sourceParentLocation, targetParentLocation)) {
|
|
@@ -7366,78 +8011,123 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
7366
8011
|
// if a group has one tab - we are essentially moving the 'group'
|
|
7367
8012
|
// which is equivalent to swapping two views in this case
|
|
7368
8013
|
this.gridview.moveView(sourceParentLocation, from, to);
|
|
8014
|
+
return;
|
|
7369
8015
|
}
|
|
7370
8016
|
}
|
|
7371
8017
|
// source group will become empty so delete the group
|
|
7372
|
-
const targetGroup = this.doRemoveGroup(sourceGroup, {
|
|
8018
|
+
const targetGroup = this.movingLock(() => this.doRemoveGroup(sourceGroup, {
|
|
7373
8019
|
skipActive: true,
|
|
7374
8020
|
skipDispose: true,
|
|
7375
|
-
});
|
|
8021
|
+
}));
|
|
7376
8022
|
// after deleting the group we need to re-evaulate the ref location
|
|
7377
8023
|
const updatedReferenceLocation = getGridLocation(destinationGroup.element);
|
|
7378
8024
|
const location = getRelativeLocation(this.gridview.orientation, updatedReferenceLocation, destinationTarget);
|
|
7379
|
-
this.doAddGroup(targetGroup, location);
|
|
8025
|
+
this.movingLock(() => this.doAddGroup(targetGroup, location));
|
|
8026
|
+
this.doSetGroupAndPanelActive(targetGroup);
|
|
7380
8027
|
}
|
|
7381
8028
|
else {
|
|
7382
|
-
|
|
7383
|
-
|
|
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) {
|
|
7384
8038
|
throw new Error(`No panel with id ${sourceItemId}`);
|
|
7385
8039
|
}
|
|
7386
8040
|
const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, destinationTarget);
|
|
7387
8041
|
const group = this.createGroupAtLocation(dropLocation);
|
|
7388
|
-
group.model.openPanel(
|
|
8042
|
+
this.movingLock(() => group.model.openPanel(removedPanel, {
|
|
8043
|
+
skipSetGroupActive: true,
|
|
8044
|
+
}));
|
|
8045
|
+
this.doSetGroupAndPanelActive(group);
|
|
7389
8046
|
}
|
|
7390
8047
|
}
|
|
7391
8048
|
}
|
|
7392
|
-
moveGroup(
|
|
7393
|
-
|
|
7394
|
-
|
|
7395
|
-
|
|
7396
|
-
|
|
7397
|
-
|
|
7398
|
-
|
|
7399
|
-
|
|
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(() => {
|
|
7400
8062
|
for (const panel of panels) {
|
|
7401
|
-
|
|
7402
|
-
|
|
8063
|
+
to.model.openPanel(panel, {
|
|
8064
|
+
skipSetActive: panel !== activePanel,
|
|
8065
|
+
skipSetGroupActive: true,
|
|
7403
8066
|
});
|
|
7404
8067
|
}
|
|
7405
|
-
}
|
|
7406
|
-
|
|
7407
|
-
|
|
7408
|
-
|
|
7409
|
-
|
|
7410
|
-
|
|
7411
|
-
|
|
7412
|
-
|
|
7413
|
-
|
|
7414
|
-
|
|
7415
|
-
|
|
7416
|
-
|
|
7417
|
-
|
|
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');
|
|
7418
8083
|
}
|
|
7419
|
-
|
|
7420
|
-
|
|
7421
|
-
|
|
7422
|
-
|
|
7423
|
-
|
|
7424
|
-
|
|
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');
|
|
7425
8091
|
}
|
|
8092
|
+
selectedPopoutGroup.disposable.dispose();
|
|
7426
8093
|
}
|
|
7427
|
-
const referenceLocation = getGridLocation(referenceGroup.element);
|
|
7428
|
-
const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, target);
|
|
7429
|
-
this.gridview.addView(sourceGroup, exports.Sizing.Distribute, dropLocation);
|
|
7430
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
|
+
});
|
|
7431
8101
|
}
|
|
7432
8102
|
}
|
|
7433
|
-
|
|
7434
|
-
|
|
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);
|
|
7435
8113
|
const activePanel = this.activePanel;
|
|
7436
|
-
|
|
7437
|
-
|
|
7438
|
-
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);
|
|
7439
8122
|
}
|
|
7440
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
|
+
}
|
|
7441
8131
|
createGroup(options) {
|
|
7442
8132
|
if (!options) {
|
|
7443
8133
|
options = {};
|
|
@@ -7454,7 +8144,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
7454
8144
|
}
|
|
7455
8145
|
}
|
|
7456
8146
|
const view = new DockviewGroupPanel(this, id, options);
|
|
7457
|
-
view.init({ params: {}, accessor:
|
|
8147
|
+
view.init({ params: {}, accessor: this });
|
|
7458
8148
|
if (!this._groups.has(view.id)) {
|
|
7459
8149
|
const disposable = new CompositeDisposable(view.model.onTabDragStart((event) => {
|
|
7460
8150
|
this._onWillDragPanel.fire(event);
|
|
@@ -7462,20 +8152,48 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
7462
8152
|
this._onWillDragGroup.fire(event);
|
|
7463
8153
|
}), view.model.onMove((event) => {
|
|
7464
8154
|
const { groupId, itemId, target, index } = event;
|
|
7465
|
-
this.moveGroupOrPanel(
|
|
8155
|
+
this.moveGroupOrPanel({
|
|
8156
|
+
from: { groupId: groupId, panelId: itemId },
|
|
8157
|
+
to: {
|
|
8158
|
+
group: view,
|
|
8159
|
+
position: target,
|
|
8160
|
+
index,
|
|
8161
|
+
},
|
|
8162
|
+
});
|
|
7466
8163
|
}), view.model.onDidDrop((event) => {
|
|
7467
|
-
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);
|
|
7468
8173
|
}), view.model.onDidAddPanel((event) => {
|
|
8174
|
+
if (this._moving) {
|
|
8175
|
+
return;
|
|
8176
|
+
}
|
|
7469
8177
|
this._onDidAddPanel.fire(event.panel);
|
|
7470
8178
|
}), view.model.onDidRemovePanel((event) => {
|
|
8179
|
+
if (this._moving) {
|
|
8180
|
+
return;
|
|
8181
|
+
}
|
|
7471
8182
|
this._onDidRemovePanel.fire(event.panel);
|
|
7472
8183
|
}), view.model.onDidActivePanelChange((event) => {
|
|
7473
|
-
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
|
+
}
|
|
7474
8193
|
}));
|
|
7475
8194
|
this._groups.set(view.id, { value: view, disposable });
|
|
7476
8195
|
}
|
|
7477
|
-
// TODO: must be called after the above listeners have been setup,
|
|
7478
|
-
// not an ideal pattern
|
|
8196
|
+
// TODO: must be called after the above listeners have been setup, not an ideal pattern
|
|
7479
8197
|
view.initialize();
|
|
7480
8198
|
return view;
|
|
7481
8199
|
}
|
|
@@ -7528,7 +8246,20 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
7528
8246
|
});
|
|
7529
8247
|
this._onDidLayoutfromJSON = new Emitter();
|
|
7530
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;
|
|
7531
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
|
+
}));
|
|
7532
8263
|
if (!this.options.components) {
|
|
7533
8264
|
this.options.components = {};
|
|
7534
8265
|
}
|
|
@@ -7703,6 +8434,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
7703
8434
|
});
|
|
7704
8435
|
this.registerPanel(view);
|
|
7705
8436
|
this.doAddGroup(view, relativeLocation, options.size);
|
|
8437
|
+
this.doSetGroupActive(view);
|
|
7706
8438
|
return view;
|
|
7707
8439
|
}
|
|
7708
8440
|
registerPanel(panel) {
|
|
@@ -8388,10 +9120,10 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
8388
9120
|
this._onDidChange = new Emitter();
|
|
8389
9121
|
this.onDidChange = this._onDidChange.event;
|
|
8390
9122
|
this.api.initialize(this);
|
|
8391
|
-
this.addDisposables(this._onDidChange, this.api.
|
|
8392
|
-
const {
|
|
9123
|
+
this.addDisposables(this._onDidChange, this.api.onDidHiddenChange((event) => {
|
|
9124
|
+
const { isHidden } = event;
|
|
8393
9125
|
const { accessor } = this._params;
|
|
8394
|
-
accessor.setVisible(this,
|
|
9126
|
+
accessor.setVisible(this, !isHidden);
|
|
8395
9127
|
}), this.api.onActiveChange(() => {
|
|
8396
9128
|
const { accessor } = this._params;
|
|
8397
9129
|
accessor.setActive(this);
|
|
@@ -8457,11 +9189,13 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
8457
9189
|
exports.DockviewApi = DockviewApi;
|
|
8458
9190
|
exports.DockviewComponent = DockviewComponent;
|
|
8459
9191
|
exports.DockviewCompositeDisposable = CompositeDisposable;
|
|
9192
|
+
exports.DockviewDidDropEvent = DockviewDidDropEvent;
|
|
8460
9193
|
exports.DockviewEmitter = Emitter;
|
|
8461
9194
|
exports.DockviewGroupPanel = DockviewGroupPanel;
|
|
8462
9195
|
exports.DockviewGroupPanelModel = DockviewGroupPanelModel;
|
|
8463
9196
|
exports.DockviewMutableDisposable = MutableDisposable;
|
|
8464
9197
|
exports.DockviewPanel = DockviewPanel;
|
|
9198
|
+
exports.DockviewWillDropEvent = DockviewWillDropEvent;
|
|
8465
9199
|
exports.DraggablePaneviewPanel = DraggablePaneviewPanel;
|
|
8466
9200
|
exports.Gridview = Gridview;
|
|
8467
9201
|
exports.GridviewApi = GridviewApi;
|
|
@@ -8480,6 +9214,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
8480
9214
|
exports.SplitviewComponent = SplitviewComponent;
|
|
8481
9215
|
exports.SplitviewPanel = SplitviewPanel;
|
|
8482
9216
|
exports.Tab = Tab;
|
|
9217
|
+
exports.WillShowOverlayLocationEvent = WillShowOverlayLocationEvent;
|
|
8483
9218
|
exports.createComponent = createComponent;
|
|
8484
9219
|
exports.directionToPosition = directionToPosition;
|
|
8485
9220
|
exports.getDirectionOrientation = getDirectionOrientation;
|