@adecore/editor-react 0.22.1 → 0.23.1

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 (209) hide show
  1. package/dist/CallHierarchyPanel.d.ts +6 -0
  2. package/dist/CallHierarchyPanel.js +92 -0
  3. package/dist/CompletionPopup.js +11 -3
  4. package/dist/DiffView.d.ts +22 -0
  5. package/dist/DiffView.js +203 -0
  6. package/dist/EditorContextMenu.js +1 -0
  7. package/dist/EditorView.js +18 -1
  8. package/dist/FindReplace.d.ts +1 -1
  9. package/dist/FindReplace.js +41 -11
  10. package/dist/HoverCard.js +2 -2
  11. package/dist/LanguagePopups.js +4 -1
  12. package/dist/Markdown.d.ts +2 -1
  13. package/dist/Markdown.js +8 -4
  14. package/dist/PanelResizeHandle.d.ts +8 -0
  15. package/dist/PanelResizeHandle.js +71 -0
  16. package/dist/PeekPanel.d.ts +3 -0
  17. package/dist/PeekPanel.js +7 -4
  18. package/dist/PickPopup.js +15 -2
  19. package/dist/RenameCard.js +10 -5
  20. package/dist/RenderedDocs.d.ts +9 -0
  21. package/dist/RenderedDocs.js +84 -0
  22. package/dist/SplitDiffView.d.ts +9 -0
  23. package/dist/SplitDiffView.js +276 -0
  24. package/dist/SymbolPicker.d.ts +3 -0
  25. package/dist/SymbolPicker.js +4 -3
  26. package/dist/call-hierarchy-model.d.ts +52 -0
  27. package/dist/call-hierarchy-model.js +93 -0
  28. package/dist/call-hierarchy.d.ts +42 -0
  29. package/dist/call-hierarchy.js +398 -0
  30. package/dist/code-actions-model.d.ts +2 -0
  31. package/dist/code-actions-model.js +12 -10
  32. package/dist/code-actions.js +3 -1
  33. package/dist/completion-model.d.ts +14 -4
  34. package/dist/completion-model.js +40 -33
  35. package/dist/completion.d.ts +4 -0
  36. package/dist/completion.js +257 -42
  37. package/dist/diagnostics.js +8 -6
  38. package/dist/diff-expansion.d.ts +9 -0
  39. package/dist/diff-expansion.js +41 -0
  40. package/dist/diff-overlays.d.ts +15 -0
  41. package/dist/diff-overlays.js +28 -0
  42. package/dist/diff-syntax.d.ts +16 -0
  43. package/dist/diff-syntax.js +49 -0
  44. package/dist/diff-wordmarks.d.ts +5 -0
  45. package/dist/diff-wordmarks.js +26 -0
  46. package/dist/doc-comment-model.d.ts +23 -0
  47. package/dist/doc-comment-model.js +291 -0
  48. package/dist/editor-language.d.ts +13 -1
  49. package/dist/editor-language.js +15 -5
  50. package/dist/editor-react.css +79 -0
  51. package/dist/format-on-type.d.ts +14 -0
  52. package/dist/format-on-type.js +96 -0
  53. package/dist/host-types.d.ts +19 -0
  54. package/dist/hover.d.ts +4 -0
  55. package/dist/hover.js +15 -2
  56. package/dist/index.d.ts +19 -5
  57. package/dist/index.js +9 -1
  58. package/dist/inlay-hints.d.ts +47 -2
  59. package/dist/inlay-hints.js +353 -16
  60. package/dist/language-ids.js +4 -2
  61. package/dist/locales/en.json +117 -3
  62. package/dist/locales/nl.json +117 -3
  63. package/dist/models.d.ts +6 -2
  64. package/dist/models.js +5 -1
  65. package/dist/panel-size.d.ts +6 -0
  66. package/dist/panel-size.js +25 -0
  67. package/dist/patch-decorations.d.ts +27 -0
  68. package/dist/patch-decorations.js +182 -0
  69. package/dist/patch-layout.d.ts +40 -0
  70. package/dist/patch-layout.js +304 -0
  71. package/dist/peek.d.ts +3 -1
  72. package/dist/peek.js +6 -1
  73. package/dist/pick.d.ts +1 -0
  74. package/dist/pick.js +11 -1
  75. package/dist/popups.d.ts +17 -0
  76. package/dist/popups.js +1 -0
  77. package/dist/project-language.d.ts +12 -0
  78. package/dist/project-language.js +52 -2
  79. package/dist/refresher.d.ts +1 -0
  80. package/dist/refresher.js +5 -0
  81. package/dist/rename-model.d.ts +1 -1
  82. package/dist/rename-model.js +3 -7
  83. package/dist/rename.js +5 -8
  84. package/dist/rendered-docs.d.ts +64 -0
  85. package/dist/rendered-docs.js +374 -0
  86. package/dist/row-host.d.ts +2 -0
  87. package/dist/row-host.js +11 -3
  88. package/dist/semantic-delta.d.ts +2 -0
  89. package/dist/semantic-delta.js +27 -0
  90. package/dist/semantic-model.js +16 -0
  91. package/dist/semantic-tokens.d.ts +26 -1
  92. package/dist/semantic-tokens.js +174 -14
  93. package/dist/shortcut-keys.d.ts +2 -0
  94. package/dist/shortcut-keys.js +6 -2
  95. package/dist/signature.js +1 -1
  96. package/dist/snippet-field-transforms.d.ts +30 -0
  97. package/dist/snippet-field-transforms.js +116 -0
  98. package/dist/snippet-indent.d.ts +2 -0
  99. package/dist/snippet-indent.js +49 -0
  100. package/dist/snippet-range-order.d.ts +3 -0
  101. package/dist/snippet-range-order.js +19 -0
  102. package/dist/snippet-session.d.ts +42 -6
  103. package/dist/snippet-session.js +650 -53
  104. package/dist/snippet-transform-client.d.ts +19 -0
  105. package/dist/snippet-transform-client.js +66 -0
  106. package/dist/snippet-transform-format.d.ts +15 -0
  107. package/dist/snippet-transform-format.js +302 -0
  108. package/dist/snippet-transform-protocol.d.ts +45 -0
  109. package/dist/snippet-transform-protocol.js +8 -0
  110. package/dist/snippet-transform-queue.d.ts +32 -0
  111. package/dist/snippet-transform-queue.js +173 -0
  112. package/dist/snippet-transform-worker.d.ts +10 -0
  113. package/dist/snippet-transform-worker.js +41 -0
  114. package/dist/snippet-variable-names.d.ts +1 -0
  115. package/dist/snippet-variable-names.js +36 -0
  116. package/dist/snippet-variables.d.ts +7 -0
  117. package/dist/snippet-variables.js +66 -0
  118. package/dist/snippet.d.ts +30 -3
  119. package/dist/snippet.js +402 -87
  120. package/dist/split-alignment.d.ts +6 -0
  121. package/dist/split-alignment.js +38 -0
  122. package/dist/split-scroll.d.ts +14 -0
  123. package/dist/split-scroll.js +45 -0
  124. package/dist/symbols.d.ts +2 -1
  125. package/dist/symbols.js +39 -7
  126. package/dist/testing.d.ts +5 -1
  127. package/dist/testing.js +12 -0
  128. package/dist/timers.d.ts +1 -0
  129. package/dist/timers.js +4 -0
  130. package/dist/use-panel-body.d.ts +6 -0
  131. package/dist/use-panel-body.js +13 -0
  132. package/dist/workspace-edit.d.ts +25 -3
  133. package/dist/workspace-edit.js +282 -143
  134. package/package.json +10 -5
  135. package/src/CallHierarchyPanel.tsx +244 -0
  136. package/src/CompletionPopup.tsx +12 -1
  137. package/src/DiffView.tsx +262 -0
  138. package/src/EditorContextMenu.tsx +1 -0
  139. package/src/EditorView.tsx +21 -2
  140. package/src/FindReplace.tsx +51 -13
  141. package/src/HoverCard.tsx +23 -21
  142. package/src/LanguagePopups.tsx +5 -0
  143. package/src/Markdown.tsx +10 -3
  144. package/src/PanelResizeHandle.tsx +104 -0
  145. package/src/PeekPanel.tsx +11 -6
  146. package/src/PickPopup.tsx +18 -2
  147. package/src/RenameCard.tsx +18 -0
  148. package/src/RenderedDocs.tsx +155 -0
  149. package/src/SplitDiffView.tsx +337 -0
  150. package/src/SymbolPicker.tsx +4 -3
  151. package/src/call-hierarchy-model.ts +151 -0
  152. package/src/call-hierarchy.ts +440 -0
  153. package/src/code-actions-model.ts +17 -11
  154. package/src/code-actions.ts +3 -1
  155. package/src/completion-model.ts +61 -35
  156. package/src/completion.ts +302 -42
  157. package/src/diagnostics.ts +8 -6
  158. package/src/diff-expansion.ts +49 -0
  159. package/src/diff-overlays.tsx +69 -0
  160. package/src/diff-syntax.ts +67 -0
  161. package/src/diff-wordmarks.ts +31 -0
  162. package/src/doc-comment-model.ts +336 -0
  163. package/src/editor-language.ts +22 -6
  164. package/src/editor-react.css +79 -0
  165. package/src/format-on-type.ts +111 -0
  166. package/src/host-types.ts +23 -0
  167. package/src/hover.ts +18 -3
  168. package/src/index.ts +27 -4
  169. package/src/inlay-hints.ts +394 -18
  170. package/src/language-ids.ts +4 -2
  171. package/src/locales/en.json +117 -3
  172. package/src/locales/nl.json +117 -3
  173. package/src/models.ts +40 -1
  174. package/src/panel-size.ts +28 -0
  175. package/src/patch-decorations.ts +224 -0
  176. package/src/patch-layout.ts +388 -0
  177. package/src/peek.ts +6 -1
  178. package/src/pick.ts +12 -1
  179. package/src/popups.ts +24 -0
  180. package/src/project-language.ts +63 -2
  181. package/src/refresher.ts +6 -0
  182. package/src/rename-model.ts +4 -8
  183. package/src/rename.ts +5 -8
  184. package/src/rendered-docs.ts +430 -0
  185. package/src/row-host.ts +12 -3
  186. package/src/semantic-delta.ts +29 -0
  187. package/src/semantic-model.ts +17 -0
  188. package/src/semantic-tokens.ts +202 -19
  189. package/src/shortcut-keys.ts +6 -2
  190. package/src/signature.ts +1 -1
  191. package/src/snippet-field-transforms.ts +144 -0
  192. package/src/snippet-indent.ts +53 -0
  193. package/src/snippet-range-order.ts +19 -0
  194. package/src/snippet-session.ts +797 -56
  195. package/src/snippet-transform-client.ts +84 -0
  196. package/src/snippet-transform-format.ts +325 -0
  197. package/src/snippet-transform-protocol.ts +24 -0
  198. package/src/snippet-transform-queue.ts +199 -0
  199. package/src/snippet-transform-worker.ts +58 -0
  200. package/src/snippet-variable-names.ts +36 -0
  201. package/src/snippet-variables.ts +74 -0
  202. package/src/snippet.ts +452 -89
  203. package/src/split-alignment.ts +45 -0
  204. package/src/split-scroll.ts +54 -0
  205. package/src/symbols.ts +43 -7
  206. package/src/testing.ts +25 -0
  207. package/src/timers.ts +5 -0
  208. package/src/use-panel-body.ts +17 -0
  209. package/src/workspace-edit.ts +347 -169
@@ -0,0 +1,41 @@
1
+ import { applySnippetTransform, createSnippetTransformBudget, validateSnippetTransformJobs } from './snippet-transform-format.js';
2
+ import { MAX_TRANSFORM_CHARACTERS } from './snippet-transform-protocol.js';
3
+ export { createSnippetTransformClient, SnippetTransformError } from './snippet-transform-client.js';
4
+ export { compileSnippetTransformFormat } from './snippet-transform-format.js';
5
+ export function serveSnippetTransforms(endpoint) {
6
+ const receive = ({ data: request }) => {
7
+ const id = request !== null && typeof request === 'object' && Number.isSafeInteger(request.id) && request.id > 0 ? request.id : 0;
8
+ try {
9
+ if (id === 0 || request.type !== 'transform') {
10
+ throw new RangeError('Invalid snippet transform request.');
11
+ }
12
+ validateSnippetTransformJobs(request.jobs);
13
+ let remaining = MAX_TRANSFORM_CHARACTERS;
14
+ const budget = createSnippetTransformBudget();
15
+ const patterns = new Map();
16
+ const values = request.jobs.map((job) => {
17
+ const key = job.flags + '\0' + job.pattern;
18
+ let expression = patterns.get(key);
19
+ if (expression === undefined) {
20
+ expression = new RegExp(job.pattern, job.flags);
21
+ patterns.set(key, expression);
22
+ }
23
+ const value = applySnippetTransform(job, remaining, expression, budget);
24
+ remaining -= value.length;
25
+ return value;
26
+ });
27
+ endpoint.postMessage({ type: 'transformed', id: request.id, values });
28
+ }
29
+ catch (error) {
30
+ endpoint.postMessage({
31
+ type: 'error',
32
+ id,
33
+ kind: error instanceof SyntaxError ? 'syntax' : error instanceof RangeError ? 'range' : 'error',
34
+ message: error instanceof Error ? error.message : String(error)
35
+ });
36
+ }
37
+ };
38
+ endpoint.addEventListener('message', receive);
39
+ endpoint.postMessage({ type: 'ready' });
40
+ return () => endpoint.removeEventListener('message', receive);
41
+ }
@@ -0,0 +1 @@
1
+ export declare const SNIPPET_VARIABLES: ReadonlySet<string>;
@@ -0,0 +1,36 @@
1
+ export const SNIPPET_VARIABLES = new Set([
2
+ 'TM_SELECTED_TEXT',
3
+ 'TM_CURRENT_LINE',
4
+ 'TM_CURRENT_WORD',
5
+ 'TM_LINE_INDEX',
6
+ 'TM_LINE_NUMBER',
7
+ 'TM_FILENAME',
8
+ 'TM_FILENAME_BASE',
9
+ 'TM_DIRECTORY',
10
+ 'TM_FILEPATH',
11
+ 'RELATIVE_FILEPATH',
12
+ 'WORKSPACE_NAME',
13
+ 'WORKSPACE_FOLDER',
14
+ 'CURSOR_INDEX',
15
+ 'CURSOR_NUMBER',
16
+ 'CLIPBOARD',
17
+ 'CURRENT_YEAR',
18
+ 'CURRENT_YEAR_SHORT',
19
+ 'CURRENT_MONTH',
20
+ 'CURRENT_MONTH_NAME',
21
+ 'CURRENT_MONTH_NAME_SHORT',
22
+ 'CURRENT_DATE',
23
+ 'CURRENT_DAY_NAME',
24
+ 'CURRENT_DAY_NAME_SHORT',
25
+ 'CURRENT_HOUR',
26
+ 'CURRENT_MINUTE',
27
+ 'CURRENT_SECOND',
28
+ 'CURRENT_SECONDS_UNIX',
29
+ 'CURRENT_TIMEZONE_OFFSET',
30
+ 'RANDOM',
31
+ 'RANDOM_HEX',
32
+ 'UUID',
33
+ 'LINE_COMMENT',
34
+ 'BLOCK_COMMENT_START',
35
+ 'BLOCK_COMMENT_END'
36
+ ]);
@@ -0,0 +1,7 @@
1
+ import type { SnippetVariableContext } from './host-types.ts';
2
+ import type { SnippetVariableResolver } from './snippet.ts';
3
+ export declare function createSnippetResolver(context: SnippetVariableContext, custom?: (name: string, context: SnippetVariableContext) => string | undefined, sources?: {
4
+ now?: Date;
5
+ random?: () => number;
6
+ uuid?: () => string;
7
+ }): SnippetVariableResolver;
@@ -0,0 +1,66 @@
1
+ const MONTHS = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
2
+ const DAYS = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
3
+ export function createSnippetResolver(context, custom, sources = {}) {
4
+ const now = sources.now ?? new Date();
5
+ const random = sources.random ?? Math.random;
6
+ const path = context.path;
7
+ const filename = path?.replace(/\\/g, '/').split('/').at(-1);
8
+ const folder = context.folder?.replace(/\\/g, '/').replace(/\/$/, '');
9
+ const normalized = path?.replace(/\\/g, '/');
10
+ const pad = (value) => String(value).padStart(2, '0');
11
+ const timezone = -now.getTimezoneOffset();
12
+ const values = {
13
+ TM_SELECTED_TEXT: context.selectedText,
14
+ TM_CURRENT_LINE: context.currentLine,
15
+ TM_CURRENT_WORD: context.currentWord,
16
+ TM_LINE_INDEX: String(context.position.line),
17
+ TM_LINE_NUMBER: String(context.position.line + 1),
18
+ CURSOR_INDEX: String(context.cursorIndex),
19
+ CURSOR_NUMBER: String(context.cursorIndex + 1),
20
+ TM_FILENAME: filename,
21
+ TM_FILENAME_BASE: filename === undefined ? undefined : filename.replace(/(?<=.)\.[^.]*$/, ''),
22
+ TM_DIRECTORY: normalized === undefined ? undefined : normalized.includes('/') ? normalized.slice(0, normalized.lastIndexOf('/')) : '',
23
+ TM_FILEPATH: path,
24
+ RELATIVE_FILEPATH: folder !== undefined && normalized?.startsWith(folder + '/') ? normalized.slice(folder.length + 1) : path,
25
+ WORKSPACE_FOLDER: context.folder,
26
+ WORKSPACE_NAME: folder?.split('/').at(-1),
27
+ CURRENT_YEAR: String(now.getFullYear()),
28
+ CURRENT_YEAR_SHORT: String(now.getFullYear()).slice(-2),
29
+ CURRENT_MONTH: pad(now.getMonth() + 1),
30
+ CURRENT_MONTH_NAME: MONTHS[now.getMonth()],
31
+ CURRENT_MONTH_NAME_SHORT: MONTHS[now.getMonth()].slice(0, 3),
32
+ CURRENT_DATE: pad(now.getDate()),
33
+ CURRENT_DAY_NAME: DAYS[now.getDay()],
34
+ CURRENT_DAY_NAME_SHORT: DAYS[now.getDay()].slice(0, 3),
35
+ CURRENT_HOUR: pad(now.getHours()),
36
+ CURRENT_MINUTE: pad(now.getMinutes()),
37
+ CURRENT_SECOND: pad(now.getSeconds()),
38
+ CURRENT_SECONDS_UNIX: String(Math.floor(now.getTime() / 1000)),
39
+ CURRENT_TIMEZONE_OFFSET: (timezone < 0 ? '-' : '+') + pad(Math.floor(Math.abs(timezone) / 60)) + pad(Math.abs(timezone) % 60)
40
+ };
41
+ const builtins = new Map(Object.entries(values));
42
+ const cache = new Map();
43
+ return (name) => {
44
+ if (!cache.has(name)) {
45
+ let supplied;
46
+ try {
47
+ supplied = custom?.(name, context);
48
+ }
49
+ catch {
50
+ // A failed host override leaves the built-in or editable variable available.
51
+ }
52
+ const value = supplied ??
53
+ (name === 'RANDOM'
54
+ ? String(Math.floor(random() * 1_000_000)).padStart(6, '0')
55
+ : name === 'RANDOM_HEX'
56
+ ? Math.floor(random() * 0x1000000)
57
+ .toString(16)
58
+ .padStart(6, '0')
59
+ : name === 'UUID'
60
+ ? (sources.uuid?.() ?? globalThis.crypto?.randomUUID())
61
+ : builtins.get(name));
62
+ cache.set(name, value);
63
+ }
64
+ return cache.get(name);
65
+ };
66
+ }
package/dist/snippet.d.ts CHANGED
@@ -1,11 +1,38 @@
1
- export interface SnippetStop {
2
- readonly index: number;
1
+ import type { SnippetTransformJob } from './snippet-transform-protocol.ts';
2
+ export type SnippetTransform = Omit<SnippetTransformJob, 'value'>;
3
+ export interface SnippetRange {
3
4
  readonly start: number;
4
5
  readonly end: number;
6
+ readonly parents?: readonly number[];
7
+ readonly transform?: SnippetTransform;
8
+ readonly tail?: true;
9
+ }
10
+ export interface SnippetStop extends SnippetRange {
11
+ readonly index: number;
12
+ }
13
+ export interface SnippetField {
14
+ readonly index: number;
15
+ readonly ranges: readonly SnippetRange[];
16
+ readonly primary: number;
17
+ readonly linked?: readonly SnippetRange[];
18
+ readonly parents?: readonly number[];
19
+ readonly choices?: readonly string[];
5
20
  }
6
21
  export interface ParsedSnippet {
22
+ readonly limited?: true;
7
23
  readonly text: string;
8
24
  readonly stops: readonly SnippetStop[];
25
+ readonly fields?: readonly SnippetField[];
26
+ readonly transforms?: readonly (SnippetRange & {
27
+ readonly transform: SnippetTransform;
28
+ })[];
29
+ }
30
+ export type SnippetVariableResolver = (name: string) => string | undefined;
31
+ export interface SnippetTemplate {
32
+ readonly source: string;
33
+ render(resolve?: SnippetVariableResolver, variableTransforms?: readonly string[]): ParsedSnippet;
9
34
  }
10
- export declare function parseSnippet(snippet: string): ParsedSnippet;
35
+ export declare const MAX_SNIPPET_TEXT = 100000;
36
+ export declare function compileSnippet(source: string): SnippetTemplate;
37
+ export declare function parseSnippet(snippet: string, resolve?: SnippetVariableResolver): ParsedSnippet;
11
38
  export declare function tabOrder(parsed: ParsedSnippet): SnippetStop[];