dockview-core 6.6.0 → 7.0.2

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 (153) hide show
  1. package/README.md +8 -1
  2. package/dist/cjs/api/component.api.d.ts +42 -21
  3. package/dist/cjs/api/component.api.js +111 -20
  4. package/dist/cjs/api/dockviewGroupPanelApi.d.ts +23 -8
  5. package/dist/cjs/api/dockviewGroupPanelApi.js +23 -0
  6. package/dist/cjs/api/dockviewPanelApi.d.ts +4 -3
  7. package/dist/cjs/api/dockviewPanelApi.js +8 -0
  8. package/dist/cjs/dnd/droptarget.d.ts +8 -0
  9. package/dist/cjs/dnd/droptarget.js +28 -0
  10. package/dist/cjs/dockview/accessibilityMessages.d.ts +32 -0
  11. package/dist/cjs/dockview/accessibilityMessages.js +51 -0
  12. package/dist/cjs/dockview/allModules.d.ts +8 -0
  13. package/dist/cjs/dockview/allModules.js +25 -0
  14. package/dist/cjs/dockview/components/panel/content.d.ts +2 -0
  15. package/dist/cjs/dockview/components/panel/content.js +35 -4
  16. package/dist/cjs/dockview/components/tab/tab.js +33 -5
  17. package/dist/cjs/dockview/components/titlebar/floatingTitleBar.d.ts +35 -0
  18. package/dist/cjs/dockview/components/titlebar/floatingTitleBar.js +95 -0
  19. package/dist/cjs/dockview/components/titlebar/groupDragSource.d.ts +52 -0
  20. package/dist/cjs/dockview/components/titlebar/groupDragSource.js +218 -0
  21. package/dist/cjs/dockview/components/titlebar/tabGroupIndicator.d.ts +2 -1
  22. package/dist/cjs/dockview/components/titlebar/tabGroupIndicator.js +31 -24
  23. package/dist/cjs/dockview/components/titlebar/tabGroups.js +1 -0
  24. package/dist/cjs/dockview/components/titlebar/tabs.d.ts +12 -0
  25. package/dist/cjs/dockview/components/titlebar/tabs.js +105 -2
  26. package/dist/cjs/dockview/components/titlebar/tabsContainer.d.ts +4 -0
  27. package/dist/cjs/dockview/components/titlebar/tabsContainer.js +13 -3
  28. package/dist/cjs/dockview/components/titlebar/voidContainer.d.ts +1 -4
  29. package/dist/cjs/dockview/components/titlebar/voidContainer.js +31 -155
  30. package/dist/cjs/dockview/dockviewComponent.d.ts +299 -44
  31. package/dist/cjs/dockview/dockviewComponent.js +1787 -993
  32. package/dist/cjs/dockview/dockviewFloatingGroupPanel.d.ts +33 -2
  33. package/dist/cjs/dockview/dockviewFloatingGroupPanel.js +39 -3
  34. package/dist/cjs/dockview/dockviewGroupPanel.d.ts +0 -1
  35. package/dist/cjs/dockview/dockviewGroupPanelModel.d.ts +36 -14
  36. package/dist/cjs/dockview/dockviewGroupPanelModel.js +133 -101
  37. package/dist/cjs/dockview/dockviewPanel.d.ts +2 -2
  38. package/dist/cjs/dockview/edgeGroupService.d.ts +38 -0
  39. package/dist/cjs/dockview/edgeGroupService.js +128 -0
  40. package/dist/cjs/dockview/floatingGroupService.d.ts +37 -0
  41. package/dist/cjs/dockview/floatingGroupService.js +231 -0
  42. package/dist/cjs/dockview/headerActionsService.d.ts +32 -0
  43. package/dist/cjs/dockview/headerActionsService.js +149 -0
  44. package/dist/cjs/dockview/liveRegionService.d.ts +53 -0
  45. package/dist/cjs/dockview/liveRegionService.js +185 -0
  46. package/dist/cjs/dockview/moduleContracts.d.ts +119 -0
  47. package/dist/cjs/dockview/moduleContracts.js +2 -0
  48. package/dist/cjs/dockview/modules.d.ts +110 -0
  49. package/dist/cjs/dockview/modules.js +304 -0
  50. package/dist/cjs/dockview/options.d.ts +159 -6
  51. package/dist/cjs/dockview/options.js +8 -1
  52. package/dist/cjs/dockview/popoutWindowService.d.ts +95 -0
  53. package/dist/cjs/dockview/popoutWindowService.js +261 -0
  54. package/dist/cjs/dockview/rootDropTargetService.d.ts +35 -0
  55. package/dist/cjs/dockview/rootDropTargetService.js +87 -0
  56. package/dist/cjs/dockview/watermarkService.d.ts +30 -0
  57. package/dist/cjs/dockview/watermarkService.js +61 -0
  58. package/dist/cjs/gridview/baseComponentGridview.d.ts +1 -1
  59. package/dist/cjs/gridview/baseComponentGridview.js +3 -2
  60. package/dist/cjs/gridview/gridviewComponent.d.ts +3 -3
  61. package/dist/cjs/gridview/gridviewPanel.d.ts +1 -1
  62. package/dist/cjs/index.d.ts +11 -4
  63. package/dist/cjs/index.js +14 -1
  64. package/dist/cjs/overlay/overlay.d.ts +43 -1
  65. package/dist/cjs/overlay/overlay.js +57 -8
  66. package/dist/cjs/paneview/draggablePaneviewPanel.d.ts +2 -2
  67. package/dist/cjs/paneview/draggablePaneviewPanel.js +4 -4
  68. package/dist/cjs/paneview/paneviewComponent.d.ts +3 -3
  69. package/dist/cjs/paneview/paneviewComponent.js +5 -5
  70. package/dist/dockview-core.js +3199 -1251
  71. package/dist/dockview-core.min.js +2 -2
  72. package/dist/dockview-core.min.js.map +1 -1
  73. package/dist/dockview-core.min.noStyle.js +2 -2
  74. package/dist/dockview-core.min.noStyle.js.map +1 -1
  75. package/dist/dockview-core.noStyle.js +3198 -1250
  76. package/dist/esm/api/component.api.d.ts +42 -21
  77. package/dist/esm/api/component.api.js +63 -18
  78. package/dist/esm/api/dockviewGroupPanelApi.d.ts +23 -8
  79. package/dist/esm/api/dockviewGroupPanelApi.js +19 -0
  80. package/dist/esm/api/dockviewPanelApi.d.ts +4 -3
  81. package/dist/esm/api/dockviewPanelApi.js +7 -0
  82. package/dist/esm/dnd/droptarget.d.ts +8 -0
  83. package/dist/esm/dnd/droptarget.js +28 -0
  84. package/dist/esm/dockview/accessibilityMessages.d.ts +32 -0
  85. package/dist/esm/dockview/accessibilityMessages.js +30 -0
  86. package/dist/esm/dockview/allModules.d.ts +8 -0
  87. package/dist/esm/dockview/allModules.js +22 -0
  88. package/dist/esm/dockview/components/panel/content.d.ts +2 -0
  89. package/dist/esm/dockview/components/panel/content.js +36 -5
  90. package/dist/esm/dockview/components/tab/tab.js +33 -5
  91. package/dist/esm/dockview/components/titlebar/floatingTitleBar.d.ts +35 -0
  92. package/dist/esm/dockview/components/titlebar/floatingTitleBar.js +65 -0
  93. package/dist/esm/dockview/components/titlebar/groupDragSource.d.ts +52 -0
  94. package/dist/esm/dockview/components/titlebar/groupDragSource.js +178 -0
  95. package/dist/esm/dockview/components/titlebar/tabGroupIndicator.d.ts +2 -1
  96. package/dist/esm/dockview/components/titlebar/tabGroupIndicator.js +31 -24
  97. package/dist/esm/dockview/components/titlebar/tabGroups.js +1 -0
  98. package/dist/esm/dockview/components/titlebar/tabs.d.ts +12 -0
  99. package/dist/esm/dockview/components/titlebar/tabs.js +102 -2
  100. package/dist/esm/dockview/components/titlebar/tabsContainer.d.ts +4 -0
  101. package/dist/esm/dockview/components/titlebar/tabsContainer.js +8 -2
  102. package/dist/esm/dockview/components/titlebar/voidContainer.d.ts +1 -4
  103. package/dist/esm/dockview/components/titlebar/voidContainer.js +33 -145
  104. package/dist/esm/dockview/dockviewComponent.d.ts +299 -44
  105. package/dist/esm/dockview/dockviewComponent.js +1421 -717
  106. package/dist/esm/dockview/dockviewFloatingGroupPanel.d.ts +33 -2
  107. package/dist/esm/dockview/dockviewFloatingGroupPanel.js +35 -3
  108. package/dist/esm/dockview/dockviewGroupPanel.d.ts +0 -1
  109. package/dist/esm/dockview/dockviewGroupPanelModel.d.ts +36 -14
  110. package/dist/esm/dockview/dockviewGroupPanelModel.js +109 -93
  111. package/dist/esm/dockview/dockviewPanel.d.ts +2 -2
  112. package/dist/esm/dockview/edgeGroupService.d.ts +38 -0
  113. package/dist/esm/dockview/edgeGroupService.js +63 -0
  114. package/dist/esm/dockview/floatingGroupService.d.ts +37 -0
  115. package/dist/esm/dockview/floatingGroupService.js +150 -0
  116. package/dist/esm/dockview/headerActionsService.d.ts +32 -0
  117. package/dist/esm/dockview/headerActionsService.js +86 -0
  118. package/dist/esm/dockview/liveRegionService.d.ts +53 -0
  119. package/dist/esm/dockview/liveRegionService.js +159 -0
  120. package/dist/esm/dockview/moduleContracts.d.ts +119 -0
  121. package/dist/esm/dockview/moduleContracts.js +1 -0
  122. package/dist/esm/dockview/modules.d.ts +110 -0
  123. package/dist/esm/dockview/modules.js +170 -0
  124. package/dist/esm/dockview/options.d.ts +159 -6
  125. package/dist/esm/dockview/options.js +8 -1
  126. package/dist/esm/dockview/popoutWindowService.d.ts +95 -0
  127. package/dist/esm/dockview/popoutWindowService.js +175 -0
  128. package/dist/esm/dockview/rootDropTargetService.d.ts +35 -0
  129. package/dist/esm/dockview/rootDropTargetService.js +82 -0
  130. package/dist/esm/dockview/watermarkService.d.ts +30 -0
  131. package/dist/esm/dockview/watermarkService.js +56 -0
  132. package/dist/esm/gridview/baseComponentGridview.d.ts +1 -1
  133. package/dist/esm/gridview/baseComponentGridview.js +2 -2
  134. package/dist/esm/gridview/gridviewComponent.d.ts +3 -3
  135. package/dist/esm/gridview/gridviewPanel.d.ts +1 -1
  136. package/dist/esm/index.d.ts +11 -4
  137. package/dist/esm/index.js +4 -0
  138. package/dist/esm/overlay/overlay.d.ts +43 -1
  139. package/dist/esm/overlay/overlay.js +53 -8
  140. package/dist/esm/paneview/draggablePaneviewPanel.d.ts +2 -2
  141. package/dist/esm/paneview/draggablePaneviewPanel.js +4 -4
  142. package/dist/esm/paneview/paneviewComponent.d.ts +3 -3
  143. package/dist/esm/paneview/paneviewComponent.js +5 -5
  144. package/dist/package/main.cjs.js +3234 -1286
  145. package/dist/package/main.cjs.min.js +2 -2
  146. package/dist/package/main.esm.min.mjs +2 -2
  147. package/dist/package/main.esm.mjs +3189 -1252
  148. package/dist/styles/dockview.css +275 -13
  149. package/package.json +10 -1
  150. package/dist/cjs/dockview/contextMenu.d.ts +0 -10
  151. package/dist/cjs/dockview/contextMenu.js +0 -313
  152. package/dist/esm/dockview/contextMenu.d.ts +0 -10
  153. package/dist/esm/dockview/contextMenu.js +0 -228
@@ -0,0 +1,261 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __read = (this && this.__read) || function (o, n) {
14
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
15
+ if (!m) return o;
16
+ var i = m.call(o), r, ar = [], e;
17
+ try {
18
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
19
+ }
20
+ catch (error) { e = { error: error }; }
21
+ finally {
22
+ try {
23
+ if (r && !r.done && (m = i["return"])) m.call(i);
24
+ }
25
+ finally { if (e) throw e.error; }
26
+ }
27
+ return ar;
28
+ };
29
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
30
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
31
+ if (ar || !(i in from)) {
32
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
33
+ ar[i] = from[i];
34
+ }
35
+ }
36
+ return to.concat(ar || Array.prototype.slice.call(from));
37
+ };
38
+ var __values = (this && this.__values) || function(o) {
39
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
40
+ if (m) return m.call(o);
41
+ if (o && typeof o.length === "number") return {
42
+ next: function () {
43
+ if (o && i >= o.length) o = void 0;
44
+ return { value: o && o[i++], done: !o };
45
+ }
46
+ };
47
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
48
+ };
49
+ Object.defineProperty(exports, "__esModule", { value: true });
50
+ exports.PopoutWindowModule = exports.PopoutWindowService = void 0;
51
+ var events_1 = require("../events");
52
+ var array_1 = require("../array");
53
+ var modules_1 = require("./modules");
54
+ var PopoutWindowService = /** @class */ (function () {
55
+ function PopoutWindowService(host) {
56
+ this._entries = [];
57
+ this._popupServices = new Map();
58
+ this._restorationCleanups = new Set();
59
+ this._restorationPromise = Promise.resolve();
60
+ this._onDidRemove = new events_1.Emitter();
61
+ this.onDidRemove = this._onDidRemove.event;
62
+ this._host = host;
63
+ }
64
+ Object.defineProperty(PopoutWindowService.prototype, "entries", {
65
+ get: function () {
66
+ return this._entries;
67
+ },
68
+ enumerable: false,
69
+ configurable: true
70
+ });
71
+ Object.defineProperty(PopoutWindowService.prototype, "restorationPromise", {
72
+ get: function () {
73
+ return this._restorationPromise;
74
+ },
75
+ enumerable: false,
76
+ configurable: true
77
+ });
78
+ PopoutWindowService.prototype.add = function (entry) {
79
+ this._entries.push(entry);
80
+ };
81
+ PopoutWindowService.prototype.remove = function (entry) {
82
+ // Fire only on a genuine removal, and not while the host component is
83
+ // tearing down (consumers don't want popout-removed events during
84
+ // dispose).
85
+ if ((0, array_1.remove)(this._entries, entry) && !this._host.isDisposed) {
86
+ this._onDidRemove.fire(entry);
87
+ }
88
+ };
89
+ PopoutWindowService.prototype.findByGroup = function (group) {
90
+ // A popout window may host several groups in a nested gridview, so
91
+ // match by membership (DOM containment) rather than only the anchor.
92
+ return this._entries.find(function (entry) {
93
+ return entry.popoutGroup === group ||
94
+ entry.gridview.element.contains(group.element);
95
+ });
96
+ };
97
+ PopoutWindowService.prototype.findReferenceGroupId = function (group) {
98
+ var _a;
99
+ return (_a = this._entries.find(function (entry) { return entry.popoutGroup === group; })) === null || _a === void 0 ? void 0 : _a.referenceGroup;
100
+ };
101
+ /**
102
+ * The popout window's innerWidth/innerHeight are often 0/stale until it has
103
+ * painted, and the nested gridview lays its children out to the size passed
104
+ * to layout() (a plain group fills via CSS instead). To stop content
105
+ * rendering into a zero box until a manual resize — and to avoid the race a
106
+ * fixed number of animation frames had — observe the gridview element with
107
+ * a ResizeObserver created in the POPOUT window's OWN realm. A parent-realm
108
+ * observer fires unreliably across the window boundary; a same-realm one
109
+ * fires reliably, including the initial observation once the window is
110
+ * sized.
111
+ *
112
+ * @returns a disposable that disconnects the observer, or `undefined` when
113
+ * the popout realm has no ResizeObserver (e.g. jsdom).
114
+ */
115
+ PopoutWindowService.prototype.observeGridviewSize = function (popoutWindow, gridview, overlayRenderContainer) {
116
+ var _this = this;
117
+ var _a;
118
+ var PopoutResizeObserver = (_a = popoutWindow.window) === null || _a === void 0 ? void 0 : _a.ResizeObserver;
119
+ if (!PopoutResizeObserver) {
120
+ return undefined;
121
+ }
122
+ var lastWidth = -1;
123
+ var lastHeight = -1;
124
+ var relayout = function () {
125
+ var win = popoutWindow.window;
126
+ if (_this._host.isDisposed || !win || win.closed) {
127
+ return;
128
+ }
129
+ var width = Math.round(gridview.element.clientWidth);
130
+ var height = Math.round(gridview.element.clientHeight);
131
+ if (width === lastWidth && height === lastHeight) {
132
+ return;
133
+ }
134
+ lastWidth = width;
135
+ lastHeight = height;
136
+ if (width > 0 && height > 0) {
137
+ gridview.layout(width, height);
138
+ }
139
+ overlayRenderContainer.updateAllPositions();
140
+ };
141
+ var observer = new PopoutResizeObserver(function () {
142
+ var _a;
143
+ // Defer out of the observer callback into the popout's own frame to
144
+ // size against the settled layout and to avoid resize-loop warnings.
145
+ var raf = (_a = popoutWindow.window) === null || _a === void 0 ? void 0 : _a.requestAnimationFrame;
146
+ if (raf) {
147
+ raf.call(popoutWindow.window, relayout);
148
+ }
149
+ else {
150
+ relayout();
151
+ }
152
+ });
153
+ observer.observe(gridview.element);
154
+ return { dispose: function () { return observer.disconnect(); } };
155
+ };
156
+ PopoutWindowService.prototype.getPopupService = function (groupId) {
157
+ return this._popupServices.get(groupId);
158
+ };
159
+ PopoutWindowService.prototype.setPopupService = function (groupId, service) {
160
+ this._popupServices.set(groupId, service);
161
+ };
162
+ PopoutWindowService.prototype.deletePopupService = function (groupId) {
163
+ this._popupServices.delete(groupId);
164
+ };
165
+ PopoutWindowService.prototype.scheduleRestoration = function (delayMs, work, onCancel) {
166
+ var _this = this;
167
+ return new Promise(function (resolve) {
168
+ var cleanup = function () {
169
+ _this._restorationCleanups.delete(cleanup);
170
+ clearTimeout(handle);
171
+ onCancel === null || onCancel === void 0 ? void 0 : onCancel();
172
+ resolve();
173
+ };
174
+ var handle = setTimeout(function () {
175
+ _this._restorationCleanups.delete(cleanup);
176
+ // Guard against the component being disposed before this
177
+ // timer fires. Under React StrictMode the component is
178
+ // mounted -> disposed -> remounted, and without this guard
179
+ // the first instance's queued restoration would open a
180
+ // second popout window. See issue #851.
181
+ if (_this._host.isDisposed) {
182
+ resolve();
183
+ return;
184
+ }
185
+ work();
186
+ resolve();
187
+ }, delayMs);
188
+ _this._restorationCleanups.add(cleanup);
189
+ });
190
+ };
191
+ PopoutWindowService.prototype.finishRestoration = function (promises) {
192
+ this._restorationPromise = Promise.all(promises).then(function () { return void 0; });
193
+ };
194
+ PopoutWindowService.prototype.cancelPendingRestorations = function () {
195
+ var e_1, _a;
196
+ try {
197
+ for (var _b = __values(__spreadArray([], __read(this._restorationCleanups), false)), _c = _b.next(); !_c.done; _c = _b.next()) {
198
+ var cleanup = _c.value;
199
+ cleanup();
200
+ }
201
+ }
202
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
203
+ finally {
204
+ try {
205
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
206
+ }
207
+ finally { if (e_1) throw e_1.error; }
208
+ }
209
+ this._restorationCleanups.clear();
210
+ };
211
+ PopoutWindowService.prototype.serialize = function () {
212
+ return this._entries.map(function (entry) {
213
+ var grid = entry.gridview.serialize();
214
+ var root = grid.root;
215
+ var url = entry.popoutGroup.api.location.type === 'popout'
216
+ ? entry.popoutGroup.api.location.popoutUrl
217
+ : undefined;
218
+ var base = {
219
+ gridReferenceGroup: entry.referenceGroup,
220
+ position: entry.window.dimensions(),
221
+ url: url,
222
+ };
223
+ // Single-group window keeps the legacy `data` shape so layouts
224
+ // round-trip byte-stably and older readers keep working.
225
+ if (root.type === 'branch' &&
226
+ root.data.length === 1 &&
227
+ root.data[0].type === 'leaf') {
228
+ return __assign(__assign({}, base), { data: root.data[0].data });
229
+ }
230
+ return __assign(__assign({}, base), { grid: grid });
231
+ });
232
+ };
233
+ PopoutWindowService.prototype.disposeAll = function () {
234
+ var e_2, _a;
235
+ try {
236
+ for (var _b = __values(__spreadArray([], __read(this._entries), false)), _c = _b.next(); !_c.done; _c = _b.next()) {
237
+ var entry = _c.value;
238
+ entry.disposable.dispose();
239
+ }
240
+ }
241
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
242
+ finally {
243
+ try {
244
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
245
+ }
246
+ finally { if (e_2) throw e_2.error; }
247
+ }
248
+ };
249
+ PopoutWindowService.prototype.dispose = function () {
250
+ this.cancelPendingRestorations();
251
+ this.disposeAll();
252
+ this._onDidRemove.dispose();
253
+ };
254
+ return PopoutWindowService;
255
+ }());
256
+ exports.PopoutWindowService = PopoutWindowService;
257
+ exports.PopoutWindowModule = (0, modules_1.defineModule)({
258
+ name: 'PopoutWindow',
259
+ serviceKey: 'popoutWindowService',
260
+ create: function (host) { return new PopoutWindowService(host); },
261
+ });
@@ -0,0 +1,35 @@
1
+ import { IDisposable } from '../lifecycle';
2
+ import { Event } from '../events';
3
+ import { DroptargetEvent, DropTargetTargetModel, Position, WillShowOverlayEvent } from '../dnd/droptarget';
4
+ import { DockviewComponentOptions } from './options';
5
+ export interface IRootDropTargetHost {
6
+ readonly id: string;
7
+ readonly element: HTMLElement;
8
+ readonly options: DockviewComponentOptions;
9
+ isGridEmpty(): boolean;
10
+ rootDropTargetOverrideTarget(): DropTargetTargetModel | undefined;
11
+ /**
12
+ * Build, fire, and return the verdict for an unhandled-drag-over event.
13
+ * Implemented on the component side so the service stays free of
14
+ * circular imports with the event class declared in dockviewComponent.
15
+ */
16
+ dispatchUnhandledDragOver(nativeEvent: DragEvent | PointerEvent, position: Position): boolean;
17
+ }
18
+ export interface IRootDropTargetService extends IDisposable {
19
+ /** Merged stream from both DnD backends. */
20
+ readonly onWillShowOverlay: Event<WillShowOverlayEvent>;
21
+ /** Merged stream from both DnD backends. */
22
+ readonly onDrop: Event<DroptargetEvent>;
23
+ /** Apply changed options (dndEdges). */
24
+ setOptions(options: Partial<DockviewComponentOptions>): void;
25
+ }
26
+ export declare class RootDropTargetService implements IRootDropTargetService {
27
+ private readonly _html5Target;
28
+ private readonly _pointerTarget;
29
+ readonly onWillShowOverlay: Event<WillShowOverlayEvent>;
30
+ readonly onDrop: Event<DroptargetEvent>;
31
+ constructor(host: IRootDropTargetHost);
32
+ setOptions(options: Partial<DockviewComponentOptions>): void;
33
+ dispose(): void;
34
+ }
35
+ export declare const RootDropTargetModule: import("./modules").DockviewModule<IRootDropTargetHost>;
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RootDropTargetModule = exports.RootDropTargetService = void 0;
4
+ var events_1 = require("../events");
5
+ var backend_1 = require("../dnd/backend");
6
+ var dataTransfer_1 = require("../dnd/dataTransfer");
7
+ var modules_1 = require("./modules");
8
+ var DEFAULT_ROOT_OVERLAY_MODEL = {
9
+ activationSize: { type: 'pixels', value: 10 },
10
+ size: { type: 'pixels', value: 20 },
11
+ };
12
+ var RootDropTargetService = /** @class */ (function () {
13
+ function RootDropTargetService(host) {
14
+ var canDisplayOverlay = function (event, position) {
15
+ var data = (0, dataTransfer_1.getPanelData)();
16
+ if (data) {
17
+ if (data.viewId !== host.id) {
18
+ return false;
19
+ }
20
+ if (position === 'center') {
21
+ // center drop target only allowed if no panels in primary
22
+ // grid; floating panels are allowed
23
+ return host.isGridEmpty();
24
+ }
25
+ return true;
26
+ }
27
+ if (position === 'center' && !host.isGridEmpty()) {
28
+ // for external events only show the four-corner drag overlays,
29
+ // disable center so external drag events can fall through to
30
+ // the group and panel drop target handlers
31
+ return false;
32
+ }
33
+ return host.dispatchUnhandledDragOver(event, position);
34
+ };
35
+ var overlayModel = typeof host.options.dndEdges === 'object' &&
36
+ host.options.dndEdges !== null
37
+ ? host.options.dndEdges
38
+ : DEFAULT_ROOT_OVERLAY_MODEL;
39
+ this._html5Target = backend_1.html5Backend.createDropTarget(host.element, {
40
+ className: 'dv-drop-target-edge',
41
+ canDisplayOverlay: canDisplayOverlay,
42
+ acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],
43
+ overlayModel: overlayModel,
44
+ getOverrideTarget: function () { return host.rootDropTargetOverrideTarget(); },
45
+ });
46
+ this._pointerTarget = backend_1.pointerBackend.createDropTarget(host.element, {
47
+ className: 'dv-drop-target-edge',
48
+ canDisplayOverlay: canDisplayOverlay,
49
+ acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],
50
+ overlayModel: overlayModel,
51
+ getOverrideTarget: function () { return host.rootDropTargetOverrideTarget(); },
52
+ });
53
+ this.onWillShowOverlay = events_1.Event.any(this._html5Target.onWillShowOverlay, this._pointerTarget.onWillShowOverlay);
54
+ this.onDrop = events_1.Event.any(this._html5Target.onDrop, this._pointerTarget.onDrop);
55
+ // Apply initial-state options now that the targets exist; setOptions
56
+ // handles dndEdges (disable + overlay model) and late changes.
57
+ this.setOptions(host.options);
58
+ }
59
+ RootDropTargetService.prototype.setOptions = function (options) {
60
+ if ('dndEdges' in options) {
61
+ var disabled = typeof options.dndEdges === 'boolean' &&
62
+ options.dndEdges === false;
63
+ this._html5Target.disabled = disabled;
64
+ this._pointerTarget.disabled = disabled;
65
+ if (typeof options.dndEdges === 'object' &&
66
+ options.dndEdges !== null) {
67
+ this._html5Target.setOverlayModel(options.dndEdges);
68
+ this._pointerTarget.setOverlayModel(options.dndEdges);
69
+ }
70
+ else {
71
+ this._html5Target.setOverlayModel(DEFAULT_ROOT_OVERLAY_MODEL);
72
+ this._pointerTarget.setOverlayModel(DEFAULT_ROOT_OVERLAY_MODEL);
73
+ }
74
+ }
75
+ };
76
+ RootDropTargetService.prototype.dispose = function () {
77
+ this._html5Target.dispose();
78
+ this._pointerTarget.dispose();
79
+ };
80
+ return RootDropTargetService;
81
+ }());
82
+ exports.RootDropTargetService = RootDropTargetService;
83
+ exports.RootDropTargetModule = (0, modules_1.defineModule)({
84
+ name: 'RootDropTarget',
85
+ serviceKey: 'rootDropTargetService',
86
+ create: function (host) { return new RootDropTargetService(host); },
87
+ });
@@ -0,0 +1,30 @@
1
+ import { IDisposable } from '../lifecycle';
2
+ import { Event } from '../events';
3
+ import { IWatermarkRenderer } from './types';
4
+ import { DockviewApi } from '../api/component.api';
5
+ import { DockviewGroupPanel } from './dockviewGroupPanel';
6
+ export interface IWatermarkHost {
7
+ readonly api: DockviewApi;
8
+ readonly mountElement: HTMLElement;
9
+ createWatermarkComponent(): IWatermarkRenderer;
10
+ hasVisibleGridGroup(): boolean;
11
+ readonly onDidAdd: Event<DockviewGroupPanel>;
12
+ readonly onDidRemove: Event<DockviewGroupPanel>;
13
+ readonly onDidViewVisibilityChangeMicroTaskQueue: Event<unknown>;
14
+ }
15
+ export interface IWatermarkService extends IDisposable {
16
+ /** Mount or unmount the watermark based on current grid state. */
17
+ update(): void;
18
+ /** Tear down the current watermark and re-evaluate. Used when the watermark factory option changes. */
19
+ refresh(): void;
20
+ }
21
+ export declare class WatermarkService implements IWatermarkService {
22
+ private readonly _host;
23
+ private _watermark;
24
+ constructor(host: IWatermarkHost);
25
+ update(): void;
26
+ refresh(): void;
27
+ private _unmount;
28
+ dispose(): void;
29
+ }
30
+ export declare const WatermarkModule: import("./modules").DockviewModule<IWatermarkHost>;
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WatermarkModule = exports.WatermarkService = void 0;
4
+ var lifecycle_1 = require("../lifecycle");
5
+ var dom_1 = require("../dom");
6
+ var events_1 = require("../events");
7
+ var modules_1 = require("./modules");
8
+ var WatermarkService = /** @class */ (function () {
9
+ function WatermarkService(host) {
10
+ this._watermark = null;
11
+ this._host = host;
12
+ }
13
+ WatermarkService.prototype.update = function () {
14
+ if (this._host.hasVisibleGridGroup()) {
15
+ this._unmount();
16
+ return;
17
+ }
18
+ if (this._watermark) {
19
+ return;
20
+ }
21
+ this._watermark = this._host.createWatermarkComponent();
22
+ this._watermark.init({ containerApi: this._host.api });
23
+ var container = document.createElement('div');
24
+ container.className = 'dv-watermark-container';
25
+ (0, dom_1.addTestId)(container, 'watermark-component');
26
+ container.appendChild(this._watermark.element);
27
+ this._host.mountElement.appendChild(container);
28
+ };
29
+ WatermarkService.prototype.refresh = function () {
30
+ this._unmount();
31
+ this.update();
32
+ };
33
+ WatermarkService.prototype._unmount = function () {
34
+ var _a, _b;
35
+ if (!this._watermark) {
36
+ return;
37
+ }
38
+ this._watermark.element.parentElement.remove();
39
+ (_b = (_a = this._watermark).dispose) === null || _b === void 0 ? void 0 : _b.call(_a);
40
+ this._watermark = null;
41
+ };
42
+ WatermarkService.prototype.dispose = function () {
43
+ this._unmount();
44
+ };
45
+ return WatermarkService;
46
+ }());
47
+ exports.WatermarkService = WatermarkService;
48
+ exports.WatermarkModule = (0, modules_1.defineModule)({
49
+ name: 'Watermark',
50
+ serviceKey: 'watermarkService',
51
+ create: function (host) { return new WatermarkService(host); },
52
+ init: function (host, service) {
53
+ // Initial evaluation reflects the watermark state at construction time.
54
+ service.update();
55
+ return new lifecycle_1.CompositeDisposable(events_1.Event.any(host.onDidAdd, host.onDidRemove)(function () {
56
+ service.update();
57
+ }), host.onDidViewVisibilityChangeMicroTaskQueue(function () {
58
+ service.update();
59
+ }));
60
+ },
61
+ });
@@ -95,7 +95,7 @@ export declare abstract class BaseGrid<T extends IGridPanelView> extends Resizab
95
95
  isMaximizedGroup(panel: T): boolean;
96
96
  exitMaximizedGroup(): void;
97
97
  hasMaximizedGroup(): boolean;
98
- protected doAddGroup(group: T, location?: number[], size?: number): void;
98
+ protected doAddGroup(group: T, location?: number[], size?: number, gridview?: Gridview): void;
99
99
  protected doRemoveGroup(group: T, options?: {
100
100
  skipActive?: boolean;
101
101
  skipDispose?: boolean;
@@ -223,9 +223,10 @@ var BaseGrid = /** @class */ (function (_super) {
223
223
  BaseGrid.prototype.hasMaximizedGroup = function () {
224
224
  return this.gridview.hasMaximizedView();
225
225
  };
226
- BaseGrid.prototype.doAddGroup = function (group, location, size) {
226
+ BaseGrid.prototype.doAddGroup = function (group, location, size, gridview) {
227
227
  if (location === void 0) { location = [0]; }
228
- this.gridview.addView(group, size !== null && size !== void 0 ? size : splitview_1.Sizing.Distribute, location);
228
+ if (gridview === void 0) { gridview = this.gridview; }
229
+ gridview.addView(group, size !== null && size !== void 0 ? size : splitview_1.Sizing.Distribute, location);
229
230
  this._onDidAdd.fire(group);
230
231
  };
231
232
  BaseGrid.prototype.doRemoveGroup = function (group, options) {
@@ -11,7 +11,7 @@ export interface SerializedGridviewComponent {
11
11
  grid: SerializedGridview<GridPanelViewState>;
12
12
  activePanel?: string;
13
13
  }
14
- export interface AddComponentOptions<T extends object = Parameters> extends BaseComponentOptions<T> {
14
+ export interface AddGridviewComponentOptions<T extends object = Parameters> extends BaseComponentOptions<T> {
15
15
  minimumWidth?: number;
16
16
  maximumWidth?: number;
17
17
  minimumHeight?: number;
@@ -29,7 +29,7 @@ export interface IGridviewComponent extends IBaseGrid<GridviewPanel> {
29
29
  readonly orientation: Orientation;
30
30
  readonly onDidLayoutFromJSON: Event<void>;
31
31
  updateOptions(options: Partial<GridviewComponentOptions>): void;
32
- addPanel<T extends object = Parameters>(options: AddComponentOptions<T>): IGridviewPanel;
32
+ addPanel<T extends object = Parameters>(options: AddGridviewComponentOptions<T>): IGridviewPanel;
33
33
  removePanel(panel: IGridviewPanel, sizing?: Sizing): void;
34
34
  focus(): void;
35
35
  fromJSON(serializedGridview: SerializedGridviewComponent): void;
@@ -80,7 +80,7 @@ export declare class GridviewComponent extends BaseGrid<GridviewPanel> implement
80
80
  reference: string;
81
81
  size?: number;
82
82
  }): void;
83
- addPanel<T extends object = Parameters>(options: AddComponentOptions<T>): IGridviewPanel;
83
+ addPanel<T extends object = Parameters>(options: AddGridviewComponentOptions<T>): IGridviewPanel;
84
84
  private registerPanel;
85
85
  moveGroup(referenceGroup: IGridPanelComponentView, groupId: string, target: Position): void;
86
86
  removeGroup(group: GridviewPanel): void;
@@ -6,7 +6,7 @@ import { LayoutPriority } from '../splitview/splitview';
6
6
  import { Event } from '../events';
7
7
  import { IViewSize } from './gridview';
8
8
  import { BaseGrid, IGridPanelView } from './baseComponentGridview';
9
- export interface Contraints {
9
+ export interface Constraints {
10
10
  minimumWidth?: number;
11
11
  maximumWidth?: number;
12
12
  minimumHeight?: number;
@@ -13,11 +13,11 @@ export * from './paneview/paneview';
13
13
  export * from './gridview/gridview';
14
14
  export { GridviewComponentOptions, GridviewOptions, GridviewFrameworkOptions, PROPERTY_KEYS_GRIDVIEW, } from './gridview/options';
15
15
  export * from './gridview/baseComponentGridview';
16
- export { DraggablePaneviewPanel, PaneviewDidDropEvent as PaneviewDropEvent, } from './paneview/draggablePaneviewPanel';
16
+ export { DraggablePaneviewPanel, PaneviewDidDropEvent, } from './paneview/draggablePaneviewPanel';
17
17
  export * from './dockview/components/panel/content';
18
18
  export * from './dockview/components/tab/tab';
19
- export { DockviewGroupPanelModel, DockviewDidDropEvent, DockviewWillDropEvent, DockviewGroupChangeEvent, DockviewGroupLocation, } from './dockview/dockviewGroupPanelModel';
20
- export { DockviewWillShowOverlayLocationEvent, DockviewTabGroupChangeEvent, DockviewTabGroupCollapsedChangeEvent, DockviewTabGroupPanelChangeEvent, } from './dockview/events';
19
+ export { DockviewGroupPanelModel, DockviewDidDropEvent, DockviewWillDropEvent, DockviewGroupChangeEvent, DockviewGroupActivePanelChangeEvent, DockviewGroupLocation, } from './dockview/dockviewGroupPanelModel';
20
+ export { DockviewWillShowOverlayLocationEvent, DockviewTabGroupChangeEvent, DockviewTabGroupCollapsedChangeEvent, DockviewTabGroupPanelChangeEvent, DockviewGroupDropLocation, } from './dockview/events';
21
21
  export { TabDragEvent, GroupDragEvent, } from './dockview/components/titlebar/tabsContainer';
22
22
  export * from './dockview/types';
23
23
  export * from './dockview/dockviewGroupPanel';
@@ -39,6 +39,7 @@ export * from './gridview/gridviewPanel';
39
39
  export { SplitviewPanel, ISplitviewPanel } from './splitview/splitviewPanel';
40
40
  export * from './paneview/paneviewPanel';
41
41
  export * from './dockview/types';
42
+ export { Box, AnchorPosition, AnchoredBox } from './types';
42
43
  export { DockviewPanelRenderer } from './overlay/overlayRenderContainer';
43
44
  export { Position, positionToDirection, directionToPosition, MeasuredValue, DroptargetOverlayModel, } from './dnd/droptarget';
44
45
  export { FocusEvent, PanelDimensionChangeEvent, VisibilityEvent, ActiveEvent, PanelApi, } from './api/panelApi';
@@ -46,6 +47,12 @@ export { SizeEvent, GridviewPanelApi, GridConstraintChangeEvent, } from './api/g
46
47
  export { TitleEvent, RendererChangedEvent, DockviewPanelApi, DockviewPanelMoveParams, } from './api/dockviewPanelApi';
47
48
  export { PanelSizeEvent, PanelConstraintChangeEvent, SplitviewPanelApi, } from './api/splitviewPanelApi';
48
49
  export { ExpansionEvent, PaneviewPanelApi } from './api/paneviewPanelApi';
49
- export { DockviewGroupPanelApi, DockviewGroupPanelFloatingChangeEvent, DockviewGroupPanelCollapsedChangeEvent, DockviewGroupMoveParams, } from './api/dockviewGroupPanelApi';
50
+ export { DockviewGroupPanelApi, DockviewGroupPanelLocationChangeEvent, DockviewGroupPanelCollapsedChangeEvent, DockviewGroupMoveParams, } from './api/dockviewGroupPanelApi';
50
51
  export { CommonApi, SplitviewApi, PaneviewApi, GridviewApi, DockviewApi, DockviewGetTabGroupsOptions, } from './api/component.api';
51
52
  export { createDockview, createGridview, createPaneview, createSplitview, } from './api/entryPoints';
53
+ export { registerModules, getRegisteredModules, clearRegisteredModules, markDockviewPackageLoaded, isDockviewPackageLoaded, defineModule, DockviewModule, ServiceCollection, } from './dockview/modules';
54
+ export { IAccessibilityHost, IAccessibilityService, IAdvancedDnDHost, IAdvancedDnDService, IContextMenuHost, IContextMenuService, IKeyboardDockingService, ITabGroupChipsHost, ITabGroupChipsService, } from './dockview/moduleContracts';
55
+ export { resolveMessages } from './dockview/accessibilityMessages';
56
+ export { findRelativeZIndexParent } from './dom';
57
+ export { IDragGhostSpec } from './dnd/backend';
58
+ export { LiveRegionModule } from './dockview/liveRegionService';
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.createSplitview = exports.createPaneview = exports.createGridview = exports.createDockview = exports.DockviewApi = exports.GridviewApi = exports.PaneviewApi = exports.SplitviewApi = exports.directionToPosition = exports.positionToDirection = exports.SplitviewPanel = exports.PaneviewUnhandledDragOverEvent = exports.PROPERTY_KEYS_PANEVIEW = exports.DefaultDockviewDeserialzier = exports.DefaultTab = exports.resolveTabGroupAccent = exports.applyTabGroupAccent = exports.TabGroupColorPalette = exports.DEFAULT_TAB_GROUP_COLORS = exports.DockviewWillShowOverlayLocationEvent = exports.DockviewWillDropEvent = exports.DockviewDidDropEvent = exports.DockviewGroupPanelModel = exports.DraggablePaneviewPanel = exports.PROPERTY_KEYS_GRIDVIEW = exports.PROPERTY_KEYS_SPLITVIEW = exports.DockviewDisposable = exports.DockviewCompositeDisposable = exports.DockviewMutableDisposable = exports.DockviewEvent = exports.DockviewEmitter = exports.PanelTransfer = exports.PaneTransfer = exports.getPanelData = exports.getPaneData = void 0;
17
+ exports.LiveRegionModule = exports.findRelativeZIndexParent = exports.resolveMessages = exports.defineModule = exports.isDockviewPackageLoaded = exports.markDockviewPackageLoaded = exports.clearRegisteredModules = exports.getRegisteredModules = exports.registerModules = exports.createSplitview = exports.createPaneview = exports.createGridview = exports.createDockview = exports.DockviewApi = exports.GridviewApi = exports.PaneviewApi = exports.SplitviewApi = exports.directionToPosition = exports.positionToDirection = exports.SplitviewPanel = exports.PaneviewUnhandledDragOverEvent = exports.PROPERTY_KEYS_PANEVIEW = exports.DefaultDockviewDeserialzier = exports.DefaultTab = exports.resolveTabGroupAccent = exports.applyTabGroupAccent = exports.TabGroupColorPalette = exports.DEFAULT_TAB_GROUP_COLORS = exports.DockviewWillShowOverlayLocationEvent = exports.DockviewWillDropEvent = exports.DockviewDidDropEvent = exports.DockviewGroupPanelModel = exports.DraggablePaneviewPanel = exports.PROPERTY_KEYS_GRIDVIEW = exports.PROPERTY_KEYS_SPLITVIEW = exports.DockviewDisposable = exports.DockviewCompositeDisposable = exports.DockviewMutableDisposable = exports.DockviewEvent = exports.DockviewEmitter = exports.PanelTransfer = exports.PaneTransfer = exports.getPanelData = exports.getPaneData = void 0;
18
18
  var dataTransfer_1 = require("./dnd/dataTransfer");
19
19
  Object.defineProperty(exports, "getPaneData", { enumerable: true, get: function () { return dataTransfer_1.getPaneData; } });
20
20
  Object.defineProperty(exports, "getPanelData", { enumerable: true, get: function () { return dataTransfer_1.getPanelData; } });
@@ -90,3 +90,16 @@ Object.defineProperty(exports, "createDockview", { enumerable: true, get: functi
90
90
  Object.defineProperty(exports, "createGridview", { enumerable: true, get: function () { return entryPoints_1.createGridview; } });
91
91
  Object.defineProperty(exports, "createPaneview", { enumerable: true, get: function () { return entryPoints_1.createPaneview; } });
92
92
  Object.defineProperty(exports, "createSplitview", { enumerable: true, get: function () { return entryPoints_1.createSplitview; } });
93
+ var modules_1 = require("./dockview/modules");
94
+ Object.defineProperty(exports, "registerModules", { enumerable: true, get: function () { return modules_1.registerModules; } });
95
+ Object.defineProperty(exports, "getRegisteredModules", { enumerable: true, get: function () { return modules_1.getRegisteredModules; } });
96
+ Object.defineProperty(exports, "clearRegisteredModules", { enumerable: true, get: function () { return modules_1.clearRegisteredModules; } });
97
+ Object.defineProperty(exports, "markDockviewPackageLoaded", { enumerable: true, get: function () { return modules_1.markDockviewPackageLoaded; } });
98
+ Object.defineProperty(exports, "isDockviewPackageLoaded", { enumerable: true, get: function () { return modules_1.isDockviewPackageLoaded; } });
99
+ Object.defineProperty(exports, "defineModule", { enumerable: true, get: function () { return modules_1.defineModule; } });
100
+ var accessibilityMessages_1 = require("./dockview/accessibilityMessages");
101
+ Object.defineProperty(exports, "resolveMessages", { enumerable: true, get: function () { return accessibilityMessages_1.resolveMessages; } });
102
+ var dom_1 = require("./dom");
103
+ Object.defineProperty(exports, "findRelativeZIndexParent", { enumerable: true, get: function () { return dom_1.findRelativeZIndexParent; } });
104
+ var liveRegionService_1 = require("./dockview/liveRegionService");
105
+ Object.defineProperty(exports, "LiveRegionModule", { enumerable: true, get: function () { return liveRegionService_1.LiveRegionModule; } });