dockview-core 1.10.2 → 1.12.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 (46) hide show
  1. package/dist/cjs/api/dockviewPanelApi.d.ts +6 -0
  2. package/dist/cjs/api/panelApi.d.ts +4 -0
  3. package/dist/cjs/dockview/components/panel/content.js +2 -2
  4. package/dist/cjs/dockview/components/tab/defaultTab.d.ts +0 -2
  5. package/dist/cjs/dockview/components/tab/defaultTab.js +5 -14
  6. package/dist/cjs/dockview/components/titlebar/tabsContainer.js +12 -1
  7. package/dist/cjs/dockview/dockviewComponent.d.ts +2 -0
  8. package/dist/cjs/dockview/dockviewComponent.js +12 -1
  9. package/dist/cjs/dockview/dockviewGroupPanelModel.d.ts +9 -1
  10. package/dist/cjs/dockview/dockviewGroupPanelModel.js +30 -2
  11. package/dist/cjs/overlayRenderContainer.d.ts +1 -1
  12. package/dist/dockview-core.amd.js +46 -22
  13. package/dist/dockview-core.amd.js.map +1 -1
  14. package/dist/dockview-core.amd.min.js +2 -2
  15. package/dist/dockview-core.amd.min.js.map +1 -1
  16. package/dist/dockview-core.amd.min.noStyle.js +2 -2
  17. package/dist/dockview-core.amd.min.noStyle.js.map +1 -1
  18. package/dist/dockview-core.amd.noStyle.js +45 -21
  19. package/dist/dockview-core.amd.noStyle.js.map +1 -1
  20. package/dist/dockview-core.cjs.js +46 -22
  21. package/dist/dockview-core.cjs.js.map +1 -1
  22. package/dist/dockview-core.esm.js +46 -22
  23. package/dist/dockview-core.esm.js.map +1 -1
  24. package/dist/dockview-core.esm.min.js +2 -2
  25. package/dist/dockview-core.esm.min.js.map +1 -1
  26. package/dist/dockview-core.js +46 -22
  27. package/dist/dockview-core.js.map +1 -1
  28. package/dist/dockview-core.min.js +2 -2
  29. package/dist/dockview-core.min.js.map +1 -1
  30. package/dist/dockview-core.min.noStyle.js +2 -2
  31. package/dist/dockview-core.min.noStyle.js.map +1 -1
  32. package/dist/dockview-core.noStyle.js +45 -21
  33. package/dist/dockview-core.noStyle.js.map +1 -1
  34. package/dist/esm/api/dockviewPanelApi.d.ts +6 -0
  35. package/dist/esm/api/panelApi.d.ts +4 -0
  36. package/dist/esm/dockview/components/panel/content.js +2 -2
  37. package/dist/esm/dockview/components/tab/defaultTab.d.ts +0 -2
  38. package/dist/esm/dockview/components/tab/defaultTab.js +5 -14
  39. package/dist/esm/dockview/components/titlebar/tabsContainer.js +12 -1
  40. package/dist/esm/dockview/dockviewComponent.d.ts +2 -0
  41. package/dist/esm/dockview/dockviewComponent.js +8 -1
  42. package/dist/esm/dockview/dockviewGroupPanelModel.d.ts +9 -1
  43. package/dist/esm/dockview/dockviewGroupPanelModel.js +18 -2
  44. package/dist/esm/overlayRenderContainer.d.ts +1 -1
  45. package/dist/styles/dockview.css +8 -18
  46. package/package.json +1 -1
@@ -19,6 +19,12 @@ export interface ActiveGroupEvent {
19
19
  export interface GroupChangedEvent {
20
20
  }
21
21
  export interface DockviewPanelApi extends Omit<GridviewPanelApi, 'setVisible' | 'onDidConstraintsChange' | 'setConstraints'> {
22
+ /**
23
+ * The id of the tab component renderer
24
+ *
25
+ * Undefined if no custom tab renderer is provided
26
+ */
27
+ readonly tabComponent: string | undefined;
22
28
  readonly group: DockviewGroupPanel;
23
29
  readonly isGroupActive: boolean;
24
30
  readonly renderer: DockviewPanelRenderer;
@@ -23,6 +23,10 @@ export interface PanelApi {
23
23
  setActive(): void;
24
24
  setVisible(isVisible: boolean): void;
25
25
  updateParameters(parameters: Parameters): void;
26
+ /**
27
+ * The id of the component renderer
28
+ */
29
+ readonly component: string;
26
30
  /**
27
31
  * The id of the panel that would have been assigned when the panel was created
28
32
  */
@@ -72,7 +72,7 @@ export class ContentContainer extends CompositeDisposable {
72
72
  this.panel = panel;
73
73
  let container;
74
74
  switch (panel.api.renderer) {
75
- case 'onlyWhenVisibile':
75
+ case 'onlyWhenVisible':
76
76
  this.group.renderContainer.detatch(panel);
77
77
  if (this.panel) {
78
78
  if (doRender) {
@@ -118,7 +118,7 @@ export class ContentContainer extends CompositeDisposable {
118
118
  closePanel() {
119
119
  var _a;
120
120
  if (this.panel) {
121
- if (this.panel.api.renderer === 'onlyWhenVisibile') {
121
+ if (this.panel.api.renderer === 'onlyWhenVisible') {
122
122
  (_a = this.panel.view.content.element.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(this.panel.view.content.element);
123
123
  }
124
124
  }
@@ -5,8 +5,6 @@ import { DockviewGroupPanel } from '../../dockviewGroupPanel';
5
5
  export declare class DefaultTab extends CompositeDisposable implements ITabRenderer {
6
6
  private _element;
7
7
  private _content;
8
- private _actionContainer;
9
- private _list;
10
8
  private action;
11
9
  private params;
12
10
  get element(): HTMLElement;
@@ -10,27 +10,18 @@ export class DefaultTab extends CompositeDisposable {
10
10
  //
11
11
  this.params = {};
12
12
  this._element = document.createElement('div');
13
- this._element.className = 'default-tab';
13
+ this._element.className = 'dv-default-tab';
14
14
  //
15
15
  this._content = document.createElement('div');
16
- this._content.className = 'tab-content';
17
- //
18
- this._actionContainer = document.createElement('div');
19
- this._actionContainer.className = 'action-container';
20
- //
21
- this._list = document.createElement('ul');
22
- this._list.className = 'tab-list';
23
- //
16
+ this._content.className = 'dv-default-tab-content';
24
17
  this.action = document.createElement('div');
25
- this.action.className = 'tab-action';
18
+ this.action.className = 'dv-default-tab-action';
26
19
  this.action.appendChild(createCloseButton());
27
20
  //
28
21
  this._element.appendChild(this._content);
29
- this._element.appendChild(this._actionContainer);
30
- this._actionContainer.appendChild(this._list);
31
- this._list.appendChild(this.action);
22
+ this._element.appendChild(this.action);
32
23
  //
33
- this.addDisposables(addDisposableListener(this._actionContainer, 'mousedown', (ev) => {
24
+ this.addDisposables(addDisposableListener(this.action, 'mousedown', (ev) => {
34
25
  ev.preventDefault();
35
26
  }));
36
27
  this.render();
@@ -4,6 +4,7 @@ import { Tab } from '../tab/tab';
4
4
  import { VoidContainer } from './voidContainer';
5
5
  import { toggleClass } from '../../../dom';
6
6
  import { WillShowOverlayLocationEvent, } from '../../dockviewGroupPanelModel';
7
+ import { getPanelData } from '../../../dnd/dataTransfer';
7
8
  export class TabsContainer extends CompositeDisposable {
8
9
  get panels() {
9
10
  return this.tabs.map((_) => _.value.panel.id);
@@ -128,6 +129,10 @@ export class TabsContainer extends CompositeDisposable {
128
129
  }), this.voidContainer.onWillShowOverlay((event) => {
129
130
  this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {
130
131
  kind: 'header_space',
132
+ panel: this.group.activePanel,
133
+ api: this.accessor.api,
134
+ group: this.group,
135
+ getData: getPanelData,
131
136
  }));
132
137
  }), addDisposableListener(this.voidContainer.element, 'mousedown', (event) => {
133
138
  const isFloatingGroupsEnabled = !this.accessor.options.disableFloatingGroups;
@@ -225,7 +230,13 @@ export class TabsContainer extends CompositeDisposable {
225
230
  index: this.tabs.findIndex((x) => x.value === tab),
226
231
  });
227
232
  }), tab.onWillShowOverlay((event) => {
228
- this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, { kind: 'tab' }));
233
+ this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {
234
+ kind: 'tab',
235
+ panel: this.group.activePanel,
236
+ api: this.accessor.api,
237
+ group: this.group,
238
+ getData: getPanelData,
239
+ }));
229
240
  }));
230
241
  const value = { value: tab, disposable };
231
242
  this.addTab(value, index);
@@ -5,6 +5,7 @@ import { Event, Emitter } from '../events';
5
5
  import { IWatermarkRenderer, GroupviewPanelState } from './types';
6
6
  import { AddGroupOptions, AddPanelOptions, DockviewComponentOptions, MovementOptions } from './options';
7
7
  import { BaseGrid, IBaseGrid } from '../gridview/baseComponentGridview';
8
+ import { DockviewApi } from '../api/component.api';
8
9
  import { Orientation } from '../splitview/splitview';
9
10
  import { GroupOptions, GroupPanelViewState, DockviewDidDropEvent, DockviewWillDropEvent, WillShowOverlayLocationEvent } from './dockviewGroupPanelModel';
10
11
  import { DockviewGroupPanel } from './dockviewGroupPanel';
@@ -156,6 +157,7 @@ export declare class DockviewComponent extends BaseGrid<DockviewGroupPanel> impl
156
157
  get options(): DockviewComponentOptions;
157
158
  get activePanel(): IDockviewPanel | undefined;
158
159
  get renderer(): DockviewPanelRenderer;
160
+ get api(): DockviewApi;
159
161
  constructor(options: DockviewComponentOptions);
160
162
  addPopoutGroup(itemToPopout: DockviewPanel | DockviewGroupPanel, options?: {
161
163
  skipRemoveGroup?: boolean;
@@ -141,7 +141,10 @@ export class DockviewComponent extends BaseGrid {
141
141
  }
142
142
  get renderer() {
143
143
  var _a;
144
- return (_a = this.options.defaultRenderer) !== null && _a !== void 0 ? _a : 'onlyWhenVisibile';
144
+ return (_a = this.options.defaultRenderer) !== null && _a !== void 0 ? _a : 'onlyWhenVisible';
145
+ }
146
+ get api() {
147
+ return this._api;
145
148
  }
146
149
  constructor(options) {
147
150
  var _a, _b;
@@ -276,6 +279,10 @@ export class DockviewComponent extends BaseGrid {
276
279
  }
277
280
  this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {
278
281
  kind: 'edge',
282
+ panel: undefined,
283
+ api: this._api,
284
+ group: undefined,
285
+ getData: getPanelData,
279
286
  }));
280
287
  }), this._rootDropTarget.onDrop((event) => {
281
288
  var _a;
@@ -118,14 +118,22 @@ export type DockviewGroupLocation = {
118
118
  };
119
119
  export declare class WillShowOverlayLocationEvent implements IDockviewEvent {
120
120
  private readonly event;
121
- private _kind;
121
+ private readonly options;
122
122
  get kind(): DockviewGroupDropLocation;
123
123
  get nativeEvent(): DragEvent;
124
124
  get position(): Position;
125
125
  get defaultPrevented(): boolean;
126
+ get panel(): IDockviewPanel | undefined;
127
+ get api(): DockviewApi;
128
+ get group(): DockviewGroupPanel | undefined;
126
129
  preventDefault(): void;
130
+ getData(): PanelTransfer | undefined;
127
131
  constructor(event: WillShowOverlayEvent, options: {
128
132
  kind: DockviewGroupDropLocation;
133
+ panel: IDockviewPanel | undefined;
134
+ api: DockviewApi;
135
+ group: DockviewGroupPanel | undefined;
136
+ getData: () => PanelTransfer | undefined;
129
137
  });
130
138
  }
131
139
  export declare class DockviewGroupPanelModel extends CompositeDisposable implements IDockviewGroupPanelModel {
@@ -40,7 +40,7 @@ export class DockviewWillDropEvent extends DockviewDidDropEvent {
40
40
  }
41
41
  export class WillShowOverlayLocationEvent {
42
42
  get kind() {
43
- return this._kind;
43
+ return this.options.kind;
44
44
  }
45
45
  get nativeEvent() {
46
46
  return this.event.nativeEvent;
@@ -51,12 +51,24 @@ export class WillShowOverlayLocationEvent {
51
51
  get defaultPrevented() {
52
52
  return this.event.defaultPrevented;
53
53
  }
54
+ get panel() {
55
+ return this.options.panel;
56
+ }
57
+ get api() {
58
+ return this.options.api;
59
+ }
60
+ get group() {
61
+ return this.options.group;
62
+ }
54
63
  preventDefault() {
55
64
  this.event.preventDefault();
56
65
  }
66
+ getData() {
67
+ return this.options.getData();
68
+ }
57
69
  constructor(event, options) {
58
70
  this.event = event;
59
- this._kind = options.kind;
71
+ this.options = options;
60
72
  }
61
73
  }
62
74
  export class DockviewGroupPanelModel extends CompositeDisposable {
@@ -195,6 +207,10 @@ export class DockviewGroupPanelModel extends CompositeDisposable {
195
207
  }), this.contentContainer.dropTarget.onWillShowOverlay((event) => {
196
208
  this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {
197
209
  kind: 'content',
210
+ panel: this.activePanel,
211
+ api: this._api,
212
+ group: this.groupPanel,
213
+ getData: getPanelData,
198
214
  }));
199
215
  }), this._onMove, this._onDidChange, this._onDidDrop, this._onWillDrop, this._onDidAddPanel, this._onDidRemovePanel, this._onDidActivePanelChange);
200
216
  }
@@ -1,7 +1,7 @@
1
1
  import { Droptarget } from './dnd/droptarget';
2
2
  import { CompositeDisposable } from './lifecycle';
3
3
  import { IDockviewPanel } from './dockview/dockviewPanel';
4
- export type DockviewPanelRenderer = 'onlyWhenVisibile' | 'always';
4
+ export type DockviewPanelRenderer = 'onlyWhenVisible' | 'always';
5
5
  export interface IRenderable {
6
6
  readonly element: HTMLElement;
7
7
  readonly dropTarget: Droptarget;
@@ -737,19 +737,19 @@
737
737
  outline-offset: -1px;
738
738
  z-index: 5;
739
739
  }
740
- .tab.dv-tab-dragging .tab-action {
740
+ .tab.dv-tab-dragging .dv-default-tab-action {
741
741
  background-color: var(--dv-activegroup-visiblepanel-tab-color);
742
742
  }
743
- .tab.active-tab > .default-tab .tab-action {
743
+ .tab.active-tab .dv-default-tab .dv-default-tab-action {
744
744
  visibility: visible;
745
745
  }
746
- .tab.inactive-tab > .default-tab .tab-action {
746
+ .tab.inactive-tab .dv-default-tab .dv-default-tab-action {
747
747
  visibility: hidden;
748
748
  }
749
- .tab.inactive-tab > .default-tab:hover .tab-action {
749
+ .tab.inactive-tab .dv-default-tab:hover .dv-default-tab-action {
750
750
  visibility: visible;
751
751
  }
752
- .tab .default-tab {
752
+ .tab .dv-default-tab {
753
753
  position: relative;
754
754
  height: 100%;
755
755
  display: flex;
@@ -759,28 +759,18 @@
759
759
  white-space: nowrap;
760
760
  text-overflow: elipsis;
761
761
  }
762
- .tab .default-tab .tab-content {
762
+ .tab .dv-default-tab .dv-default-tab-content {
763
763
  padding: 0px 8px;
764
764
  flex-grow: 1;
765
765
  }
766
- .tab .default-tab .action-container {
767
- text-align: right;
768
- display: flex;
769
- }
770
- .tab .default-tab .action-container .tab-list {
771
- display: flex;
772
- padding: 0px;
773
- margin: 0px;
774
- justify-content: flex-end;
775
- }
776
- .tab .default-tab .action-container .tab-list .tab-action {
766
+ .tab .dv-default-tab .dv-default-tab-action {
777
767
  padding: 4px;
778
768
  display: flex;
779
769
  align-items: center;
780
770
  justify-content: center;
781
771
  box-sizing: border-box;
782
772
  }
783
- .tab .default-tab .action-container .tab-list .tab-action:hover {
773
+ .tab .dv-default-tab .dv-default-tab-action:hover {
784
774
  border-radius: 2px;
785
775
  background-color: var(--dv-icon-hover-background-color);
786
776
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dockview-core",
3
- "version": "1.10.2",
3
+ "version": "1.12.0",
4
4
  "description": "Zero dependency layout manager supporting tabs, grids and splitviews with ReactJS support",
5
5
  "keywords": [
6
6
  "splitview",