dockview-core 1.15.3 → 1.16.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 (99) hide show
  1. package/dist/cjs/api/component.api.d.ts +32 -6
  2. package/dist/cjs/api/component.api.js +42 -6
  3. package/dist/cjs/api/dockviewPanelApi.d.ts +1 -1
  4. package/dist/cjs/api/entryPoints.d.ts +9 -0
  5. package/dist/cjs/api/entryPoints.js +28 -0
  6. package/dist/cjs/dnd/abstractDragHandler.js +2 -65
  7. package/dist/cjs/dockview/components/titlebar/voidContainer.js +1 -1
  8. package/dist/cjs/dockview/dockviewComponent.d.ts +4 -2
  9. package/dist/cjs/dockview/dockviewComponent.js +60 -17
  10. package/dist/cjs/dockview/dockviewFloatingGroupPanel.d.ts +1 -1
  11. package/dist/cjs/dockview/dockviewGroupPanelModel.d.ts +1 -1
  12. package/dist/cjs/dockview/dockviewGroupPanelModel.js +1 -1
  13. package/dist/cjs/dockview/dockviewPanel.d.ts +1 -1
  14. package/dist/cjs/dockview/dockviewPanel.js +1 -1
  15. package/dist/cjs/dockview/options.d.ts +2 -2
  16. package/dist/cjs/dockview/options.js +1 -0
  17. package/dist/cjs/dockview/types.d.ts +1 -1
  18. package/dist/cjs/dom.d.ts +3 -0
  19. package/dist/cjs/dom.js +66 -1
  20. package/dist/cjs/gridview/baseComponentGridview.d.ts +5 -2
  21. package/dist/cjs/gridview/baseComponentGridview.js +54 -3
  22. package/dist/cjs/gridview/gridviewComponent.d.ts +3 -4
  23. package/dist/cjs/gridview/gridviewComponent.js +4 -2
  24. package/dist/cjs/gridview/options.d.ts +1 -1
  25. package/dist/cjs/index.d.ts +2 -1
  26. package/dist/cjs/index.js +6 -1
  27. package/dist/cjs/{dnd → overlay}/overlay.d.ts +3 -0
  28. package/dist/cjs/{dnd → overlay}/overlay.js +41 -82
  29. package/dist/cjs/{overlayRenderContainer.d.ts → overlay/overlayRenderContainer.d.ts} +7 -5
  30. package/dist/cjs/{overlayRenderContainer.js → overlay/overlayRenderContainer.js} +41 -6
  31. package/dist/cjs/paneview/options.d.ts +1 -1
  32. package/dist/cjs/paneview/paneviewComponent.d.ts +2 -1
  33. package/dist/cjs/paneview/paneviewComponent.js +68 -19
  34. package/dist/cjs/splitview/options.d.ts +1 -1
  35. package/dist/cjs/splitview/splitview.js +64 -71
  36. package/dist/cjs/splitview/splitviewComponent.d.ts +5 -5
  37. package/dist/cjs/splitview/splitviewComponent.js +70 -21
  38. package/dist/dockview-core.amd.js +301 -98
  39. package/dist/dockview-core.amd.js.map +1 -1
  40. package/dist/dockview-core.amd.min.js +2 -2
  41. package/dist/dockview-core.amd.min.js.map +1 -1
  42. package/dist/dockview-core.amd.min.noStyle.js +2 -2
  43. package/dist/dockview-core.amd.min.noStyle.js.map +1 -1
  44. package/dist/dockview-core.amd.noStyle.js +300 -97
  45. package/dist/dockview-core.amd.noStyle.js.map +1 -1
  46. package/dist/dockview-core.cjs.js +301 -98
  47. package/dist/dockview-core.cjs.js.map +1 -1
  48. package/dist/dockview-core.esm.js +298 -99
  49. package/dist/dockview-core.esm.js.map +1 -1
  50. package/dist/dockview-core.esm.min.js +2 -2
  51. package/dist/dockview-core.esm.min.js.map +1 -1
  52. package/dist/dockview-core.js +301 -98
  53. package/dist/dockview-core.js.map +1 -1
  54. package/dist/dockview-core.min.js +2 -2
  55. package/dist/dockview-core.min.js.map +1 -1
  56. package/dist/dockview-core.min.noStyle.js +2 -2
  57. package/dist/dockview-core.min.noStyle.js.map +1 -1
  58. package/dist/dockview-core.noStyle.js +300 -97
  59. package/dist/dockview-core.noStyle.js.map +1 -1
  60. package/dist/esm/api/component.api.d.ts +32 -6
  61. package/dist/esm/api/component.api.js +42 -6
  62. package/dist/esm/api/dockviewPanelApi.d.ts +1 -1
  63. package/dist/esm/api/entryPoints.d.ts +9 -0
  64. package/dist/esm/api/entryPoints.js +21 -0
  65. package/dist/esm/dnd/abstractDragHandler.js +3 -11
  66. package/dist/esm/dockview/components/panel/content.js +1 -1
  67. package/dist/esm/dockview/components/titlebar/voidContainer.js +1 -1
  68. package/dist/esm/dockview/dockviewComponent.d.ts +4 -2
  69. package/dist/esm/dockview/dockviewComponent.js +48 -13
  70. package/dist/esm/dockview/dockviewFloatingGroupPanel.d.ts +1 -1
  71. package/dist/esm/dockview/dockviewGroupPanelModel.d.ts +1 -1
  72. package/dist/esm/dockview/dockviewGroupPanelModel.js +1 -1
  73. package/dist/esm/dockview/dockviewPanel.d.ts +1 -1
  74. package/dist/esm/dockview/dockviewPanel.js +1 -1
  75. package/dist/esm/dockview/options.d.ts +2 -2
  76. package/dist/esm/dockview/options.js +1 -0
  77. package/dist/esm/dockview/types.d.ts +1 -1
  78. package/dist/esm/dom.d.ts +3 -0
  79. package/dist/esm/dom.js +20 -0
  80. package/dist/esm/gridview/baseComponentGridview.d.ts +5 -2
  81. package/dist/esm/gridview/baseComponentGridview.js +19 -0
  82. package/dist/esm/gridview/gridviewComponent.d.ts +3 -4
  83. package/dist/esm/gridview/gridviewComponent.js +4 -2
  84. package/dist/esm/gridview/options.d.ts +1 -1
  85. package/dist/esm/index.d.ts +2 -1
  86. package/dist/esm/index.js +1 -0
  87. package/dist/esm/{dnd → overlay}/overlay.d.ts +3 -0
  88. package/dist/esm/{dnd → overlay}/overlay.js +36 -32
  89. package/dist/esm/{overlayRenderContainer.d.ts → overlay/overlayRenderContainer.d.ts} +7 -5
  90. package/dist/esm/{overlayRenderContainer.js → overlay/overlayRenderContainer.js} +39 -6
  91. package/dist/esm/paneview/options.d.ts +1 -1
  92. package/dist/esm/paneview/paneviewComponent.d.ts +2 -1
  93. package/dist/esm/paneview/paneviewComponent.js +19 -2
  94. package/dist/esm/splitview/options.d.ts +1 -1
  95. package/dist/esm/splitview/splitview.js +37 -27
  96. package/dist/esm/splitview/splitviewComponent.d.ts +5 -5
  97. package/dist/esm/splitview/splitviewComponent.js +19 -2
  98. package/dist/styles/dockview.css +78 -82
  99. package/package.json +1 -1
package/dist/cjs/dom.js CHANGED
@@ -25,8 +25,33 @@ var __values = (this && this.__values) || function(o) {
25
25
  };
26
26
  throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
27
27
  };
28
+ var __read = (this && this.__read) || function (o, n) {
29
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
30
+ if (!m) return o;
31
+ var i = m.call(o), r, ar = [], e;
32
+ try {
33
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
34
+ }
35
+ catch (error) { e = { error: error }; }
36
+ finally {
37
+ try {
38
+ if (r && !r.done && (m = i["return"])) m.call(i);
39
+ }
40
+ finally { if (e) throw e.error; }
41
+ }
42
+ return ar;
43
+ };
44
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
45
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
46
+ if (ar || !(i in from)) {
47
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
48
+ ar[i] = from[i];
49
+ }
50
+ }
51
+ return to.concat(ar || Array.prototype.slice.call(from));
52
+ };
28
53
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.addTestId = exports.isInDocument = exports.getDomNodePagePosition = exports.addStyles = exports.quasiDefaultPrevented = exports.quasiPreventDefault = exports.trackFocus = exports.getElementsByTagName = exports.isAncestor = exports.toggleClass = exports.addClasses = exports.removeClasses = exports.watchElementResize = void 0;
54
+ exports.disableIframePointEvents = exports.addTestId = exports.isInDocument = exports.getDomNodePagePosition = exports.addStyles = exports.quasiDefaultPrevented = exports.quasiPreventDefault = exports.trackFocus = exports.getElementsByTagName = exports.isAncestor = exports.toggleClass = exports.addClasses = exports.removeClasses = exports.watchElementResize = void 0;
30
55
  var events_1 = require("./events");
31
56
  var lifecycle_1 = require("./lifecycle");
32
57
  function watchElementResize(element, cb) {
@@ -278,3 +303,43 @@ function addTestId(element, id) {
278
303
  element.setAttribute('data-testid', id);
279
304
  }
280
305
  exports.addTestId = addTestId;
306
+ function disableIframePointEvents() {
307
+ var e_5, _a;
308
+ var iframes = __spreadArray(__spreadArray([], __read(getElementsByTagName('iframe')), false), __read(getElementsByTagName('webview')), false);
309
+ var original = new WeakMap(); // don't hold onto HTMLElement references longer than required
310
+ try {
311
+ for (var iframes_1 = __values(iframes), iframes_1_1 = iframes_1.next(); !iframes_1_1.done; iframes_1_1 = iframes_1.next()) {
312
+ var iframe = iframes_1_1.value;
313
+ original.set(iframe, iframe.style.pointerEvents);
314
+ iframe.style.pointerEvents = 'none';
315
+ }
316
+ }
317
+ catch (e_5_1) { e_5 = { error: e_5_1 }; }
318
+ finally {
319
+ try {
320
+ if (iframes_1_1 && !iframes_1_1.done && (_a = iframes_1.return)) _a.call(iframes_1);
321
+ }
322
+ finally { if (e_5) throw e_5.error; }
323
+ }
324
+ return {
325
+ release: function () {
326
+ var e_6, _a;
327
+ var _b;
328
+ try {
329
+ for (var iframes_2 = __values(iframes), iframes_2_1 = iframes_2.next(); !iframes_2_1.done; iframes_2_1 = iframes_2.next()) {
330
+ var iframe = iframes_2_1.value;
331
+ iframe.style.pointerEvents = (_b = original.get(iframe)) !== null && _b !== void 0 ? _b : 'auto';
332
+ }
333
+ }
334
+ catch (e_6_1) { e_6 = { error: e_6_1 }; }
335
+ finally {
336
+ try {
337
+ if (iframes_2_1 && !iframes_2_1.done && (_a = iframes_2.return)) _a.call(iframes_2);
338
+ }
339
+ finally { if (e_6) throw e_6.error; }
340
+ }
341
+ iframes.splice(0, iframes.length); // don't hold onto HTMLElement references longer than required
342
+ },
343
+ };
344
+ }
345
+ exports.disableIframePointEvents = disableIframePointEvents;
@@ -1,7 +1,7 @@
1
1
  import { Event, AsapEvent } from '../events';
2
2
  import { Gridview, IGridView } from './gridview';
3
3
  import { Position } from '../dnd/droptarget';
4
- import { IValueDisposable } from '../lifecycle';
4
+ import { IDisposable, IValueDisposable } from '../lifecycle';
5
5
  import { ISplitviewStyles, Orientation } from '../splitview/splitview';
6
6
  import { IPanel } from '../panel/types';
7
7
  import { MovementOptions2 } from '../dockview/options';
@@ -16,12 +16,13 @@ export interface BaseGridOptions {
16
16
  readonly disableAutoResizing?: boolean;
17
17
  readonly locked?: boolean;
18
18
  readonly margin?: number;
19
+ readonly className?: string;
19
20
  }
20
21
  export interface IGridPanelView extends IGridView, IPanel {
21
22
  setActive(isActive: boolean): void;
22
23
  readonly isActive: boolean;
23
24
  }
24
- export interface IBaseGrid<T extends IGridPanelView> {
25
+ export interface IBaseGrid<T extends IGridPanelView> extends IDisposable {
25
26
  readonly element: HTMLElement;
26
27
  readonly id: string;
27
28
  readonly width: number;
@@ -62,6 +63,7 @@ export declare abstract class BaseGrid<T extends IGridPanelView> extends Resizab
62
63
  readonly onDidLayoutChange: Event<void>;
63
64
  private readonly _onDidViewVisibilityChangeMicroTaskQueue;
64
65
  readonly onDidViewVisibilityChangeMicroTaskQueue: Event<void>;
66
+ private classNames;
65
67
  get id(): string;
66
68
  get size(): number;
67
69
  get groups(): T[];
@@ -80,6 +82,7 @@ export declare abstract class BaseGrid<T extends IGridPanelView> extends Resizab
80
82
  abstract clear(): void;
81
83
  setVisible(panel: T, visible: boolean): void;
82
84
  isVisible(panel: T): boolean;
85
+ updateOptions(options: Partial<BaseGridOptions>): void;
83
86
  maximizeGroup(panel: T): void;
84
87
  isMaximizedGroup(panel: T): boolean;
85
88
  exitMaximizedGroup(): void;
@@ -33,6 +33,7 @@ var lifecycle_1 = require("../lifecycle");
33
33
  var math_1 = require("../math");
34
34
  var splitview_1 = require("../splitview/splitview");
35
35
  var resizable_1 = require("../resizable");
36
+ var dom_1 = require("../dom");
36
37
  var nextLayoutId = (0, math_1.sequentialNumberGenerator)();
37
38
  function toTarget(direction) {
38
39
  switch (direction) {
@@ -53,6 +54,8 @@ exports.toTarget = toTarget;
53
54
  var BaseGrid = /** @class */ (function (_super) {
54
55
  __extends(BaseGrid, _super);
55
56
  function BaseGrid(options) {
57
+ var e_1, _a;
58
+ var _b, _c;
56
59
  var _this = _super.call(this, document.createElement('div'), options.disableAutoResizing) || this;
57
60
  _this._id = nextLayoutId.next();
58
61
  _this._groups = new Map();
@@ -66,8 +69,23 @@ var BaseGrid = /** @class */ (function (_super) {
66
69
  _this.onDidLayoutChange = _this._bufferOnDidLayoutChange.onEvent;
67
70
  _this._onDidViewVisibilityChangeMicroTaskQueue = new events_1.AsapEvent();
68
71
  _this.onDidViewVisibilityChangeMicroTaskQueue = _this._onDidViewVisibilityChangeMicroTaskQueue.onEvent;
72
+ _this.classNames = [];
69
73
  _this.element.style.height = '100%';
70
74
  _this.element.style.width = '100%';
75
+ _this.classNames = (_c = (_b = options.className) === null || _b === void 0 ? void 0 : _b.split(' ')) !== null && _c !== void 0 ? _c : [];
76
+ try {
77
+ for (var _d = __values(_this.classNames), _e = _d.next(); !_e.done; _e = _d.next()) {
78
+ var className = _e.value;
79
+ (0, dom_1.toggleClass)(_this.element, className, true);
80
+ }
81
+ }
82
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
83
+ finally {
84
+ try {
85
+ if (_e && !_e.done && (_a = _d.return)) _a.call(_d);
86
+ }
87
+ finally { if (e_1) throw e_1.error; }
88
+ }
71
89
  options.parentElement.appendChild(_this.element);
72
90
  _this.gridview = new gridview_1.Gridview(!!options.proportionalLayout, options.styles, options.orientation, options.locked, options.margin);
73
91
  _this.gridview.locked = !!options.locked;
@@ -174,6 +192,39 @@ var BaseGrid = /** @class */ (function (_super) {
174
192
  BaseGrid.prototype.isVisible = function (panel) {
175
193
  return this.gridview.isViewVisible((0, gridview_1.getGridLocation)(panel.element));
176
194
  };
195
+ BaseGrid.prototype.updateOptions = function (options) {
196
+ var e_2, _a, e_3, _b;
197
+ var _c, _d;
198
+ if ('className' in options) {
199
+ try {
200
+ for (var _e = __values(this.classNames), _f = _e.next(); !_f.done; _f = _e.next()) {
201
+ var className = _f.value;
202
+ (0, dom_1.toggleClass)(this.element, className, false);
203
+ }
204
+ }
205
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
206
+ finally {
207
+ try {
208
+ if (_f && !_f.done && (_a = _e.return)) _a.call(_e);
209
+ }
210
+ finally { if (e_2) throw e_2.error; }
211
+ }
212
+ this.classNames = (_d = (_c = options.className) === null || _c === void 0 ? void 0 : _c.split(' ')) !== null && _d !== void 0 ? _d : [];
213
+ try {
214
+ for (var _g = __values(this.classNames), _h = _g.next(); !_h.done; _h = _g.next()) {
215
+ var className = _h.value;
216
+ (0, dom_1.toggleClass)(this.element, className, true);
217
+ }
218
+ }
219
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
220
+ finally {
221
+ try {
222
+ if (_h && !_h.done && (_b = _g.return)) _b.call(_g);
223
+ }
224
+ finally { if (e_3) throw e_3.error; }
225
+ }
226
+ }
227
+ };
177
228
  BaseGrid.prototype.maximizeGroup = function (panel) {
178
229
  this.gridview.maximizeView(panel);
179
230
  this.doSetGroupActive(panel);
@@ -277,7 +328,7 @@ var BaseGrid = /** @class */ (function (_super) {
277
328
  this.gridview.layout(width, height);
278
329
  };
279
330
  BaseGrid.prototype.dispose = function () {
280
- var e_1, _a;
331
+ var e_4, _a;
281
332
  this._onDidActiveChange.dispose();
282
333
  this._onDidAdd.dispose();
283
334
  this._onDidRemove.dispose();
@@ -287,12 +338,12 @@ var BaseGrid = /** @class */ (function (_super) {
287
338
  group.dispose();
288
339
  }
289
340
  }
290
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
341
+ catch (e_4_1) { e_4 = { error: e_4_1 }; }
291
342
  finally {
292
343
  try {
293
344
  if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
294
345
  }
295
- finally { if (e_1) throw e_1.error; }
346
+ finally { if (e_4) throw e_4.error; }
296
347
  }
297
348
  this.gridview.dispose();
298
349
  _super.prototype.dispose.call(this);
@@ -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;
@@ -62,8 +61,8 @@ export declare class GridviewComponent extends BaseGrid<GridviewPanel> implement
62
61
  get options(): GridviewComponentOptions;
63
62
  get deserializer(): IPanelDeserializer | undefined;
64
63
  set deserializer(value: IPanelDeserializer | undefined);
65
- constructor(options: GridviewComponentOptions);
66
- updateOptions(options: Partial<GridviewComponentUpdateOptions>): void;
64
+ constructor(parentElement: HTMLElement, options: GridviewComponentOptions);
65
+ updateOptions(options: Partial<GridviewComponentOptions>): void;
67
66
  removePanel(panel: GridviewPanel): void;
68
67
  /**
69
68
  * Serialize the current state of the layout
@@ -62,13 +62,14 @@ var componentFactory_1 = require("../panel/componentFactory");
62
62
  var events_1 = require("../events");
63
63
  var GridviewComponent = /** @class */ (function (_super) {
64
64
  __extends(GridviewComponent, _super);
65
- function GridviewComponent(options) {
65
+ function GridviewComponent(parentElement, options) {
66
66
  var _this = _super.call(this, {
67
- parentElement: options.parentElement,
67
+ parentElement: parentElement,
68
68
  proportionalLayout: options.proportionalLayout,
69
69
  orientation: options.orientation,
70
70
  styles: options.styles,
71
71
  disableAutoResizing: options.disableAutoResizing,
72
+ className: options.className,
72
73
  }) || this;
73
74
  _this._onDidLayoutfromJSON = new events_1.Emitter();
74
75
  _this.onDidLayoutFromJSON = _this._onDidLayoutfromJSON.event;
@@ -122,6 +123,7 @@ var GridviewComponent = /** @class */ (function (_super) {
122
123
  configurable: true
123
124
  });
124
125
  GridviewComponent.prototype.updateOptions = function (options) {
126
+ _super.prototype.updateOptions.call(this, options);
125
127
  var hasOrientationChanged = typeof options.orientation === 'string' &&
126
128
  this.gridview.orientation !== options.orientation;
127
129
  this._options = __assign(__assign({}, this.options), options);
@@ -13,5 +13,5 @@ export interface GridviewComponentOptions {
13
13
  };
14
14
  frameworkComponentFactory?: FrameworkFactory<GridviewPanel>;
15
15
  styles?: ISplitviewStyles;
16
- parentElement: HTMLElement;
16
+ className?: string;
17
17
  }
@@ -35,7 +35,7 @@ export * from './gridview/gridviewPanel';
35
35
  export * from './splitview/splitviewPanel';
36
36
  export * from './paneview/paneviewPanel';
37
37
  export * from './dockview/types';
38
- export { DockviewPanelRenderer } from './overlayRenderContainer';
38
+ export { DockviewPanelRenderer } from './overlay/overlayRenderContainer';
39
39
  export { Position, positionToDirection, directionToPosition, MeasuredValue, DroptargetOverlayModel, } from './dnd/droptarget';
40
40
  export { FocusEvent, PanelDimensionChangeEvent, VisibilityEvent, ActiveEvent, PanelApi, } from './api/panelApi';
41
41
  export { SizeEvent, GridviewPanelApi, GridConstraintChangeEvent, } from './api/gridviewPanelApi';
@@ -44,3 +44,4 @@ export { PanelSizeEvent, PanelConstraintChangeEvent, SplitviewPanelApi, } from '
44
44
  export { ExpansionEvent, PaneviewPanelApi } from './api/paneviewPanelApi';
45
45
  export { DockviewGroupPanelApi, DockviewGroupPanelFloatingChangeEvent, } from './api/dockviewGroupPanelApi';
46
46
  export { CommonApi, SplitviewApi, PaneviewApi, GridviewApi, DockviewApi, } from './api/component.api';
47
+ export { createDockview, createGridview, createPaneview, createSplitview, } from './api/entryPoints';
package/dist/cjs/index.js CHANGED
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.DockviewApi = exports.GridviewApi = exports.PaneviewApi = exports.SplitviewApi = exports.directionToPosition = exports.positionToDirection = exports.DockviewDisposable = exports.DockviewCompositeDisposable = exports.DockviewMutableDisposable = exports.DockviewEvent = exports.DockviewEmitter = void 0;
17
+ exports.createSplitview = exports.createPaneview = exports.createGridview = exports.createDockview = exports.DockviewApi = exports.GridviewApi = exports.PaneviewApi = exports.SplitviewApi = exports.directionToPosition = exports.positionToDirection = exports.DockviewDisposable = exports.DockviewCompositeDisposable = exports.DockviewMutableDisposable = exports.DockviewEvent = exports.DockviewEmitter = void 0;
18
18
  __exportStar(require("./dnd/dataTransfer"), exports);
19
19
  /**
20
20
  * Events, Emitters and Disposables are very common concepts that many codebases will contain, however we need
@@ -60,3 +60,8 @@ Object.defineProperty(exports, "SplitviewApi", { enumerable: true, get: function
60
60
  Object.defineProperty(exports, "PaneviewApi", { enumerable: true, get: function () { return component_api_1.PaneviewApi; } });
61
61
  Object.defineProperty(exports, "GridviewApi", { enumerable: true, get: function () { return component_api_1.GridviewApi; } });
62
62
  Object.defineProperty(exports, "DockviewApi", { enumerable: true, get: function () { return component_api_1.DockviewApi; } });
63
+ var entryPoints_1 = require("./api/entryPoints");
64
+ Object.defineProperty(exports, "createDockview", { enumerable: true, get: function () { return entryPoints_1.createDockview; } });
65
+ Object.defineProperty(exports, "createGridview", { enumerable: true, get: function () { return entryPoints_1.createGridview; } });
66
+ Object.defineProperty(exports, "createPaneview", { enumerable: true, get: function () { return entryPoints_1.createPaneview; } });
67
+ Object.defineProperty(exports, "createSplitview", { enumerable: true, get: function () { return entryPoints_1.createSplitview; } });
@@ -1,6 +1,7 @@
1
1
  import { Event } from '../events';
2
2
  import { CompositeDisposable } from '../lifecycle';
3
3
  import { AnchoredBox } from '../types';
4
+ export declare const DEFAULT_OVERLAY_Z_INDEX = 999;
4
5
  export declare class Overlay extends CompositeDisposable {
5
6
  private readonly options;
6
7
  private _element;
@@ -14,12 +15,14 @@ export declare class Overlay extends CompositeDisposable {
14
15
  private horiziontalAlignment;
15
16
  set minimumInViewportWidth(value: number | undefined);
16
17
  set minimumInViewportHeight(value: number | undefined);
18
+ get element(): HTMLElement;
17
19
  constructor(options: AnchoredBox & {
18
20
  container: HTMLElement;
19
21
  content: HTMLElement;
20
22
  minimumInViewportWidth?: number;
21
23
  minimumInViewportHeight?: number;
22
24
  });
25
+ bringToFront(): void;
23
26
  setBounds(bounds?: Partial<AnchoredBox>): void;
24
27
  toJSON(): AnchoredBox;
25
28
  setupDrag(dragTarget: HTMLElement, options?: {
@@ -50,34 +50,36 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
50
50
  }
51
51
  return to.concat(ar || Array.prototype.slice.call(from));
52
52
  };
53
- var __values = (this && this.__values) || function(o) {
54
- var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
55
- if (m) return m.call(o);
56
- if (o && typeof o.length === "number") return {
57
- next: function () {
58
- if (o && i >= o.length) o = void 0;
59
- return { value: o && o[i++], done: !o };
60
- }
61
- };
62
- throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
63
- };
64
53
  Object.defineProperty(exports, "__esModule", { value: true });
65
- exports.Overlay = void 0;
54
+ exports.Overlay = exports.DEFAULT_OVERLAY_Z_INDEX = void 0;
66
55
  var dom_1 = require("../dom");
67
56
  var events_1 = require("../events");
68
57
  var lifecycle_1 = require("../lifecycle");
69
58
  var math_1 = require("../math");
70
- var bringElementToFront = (function () {
71
- var previous = null;
72
- function pushToTop(element) {
73
- if (previous !== element && previous !== null) {
74
- (0, dom_1.toggleClass)(previous, 'dv-bring-to-front', false);
75
- }
76
- (0, dom_1.toggleClass)(element, 'dv-bring-to-front', true);
77
- previous = element;
59
+ exports.DEFAULT_OVERLAY_Z_INDEX = 999;
60
+ var AriaLevelTracker = /** @class */ (function () {
61
+ function AriaLevelTracker() {
62
+ this._orderedList = [];
78
63
  }
79
- return pushToTop;
80
- })();
64
+ AriaLevelTracker.prototype.push = function (element) {
65
+ this._orderedList = __spreadArray(__spreadArray([], __read(this._orderedList.filter(function (item) { return item !== element; })), false), [
66
+ element,
67
+ ], false);
68
+ this.update();
69
+ };
70
+ AriaLevelTracker.prototype.destroy = function (element) {
71
+ this._orderedList = this._orderedList.filter(function (item) { return item !== element; });
72
+ this.update();
73
+ };
74
+ AriaLevelTracker.prototype.update = function () {
75
+ for (var i = 0; i < this._orderedList.length; i++) {
76
+ this._orderedList[i].setAttribute('aria-level', "".concat(i));
77
+ this._orderedList[i].style.zIndex = "".concat(exports.DEFAULT_OVERLAY_Z_INDEX + i * 2);
78
+ }
79
+ };
80
+ return AriaLevelTracker;
81
+ }());
82
+ var arialLevelTracker = new AriaLevelTracker();
81
83
  var Overlay = /** @class */ (function (_super) {
82
84
  __extends(Overlay, _super);
83
85
  function Overlay(options) {
@@ -102,6 +104,7 @@ var Overlay = /** @class */ (function (_super) {
102
104
  _this.options.container.appendChild(_this._element);
103
105
  // if input bad resize within acceptable boundaries
104
106
  _this.setBounds(__assign(__assign(__assign(__assign({ height: _this.options.height, width: _this.options.width }, ('top' in _this.options && { top: _this.options.top })), ('bottom' in _this.options && { bottom: _this.options.bottom })), ('left' in _this.options && { left: _this.options.left })), ('right' in _this.options && { right: _this.options.right })));
107
+ arialLevelTracker.push(_this._element);
105
108
  return _this;
106
109
  }
107
110
  Object.defineProperty(Overlay.prototype, "minimumInViewportWidth", {
@@ -118,6 +121,16 @@ var Overlay = /** @class */ (function (_super) {
118
121
  enumerable: false,
119
122
  configurable: true
120
123
  });
124
+ Object.defineProperty(Overlay.prototype, "element", {
125
+ get: function () {
126
+ return this._element;
127
+ },
128
+ enumerable: false,
129
+ configurable: true
130
+ });
131
+ Overlay.prototype.bringToFront = function () {
132
+ arialLevelTracker.push(this._element);
133
+ };
121
134
  Overlay.prototype.setBounds = function (bounds) {
122
135
  if (bounds === void 0) { bounds = {}; }
123
136
  if (typeof bounds.height === 'number') {
@@ -206,38 +219,11 @@ var Overlay = /** @class */ (function (_super) {
206
219
  if (options === void 0) { options = { inDragMode: false }; }
207
220
  var move = new lifecycle_1.MutableDisposable();
208
221
  var track = function () {
209
- var e_1, _a;
210
222
  var offset = null;
211
- var iframes = __spreadArray(__spreadArray([], __read((0, dom_1.getElementsByTagName)('iframe')), false), __read((0, dom_1.getElementsByTagName)('webview')), false);
212
- try {
213
- for (var iframes_1 = __values(iframes), iframes_1_1 = iframes_1.next(); !iframes_1_1.done; iframes_1_1 = iframes_1.next()) {
214
- var iframe = iframes_1_1.value;
215
- iframe.style.pointerEvents = 'none';
216
- }
217
- }
218
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
219
- finally {
220
- try {
221
- if (iframes_1_1 && !iframes_1_1.done && (_a = iframes_1.return)) _a.call(iframes_1);
222
- }
223
- finally { if (e_1) throw e_1.error; }
224
- }
223
+ var iframes = (0, dom_1.disableIframePointEvents)();
225
224
  move.value = new lifecycle_1.CompositeDisposable({
226
225
  dispose: function () {
227
- var e_2, _a;
228
- try {
229
- for (var iframes_2 = __values(iframes), iframes_2_1 = iframes_2.next(); !iframes_2_1.done; iframes_2_1 = iframes_2.next()) {
230
- var iframe = iframes_2_1.value;
231
- iframe.style.pointerEvents = 'auto';
232
- }
233
- }
234
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
235
- finally {
236
- try {
237
- if (iframes_2_1 && !iframes_2_1.done && (_a = iframes_2.return)) _a.call(iframes_2);
238
- }
239
- finally { if (e_2) throw e_2.error; }
240
- }
226
+ iframes.release();
241
227
  },
242
228
  }, (0, events_1.addDisposableWindowListener)(window, 'mousemove', function (e) {
243
229
  var containerRect = _this.options.container.getBoundingClientRect();
@@ -306,9 +292,8 @@ var Overlay = /** @class */ (function (_super) {
306
292
  track();
307
293
  }
308
294
  }), (0, events_1.addDisposableListener)(this.options.content, 'mousedown', function () {
309
- bringElementToFront(_this._element);
295
+ arialLevelTracker.push(_this._element);
310
296
  }, true));
311
- bringElementToFront(this._element);
312
297
  if (options.inDragMode) {
313
298
  track();
314
299
  }
@@ -320,23 +305,9 @@ var Overlay = /** @class */ (function (_super) {
320
305
  this._element.appendChild(resizeHandleElement);
321
306
  var move = new lifecycle_1.MutableDisposable();
322
307
  this.addDisposables(move, (0, events_1.addDisposableListener)(resizeHandleElement, 'mousedown', function (e) {
323
- var e_3, _a;
324
308
  e.preventDefault();
325
309
  var startPosition = null;
326
- var iframes = __spreadArray(__spreadArray([], __read((0, dom_1.getElementsByTagName)('iframe')), false), __read((0, dom_1.getElementsByTagName)('webview')), false);
327
- try {
328
- for (var iframes_3 = __values(iframes), iframes_3_1 = iframes_3.next(); !iframes_3_1.done; iframes_3_1 = iframes_3.next()) {
329
- var iframe = iframes_3_1.value;
330
- iframe.style.pointerEvents = 'none';
331
- }
332
- }
333
- catch (e_3_1) { e_3 = { error: e_3_1 }; }
334
- finally {
335
- try {
336
- if (iframes_3_1 && !iframes_3_1.done && (_a = iframes_3.return)) _a.call(iframes_3);
337
- }
338
- finally { if (e_3) throw e_3.error; }
339
- }
310
+ var iframes = (0, dom_1.disableIframePointEvents)();
340
311
  move.value = new lifecycle_1.CompositeDisposable((0, events_1.addDisposableWindowListener)(window, 'mousemove', function (e) {
341
312
  var containerRect = _this.options.container.getBoundingClientRect();
342
313
  var overlayRect = _this._element.getBoundingClientRect();
@@ -459,20 +430,7 @@ var Overlay = /** @class */ (function (_super) {
459
430
  _this.setBounds(bounds);
460
431
  }), {
461
432
  dispose: function () {
462
- var e_4, _a;
463
- try {
464
- for (var iframes_4 = __values(iframes), iframes_4_1 = iframes_4.next(); !iframes_4_1.done; iframes_4_1 = iframes_4.next()) {
465
- var iframe = iframes_4_1.value;
466
- iframe.style.pointerEvents = 'auto';
467
- }
468
- }
469
- catch (e_4_1) { e_4 = { error: e_4_1 }; }
470
- finally {
471
- try {
472
- if (iframes_4_1 && !iframes_4_1.done && (_a = iframes_4.return)) _a.call(iframes_4);
473
- }
474
- finally { if (e_4) throw e_4.error; }
475
- }
433
+ iframes.release();
476
434
  },
477
435
  }, (0, events_1.addDisposableWindowListener)(window, 'mouseup', function () {
478
436
  move.dispose();
@@ -493,6 +451,7 @@ var Overlay = /** @class */ (function (_super) {
493
451
  return 0;
494
452
  };
495
453
  Overlay.prototype.dispose = function () {
454
+ arialLevelTracker.destroy(this._element);
496
455
  this._element.remove();
497
456
  _super.prototype.dispose.call(this);
498
457
  };
@@ -1,16 +1,18 @@
1
- import { Droptarget } from './dnd/droptarget';
2
- import { CompositeDisposable } from './lifecycle';
3
- import { IDockviewPanel } from './dockview/dockviewPanel';
1
+ import { Droptarget } from '../dnd/droptarget';
2
+ import { CompositeDisposable } from '../lifecycle';
3
+ import { IDockviewPanel } from '../dockview/dockviewPanel';
4
+ import { DockviewComponent } from '../dockview/dockviewComponent';
4
5
  export type DockviewPanelRenderer = 'onlyWhenVisible' | 'always';
5
6
  export interface IRenderable {
6
7
  readonly element: HTMLElement;
7
8
  readonly dropTarget: Droptarget;
8
9
  }
9
10
  export declare class OverlayRenderContainer extends CompositeDisposable {
10
- private readonly element;
11
+ readonly element: HTMLElement;
12
+ readonly accessor: DockviewComponent;
11
13
  private readonly map;
12
14
  private _disposed;
13
- constructor(element: HTMLElement);
15
+ constructor(element: HTMLElement, accessor: DockviewComponent);
14
16
  detatch(panel: IDockviewPanel): boolean;
15
17
  attach(options: {
16
18
  panel: IDockviewPanel;
@@ -27,9 +27,10 @@ var __values = (this && this.__values) || function(o) {
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
29
  exports.OverlayRenderContainer = void 0;
30
- var dnd_1 = require("./dnd/dnd");
31
- var dom_1 = require("./dom");
32
- var lifecycle_1 = require("./lifecycle");
30
+ var dnd_1 = require("../dnd/dnd");
31
+ var dom_1 = require("../dom");
32
+ var lifecycle_1 = require("../lifecycle");
33
+ var overlay_1 = require("./overlay");
33
34
  function createFocusableElement() {
34
35
  var element = document.createElement('div');
35
36
  element.tabIndex = -1;
@@ -37,9 +38,10 @@ function createFocusableElement() {
37
38
  }
38
39
  var OverlayRenderContainer = /** @class */ (function (_super) {
39
40
  __extends(OverlayRenderContainer, _super);
40
- function OverlayRenderContainer(element) {
41
+ function OverlayRenderContainer(element, accessor) {
41
42
  var _this = _super.call(this) || this;
42
43
  _this.element = element;
44
+ _this.accessor = accessor;
43
45
  _this.map = {};
44
46
  _this._disposed = false;
45
47
  _this.addDisposables(lifecycle_1.Disposable.from(function () {
@@ -108,7 +110,37 @@ var OverlayRenderContainer = /** @class */ (function (_super) {
108
110
  }
109
111
  focusContainer.style.display = panel.api.isVisible ? '' : 'none';
110
112
  };
111
- var disposable = new lifecycle_1.CompositeDisposable(
113
+ var observerDisposable = new lifecycle_1.MutableDisposable();
114
+ var correctLayerPosition = function () {
115
+ if (panel.api.location.type === 'floating') {
116
+ queueMicrotask(function () {
117
+ var floatingGroup = _this.accessor.floatingGroups.find(function (group) { return group.group === panel.api.group; });
118
+ if (!floatingGroup) {
119
+ return;
120
+ }
121
+ var element = floatingGroup.overlay.element;
122
+ var update = function () {
123
+ var level = Number(element.getAttribute('aria-level'));
124
+ focusContainer.style.zIndex = "".concat(overlay_1.DEFAULT_OVERLAY_Z_INDEX + level * 2 + 1);
125
+ };
126
+ var observer = new MutationObserver(function () {
127
+ update();
128
+ });
129
+ observerDisposable.value = lifecycle_1.Disposable.from(function () {
130
+ return observer.disconnect();
131
+ });
132
+ observer.observe(element, {
133
+ attributeFilter: ['aria-level'],
134
+ attributes: true,
135
+ });
136
+ update();
137
+ });
138
+ }
139
+ else {
140
+ focusContainer.style.zIndex = ''; // reset the z-index, perhaps CSS will take over here
141
+ }
142
+ };
143
+ var disposable = new lifecycle_1.CompositeDisposable(observerDisposable,
112
144
  /**
113
145
  * since container is positioned absoutely we must explicitly forward
114
146
  * the dnd events for the expect behaviours to continue to occur in terms of dnd
@@ -132,7 +164,7 @@ var OverlayRenderContainer = /** @class */ (function (_super) {
132
164
  onDragOver: function (e) {
133
165
  referenceContainer.dropTarget.dnd.onDragOver(e);
134
166
  },
135
- }), panel.api.onDidVisibilityChange(function (event) {
167
+ }), panel.api.onDidVisibilityChange(function () {
136
168
  /**
137
169
  * Control the visibility of the content, however even when not visible (display: none)
138
170
  * the content is still maintained within the DOM hence DOM specific attributes
@@ -144,6 +176,8 @@ var OverlayRenderContainer = /** @class */ (function (_super) {
144
176
  return;
145
177
  }
146
178
  resize();
179
+ }), panel.api.onDidLocationChange(function () {
180
+ correctLayerPosition();
147
181
  }));
148
182
  this.map[panel.api.id].destroy = lifecycle_1.Disposable.from(function () {
149
183
  var _a;
@@ -152,6 +186,7 @@ var OverlayRenderContainer = /** @class */ (function (_super) {
152
186
  }
153
187
  (_a = focusContainer.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(focusContainer);
154
188
  });
189
+ correctLayerPosition();
155
190
  queueMicrotask(function () {
156
191
  if (_this.isDisposed) {
157
192
  return;
@@ -21,5 +21,5 @@ export interface PaneviewComponentOptions {
21
21
  };
22
22
  disableDnd?: boolean;
23
23
  showDndOverlay?: (event: PaneviewDndOverlayEvent) => boolean;
24
- parentElement: HTMLElement;
24
+ className?: string;
25
25
  }