dockview 2.1.4 → 3.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/dist/cjs/dockview/dockview.d.ts +0 -1
- package/dist/cjs/dockview/dockview.js +3 -3
- package/dist/cjs/dockview/headerActionsRenderer.js +1 -1
- package/dist/cjs/dockview/reactContentPart.js +1 -1
- package/dist/cjs/dockview/reactHeaderPart.js +1 -1
- package/dist/cjs/dockview/reactWatermarkPart.js +1 -1
- package/dist/cjs/gridview/gridview.d.ts +2 -7
- package/dist/cjs/gridview/gridview.js +47 -20
- package/dist/cjs/paneview/paneview.d.ts +2 -6
- package/dist/cjs/paneview/paneview.js +54 -36
- package/dist/cjs/paneview/view.d.ts +2 -2
- package/dist/cjs/splitview/splitview.d.ts +2 -7
- package/dist/cjs/splitview/splitview.js +52 -20
- package/dist/dockview.amd.js +287 -238
- package/dist/dockview.amd.js.map +1 -1
- package/dist/dockview.amd.min.js +2 -2
- package/dist/dockview.amd.min.js.map +1 -1
- package/dist/dockview.amd.min.noStyle.js +2 -2
- package/dist/dockview.amd.min.noStyle.js.map +1 -1
- package/dist/dockview.amd.noStyle.js +287 -238
- package/dist/dockview.amd.noStyle.js.map +1 -1
- package/dist/dockview.cjs.js +287 -238
- package/dist/dockview.cjs.js.map +1 -1
- package/dist/dockview.esm.js +283 -238
- package/dist/dockview.esm.js.map +1 -1
- package/dist/dockview.esm.min.js +2 -2
- package/dist/dockview.esm.min.js.map +1 -1
- package/dist/dockview.js +287 -238
- package/dist/dockview.js.map +1 -1
- package/dist/dockview.min.js +2 -2
- package/dist/dockview.min.js.map +1 -1
- package/dist/dockview.min.noStyle.js +2 -2
- package/dist/dockview.min.noStyle.js.map +1 -1
- package/dist/dockview.noStyle.js +287 -238
- package/dist/dockview.noStyle.js.map +1 -1
- package/dist/esm/dockview/dockview.d.ts +0 -1
- package/dist/esm/dockview/dockview.js +4 -4
- package/dist/esm/dockview/headerActionsRenderer.js +1 -1
- package/dist/esm/dockview/reactContentPart.js +1 -1
- package/dist/esm/dockview/reactHeaderPart.js +1 -1
- package/dist/esm/dockview/reactWatermarkPart.js +1 -1
- package/dist/esm/gridview/gridview.d.ts +2 -7
- package/dist/esm/gridview/gridview.js +36 -20
- package/dist/esm/paneview/paneview.d.ts +2 -6
- package/dist/esm/paneview/paneview.js +53 -33
- package/dist/esm/paneview/view.d.ts +2 -2
- package/dist/esm/splitview/splitview.d.ts +2 -7
- package/dist/esm/splitview/splitview.js +41 -20
- package/package.json +2 -2
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { DockviewWillDropEvent, DockviewDidDropEvent, IWatermarkPanelProps, IDockviewHeaderActionsProps, IDockviewPanelHeaderProps, IDockviewPanelProps, DockviewOptions, DockviewReadyEvent } from 'dockview-core';
|
|
3
3
|
export interface IDockviewReactProps extends DockviewOptions {
|
|
4
|
-
className?: string;
|
|
5
4
|
tabComponents?: Record<string, React.FunctionComponent<IDockviewPanelHeaderProps>>;
|
|
6
5
|
components: Record<string, React.FunctionComponent<IDockviewPanelProps>>;
|
|
7
6
|
watermarkComponent?: React.FunctionComponent<IWatermarkPanelProps>;
|
|
@@ -47,7 +47,7 @@ function createGroupControlElement(component, store) {
|
|
|
47
47
|
}
|
|
48
48
|
var DEFAULT_REACT_TAB = 'props.defaultTabComponent';
|
|
49
49
|
function extractCoreOptions(props) {
|
|
50
|
-
var coreOptions = dockview_core_1.
|
|
50
|
+
var coreOptions = dockview_core_1.PROPERTY_KEYS_DOCKVIEW.reduce(function (obj, key) {
|
|
51
51
|
if (key in props) {
|
|
52
52
|
obj[key] = props[key];
|
|
53
53
|
}
|
|
@@ -63,7 +63,7 @@ exports.DockviewReact = react_1.default.forwardRef(function (props, ref) {
|
|
|
63
63
|
var prevProps = react_1.default.useRef({});
|
|
64
64
|
react_1.default.useEffect(function () {
|
|
65
65
|
var changes = {};
|
|
66
|
-
dockview_core_1.
|
|
66
|
+
dockview_core_1.PROPERTY_KEYS_DOCKVIEW.forEach(function (propKey) {
|
|
67
67
|
var key = propKey;
|
|
68
68
|
var propValue = props[key];
|
|
69
69
|
if (key in props && propValue !== prevProps.current[key]) {
|
|
@@ -77,7 +77,7 @@ exports.DockviewReact = react_1.default.forwardRef(function (props, ref) {
|
|
|
77
77
|
// not yet fully initialized
|
|
78
78
|
}
|
|
79
79
|
prevProps.current = props;
|
|
80
|
-
}, dockview_core_1.
|
|
80
|
+
}, dockview_core_1.PROPERTY_KEYS_DOCKVIEW.map(function (key) { return props[key]; }));
|
|
81
81
|
react_1.default.useEffect(function () {
|
|
82
82
|
var _a;
|
|
83
83
|
if (!domRef.current) {
|
|
@@ -10,7 +10,7 @@ var ReactHeaderActionsRendererPart = /** @class */ (function () {
|
|
|
10
10
|
this._group = _group;
|
|
11
11
|
this.mutableDisposable = new dockview_core_1.DockviewMutableDisposable();
|
|
12
12
|
this._element = document.createElement('div');
|
|
13
|
-
this._element.className = '
|
|
13
|
+
this._element.className = 'dv-react-part';
|
|
14
14
|
this._element.style.height = '100%';
|
|
15
15
|
this._element.style.width = '100%';
|
|
16
16
|
}
|
|
@@ -13,7 +13,7 @@ var ReactPanelContentPart = /** @class */ (function () {
|
|
|
13
13
|
this._onDidBlur = new dockview_core_1.DockviewEmitter();
|
|
14
14
|
this.onDidBlur = this._onDidBlur.event;
|
|
15
15
|
this._element = document.createElement('div');
|
|
16
|
-
this._element.className = '
|
|
16
|
+
this._element.className = 'dv-react-part';
|
|
17
17
|
this._element.style.height = '100%';
|
|
18
18
|
this._element.style.width = '100%';
|
|
19
19
|
}
|
|
@@ -8,7 +8,7 @@ var ReactPanelHeaderPart = /** @class */ (function () {
|
|
|
8
8
|
this.component = component;
|
|
9
9
|
this.reactPortalStore = reactPortalStore;
|
|
10
10
|
this._element = document.createElement('div');
|
|
11
|
-
this._element.className = '
|
|
11
|
+
this._element.className = 'dv-react-part';
|
|
12
12
|
this._element.style.height = '100%';
|
|
13
13
|
this._element.style.width = '100%';
|
|
14
14
|
}
|
|
@@ -8,7 +8,7 @@ var ReactWatermarkPart = /** @class */ (function () {
|
|
|
8
8
|
this.component = component;
|
|
9
9
|
this.reactPortalStore = reactPortalStore;
|
|
10
10
|
this._element = document.createElement('div');
|
|
11
|
-
this._element.className = '
|
|
11
|
+
this._element.className = 'dv-react-part';
|
|
12
12
|
this._element.style.height = '100%';
|
|
13
13
|
this._element.style.width = '100%';
|
|
14
14
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { GridviewPanelApi,
|
|
2
|
+
import { GridviewPanelApi, GridviewApi, GridviewOptions } from 'dockview-core';
|
|
3
3
|
import { PanelParameters } from '../types';
|
|
4
4
|
export interface GridviewReadyEvent {
|
|
5
5
|
api: GridviewApi;
|
|
@@ -10,13 +10,8 @@ export interface IGridviewPanelProps<T extends {
|
|
|
10
10
|
api: GridviewPanelApi;
|
|
11
11
|
containerApi: GridviewApi;
|
|
12
12
|
}
|
|
13
|
-
export interface IGridviewReactProps {
|
|
14
|
-
orientation?: Orientation;
|
|
13
|
+
export interface IGridviewReactProps extends GridviewOptions {
|
|
15
14
|
onReady: (event: GridviewReadyEvent) => void;
|
|
16
15
|
components: Record<string, React.FunctionComponent<IGridviewPanelProps>>;
|
|
17
|
-
hideBorders?: boolean;
|
|
18
|
-
className?: string;
|
|
19
|
-
proportionalLayout?: boolean;
|
|
20
|
-
disableAutoResizing?: boolean;
|
|
21
16
|
}
|
|
22
17
|
export declare const GridviewReact: React.ForwardRefExoticComponent<IGridviewReactProps & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -1,4 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
2
13
|
var __read = (this && this.__read) || function (o, n) {
|
|
3
14
|
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
4
15
|
if (!m) return o;
|
|
@@ -24,37 +35,51 @@ var react_1 = __importDefault(require("react"));
|
|
|
24
35
|
var dockview_core_1 = require("dockview-core");
|
|
25
36
|
var view_1 = require("./view");
|
|
26
37
|
var react_2 = require("../react");
|
|
38
|
+
function extractCoreOptions(props) {
|
|
39
|
+
var coreOptions = dockview_core_1.PROPERTY_KEYS_GRIDVIEW.reduce(function (obj, key) {
|
|
40
|
+
if (key in props) {
|
|
41
|
+
obj[key] = props[key];
|
|
42
|
+
}
|
|
43
|
+
return obj;
|
|
44
|
+
}, {});
|
|
45
|
+
return coreOptions;
|
|
46
|
+
}
|
|
27
47
|
exports.GridviewReact = react_1.default.forwardRef(function (props, ref) {
|
|
28
48
|
var domRef = react_1.default.useRef(null);
|
|
29
49
|
var gridviewRef = react_1.default.useRef();
|
|
30
50
|
var _a = __read((0, react_2.usePortalsLifecycle)(), 2), portals = _a[0], addPortal = _a[1];
|
|
31
51
|
react_1.default.useImperativeHandle(ref, function () { return domRef.current; }, []);
|
|
52
|
+
var prevProps = react_1.default.useRef({});
|
|
53
|
+
react_1.default.useEffect(function () {
|
|
54
|
+
var changes = {};
|
|
55
|
+
dockview_core_1.PROPERTY_KEYS_GRIDVIEW.forEach(function (propKey) {
|
|
56
|
+
var key = propKey;
|
|
57
|
+
var propValue = props[key];
|
|
58
|
+
if (key in props && propValue !== prevProps.current[key]) {
|
|
59
|
+
changes[key] = propValue;
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
if (gridviewRef.current) {
|
|
63
|
+
gridviewRef.current.updateOptions(changes);
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
// not yet fully initialized
|
|
67
|
+
}
|
|
68
|
+
prevProps.current = props;
|
|
69
|
+
}, dockview_core_1.PROPERTY_KEYS_GRIDVIEW.map(function (key) { return props[key]; }));
|
|
32
70
|
react_1.default.useEffect(function () {
|
|
33
|
-
var _a;
|
|
34
71
|
if (!domRef.current) {
|
|
35
72
|
return function () {
|
|
36
73
|
// noop
|
|
37
74
|
};
|
|
38
75
|
}
|
|
39
|
-
var
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
? props.proportionalLayout
|
|
43
|
-
: true,
|
|
44
|
-
orientation: (_a = props.orientation) !== null && _a !== void 0 ? _a : dockview_core_1.Orientation.HORIZONTAL,
|
|
45
|
-
frameworkComponents: props.components,
|
|
46
|
-
frameworkComponentFactory: {
|
|
47
|
-
createComponent: function (id, componentId, component) {
|
|
48
|
-
return new view_1.ReactGridPanelView(id, componentId, component, {
|
|
49
|
-
addPortal: addPortal,
|
|
50
|
-
});
|
|
51
|
-
},
|
|
76
|
+
var frameworkOptions = {
|
|
77
|
+
createComponent: function (options) {
|
|
78
|
+
return new view_1.ReactGridPanelView(options.id, options.name, props.components[options.name], { addPortal: addPortal });
|
|
52
79
|
},
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
});
|
|
57
|
-
var _b = domRef.current, clientWidth = _b.clientWidth, clientHeight = _b.clientHeight;
|
|
80
|
+
};
|
|
81
|
+
var api = (0, dockview_core_1.createGridview)(domRef.current, __assign(__assign({}, extractCoreOptions(props)), frameworkOptions));
|
|
82
|
+
var _a = domRef.current, clientWidth = _a.clientWidth, clientHeight = _a.clientHeight;
|
|
58
83
|
api.layout(clientWidth, clientHeight);
|
|
59
84
|
if (props.onReady) {
|
|
60
85
|
props.onReady({ api: api });
|
|
@@ -69,7 +94,9 @@ exports.GridviewReact = react_1.default.forwardRef(function (props, ref) {
|
|
|
69
94
|
return;
|
|
70
95
|
}
|
|
71
96
|
gridviewRef.current.updateOptions({
|
|
72
|
-
|
|
97
|
+
createComponent: function (options) {
|
|
98
|
+
return new view_1.ReactGridPanelView(options.id, options.name, props.components[options.name], { addPortal: addPortal });
|
|
99
|
+
},
|
|
73
100
|
});
|
|
74
101
|
}, [props.components]);
|
|
75
102
|
return (react_1.default.createElement("div", { className: props.className, style: { height: '100%', width: '100%' }, ref: domRef }, portals));
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { PaneviewPanelApi,
|
|
2
|
+
import { PaneviewPanelApi, PaneviewApi, PaneviewDropEvent, PaneviewOptions } from 'dockview-core';
|
|
3
3
|
import { PanelParameters } from '../types';
|
|
4
4
|
export interface PaneviewReadyEvent {
|
|
5
5
|
api: PaneviewApi;
|
|
@@ -11,14 +11,10 @@ export interface IPaneviewPanelProps<T extends {
|
|
|
11
11
|
containerApi: PaneviewApi;
|
|
12
12
|
title: string;
|
|
13
13
|
}
|
|
14
|
-
export interface IPaneviewReactProps {
|
|
14
|
+
export interface IPaneviewReactProps extends PaneviewOptions {
|
|
15
15
|
onReady: (event: PaneviewReadyEvent) => void;
|
|
16
16
|
components: Record<string, React.FunctionComponent<IPaneviewPanelProps>>;
|
|
17
17
|
headerComponents?: Record<string, React.FunctionComponent<IPaneviewPanelProps>>;
|
|
18
|
-
className?: string;
|
|
19
|
-
disableAutoResizing?: boolean;
|
|
20
|
-
disableDnd?: boolean;
|
|
21
|
-
showDndOverlay?: (event: PaneviewDndOverlayEvent) => boolean;
|
|
22
18
|
onDidDrop?(event: PaneviewDropEvent): void;
|
|
23
19
|
}
|
|
24
20
|
export declare const PaneviewReact: React.ForwardRefExoticComponent<IPaneviewReactProps & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -35,35 +35,56 @@ var react_1 = __importDefault(require("react"));
|
|
|
35
35
|
var dockview_core_1 = require("dockview-core");
|
|
36
36
|
var react_2 = require("../react");
|
|
37
37
|
var view_1 = require("./view");
|
|
38
|
+
function extractCoreOptions(props) {
|
|
39
|
+
var coreOptions = dockview_core_1.PROPERTY_KEYS_PANEVIEW.reduce(function (obj, key) {
|
|
40
|
+
if (key in props) {
|
|
41
|
+
obj[key] = props[key];
|
|
42
|
+
}
|
|
43
|
+
return obj;
|
|
44
|
+
}, {});
|
|
45
|
+
return coreOptions;
|
|
46
|
+
}
|
|
38
47
|
exports.PaneviewReact = react_1.default.forwardRef(function (props, ref) {
|
|
39
48
|
var domRef = react_1.default.useRef(null);
|
|
40
49
|
var paneviewRef = react_1.default.useRef();
|
|
41
50
|
var _a = __read((0, react_2.usePortalsLifecycle)(), 2), portals = _a[0], addPortal = _a[1];
|
|
42
51
|
react_1.default.useImperativeHandle(ref, function () { return domRef.current; }, []);
|
|
52
|
+
var prevProps = react_1.default.useRef({});
|
|
43
53
|
react_1.default.useEffect(function () {
|
|
44
|
-
var
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
frameworkComponents: props.components,
|
|
52
|
-
components: {},
|
|
53
|
-
headerComponents: {},
|
|
54
|
-
disableDnd: props.disableDnd,
|
|
55
|
-
headerframeworkComponents: props.headerComponents,
|
|
56
|
-
frameworkWrapper: {
|
|
57
|
-
header: {
|
|
58
|
-
createComponent: createComponent,
|
|
59
|
-
},
|
|
60
|
-
body: {
|
|
61
|
-
createComponent: createComponent,
|
|
62
|
-
},
|
|
63
|
-
},
|
|
64
|
-
showDndOverlay: props.showDndOverlay,
|
|
54
|
+
var changes = {};
|
|
55
|
+
dockview_core_1.PROPERTY_KEYS_PANEVIEW.forEach(function (propKey) {
|
|
56
|
+
var key = propKey;
|
|
57
|
+
var propValue = props[key];
|
|
58
|
+
if (key in props && propValue !== prevProps.current[key]) {
|
|
59
|
+
changes[key] = propValue;
|
|
60
|
+
}
|
|
65
61
|
});
|
|
66
|
-
|
|
62
|
+
if (paneviewRef.current) {
|
|
63
|
+
paneviewRef.current.updateOptions(changes);
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
// not yet fully initialized
|
|
67
|
+
}
|
|
68
|
+
prevProps.current = props;
|
|
69
|
+
}, dockview_core_1.PROPERTY_KEYS_PANEVIEW.map(function (key) { return props[key]; }));
|
|
70
|
+
react_1.default.useEffect(function () {
|
|
71
|
+
var _a;
|
|
72
|
+
if (!domRef.current) {
|
|
73
|
+
return function () {
|
|
74
|
+
// noop
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
var headerComponents = (_a = props.headerComponents) !== null && _a !== void 0 ? _a : {};
|
|
78
|
+
var frameworkOptions = {
|
|
79
|
+
createComponent: function (options) {
|
|
80
|
+
return new view_1.PanePanelSection(options.id, props.components[options.name], { addPortal: addPortal });
|
|
81
|
+
},
|
|
82
|
+
createHeaderComponent: function (options) {
|
|
83
|
+
return new view_1.PanePanelSection(options.id, headerComponents[options.name], { addPortal: addPortal });
|
|
84
|
+
},
|
|
85
|
+
};
|
|
86
|
+
var api = (0, dockview_core_1.createPaneview)(domRef.current, __assign(__assign({}, extractCoreOptions(props)), frameworkOptions));
|
|
87
|
+
var _b = domRef.current, clientWidth = _b.clientWidth, clientHeight = _b.clientHeight;
|
|
67
88
|
api.layout(clientWidth, clientHeight);
|
|
68
89
|
if (props.onReady) {
|
|
69
90
|
props.onReady({ api: api });
|
|
@@ -78,41 +99,38 @@ exports.PaneviewReact = react_1.default.forwardRef(function (props, ref) {
|
|
|
78
99
|
return;
|
|
79
100
|
}
|
|
80
101
|
paneviewRef.current.updateOptions({
|
|
81
|
-
|
|
102
|
+
createComponent: function (options) {
|
|
103
|
+
return new view_1.PanePanelSection(options.id, props.components[options.name], { addPortal: addPortal });
|
|
104
|
+
},
|
|
82
105
|
});
|
|
83
106
|
}, [props.components]);
|
|
84
107
|
react_1.default.useEffect(function () {
|
|
108
|
+
var _a;
|
|
85
109
|
if (!paneviewRef.current) {
|
|
86
110
|
return;
|
|
87
111
|
}
|
|
112
|
+
var headerComponents = (_a = props.headerComponents) !== null && _a !== void 0 ? _a : {};
|
|
88
113
|
paneviewRef.current.updateOptions({
|
|
89
|
-
|
|
114
|
+
createHeaderComponent: function (options) {
|
|
115
|
+
return new view_1.PanePanelSection(options.id, headerComponents[options.name], { addPortal: addPortal });
|
|
116
|
+
},
|
|
90
117
|
});
|
|
91
118
|
}, [props.headerComponents]);
|
|
92
119
|
react_1.default.useEffect(function () {
|
|
93
120
|
if (!paneviewRef.current) {
|
|
94
121
|
return function () {
|
|
95
|
-
//
|
|
122
|
+
// noop
|
|
96
123
|
};
|
|
97
124
|
}
|
|
98
|
-
var
|
|
99
|
-
var disposable = api.onDidDrop(function (event) {
|
|
125
|
+
var disposable = paneviewRef.current.onDidDrop(function (event) {
|
|
100
126
|
if (props.onDidDrop) {
|
|
101
|
-
props.onDidDrop(
|
|
127
|
+
props.onDidDrop(event);
|
|
102
128
|
}
|
|
103
129
|
});
|
|
104
130
|
return function () {
|
|
105
131
|
disposable.dispose();
|
|
106
132
|
};
|
|
107
133
|
}, [props.onDidDrop]);
|
|
108
|
-
react_1.default.useEffect(function () {
|
|
109
|
-
if (!paneviewRef.current) {
|
|
110
|
-
return;
|
|
111
|
-
}
|
|
112
|
-
paneviewRef.current.updateOptions({
|
|
113
|
-
showDndOverlay: props.showDndOverlay,
|
|
114
|
-
});
|
|
115
|
-
}, [props.showDndOverlay]);
|
|
116
134
|
return (react_1.default.createElement("div", { className: props.className, style: { height: '100%', width: '100%' }, ref: domRef }, portals));
|
|
117
135
|
});
|
|
118
136
|
exports.PaneviewReact.displayName = 'PaneviewComponent';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { PanelUpdateEvent,
|
|
2
|
+
import { PanelUpdateEvent, IPanePart, PanePanelComponentInitParameter } from 'dockview-core';
|
|
3
3
|
import { ReactPortalStore } from '../react';
|
|
4
4
|
import { IPaneviewPanelProps } from './paneview';
|
|
5
|
-
export declare class PanePanelSection implements
|
|
5
|
+
export declare class PanePanelSection implements IPanePart {
|
|
6
6
|
readonly id: string;
|
|
7
7
|
private readonly component;
|
|
8
8
|
private readonly reactPortalStore;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { SplitviewApi, SplitviewPanelApi,
|
|
2
|
+
import { SplitviewApi, SplitviewPanelApi, SplitviewOptions } from 'dockview-core';
|
|
3
3
|
import { PanelParameters } from '../types';
|
|
4
4
|
export interface SplitviewReadyEvent {
|
|
5
5
|
api: SplitviewApi;
|
|
@@ -10,13 +10,8 @@ export interface ISplitviewPanelProps<T extends {
|
|
|
10
10
|
api: SplitviewPanelApi;
|
|
11
11
|
containerApi: SplitviewApi;
|
|
12
12
|
}
|
|
13
|
-
export interface ISplitviewReactProps {
|
|
14
|
-
orientation?: Orientation;
|
|
13
|
+
export interface ISplitviewReactProps extends SplitviewOptions {
|
|
15
14
|
onReady: (event: SplitviewReadyEvent) => void;
|
|
16
15
|
components: Record<string, React.FunctionComponent<ISplitviewPanelProps>>;
|
|
17
|
-
proportionalLayout?: boolean;
|
|
18
|
-
hideBorders?: boolean;
|
|
19
|
-
className?: string;
|
|
20
|
-
disableAutoResizing?: boolean;
|
|
21
16
|
}
|
|
22
17
|
export declare const SplitviewReact: React.ForwardRefExoticComponent<ISplitviewReactProps & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -1,4 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
2
13
|
var __read = (this && this.__read) || function (o, n) {
|
|
3
14
|
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
4
15
|
if (!m) return o;
|
|
@@ -24,32 +35,51 @@ var react_1 = __importDefault(require("react"));
|
|
|
24
35
|
var dockview_core_1 = require("dockview-core");
|
|
25
36
|
var react_2 = require("../react");
|
|
26
37
|
var view_1 = require("./view");
|
|
38
|
+
function extractCoreOptions(props) {
|
|
39
|
+
var coreOptions = dockview_core_1.PROPERTY_KEYS_SPLITVIEW.reduce(function (obj, key) {
|
|
40
|
+
if (key in props) {
|
|
41
|
+
obj[key] = props[key];
|
|
42
|
+
}
|
|
43
|
+
return obj;
|
|
44
|
+
}, {});
|
|
45
|
+
return coreOptions;
|
|
46
|
+
}
|
|
27
47
|
exports.SplitviewReact = react_1.default.forwardRef(function (props, ref) {
|
|
28
48
|
var domRef = react_1.default.useRef(null);
|
|
29
49
|
var splitviewRef = react_1.default.useRef();
|
|
30
50
|
var _a = __read((0, react_2.usePortalsLifecycle)(), 2), portals = _a[0], addPortal = _a[1];
|
|
31
51
|
react_1.default.useImperativeHandle(ref, function () { return domRef.current; }, []);
|
|
52
|
+
var prevProps = react_1.default.useRef({});
|
|
32
53
|
react_1.default.useEffect(function () {
|
|
33
|
-
var
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
return new view_1.ReactPanelView(id, componentId, component, {
|
|
41
|
-
addPortal: addPortal,
|
|
42
|
-
});
|
|
43
|
-
},
|
|
44
|
-
},
|
|
45
|
-
proportionalLayout: typeof props.proportionalLayout === 'boolean'
|
|
46
|
-
? props.proportionalLayout
|
|
47
|
-
: true,
|
|
48
|
-
styles: props.hideBorders
|
|
49
|
-
? { separatorBorder: 'transparent' }
|
|
50
|
-
: undefined,
|
|
54
|
+
var changes = {};
|
|
55
|
+
dockview_core_1.PROPERTY_KEYS_SPLITVIEW.forEach(function (propKey) {
|
|
56
|
+
var key = propKey;
|
|
57
|
+
var propValue = props[key];
|
|
58
|
+
if (key in props && propValue !== prevProps.current[key]) {
|
|
59
|
+
changes[key] = propValue;
|
|
60
|
+
}
|
|
51
61
|
});
|
|
52
|
-
|
|
62
|
+
if (splitviewRef.current) {
|
|
63
|
+
splitviewRef.current.updateOptions(changes);
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
// not yet fully initialized
|
|
67
|
+
}
|
|
68
|
+
prevProps.current = props;
|
|
69
|
+
}, dockview_core_1.PROPERTY_KEYS_SPLITVIEW.map(function (key) { return props[key]; }));
|
|
70
|
+
react_1.default.useEffect(function () {
|
|
71
|
+
if (!domRef.current) {
|
|
72
|
+
return function () {
|
|
73
|
+
// noop
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
var frameworkOptions = {
|
|
77
|
+
createComponent: function (options) {
|
|
78
|
+
return new view_1.ReactPanelView(options.id, options.name, props.components[options.name], { addPortal: addPortal });
|
|
79
|
+
},
|
|
80
|
+
};
|
|
81
|
+
var api = (0, dockview_core_1.createSplitview)(domRef.current, __assign(__assign({}, extractCoreOptions(props)), frameworkOptions));
|
|
82
|
+
var _a = domRef.current, clientWidth = _a.clientWidth, clientHeight = _a.clientHeight;
|
|
53
83
|
api.layout(clientWidth, clientHeight);
|
|
54
84
|
if (props.onReady) {
|
|
55
85
|
props.onReady({ api: api });
|
|
@@ -64,7 +94,9 @@ exports.SplitviewReact = react_1.default.forwardRef(function (props, ref) {
|
|
|
64
94
|
return;
|
|
65
95
|
}
|
|
66
96
|
splitviewRef.current.updateOptions({
|
|
67
|
-
|
|
97
|
+
createComponent: function (options) {
|
|
98
|
+
return new view_1.ReactPanelView(options.id, options.name, props.components[options.name], { addPortal: addPortal });
|
|
99
|
+
},
|
|
68
100
|
});
|
|
69
101
|
}, [props.components]);
|
|
70
102
|
return (react_1.default.createElement("div", { className: props.className, style: { height: '100%', width: '100%' }, ref: domRef }, portals));
|