@theia/scm 1.75.0-next.8 → 1.75.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/lib/browser/decorations/scm-navigator-decorator.d.ts.map +1 -1
- package/lib/browser/decorations/scm-navigator-decorator.js +1 -0
- package/lib/browser/decorations/scm-navigator-decorator.js.map +1 -1
- package/lib/browser/merge-editor/view/merge-editor-panes/merge-editor-pane-header.js +7 -10
- package/lib/browser/merge-editor/view/merge-editor-panes/merge-editor-pane-header.js.map +1 -1
- package/lib/browser/scm-action-button-widget.js +10 -15
- package/lib/browser/scm-action-button-widget.js.map +1 -1
- package/lib/browser/scm-amend-component.js +24 -57
- package/lib/browser/scm-amend-component.js.map +1 -1
- package/lib/browser/scm-commit-widget.d.ts +1 -1
- package/lib/browser/scm-commit-widget.d.ts.map +1 -1
- package/lib/browser/scm-commit-widget.js +9 -10
- package/lib/browser/scm-commit-widget.js.map +1 -1
- package/lib/browser/scm-context-key-service.d.ts +2 -0
- package/lib/browser/scm-context-key-service.d.ts.map +1 -1
- package/lib/browser/scm-context-key-service.js +4 -0
- package/lib/browser/scm-context-key-service.js.map +1 -1
- package/lib/browser/scm-context-key-service.spec.js +7 -0
- package/lib/browser/scm-context-key-service.spec.js.map +1 -1
- package/lib/browser/scm-frontend-module.d.ts.map +1 -1
- package/lib/browser/scm-frontend-module.js +6 -0
- package/lib/browser/scm-frontend-module.js.map +1 -1
- package/lib/browser/scm-history-graph-contribution.d.ts +49 -0
- package/lib/browser/scm-history-graph-contribution.d.ts.map +1 -0
- package/lib/browser/scm-history-graph-contribution.js +280 -0
- package/lib/browser/scm-history-graph-contribution.js.map +1 -0
- package/lib/browser/scm-history-graph-contribution.spec.d.ts +2 -0
- package/lib/browser/scm-history-graph-contribution.spec.d.ts.map +1 -0
- package/lib/browser/scm-history-graph-contribution.spec.js +119 -0
- package/lib/browser/scm-history-graph-contribution.spec.js.map +1 -0
- package/lib/browser/scm-history-graph-helpers.d.ts +59 -6
- package/lib/browser/scm-history-graph-helpers.d.ts.map +1 -1
- package/lib/browser/scm-history-graph-helpers.js +129 -5
- package/lib/browser/scm-history-graph-helpers.js.map +1 -1
- package/lib/browser/scm-history-graph-helpers.spec.d.ts +2 -0
- package/lib/browser/scm-history-graph-helpers.spec.d.ts.map +1 -0
- package/lib/browser/scm-history-graph-helpers.spec.js +154 -0
- package/lib/browser/scm-history-graph-helpers.spec.js.map +1 -0
- package/lib/browser/scm-history-graph-lanes.d.ts +19 -5
- package/lib/browser/scm-history-graph-lanes.d.ts.map +1 -1
- package/lib/browser/scm-history-graph-lanes.js +25 -9
- package/lib/browser/scm-history-graph-lanes.js.map +1 -1
- package/lib/browser/scm-history-graph-lanes.spec.js +62 -25
- package/lib/browser/scm-history-graph-lanes.spec.js.map +1 -1
- package/lib/browser/scm-history-graph-model.d.ts +75 -6
- package/lib/browser/scm-history-graph-model.d.ts.map +1 -1
- package/lib/browser/scm-history-graph-model.js +155 -10
- package/lib/browser/scm-history-graph-model.js.map +1 -1
- package/lib/browser/scm-history-graph-model.spec.js +299 -4
- package/lib/browser/scm-history-graph-model.spec.js.map +1 -1
- package/lib/browser/scm-history-graph-tooltip.d.ts +27 -2
- package/lib/browser/scm-history-graph-tooltip.d.ts.map +1 -1
- package/lib/browser/scm-history-graph-tooltip.js +113 -22
- package/lib/browser/scm-history-graph-tooltip.js.map +1 -1
- package/lib/browser/scm-history-graph-tooltip.spec.d.ts +2 -0
- package/lib/browser/scm-history-graph-tooltip.spec.d.ts.map +1 -0
- package/lib/browser/scm-history-graph-tooltip.spec.js +213 -0
- package/lib/browser/scm-history-graph-tooltip.spec.js.map +1 -0
- package/lib/browser/scm-history-graph-widget.d.ts +36 -2
- package/lib/browser/scm-history-graph-widget.d.ts.map +1 -1
- package/lib/browser/scm-history-graph-widget.js +174 -67
- package/lib/browser/scm-history-graph-widget.js.map +1 -1
- package/lib/browser/scm-history-graph-widget.spec.d.ts +2 -0
- package/lib/browser/scm-history-graph-widget.spec.d.ts.map +1 -0
- package/lib/browser/scm-history-graph-widget.spec.js +273 -0
- package/lib/browser/scm-history-graph-widget.spec.js.map +1 -0
- package/lib/browser/scm-provider.d.ts +9 -1
- package/lib/browser/scm-provider.d.ts.map +1 -1
- package/lib/browser/scm-provider.js.map +1 -1
- package/lib/browser/scm-repositories-widget.js +12 -21
- package/lib/browser/scm-repositories-widget.js.map +1 -1
- package/lib/browser/scm-tree-widget.js +35 -53
- package/lib/browser/scm-tree-widget.js.map +1 -1
- package/lib/common/scm-preferences.d.ts +3 -0
- package/lib/common/scm-preferences.d.ts.map +1 -1
- package/lib/common/scm-preferences.js +24 -0
- package/lib/common/scm-preferences.js.map +1 -1
- package/package.json +7 -7
- package/src/browser/decorations/scm-navigator-decorator.ts +3 -2
- package/src/browser/scm-context-key-service.spec.ts +9 -0
- package/src/browser/scm-context-key-service.ts +6 -0
- package/src/browser/scm-frontend-module.ts +7 -1
- package/src/browser/scm-history-graph-contribution.spec.ts +148 -0
- package/src/browser/scm-history-graph-contribution.ts +273 -0
- package/src/browser/scm-history-graph-helpers.spec.ts +193 -0
- package/src/browser/scm-history-graph-helpers.ts +180 -6
- package/src/browser/scm-history-graph-lanes.spec.ts +70 -25
- package/src/browser/scm-history-graph-lanes.ts +48 -11
- package/src/browser/scm-history-graph-model.spec.ts +378 -12
- package/src/browser/scm-history-graph-model.ts +181 -13
- package/src/browser/scm-history-graph-tooltip.spec.ts +254 -0
- package/src/browser/scm-history-graph-tooltip.ts +144 -24
- package/src/browser/scm-history-graph-widget.spec.ts +322 -0
- package/src/browser/scm-history-graph-widget.tsx +199 -39
- package/src/browser/scm-provider.ts +9 -1
- package/src/browser/style/scm-history-graph.css +53 -2
- package/src/common/scm-preferences.ts +27 -0
|
@@ -19,8 +19,10 @@ exports.formatRelativeTime = formatRelativeTime;
|
|
|
19
19
|
exports.formatAbsoluteDate = formatAbsoluteDate;
|
|
20
20
|
exports.appendIconText = appendIconText;
|
|
21
21
|
exports.createHoverHr = createHoverHr;
|
|
22
|
+
exports.buildProviderTooltip = buildProviderTooltip;
|
|
22
23
|
exports.buildTooltipRefBadge = buildTooltipRefBadge;
|
|
23
24
|
exports.buildHtmlTooltip = buildHtmlTooltip;
|
|
25
|
+
const markdown_link_handler_1 = require("@theia/core/lib/browser/markdown-rendering/markdown-link-handler");
|
|
24
26
|
const markdown_string_1 = require("@theia/core/lib/common/markdown-rendering/markdown-string");
|
|
25
27
|
const widget_1 = require("@theia/core/lib/browser/widgets/widget");
|
|
26
28
|
const nls_1 = require("@theia/core/lib/common/nls");
|
|
@@ -73,6 +75,85 @@ function appendIconText(container, iconName, text) {
|
|
|
73
75
|
function createHoverHr() {
|
|
74
76
|
return document.createElement('hr');
|
|
75
77
|
}
|
|
78
|
+
/**
|
|
79
|
+
* Renders the hover content supplied by the history provider, if any.
|
|
80
|
+
*
|
|
81
|
+
* Providers own their hover: `vscode.git`, for example, sends the same content as the blame
|
|
82
|
+
* editor decoration hover, including the author `mailto:` link and the "Open Commit",
|
|
83
|
+
* "Copy Commit Hash" and remote (e.g. "Open on GitHub") command links. Rendering it verbatim
|
|
84
|
+
* keeps those actions working without the graph having to know any provider-specific command.
|
|
85
|
+
*
|
|
86
|
+
* Each section is rendered and wired separately so that a section only authorizes the commands
|
|
87
|
+
* declared in its own {@link MarkdownString.isTrusted}. Sections are rendered as given, without
|
|
88
|
+
* separators of our own: a provider that owns its hover also owns how its sections are delimited,
|
|
89
|
+
* and `vscode.git` for one already ends them with a horizontal rule.
|
|
90
|
+
*
|
|
91
|
+
* @returns the rendered element, or `undefined` if the provider supplied no usable content.
|
|
92
|
+
*/
|
|
93
|
+
function buildProviderTooltip(tooltip, markdownRenderer, openerService, disposables) {
|
|
94
|
+
const sections = (typeof tooltip === 'string' ? [new markdown_string_1.MarkdownStringImpl(tooltip)] : Array.isArray(tooltip) ? tooltip : [tooltip])
|
|
95
|
+
.filter(section => section.value.trim().length > 0);
|
|
96
|
+
if (sections.length === 0) {
|
|
97
|
+
return undefined;
|
|
98
|
+
}
|
|
99
|
+
const container = document.createElement('div');
|
|
100
|
+
container.className = 'scm-history-tooltip';
|
|
101
|
+
for (const section of sections) {
|
|
102
|
+
const rendered = markdownRenderer.render(section);
|
|
103
|
+
disposables.push(rendered);
|
|
104
|
+
disposables.push((0, markdown_link_handler_1.wireMarkdownLinkHandler)(rendered.element, section, openerService));
|
|
105
|
+
container.appendChild(rendered.element);
|
|
106
|
+
}
|
|
107
|
+
return container;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Appends the author part of the tooltip header: the avatar image (or account
|
|
111
|
+
* icon) followed by the bold author name, linked via `mailto:` when the email
|
|
112
|
+
* is known — the same structure as the git blame editor decoration hover.
|
|
113
|
+
*/
|
|
114
|
+
function appendAuthor(container, item) {
|
|
115
|
+
if (item.authorIcon && (item.authorIcon.startsWith('http://') || item.authorIcon.startsWith('https://'))) {
|
|
116
|
+
const avatar = document.createElement('img');
|
|
117
|
+
avatar.className = 'scm-history-tooltip-avatar';
|
|
118
|
+
avatar.src = item.authorIcon;
|
|
119
|
+
container.appendChild(avatar);
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
const icon = document.createElement('i');
|
|
123
|
+
icon.className = (0, widget_1.codicon)('account') + ' icon-inline';
|
|
124
|
+
container.appendChild(icon);
|
|
125
|
+
}
|
|
126
|
+
container.appendChild(document.createTextNode(' '));
|
|
127
|
+
const name = document.createElement('strong');
|
|
128
|
+
name.textContent = item.author;
|
|
129
|
+
if (item.authorEmail) {
|
|
130
|
+
const link = document.createElement('a');
|
|
131
|
+
link.href = `mailto:${item.authorEmail}`;
|
|
132
|
+
link.appendChild(name);
|
|
133
|
+
container.appendChild(link);
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
container.appendChild(name);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
/** Creates a clickable tooltip action (icon + optional label). */
|
|
140
|
+
function createTooltipAction(title, iconName, label, onClick) {
|
|
141
|
+
const action = document.createElement('a');
|
|
142
|
+
action.className = 'scm-history-tooltip-action';
|
|
143
|
+
action.title = title;
|
|
144
|
+
action.setAttribute('role', 'button');
|
|
145
|
+
const icon = document.createElement('i');
|
|
146
|
+
icon.className = (0, widget_1.codicon)(iconName) + ' icon-inline';
|
|
147
|
+
action.appendChild(icon);
|
|
148
|
+
if (label) {
|
|
149
|
+
action.appendChild(document.createTextNode(` ${label}`));
|
|
150
|
+
}
|
|
151
|
+
action.onclick = e => {
|
|
152
|
+
e.preventDefault();
|
|
153
|
+
onClick();
|
|
154
|
+
};
|
|
155
|
+
return action;
|
|
156
|
+
}
|
|
76
157
|
/** Creates a ref badge element for the HTML tooltip. */
|
|
77
158
|
function buildTooltipRefBadge(ref, iconClass, showText, bgColor, extraClass) {
|
|
78
159
|
const badge = document.createElement('span');
|
|
@@ -91,26 +172,25 @@ function buildTooltipRefBadge(ref, iconClass, showText, bgColor, extraClass) {
|
|
|
91
172
|
}
|
|
92
173
|
return badge;
|
|
93
174
|
}
|
|
94
|
-
function buildHtmlTooltip(entry, markdownRenderer) {
|
|
175
|
+
function buildHtmlTooltip(entry, markdownRenderer, provider, actions) {
|
|
95
176
|
const { item } = entry;
|
|
96
177
|
const badgeColor = (0, scm_history_graph_helpers_1.laneColor)(entry.graphRow.color);
|
|
97
178
|
const container = document.createElement('div');
|
|
98
179
|
container.className = 'scm-history-tooltip';
|
|
99
|
-
// Header
|
|
180
|
+
// Header - avatar/account icon, bold author (mailto link), relative + absolute date,
|
|
181
|
+
// matching the git blame editor decoration hover
|
|
100
182
|
if (item.author || item.timestamp !== undefined) {
|
|
101
183
|
const header = document.createElement('div');
|
|
102
184
|
header.className = 'scm-history-tooltip-header';
|
|
103
|
-
header.style.fontWeight = 'bold';
|
|
104
|
-
header.style.marginBottom = '4px';
|
|
105
185
|
if (item.author) {
|
|
106
|
-
|
|
186
|
+
appendAuthor(header, item);
|
|
107
187
|
}
|
|
108
188
|
if (item.timestamp !== undefined) {
|
|
109
189
|
if (item.author) {
|
|
110
|
-
header.appendChild(document.createTextNode('
|
|
190
|
+
header.appendChild(document.createTextNode(',\u00a0'));
|
|
111
191
|
}
|
|
112
192
|
const timeSpan = document.createElement('span');
|
|
113
|
-
appendIconText(timeSpan, '
|
|
193
|
+
appendIconText(timeSpan, 'history', `${formatRelativeTime(item.timestamp)} (${formatAbsoluteDate(item.timestamp)})`);
|
|
114
194
|
header.appendChild(timeSpan);
|
|
115
195
|
}
|
|
116
196
|
container.appendChild(header);
|
|
@@ -150,8 +230,10 @@ function buildHtmlTooltip(entry, markdownRenderer) {
|
|
|
150
230
|
container.appendChild(stats);
|
|
151
231
|
}
|
|
152
232
|
// Refs + hash
|
|
233
|
+
const shortHash = item.displayId ?? item.id.substring(0, 7);
|
|
234
|
+
const hasActions = !!(actions?.openCommit || actions?.copyCommitHash);
|
|
153
235
|
const hasRefs = item.references && item.references.length > 0;
|
|
154
|
-
if (hasRefs || item.displayId) {
|
|
236
|
+
if (hasRefs || (!hasActions && item.displayId)) {
|
|
155
237
|
container.appendChild(createHoverHr());
|
|
156
238
|
const refsRow = document.createElement('div');
|
|
157
239
|
refsRow.className = 'scm-history-tooltip-refs';
|
|
@@ -162,29 +244,38 @@ function buildHtmlTooltip(entry, markdownRenderer) {
|
|
|
162
244
|
if (hasRefs) {
|
|
163
245
|
const deduplicated = (0, scm_history_graph_helpers_1.deduplicateRefs)(item.references);
|
|
164
246
|
for (const { ref, hasBoth } of deduplicated) {
|
|
165
|
-
|
|
166
|
-
const
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
refsRow.appendChild(buildTooltipRefBadge(ref, 'codicon-cloud', true, badgeColor));
|
|
172
|
-
}
|
|
173
|
-
else {
|
|
174
|
-
refsRow.appendChild(buildTooltipRefBadge(ref, 'codicon-git-branch', true, badgeColor));
|
|
175
|
-
if (hasBoth) {
|
|
176
|
-
refsRow.appendChild(buildTooltipRefBadge(ref, 'codicon-cloud', false, badgeColor, 'scm-history-ref-badge-cloud'));
|
|
177
|
-
}
|
|
247
|
+
// Current/remote/base refs are colored by role, others by the row's lane color
|
|
248
|
+
const { iconClass, colorIndex } = (0, scm_history_graph_helpers_1.getRefBadgePresentation)(ref, provider);
|
|
249
|
+
const bgColor = colorIndex !== undefined ? (0, scm_history_graph_helpers_1.laneColor)(colorIndex) : badgeColor;
|
|
250
|
+
refsRow.appendChild(buildTooltipRefBadge(ref, iconClass, true, bgColor));
|
|
251
|
+
if (!(0, scm_history_graph_helpers_1.isTagRef)(ref) && !(0, scm_history_graph_helpers_1.isRemoteRef)(ref) && hasBoth) {
|
|
252
|
+
refsRow.appendChild(buildTooltipRefBadge(ref, 'codicon-cloud', false, bgColor, 'scm-history-ref-badge-cloud'));
|
|
178
253
|
}
|
|
179
254
|
}
|
|
180
255
|
}
|
|
181
|
-
if (item.displayId) {
|
|
256
|
+
if (!hasActions && item.displayId) {
|
|
182
257
|
const hash = document.createElement('code');
|
|
183
258
|
hash.textContent = item.displayId;
|
|
184
259
|
refsRow.appendChild(hash);
|
|
185
260
|
}
|
|
186
261
|
container.appendChild(refsRow);
|
|
187
262
|
}
|
|
263
|
+
// Actions — commit hash and copy, matching the git blame hover's command links
|
|
264
|
+
if (hasActions) {
|
|
265
|
+
container.appendChild(createHoverHr());
|
|
266
|
+
const actionsRow = document.createElement('div');
|
|
267
|
+
actionsRow.className = 'scm-history-tooltip-actions';
|
|
268
|
+
if (actions?.openCommit) {
|
|
269
|
+
actionsRow.appendChild(createTooltipAction(nls_1.nls.localize('theia/scm/openCommit', 'Open Commit'), 'git-commit', shortHash, actions.openCommit));
|
|
270
|
+
}
|
|
271
|
+
if (actions?.copyCommitHash) {
|
|
272
|
+
if (actions.openCommit) {
|
|
273
|
+
actionsRow.appendChild(document.createTextNode(' '));
|
|
274
|
+
}
|
|
275
|
+
actionsRow.appendChild(createTooltipAction(nls_1.nls.localize('theia/scm/copyCommitHash', 'Copy Commit Hash'), 'copy', undefined, actions.copyCommitHash));
|
|
276
|
+
}
|
|
277
|
+
container.appendChild(actionsRow);
|
|
278
|
+
}
|
|
188
279
|
return container;
|
|
189
280
|
}
|
|
190
281
|
//# sourceMappingURL=scm-history-graph-tooltip.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scm-history-graph-tooltip.js","sourceRoot":"","sources":["../../src/browser/scm-history-graph-tooltip.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"scm-history-graph-tooltip.js","sourceRoot":"","sources":["../../src/browser/scm-history-graph-tooltip.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scm-history-graph-tooltip.spec.d.ts","sourceRoot":"","sources":["../../src/browser/scm-history-graph-tooltip.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// *****************************************************************************
|
|
3
|
+
// Copyright (C) 2026 Safi Seid-Ahmad, K2view and others.
|
|
4
|
+
//
|
|
5
|
+
// This program and the accompanying materials are made available under the
|
|
6
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
7
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
8
|
+
//
|
|
9
|
+
// This Source Code may also be made available under the following Secondary
|
|
10
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
11
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
12
|
+
// with the GNU Classpath Exception which is available at
|
|
13
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
14
|
+
//
|
|
15
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
|
+
// *****************************************************************************
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
const jsdom_1 = require("@theia/core/lib/browser/test/jsdom");
|
|
19
|
+
const disableJSDOM = (0, jsdom_1.enableJSDOM)();
|
|
20
|
+
const chai_1 = require("chai");
|
|
21
|
+
const markdown_string_1 = require("@theia/core/lib/common/markdown-rendering/markdown-string");
|
|
22
|
+
const markdown_link_handler_1 = require("@theia/core/lib/browser/markdown-rendering/markdown-link-handler");
|
|
23
|
+
const disposable_1 = require("@theia/core/lib/common/disposable");
|
|
24
|
+
const scm_history_graph_tooltip_1 = require("./scm-history-graph-tooltip");
|
|
25
|
+
disableJSDOM();
|
|
26
|
+
function makeEntry(item) {
|
|
27
|
+
return {
|
|
28
|
+
item: {
|
|
29
|
+
id: '1a56ba96fdc9b6df3a230df7b44e22e5785e3abd',
|
|
30
|
+
subject: 'fix something',
|
|
31
|
+
parentIds: [],
|
|
32
|
+
...item,
|
|
33
|
+
},
|
|
34
|
+
graphRow: { lane: 0, color: 0, topColor: 0, edges: [], hasContinuation: false, hasTopLine: false },
|
|
35
|
+
isCurrent: false,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
const markdownRenderer = {
|
|
39
|
+
render: () => ({ element: document.createElement('div'), dispose: () => { } })
|
|
40
|
+
};
|
|
41
|
+
describe('buildHtmlTooltip', () => {
|
|
42
|
+
let restoreJSDOM;
|
|
43
|
+
before(() => {
|
|
44
|
+
restoreJSDOM = (0, jsdom_1.enableJSDOM)();
|
|
45
|
+
});
|
|
46
|
+
after(() => {
|
|
47
|
+
restoreJSDOM();
|
|
48
|
+
});
|
|
49
|
+
it('renders the author as a bold mailto link when the email is known', () => {
|
|
50
|
+
const tooltip = (0, scm_history_graph_tooltip_1.buildHtmlTooltip)(makeEntry({ author: 'Jane Doe', authorEmail: 'jane@example.com', timestamp: 1000 }), markdownRenderer);
|
|
51
|
+
const link = tooltip.querySelector('a[href="mailto:jane@example.com"]');
|
|
52
|
+
(0, chai_1.expect)(link, 'mailto link').to.not.be.null;
|
|
53
|
+
(0, chai_1.expect)(link.textContent).to.contain('Jane Doe');
|
|
54
|
+
(0, chai_1.expect)(link.querySelector('strong'), 'bold author').to.not.be.null;
|
|
55
|
+
});
|
|
56
|
+
it('renders a plain bold author when no email is known', () => {
|
|
57
|
+
const tooltip = (0, scm_history_graph_tooltip_1.buildHtmlTooltip)(makeEntry({ author: 'Jane Doe', timestamp: 1000 }), markdownRenderer);
|
|
58
|
+
(0, chai_1.expect)(tooltip.querySelector('a[href^="mailto:"]')).to.be.null;
|
|
59
|
+
const strong = tooltip.querySelector('.scm-history-tooltip-header strong');
|
|
60
|
+
(0, chai_1.expect)(strong).to.not.be.null;
|
|
61
|
+
(0, chai_1.expect)(strong.textContent).to.equal('Jane Doe');
|
|
62
|
+
});
|
|
63
|
+
it('renders the author avatar image when authorIcon is a URL', () => {
|
|
64
|
+
const tooltip = (0, scm_history_graph_tooltip_1.buildHtmlTooltip)(makeEntry({ author: 'Jane Doe', authorIcon: 'https://avatars.example.com/u/1' }), markdownRenderer);
|
|
65
|
+
const img = tooltip.querySelector('img.scm-history-tooltip-avatar');
|
|
66
|
+
(0, chai_1.expect)(img, 'avatar image').to.not.be.null;
|
|
67
|
+
(0, chai_1.expect)(img.src).to.equal('https://avatars.example.com/u/1');
|
|
68
|
+
});
|
|
69
|
+
it('falls back to the account icon without an avatar', () => {
|
|
70
|
+
const tooltip = (0, scm_history_graph_tooltip_1.buildHtmlTooltip)(makeEntry({ author: 'Jane Doe' }), markdownRenderer);
|
|
71
|
+
(0, chai_1.expect)(tooltip.querySelector('img.scm-history-tooltip-avatar')).to.be.null;
|
|
72
|
+
(0, chai_1.expect)(tooltip.querySelector('.scm-history-tooltip-header .codicon-account')).to.not.be.null;
|
|
73
|
+
});
|
|
74
|
+
it('renders an Open Commit action with the short hash', () => {
|
|
75
|
+
let opened = 0;
|
|
76
|
+
const actions = { openCommit: () => { opened++; } };
|
|
77
|
+
const tooltip = (0, scm_history_graph_tooltip_1.buildHtmlTooltip)(makeEntry({ displayId: '1a56ba9' }), markdownRenderer, undefined, actions);
|
|
78
|
+
const action = tooltip.querySelector('[title="Open Commit"]');
|
|
79
|
+
(0, chai_1.expect)(action, 'open commit action').to.not.be.null;
|
|
80
|
+
(0, chai_1.expect)(action.textContent).to.contain('1a56ba9');
|
|
81
|
+
action.click();
|
|
82
|
+
(0, chai_1.expect)(opened).to.equal(1);
|
|
83
|
+
});
|
|
84
|
+
it('renders a Copy Commit Hash action', () => {
|
|
85
|
+
let copied = 0;
|
|
86
|
+
const actions = { copyCommitHash: () => { copied++; } };
|
|
87
|
+
const tooltip = (0, scm_history_graph_tooltip_1.buildHtmlTooltip)(makeEntry({}), markdownRenderer, undefined, actions);
|
|
88
|
+
const action = tooltip.querySelector('[title="Copy Commit Hash"]');
|
|
89
|
+
(0, chai_1.expect)(action, 'copy hash action').to.not.be.null;
|
|
90
|
+
action.click();
|
|
91
|
+
(0, chai_1.expect)(copied).to.equal(1);
|
|
92
|
+
});
|
|
93
|
+
it('shows the short hash as plain text when no actions are given', () => {
|
|
94
|
+
const tooltip = (0, scm_history_graph_tooltip_1.buildHtmlTooltip)(makeEntry({ displayId: '1a56ba9' }), markdownRenderer);
|
|
95
|
+
(0, chai_1.expect)(tooltip.querySelector('[title="Open Commit"]')).to.be.null;
|
|
96
|
+
(0, chai_1.expect)(tooltip.querySelector('[title="Copy Commit Hash"]')).to.be.null;
|
|
97
|
+
(0, chai_1.expect)(tooltip.textContent).to.contain('1a56ba9');
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
describe('buildProviderTooltip', () => {
|
|
101
|
+
let restoreJSDOM;
|
|
102
|
+
let opened;
|
|
103
|
+
let toDispose;
|
|
104
|
+
/** Renders the markdown value as HTML, so that the wiring of the resulting links can be asserted. */
|
|
105
|
+
const htmlRenderer = {
|
|
106
|
+
render: (markdown) => {
|
|
107
|
+
const element = document.createElement('div');
|
|
108
|
+
element.innerHTML = markdown.value;
|
|
109
|
+
return { element, dispose: () => { } };
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
const openerService = {
|
|
113
|
+
getOpener: (uri) => Promise.resolve({
|
|
114
|
+
canHandle: () => 1,
|
|
115
|
+
open: () => {
|
|
116
|
+
// decoded, as `HttpOpenHandler` does when opening the target externally
|
|
117
|
+
opened.push(uri.toString(true));
|
|
118
|
+
return Promise.resolve(undefined);
|
|
119
|
+
}
|
|
120
|
+
})
|
|
121
|
+
};
|
|
122
|
+
/** Clicks the anchor and waits for the asynchronous opener lookup to settle. */
|
|
123
|
+
async function click(tooltip, selector) {
|
|
124
|
+
const anchor = tooltip.querySelector(selector);
|
|
125
|
+
(0, chai_1.expect)(anchor, selector).to.not.be.null;
|
|
126
|
+
anchor.dispatchEvent(new MouseEvent('click', { bubbles: true, cancelable: true }));
|
|
127
|
+
await new Promise(resolve => setTimeout(resolve, 0));
|
|
128
|
+
}
|
|
129
|
+
before(() => {
|
|
130
|
+
restoreJSDOM = (0, jsdom_1.enableJSDOM)();
|
|
131
|
+
});
|
|
132
|
+
after(() => {
|
|
133
|
+
restoreJSDOM();
|
|
134
|
+
});
|
|
135
|
+
beforeEach(() => {
|
|
136
|
+
opened = [];
|
|
137
|
+
toDispose = new disposable_1.DisposableCollection();
|
|
138
|
+
});
|
|
139
|
+
afterEach(() => {
|
|
140
|
+
toDispose.dispose();
|
|
141
|
+
});
|
|
142
|
+
it('renders each section in order', () => {
|
|
143
|
+
const tooltip = (0, scm_history_graph_tooltip_1.buildProviderTooltip)([new markdown_string_1.MarkdownStringImpl('<span>first</span>'), new markdown_string_1.MarkdownStringImpl('<span>second</span>')], htmlRenderer, openerService, toDispose);
|
|
144
|
+
(0, chai_1.expect)(tooltip, 'tooltip').to.not.be.undefined;
|
|
145
|
+
(0, chai_1.expect)(tooltip.textContent).to.equal('firstsecond');
|
|
146
|
+
});
|
|
147
|
+
// `vscode.git` ends its author and statistics sections with a horizontal rule of its own,
|
|
148
|
+
// so adding separators here would render every boundary as a double line.
|
|
149
|
+
it('adds no separators of its own between sections', () => {
|
|
150
|
+
const tooltip = (0, scm_history_graph_tooltip_1.buildProviderTooltip)([new markdown_string_1.MarkdownStringImpl('<span>first</span><hr>'), new markdown_string_1.MarkdownStringImpl('<span>second</span>')], htmlRenderer, openerService, toDispose);
|
|
151
|
+
(0, chai_1.expect)(tooltip.querySelectorAll('hr').length, 'rules').to.equal(1);
|
|
152
|
+
});
|
|
153
|
+
it('renders a plain string tooltip', () => {
|
|
154
|
+
const tooltip = (0, scm_history_graph_tooltip_1.buildProviderTooltip)('just text', htmlRenderer, openerService, toDispose);
|
|
155
|
+
(0, chai_1.expect)(tooltip, 'tooltip').to.not.be.undefined;
|
|
156
|
+
(0, chai_1.expect)(tooltip.textContent).to.equal('just text');
|
|
157
|
+
});
|
|
158
|
+
it('returns undefined when the provider supplies no usable content', () => {
|
|
159
|
+
(0, chai_1.expect)((0, scm_history_graph_tooltip_1.buildProviderTooltip)(' ', htmlRenderer, openerService, toDispose)).to.be.undefined;
|
|
160
|
+
(0, chai_1.expect)((0, scm_history_graph_tooltip_1.buildProviderTooltip)([], htmlRenderer, openerService, toDispose)).to.be.undefined;
|
|
161
|
+
});
|
|
162
|
+
it('routes an author mailto link through the opener service', async () => {
|
|
163
|
+
const tooltip = (0, scm_history_graph_tooltip_1.buildProviderTooltip)(new markdown_string_1.MarkdownStringImpl('<a href="mailto:jane@example.com">Jane Doe</a>'), htmlRenderer, openerService, toDispose);
|
|
164
|
+
await click(tooltip, 'a[href^="mailto:"]');
|
|
165
|
+
(0, chai_1.expect)(opened).to.deep.equal(['mailto:jane@example.com']);
|
|
166
|
+
});
|
|
167
|
+
it('executes a command link that the section trusts', async () => {
|
|
168
|
+
const section = new markdown_string_1.MarkdownStringImpl('<a href="command:git.viewCommit">Open Commit</a>');
|
|
169
|
+
section.isTrusted = { enabledCommands: ['git.viewCommit'] };
|
|
170
|
+
const tooltip = (0, scm_history_graph_tooltip_1.buildProviderTooltip)(section, htmlRenderer, openerService, toDispose);
|
|
171
|
+
await click(tooltip, 'a[href^="command:"]');
|
|
172
|
+
(0, chai_1.expect)(opened).to.deep.equal(['command:git.viewCommit']);
|
|
173
|
+
});
|
|
174
|
+
it('blocks a command link that the section does not trust', async () => {
|
|
175
|
+
const section = new markdown_string_1.MarkdownStringImpl('<a href="command:git.viewCommit">Open Commit</a>');
|
|
176
|
+
section.isTrusted = { enabledCommands: ['git.copyContentToClipboard'] };
|
|
177
|
+
const tooltip = (0, scm_history_graph_tooltip_1.buildProviderTooltip)(section, htmlRenderer, openerService, toDispose);
|
|
178
|
+
await click(tooltip, 'a[href^="command:"]');
|
|
179
|
+
(0, chai_1.expect)(opened).to.be.empty;
|
|
180
|
+
});
|
|
181
|
+
it('does not open a link twice when the renderer already wired it', async () => {
|
|
182
|
+
// The Monaco-based renderer used at runtime routes link activation through the opener
|
|
183
|
+
// service itself, so wiring a second handler on top would open every link twice.
|
|
184
|
+
const wiringRenderer = {
|
|
185
|
+
render: (markdown) => {
|
|
186
|
+
const element = document.createElement('div');
|
|
187
|
+
element.innerHTML = markdown.value;
|
|
188
|
+
(0, markdown_link_handler_1.markMarkdownLinksWired)(element);
|
|
189
|
+
element.addEventListener('click', event => {
|
|
190
|
+
event.preventDefault();
|
|
191
|
+
opened.push(event.target.getAttribute('href'));
|
|
192
|
+
});
|
|
193
|
+
return { element, dispose: () => { } };
|
|
194
|
+
}
|
|
195
|
+
};
|
|
196
|
+
const section = new markdown_string_1.MarkdownStringImpl('<a href="command:git.viewCommit">Open Commit</a>');
|
|
197
|
+
section.isTrusted = { enabledCommands: ['git.viewCommit'] };
|
|
198
|
+
const tooltip = (0, scm_history_graph_tooltip_1.buildProviderTooltip)(section, wiringRenderer, openerService, toDispose);
|
|
199
|
+
await click(tooltip, 'a[href^="command:"]');
|
|
200
|
+
(0, chai_1.expect)(opened).to.deep.equal(['command:git.viewCommit']);
|
|
201
|
+
});
|
|
202
|
+
it('does not let one section authorize another section\'s commands', async () => {
|
|
203
|
+
const untrusted = new markdown_string_1.MarkdownStringImpl('<a id="untrusted" href="command:git.viewCommit">Open Commit</a>');
|
|
204
|
+
const trusted = new markdown_string_1.MarkdownStringImpl('<a id="trusted" href="command:git.copyContentToClipboard">Copy</a>');
|
|
205
|
+
trusted.isTrusted = { enabledCommands: ['git.copyContentToClipboard'] };
|
|
206
|
+
const tooltip = (0, scm_history_graph_tooltip_1.buildProviderTooltip)([untrusted, trusted], htmlRenderer, openerService, toDispose);
|
|
207
|
+
await click(tooltip, 'a#untrusted');
|
|
208
|
+
(0, chai_1.expect)(opened, 'untrusted section').to.be.empty;
|
|
209
|
+
await click(tooltip, 'a#trusted');
|
|
210
|
+
(0, chai_1.expect)(opened, 'trusted section').to.deep.equal(['command:git.copyContentToClipboard']);
|
|
211
|
+
});
|
|
212
|
+
});
|
|
213
|
+
//# sourceMappingURL=scm-history-graph-tooltip.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scm-history-graph-tooltip.spec.js","sourceRoot":"","sources":["../../src/browser/scm-history-graph-tooltip.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,45 +1,67 @@
|
|
|
1
1
|
import * as React from '@theia/core/shared/react';
|
|
2
|
+
import { VirtuosoHandle } from '@theia/core/shared/react-virtuoso';
|
|
2
3
|
import { ReactWidget } from '@theia/core/lib/browser/widgets/react-widget';
|
|
3
4
|
import { LabelProvider } from '@theia/core/lib/browser/label-provider';
|
|
4
5
|
import { HoverService } from '@theia/core/lib/browser/hover-service';
|
|
6
|
+
import { ClipboardService } from '@theia/core/lib/browser/clipboard-service';
|
|
5
7
|
import { MarkdownRenderer, MarkdownRendererFactory } from '@theia/core/lib/browser/markdown-rendering/markdown-renderer';
|
|
6
8
|
import { ScmHistoryGraphModel, HistoryGraphEntry } from './scm-history-graph-model';
|
|
7
9
|
import { ScmHistoryItemRef, ScmHistoryItemChange } from './scm-provider';
|
|
8
10
|
import { ScmService } from './scm-service';
|
|
9
11
|
import { GraphRow } from './scm-history-graph-lanes';
|
|
10
12
|
import { CancellationTokenSource } from '@theia/core/lib/common/cancellation';
|
|
13
|
+
import { DisposableCollection } from '@theia/core/lib/common/disposable';
|
|
14
|
+
import { Emitter, Event } from '@theia/core/lib/common/event';
|
|
15
|
+
import { DynamicToolbarWidget } from '@theia/core/lib/browser/view-container';
|
|
11
16
|
import { MenuPath } from '@theia/core/lib/common/menu/menu-types';
|
|
12
17
|
import { ContextMenuRenderer } from '@theia/core/lib/browser/context-menu-renderer';
|
|
13
18
|
import { OpenerService } from '@theia/core/lib/browser/opener-service';
|
|
14
19
|
import { ScmContextKeyService } from './scm-context-key-service';
|
|
20
|
+
import { ScmPreferences } from '../common/scm-preferences';
|
|
21
|
+
import { ChangeTreeFolderRow } from './scm-history-graph-helpers';
|
|
22
|
+
import { ILogger } from '@theia/core';
|
|
15
23
|
/** Menu path matching the VS Code 'scm/history/title' contribution point (graph section toolbar). */
|
|
16
24
|
export declare const SCM_HISTORY_TITLE_MENU: MenuPath;
|
|
17
25
|
/** Menu path matching the VS Code 'scm/historyItem/context' contribution point (commit row context menu). */
|
|
18
26
|
export declare const SCM_HISTORY_ITEM_CONTEXT_MENU: MenuPath;
|
|
19
27
|
/** Menu path matching the VS Code 'scm/historyItemRef/context' contribution point (ref badge context menu). */
|
|
20
28
|
export declare const SCM_HISTORY_ITEM_REF_CONTEXT_MENU: MenuPath;
|
|
21
|
-
export declare class ScmHistoryGraphWidget extends ReactWidget {
|
|
29
|
+
export declare class ScmHistoryGraphWidget extends ReactWidget implements DynamicToolbarWidget {
|
|
22
30
|
static readonly ID = "scm-history-graph-widget";
|
|
23
31
|
static readonly LABEL: string;
|
|
24
32
|
protected readonly model: ScmHistoryGraphModel;
|
|
25
33
|
protected readonly hoverService: HoverService;
|
|
34
|
+
protected readonly clipboardService: ClipboardService;
|
|
26
35
|
protected readonly markdownRendererFactory: MarkdownRendererFactory;
|
|
27
36
|
protected readonly scmService: ScmService;
|
|
28
37
|
protected readonly labelProvider: LabelProvider;
|
|
29
38
|
protected readonly contextMenuRenderer: ContextMenuRenderer;
|
|
30
39
|
protected readonly openerService: OpenerService;
|
|
31
40
|
protected readonly scmContextKeys: ScmContextKeyService;
|
|
41
|
+
protected readonly scmPreferences: ScmPreferences;
|
|
42
|
+
protected readonly logger: ILogger;
|
|
32
43
|
protected selectedIndex: number;
|
|
44
|
+
/** Handle on the virtualized list, used to scroll an entry into view. */
|
|
45
|
+
protected readonly listRef: React.RefObject<VirtuosoHandle | null>;
|
|
33
46
|
/** Currently selected change row key (`${itemId}-${ci}`), or undefined. */
|
|
34
47
|
protected selectedChangeKey: string | undefined;
|
|
35
48
|
/** Map from commit id → loaded changes (undefined = not loaded yet). */
|
|
36
49
|
protected expandedChanges: Map<string, ScmHistoryItemChange[] | "loading">;
|
|
37
50
|
/** Set of commit ids that are currently expanded. */
|
|
38
51
|
protected expandedIds: Set<string>;
|
|
52
|
+
/** Map from commit id → folder paths collapsed in its change tree. */
|
|
53
|
+
protected collapsedFolders: Map<string, Set<string>>;
|
|
39
54
|
/** Map from commit id → in-flight CancellationTokenSource for loadChanges. */
|
|
40
55
|
protected loadChangesCts: Map<string, CancellationTokenSource>;
|
|
56
|
+
/** Cleanup for the content of the hover currently being shown. */
|
|
57
|
+
protected readonly toDisposeOnHover: DisposableCollection;
|
|
58
|
+
protected readonly onDidChangeToolbarItemsEmitter: Emitter<void>;
|
|
59
|
+
/** Re-renders the part toolbar on model changes, e.g. to reflect the toggled state of the ref filter picker. */
|
|
60
|
+
readonly onDidChangeToolbarItems: Event<void>;
|
|
41
61
|
constructor();
|
|
42
62
|
protected init(): void;
|
|
63
|
+
/** Scrolls the entry at `index` into view and selects it. */
|
|
64
|
+
protected revealIndex(index: number): void;
|
|
43
65
|
protected updateContextKeys(): void;
|
|
44
66
|
protected render(): React.ReactNode;
|
|
45
67
|
protected handleEndReached: () => void;
|
|
@@ -47,8 +69,20 @@ export declare class ScmHistoryGraphWidget extends ReactWidget {
|
|
|
47
69
|
protected _markdownRenderer: MarkdownRenderer | undefined;
|
|
48
70
|
protected get markdownRenderer(): MarkdownRenderer;
|
|
49
71
|
protected handleRowMouseEnter: (e: React.MouseEvent<HTMLDivElement>, entry: HistoryGraphEntry) => void;
|
|
72
|
+
/**
|
|
73
|
+
* Prefers the hover content supplied by the provider, so that its own links and commands
|
|
74
|
+
* (author `mailto:`, "Open Commit", remote actions) stay intact, and falls back to the hover
|
|
75
|
+
* derived from the history item's fields for providers that supply none.
|
|
76
|
+
*/
|
|
77
|
+
protected buildTooltip(entry: HistoryGraphEntry): HTMLElement;
|
|
78
|
+
/** Selects the commit and expands its changes, closing the hover first. */
|
|
79
|
+
protected openCommitFromTooltip(entry: HistoryGraphEntry): void;
|
|
50
80
|
protected renderChangesRows(itemId: string, svgWidth: number, graphRow: GraphRow, changes: ScmHistoryItemChange[] | 'loading' | undefined): React.ReactElement;
|
|
51
|
-
protected
|
|
81
|
+
protected renderChangeFolderRow(row: ChangeTreeFolderRow, itemId: string, svgWidth: number, graphRow: GraphRow): React.ReactElement;
|
|
82
|
+
protected isFolderCollapsed(itemId: string, path: string): boolean;
|
|
83
|
+
protected toggleFolder(itemId: string, path: string): void;
|
|
84
|
+
protected handleFolderClick: (e: React.MouseEvent, itemId: string, path: string) => void;
|
|
85
|
+
protected renderChangeRow(change: ScmHistoryItemChange, ci: number, itemId: string, svgWidth: number, graphRow: GraphRow, depth?: number): React.ReactElement;
|
|
52
86
|
protected handleChangeClick: (e: React.MouseEvent, change: ScmHistoryItemChange, changeKey: string) => void;
|
|
53
87
|
protected openChange(change: ScmHistoryItemChange): void;
|
|
54
88
|
protected renderChangeRowSvg(graphRow: GraphRow, svgWidth: number): React.ReactElement;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scm-history-graph-widget.d.ts","sourceRoot":"","sources":["../../src/browser/scm-history-graph-widget.tsx"],"names":[],"mappings":"AAgBA,OAAO,KAAK,KAAK,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"scm-history-graph-widget.d.ts","sourceRoot":"","sources":["../../src/browser/scm-history-graph-widget.tsx"],"names":[],"mappings":"AAgBA,OAAO,KAAK,KAAK,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAY,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAE7E,OAAO,EAAE,WAAW,EAAE,MAAM,8CAA8C,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,8DAA8D,CAAC;AACzH,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACpF,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAGrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAC9E,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAC;AACpF,OAAO,EAAE,aAAa,EAAQ,MAAM,wCAAwC,CAAC;AAE7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAGkB,mBAAmB,EAC3C,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC,qGAAqG;AACrG,eAAO,MAAM,sBAAsB,EAAE,QAAuC,CAAC;AAC7E,6GAA6G;AAC7G,eAAO,MAAM,6BAA6B,EAAE,QAA6C,CAAC;AAC1F,+GAA+G;AAC/G,eAAO,MAAM,iCAAiC,EAAE,QAAgD,CAAC;AAgDjG,qBACa,qBAAsB,SAAQ,WAAY,YAAW,oBAAoB;IAElF,MAAM,CAAC,QAAQ,CAAC,EAAE,8BAA8B;IAChD,MAAM,CAAC,QAAQ,CAAC,KAAK,SAAkC;IAEzB,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAC;IACvD,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IAC1C,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAC/C,SAAS,CAAC,QAAQ,CAAC,uBAAuB,EAAE,uBAAuB,CAAC;IACjF,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IACvC,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IAC1C,SAAS,CAAC,QAAQ,CAAC,mBAAmB,EAAE,mBAAmB,CAAC;IAClE,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IACzC,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,oBAAoB,CAAC;IAC9D,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IAG1E,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAEnC,SAAS,CAAC,aAAa,SAAM;IAC7B,yEAAyE;IACzE,SAAS,CAAC,QAAQ,CAAC,OAAO,yCAAqC;IAC/D,2EAA2E;IAC3E,SAAS,CAAC,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAC;IAChD,wEAAwE;IACxE,SAAS,CAAC,eAAe,kDAAyD;IAClF,qDAAqD;IACrD,SAAS,CAAC,WAAW,cAAqB;IAC1C,sEAAsE;IACtE,SAAS,CAAC,gBAAgB,2BAAkC;IAC5D,8EAA8E;IAC9E,SAAS,CAAC,cAAc,uCAA8C;IACtE,kEAAkE;IAClE,SAAS,CAAC,QAAQ,CAAC,gBAAgB,uBAA8B;IAEjE,SAAS,CAAC,QAAQ,CAAC,8BAA8B,gBAAuB;IACxE,gHAAgH;IAChH,QAAQ,CAAC,uBAAuB,EAAE,KAAK,CAAC,IAAI,CAAC,CAA6C;;IAa1F,SAAS,CAAC,IAAI,IAAI,IAAI;IAgCtB,6DAA6D;IAC7D,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAO1C,SAAS,CAAC,iBAAiB,IAAI,IAAI;IAQnC,SAAS,CAAC,MAAM,IAAI,KAAK,CAAC,SAAS;IA0DnC,SAAS,CAAC,gBAAgB,QAAO,IAAI,CAInC;IAEF,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,iBAAiB,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,KAAK,CAAC,YAAY;IAiChG,SAAS,CAAC,iBAAiB,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAC1D,SAAS,KAAK,gBAAgB,IAAI,gBAAgB,CAGjD;IAED,SAAS,CAAC,mBAAmB,GAAI,GAAG,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,OAAO,iBAAiB,KAAG,IAAI,CAQnG;IAEF;;;;OAIG;IACH,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,WAAW;IAc7D,2EAA2E;IAC3E,SAAS,CAAC,qBAAqB,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI;IAc/D,SAAS,CAAC,iBAAiB,CACvB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,oBAAoB,EAAE,GAAG,SAAS,GAAG,SAAS,GACxD,KAAK,CAAC,YAAY;IAsCrB,SAAS,CAAC,qBAAqB,CAC3B,GAAG,EAAE,mBAAmB,EACxB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,QAAQ,GACnB,KAAK,CAAC,YAAY;IAoBrB,SAAS,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO;IAIlE,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAY1D,SAAS,CAAC,iBAAiB,GAAI,GAAG,KAAK,CAAC,UAAU,EAAE,QAAQ,MAAM,EAAE,MAAM,MAAM,KAAG,IAAI,CAGrF;IAEF,SAAS,CAAC,eAAe,CACrB,MAAM,EAAE,oBAAoB,EAC5B,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,QAAQ,EAClB,KAAK,SAAI,GACV,KAAK,CAAC,YAAY;IAqCrB,SAAS,CAAC,iBAAiB,GAAI,GAAG,KAAK,CAAC,UAAU,EAAE,QAAQ,oBAAoB,EAAE,WAAW,MAAM,KAAG,IAAI,CAKxG;IAEF,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,oBAAoB,GAAG,IAAI;IAmBxD,SAAS,CAAC,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,KAAK,CAAC,YAAY;IA+CtF;;;;;;;;;;;;OAYG;IACH,SAAS,CAAC,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,KAAK,CAAC,YAAY;IAkJ9F,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,SAAS,iBAAiB,EAAE,EAAE,KAAK,CAAC,EAAE,iBAAiB,GAAG,KAAK,CAAC,SAAS;IAgD1G,SAAS,CAAC,oBAAoB,GAAI,GAAG,KAAK,CAAC,UAAU,EAAE,OAAO,iBAAiB,KAAG,IAAI,CAuBpF;IAEF,SAAS,CAAC,yBAAyB,GAAI,GAAG,KAAK,CAAC,UAAU,EAAE,OAAO,iBAAiB,EAAE,KAAK,iBAAiB,KAAG,IAAI,CAkBjH;IAEF,SAAS,CAAC,cAAc,GAAI,KAAK,MAAM,EAAE,OAAO,iBAAiB,KAAG,IAAI,CAqBtE;cAEc,WAAW,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiCpE,SAAS,CAAC,cAAc,QAAO,IAAI,CAEjC;IAEF,SAAS,CAAC,iBAAiB,GAAI,GAAG,KAAK,CAAC,aAAa,KAAG,IAAI,CAI1D;CAEL"}
|