dockview-core 6.2.1 → 6.3.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.
- package/dist/cjs/api/dockviewGroupPanelApi.d.ts +10 -1
- package/dist/cjs/api/dockviewGroupPanelApi.js +16 -0
- package/dist/cjs/dnd/groupDragHandler.js +34 -12
- package/dist/cjs/dockview/components/titlebar/tabGroupIndicator.js +2 -2
- package/dist/cjs/dockview/components/titlebar/tabs.js +9 -2
- package/dist/cjs/dockview/components/titlebar/voidContainer.js +6 -0
- package/dist/cjs/dockview/dockviewComponent.d.ts +1 -0
- package/dist/cjs/dockview/dockviewComponent.js +187 -125
- package/dist/cjs/dockview/dockviewGroupPanelModel.d.ts +1 -0
- package/dist/cjs/dockview/dockviewGroupPanelModel.js +9 -0
- package/dist/cjs/dockview/dockviewPanel.js +5 -0
- package/dist/cjs/dockview/dockviewPanelModel.d.ts +2 -0
- package/dist/cjs/dockview/dockviewPanelModel.js +8 -0
- package/dist/cjs/dockview/framework.d.ts +8 -0
- package/dist/cjs/dockview/options.d.ts +13 -2
- package/dist/cjs/dockview/options.js +2 -0
- package/dist/cjs/dom.d.ts +5 -1
- package/dist/cjs/dom.js +14 -2
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/overlay/overlayRenderContainer.js +13 -3
- package/dist/cjs/popoutWindow.d.ts +2 -0
- package/dist/cjs/popoutWindow.js +3 -1
- package/dist/dockview-core.js +169 -30
- package/dist/dockview-core.min.js +2 -2
- package/dist/dockview-core.min.js.map +1 -1
- package/dist/dockview-core.min.noStyle.js +2 -2
- package/dist/dockview-core.min.noStyle.js.map +1 -1
- package/dist/dockview-core.noStyle.js +169 -30
- package/dist/esm/api/dockviewGroupPanelApi.d.ts +10 -1
- package/dist/esm/api/dockviewGroupPanelApi.js +12 -0
- package/dist/esm/dnd/groupDragHandler.js +34 -12
- package/dist/esm/dockview/components/titlebar/tabGroupIndicator.js +2 -2
- package/dist/esm/dockview/components/titlebar/tabs.js +12 -2
- package/dist/esm/dockview/components/titlebar/voidContainer.js +6 -0
- package/dist/esm/dockview/dockviewComponent.d.ts +1 -0
- package/dist/esm/dockview/dockviewComponent.js +49 -7
- package/dist/esm/dockview/dockviewGroupPanelModel.d.ts +1 -0
- package/dist/esm/dockview/dockviewGroupPanelModel.js +9 -0
- package/dist/esm/dockview/dockviewPanel.js +5 -0
- package/dist/esm/dockview/dockviewPanelModel.d.ts +2 -0
- package/dist/esm/dockview/dockviewPanelModel.js +8 -0
- package/dist/esm/dockview/framework.d.ts +8 -0
- package/dist/esm/dockview/options.d.ts +13 -2
- package/dist/esm/dockview/options.js +2 -0
- package/dist/esm/dom.d.ts +5 -1
- package/dist/esm/dom.js +13 -2
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/overlay/overlayRenderContainer.js +13 -3
- package/dist/esm/popoutWindow.d.ts +2 -0
- package/dist/esm/popoutWindow.js +3 -1
- package/dist/package/main.cjs.js +169 -30
- package/dist/package/main.cjs.min.js +2 -2
- package/dist/package/main.esm.min.mjs +2 -2
- package/dist/package/main.esm.mjs +169 -30
- package/package.json +1 -1
|
@@ -272,6 +272,7 @@ export declare class DockviewGroupPanelModel extends CompositeDisposable impleme
|
|
|
272
272
|
getTabGroups(): readonly ITabGroup[];
|
|
273
273
|
updateTabGroups(): void;
|
|
274
274
|
refreshTabGroupAccent(): void;
|
|
275
|
+
refreshWatermark(): void;
|
|
275
276
|
getTabGroupForPanel(panelId: string): ITabGroup | undefined;
|
|
276
277
|
private _findTabGroupForPanel;
|
|
277
278
|
private _removeTabGroupInternal;
|
|
@@ -721,6 +721,15 @@ var DockviewGroupPanelModel = /** @class */ (function (_super) {
|
|
|
721
721
|
DockviewGroupPanelModel.prototype.refreshTabGroupAccent = function () {
|
|
722
722
|
this.tabsContainer.refreshTabGroupAccent();
|
|
723
723
|
};
|
|
724
|
+
DockviewGroupPanelModel.prototype.refreshWatermark = function () {
|
|
725
|
+
var _a, _b;
|
|
726
|
+
if (this.watermark) {
|
|
727
|
+
this.watermark.element.remove();
|
|
728
|
+
(_b = (_a = this.watermark).dispose) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
729
|
+
this.watermark = undefined;
|
|
730
|
+
}
|
|
731
|
+
this.updateContainer();
|
|
732
|
+
};
|
|
724
733
|
DockviewGroupPanelModel.prototype.getTabGroupForPanel = function (panelId) {
|
|
725
734
|
return this._findTabGroupForPanel(panelId);
|
|
726
735
|
};
|
|
@@ -159,6 +159,11 @@ var DockviewPanel = /** @class */ (function (_super) {
|
|
|
159
159
|
var didTitleChange = title !== this.title;
|
|
160
160
|
if (didTitleChange) {
|
|
161
161
|
this._title = title;
|
|
162
|
+
// keep the view-model's cached init params in sync so that tab
|
|
163
|
+
// renderers constructed lazily (e.g. the header overflow
|
|
164
|
+
// dropdown via createTabRenderer) see the updated title
|
|
165
|
+
// (#914).
|
|
166
|
+
this.view.setTitle(title);
|
|
162
167
|
this.api._onDidTitleChange.fire({ title: title });
|
|
163
168
|
}
|
|
164
169
|
};
|
|
@@ -12,6 +12,7 @@ export interface IDockviewPanelModel extends IDisposable {
|
|
|
12
12
|
layout(width: number, height: number): void;
|
|
13
13
|
init(params: GroupPanelPartInitParameters): void;
|
|
14
14
|
createTabRenderer(tabLocation: TabLocation): ITabRenderer;
|
|
15
|
+
setTitle(title: string): void;
|
|
15
16
|
}
|
|
16
17
|
export declare class DockviewPanelModel implements IDockviewPanelModel {
|
|
17
18
|
private readonly accessor;
|
|
@@ -27,6 +28,7 @@ export declare class DockviewPanelModel implements IDockviewPanelModel {
|
|
|
27
28
|
constructor(accessor: IDockviewComponent, id: string, contentComponent: string, tabComponent?: string | undefined);
|
|
28
29
|
createTabRenderer(tabLocation: TabLocation): ITabRenderer;
|
|
29
30
|
init(params: GroupPanelPartInitParameters): void;
|
|
31
|
+
setTitle(title: string): void;
|
|
30
32
|
layout(width: number, height: number): void;
|
|
31
33
|
update(event: PanelUpdateEvent): void;
|
|
32
34
|
dispose(): void;
|
|
@@ -52,6 +52,14 @@ var DockviewPanelModel = /** @class */ (function () {
|
|
|
52
52
|
this.content.init(params);
|
|
53
53
|
this.tab.init(__assign(__assign({}, params), { tabLocation: 'header' }));
|
|
54
54
|
};
|
|
55
|
+
DockviewPanelModel.prototype.setTitle = function (title) {
|
|
56
|
+
// keep the cached init params in sync so that tab renderers created
|
|
57
|
+
// lazily after the title changes (e.g. for the header overflow
|
|
58
|
+
// dropdown) see the current title rather than the stale original.
|
|
59
|
+
if (this._params) {
|
|
60
|
+
this._params.title = title;
|
|
61
|
+
}
|
|
62
|
+
};
|
|
55
63
|
DockviewPanelModel.prototype.layout = function (width, height) {
|
|
56
64
|
var _a, _b;
|
|
57
65
|
(_b = (_a = this.content).layout) === null || _b === void 0 ? void 0 : _b.call(_a, width, height);
|
|
@@ -55,3 +55,11 @@ export interface ITabGroupChipRenderer {
|
|
|
55
55
|
}): void;
|
|
56
56
|
dispose(): void;
|
|
57
57
|
}
|
|
58
|
+
export interface IGroupDragGhostRenderer {
|
|
59
|
+
readonly element: HTMLElement;
|
|
60
|
+
init(params: {
|
|
61
|
+
group: IDockviewGroupPanel;
|
|
62
|
+
api: DockviewApi;
|
|
63
|
+
}): void;
|
|
64
|
+
dispose?(): void;
|
|
65
|
+
}
|
|
@@ -11,12 +11,14 @@ import { GroupOptions } from './dockviewGroupPanelModel';
|
|
|
11
11
|
import { DockviewGroupDropLocation } from './events';
|
|
12
12
|
import { IDockviewPanel } from './dockviewPanel';
|
|
13
13
|
import { DockviewPanelRenderer } from '../overlay/overlayRenderContainer';
|
|
14
|
-
import { IGroupHeaderProps, ITabGroupChipRenderer } from './framework';
|
|
14
|
+
import { IGroupDragGhostRenderer, IGroupHeaderProps, ITabGroupChipRenderer } from './framework';
|
|
15
15
|
import { FloatingGroupOptions } from './dockviewComponent';
|
|
16
16
|
import { Contraints } from '../gridview/gridviewPanel';
|
|
17
17
|
import { AcceptableEvent, IAcceptableEvent } from '../events';
|
|
18
18
|
import { DockviewTheme } from './theme';
|
|
19
19
|
import { ITabGroup } from './tabGroup';
|
|
20
|
+
import { CspNonceProvider } from '../dom';
|
|
21
|
+
export { CspNonceProvider };
|
|
20
22
|
import { DockviewTabGroupColorEntry } from './tabGroupAccent';
|
|
21
23
|
export interface IHeaderActionsRenderer extends IDisposable {
|
|
22
24
|
readonly element: HTMLElement;
|
|
@@ -89,6 +91,7 @@ export interface DockviewOptions {
|
|
|
89
91
|
minimumWidthWithinViewport?: number;
|
|
90
92
|
};
|
|
91
93
|
popoutUrl?: string;
|
|
94
|
+
nonce?: CspNonceProvider;
|
|
92
95
|
defaultRenderer?: DockviewPanelRenderer;
|
|
93
96
|
defaultHeaderPosition?: DockviewHeaderPosition;
|
|
94
97
|
debug?: boolean;
|
|
@@ -140,6 +143,15 @@ export interface DockviewOptions {
|
|
|
140
143
|
* If not provided, the default chip renderer is used.
|
|
141
144
|
*/
|
|
142
145
|
createTabGroupChipComponent?: (tabGroup: ITabGroup) => ITabGroupChipRenderer;
|
|
146
|
+
/**
|
|
147
|
+
* Factory to create the custom ghost element shown while dragging a
|
|
148
|
+
* group of panels (the small floating chip that follows the cursor).
|
|
149
|
+
*
|
|
150
|
+
* If not provided, a default ghost rendering `"Multiple Panels (N)"`
|
|
151
|
+
* is used. Supplying a factory replaces the entire default ghost,
|
|
152
|
+
* enabling i18n / custom visuals.
|
|
153
|
+
*/
|
|
154
|
+
createGroupDragGhostComponent?: (group: DockviewGroupPanel) => IGroupDragGhostRenderer;
|
|
143
155
|
/**
|
|
144
156
|
* Replace the built-in tab group color palette with a user-defined list.
|
|
145
157
|
*
|
|
@@ -292,4 +304,3 @@ export interface MovementOptions extends MovementOptions2 {
|
|
|
292
304
|
includePanel?: boolean;
|
|
293
305
|
group?: DockviewGroupPanel;
|
|
294
306
|
}
|
|
295
|
-
export {};
|
|
@@ -47,6 +47,7 @@ exports.PROPERTY_KEYS_DOCKVIEW = (function () {
|
|
|
47
47
|
disableFloatingGroups: undefined,
|
|
48
48
|
floatingGroupBounds: undefined,
|
|
49
49
|
popoutUrl: undefined,
|
|
50
|
+
nonce: undefined,
|
|
50
51
|
defaultRenderer: undefined,
|
|
51
52
|
defaultHeaderPosition: undefined,
|
|
52
53
|
debug: undefined,
|
|
@@ -62,6 +63,7 @@ exports.PROPERTY_KEYS_DOCKVIEW = (function () {
|
|
|
62
63
|
getTabContextMenuItems: undefined,
|
|
63
64
|
getTabGroupChipContextMenuItems: undefined,
|
|
64
65
|
createTabGroupChipComponent: undefined,
|
|
66
|
+
createGroupDragGhostComponent: undefined,
|
|
65
67
|
tabGroupColors: undefined,
|
|
66
68
|
tabGroupAccent: undefined,
|
|
67
69
|
};
|
package/dist/cjs/dom.d.ts
CHANGED
|
@@ -24,7 +24,11 @@ export interface IFocusTracker extends IDisposable {
|
|
|
24
24
|
export declare function trackFocus(element: HTMLElement): IFocusTracker;
|
|
25
25
|
export declare function quasiPreventDefault(event: Event): void;
|
|
26
26
|
export declare function quasiDefaultPrevented(event: Event): boolean;
|
|
27
|
-
export
|
|
27
|
+
export type CspNonceProvider = string | ((targetDocument: Document) => string | undefined);
|
|
28
|
+
export interface AddStylesOptions {
|
|
29
|
+
nonce?: CspNonceProvider;
|
|
30
|
+
}
|
|
31
|
+
export declare function addStyles(document: Document, styleSheetList: StyleSheetList, options?: AddStylesOptions): void;
|
|
28
32
|
export declare function getDomNodePagePosition(domNode: Element): {
|
|
29
33
|
left: number;
|
|
30
34
|
top: number;
|
package/dist/cjs/dom.js
CHANGED
|
@@ -218,9 +218,12 @@ function quasiPreventDefault(event) {
|
|
|
218
218
|
function quasiDefaultPrevented(event) {
|
|
219
219
|
return event[QUASI_PREVENT_DEFAULT_KEY];
|
|
220
220
|
}
|
|
221
|
-
function addStyles(document, styleSheetList) {
|
|
221
|
+
function addStyles(document, styleSheetList, options) {
|
|
222
222
|
var e_3, _a, e_4, _b;
|
|
223
|
+
if (options === void 0) { options = {}; }
|
|
223
224
|
var styleSheets = Array.from(styleSheetList);
|
|
225
|
+
var nonce = options.nonce;
|
|
226
|
+
var resolvedNonce = typeof nonce === 'function' ? nonce(document) : nonce;
|
|
224
227
|
try {
|
|
225
228
|
for (var styleSheets_1 = __values(styleSheets), styleSheets_1_1 = styleSheets_1.next(); !styleSheets_1_1.done; styleSheets_1_1 = styleSheets_1.next()) {
|
|
226
229
|
var styleSheet = styleSheets_1_1.value;
|
|
@@ -230,6 +233,10 @@ function addStyles(document, styleSheetList) {
|
|
|
230
233
|
link.type = styleSheet.type;
|
|
231
234
|
link.rel = 'stylesheet';
|
|
232
235
|
document.head.appendChild(link);
|
|
236
|
+
// The <link> will load and apply its rules in the target
|
|
237
|
+
// document. Reading cssRules here would duplicate them
|
|
238
|
+
// (and throws for cross-origin sheets).
|
|
239
|
+
continue;
|
|
233
240
|
}
|
|
234
241
|
var cssTexts = [];
|
|
235
242
|
try {
|
|
@@ -240,12 +247,16 @@ function addStyles(document, styleSheetList) {
|
|
|
240
247
|
catch (err) {
|
|
241
248
|
console.warn('dockview: failed to access stylesheet rules due to security restrictions', err);
|
|
242
249
|
}
|
|
250
|
+
var fragment = document.createDocumentFragment();
|
|
243
251
|
try {
|
|
244
252
|
for (var cssTexts_1 = (e_4 = void 0, __values(cssTexts)), cssTexts_1_1 = cssTexts_1.next(); !cssTexts_1_1.done; cssTexts_1_1 = cssTexts_1.next()) {
|
|
245
253
|
var rule = cssTexts_1_1.value;
|
|
246
254
|
var style = document.createElement('style');
|
|
255
|
+
if (resolvedNonce) {
|
|
256
|
+
style.setAttribute('nonce', resolvedNonce);
|
|
257
|
+
}
|
|
247
258
|
style.appendChild(document.createTextNode(rule));
|
|
248
|
-
|
|
259
|
+
fragment.appendChild(style);
|
|
249
260
|
}
|
|
250
261
|
}
|
|
251
262
|
catch (e_4_1) { e_4 = { error: e_4_1 }; }
|
|
@@ -255,6 +266,7 @@ function addStyles(document, styleSheetList) {
|
|
|
255
266
|
}
|
|
256
267
|
finally { if (e_4) throw e_4.error; }
|
|
257
268
|
}
|
|
269
|
+
document.head.appendChild(fragment);
|
|
258
270
|
}
|
|
259
271
|
}
|
|
260
272
|
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
package/dist/cjs/index.d.ts
CHANGED
|
@@ -21,7 +21,7 @@ export { DockviewWillShowOverlayLocationEvent, DockviewTabGroupChangeEvent, Dock
|
|
|
21
21
|
export { TabDragEvent, GroupDragEvent, } from './dockview/components/titlebar/tabsContainer';
|
|
22
22
|
export * from './dockview/types';
|
|
23
23
|
export * from './dockview/dockviewGroupPanel';
|
|
24
|
-
export { IGroupPanelBaseProps, IDockviewPanelHeaderProps, IDockviewPanelProps, IDockviewHeaderActionsProps, IGroupHeaderProps, IWatermarkPanelProps, DockviewReadyEvent, ITabGroupChipRenderer, } from './dockview/framework';
|
|
24
|
+
export { IGroupPanelBaseProps, IDockviewPanelHeaderProps, IDockviewPanelProps, IDockviewHeaderActionsProps, IGroupHeaderProps, IWatermarkPanelProps, DockviewReadyEvent, ITabGroupChipRenderer, IGroupDragGhostRenderer, } from './dockview/framework';
|
|
25
25
|
export * from './dockview/options';
|
|
26
26
|
export * from './dockview/theme';
|
|
27
27
|
export * from './dockview/dockviewPanel';
|
|
@@ -180,10 +180,20 @@ var OverlayRenderContainer = /** @class */ (function (_super) {
|
|
|
180
180
|
focusContainer.style.top = "".concat(top, "px");
|
|
181
181
|
focusContainer.style.width = "".concat(width, "px");
|
|
182
182
|
focusContainer.style.height = "".concat(height, "px");
|
|
183
|
-
//
|
|
184
|
-
//
|
|
185
|
-
|
|
183
|
+
// Sync visibility/pointer-events with the panel's current
|
|
184
|
+
// visibility at paint time. visibilityChanged() may have
|
|
185
|
+
// flipped to hidden between scheduling this rAF and now;
|
|
186
|
+
// unconditionally clearing `visibility:hidden` here would
|
|
187
|
+
// leave a hidden panel visually visible at a stale position,
|
|
188
|
+
// because onDidDimensionsChange skips non-visible panels and
|
|
189
|
+
// never recomputes their box on subsequent resizes.
|
|
190
|
+
if (panel.api.isVisible) {
|
|
186
191
|
focusContainer.style.visibility = '';
|
|
192
|
+
focusContainer.style.pointerEvents = '';
|
|
193
|
+
}
|
|
194
|
+
else {
|
|
195
|
+
focusContainer.style.visibility = 'hidden';
|
|
196
|
+
focusContainer.style.pointerEvents = 'none';
|
|
187
197
|
}
|
|
188
198
|
(0, dom_1.toggleClass)(focusContainer, 'dv-render-overlay-float', panel.group.api.location.type === 'floating');
|
|
189
199
|
});
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { CspNonceProvider } from './dom';
|
|
1
2
|
import { CompositeDisposable } from './lifecycle';
|
|
2
3
|
import { Box } from './types';
|
|
3
4
|
export type PopoutWindowOptions = {
|
|
@@ -10,6 +11,7 @@ export type PopoutWindowOptions = {
|
|
|
10
11
|
id: string;
|
|
11
12
|
window: Window;
|
|
12
13
|
}) => void;
|
|
14
|
+
nonce?: CspNonceProvider;
|
|
13
15
|
} & Box;
|
|
14
16
|
/**
|
|
15
17
|
* Reject popout URLs that aren't same-origin http(s). Blocks `javascript:`,
|
package/dist/cjs/popoutWindow.js
CHANGED
|
@@ -204,7 +204,9 @@ var PopoutWindow = /** @class */ (function (_super) {
|
|
|
204
204
|
var externalDocument = externalWindow.document;
|
|
205
205
|
externalDocument.title = document.title;
|
|
206
206
|
externalDocument.body.appendChild(container);
|
|
207
|
-
(0, dom_1.addStyles)(externalDocument, window.document.styleSheets
|
|
207
|
+
(0, dom_1.addStyles)(externalDocument, window.document.styleSheets, {
|
|
208
|
+
nonce: _this.options.nonce,
|
|
209
|
+
});
|
|
208
210
|
/**
|
|
209
211
|
* beforeunload must be registered after load for reasons I could not determine
|
|
210
212
|
* otherwise the beforeunload event will not fire when the window is closed
|