@adecore/editor 0.0.1 → 0.17.0-beta.2
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.
- package/LICENSE +110 -0
- package/README.md +57 -0
- package/dist/attribution.d.ts +28 -0
- package/dist/attribution.js +55 -0
- package/dist/code-block.d.ts +2 -0
- package/dist/code-block.js +89 -0
- package/dist/column-selection.d.ts +9 -0
- package/dist/column-selection.js +52 -0
- package/dist/controller.d.ts +64 -0
- package/dist/controller.js +772 -0
- package/dist/editor.css +813 -0
- package/dist/engine.d.ts +2 -0
- package/dist/engine.js +610 -0
- package/dist/fake.d.ts +192 -0
- package/dist/fake.js +663 -0
- package/dist/find.d.ts +30 -0
- package/dist/find.js +108 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +4 -0
- package/dist/input.d.ts +9 -0
- package/dist/input.js +57 -0
- package/dist/keymap-table.d.ts +102 -0
- package/dist/keymap-table.js +130 -0
- package/dist/keymap.d.ts +36 -0
- package/dist/keymap.js +163 -0
- package/dist/layout.d.ts +167 -0
- package/dist/layout.js +583 -0
- package/dist/lens.d.ts +3 -0
- package/dist/lens.js +29 -0
- package/dist/listeners.d.ts +3 -0
- package/dist/listeners.js +12 -0
- package/dist/metrics.d.ts +8 -0
- package/dist/metrics.js +54 -0
- package/dist/modifier-gesture.d.ts +24 -0
- package/dist/modifier-gesture.js +98 -0
- package/dist/native-input.d.ts +26 -0
- package/dist/native-input.js +147 -0
- package/dist/offsets.d.ts +2 -0
- package/dist/offsets.js +14 -0
- package/dist/outline.d.ts +55 -0
- package/dist/outline.js +181 -0
- package/dist/overview.d.ts +17 -0
- package/dist/overview.js +55 -0
- package/dist/paint.d.ts +86 -0
- package/dist/paint.js +481 -0
- package/dist/php-html.d.ts +9 -0
- package/dist/php-html.js +36 -0
- package/dist/pointer.d.ts +49 -0
- package/dist/pointer.js +243 -0
- package/dist/scroll-animation.d.ts +3 -0
- package/dist/scroll-animation.js +45 -0
- package/dist/scroll.d.ts +28 -0
- package/dist/scroll.js +76 -0
- package/dist/semantic.d.ts +8 -0
- package/dist/semantic.js +47 -0
- package/dist/shiki.d.ts +7 -0
- package/dist/shiki.js +106 -0
- package/dist/smart-keys.d.ts +3 -0
- package/dist/smart-keys.js +14 -0
- package/dist/testing.d.ts +34 -0
- package/dist/testing.js +117 -0
- package/dist/theme-scopes.d.ts +9 -0
- package/dist/theme-scopes.js +61 -0
- package/dist/tokens.d.ts +28 -0
- package/dist/tokens.js +152 -0
- package/dist/tracked-range.d.ts +5 -0
- package/dist/tracked-range.js +20 -0
- package/dist/types.d.ts +344 -0
- package/dist/types.js +1 -0
- package/dist/view.d.ts +383 -0
- package/dist/view.js +2134 -0
- package/package.json +63 -3
- package/src/attribution.ts +85 -0
- package/src/code-block.ts +100 -0
- package/src/column-selection.ts +63 -0
- package/src/controller.ts +838 -0
- package/src/editor.css +813 -0
- package/src/engine.ts +764 -0
- package/src/fake.ts +838 -0
- package/src/find.ts +128 -0
- package/src/index.ts +69 -0
- package/src/input.ts +63 -0
- package/src/keymap-table.ts +163 -0
- package/src/keymap.ts +204 -0
- package/src/layout.ts +754 -0
- package/src/lens.ts +32 -0
- package/src/listeners.ts +15 -0
- package/src/metrics.ts +65 -0
- package/src/modifier-gesture.ts +115 -0
- package/src/native-input.ts +179 -0
- package/src/offsets.ts +16 -0
- package/src/outline.ts +248 -0
- package/src/overview.ts +80 -0
- package/src/paint.ts +608 -0
- package/src/php-html.ts +43 -0
- package/src/pointer.ts +326 -0
- package/src/scroll-animation.ts +48 -0
- package/src/scroll.ts +102 -0
- package/src/semantic.ts +54 -0
- package/src/shiki.ts +118 -0
- package/src/smart-keys.ts +17 -0
- package/src/testing.ts +157 -0
- package/src/theme-scopes.ts +75 -0
- package/src/tokens.ts +175 -0
- package/src/tracked-range.ts +22 -0
- package/src/types.ts +659 -0
- package/src/view.ts +2437 -0
package/dist/layout.d.ts
ADDED
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import type { Position } from '@adecore/editor-core';
|
|
2
|
+
export type Affinity = 'before' | 'after';
|
|
3
|
+
export interface LayoutDocument {
|
|
4
|
+
getLineCount(): number;
|
|
5
|
+
getLine(line: number): {
|
|
6
|
+
start: number;
|
|
7
|
+
end: number;
|
|
8
|
+
next: number;
|
|
9
|
+
text: string;
|
|
10
|
+
};
|
|
11
|
+
positionAt(offset: number): Position;
|
|
12
|
+
}
|
|
13
|
+
export interface LayoutMetrics {
|
|
14
|
+
lineHeight: number;
|
|
15
|
+
charWidth: number;
|
|
16
|
+
tabSize: number;
|
|
17
|
+
measureText(text: string): number;
|
|
18
|
+
measureInlay(text: string): number;
|
|
19
|
+
}
|
|
20
|
+
export interface Inlay {
|
|
21
|
+
id: string;
|
|
22
|
+
at: number;
|
|
23
|
+
text: string;
|
|
24
|
+
tooltip?: string;
|
|
25
|
+
composition?: boolean;
|
|
26
|
+
ghost?: boolean;
|
|
27
|
+
}
|
|
28
|
+
export interface BlockWidget {
|
|
29
|
+
id: string;
|
|
30
|
+
at: number;
|
|
31
|
+
placement: 'above' | 'below';
|
|
32
|
+
text?: string;
|
|
33
|
+
render?: (container: HTMLElement) => void;
|
|
34
|
+
height?: number;
|
|
35
|
+
revision?: number;
|
|
36
|
+
lens?: boolean;
|
|
37
|
+
}
|
|
38
|
+
export interface FoldState {
|
|
39
|
+
startLine: number;
|
|
40
|
+
endLine: number;
|
|
41
|
+
collapsed: boolean;
|
|
42
|
+
closer?: number;
|
|
43
|
+
}
|
|
44
|
+
interface RowBase {
|
|
45
|
+
key: string;
|
|
46
|
+
index: number;
|
|
47
|
+
line: number;
|
|
48
|
+
top: number;
|
|
49
|
+
height: number;
|
|
50
|
+
}
|
|
51
|
+
export interface TextRow extends RowBase {
|
|
52
|
+
kind: 'text';
|
|
53
|
+
lastLine: number;
|
|
54
|
+
tail: number | null;
|
|
55
|
+
subRows: number;
|
|
56
|
+
}
|
|
57
|
+
export interface BlockRow extends RowBase {
|
|
58
|
+
kind: 'block';
|
|
59
|
+
widget: BlockWidget;
|
|
60
|
+
}
|
|
61
|
+
export type LayoutRow = TextRow | BlockRow;
|
|
62
|
+
export interface TextRun {
|
|
63
|
+
from: number;
|
|
64
|
+
to: number;
|
|
65
|
+
x: number;
|
|
66
|
+
subRow: number;
|
|
67
|
+
text: string;
|
|
68
|
+
}
|
|
69
|
+
export interface InlineBox {
|
|
70
|
+
inlay: Inlay;
|
|
71
|
+
x: number;
|
|
72
|
+
width: number;
|
|
73
|
+
subRow: number;
|
|
74
|
+
}
|
|
75
|
+
export interface LineGeometry {
|
|
76
|
+
start: number;
|
|
77
|
+
end: number;
|
|
78
|
+
text: string;
|
|
79
|
+
offsets: number[];
|
|
80
|
+
before: number[];
|
|
81
|
+
after: number[];
|
|
82
|
+
rowOf: number[];
|
|
83
|
+
rowStarts: number[];
|
|
84
|
+
rowEnds: number[];
|
|
85
|
+
runs: TextRun[];
|
|
86
|
+
inlays: InlineBox[];
|
|
87
|
+
subRows: number;
|
|
88
|
+
width: number;
|
|
89
|
+
}
|
|
90
|
+
export interface LayoutRect {
|
|
91
|
+
x: number;
|
|
92
|
+
y: number;
|
|
93
|
+
width: number;
|
|
94
|
+
height: number;
|
|
95
|
+
}
|
|
96
|
+
export declare const TEXT_PADDING = 0;
|
|
97
|
+
export declare const BOTTOM_PADDING = 8;
|
|
98
|
+
export declare const RIGHT_PADDING = 16;
|
|
99
|
+
export declare function wrapIndent(text: string, metrics: LayoutMetrics, limit: number): number;
|
|
100
|
+
export declare function wrapStops(text: string, offsets: readonly number[], metrics: LayoutMetrics, limit: number): number[];
|
|
101
|
+
export declare function scanLine(line: {
|
|
102
|
+
start: number;
|
|
103
|
+
end: number;
|
|
104
|
+
text: string;
|
|
105
|
+
}, metrics: LayoutMetrics, limit: number | null, lineInlays: readonly Inlay[]): LineGeometry;
|
|
106
|
+
export interface LayoutConfig {
|
|
107
|
+
textChanged?: boolean;
|
|
108
|
+
metrics?: LayoutMetrics;
|
|
109
|
+
wrapWidth?: number | null;
|
|
110
|
+
inlays?: readonly Inlay[];
|
|
111
|
+
blocks?: readonly BlockWidget[];
|
|
112
|
+
folds?: readonly FoldState[];
|
|
113
|
+
}
|
|
114
|
+
export declare class EditorLayout {
|
|
115
|
+
rows: LayoutRow[];
|
|
116
|
+
height: number;
|
|
117
|
+
width: number;
|
|
118
|
+
private lineRows;
|
|
119
|
+
private geometryCache;
|
|
120
|
+
private measuredRows;
|
|
121
|
+
private measuredHeights;
|
|
122
|
+
private inlaysByLine;
|
|
123
|
+
private inlays;
|
|
124
|
+
private blocks;
|
|
125
|
+
private folds;
|
|
126
|
+
private wrapWidth;
|
|
127
|
+
readonly document: LayoutDocument;
|
|
128
|
+
metrics: LayoutMetrics;
|
|
129
|
+
constructor(document: LayoutDocument, metrics: LayoutMetrics);
|
|
130
|
+
get wrapping(): boolean;
|
|
131
|
+
configure(config: LayoutConfig): void;
|
|
132
|
+
private rowCountOf;
|
|
133
|
+
private rebuild;
|
|
134
|
+
private tailOf;
|
|
135
|
+
private reflow;
|
|
136
|
+
setMeasuredHeight(key: string, height: number): boolean;
|
|
137
|
+
syncRows(rows: readonly LayoutRow[]): boolean;
|
|
138
|
+
rowAt(y: number): LayoutRow;
|
|
139
|
+
indentX(line: number): number;
|
|
140
|
+
rowForLine(line: number): LayoutRow;
|
|
141
|
+
isHidden(line: number): boolean;
|
|
142
|
+
visibleRows(top: number, height: number, overscan?: number): LayoutRow[];
|
|
143
|
+
geometry(row: TextRow): LineGeometry;
|
|
144
|
+
private stopOf;
|
|
145
|
+
xAt(geometry: LineGeometry, offset: number, affinity?: Affinity): number;
|
|
146
|
+
offsetAtX(geometry: LineGeometry, subRow: number, x: number): {
|
|
147
|
+
offset: number;
|
|
148
|
+
rowEnd: boolean;
|
|
149
|
+
};
|
|
150
|
+
caret(offset: number, affinity?: Affinity, rowEnd?: boolean): LayoutRect;
|
|
151
|
+
lineBase(y: number): number;
|
|
152
|
+
visualLine(offset: number): {
|
|
153
|
+
start: number;
|
|
154
|
+
end: number;
|
|
155
|
+
next: number;
|
|
156
|
+
y: number;
|
|
157
|
+
};
|
|
158
|
+
hitTest(x: number, y: number): number;
|
|
159
|
+
hitTestRow(x: number, y: number): {
|
|
160
|
+
offset: number;
|
|
161
|
+
rowEnd: boolean;
|
|
162
|
+
};
|
|
163
|
+
rectangles(from: number, to: number, rows: readonly LayoutRow[]): LayoutRect[];
|
|
164
|
+
verticalOffset(offset: number, direction: -1 | 1, x: number, distance?: number): number;
|
|
165
|
+
horizontalOffset(offset: number, direction: -1 | 1): number;
|
|
166
|
+
}
|
|
167
|
+
export {};
|