dockview-core 4.11.0 → 4.13.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 (67) hide show
  1. package/dist/cjs/api/component.api.d.ts +5 -3
  2. package/dist/cjs/api/component.api.js +2 -2
  3. package/dist/cjs/api/dockviewGroupPanelApi.d.ts +3 -1
  4. package/dist/cjs/api/dockviewGroupPanelApi.js +24 -1
  5. package/dist/cjs/dockview/components/panel/content.d.ts +7 -0
  6. package/dist/cjs/dockview/components/panel/content.js +11 -0
  7. package/dist/cjs/dockview/components/titlebar/tabs.d.ts +2 -2
  8. package/dist/cjs/dockview/components/titlebar/tabs.js +1 -1
  9. package/dist/cjs/dockview/components/titlebar/tabsContainer.d.ts +3 -3
  10. package/dist/cjs/dockview/components/titlebar/tabsContainer.js +1 -1
  11. package/dist/cjs/dockview/dockviewComponent.d.ts +10 -4
  12. package/dist/cjs/dockview/dockviewComponent.js +167 -85
  13. package/dist/cjs/dockview/dockviewGroupPanelModel.d.ts +2 -2
  14. package/dist/cjs/dockview/dockviewGroupPanelModel.js +4 -1
  15. package/dist/cjs/dockview/dockviewPanel.d.ts +6 -4
  16. package/dist/cjs/dockview/dockviewPanel.js +12 -0
  17. package/dist/cjs/dockview/events.d.ts +4 -4
  18. package/dist/cjs/dockview/events.js +14 -14
  19. package/dist/cjs/index.d.ts +2 -1
  20. package/dist/cjs/index.js +7 -2
  21. package/dist/cjs/overlay/overlay.js +25 -14
  22. package/dist/cjs/splitview/splitview.js +2 -0
  23. package/dist/dockview-core.amd.js +172 -54
  24. package/dist/dockview-core.amd.js.map +1 -1
  25. package/dist/dockview-core.amd.min.js +2 -2
  26. package/dist/dockview-core.amd.min.js.map +1 -1
  27. package/dist/dockview-core.amd.min.noStyle.js +2 -2
  28. package/dist/dockview-core.amd.min.noStyle.js.map +1 -1
  29. package/dist/dockview-core.amd.noStyle.js +172 -54
  30. package/dist/dockview-core.amd.noStyle.js.map +1 -1
  31. package/dist/dockview-core.cjs.js +172 -54
  32. package/dist/dockview-core.cjs.js.map +1 -1
  33. package/dist/dockview-core.esm.js +172 -55
  34. package/dist/dockview-core.esm.js.map +1 -1
  35. package/dist/dockview-core.esm.min.js +2 -2
  36. package/dist/dockview-core.esm.min.js.map +1 -1
  37. package/dist/dockview-core.js +172 -54
  38. package/dist/dockview-core.js.map +1 -1
  39. package/dist/dockview-core.min.js +2 -2
  40. package/dist/dockview-core.min.js.map +1 -1
  41. package/dist/dockview-core.min.noStyle.js +2 -2
  42. package/dist/dockview-core.min.noStyle.js.map +1 -1
  43. package/dist/dockview-core.noStyle.js +172 -54
  44. package/dist/dockview-core.noStyle.js.map +1 -1
  45. package/dist/esm/api/component.api.d.ts +5 -3
  46. package/dist/esm/api/component.api.js +2 -2
  47. package/dist/esm/api/dockviewGroupPanelApi.d.ts +3 -1
  48. package/dist/esm/api/dockviewGroupPanelApi.js +13 -1
  49. package/dist/esm/dockview/components/panel/content.d.ts +7 -0
  50. package/dist/esm/dockview/components/panel/content.js +11 -0
  51. package/dist/esm/dockview/components/titlebar/tabs.d.ts +2 -2
  52. package/dist/esm/dockview/components/titlebar/tabs.js +2 -2
  53. package/dist/esm/dockview/components/titlebar/tabsContainer.d.ts +3 -3
  54. package/dist/esm/dockview/components/titlebar/tabsContainer.js +2 -2
  55. package/dist/esm/dockview/dockviewComponent.d.ts +10 -4
  56. package/dist/esm/dockview/dockviewComponent.js +99 -33
  57. package/dist/esm/dockview/dockviewGroupPanelModel.d.ts +2 -2
  58. package/dist/esm/dockview/dockviewGroupPanelModel.js +5 -2
  59. package/dist/esm/dockview/dockviewPanel.d.ts +6 -4
  60. package/dist/esm/dockview/dockviewPanel.js +12 -0
  61. package/dist/esm/dockview/events.d.ts +4 -4
  62. package/dist/esm/dockview/events.js +1 -1
  63. package/dist/esm/index.d.ts +2 -1
  64. package/dist/esm/index.js +2 -1
  65. package/dist/esm/overlay/overlay.js +26 -15
  66. package/dist/esm/splitview/splitview.js +2 -0
  67. package/package.json +1 -1
@@ -21,6 +21,7 @@ export interface IDockviewPanel extends IDisposable, IPanel {
21
21
  updateParentGroup(group: DockviewGroupPanel, options?: {
22
22
  skipSetActive?: boolean;
23
23
  }): void;
24
+ updateFromStateModel(state: GroupviewPanelState): void;
24
25
  init(params: IGroupPanelInitParameters): void;
25
26
  toJSON(): GroupviewPanelState;
26
27
  setTitle(title: string): void;
@@ -37,10 +38,10 @@ export declare class DockviewPanel extends CompositeDisposable implements IDockv
37
38
  private _params?;
38
39
  private _title;
39
40
  private _renderer;
40
- private readonly _minimumWidth;
41
- private readonly _minimumHeight;
42
- private readonly _maximumWidth;
43
- private readonly _maximumHeight;
41
+ private _minimumWidth;
42
+ private _minimumHeight;
43
+ private _maximumWidth;
44
+ private _maximumHeight;
44
45
  get params(): Parameters | undefined;
45
46
  get title(): string | undefined;
46
47
  get group(): DockviewGroupPanel;
@@ -58,6 +59,7 @@ export declare class DockviewPanel extends CompositeDisposable implements IDockv
58
59
  setTitle(title: string): void;
59
60
  setRenderer(renderer: DockviewPanelRenderer): void;
60
61
  update(event: PanelUpdateEvent): void;
62
+ updateFromStateModel(state: GroupviewPanelState): void;
61
63
  updateParentGroup(group: DockviewGroupPanel, options?: {
62
64
  skipSetActive?: boolean;
63
65
  }): void;
@@ -115,6 +115,18 @@ export class DockviewPanel extends CompositeDisposable {
115
115
  params: this._params,
116
116
  });
117
117
  }
118
+ updateFromStateModel(state) {
119
+ var _a, _b, _c;
120
+ this._maximumHeight = state.maximumHeight;
121
+ this._minimumHeight = state.minimumHeight;
122
+ this._maximumWidth = state.maximumWidth;
123
+ this._minimumWidth = state.minimumWidth;
124
+ this.update({ params: (_a = state.params) !== null && _a !== void 0 ? _a : {} });
125
+ this.setTitle((_b = state.title) !== null && _b !== void 0 ? _b : this.id);
126
+ this.setRenderer((_c = state.renderer) !== null && _c !== void 0 ? _c : this.accessor.renderer);
127
+ // state.contentComponent;
128
+ // state.tabComponent;
129
+ }
118
130
  updateParentGroup(group, options) {
119
131
  this._group = group;
120
132
  this.api.group = this._group;
@@ -5,16 +5,16 @@ import { IDockviewPanel } from './dockviewPanel';
5
5
  import { DockviewGroupPanel } from './dockviewGroupPanel';
6
6
  import { IDockviewEvent } from '../events';
7
7
  export type DockviewGroupDropLocation = 'tab' | 'header_space' | 'content' | 'edge';
8
- export interface WillShowOverlayLocationEventOptions {
8
+ export interface DockviewWillShowOverlayLocationEventOptions {
9
9
  readonly kind: DockviewGroupDropLocation;
10
10
  readonly panel: IDockviewPanel | undefined;
11
11
  readonly api: DockviewApi;
12
12
  readonly group: DockviewGroupPanel | undefined;
13
13
  getData: () => PanelTransfer | undefined;
14
14
  }
15
- export declare class WillShowOverlayLocationEvent implements IDockviewEvent {
15
+ export declare class DockviewWillShowOverlayLocationEvent implements IDockviewEvent {
16
16
  private readonly event;
17
- readonly options: WillShowOverlayLocationEventOptions;
17
+ readonly options: DockviewWillShowOverlayLocationEventOptions;
18
18
  get kind(): DockviewGroupDropLocation;
19
19
  get nativeEvent(): DragEvent;
20
20
  get position(): Position;
@@ -24,5 +24,5 @@ export declare class WillShowOverlayLocationEvent implements IDockviewEvent {
24
24
  get group(): DockviewGroupPanel | undefined;
25
25
  preventDefault(): void;
26
26
  getData(): PanelTransfer | undefined;
27
- constructor(event: WillShowOverlayEvent, options: WillShowOverlayLocationEventOptions);
27
+ constructor(event: WillShowOverlayEvent, options: DockviewWillShowOverlayLocationEventOptions);
28
28
  }
@@ -1,4 +1,4 @@
1
- export class WillShowOverlayLocationEvent {
1
+ export class DockviewWillShowOverlayLocationEvent {
2
2
  get kind() {
3
3
  return this.options.kind;
4
4
  }
@@ -16,7 +16,8 @@ export * from './gridview/baseComponentGridview';
16
16
  export { DraggablePaneviewPanel, PaneviewDidDropEvent as PaneviewDropEvent, } from './paneview/draggablePaneviewPanel';
17
17
  export * from './dockview/components/panel/content';
18
18
  export * from './dockview/components/tab/tab';
19
- export * from './dockview/dockviewGroupPanelModel';
19
+ export { DockviewGroupPanelModel, DockviewDidDropEvent, DockviewWillDropEvent, DockviewGroupChangeEvent, } from './dockview/dockviewGroupPanelModel';
20
+ export { DockviewWillShowOverlayLocationEvent } from './dockview/events';
20
21
  export { TabDragEvent, GroupDragEvent, } from './dockview/components/titlebar/tabsContainer';
21
22
  export * from './dockview/types';
22
23
  export * from './dockview/dockviewGroupPanel';
package/dist/esm/index.js CHANGED
@@ -16,7 +16,8 @@ export * from './gridview/baseComponentGridview';
16
16
  export { DraggablePaneviewPanel, } from './paneview/draggablePaneviewPanel';
17
17
  export * from './dockview/components/panel/content';
18
18
  export * from './dockview/components/tab/tab';
19
- export * from './dockview/dockviewGroupPanelModel';
19
+ export { DockviewGroupPanelModel, DockviewDidDropEvent, DockviewWillDropEvent, } from './dockview/dockviewGroupPanelModel';
20
+ export { DockviewWillShowOverlayLocationEvent } from './dockview/events';
20
21
  export * from './dockview/types';
21
22
  export * from './dockview/dockviewGroupPanel';
22
23
  export * from './dockview/options';
@@ -1,5 +1,5 @@
1
1
  import { disableIframePointEvents, quasiDefaultPrevented, toggleClass, } from '../dom';
2
- import { Emitter, addDisposableListener, } from '../events';
2
+ import { Emitter, addDisposableListener } from '../events';
3
3
  import { CompositeDisposable, MutableDisposable } from '../lifecycle';
4
4
  import { clamp } from '../math';
5
5
  class AriaLevelTracker {
@@ -267,13 +267,16 @@ export class Overlay extends CompositeDisposable {
267
267
  let right = undefined;
268
268
  let width = undefined;
269
269
  const moveTop = () => {
270
- top = clamp(y, -Number.MAX_VALUE, startPosition.originalY +
270
+ // When dragging top handle, constrain top position to prevent oversizing
271
+ const maxTop = startPosition.originalY +
271
272
  startPosition.originalHeight >
272
273
  containerRect.height
273
- ? this.getMinimumHeight(containerRect.height)
274
+ ? Math.max(0, containerRect.height -
275
+ Overlay.MINIMUM_HEIGHT)
274
276
  : Math.max(0, startPosition.originalY +
275
277
  startPosition.originalHeight -
276
- Overlay.MINIMUM_HEIGHT));
278
+ Overlay.MINIMUM_HEIGHT);
279
+ top = clamp(y, 0, maxTop);
277
280
  height =
278
281
  startPosition.originalY +
279
282
  startPosition.originalHeight -
@@ -284,22 +287,27 @@ export class Overlay extends CompositeDisposable {
284
287
  top =
285
288
  startPosition.originalY -
286
289
  startPosition.originalHeight;
287
- height = clamp(y - top, top < 0 &&
288
- typeof this.options
289
- .minimumInViewportHeight === 'number'
290
+ // When dragging bottom handle, constrain height to container height
291
+ const minHeight = top < 0 &&
292
+ typeof this.options.minimumInViewportHeight ===
293
+ 'number'
290
294
  ? -top +
291
295
  this.options.minimumInViewportHeight
292
- : Overlay.MINIMUM_HEIGHT, Number.MAX_VALUE);
296
+ : Overlay.MINIMUM_HEIGHT;
297
+ const maxHeight = containerRect.height - Math.max(0, top);
298
+ height = clamp(y - top, minHeight, maxHeight);
293
299
  bottom = containerRect.height - top - height;
294
300
  };
295
301
  const moveLeft = () => {
296
- left = clamp(x, -Number.MAX_VALUE, startPosition.originalX +
302
+ const maxLeft = startPosition.originalX +
297
303
  startPosition.originalWidth >
298
304
  containerRect.width
299
- ? this.getMinimumWidth(containerRect.width)
305
+ ? Math.max(0, containerRect.width -
306
+ Overlay.MINIMUM_WIDTH) // Prevent extending beyong right edge
300
307
  : Math.max(0, startPosition.originalX +
301
308
  startPosition.originalWidth -
302
- Overlay.MINIMUM_WIDTH));
309
+ Overlay.MINIMUM_WIDTH);
310
+ left = clamp(x, 0, maxLeft); // min is 0 (Not -Infinity) to prevent dragging beyond left edge
303
311
  width =
304
312
  startPosition.originalX +
305
313
  startPosition.originalWidth -
@@ -310,12 +318,15 @@ export class Overlay extends CompositeDisposable {
310
318
  left =
311
319
  startPosition.originalX -
312
320
  startPosition.originalWidth;
313
- width = clamp(x - left, left < 0 &&
314
- typeof this.options
315
- .minimumInViewportWidth === 'number'
321
+ // When dragging right handle, constrain width to container width
322
+ const minWidth = left < 0 &&
323
+ typeof this.options.minimumInViewportWidth ===
324
+ 'number'
316
325
  ? -left +
317
326
  this.options.minimumInViewportWidth
318
- : Overlay.MINIMUM_WIDTH, Number.MAX_VALUE);
327
+ : Overlay.MINIMUM_WIDTH;
328
+ const maxWidth = containerRect.width - Math.max(0, left);
329
+ width = clamp(x - left, minWidth, maxWidth);
319
330
  right = containerRect.width - left - width;
320
331
  };
321
332
  switch (direction) {
@@ -427,11 +427,13 @@ export class Splitview {
427
427
  document.removeEventListener('pointermove', onPointerMove);
428
428
  document.removeEventListener('pointerup', end);
429
429
  document.removeEventListener('pointercancel', end);
430
+ document.removeEventListener('contextmenu', end);
430
431
  this._onDidSashEnd.fire(undefined);
431
432
  };
432
433
  document.addEventListener('pointermove', onPointerMove);
433
434
  document.addEventListener('pointerup', end);
434
435
  document.addEventListener('pointercancel', end);
436
+ document.addEventListener('contextmenu', end);
435
437
  };
436
438
  sash.addEventListener('pointerdown', onPointerStart);
437
439
  const sashItem = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dockview-core",
3
- "version": "4.11.0",
3
+ "version": "4.13.0",
4
4
  "description": "Zero dependency layout manager supporting tabs, grids and splitviews",
5
5
  "keywords": [
6
6
  "splitview",