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.
Files changed (85) hide show
  1. package/dist/cjs/dockview/defaultTab.d.ts +7 -0
  2. package/dist/cjs/dockview/defaultTab.js +99 -0
  3. package/dist/cjs/dockview/dockview.d.ts +33 -0
  4. package/dist/cjs/dockview/dockview.js +285 -0
  5. package/dist/cjs/dockview/headerActionsRenderer.d.ts +24 -0
  6. package/dist/cjs/dockview/headerActionsRenderer.js +86 -0
  7. package/dist/cjs/dockview/reactContentPart.d.ts +21 -0
  8. package/dist/cjs/dockview/reactContentPart.js +52 -0
  9. package/dist/cjs/dockview/reactContextMenuItemPart.d.ts +14 -0
  10. package/dist/cjs/dockview/reactContextMenuItemPart.js +31 -0
  11. package/dist/cjs/dockview/reactGroupDragGhostPart.d.ts +20 -0
  12. package/dist/cjs/dockview/reactGroupDragGhostPart.js +32 -0
  13. package/dist/cjs/dockview/reactHeaderPart.d.ts +17 -0
  14. package/dist/cjs/dockview/reactHeaderPart.js +46 -0
  15. package/dist/cjs/dockview/reactTabGroupChipPart.d.ts +23 -0
  16. package/dist/cjs/dockview/reactTabGroupChipPart.js +36 -0
  17. package/dist/cjs/dockview/reactWatermarkPart.d.ts +18 -0
  18. package/dist/cjs/dockview/reactWatermarkPart.js +47 -0
  19. package/dist/cjs/gridview/gridview.d.ts +17 -0
  20. package/dist/cjs/gridview/gridview.js +105 -0
  21. package/dist/cjs/gridview/view.d.ts +9 -0
  22. package/dist/cjs/gridview/view.js +41 -0
  23. package/dist/cjs/index.d.ts +9 -0
  24. package/dist/cjs/index.js +7 -0
  25. package/dist/cjs/paneview/paneview.d.ts +20 -0
  26. package/dist/cjs/paneview/paneview.js +137 -0
  27. package/dist/cjs/paneview/view.d.ts +19 -0
  28. package/dist/cjs/paneview/view.js +44 -0
  29. package/dist/cjs/react.d.ts +35 -0
  30. package/dist/cjs/react.js +183 -0
  31. package/dist/cjs/splitview/splitview.d.ts +17 -0
  32. package/dist/cjs/splitview/splitview.js +105 -0
  33. package/dist/cjs/splitview/view.d.ts +9 -0
  34. package/dist/cjs/splitview/view.js +39 -0
  35. package/dist/cjs/svg.d.ts +3 -0
  36. package/dist/cjs/svg.js +15 -0
  37. package/dist/cjs/types.d.ts +4 -0
  38. package/dist/cjs/types.js +2 -0
  39. package/dist/dockview-react.js +21650 -11
  40. package/dist/dockview-react.min.js +21 -2
  41. package/dist/dockview-react.min.js.map +1 -1
  42. package/dist/esm/dockview/defaultTab.d.ts +7 -0
  43. package/dist/esm/dockview/defaultTab.js +65 -0
  44. package/dist/esm/dockview/dockview.d.ts +33 -0
  45. package/dist/esm/dockview/dockview.js +252 -0
  46. package/dist/esm/dockview/headerActionsRenderer.d.ts +24 -0
  47. package/dist/esm/dockview/headerActionsRenderer.js +72 -0
  48. package/dist/esm/dockview/reactContentPart.d.ts +21 -0
  49. package/dist/esm/dockview/reactContentPart.js +43 -0
  50. package/dist/esm/dockview/reactContextMenuItemPart.d.ts +14 -0
  51. package/dist/esm/dockview/reactContextMenuItemPart.js +22 -0
  52. package/dist/esm/dockview/reactGroupDragGhostPart.d.ts +20 -0
  53. package/dist/esm/dockview/reactGroupDragGhostPart.js +23 -0
  54. package/dist/esm/dockview/reactHeaderPart.d.ts +17 -0
  55. package/dist/esm/dockview/reactHeaderPart.js +37 -0
  56. package/dist/esm/dockview/reactTabGroupChipPart.d.ts +23 -0
  57. package/dist/esm/dockview/reactTabGroupChipPart.js +27 -0
  58. package/dist/esm/dockview/reactWatermarkPart.d.ts +18 -0
  59. package/dist/esm/dockview/reactWatermarkPart.js +38 -0
  60. package/dist/esm/gridview/gridview.d.ts +17 -0
  61. package/dist/esm/gridview/gridview.js +72 -0
  62. package/dist/esm/gridview/view.d.ts +9 -0
  63. package/dist/esm/gridview/view.js +19 -0
  64. package/dist/esm/index.d.ts +9 -0
  65. package/dist/esm/index.js +7 -0
  66. package/dist/esm/paneview/paneview.d.ts +20 -0
  67. package/dist/esm/paneview/paneview.js +104 -0
  68. package/dist/esm/paneview/view.d.ts +19 -0
  69. package/dist/esm/paneview/view.js +35 -0
  70. package/dist/esm/react.d.ts +35 -0
  71. package/dist/esm/react.js +134 -0
  72. package/dist/esm/splitview/splitview.d.ts +17 -0
  73. package/dist/esm/splitview/splitview.js +72 -0
  74. package/dist/esm/splitview/view.d.ts +9 -0
  75. package/dist/esm/splitview/view.js +17 -0
  76. package/dist/esm/svg.d.ts +3 -0
  77. package/dist/esm/svg.js +7 -0
  78. package/dist/esm/types.d.ts +4 -0
  79. package/dist/esm/types.js +1 -0
  80. package/dist/package/main.cjs.js +1037 -5
  81. package/dist/package/main.cjs.min.js +2 -2
  82. package/dist/package/main.esm.min.mjs +2 -8
  83. package/dist/package/main.esm.mjs +1027 -1
  84. package/dist/styles/dockview.css +275 -13
  85. 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;