@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.
Files changed (97) hide show
  1. package/lib/browser/decorations/scm-navigator-decorator.d.ts.map +1 -1
  2. package/lib/browser/decorations/scm-navigator-decorator.js +1 -0
  3. package/lib/browser/decorations/scm-navigator-decorator.js.map +1 -1
  4. package/lib/browser/merge-editor/view/merge-editor-panes/merge-editor-pane-header.js +7 -10
  5. package/lib/browser/merge-editor/view/merge-editor-panes/merge-editor-pane-header.js.map +1 -1
  6. package/lib/browser/scm-action-button-widget.js +10 -15
  7. package/lib/browser/scm-action-button-widget.js.map +1 -1
  8. package/lib/browser/scm-amend-component.js +24 -57
  9. package/lib/browser/scm-amend-component.js.map +1 -1
  10. package/lib/browser/scm-commit-widget.d.ts +1 -1
  11. package/lib/browser/scm-commit-widget.d.ts.map +1 -1
  12. package/lib/browser/scm-commit-widget.js +9 -10
  13. package/lib/browser/scm-commit-widget.js.map +1 -1
  14. package/lib/browser/scm-context-key-service.d.ts +2 -0
  15. package/lib/browser/scm-context-key-service.d.ts.map +1 -1
  16. package/lib/browser/scm-context-key-service.js +4 -0
  17. package/lib/browser/scm-context-key-service.js.map +1 -1
  18. package/lib/browser/scm-context-key-service.spec.js +7 -0
  19. package/lib/browser/scm-context-key-service.spec.js.map +1 -1
  20. package/lib/browser/scm-frontend-module.d.ts.map +1 -1
  21. package/lib/browser/scm-frontend-module.js +6 -0
  22. package/lib/browser/scm-frontend-module.js.map +1 -1
  23. package/lib/browser/scm-history-graph-contribution.d.ts +49 -0
  24. package/lib/browser/scm-history-graph-contribution.d.ts.map +1 -0
  25. package/lib/browser/scm-history-graph-contribution.js +280 -0
  26. package/lib/browser/scm-history-graph-contribution.js.map +1 -0
  27. package/lib/browser/scm-history-graph-contribution.spec.d.ts +2 -0
  28. package/lib/browser/scm-history-graph-contribution.spec.d.ts.map +1 -0
  29. package/lib/browser/scm-history-graph-contribution.spec.js +119 -0
  30. package/lib/browser/scm-history-graph-contribution.spec.js.map +1 -0
  31. package/lib/browser/scm-history-graph-helpers.d.ts +59 -6
  32. package/lib/browser/scm-history-graph-helpers.d.ts.map +1 -1
  33. package/lib/browser/scm-history-graph-helpers.js +129 -5
  34. package/lib/browser/scm-history-graph-helpers.js.map +1 -1
  35. package/lib/browser/scm-history-graph-helpers.spec.d.ts +2 -0
  36. package/lib/browser/scm-history-graph-helpers.spec.d.ts.map +1 -0
  37. package/lib/browser/scm-history-graph-helpers.spec.js +154 -0
  38. package/lib/browser/scm-history-graph-helpers.spec.js.map +1 -0
  39. package/lib/browser/scm-history-graph-lanes.d.ts +19 -5
  40. package/lib/browser/scm-history-graph-lanes.d.ts.map +1 -1
  41. package/lib/browser/scm-history-graph-lanes.js +25 -9
  42. package/lib/browser/scm-history-graph-lanes.js.map +1 -1
  43. package/lib/browser/scm-history-graph-lanes.spec.js +62 -25
  44. package/lib/browser/scm-history-graph-lanes.spec.js.map +1 -1
  45. package/lib/browser/scm-history-graph-model.d.ts +75 -6
  46. package/lib/browser/scm-history-graph-model.d.ts.map +1 -1
  47. package/lib/browser/scm-history-graph-model.js +155 -10
  48. package/lib/browser/scm-history-graph-model.js.map +1 -1
  49. package/lib/browser/scm-history-graph-model.spec.js +299 -4
  50. package/lib/browser/scm-history-graph-model.spec.js.map +1 -1
  51. package/lib/browser/scm-history-graph-tooltip.d.ts +27 -2
  52. package/lib/browser/scm-history-graph-tooltip.d.ts.map +1 -1
  53. package/lib/browser/scm-history-graph-tooltip.js +113 -22
  54. package/lib/browser/scm-history-graph-tooltip.js.map +1 -1
  55. package/lib/browser/scm-history-graph-tooltip.spec.d.ts +2 -0
  56. package/lib/browser/scm-history-graph-tooltip.spec.d.ts.map +1 -0
  57. package/lib/browser/scm-history-graph-tooltip.spec.js +213 -0
  58. package/lib/browser/scm-history-graph-tooltip.spec.js.map +1 -0
  59. package/lib/browser/scm-history-graph-widget.d.ts +36 -2
  60. package/lib/browser/scm-history-graph-widget.d.ts.map +1 -1
  61. package/lib/browser/scm-history-graph-widget.js +174 -67
  62. package/lib/browser/scm-history-graph-widget.js.map +1 -1
  63. package/lib/browser/scm-history-graph-widget.spec.d.ts +2 -0
  64. package/lib/browser/scm-history-graph-widget.spec.d.ts.map +1 -0
  65. package/lib/browser/scm-history-graph-widget.spec.js +273 -0
  66. package/lib/browser/scm-history-graph-widget.spec.js.map +1 -0
  67. package/lib/browser/scm-provider.d.ts +9 -1
  68. package/lib/browser/scm-provider.d.ts.map +1 -1
  69. package/lib/browser/scm-provider.js.map +1 -1
  70. package/lib/browser/scm-repositories-widget.js +12 -21
  71. package/lib/browser/scm-repositories-widget.js.map +1 -1
  72. package/lib/browser/scm-tree-widget.js +35 -53
  73. package/lib/browser/scm-tree-widget.js.map +1 -1
  74. package/lib/common/scm-preferences.d.ts +3 -0
  75. package/lib/common/scm-preferences.d.ts.map +1 -1
  76. package/lib/common/scm-preferences.js +24 -0
  77. package/lib/common/scm-preferences.js.map +1 -1
  78. package/package.json +7 -7
  79. package/src/browser/decorations/scm-navigator-decorator.ts +3 -2
  80. package/src/browser/scm-context-key-service.spec.ts +9 -0
  81. package/src/browser/scm-context-key-service.ts +6 -0
  82. package/src/browser/scm-frontend-module.ts +7 -1
  83. package/src/browser/scm-history-graph-contribution.spec.ts +148 -0
  84. package/src/browser/scm-history-graph-contribution.ts +273 -0
  85. package/src/browser/scm-history-graph-helpers.spec.ts +193 -0
  86. package/src/browser/scm-history-graph-helpers.ts +180 -6
  87. package/src/browser/scm-history-graph-lanes.spec.ts +70 -25
  88. package/src/browser/scm-history-graph-lanes.ts +48 -11
  89. package/src/browser/scm-history-graph-model.spec.ts +378 -12
  90. package/src/browser/scm-history-graph-model.ts +181 -13
  91. package/src/browser/scm-history-graph-tooltip.spec.ts +254 -0
  92. package/src/browser/scm-history-graph-tooltip.ts +144 -24
  93. package/src/browser/scm-history-graph-widget.spec.ts +322 -0
  94. package/src/browser/scm-history-graph-widget.tsx +199 -39
  95. package/src/browser/scm-provider.ts +9 -1
  96. package/src/browser/style/scm-history-graph.css +53 -2
  97. 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
- appendIconText(header, 'account', item.author);
186
+ appendAuthor(header, item);
107
187
  }
108
188
  if (item.timestamp !== undefined) {
109
189
  if (item.author) {
110
- header.appendChild(document.createTextNode('\u00a0\u00a0'));
190
+ header.appendChild(document.createTextNode(',\u00a0'));
111
191
  }
112
192
  const timeSpan = document.createElement('span');
113
- appendIconText(timeSpan, 'clock', `${formatRelativeTime(item.timestamp)} (${formatAbsoluteDate(item.timestamp)})`);
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
- const isTag = (0, scm_history_graph_helpers_1.isTagRef)(ref);
166
- const isRemote = (0, scm_history_graph_helpers_1.isRemoteRef)(ref);
167
- if (isTag) {
168
- refsRow.appendChild(buildTooltipRefBadge(ref, 'codicon-tag', true, badgeColor));
169
- }
170
- else if (isRemote) {
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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=scm-history-graph-tooltip.spec.d.ts.map
@@ -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 renderChangeRow(change: ScmHistoryItemChange, ci: number, itemId: string, svgWidth: number, graphRow: GraphRow): React.ReactElement;
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":"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"}
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"}