dockview-core 2.1.4 → 3.0.1

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 (79) hide show
  1. package/dist/cjs/api/component.api.d.ts +4 -3
  2. package/dist/cjs/api/component.api.js +8 -22
  3. package/dist/cjs/dockview/components/titlebar/tabsContainer.d.ts +2 -1
  4. package/dist/cjs/dockview/components/titlebar/tabsContainer.js +30 -33
  5. package/dist/cjs/dockview/options.d.ts +4 -8
  6. package/dist/cjs/dockview/options.js +28 -20
  7. package/dist/cjs/events.d.ts +9 -0
  8. package/dist/cjs/events.js +18 -1
  9. package/dist/cjs/gridview/baseComponentGridview.js +1 -2
  10. package/dist/cjs/gridview/gridviewComponent.js +15 -24
  11. package/dist/cjs/gridview/options.d.ts +10 -12
  12. package/dist/cjs/gridview/options.js +15 -0
  13. package/dist/cjs/index.d.ts +4 -4
  14. package/dist/cjs/index.js +8 -1
  15. package/dist/cjs/paneview/defaultPaneviewHeader.d.ts +2 -2
  16. package/dist/cjs/paneview/draggablePaneviewPanel.d.ts +6 -2
  17. package/dist/cjs/paneview/draggablePaneviewPanel.js +8 -9
  18. package/dist/cjs/paneview/options.d.ts +25 -21
  19. package/dist/cjs/paneview/options.js +42 -0
  20. package/dist/cjs/paneview/paneviewComponent.d.ts +12 -15
  21. package/dist/cjs/paneview/paneviewComponent.js +30 -40
  22. package/dist/cjs/paneview/paneviewPanel.d.ts +3 -8
  23. package/dist/cjs/splitview/options.d.ts +7 -9
  24. package/dist/cjs/splitview/options.js +17 -0
  25. package/dist/cjs/splitview/splitview.d.ts +5 -5
  26. package/dist/cjs/splitview/splitviewComponent.js +10 -21
  27. package/dist/dockview-core.amd.js +161 -161
  28. package/dist/dockview-core.amd.js.map +1 -1
  29. package/dist/dockview-core.amd.min.js +2 -2
  30. package/dist/dockview-core.amd.min.js.map +1 -1
  31. package/dist/dockview-core.amd.min.noStyle.js +2 -2
  32. package/dist/dockview-core.amd.min.noStyle.js.map +1 -1
  33. package/dist/dockview-core.amd.noStyle.js +161 -161
  34. package/dist/dockview-core.amd.noStyle.js.map +1 -1
  35. package/dist/dockview-core.cjs.js +161 -161
  36. package/dist/dockview-core.cjs.js.map +1 -1
  37. package/dist/dockview-core.esm.js +157 -161
  38. package/dist/dockview-core.esm.js.map +1 -1
  39. package/dist/dockview-core.esm.min.js +2 -2
  40. package/dist/dockview-core.esm.min.js.map +1 -1
  41. package/dist/dockview-core.js +161 -161
  42. package/dist/dockview-core.js.map +1 -1
  43. package/dist/dockview-core.min.js +2 -2
  44. package/dist/dockview-core.min.js.map +1 -1
  45. package/dist/dockview-core.min.noStyle.js +2 -2
  46. package/dist/dockview-core.min.noStyle.js.map +1 -1
  47. package/dist/dockview-core.noStyle.js +161 -161
  48. package/dist/dockview-core.noStyle.js.map +1 -1
  49. package/dist/esm/api/component.api.d.ts +4 -3
  50. package/dist/esm/api/component.api.js +4 -10
  51. package/dist/esm/dockview/components/titlebar/tabsContainer.d.ts +2 -1
  52. package/dist/esm/dockview/components/titlebar/tabsContainer.js +20 -23
  53. package/dist/esm/dockview/options.d.ts +4 -8
  54. package/dist/esm/dockview/options.js +4 -9
  55. package/dist/esm/events.d.ts +9 -0
  56. package/dist/esm/events.js +11 -0
  57. package/dist/esm/gridview/baseComponentGridview.js +1 -2
  58. package/dist/esm/gridview/gridviewComponent.js +15 -24
  59. package/dist/esm/gridview/options.d.ts +10 -12
  60. package/dist/esm/gridview/options.js +14 -1
  61. package/dist/esm/index.d.ts +4 -4
  62. package/dist/esm/index.js +3 -0
  63. package/dist/esm/paneview/defaultPaneviewHeader.d.ts +2 -2
  64. package/dist/esm/paneview/draggablePaneviewPanel.d.ts +6 -2
  65. package/dist/esm/paneview/draggablePaneviewPanel.js +8 -9
  66. package/dist/esm/paneview/options.d.ts +25 -21
  67. package/dist/esm/paneview/options.js +22 -1
  68. package/dist/esm/paneview/paneviewComponent.d.ts +12 -15
  69. package/dist/esm/paneview/paneviewComponent.js +30 -40
  70. package/dist/esm/paneview/paneviewPanel.d.ts +3 -8
  71. package/dist/esm/splitview/options.d.ts +7 -9
  72. package/dist/esm/splitview/options.js +16 -1
  73. package/dist/esm/splitview/splitview.d.ts +5 -5
  74. package/dist/esm/splitview/splitviewComponent.js +10 -21
  75. package/package.json +1 -1
  76. package/dist/cjs/panel/componentFactory.d.ts +0 -11
  77. package/dist/cjs/panel/componentFactory.js +0 -30
  78. package/dist/esm/panel/componentFactory.d.ts +0 -11
  79. package/dist/esm/panel/componentFactory.js +0 -24
@@ -1,5 +1,4 @@
1
1
  import { PaneviewApi } from '../api/component.api';
2
- import { createComponent } from '../panel/componentFactory';
3
2
  import { Emitter } from '../events';
4
3
  import { CompositeDisposable, MutableDisposable, } from '../lifecycle';
5
4
  import { Orientation, Sizing } from '../splitview/splitview';
@@ -73,16 +72,12 @@ export class PaneviewComponent extends Resizable {
73
72
  this.onDidAddView = this._onDidAddView.event;
74
73
  this._onDidRemoveView = new Emitter();
75
74
  this.onDidRemoveView = this._onDidRemoveView.event;
76
- this.addDisposables(this._onDidLayoutChange, this._onDidLayoutfromJSON, this._onDidDrop, this._onDidAddView, this._onDidRemoveView);
75
+ this._onUnhandledDragOverEvent = new Emitter();
76
+ this.onUnhandledDragOverEvent = this._onUnhandledDragOverEvent.event;
77
+ this.addDisposables(this._onDidLayoutChange, this._onDidLayoutfromJSON, this._onDidDrop, this._onDidAddView, this._onDidRemoveView, this._onUnhandledDragOverEvent);
77
78
  this._classNames = new Classnames(this.element);
78
79
  this._classNames.setClassNames((_a = options.className) !== null && _a !== void 0 ? _a : '');
79
80
  this._options = options;
80
- if (!options.components) {
81
- options.components = {};
82
- }
83
- if (!options.frameworkComponents) {
84
- options.frameworkComponents = {};
85
- }
86
81
  this.paneview = new Paneview(this.element, {
87
82
  // only allow paneview in the vertical orientation for now
88
83
  orientation: Orientation.VERTICAL,
@@ -107,22 +102,19 @@ export class PaneviewComponent extends Resizable {
107
102
  this._options = Object.assign(Object.assign({}, this.options), options);
108
103
  }
109
104
  addPanel(options) {
110
- var _a, _b, _c, _d;
111
- const body = createComponent(options.id, options.component, (_a = this.options.components) !== null && _a !== void 0 ? _a : {}, (_b = this.options.frameworkComponents) !== null && _b !== void 0 ? _b : {}, this.options.frameworkWrapper
112
- ? {
113
- createComponent: this.options.frameworkWrapper.body.createComponent,
114
- }
115
- : undefined);
105
+ var _a;
106
+ const body = this.options.createComponent({
107
+ id: options.id,
108
+ name: options.component,
109
+ });
116
110
  let header;
117
- if (options.headerComponent) {
118
- header = createComponent(options.id, options.headerComponent, (_c = this.options.headerComponents) !== null && _c !== void 0 ? _c : {}, this.options.headerframeworkComponents, this.options.frameworkWrapper
119
- ? {
120
- createComponent: this.options.frameworkWrapper.header
121
- .createComponent,
122
- }
123
- : undefined);
111
+ if (options.headerComponent && this.options.createHeaderComponent) {
112
+ header = this.options.createHeaderComponent({
113
+ id: options.id,
114
+ name: options.headerComponent,
115
+ });
124
116
  }
125
- else {
117
+ if (!header) {
126
118
  header = new DefaultHeader();
127
119
  }
128
120
  const view = new PaneFramework({
@@ -140,7 +132,7 @@ export class PaneviewComponent extends Resizable {
140
132
  const size = typeof options.size === 'number' ? options.size : Sizing.Distribute;
141
133
  const index = typeof options.index === 'number' ? options.index : undefined;
142
134
  view.init({
143
- params: (_d = options.params) !== null && _d !== void 0 ? _d : {},
135
+ params: (_a = options.params) !== null && _a !== void 0 ? _a : {},
144
136
  minimumBodySize: options.minimumBodySize,
145
137
  maximumBodySize: options.maximumBodySize,
146
138
  isExpanded: options.isExpanded,
@@ -205,24 +197,20 @@ export class PaneviewComponent extends Resizable {
205
197
  descriptor: {
206
198
  size,
207
199
  views: views.map((view) => {
208
- var _a, _b, _c, _d;
209
200
  const data = view.data;
210
- const body = createComponent(data.id, data.component, (_a = this.options.components) !== null && _a !== void 0 ? _a : {}, (_b = this.options.frameworkComponents) !== null && _b !== void 0 ? _b : {}, this.options.frameworkWrapper
211
- ? {
212
- createComponent: this.options.frameworkWrapper.body
213
- .createComponent,
214
- }
215
- : undefined);
201
+ const body = this.options.createComponent({
202
+ id: data.id,
203
+ name: data.component,
204
+ });
216
205
  let header;
217
- if (data.headerComponent) {
218
- header = createComponent(data.id, data.headerComponent, (_c = this.options.headerComponents) !== null && _c !== void 0 ? _c : {}, (_d = this.options.headerframeworkComponents) !== null && _d !== void 0 ? _d : {}, this.options.frameworkWrapper
219
- ? {
220
- createComponent: this.options.frameworkWrapper.header
221
- .createComponent,
222
- }
223
- : undefined);
206
+ if (data.headerComponent &&
207
+ this.options.createHeaderComponent) {
208
+ header = this.options.createHeaderComponent({
209
+ id: data.id,
210
+ name: data.headerComponent,
211
+ });
224
212
  }
225
- else {
213
+ if (!header) {
226
214
  header = new DefaultHeader();
227
215
  }
228
216
  const panel = new PaneFramework({
@@ -270,9 +258,11 @@ export class PaneviewComponent extends Resizable {
270
258
  this.paneview.dispose();
271
259
  }
272
260
  doAddPanel(panel) {
273
- const disposable = panel.onDidDrop((event) => {
261
+ const disposable = new CompositeDisposable(panel.onDidDrop((event) => {
274
262
  this._onDidDrop.fire(event);
275
- });
263
+ }), panel.onUnhandledDragOverEvent((event) => {
264
+ this._onUnhandledDragOverEvent.fire(event);
265
+ }));
276
266
  this._viewDisposables.set(panel.id, disposable);
277
267
  }
278
268
  doRemovePanel(panel) {
@@ -21,12 +21,7 @@ export interface PanePanelInitParameter extends PanelInitParameters {
21
21
  export interface PanePanelComponentInitParameter extends PanePanelInitParameter {
22
22
  api: PaneviewPanelApiImpl;
23
23
  }
24
- export interface IPaneBodyPart extends IDisposable {
25
- readonly element: HTMLElement;
26
- update(params: PanelUpdateEvent): void;
27
- init(parameters: PanePanelComponentInitParameter): void;
28
- }
29
- export interface IPaneHeaderPart extends IDisposable {
24
+ export interface IPanePart extends IDisposable {
30
25
  readonly element: HTMLElement;
31
26
  update(params: PanelUpdateEvent): void;
32
27
  init(parameters: PanePanelComponentInitParameter): void;
@@ -89,6 +84,6 @@ export declare abstract class PaneviewPanel extends BasePanelView<PaneviewPanelA
89
84
  toJSON(): PanePanelViewState;
90
85
  private renderOnce;
91
86
  getComponent(): IFrameworkPart;
92
- protected abstract getBodyComponent(): IPaneBodyPart;
93
- protected abstract getHeaderComponent(): IPaneHeaderPart;
87
+ protected abstract getBodyComponent(): IPanePart;
88
+ protected abstract getHeaderComponent(): IPanePart;
94
89
  }
@@ -2,7 +2,7 @@ import { PanelInitParameters } from '../panel/types';
2
2
  import { SplitViewOptions, LayoutPriority } from './splitview';
3
3
  import { SplitviewPanel } from './splitviewPanel';
4
4
  import { SplitviewComponent } from './splitviewComponent';
5
- import { ComponentConstructor, FrameworkFactory } from '../panel/componentFactory';
5
+ import { CreateComponentOptions } from '../dockview/options';
6
6
  export interface PanelViewInitParameters extends PanelInitParameters {
7
7
  minimumSize?: number;
8
8
  maximumSize?: number;
@@ -10,14 +10,12 @@ export interface PanelViewInitParameters extends PanelInitParameters {
10
10
  priority?: LayoutPriority;
11
11
  accessor: SplitviewComponent;
12
12
  }
13
- export interface SplitviewComponentOptions extends SplitViewOptions {
13
+ export interface SplitviewOptions extends SplitViewOptions {
14
14
  disableAutoResizing?: boolean;
15
- components?: {
16
- [componentName: string]: ComponentConstructor<SplitviewPanel>;
17
- };
18
- frameworkComponents?: {
19
- [componentName: string]: any;
20
- };
21
- frameworkWrapper?: FrameworkFactory<SplitviewPanel>;
22
15
  className?: string;
23
16
  }
17
+ export interface SplitviewFrameworkOptions {
18
+ createComponent: (options: CreateComponentOptions) => SplitviewPanel;
19
+ }
20
+ export type SplitviewComponentOptions = SplitviewOptions & SplitviewFrameworkOptions;
21
+ export declare const PROPERTY_KEYS_SPLITVIEW: (keyof SplitviewOptions)[];
@@ -1 +1,16 @@
1
- export {};
1
+ export const PROPERTY_KEYS_SPLITVIEW = (() => {
2
+ /**
3
+ * by readong the keys from an empty value object TypeScript will error
4
+ * when we add or remove new properties to `DockviewOptions`
5
+ */
6
+ const properties = {
7
+ orientation: undefined,
8
+ descriptor: undefined,
9
+ proportionalLayout: undefined,
10
+ styles: undefined,
11
+ margin: undefined,
12
+ disableAutoResizing: undefined,
13
+ className: undefined,
14
+ };
15
+ return Object.keys(properties);
16
+ })();
@@ -14,11 +14,11 @@ export interface ISplitviewStyles {
14
14
  separatorBorder: string;
15
15
  }
16
16
  export interface SplitViewOptions {
17
- readonly orientation: Orientation;
18
- readonly descriptor?: ISplitViewDescriptor;
19
- readonly proportionalLayout?: boolean;
20
- readonly styles?: ISplitviewStyles;
21
- readonly margin?: number;
17
+ orientation: Orientation;
18
+ descriptor?: ISplitViewDescriptor;
19
+ proportionalLayout?: boolean;
20
+ styles?: ISplitviewStyles;
21
+ margin?: number;
22
22
  }
23
23
  export declare enum LayoutPriority {
24
24
  Low = "low",// view is offered space last
@@ -1,7 +1,6 @@
1
1
  import { CompositeDisposable, MutableDisposable, } from '../lifecycle';
2
2
  import { Orientation, Sizing, Splitview, } from './splitview';
3
3
  import { Emitter } from '../events';
4
- import { createComponent } from '../panel/componentFactory';
5
4
  import { Resizable } from '../resizable';
6
5
  import { Classnames } from '../dom';
7
6
  /**
@@ -61,12 +60,6 @@ export class SplitviewComponent extends Resizable {
61
60
  this._classNames = new Classnames(this.element);
62
61
  this._classNames.setClassNames((_a = options.className) !== null && _a !== void 0 ? _a : '');
63
62
  this._options = options;
64
- if (!options.components) {
65
- options.components = {};
66
- }
67
- if (!options.frameworkComponents) {
68
- options.frameworkComponents = {};
69
- }
70
63
  this.splitview = new Splitview(this.element, options);
71
64
  this.addDisposables(this._onDidAddView, this._onDidLayoutfromJSON, this._onDidRemoveView, this._onDidLayoutChange);
72
65
  }
@@ -129,18 +122,17 @@ export class SplitviewComponent extends Resizable {
129
122
  return this.panels.find((view) => view.id === id);
130
123
  }
131
124
  addPanel(options) {
132
- var _a, _b, _c;
125
+ var _a;
133
126
  if (this._panels.has(options.id)) {
134
127
  throw new Error(`panel ${options.id} already exists`);
135
128
  }
136
- const view = createComponent(options.id, options.component, (_a = this.options.components) !== null && _a !== void 0 ? _a : {}, (_b = this.options.frameworkComponents) !== null && _b !== void 0 ? _b : {}, this.options.frameworkWrapper
137
- ? {
138
- createComponent: this.options.frameworkWrapper.createComponent,
139
- }
140
- : undefined);
129
+ const view = this.options.createComponent({
130
+ id: options.id,
131
+ name: options.component,
132
+ });
141
133
  view.orientation = this.splitview.orientation;
142
134
  view.init({
143
- params: (_c = options.params) !== null && _c !== void 0 ? _c : {},
135
+ params: (_a = options.params) !== null && _a !== void 0 ? _a : {},
144
136
  minimumSize: options.minimumSize,
145
137
  maximumSize: options.maximumSize,
146
138
  snap: options.snap,
@@ -202,17 +194,14 @@ export class SplitviewComponent extends Resizable {
202
194
  descriptor: {
203
195
  size,
204
196
  views: views.map((view) => {
205
- var _a, _b;
206
197
  const data = view.data;
207
198
  if (this._panels.has(data.id)) {
208
199
  throw new Error(`panel ${data.id} already exists`);
209
200
  }
210
- const panel = createComponent(data.id, data.component, (_a = this.options.components) !== null && _a !== void 0 ? _a : {}, (_b = this.options.frameworkComponents) !== null && _b !== void 0 ? _b : {}, this.options.frameworkWrapper
211
- ? {
212
- createComponent: this.options.frameworkWrapper
213
- .createComponent,
214
- }
215
- : undefined);
201
+ const panel = this.options.createComponent({
202
+ id: data.id,
203
+ name: data.component,
204
+ });
216
205
  queue.push(() => {
217
206
  var _a;
218
207
  panel.init({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dockview-core",
3
- "version": "2.1.4",
3
+ "version": "3.0.1",
4
4
  "description": "Zero dependency layout manager supporting tabs, grids and splitviews",
5
5
  "keywords": [
6
6
  "splitview",
@@ -1,11 +0,0 @@
1
- export interface FrameworkFactory<T> {
2
- createComponent: (id: string, componentId: string, component: any) => T;
3
- }
4
- export type ComponentConstructor<T> = {
5
- new (id: string, component: string): T;
6
- };
7
- export declare function createComponent<T>(id: string, componentName?: string, components?: {
8
- [componentName: string]: ComponentConstructor<T>;
9
- }, frameworkComponents?: {
10
- [componentName: string]: any;
11
- }, createFrameworkComponent?: FrameworkFactory<T>, fallback?: () => T): T;
@@ -1,30 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createComponent = void 0;
4
- function createComponent(id, componentName, components, frameworkComponents, createFrameworkComponent, fallback) {
5
- if (components === void 0) { components = {}; }
6
- if (frameworkComponents === void 0) { frameworkComponents = {}; }
7
- var Component = typeof componentName === 'string'
8
- ? components[componentName]
9
- : undefined;
10
- var FrameworkComponent = typeof componentName === 'string'
11
- ? frameworkComponents[componentName]
12
- : undefined;
13
- if (Component && FrameworkComponent) {
14
- throw new Error("Cannot create '".concat(id, "'. component '").concat(componentName, "' registered as both a component and frameworkComponent"));
15
- }
16
- if (FrameworkComponent) {
17
- if (!createFrameworkComponent) {
18
- throw new Error("Cannot create '".concat(id, "' for framework component '").concat(componentName, "'. you must register a frameworkPanelWrapper to use framework components"));
19
- }
20
- return createFrameworkComponent.createComponent(id, componentName, FrameworkComponent);
21
- }
22
- if (!Component) {
23
- if (fallback) {
24
- return fallback();
25
- }
26
- throw new Error("Cannot create '".concat(id, "', no component '").concat(componentName, "' provided"));
27
- }
28
- return new Component(id, componentName);
29
- }
30
- exports.createComponent = createComponent;
@@ -1,11 +0,0 @@
1
- export interface FrameworkFactory<T> {
2
- createComponent: (id: string, componentId: string, component: any) => T;
3
- }
4
- export type ComponentConstructor<T> = {
5
- new (id: string, component: string): T;
6
- };
7
- export declare function createComponent<T>(id: string, componentName?: string, components?: {
8
- [componentName: string]: ComponentConstructor<T>;
9
- }, frameworkComponents?: {
10
- [componentName: string]: any;
11
- }, createFrameworkComponent?: FrameworkFactory<T>, fallback?: () => T): T;
@@ -1,24 +0,0 @@
1
- export function createComponent(id, componentName, components = {}, frameworkComponents = {}, createFrameworkComponent, fallback) {
2
- const Component = typeof componentName === 'string'
3
- ? components[componentName]
4
- : undefined;
5
- const FrameworkComponent = typeof componentName === 'string'
6
- ? frameworkComponents[componentName]
7
- : undefined;
8
- if (Component && FrameworkComponent) {
9
- throw new Error(`Cannot create '${id}'. component '${componentName}' registered as both a component and frameworkComponent`);
10
- }
11
- if (FrameworkComponent) {
12
- if (!createFrameworkComponent) {
13
- throw new Error(`Cannot create '${id}' for framework component '${componentName}'. you must register a frameworkPanelWrapper to use framework components`);
14
- }
15
- return createFrameworkComponent.createComponent(id, componentName, FrameworkComponent);
16
- }
17
- if (!Component) {
18
- if (fallback) {
19
- return fallback();
20
- }
21
- throw new Error(`Cannot create '${id}', no component '${componentName}' provided`);
22
- }
23
- return new Component(id, componentName);
24
- }