@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,114 +1,291 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { c as _c } from "react/compiler-runtime";
2
2
  import { createHolder } from './holder.js';
3
3
  import { useLayoutEffect, useMemo, useRef, useSyncExternalStore } from 'react';
4
4
  import { useTranslation } from 'react-i18next';
5
5
  import { DEFAULT_SMART_KEYS } from '@adecore/editor';
6
6
  import { EditorLanguage } from './editor-language.js';
7
- import { LanguagePopups } from './LanguagePopups.js';
8
- const DEFAULT_INDENTATION = { tabSize: 4, insertSpaces: true };
7
+ import { LanguagePopups } from "./LanguagePopups.js";
8
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
+ const DEFAULT_INDENTATION = {
10
+ tabSize: 4,
11
+ insertSpaces: true
12
+ };
9
13
  /* The names of the fold controls in the editor's `{start}` and `{end}` placeholders, which the editor fills in per control. */
10
14
  function foldMessages(t) {
11
- const lines = { start: '{start}', end: '{end}' };
12
- return { fold: t('language.fold.fold', lines), unfold: t('language.fold.unfold', lines) };
15
+ const lines = {
16
+ start: '{start}',
17
+ end: '{end}'
18
+ };
19
+ return {
20
+ fold: t('language.fold.fold', lines),
21
+ unfold: t('language.fold.unfold', lines)
22
+ };
13
23
  }
14
24
  function sameFields(left, right) {
15
- if (left === right) {
16
- return true;
17
- }
18
- if (left === undefined || right === undefined) {
19
- return false;
20
- }
21
- const keys = new Set([...Object.keys(left), ...Object.keys(right)]);
22
- return [...keys].every((key) => left[key] === right[key]);
25
+ if (left === right) {
26
+ return true;
27
+ }
28
+ if (left === undefined || right === undefined) {
29
+ return false;
30
+ }
31
+ const keys = new Set([...Object.keys(left), ...Object.keys(right)]);
32
+ return [...keys].every(key => left[key] === right[key]);
23
33
  }
24
34
  /* Hands the editor the settings that changed by value, so a new options object with the same values costs nothing. */
25
35
  function applyChangedOptions(editor, before, after) {
26
- if (before.theme !== after.theme) {
27
- editor.setTheme(after.theme);
28
- }
29
- if (before.readOnly !== after.readOnly || before.readOnlyReason !== after.readOnlyReason) {
30
- editor.setReadOnly(after.readOnly ?? false, after.readOnlyReason);
31
- }
32
- if (before.wrap !== after.wrap) {
33
- editor.setWrap(after.wrap ?? false);
34
- }
35
- if (!sameFields(before.indentation, after.indentation)) {
36
- editor.setIndentation(after.indentation ?? DEFAULT_INDENTATION);
37
- }
38
- if (!sameFields(before.smartKeys, after.smartKeys)) {
39
- // The setter keeps the keys left out, where the options mean the default.
40
- editor.setSmartKeys({ ...DEFAULT_SMART_KEYS, ...after.smartKeys });
41
- }
42
- if (before.guides !== after.guides) {
43
- editor.setGuides(after.guides ?? true);
44
- }
45
- if (before.stickyScroll !== after.stickyScroll) {
46
- editor.setStickyScroll?.(after.stickyScroll ?? true);
47
- }
48
- if (before.whitespace !== after.whitespace) {
49
- editor.setWhitespace(after.whitespace ?? false);
50
- }
51
- if (before.rightMargin !== after.rightMargin) {
52
- editor.setRightMargin(after.rightMargin ?? null);
53
- }
54
- if (before.foldOutline !== after.foldOutline) {
55
- editor.setFoldOutline(after.foldOutline ?? 'hover');
56
- }
57
- if (after.label !== undefined && before.label !== after.label) {
58
- editor.setLabel(after.label);
59
- }
60
- }
61
- export function EditorView({ engine, options, project, uri, languageId, timers, languageOptions, className, ref, onMount, contextMenuItems, hoverFooter }) {
62
- const { t } = useTranslation('editor');
63
- const element = useRef(null);
64
- const mounted = useRef(null);
65
- const words = useRef(t);
66
- const latest = useRef({ options, timers, languageOptions, onMount });
67
- const applied = useRef(options);
68
- const holder = useMemo(() => createHolder(), []);
69
- const language = useSyncExternalStore(holder.subscribe, holder.get, holder.get);
70
- useLayoutEffect(() => {
71
- latest.current = { options, timers, languageOptions, onMount };
36
+ if (before.theme !== after.theme) {
37
+ editor.setTheme(after.theme);
38
+ }
39
+ if (before.readOnly !== after.readOnly || before.readOnlyReason !== after.readOnlyReason) {
40
+ editor.setReadOnly(after.readOnly ?? false, after.readOnlyReason);
41
+ }
42
+ if (before.wrap !== after.wrap) {
43
+ editor.setWrap(after.wrap ?? false);
44
+ }
45
+ if (!sameFields(before.indentation, after.indentation)) {
46
+ editor.setIndentation(after.indentation ?? DEFAULT_INDENTATION);
47
+ }
48
+ if (!sameFields(before.smartKeys, after.smartKeys)) {
49
+ // The setter keeps the keys left out, where the options mean the default.
50
+ editor.setSmartKeys({
51
+ ...DEFAULT_SMART_KEYS,
52
+ ...after.smartKeys
72
53
  });
73
- useLayoutEffect(() => {
74
- const host = element.current;
75
- if (host === null) {
76
- return;
77
- }
78
- const inputs = latest.current;
79
- const editor = engine.mount(host, { ...inputs.options, messages: { ...foldMessages(words.current), ...inputs.options.messages } });
80
- mounted.current = editor;
81
- applied.current = inputs.options;
82
- const attached = project === undefined || uri === undefined || languageId === undefined
83
- ? null
84
- : new EditorLanguage(project, editor, uri, languageId, inputs.timers, inputs.languageOptions);
85
- holder.set(attached);
86
- const stop = inputs.onMount?.(editor, attached);
87
- return () => {
88
- mounted.current = null;
89
- holder.set(null);
90
- stop?.();
91
- attached?.dispose();
92
- editor.dispose();
93
- };
94
- }, [engine, project, uri, languageId, holder]);
95
- useLayoutEffect(() => {
96
- const editor = mounted.current;
97
- if (editor === null || applied.current === options) {
98
- return;
54
+ }
55
+ if (before.guides !== after.guides) {
56
+ editor.setGuides(after.guides ?? true);
57
+ }
58
+ if (before.stickyScroll !== after.stickyScroll) {
59
+ editor.setStickyScroll?.(after.stickyScroll ?? true);
60
+ }
61
+ if (before.whitespace !== after.whitespace) {
62
+ editor.setWhitespace(after.whitespace ?? false);
63
+ }
64
+ if (before.rightMargin !== after.rightMargin) {
65
+ editor.setRightMargin(after.rightMargin ?? null);
66
+ }
67
+ if (before.foldOutline !== after.foldOutline) {
68
+ editor.setFoldOutline(after.foldOutline ?? 'hover');
69
+ }
70
+ if (after.label !== undefined && before.label !== after.label) {
71
+ editor.setLabel(after.label);
72
+ }
73
+ }
74
+ export function EditorView(t0) {
75
+ const $ = _c(37);
76
+ const {
77
+ engine,
78
+ options,
79
+ project,
80
+ uri,
81
+ languageId,
82
+ timers,
83
+ languageOptions,
84
+ className,
85
+ ref,
86
+ onMount,
87
+ contextMenuItems,
88
+ hoverFooter
89
+ } = t0;
90
+ const {
91
+ t
92
+ } = useTranslation("editor");
93
+ const element = useRef(null);
94
+ const mounted = useRef(null);
95
+ const words = useRef(t);
96
+ let t1;
97
+ if ($[0] !== languageOptions || $[1] !== onMount || $[2] !== options || $[3] !== timers) {
98
+ t1 = {
99
+ options,
100
+ timers,
101
+ languageOptions,
102
+ onMount
103
+ };
104
+ $[0] = languageOptions;
105
+ $[1] = onMount;
106
+ $[2] = options;
107
+ $[3] = timers;
108
+ $[4] = t1;
109
+ } else {
110
+ t1 = $[4];
111
+ }
112
+ const latest = useRef(t1);
113
+ const applied = useRef(options);
114
+ let t2;
115
+ if ($[5] === Symbol.for("react.memo_cache_sentinel")) {
116
+ t2 = createHolder();
117
+ $[5] = t2;
118
+ } else {
119
+ t2 = $[5];
120
+ }
121
+ const holder = t2;
122
+ const language = useSyncExternalStore(holder.subscribe, holder.get, holder.get);
123
+ let t3;
124
+ if ($[6] !== languageOptions || $[7] !== onMount || $[8] !== options || $[9] !== timers) {
125
+ t3 = () => {
126
+ latest.current = {
127
+ options,
128
+ timers,
129
+ languageOptions,
130
+ onMount
131
+ };
132
+ };
133
+ $[6] = languageOptions;
134
+ $[7] = onMount;
135
+ $[8] = options;
136
+ $[9] = timers;
137
+ $[10] = t3;
138
+ } else {
139
+ t3 = $[10];
140
+ }
141
+ useLayoutEffect(t3);
142
+ let t4;
143
+ let t5;
144
+ if ($[11] !== engine || $[12] !== languageId || $[13] !== project || $[14] !== uri) {
145
+ t4 = () => {
146
+ const host = element.current;
147
+ if (host === null) {
148
+ return;
149
+ }
150
+ const inputs = latest.current;
151
+ const editor = engine.mount(host, {
152
+ ...inputs.options,
153
+ messages: {
154
+ ...foldMessages(words.current),
155
+ ...inputs.options.messages
99
156
  }
100
- applyChangedOptions(editor, applied.current, options);
101
- applied.current = options;
157
+ });
158
+ mounted.current = editor;
159
+ applied.current = inputs.options;
160
+ const attached = project === undefined || uri === undefined || languageId === undefined ? null : new EditorLanguage(project, editor, uri, languageId, inputs.timers, inputs.languageOptions);
161
+ holder.set(attached);
162
+ const stop = inputs.onMount?.(editor, attached);
163
+ return () => {
164
+ mounted.current = null;
165
+ holder.set(null);
166
+ stop?.();
167
+ attached?.dispose();
168
+ editor.dispose();
169
+ };
170
+ };
171
+ t5 = [engine, project, uri, languageId, holder];
172
+ $[11] = engine;
173
+ $[12] = languageId;
174
+ $[13] = project;
175
+ $[14] = uri;
176
+ $[15] = t4;
177
+ $[16] = t5;
178
+ } else {
179
+ t4 = $[15];
180
+ t5 = $[16];
181
+ }
182
+ useLayoutEffect(t4, t5);
183
+ let t6;
184
+ if ($[17] !== options) {
185
+ t6 = () => {
186
+ const editor_0 = mounted.current;
187
+ if (editor_0 === null || applied.current === options) {
188
+ return;
189
+ }
190
+ applyChangedOptions(editor_0, applied.current, options);
191
+ applied.current = options;
192
+ };
193
+ $[17] = options;
194
+ $[18] = t6;
195
+ } else {
196
+ t6 = $[18];
197
+ }
198
+ useLayoutEffect(t6);
199
+ let t7;
200
+ if ($[19] !== options.messages) {
201
+ t7 = options.messages ?? {};
202
+ $[19] = options.messages;
203
+ $[20] = t7;
204
+ } else {
205
+ t7 = $[20];
206
+ }
207
+ const {
208
+ fold,
209
+ unfold,
210
+ noMoreOccurrences
211
+ } = t7;
212
+ let t8;
213
+ let t9;
214
+ if ($[21] !== fold || $[22] !== noMoreOccurrences || $[23] !== t || $[24] !== unfold) {
215
+ t8 = () => {
216
+ words.current = t;
217
+ const localized = foldMessages(t);
218
+ mounted.current?.setMessages({
219
+ fold: fold ?? localized.fold,
220
+ unfold: unfold ?? localized.unfold,
221
+ ...(noMoreOccurrences === undefined ? {} : {
222
+ noMoreOccurrences
223
+ })
224
+ });
225
+ };
226
+ t9 = [t, fold, unfold, noMoreOccurrences];
227
+ $[21] = fold;
228
+ $[22] = noMoreOccurrences;
229
+ $[23] = t;
230
+ $[24] = unfold;
231
+ $[25] = t8;
232
+ $[26] = t9;
233
+ } else {
234
+ t8 = $[25];
235
+ t9 = $[26];
236
+ }
237
+ useLayoutEffect(t8, t9);
238
+ let t10;
239
+ if ($[27] === Symbol.for("react.memo_cache_sentinel")) {
240
+ t10 = {
241
+ position: "relative",
242
+ minHeight: 0
243
+ };
244
+ $[27] = t10;
245
+ } else {
246
+ t10 = $[27];
247
+ }
248
+ let t11;
249
+ if ($[28] === Symbol.for("react.memo_cache_sentinel")) {
250
+ t11 = /*#__PURE__*/_jsx("div", {
251
+ ref: element,
252
+ style: {
253
+ position: "absolute",
254
+ inset: 0
255
+ }
102
256
  });
103
- const { fold, unfold, noMoreOccurrences } = options.messages ?? {};
104
- useLayoutEffect(() => {
105
- words.current = t;
106
- const localized = foldMessages(t);
107
- mounted.current?.setMessages({
108
- fold: fold ?? localized.fold,
109
- unfold: unfold ?? localized.unfold,
110
- ...(noMoreOccurrences === undefined ? {} : { noMoreOccurrences })
111
- });
112
- }, [t, fold, unfold, noMoreOccurrences]);
113
- return (_jsxs("div", { className: className, ref: ref, style: { position: 'relative', minHeight: 0 }, children: [_jsx("div", { ref: element, style: { position: 'absolute', inset: 0 } }), language !== null && _jsx(LanguagePopups, { language: language, contextMenuItems: contextMenuItems, hoverFooter: hoverFooter })] }));
114
- }
257
+ $[28] = t11;
258
+ } else {
259
+ t11 = $[28];
260
+ }
261
+ let t12;
262
+ if ($[29] !== contextMenuItems || $[30] !== hoverFooter || $[31] !== language) {
263
+ t12 = language !== null && /*#__PURE__*/_jsx(LanguagePopups, {
264
+ language: language,
265
+ contextMenuItems: contextMenuItems,
266
+ hoverFooter: hoverFooter
267
+ });
268
+ $[29] = contextMenuItems;
269
+ $[30] = hoverFooter;
270
+ $[31] = language;
271
+ $[32] = t12;
272
+ } else {
273
+ t12 = $[32];
274
+ }
275
+ let t13;
276
+ if ($[33] !== className || $[34] !== ref || $[35] !== t12) {
277
+ t13 = /*#__PURE__*/_jsxs("div", {
278
+ className: className,
279
+ ref: ref,
280
+ style: t10,
281
+ children: [t11, t12]
282
+ });
283
+ $[33] = className;
284
+ $[34] = ref;
285
+ $[35] = t12;
286
+ $[36] = t13;
287
+ } else {
288
+ t13 = $[36];
289
+ }
290
+ return t13;
291
+ }