@adecore/editor-react 0.31.12 → 0.33.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 (137) hide show
  1. package/dist/AnchoredPopup.js +73 -19
  2. package/dist/AttributionCard.js +162 -4
  3. package/dist/BaselineStatus.js +62 -8
  4. package/dist/CallHierarchyPanel.js +977 -60
  5. package/dist/ChangeReview.js +76 -25
  6. package/dist/CodeAuthorsCard.js +314 -14
  7. package/dist/CompletionPopup.js +490 -83
  8. package/dist/DiffView.js +548 -181
  9. package/dist/EditorContextMenu.js +352 -34
  10. package/dist/EditorView.js +276 -99
  11. package/dist/FindReplace.js +525 -67
  12. package/dist/HoverCard.js +378 -38
  13. package/dist/HoverSections.js +367 -56
  14. package/dist/LanguagePopups.js +95 -34
  15. package/dist/Markdown.js +41 -6
  16. package/dist/PanelResizeHandle.js +199 -66
  17. package/dist/PathText.js +49 -7
  18. package/dist/PeekPanel.js +675 -72
  19. package/dist/PickPopup.js +304 -34
  20. package/dist/RenameCard.js +679 -85
  21. package/dist/RenderedDocs.js +329 -58
  22. package/dist/SignatureCard.js +91 -7
  23. package/dist/SplitDiffView.js +344 -254
  24. package/dist/SymbolPicker.js +440 -85
  25. package/dist/call-hierarchy-model.js +102 -68
  26. package/dist/call-hierarchy.js +458 -359
  27. package/dist/code-actions-model.js +88 -76
  28. package/dist/code-actions.js +372 -283
  29. package/dist/code-authors.js +64 -55
  30. package/dist/code-vision-model.js +134 -127
  31. package/dist/code-vision.js +224 -206
  32. package/dist/completion-call.js +94 -67
  33. package/dist/completion-model.js +334 -244
  34. package/dist/completion.js +840 -649
  35. package/dist/conflict-model.js +35 -29
  36. package/dist/context-menu-rows.js +42 -17
  37. package/dist/context-menu.js +64 -46
  38. package/dist/definition-link.js +88 -85
  39. package/dist/diagnostics-model.js +74 -55
  40. package/dist/diagnostics.js +121 -100
  41. package/dist/diff-expansion.js +38 -35
  42. package/dist/diff-overlays.js +144 -22
  43. package/dist/diff-syntax.js +65 -42
  44. package/dist/diff-wordmarks.js +26 -23
  45. package/dist/doc-comment-model.js +265 -216
  46. package/dist/editor-language.js +177 -152
  47. package/dist/error-message.js +2 -2
  48. package/dist/find-query.js +49 -36
  49. package/dist/folding.js +81 -62
  50. package/dist/format-on-type.js +86 -67
  51. package/dist/highlight-layers.js +19 -20
  52. package/dist/highlights.js +105 -83
  53. package/dist/history.js +44 -38
  54. package/dist/holder.js +18 -18
  55. package/dist/host-types.js +1 -1
  56. package/dist/hover-content.js +167 -129
  57. package/dist/hover.js +285 -245
  58. package/dist/index.js +10 -10
  59. package/dist/inlay-hints.js +369 -324
  60. package/dist/key-priority.js +34 -31
  61. package/dist/language-ids.js +45 -42
  62. package/dist/line-edits.js +74 -28
  63. package/dist/line-text.js +18 -3
  64. package/dist/locales/en.json +38 -38
  65. package/dist/locales/nl.json +41 -41
  66. package/dist/models.js +1 -1
  67. package/dist/navigation-history.js +40 -41
  68. package/dist/navigation.js +141 -123
  69. package/dist/panel-size.js +8 -8
  70. package/dist/patch-decorations.js +236 -160
  71. package/dist/patch-layout.js +331 -262
  72. package/dist/paths.js +3 -3
  73. package/dist/peek-model.js +86 -69
  74. package/dist/peek.js +254 -192
  75. package/dist/pick.js +164 -157
  76. package/dist/popup-focus.js +5 -5
  77. package/dist/popup-placement.js +36 -21
  78. package/dist/popups.js +13 -13
  79. package/dist/project-language.js +228 -211
  80. package/dist/project-problems.js +81 -69
  81. package/dist/proposal-model.js +163 -126
  82. package/dist/recent-choices.js +25 -25
  83. package/dist/refresher.js +44 -49
  84. package/dist/rename-model.js +113 -113
  85. package/dist/rename.js +321 -233
  86. package/dist/rendered-docs.d.ts +4 -2
  87. package/dist/rendered-docs.js +384 -318
  88. package/dist/rendering-context.js +5 -3
  89. package/dist/rendering.js +22 -4
  90. package/dist/review-group.js +42 -39
  91. package/dist/row-host.d.ts +4 -2
  92. package/dist/row-host.js +90 -78
  93. package/dist/selection-ranges.js +21 -17
  94. package/dist/semantic-delta.js +22 -19
  95. package/dist/semantic-model.js +86 -73
  96. package/dist/semantic-tokens.js +201 -162
  97. package/dist/shortcut-keys.js +16 -10
  98. package/dist/signature-model.js +34 -28
  99. package/dist/signature.js +177 -129
  100. package/dist/snippet-field-transforms.js +118 -106
  101. package/dist/snippet-indent.js +48 -43
  102. package/dist/snippet-range-order.js +11 -11
  103. package/dist/snippet-session.js +703 -667
  104. package/dist/snippet-transform-client.js +59 -59
  105. package/dist/snippet-transform-format.js +285 -263
  106. package/dist/snippet-transform-protocol.js +1 -1
  107. package/dist/snippet-transform-queue.js +163 -153
  108. package/dist/snippet-transform-worker.js +42 -35
  109. package/dist/snippet-variable-names.js +1 -36
  110. package/dist/snippet-variables.js +53 -63
  111. package/dist/snippet.js +477 -405
  112. package/dist/split-alignment.js +47 -35
  113. package/dist/split-scroll.js +42 -40
  114. package/dist/symbol-links.js +33 -25
  115. package/dist/symbol-picker-model.js +126 -116
  116. package/dist/symbol-picker.js +98 -59
  117. package/dist/symbols.js +117 -88
  118. package/dist/testing.js +248 -165
  119. package/dist/timers.js +35 -30
  120. package/dist/use-panel-body.js +49 -8
  121. package/dist/use-problem-counts.js +29 -15
  122. package/dist/view-state.js +54 -33
  123. package/dist/word-diff.js +18 -18
  124. package/dist/workspace-edit.js +300 -249
  125. package/package.json +6 -6
  126. package/src/CallHierarchyPanel.tsx +2 -2
  127. package/src/DiffView.tsx +3 -3
  128. package/src/FindReplace.tsx +2 -2
  129. package/src/LanguagePopups.tsx +2 -0
  130. package/src/PeekPanel.tsx +3 -3
  131. package/src/RenderedDocs.tsx +9 -10
  132. package/src/SymbolPicker.tsx +2 -2
  133. package/src/diff-overlays.tsx +6 -4
  134. package/src/locales/en.json +38 -38
  135. package/src/locales/nl.json +41 -41
  136. package/src/rendered-docs.ts +14 -3
  137. package/src/row-host.ts +14 -3
@@ -1,27 +1,78 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { c as _c } from "react/compiler-runtime";
2
2
  import { useLayoutEffect, useRef } from 'react';
3
3
  import { diffSegments, emphasisOf } from './proposal-model.js';
4
- export function ChangeReview({ editor, selected, proposal, startLine = 1, actions, className, label }) {
5
- const code = useRef(null);
6
- useLayoutEffect(() => {
7
- const element = code.current;
8
- if (element === null) {
9
- return;
10
- }
11
- element.replaceChildren();
12
- for (const segment of diffSegments(selected, proposal, startLine)) {
13
- const row = element.ownerDocument.createElement('div');
14
- element.append(row);
15
- editor.renderCode(row, segment.text, {
16
- firstLine: segment.firstLine,
17
- ...(segment.kind === 'same'
18
- ? {}
19
- : { sign: segment.kind === 'removed' ? '-' : '+', color: segment.kind === 'removed' ? '--editor-deleted' : '--editor-added' }),
20
- faded: segment.kind === 'removed',
21
- emphasis: emphasisOf(segment)
22
- });
23
- }
24
- return () => element.replaceChildren();
25
- }, [editor, selected, proposal, startLine]);
26
- return (_jsxs("section", { className: className, "aria-label": label, children: [_jsx("div", { ref: code }), actions] }));
27
- }
4
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
5
+ export function ChangeReview(t0) {
6
+ const $ = _c(11);
7
+ const {
8
+ editor,
9
+ selected,
10
+ proposal,
11
+ startLine: t1,
12
+ actions,
13
+ className,
14
+ label
15
+ } = t0;
16
+ const startLine = t1 === undefined ? 1 : t1;
17
+ const code = useRef(null);
18
+ let t2;
19
+ let t3;
20
+ if ($[0] !== editor || $[1] !== proposal || $[2] !== selected || $[3] !== startLine) {
21
+ t2 = () => {
22
+ const element = code.current;
23
+ if (element === null) {
24
+ return;
25
+ }
26
+ element.replaceChildren();
27
+ for (const segment of diffSegments(selected, proposal, startLine)) {
28
+ const row = element.ownerDocument.createElement("div");
29
+ element.append(row);
30
+ editor.renderCode(row, segment.text, {
31
+ firstLine: segment.firstLine,
32
+ ...(segment.kind === "same" ? {} : {
33
+ sign: segment.kind === "removed" ? "-" : "+",
34
+ color: segment.kind === "removed" ? "--editor-deleted" : "--editor-added"
35
+ }),
36
+ faded: segment.kind === "removed",
37
+ emphasis: emphasisOf(segment)
38
+ });
39
+ }
40
+ return () => element.replaceChildren();
41
+ };
42
+ t3 = [editor, selected, proposal, startLine];
43
+ $[0] = editor;
44
+ $[1] = proposal;
45
+ $[2] = selected;
46
+ $[3] = startLine;
47
+ $[4] = t2;
48
+ $[5] = t3;
49
+ } else {
50
+ t2 = $[4];
51
+ t3 = $[5];
52
+ }
53
+ useLayoutEffect(t2, t3);
54
+ let t4;
55
+ if ($[6] === Symbol.for("react.memo_cache_sentinel")) {
56
+ t4 = /*#__PURE__*/_jsx("div", {
57
+ ref: code
58
+ });
59
+ $[6] = t4;
60
+ } else {
61
+ t4 = $[6];
62
+ }
63
+ let t5;
64
+ if ($[7] !== actions || $[8] !== className || $[9] !== label) {
65
+ t5 = /*#__PURE__*/_jsxs("section", {
66
+ className: className,
67
+ "aria-label": label,
68
+ children: [t4, actions]
69
+ });
70
+ $[7] = actions;
71
+ $[8] = className;
72
+ $[9] = label;
73
+ $[10] = t5;
74
+ } else {
75
+ t5 = $[10];
76
+ }
77
+ return t5;
78
+ }
@@ -1,26 +1,326 @@
1
- import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { c as _c } from "react/compiler-runtime";
2
2
  import { useMemo } from 'react';
3
3
  import { useTranslation } from 'react-i18next';
4
4
  import { GitCommitHorizontal, User, Users } from 'lucide-react';
5
5
  import { Button, Icon, Popover, Separator, Tooltip, useNow } from '@adecore/ui';
6
6
  import { formatAge, formatNumber } from '@adecore/ui/format';
7
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
7
8
  const MINUTE_MS = 60_000;
8
9
  /* The newest commit that touched the declaration. Its clock ticks here, so a minute redraws this block and not the card. */
9
- export function LatestCommit({ commit }) {
10
- const { t } = useTranslation('editor');
11
- const now = useNow(MINUTE_MS);
12
- return (_jsxs("div", { className: "flex flex-col gap-1", children: [_jsx("span", { className: "text-text-muted", children: t('language.codeVision.latest') }), _jsx("span", { className: "text-text select-text", children: commit.summary }), _jsxs("span", { className: "flex items-center gap-1.5 text-text-muted", children: [_jsx("span", { className: "font-mono select-text", children: commit.shortHash }), _jsx("span", { className: "min-w-0 truncate", children: commit.author }), _jsx("span", { className: "shrink-0", children: formatAge(commit.at * 1000, now) })] })] }));
10
+ export function LatestCommit(t0) {
11
+ const $ = _c(23);
12
+ const {
13
+ commit
14
+ } = t0;
15
+ const {
16
+ t
17
+ } = useTranslation("editor");
18
+ const now = useNow(MINUTE_MS);
19
+ let t1;
20
+ if ($[0] !== t) {
21
+ t1 = t("language.codeVision.latest");
22
+ $[0] = t;
23
+ $[1] = t1;
24
+ } else {
25
+ t1 = $[1];
26
+ }
27
+ let t2;
28
+ if ($[2] !== t1) {
29
+ t2 = /*#__PURE__*/_jsx("span", {
30
+ className: "text-text-muted",
31
+ children: t1
32
+ });
33
+ $[2] = t1;
34
+ $[3] = t2;
35
+ } else {
36
+ t2 = $[3];
37
+ }
38
+ let t3;
39
+ if ($[4] !== commit.summary) {
40
+ t3 = /*#__PURE__*/_jsx("span", {
41
+ className: "text-text select-text",
42
+ children: commit.summary
43
+ });
44
+ $[4] = commit.summary;
45
+ $[5] = t3;
46
+ } else {
47
+ t3 = $[5];
48
+ }
49
+ let t4;
50
+ if ($[6] !== commit.shortHash) {
51
+ t4 = /*#__PURE__*/_jsx("span", {
52
+ className: "font-mono select-text",
53
+ children: commit.shortHash
54
+ });
55
+ $[6] = commit.shortHash;
56
+ $[7] = t4;
57
+ } else {
58
+ t4 = $[7];
59
+ }
60
+ let t5;
61
+ if ($[8] !== commit.author) {
62
+ t5 = /*#__PURE__*/_jsx("span", {
63
+ className: "min-w-0 truncate",
64
+ children: commit.author
65
+ });
66
+ $[8] = commit.author;
67
+ $[9] = t5;
68
+ } else {
69
+ t5 = $[9];
70
+ }
71
+ const t6 = commit.at * 1000;
72
+ let t7;
73
+ if ($[10] !== now || $[11] !== t6) {
74
+ t7 = formatAge(t6, now);
75
+ $[10] = now;
76
+ $[11] = t6;
77
+ $[12] = t7;
78
+ } else {
79
+ t7 = $[12];
80
+ }
81
+ let t8;
82
+ if ($[13] !== t7) {
83
+ t8 = /*#__PURE__*/_jsx("span", {
84
+ className: "shrink-0",
85
+ children: t7
86
+ });
87
+ $[13] = t7;
88
+ $[14] = t8;
89
+ } else {
90
+ t8 = $[14];
91
+ }
92
+ let t9;
93
+ if ($[15] !== t4 || $[16] !== t5 || $[17] !== t8) {
94
+ t9 = /*#__PURE__*/_jsxs("span", {
95
+ className: "flex items-center gap-1.5 text-text-muted",
96
+ children: [t4, t5, t8]
97
+ });
98
+ $[15] = t4;
99
+ $[16] = t5;
100
+ $[17] = t8;
101
+ $[18] = t9;
102
+ } else {
103
+ t9 = $[18];
104
+ }
105
+ let t10;
106
+ if ($[19] !== t2 || $[20] !== t3 || $[21] !== t9) {
107
+ t10 = /*#__PURE__*/_jsxs("div", {
108
+ className: "flex flex-col gap-1",
109
+ children: [t2, t3, t9]
110
+ });
111
+ $[19] = t2;
112
+ $[20] = t3;
113
+ $[21] = t9;
114
+ $[22] = t10;
115
+ } else {
116
+ t10 = $[22];
117
+ }
118
+ return t10;
13
119
  }
14
120
  /*
15
121
  * Who wrote a declaration, by lines, and the newest commit that touched it. It opens beside the entry that
16
122
  * was pressed and closes on Escape or a press anywhere else; Escape hands the keyboard back to the editor.
17
123
  */
18
- export function CodeAuthorsCard({ language, view }) {
19
- const { t } = useTranslation('editor');
20
- const { authors, uncommittedLines, latest } = view.authorship;
21
- const anchor = useMemo(() => {
22
- const { left, top, right, bottom } = view.anchor;
23
- return { getBoundingClientRect: () => new DOMRect(left, top, right - left, bottom - top) };
24
- }, [view.anchor]);
25
- return (_jsx(Popover.Root, { open: true, onOpenChange: (open, details) => !open && language.codeVision.closeAuthors(details.reason === 'escape-key'), children: _jsxs(Popover.Popup, { anchor: anchor, side: "bottom", align: "start", sideOffset: 4, className: "flex w-72 flex-col gap-2 p-3 text-xs", children: [_jsxs(Popover.Title, { className: "flex items-center gap-1.5 font-medium text-text", children: [_jsx(Icon, { icon: authors.length > 1 ? Users : User, size: 14, className: "shrink-0 text-text-muted" }), _jsx("span", { className: "min-w-0 truncate", children: view.name })] }), _jsxs("ul", { className: "flex flex-col gap-1", children: [authors.map((author) => (_jsxs("li", { className: "flex items-baseline gap-2", children: [_jsx(Tooltip, { label: author.email, children: _jsx("span", { className: "min-w-0 grow truncate text-text", children: author.name }) }), _jsx("span", { className: "shrink-0 text-text-muted", children: t('language.codeVision.lines', { count: author.lines, formatted: formatNumber(author.lines) }) })] }, author.name))), uncommittedLines > 0 && (_jsxs("li", { className: "flex items-baseline gap-2 text-text-muted", children: [_jsx("span", { className: "min-w-0 grow truncate", children: t('language.codeVision.uncommitted') }), _jsx("span", { className: "shrink-0", children: t('language.codeVision.lines', { count: uncommittedLines, formatted: formatNumber(uncommittedLines) }) })] }))] }), latest !== null && (_jsxs(_Fragment, { children: [_jsx(Separator, {}), _jsx(LatestCommit, { commit: latest }), view.openCommit !== null && (_jsx("div", { className: "flex justify-end", children: _jsx(Popover.Close, { render: _jsxs(Button, { size: "xs", variant: "secondary", onClick: view.openCommit, children: [_jsx(Icon, { icon: GitCommitHorizontal, size: 14 }), t('language.codeVision.showCommit')] }) }) }))] }))] }) }));
26
- }
124
+ export function CodeAuthorsCard(t0) {
125
+ const $ = _c(37);
126
+ const {
127
+ language,
128
+ view
129
+ } = t0;
130
+ const {
131
+ t
132
+ } = useTranslation("editor");
133
+ const {
134
+ authors,
135
+ uncommittedLines,
136
+ latest
137
+ } = view.authorship;
138
+ const {
139
+ left,
140
+ top,
141
+ right,
142
+ bottom
143
+ } = view.anchor;
144
+ let t1;
145
+ if ($[0] !== bottom || $[1] !== left || $[2] !== right || $[3] !== top) {
146
+ t1 = {
147
+ getBoundingClientRect: () => new DOMRect(left, top, right - left, bottom - top)
148
+ };
149
+ $[0] = bottom;
150
+ $[1] = left;
151
+ $[2] = right;
152
+ $[3] = top;
153
+ $[4] = t1;
154
+ } else {
155
+ t1 = $[4];
156
+ }
157
+ const anchor = t1;
158
+ let t2;
159
+ if ($[5] !== language) {
160
+ t2 = (open, details) => !open && language.codeVision.closeAuthors(details.reason === "escape-key");
161
+ $[5] = language;
162
+ $[6] = t2;
163
+ } else {
164
+ t2 = $[6];
165
+ }
166
+ const t3 = authors.length > 1 ? Users : User;
167
+ let t4;
168
+ if ($[7] !== t3) {
169
+ t4 = /*#__PURE__*/_jsx(Icon, {
170
+ icon: t3,
171
+ size: 14,
172
+ className: "shrink-0 text-text-muted"
173
+ });
174
+ $[7] = t3;
175
+ $[8] = t4;
176
+ } else {
177
+ t4 = $[8];
178
+ }
179
+ let t5;
180
+ if ($[9] !== view.name) {
181
+ t5 = /*#__PURE__*/_jsx("span", {
182
+ className: "min-w-0 truncate",
183
+ children: view.name
184
+ });
185
+ $[9] = view.name;
186
+ $[10] = t5;
187
+ } else {
188
+ t5 = $[10];
189
+ }
190
+ let t6;
191
+ if ($[11] !== t4 || $[12] !== t5) {
192
+ t6 = /*#__PURE__*/_jsxs(Popover.Title, {
193
+ className: "flex items-center gap-1.5 font-medium text-text",
194
+ children: [t4, t5]
195
+ });
196
+ $[11] = t4;
197
+ $[12] = t5;
198
+ $[13] = t6;
199
+ } else {
200
+ t6 = $[13];
201
+ }
202
+ let t7;
203
+ if ($[14] !== authors || $[15] !== t) {
204
+ let t8;
205
+ if ($[17] !== t) {
206
+ t8 = author => /*#__PURE__*/_jsxs("li", {
207
+ className: "flex items-baseline gap-2",
208
+ children: [/*#__PURE__*/_jsx(Tooltip, {
209
+ label: author.email,
210
+ children: /*#__PURE__*/_jsx("span", {
211
+ className: "min-w-0 grow truncate text-text",
212
+ children: author.name
213
+ })
214
+ }), /*#__PURE__*/_jsx("span", {
215
+ className: "shrink-0 text-text-muted",
216
+ children: t("language.codeVision.lines", {
217
+ count: author.lines,
218
+ formatted: formatNumber(author.lines)
219
+ })
220
+ })]
221
+ }, author.name);
222
+ $[17] = t;
223
+ $[18] = t8;
224
+ } else {
225
+ t8 = $[18];
226
+ }
227
+ t7 = authors.map(t8);
228
+ $[14] = authors;
229
+ $[15] = t;
230
+ $[16] = t7;
231
+ } else {
232
+ t7 = $[16];
233
+ }
234
+ let t8;
235
+ if ($[19] !== t || $[20] !== uncommittedLines) {
236
+ t8 = uncommittedLines > 0 && /*#__PURE__*/_jsxs("li", {
237
+ className: "flex items-baseline gap-2 text-text-muted",
238
+ children: [/*#__PURE__*/_jsx("span", {
239
+ className: "min-w-0 grow truncate",
240
+ children: t("language.codeVision.uncommitted")
241
+ }), /*#__PURE__*/_jsx("span", {
242
+ className: "shrink-0",
243
+ children: t("language.codeVision.lines", {
244
+ count: uncommittedLines,
245
+ formatted: formatNumber(uncommittedLines)
246
+ })
247
+ })]
248
+ });
249
+ $[19] = t;
250
+ $[20] = uncommittedLines;
251
+ $[21] = t8;
252
+ } else {
253
+ t8 = $[21];
254
+ }
255
+ let t9;
256
+ if ($[22] !== t7 || $[23] !== t8) {
257
+ t9 = /*#__PURE__*/_jsxs("ul", {
258
+ className: "flex flex-col gap-1",
259
+ children: [t7, t8]
260
+ });
261
+ $[22] = t7;
262
+ $[23] = t8;
263
+ $[24] = t9;
264
+ } else {
265
+ t9 = $[24];
266
+ }
267
+ let t10;
268
+ if ($[25] !== latest || $[26] !== t || $[27] !== view.openCommit) {
269
+ t10 = latest !== null && /*#__PURE__*/_jsxs(_Fragment, {
270
+ children: [/*#__PURE__*/_jsx(Separator, {}), /*#__PURE__*/_jsx(LatestCommit, {
271
+ commit: latest
272
+ }), view.openCommit !== null && /*#__PURE__*/_jsx("div", {
273
+ className: "flex justify-end",
274
+ children: /*#__PURE__*/_jsx(Popover.Close, {
275
+ render: /*#__PURE__*/_jsxs(Button, {
276
+ size: "xs",
277
+ variant: "secondary",
278
+ onClick: view.openCommit,
279
+ children: [/*#__PURE__*/_jsx(Icon, {
280
+ icon: GitCommitHorizontal,
281
+ size: 14
282
+ }), t("language.codeVision.showCommit")]
283
+ })
284
+ })
285
+ })]
286
+ });
287
+ $[25] = latest;
288
+ $[26] = t;
289
+ $[27] = view.openCommit;
290
+ $[28] = t10;
291
+ } else {
292
+ t10 = $[28];
293
+ }
294
+ let t11;
295
+ if ($[29] !== anchor || $[30] !== t10 || $[31] !== t6 || $[32] !== t9) {
296
+ t11 = /*#__PURE__*/_jsxs(Popover.Popup, {
297
+ anchor: anchor,
298
+ side: "bottom",
299
+ align: "start",
300
+ sideOffset: 4,
301
+ className: "flex w-72 flex-col gap-2 p-3 text-xs",
302
+ children: [t6, t9, t10]
303
+ });
304
+ $[29] = anchor;
305
+ $[30] = t10;
306
+ $[31] = t6;
307
+ $[32] = t9;
308
+ $[33] = t11;
309
+ } else {
310
+ t11 = $[33];
311
+ }
312
+ let t12;
313
+ if ($[34] !== t11 || $[35] !== t2) {
314
+ t12 = /*#__PURE__*/_jsx(Popover.Root, {
315
+ open: true,
316
+ onOpenChange: t2,
317
+ children: t11
318
+ });
319
+ $[34] = t11;
320
+ $[35] = t2;
321
+ $[36] = t12;
322
+ } else {
323
+ t12 = $[36];
324
+ }
325
+ return t12;
326
+ }