@adecore/editor 0.0.1 → 0.17.0-beta.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 (107) hide show
  1. package/LICENSE +110 -0
  2. package/README.md +82 -0
  3. package/dist/attribution.d.ts +28 -0
  4. package/dist/attribution.js +55 -0
  5. package/dist/code-block.d.ts +2 -0
  6. package/dist/code-block.js +89 -0
  7. package/dist/column-selection.d.ts +9 -0
  8. package/dist/column-selection.js +52 -0
  9. package/dist/controller.d.ts +64 -0
  10. package/dist/controller.js +772 -0
  11. package/dist/editor.css +813 -0
  12. package/dist/engine.d.ts +2 -0
  13. package/dist/engine.js +604 -0
  14. package/dist/fake.d.ts +190 -0
  15. package/dist/fake.js +658 -0
  16. package/dist/find.d.ts +30 -0
  17. package/dist/find.js +108 -0
  18. package/dist/index.d.ts +5 -0
  19. package/dist/index.js +4 -0
  20. package/dist/input.d.ts +9 -0
  21. package/dist/input.js +57 -0
  22. package/dist/keymap-table.d.ts +102 -0
  23. package/dist/keymap-table.js +130 -0
  24. package/dist/keymap.d.ts +36 -0
  25. package/dist/keymap.js +163 -0
  26. package/dist/layout.d.ts +167 -0
  27. package/dist/layout.js +583 -0
  28. package/dist/lens.d.ts +3 -0
  29. package/dist/lens.js +29 -0
  30. package/dist/listeners.d.ts +3 -0
  31. package/dist/listeners.js +12 -0
  32. package/dist/metrics.d.ts +8 -0
  33. package/dist/metrics.js +54 -0
  34. package/dist/modifier-gesture.d.ts +24 -0
  35. package/dist/modifier-gesture.js +98 -0
  36. package/dist/native-input.d.ts +26 -0
  37. package/dist/native-input.js +147 -0
  38. package/dist/offsets.d.ts +2 -0
  39. package/dist/offsets.js +14 -0
  40. package/dist/outline.d.ts +55 -0
  41. package/dist/outline.js +181 -0
  42. package/dist/overview.d.ts +17 -0
  43. package/dist/overview.js +55 -0
  44. package/dist/paint.d.ts +86 -0
  45. package/dist/paint.js +481 -0
  46. package/dist/php-html.d.ts +9 -0
  47. package/dist/php-html.js +36 -0
  48. package/dist/pointer.d.ts +49 -0
  49. package/dist/pointer.js +243 -0
  50. package/dist/scroll-animation.d.ts +3 -0
  51. package/dist/scroll-animation.js +45 -0
  52. package/dist/scroll.d.ts +28 -0
  53. package/dist/scroll.js +76 -0
  54. package/dist/semantic.d.ts +8 -0
  55. package/dist/semantic.js +47 -0
  56. package/dist/shiki.d.ts +7 -0
  57. package/dist/shiki.js +106 -0
  58. package/dist/smart-keys.d.ts +3 -0
  59. package/dist/smart-keys.js +14 -0
  60. package/dist/testing.d.ts +34 -0
  61. package/dist/testing.js +117 -0
  62. package/dist/theme-scopes.d.ts +9 -0
  63. package/dist/theme-scopes.js +61 -0
  64. package/dist/tokens.d.ts +28 -0
  65. package/dist/tokens.js +152 -0
  66. package/dist/tracked-range.d.ts +5 -0
  67. package/dist/tracked-range.js +20 -0
  68. package/dist/types.d.ts +342 -0
  69. package/dist/types.js +1 -0
  70. package/dist/view.d.ts +382 -0
  71. package/dist/view.js +2134 -0
  72. package/package.json +63 -3
  73. package/src/attribution.ts +85 -0
  74. package/src/code-block.ts +100 -0
  75. package/src/column-selection.ts +63 -0
  76. package/src/controller.ts +838 -0
  77. package/src/editor.css +813 -0
  78. package/src/engine.ts +757 -0
  79. package/src/fake.ts +831 -0
  80. package/src/find.ts +128 -0
  81. package/src/index.ts +69 -0
  82. package/src/input.ts +63 -0
  83. package/src/keymap-table.ts +163 -0
  84. package/src/keymap.ts +204 -0
  85. package/src/layout.ts +754 -0
  86. package/src/lens.ts +32 -0
  87. package/src/listeners.ts +15 -0
  88. package/src/metrics.ts +65 -0
  89. package/src/modifier-gesture.ts +115 -0
  90. package/src/native-input.ts +179 -0
  91. package/src/offsets.ts +16 -0
  92. package/src/outline.ts +248 -0
  93. package/src/overview.ts +80 -0
  94. package/src/paint.ts +608 -0
  95. package/src/php-html.ts +43 -0
  96. package/src/pointer.ts +326 -0
  97. package/src/scroll-animation.ts +48 -0
  98. package/src/scroll.ts +102 -0
  99. package/src/semantic.ts +54 -0
  100. package/src/shiki.ts +118 -0
  101. package/src/smart-keys.ts +17 -0
  102. package/src/testing.ts +157 -0
  103. package/src/theme-scopes.ts +75 -0
  104. package/src/tokens.ts +175 -0
  105. package/src/tracked-range.ts +22 -0
  106. package/src/types.ts +656 -0
  107. package/src/view.ts +2436 -0
package/dist/view.d.ts ADDED
@@ -0,0 +1,382 @@
1
+ import { type DocumentModel, type FoldHints, type FoldRole, type FoldingRange, type Selection as EditorSelection } from '@adecore/editor-core';
2
+ import { FindController } from './find.ts';
3
+ import { type BlockWidget, EditorLayout, type Inlay } from './layout.ts';
4
+ import { type ScrollKind } from './scroll.ts';
5
+ import { TokenCache } from './tokens.ts';
6
+ import type { EditorBlock, EditorChangeMark, EditorCodeBlockOptions, EditorFindQuery, EditorFindState, EditorHighlightKind, EditorMarkerSeverity, EditorMessages, EditorRect, EditorSmartKeys, LineTokenizer, ScopeColors } from './types.ts';
7
+ export interface ViewSettings {
8
+ language: string | undefined;
9
+ tabSize: number;
10
+ insertSpaces: boolean;
11
+ readOnly: boolean;
12
+ readOnlyReason: string | undefined;
13
+ wrap: boolean;
14
+ smartKeys: EditorSmartKeys;
15
+ messages: Partial<EditorMessages>;
16
+ guides: boolean;
17
+ whitespace: boolean;
18
+ rightMargin: number | null;
19
+ foldOutline: 'off' | 'hover' | 'always';
20
+ }
21
+ export type ViewFold = Omit<FoldingRange, 'kind'> & {
22
+ kind: FoldingRange['kind'] | 'custom';
23
+ };
24
+ export interface Occurrence {
25
+ from: number;
26
+ to: number;
27
+ kind?: EditorHighlightKind;
28
+ }
29
+ export interface ViewSemanticToken {
30
+ from: number;
31
+ to: number;
32
+ scopes: readonly string[];
33
+ }
34
+ export interface ViewMarker {
35
+ severity: EditorMarkerSeverity;
36
+ from: number;
37
+ to: number;
38
+ unnecessary: boolean;
39
+ deprecated: boolean;
40
+ message?: string;
41
+ }
42
+ export declare class EditorView {
43
+ readonly root: HTMLElement;
44
+ readonly viewport: HTMLElement;
45
+ readonly input: HTMLTextAreaElement;
46
+ readonly layout: EditorLayout;
47
+ readonly find: FindController;
48
+ readonly tokens: TokenCache;
49
+ private readonly content;
50
+ private readonly gutter;
51
+ private readonly gutterLines;
52
+ private readonly overlays;
53
+ private readonly over;
54
+ private readonly carets;
55
+ private readonly remote;
56
+ private readonly actions;
57
+ private readonly preview;
58
+ private readonly signs;
59
+ private readonly notice;
60
+ private readonly sticky;
61
+ private readonly overview;
62
+ private readonly tickTip;
63
+ private readonly painter;
64
+ private readonly document;
65
+ private readonly resizeObserver;
66
+ private readonly blockObserver;
67
+ private readonly subscription;
68
+ private readonly findListeners;
69
+ private readonly scopeListeners;
70
+ private readonly viewListeners;
71
+ private readonly gutterActionListeners;
72
+ private gutterAction;
73
+ private readonly gutterMarkerListeners;
74
+ private readonly gutterMarkers;
75
+ private semantic;
76
+ private scopeColors;
77
+ private semanticVersion;
78
+ private semanticIndex;
79
+ private readonly semanticLines;
80
+ private markers;
81
+ private markerVersion;
82
+ private viewKey;
83
+ private readonly hoverListeners;
84
+ private hoverOffset;
85
+ private readonly outline;
86
+ private stickyEntries;
87
+ private scopeKey;
88
+ private changeMarks;
89
+ private changeVersion;
90
+ private readonly attribution;
91
+ private readonly highlights;
92
+ private remoteCarets;
93
+ private remoteKey;
94
+ private readonly lineActions;
95
+ private readonly actionElements;
96
+ private readonly attributionListeners;
97
+ private attributionHover;
98
+ private attributionPointer;
99
+ private readonly tracked;
100
+ private overviewKey;
101
+ private gutterWidth;
102
+ private frame;
103
+ private caretTimer;
104
+ private caretKey;
105
+ private renderedScroll;
106
+ private font;
107
+ private layoutVersion;
108
+ private revision;
109
+ private rendering;
110
+ private frameGeometry;
111
+ private disposed;
112
+ private inlays;
113
+ private readonly blocks;
114
+ private lenses;
115
+ private occurrences;
116
+ private replacePreview;
117
+ private dropCaret;
118
+ private activeGuideCache;
119
+ columnMode: boolean;
120
+ private scrollRun;
121
+ private selectionOccurrenceCache;
122
+ private link;
123
+ private composition;
124
+ private ghost;
125
+ private ghostSerial;
126
+ private foldRanges;
127
+ private customFolds;
128
+ private collapsed;
129
+ private foldHints;
130
+ private defaultRoles;
131
+ private settled;
132
+ private foldTimer;
133
+ private colorTimer;
134
+ private noticeTimer;
135
+ private bracketCache;
136
+ private wrapWidth;
137
+ private rowEndCaret;
138
+ private topAnchor;
139
+ readonly model: DocumentModel;
140
+ readonly settings: ViewSettings;
141
+ constructor(container: HTMLElement, model: DocumentModel, settings: ViewSettings);
142
+ applySettings(): void;
143
+ refreshFont(): void;
144
+ setTokenizer(tokenizer: LineTokenizer | null): void;
145
+ setInlays(inlays: readonly Inlay[]): void;
146
+ setBlockWidgets(owner: string, blocks: readonly BlockWidget[]): void;
147
+ setLenses(lenses: readonly BlockWidget[]): void;
148
+ private allBlocks;
149
+ setOccurrences(occurrences: readonly Occurrence[]): void;
150
+ setLink(link: {
151
+ from: number;
152
+ to: number;
153
+ } | null): void;
154
+ setSemanticTokens(tokens: readonly ViewSemanticToken[] | null): void;
155
+ setScopeColors(colors: ScopeColors | null): void;
156
+ private styledTokensOf;
157
+ private semanticSpans;
158
+ setMarkers(markers: readonly ViewMarker[]): void;
159
+ setComposition(text: string | undefined): void;
160
+ notify(message: string): void;
161
+ get gutterElement(): HTMLElement;
162
+ get stickyElement(): HTMLElement;
163
+ focus(): void;
164
+ get focused(): boolean;
165
+ get viewportHeight(): number;
166
+ private get scrollTop();
167
+ private get scrollLeft();
168
+ private get clientWidth();
169
+ private get clientHeight();
170
+ private get overscan();
171
+ private get viewportWidth();
172
+ private modelChanged;
173
+ private mapTracked;
174
+ trackRange(from: number, to: number): {
175
+ get(): {
176
+ from: number;
177
+ to: number;
178
+ } | null;
179
+ dispose(): void;
180
+ };
181
+ private mappedFolds;
182
+ private displayedInlays;
183
+ setGhost(ghost: {
184
+ at: number;
185
+ text: string;
186
+ accessory: ((container: HTMLElement) => void) | undefined;
187
+ } | null): void;
188
+ private layoutGhostParts;
189
+ private configureText;
190
+ private foldStates;
191
+ private scheduleFolds;
192
+ refreshFolds(): void;
193
+ private withCustomFolds;
194
+ private closerOf;
195
+ private foldAt;
196
+ private soleFoldAt;
197
+ private foldsAt;
198
+ private isCollapsed;
199
+ private setCollapsed;
200
+ toggleFold(line: number, collapse?: boolean): boolean;
201
+ collapseRegion(): void;
202
+ expandRegion(): void;
203
+ private foldTreeAtCaret;
204
+ collapseRecursively(): void;
205
+ expandRecursively(): void;
206
+ foldAll(collapse: boolean): void;
207
+ foldSelection(): void;
208
+ getFolds(): {
209
+ collapsed: {
210
+ startLine: number;
211
+ endLine: number;
212
+ }[];
213
+ custom: {
214
+ startLine: number;
215
+ endLine: number;
216
+ }[];
217
+ };
218
+ restoreFolds(state: {
219
+ collapsed: readonly {
220
+ startLine: number;
221
+ endLine: number;
222
+ }[];
223
+ custom: readonly {
224
+ startLine: number;
225
+ endLine: number;
226
+ }[];
227
+ } | null, defaults?: readonly FoldRole[]): void;
228
+ setFoldHints(hints: FoldHints | null): void;
229
+ private applyFoldDefaults;
230
+ foldRole(role: FoldRole, collapse: boolean): void;
231
+ expandAllToLevel(level: number): void;
232
+ private refoldLayout;
233
+ private moveHiddenCarets;
234
+ ensureVisible(offset: number): void;
235
+ private anchorScroll;
236
+ private syncWrap;
237
+ private bracketAt;
238
+ private brackets;
239
+ matchingBracket(selection: {
240
+ anchor: number;
241
+ head: number;
242
+ }): {
243
+ at: number;
244
+ mate: number | undefined;
245
+ } | null;
246
+ unmatchedBracket(at: number): boolean;
247
+ contentPoint(clientX: number, clientY: number): {
248
+ x: number;
249
+ y: number;
250
+ };
251
+ offsetAtPoint(clientX: number, clientY: number): number;
252
+ private screenScale;
253
+ clientRectOf(offset: number): EditorRect | null;
254
+ characterAtPoint(clientX: number, clientY: number, target: EventTarget | null): number | null;
255
+ rowOf(offset: number): {
256
+ start: number;
257
+ end: number;
258
+ };
259
+ lineSpan(line: number): {
260
+ first: number;
261
+ last: number;
262
+ };
263
+ refoldMoved(folded: readonly {
264
+ startLine: number;
265
+ endLine: number;
266
+ }[], moves: readonly {
267
+ from: number;
268
+ to: number;
269
+ }[]): void;
270
+ markRowEnd(offset: number): void;
271
+ onHover(listener: (offset: number | null) => void): () => void;
272
+ private selectionOccurrences;
273
+ private wrapSigns;
274
+ private indentOf;
275
+ private effectiveIndent;
276
+ private activeGuide;
277
+ private scopeGuide;
278
+ private guideRects;
279
+ selectionAtPoint(clientX: number, clientY: number): EditorSelection | null;
280
+ setColumnMode(on: boolean): void;
281
+ setDropCaret(offset: number | null): void;
282
+ hoverMoved(event: PointerEvent): void;
283
+ setHover(offset: number | null): void;
284
+ onViewChange(listener: () => void): () => void;
285
+ private announceView;
286
+ private caretOf;
287
+ get scrollPlace(): {
288
+ x: number;
289
+ y: number;
290
+ };
291
+ cancelScroll(): void;
292
+ private reducedMotion;
293
+ scrollTo(x: number, y: number, animate?: boolean): void;
294
+ revealOffset(offset: number, kind?: ScrollKind, animate?: boolean): void;
295
+ revealCaret(kind?: ScrollKind): void;
296
+ setReplacePreview(replacement: string | null, preserveCase?: boolean): void;
297
+ private paintPreview;
298
+ setFind(query: EditorFindQuery | null, reveal: boolean): void;
299
+ stepFind(direction: 1 | -1): void;
300
+ onFind(listener: (state: EditorFindState) => void): () => void;
301
+ private announceFind;
302
+ revealFind(): void;
303
+ colorAhead(immediate?: boolean): void;
304
+ private syncGutter;
305
+ requestRender(): void;
306
+ scrolled(): void;
307
+ render(): void;
308
+ private paintDecorations;
309
+ setChangeMarks(marks: readonly EditorChangeMark[]): void;
310
+ private markedLines;
311
+ private changedLines;
312
+ setRemoteCarets(carets: readonly {
313
+ id: string;
314
+ name: string;
315
+ color: string;
316
+ at: number;
317
+ }[]): void;
318
+ private paintRemote;
319
+ setLineActions(owner: string, actions: readonly {
320
+ id: string;
321
+ at: number;
322
+ render: (container: HTMLElement) => void;
323
+ }[]): void;
324
+ private paintLineActions;
325
+ setAttributionMarks(marks: readonly {
326
+ id: string;
327
+ startLine: number;
328
+ endLine: number;
329
+ color: string;
330
+ }[]): void;
331
+ setLineHighlights(highlights: readonly {
332
+ startLine: number;
333
+ endLine: number;
334
+ color: string;
335
+ sign?: string;
336
+ fill?: string;
337
+ }[]): void;
338
+ private highlightedLines;
339
+ private highlightMarks;
340
+ renderCode(container: HTMLElement, text: string, options: EditorCodeBlockOptions): void;
341
+ private attributedLines;
342
+ onAttributionHover(listener: (hover: {
343
+ id: string;
344
+ rect: EditorRect;
345
+ } | null) => void): () => void;
346
+ private wireAttribution;
347
+ private refreshAttributionHover;
348
+ private attributionUnder;
349
+ visibleLines(): {
350
+ first: number;
351
+ last: number;
352
+ };
353
+ private wireOverview;
354
+ private jumpTo;
355
+ private paintOverview;
356
+ setBlocks(blocks: readonly EditorBlock[] | null): void;
357
+ onScope(listener: (scope: readonly EditorBlock[]) => void): () => void;
358
+ private announceScope;
359
+ private stickyLimit;
360
+ private stickyAt;
361
+ private stickyHeightAt;
362
+ private paintSticky;
363
+ jumpToHeader(line: number, depth: number): void;
364
+ setGutterAction(action: {
365
+ line: number;
366
+ label: string;
367
+ } | null): void;
368
+ onGutterAction(listener: (line: number) => void): () => void;
369
+ setGutterMarkers(owner: string, markers: readonly {
370
+ id: string;
371
+ line: number;
372
+ label: string;
373
+ }[]): void;
374
+ onGutterMarker(listener: (id: string) => void): () => void;
375
+ gutterMarkerIdOf(target: EventTarget | null): string | null;
376
+ pressGutterMarker(id: string): void;
377
+ private markersByLine;
378
+ gutterActionLineOf(target: EventTarget | null): number | null;
379
+ pressGutterAction(line: number): void;
380
+ foldLineOf(target: EventTarget | null): number | null;
381
+ dispose(): void;
382
+ }