@codingame/monaco-vscode-view-common-service-override 26.2.2 → 27.0.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/index.js +1 -1
- package/package.json +3 -3
- package/vscode/src/vs/workbench/api/browser/viewsExtensionPoint.js +56 -56
- package/vscode/src/vs/workbench/browser/actions/helpActions.js +21 -21
- package/vscode/src/vs/workbench/browser/actions/listCommands.js +3 -3
- package/vscode/src/vs/workbench/browser/actions/navigationActions.js +6 -6
- package/vscode/src/vs/workbench/browser/parts/editor/editor.contribution.js +166 -166
- package/vscode/src/vs/workbench/browser/parts/editor/editorConfiguration.js +8 -8
- package/vscode/src/vs/workbench/browser/parts/paneCompositePartService.d.ts +3 -0
- package/vscode/src/vs/workbench/browser/parts/paneCompositePartService.js +14 -3
- package/vscode/src/vs/workbench/contrib/callHierarchy/browser/callHierarchy.contribution.js +12 -12
- package/vscode/src/vs/workbench/contrib/callHierarchy/browser/callHierarchyPeek.js +3 -3
- package/vscode/src/vs/workbench/contrib/callHierarchy/browser/callHierarchyTree.js +4 -3
- package/vscode/src/vs/workbench/contrib/customEditor/common/contributedCustomEditors.js +1 -1
- package/vscode/src/vs/workbench/contrib/customEditor/common/customEditor.js +1 -1
- package/vscode/src/vs/workbench/contrib/customEditor/common/extensionPoint.js +10 -10
- package/vscode/src/vs/workbench/contrib/languageStatus/browser/languageStatus.js +7 -7
- package/vscode/src/vs/workbench/contrib/limitIndicator/browser/limitIndicator.contribution.js +8 -8
- package/vscode/src/vs/workbench/contrib/mergeEditor/browser/commands/commands.js +29 -29
- package/vscode/src/vs/workbench/contrib/mergeEditor/browser/commands/devCommands.js +14 -14
- package/vscode/src/vs/workbench/contrib/mergeEditor/browser/mergeEditor.contribution.js +2 -2
- package/vscode/src/vs/workbench/contrib/mergeEditor/browser/mergeEditorAccessibilityHelp.js +5 -5
- package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/colors.js +13 -13
- package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/conflictActions.js +20 -20
- package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/editors/baseCodeEditorView.js +3 -3
- package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/editors/codeEditorView.js +1 -1
- package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/editors/inputCodeEditorView.js +10 -10
- package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/editors/resultCodeEditorView.js +3 -3
- package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/mergeEditor.js +2 -2
- package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/viewModel.js +1 -1
- package/vscode/src/vs/workbench/contrib/preferences/browser/keyboardLayoutPicker.js +12 -12
- package/vscode/src/vs/workbench/contrib/sash/browser/sash.contribution.js +2 -2
- package/vscode/src/vs/workbench/contrib/scrollLocking/browser/scrollLocking.js +8 -8
- package/vscode/src/vs/workbench/contrib/typeHierarchy/browser/typeHierarchy.contribution.js +10 -10
- package/vscode/src/vs/workbench/contrib/typeHierarchy/browser/typeHierarchyPeek.js +3 -3
- package/vscode/src/vs/workbench/contrib/typeHierarchy/browser/typeHierarchyTree.js +4 -3
- package/vscode/src/vs/workbench/contrib/webview/browser/overlayWebview.d.ts +6 -4
- package/vscode/src/vs/workbench/contrib/webview/browser/overlayWebview.js +19 -4
- package/vscode/src/vs/workbench/contrib/webview/browser/resourceLoading.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/webview/browser/resourceLoading.js +22 -14
- package/vscode/src/vs/workbench/contrib/webview/browser/themeing.js +11 -0
- package/vscode/src/vs/workbench/contrib/webview/browser/webviewElement.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/webview/browser/webviewElement.js +7 -4
- package/vscode/src/vs/workbench/contrib/webview/browser/webviewFindWidget.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/webview/browser/webviewFindWidget.js +7 -3
- package/vscode/src/vs/workbench/contrib/webviewPanel/browser/webviewCommands.js +5 -5
- package/vscode/src/vs/workbench/contrib/webviewPanel/browser/webviewPanel.contribution.js +1 -1
- package/vscode/src/vs/workbench/services/editor/browser/editorResolverService.js +8 -8
- package/vscode/src/vs/workbench/services/history/browser/historyService.js +9 -9
- package/vscode/src/vs/workbench/services/progress/browser/progressService.d.ts +3 -1
- package/vscode/src/vs/workbench/services/progress/browser/progressService.js +14 -11
- package/vscode/src/vs/workbench/services/views/browser/viewDescriptorService.d.ts +7 -1
- package/vscode/src/vs/workbench/services/views/browser/viewDescriptorService.js +71 -14
- package/vscode/src/vs/workbench/services/views/browser/viewsService.d.ts +75 -0
- package/vscode/src/vs/workbench/services/views/browser/viewsService.js +711 -0
package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/editors/resultCodeEditorView.js
CHANGED
|
@@ -139,7 +139,7 @@ let ResultCodeEditorView = class ResultCodeEditorView extends CodeEditorView {
|
|
|
139
139
|
return;
|
|
140
140
|
}
|
|
141
141
|
this.editor.setModel(vm.model.resultTextModel);
|
|
142
|
-
reset(this.htmlElements.title, ...renderLabelWithIcons(( localize(
|
|
142
|
+
reset(this.htmlElements.title, ...renderLabelWithIcons(( localize(10405, "Result"))));
|
|
143
143
|
reset(
|
|
144
144
|
this.htmlElements.description,
|
|
145
145
|
...renderLabelWithIcons(this._labelService.getUriLabel(vm.model.resultTextModel.uri, {
|
|
@@ -158,7 +158,7 @@ let ResultCodeEditorView = class ResultCodeEditorView extends CodeEditorView {
|
|
|
158
158
|
return;
|
|
159
159
|
}
|
|
160
160
|
const count = model.unhandledConflictsCount.read(reader);
|
|
161
|
-
const text = count === 1 ? ( localize(
|
|
161
|
+
const text = count === 1 ? ( localize(10406, "{0} Conflict Remaining", count)) : ( localize(10407, "{0} Conflicts Remaining ", count));
|
|
162
162
|
remainingConflictsActionBar.clear();
|
|
163
163
|
remainingConflictsActionBar.push({
|
|
164
164
|
class: undefined,
|
|
@@ -169,7 +169,7 @@ let ResultCodeEditorView = class ResultCodeEditorView extends CodeEditorView {
|
|
|
169
169
|
vm.model.telemetry.reportConflictCounterClicked();
|
|
170
170
|
vm.goToNextModifiedBaseRange(m => !model.isHandled(m).read(undefined));
|
|
171
171
|
},
|
|
172
|
-
tooltip: count > 0 ? ( localize(
|
|
172
|
+
tooltip: count > 0 ? ( localize(10408, "Go to next conflict")) : ( localize(10409, "All conflicts handled, the merge can be completed now."))
|
|
173
173
|
});
|
|
174
174
|
}));
|
|
175
175
|
this._register(applyObservableDecorations(this.editor, this.decorations));
|
|
@@ -129,7 +129,7 @@ let MergeEditor = class MergeEditor extends AbstractTextEditor {
|
|
|
129
129
|
this.inputResultView,
|
|
130
130
|
this._layoutModeObs
|
|
131
131
|
)));
|
|
132
|
-
this._onDidChangeSizeConstraints = ( new Emitter());
|
|
132
|
+
this._onDidChangeSizeConstraints = this._register(( new Emitter()));
|
|
133
133
|
this.onDidChangeSizeConstraints = this._onDidChangeSizeConstraints.event;
|
|
134
134
|
this.baseViewDisposables = this._register(( new DisposableStore()));
|
|
135
135
|
this.showNonConflictingChangesStore = this.instantiationService.createInstance(PersistentStore, "mergeEditor/showNonConflictingChanges");
|
|
@@ -149,7 +149,7 @@ let MergeEditor = class MergeEditor extends AbstractTextEditor {
|
|
|
149
149
|
if (this.input) {
|
|
150
150
|
return this.input.getName();
|
|
151
151
|
}
|
|
152
|
-
return localize(
|
|
152
|
+
return localize(10410, "Text Merge Editor");
|
|
153
153
|
}
|
|
154
154
|
createEditorControl(parent, initialOptions) {
|
|
155
155
|
this.rootHtmlElement = parent;
|
|
@@ -238,7 +238,7 @@ let MergeEditorViewModel = class MergeEditorViewModel extends Disposable {
|
|
|
238
238
|
toggleActiveConflict(inputNumber) {
|
|
239
239
|
const activeModifiedBaseRange = this.activeModifiedBaseRange.get();
|
|
240
240
|
if (!activeModifiedBaseRange) {
|
|
241
|
-
this.notificationService.error(( localize(
|
|
241
|
+
this.notificationService.error(( localize(10411, "There is currently no conflict focused that can be toggled.")));
|
|
242
242
|
return;
|
|
243
243
|
}
|
|
244
244
|
transaction(tx => {
|
|
@@ -26,11 +26,11 @@ let KeyboardLayoutPickerContribution = class KeyboardLayoutPickerContribution ex
|
|
|
26
26
|
this.keyboardLayoutService = keyboardLayoutService;
|
|
27
27
|
this.statusbarService = statusbarService;
|
|
28
28
|
this.pickerElement = this._register(( new MutableDisposable()));
|
|
29
|
-
const name = ( localize(
|
|
29
|
+
const name = ( localize(11127, "Keyboard Layout"));
|
|
30
30
|
const layout = this.keyboardLayoutService.getCurrentKeyboardLayout();
|
|
31
31
|
if (layout) {
|
|
32
32
|
const layoutInfo = parseKeyboardLayoutDescription(layout);
|
|
33
|
-
const text = ( localize(
|
|
33
|
+
const text = ( localize(11128, "Layout: {0}", layoutInfo.label));
|
|
34
34
|
this.pickerElement.value = this.statusbarService.addEntry({
|
|
35
35
|
name,
|
|
36
36
|
text,
|
|
@@ -42,7 +42,7 @@ let KeyboardLayoutPickerContribution = class KeyboardLayoutPickerContribution ex
|
|
|
42
42
|
const layout = this.keyboardLayoutService.getCurrentKeyboardLayout();
|
|
43
43
|
const layoutInfo = parseKeyboardLayoutDescription(layout);
|
|
44
44
|
if (this.pickerElement.value) {
|
|
45
|
-
const text = ( localize(
|
|
45
|
+
const text = ( localize(11128, "Layout: {0}", layoutInfo.label));
|
|
46
46
|
this.pickerElement.value.update({
|
|
47
47
|
name,
|
|
48
48
|
text,
|
|
@@ -50,7 +50,7 @@ let KeyboardLayoutPickerContribution = class KeyboardLayoutPickerContribution ex
|
|
|
50
50
|
command: KEYBOARD_LAYOUT_OPEN_PICKER
|
|
51
51
|
});
|
|
52
52
|
} else {
|
|
53
|
-
const text = ( localize(
|
|
53
|
+
const text = ( localize(11128, "Layout: {0}", layoutInfo.label));
|
|
54
54
|
this.pickerElement.value = this.statusbarService.addEntry({
|
|
55
55
|
name,
|
|
56
56
|
text,
|
|
@@ -68,17 +68,17 @@ registerWorkbenchContribution2(
|
|
|
68
68
|
WorkbenchPhase.BlockStartup
|
|
69
69
|
);
|
|
70
70
|
const DEFAULT_CONTENT = [`// ${( localize(
|
|
71
|
-
|
|
71
|
+
11129,
|
|
72
72
|
"Defines the keyboard layout used in VS Code in the browser environment."
|
|
73
73
|
))}`, `// ${( localize(
|
|
74
|
-
|
|
74
|
+
11130,
|
|
75
75
|
"Open VS Code and run \"Developer: Inspect Key Mappings (JSON)\" from Command Palette."
|
|
76
76
|
))}`, ``, `// Once you have the keyboard layout info, please paste it below.`, "\n"].join("\n");
|
|
77
77
|
registerAction2(class extends Action2 {
|
|
78
78
|
constructor() {
|
|
79
79
|
super({
|
|
80
80
|
id: KEYBOARD_LAYOUT_OPEN_PICKER,
|
|
81
|
-
title: ( localize2(
|
|
81
|
+
title: ( localize2(11131, "Change Keyboard Layout")),
|
|
82
82
|
f1: true
|
|
83
83
|
});
|
|
84
84
|
}
|
|
@@ -113,21 +113,21 @@ registerAction2(class extends Action2 {
|
|
|
113
113
|
const platform = isMacintosh ? "Mac" : isWindows ? "Win" : "Linux";
|
|
114
114
|
picks.unshift({
|
|
115
115
|
type: "separator",
|
|
116
|
-
label: ( localize(
|
|
116
|
+
label: ( localize(11132, "Keyboard Layouts ({0})", platform))
|
|
117
117
|
});
|
|
118
118
|
}
|
|
119
119
|
const configureKeyboardLayout = {
|
|
120
|
-
label: ( localize(
|
|
120
|
+
label: ( localize(11133, "Configure Keyboard Layout"))
|
|
121
121
|
};
|
|
122
122
|
picks.unshift(configureKeyboardLayout);
|
|
123
123
|
const autoDetectMode = {
|
|
124
|
-
label: ( localize(
|
|
124
|
+
label: ( localize(11134, "Auto Detect")),
|
|
125
125
|
description: isAutoDetect ? `Current: ${parseKeyboardLayoutDescription(currentLayout).label}` : undefined,
|
|
126
126
|
picked: isAutoDetect ? true : undefined
|
|
127
127
|
};
|
|
128
128
|
picks.unshift(autoDetectMode);
|
|
129
129
|
const pick = await quickInputService.pick(picks, {
|
|
130
|
-
placeHolder: ( localize(
|
|
130
|
+
placeHolder: ( localize(11135, "Select Keyboard Layout")),
|
|
131
131
|
matchOnDescription: true
|
|
132
132
|
});
|
|
133
133
|
if (!pick) {
|
|
@@ -153,7 +153,7 @@ registerAction2(class extends Action2 {
|
|
|
153
153
|
}
|
|
154
154
|
});
|
|
155
155
|
}, error => {
|
|
156
|
-
throw ( new Error(( localize(
|
|
156
|
+
throw ( new Error(( localize(11136, "Unable to create '{0}' ({1}).", (file.toString()), error))));
|
|
157
157
|
});
|
|
158
158
|
return Promise.resolve();
|
|
159
159
|
}
|
|
@@ -21,7 +21,7 @@ registerWorkbenchContribution2(
|
|
|
21
21
|
minimum: 1,
|
|
22
22
|
maximum: 20,
|
|
23
23
|
description: ( localize(
|
|
24
|
-
|
|
24
|
+
11697,
|
|
25
25
|
"Controls the feedback area size in pixels of the dragging area in between views/editors. Set it to a larger value if you feel it's hard to resize views using the mouse."
|
|
26
26
|
))
|
|
27
27
|
},
|
|
@@ -31,7 +31,7 @@ registerWorkbenchContribution2(
|
|
|
31
31
|
minimum: 0,
|
|
32
32
|
maximum: 2000,
|
|
33
33
|
description: ( localize(
|
|
34
|
-
|
|
34
|
+
11698,
|
|
35
35
|
"Controls the hover feedback delay in milliseconds of the dragging area in between views/editors."
|
|
36
36
|
))
|
|
37
37
|
}
|
|
@@ -22,7 +22,7 @@ let SyncScroll = class SyncScroll extends Disposable {
|
|
|
22
22
|
this.statusbarService = statusbarService;
|
|
23
23
|
this.paneInitialScrollTop = ( new Map());
|
|
24
24
|
this.syncScrollDispoasbles = this._register(( new DisposableStore()));
|
|
25
|
-
this.paneDisposables = ( new DisposableStore());
|
|
25
|
+
this.paneDisposables = this._register(( new DisposableStore()));
|
|
26
26
|
this.statusBarEntry = this._register(( new MutableDisposable()));
|
|
27
27
|
this.isActive = false;
|
|
28
28
|
this._reentrancyBarrier = ( new ReentrancyBarrier());
|
|
@@ -122,8 +122,8 @@ let SyncScroll = class SyncScroll extends Disposable {
|
|
|
122
122
|
toggleStatusbarItem(active) {
|
|
123
123
|
if (active) {
|
|
124
124
|
if (!this.statusBarEntry.value) {
|
|
125
|
-
const text = ( localize(
|
|
126
|
-
const tooltip = ( localize(
|
|
125
|
+
const text = ( localize(11915, "Scrolling Locked"));
|
|
126
|
+
const tooltip = ( localize(11916, "Lock Scrolling Enabled"));
|
|
127
127
|
this.statusBarEntry.value = this.statusbarService.addEntry({
|
|
128
128
|
name: text,
|
|
129
129
|
text,
|
|
@@ -148,13 +148,13 @@ let SyncScroll = class SyncScroll extends Disposable {
|
|
|
148
148
|
super({
|
|
149
149
|
id: "workbench.action.toggleLockedScrolling",
|
|
150
150
|
title: {
|
|
151
|
-
...( localize2(
|
|
152
|
-
mnemonicTitle: ( localize(
|
|
151
|
+
...( localize2(11917, "Toggle Locked Scrolling Across Editors")),
|
|
152
|
+
mnemonicTitle: ( localize(11918, "Locked Scrolling"))
|
|
153
153
|
},
|
|
154
154
|
category: Categories.View,
|
|
155
155
|
f1: true,
|
|
156
156
|
metadata: {
|
|
157
|
-
description: ( localize(
|
|
157
|
+
description: ( localize(11919, "Synchronize Scrolling Editors"))
|
|
158
158
|
}
|
|
159
159
|
});
|
|
160
160
|
}
|
|
@@ -167,8 +167,8 @@ let SyncScroll = class SyncScroll extends Disposable {
|
|
|
167
167
|
super({
|
|
168
168
|
id: "workbench.action.holdLockedScrolling",
|
|
169
169
|
title: {
|
|
170
|
-
...( localize2(
|
|
171
|
-
mnemonicTitle: ( localize(
|
|
170
|
+
...( localize2(11920, "Hold Locked Scrolling Across Editors")),
|
|
171
|
+
mnemonicTitle: ( localize(11921, "Locked Scrolling"))
|
|
172
172
|
},
|
|
173
173
|
category: Categories.View
|
|
174
174
|
});
|
|
@@ -22,11 +22,11 @@ import { TypeHierarchyTreePeekWidget } from './typeHierarchyPeek.js';
|
|
|
22
22
|
import { TypeHierarchyDirection, TypeHierarchyProviderRegistry, TypeHierarchyModel } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/typeHierarchy/common/typeHierarchy';
|
|
23
23
|
|
|
24
24
|
var TypeHierarchyController_1;
|
|
25
|
-
const _ctxHasTypeHierarchyProvider = ( new RawContextKey("editorHasTypeHierarchyProvider", false, ( localize(
|
|
26
|
-
const _ctxTypeHierarchyVisible = ( new RawContextKey("typeHierarchyVisible", false, ( localize(
|
|
25
|
+
const _ctxHasTypeHierarchyProvider = ( new RawContextKey("editorHasTypeHierarchyProvider", false, ( localize(14238, "Whether a type hierarchy provider is available"))));
|
|
26
|
+
const _ctxTypeHierarchyVisible = ( new RawContextKey("typeHierarchyVisible", false, ( localize(14239, "Whether type hierarchy peek is currently showing"))));
|
|
27
27
|
const _ctxTypeHierarchyDirection = ( new RawContextKey("typeHierarchyDirection", undefined, {
|
|
28
28
|
type: "string",
|
|
29
|
-
description: ( localize(
|
|
29
|
+
description: ( localize(14240, "whether type hierarchy shows super types or subtypes"))
|
|
30
30
|
}));
|
|
31
31
|
function sanitizedDirection(candidate) {
|
|
32
32
|
return candidate === TypeHierarchyDirection.Subtypes || candidate === TypeHierarchyDirection.Supertypes ? candidate : TypeHierarchyDirection.Subtypes;
|
|
@@ -121,14 +121,14 @@ let TypeHierarchyController = class TypeHierarchyController {
|
|
|
121
121
|
this._sessionDisposables.add(model);
|
|
122
122
|
this._widget.showModel(model);
|
|
123
123
|
} else {
|
|
124
|
-
this._widget.showMessage(( localize(
|
|
124
|
+
this._widget.showMessage(( localize(14241, "No results")));
|
|
125
125
|
}
|
|
126
126
|
}).catch(err => {
|
|
127
127
|
if (isCancellationError(err)) {
|
|
128
128
|
this.endTypeHierarchy();
|
|
129
129
|
return;
|
|
130
130
|
}
|
|
131
|
-
this._widget.showMessage(( localize(
|
|
131
|
+
this._widget.showMessage(( localize(14242, "Failed to show type hierarchy")));
|
|
132
132
|
});
|
|
133
133
|
}
|
|
134
134
|
async startTypeHierarchyFromTypeHierarchy() {
|
|
@@ -179,7 +179,7 @@ registerAction2(class PeekTypeHierarchyAction extends EditorAction2 {
|
|
|
179
179
|
constructor() {
|
|
180
180
|
super({
|
|
181
181
|
id: "editor.showTypeHierarchy",
|
|
182
|
-
title: ( localize2(
|
|
182
|
+
title: ( localize2(14243, "Peek Type Hierarchy")),
|
|
183
183
|
menu: {
|
|
184
184
|
id: MenuId.EditorContextPeek,
|
|
185
185
|
group: "navigation",
|
|
@@ -198,7 +198,7 @@ registerAction2(class extends EditorAction2 {
|
|
|
198
198
|
constructor() {
|
|
199
199
|
super({
|
|
200
200
|
id: "editor.showSupertypes",
|
|
201
|
-
title: ( localize2(
|
|
201
|
+
title: ( localize2(14244, "Show Supertypes")),
|
|
202
202
|
icon: Codicon.typeHierarchySuper,
|
|
203
203
|
precondition: ( ContextKeyExpr.and(_ctxTypeHierarchyVisible, ( _ctxTypeHierarchyDirection.isEqualTo(TypeHierarchyDirection.Subtypes)))),
|
|
204
204
|
keybinding: {
|
|
@@ -220,7 +220,7 @@ registerAction2(class extends EditorAction2 {
|
|
|
220
220
|
constructor() {
|
|
221
221
|
super({
|
|
222
222
|
id: "editor.showSubtypes",
|
|
223
|
-
title: ( localize2(
|
|
223
|
+
title: ( localize2(14245, "Show Subtypes")),
|
|
224
224
|
icon: Codicon.typeHierarchySub,
|
|
225
225
|
precondition: ( ContextKeyExpr.and(_ctxTypeHierarchyVisible, ( _ctxTypeHierarchyDirection.isEqualTo(TypeHierarchyDirection.Supertypes)))),
|
|
226
226
|
keybinding: {
|
|
@@ -242,7 +242,7 @@ registerAction2(class extends EditorAction2 {
|
|
|
242
242
|
constructor() {
|
|
243
243
|
super({
|
|
244
244
|
id: "editor.refocusTypeHierarchy",
|
|
245
|
-
title: ( localize2(
|
|
245
|
+
title: ( localize2(14246, "Refocus Type Hierarchy")),
|
|
246
246
|
precondition: _ctxTypeHierarchyVisible,
|
|
247
247
|
keybinding: {
|
|
248
248
|
weight: KeybindingWeight.WorkbenchContrib,
|
|
@@ -258,7 +258,7 @@ registerAction2(class extends EditorAction2 {
|
|
|
258
258
|
constructor() {
|
|
259
259
|
super({
|
|
260
260
|
id: "editor.closeTypeHierarchy",
|
|
261
|
-
title: ( localize(
|
|
261
|
+
title: ( localize(14247, "Close")),
|
|
262
262
|
icon: Codicon.close,
|
|
263
263
|
precondition: _ctxTypeHierarchyVisible,
|
|
264
264
|
keybinding: {
|
|
@@ -326,12 +326,12 @@ let TypeHierarchyTreePeekWidget = class TypeHierarchyTreePeekWidget extends Peek
|
|
|
326
326
|
this._previewDisposable.add(toDisposable(() => decorationsCollection.clear()));
|
|
327
327
|
}
|
|
328
328
|
this._previewDisposable.add(value);
|
|
329
|
-
const title = this._direction === TypeHierarchyDirection.Supertypes ? ( localize(
|
|
329
|
+
const title = this._direction === TypeHierarchyDirection.Supertypes ? ( localize(14248, "Supertypes of '{0}'", element.model.root.name)) : ( localize(14249, "Subtypes of '{0}'", element.model.root.name));
|
|
330
330
|
this.setTitle(title);
|
|
331
331
|
}
|
|
332
332
|
showLoading() {
|
|
333
333
|
this._parent.dataset["state"] = State.Loading;
|
|
334
|
-
this.setTitle(( localize(
|
|
334
|
+
this.setTitle(( localize(14250, "Loading...")));
|
|
335
335
|
this._show();
|
|
336
336
|
}
|
|
337
337
|
showMessage(message) {
|
|
@@ -349,7 +349,7 @@ let TypeHierarchyTreePeekWidget = class TypeHierarchyTreePeekWidget extends Peek
|
|
|
349
349
|
const root = this._tree.getNode(model).children[0];
|
|
350
350
|
await this._tree.expand(root.element);
|
|
351
351
|
if (root.children.length === 0) {
|
|
352
|
-
this.showMessage(this._direction === TypeHierarchyDirection.Supertypes ? ( localize(
|
|
352
|
+
this.showMessage(this._direction === TypeHierarchyDirection.Supertypes ? ( localize(14251, "No supertypes of '{0}'", model.root.name)) : ( localize(14252, "No subtypes of '{0}'", model.root.name)));
|
|
353
353
|
} else {
|
|
354
354
|
this._parent.dataset["state"] = State.Data;
|
|
355
355
|
if (!viewState || this._tree.getFocus().length === 0) {
|
|
@@ -97,6 +97,7 @@ class TypeRenderer {
|
|
|
97
97
|
const deprecated = element.item.tags?.includes(SymbolTag.Deprecated);
|
|
98
98
|
template.icon.classList.add(
|
|
99
99
|
"inline",
|
|
100
|
+
"codicon-colored",
|
|
100
101
|
...ThemeIcon.asClassNameArray(SymbolKinds.toIcon(element.item.kind))
|
|
101
102
|
);
|
|
102
103
|
template.label.setLabel(element.item.name, element.item.detail, {
|
|
@@ -122,13 +123,13 @@ class AccessibilityProvider {
|
|
|
122
123
|
this.getDirection = getDirection;
|
|
123
124
|
}
|
|
124
125
|
getWidgetAriaLabel() {
|
|
125
|
-
return localize(
|
|
126
|
+
return localize(14253, "Type Hierarchy");
|
|
126
127
|
}
|
|
127
128
|
getAriaLabel(element) {
|
|
128
129
|
if (this.getDirection() === TypeHierarchyDirection.Supertypes) {
|
|
129
|
-
return localize(
|
|
130
|
+
return localize(14254, "supertypes of {0}", element.item.name);
|
|
130
131
|
} else {
|
|
131
|
-
return localize(
|
|
132
|
+
return localize(14255, "subtypes of {0}", element.item.name);
|
|
132
133
|
}
|
|
133
134
|
}
|
|
134
135
|
}
|
|
@@ -6,6 +6,7 @@ import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
|
|
|
6
6
|
import { IContextKeyService } from "@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey.service";
|
|
7
7
|
import { ExtensionIdentifier } from "@codingame/monaco-vscode-api/vscode/vs/platform/extensions/common/extensions";
|
|
8
8
|
import { IWorkbenchLayoutService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/layout/browser/layoutService.service";
|
|
9
|
+
import { IEditorGroupsService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/editor/common/editorGroupsService.service";
|
|
9
10
|
import { IOverlayWebview, WebviewContentOptions, WebviewExtensionDescription, WebviewInitInfo, WebviewMessageReceivedEvent, WebviewOptions } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/webview/browser/webview";
|
|
10
11
|
import { IWebviewService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/webview/browser/webview.service";
|
|
11
12
|
/**
|
|
@@ -15,6 +16,7 @@ export declare class OverlayWebview extends Disposable implements IOverlayWebvie
|
|
|
15
16
|
private readonly _layoutService;
|
|
16
17
|
private readonly _webviewService;
|
|
17
18
|
private readonly _baseContextKeyService;
|
|
19
|
+
private readonly _editorGroupsService;
|
|
18
20
|
private _isFirstLoad;
|
|
19
21
|
private readonly _firstLoadPendingMessages;
|
|
20
22
|
private readonly _webview;
|
|
@@ -36,15 +38,15 @@ export declare class OverlayWebview extends Disposable implements IOverlayWebvie
|
|
|
36
38
|
readonly providedViewType?: string;
|
|
37
39
|
origin: string;
|
|
38
40
|
private _container;
|
|
39
|
-
constructor(initInfo: WebviewInitInfo, _layoutService: IWorkbenchLayoutService, _webviewService: IWebviewService, _baseContextKeyService: IContextKeyService);
|
|
41
|
+
constructor(initInfo: WebviewInitInfo, _layoutService: IWorkbenchLayoutService, _webviewService: IWebviewService, _baseContextKeyService: IContextKeyService, _editorGroupsService: IEditorGroupsService);
|
|
40
42
|
get isFocused(): boolean;
|
|
41
43
|
private _isDisposed;
|
|
42
44
|
private readonly _onDidDispose;
|
|
43
45
|
readonly onDidDispose: import("@codingame/monaco-vscode-api/vscode/vs/base/common/event").Event<void>;
|
|
44
46
|
dispose(): void;
|
|
45
47
|
get container(): HTMLElement;
|
|
46
|
-
claim(owner:
|
|
47
|
-
release(owner:
|
|
48
|
+
claim(owner: unknown, targetWindow: CodeWindow, scopedContextKeyService: IContextKeyService | undefined): void;
|
|
49
|
+
release(owner: unknown): void;
|
|
48
50
|
layoutWebviewOverElement(element: HTMLElement, dimension?: Dimension, clippingContainer?: HTMLElement): void;
|
|
49
51
|
private doLayoutWebviewOverElement;
|
|
50
52
|
private _show;
|
|
@@ -87,7 +89,7 @@ export declare class OverlayWebview extends Disposable implements IOverlayWebvie
|
|
|
87
89
|
readonly width: number;
|
|
88
90
|
readonly height: number;
|
|
89
91
|
} | undefined, void>;
|
|
90
|
-
postMessage(message:
|
|
92
|
+
postMessage(message: unknown, transfer?: readonly ArrayBuffer[]): Promise<boolean>;
|
|
91
93
|
focus(): void;
|
|
92
94
|
reload(): void;
|
|
93
95
|
selectAll(): void;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
|
|
2
2
|
import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
|
|
3
|
-
import { getWindowById, createElement } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
|
|
3
|
+
import { getWindowById, createElement, isHTMLElement } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
|
|
4
4
|
import { FastDomNode } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/fastDomNode';
|
|
5
5
|
import { Emitter } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
|
|
6
6
|
import { Disposable, MutableDisposable, DisposableStore } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
@@ -8,6 +8,7 @@ import '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/in
|
|
|
8
8
|
import { generateUuid } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uuid';
|
|
9
9
|
import { IContextKeyService } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey.service';
|
|
10
10
|
import { IWorkbenchLayoutService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/layout/browser/layoutService.service';
|
|
11
|
+
import { IEditorGroupsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/editor/common/editorGroupsService.service';
|
|
11
12
|
import { KEYBINDING_CONTEXT_WEBVIEW_FIND_WIDGET_VISIBLE, KEYBINDING_CONTEXT_WEBVIEW_FIND_WIDGET_ENABLED } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/webview/browser/webview';
|
|
12
13
|
import { IWebviewService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/webview/browser/webview.service';
|
|
13
14
|
import { observableValue } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableValue';
|
|
@@ -17,11 +18,18 @@ let OverlayWebview = class OverlayWebview extends Disposable {
|
|
|
17
18
|
get window() {
|
|
18
19
|
return getWindowById(this._windowId, true).window;
|
|
19
20
|
}
|
|
20
|
-
constructor(
|
|
21
|
+
constructor(
|
|
22
|
+
initInfo,
|
|
23
|
+
_layoutService,
|
|
24
|
+
_webviewService,
|
|
25
|
+
_baseContextKeyService,
|
|
26
|
+
_editorGroupsService
|
|
27
|
+
) {
|
|
21
28
|
super();
|
|
22
29
|
this._layoutService = _layoutService;
|
|
23
30
|
this._webviewService = _webviewService;
|
|
24
31
|
this._baseContextKeyService = _baseContextKeyService;
|
|
32
|
+
this._editorGroupsService = _editorGroupsService;
|
|
25
33
|
this._isFirstLoad = true;
|
|
26
34
|
this._firstLoadPendingMessages = ( new Set());
|
|
27
35
|
this._webview = this._register(( new MutableDisposable()));
|
|
@@ -86,7 +94,14 @@ let OverlayWebview = class OverlayWebview extends Disposable {
|
|
|
86
94
|
node.style.overflow = "hidden";
|
|
87
95
|
this._container = ( new FastDomNode(node));
|
|
88
96
|
this._container.setVisibility("hidden");
|
|
89
|
-
this.
|
|
97
|
+
const modalEditorContainer = this._editorGroupsService.activeModalEditorPart?.modalElement;
|
|
98
|
+
let root;
|
|
99
|
+
if (isHTMLElement(modalEditorContainer)) {
|
|
100
|
+
root = modalEditorContainer;
|
|
101
|
+
} else {
|
|
102
|
+
root = this._layoutService.getContainer(this.window);
|
|
103
|
+
}
|
|
104
|
+
root.appendChild(node);
|
|
90
105
|
}
|
|
91
106
|
return this._container.domNode;
|
|
92
107
|
}
|
|
@@ -360,7 +375,7 @@ let OverlayWebview = class OverlayWebview extends Disposable {
|
|
|
360
375
|
this._webview.value?.setContextKeyService(contextKeyService);
|
|
361
376
|
}
|
|
362
377
|
};
|
|
363
|
-
OverlayWebview = ( __decorate([( __param(1, IWorkbenchLayoutService)), ( __param(2, IWebviewService)), ( __param(3, IContextKeyService))], OverlayWebview));
|
|
378
|
+
OverlayWebview = ( __decorate([( __param(1, IWorkbenchLayoutService)), ( __param(2, IWebviewService)), ( __param(3, IContextKeyService)), ( __param(4, IEditorGroupsService))], OverlayWebview));
|
|
364
379
|
function computeClippingRect(frameRect, clipper) {
|
|
365
380
|
const rootRect = clipper.getBoundingClientRect();
|
|
366
381
|
const top = Math.max(rootRect.top - frameRect.top, 0);
|
|
@@ -3,6 +3,7 @@ import { CancellationToken } from "@codingame/monaco-vscode-api/vscode/vs/base/c
|
|
|
3
3
|
import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
|
|
4
4
|
import { IFileService } from "@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files.service";
|
|
5
5
|
import { ILogService } from "@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service";
|
|
6
|
+
import { IUriIdentityService } from "@codingame/monaco-vscode-api/vscode/vs/platform/uriIdentity/common/uriIdentity.service";
|
|
6
7
|
export declare namespace WebviewResourceResponse {
|
|
7
8
|
enum Type {
|
|
8
9
|
Success = 0,
|
|
@@ -35,4 +36,5 @@ export declare namespace WebviewResourceResponse {
|
|
|
35
36
|
export declare function loadLocalResource(requestUri: URI, options: {
|
|
36
37
|
ifNoneMatch: string | undefined;
|
|
37
38
|
roots: ReadonlyArray<URI>;
|
|
38
|
-
}, fileService: IFileService, logService: ILogService, token: CancellationToken): Promise<WebviewResourceResponse.StreamResponse>;
|
|
39
|
+
}, uriIdentityService: IUriIdentityService, fileService: IFileService, logService: ILogService, token: CancellationToken): Promise<WebviewResourceResponse.StreamResponse>;
|
|
40
|
+
export declare function getResourceToLoad(requestUri: URI, roots: ReadonlyArray<URI>, uriIdentityService: IUriIdentityService): URI | undefined;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
|
|
2
2
|
import { isUNC } from '@codingame/monaco-vscode-api/vscode/vs/base/common/extpath';
|
|
3
3
|
import { Schemas } from '@codingame/monaco-vscode-api/vscode/vs/base/common/network';
|
|
4
|
-
import { normalize, sep } from '@codingame/monaco-vscode-api/vscode/vs/base/common/path';
|
|
5
4
|
import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
|
|
6
5
|
import { FileOperationError, FileOperationResult } from '@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files';
|
|
7
6
|
import { getWebviewContentMimeType } from '../../../../platform/webview/common/mimeTypes.js';
|
|
@@ -40,8 +39,8 @@ var WebviewResourceResponse;
|
|
|
40
39
|
}
|
|
41
40
|
WebviewResourceResponse.NotModified = NotModified;
|
|
42
41
|
})(WebviewResourceResponse || (WebviewResourceResponse = {}));
|
|
43
|
-
async function loadLocalResource(requestUri, options, fileService, logService, token) {
|
|
44
|
-
const resourceToLoad = getResourceToLoad(requestUri, options.roots);
|
|
42
|
+
async function loadLocalResource(requestUri, options, uriIdentityService, fileService, logService, token) {
|
|
43
|
+
const resourceToLoad = getResourceToLoad(requestUri, options.roots, uriIdentityService);
|
|
45
44
|
logService.trace(
|
|
46
45
|
`Webview.loadLocalResource - trying to load resource. requestUri=${requestUri}, resourceToLoad=${resourceToLoad}`
|
|
47
46
|
);
|
|
@@ -76,25 +75,34 @@ async function loadLocalResource(requestUri, options, fileService, logService, t
|
|
|
76
75
|
return WebviewResourceResponse.Failed;
|
|
77
76
|
}
|
|
78
77
|
}
|
|
79
|
-
function getResourceToLoad(requestUri, roots) {
|
|
78
|
+
function getResourceToLoad(requestUri, roots, uriIdentityService) {
|
|
79
|
+
const requestUriNoQueryString = requestUri.with({
|
|
80
|
+
query: ""
|
|
81
|
+
});
|
|
80
82
|
for (const root of roots) {
|
|
81
|
-
if (containsResource(root,
|
|
83
|
+
if (containsResource(root, requestUriNoQueryString, uriIdentityService)) {
|
|
82
84
|
return normalizeResourcePath(requestUri);
|
|
83
85
|
}
|
|
84
86
|
}
|
|
85
87
|
return undefined;
|
|
86
88
|
}
|
|
87
|
-
function containsResource(root, resource) {
|
|
88
|
-
if (root
|
|
89
|
+
function containsResource(root, resource, uriIdentityService) {
|
|
90
|
+
if (uriIdentityService.extUri.isEqual(root, resource, true)) {
|
|
89
91
|
return false;
|
|
90
92
|
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
93
|
+
if (root.scheme === Schemas.file && isUNC(root.fsPath)) {
|
|
94
|
+
if (resource.scheme === Schemas.file && isUNC(resource.fsPath)) {
|
|
95
|
+
return uriIdentityService.extUri.isEqualOrParent(resource.with({
|
|
96
|
+
path: resource.path.toLowerCase(),
|
|
97
|
+
authority: resource.authority.toLowerCase()
|
|
98
|
+
}), root.with({
|
|
99
|
+
path: root.path.toLowerCase(),
|
|
100
|
+
authority: root.authority.toLowerCase()
|
|
101
|
+
}), true);
|
|
102
|
+
}
|
|
103
|
+
return false;
|
|
96
104
|
}
|
|
97
|
-
return
|
|
105
|
+
return uriIdentityService.extUri.isEqualOrParent(resource, root, true);
|
|
98
106
|
}
|
|
99
107
|
function normalizeResourcePath(resource) {
|
|
100
108
|
if (resource.scheme === Schemas.vscodeRemote) {
|
|
@@ -110,4 +118,4 @@ function normalizeResourcePath(resource) {
|
|
|
110
118
|
return resource;
|
|
111
119
|
}
|
|
112
120
|
|
|
113
|
-
export { WebviewResourceResponse, loadLocalResource };
|
|
121
|
+
export { WebviewResourceResponse, getResourceToLoad, loadLocalResource };
|
|
@@ -17,6 +17,8 @@ import '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/colors/mini
|
|
|
17
17
|
import '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/colors/miscColors';
|
|
18
18
|
import '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/colors/quickpickColors';
|
|
19
19
|
import '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/colors/searchColors';
|
|
20
|
+
import { getSizeRegistry, sizeValueToCss } from '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/sizeUtils';
|
|
21
|
+
import '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/sizes/baseSizes';
|
|
20
22
|
import { ColorScheme } from '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/theme';
|
|
21
23
|
import { IWorkbenchThemeService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/themes/common/workbenchThemeService.service';
|
|
22
24
|
|
|
@@ -63,6 +65,14 @@ let WebviewThemeDataProvider = class WebviewThemeDataProvider extends Disposable
|
|
|
63
65
|
}
|
|
64
66
|
return colors;
|
|
65
67
|
}, {});
|
|
68
|
+
const sizeRegistry = getSizeRegistry();
|
|
69
|
+
const exportedSizes = sizeRegistry.getSizes().reduce((sizes, entry) => {
|
|
70
|
+
const sizeValue = sizeRegistry.resolveDefaultSize(entry.id, theme);
|
|
71
|
+
if (sizeValue) {
|
|
72
|
+
sizes["vscode-" + entry.id.replace(/\./g, "-")] = sizeValueToCss(sizeValue);
|
|
73
|
+
}
|
|
74
|
+
return sizes;
|
|
75
|
+
}, {});
|
|
66
76
|
const styles = {
|
|
67
77
|
"vscode-font-family": DEFAULT_FONT_FAMILY,
|
|
68
78
|
"vscode-font-weight": "normal",
|
|
@@ -72,6 +82,7 @@ let WebviewThemeDataProvider = class WebviewThemeDataProvider extends Disposable
|
|
|
72
82
|
"vscode-editor-font-size": editorFontSize + "px",
|
|
73
83
|
"text-link-decoration": linkUnderlines ? "underline" : "none",
|
|
74
84
|
...exportedColors,
|
|
85
|
+
...exportedSizes,
|
|
75
86
|
"vscode-editor-font-feature-settings": editorFontLigatures
|
|
76
87
|
};
|
|
77
88
|
const activeTheme = ApiThemeClassName.fromTheme(theme);
|
|
@@ -15,6 +15,7 @@ import { ILogService } from "@codingame/monaco-vscode-api/vscode/vs/platform/log
|
|
|
15
15
|
import { INotificationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/notification/common/notification.service";
|
|
16
16
|
import { IRemoteAuthorityResolverService } from "@codingame/monaco-vscode-api/vscode/vs/platform/remote/common/remoteAuthorityResolver.service";
|
|
17
17
|
import { ITunnelService } from "@codingame/monaco-vscode-api/vscode/vs/platform/tunnel/common/tunnel.service";
|
|
18
|
+
import { IUriIdentityService } from "@codingame/monaco-vscode-api/vscode/vs/platform/uriIdentity/common/uriIdentity.service";
|
|
18
19
|
import { IWorkbenchEnvironmentService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/environment/common/environmentService.service";
|
|
19
20
|
import { WebviewThemeDataProvider } from "./themeing.js";
|
|
20
21
|
import { IWebviewElement, WebviewContentOptions, WebviewExtensionDescription, WebviewInitInfo, WebviewMessageReceivedEvent } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/webview/browser/webview";
|
|
@@ -27,6 +28,7 @@ export declare class WebviewElement extends Disposable implements IWebviewElemen
|
|
|
27
28
|
private readonly _remoteAuthorityResolverService;
|
|
28
29
|
private readonly _tunnelService;
|
|
29
30
|
private readonly _accessibilityService;
|
|
31
|
+
private readonly _uriIdentityService;
|
|
30
32
|
protected readonly id: string;
|
|
31
33
|
/**
|
|
32
34
|
* The provided identifier of this webview.
|
|
@@ -66,7 +68,7 @@ export declare class WebviewElement extends Disposable implements IWebviewElemen
|
|
|
66
68
|
private _disposed;
|
|
67
69
|
extension: WebviewExtensionDescription | undefined;
|
|
68
70
|
private readonly _options;
|
|
69
|
-
constructor(initInfo: WebviewInitInfo, webviewThemeDataProvider: WebviewThemeDataProvider, configurationService: IConfigurationService, contextMenuService: IContextMenuService, notificationService: INotificationService, _environmentService: IWorkbenchEnvironmentService, _fileService: IFileService, _logService: ILogService, _remoteAuthorityResolverService: IRemoteAuthorityResolverService, _tunnelService: ITunnelService, instantiationService: IInstantiationService, _accessibilityService: IAccessibilityService);
|
|
71
|
+
constructor(initInfo: WebviewInitInfo, webviewThemeDataProvider: WebviewThemeDataProvider, configurationService: IConfigurationService, contextMenuService: IContextMenuService, notificationService: INotificationService, _environmentService: IWorkbenchEnvironmentService, _fileService: IFileService, _logService: ILogService, _remoteAuthorityResolverService: IRemoteAuthorityResolverService, _tunnelService: ITunnelService, instantiationService: IInstantiationService, _accessibilityService: IAccessibilityService, _uriIdentityService: IUriIdentityService);
|
|
70
72
|
dispose(): void;
|
|
71
73
|
setContextKeyService(contextKeyService: IContextKeyService): void;
|
|
72
74
|
private readonly _onMissingCsp;
|