dockview-core 1.16.0 → 1.17.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 (84) hide show
  1. package/dist/cjs/api/component.api.d.ts +6 -4
  2. package/dist/cjs/dnd/groupDragHandler.js +1 -1
  3. package/dist/cjs/dockview/components/tab/defaultTab.js +2 -2
  4. package/dist/cjs/dockview/components/tab/tab.js +1 -1
  5. package/dist/cjs/dockview/components/titlebar/tabsContainer.js +2 -2
  6. package/dist/cjs/dockview/components/watermark/watermark.d.ts +0 -7
  7. package/dist/cjs/dockview/components/watermark/watermark.js +3 -18
  8. package/dist/cjs/dockview/deserializer.js +4 -0
  9. package/dist/cjs/dockview/dockviewComponent.d.ts +2 -0
  10. package/dist/cjs/dockview/dockviewComponent.js +77 -58
  11. package/dist/cjs/dockview/dockviewGroupPanel.d.ts +4 -0
  12. package/dist/cjs/dockview/dockviewGroupPanel.js +49 -2
  13. package/dist/cjs/dockview/dockviewGroupPanelModel.d.ts +4 -0
  14. package/dist/cjs/dockview/dockviewGroupPanelModel.js +0 -1
  15. package/dist/cjs/dockview/dockviewPanel.d.ts +14 -1
  16. package/dist/cjs/dockview/dockviewPanel.js +36 -0
  17. package/dist/cjs/dockview/options.d.ts +16 -9
  18. package/dist/cjs/dockview/types.d.ts +5 -2
  19. package/dist/cjs/dom.d.ts +7 -0
  20. package/dist/cjs/dom.js +63 -1
  21. package/dist/cjs/gridview/baseComponentGridview.d.ts +3 -2
  22. package/dist/cjs/gridview/baseComponentGridview.js +30 -5
  23. package/dist/cjs/gridview/gridviewComponent.d.ts +2 -3
  24. package/dist/cjs/gridview/gridviewComponent.js +2 -2
  25. package/dist/cjs/gridview/gridviewPanel.d.ts +6 -0
  26. package/dist/cjs/overlay/overlay.js +6 -6
  27. package/dist/cjs/paneview/paneviewComponent.d.ts +1 -0
  28. package/dist/cjs/paneview/paneviewComponent.js +11 -3
  29. package/dist/cjs/splitview/splitviewComponent.d.ts +4 -4
  30. package/dist/cjs/splitview/splitviewComponent.js +13 -7
  31. package/dist/dockview-core.amd.js +231 -103
  32. package/dist/dockview-core.amd.js.map +1 -1
  33. package/dist/dockview-core.amd.min.js +2 -2
  34. package/dist/dockview-core.amd.min.js.map +1 -1
  35. package/dist/dockview-core.amd.min.noStyle.js +2 -2
  36. package/dist/dockview-core.amd.min.noStyle.js.map +1 -1
  37. package/dist/dockview-core.amd.noStyle.js +230 -102
  38. package/dist/dockview-core.amd.noStyle.js.map +1 -1
  39. package/dist/dockview-core.cjs.js +231 -103
  40. package/dist/dockview-core.cjs.js.map +1 -1
  41. package/dist/dockview-core.esm.js +231 -103
  42. package/dist/dockview-core.esm.js.map +1 -1
  43. package/dist/dockview-core.esm.min.js +2 -2
  44. package/dist/dockview-core.esm.min.js.map +1 -1
  45. package/dist/dockview-core.js +231 -103
  46. package/dist/dockview-core.js.map +1 -1
  47. package/dist/dockview-core.min.js +2 -2
  48. package/dist/dockview-core.min.js.map +1 -1
  49. package/dist/dockview-core.min.noStyle.js +2 -2
  50. package/dist/dockview-core.min.noStyle.js.map +1 -1
  51. package/dist/dockview-core.noStyle.js +230 -102
  52. package/dist/dockview-core.noStyle.js.map +1 -1
  53. package/dist/esm/api/component.api.d.ts +6 -4
  54. package/dist/esm/dnd/groupDragHandler.js +1 -1
  55. package/dist/esm/dockview/components/tab/defaultTab.js +2 -2
  56. package/dist/esm/dockview/components/tab/tab.js +1 -1
  57. package/dist/esm/dockview/components/titlebar/tabsContainer.js +2 -2
  58. package/dist/esm/dockview/components/watermark/watermark.d.ts +0 -7
  59. package/dist/esm/dockview/components/watermark/watermark.js +3 -18
  60. package/dist/esm/dockview/deserializer.js +4 -0
  61. package/dist/esm/dockview/dockviewComponent.d.ts +2 -0
  62. package/dist/esm/dockview/dockviewComponent.js +76 -54
  63. package/dist/esm/dockview/dockviewGroupPanel.d.ts +4 -0
  64. package/dist/esm/dockview/dockviewGroupPanel.js +33 -2
  65. package/dist/esm/dockview/dockviewGroupPanelModel.d.ts +4 -0
  66. package/dist/esm/dockview/dockviewGroupPanelModel.js +0 -1
  67. package/dist/esm/dockview/dockviewPanel.d.ts +14 -1
  68. package/dist/esm/dockview/dockviewPanel.js +20 -0
  69. package/dist/esm/dockview/options.d.ts +16 -9
  70. package/dist/esm/dockview/types.d.ts +5 -2
  71. package/dist/esm/dom.d.ts +7 -0
  72. package/dist/esm/dom.js +36 -0
  73. package/dist/esm/gridview/baseComponentGridview.d.ts +3 -2
  74. package/dist/esm/gridview/baseComponentGridview.js +30 -5
  75. package/dist/esm/gridview/gridviewComponent.d.ts +2 -3
  76. package/dist/esm/gridview/gridviewComponent.js +2 -2
  77. package/dist/esm/gridview/gridviewPanel.d.ts +6 -0
  78. package/dist/esm/overlay/overlay.js +6 -6
  79. package/dist/esm/paneview/paneviewComponent.d.ts +1 -0
  80. package/dist/esm/paneview/paneviewComponent.js +11 -3
  81. package/dist/esm/splitview/splitviewComponent.d.ts +4 -4
  82. package/dist/esm/splitview/splitviewComponent.js +13 -7
  83. package/dist/styles/dockview.css +1 -1
  84. package/package.json +1 -1
@@ -12,6 +12,7 @@ import { IDockviewPanel } from './dockviewPanel';
12
12
  import { DockviewPanelRenderer } from '../overlay/overlayRenderContainer';
13
13
  import { IGroupHeaderProps } from './framework';
14
14
  import { FloatingGroupOptions } from './dockviewComponent';
15
+ import { Contraints } from '../gridview/gridviewPanel';
15
16
  export interface IHeaderActionsRenderer extends IDisposable {
16
17
  readonly element: HTMLElement;
17
18
  init(params: IGroupHeaderProps): void;
@@ -71,19 +72,23 @@ export declare class DockviewUnhandledDragOverEvent implements DockviewDndOverla
71
72
  accept(): void;
72
73
  }
73
74
  export declare const PROPERTY_KEYS: (keyof DockviewOptions)[];
75
+ export interface CreateComponentOptions {
76
+ /**
77
+ * The unqiue identifer of the component
78
+ */
79
+ id: string;
80
+ /**
81
+ * The component name, this should determine what is rendered.
82
+ */
83
+ name: string;
84
+ }
74
85
  export interface DockviewFrameworkOptions {
75
86
  defaultTabComponent?: string;
76
87
  createRightHeaderActionComponent?: (group: DockviewGroupPanel) => IHeaderActionsRenderer;
77
88
  createLeftHeaderActionComponent?: (group: DockviewGroupPanel) => IHeaderActionsRenderer;
78
89
  createPrefixHeaderActionComponent?: (group: DockviewGroupPanel) => IHeaderActionsRenderer;
79
- createTabComponent?: (options: {
80
- id: string;
81
- name: string;
82
- }) => ITabRenderer | undefined;
83
- createComponent: (options: {
84
- id: string;
85
- name: string;
86
- }) => IContentRenderer;
90
+ createTabComponent?: (options: CreateComponentOptions) => ITabRenderer | undefined;
91
+ createComponent: (options: CreateComponentOptions) => IContentRenderer;
87
92
  createWatermarkComponent?: () => IWatermarkRenderer;
88
93
  }
89
94
  export type DockviewComponentOptions = DockviewOptions & DockviewFrameworkOptions;
@@ -149,7 +154,9 @@ export type AddPanelOptions<P extends object = Parameters> = {
149
154
  * Defaults to `false` which forces newly added panels to become active.
150
155
  */
151
156
  inactive?: boolean;
152
- } & Partial<AddPanelOptionsUnion>;
157
+ initialWidth?: number;
158
+ initialHeight?: number;
159
+ } & Partial<AddPanelOptionsUnion> & Partial<Contraints>;
153
160
  type AddGroupOptionsWithPanel = {
154
161
  referencePanel: string | IDockviewPanel;
155
162
  direction?: Omit<Direction, 'within'>;
@@ -2,7 +2,7 @@ import { DockviewPanelApi } from '../api/dockviewPanelApi';
2
2
  import { PanelInitParameters, IPanel } from '../panel/types';
3
3
  import { DockviewApi } from '../api/component.api';
4
4
  import { Optional } from '../types';
5
- import { DockviewGroupPanel, IDockviewGroupPanel } from './dockviewGroupPanel';
5
+ import { IDockviewGroupPanel } from './dockviewGroupPanel';
6
6
  import { DockviewPanelRenderer } from '../overlay/overlayRenderContainer';
7
7
  export interface HeaderPartInitParameters {
8
8
  title: string;
@@ -19,7 +19,6 @@ type RendererMethodOptionalList = 'dispose' | 'update' | 'layout' | 'toJSON' | '
19
19
  export interface IWatermarkRenderer extends Optional<Omit<IPanel, 'id' | 'init'>, RendererMethodOptionalList> {
20
20
  readonly element: HTMLElement;
21
21
  init: (params: WatermarkRendererInitParameters) => void;
22
- updateParentGroup(group: DockviewGroupPanel, visible: boolean): void;
23
22
  }
24
23
  export interface ITabRenderer extends Optional<Omit<IPanel, 'id'>, RendererMethodOptionalList> {
25
24
  readonly element: HTMLElement;
@@ -40,5 +39,9 @@ export interface GroupviewPanelState {
40
39
  params?: {
41
40
  [key: string]: any;
42
41
  };
42
+ minimumWidth?: number;
43
+ minimumHeight?: number;
44
+ maximumWidth?: number;
45
+ maximumHeight?: number;
43
46
  }
44
47
  export {};
package/dist/esm/dom.d.ts CHANGED
@@ -30,3 +30,10 @@ export declare function addTestId(element: HTMLElement, id: string): void;
30
30
  export declare function disableIframePointEvents(): {
31
31
  release: () => void;
32
32
  };
33
+ export declare function getDockviewTheme(element: HTMLElement): string | undefined;
34
+ export declare class Classnames {
35
+ private readonly element;
36
+ private _classNames;
37
+ constructor(element: HTMLElement);
38
+ setClassNames(classNames: string): void;
39
+ }
package/dist/esm/dom.js CHANGED
@@ -202,3 +202,39 @@ export function disableIframePointEvents() {
202
202
  },
203
203
  };
204
204
  }
205
+ export function getDockviewTheme(element) {
206
+ function toClassList(element) {
207
+ const list = [];
208
+ for (let i = 0; i < element.classList.length; i++) {
209
+ list.push(element.classList.item(i));
210
+ }
211
+ return list;
212
+ }
213
+ let theme = undefined;
214
+ let parent = element;
215
+ while (parent !== null) {
216
+ theme = toClassList(parent).find((cls) => cls.startsWith('dockview-theme-'));
217
+ if (typeof theme === 'string') {
218
+ break;
219
+ }
220
+ parent = parent.parentElement;
221
+ }
222
+ return theme;
223
+ }
224
+ export class Classnames {
225
+ constructor(element) {
226
+ this.element = element;
227
+ this._classNames = [];
228
+ }
229
+ setClassNames(classNames) {
230
+ for (const className of this._classNames) {
231
+ toggleClass(this.element, className, false);
232
+ }
233
+ this._classNames = classNames
234
+ .split(' ')
235
+ .filter((v) => v.trim().length > 0);
236
+ for (const className of this._classNames) {
237
+ toggleClass(this.element, className, true);
238
+ }
239
+ }
240
+ }
@@ -12,7 +12,6 @@ export interface BaseGridOptions {
12
12
  readonly proportionalLayout: boolean;
13
13
  readonly orientation: Orientation;
14
14
  readonly styles?: ISplitviewStyles;
15
- readonly parentElement: HTMLElement;
16
15
  readonly disableAutoResizing?: boolean;
17
16
  readonly locked?: boolean;
18
17
  readonly margin?: number;
@@ -63,6 +62,7 @@ export declare abstract class BaseGrid<T extends IGridPanelView> extends Resizab
63
62
  readonly onDidLayoutChange: Event<void>;
64
63
  private readonly _onDidViewVisibilityChangeMicroTaskQueue;
65
64
  readonly onDidViewVisibilityChangeMicroTaskQueue: Event<void>;
65
+ private readonly _classNames;
66
66
  get id(): string;
67
67
  get size(): number;
68
68
  get groups(): T[];
@@ -75,12 +75,13 @@ export declare abstract class BaseGrid<T extends IGridPanelView> extends Resizab
75
75
  get activeGroup(): T | undefined;
76
76
  get locked(): boolean;
77
77
  set locked(value: boolean);
78
- constructor(options: BaseGridOptions);
78
+ constructor(parentElement: HTMLElement, options: BaseGridOptions);
79
79
  abstract toJSON(): object;
80
80
  abstract fromJSON(data: any): void;
81
81
  abstract clear(): void;
82
82
  setVisible(panel: T, visible: boolean): void;
83
83
  isVisible(panel: T): boolean;
84
+ updateOptions(options: Partial<BaseGridOptions>): void;
84
85
  maximizeGroup(panel: T): void;
85
86
  isMaximizedGroup(panel: T): boolean;
86
87
  exitMaximizedGroup(): void;
@@ -4,6 +4,7 @@ import { Disposable } from '../lifecycle';
4
4
  import { sequentialNumberGenerator } from '../math';
5
5
  import { Sizing } from '../splitview/splitview';
6
6
  import { Resizable } from '../resizable';
7
+ import { Classnames } from '../dom';
7
8
  const nextLayoutId = sequentialNumberGenerator();
8
9
  export function toTarget(direction) {
9
10
  switch (direction) {
@@ -57,7 +58,8 @@ export class BaseGrid extends Resizable {
57
58
  set locked(value) {
58
59
  this.gridview.locked = value;
59
60
  }
60
- constructor(options) {
61
+ constructor(parentElement, options) {
62
+ var _a;
61
63
  super(document.createElement('div'), options.disableAutoResizing);
62
64
  this._id = nextLayoutId.next();
63
65
  this._groups = new Map();
@@ -73,10 +75,9 @@ export class BaseGrid extends Resizable {
73
75
  this.onDidViewVisibilityChangeMicroTaskQueue = this._onDidViewVisibilityChangeMicroTaskQueue.onEvent;
74
76
  this.element.style.height = '100%';
75
77
  this.element.style.width = '100%';
76
- if (typeof options.className === 'string') {
77
- this.element.classList.add(options.className);
78
- }
79
- options.parentElement.appendChild(this.element);
78
+ this._classNames = new Classnames(this.element);
79
+ this._classNames.setClassNames((_a = options.className) !== null && _a !== void 0 ? _a : '');
80
+ parentElement.appendChild(this.element);
80
81
  this.gridview = new Gridview(!!options.proportionalLayout, options.styles, options.orientation, options.locked, options.margin);
81
82
  this.gridview.locked = !!options.locked;
82
83
  this.element.appendChild(this.gridview.element);
@@ -99,6 +100,30 @@ export class BaseGrid extends Resizable {
99
100
  isVisible(panel) {
100
101
  return this.gridview.isViewVisible(getGridLocation(panel.element));
101
102
  }
103
+ updateOptions(options) {
104
+ var _a, _b, _c, _d;
105
+ if (typeof options.proportionalLayout === 'boolean') {
106
+ // this.gridview.proportionalLayout = options.proportionalLayout; // not supported
107
+ }
108
+ if (options.orientation) {
109
+ this.gridview.orientation = options.orientation;
110
+ }
111
+ if ('styles' in options) {
112
+ // this.gridview.styles = options.styles; // not supported
113
+ }
114
+ if ('disableResizing' in options) {
115
+ this.disableResizing = (_a = options.disableAutoResizing) !== null && _a !== void 0 ? _a : false;
116
+ }
117
+ if ('locked' in options) {
118
+ this.locked = (_b = options.locked) !== null && _b !== void 0 ? _b : false;
119
+ }
120
+ if ('margin' in options) {
121
+ this.gridview.margin = (_c = options.margin) !== null && _c !== void 0 ? _c : 0;
122
+ }
123
+ if ('className' in options) {
124
+ this._classNames.setClassNames((_d = options.className) !== null && _d !== void 0 ? _d : '');
125
+ }
126
+ }
102
127
  maximizeGroup(panel) {
103
128
  this.gridview.maximizeView(panel);
104
129
  this.doSetGroupActive(panel);
@@ -25,11 +25,10 @@ export interface AddComponentOptions<T extends object = Parameters> extends Base
25
25
  export interface IGridPanelComponentView extends IGridPanelView {
26
26
  init: (params: GridviewInitParameters) => void;
27
27
  }
28
- export type GridviewComponentUpdateOptions = Pick<GridviewComponentOptions, 'orientation' | 'components' | 'frameworkComponents'>;
29
28
  export interface IGridviewComponent extends IBaseGrid<GridviewPanel> {
30
29
  readonly orientation: Orientation;
31
30
  readonly onDidLayoutFromJSON: Event<void>;
32
- updateOptions(options: Partial<GridviewComponentUpdateOptions>): void;
31
+ updateOptions(options: Partial<GridviewComponentOptions>): void;
33
32
  addPanel<T extends object = Parameters>(options: AddComponentOptions<T>): IGridviewPanel;
34
33
  removePanel(panel: IGridviewPanel, sizing?: Sizing): void;
35
34
  focus(): void;
@@ -63,7 +62,7 @@ export declare class GridviewComponent extends BaseGrid<GridviewPanel> implement
63
62
  get deserializer(): IPanelDeserializer | undefined;
64
63
  set deserializer(value: IPanelDeserializer | undefined);
65
64
  constructor(parentElement: HTMLElement, options: GridviewComponentOptions);
66
- updateOptions(options: Partial<GridviewComponentUpdateOptions>): void;
65
+ updateOptions(options: Partial<GridviewComponentOptions>): void;
67
66
  removePanel(panel: GridviewPanel): void;
68
67
  /**
69
68
  * Serialize the current state of the layout
@@ -21,8 +21,7 @@ export class GridviewComponent extends BaseGrid {
21
21
  this._deserializer = value;
22
22
  }
23
23
  constructor(parentElement, options) {
24
- super({
25
- parentElement: parentElement,
24
+ super(parentElement, {
26
25
  proportionalLayout: options.proportionalLayout,
27
26
  orientation: options.orientation,
28
27
  styles: options.styles,
@@ -53,6 +52,7 @@ export class GridviewComponent extends BaseGrid {
53
52
  }
54
53
  }
55
54
  updateOptions(options) {
55
+ super.updateOptions(options);
56
56
  const hasOrientationChanged = typeof options.orientation === 'string' &&
57
57
  this.gridview.orientation !== options.orientation;
58
58
  this._options = Object.assign(Object.assign({}, this.options), options);
@@ -6,6 +6,12 @@ import { LayoutPriority } from '../splitview/splitview';
6
6
  import { Event } from '../events';
7
7
  import { IViewSize } from './gridview';
8
8
  import { BaseGrid, IGridPanelView } from './baseComponentGridview';
9
+ export interface Contraints {
10
+ minimumWidth?: number;
11
+ maximumWidth?: number;
12
+ minimumHeight?: number;
13
+ maximumHeight?: number;
14
+ }
9
15
  export interface GridviewInitParameters extends PanelInitParameters {
10
16
  minimumWidth?: number;
11
17
  maximumWidth?: number;
@@ -154,7 +154,7 @@ export class Overlay extends CompositeDisposable {
154
154
  dispose: () => {
155
155
  iframes.release();
156
156
  },
157
- }, addDisposableWindowListener(window, 'mousemove', (e) => {
157
+ }, addDisposableWindowListener(window, 'pointermove', (e) => {
158
158
  const containerRect = this.options.container.getBoundingClientRect();
159
159
  const x = e.clientX - containerRect.left;
160
160
  const y = e.clientY - containerRect.top;
@@ -197,7 +197,7 @@ export class Overlay extends CompositeDisposable {
197
197
  this._onDidChangeEnd.fire();
198
198
  }));
199
199
  };
200
- this.addDisposables(move, addDisposableListener(dragTarget, 'mousedown', (event) => {
200
+ this.addDisposables(move, addDisposableListener(dragTarget, 'pointerdown', (event) => {
201
201
  if (event.defaultPrevented) {
202
202
  event.preventDefault();
203
203
  return;
@@ -208,7 +208,7 @@ export class Overlay extends CompositeDisposable {
208
208
  return;
209
209
  }
210
210
  track();
211
- }), addDisposableListener(this.options.content, 'mousedown', (event) => {
211
+ }), addDisposableListener(this.options.content, 'pointerdown', (event) => {
212
212
  if (event.defaultPrevented) {
213
213
  return;
214
214
  }
@@ -220,7 +220,7 @@ export class Overlay extends CompositeDisposable {
220
220
  if (event.shiftKey) {
221
221
  track();
222
222
  }
223
- }), addDisposableListener(this.options.content, 'mousedown', () => {
223
+ }), addDisposableListener(this.options.content, 'pointerdown', () => {
224
224
  arialLevelTracker.push(this._element);
225
225
  }, true));
226
226
  if (options.inDragMode) {
@@ -232,11 +232,11 @@ export class Overlay extends CompositeDisposable {
232
232
  resizeHandleElement.className = `dv-resize-handle-${direction}`;
233
233
  this._element.appendChild(resizeHandleElement);
234
234
  const move = new MutableDisposable();
235
- this.addDisposables(move, addDisposableListener(resizeHandleElement, 'mousedown', (e) => {
235
+ this.addDisposables(move, addDisposableListener(resizeHandleElement, 'pointerdown', (e) => {
236
236
  e.preventDefault();
237
237
  let startPosition = null;
238
238
  const iframes = disableIframePointEvents();
239
- move.value = new CompositeDisposable(addDisposableWindowListener(window, 'mousemove', (e) => {
239
+ move.value = new CompositeDisposable(addDisposableWindowListener(window, 'pointermove', (e) => {
240
240
  const containerRect = this.options.container.getBoundingClientRect();
241
241
  const overlayRect = this._element.getBoundingClientRect();
242
242
  const y = e.clientY - containerRect.top;
@@ -103,6 +103,7 @@ export declare class PaneviewComponent extends Resizable implements IPaneviewCom
103
103
  readonly onDidAddView: Event<PaneviewPanel>;
104
104
  private readonly _onDidRemoveView;
105
105
  readonly onDidRemoveView: Event<PaneviewPanel>;
106
+ private readonly _classNames;
106
107
  get id(): string;
107
108
  get panels(): PaneviewPanel[];
108
109
  set paneview(value: Paneview);
@@ -8,6 +8,7 @@ import { DraggablePaneviewPanel, } from './draggablePaneviewPanel';
8
8
  import { DefaultHeader } from './defaultPaneviewHeader';
9
9
  import { sequentialNumberGenerator } from '../math';
10
10
  import { Resizable } from '../resizable';
11
+ import { Classnames } from '../dom';
11
12
  const nextLayoutId = sequentialNumberGenerator();
12
13
  export class PaneFramework extends DraggablePaneviewPanel {
13
14
  constructor(options) {
@@ -57,6 +58,7 @@ export class PaneviewComponent extends Resizable {
57
58
  return this._options;
58
59
  }
59
60
  constructor(parentElement, options) {
61
+ var _a;
60
62
  super(parentElement, options.disableAutoResizing);
61
63
  this._id = nextLayoutId.next();
62
64
  this._disposable = new MutableDisposable();
@@ -71,10 +73,9 @@ export class PaneviewComponent extends Resizable {
71
73
  this.onDidAddView = this._onDidAddView.event;
72
74
  this._onDidRemoveView = new Emitter();
73
75
  this.onDidRemoveView = this._onDidRemoveView.event;
74
- if (typeof options.className === 'string') {
75
- this.element.classList.add(options.className);
76
- }
77
76
  this.addDisposables(this._onDidLayoutChange, this._onDidLayoutfromJSON, this._onDidDrop, this._onDidAddView, this._onDidRemoveView);
77
+ this._classNames = new Classnames(this.element);
78
+ this._classNames.setClassNames((_a = options.className) !== null && _a !== void 0 ? _a : '');
78
79
  this._options = options;
79
80
  if (!options.components) {
80
81
  options.components = {};
@@ -96,6 +97,13 @@ export class PaneviewComponent extends Resizable {
96
97
  //noop
97
98
  }
98
99
  updateOptions(options) {
100
+ var _a, _b;
101
+ if ('className' in options) {
102
+ this._classNames.setClassNames((_a = options.className) !== null && _a !== void 0 ? _a : '');
103
+ }
104
+ if ('disableResizing' in options) {
105
+ this.disableResizing = (_b = options.disableAutoResizing) !== null && _b !== void 0 ? _b : false;
106
+ }
99
107
  this._options = Object.assign(Object.assign({}, this.options), options);
100
108
  }
101
109
  addPanel(options) {
@@ -1,5 +1,5 @@
1
1
  import { IDisposable } from '../lifecycle';
2
- import { IView, LayoutPriority, Orientation, Sizing, Splitview } from './splitview';
2
+ import { IView, LayoutPriority, Orientation, Sizing, Splitview, SplitViewOptions } from './splitview';
3
3
  import { SplitviewComponentOptions } from './options';
4
4
  import { BaseComponentOptions, Parameters } from '../panel/types';
5
5
  import { Event } from '../events';
@@ -31,7 +31,6 @@ export interface AddSplitviewComponentOptions<T extends Parameters = Parameters>
31
31
  minimumSize?: number;
32
32
  maximumSize?: number;
33
33
  }
34
- export type SplitviewComponentUpdateOptions = Pick<SplitviewComponentOptions, 'orientation' | 'components' | 'frameworkComponents'>;
35
34
  export interface ISplitviewComponent extends IDisposable {
36
35
  readonly minimumSize: number;
37
36
  readonly maximumSize: number;
@@ -43,7 +42,7 @@ export interface ISplitviewComponent extends IDisposable {
43
42
  readonly onDidRemoveView: Event<IView>;
44
43
  readonly onDidLayoutFromJSON: Event<void>;
45
44
  readonly panels: SplitviewPanel[];
46
- updateOptions(options: Partial<SplitviewComponentUpdateOptions>): void;
45
+ updateOptions(options: Partial<SplitViewOptions>): void;
47
46
  addPanel<T extends object = Parameters>(options: AddSplitviewComponentOptions<T>): ISplitviewPanel;
48
47
  layout(width: number, height: number): void;
49
48
  onDidLayoutChange: Event<void>;
@@ -73,6 +72,7 @@ export declare class SplitviewComponent extends Resizable implements ISplitviewC
73
72
  readonly onDidRemoveView: Event<IView>;
74
73
  private readonly _onDidLayoutChange;
75
74
  readonly onDidLayoutChange: Event<void>;
75
+ private readonly _classNames;
76
76
  get panels(): SplitviewPanel[];
77
77
  get options(): SplitviewComponentOptions;
78
78
  get length(): number;
@@ -84,7 +84,7 @@ export declare class SplitviewComponent extends Resizable implements ISplitviewC
84
84
  get height(): number;
85
85
  get width(): number;
86
86
  constructor(parentElement: HTMLElement, options: SplitviewComponentOptions);
87
- updateOptions(options: Partial<SplitviewComponentUpdateOptions>): void;
87
+ updateOptions(options: Partial<SplitviewComponentOptions>): void;
88
88
  focus(): void;
89
89
  movePanel(from: number, to: number): void;
90
90
  setVisible(panel: SplitviewPanel, visible: boolean): void;
@@ -3,6 +3,7 @@ import { Orientation, Sizing, Splitview, } from './splitview';
3
3
  import { Emitter } from '../events';
4
4
  import { createComponent } from '../panel/componentFactory';
5
5
  import { Resizable } from '../resizable';
6
+ import { Classnames } from '../dom';
6
7
  /**
7
8
  * A high-level implementation of splitview that works using 'panels'
8
9
  */
@@ -45,6 +46,7 @@ export class SplitviewComponent extends Resizable {
45
46
  : this.splitview.orthogonalSize;
46
47
  }
47
48
  constructor(parentElement, options) {
49
+ var _a;
48
50
  super(parentElement, options.disableAutoResizing);
49
51
  this._splitviewChangeDisposable = new MutableDisposable();
50
52
  this._panels = new Map();
@@ -56,9 +58,8 @@ export class SplitviewComponent extends Resizable {
56
58
  this.onDidRemoveView = this._onDidRemoveView.event;
57
59
  this._onDidLayoutChange = new Emitter();
58
60
  this.onDidLayoutChange = this._onDidLayoutChange.event;
59
- if (typeof options.className === 'string') {
60
- this.element.classList.add(options.className);
61
- }
61
+ this._classNames = new Classnames(this.element);
62
+ this._classNames.setClassNames((_a = options.className) !== null && _a !== void 0 ? _a : '');
62
63
  this._options = options;
63
64
  if (!options.components) {
64
65
  options.components = {};
@@ -70,12 +71,17 @@ export class SplitviewComponent extends Resizable {
70
71
  this.addDisposables(this._onDidAddView, this._onDidLayoutfromJSON, this._onDidRemoveView, this._onDidLayoutChange);
71
72
  }
72
73
  updateOptions(options) {
73
- const hasOrientationChanged = typeof options.orientation === 'string' &&
74
- this.options.orientation !== options.orientation;
75
- this._options = Object.assign(Object.assign({}, this.options), options);
76
- if (hasOrientationChanged) {
74
+ var _a, _b;
75
+ if ('className' in options) {
76
+ this._classNames.setClassNames((_a = options.className) !== null && _a !== void 0 ? _a : '');
77
+ }
78
+ if ('disableResizing' in options) {
79
+ this.disableResizing = (_b = options.disableAutoResizing) !== null && _b !== void 0 ? _b : false;
80
+ }
81
+ if (typeof options.orientation === 'string') {
77
82
  this.splitview.orientation = options.orientation;
78
83
  }
84
+ this._options = Object.assign(Object.assign({}, this.options), options);
79
85
  this.splitview.layout(this.splitview.size, this.splitview.orthogonalSize);
80
86
  }
81
87
  focus() {
@@ -200,7 +200,7 @@
200
200
  --dv-group-view-background-color: #ebeced;
201
201
  --dv-tabs-and-actions-container-background-color: #fcfcfc;
202
202
  --dv-activegroup-visiblepanel-tab-background-color: #f0f1f2;
203
- --dv-activegroup-hiddenpanel-tab-background-color: ##fcfcfc;
203
+ --dv-activegroup-hiddenpanel-tab-background-color: #fcfcfc;
204
204
  --dv-inactivegroup-visiblepanel-tab-background-color: #f0f1f2;
205
205
  --dv-inactivegroup-hiddenpanel-tab-background-color: #fcfcfc;
206
206
  --dv-tab-divider-color: transparent;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dockview-core",
3
- "version": "1.16.0",
3
+ "version": "1.17.0",
4
4
  "description": "Zero dependency layout manager supporting tabs, grids and splitviews",
5
5
  "keywords": [
6
6
  "splitview",