dockview 2.1.3 → 3.0.0

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