dockview-core 1.6.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/README.md +52 -0
- package/dist/cjs/api/component.api.d.ts +145 -0
- package/dist/cjs/api/component.api.js +579 -0
- package/dist/cjs/api/component.api.js.map +1 -0
- package/dist/cjs/api/dockviewPanelApi.d.ts +34 -0
- package/dist/cjs/api/dockviewPanelApi.js +84 -0
- package/dist/cjs/api/dockviewPanelApi.js.map +1 -0
- package/dist/cjs/api/gridviewPanelApi.d.ts +37 -0
- package/dist/cjs/api/gridviewPanelApi.js +48 -0
- package/dist/cjs/api/gridviewPanelApi.js.map +1 -0
- package/dist/cjs/api/panelApi.d.ts +88 -0
- package/dist/cjs/api/panelApi.js +138 -0
- package/dist/cjs/api/panelApi.js.map +1 -0
- package/dist/cjs/api/paneviewPanelApi.d.ts +26 -0
- package/dist/cjs/api/paneviewPanelApi.js +58 -0
- package/dist/cjs/api/paneviewPanelApi.js.map +1 -0
- package/dist/cjs/api/splitviewPanelApi.d.ts +32 -0
- package/dist/cjs/api/splitviewPanelApi.js +48 -0
- package/dist/cjs/api/splitviewPanelApi.js.map +1 -0
- package/dist/cjs/array.d.ts +12 -0
- package/dist/cjs/array.js +59 -0
- package/dist/cjs/array.js.map +1 -0
- package/dist/cjs/dnd/abstractDragHandler.d.ts +11 -0
- package/dist/cjs/dnd/abstractDragHandler.js +126 -0
- package/dist/cjs/dnd/abstractDragHandler.js.map +1 -0
- package/dist/cjs/dnd/dataTransfer.d.ts +31 -0
- package/dist/cjs/dnd/dataTransfer.js +101 -0
- package/dist/cjs/dnd/dataTransfer.js.map +1 -0
- package/dist/cjs/dnd/dnd.d.ts +27 -0
- package/dist/cjs/dnd/dnd.js +60 -0
- package/dist/cjs/dnd/dnd.js.map +1 -0
- package/dist/cjs/dnd/droptarget.d.ts +42 -0
- package/dist/cjs/dnd/droptarget.js +281 -0
- package/dist/cjs/dnd/droptarget.js.map +1 -0
- package/dist/cjs/dnd/ghost.d.ts +1 -0
- package/dist/cjs/dnd/ghost.js +16 -0
- package/dist/cjs/dnd/ghost.js.map +1 -0
- package/dist/cjs/dnd/groupDragHandler.d.ts +11 -0
- package/dist/cjs/dnd/groupDragHandler.js +62 -0
- package/dist/cjs/dnd/groupDragHandler.js.map +1 -0
- package/dist/cjs/dockview/components/panel/content.d.ts +30 -0
- package/dist/cjs/dockview/components/panel/content.js +101 -0
- package/dist/cjs/dockview/components/panel/content.js.map +1 -0
- package/dist/cjs/dockview/components/tab/defaultTab.d.ts +21 -0
- package/dist/cjs/dockview/components/tab/defaultTab.js +106 -0
- package/dist/cjs/dockview/components/tab/defaultTab.js.map +1 -0
- package/dist/cjs/dockview/components/tab/tab.d.ts +31 -0
- package/dist/cjs/dockview/components/tab/tab.js +125 -0
- package/dist/cjs/dockview/components/tab/tab.js.map +1 -0
- package/dist/cjs/dockview/components/titlebar/tabsContainer.d.ts +63 -0
- package/dist/cjs/dockview/components/titlebar/tabsContainer.js +248 -0
- package/dist/cjs/dockview/components/titlebar/tabsContainer.js.map +1 -0
- package/dist/cjs/dockview/components/titlebar/voidContainer.d.ts +15 -0
- package/dist/cjs/dockview/components/titlebar/voidContainer.js +74 -0
- package/dist/cjs/dockview/components/titlebar/voidContainer.js.map +1 -0
- package/dist/cjs/dockview/components/watermark/watermark.d.ts +18 -0
- package/dist/cjs/dockview/components/watermark/watermark.js +87 -0
- package/dist/cjs/dockview/components/watermark/watermark.js.map +1 -0
- package/dist/cjs/dockview/deserializer.d.ts +12 -0
- package/dist/cjs/dockview/deserializer.js +46 -0
- package/dist/cjs/dockview/deserializer.js.map +1 -0
- package/dist/cjs/dockview/dockviewComponent.d.ts +126 -0
- package/dist/cjs/dockview/dockviewComponent.js +772 -0
- package/dist/cjs/dockview/dockviewComponent.js.map +1 -0
- package/dist/cjs/dockview/dockviewGroupPanel.d.ts +31 -0
- package/dist/cjs/dockview/dockviewGroupPanel.js +97 -0
- package/dist/cjs/dockview/dockviewGroupPanel.js.map +1 -0
- package/dist/cjs/dockview/dockviewGroupPanelModel.d.ts +176 -0
- package/dist/cjs/dockview/dockviewGroupPanelModel.js +579 -0
- package/dist/cjs/dockview/dockviewGroupPanelModel.js.map +1 -0
- package/dist/cjs/dockview/dockviewPanel.d.ts +40 -0
- package/dist/cjs/dockview/dockviewPanel.js +150 -0
- package/dist/cjs/dockview/dockviewPanel.js.map +1 -0
- package/dist/cjs/dockview/dockviewPanelModel.d.ts +34 -0
- package/dist/cjs/dockview/dockviewPanelModel.js +93 -0
- package/dist/cjs/dockview/dockviewPanelModel.js.map +1 -0
- package/dist/cjs/dockview/options.d.ts +116 -0
- package/dist/cjs/dockview/options.js +32 -0
- package/dist/cjs/dockview/options.js.map +1 -0
- package/dist/cjs/dockview/types.d.ts +67 -0
- package/dist/cjs/dockview/types.js +11 -0
- package/dist/cjs/dockview/types.js.map +1 -0
- package/dist/cjs/dom.d.ts +14 -0
- package/dist/cjs/dom.js +183 -0
- package/dist/cjs/dom.js.map +1 -0
- package/dist/cjs/events.d.ts +30 -0
- package/dist/cjs/events.js +130 -0
- package/dist/cjs/events.js.map +1 -0
- package/dist/cjs/gridview/baseComponentGridview.d.ts +87 -0
- package/dist/cjs/gridview/baseComponentGridview.js +280 -0
- package/dist/cjs/gridview/baseComponentGridview.js.map +1 -0
- package/dist/cjs/gridview/basePanelView.d.ts +40 -0
- package/dist/cjs/gridview/basePanelView.js +124 -0
- package/dist/cjs/gridview/basePanelView.js.map +1 -0
- package/dist/cjs/gridview/branchNode.d.ts +49 -0
- package/dist/cjs/gridview/branchNode.js +343 -0
- package/dist/cjs/gridview/branchNode.js.map +1 -0
- package/dist/cjs/gridview/gridview.d.ts +133 -0
- package/dist/cjs/gridview/gridview.js +511 -0
- package/dist/cjs/gridview/gridview.js.map +1 -0
- package/dist/cjs/gridview/gridviewComponent.d.ts +80 -0
- package/dist/cjs/gridview/gridviewComponent.js +325 -0
- package/dist/cjs/gridview/gridviewComponent.js.map +1 -0
- package/dist/cjs/gridview/gridviewPanel.d.ts +65 -0
- package/dist/cjs/gridview/gridviewPanel.js +215 -0
- package/dist/cjs/gridview/gridviewPanel.js.map +1 -0
- package/dist/cjs/gridview/leafNode.d.ts +34 -0
- package/dist/cjs/gridview/leafNode.js +171 -0
- package/dist/cjs/gridview/leafNode.js.map +1 -0
- package/dist/cjs/gridview/options.d.ts +18 -0
- package/dist/cjs/gridview/options.js +3 -0
- package/dist/cjs/gridview/options.js.map +1 -0
- package/dist/cjs/gridview/types.d.ts +3 -0
- package/dist/cjs/gridview/types.js +3 -0
- package/dist/cjs/gridview/types.js.map +1 -0
- package/dist/cjs/index.d.ts +41 -0
- package/dist/cjs/index.js +64 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/lifecycle.d.ts +22 -0
- package/dist/cjs/lifecycle.js +89 -0
- package/dist/cjs/lifecycle.js.map +1 -0
- package/dist/cjs/math.d.ts +5 -0
- package/dist/cjs/math.js +35 -0
- package/dist/cjs/math.js.map +1 -0
- package/dist/cjs/panel/componentFactory.d.ts +10 -0
- package/dist/cjs/panel/componentFactory.js +31 -0
- package/dist/cjs/panel/componentFactory.js.map +1 -0
- package/dist/cjs/panel/types.d.ts +33 -0
- package/dist/cjs/panel/types.js +3 -0
- package/dist/cjs/panel/types.js.map +1 -0
- package/dist/cjs/paneview/defaultPaneviewHeader.d.ts +21 -0
- package/dist/cjs/paneview/defaultPaneviewHeader.js +91 -0
- package/dist/cjs/paneview/defaultPaneviewHeader.js.map +1 -0
- package/dist/cjs/paneview/draggablePaneviewPanel.d.ts +21 -0
- package/dist/cjs/paneview/draggablePaneviewPanel.js +132 -0
- package/dist/cjs/paneview/draggablePaneviewPanel.js.map +1 -0
- package/dist/cjs/paneview/options.d.ts +27 -0
- package/dist/cjs/paneview/options.js +3 -0
- package/dist/cjs/paneview/options.js.map +1 -0
- package/dist/cjs/paneview/paneview.d.ts +40 -0
- package/dist/cjs/paneview/paneview.js +202 -0
- package/dist/cjs/paneview/paneview.js.map +1 -0
- package/dist/cjs/paneview/paneviewComponent.d.ts +129 -0
- package/dist/cjs/paneview/paneviewComponent.js +395 -0
- package/dist/cjs/paneview/paneviewComponent.js.map +1 -0
- package/dist/cjs/paneview/paneviewPanel.d.ts +92 -0
- package/dist/cjs/paneview/paneviewPanel.js +276 -0
- package/dist/cjs/paneview/paneviewPanel.js.map +1 -0
- package/dist/cjs/splitview/options.d.ts +26 -0
- package/dist/cjs/splitview/options.js +3 -0
- package/dist/cjs/splitview/options.js.map +1 -0
- package/dist/cjs/splitview/splitview.d.ts +127 -0
- package/dist/cjs/splitview/splitview.js +909 -0
- package/dist/cjs/splitview/splitview.js.map +1 -0
- package/dist/cjs/splitview/splitviewComponent.d.ts +101 -0
- package/dist/cjs/splitview/splitviewComponent.js +374 -0
- package/dist/cjs/splitview/splitviewComponent.js.map +1 -0
- package/dist/cjs/splitview/splitviewPanel.d.ts +45 -0
- package/dist/cjs/splitview/splitviewPanel.js +180 -0
- package/dist/cjs/splitview/splitviewPanel.js.map +1 -0
- package/dist/cjs/splitview/viewItem.d.ts +25 -0
- package/dist/cjs/splitview/viewItem.js +120 -0
- package/dist/cjs/splitview/viewItem.js.map +1 -0
- package/dist/cjs/svg.d.ts +3 -0
- package/dist/cjs/svg.js +44 -0
- package/dist/cjs/svg.js.map +1 -0
- package/dist/cjs/types.d.ts +2 -0
- package/dist/cjs/types.js +3 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/dockview-core.amd.js +6492 -0
- package/dist/dockview-core.amd.min.js +7 -0
- package/dist/dockview-core.amd.min.noStyle.js +7 -0
- package/dist/dockview-core.amd.noStyle.js +6462 -0
- package/dist/dockview-core.cjs.js +6490 -0
- package/dist/dockview-core.esm.js +6441 -0
- package/dist/dockview-core.esm.min.js +7 -0
- package/dist/dockview-core.js +6496 -0
- package/dist/dockview-core.min.js +7 -0
- package/dist/dockview-core.min.noStyle.js +7 -0
- package/dist/dockview-core.noStyle.js +6466 -0
- package/dist/esm/api/component.api.d.ts +145 -0
- package/dist/esm/api/component.api.js +329 -0
- package/dist/esm/api/dockviewPanelApi.d.ts +34 -0
- package/dist/esm/api/dockviewPanelApi.js +48 -0
- package/dist/esm/api/gridviewPanelApi.d.ts +37 -0
- package/dist/esm/api/gridviewPanelApi.js +25 -0
- package/dist/esm/api/panelApi.d.ts +88 -0
- package/dist/esm/api/panelApi.js +95 -0
- package/dist/esm/api/paneviewPanelApi.d.ts +26 -0
- package/dist/esm/api/paneviewPanelApi.js +27 -0
- package/dist/esm/api/splitviewPanelApi.d.ts +32 -0
- package/dist/esm/api/splitviewPanelApi.js +25 -0
- package/dist/esm/array.d.ts +12 -0
- package/dist/esm/array.js +49 -0
- package/dist/esm/dnd/abstractDragHandler.d.ts +11 -0
- package/dist/esm/dnd/abstractDragHandler.js +47 -0
- package/dist/esm/dnd/dataTransfer.d.ts +31 -0
- package/dist/esm/dnd/dataTransfer.js +69 -0
- package/dist/esm/dnd/dnd.d.ts +27 -0
- package/dist/esm/dnd/dnd.js +36 -0
- package/dist/esm/dnd/droptarget.d.ts +42 -0
- package/dist/esm/dnd/droptarget.js +250 -0
- package/dist/esm/dnd/ghost.d.ts +1 -0
- package/dist/esm/dnd/ghost.js +11 -0
- package/dist/esm/dnd/groupDragHandler.d.ts +11 -0
- package/dist/esm/dnd/groupDragHandler.js +38 -0
- package/dist/esm/dockview/components/panel/content.d.ts +30 -0
- package/dist/esm/dockview/components/panel/content.js +73 -0
- package/dist/esm/dockview/components/tab/defaultTab.d.ts +21 -0
- package/dist/esm/dockview/components/tab/defaultTab.js +67 -0
- package/dist/esm/dockview/components/tab/tab.d.ts +31 -0
- package/dist/esm/dockview/components/tab/tab.js +94 -0
- package/dist/esm/dockview/components/titlebar/tabsContainer.d.ts +63 -0
- package/dist/esm/dockview/components/titlebar/tabsContainer.js +179 -0
- package/dist/esm/dockview/components/titlebar/voidContainer.d.ts +15 -0
- package/dist/esm/dockview/components/titlebar/voidContainer.js +47 -0
- package/dist/esm/dockview/components/watermark/watermark.d.ts +18 -0
- package/dist/esm/dockview/components/watermark/watermark.js +60 -0
- package/dist/esm/dockview/deserializer.d.ts +12 -0
- package/dist/esm/dockview/deserializer.js +40 -0
- package/dist/esm/dockview/dockviewComponent.d.ts +126 -0
- package/dist/esm/dockview/dockviewComponent.js +612 -0
- package/dist/esm/dockview/dockviewGroupPanel.d.ts +31 -0
- package/dist/esm/dockview/dockviewGroupPanel.js +50 -0
- package/dist/esm/dockview/dockviewGroupPanelModel.d.ts +176 -0
- package/dist/esm/dockview/dockviewGroupPanelModel.js +449 -0
- package/dist/esm/dockview/dockviewPanel.d.ts +40 -0
- package/dist/esm/dockview/dockviewPanel.js +104 -0
- package/dist/esm/dockview/dockviewPanelModel.d.ts +34 -0
- package/dist/esm/dockview/dockviewPanelModel.js +68 -0
- package/dist/esm/dockview/options.d.ts +116 -0
- package/dist/esm/dockview/options.js +24 -0
- package/dist/esm/dockview/types.d.ts +67 -0
- package/dist/esm/dockview/types.js +7 -0
- package/dist/esm/dom.d.ts +14 -0
- package/dist/esm/dom.js +113 -0
- package/dist/esm/events.d.ts +30 -0
- package/dist/esm/events.js +88 -0
- package/dist/esm/gridview/baseComponentGridview.d.ts +87 -0
- package/dist/esm/gridview/baseComponentGridview.js +189 -0
- package/dist/esm/gridview/basePanelView.d.ts +40 -0
- package/dist/esm/gridview/basePanelView.js +74 -0
- package/dist/esm/gridview/branchNode.d.ts +49 -0
- package/dist/esm/gridview/branchNode.js +218 -0
- package/dist/esm/gridview/gridview.d.ts +133 -0
- package/dist/esm/gridview/gridview.js +423 -0
- package/dist/esm/gridview/gridviewComponent.d.ts +80 -0
- package/dist/esm/gridview/gridviewComponent.js +237 -0
- package/dist/esm/gridview/gridviewPanel.d.ts +65 -0
- package/dist/esm/gridview/gridviewPanel.js +151 -0
- package/dist/esm/gridview/leafNode.d.ts +34 -0
- package/dist/esm/gridview/leafNode.js +103 -0
- package/dist/esm/gridview/options.d.ts +18 -0
- package/dist/esm/gridview/options.js +1 -0
- package/dist/esm/gridview/types.d.ts +3 -0
- package/dist/esm/gridview/types.js +1 -0
- package/dist/esm/index.d.ts +41 -0
- package/dist/esm/index.js +35 -0
- package/dist/esm/lifecycle.d.ts +22 -0
- package/dist/esm/lifecycle.js +39 -0
- package/dist/esm/math.d.ts +5 -0
- package/dist/esm/math.js +28 -0
- package/dist/esm/panel/componentFactory.d.ts +10 -0
- package/dist/esm/panel/componentFactory.js +24 -0
- package/dist/esm/panel/types.d.ts +33 -0
- package/dist/esm/panel/types.js +1 -0
- package/dist/esm/paneview/defaultPaneviewHeader.d.ts +21 -0
- package/dist/esm/paneview/defaultPaneviewHeader.js +63 -0
- package/dist/esm/paneview/draggablePaneviewPanel.d.ts +21 -0
- package/dist/esm/paneview/draggablePaneviewPanel.js +92 -0
- package/dist/esm/paneview/options.d.ts +27 -0
- package/dist/esm/paneview/options.js +1 -0
- package/dist/esm/paneview/paneview.d.ts +40 -0
- package/dist/esm/paneview/paneview.js +145 -0
- package/dist/esm/paneview/paneviewComponent.d.ts +129 -0
- package/dist/esm/paneview/paneviewComponent.js +270 -0
- package/dist/esm/paneview/paneviewPanel.d.ts +92 -0
- package/dist/esm/paneview/paneviewPanel.js +192 -0
- package/dist/esm/splitview/options.d.ts +26 -0
- package/dist/esm/splitview/options.js +1 -0
- package/dist/esm/splitview/splitview.d.ts +127 -0
- package/dist/esm/splitview/splitview.js +689 -0
- package/dist/esm/splitview/splitviewComponent.d.ts +101 -0
- package/dist/esm/splitview/splitviewComponent.js +249 -0
- package/dist/esm/splitview/splitviewPanel.d.ts +45 -0
- package/dist/esm/splitview/splitviewPanel.js +108 -0
- package/dist/esm/splitview/viewItem.d.ts +25 -0
- package/dist/esm/splitview/viewItem.js +74 -0
- package/dist/esm/svg.d.ts +3 -0
- package/dist/esm/svg.js +31 -0
- package/dist/esm/types.d.ts +2 -0
- package/dist/esm/types.js +1 -0
- package/dist/styles/dockview.css +615 -0
- package/package.json +68 -0
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { CompositeDisposable, IDisposable } from '../lifecycle';
|
|
2
|
+
import { IView, LayoutPriority, Orientation, Sizing, Splitview } from './splitview';
|
|
3
|
+
import { SplitviewComponentOptions } from './options';
|
|
4
|
+
import { BaseComponentOptions } from '../panel/types';
|
|
5
|
+
import { Event } from '../events';
|
|
6
|
+
import { SplitviewPanel, ISplitviewPanel } from './splitviewPanel';
|
|
7
|
+
export interface SerializedSplitviewPanelData {
|
|
8
|
+
id: string;
|
|
9
|
+
component: string;
|
|
10
|
+
minimumSize?: number;
|
|
11
|
+
maximumSize?: number;
|
|
12
|
+
params?: {
|
|
13
|
+
[index: string]: any;
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
export interface SerializedSplitviewPanel {
|
|
17
|
+
snap?: boolean;
|
|
18
|
+
priority?: LayoutPriority;
|
|
19
|
+
data: SerializedSplitviewPanelData;
|
|
20
|
+
size: number;
|
|
21
|
+
}
|
|
22
|
+
export interface SerializedSplitview {
|
|
23
|
+
orientation: Orientation;
|
|
24
|
+
size: number;
|
|
25
|
+
activeView?: string;
|
|
26
|
+
views: SerializedSplitviewPanel[];
|
|
27
|
+
}
|
|
28
|
+
export interface AddSplitviewComponentOptions extends BaseComponentOptions {
|
|
29
|
+
index?: number;
|
|
30
|
+
minimumSize?: number;
|
|
31
|
+
maximumSize?: number;
|
|
32
|
+
}
|
|
33
|
+
export type SplitviewComponentUpdateOptions = Pick<SplitviewComponentOptions, 'orientation' | 'components' | 'frameworkComponents'>;
|
|
34
|
+
export interface ISplitviewComponent extends IDisposable {
|
|
35
|
+
readonly minimumSize: number;
|
|
36
|
+
readonly maximumSize: number;
|
|
37
|
+
readonly height: number;
|
|
38
|
+
readonly width: number;
|
|
39
|
+
readonly length: number;
|
|
40
|
+
readonly orientation: Orientation;
|
|
41
|
+
readonly onDidAddView: Event<IView>;
|
|
42
|
+
readonly onDidRemoveView: Event<IView>;
|
|
43
|
+
readonly onDidLayoutFromJSON: Event<void>;
|
|
44
|
+
readonly panels: SplitviewPanel[];
|
|
45
|
+
updateOptions(options: Partial<SplitviewComponentUpdateOptions>): void;
|
|
46
|
+
addPanel(options: AddSplitviewComponentOptions): ISplitviewPanel;
|
|
47
|
+
layout(width: number, height: number): void;
|
|
48
|
+
onDidLayoutChange: Event<void>;
|
|
49
|
+
toJSON(): SerializedSplitview;
|
|
50
|
+
fromJSON(serializedSplitview: SerializedSplitview): void;
|
|
51
|
+
focus(): void;
|
|
52
|
+
getPanel(id: string): ISplitviewPanel | undefined;
|
|
53
|
+
removePanel(panel: ISplitviewPanel, sizing?: Sizing): void;
|
|
54
|
+
setVisible(panel: ISplitviewPanel, visible: boolean): void;
|
|
55
|
+
movePanel(from: number, to: number): void;
|
|
56
|
+
clear(): void;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* A high-level implementation of splitview that works using 'panels'
|
|
60
|
+
*/
|
|
61
|
+
export declare class SplitviewComponent extends CompositeDisposable implements ISplitviewComponent {
|
|
62
|
+
private readonly element;
|
|
63
|
+
private _disposable;
|
|
64
|
+
private _splitview;
|
|
65
|
+
private _activePanel;
|
|
66
|
+
private _panels;
|
|
67
|
+
private _options;
|
|
68
|
+
private readonly _onDidLayoutfromJSON;
|
|
69
|
+
readonly onDidLayoutFromJSON: Event<void>;
|
|
70
|
+
private readonly _onDidAddView;
|
|
71
|
+
readonly onDidAddView: Event<IView>;
|
|
72
|
+
private readonly _onDidRemoveView;
|
|
73
|
+
readonly onDidRemoveView: Event<IView>;
|
|
74
|
+
private readonly _onDidLayoutChange;
|
|
75
|
+
readonly onDidLayoutChange: Event<void>;
|
|
76
|
+
get panels(): SplitviewPanel[];
|
|
77
|
+
get options(): SplitviewComponentOptions;
|
|
78
|
+
get length(): number;
|
|
79
|
+
get orientation(): Orientation;
|
|
80
|
+
get splitview(): Splitview;
|
|
81
|
+
set splitview(value: Splitview);
|
|
82
|
+
get minimumSize(): number;
|
|
83
|
+
get maximumSize(): number;
|
|
84
|
+
get height(): number;
|
|
85
|
+
get width(): number;
|
|
86
|
+
constructor(element: HTMLElement, options: SplitviewComponentOptions);
|
|
87
|
+
updateOptions(options: Partial<SplitviewComponentUpdateOptions>): void;
|
|
88
|
+
focus(): void;
|
|
89
|
+
movePanel(from: number, to: number): void;
|
|
90
|
+
setVisible(panel: SplitviewPanel, visible: boolean): void;
|
|
91
|
+
setActive(view: SplitviewPanel, skipFocus?: boolean): void;
|
|
92
|
+
removePanel(panel: SplitviewPanel, sizing?: Sizing): void;
|
|
93
|
+
getPanel(id: string): SplitviewPanel | undefined;
|
|
94
|
+
addPanel(options: AddSplitviewComponentOptions): ISplitviewPanel;
|
|
95
|
+
layout(width: number, height: number): void;
|
|
96
|
+
private doAddView;
|
|
97
|
+
toJSON(): SerializedSplitview;
|
|
98
|
+
fromJSON(serializedSplitview: SerializedSplitview): void;
|
|
99
|
+
clear(): void;
|
|
100
|
+
dispose(): void;
|
|
101
|
+
}
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
import { CompositeDisposable, MutableDisposable, } from '../lifecycle';
|
|
2
|
+
import { Orientation, Sizing, Splitview, } from './splitview';
|
|
3
|
+
import { Emitter } from '../events';
|
|
4
|
+
import { createComponent } from '../panel/componentFactory';
|
|
5
|
+
/**
|
|
6
|
+
* A high-level implementation of splitview that works using 'panels'
|
|
7
|
+
*/
|
|
8
|
+
export class SplitviewComponent extends CompositeDisposable {
|
|
9
|
+
get panels() {
|
|
10
|
+
return this.splitview.getViews();
|
|
11
|
+
}
|
|
12
|
+
get options() {
|
|
13
|
+
return this._options;
|
|
14
|
+
}
|
|
15
|
+
get length() {
|
|
16
|
+
return this._panels.size;
|
|
17
|
+
}
|
|
18
|
+
get orientation() {
|
|
19
|
+
return this.splitview.orientation;
|
|
20
|
+
}
|
|
21
|
+
get splitview() {
|
|
22
|
+
return this._splitview;
|
|
23
|
+
}
|
|
24
|
+
set splitview(value) {
|
|
25
|
+
this._splitview = value;
|
|
26
|
+
this._disposable.value = new CompositeDisposable(this._splitview.onDidSashEnd(() => {
|
|
27
|
+
this._onDidLayoutChange.fire(undefined);
|
|
28
|
+
}), this._splitview.onDidAddView((e) => this._onDidAddView.fire(e)), this._splitview.onDidRemoveView((e) => this._onDidRemoveView.fire(e)));
|
|
29
|
+
}
|
|
30
|
+
get minimumSize() {
|
|
31
|
+
return this.splitview.minimumSize;
|
|
32
|
+
}
|
|
33
|
+
get maximumSize() {
|
|
34
|
+
return this.splitview.maximumSize;
|
|
35
|
+
}
|
|
36
|
+
get height() {
|
|
37
|
+
return this.splitview.orientation === Orientation.HORIZONTAL
|
|
38
|
+
? this.splitview.orthogonalSize
|
|
39
|
+
: this.splitview.size;
|
|
40
|
+
}
|
|
41
|
+
get width() {
|
|
42
|
+
return this.splitview.orientation === Orientation.HORIZONTAL
|
|
43
|
+
? this.splitview.size
|
|
44
|
+
: this.splitview.orthogonalSize;
|
|
45
|
+
}
|
|
46
|
+
constructor(element, options) {
|
|
47
|
+
super();
|
|
48
|
+
this.element = element;
|
|
49
|
+
this._disposable = new MutableDisposable();
|
|
50
|
+
this._panels = new Map();
|
|
51
|
+
this._onDidLayoutfromJSON = new Emitter();
|
|
52
|
+
this.onDidLayoutFromJSON = this._onDidLayoutfromJSON.event;
|
|
53
|
+
this._onDidAddView = new Emitter();
|
|
54
|
+
this.onDidAddView = this._onDidAddView.event;
|
|
55
|
+
this._onDidRemoveView = new Emitter();
|
|
56
|
+
this.onDidRemoveView = this._onDidRemoveView.event;
|
|
57
|
+
this._onDidLayoutChange = new Emitter();
|
|
58
|
+
this.onDidLayoutChange = this._onDidLayoutChange.event;
|
|
59
|
+
this._options = options;
|
|
60
|
+
if (!options.components) {
|
|
61
|
+
options.components = {};
|
|
62
|
+
}
|
|
63
|
+
if (!options.frameworkComponents) {
|
|
64
|
+
options.frameworkComponents = {};
|
|
65
|
+
}
|
|
66
|
+
this.splitview = new Splitview(this.element, options);
|
|
67
|
+
this.addDisposables(this._disposable, this._onDidAddView, this._onDidLayoutfromJSON, this._onDidRemoveView, this._onDidLayoutChange);
|
|
68
|
+
}
|
|
69
|
+
updateOptions(options) {
|
|
70
|
+
const hasOrientationChanged = typeof options.orientation === 'string' &&
|
|
71
|
+
this.options.orientation !== options.orientation;
|
|
72
|
+
this._options = Object.assign(Object.assign({}, this.options), options);
|
|
73
|
+
if (hasOrientationChanged) {
|
|
74
|
+
this.splitview.orientation = options.orientation;
|
|
75
|
+
}
|
|
76
|
+
this.splitview.layout(this.splitview.size, this.splitview.orthogonalSize);
|
|
77
|
+
}
|
|
78
|
+
focus() {
|
|
79
|
+
var _a;
|
|
80
|
+
(_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.focus();
|
|
81
|
+
}
|
|
82
|
+
movePanel(from, to) {
|
|
83
|
+
this.splitview.moveView(from, to);
|
|
84
|
+
}
|
|
85
|
+
setVisible(panel, visible) {
|
|
86
|
+
const index = this.panels.indexOf(panel);
|
|
87
|
+
this.splitview.setViewVisible(index, visible);
|
|
88
|
+
}
|
|
89
|
+
setActive(view, skipFocus) {
|
|
90
|
+
this._activePanel = view;
|
|
91
|
+
this.panels
|
|
92
|
+
.filter((v) => v !== view)
|
|
93
|
+
.forEach((v) => {
|
|
94
|
+
v.api._onDidActiveChange.fire({ isActive: false });
|
|
95
|
+
if (!skipFocus) {
|
|
96
|
+
v.focus();
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
view.api._onDidActiveChange.fire({ isActive: true });
|
|
100
|
+
if (!skipFocus) {
|
|
101
|
+
view.focus();
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
removePanel(panel, sizing) {
|
|
105
|
+
const disposable = this._panels.get(panel.id);
|
|
106
|
+
if (!disposable) {
|
|
107
|
+
throw new Error(`unknown splitview panel ${panel.id}`);
|
|
108
|
+
}
|
|
109
|
+
disposable.disposable.dispose();
|
|
110
|
+
disposable.value.dispose();
|
|
111
|
+
this._panels.delete(panel.id);
|
|
112
|
+
const index = this.panels.findIndex((_) => _ === panel);
|
|
113
|
+
this.splitview.removeView(index, sizing);
|
|
114
|
+
const panels = this.panels;
|
|
115
|
+
if (panels.length > 0) {
|
|
116
|
+
this.setActive(panels[panels.length - 1]);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
getPanel(id) {
|
|
120
|
+
return this.panels.find((view) => view.id === id);
|
|
121
|
+
}
|
|
122
|
+
addPanel(options) {
|
|
123
|
+
if (this._panels.has(options.id)) {
|
|
124
|
+
throw new Error(`panel ${options.id} already exists`);
|
|
125
|
+
}
|
|
126
|
+
const view = createComponent(options.id, options.component, this.options.components || {}, this.options.frameworkComponents || {}, this.options.frameworkWrapper
|
|
127
|
+
? {
|
|
128
|
+
createComponent: this.options.frameworkWrapper.createComponent,
|
|
129
|
+
}
|
|
130
|
+
: undefined);
|
|
131
|
+
view.orientation = this.splitview.orientation;
|
|
132
|
+
view.init({
|
|
133
|
+
params: options.params || {},
|
|
134
|
+
minimumSize: options.minimumSize,
|
|
135
|
+
maximumSize: options.maximumSize,
|
|
136
|
+
snap: options.snap,
|
|
137
|
+
priority: options.priority,
|
|
138
|
+
accessor: this,
|
|
139
|
+
});
|
|
140
|
+
const size = typeof options.size === 'number' ? options.size : Sizing.Distribute;
|
|
141
|
+
const index = typeof options.index === 'number' ? options.index : undefined;
|
|
142
|
+
this.splitview.addView(view, size, index);
|
|
143
|
+
this.doAddView(view);
|
|
144
|
+
this.setActive(view);
|
|
145
|
+
return view;
|
|
146
|
+
}
|
|
147
|
+
layout(width, height) {
|
|
148
|
+
const [size, orthogonalSize] = this.splitview.orientation === Orientation.HORIZONTAL
|
|
149
|
+
? [width, height]
|
|
150
|
+
: [height, width];
|
|
151
|
+
this.splitview.layout(size, orthogonalSize);
|
|
152
|
+
}
|
|
153
|
+
doAddView(view) {
|
|
154
|
+
const disposable = view.api.onDidFocusChange((event) => {
|
|
155
|
+
if (!event.isFocused) {
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
this.setActive(view, true);
|
|
159
|
+
});
|
|
160
|
+
this._panels.set(view.id, { disposable, value: view });
|
|
161
|
+
}
|
|
162
|
+
toJSON() {
|
|
163
|
+
var _a;
|
|
164
|
+
const views = this.splitview
|
|
165
|
+
.getViews()
|
|
166
|
+
.map((view, i) => {
|
|
167
|
+
const size = this.splitview.getViewSize(i);
|
|
168
|
+
return {
|
|
169
|
+
size,
|
|
170
|
+
data: view.toJSON(),
|
|
171
|
+
snap: !!view.snap,
|
|
172
|
+
priority: view.priority,
|
|
173
|
+
};
|
|
174
|
+
});
|
|
175
|
+
return {
|
|
176
|
+
views,
|
|
177
|
+
activeView: (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.id,
|
|
178
|
+
size: this.splitview.size,
|
|
179
|
+
orientation: this.splitview.orientation,
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
fromJSON(serializedSplitview) {
|
|
183
|
+
this.clear();
|
|
184
|
+
const { views, orientation, size, activeView } = serializedSplitview;
|
|
185
|
+
const queue = [];
|
|
186
|
+
this.splitview = new Splitview(this.element, {
|
|
187
|
+
orientation,
|
|
188
|
+
proportionalLayout: this.options.proportionalLayout,
|
|
189
|
+
descriptor: {
|
|
190
|
+
size,
|
|
191
|
+
views: views.map((view) => {
|
|
192
|
+
const data = view.data;
|
|
193
|
+
if (this._panels.has(data.id)) {
|
|
194
|
+
throw new Error(`panel ${data.id} already exists`);
|
|
195
|
+
}
|
|
196
|
+
const panel = createComponent(data.id, data.component, this.options.components || {}, this.options.frameworkComponents || {}, this.options.frameworkWrapper
|
|
197
|
+
? {
|
|
198
|
+
createComponent: this.options.frameworkWrapper
|
|
199
|
+
.createComponent,
|
|
200
|
+
}
|
|
201
|
+
: undefined);
|
|
202
|
+
queue.push(() => {
|
|
203
|
+
panel.init({
|
|
204
|
+
params: data.params || {},
|
|
205
|
+
minimumSize: data.minimumSize,
|
|
206
|
+
maximumSize: data.maximumSize,
|
|
207
|
+
snap: view.snap,
|
|
208
|
+
priority: view.priority,
|
|
209
|
+
accessor: this,
|
|
210
|
+
});
|
|
211
|
+
});
|
|
212
|
+
panel.orientation = orientation;
|
|
213
|
+
this.doAddView(panel);
|
|
214
|
+
setTimeout(() => {
|
|
215
|
+
// the original onDidAddView events are missed since they are fired before we can subcribe to them
|
|
216
|
+
this._onDidAddView.fire(panel);
|
|
217
|
+
}, 0);
|
|
218
|
+
return { size: view.size, view: panel };
|
|
219
|
+
}),
|
|
220
|
+
},
|
|
221
|
+
});
|
|
222
|
+
this.layout(this.width, this.height);
|
|
223
|
+
queue.forEach((f) => f());
|
|
224
|
+
if (typeof activeView === 'string') {
|
|
225
|
+
const panel = this.getPanel(activeView);
|
|
226
|
+
if (panel) {
|
|
227
|
+
this.setActive(panel);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
this._onDidLayoutfromJSON.fire();
|
|
231
|
+
}
|
|
232
|
+
clear() {
|
|
233
|
+
for (const [_, value] of this._panels.entries()) {
|
|
234
|
+
value.disposable.dispose();
|
|
235
|
+
value.value.dispose();
|
|
236
|
+
}
|
|
237
|
+
this._panels.clear();
|
|
238
|
+
this.splitview.dispose();
|
|
239
|
+
}
|
|
240
|
+
dispose() {
|
|
241
|
+
for (const [_, value] of this._panels.entries()) {
|
|
242
|
+
value.disposable.dispose();
|
|
243
|
+
value.value.dispose();
|
|
244
|
+
}
|
|
245
|
+
this._panels.clear();
|
|
246
|
+
this.splitview.dispose();
|
|
247
|
+
super.dispose();
|
|
248
|
+
}
|
|
249
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { ISerializableView, PanelViewInitParameters } from './options';
|
|
2
|
+
import { BasePanelView, BasePanelViewExported } from '../gridview/basePanelView';
|
|
3
|
+
import { SplitviewPanelApiImpl } from '../api/splitviewPanelApi';
|
|
4
|
+
import { LayoutPriority, Orientation } from './splitview';
|
|
5
|
+
import { Event } from '../events';
|
|
6
|
+
export interface ISplitviewPanel extends BasePanelViewExported<SplitviewPanelApiImpl> {
|
|
7
|
+
readonly priority: LayoutPriority | undefined;
|
|
8
|
+
readonly minimumSize: number;
|
|
9
|
+
readonly maximumSize: number;
|
|
10
|
+
readonly snap: boolean;
|
|
11
|
+
readonly orientation: Orientation;
|
|
12
|
+
}
|
|
13
|
+
export declare abstract class SplitviewPanel extends BasePanelView<SplitviewPanelApiImpl> implements ISerializableView, ISplitviewPanel {
|
|
14
|
+
private _evaluatedMinimumSize;
|
|
15
|
+
private _evaluatedMaximumSize;
|
|
16
|
+
private _minimumSize;
|
|
17
|
+
private _maximumSize;
|
|
18
|
+
private _priority?;
|
|
19
|
+
private _snap;
|
|
20
|
+
private _orientation?;
|
|
21
|
+
private readonly _onDidChange;
|
|
22
|
+
readonly onDidChange: Event<{
|
|
23
|
+
size?: number;
|
|
24
|
+
orthogonalSize?: number;
|
|
25
|
+
}>;
|
|
26
|
+
get priority(): LayoutPriority | undefined;
|
|
27
|
+
set orientation(value: Orientation);
|
|
28
|
+
get orientation(): Orientation;
|
|
29
|
+
get minimumSize(): number;
|
|
30
|
+
get maximumSize(): number;
|
|
31
|
+
get snap(): boolean;
|
|
32
|
+
constructor(id: string, componentName: string);
|
|
33
|
+
setVisible(isVisible: boolean): void;
|
|
34
|
+
setActive(isActive: boolean): void;
|
|
35
|
+
layout(size: number, orthogonalSize: number): void;
|
|
36
|
+
init(parameters: PanelViewInitParameters): void;
|
|
37
|
+
toJSON(): {
|
|
38
|
+
minimumSize: number | undefined;
|
|
39
|
+
maximumSize: number | undefined;
|
|
40
|
+
id: string;
|
|
41
|
+
component: string;
|
|
42
|
+
params?: Record<string, any> | undefined;
|
|
43
|
+
};
|
|
44
|
+
private updateConstraints;
|
|
45
|
+
}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { BasePanelView, } from '../gridview/basePanelView';
|
|
2
|
+
import { SplitviewPanelApiImpl } from '../api/splitviewPanelApi';
|
|
3
|
+
import { Orientation } from './splitview';
|
|
4
|
+
import { Emitter } from '../events';
|
|
5
|
+
export class SplitviewPanel extends BasePanelView {
|
|
6
|
+
get priority() {
|
|
7
|
+
return this._priority;
|
|
8
|
+
}
|
|
9
|
+
set orientation(value) {
|
|
10
|
+
this._orientation = value;
|
|
11
|
+
}
|
|
12
|
+
get orientation() {
|
|
13
|
+
return this._orientation;
|
|
14
|
+
}
|
|
15
|
+
get minimumSize() {
|
|
16
|
+
const size = typeof this._minimumSize === 'function'
|
|
17
|
+
? this._minimumSize()
|
|
18
|
+
: this._minimumSize;
|
|
19
|
+
if (size !== this._evaluatedMinimumSize) {
|
|
20
|
+
this._evaluatedMinimumSize = size;
|
|
21
|
+
this.updateConstraints();
|
|
22
|
+
}
|
|
23
|
+
return size;
|
|
24
|
+
}
|
|
25
|
+
get maximumSize() {
|
|
26
|
+
const size = typeof this._maximumSize === 'function'
|
|
27
|
+
? this._maximumSize()
|
|
28
|
+
: this._maximumSize;
|
|
29
|
+
if (size !== this._evaluatedMaximumSize) {
|
|
30
|
+
this._evaluatedMaximumSize = size;
|
|
31
|
+
this.updateConstraints();
|
|
32
|
+
}
|
|
33
|
+
return size;
|
|
34
|
+
}
|
|
35
|
+
get snap() {
|
|
36
|
+
return this._snap;
|
|
37
|
+
}
|
|
38
|
+
constructor(id, componentName) {
|
|
39
|
+
super(id, componentName, new SplitviewPanelApiImpl(id));
|
|
40
|
+
this._evaluatedMinimumSize = 0;
|
|
41
|
+
this._evaluatedMaximumSize = Number.POSITIVE_INFINITY;
|
|
42
|
+
this._minimumSize = 0;
|
|
43
|
+
this._maximumSize = Number.POSITIVE_INFINITY;
|
|
44
|
+
this._snap = false;
|
|
45
|
+
this._onDidChange = new Emitter();
|
|
46
|
+
this.onDidChange = this._onDidChange.event;
|
|
47
|
+
this.api.initialize(this);
|
|
48
|
+
this.addDisposables(this._onDidChange, this.api.onVisibilityChange((event) => {
|
|
49
|
+
const { isVisible } = event;
|
|
50
|
+
const { accessor } = this._params;
|
|
51
|
+
accessor.setVisible(this, isVisible);
|
|
52
|
+
}), this.api.onActiveChange(() => {
|
|
53
|
+
const { accessor } = this._params;
|
|
54
|
+
accessor.setActive(this);
|
|
55
|
+
}), this.api.onDidConstraintsChangeInternal((event) => {
|
|
56
|
+
if (typeof event.minimumSize === 'number' ||
|
|
57
|
+
typeof event.minimumSize === 'function') {
|
|
58
|
+
this._minimumSize = event.minimumSize;
|
|
59
|
+
}
|
|
60
|
+
if (typeof event.maximumSize === 'number' ||
|
|
61
|
+
typeof event.maximumSize === 'function') {
|
|
62
|
+
this._maximumSize = event.maximumSize;
|
|
63
|
+
}
|
|
64
|
+
this.updateConstraints();
|
|
65
|
+
}), this.api.onDidSizeChange((event) => {
|
|
66
|
+
this._onDidChange.fire({ size: event.size });
|
|
67
|
+
}));
|
|
68
|
+
}
|
|
69
|
+
setVisible(isVisible) {
|
|
70
|
+
this.api._onDidVisibilityChange.fire({ isVisible });
|
|
71
|
+
}
|
|
72
|
+
setActive(isActive) {
|
|
73
|
+
this.api._onDidActiveChange.fire({ isActive });
|
|
74
|
+
}
|
|
75
|
+
layout(size, orthogonalSize) {
|
|
76
|
+
const [width, height] = this.orientation === Orientation.HORIZONTAL
|
|
77
|
+
? [size, orthogonalSize]
|
|
78
|
+
: [orthogonalSize, size];
|
|
79
|
+
super.layout(width, height);
|
|
80
|
+
}
|
|
81
|
+
init(parameters) {
|
|
82
|
+
super.init(parameters);
|
|
83
|
+
this._priority = parameters.priority;
|
|
84
|
+
if (parameters.minimumSize) {
|
|
85
|
+
this._minimumSize = parameters.minimumSize;
|
|
86
|
+
}
|
|
87
|
+
if (parameters.maximumSize) {
|
|
88
|
+
this._maximumSize = parameters.maximumSize;
|
|
89
|
+
}
|
|
90
|
+
if (parameters.snap) {
|
|
91
|
+
this._snap = parameters.snap;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
toJSON() {
|
|
95
|
+
const maximum = (value) => value === Number.MAX_SAFE_INTEGER ||
|
|
96
|
+
value === Number.POSITIVE_INFINITY
|
|
97
|
+
? undefined
|
|
98
|
+
: value;
|
|
99
|
+
const minimum = (value) => (value <= 0 ? undefined : value);
|
|
100
|
+
return Object.assign(Object.assign({}, super.toJSON()), { minimumSize: minimum(this.minimumSize), maximumSize: maximum(this.maximumSize) });
|
|
101
|
+
}
|
|
102
|
+
updateConstraints() {
|
|
103
|
+
this.api._onDidConstraintsChange.fire({
|
|
104
|
+
maximumSize: this._evaluatedMaximumSize,
|
|
105
|
+
minimumSize: this._evaluatedMinimumSize,
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { IDisposable } from '../lifecycle';
|
|
2
|
+
import { IView, LayoutPriority } from './splitview';
|
|
3
|
+
export declare class ViewItem {
|
|
4
|
+
container: HTMLElement;
|
|
5
|
+
view: IView;
|
|
6
|
+
private disposable;
|
|
7
|
+
private _size;
|
|
8
|
+
private _cachedVisibleSize;
|
|
9
|
+
set size(size: number);
|
|
10
|
+
get size(): number;
|
|
11
|
+
get cachedVisibleSize(): number | undefined;
|
|
12
|
+
get visible(): boolean;
|
|
13
|
+
get minimumSize(): number;
|
|
14
|
+
get viewMinimumSize(): number;
|
|
15
|
+
get maximumSize(): number;
|
|
16
|
+
get viewMaximumSize(): number;
|
|
17
|
+
get priority(): LayoutPriority | undefined;
|
|
18
|
+
get snap(): boolean;
|
|
19
|
+
set enabled(enabled: boolean);
|
|
20
|
+
constructor(container: HTMLElement, view: IView, size: number | {
|
|
21
|
+
cachedVisibleSize: number;
|
|
22
|
+
}, disposable: IDisposable);
|
|
23
|
+
setVisible(visible: boolean, size?: number): void;
|
|
24
|
+
dispose(): IView;
|
|
25
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { clamp } from '../math';
|
|
2
|
+
export class ViewItem {
|
|
3
|
+
set size(size) {
|
|
4
|
+
this._size = size;
|
|
5
|
+
}
|
|
6
|
+
get size() {
|
|
7
|
+
return this._size;
|
|
8
|
+
}
|
|
9
|
+
get cachedVisibleSize() {
|
|
10
|
+
return this._cachedVisibleSize;
|
|
11
|
+
}
|
|
12
|
+
get visible() {
|
|
13
|
+
return typeof this._cachedVisibleSize === 'undefined';
|
|
14
|
+
}
|
|
15
|
+
get minimumSize() {
|
|
16
|
+
return this.visible ? this.view.minimumSize : 0;
|
|
17
|
+
}
|
|
18
|
+
get viewMinimumSize() {
|
|
19
|
+
return this.view.minimumSize;
|
|
20
|
+
}
|
|
21
|
+
get maximumSize() {
|
|
22
|
+
return this.visible ? this.view.maximumSize : 0;
|
|
23
|
+
}
|
|
24
|
+
get viewMaximumSize() {
|
|
25
|
+
return this.view.maximumSize;
|
|
26
|
+
}
|
|
27
|
+
get priority() {
|
|
28
|
+
return this.view.priority;
|
|
29
|
+
}
|
|
30
|
+
get snap() {
|
|
31
|
+
return !!this.view.snap;
|
|
32
|
+
}
|
|
33
|
+
set enabled(enabled) {
|
|
34
|
+
this.container.style.pointerEvents = enabled ? '' : 'none';
|
|
35
|
+
}
|
|
36
|
+
constructor(container, view, size, disposable) {
|
|
37
|
+
this.container = container;
|
|
38
|
+
this.view = view;
|
|
39
|
+
this.disposable = disposable;
|
|
40
|
+
this._cachedVisibleSize = undefined;
|
|
41
|
+
if (typeof size === 'number') {
|
|
42
|
+
this._size = size;
|
|
43
|
+
this._cachedVisibleSize = undefined;
|
|
44
|
+
container.classList.add('visible');
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
this._size = 0;
|
|
48
|
+
this._cachedVisibleSize = size.cachedVisibleSize;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
setVisible(visible, size) {
|
|
52
|
+
var _a;
|
|
53
|
+
if (visible === this.visible) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
if (visible) {
|
|
57
|
+
this.size = clamp((_a = this._cachedVisibleSize) !== null && _a !== void 0 ? _a : 0, this.viewMinimumSize, this.viewMaximumSize);
|
|
58
|
+
this._cachedVisibleSize = undefined;
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
this._cachedVisibleSize =
|
|
62
|
+
typeof size === 'number' ? size : this.size;
|
|
63
|
+
this.size = 0;
|
|
64
|
+
}
|
|
65
|
+
this.container.classList.toggle('visible', visible);
|
|
66
|
+
if (this.view.setVisible) {
|
|
67
|
+
this.view.setVisible(visible);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
dispose() {
|
|
71
|
+
this.disposable.dispose();
|
|
72
|
+
return this.view;
|
|
73
|
+
}
|
|
74
|
+
}
|
package/dist/esm/svg.js
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
const createSvgElementFromPath = (params) => {
|
|
2
|
+
const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
|
|
3
|
+
svg.setAttributeNS(null, 'height', params.height);
|
|
4
|
+
svg.setAttributeNS(null, 'width', params.width);
|
|
5
|
+
svg.setAttributeNS(null, 'viewBox', params.viewbox);
|
|
6
|
+
svg.setAttributeNS(null, 'aria-hidden', 'false');
|
|
7
|
+
svg.setAttributeNS(null, 'focusable', 'false');
|
|
8
|
+
svg.classList.add('dockview-svg');
|
|
9
|
+
const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');
|
|
10
|
+
path.setAttributeNS(null, 'd', params.path);
|
|
11
|
+
svg.appendChild(path);
|
|
12
|
+
return svg;
|
|
13
|
+
};
|
|
14
|
+
export const createCloseButton = () => createSvgElementFromPath({
|
|
15
|
+
width: '11',
|
|
16
|
+
height: '11',
|
|
17
|
+
viewbox: '0 0 28 28',
|
|
18
|
+
path: 'M2.1 27.3L0 25.2L11.55 13.65L0 2.1L2.1 0L13.65 11.55L25.2 0L27.3 2.1L15.75 13.65L27.3 25.2L25.2 27.3L13.65 15.75L2.1 27.3Z',
|
|
19
|
+
});
|
|
20
|
+
export const createExpandMoreButton = () => createSvgElementFromPath({
|
|
21
|
+
width: '11',
|
|
22
|
+
height: '11',
|
|
23
|
+
viewbox: '0 0 24 15',
|
|
24
|
+
path: 'M12 14.15L0 2.15L2.15 0L12 9.9L21.85 0.0499992L24 2.2L12 14.15Z',
|
|
25
|
+
});
|
|
26
|
+
export const createChevronRightButton = () => createSvgElementFromPath({
|
|
27
|
+
width: '11',
|
|
28
|
+
height: '11',
|
|
29
|
+
viewbox: '0 0 15 25',
|
|
30
|
+
path: 'M2.15 24.1L0 21.95L9.9 12.05L0 2.15L2.15 0L14.2 12.05L2.15 24.1Z',
|
|
31
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|