@termaxjs/editor 0.1.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 (215) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +85 -0
  3. package/dist/TermaxEditor.d.ts +74 -0
  4. package/dist/TermaxEditor.d.ts.map +1 -0
  5. package/dist/TermaxEditor.js +728 -0
  6. package/dist/TermaxEditor.js.map +1 -0
  7. package/dist/adapter.d.ts +2 -0
  8. package/dist/adapter.d.ts.map +1 -0
  9. package/dist/adapter.js +2 -0
  10. package/dist/adapter.js.map +1 -0
  11. package/dist/ai/GhostTextManager.d.ts +34 -0
  12. package/dist/ai/GhostTextManager.d.ts.map +1 -0
  13. package/dist/ai/GhostTextManager.js +116 -0
  14. package/dist/ai/GhostTextManager.js.map +1 -0
  15. package/dist/ai/StreamingDiffApplier.d.ts +28 -0
  16. package/dist/ai/StreamingDiffApplier.d.ts.map +1 -0
  17. package/dist/ai/StreamingDiffApplier.js +61 -0
  18. package/dist/ai/StreamingDiffApplier.js.map +1 -0
  19. package/dist/canvas.d.ts +2 -0
  20. package/dist/canvas.d.ts.map +1 -0
  21. package/dist/canvas.js +2 -0
  22. package/dist/canvas.js.map +1 -0
  23. package/dist/codelens/CodeLensProvider.d.ts +22 -0
  24. package/dist/codelens/CodeLensProvider.d.ts.map +1 -0
  25. package/dist/codelens/CodeLensProvider.js +36 -0
  26. package/dist/codelens/CodeLensProvider.js.map +1 -0
  27. package/dist/core.d.ts +2 -0
  28. package/dist/core.d.ts.map +1 -0
  29. package/dist/core.js +2 -0
  30. package/dist/core.js.map +1 -0
  31. package/dist/diff/ConflictResolver.d.ts +27 -0
  32. package/dist/diff/ConflictResolver.d.ts.map +1 -0
  33. package/dist/diff/ConflictResolver.js +88 -0
  34. package/dist/diff/ConflictResolver.js.map +1 -0
  35. package/dist/diff/DiffEditor.d.ts +18 -0
  36. package/dist/diff/DiffEditor.d.ts.map +1 -0
  37. package/dist/diff/DiffEditor.js +212 -0
  38. package/dist/diff/DiffEditor.js.map +1 -0
  39. package/dist/diff/InlineDiffModel.d.ts +18 -0
  40. package/dist/diff/InlineDiffModel.d.ts.map +1 -0
  41. package/dist/diff/InlineDiffModel.js +78 -0
  42. package/dist/diff/InlineDiffModel.js.map +1 -0
  43. package/dist/element/TermaxEditorElement.d.ts +28 -0
  44. package/dist/element/TermaxEditorElement.d.ts.map +1 -0
  45. package/dist/element/TermaxEditorElement.js +123 -0
  46. package/dist/element/TermaxEditorElement.js.map +1 -0
  47. package/dist/fold/computeFoldRanges.d.ts +8 -0
  48. package/dist/fold/computeFoldRanges.d.ts.map +1 -0
  49. package/dist/fold/computeFoldRanges.js +109 -0
  50. package/dist/fold/computeFoldRanges.js.map +1 -0
  51. package/dist/format/formatter.d.ts +5 -0
  52. package/dist/format/formatter.d.ts.map +1 -0
  53. package/dist/format/formatter.js +89 -0
  54. package/dist/format/formatter.js.map +1 -0
  55. package/dist/git/GitGutterManager.d.ts +17 -0
  56. package/dist/git/GitGutterManager.d.ts.map +1 -0
  57. package/dist/git/GitGutterManager.js +50 -0
  58. package/dist/git/GitGutterManager.js.map +1 -0
  59. package/dist/git/InlineBlameManager.d.ts +18 -0
  60. package/dist/git/InlineBlameManager.d.ts.map +1 -0
  61. package/dist/git/InlineBlameManager.js +33 -0
  62. package/dist/git/InlineBlameManager.js.map +1 -0
  63. package/dist/gutter/FoldGutter.d.ts +12 -0
  64. package/dist/gutter/FoldGutter.d.ts.map +1 -0
  65. package/dist/gutter/FoldGutter.js +51 -0
  66. package/dist/gutter/FoldGutter.js.map +1 -0
  67. package/dist/gutter/LineNumbers.d.ts +11 -0
  68. package/dist/gutter/LineNumbers.d.ts.map +1 -0
  69. package/dist/gutter/LineNumbers.js +71 -0
  70. package/dist/gutter/LineNumbers.js.map +1 -0
  71. package/dist/highlight/microTokenizer.d.ts +20 -0
  72. package/dist/highlight/microTokenizer.d.ts.map +1 -0
  73. package/dist/highlight/microTokenizer.js +951 -0
  74. package/dist/highlight/microTokenizer.js.map +1 -0
  75. package/dist/index.d.ts +46 -0
  76. package/dist/index.d.ts.map +1 -0
  77. package/dist/index.js +46 -0
  78. package/dist/index.js.map +1 -0
  79. package/dist/input/KeymapPresets.d.ts +10 -0
  80. package/dist/input/KeymapPresets.d.ts.map +1 -0
  81. package/dist/input/KeymapPresets.js +46 -0
  82. package/dist/input/KeymapPresets.js.map +1 -0
  83. package/dist/input/OffscreenInput.d.ts +27 -0
  84. package/dist/input/OffscreenInput.d.ts.map +1 -0
  85. package/dist/input/OffscreenInput.js +367 -0
  86. package/dist/input/OffscreenInput.js.map +1 -0
  87. package/dist/languages/GrammarRegistry.d.ts +55 -0
  88. package/dist/languages/GrammarRegistry.d.ts.map +1 -0
  89. package/dist/languages/GrammarRegistry.js +80 -0
  90. package/dist/languages/GrammarRegistry.js.map +1 -0
  91. package/dist/languages/LanguageAdapter.d.ts +11 -0
  92. package/dist/languages/LanguageAdapter.d.ts.map +1 -0
  93. package/dist/languages/LanguageAdapter.js +47 -0
  94. package/dist/languages/LanguageAdapter.js.map +1 -0
  95. package/dist/languages/TreeSitterAdapter.d.ts +29 -0
  96. package/dist/languages/TreeSitterAdapter.d.ts.map +1 -0
  97. package/dist/languages/TreeSitterAdapter.js +99 -0
  98. package/dist/languages/TreeSitterAdapter.js.map +1 -0
  99. package/dist/languages/index.d.ts +16 -0
  100. package/dist/languages/index.d.ts.map +1 -0
  101. package/dist/languages/index.js +163 -0
  102. package/dist/languages/index.js.map +1 -0
  103. package/dist/lsp/InlayHintProvider.d.ts +18 -0
  104. package/dist/lsp/InlayHintProvider.d.ts.map +1 -0
  105. package/dist/lsp/InlayHintProvider.js +26 -0
  106. package/dist/lsp/InlayHintProvider.js.map +1 -0
  107. package/dist/lsp/LspClient.d.ts +73 -0
  108. package/dist/lsp/LspClient.d.ts.map +1 -0
  109. package/dist/lsp/LspClient.js +261 -0
  110. package/dist/lsp/LspClient.js.map +1 -0
  111. package/dist/lsp/SemanticTokensDecoder.d.ts +26 -0
  112. package/dist/lsp/SemanticTokensDecoder.d.ts.map +1 -0
  113. package/dist/lsp/SemanticTokensDecoder.js +88 -0
  114. package/dist/lsp/SemanticTokensDecoder.js.map +1 -0
  115. package/dist/lsp/WorkspaceSymbolIndex.d.ts +32 -0
  116. package/dist/lsp/WorkspaceSymbolIndex.d.ts.map +1 -0
  117. package/dist/lsp/WorkspaceSymbolIndex.js +73 -0
  118. package/dist/lsp/WorkspaceSymbolIndex.js.map +1 -0
  119. package/dist/minimap/Minimap.d.ts +24 -0
  120. package/dist/minimap/Minimap.d.ts.map +1 -0
  121. package/dist/minimap/Minimap.js +31 -0
  122. package/dist/minimap/Minimap.js.map +1 -0
  123. package/dist/minimap/useMinimap.d.ts +75 -0
  124. package/dist/minimap/useMinimap.d.ts.map +1 -0
  125. package/dist/minimap/useMinimap.js +179 -0
  126. package/dist/minimap/useMinimap.js.map +1 -0
  127. package/dist/navigation/StickyScrollHeader.d.ts +16 -0
  128. package/dist/navigation/StickyScrollHeader.d.ts.map +1 -0
  129. package/dist/navigation/StickyScrollHeader.js +49 -0
  130. package/dist/navigation/StickyScrollHeader.js.map +1 -0
  131. package/dist/navigation/StickyScrollManager.d.ts +18 -0
  132. package/dist/navigation/StickyScrollManager.d.ts.map +1 -0
  133. package/dist/navigation/StickyScrollManager.js +32 -0
  134. package/dist/navigation/StickyScrollManager.js.map +1 -0
  135. package/dist/overlay/CompletionMenu.d.ts +15 -0
  136. package/dist/overlay/CompletionMenu.d.ts.map +1 -0
  137. package/dist/overlay/CompletionMenu.js +90 -0
  138. package/dist/overlay/CompletionMenu.js.map +1 -0
  139. package/dist/overlay/FindReplace.d.ts +6 -0
  140. package/dist/overlay/FindReplace.d.ts.map +1 -0
  141. package/dist/overlay/FindReplace.js +278 -0
  142. package/dist/overlay/FindReplace.js.map +1 -0
  143. package/dist/overlay/HoverTooltip.d.ts +12 -0
  144. package/dist/overlay/HoverTooltip.d.ts.map +1 -0
  145. package/dist/overlay/HoverTooltip.js +67 -0
  146. package/dist/overlay/HoverTooltip.js.map +1 -0
  147. package/dist/overlay/RemoteCursorsOverlay.d.ts +15 -0
  148. package/dist/overlay/RemoteCursorsOverlay.d.ts.map +1 -0
  149. package/dist/overlay/RemoteCursorsOverlay.js +50 -0
  150. package/dist/overlay/RemoteCursorsOverlay.js.map +1 -0
  151. package/dist/overlay/SignatureHelpTooltip.d.ts +11 -0
  152. package/dist/overlay/SignatureHelpTooltip.d.ts.map +1 -0
  153. package/dist/overlay/SignatureHelpTooltip.js +36 -0
  154. package/dist/overlay/SignatureHelpTooltip.js.map +1 -0
  155. package/dist/pairs/SelectionSurround.d.ts +14 -0
  156. package/dist/pairs/SelectionSurround.d.ts.map +1 -0
  157. package/dist/pairs/SelectionSurround.js +29 -0
  158. package/dist/pairs/SelectionSurround.js.map +1 -0
  159. package/dist/pairs/pairMatching.d.ts +6 -0
  160. package/dist/pairs/pairMatching.d.ts.map +1 -0
  161. package/dist/pairs/pairMatching.js +169 -0
  162. package/dist/pairs/pairMatching.js.map +1 -0
  163. package/dist/plugin/ViewPlugin.d.ts +20 -0
  164. package/dist/plugin/ViewPlugin.d.ts.map +1 -0
  165. package/dist/plugin/ViewPlugin.js +17 -0
  166. package/dist/plugin/ViewPlugin.js.map +1 -0
  167. package/dist/react.d.ts +2 -0
  168. package/dist/react.d.ts.map +1 -0
  169. package/dist/react.js +2 -0
  170. package/dist/react.js.map +1 -0
  171. package/dist/renderer/CanvasViewport.d.ts +23 -0
  172. package/dist/renderer/CanvasViewport.d.ts.map +1 -0
  173. package/dist/renderer/CanvasViewport.js +134 -0
  174. package/dist/renderer/CanvasViewport.js.map +1 -0
  175. package/dist/renderer/VirtualizedLines.d.ts +30 -0
  176. package/dist/renderer/VirtualizedLines.d.ts.map +1 -0
  177. package/dist/renderer/VirtualizedLines.js +427 -0
  178. package/dist/renderer/VirtualizedLines.js.map +1 -0
  179. package/dist/renderer/windowing.d.ts +33 -0
  180. package/dist/renderer/windowing.d.ts.map +1 -0
  181. package/dist/renderer/windowing.js +50 -0
  182. package/dist/renderer/windowing.js.map +1 -0
  183. package/dist/snippet/SnippetEngine.d.ts +31 -0
  184. package/dist/snippet/SnippetEngine.d.ts.map +1 -0
  185. package/dist/snippet/SnippetEngine.js +119 -0
  186. package/dist/snippet/SnippetEngine.js.map +1 -0
  187. package/dist/themes/VSCodeThemeConverter.d.ts +24 -0
  188. package/dist/themes/VSCodeThemeConverter.d.ts.map +1 -0
  189. package/dist/themes/VSCodeThemeConverter.js +118 -0
  190. package/dist/themes/VSCodeThemeConverter.js.map +1 -0
  191. package/dist/themes/index.d.ts +9 -0
  192. package/dist/themes/index.d.ts.map +1 -0
  193. package/dist/themes/index.js +128 -0
  194. package/dist/themes/index.js.map +1 -0
  195. package/dist/vim/VimState.d.ts +32 -0
  196. package/dist/vim/VimState.d.ts.map +1 -0
  197. package/dist/vim/VimState.js +276 -0
  198. package/dist/vim/VimState.js.map +1 -0
  199. package/dist/vim/VimStatusBar.d.ts +9 -0
  200. package/dist/vim/VimStatusBar.d.ts.map +1 -0
  201. package/dist/vim/VimStatusBar.js +36 -0
  202. package/dist/vim/VimStatusBar.js.map +1 -0
  203. package/dist/widgets/ColorPickerWidget.d.ts +13 -0
  204. package/dist/widgets/ColorPickerWidget.d.ts.map +1 -0
  205. package/dist/widgets/ColorPickerWidget.js +49 -0
  206. package/dist/widgets/ColorPickerWidget.js.map +1 -0
  207. package/dist/worker/WorkerBridge.d.ts +36 -0
  208. package/dist/worker/WorkerBridge.d.ts.map +1 -0
  209. package/dist/worker/WorkerBridge.js +103 -0
  210. package/dist/worker/WorkerBridge.js.map +1 -0
  211. package/dist/workspace/WorkspaceTabManager.d.ts +25 -0
  212. package/dist/workspace/WorkspaceTabManager.d.ts.map +1 -0
  213. package/dist/workspace/WorkspaceTabManager.js +71 -0
  214. package/dist/workspace/WorkspaceTabManager.js.map +1 -0
  215. package/package.json +78 -0
@@ -0,0 +1,276 @@
1
+ import { findWordBoundary } from "@termaxjs/editor-core";
2
+ export class VimEngine {
3
+ mode = "NORMAL";
4
+ commandBuffer = "";
5
+ registers = new Map();
6
+ exInput = "";
7
+ handleKey(key, ctx, e) {
8
+ if (this.mode === "INSERT") {
9
+ if (key === "Escape" || (e?.ctrlKey && (key === "[" || key === "c"))) {
10
+ e?.preventDefault?.();
11
+ this.mode = "NORMAL";
12
+ // Move cursor 1 step back in normal mode (standard vim behavior)
13
+ if (ctx.cursor.column > 0) {
14
+ ctx.setCursor({ line: ctx.cursor.line, column: ctx.cursor.column - 1 });
15
+ }
16
+ return true;
17
+ }
18
+ return false; // Allow normal typing in insert mode
19
+ }
20
+ if (this.mode === "COMMAND") {
21
+ if (key === "Escape") {
22
+ e?.preventDefault?.();
23
+ this.mode = "NORMAL";
24
+ this.exInput = "";
25
+ return true;
26
+ }
27
+ if (key === "Enter") {
28
+ e?.preventDefault?.();
29
+ this.executeExCommand(this.exInput, ctx);
30
+ this.mode = "NORMAL";
31
+ this.exInput = "";
32
+ return true;
33
+ }
34
+ if (key === "Backspace") {
35
+ e?.preventDefault?.();
36
+ this.exInput = this.exInput.slice(0, -1);
37
+ if (this.exInput.length === 0) {
38
+ this.mode = "NORMAL";
39
+ }
40
+ return true;
41
+ }
42
+ if (key.length === 1 && !e?.ctrlKey && !e?.metaKey) {
43
+ e?.preventDefault?.();
44
+ this.exInput += key;
45
+ return true;
46
+ }
47
+ return true;
48
+ }
49
+ // NORMAL / VISUAL Mode
50
+ if (key === "Escape") {
51
+ e?.preventDefault?.();
52
+ this.mode = "NORMAL";
53
+ this.commandBuffer = "";
54
+ ctx.setSelection(null);
55
+ return true;
56
+ }
57
+ e?.preventDefault?.();
58
+ return this.handleNormalVisualKey(key, ctx, e);
59
+ }
60
+ handleNormalVisualKey(key, ctx, e) {
61
+ const curLine = ctx.lines[ctx.cursor.line] ?? "";
62
+ // Undo / Redo
63
+ if (key === "u" && !e?.ctrlKey) {
64
+ ctx.undo();
65
+ return true;
66
+ }
67
+ if ((e?.ctrlKey && key === "r") || key === "U") {
68
+ ctx.redo();
69
+ return true;
70
+ }
71
+ // Ex Command trigger
72
+ if (key === ":") {
73
+ this.mode = "COMMAND";
74
+ this.exInput = ":";
75
+ return true;
76
+ }
77
+ // Mode Transitions
78
+ if (key === "i") {
79
+ this.mode = "INSERT";
80
+ return true;
81
+ }
82
+ if (key === "a") {
83
+ this.mode = "INSERT";
84
+ ctx.setCursor({
85
+ line: ctx.cursor.line,
86
+ column: Math.min(curLine.length, ctx.cursor.column + 1),
87
+ });
88
+ return true;
89
+ }
90
+ if (key === "I") {
91
+ this.mode = "INSERT";
92
+ const match = curLine.match(/^\s*/);
93
+ ctx.setCursor({ line: ctx.cursor.line, column: match ? match[0].length : 0 });
94
+ return true;
95
+ }
96
+ if (key === "A") {
97
+ this.mode = "INSERT";
98
+ ctx.setCursor({ line: ctx.cursor.line, column: curLine.length });
99
+ return true;
100
+ }
101
+ if (key === "o") {
102
+ this.mode = "INSERT";
103
+ ctx.setCursor({ line: ctx.cursor.line, column: curLine.length });
104
+ ctx.enter();
105
+ return true;
106
+ }
107
+ if (key === "O") {
108
+ this.mode = "INSERT";
109
+ ctx.setCursor({ line: ctx.cursor.line, column: 0 });
110
+ ctx.insertText("\n");
111
+ ctx.setCursor({ line: ctx.cursor.line, column: 0 });
112
+ return true;
113
+ }
114
+ // Visual Modes
115
+ if (key === "v") {
116
+ this.mode = this.mode === "VISUAL" ? "NORMAL" : "VISUAL";
117
+ if (this.mode === "VISUAL") {
118
+ ctx.setSelection({ start: ctx.cursor, end: ctx.cursor });
119
+ }
120
+ else {
121
+ ctx.setSelection(null);
122
+ }
123
+ return true;
124
+ }
125
+ if (key === "V") {
126
+ this.mode = this.mode === "VISUAL_LINE" ? "NORMAL" : "VISUAL_LINE";
127
+ if (this.mode === "VISUAL_LINE") {
128
+ ctx.setSelection({
129
+ start: { line: ctx.cursor.line, column: 0 },
130
+ end: { line: ctx.cursor.line, column: curLine.length },
131
+ });
132
+ }
133
+ else {
134
+ ctx.setSelection(null);
135
+ }
136
+ return true;
137
+ }
138
+ // Motions: h, j, k, l, w, b, e, 0, $
139
+ if (key === "h") {
140
+ ctx.setCursor({ line: ctx.cursor.line, column: Math.max(0, ctx.cursor.column - 1) });
141
+ return true;
142
+ }
143
+ if (key === "l") {
144
+ ctx.setCursor({
145
+ line: ctx.cursor.line,
146
+ column: Math.min(curLine.length, ctx.cursor.column + 1),
147
+ });
148
+ return true;
149
+ }
150
+ if (key === "j") {
151
+ ctx.setCursor({
152
+ line: Math.min(ctx.lines.length - 1, ctx.cursor.line + 1),
153
+ column: ctx.cursor.column,
154
+ });
155
+ return true;
156
+ }
157
+ if (key === "k") {
158
+ ctx.setCursor({ line: Math.max(0, ctx.cursor.line - 1), column: ctx.cursor.column });
159
+ return true;
160
+ }
161
+ if (key === "w") {
162
+ const nextCol = findWordBoundary(curLine, ctx.cursor.column, 1);
163
+ ctx.setCursor({ line: ctx.cursor.line, column: nextCol });
164
+ return true;
165
+ }
166
+ if (key === "b") {
167
+ const prevCol = findWordBoundary(curLine, ctx.cursor.column, -1);
168
+ ctx.setCursor({ line: ctx.cursor.line, column: prevCol });
169
+ return true;
170
+ }
171
+ if (key === "0") {
172
+ ctx.setCursor({ line: ctx.cursor.line, column: 0 });
173
+ return true;
174
+ }
175
+ if (key === "$") {
176
+ ctx.setCursor({ line: ctx.cursor.line, column: curLine.length });
177
+ return true;
178
+ }
179
+ if (key === "x") {
180
+ ctx.setSelection({
181
+ start: ctx.cursor,
182
+ end: { line: ctx.cursor.line, column: ctx.cursor.column + 1 },
183
+ });
184
+ ctx.deleteSelectionOrChar(true);
185
+ return true;
186
+ }
187
+ // Operator pending: dd, dw, d$
188
+ if (this.commandBuffer === "d") {
189
+ if (key === "d") {
190
+ // dd: delete whole line
191
+ ctx.setSelection({
192
+ start: { line: ctx.cursor.line, column: 0 },
193
+ end: { line: Math.min(ctx.lines.length - 1, ctx.cursor.line + 1), column: 0 },
194
+ });
195
+ ctx.deleteSelectionOrChar(true);
196
+ this.commandBuffer = "";
197
+ return true;
198
+ }
199
+ if (key === "w") {
200
+ const nextCol = findWordBoundary(curLine, ctx.cursor.column, 1);
201
+ ctx.setSelection({
202
+ start: ctx.cursor,
203
+ end: { line: ctx.cursor.line, column: nextCol },
204
+ });
205
+ ctx.deleteSelectionOrChar(true);
206
+ this.commandBuffer = "";
207
+ return true;
208
+ }
209
+ if (key === "$") {
210
+ ctx.setSelection({
211
+ start: ctx.cursor,
212
+ end: { line: ctx.cursor.line, column: curLine.length },
213
+ });
214
+ ctx.deleteSelectionOrChar(true);
215
+ this.commandBuffer = "";
216
+ return true;
217
+ }
218
+ this.commandBuffer = "";
219
+ return true;
220
+ }
221
+ // Operator pending: yy
222
+ if (this.commandBuffer === "y") {
223
+ if (key === "y") {
224
+ this.registers.set('"', `${curLine}\n`);
225
+ this.commandBuffer = "";
226
+ return true;
227
+ }
228
+ this.commandBuffer = "";
229
+ return true;
230
+ }
231
+ // Set operator pending
232
+ if (key === "d" || key === "y" || key === "c") {
233
+ this.commandBuffer = key;
234
+ return true;
235
+ }
236
+ // Paste
237
+ if (key === "p") {
238
+ const reg = this.registers.get('"');
239
+ if (reg) {
240
+ if (reg.endsWith("\n")) {
241
+ // Paste line below
242
+ ctx.setCursor({ line: ctx.cursor.line, column: curLine.length });
243
+ ctx.enter();
244
+ ctx.insertText(reg.trimEnd());
245
+ }
246
+ else {
247
+ ctx.insertText(reg);
248
+ }
249
+ }
250
+ return true;
251
+ }
252
+ return true;
253
+ }
254
+ executeExCommand(cmd, ctx) {
255
+ const trimmed = cmd.replace(/^:+/, "").trim();
256
+ if (trimmed === "w") {
257
+ ctx.onSave?.();
258
+ }
259
+ else if (/^\d+$/.test(trimmed)) {
260
+ const line = Number.parseInt(trimmed, 10);
261
+ ctx.setCursor({ line: Math.max(0, line - 1), column: 0 });
262
+ }
263
+ else if (trimmed.startsWith("%s/")) {
264
+ // Find & replace: :%s/old/new/g
265
+ const parts = trimmed.split("/");
266
+ if (parts.length >= 3) {
267
+ const search = parts[1] || "";
268
+ const replace = parts[2] || "";
269
+ const allText = ctx.lines.join("\n");
270
+ const replaced = allText.replaceAll(search, replace);
271
+ ctx.setContent(replaced);
272
+ }
273
+ }
274
+ }
275
+ }
276
+ //# sourceMappingURL=VimState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VimState.js","sourceRoot":"","sources":["../../src/vim/VimState.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type React from "react";
2
+ import type { VimMode } from "./VimState.js";
3
+ export interface VimStatusBarProps {
4
+ mode: VimMode;
5
+ commandBuffer?: string;
6
+ exInput?: string;
7
+ }
8
+ export declare function VimStatusBar({ mode, commandBuffer, exInput, }: VimStatusBarProps): React.JSX.Element;
9
+ //# sourceMappingURL=VimStatusBar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VimStatusBar.d.ts","sourceRoot":"","sources":["../../src/vim/VimStatusBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,OAAO,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,YAAY,CAAC,EAC3B,IAAI,EACJ,aAAa,EACb,OAAO,GACR,EAAE,iBAAiB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAiDvC"}
@@ -0,0 +1,36 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ export function VimStatusBar({ mode, commandBuffer, exInput, }) {
3
+ let modeColor = "#58a6ff";
4
+ let modeLabel = "-- NORMAL --";
5
+ if (mode === "INSERT") {
6
+ modeColor = "#7ee787";
7
+ modeLabel = "-- INSERT --";
8
+ }
9
+ else if (mode === "VISUAL" || mode === "VISUAL_LINE" || mode === "VISUAL_BLOCK") {
10
+ modeColor = "#d2a8ff";
11
+ modeLabel = `-- ${mode.replace("_", " ")} --`;
12
+ }
13
+ else if (mode === "COMMAND") {
14
+ modeColor = "#ffa657";
15
+ modeLabel = exInput || ":";
16
+ }
17
+ return (_jsxs("div", { style: {
18
+ display: "flex",
19
+ alignItems: "center",
20
+ justifyContent: "space-between",
21
+ height: "22px",
22
+ padding: "0 10px",
23
+ backgroundColor: "#0d1117",
24
+ borderTop: "1px solid #30363d",
25
+ fontSize: "11px",
26
+ fontFamily: "monospace",
27
+ color: "#c9d1d9",
28
+ userSelect: "none",
29
+ }, children: [_jsxs("div", { style: { display: "flex", alignItems: "center", gap: "8px" }, children: [_jsx("span", { style: { color: modeColor, fontWeight: 700 }, children: modeLabel }), commandBuffer && (_jsx("span", { style: {
30
+ color: "#8b949e",
31
+ backgroundColor: "rgba(110, 118, 129, 0.2)",
32
+ padding: "1px 4px",
33
+ borderRadius: "2px",
34
+ }, children: commandBuffer }))] }), _jsx("div", { style: { color: "#6e7681", fontSize: "10px" }, children: "Vim Mode" })] }));
35
+ }
36
+ //# sourceMappingURL=VimStatusBar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VimStatusBar.js","sourceRoot":"","sources":["../../src/vim/VimStatusBar.tsx"],"names":[],"mappings":";AASA,MAAM,UAAU,YAAY,CAAC,EAC3B,IAAI,EACJ,aAAa,EACb,OAAO,GACW;IAClB,IAAI,SAAS,GAAG,SAAS,CAAC;IAC1B,IAAI,SAAS,GAAG,cAAc,CAAC;IAE/B,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,SAAS,GAAG,SAAS,CAAC;QACtB,SAAS,GAAG,cAAc,CAAC;IAC7B,CAAC;SAAM,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,aAAa,IAAI,IAAI,KAAK,cAAc,EAAE,CAAC;QAClF,SAAS,GAAG,SAAS,CAAC;QACtB,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC;IAChD,CAAC;SAAM,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QAC9B,SAAS,GAAG,SAAS,CAAC;QACtB,SAAS,GAAG,OAAO,IAAI,GAAG,CAAC;IAC7B,CAAC;IAED,OAAO,CACL,eACE,KAAK,EAAE;YACL,OAAO,EAAE,MAAM;YACf,UAAU,EAAE,QAAQ;YACpB,cAAc,EAAE,eAAe;YAC/B,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,QAAQ;YACjB,eAAe,EAAE,SAAS;YAC1B,SAAS,EAAE,mBAAmB;YAC9B,QAAQ,EAAE,MAAM;YAChB,UAAU,EAAE,WAAW;YACvB,KAAK,EAAE,SAAS;YAChB,UAAU,EAAE,MAAM;SACnB,aAED,eAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,aAC/D,eAAM,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,EAAE,YAAG,SAAS,GAAQ,EACrE,aAAa,IAAI,CAChB,eACE,KAAK,EAAE;4BACL,KAAK,EAAE,SAAS;4BAChB,eAAe,EAAE,0BAA0B;4BAC3C,OAAO,EAAE,SAAS;4BAClB,YAAY,EAAE,KAAK;yBACpB,YAEA,aAAa,GACT,CACR,IACG,EACN,cAAK,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,yBAAgB,IAC9D,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,13 @@
1
+ export interface ColorSwatchMatch {
2
+ color: string;
3
+ line: number;
4
+ startCol: number;
5
+ endCol: number;
6
+ }
7
+ /**
8
+ * Scans document lines for CSS color formats and provides swatch coordinates.
9
+ */
10
+ export declare class ColorPickerWidget {
11
+ static findColorsInLine(lineText: string, lineIndex: number): ColorSwatchMatch[];
12
+ }
13
+ //# sourceMappingURL=ColorPickerWidget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ColorPickerWidget.d.ts","sourceRoot":"","sources":["../../src/widgets/ColorPickerWidget.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAMD;;GAEG;AACH,qBAAa,iBAAiB;WACd,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,gBAAgB,EAAE;CA4CxF"}
@@ -0,0 +1,49 @@
1
+ const HEX_REGEX = /#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})\b/g;
2
+ const RGB_REGEX = /rgba?\(\s*\d+\s*,\s*\d+\s*,\s*\d+\s*(?:,\s*[\d.]+\s*)?\)/gi;
3
+ const HSL_REGEX = /hsla?\(\s*\d+\s*,\s*\d+%\s*,\s*\d+%\s*(?:,\s*[\d.]+\s*)?\)/gi;
4
+ /**
5
+ * Scans document lines for CSS color formats and provides swatch coordinates.
6
+ */
7
+ export class ColorPickerWidget {
8
+ static findColorsInLine(lineText, lineIndex) {
9
+ const matches = [];
10
+ // Hex matching
11
+ HEX_REGEX.lastIndex = 0;
12
+ let hexMatch = HEX_REGEX.exec(lineText);
13
+ while (hexMatch !== null) {
14
+ matches.push({
15
+ color: hexMatch[0],
16
+ line: lineIndex,
17
+ startCol: hexMatch.index,
18
+ endCol: hexMatch.index + hexMatch[0].length,
19
+ });
20
+ hexMatch = HEX_REGEX.exec(lineText);
21
+ }
22
+ // RGB / RGBA matching
23
+ RGB_REGEX.lastIndex = 0;
24
+ let rgbMatch = RGB_REGEX.exec(lineText);
25
+ while (rgbMatch !== null) {
26
+ matches.push({
27
+ color: rgbMatch[0],
28
+ line: lineIndex,
29
+ startCol: rgbMatch.index,
30
+ endCol: rgbMatch.index + rgbMatch[0].length,
31
+ });
32
+ rgbMatch = RGB_REGEX.exec(lineText);
33
+ }
34
+ // HSL / HSLA matching
35
+ HSL_REGEX.lastIndex = 0;
36
+ let hslMatch = HSL_REGEX.exec(lineText);
37
+ while (hslMatch !== null) {
38
+ matches.push({
39
+ color: hslMatch[0],
40
+ line: lineIndex,
41
+ startCol: hslMatch.index,
42
+ endCol: hslMatch.index + hslMatch[0].length,
43
+ });
44
+ hslMatch = HSL_REGEX.exec(lineText);
45
+ }
46
+ return matches.sort((a, b) => a.startCol - b.startCol);
47
+ }
48
+ }
49
+ //# sourceMappingURL=ColorPickerWidget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ColorPickerWidget.js","sourceRoot":"","sources":["../../src/widgets/ColorPickerWidget.ts"],"names":[],"mappings":"AAOA,MAAM,SAAS,GAAG,wDAAwD,CAAC;AAC3E,MAAM,SAAS,GAAG,4DAA4D,CAAC;AAC/E,MAAM,SAAS,GAAG,8DAA8D,CAAC;AAEjF;;GAEG;AACH,MAAM,OAAO,iBAAiB;IACrB,MAAM,CAAC,gBAAgB,CAAC,QAAgB,EAAE,SAAiB;QAChE,MAAM,OAAO,GAAuB,EAAE,CAAC;QAEvC,eAAe;QACf,SAAS,CAAC,SAAS,GAAG,CAAC,CAAC;QACxB,IAAI,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxC,OAAO,QAAQ,KAAK,IAAI,EAAE,CAAC;YACzB,OAAO,CAAC,IAAI,CAAC;gBACX,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;gBAClB,IAAI,EAAE,SAAS;gBACf,QAAQ,EAAE,QAAQ,CAAC,KAAK;gBACxB,MAAM,EAAE,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM;aAC5C,CAAC,CAAC;YACH,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtC,CAAC;QAED,sBAAsB;QACtB,SAAS,CAAC,SAAS,GAAG,CAAC,CAAC;QACxB,IAAI,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxC,OAAO,QAAQ,KAAK,IAAI,EAAE,CAAC;YACzB,OAAO,CAAC,IAAI,CAAC;gBACX,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;gBAClB,IAAI,EAAE,SAAS;gBACf,QAAQ,EAAE,QAAQ,CAAC,KAAK;gBACxB,MAAM,EAAE,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM;aAC5C,CAAC,CAAC;YACH,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtC,CAAC;QAED,sBAAsB;QACtB,SAAS,CAAC,SAAS,GAAG,CAAC,CAAC;QACxB,IAAI,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxC,OAAO,QAAQ,KAAK,IAAI,EAAE,CAAC;YACzB,OAAO,CAAC,IAAI,CAAC;gBACX,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;gBAClB,IAAI,EAAE,SAAS;gBACf,QAAQ,EAAE,QAAQ,CAAC,KAAK;gBACxB,MAAM,EAAE,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM;aAC5C,CAAC,CAAC;YACH,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtC,CAAC;QAED,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;IACzD,CAAC;CACF"}
@@ -0,0 +1,36 @@
1
+ export interface FuzzyItem {
2
+ id: string;
3
+ text: string;
4
+ }
5
+ export interface FuzzySearchResult {
6
+ id: string;
7
+ text: string;
8
+ score: number;
9
+ }
10
+ export interface GrepMatch {
11
+ line: number;
12
+ text: string;
13
+ matchStart: number;
14
+ matchEnd: number;
15
+ }
16
+ /**
17
+ * High-performance Worker RPC Bridge.
18
+ * Offloads heavy AST/tokenization and full-text fuzzy grep to background Web Workers
19
+ * with zero main-thread UI jitter and automatic fallback in Node/SSR.
20
+ */
21
+ export declare class WorkerBridge {
22
+ private worker;
23
+ private isAvailable;
24
+ constructor(workerScriptUrl?: string);
25
+ isWorkerAvailable(): boolean;
26
+ /**
27
+ * Performs fuzzy score ranking across items.
28
+ */
29
+ fuzzySearch(query: string, items: FuzzyItem[]): Promise<FuzzySearchResult[]>;
30
+ /**
31
+ * Scans content with regex or substring matching.
32
+ */
33
+ grep(pattern: string, content: string, isRegex?: boolean): Promise<GrepMatch[]>;
34
+ terminate(): void;
35
+ }
36
+ //# sourceMappingURL=WorkerBridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkerBridge.d.ts","sourceRoot":"","sources":["../../src/worker/WorkerBridge.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,WAAW,CAAU;gBAEjB,eAAe,CAAC,EAAE,MAAM;IAc7B,iBAAiB,IAAI,OAAO;IAInC;;OAEG;IACU,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAwBzF;;OAEG;IACU,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,UAAQ,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IA8CnF,SAAS,IAAI,IAAI;CAIzB"}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * High-performance Worker RPC Bridge.
3
+ * Offloads heavy AST/tokenization and full-text fuzzy grep to background Web Workers
4
+ * with zero main-thread UI jitter and automatic fallback in Node/SSR.
5
+ */
6
+ export class WorkerBridge {
7
+ worker = null;
8
+ isAvailable;
9
+ constructor(workerScriptUrl) {
10
+ if (typeof Worker !== "undefined" && workerScriptUrl) {
11
+ try {
12
+ this.worker = new Worker(workerScriptUrl, { type: "module" });
13
+ this.isAvailable = true;
14
+ }
15
+ catch {
16
+ this.worker = null;
17
+ this.isAvailable = false;
18
+ }
19
+ }
20
+ else {
21
+ this.isAvailable = false;
22
+ }
23
+ }
24
+ isWorkerAvailable() {
25
+ return this.isAvailable;
26
+ }
27
+ /**
28
+ * Performs fuzzy score ranking across items.
29
+ */
30
+ async fuzzySearch(query, items) {
31
+ const q = query.toLowerCase();
32
+ const results = [];
33
+ for (const item of items) {
34
+ const lower = item.text.toLowerCase();
35
+ let score = 0;
36
+ let qi = 0;
37
+ for (let i = 0; i < lower.length && qi < q.length; i++) {
38
+ if (lower[i] === q[qi]) {
39
+ score += 10 - Math.min(i, 5); // Boost earlier matches
40
+ qi++;
41
+ }
42
+ }
43
+ if (qi === q.length) {
44
+ results.push({ id: item.id, text: item.text, score });
45
+ }
46
+ }
47
+ return results.sort((a, b) => b.score - a.score);
48
+ }
49
+ /**
50
+ * Scans content with regex or substring matching.
51
+ */
52
+ async grep(pattern, content, isRegex = false) {
53
+ const matches = [];
54
+ const lines = content.split(/\r?\n/);
55
+ if (isRegex) {
56
+ try {
57
+ const re = new RegExp(pattern, "g");
58
+ for (let i = 0; i < lines.length; i++) {
59
+ const line = lines[i];
60
+ re.lastIndex = 0;
61
+ let m = re.exec(line);
62
+ while (m !== null) {
63
+ matches.push({
64
+ line: i,
65
+ text: line,
66
+ matchStart: m.index,
67
+ matchEnd: m.index + m[0].length,
68
+ });
69
+ if (m[0].length === 0)
70
+ break;
71
+ m = re.exec(line);
72
+ }
73
+ }
74
+ }
75
+ catch {
76
+ return [];
77
+ }
78
+ }
79
+ else {
80
+ const p = pattern.toLowerCase();
81
+ for (let i = 0; i < lines.length; i++) {
82
+ const line = lines[i];
83
+ const lower = line.toLowerCase();
84
+ let idx = lower.indexOf(p);
85
+ while (idx !== -1) {
86
+ matches.push({
87
+ line: i,
88
+ text: line,
89
+ matchStart: idx,
90
+ matchEnd: idx + pattern.length,
91
+ });
92
+ idx = lower.indexOf(p, idx + pattern.length);
93
+ }
94
+ }
95
+ }
96
+ return matches;
97
+ }
98
+ terminate() {
99
+ this.worker?.terminate();
100
+ this.worker = null;
101
+ }
102
+ }
103
+ //# sourceMappingURL=WorkerBridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkerBridge.js","sourceRoot":"","sources":["../../src/worker/WorkerBridge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { Position } from "@termaxjs/editor-core";
2
+ export interface WorkspaceTab {
3
+ id: string;
4
+ filePath: string;
5
+ title: string;
6
+ isDirty: boolean;
7
+ isPinned: boolean;
8
+ language: string;
9
+ cursor: Position;
10
+ scrollTop: number;
11
+ }
12
+ export declare class WorkspaceTabManager {
13
+ private tabs;
14
+ private activeTabId;
15
+ private onChangeListeners;
16
+ openTab(tab: Omit<WorkspaceTab, "cursor" | "scrollTop" | "isDirty" | "isPinned"> & Partial<WorkspaceTab>): WorkspaceTab;
17
+ closeTab(tabId: string): void;
18
+ setActiveTab(tabId: string): void;
19
+ setDirty(tabId: string, isDirty: boolean): void;
20
+ getActiveTab(): WorkspaceTab | null;
21
+ getTabs(): WorkspaceTab[];
22
+ onChange(listener: (tabs: WorkspaceTab[], activeId: string | null) => void): () => void;
23
+ private notify;
24
+ }
25
+ //# sourceMappingURL=WorkspaceTabManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkspaceTabManager.d.ts","sourceRoot":"","sources":["../../src/workspace/WorkspaceTabManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,QAAQ,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,IAAI,CAAsB;IAClC,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,iBAAiB,CAAsE;IAExF,OAAO,CACZ,GAAG,EAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,GAAG,WAAW,GAAG,SAAS,GAAG,UAAU,CAAC,GACtE,OAAO,CAAC,YAAY,CAAC,GACtB,YAAY;IAyBR,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAY7B,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAOjC,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAQ/C,YAAY,IAAI,YAAY,GAAG,IAAI;IAInC,OAAO,IAAI,YAAY,EAAE;IAIzB,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,YAAY,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,MAAM,IAAI;IAQ9F,OAAO,CAAC,MAAM;CAKf"}