dockview-core 1.17.2 → 2.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 (122) hide show
  1. package/dist/cjs/api/component.api.d.ts +1 -1
  2. package/dist/cjs/api/dockviewGroupPanelApi.d.ts +10 -8
  3. package/dist/cjs/api/dockviewGroupPanelApi.js +1 -0
  4. package/dist/cjs/api/dockviewPanelApi.d.ts +6 -14
  5. package/dist/cjs/api/dockviewPanelApi.js +5 -3
  6. package/dist/cjs/dnd/abstractDragHandler.js +1 -1
  7. package/dist/cjs/dnd/dnd.d.ts +2 -2
  8. package/dist/cjs/dnd/droptarget.js +4 -4
  9. package/dist/cjs/dockview/components/panel/content.d.ts +2 -2
  10. package/dist/cjs/dockview/components/panel/content.js +3 -1
  11. package/dist/cjs/dockview/components/tab/defaultTab.d.ts +3 -3
  12. package/dist/cjs/dockview/components/tab/tab.js +4 -4
  13. package/dist/cjs/dockview/components/titlebar/tabsContainer.js +5 -9
  14. package/dist/cjs/dockview/components/titlebar/voidContainer.js +1 -1
  15. package/dist/cjs/dockview/components/watermark/watermark.d.ts +1 -1
  16. package/dist/cjs/dockview/components/watermark/watermark.js +6 -6
  17. package/dist/cjs/dockview/dockviewComponent.d.ts +2 -3
  18. package/dist/cjs/dockview/dockviewComponent.js +66 -35
  19. package/dist/cjs/dockview/dockviewGroupPanel.js +16 -12
  20. package/dist/cjs/dockview/dockviewGroupPanelModel.d.ts +3 -3
  21. package/dist/cjs/dockview/dockviewGroupPanelModel.js +7 -7
  22. package/dist/cjs/dockview/dockviewPanel.d.ts +4 -4
  23. package/dist/cjs/dockview/dockviewPanelModel.d.ts +1 -1
  24. package/dist/cjs/dockview/options.d.ts +8 -0
  25. package/dist/cjs/dom.d.ts +11 -1
  26. package/dist/cjs/dom.js +19 -1
  27. package/dist/cjs/gridview/basePanelView.d.ts +1 -1
  28. package/dist/cjs/gridview/branchNode.d.ts +1 -1
  29. package/dist/cjs/gridview/branchNode.js +1 -1
  30. package/dist/cjs/gridview/gridview.js +2 -2
  31. package/dist/cjs/gridview/gridviewPanel.d.ts +4 -0
  32. package/dist/cjs/gridview/gridviewPanel.js +60 -32
  33. package/dist/cjs/gridview/leafNode.d.ts +1 -1
  34. package/dist/cjs/index.d.ts +8 -9
  35. package/dist/cjs/index.js +14 -7
  36. package/dist/cjs/overlay/overlay.d.ts +3 -3
  37. package/dist/cjs/paneview/defaultPaneviewHeader.d.ts +1 -1
  38. package/dist/cjs/paneview/defaultPaneviewHeader.js +5 -3
  39. package/dist/cjs/paneview/paneview.d.ts +3 -3
  40. package/dist/cjs/paneview/paneview.js +3 -3
  41. package/dist/cjs/paneview/paneviewComponent.d.ts +2 -2
  42. package/dist/cjs/paneview/paneviewPanel.d.ts +2 -2
  43. package/dist/cjs/paneview/paneviewPanel.js +3 -3
  44. package/dist/cjs/popoutWindow.js +23 -16
  45. package/dist/cjs/splitview/splitview.d.ts +6 -6
  46. package/dist/cjs/splitview/splitview.js +18 -17
  47. package/dist/cjs/splitview/splitviewComponent.d.ts +2 -2
  48. package/dist/cjs/splitview/viewItem.d.ts +1 -1
  49. package/dist/cjs/svg.js +1 -1
  50. package/dist/dockview-core.amd.js +241 -169
  51. package/dist/dockview-core.amd.js.map +1 -1
  52. package/dist/dockview-core.amd.min.js +2 -2
  53. package/dist/dockview-core.amd.min.js.map +1 -1
  54. package/dist/dockview-core.amd.min.noStyle.js +2 -2
  55. package/dist/dockview-core.amd.min.noStyle.js.map +1 -1
  56. package/dist/dockview-core.amd.noStyle.js +240 -168
  57. package/dist/dockview-core.amd.noStyle.js.map +1 -1
  58. package/dist/dockview-core.cjs.js +241 -169
  59. package/dist/dockview-core.cjs.js.map +1 -1
  60. package/dist/dockview-core.esm.js +242 -168
  61. package/dist/dockview-core.esm.js.map +1 -1
  62. package/dist/dockview-core.esm.min.js +2 -2
  63. package/dist/dockview-core.esm.min.js.map +1 -1
  64. package/dist/dockview-core.js +241 -169
  65. package/dist/dockview-core.js.map +1 -1
  66. package/dist/dockview-core.min.js +2 -2
  67. package/dist/dockview-core.min.js.map +1 -1
  68. package/dist/dockview-core.min.noStyle.js +2 -2
  69. package/dist/dockview-core.min.noStyle.js.map +1 -1
  70. package/dist/dockview-core.noStyle.js +240 -168
  71. package/dist/dockview-core.noStyle.js.map +1 -1
  72. package/dist/esm/api/component.api.d.ts +1 -1
  73. package/dist/esm/api/dockviewGroupPanelApi.d.ts +10 -8
  74. package/dist/esm/api/dockviewGroupPanelApi.js +1 -0
  75. package/dist/esm/api/dockviewPanelApi.d.ts +6 -14
  76. package/dist/esm/api/dockviewPanelApi.js +5 -3
  77. package/dist/esm/dnd/abstractDragHandler.js +1 -1
  78. package/dist/esm/dnd/dnd.d.ts +2 -2
  79. package/dist/esm/dnd/droptarget.js +4 -4
  80. package/dist/esm/dockview/components/panel/content.d.ts +2 -2
  81. package/dist/esm/dockview/components/panel/content.js +4 -2
  82. package/dist/esm/dockview/components/tab/defaultTab.d.ts +3 -3
  83. package/dist/esm/dockview/components/tab/tab.js +4 -4
  84. package/dist/esm/dockview/components/titlebar/tabsContainer.js +5 -9
  85. package/dist/esm/dockview/components/titlebar/voidContainer.js +1 -1
  86. package/dist/esm/dockview/components/watermark/watermark.d.ts +1 -1
  87. package/dist/esm/dockview/components/watermark/watermark.js +6 -6
  88. package/dist/esm/dockview/dockviewComponent.d.ts +2 -3
  89. package/dist/esm/dockview/dockviewComponent.js +65 -34
  90. package/dist/esm/dockview/dockviewGroupPanel.js +16 -12
  91. package/dist/esm/dockview/dockviewGroupPanelModel.d.ts +3 -3
  92. package/dist/esm/dockview/dockviewGroupPanelModel.js +7 -7
  93. package/dist/esm/dockview/dockviewPanel.d.ts +4 -4
  94. package/dist/esm/dockview/dockviewPanelModel.d.ts +1 -1
  95. package/dist/esm/dockview/options.d.ts +8 -0
  96. package/dist/esm/dom.d.ts +11 -1
  97. package/dist/esm/dom.js +14 -0
  98. package/dist/esm/gridview/basePanelView.d.ts +1 -1
  99. package/dist/esm/gridview/branchNode.d.ts +1 -1
  100. package/dist/esm/gridview/branchNode.js +1 -1
  101. package/dist/esm/gridview/gridview.js +2 -2
  102. package/dist/esm/gridview/gridviewPanel.d.ts +4 -0
  103. package/dist/esm/gridview/gridviewPanel.js +40 -12
  104. package/dist/esm/gridview/leafNode.d.ts +1 -1
  105. package/dist/esm/index.d.ts +8 -9
  106. package/dist/esm/index.js +5 -6
  107. package/dist/esm/overlay/overlay.d.ts +3 -3
  108. package/dist/esm/paneview/defaultPaneviewHeader.d.ts +1 -1
  109. package/dist/esm/paneview/defaultPaneviewHeader.js +5 -3
  110. package/dist/esm/paneview/paneview.d.ts +3 -3
  111. package/dist/esm/paneview/paneview.js +3 -3
  112. package/dist/esm/paneview/paneviewComponent.d.ts +2 -2
  113. package/dist/esm/paneview/paneviewPanel.d.ts +2 -2
  114. package/dist/esm/paneview/paneviewPanel.js +3 -3
  115. package/dist/esm/popoutWindow.js +24 -17
  116. package/dist/esm/splitview/splitview.d.ts +6 -6
  117. package/dist/esm/splitview/splitview.js +18 -17
  118. package/dist/esm/splitview/splitviewComponent.d.ts +2 -2
  119. package/dist/esm/splitview/viewItem.d.ts +1 -1
  120. package/dist/esm/svg.js +1 -1
  121. package/dist/styles/dockview.css +114 -125
  122. package/package.json +1 -1
@@ -512,7 +512,7 @@ export declare class DockviewApi implements CommonApi<SerializedDockview> {
512
512
  id: string;
513
513
  window: Window;
514
514
  }) => void;
515
- }): Promise<void>;
515
+ }): Promise<boolean>;
516
516
  setGap(gap: number | undefined): void;
517
517
  updateOptions(options: Partial<DockviewComponentOptions>): void;
518
518
  /**
@@ -4,6 +4,14 @@ import { DockviewGroupPanel } from '../dockview/dockviewGroupPanel';
4
4
  import { DockviewGroupChangeEvent, DockviewGroupLocation } from '../dockview/dockviewGroupPanelModel';
5
5
  import { Emitter, Event } from '../events';
6
6
  import { GridviewPanelApi, GridviewPanelApiImpl } from './gridviewPanelApi';
7
+ export interface DockviewGroupMoveParams {
8
+ group?: DockviewGroupPanel;
9
+ position?: Position;
10
+ /**
11
+ * The index to place the panel within a group, only applicable if the placement is within an existing group
12
+ */
13
+ index?: number;
14
+ }
7
15
  export interface DockviewGroupPanelApi extends GridviewPanelApi {
8
16
  readonly onDidLocationChange: Event<DockviewGroupPanelFloatingChangeEvent>;
9
17
  readonly onDidActivePanelChange: Event<DockviewGroupChangeEvent>;
@@ -12,10 +20,7 @@ export interface DockviewGroupPanelApi extends GridviewPanelApi {
12
20
  * If you require the Window object
13
21
  */
14
22
  getWindow(): Window;
15
- moveTo(options: {
16
- group?: DockviewGroupPanel;
17
- position?: Position;
18
- }): void;
23
+ moveTo(options: DockviewGroupMoveParams): void;
19
24
  maximize(): void;
20
25
  isMaximized(): boolean;
21
26
  exitMaximized(): void;
@@ -36,10 +41,7 @@ export declare class DockviewGroupPanelApiImpl extends GridviewPanelApiImpl {
36
41
  constructor(id: string, accessor: DockviewComponent);
37
42
  close(): void;
38
43
  getWindow(): Window;
39
- moveTo(options: {
40
- group?: DockviewGroupPanel;
41
- position?: Position;
42
- }): void;
44
+ moveTo(options: DockviewGroupMoveParams): void;
43
45
  maximize(): void;
44
46
  isMaximized(): boolean;
45
47
  exitMaximized(): void;
@@ -71,6 +71,7 @@ var DockviewGroupPanelApiImpl = /** @class */ (function (_super) {
71
71
  position: options.group
72
72
  ? (_c = options.position) !== null && _c !== void 0 ? _c : 'center'
73
73
  : 'center',
74
+ index: options.index,
74
75
  },
75
76
  });
76
77
  };
@@ -3,9 +3,8 @@ import { GridviewPanelApiImpl, GridviewPanelApi } from './gridviewPanelApi';
3
3
  import { DockviewGroupPanel } from '../dockview/dockviewGroupPanel';
4
4
  import { DockviewPanel } from '../dockview/dockviewPanel';
5
5
  import { DockviewComponent } from '../dockview/dockviewComponent';
6
- import { Position } from '../dnd/droptarget';
7
6
  import { DockviewPanelRenderer } from '../overlay/overlayRenderContainer';
8
- import { DockviewGroupPanelFloatingChangeEvent } from './dockviewGroupPanelApi';
7
+ import { DockviewGroupMoveParams, DockviewGroupPanelFloatingChangeEvent } from './dockviewGroupPanelApi';
9
8
  import { DockviewGroupLocation } from '../dockview/dockviewGroupPanelModel';
10
9
  export interface TitleEvent {
11
10
  readonly title: string;
@@ -18,6 +17,7 @@ export interface ActiveGroupEvent {
18
17
  }
19
18
  export interface GroupChangedEvent {
20
19
  }
20
+ export type DockviewPanelMoveParams = DockviewGroupMoveParams;
21
21
  export interface DockviewPanelApi extends Omit<GridviewPanelApi, 'setVisible' | 'onDidConstraintsChange' | 'setConstraints'> {
22
22
  /**
23
23
  * The id of the tab component renderer
@@ -38,11 +38,7 @@ export interface DockviewPanelApi extends Omit<GridviewPanelApi, 'setVisible' |
38
38
  close(): void;
39
39
  setTitle(title: string): void;
40
40
  setRenderer(renderer: DockviewPanelRenderer): void;
41
- moveTo(options: {
42
- group: DockviewGroupPanel;
43
- position?: Position;
44
- index?: number;
45
- }): void;
41
+ moveTo(options: DockviewPanelMoveParams): void;
46
42
  maximize(): void;
47
43
  isMaximized(): boolean;
48
44
  exitMaximized(): void;
@@ -52,10 +48,10 @@ export interface DockviewPanelApi extends Omit<GridviewPanelApi, 'setVisible' |
52
48
  getWindow(): Window;
53
49
  }
54
50
  export declare class DockviewPanelApiImpl extends GridviewPanelApiImpl implements DockviewPanelApi {
55
- private panel;
51
+ private readonly panel;
56
52
  private readonly accessor;
57
53
  private _group;
58
- private _tabComponent;
54
+ private readonly _tabComponent;
59
55
  readonly _onDidTitleChange: Emitter<TitleEvent>;
60
56
  readonly onDidTitleChange: Event<TitleEvent>;
61
57
  private readonly _onDidActiveGroupChange;
@@ -76,11 +72,7 @@ export declare class DockviewPanelApiImpl extends GridviewPanelApiImpl implement
76
72
  get tabComponent(): string | undefined;
77
73
  constructor(panel: DockviewPanel, group: DockviewGroupPanel, accessor: DockviewComponent, component: string, tabComponent?: string);
78
74
  getWindow(): Window;
79
- moveTo(options: {
80
- group: DockviewGroupPanel;
81
- position?: Position;
82
- index?: number;
83
- }): void;
75
+ moveTo(options: DockviewPanelMoveParams): void;
84
76
  setTitle(title: string): void;
85
77
  setRenderer(renderer: DockviewPanelRenderer): void;
86
78
  close(): void;
@@ -100,12 +100,14 @@ var DockviewPanelApiImpl = /** @class */ (function (_super) {
100
100
  return this.group.api.getWindow();
101
101
  };
102
102
  DockviewPanelApiImpl.prototype.moveTo = function (options) {
103
- var _a;
103
+ var _a, _b;
104
104
  this.accessor.moveGroupOrPanel({
105
105
  from: { groupId: this._group.id, panelId: this.panel.id },
106
106
  to: {
107
- group: options.group,
108
- position: (_a = options.position) !== null && _a !== void 0 ? _a : 'center',
107
+ group: (_a = options.group) !== null && _a !== void 0 ? _a : this._group,
108
+ position: options.group
109
+ ? (_b = options.position) !== null && _b !== void 0 ? _b : 'center'
110
+ : 'center',
109
111
  index: options.index,
110
112
  },
111
113
  });
@@ -65,7 +65,7 @@ var DragHandler = /** @class */ (function (_super) {
65
65
  * dnd logic. You can see the code at
66
66
  * https://github.com/react-dnd/react-dnd/blob/main/packages/backend-html5/src/HTML5BackendImpl.ts#L542
67
67
  */
68
- event.dataTransfer.setData('text/plain', '__dockview_internal_drag_event__');
68
+ event.dataTransfer.setData('text/plain', '');
69
69
  }
70
70
  }
71
71
  }), (0, events_1.addDisposableListener)(this.el, 'dragend', function () {
@@ -7,8 +7,8 @@ export interface IDragAndDropObserverCallbacks {
7
7
  onDragOver?: (e: DragEvent) => void;
8
8
  }
9
9
  export declare class DragAndDropObserver extends CompositeDisposable {
10
- private element;
11
- private callbacks;
10
+ private readonly element;
11
+ private readonly callbacks;
12
12
  private target;
13
13
  constructor(element: HTMLElement, callbacks: IDragAndDropObserverCallbacks);
14
14
  onDragEnter(e: DragEvent): void;
@@ -147,12 +147,12 @@ var Droptarget = /** @class */ (function (_super) {
147
147
  _this.markAsUsed(e);
148
148
  if (!_this.targetElement) {
149
149
  _this.targetElement = document.createElement('div');
150
- _this.targetElement.className = 'drop-target-dropzone';
150
+ _this.targetElement.className = 'dv-drop-target-dropzone';
151
151
  _this.overlayElement = document.createElement('div');
152
- _this.overlayElement.className = 'drop-target-selection';
152
+ _this.overlayElement.className = 'dv-drop-target-selection';
153
153
  _this._state = 'center';
154
154
  _this.targetElement.appendChild(_this.overlayElement);
155
- _this.element.classList.add('drop-target');
155
+ _this.element.classList.add('dv-drop-target');
156
156
  _this.element.append(_this.targetElement);
157
157
  }
158
158
  _this.toggleClasses(quadrant, width, height);
@@ -298,7 +298,7 @@ var Droptarget = /** @class */ (function (_super) {
298
298
  this.element.removeChild(this.targetElement);
299
299
  this.targetElement = undefined;
300
300
  this.overlayElement = undefined;
301
- this.element.classList.remove('drop-target');
301
+ this.element.classList.remove('dv-drop-target');
302
302
  }
303
303
  };
304
304
  Droptarget.USED_EVENT_ID = '__dockview_droptarget_event_is_used__';
@@ -21,9 +21,9 @@ export interface IContentContainer extends IDisposable {
21
21
  export declare class ContentContainer extends CompositeDisposable implements IContentContainer {
22
22
  private readonly accessor;
23
23
  private readonly group;
24
- private _element;
24
+ private readonly _element;
25
25
  private panel;
26
- private disposable;
26
+ private readonly disposable;
27
27
  private readonly _onDidFocus;
28
28
  readonly onDidFocus: Event<void>;
29
29
  private readonly _onDidBlur;
@@ -33,7 +33,7 @@ var ContentContainer = /** @class */ (function (_super) {
33
33
  _this._onDidBlur = new events_1.Emitter();
34
34
  _this.onDidBlur = _this._onDidBlur.event;
35
35
  _this._element = document.createElement('div');
36
- _this._element.className = 'content-container';
36
+ _this._element.className = 'dv-content-container';
37
37
  _this._element.tabIndex = -1;
38
38
  _this.addDisposables(_this._onDidFocus, _this._onDidBlur);
39
39
  _this.dropTarget = new droptarget_1.Droptarget(_this.element, {
@@ -116,6 +116,8 @@ var ContentContainer = /** @class */ (function (_super) {
116
116
  referenceContainer: this,
117
117
  });
118
118
  break;
119
+ default:
120
+ throw new Error("dockview: invalid renderer type '".concat(panel.api.renderer, "'"));
119
121
  }
120
122
  if (doRender) {
121
123
  var focusTracker = (0, dom_1.trackFocus)(container);
@@ -1,9 +1,9 @@
1
1
  import { CompositeDisposable } from '../../../lifecycle';
2
2
  import { ITabRenderer, GroupPanelPartInitParameters } from '../../types';
3
3
  export declare class DefaultTab extends CompositeDisposable implements ITabRenderer {
4
- private _element;
5
- private _content;
6
- private action;
4
+ private readonly _element;
5
+ private readonly _content;
6
+ private readonly action;
7
7
  private _title;
8
8
  get element(): HTMLElement;
9
9
  constructor();
@@ -58,10 +58,10 @@ var Tab = /** @class */ (function (_super) {
58
58
  _this._onDragStart = new events_1.Emitter();
59
59
  _this.onDragStart = _this._onDragStart.event;
60
60
  _this._element = document.createElement('div');
61
- _this._element.className = 'tab';
61
+ _this._element.className = 'dv-tab';
62
62
  _this._element.tabIndex = 0;
63
63
  _this._element.draggable = true;
64
- (0, dom_1.toggleClass)(_this.element, 'inactive-tab', true);
64
+ (0, dom_1.toggleClass)(_this.element, 'dv-inactive-tab', true);
65
65
  var dragHandler = new TabDragHandler(_this._element, _this.accessor, _this.group, _this.panel);
66
66
  _this.dropTarget = new droptarget_1.Droptarget(_this._element, {
67
67
  acceptedTargetZones: ['center'],
@@ -102,8 +102,8 @@ var Tab = /** @class */ (function (_super) {
102
102
  configurable: true
103
103
  });
104
104
  Tab.prototype.setActive = function (isActive) {
105
- (0, dom_1.toggleClass)(this.element, 'active-tab', isActive);
106
- (0, dom_1.toggleClass)(this.element, 'inactive-tab', !isActive);
105
+ (0, dom_1.toggleClass)(this.element, 'dv-active-tab', isActive);
106
+ (0, dom_1.toggleClass)(this.element, 'dv-inactive-tab', !isActive);
107
107
  };
108
108
  Tab.prototype.setContent = function (part) {
109
109
  if (this.content) {
@@ -77,16 +77,16 @@ var TabsContainer = /** @class */ (function (_super) {
77
77
  _this._onWillShowOverlay = new events_1.Emitter();
78
78
  _this.onWillShowOverlay = _this._onWillShowOverlay.event;
79
79
  _this._element = document.createElement('div');
80
- _this._element.className = 'tabs-and-actions-container';
80
+ _this._element.className = 'dv-tabs-and-actions-container';
81
81
  (0, dom_1.toggleClass)(_this._element, 'dv-full-width-single-tab', _this.accessor.options.singleTabMode === 'fullwidth');
82
82
  _this.rightActionsContainer = document.createElement('div');
83
- _this.rightActionsContainer.className = 'right-actions-container';
83
+ _this.rightActionsContainer.className = 'dv-right-actions-container';
84
84
  _this.leftActionsContainer = document.createElement('div');
85
- _this.leftActionsContainer.className = 'left-actions-container';
85
+ _this.leftActionsContainer.className = 'dv-left-actions-container';
86
86
  _this.preActionsContainer = document.createElement('div');
87
- _this.preActionsContainer.className = 'pre-actions-container';
87
+ _this.preActionsContainer.className = 'dv-pre-actions-container';
88
88
  _this.tabContainer = document.createElement('div');
89
- _this.tabContainer.className = 'tabs-container';
89
+ _this.tabContainer.className = 'dv-tabs-container';
90
90
  _this.voidContainer = new voidContainer_1.VoidContainer(_this.accessor, _this.group);
91
91
  _this._element.appendChild(_this.preActionsContainer);
92
92
  _this._element.appendChild(_this.tabContainer);
@@ -262,15 +262,11 @@ var TabsContainer = /** @class */ (function (_super) {
262
262
  };
263
263
  TabsContainer.prototype.openPanel = function (panel, index) {
264
264
  var _this = this;
265
- var _a;
266
265
  if (index === void 0) { index = this.tabs.length; }
267
266
  if (this.tabs.find(function (tab) { return tab.value.panel.id === panel.id; })) {
268
267
  return;
269
268
  }
270
269
  var tab = new tab_1.Tab(panel, this.accessor, this.group);
271
- if (!((_a = panel.view) === null || _a === void 0 ? void 0 : _a.tab)) {
272
- throw new Error('invalid header component');
273
- }
274
270
  tab.setContent(panel.view.tab);
275
271
  var disposable = new lifecycle_1.CompositeDisposable(tab.onDragStart(function (event) {
276
272
  _this._onTabDragStart.fire({ nativeEvent: event, panel: panel });
@@ -33,7 +33,7 @@ var VoidContainer = /** @class */ (function (_super) {
33
33
  _this._onDragStart = new events_1.Emitter();
34
34
  _this.onDragStart = _this._onDragStart.event;
35
35
  _this._element = document.createElement('div');
36
- _this._element.className = 'void-container';
36
+ _this._element.className = 'dv-void-container';
37
37
  _this._element.tabIndex = 0;
38
38
  _this._element.draggable = true;
39
39
  _this.addDisposables(_this._onDrop, _this._onDragStart, (0, events_1.addDisposableListener)(_this._element, 'pointerdown', function () {
@@ -1,7 +1,7 @@
1
1
  import { IWatermarkRenderer, WatermarkRendererInitParameters } from '../../types';
2
2
  import { CompositeDisposable } from '../../../lifecycle';
3
3
  export declare class Watermark extends CompositeDisposable implements IWatermarkRenderer {
4
- private _element;
4
+ private readonly _element;
5
5
  private _group;
6
6
  private _api;
7
7
  get element(): HTMLElement;
@@ -25,19 +25,19 @@ var Watermark = /** @class */ (function (_super) {
25
25
  function Watermark() {
26
26
  var _this = _super.call(this) || this;
27
27
  _this._element = document.createElement('div');
28
- _this._element.className = 'watermark';
28
+ _this._element.className = 'dv-watermark';
29
29
  var title = document.createElement('div');
30
- title.className = 'watermark-title';
30
+ title.className = 'dv-watermark-title';
31
31
  var emptySpace = document.createElement('span');
32
32
  emptySpace.style.flexGrow = '1';
33
33
  var content = document.createElement('div');
34
- content.className = 'watermark-content';
34
+ content.className = 'dv-watermark-content';
35
35
  _this._element.appendChild(title);
36
36
  _this._element.appendChild(content);
37
37
  var actionsContainer = document.createElement('div');
38
- actionsContainer.className = 'actions-container';
38
+ actionsContainer.className = 'dv-actions-container';
39
39
  var closeAnchor = document.createElement('div');
40
- closeAnchor.className = 'close-action';
40
+ closeAnchor.className = 'dv-close-action';
41
41
  closeAnchor.appendChild((0, svg_1.createCloseButton)());
42
42
  actionsContainer.appendChild(closeAnchor);
43
43
  title.appendChild(emptySpace);
@@ -65,7 +65,7 @@ var Watermark = /** @class */ (function (_super) {
65
65
  };
66
66
  Watermark.prototype.render = function () {
67
67
  var isOneGroup = !!(this._api && this._api.size <= 1);
68
- (0, dom_1.toggleClass)(this.element, 'has-actions', isOneGroup);
68
+ (0, dom_1.toggleClass)(this.element, 'dv-has-actions', isOneGroup);
69
69
  };
70
70
  return Watermark;
71
71
  }(lifecycle_1.CompositeDisposable));
@@ -129,7 +129,7 @@ export interface IDockviewComponent extends IBaseGrid<DockviewGroupPanel> {
129
129
  id: string;
130
130
  window: Window;
131
131
  }) => void;
132
- }): Promise<void>;
132
+ }): Promise<boolean>;
133
133
  }
134
134
  export declare class DockviewComponent extends BaseGrid<DockviewGroupPanel> implements IDockviewComponent {
135
135
  private readonly nextGroupId;
@@ -180,7 +180,6 @@ export declare class DockviewComponent extends BaseGrid<DockviewGroupPanel> impl
180
180
  get floatingGroups(): DockviewFloatingGroupPanel[];
181
181
  constructor(parentElement: HTMLElement, options: DockviewComponentOptions);
182
182
  addPopoutGroup(itemToPopout: DockviewPanel | DockviewGroupPanel, options?: {
183
- skipRemoveGroup?: boolean;
184
183
  position?: Box;
185
184
  popoutUrl?: string;
186
185
  onDidOpen?: (event: {
@@ -192,7 +191,7 @@ export declare class DockviewComponent extends BaseGrid<DockviewGroupPanel> impl
192
191
  window: Window;
193
192
  }) => void;
194
193
  overridePopoutGroup?: DockviewGroupPanel;
195
- }): Promise<void>;
194
+ }): Promise<boolean>;
196
195
  addFloatingGroup(item: DockviewPanel | DockviewGroupPanel, options?: FloatingGroupOptionsInternal): void;
197
196
  private orthogonalize;
198
197
  updateOptions(options: Partial<DockviewComponentOptions>): void;
@@ -381,9 +381,6 @@ var DockviewComponent = /** @class */ (function (_super) {
381
381
  }
382
382
  var box = getBox();
383
383
  var groupId = (_b = (_a = options === null || options === void 0 ? void 0 : options.overridePopoutGroup) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : this.getNextGroupId();
384
- if (itemToPopout.api.location.type === 'grid') {
385
- itemToPopout.api.setVisible(false);
386
- }
387
384
  var _window = new popoutWindow_1.PopoutWindow("".concat(this.id, "-").concat(groupId), // unique id
388
385
  theme !== null && theme !== void 0 ? theme : '', {
389
386
  url: (_c = options === null || options === void 0 ? void 0 : options.popoutUrl) !== null && _c !== void 0 ? _c : '/popout.html',
@@ -402,11 +399,11 @@ var DockviewComponent = /** @class */ (function (_super) {
402
399
  .then(function (popoutContainer) {
403
400
  var _a;
404
401
  if (_window.isDisposed) {
405
- return;
402
+ return false;
406
403
  }
407
404
  if (popoutContainer === null) {
408
405
  popoutWindowDisposable.dispose();
409
- return;
406
+ return false;
410
407
  }
411
408
  var gready = document.createElement('div');
412
409
  gready.className = 'dv-overlay-render-container';
@@ -415,32 +412,42 @@ var DockviewComponent = /** @class */ (function (_super) {
415
412
  ? itemToPopout.group
416
413
  : itemToPopout;
417
414
  var referenceLocation = itemToPopout.api.location.type;
418
- var group = (_a = options === null || options === void 0 ? void 0 : options.overridePopoutGroup) !== null && _a !== void 0 ? _a : _this.createGroup({ id: groupId });
415
+ /**
416
+ * The group that is being added doesn't already exist within the DOM, the most likely occurance
417
+ * of this case is when being called from the `fromJSON(...)` method
418
+ */
419
+ var isGroupAddedToDom = referenceGroup.element.parentElement !== null;
420
+ var group = !isGroupAddedToDom
421
+ ? referenceGroup
422
+ : (_a = options === null || options === void 0 ? void 0 : options.overridePopoutGroup) !== null && _a !== void 0 ? _a : _this.createGroup({ id: groupId });
419
423
  group.model.renderContainer = overlayRenderContainer;
420
- if (!(options === null || options === void 0 ? void 0 : options.overridePopoutGroup)) {
424
+ group.layout(_window.window.innerWidth, _window.window.innerHeight);
425
+ if (!_this._groups.has(group.api.id)) {
421
426
  _this._onDidAddGroup.fire(group);
422
427
  }
423
- if (itemToPopout instanceof dockviewPanel_1.DockviewPanel) {
424
- _this.movingLock(function () {
425
- var panel = referenceGroup.model.removePanel(itemToPopout);
426
- group.model.openPanel(panel);
427
- });
428
- }
429
- else {
430
- _this.movingLock(function () {
431
- return moveGroupWithoutDestroying({
432
- from: referenceGroup,
433
- to: group,
428
+ if (!(options === null || options === void 0 ? void 0 : options.overridePopoutGroup) && isGroupAddedToDom) {
429
+ if (itemToPopout instanceof dockviewPanel_1.DockviewPanel) {
430
+ _this.movingLock(function () {
431
+ var panel = referenceGroup.model.removePanel(itemToPopout);
432
+ group.model.openPanel(panel);
434
433
  });
435
- });
436
- switch (referenceLocation) {
437
- case 'grid':
438
- referenceGroup.api.setVisible(false);
439
- break;
440
- case 'floating':
441
- case 'popout':
442
- _this.removeGroup(referenceGroup);
443
- break;
434
+ }
435
+ else {
436
+ _this.movingLock(function () {
437
+ return moveGroupWithoutDestroying({
438
+ from: referenceGroup,
439
+ to: group,
440
+ });
441
+ });
442
+ switch (referenceLocation) {
443
+ case 'grid':
444
+ referenceGroup.api.setVisible(false);
445
+ break;
446
+ case 'floating':
447
+ case 'popout':
448
+ _this.removeGroup(referenceGroup);
449
+ break;
450
+ }
444
451
  }
445
452
  }
446
453
  popoutContainer.classList.add('dv-dockview');
@@ -451,6 +458,10 @@ var DockviewComponent = /** @class */ (function (_super) {
451
458
  type: 'popout',
452
459
  getWindow: function () { return _window.window; },
453
460
  };
461
+ if (isGroupAddedToDom &&
462
+ itemToPopout.api.location.type === 'grid') {
463
+ itemToPopout.api.setVisible(false);
464
+ }
454
465
  _this.doSetGroupAndPanelActive(group);
455
466
  popoutWindowDisposable.addDisposables(group.api.onDidActiveChange(function (event) {
456
467
  var _a;
@@ -465,9 +476,13 @@ var DockviewComponent = /** @class */ (function (_super) {
465
476
  var value = {
466
477
  window: _window,
467
478
  popoutGroup: group,
468
- referenceGroup: _this.getPanel(referenceGroup.id)
469
- ? referenceGroup.id
470
- : undefined,
479
+ referenceGroup: !isGroupAddedToDom
480
+ ? undefined
481
+ : referenceGroup
482
+ ? _this.getPanel(referenceGroup.id)
483
+ ? referenceGroup.id
484
+ : undefined
485
+ : undefined,
471
486
  disposable: {
472
487
  dispose: function () {
473
488
  popoutWindowDisposable.dispose();
@@ -482,9 +497,10 @@ var DockviewComponent = /** @class */ (function (_super) {
482
497
  * window dimensions
483
498
  */
484
499
  (0, events_1.addDisposableWindowListener)(_window.window, 'resize', function () {
485
- group.layout(window.innerWidth, window.innerHeight);
500
+ group.layout(_window.window.innerWidth, _window.window.innerHeight);
486
501
  }), overlayRenderContainer, lifecycle_1.Disposable.from(function () {
487
- if (_this.getPanel(referenceGroup.id)) {
502
+ if (isGroupAddedToDom &&
503
+ _this.getPanel(referenceGroup.id)) {
488
504
  _this.movingLock(function () {
489
505
  return moveGroupWithoutDestroying({
490
506
  from: group,
@@ -501,21 +517,27 @@ var DockviewComponent = /** @class */ (function (_super) {
501
517
  }
502
518
  }
503
519
  else if (_this.getPanel(group.id)) {
504
- var removedGroup = _this.doRemoveGroup(group, {
520
+ _this.doRemoveGroup(group, {
505
521
  skipDispose: true,
506
522
  skipActive: true,
523
+ skipPopoutReturn: true,
507
524
  });
525
+ var removedGroup = group;
508
526
  removedGroup.model.renderContainer =
509
527
  _this.overlayRenderContainer;
510
528
  removedGroup.model.location = { type: 'grid' };
511
529
  returnedGroup = removedGroup;
530
+ _this.doAddGroup(removedGroup, [0]);
531
+ _this.doSetGroupAndPanelActive(removedGroup);
512
532
  }
513
533
  }));
514
534
  _this._popoutGroups.push(value);
515
535
  _this.updateWatermark();
536
+ return true;
516
537
  })
517
538
  .catch(function (err) {
518
539
  console.error('dockview: failed to create popout window', err);
540
+ return false;
519
541
  });
520
542
  };
521
543
  DockviewComponent.prototype.addFloatingGroup = function (item, options) {
@@ -626,7 +648,7 @@ var DockviewComponent = /** @class */ (function (_super) {
626
648
  : (_c = (_b = this.options.floatingGroupBounds) === null || _b === void 0 ? void 0 : _b.minimumWidthWithinViewport) !== null && _c !== void 0 ? _c : constants_1.DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE, minimumInViewportHeight: this.options.floatingGroupBounds === 'boundedWithinViewport'
627
649
  ? undefined
628
650
  : (_e = (_d = this.options.floatingGroupBounds) === null || _d === void 0 ? void 0 : _d.minimumHeightWithinViewport) !== null && _e !== void 0 ? _e : constants_1.DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE }));
629
- var el = group.element.querySelector('.void-container');
651
+ var el = group.element.querySelector('.dv-void-container');
630
652
  if (!el) {
631
653
  throw new Error('failed to find drag handle');
632
654
  }
@@ -960,7 +982,6 @@ var DockviewComponent = /** @class */ (function (_super) {
960
982
  this.addPopoutGroup((_k = (gridReferenceGroup
961
983
  ? this.getPanel(gridReferenceGroup)
962
984
  : undefined)) !== null && _k !== void 0 ? _k : group, {
963
- skipRemoveGroup: true,
964
985
  position: position !== null && position !== void 0 ? position : undefined,
965
986
  overridePopoutGroup: gridReferenceGroup
966
987
  ? group
@@ -996,6 +1017,7 @@ var DockviewComponent = /** @class */ (function (_super) {
996
1017
  }
997
1018
  }
998
1019
  catch (err) {
1020
+ console.error('dockview: failed to deserialize layout. Reverting changes', err);
999
1021
  try {
1000
1022
  /**
1001
1023
  * Takes all the successfully created groups and remove all of their panels.
@@ -1125,11 +1147,13 @@ var DockviewComponent = /** @class */ (function (_super) {
1125
1147
  width: options.initialWidth,
1126
1148
  height: options.initialHeight,
1127
1149
  };
1150
+ var index;
1128
1151
  if (options.position) {
1129
1152
  if ((0, options_1.isPanelOptionsWithPanel)(options.position)) {
1130
1153
  var referencePanel = typeof options.position.referencePanel === 'string'
1131
1154
  ? this.getGroupPanel(options.position.referencePanel)
1132
1155
  : options.position.referencePanel;
1156
+ index = options.position.index;
1133
1157
  if (!referencePanel) {
1134
1158
  throw new Error("referencePanel '".concat(options.position.referencePanel, "' does not exist"));
1135
1159
  }
@@ -1140,6 +1164,7 @@ var DockviewComponent = /** @class */ (function (_super) {
1140
1164
  typeof options.position.referenceGroup === 'string'
1141
1165
  ? (_a = this._groups.get(options.position.referenceGroup)) === null || _a === void 0 ? void 0 : _a.value
1142
1166
  : options.position.referenceGroup;
1167
+ index = options.position.index;
1143
1168
  if (!referenceGroup) {
1144
1169
  throw new Error("referenceGroup '".concat(options.position.referenceGroup, "' does not exist"));
1145
1170
  }
@@ -1150,6 +1175,7 @@ var DockviewComponent = /** @class */ (function (_super) {
1150
1175
  group.model.openPanel(panel_1, {
1151
1176
  skipSetActive: options.inactive,
1152
1177
  skipSetGroupActive: options.inactive,
1178
+ index: index,
1153
1179
  });
1154
1180
  if (!options.inactive) {
1155
1181
  this.doSetGroupAndPanelActive(group);
@@ -1179,6 +1205,7 @@ var DockviewComponent = /** @class */ (function (_super) {
1179
1205
  group.model.openPanel(panel, {
1180
1206
  skipSetActive: options.inactive,
1181
1207
  skipSetGroupActive: options.inactive,
1208
+ index: index,
1182
1209
  });
1183
1210
  }
1184
1211
  else if (referenceGroup.api.location.type === 'floating' ||
@@ -1187,6 +1214,7 @@ var DockviewComponent = /** @class */ (function (_super) {
1187
1214
  referenceGroup.model.openPanel(panel, {
1188
1215
  skipSetActive: options.inactive,
1189
1216
  skipSetGroupActive: options.inactive,
1217
+ index: index,
1190
1218
  });
1191
1219
  referenceGroup.api.setSize({
1192
1220
  width: initial === null || initial === void 0 ? void 0 : initial.width,
@@ -1207,6 +1235,7 @@ var DockviewComponent = /** @class */ (function (_super) {
1207
1235
  group.model.openPanel(panel, {
1208
1236
  skipSetActive: options.inactive,
1209
1237
  skipSetGroupActive: options.inactive,
1238
+ index: index,
1210
1239
  });
1211
1240
  if (!options.inactive) {
1212
1241
  this.doSetGroupAndPanelActive(group);
@@ -1225,6 +1254,7 @@ var DockviewComponent = /** @class */ (function (_super) {
1225
1254
  group.model.openPanel(panel, {
1226
1255
  skipSetActive: options.inactive,
1227
1256
  skipSetGroupActive: options.inactive,
1257
+ index: index,
1228
1258
  });
1229
1259
  }
1230
1260
  else {
@@ -1235,6 +1265,7 @@ var DockviewComponent = /** @class */ (function (_super) {
1235
1265
  group.model.openPanel(panel, {
1236
1266
  skipSetActive: options.inactive,
1237
1267
  skipSetGroupActive: options.inactive,
1268
+ index: index,
1238
1269
  });
1239
1270
  if (!options.inactive) {
1240
1271
  this.doSetGroupAndPanelActive(group);