@vemjs/renderer-vecto 0.1.0 → 0.1.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/CHANGELOG.md +29 -2
- package/dist/CommandBar.d.ts.map +1 -1
- package/dist/CommandBar.js +6 -1
- package/dist/CommandBar.js.map +1 -1
- package/dist/VemEditorEntity.d.ts +17 -0
- package/dist/VemEditorEntity.d.ts.map +1 -1
- package/dist/VemEditorEntity.js +313 -29
- package/dist/VemEditorEntity.js.map +1 -1
- package/dist/WorkspaceExplorer.d.ts +9 -1
- package/dist/WorkspaceExplorer.d.ts.map +1 -1
- package/dist/WorkspaceExplorer.js +111 -8
- package/dist/WorkspaceExplorer.js.map +1 -1
- package/dist/WorkspaceLayout.d.ts.map +1 -1
- package/dist/WorkspaceLayout.js +7 -0
- package/dist/WorkspaceLayout.js.map +1 -1
- package/package.json +1 -1
- package/src/CommandBar.ts +8 -1
- package/src/VemEditorEntity.test.ts +55 -0
- package/src/VemEditorEntity.ts +386 -30
- package/src/WorkspaceExplorer.ts +130 -8
- package/src/WorkspaceLayout.ts +9 -0
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { UIComponent } from '@vectojs/ui';
|
|
2
2
|
import type { IRenderer } from '@vectojs/core';
|
|
3
3
|
import { VemWorkspace } from './Workspace';
|
|
4
|
+
import { FileSystemHandler } from './FileSystemHandler';
|
|
4
5
|
export declare class WorkspaceExplorer extends UIComponent {
|
|
5
6
|
private panelGroup;
|
|
6
7
|
private leftPanel;
|
|
@@ -9,10 +10,17 @@ export declare class WorkspaceExplorer extends UIComponent {
|
|
|
9
10
|
private treeView;
|
|
10
11
|
private openBtn;
|
|
11
12
|
private fsHandler;
|
|
13
|
+
private openDirectoryCallbacks;
|
|
12
14
|
constructor(width: number, height: number, initialText?: string);
|
|
13
15
|
getWorkspace(): VemWorkspace;
|
|
16
|
+
onDidOpenDirectory(cb: (files: any[], fsHandler: FileSystemHandler) => void | Promise<void>): void;
|
|
17
|
+
private flattenFiles;
|
|
14
18
|
private handleOpenFolder;
|
|
19
|
+
getActiveEditorState(): any | null;
|
|
20
|
+
private lastSidebarPosition;
|
|
21
|
+
private lastSidebarWidth;
|
|
22
|
+
syncLayout(activeState: any): void;
|
|
15
23
|
update(dt: number, time: number): void;
|
|
16
|
-
render(
|
|
24
|
+
render(r: IRenderer): void;
|
|
17
25
|
}
|
|
18
26
|
//# sourceMappingURL=WorkspaceExplorer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkspaceExplorer.d.ts","sourceRoot":"","sources":["../src/WorkspaceExplorer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAuC,MAAM,aAAa,CAAC;AAC/E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"WorkspaceExplorer.d.ts","sourceRoot":"","sources":["../src/WorkspaceExplorer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAuC,MAAM,aAAa,CAAC;AAC/E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,qBAAa,iBAAkB,SAAQ,WAAW;IAChD,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,SAAS,CAAe;IAChC,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,sBAAsB,CAGI;gBAEtB,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM;IAqCxD,YAAY,IAAI,YAAY;IAI5B,kBAAkB,CACvB,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,iBAAiB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GACvE,IAAI;IAIP,OAAO,CAAC,YAAY;YAgBN,gBAAgB;IAkDvB,oBAAoB,IAAI,GAAG,GAAG,IAAI;IAIzC,OAAO,CAAC,mBAAmB,CAAuC;IAClE,OAAO,CAAC,gBAAgB,CAAO;IAExB,UAAU,CAAC,WAAW,EAAE,GAAG,GAAG,IAAI;IAuClC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAsCtC,MAAM,CAAC,CAAC,EAAE,SAAS,GAAG,IAAI;CA8BlC"}
|
|
@@ -9,6 +9,7 @@ export class WorkspaceExplorer extends UIComponent {
|
|
|
9
9
|
treeView = null;
|
|
10
10
|
openBtn;
|
|
11
11
|
fsHandler;
|
|
12
|
+
openDirectoryCallbacks = [];
|
|
12
13
|
constructor(width, height, initialText) {
|
|
13
14
|
super();
|
|
14
15
|
this.width = width;
|
|
@@ -41,6 +42,25 @@ export class WorkspaceExplorer extends UIComponent {
|
|
|
41
42
|
getWorkspace() {
|
|
42
43
|
return this.workspace;
|
|
43
44
|
}
|
|
45
|
+
onDidOpenDirectory(cb) {
|
|
46
|
+
this.openDirectoryCallbacks.push(cb);
|
|
47
|
+
}
|
|
48
|
+
flattenFiles(nodes) {
|
|
49
|
+
const list = [];
|
|
50
|
+
const recurse = (nodeList, prefix) => {
|
|
51
|
+
for (const node of nodeList) {
|
|
52
|
+
const path = prefix ? `${prefix}/${node.label}` : node.label;
|
|
53
|
+
if (node.children && node.children.length > 0) {
|
|
54
|
+
recurse(node.children, path);
|
|
55
|
+
}
|
|
56
|
+
else if (!node.children || node.children.length === 0) {
|
|
57
|
+
list.push(path);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
recurse(nodes, '');
|
|
62
|
+
return list;
|
|
63
|
+
}
|
|
44
64
|
async handleOpenFolder() {
|
|
45
65
|
if (typeof window === 'undefined' || !window.showDirectoryPicker) {
|
|
46
66
|
console.warn('File System Access API is not supported in this environment.');
|
|
@@ -49,6 +69,12 @@ export class WorkspaceExplorer extends UIComponent {
|
|
|
49
69
|
try {
|
|
50
70
|
const rootHandle = await window.showDirectoryPicker();
|
|
51
71
|
const nodes = await this.fsHandler.readDirectory(rootHandle);
|
|
72
|
+
// Cache all file paths for search plugins (like Telescope)
|
|
73
|
+
const fileList = this.flattenFiles(nodes);
|
|
74
|
+
const activeState = this.getActiveEditorState();
|
|
75
|
+
if (activeState) {
|
|
76
|
+
activeState.projectFiles = fileList;
|
|
77
|
+
}
|
|
52
78
|
this.treeView = new TreeView({
|
|
53
79
|
nodes,
|
|
54
80
|
width: this.leftPanel.width,
|
|
@@ -67,13 +93,72 @@ export class WorkspaceExplorer extends UIComponent {
|
|
|
67
93
|
});
|
|
68
94
|
this.leftPanel.remove(this.openBtn);
|
|
69
95
|
this.leftPanel.add(this.treeView);
|
|
96
|
+
// Trigger directory opened callbacks
|
|
97
|
+
for (const cb of this.openDirectoryCallbacks) {
|
|
98
|
+
try {
|
|
99
|
+
cb(nodes, this.fsHandler);
|
|
100
|
+
}
|
|
101
|
+
catch (e) {
|
|
102
|
+
console.error('Error executing openDirectory callback:', e);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
70
105
|
}
|
|
71
106
|
catch (err) {
|
|
72
107
|
console.error('Error selecting directory:', err);
|
|
73
108
|
}
|
|
74
109
|
}
|
|
110
|
+
getActiveEditorState() {
|
|
111
|
+
return this.workspace.getActiveLayout()?.getActiveState() || null;
|
|
112
|
+
}
|
|
113
|
+
lastSidebarPosition = 'left';
|
|
114
|
+
lastSidebarWidth = 240;
|
|
115
|
+
syncLayout(activeState) {
|
|
116
|
+
const layout = activeState.layoutConfig;
|
|
117
|
+
this.remove(this.panelGroup);
|
|
118
|
+
this.panelGroup = new PanelGroup({
|
|
119
|
+
direction: 'horizontal',
|
|
120
|
+
width: this.width,
|
|
121
|
+
height: this.height,
|
|
122
|
+
});
|
|
123
|
+
this.leftPanel = new Panel({
|
|
124
|
+
minSize: 150,
|
|
125
|
+
defaultSize: layout.sidebarWidth / Math.max(1, this.width),
|
|
126
|
+
});
|
|
127
|
+
this.rightPanel = new Panel({ minSize: 300 });
|
|
128
|
+
if (layout.sidebarPosition === 'left') {
|
|
129
|
+
this.leftPanel.add(this.openBtn);
|
|
130
|
+
if (this.treeView)
|
|
131
|
+
this.leftPanel.add(this.treeView);
|
|
132
|
+
this.rightPanel.add(this.workspace);
|
|
133
|
+
this.panelGroup.addPanel(this.leftPanel);
|
|
134
|
+
this.panelGroup.addPanel(this.rightPanel);
|
|
135
|
+
}
|
|
136
|
+
else if (layout.sidebarPosition === 'right') {
|
|
137
|
+
this.leftPanel.add(this.openBtn);
|
|
138
|
+
if (this.treeView)
|
|
139
|
+
this.leftPanel.add(this.treeView);
|
|
140
|
+
this.rightPanel.add(this.workspace);
|
|
141
|
+
this.panelGroup.addPanel(this.rightPanel);
|
|
142
|
+
this.panelGroup.addPanel(this.leftPanel);
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
this.rightPanel.add(this.workspace);
|
|
146
|
+
this.panelGroup.addPanel(this.rightPanel);
|
|
147
|
+
}
|
|
148
|
+
this.add(this.panelGroup);
|
|
149
|
+
}
|
|
75
150
|
update(dt, time) {
|
|
76
151
|
super.update(dt, time);
|
|
152
|
+
const activeState = this.getActiveEditorState();
|
|
153
|
+
if (activeState) {
|
|
154
|
+
const layout = activeState.layoutConfig;
|
|
155
|
+
if (layout.sidebarPosition !== this.lastSidebarPosition ||
|
|
156
|
+
layout.sidebarWidth !== this.lastSidebarWidth) {
|
|
157
|
+
this.lastSidebarPosition = layout.sidebarPosition;
|
|
158
|
+
this.lastSidebarWidth = layout.sidebarWidth;
|
|
159
|
+
this.syncLayout(activeState);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
77
162
|
if (this.panelGroup.width !== this.width || this.panelGroup.height !== this.height) {
|
|
78
163
|
this.panelGroup.width = this.width;
|
|
79
164
|
this.panelGroup.height = this.height;
|
|
@@ -89,14 +174,32 @@ export class WorkspaceExplorer extends UIComponent {
|
|
|
89
174
|
this.workspace.height = this.rightPanel.height;
|
|
90
175
|
}
|
|
91
176
|
}
|
|
92
|
-
render(
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
177
|
+
render(r) {
|
|
178
|
+
const activeState = this.getActiveEditorState();
|
|
179
|
+
if (!activeState)
|
|
180
|
+
return;
|
|
181
|
+
const theme = activeState.theme;
|
|
182
|
+
const layout = activeState.layoutConfig;
|
|
183
|
+
// Apply button styling
|
|
184
|
+
this.openBtn.bg = theme.statusBarBg;
|
|
185
|
+
this.openBtn.hoverBg = theme.statusBarBg;
|
|
186
|
+
this.openBtn.color = theme.fg;
|
|
187
|
+
if (this.treeView) {
|
|
188
|
+
/* eslint-disable-next-line no-underscore-dangle */
|
|
189
|
+
this.treeView._color = theme.fg;
|
|
190
|
+
/* eslint-disable-next-line no-underscore-dangle */
|
|
191
|
+
this.treeView._selColor = theme.accent + '33';
|
|
192
|
+
}
|
|
193
|
+
if (layout.sidebarPosition !== 'hidden') {
|
|
194
|
+
const startX = layout.sidebarPosition === 'left' ? 0 : this.width - this.leftPanel.width;
|
|
195
|
+
r.beginPath();
|
|
196
|
+
r.moveTo(startX, 0);
|
|
197
|
+
r.lineTo(startX + this.leftPanel.width, 0);
|
|
198
|
+
r.lineTo(startX + this.leftPanel.width, this.height);
|
|
199
|
+
r.lineTo(startX, this.height);
|
|
200
|
+
r.closePath();
|
|
201
|
+
r.fill(theme.sidebarBg);
|
|
202
|
+
}
|
|
100
203
|
}
|
|
101
204
|
}
|
|
102
205
|
//# sourceMappingURL=WorkspaceExplorer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkspaceExplorer.js","sourceRoot":"","sources":["../src/WorkspaceExplorer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE/E,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,MAAM,OAAO,iBAAkB,SAAQ,WAAW;IACxC,UAAU,CAAa;IACvB,SAAS,CAAQ;IACjB,UAAU,CAAQ;IAClB,SAAS,CAAe;IACxB,QAAQ,GAAoB,IAAI,CAAC;IACjC,OAAO,CAAS;IAChB,SAAS,CAAoB;
|
|
1
|
+
{"version":3,"file":"WorkspaceExplorer.js","sourceRoot":"","sources":["../src/WorkspaceExplorer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkspaceLayout.d.ts","sourceRoot":"","sources":["../src/WorkspaceLayout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAc,KAAK,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,KAAK,EAAU,SAAS,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,MAAM,QAAQ,GAChB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,cAAc,CAAA;CAAE,GACnD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,YAAY,GAAG,UAAU,CAAC;IAAC,QAAQ,EAAE,QAAQ,EAAE,CAAA;CAAE,CAAC;AAE9F,qBAAa,UAAW,SAAQ,KAAK;IAC5B,WAAW,EAAE,cAAc,CAAC;IAC5B,YAAY,EAAE,eAAe,CAAC;gBAEzB,KAAK,EAAE,cAAc;IAO1B,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;CAQ9C;AAED,qBAAa,eAAgB,SAAQ,WAAW;IAC9C,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,OAAO,CAA+B;gBAElC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM;IAqB/D,OAAO,CAAC,eAAe;IAShB,cAAc,IAAI,cAAc,GAAG,IAAI;IAQvC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,GAAG,UAAU,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"WorkspaceLayout.d.ts","sourceRoot":"","sources":["../src/WorkspaceLayout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAc,KAAK,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,KAAK,EAAU,SAAS,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,MAAM,QAAQ,GAChB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,cAAc,CAAA;CAAE,GACnD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,YAAY,GAAG,UAAU,CAAC;IAAC,QAAQ,EAAE,QAAQ,EAAE,CAAA;CAAE,CAAC;AAE9F,qBAAa,UAAW,SAAQ,KAAK;IAC5B,WAAW,EAAE,cAAc,CAAC;IAC5B,YAAY,EAAE,eAAe,CAAC;gBAEzB,KAAK,EAAE,cAAc;IAO1B,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;CAQ9C;AAED,qBAAa,eAAgB,SAAQ,WAAW;IAC9C,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,OAAO,CAA+B;gBAElC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM;IAqB/D,OAAO,CAAC,eAAe;IAShB,cAAc,IAAI,cAAc,GAAG,IAAI;IAQvC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,GAAG,UAAU,GAAG,IAAI;IAmCrE,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IA2BtC,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,aAAa;IAKd,aAAa,IAAI,IAAI;IAS5B,OAAO,CAAC,SAAS;IA0BV,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAQtC,MAAM,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI;CAGnC"}
|
package/dist/WorkspaceLayout.js
CHANGED
|
@@ -61,6 +61,13 @@ export class WorkspaceLayout extends UIComponent {
|
|
|
61
61
|
return;
|
|
62
62
|
const newId = `pane-${Date.now()}`;
|
|
63
63
|
const newState = new VemEditorState(targetNode.state.getBuffer().getText());
|
|
64
|
+
// Inherit old state's custom keybindings
|
|
65
|
+
const oldBindings = targetNode.state.getCustomKeybindings();
|
|
66
|
+
for (const [mode, bindings] of oldBindings.entries()) {
|
|
67
|
+
for (const [keys, cmd] of bindings.entries()) {
|
|
68
|
+
newState.registerKeybinding(mode, keys, cmd);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
64
71
|
const newLeaf = {
|
|
65
72
|
type: 'leaf',
|
|
66
73
|
id: newId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkspaceLayout.js","sourceRoot":"","sources":["../src/WorkspaceLayout.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"WorkspaceLayout.js","sourceRoot":"","sources":["../src/WorkspaceLayout.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/CommandBar.ts
CHANGED
|
@@ -58,12 +58,19 @@ export class CommandBar extends UIComponent {
|
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
public render(r: IRenderer): void {
|
|
61
|
+
const theme = this.editorState.theme;
|
|
62
|
+
|
|
63
|
+
// Sync theme colors dynamically
|
|
64
|
+
this.prefixText.color = theme.accent;
|
|
65
|
+
this.input.color = theme.statusBarFg;
|
|
66
|
+
this.input.bg = theme.statusBarBg;
|
|
67
|
+
|
|
61
68
|
r.beginPath();
|
|
62
69
|
r.moveTo(0, 0);
|
|
63
70
|
r.lineTo(this.width, 0);
|
|
64
71
|
r.lineTo(this.width, this.height);
|
|
65
72
|
r.lineTo(0, this.height);
|
|
66
73
|
r.closePath();
|
|
67
|
-
r.fill(
|
|
74
|
+
r.fill(theme.statusBarBg);
|
|
68
75
|
}
|
|
69
76
|
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { describe, it, expect, beforeEach } from 'bun:test';
|
|
2
|
+
import { VemEditorState } from '@vemjs/core';
|
|
3
|
+
import { VemEditorEntity } from './VemEditorEntity';
|
|
4
|
+
|
|
5
|
+
describe('VemEditorEntity autocomplete API', () => {
|
|
6
|
+
let editorState: VemEditorState;
|
|
7
|
+
let entity: VemEditorEntity;
|
|
8
|
+
|
|
9
|
+
beforeEach(() => {
|
|
10
|
+
editorState = new VemEditorState('const x = 1;');
|
|
11
|
+
entity = new VemEditorEntity(editorState);
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
it('should initialize with empty autocomplete items', () => {
|
|
15
|
+
expect(entity.getAutocompleteItems()).toEqual([]);
|
|
16
|
+
expect(entity.getSelectedAutocomplete()).toBeNull();
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
it('should correctly store autocomplete items', () => {
|
|
20
|
+
const items = [
|
|
21
|
+
{ label: 'console', detail: 'builtin' },
|
|
22
|
+
{ label: 'const', detail: 'keyword' },
|
|
23
|
+
];
|
|
24
|
+
entity.setAutocompleteItems(items);
|
|
25
|
+
expect(entity.getAutocompleteItems()).toEqual(items);
|
|
26
|
+
expect(entity.getSelectedAutocomplete()).toEqual({ label: 'console', detail: 'builtin' });
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
it('should cycle through items using next/prev methods', () => {
|
|
30
|
+
const items = [
|
|
31
|
+
{ label: 'console', detail: 'builtin' },
|
|
32
|
+
{ label: 'const', detail: 'keyword' },
|
|
33
|
+
];
|
|
34
|
+
entity.setAutocompleteItems(items);
|
|
35
|
+
|
|
36
|
+
// Next goes to index 1
|
|
37
|
+
entity.selectNextAutocomplete();
|
|
38
|
+
expect(entity.getSelectedAutocomplete()).toEqual({ label: 'const', detail: 'keyword' });
|
|
39
|
+
|
|
40
|
+
// Next wraps back to index 0
|
|
41
|
+
entity.selectNextAutocomplete();
|
|
42
|
+
expect(entity.getSelectedAutocomplete()).toEqual({ label: 'console', detail: 'builtin' });
|
|
43
|
+
|
|
44
|
+
// Prev goes back to index 1 (wrapping backward)
|
|
45
|
+
entity.selectPrevAutocomplete();
|
|
46
|
+
expect(entity.getSelectedAutocomplete()).toEqual({ label: 'const', detail: 'keyword' });
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
it('should clear autocomplete items', () => {
|
|
50
|
+
entity.setAutocompleteItems([{ label: 'console' }]);
|
|
51
|
+
entity.clearAutocomplete();
|
|
52
|
+
expect(entity.getAutocompleteItems()).toEqual([]);
|
|
53
|
+
expect(entity.getSelectedAutocomplete()).toBeNull();
|
|
54
|
+
});
|
|
55
|
+
});
|