dockview 0.0.28 → 1.0.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/LICENSE +21 -21
- package/README.md +60 -0
- package/dist/cjs/actionbar/actionsContainer.d.ts +7 -7
- package/dist/cjs/actionbar/actionsContainer.js +26 -26
- package/dist/cjs/api/component.api.d.ts +131 -131
- package/dist/cjs/api/component.api.js +444 -444
- package/dist/cjs/api/gridviewPanelApi.d.ts +36 -36
- package/dist/cjs/api/gridviewPanelApi.js +46 -46
- package/dist/cjs/api/groupPanelApi.d.ts +44 -44
- package/dist/cjs/api/groupPanelApi.js +94 -94
- package/dist/cjs/api/groupPanelApi.js.map +1 -1
- package/dist/cjs/api/panelApi.d.ts +107 -107
- package/dist/cjs/api/panelApi.js +140 -140
- package/dist/cjs/api/paneviewPanelApi.d.ts +26 -26
- package/dist/cjs/api/paneviewPanelApi.js +56 -56
- package/dist/cjs/api/splitviewPanelApi.d.ts +33 -33
- package/dist/cjs/api/splitviewPanelApi.js +51 -51
- package/dist/cjs/array.d.ts +13 -13
- package/dist/cjs/array.js +77 -77
- package/dist/cjs/dnd/abstractDragHandler.d.ts +11 -11
- package/dist/cjs/dnd/abstractDragHandler.js +115 -115
- package/dist/cjs/dnd/dataTransfer.d.ts +56 -56
- package/dist/cjs/dnd/dataTransfer.js +144 -144
- package/dist/cjs/dnd/dataTransfer.js.map +1 -1
- package/dist/cjs/dnd/dnd.d.ts +40 -40
- package/dist/cjs/dnd/dnd.js +142 -142
- package/dist/cjs/dnd/droptarget.d.ts +37 -37
- package/dist/cjs/dnd/droptarget.js +177 -177
- package/dist/cjs/dockview/components/tab/defaultTab.d.ts +44 -44
- package/dist/cjs/dockview/components/tab/defaultTab.js +186 -186
- package/dist/cjs/dockview/components/watermark/watermark.d.ts +20 -20
- package/dist/cjs/dockview/components/watermark/watermark.js +99 -99
- package/dist/cjs/dockview/defaultGroupPanelView.d.ts +34 -34
- package/dist/cjs/dockview/defaultGroupPanelView.js +83 -83
- package/dist/cjs/dockview/deserializer.d.ts +14 -14
- package/dist/cjs/dockview/deserializer.js +47 -47
- package/dist/cjs/dockview/dockviewComponent.d.ts +121 -121
- package/dist/cjs/dockview/dockviewComponent.js +692 -692
- package/dist/cjs/dockview/dockviewComponent.js.map +1 -1
- package/dist/cjs/dockview/dockviewGroupPanel.d.ts +35 -35
- package/dist/cjs/dockview/dockviewGroupPanel.js +195 -195
- package/dist/cjs/dockview/options.d.ts +79 -79
- package/dist/cjs/dockview/options.js +2 -2
- package/dist/cjs/dom.d.ts +14 -14
- package/dist/cjs/dom.js +182 -182
- package/dist/cjs/events.d.ts +23 -23
- package/dist/cjs/events.js +87 -87
- package/dist/cjs/footnote.d.ts +1 -1
- package/dist/cjs/footnote.js +19 -19
- package/dist/cjs/footnote.js.map +1 -1
- package/dist/cjs/functions.d.ts +1 -1
- package/dist/cjs/functions.js +41 -41
- package/dist/cjs/gridview/baseComponentGridview.d.ts +98 -98
- package/dist/cjs/gridview/baseComponentGridview.js +292 -292
- package/dist/cjs/gridview/baseComponentGridview.js.map +1 -1
- package/dist/cjs/gridview/basePanelView.d.ts +46 -46
- package/dist/cjs/gridview/basePanelView.js +115 -115
- package/dist/cjs/gridview/branchNode.d.ts +46 -46
- package/dist/cjs/gridview/branchNode.js +342 -342
- package/dist/cjs/gridview/gridview.d.ts +123 -123
- package/dist/cjs/gridview/gridview.js +477 -477
- package/dist/cjs/gridview/gridviewComponent.d.ts +88 -88
- package/dist/cjs/gridview/gridviewComponent.js +303 -303
- package/dist/cjs/gridview/gridviewComponent.js.map +1 -1
- package/dist/cjs/gridview/gridviewPanel.d.ts +62 -62
- package/dist/cjs/gridview/gridviewPanel.js +205 -205
- package/dist/cjs/gridview/leafNode.d.ts +31 -31
- package/dist/cjs/gridview/leafNode.js +164 -164
- package/dist/cjs/gridview/options.d.ts +18 -18
- package/dist/cjs/gridview/options.js +2 -2
- package/dist/cjs/gridview/types.d.ts +3 -3
- package/dist/cjs/gridview/types.js +2 -2
- package/dist/cjs/groupview/dnd.d.ts +5 -5
- package/dist/cjs/groupview/dnd.js +9 -9
- package/dist/cjs/groupview/groupPanel.d.ts +41 -41
- package/dist/cjs/groupview/groupPanel.js +2 -2
- package/dist/cjs/groupview/groupview.d.ts +154 -154
- package/dist/cjs/groupview/groupview.js +633 -633
- package/dist/cjs/groupview/groupviewPanel.d.ts +18 -18
- package/dist/cjs/groupview/groupviewPanel.js +83 -83
- package/dist/cjs/groupview/panel/content.d.ts +30 -30
- package/dist/cjs/groupview/panel/content.js +99 -99
- package/dist/cjs/groupview/panel/hostedPanel.d.ts +22 -22
- package/dist/cjs/groupview/panel/hostedPanel.js +56 -56
- package/dist/cjs/groupview/panel/hostedPanel.js.map +1 -1
- package/dist/cjs/groupview/tab.d.ts +44 -44
- package/dist/cjs/groupview/tab.js +182 -182
- package/dist/cjs/groupview/titlebar/tabsContainer.d.ts +66 -66
- package/dist/cjs/groupview/titlebar/tabsContainer.js +260 -260
- package/dist/cjs/groupview/titlebar/tabsContainer.js.map +1 -1
- package/dist/cjs/groupview/types.d.ts +59 -59
- package/dist/cjs/groupview/types.js +2 -2
- package/dist/cjs/hostedContainer.d.ts +23 -23
- package/dist/cjs/hostedContainer.js +73 -73
- package/dist/cjs/hostedContainer.js.map +1 -1
- package/dist/cjs/index.d.ts +29 -26
- package/dist/cjs/index.js +38 -35
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/json.d.ts +1 -1
- package/dist/cjs/json.js +13 -13
- package/dist/cjs/lifecycle.d.ts +22 -22
- package/dist/cjs/lifecycle.js +87 -87
- package/dist/cjs/math.d.ts +4 -4
- package/dist/cjs/math.js +15 -15
- package/dist/cjs/math.js.map +1 -1
- package/dist/cjs/panel/componentFactory.d.ts +8 -8
- package/dist/cjs/panel/componentFactory.js +30 -30
- package/dist/cjs/panel/componentFactory.js.map +1 -1
- package/dist/cjs/panel/types.d.ts +34 -34
- package/dist/cjs/panel/types.js +2 -2
- package/dist/cjs/paneview/defaultPaneviewHeader.d.ts +18 -18
- package/dist/cjs/paneview/defaultPaneviewHeader.js +64 -64
- package/dist/cjs/paneview/draggablePaneviewPanel.d.ts +17 -17
- package/dist/cjs/paneview/draggablePaneviewPanel.js +111 -111
- package/dist/cjs/paneview/options.d.ts +25 -25
- package/dist/cjs/paneview/options.js +2 -2
- package/dist/cjs/paneview/paneview.d.ts +38 -38
- package/dist/cjs/paneview/paneview.js +198 -198
- package/dist/cjs/paneview/paneviewComponent.d.ts +113 -113
- package/dist/cjs/paneview/paneviewComponent.js +338 -338
- package/dist/cjs/paneview/paneviewPanel.d.ts +85 -85
- package/dist/cjs/paneview/paneviewPanel.js +262 -262
- package/dist/cjs/paneview/paneviewPanel.js.map +1 -1
- package/dist/cjs/react/deserializer.d.ts +8 -8
- package/dist/cjs/react/deserializer.js +39 -39
- package/dist/cjs/react/dockview/components.d.ts +11 -11
- package/dist/cjs/react/dockview/components.js +76 -76
- package/dist/cjs/react/dockview/dockview.d.ts +34 -34
- package/dist/cjs/react/dockview/dockview.js +135 -135
- package/dist/cjs/react/dockview/reactContentPart.d.ts +47 -47
- package/dist/cjs/react/dockview/reactContentPart.js +88 -88
- package/dist/cjs/react/dockview/reactHeaderPart.d.ts +24 -24
- package/dist/cjs/react/dockview/reactHeaderPart.js +50 -50
- package/dist/cjs/react/dockview/reactWatermarkPart.d.ts +30 -30
- package/dist/cjs/react/dockview/reactWatermarkPart.js +66 -66
- package/dist/cjs/react/dockview/v2/reactContentRenderer.d.ts +30 -30
- package/dist/cjs/react/dockview/v2/reactContentRenderer.js +90 -90
- package/dist/cjs/react/dockview/v2/reactGroupPanelView.d.ts +7 -7
- package/dist/cjs/react/dockview/v2/reactGroupPanelView.js +34 -34
- package/dist/cjs/react/dockview/v2/webviewContentRenderer.d.ts +18 -18
- package/dist/cjs/react/dockview/v2/webviewContentRenderer.js +45 -45
- package/dist/cjs/react/gridview/gridview.d.ts +24 -24
- package/dist/cjs/react/gridview/gridview.js +96 -96
- package/dist/cjs/react/gridview/view.d.ts +10 -10
- package/dist/cjs/react/gridview/view.js +40 -40
- package/dist/cjs/react/index.d.ts +9 -9
- package/dist/cjs/react/index.js +21 -21
- package/dist/cjs/react/paneview/paneview.d.ts +28 -28
- package/dist/cjs/react/paneview/paneview.js +138 -138
- package/dist/cjs/react/paneview/view.d.ts +20 -20
- package/dist/cjs/react/paneview/view.js +44 -44
- package/dist/cjs/react/react.d.ts +35 -35
- package/dist/cjs/react/react.js +181 -181
- package/dist/cjs/react/react.js.map +1 -1
- package/dist/cjs/react/splitview/splitview.d.ts +24 -24
- package/dist/cjs/react/splitview/splitview.js +93 -93
- package/dist/cjs/react/splitview/view.d.ts +10 -10
- package/dist/cjs/react/splitview/view.js +40 -40
- package/dist/cjs/react/types.d.ts +7 -7
- package/dist/cjs/react/types.js +2 -2
- package/dist/cjs/splitview/core/options.d.ts +26 -26
- package/dist/cjs/splitview/core/options.js +2 -2
- package/dist/cjs/splitview/core/splitview.d.ts +124 -124
- package/dist/cjs/splitview/core/splitview.js +908 -908
- package/dist/cjs/splitview/core/splitview.js.map +1 -1
- package/dist/cjs/splitview/core/viewItem.d.ts +25 -25
- package/dist/cjs/splitview/core/viewItem.js +124 -124
- package/dist/cjs/splitview/splitviewComponent.d.ts +100 -100
- package/dist/cjs/splitview/splitviewComponent.js +327 -327
- package/dist/cjs/splitview/splitviewComponent.js.map +1 -1
- package/dist/cjs/splitview/splitviewPanel.d.ts +47 -47
- package/dist/cjs/splitview/splitviewPanel.js +178 -178
- package/dist/cjs/types.d.ts +7 -7
- package/dist/cjs/types.js +2 -2
- package/dist/dockview.amd.js +6714 -6711
- package/dist/dockview.amd.min.js +3 -3
- package/dist/dockview.amd.min.noStyle.js +3 -3
- package/dist/dockview.amd.noStyle.js +6706 -6703
- package/dist/dockview.cjs.js +6708 -6705
- package/dist/dockview.esm.js +6706 -6706
- package/dist/dockview.esm.min.js +3 -3
- package/dist/dockview.js +6714 -6711
- package/dist/dockview.min.js +3 -3
- package/dist/dockview.min.noStyle.js +3 -3
- package/dist/dockview.noStyle.js +6706 -6703
- package/dist/esm/actionbar/actionsContainer.d.ts +7 -7
- package/dist/esm/actionbar/actionsContainer.js +17 -17
- package/dist/esm/api/component.api.d.ts +131 -131
- package/dist/esm/api/component.api.js +287 -287
- package/dist/esm/api/gridviewPanelApi.d.ts +36 -36
- package/dist/esm/api/gridviewPanelApi.js +24 -24
- package/dist/esm/api/groupPanelApi.d.ts +44 -44
- package/dist/esm/api/groupPanelApi.js +52 -52
- package/dist/esm/api/panelApi.d.ts +107 -107
- package/dist/esm/api/panelApi.js +98 -98
- package/dist/esm/api/paneviewPanelApi.d.ts +26 -26
- package/dist/esm/api/paneviewPanelApi.js +26 -26
- package/dist/esm/api/splitviewPanelApi.d.ts +33 -33
- package/dist/esm/api/splitviewPanelApi.js +29 -29
- package/dist/esm/array.d.ts +13 -13
- package/dist/esm/array.js +67 -67
- package/dist/esm/dnd/abstractDragHandler.d.ts +11 -11
- package/dist/esm/dnd/abstractDragHandler.js +37 -37
- package/dist/esm/dnd/dataTransfer.d.ts +56 -56
- package/dist/esm/dnd/dataTransfer.js +109 -109
- package/dist/esm/dnd/dnd.d.ts +40 -40
- package/dist/esm/dnd/dnd.js +109 -109
- package/dist/esm/dnd/droptarget.d.ts +37 -37
- package/dist/esm/dnd/droptarget.js +143 -143
- package/dist/esm/dockview/components/tab/defaultTab.d.ts +44 -44
- package/dist/esm/dockview/components/tab/defaultTab.js +130 -130
- package/dist/esm/dockview/components/watermark/watermark.d.ts +20 -20
- package/dist/esm/dockview/components/watermark/watermark.js +68 -68
- package/dist/esm/dockview/defaultGroupPanelView.d.ts +34 -34
- package/dist/esm/dockview/defaultGroupPanelView.js +55 -55
- package/dist/esm/dockview/deserializer.d.ts +14 -14
- package/dist/esm/dockview/deserializer.js +20 -20
- package/dist/esm/dockview/dockviewComponent.d.ts +121 -121
- package/dist/esm/dockview/dockviewComponent.js +533 -533
- package/dist/esm/dockview/dockviewGroupPanel.d.ts +35 -35
- package/dist/esm/dockview/dockviewGroupPanel.js +145 -145
- package/dist/esm/dockview/options.d.ts +79 -79
- package/dist/esm/dockview/options.js +1 -1
- package/dist/esm/dom.d.ts +14 -14
- package/dist/esm/dom.js +113 -113
- package/dist/esm/events.d.ts +23 -23
- package/dist/esm/events.js +71 -71
- package/dist/esm/footnote.d.ts +1 -1
- package/dist/esm/footnote.js +19 -19
- package/dist/esm/functions.d.ts +1 -1
- package/dist/esm/functions.js +8 -8
- package/dist/esm/gridview/baseComponentGridview.d.ts +98 -98
- package/dist/esm/gridview/baseComponentGridview.js +224 -224
- package/dist/esm/gridview/basePanelView.d.ts +46 -46
- package/dist/esm/gridview/basePanelView.js +70 -70
- package/dist/esm/gridview/branchNode.d.ts +46 -46
- package/dist/esm/gridview/branchNode.js +218 -218
- package/dist/esm/gridview/gridview.d.ts +123 -123
- package/dist/esm/gridview/gridview.js +396 -396
- package/dist/esm/gridview/gridviewComponent.d.ts +88 -88
- package/dist/esm/gridview/gridviewComponent.js +238 -238
- package/dist/esm/gridview/gridviewPanel.d.ts +62 -62
- package/dist/esm/gridview/gridviewPanel.js +141 -141
- package/dist/esm/gridview/leafNode.d.ts +31 -31
- package/dist/esm/gridview/leafNode.js +97 -97
- package/dist/esm/gridview/options.d.ts +18 -18
- package/dist/esm/gridview/options.js +1 -1
- package/dist/esm/gridview/types.d.ts +3 -3
- package/dist/esm/gridview/types.js +1 -1
- package/dist/esm/groupview/dnd.d.ts +5 -5
- package/dist/esm/groupview/dnd.js +6 -6
- package/dist/esm/groupview/groupPanel.d.ts +41 -41
- package/dist/esm/groupview/groupPanel.js +1 -1
- package/dist/esm/groupview/groupview.d.ts +154 -154
- package/dist/esm/groupview/groupview.js +448 -448
- package/dist/esm/groupview/groupviewPanel.d.ts +18 -18
- package/dist/esm/groupview/groupviewPanel.js +41 -41
- package/dist/esm/groupview/panel/content.d.ts +30 -30
- package/dist/esm/groupview/panel/content.js +72 -72
- package/dist/esm/groupview/panel/hostedPanel.d.ts +22 -22
- package/dist/esm/groupview/panel/hostedPanel.js +43 -43
- package/dist/esm/groupview/tab.d.ts +44 -44
- package/dist/esm/groupview/tab.js +101 -101
- package/dist/esm/groupview/titlebar/tabsContainer.d.ts +66 -66
- package/dist/esm/groupview/titlebar/tabsContainer.js +185 -185
- package/dist/esm/groupview/types.d.ts +59 -59
- package/dist/esm/groupview/types.js +1 -1
- package/dist/esm/hostedContainer.d.ts +23 -23
- package/dist/esm/hostedContainer.js +63 -63
- package/dist/esm/index.d.ts +29 -26
- package/dist/esm/index.js +24 -21
- package/dist/esm/json.d.ts +1 -1
- package/dist/esm/json.js +9 -9
- package/dist/esm/lifecycle.d.ts +22 -22
- package/dist/esm/lifecycle.js +38 -38
- package/dist/esm/math.d.ts +4 -4
- package/dist/esm/math.js +10 -10
- package/dist/esm/panel/componentFactory.d.ts +8 -8
- package/dist/esm/panel/componentFactory.js +24 -24
- package/dist/esm/panel/types.d.ts +34 -34
- package/dist/esm/panel/types.js +1 -1
- package/dist/esm/paneview/defaultPaneviewHeader.d.ts +18 -18
- package/dist/esm/paneview/defaultPaneviewHeader.js +37 -37
- package/dist/esm/paneview/draggablePaneviewPanel.d.ts +17 -17
- package/dist/esm/paneview/draggablePaneviewPanel.js +72 -72
- package/dist/esm/paneview/options.d.ts +25 -25
- package/dist/esm/paneview/options.js +1 -1
- package/dist/esm/paneview/paneview.d.ts +38 -38
- package/dist/esm/paneview/paneview.js +144 -144
- package/dist/esm/paneview/paneviewComponent.d.ts +113 -113
- package/dist/esm/paneview/paneviewComponent.js +247 -247
- package/dist/esm/paneview/paneviewPanel.d.ts +85 -85
- package/dist/esm/paneview/paneviewPanel.js +183 -183
- package/dist/esm/react/deserializer.d.ts +8 -8
- package/dist/esm/react/deserializer.js +34 -34
- package/dist/esm/react/dockview/components.d.ts +11 -11
- package/dist/esm/react/dockview/components.js +54 -54
- package/dist/esm/react/dockview/dockview.d.ts +34 -34
- package/dist/esm/react/dockview/dockview.js +97 -97
- package/dist/esm/react/dockview/reactContentPart.d.ts +47 -47
- package/dist/esm/react/dockview/reactContentPart.js +75 -75
- package/dist/esm/react/dockview/reactHeaderPart.d.ts +24 -24
- package/dist/esm/react/dockview/reactHeaderPart.js +41 -41
- package/dist/esm/react/dockview/reactWatermarkPart.d.ts +30 -30
- package/dist/esm/react/dockview/reactWatermarkPart.js +56 -56
- package/dist/esm/react/dockview/v2/reactContentRenderer.d.ts +30 -30
- package/dist/esm/react/dockview/v2/reactContentRenderer.js +72 -72
- package/dist/esm/react/dockview/v2/reactGroupPanelView.d.ts +7 -7
- package/dist/esm/react/dockview/v2/reactGroupPanelView.js +12 -12
- package/dist/esm/react/dockview/v2/webviewContentRenderer.d.ts +18 -18
- package/dist/esm/react/dockview/v2/webviewContentRenderer.js +36 -36
- package/dist/esm/react/gridview/gridview.d.ts +24 -24
- package/dist/esm/react/gridview/gridview.js +58 -58
- package/dist/esm/react/gridview/view.d.ts +10 -10
- package/dist/esm/react/gridview/view.js +18 -18
- package/dist/esm/react/index.d.ts +9 -9
- package/dist/esm/react/index.js +9 -9
- package/dist/esm/react/paneview/paneview.d.ts +28 -28
- package/dist/esm/react/paneview/paneview.js +87 -87
- package/dist/esm/react/paneview/view.d.ts +20 -20
- package/dist/esm/react/paneview/view.js +35 -35
- package/dist/esm/react/react.d.ts +35 -35
- package/dist/esm/react/react.js +116 -116
- package/dist/esm/react/splitview/splitview.d.ts +24 -24
- package/dist/esm/react/splitview/splitview.js +55 -55
- package/dist/esm/react/splitview/view.d.ts +10 -10
- package/dist/esm/react/splitview/view.js +18 -18
- package/dist/esm/react/types.d.ts +7 -7
- package/dist/esm/react/types.js +1 -1
- package/dist/esm/splitview/core/options.d.ts +26 -26
- package/dist/esm/splitview/core/options.js +1 -1
- package/dist/esm/splitview/core/splitview.d.ts +124 -124
- package/dist/esm/splitview/core/splitview.js +689 -689
- package/dist/esm/splitview/core/viewItem.d.ts +25 -25
- package/dist/esm/splitview/core/viewItem.js +79 -79
- package/dist/esm/splitview/splitviewComponent.d.ts +100 -100
- package/dist/esm/splitview/splitviewComponent.js +241 -241
- package/dist/esm/splitview/splitviewPanel.d.ts +47 -47
- package/dist/esm/splitview/splitviewPanel.js +107 -107
- package/dist/esm/types.d.ts +7 -7
- package/dist/esm/types.js +1 -1
- package/package.json +75 -75
|
@@ -1,98 +1,98 @@
|
|
|
1
|
-
import { Emitter, Event } from '../events';
|
|
2
|
-
import { Gridview, IGridView } from './gridview';
|
|
3
|
-
import { Position } from '../dnd/droptarget';
|
|
4
|
-
import { CompositeDisposable, IValueDisposable } from '../lifecycle';
|
|
5
|
-
import { ISplitviewStyles, Orientation } from '../splitview/core/splitview';
|
|
6
|
-
import { IPanel } from '../panel/types';
|
|
7
|
-
import { MovementOptions2 } from '../dockview/options';
|
|
8
|
-
import { IGroupPanel } from '../groupview/groupPanel';
|
|
9
|
-
export declare enum GroupChangeKind {
|
|
10
|
-
ADD_PANEL = "ADD_PANEL",
|
|
11
|
-
REMOVE_PANEL = "REMOVE_PANEL",
|
|
12
|
-
PANEL_ACTIVE = "PANEL_ACTIVE",
|
|
13
|
-
GROUP_ACTIVE = "GROUP_ACTIVE",
|
|
14
|
-
ADD_GROUP = "ADD_GROUP",
|
|
15
|
-
REMOVE_GROUP = "REMOVE_GROUP",
|
|
16
|
-
LAYOUT_FROM_JSON = "LAYOUT_FROM_JSON",
|
|
17
|
-
LAYOUT = "LAYOUT"
|
|
18
|
-
}
|
|
19
|
-
export interface GroupChangeEvent {
|
|
20
|
-
readonly kind: GroupChangeKind;
|
|
21
|
-
readonly panel?: IGroupPanel;
|
|
22
|
-
}
|
|
23
|
-
export declare type Direction = 'left' | 'right' | 'above' | 'below' | 'within';
|
|
24
|
-
export declare function toTarget(direction: Direction): Position;
|
|
25
|
-
export interface BaseGridOptions {
|
|
26
|
-
readonly proportionalLayout?: boolean;
|
|
27
|
-
readonly orientation: Orientation;
|
|
28
|
-
readonly styles?: ISplitviewStyles;
|
|
29
|
-
}
|
|
30
|
-
export interface IGridPanelView extends IGridView, IPanel {
|
|
31
|
-
setActive(isActive: boolean): void;
|
|
32
|
-
readonly isActive: boolean;
|
|
33
|
-
}
|
|
34
|
-
export interface IBaseGrid<T extends IGridPanelView> {
|
|
35
|
-
readonly element: HTMLElement;
|
|
36
|
-
readonly id: string;
|
|
37
|
-
readonly width: number;
|
|
38
|
-
readonly height: number;
|
|
39
|
-
readonly minimumHeight: number;
|
|
40
|
-
readonly maximumHeight: number;
|
|
41
|
-
readonly minimumWidth: number;
|
|
42
|
-
readonly maximumWidth: number;
|
|
43
|
-
readonly activeGroup: T | undefined;
|
|
44
|
-
readonly size: number;
|
|
45
|
-
readonly groups: T[];
|
|
46
|
-
readonly onGridEvent: Event<GroupChangeEvent>;
|
|
47
|
-
readonly onDidLayoutChange: Event<void>;
|
|
48
|
-
getPanel(id: string): T | undefined;
|
|
49
|
-
toJSON(): object;
|
|
50
|
-
fromJSON(data: any): void;
|
|
51
|
-
layout(width: number, height: number, force?: boolean): void;
|
|
52
|
-
resizeToFit(): void;
|
|
53
|
-
setVisible(panel: T, visible: boolean): void;
|
|
54
|
-
isVisible(panel: T): boolean;
|
|
55
|
-
}
|
|
56
|
-
export declare abstract class BaseGrid<T extends IGridPanelView> extends CompositeDisposable implements IBaseGrid<T> {
|
|
57
|
-
private readonly _element;
|
|
58
|
-
private readonly _id;
|
|
59
|
-
protected readonly _groups: Map<string, IValueDisposable<T>>;
|
|
60
|
-
protected readonly gridview: Gridview;
|
|
61
|
-
protected _activeGroup: T | undefined;
|
|
62
|
-
protected readonly _onGridEvent: Emitter<GroupChangeEvent>;
|
|
63
|
-
readonly onGridEvent: Event<GroupChangeEvent>;
|
|
64
|
-
private _onDidLayoutChange;
|
|
65
|
-
readonly onDidLayoutChange: Event<void>;
|
|
66
|
-
get id(): string;
|
|
67
|
-
get element(): HTMLElement;
|
|
68
|
-
get size(): number;
|
|
69
|
-
get groups(): T[];
|
|
70
|
-
get width(): number;
|
|
71
|
-
get height(): number;
|
|
72
|
-
get minimumHeight(): number;
|
|
73
|
-
get maximumHeight(): number;
|
|
74
|
-
get minimumWidth(): number;
|
|
75
|
-
get maximumWidth(): number;
|
|
76
|
-
get activeGroup(): T | undefined;
|
|
77
|
-
constructor(_element: HTMLElement, options: BaseGridOptions);
|
|
78
|
-
abstract toJSON(): object;
|
|
79
|
-
abstract fromJSON(data: any): void;
|
|
80
|
-
setVisible(panel: T, visible: boolean): void;
|
|
81
|
-
isVisible(panel: T): boolean;
|
|
82
|
-
protected doAddGroup(group: T, location?: number[], size?: number): void;
|
|
83
|
-
protected doRemoveGroup(group: T, options?: {
|
|
84
|
-
skipActive?: boolean;
|
|
85
|
-
skipDispose?: boolean;
|
|
86
|
-
}): T;
|
|
87
|
-
getPanel(id: string): T | undefined;
|
|
88
|
-
doSetGroupActive(group: T | undefined, skipFocus?: boolean): void;
|
|
89
|
-
removeGroup(group: T): void;
|
|
90
|
-
moveToNext(options?: MovementOptions2): void;
|
|
91
|
-
moveToPrevious(options?: MovementOptions2): void;
|
|
92
|
-
layout(width: number, height: number, forceResize?: boolean): void;
|
|
93
|
-
/**
|
|
94
|
-
* Resize the layout to fit the parent container
|
|
95
|
-
*/
|
|
96
|
-
resizeToFit(): void;
|
|
97
|
-
dispose(): void;
|
|
98
|
-
}
|
|
1
|
+
import { Emitter, Event } from '../events';
|
|
2
|
+
import { Gridview, IGridView } from './gridview';
|
|
3
|
+
import { Position } from '../dnd/droptarget';
|
|
4
|
+
import { CompositeDisposable, IValueDisposable } from '../lifecycle';
|
|
5
|
+
import { ISplitviewStyles, Orientation } from '../splitview/core/splitview';
|
|
6
|
+
import { IPanel } from '../panel/types';
|
|
7
|
+
import { MovementOptions2 } from '../dockview/options';
|
|
8
|
+
import { IGroupPanel } from '../groupview/groupPanel';
|
|
9
|
+
export declare enum GroupChangeKind {
|
|
10
|
+
ADD_PANEL = "ADD_PANEL",
|
|
11
|
+
REMOVE_PANEL = "REMOVE_PANEL",
|
|
12
|
+
PANEL_ACTIVE = "PANEL_ACTIVE",
|
|
13
|
+
GROUP_ACTIVE = "GROUP_ACTIVE",
|
|
14
|
+
ADD_GROUP = "ADD_GROUP",
|
|
15
|
+
REMOVE_GROUP = "REMOVE_GROUP",
|
|
16
|
+
LAYOUT_FROM_JSON = "LAYOUT_FROM_JSON",
|
|
17
|
+
LAYOUT = "LAYOUT"
|
|
18
|
+
}
|
|
19
|
+
export interface GroupChangeEvent {
|
|
20
|
+
readonly kind: GroupChangeKind;
|
|
21
|
+
readonly panel?: IGroupPanel;
|
|
22
|
+
}
|
|
23
|
+
export declare type Direction = 'left' | 'right' | 'above' | 'below' | 'within';
|
|
24
|
+
export declare function toTarget(direction: Direction): Position;
|
|
25
|
+
export interface BaseGridOptions {
|
|
26
|
+
readonly proportionalLayout?: boolean;
|
|
27
|
+
readonly orientation: Orientation;
|
|
28
|
+
readonly styles?: ISplitviewStyles;
|
|
29
|
+
}
|
|
30
|
+
export interface IGridPanelView extends IGridView, IPanel {
|
|
31
|
+
setActive(isActive: boolean): void;
|
|
32
|
+
readonly isActive: boolean;
|
|
33
|
+
}
|
|
34
|
+
export interface IBaseGrid<T extends IGridPanelView> {
|
|
35
|
+
readonly element: HTMLElement;
|
|
36
|
+
readonly id: string;
|
|
37
|
+
readonly width: number;
|
|
38
|
+
readonly height: number;
|
|
39
|
+
readonly minimumHeight: number;
|
|
40
|
+
readonly maximumHeight: number;
|
|
41
|
+
readonly minimumWidth: number;
|
|
42
|
+
readonly maximumWidth: number;
|
|
43
|
+
readonly activeGroup: T | undefined;
|
|
44
|
+
readonly size: number;
|
|
45
|
+
readonly groups: T[];
|
|
46
|
+
readonly onGridEvent: Event<GroupChangeEvent>;
|
|
47
|
+
readonly onDidLayoutChange: Event<void>;
|
|
48
|
+
getPanel(id: string): T | undefined;
|
|
49
|
+
toJSON(): object;
|
|
50
|
+
fromJSON(data: any): void;
|
|
51
|
+
layout(width: number, height: number, force?: boolean): void;
|
|
52
|
+
resizeToFit(): void;
|
|
53
|
+
setVisible(panel: T, visible: boolean): void;
|
|
54
|
+
isVisible(panel: T): boolean;
|
|
55
|
+
}
|
|
56
|
+
export declare abstract class BaseGrid<T extends IGridPanelView> extends CompositeDisposable implements IBaseGrid<T> {
|
|
57
|
+
private readonly _element;
|
|
58
|
+
private readonly _id;
|
|
59
|
+
protected readonly _groups: Map<string, IValueDisposable<T>>;
|
|
60
|
+
protected readonly gridview: Gridview;
|
|
61
|
+
protected _activeGroup: T | undefined;
|
|
62
|
+
protected readonly _onGridEvent: Emitter<GroupChangeEvent>;
|
|
63
|
+
readonly onGridEvent: Event<GroupChangeEvent>;
|
|
64
|
+
private _onDidLayoutChange;
|
|
65
|
+
readonly onDidLayoutChange: Event<void>;
|
|
66
|
+
get id(): string;
|
|
67
|
+
get element(): HTMLElement;
|
|
68
|
+
get size(): number;
|
|
69
|
+
get groups(): T[];
|
|
70
|
+
get width(): number;
|
|
71
|
+
get height(): number;
|
|
72
|
+
get minimumHeight(): number;
|
|
73
|
+
get maximumHeight(): number;
|
|
74
|
+
get minimumWidth(): number;
|
|
75
|
+
get maximumWidth(): number;
|
|
76
|
+
get activeGroup(): T | undefined;
|
|
77
|
+
constructor(_element: HTMLElement, options: BaseGridOptions);
|
|
78
|
+
abstract toJSON(): object;
|
|
79
|
+
abstract fromJSON(data: any): void;
|
|
80
|
+
setVisible(panel: T, visible: boolean): void;
|
|
81
|
+
isVisible(panel: T): boolean;
|
|
82
|
+
protected doAddGroup(group: T, location?: number[], size?: number): void;
|
|
83
|
+
protected doRemoveGroup(group: T, options?: {
|
|
84
|
+
skipActive?: boolean;
|
|
85
|
+
skipDispose?: boolean;
|
|
86
|
+
}): T;
|
|
87
|
+
getPanel(id: string): T | undefined;
|
|
88
|
+
doSetGroupActive(group: T | undefined, skipFocus?: boolean): void;
|
|
89
|
+
removeGroup(group: T): void;
|
|
90
|
+
moveToNext(options?: MovementOptions2): void;
|
|
91
|
+
moveToPrevious(options?: MovementOptions2): void;
|
|
92
|
+
layout(width: number, height: number, forceResize?: boolean): void;
|
|
93
|
+
/**
|
|
94
|
+
* Resize the layout to fit the parent container
|
|
95
|
+
*/
|
|
96
|
+
resizeToFit(): void;
|
|
97
|
+
dispose(): void;
|
|
98
|
+
}
|
|
@@ -1,224 +1,224 @@
|
|
|
1
|
-
import { Emitter } from '../events';
|
|
2
|
-
import { getGridLocation, Gridview } from './gridview';
|
|
3
|
-
import { Position } from '../dnd/droptarget';
|
|
4
|
-
import { CompositeDisposable } from '../lifecycle';
|
|
5
|
-
import { sequentialNumberGenerator } from '../math';
|
|
6
|
-
import { Sizing, } from '../splitview/core/splitview';
|
|
7
|
-
export var GroupChangeKind;
|
|
8
|
-
(function (GroupChangeKind) {
|
|
9
|
-
GroupChangeKind["ADD_PANEL"] = "ADD_PANEL";
|
|
10
|
-
GroupChangeKind["REMOVE_PANEL"] = "REMOVE_PANEL";
|
|
11
|
-
GroupChangeKind["PANEL_ACTIVE"] = "PANEL_ACTIVE";
|
|
12
|
-
//
|
|
13
|
-
GroupChangeKind["GROUP_ACTIVE"] = "GROUP_ACTIVE";
|
|
14
|
-
GroupChangeKind["ADD_GROUP"] = "ADD_GROUP";
|
|
15
|
-
GroupChangeKind["REMOVE_GROUP"] = "REMOVE_GROUP";
|
|
16
|
-
//
|
|
17
|
-
GroupChangeKind["LAYOUT_FROM_JSON"] = "LAYOUT_FROM_JSON";
|
|
18
|
-
GroupChangeKind["LAYOUT"] = "LAYOUT";
|
|
19
|
-
})(GroupChangeKind || (GroupChangeKind = {}));
|
|
20
|
-
const nextLayoutId = sequentialNumberGenerator();
|
|
21
|
-
export function toTarget(direction) {
|
|
22
|
-
switch (direction) {
|
|
23
|
-
case 'left':
|
|
24
|
-
return Position.Left;
|
|
25
|
-
case 'right':
|
|
26
|
-
return Position.Right;
|
|
27
|
-
case 'above':
|
|
28
|
-
return Position.Top;
|
|
29
|
-
case 'below':
|
|
30
|
-
return Position.Bottom;
|
|
31
|
-
case 'within':
|
|
32
|
-
default:
|
|
33
|
-
return Position.Center;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
export class BaseGrid extends CompositeDisposable {
|
|
37
|
-
constructor(_element, options) {
|
|
38
|
-
super();
|
|
39
|
-
this._element = _element;
|
|
40
|
-
this._id = nextLayoutId.next();
|
|
41
|
-
this._groups = new Map();
|
|
42
|
-
//
|
|
43
|
-
this._onGridEvent = new Emitter();
|
|
44
|
-
this.onGridEvent = this._onGridEvent.event;
|
|
45
|
-
this._onDidLayoutChange = new Emitter();
|
|
46
|
-
this.onDidLayoutChange = this._onDidLayoutChange.event;
|
|
47
|
-
this.gridview = new Gridview(!!options.proportionalLayout, options.styles, options.orientation);
|
|
48
|
-
this.element.appendChild(this.gridview.element);
|
|
49
|
-
// TODO for some reason this is required before anything will layout correctly
|
|
50
|
-
this.layout(0, 0, true);
|
|
51
|
-
this.addDisposables(this.gridview.onDidChange(() => {
|
|
52
|
-
this._onGridEvent.fire({ kind: GroupChangeKind.LAYOUT });
|
|
53
|
-
}));
|
|
54
|
-
this.addDisposables((() => {
|
|
55
|
-
/**
|
|
56
|
-
* TODO Fix this relatively ugly 'merge and delay'
|
|
57
|
-
*/
|
|
58
|
-
let timer;
|
|
59
|
-
return this.onGridEvent((event) => {
|
|
60
|
-
if ([
|
|
61
|
-
GroupChangeKind.ADD_GROUP,
|
|
62
|
-
GroupChangeKind.REMOVE_GROUP,
|
|
63
|
-
GroupChangeKind.ADD_PANEL,
|
|
64
|
-
GroupChangeKind.REMOVE_PANEL,
|
|
65
|
-
GroupChangeKind.GROUP_ACTIVE,
|
|
66
|
-
GroupChangeKind.PANEL_ACTIVE,
|
|
67
|
-
GroupChangeKind.LAYOUT,
|
|
68
|
-
].includes(event.kind)) {
|
|
69
|
-
if (timer) {
|
|
70
|
-
clearTimeout(timer);
|
|
71
|
-
}
|
|
72
|
-
timer = setTimeout(() => {
|
|
73
|
-
this._onDidLayoutChange.fire();
|
|
74
|
-
clearTimeout(timer);
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
});
|
|
78
|
-
})());
|
|
79
|
-
}
|
|
80
|
-
get id() {
|
|
81
|
-
return this._id;
|
|
82
|
-
}
|
|
83
|
-
get element() {
|
|
84
|
-
return this._element;
|
|
85
|
-
}
|
|
86
|
-
get size() {
|
|
87
|
-
return this._groups.size;
|
|
88
|
-
}
|
|
89
|
-
get groups() {
|
|
90
|
-
return Array.from(this._groups.values()).map((_) => _.value);
|
|
91
|
-
}
|
|
92
|
-
get width() {
|
|
93
|
-
return this.gridview.width;
|
|
94
|
-
}
|
|
95
|
-
get height() {
|
|
96
|
-
return this.gridview.height;
|
|
97
|
-
}
|
|
98
|
-
get minimumHeight() {
|
|
99
|
-
return this.gridview.minimumHeight;
|
|
100
|
-
}
|
|
101
|
-
get maximumHeight() {
|
|
102
|
-
return this.gridview.maximumHeight;
|
|
103
|
-
}
|
|
104
|
-
get minimumWidth() {
|
|
105
|
-
return this.gridview.minimumWidth;
|
|
106
|
-
}
|
|
107
|
-
get maximumWidth() {
|
|
108
|
-
return this.gridview.maximumWidth;
|
|
109
|
-
}
|
|
110
|
-
get activeGroup() {
|
|
111
|
-
return this._activeGroup;
|
|
112
|
-
}
|
|
113
|
-
setVisible(panel, visible) {
|
|
114
|
-
this.gridview.setViewVisible(getGridLocation(panel.element), visible);
|
|
115
|
-
this._onGridEvent.fire({ kind: GroupChangeKind.LAYOUT });
|
|
116
|
-
}
|
|
117
|
-
isVisible(panel) {
|
|
118
|
-
return this.gridview.isViewVisible(getGridLocation(panel.element));
|
|
119
|
-
}
|
|
120
|
-
doAddGroup(group, location = [0], size) {
|
|
121
|
-
this.gridview.addView(group, size !== null && size !== void 0 ? size : Sizing.Distribute, location);
|
|
122
|
-
this._onGridEvent.fire({ kind: GroupChangeKind.ADD_GROUP });
|
|
123
|
-
this.doSetGroupActive(group);
|
|
124
|
-
}
|
|
125
|
-
doRemoveGroup(group, options) {
|
|
126
|
-
if (!this._groups.has(group.id)) {
|
|
127
|
-
throw new Error('invalid operation');
|
|
128
|
-
}
|
|
129
|
-
const item = this._groups.get(group.id);
|
|
130
|
-
const view = this.gridview.remove(group, Sizing.Distribute);
|
|
131
|
-
if (item && !(options === null || options === void 0 ? void 0 : options.skipDispose)) {
|
|
132
|
-
item.disposable.dispose();
|
|
133
|
-
this._groups.delete(group.id);
|
|
134
|
-
}
|
|
135
|
-
this._onGridEvent.fire({ kind: GroupChangeKind.REMOVE_GROUP });
|
|
136
|
-
if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {
|
|
137
|
-
const groups = Array.from(this._groups.values());
|
|
138
|
-
this.doSetGroupActive(groups.length > 0 ? groups[0].value : undefined);
|
|
139
|
-
}
|
|
140
|
-
return view;
|
|
141
|
-
}
|
|
142
|
-
getPanel(id) {
|
|
143
|
-
var _a;
|
|
144
|
-
return (_a = this._groups.get(id)) === null || _a === void 0 ? void 0 : _a.value;
|
|
145
|
-
}
|
|
146
|
-
doSetGroupActive(group, skipFocus) {
|
|
147
|
-
if (this._activeGroup === group) {
|
|
148
|
-
return;
|
|
149
|
-
}
|
|
150
|
-
if (this._activeGroup) {
|
|
151
|
-
this._activeGroup.setActive(false);
|
|
152
|
-
if (!skipFocus) {
|
|
153
|
-
this._activeGroup.focus();
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
if (group) {
|
|
157
|
-
group.setActive(true);
|
|
158
|
-
if (!skipFocus) {
|
|
159
|
-
group.focus();
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
this._activeGroup = group;
|
|
163
|
-
this._onGridEvent.fire({
|
|
164
|
-
kind: GroupChangeKind.GROUP_ACTIVE,
|
|
165
|
-
});
|
|
166
|
-
}
|
|
167
|
-
removeGroup(group) {
|
|
168
|
-
this.doRemoveGroup(group);
|
|
169
|
-
}
|
|
170
|
-
moveToNext(options) {
|
|
171
|
-
var _a;
|
|
172
|
-
if (!options) {
|
|
173
|
-
options = {};
|
|
174
|
-
}
|
|
175
|
-
if (!options.group) {
|
|
176
|
-
if (!this.activeGroup) {
|
|
177
|
-
return;
|
|
178
|
-
}
|
|
179
|
-
options.group = this.activeGroup;
|
|
180
|
-
}
|
|
181
|
-
const location = getGridLocation(options.group.element);
|
|
182
|
-
const next = (_a = this.gridview.next(location)) === null || _a === void 0 ? void 0 : _a.view;
|
|
183
|
-
this.doSetGroupActive(next);
|
|
184
|
-
}
|
|
185
|
-
moveToPrevious(options) {
|
|
186
|
-
var _a;
|
|
187
|
-
if (!options) {
|
|
188
|
-
options = {};
|
|
189
|
-
}
|
|
190
|
-
if (!options.group) {
|
|
191
|
-
if (!this.activeGroup) {
|
|
192
|
-
return;
|
|
193
|
-
}
|
|
194
|
-
options.group = this.activeGroup;
|
|
195
|
-
}
|
|
196
|
-
const location = getGridLocation(options.group.element);
|
|
197
|
-
const next = (_a = this.gridview.previous(location)) === null || _a === void 0 ? void 0 : _a.view;
|
|
198
|
-
this.doSetGroupActive(next);
|
|
199
|
-
}
|
|
200
|
-
layout(width, height, forceResize) {
|
|
201
|
-
const different = forceResize || width !== this.width || height !== this.height;
|
|
202
|
-
if (!different) {
|
|
203
|
-
return;
|
|
204
|
-
}
|
|
205
|
-
this.element.style.height = `${height}px`;
|
|
206
|
-
this.element.style.width = `${width}px`;
|
|
207
|
-
this.gridview.layout(width, height);
|
|
208
|
-
}
|
|
209
|
-
/**
|
|
210
|
-
* Resize the layout to fit the parent container
|
|
211
|
-
*/
|
|
212
|
-
resizeToFit() {
|
|
213
|
-
if (!this.element.parentElement) {
|
|
214
|
-
return;
|
|
215
|
-
}
|
|
216
|
-
const { width, height } = this.element.parentElement.getBoundingClientRect();
|
|
217
|
-
this.layout(width, height);
|
|
218
|
-
}
|
|
219
|
-
dispose() {
|
|
220
|
-
super.dispose();
|
|
221
|
-
this._onGridEvent.dispose();
|
|
222
|
-
this.gridview.dispose();
|
|
223
|
-
}
|
|
224
|
-
}
|
|
1
|
+
import { Emitter } from '../events';
|
|
2
|
+
import { getGridLocation, Gridview } from './gridview';
|
|
3
|
+
import { Position } from '../dnd/droptarget';
|
|
4
|
+
import { CompositeDisposable } from '../lifecycle';
|
|
5
|
+
import { sequentialNumberGenerator } from '../math';
|
|
6
|
+
import { Sizing, } from '../splitview/core/splitview';
|
|
7
|
+
export var GroupChangeKind;
|
|
8
|
+
(function (GroupChangeKind) {
|
|
9
|
+
GroupChangeKind["ADD_PANEL"] = "ADD_PANEL";
|
|
10
|
+
GroupChangeKind["REMOVE_PANEL"] = "REMOVE_PANEL";
|
|
11
|
+
GroupChangeKind["PANEL_ACTIVE"] = "PANEL_ACTIVE";
|
|
12
|
+
//
|
|
13
|
+
GroupChangeKind["GROUP_ACTIVE"] = "GROUP_ACTIVE";
|
|
14
|
+
GroupChangeKind["ADD_GROUP"] = "ADD_GROUP";
|
|
15
|
+
GroupChangeKind["REMOVE_GROUP"] = "REMOVE_GROUP";
|
|
16
|
+
//
|
|
17
|
+
GroupChangeKind["LAYOUT_FROM_JSON"] = "LAYOUT_FROM_JSON";
|
|
18
|
+
GroupChangeKind["LAYOUT"] = "LAYOUT";
|
|
19
|
+
})(GroupChangeKind || (GroupChangeKind = {}));
|
|
20
|
+
const nextLayoutId = sequentialNumberGenerator();
|
|
21
|
+
export function toTarget(direction) {
|
|
22
|
+
switch (direction) {
|
|
23
|
+
case 'left':
|
|
24
|
+
return Position.Left;
|
|
25
|
+
case 'right':
|
|
26
|
+
return Position.Right;
|
|
27
|
+
case 'above':
|
|
28
|
+
return Position.Top;
|
|
29
|
+
case 'below':
|
|
30
|
+
return Position.Bottom;
|
|
31
|
+
case 'within':
|
|
32
|
+
default:
|
|
33
|
+
return Position.Center;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
export class BaseGrid extends CompositeDisposable {
|
|
37
|
+
constructor(_element, options) {
|
|
38
|
+
super();
|
|
39
|
+
this._element = _element;
|
|
40
|
+
this._id = nextLayoutId.next();
|
|
41
|
+
this._groups = new Map();
|
|
42
|
+
//
|
|
43
|
+
this._onGridEvent = new Emitter();
|
|
44
|
+
this.onGridEvent = this._onGridEvent.event;
|
|
45
|
+
this._onDidLayoutChange = new Emitter();
|
|
46
|
+
this.onDidLayoutChange = this._onDidLayoutChange.event;
|
|
47
|
+
this.gridview = new Gridview(!!options.proportionalLayout, options.styles, options.orientation);
|
|
48
|
+
this.element.appendChild(this.gridview.element);
|
|
49
|
+
// TODO for some reason this is required before anything will layout correctly
|
|
50
|
+
this.layout(0, 0, true);
|
|
51
|
+
this.addDisposables(this.gridview.onDidChange(() => {
|
|
52
|
+
this._onGridEvent.fire({ kind: GroupChangeKind.LAYOUT });
|
|
53
|
+
}));
|
|
54
|
+
this.addDisposables((() => {
|
|
55
|
+
/**
|
|
56
|
+
* TODO Fix this relatively ugly 'merge and delay'
|
|
57
|
+
*/
|
|
58
|
+
let timer;
|
|
59
|
+
return this.onGridEvent((event) => {
|
|
60
|
+
if ([
|
|
61
|
+
GroupChangeKind.ADD_GROUP,
|
|
62
|
+
GroupChangeKind.REMOVE_GROUP,
|
|
63
|
+
GroupChangeKind.ADD_PANEL,
|
|
64
|
+
GroupChangeKind.REMOVE_PANEL,
|
|
65
|
+
GroupChangeKind.GROUP_ACTIVE,
|
|
66
|
+
GroupChangeKind.PANEL_ACTIVE,
|
|
67
|
+
GroupChangeKind.LAYOUT,
|
|
68
|
+
].includes(event.kind)) {
|
|
69
|
+
if (timer) {
|
|
70
|
+
clearTimeout(timer);
|
|
71
|
+
}
|
|
72
|
+
timer = setTimeout(() => {
|
|
73
|
+
this._onDidLayoutChange.fire();
|
|
74
|
+
clearTimeout(timer);
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
})());
|
|
79
|
+
}
|
|
80
|
+
get id() {
|
|
81
|
+
return this._id;
|
|
82
|
+
}
|
|
83
|
+
get element() {
|
|
84
|
+
return this._element;
|
|
85
|
+
}
|
|
86
|
+
get size() {
|
|
87
|
+
return this._groups.size;
|
|
88
|
+
}
|
|
89
|
+
get groups() {
|
|
90
|
+
return Array.from(this._groups.values()).map((_) => _.value);
|
|
91
|
+
}
|
|
92
|
+
get width() {
|
|
93
|
+
return this.gridview.width;
|
|
94
|
+
}
|
|
95
|
+
get height() {
|
|
96
|
+
return this.gridview.height;
|
|
97
|
+
}
|
|
98
|
+
get minimumHeight() {
|
|
99
|
+
return this.gridview.minimumHeight;
|
|
100
|
+
}
|
|
101
|
+
get maximumHeight() {
|
|
102
|
+
return this.gridview.maximumHeight;
|
|
103
|
+
}
|
|
104
|
+
get minimumWidth() {
|
|
105
|
+
return this.gridview.minimumWidth;
|
|
106
|
+
}
|
|
107
|
+
get maximumWidth() {
|
|
108
|
+
return this.gridview.maximumWidth;
|
|
109
|
+
}
|
|
110
|
+
get activeGroup() {
|
|
111
|
+
return this._activeGroup;
|
|
112
|
+
}
|
|
113
|
+
setVisible(panel, visible) {
|
|
114
|
+
this.gridview.setViewVisible(getGridLocation(panel.element), visible);
|
|
115
|
+
this._onGridEvent.fire({ kind: GroupChangeKind.LAYOUT });
|
|
116
|
+
}
|
|
117
|
+
isVisible(panel) {
|
|
118
|
+
return this.gridview.isViewVisible(getGridLocation(panel.element));
|
|
119
|
+
}
|
|
120
|
+
doAddGroup(group, location = [0], size) {
|
|
121
|
+
this.gridview.addView(group, size !== null && size !== void 0 ? size : Sizing.Distribute, location);
|
|
122
|
+
this._onGridEvent.fire({ kind: GroupChangeKind.ADD_GROUP });
|
|
123
|
+
this.doSetGroupActive(group);
|
|
124
|
+
}
|
|
125
|
+
doRemoveGroup(group, options) {
|
|
126
|
+
if (!this._groups.has(group.id)) {
|
|
127
|
+
throw new Error('invalid operation');
|
|
128
|
+
}
|
|
129
|
+
const item = this._groups.get(group.id);
|
|
130
|
+
const view = this.gridview.remove(group, Sizing.Distribute);
|
|
131
|
+
if (item && !(options === null || options === void 0 ? void 0 : options.skipDispose)) {
|
|
132
|
+
item.disposable.dispose();
|
|
133
|
+
this._groups.delete(group.id);
|
|
134
|
+
}
|
|
135
|
+
this._onGridEvent.fire({ kind: GroupChangeKind.REMOVE_GROUP });
|
|
136
|
+
if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {
|
|
137
|
+
const groups = Array.from(this._groups.values());
|
|
138
|
+
this.doSetGroupActive(groups.length > 0 ? groups[0].value : undefined);
|
|
139
|
+
}
|
|
140
|
+
return view;
|
|
141
|
+
}
|
|
142
|
+
getPanel(id) {
|
|
143
|
+
var _a;
|
|
144
|
+
return (_a = this._groups.get(id)) === null || _a === void 0 ? void 0 : _a.value;
|
|
145
|
+
}
|
|
146
|
+
doSetGroupActive(group, skipFocus) {
|
|
147
|
+
if (this._activeGroup === group) {
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
if (this._activeGroup) {
|
|
151
|
+
this._activeGroup.setActive(false);
|
|
152
|
+
if (!skipFocus) {
|
|
153
|
+
this._activeGroup.focus();
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
if (group) {
|
|
157
|
+
group.setActive(true);
|
|
158
|
+
if (!skipFocus) {
|
|
159
|
+
group.focus();
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
this._activeGroup = group;
|
|
163
|
+
this._onGridEvent.fire({
|
|
164
|
+
kind: GroupChangeKind.GROUP_ACTIVE,
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
removeGroup(group) {
|
|
168
|
+
this.doRemoveGroup(group);
|
|
169
|
+
}
|
|
170
|
+
moveToNext(options) {
|
|
171
|
+
var _a;
|
|
172
|
+
if (!options) {
|
|
173
|
+
options = {};
|
|
174
|
+
}
|
|
175
|
+
if (!options.group) {
|
|
176
|
+
if (!this.activeGroup) {
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
options.group = this.activeGroup;
|
|
180
|
+
}
|
|
181
|
+
const location = getGridLocation(options.group.element);
|
|
182
|
+
const next = (_a = this.gridview.next(location)) === null || _a === void 0 ? void 0 : _a.view;
|
|
183
|
+
this.doSetGroupActive(next);
|
|
184
|
+
}
|
|
185
|
+
moveToPrevious(options) {
|
|
186
|
+
var _a;
|
|
187
|
+
if (!options) {
|
|
188
|
+
options = {};
|
|
189
|
+
}
|
|
190
|
+
if (!options.group) {
|
|
191
|
+
if (!this.activeGroup) {
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
options.group = this.activeGroup;
|
|
195
|
+
}
|
|
196
|
+
const location = getGridLocation(options.group.element);
|
|
197
|
+
const next = (_a = this.gridview.previous(location)) === null || _a === void 0 ? void 0 : _a.view;
|
|
198
|
+
this.doSetGroupActive(next);
|
|
199
|
+
}
|
|
200
|
+
layout(width, height, forceResize) {
|
|
201
|
+
const different = forceResize || width !== this.width || height !== this.height;
|
|
202
|
+
if (!different) {
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
this.element.style.height = `${height}px`;
|
|
206
|
+
this.element.style.width = `${width}px`;
|
|
207
|
+
this.gridview.layout(width, height);
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Resize the layout to fit the parent container
|
|
211
|
+
*/
|
|
212
|
+
resizeToFit() {
|
|
213
|
+
if (!this.element.parentElement) {
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
const { width, height } = this.element.parentElement.getBoundingClientRect();
|
|
217
|
+
this.layout(width, height);
|
|
218
|
+
}
|
|
219
|
+
dispose() {
|
|
220
|
+
super.dispose();
|
|
221
|
+
this._onGridEvent.dispose();
|
|
222
|
+
this.gridview.dispose();
|
|
223
|
+
}
|
|
224
|
+
}
|