dockview-react 6.6.0 → 7.0.2
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/defaultTab.d.ts +7 -0
- package/dist/cjs/dockview/defaultTab.js +99 -0
- package/dist/cjs/dockview/dockview.d.ts +33 -0
- package/dist/cjs/dockview/dockview.js +285 -0
- package/dist/cjs/dockview/headerActionsRenderer.d.ts +24 -0
- package/dist/cjs/dockview/headerActionsRenderer.js +86 -0
- package/dist/cjs/dockview/reactContentPart.d.ts +21 -0
- package/dist/cjs/dockview/reactContentPart.js +52 -0
- package/dist/cjs/dockview/reactContextMenuItemPart.d.ts +14 -0
- package/dist/cjs/dockview/reactContextMenuItemPart.js +31 -0
- package/dist/cjs/dockview/reactGroupDragGhostPart.d.ts +20 -0
- package/dist/cjs/dockview/reactGroupDragGhostPart.js +32 -0
- package/dist/cjs/dockview/reactHeaderPart.d.ts +17 -0
- package/dist/cjs/dockview/reactHeaderPart.js +46 -0
- package/dist/cjs/dockview/reactTabGroupChipPart.d.ts +23 -0
- package/dist/cjs/dockview/reactTabGroupChipPart.js +36 -0
- package/dist/cjs/dockview/reactWatermarkPart.d.ts +18 -0
- package/dist/cjs/dockview/reactWatermarkPart.js +47 -0
- package/dist/cjs/gridview/gridview.d.ts +17 -0
- package/dist/cjs/gridview/gridview.js +105 -0
- package/dist/cjs/gridview/view.d.ts +9 -0
- package/dist/cjs/gridview/view.js +41 -0
- package/dist/cjs/index.d.ts +9 -0
- package/dist/cjs/index.js +7 -0
- package/dist/cjs/paneview/paneview.d.ts +20 -0
- package/dist/cjs/paneview/paneview.js +137 -0
- package/dist/cjs/paneview/view.d.ts +19 -0
- package/dist/cjs/paneview/view.js +44 -0
- package/dist/cjs/react.d.ts +35 -0
- package/dist/cjs/react.js +183 -0
- package/dist/cjs/splitview/splitview.d.ts +17 -0
- package/dist/cjs/splitview/splitview.js +105 -0
- package/dist/cjs/splitview/view.d.ts +9 -0
- package/dist/cjs/splitview/view.js +39 -0
- package/dist/cjs/svg.d.ts +3 -0
- package/dist/cjs/svg.js +15 -0
- package/dist/cjs/types.d.ts +4 -0
- package/dist/cjs/types.js +2 -0
- package/dist/dockview-react.js +21650 -11
- package/dist/dockview-react.min.js +21 -2
- package/dist/dockview-react.min.js.map +1 -1
- package/dist/esm/dockview/defaultTab.d.ts +7 -0
- package/dist/esm/dockview/defaultTab.js +65 -0
- package/dist/esm/dockview/dockview.d.ts +33 -0
- package/dist/esm/dockview/dockview.js +252 -0
- package/dist/esm/dockview/headerActionsRenderer.d.ts +24 -0
- package/dist/esm/dockview/headerActionsRenderer.js +72 -0
- package/dist/esm/dockview/reactContentPart.d.ts +21 -0
- package/dist/esm/dockview/reactContentPart.js +43 -0
- package/dist/esm/dockview/reactContextMenuItemPart.d.ts +14 -0
- package/dist/esm/dockview/reactContextMenuItemPart.js +22 -0
- package/dist/esm/dockview/reactGroupDragGhostPart.d.ts +20 -0
- package/dist/esm/dockview/reactGroupDragGhostPart.js +23 -0
- package/dist/esm/dockview/reactHeaderPart.d.ts +17 -0
- package/dist/esm/dockview/reactHeaderPart.js +37 -0
- package/dist/esm/dockview/reactTabGroupChipPart.d.ts +23 -0
- package/dist/esm/dockview/reactTabGroupChipPart.js +27 -0
- package/dist/esm/dockview/reactWatermarkPart.d.ts +18 -0
- package/dist/esm/dockview/reactWatermarkPart.js +38 -0
- package/dist/esm/gridview/gridview.d.ts +17 -0
- package/dist/esm/gridview/gridview.js +72 -0
- package/dist/esm/gridview/view.d.ts +9 -0
- package/dist/esm/gridview/view.js +19 -0
- package/dist/esm/index.d.ts +9 -0
- package/dist/esm/index.js +7 -0
- package/dist/esm/paneview/paneview.d.ts +20 -0
- package/dist/esm/paneview/paneview.js +104 -0
- package/dist/esm/paneview/view.d.ts +19 -0
- package/dist/esm/paneview/view.js +35 -0
- package/dist/esm/react.d.ts +35 -0
- package/dist/esm/react.js +134 -0
- package/dist/esm/splitview/splitview.d.ts +17 -0
- package/dist/esm/splitview/splitview.js +72 -0
- package/dist/esm/splitview/view.d.ts +9 -0
- package/dist/esm/splitview/view.js +17 -0
- package/dist/esm/svg.d.ts +3 -0
- package/dist/esm/svg.js +7 -0
- package/dist/esm/types.d.ts +4 -0
- package/dist/esm/types.js +1 -0
- package/dist/package/main.cjs.js +1037 -5
- package/dist/package/main.cjs.min.js +2 -2
- package/dist/package/main.esm.min.mjs +2 -8
- package/dist/package/main.esm.mjs +1027 -1
- package/dist/styles/dockview.css +275 -13
- package/package.json +15 -2
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { IDockviewPanelHeaderProps } from 'dockview';
|
|
3
|
+
export type IDockviewDefaultTabProps = IDockviewPanelHeaderProps & React.HtmlHTMLAttributes<HTMLDivElement> & {
|
|
4
|
+
hideClose?: boolean;
|
|
5
|
+
closeActionOverride?: () => void;
|
|
6
|
+
};
|
|
7
|
+
export declare const DockviewDefaultTab: React.FunctionComponent<IDockviewDefaultTabProps>;
|
|
@@ -0,0 +1,99 @@
|
|
|
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
|
+
};
|
|
13
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
14
|
+
var t = {};
|
|
15
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
16
|
+
t[p] = s[p];
|
|
17
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
18
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
19
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
20
|
+
t[p[i]] = s[p[i]];
|
|
21
|
+
}
|
|
22
|
+
return t;
|
|
23
|
+
};
|
|
24
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
25
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
26
|
+
if (!m) return o;
|
|
27
|
+
var i = m.call(o), r, ar = [], e;
|
|
28
|
+
try {
|
|
29
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
30
|
+
}
|
|
31
|
+
catch (error) { e = { error: error }; }
|
|
32
|
+
finally {
|
|
33
|
+
try {
|
|
34
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
35
|
+
}
|
|
36
|
+
finally { if (e) throw e.error; }
|
|
37
|
+
}
|
|
38
|
+
return ar;
|
|
39
|
+
};
|
|
40
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
41
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
42
|
+
};
|
|
43
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
44
|
+
exports.DockviewDefaultTab = void 0;
|
|
45
|
+
var react_1 = __importDefault(require("react"));
|
|
46
|
+
var svg_1 = require("../svg");
|
|
47
|
+
function useTitle(api) {
|
|
48
|
+
var _a = __read(react_1.default.useState(api.title), 2), title = _a[0], setTitle = _a[1];
|
|
49
|
+
react_1.default.useEffect(function () {
|
|
50
|
+
var disposable = api.onDidTitleChange(function (event) {
|
|
51
|
+
setTitle(event.title);
|
|
52
|
+
});
|
|
53
|
+
// Depending on the order in which React effects are run, the title may already be out of sync (cf. issue #1003).
|
|
54
|
+
if (title !== api.title) {
|
|
55
|
+
setTitle(api.title);
|
|
56
|
+
}
|
|
57
|
+
return function () {
|
|
58
|
+
disposable.dispose();
|
|
59
|
+
};
|
|
60
|
+
}, [api]);
|
|
61
|
+
return title;
|
|
62
|
+
}
|
|
63
|
+
var DockviewDefaultTab = function (_a) {
|
|
64
|
+
var api = _a.api, _containerApi = _a.containerApi, _params = _a.params, hideClose = _a.hideClose, closeActionOverride = _a.closeActionOverride, onPointerDown = _a.onPointerDown, onPointerUp = _a.onPointerUp, onPointerLeave = _a.onPointerLeave, tabLocation = _a.tabLocation, rest = __rest(_a, ["api", "containerApi", "params", "hideClose", "closeActionOverride", "onPointerDown", "onPointerUp", "onPointerLeave", "tabLocation"]);
|
|
65
|
+
var title = useTitle(api);
|
|
66
|
+
var isMiddleMouseButton = react_1.default.useRef(false);
|
|
67
|
+
var onClose = react_1.default.useCallback(function (event) {
|
|
68
|
+
event.preventDefault();
|
|
69
|
+
if (closeActionOverride) {
|
|
70
|
+
closeActionOverride();
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
api.close();
|
|
74
|
+
}
|
|
75
|
+
}, [api, closeActionOverride]);
|
|
76
|
+
var onBtnPointerDown = react_1.default.useCallback(function (event) {
|
|
77
|
+
event.preventDefault();
|
|
78
|
+
}, []);
|
|
79
|
+
var _onPointerDown = react_1.default.useCallback(function (event) {
|
|
80
|
+
isMiddleMouseButton.current = event.button === 1;
|
|
81
|
+
onPointerDown === null || onPointerDown === void 0 ? void 0 : onPointerDown(event);
|
|
82
|
+
}, [onPointerDown]);
|
|
83
|
+
var _onPointerUp = react_1.default.useCallback(function (event) {
|
|
84
|
+
if (isMiddleMouseButton && event.button === 1 && !hideClose) {
|
|
85
|
+
isMiddleMouseButton.current = false;
|
|
86
|
+
onClose(event);
|
|
87
|
+
}
|
|
88
|
+
onPointerUp === null || onPointerUp === void 0 ? void 0 : onPointerUp(event);
|
|
89
|
+
}, [onPointerUp, onClose, hideClose]);
|
|
90
|
+
var _onPointerLeave = react_1.default.useCallback(function (event) {
|
|
91
|
+
isMiddleMouseButton.current = false;
|
|
92
|
+
onPointerLeave === null || onPointerLeave === void 0 ? void 0 : onPointerLeave(event);
|
|
93
|
+
}, [onPointerLeave]);
|
|
94
|
+
return (react_1.default.createElement("div", __assign({ "data-testid": "dockview-dv-default-tab" }, rest, { onPointerDown: _onPointerDown, onPointerUp: _onPointerUp, onPointerLeave: _onPointerLeave, className: "dv-default-tab" }),
|
|
95
|
+
react_1.default.createElement("span", { className: "dv-default-tab-content" }, title),
|
|
96
|
+
!hideClose && (react_1.default.createElement("div", { className: "dv-default-tab-action", onPointerDown: onBtnPointerDown, onClick: onClose },
|
|
97
|
+
react_1.default.createElement(svg_1.CloseButton, null)))));
|
|
98
|
+
};
|
|
99
|
+
exports.DockviewDefaultTab = DockviewDefaultTab;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { DockviewWillDropEvent, DockviewDidDropEvent, IWatermarkPanelProps, IDockviewHeaderActionsProps, IDockviewPanelHeaderProps, IDockviewPanelProps, DockviewOptions, DockviewReadyEvent, BuiltInContextMenuItem, BuiltInChipContextMenuItem, ContextMenuItemConfig, GetTabContextMenuItemsParams, GetTabGroupChipContextMenuItemsParams, IContextMenuItemComponentProps } from 'dockview';
|
|
3
|
+
import { IDockviewTabGroupChipProps } from './reactTabGroupChipPart';
|
|
4
|
+
import { IDockviewGroupDragGhostProps } from './reactGroupDragGhostPart';
|
|
5
|
+
export interface ReactContextMenuItemConfig extends Omit<ContextMenuItemConfig, 'component'> {
|
|
6
|
+
component?: React.FunctionComponent<IContextMenuItemComponentProps>;
|
|
7
|
+
}
|
|
8
|
+
export interface IDockviewReactProps extends DockviewOptions {
|
|
9
|
+
tabComponents?: Record<string, React.FunctionComponent<IDockviewPanelHeaderProps>>;
|
|
10
|
+
components: Record<string, React.FunctionComponent<IDockviewPanelProps>>;
|
|
11
|
+
watermarkComponent?: React.FunctionComponent<IWatermarkPanelProps>;
|
|
12
|
+
defaultTabComponent?: React.FunctionComponent<IDockviewPanelHeaderProps>;
|
|
13
|
+
rightHeaderActionsComponent?: React.FunctionComponent<IDockviewHeaderActionsProps>;
|
|
14
|
+
leftHeaderActionsComponent?: React.FunctionComponent<IDockviewHeaderActionsProps>;
|
|
15
|
+
prefixHeaderActionsComponent?: React.FunctionComponent<IDockviewHeaderActionsProps>;
|
|
16
|
+
getTabContextMenuItems?: (params: GetTabContextMenuItemsParams) => (BuiltInContextMenuItem | ReactContextMenuItemConfig)[];
|
|
17
|
+
getTabGroupChipContextMenuItems?: (params: GetTabGroupChipContextMenuItemsParams) => (BuiltInChipContextMenuItem | ReactContextMenuItemConfig)[];
|
|
18
|
+
tabGroupChipComponent?: React.FunctionComponent<IDockviewTabGroupChipProps>;
|
|
19
|
+
/**
|
|
20
|
+
* Component rendered as the drag ghost (the small floating chip) while
|
|
21
|
+
* a group of panels is being dragged. If omitted, the default
|
|
22
|
+
* `"Multiple Panels (N)"` ghost is used.
|
|
23
|
+
*
|
|
24
|
+
* Note: the ghost is captured by the browser at drag start, so the
|
|
25
|
+
* component must render fast / synchronously enough to be visible
|
|
26
|
+
* before the browser snapshots it.
|
|
27
|
+
*/
|
|
28
|
+
groupDragGhostComponent?: React.FunctionComponent<IDockviewGroupDragGhostProps>;
|
|
29
|
+
onReady: (event: DockviewReadyEvent) => void;
|
|
30
|
+
onDidDrop?: (event: DockviewDidDropEvent) => void;
|
|
31
|
+
onWillDrop?: (event: DockviewWillDropEvent) => void;
|
|
32
|
+
}
|
|
33
|
+
export declare const DockviewReact: React.ForwardRefExoticComponent<IDockviewReactProps & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,285 @@
|
|
|
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
|
+
};
|
|
13
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
14
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
15
|
+
if (!m) return o;
|
|
16
|
+
var i = m.call(o), r, ar = [], e;
|
|
17
|
+
try {
|
|
18
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
19
|
+
}
|
|
20
|
+
catch (error) { e = { error: error }; }
|
|
21
|
+
finally {
|
|
22
|
+
try {
|
|
23
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
24
|
+
}
|
|
25
|
+
finally { if (e) throw e.error; }
|
|
26
|
+
}
|
|
27
|
+
return ar;
|
|
28
|
+
};
|
|
29
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
30
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
31
|
+
};
|
|
32
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
33
|
+
exports.DockviewReact = void 0;
|
|
34
|
+
var react_1 = __importDefault(require("react"));
|
|
35
|
+
var dockview_1 = require("dockview");
|
|
36
|
+
var reactContentPart_1 = require("./reactContentPart");
|
|
37
|
+
var reactHeaderPart_1 = require("./reactHeaderPart");
|
|
38
|
+
var react_2 = require("../react");
|
|
39
|
+
var reactWatermarkPart_1 = require("./reactWatermarkPart");
|
|
40
|
+
var headerActionsRenderer_1 = require("./headerActionsRenderer");
|
|
41
|
+
var reactContextMenuItemPart_1 = require("./reactContextMenuItemPart");
|
|
42
|
+
var reactTabGroupChipPart_1 = require("./reactTabGroupChipPart");
|
|
43
|
+
var reactGroupDragGhostPart_1 = require("./reactGroupDragGhostPart");
|
|
44
|
+
function createGroupControlElement(component, store) {
|
|
45
|
+
return component
|
|
46
|
+
? function (groupPanel) {
|
|
47
|
+
return new headerActionsRenderer_1.ReactHeaderActionsRendererPart(component, store, groupPanel);
|
|
48
|
+
}
|
|
49
|
+
: undefined;
|
|
50
|
+
}
|
|
51
|
+
var DEFAULT_REACT_TAB = 'props.defaultTabComponent';
|
|
52
|
+
function extractCoreOptions(props) {
|
|
53
|
+
var coreOptions = dockview_1.PROPERTY_KEYS_DOCKVIEW.reduce(function (obj, key) {
|
|
54
|
+
if (key in props) {
|
|
55
|
+
obj[key] = props[key];
|
|
56
|
+
}
|
|
57
|
+
return obj;
|
|
58
|
+
}, {});
|
|
59
|
+
return coreOptions;
|
|
60
|
+
}
|
|
61
|
+
exports.DockviewReact = react_1.default.forwardRef(function (props, ref) {
|
|
62
|
+
var domRef = react_1.default.useRef(null);
|
|
63
|
+
var dockviewRef = react_1.default.useRef(undefined);
|
|
64
|
+
var _a = __read((0, react_2.usePortalsLifecycle)(), 2), portals = _a[0], addPortal = _a[1];
|
|
65
|
+
react_1.default.useImperativeHandle(ref, function () { return domRef.current; }, []);
|
|
66
|
+
var prevProps = react_1.default.useRef({});
|
|
67
|
+
react_1.default.useEffect(function () {
|
|
68
|
+
var changes = {};
|
|
69
|
+
dockview_1.PROPERTY_KEYS_DOCKVIEW.forEach(function (propKey) {
|
|
70
|
+
var key = propKey;
|
|
71
|
+
var propValue = props[key];
|
|
72
|
+
if (key in props && propValue !== prevProps.current[key]) {
|
|
73
|
+
changes[key] = propValue;
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
if (dockviewRef.current) {
|
|
77
|
+
dockviewRef.current.updateOptions(changes);
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
// not yet fully initialized
|
|
81
|
+
}
|
|
82
|
+
prevProps.current = props;
|
|
83
|
+
}, dockview_1.PROPERTY_KEYS_DOCKVIEW.map(function (key) { return props[key]; }));
|
|
84
|
+
react_1.default.useEffect(function () {
|
|
85
|
+
var _a;
|
|
86
|
+
if (!domRef.current) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
var frameworkTabComponents = (_a = props.tabComponents) !== null && _a !== void 0 ? _a : {};
|
|
90
|
+
if (props.defaultTabComponent) {
|
|
91
|
+
frameworkTabComponents[DEFAULT_REACT_TAB] =
|
|
92
|
+
props.defaultTabComponent;
|
|
93
|
+
}
|
|
94
|
+
var frameworkOptions = {
|
|
95
|
+
createLeftHeaderActionComponent: createGroupControlElement(props.leftHeaderActionsComponent, { addPortal: addPortal }),
|
|
96
|
+
createRightHeaderActionComponent: createGroupControlElement(props.rightHeaderActionsComponent, { addPortal: addPortal }),
|
|
97
|
+
createPrefixHeaderActionComponent: createGroupControlElement(props.prefixHeaderActionsComponent, { addPortal: addPortal }),
|
|
98
|
+
createComponent: function (options) {
|
|
99
|
+
return new reactContentPart_1.ReactPanelContentPart(options.id, props.components[options.name], {
|
|
100
|
+
addPortal: addPortal,
|
|
101
|
+
});
|
|
102
|
+
},
|
|
103
|
+
createTabComponent: function (options) {
|
|
104
|
+
return new reactHeaderPart_1.ReactPanelHeaderPart(options.id, frameworkTabComponents[options.name], {
|
|
105
|
+
addPortal: addPortal,
|
|
106
|
+
});
|
|
107
|
+
},
|
|
108
|
+
createWatermarkComponent: props.watermarkComponent
|
|
109
|
+
? function () {
|
|
110
|
+
return new reactWatermarkPart_1.ReactWatermarkPart('watermark', props.watermarkComponent, {
|
|
111
|
+
addPortal: addPortal,
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
: undefined,
|
|
115
|
+
defaultTabComponent: props.defaultTabComponent
|
|
116
|
+
? DEFAULT_REACT_TAB
|
|
117
|
+
: undefined,
|
|
118
|
+
createContextMenuItemComponent: function (options) {
|
|
119
|
+
if (!options.component) {
|
|
120
|
+
return undefined;
|
|
121
|
+
}
|
|
122
|
+
return new reactContextMenuItemPart_1.ReactContextMenuItemPart(options.id, options.component, { addPortal: addPortal });
|
|
123
|
+
},
|
|
124
|
+
};
|
|
125
|
+
var coreOptions = extractCoreOptions(props);
|
|
126
|
+
if (props.tabGroupChipComponent) {
|
|
127
|
+
var chipComponent_1 = props.tabGroupChipComponent;
|
|
128
|
+
coreOptions.createTabGroupChipComponent = function () {
|
|
129
|
+
return new reactTabGroupChipPart_1.ReactTabGroupChipPart(chipComponent_1, {
|
|
130
|
+
addPortal: addPortal,
|
|
131
|
+
});
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
if (props.groupDragGhostComponent) {
|
|
135
|
+
var ghostComponent_1 = props.groupDragGhostComponent;
|
|
136
|
+
coreOptions.createGroupDragGhostComponent = function () {
|
|
137
|
+
return new reactGroupDragGhostPart_1.ReactGroupDragGhostPart(ghostComponent_1, {
|
|
138
|
+
addPortal: addPortal,
|
|
139
|
+
});
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
var api = (0, dockview_1.createDockview)(domRef.current, __assign(__assign({}, coreOptions), frameworkOptions));
|
|
143
|
+
var _b = domRef.current, clientWidth = _b.clientWidth, clientHeight = _b.clientHeight;
|
|
144
|
+
api.layout(clientWidth, clientHeight);
|
|
145
|
+
if (props.onReady) {
|
|
146
|
+
props.onReady({ api: api });
|
|
147
|
+
}
|
|
148
|
+
dockviewRef.current = api;
|
|
149
|
+
return function () {
|
|
150
|
+
dockviewRef.current = undefined;
|
|
151
|
+
api.dispose();
|
|
152
|
+
};
|
|
153
|
+
}, []);
|
|
154
|
+
react_1.default.useEffect(function () {
|
|
155
|
+
if (!dockviewRef.current) {
|
|
156
|
+
return function () {
|
|
157
|
+
// noop
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
var disposable = dockviewRef.current.onDidDrop(function (event) {
|
|
161
|
+
if (props.onDidDrop) {
|
|
162
|
+
props.onDidDrop(event);
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
return function () {
|
|
166
|
+
disposable.dispose();
|
|
167
|
+
};
|
|
168
|
+
}, [props.onDidDrop]);
|
|
169
|
+
react_1.default.useEffect(function () {
|
|
170
|
+
if (!dockviewRef.current) {
|
|
171
|
+
return function () {
|
|
172
|
+
// noop
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
var disposable = dockviewRef.current.onWillDrop(function (event) {
|
|
176
|
+
if (props.onWillDrop) {
|
|
177
|
+
props.onWillDrop(event);
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
return function () {
|
|
181
|
+
disposable.dispose();
|
|
182
|
+
};
|
|
183
|
+
}, [props.onWillDrop]);
|
|
184
|
+
react_1.default.useEffect(function () {
|
|
185
|
+
if (!dockviewRef.current) {
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
dockviewRef.current.updateOptions({
|
|
189
|
+
createTabGroupChipComponent: props.tabGroupChipComponent
|
|
190
|
+
? function () {
|
|
191
|
+
return new reactTabGroupChipPart_1.ReactTabGroupChipPart(props.tabGroupChipComponent, {
|
|
192
|
+
addPortal: addPortal,
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
: undefined,
|
|
196
|
+
});
|
|
197
|
+
}, [props.tabGroupChipComponent]);
|
|
198
|
+
react_1.default.useEffect(function () {
|
|
199
|
+
if (!dockviewRef.current) {
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
dockviewRef.current.updateOptions({
|
|
203
|
+
createGroupDragGhostComponent: props.groupDragGhostComponent
|
|
204
|
+
? function () {
|
|
205
|
+
return new reactGroupDragGhostPart_1.ReactGroupDragGhostPart(props.groupDragGhostComponent, {
|
|
206
|
+
addPortal: addPortal,
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
: undefined,
|
|
210
|
+
});
|
|
211
|
+
}, [props.groupDragGhostComponent]);
|
|
212
|
+
react_1.default.useEffect(function () {
|
|
213
|
+
if (!dockviewRef.current) {
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
dockviewRef.current.updateOptions({
|
|
217
|
+
createComponent: function (options) {
|
|
218
|
+
return new reactContentPart_1.ReactPanelContentPart(options.id, props.components[options.name], {
|
|
219
|
+
addPortal: addPortal,
|
|
220
|
+
});
|
|
221
|
+
},
|
|
222
|
+
});
|
|
223
|
+
}, [props.components]);
|
|
224
|
+
react_1.default.useEffect(function () {
|
|
225
|
+
var _a;
|
|
226
|
+
if (!dockviewRef.current) {
|
|
227
|
+
return;
|
|
228
|
+
}
|
|
229
|
+
var frameworkTabComponents = (_a = props.tabComponents) !== null && _a !== void 0 ? _a : {};
|
|
230
|
+
if (props.defaultTabComponent) {
|
|
231
|
+
frameworkTabComponents[DEFAULT_REACT_TAB] =
|
|
232
|
+
props.defaultTabComponent;
|
|
233
|
+
}
|
|
234
|
+
dockviewRef.current.updateOptions({
|
|
235
|
+
defaultTabComponent: props.defaultTabComponent
|
|
236
|
+
? DEFAULT_REACT_TAB
|
|
237
|
+
: undefined,
|
|
238
|
+
createTabComponent: function (options) {
|
|
239
|
+
return new reactHeaderPart_1.ReactPanelHeaderPart(options.id, frameworkTabComponents[options.name], {
|
|
240
|
+
addPortal: addPortal,
|
|
241
|
+
});
|
|
242
|
+
},
|
|
243
|
+
});
|
|
244
|
+
}, [props.tabComponents, props.defaultTabComponent]);
|
|
245
|
+
react_1.default.useEffect(function () {
|
|
246
|
+
if (!dockviewRef.current) {
|
|
247
|
+
return;
|
|
248
|
+
}
|
|
249
|
+
dockviewRef.current.updateOptions({
|
|
250
|
+
createWatermarkComponent: props.watermarkComponent
|
|
251
|
+
? function () {
|
|
252
|
+
return new reactWatermarkPart_1.ReactWatermarkPart('watermark', props.watermarkComponent, {
|
|
253
|
+
addPortal: addPortal,
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
: undefined,
|
|
257
|
+
});
|
|
258
|
+
}, [props.watermarkComponent]);
|
|
259
|
+
react_1.default.useEffect(function () {
|
|
260
|
+
if (!dockviewRef.current) {
|
|
261
|
+
return;
|
|
262
|
+
}
|
|
263
|
+
dockviewRef.current.updateOptions({
|
|
264
|
+
createRightHeaderActionComponent: createGroupControlElement(props.rightHeaderActionsComponent, { addPortal: addPortal }),
|
|
265
|
+
});
|
|
266
|
+
}, [props.rightHeaderActionsComponent]);
|
|
267
|
+
react_1.default.useEffect(function () {
|
|
268
|
+
if (!dockviewRef.current) {
|
|
269
|
+
return;
|
|
270
|
+
}
|
|
271
|
+
dockviewRef.current.updateOptions({
|
|
272
|
+
createLeftHeaderActionComponent: createGroupControlElement(props.leftHeaderActionsComponent, { addPortal: addPortal }),
|
|
273
|
+
});
|
|
274
|
+
}, [props.leftHeaderActionsComponent]);
|
|
275
|
+
react_1.default.useEffect(function () {
|
|
276
|
+
if (!dockviewRef.current) {
|
|
277
|
+
return;
|
|
278
|
+
}
|
|
279
|
+
dockviewRef.current.updateOptions({
|
|
280
|
+
createPrefixHeaderActionComponent: createGroupControlElement(props.prefixHeaderActionsComponent, { addPortal: addPortal }),
|
|
281
|
+
});
|
|
282
|
+
}, [props.prefixHeaderActionsComponent]);
|
|
283
|
+
return (react_1.default.createElement("div", { style: { height: '100%', width: '100%' }, ref: domRef }, portals));
|
|
284
|
+
});
|
|
285
|
+
exports.DockviewReact.displayName = 'DockviewComponent';
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ReactPart, ReactPortalStore } from '../react';
|
|
3
|
+
import { DockviewApi, DockviewGroupPanel, DockviewGroupPanelApi, PanelUpdateEvent, IHeaderActionsRenderer, IDockviewHeaderActionsProps } from 'dockview';
|
|
4
|
+
export declare class ReactHeaderActionsRendererPart implements IHeaderActionsRenderer {
|
|
5
|
+
private readonly component;
|
|
6
|
+
private readonly reactPortalStore;
|
|
7
|
+
private readonly _group;
|
|
8
|
+
private readonly mutableDisposable;
|
|
9
|
+
private readonly _element;
|
|
10
|
+
private _part?;
|
|
11
|
+
get element(): HTMLElement;
|
|
12
|
+
get part(): ReactPart<IDockviewHeaderActionsProps> | undefined;
|
|
13
|
+
constructor(component: React.FunctionComponent<IDockviewHeaderActionsProps>, reactPortalStore: ReactPortalStore, _group: DockviewGroupPanel);
|
|
14
|
+
init(parameters: {
|
|
15
|
+
containerApi: DockviewApi;
|
|
16
|
+
api: DockviewGroupPanelApi;
|
|
17
|
+
}): void;
|
|
18
|
+
dispose(): void;
|
|
19
|
+
update(event: PanelUpdateEvent): void;
|
|
20
|
+
private updatePanels;
|
|
21
|
+
private updateActivePanel;
|
|
22
|
+
private updateGroupActive;
|
|
23
|
+
private updateLocation;
|
|
24
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ReactHeaderActionsRendererPart = void 0;
|
|
4
|
+
var react_1 = require("../react");
|
|
5
|
+
var dockview_1 = require("dockview");
|
|
6
|
+
var ReactHeaderActionsRendererPart = /** @class */ (function () {
|
|
7
|
+
function ReactHeaderActionsRendererPart(component, reactPortalStore, _group) {
|
|
8
|
+
this.component = component;
|
|
9
|
+
this.reactPortalStore = reactPortalStore;
|
|
10
|
+
this._group = _group;
|
|
11
|
+
this.mutableDisposable = new dockview_1.DockviewMutableDisposable();
|
|
12
|
+
this._element = document.createElement('div');
|
|
13
|
+
this._element.className = 'dv-react-part';
|
|
14
|
+
this._element.style.height = '100%';
|
|
15
|
+
this._element.style.width = '100%';
|
|
16
|
+
}
|
|
17
|
+
Object.defineProperty(ReactHeaderActionsRendererPart.prototype, "element", {
|
|
18
|
+
get: function () {
|
|
19
|
+
return this._element;
|
|
20
|
+
},
|
|
21
|
+
enumerable: false,
|
|
22
|
+
configurable: true
|
|
23
|
+
});
|
|
24
|
+
Object.defineProperty(ReactHeaderActionsRendererPart.prototype, "part", {
|
|
25
|
+
get: function () {
|
|
26
|
+
return this._part;
|
|
27
|
+
},
|
|
28
|
+
enumerable: false,
|
|
29
|
+
configurable: true
|
|
30
|
+
});
|
|
31
|
+
ReactHeaderActionsRendererPart.prototype.init = function (parameters) {
|
|
32
|
+
var _this = this;
|
|
33
|
+
this.mutableDisposable.value = new dockview_1.DockviewCompositeDisposable(this._group.model.onDidAddPanel(function () {
|
|
34
|
+
_this.updatePanels();
|
|
35
|
+
}), this._group.model.onDidRemovePanel(function () {
|
|
36
|
+
_this.updatePanels();
|
|
37
|
+
}), this._group.model.onDidActivePanelChange(function () {
|
|
38
|
+
_this.updateActivePanel();
|
|
39
|
+
}), parameters.api.onDidActiveChange(function () {
|
|
40
|
+
_this.updateGroupActive();
|
|
41
|
+
}), parameters.api.onDidLocationChange(function (event) {
|
|
42
|
+
_this.updateLocation(event.location);
|
|
43
|
+
}));
|
|
44
|
+
this._part = new react_1.ReactPart(this.element, this.reactPortalStore, this.component, {
|
|
45
|
+
api: parameters.api,
|
|
46
|
+
containerApi: parameters.containerApi,
|
|
47
|
+
panels: this._group.model.panels,
|
|
48
|
+
activePanel: this._group.model.activePanel,
|
|
49
|
+
isGroupActive: this._group.api.isActive,
|
|
50
|
+
group: this._group,
|
|
51
|
+
headerPosition: this._group.model.headerPosition,
|
|
52
|
+
location: parameters.api.location,
|
|
53
|
+
});
|
|
54
|
+
};
|
|
55
|
+
ReactHeaderActionsRendererPart.prototype.dispose = function () {
|
|
56
|
+
var _a;
|
|
57
|
+
this.mutableDisposable.dispose();
|
|
58
|
+
(_a = this._part) === null || _a === void 0 ? void 0 : _a.dispose();
|
|
59
|
+
};
|
|
60
|
+
ReactHeaderActionsRendererPart.prototype.update = function (event) {
|
|
61
|
+
var _a;
|
|
62
|
+
(_a = this._part) === null || _a === void 0 ? void 0 : _a.update(event.params);
|
|
63
|
+
};
|
|
64
|
+
ReactHeaderActionsRendererPart.prototype.updatePanels = function () {
|
|
65
|
+
this.update({ params: { panels: this._group.model.panels } });
|
|
66
|
+
};
|
|
67
|
+
ReactHeaderActionsRendererPart.prototype.updateActivePanel = function () {
|
|
68
|
+
this.update({
|
|
69
|
+
params: {
|
|
70
|
+
activePanel: this._group.model.activePanel,
|
|
71
|
+
},
|
|
72
|
+
});
|
|
73
|
+
};
|
|
74
|
+
ReactHeaderActionsRendererPart.prototype.updateGroupActive = function () {
|
|
75
|
+
this.update({
|
|
76
|
+
params: {
|
|
77
|
+
isGroupActive: this._group.api.isActive,
|
|
78
|
+
},
|
|
79
|
+
});
|
|
80
|
+
};
|
|
81
|
+
ReactHeaderActionsRendererPart.prototype.updateLocation = function (location) {
|
|
82
|
+
this.update({ params: { location: location } });
|
|
83
|
+
};
|
|
84
|
+
return ReactHeaderActionsRendererPart;
|
|
85
|
+
}());
|
|
86
|
+
exports.ReactHeaderActionsRendererPart = ReactHeaderActionsRendererPart;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ReactPortalStore } from '../react';
|
|
3
|
+
import { DockviewEvent, PanelUpdateEvent, IContentRenderer, GroupPanelPartInitParameters, IDockviewPanelProps } from 'dockview';
|
|
4
|
+
export declare class ReactPanelContentPart implements IContentRenderer {
|
|
5
|
+
readonly id: string;
|
|
6
|
+
private readonly component;
|
|
7
|
+
private readonly reactPortalStore;
|
|
8
|
+
private readonly _element;
|
|
9
|
+
private part?;
|
|
10
|
+
private readonly _onDidFocus;
|
|
11
|
+
readonly onDidFocus: DockviewEvent<void>;
|
|
12
|
+
private readonly _onDidBlur;
|
|
13
|
+
readonly onDidBlur: DockviewEvent<void>;
|
|
14
|
+
get element(): HTMLElement;
|
|
15
|
+
constructor(id: string, component: React.FunctionComponent<IDockviewPanelProps>, reactPortalStore: ReactPortalStore);
|
|
16
|
+
focus(): void;
|
|
17
|
+
init(parameters: GroupPanelPartInitParameters): void;
|
|
18
|
+
update(event: PanelUpdateEvent): void;
|
|
19
|
+
layout(_width: number, _height: number): void;
|
|
20
|
+
dispose(): void;
|
|
21
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ReactPanelContentPart = void 0;
|
|
4
|
+
var react_1 = require("../react");
|
|
5
|
+
var dockview_1 = require("dockview");
|
|
6
|
+
var ReactPanelContentPart = /** @class */ (function () {
|
|
7
|
+
function ReactPanelContentPart(id, component, reactPortalStore) {
|
|
8
|
+
this.id = id;
|
|
9
|
+
this.component = component;
|
|
10
|
+
this.reactPortalStore = reactPortalStore;
|
|
11
|
+
this._onDidFocus = new dockview_1.DockviewEmitter();
|
|
12
|
+
this.onDidFocus = this._onDidFocus.event;
|
|
13
|
+
this._onDidBlur = new dockview_1.DockviewEmitter();
|
|
14
|
+
this.onDidBlur = this._onDidBlur.event;
|
|
15
|
+
this._element = document.createElement('div');
|
|
16
|
+
this._element.className = 'dv-react-part';
|
|
17
|
+
this._element.style.height = '100%';
|
|
18
|
+
this._element.style.width = '100%';
|
|
19
|
+
}
|
|
20
|
+
Object.defineProperty(ReactPanelContentPart.prototype, "element", {
|
|
21
|
+
get: function () {
|
|
22
|
+
return this._element;
|
|
23
|
+
},
|
|
24
|
+
enumerable: false,
|
|
25
|
+
configurable: true
|
|
26
|
+
});
|
|
27
|
+
ReactPanelContentPart.prototype.focus = function () {
|
|
28
|
+
// TODO
|
|
29
|
+
};
|
|
30
|
+
ReactPanelContentPart.prototype.init = function (parameters) {
|
|
31
|
+
this.part = new react_1.ReactPart(this.element, this.reactPortalStore, this.component, {
|
|
32
|
+
params: parameters.params,
|
|
33
|
+
api: parameters.api,
|
|
34
|
+
containerApi: parameters.containerApi,
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
ReactPanelContentPart.prototype.update = function (event) {
|
|
38
|
+
var _a;
|
|
39
|
+
(_a = this.part) === null || _a === void 0 ? void 0 : _a.update({ params: event.params });
|
|
40
|
+
};
|
|
41
|
+
ReactPanelContentPart.prototype.layout = function (_width, _height) {
|
|
42
|
+
// noop
|
|
43
|
+
};
|
|
44
|
+
ReactPanelContentPart.prototype.dispose = function () {
|
|
45
|
+
var _a;
|
|
46
|
+
this._onDidFocus.dispose();
|
|
47
|
+
this._onDidBlur.dispose();
|
|
48
|
+
(_a = this.part) === null || _a === void 0 ? void 0 : _a.dispose();
|
|
49
|
+
};
|
|
50
|
+
return ReactPanelContentPart;
|
|
51
|
+
}());
|
|
52
|
+
exports.ReactPanelContentPart = ReactPanelContentPart;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ReactPortalStore } from '../react';
|
|
3
|
+
import { IContextMenuItemRenderer, IContextMenuItemComponentProps } from 'dockview';
|
|
4
|
+
export declare class ReactContextMenuItemPart implements IContextMenuItemRenderer {
|
|
5
|
+
readonly id: string;
|
|
6
|
+
private readonly component;
|
|
7
|
+
private readonly reactPortalStore;
|
|
8
|
+
private readonly _element;
|
|
9
|
+
private part?;
|
|
10
|
+
get element(): HTMLElement;
|
|
11
|
+
constructor(id: string, component: React.FunctionComponent<IContextMenuItemComponentProps>, reactPortalStore: ReactPortalStore);
|
|
12
|
+
init(props: IContextMenuItemComponentProps): void;
|
|
13
|
+
dispose(): void;
|
|
14
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ReactContextMenuItemPart = void 0;
|
|
4
|
+
var react_1 = require("../react");
|
|
5
|
+
var ReactContextMenuItemPart = /** @class */ (function () {
|
|
6
|
+
function ReactContextMenuItemPart(id, component, reactPortalStore) {
|
|
7
|
+
this.id = id;
|
|
8
|
+
this.component = component;
|
|
9
|
+
this.reactPortalStore = reactPortalStore;
|
|
10
|
+
this._element = document.createElement('div');
|
|
11
|
+
this._element.className = 'dv-react-part';
|
|
12
|
+
this._element.style.height = '100%';
|
|
13
|
+
this._element.style.width = '100%';
|
|
14
|
+
}
|
|
15
|
+
Object.defineProperty(ReactContextMenuItemPart.prototype, "element", {
|
|
16
|
+
get: function () {
|
|
17
|
+
return this._element;
|
|
18
|
+
},
|
|
19
|
+
enumerable: false,
|
|
20
|
+
configurable: true
|
|
21
|
+
});
|
|
22
|
+
ReactContextMenuItemPart.prototype.init = function (props) {
|
|
23
|
+
this.part = new react_1.ReactPart(this._element, this.reactPortalStore, this.component, props);
|
|
24
|
+
};
|
|
25
|
+
ReactContextMenuItemPart.prototype.dispose = function () {
|
|
26
|
+
var _a;
|
|
27
|
+
(_a = this.part) === null || _a === void 0 ? void 0 : _a.dispose();
|
|
28
|
+
};
|
|
29
|
+
return ReactContextMenuItemPart;
|
|
30
|
+
}());
|
|
31
|
+
exports.ReactContextMenuItemPart = ReactContextMenuItemPart;
|