dockview-react 6.6.1 → 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,20 @@
1
+ import React from 'react';
2
+ import { ReactPortalStore } from '../react';
3
+ import { IDockviewGroupPanel, IGroupDragGhostRenderer, DockviewApi } from 'dockview';
4
+ export interface IDockviewGroupDragGhostProps {
5
+ group: IDockviewGroupPanel;
6
+ api: DockviewApi;
7
+ }
8
+ export declare class ReactGroupDragGhostPart implements IGroupDragGhostRenderer {
9
+ private readonly component;
10
+ private readonly reactPortalStore;
11
+ private readonly _element;
12
+ private part?;
13
+ get element(): HTMLElement;
14
+ constructor(component: React.FunctionComponent<IDockviewGroupDragGhostProps>, reactPortalStore: ReactPortalStore);
15
+ init(params: {
16
+ group: IDockviewGroupPanel;
17
+ api: DockviewApi;
18
+ }): void;
19
+ dispose(): void;
20
+ }
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ReactGroupDragGhostPart = void 0;
4
+ var react_1 = require("../react");
5
+ var ReactGroupDragGhostPart = /** @class */ (function () {
6
+ function ReactGroupDragGhostPart(component, reactPortalStore) {
7
+ this.component = component;
8
+ this.reactPortalStore = reactPortalStore;
9
+ this._element = document.createElement('div');
10
+ this._element.className = 'dv-react-part';
11
+ this._element.style.display = 'inline-flex';
12
+ }
13
+ Object.defineProperty(ReactGroupDragGhostPart.prototype, "element", {
14
+ get: function () {
15
+ return this._element;
16
+ },
17
+ enumerable: false,
18
+ configurable: true
19
+ });
20
+ ReactGroupDragGhostPart.prototype.init = function (params) {
21
+ this.part = new react_1.ReactPart(this._element, this.reactPortalStore, this.component, {
22
+ group: params.group,
23
+ api: params.api,
24
+ });
25
+ };
26
+ ReactGroupDragGhostPart.prototype.dispose = function () {
27
+ var _a;
28
+ (_a = this.part) === null || _a === void 0 ? void 0 : _a.dispose();
29
+ };
30
+ return ReactGroupDragGhostPart;
31
+ }());
32
+ exports.ReactGroupDragGhostPart = ReactGroupDragGhostPart;
@@ -0,0 +1,17 @@
1
+ import React from 'react';
2
+ import { ReactPortalStore } from '../react';
3
+ import { PanelUpdateEvent, ITabRenderer, TabPartInitParameters, IDockviewPanelHeaderProps } from 'dockview';
4
+ export declare class ReactPanelHeaderPart implements ITabRenderer {
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<IDockviewPanelHeaderProps>, reactPortalStore: ReactPortalStore);
12
+ focus(): void;
13
+ init(parameters: TabPartInitParameters): void;
14
+ update(event: PanelUpdateEvent): void;
15
+ layout(_width: number, _height: number): void;
16
+ dispose(): void;
17
+ }
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ReactPanelHeaderPart = void 0;
4
+ var react_1 = require("../react");
5
+ var ReactPanelHeaderPart = /** @class */ (function () {
6
+ function ReactPanelHeaderPart(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(ReactPanelHeaderPart.prototype, "element", {
16
+ get: function () {
17
+ return this._element;
18
+ },
19
+ enumerable: false,
20
+ configurable: true
21
+ });
22
+ ReactPanelHeaderPart.prototype.focus = function () {
23
+ //noop
24
+ };
25
+ ReactPanelHeaderPart.prototype.init = function (parameters) {
26
+ this.part = new react_1.ReactPart(this.element, this.reactPortalStore, this.component, {
27
+ params: parameters.params,
28
+ api: parameters.api,
29
+ containerApi: parameters.containerApi,
30
+ tabLocation: parameters.tabLocation,
31
+ });
32
+ };
33
+ ReactPanelHeaderPart.prototype.update = function (event) {
34
+ var _a;
35
+ (_a = this.part) === null || _a === void 0 ? void 0 : _a.update({ params: event.params });
36
+ };
37
+ ReactPanelHeaderPart.prototype.layout = function (_width, _height) {
38
+ // noop - retrieval from api
39
+ };
40
+ ReactPanelHeaderPart.prototype.dispose = function () {
41
+ var _a;
42
+ (_a = this.part) === null || _a === void 0 ? void 0 : _a.dispose();
43
+ };
44
+ return ReactPanelHeaderPart;
45
+ }());
46
+ exports.ReactPanelHeaderPart = ReactPanelHeaderPart;
@@ -0,0 +1,23 @@
1
+ import React from 'react';
2
+ import { ReactPortalStore } from '../react';
3
+ import { ITabGroupChipRenderer, ITabGroup, DockviewApi } from 'dockview';
4
+ export interface IDockviewTabGroupChipProps {
5
+ tabGroup: ITabGroup;
6
+ api: DockviewApi;
7
+ }
8
+ export declare class ReactTabGroupChipPart implements ITabGroupChipRenderer {
9
+ private readonly component;
10
+ private readonly reactPortalStore;
11
+ private readonly _element;
12
+ private part?;
13
+ get element(): HTMLElement;
14
+ constructor(component: React.FunctionComponent<IDockviewTabGroupChipProps>, reactPortalStore: ReactPortalStore);
15
+ init(params: {
16
+ tabGroup: ITabGroup;
17
+ api: DockviewApi;
18
+ }): void;
19
+ update(params: {
20
+ tabGroup: ITabGroup;
21
+ }): void;
22
+ dispose(): void;
23
+ }
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ReactTabGroupChipPart = void 0;
4
+ var react_1 = require("../react");
5
+ var ReactTabGroupChipPart = /** @class */ (function () {
6
+ function ReactTabGroupChipPart(component, reactPortalStore) {
7
+ this.component = component;
8
+ this.reactPortalStore = reactPortalStore;
9
+ this._element = document.createElement('div');
10
+ this._element.className = 'dv-react-part';
11
+ this._element.style.display = 'inline-flex';
12
+ }
13
+ Object.defineProperty(ReactTabGroupChipPart.prototype, "element", {
14
+ get: function () {
15
+ return this._element;
16
+ },
17
+ enumerable: false,
18
+ configurable: true
19
+ });
20
+ ReactTabGroupChipPart.prototype.init = function (params) {
21
+ this.part = new react_1.ReactPart(this._element, this.reactPortalStore, this.component, {
22
+ tabGroup: params.tabGroup,
23
+ api: params.api,
24
+ });
25
+ };
26
+ ReactTabGroupChipPart.prototype.update = function (params) {
27
+ var _a;
28
+ (_a = this.part) === null || _a === void 0 ? void 0 : _a.update({ tabGroup: params.tabGroup });
29
+ };
30
+ ReactTabGroupChipPart.prototype.dispose = function () {
31
+ var _a;
32
+ (_a = this.part) === null || _a === void 0 ? void 0 : _a.dispose();
33
+ };
34
+ return ReactTabGroupChipPart;
35
+ }());
36
+ exports.ReactTabGroupChipPart = ReactTabGroupChipPart;
@@ -0,0 +1,18 @@
1
+ import React from 'react';
2
+ import { ReactPortalStore } from '../react';
3
+ import { PanelUpdateEvent, IWatermarkRenderer, WatermarkRendererInitParameters, IWatermarkPanelProps } from 'dockview';
4
+ export declare class ReactWatermarkPart implements IWatermarkRenderer {
5
+ readonly id: string;
6
+ private readonly component;
7
+ private readonly reactPortalStore;
8
+ private readonly _element;
9
+ private part?;
10
+ private readonly parameters;
11
+ get element(): HTMLElement;
12
+ constructor(id: string, component: React.FunctionComponent<IWatermarkPanelProps>, reactPortalStore: ReactPortalStore);
13
+ init(parameters: WatermarkRendererInitParameters): void;
14
+ focus(): void;
15
+ update(params: PanelUpdateEvent): void;
16
+ layout(_width: number, _height: number): void;
17
+ dispose(): void;
18
+ }
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ReactWatermarkPart = void 0;
4
+ var react_1 = require("../react");
5
+ var ReactWatermarkPart = /** @class */ (function () {
6
+ function ReactWatermarkPart(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(ReactWatermarkPart.prototype, "element", {
16
+ get: function () {
17
+ return this._element;
18
+ },
19
+ enumerable: false,
20
+ configurable: true
21
+ });
22
+ ReactWatermarkPart.prototype.init = function (parameters) {
23
+ this.part = new react_1.ReactPart(this.element, this.reactPortalStore, this.component, {
24
+ group: parameters.group,
25
+ containerApi: parameters.containerApi,
26
+ });
27
+ };
28
+ ReactWatermarkPart.prototype.focus = function () {
29
+ // noop
30
+ };
31
+ ReactWatermarkPart.prototype.update = function (params) {
32
+ var _a, _b, _c;
33
+ if (this.parameters) {
34
+ this.parameters.params = params.params;
35
+ }
36
+ (_a = this.part) === null || _a === void 0 ? void 0 : _a.update({ params: (_c = (_b = this.parameters) === null || _b === void 0 ? void 0 : _b.params) !== null && _c !== void 0 ? _c : {} });
37
+ };
38
+ ReactWatermarkPart.prototype.layout = function (_width, _height) {
39
+ // noop - retrieval from api
40
+ };
41
+ ReactWatermarkPart.prototype.dispose = function () {
42
+ var _a;
43
+ (_a = this.part) === null || _a === void 0 ? void 0 : _a.dispose();
44
+ };
45
+ return ReactWatermarkPart;
46
+ }());
47
+ exports.ReactWatermarkPart = ReactWatermarkPart;
@@ -0,0 +1,17 @@
1
+ import React from 'react';
2
+ import { GridviewPanelApi, GridviewApi, GridviewOptions } from 'dockview';
3
+ import { PanelParameters } from '../types';
4
+ export interface GridviewReadyEvent {
5
+ api: GridviewApi;
6
+ }
7
+ export interface IGridviewPanelProps<T extends {
8
+ [index: string]: any;
9
+ } = any> extends PanelParameters<T> {
10
+ api: GridviewPanelApi;
11
+ containerApi: GridviewApi;
12
+ }
13
+ export interface IGridviewReactProps extends GridviewOptions {
14
+ onReady: (event: GridviewReadyEvent) => void;
15
+ components: Record<string, React.FunctionComponent<IGridviewPanelProps>>;
16
+ }
17
+ export declare const GridviewReact: React.ForwardRefExoticComponent<IGridviewReactProps & React.RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,105 @@
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.GridviewReact = void 0;
34
+ var react_1 = __importDefault(require("react"));
35
+ var dockview_1 = require("dockview");
36
+ var view_1 = require("./view");
37
+ var react_2 = require("../react");
38
+ function extractCoreOptions(props) {
39
+ var coreOptions = dockview_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
+ }
47
+ exports.GridviewReact = react_1.default.forwardRef(function (props, ref) {
48
+ var domRef = react_1.default.useRef(null);
49
+ var gridviewRef = react_1.default.useRef(undefined);
50
+ var _a = __read((0, react_2.usePortalsLifecycle)(), 2), portals = _a[0], addPortal = _a[1];
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_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_1.PROPERTY_KEYS_GRIDVIEW.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.ReactGridPanelView(options.id, options.name, props.components[options.name], { addPortal: addPortal });
79
+ },
80
+ };
81
+ var api = (0, dockview_1.createGridview)(domRef.current, __assign(__assign({}, extractCoreOptions(props)), frameworkOptions));
82
+ var _a = domRef.current, clientWidth = _a.clientWidth, clientHeight = _a.clientHeight;
83
+ api.layout(clientWidth, clientHeight);
84
+ if (props.onReady) {
85
+ props.onReady({ api: api });
86
+ }
87
+ gridviewRef.current = api;
88
+ return function () {
89
+ gridviewRef.current = undefined;
90
+ api.dispose();
91
+ };
92
+ }, []);
93
+ react_1.default.useEffect(function () {
94
+ if (!gridviewRef.current) {
95
+ return;
96
+ }
97
+ gridviewRef.current.updateOptions({
98
+ createComponent: function (options) {
99
+ return new view_1.ReactGridPanelView(options.id, options.name, props.components[options.name], { addPortal: addPortal });
100
+ },
101
+ });
102
+ }, [props.components]);
103
+ return (react_1.default.createElement("div", { style: { height: '100%', width: '100%' }, ref: domRef }, portals));
104
+ });
105
+ exports.GridviewReact.displayName = 'GridviewComponent';
@@ -0,0 +1,9 @@
1
+ import { GridviewPanel, IFrameworkPart } from 'dockview';
2
+ import { ReactPortalStore } from '../react';
3
+ import { IGridviewPanelProps } from './gridview';
4
+ export declare class ReactGridPanelView extends GridviewPanel {
5
+ private readonly reactComponent;
6
+ private readonly reactPortalStore;
7
+ constructor(id: string, component: string, reactComponent: React.FunctionComponent<IGridviewPanelProps>, reactPortalStore: ReactPortalStore);
8
+ getComponent(): IFrameworkPart;
9
+ }
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.ReactGridPanelView = void 0;
19
+ var dockview_1 = require("dockview");
20
+ var react_1 = require("../react");
21
+ var ReactGridPanelView = /** @class */ (function (_super) {
22
+ __extends(ReactGridPanelView, _super);
23
+ function ReactGridPanelView(id, component, reactComponent, reactPortalStore) {
24
+ var _this = _super.call(this, id, component) || this;
25
+ _this.reactComponent = reactComponent;
26
+ _this.reactPortalStore = reactPortalStore;
27
+ return _this;
28
+ }
29
+ ReactGridPanelView.prototype.getComponent = function () {
30
+ var _a, _b;
31
+ return new react_1.ReactPart(this.element, this.reactPortalStore, this.reactComponent, {
32
+ params: (_b = (_a = this._params) === null || _a === void 0 ? void 0 : _a.params) !== null && _b !== void 0 ? _b : {},
33
+ api: this.api,
34
+ // TODO: fix casting hack
35
+ containerApi: new dockview_1.GridviewApi(this._params
36
+ .accessor),
37
+ });
38
+ };
39
+ return ReactGridPanelView;
40
+ }(dockview_1.GridviewPanel));
41
+ exports.ReactGridPanelView = ReactGridPanelView;
@@ -1 +1,10 @@
1
1
  export * from 'dockview';
2
+ export * from './dockview/dockview';
3
+ export * from './dockview/defaultTab';
4
+ export { IDockviewTabGroupChipProps } from './dockview/reactTabGroupChipPart';
5
+ export { IDockviewGroupDragGhostProps } from './dockview/reactGroupDragGhostPart';
6
+ export * from './splitview/splitview';
7
+ export * from './gridview/gridview';
8
+ export * from './paneview/paneview';
9
+ export * from './types';
10
+ export * from './react';
package/dist/cjs/index.js CHANGED
@@ -15,3 +15,10 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("dockview"), exports);
18
+ __exportStar(require("./dockview/dockview"), exports);
19
+ __exportStar(require("./dockview/defaultTab"), exports);
20
+ __exportStar(require("./splitview/splitview"), exports);
21
+ __exportStar(require("./gridview/gridview"), exports);
22
+ __exportStar(require("./paneview/paneview"), exports);
23
+ __exportStar(require("./types"), exports);
24
+ __exportStar(require("./react"), exports);
@@ -0,0 +1,20 @@
1
+ import React from 'react';
2
+ import { PaneviewPanelApi, PaneviewApi, PaneviewDidDropEvent, PaneviewOptions } from 'dockview';
3
+ import { PanelParameters } from '../types';
4
+ export interface PaneviewReadyEvent {
5
+ api: PaneviewApi;
6
+ }
7
+ export interface IPaneviewPanelProps<T extends {
8
+ [index: string]: any;
9
+ } = any> extends PanelParameters<T> {
10
+ api: PaneviewPanelApi;
11
+ containerApi: PaneviewApi;
12
+ title: string;
13
+ }
14
+ export interface IPaneviewReactProps extends PaneviewOptions {
15
+ onReady: (event: PaneviewReadyEvent) => void;
16
+ components: Record<string, React.FunctionComponent<IPaneviewPanelProps>>;
17
+ headerComponents?: Record<string, React.FunctionComponent<IPaneviewPanelProps>>;
18
+ onDidDrop?(event: PaneviewDidDropEvent): void;
19
+ }
20
+ export declare const PaneviewReact: React.ForwardRefExoticComponent<IPaneviewReactProps & React.RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,137 @@
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.PaneviewReact = void 0;
34
+ var react_1 = __importDefault(require("react"));
35
+ var dockview_1 = require("dockview");
36
+ var react_2 = require("../react");
37
+ var view_1 = require("./view");
38
+ function extractCoreOptions(props) {
39
+ var coreOptions = dockview_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
+ }
47
+ exports.PaneviewReact = react_1.default.forwardRef(function (props, ref) {
48
+ var domRef = react_1.default.useRef(null);
49
+ var paneviewRef = react_1.default.useRef(undefined);
50
+ var _a = __read((0, react_2.usePortalsLifecycle)(), 2), portals = _a[0], addPortal = _a[1];
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_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
+ }
61
+ });
62
+ if (paneviewRef.current) {
63
+ paneviewRef.current.updateOptions(changes);
64
+ }
65
+ else {
66
+ // not yet fully initialized
67
+ }
68
+ prevProps.current = props;
69
+ }, dockview_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_1.createPaneview)(domRef.current, __assign(__assign({}, extractCoreOptions(props)), frameworkOptions));
87
+ var _b = domRef.current, clientWidth = _b.clientWidth, clientHeight = _b.clientHeight;
88
+ api.layout(clientWidth, clientHeight);
89
+ if (props.onReady) {
90
+ props.onReady({ api: api });
91
+ }
92
+ paneviewRef.current = api;
93
+ return function () {
94
+ paneviewRef.current = undefined;
95
+ api.dispose();
96
+ };
97
+ }, []);
98
+ react_1.default.useEffect(function () {
99
+ if (!paneviewRef.current) {
100
+ return;
101
+ }
102
+ paneviewRef.current.updateOptions({
103
+ createComponent: function (options) {
104
+ return new view_1.PanePanelSection(options.id, props.components[options.name], { addPortal: addPortal });
105
+ },
106
+ });
107
+ }, [props.components]);
108
+ react_1.default.useEffect(function () {
109
+ var _a;
110
+ if (!paneviewRef.current) {
111
+ return;
112
+ }
113
+ var headerComponents = (_a = props.headerComponents) !== null && _a !== void 0 ? _a : {};
114
+ paneviewRef.current.updateOptions({
115
+ createHeaderComponent: function (options) {
116
+ return new view_1.PanePanelSection(options.id, headerComponents[options.name], { addPortal: addPortal });
117
+ },
118
+ });
119
+ }, [props.headerComponents]);
120
+ react_1.default.useEffect(function () {
121
+ if (!paneviewRef.current) {
122
+ return function () {
123
+ // noop
124
+ };
125
+ }
126
+ var disposable = paneviewRef.current.onDidDrop(function (event) {
127
+ if (props.onDidDrop) {
128
+ props.onDidDrop(event);
129
+ }
130
+ });
131
+ return function () {
132
+ disposable.dispose();
133
+ };
134
+ }, [props.onDidDrop]);
135
+ return (react_1.default.createElement("div", { style: { height: '100%', width: '100%' }, ref: domRef }, portals));
136
+ });
137
+ exports.PaneviewReact.displayName = 'PaneviewComponent';
@@ -0,0 +1,19 @@
1
+ import React from 'react';
2
+ import { PanelUpdateEvent, IPanePart, PanePanelComponentInitParameter } from 'dockview';
3
+ import { ReactPortalStore } from '../react';
4
+ import { IPaneviewPanelProps } from './paneview';
5
+ export declare class PanePanelSection implements IPanePart {
6
+ readonly id: string;
7
+ private readonly component;
8
+ private readonly reactPortalStore;
9
+ private readonly _element;
10
+ private part?;
11
+ get element(): HTMLElement;
12
+ constructor(id: string, component: React.FunctionComponent<IPaneviewPanelProps>, reactPortalStore: ReactPortalStore);
13
+ init(parameters: PanePanelComponentInitParameter): void;
14
+ toJSON(): {
15
+ id: string;
16
+ };
17
+ update(params: PanelUpdateEvent): void;
18
+ dispose(): void;
19
+ }
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PanePanelSection = void 0;
4
+ var react_1 = require("../react");
5
+ var PanePanelSection = /** @class */ (function () {
6
+ function PanePanelSection(id, component, reactPortalStore) {
7
+ this.id = id;
8
+ this.component = component;
9
+ this.reactPortalStore = reactPortalStore;
10
+ this._element = document.createElement('div');
11
+ this._element.style.height = '100%';
12
+ this._element.style.width = '100%';
13
+ }
14
+ Object.defineProperty(PanePanelSection.prototype, "element", {
15
+ get: function () {
16
+ return this._element;
17
+ },
18
+ enumerable: false,
19
+ configurable: true
20
+ });
21
+ PanePanelSection.prototype.init = function (parameters) {
22
+ this.part = new react_1.ReactPart(this.element, this.reactPortalStore, this.component, {
23
+ params: parameters.params,
24
+ api: parameters.api,
25
+ title: parameters.title,
26
+ containerApi: parameters.containerApi,
27
+ });
28
+ };
29
+ PanePanelSection.prototype.toJSON = function () {
30
+ return {
31
+ id: this.id,
32
+ };
33
+ };
34
+ PanePanelSection.prototype.update = function (params) {
35
+ var _a;
36
+ (_a = this.part) === null || _a === void 0 ? void 0 : _a.update(params.params);
37
+ };
38
+ PanePanelSection.prototype.dispose = function () {
39
+ var _a;
40
+ (_a = this.part) === null || _a === void 0 ? void 0 : _a.dispose();
41
+ };
42
+ return PanePanelSection;
43
+ }());
44
+ exports.PanePanelSection = PanePanelSection;