@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.
- package/LICENSE +201 -0
- package/README.md +85 -0
- package/dist/TermaxEditor.d.ts +74 -0
- package/dist/TermaxEditor.d.ts.map +1 -0
- package/dist/TermaxEditor.js +728 -0
- package/dist/TermaxEditor.js.map +1 -0
- package/dist/adapter.d.ts +2 -0
- package/dist/adapter.d.ts.map +1 -0
- package/dist/adapter.js +2 -0
- package/dist/adapter.js.map +1 -0
- package/dist/ai/GhostTextManager.d.ts +34 -0
- package/dist/ai/GhostTextManager.d.ts.map +1 -0
- package/dist/ai/GhostTextManager.js +116 -0
- package/dist/ai/GhostTextManager.js.map +1 -0
- package/dist/ai/StreamingDiffApplier.d.ts +28 -0
- package/dist/ai/StreamingDiffApplier.d.ts.map +1 -0
- package/dist/ai/StreamingDiffApplier.js +61 -0
- package/dist/ai/StreamingDiffApplier.js.map +1 -0
- package/dist/canvas.d.ts +2 -0
- package/dist/canvas.d.ts.map +1 -0
- package/dist/canvas.js +2 -0
- package/dist/canvas.js.map +1 -0
- package/dist/codelens/CodeLensProvider.d.ts +22 -0
- package/dist/codelens/CodeLensProvider.d.ts.map +1 -0
- package/dist/codelens/CodeLensProvider.js +36 -0
- package/dist/codelens/CodeLensProvider.js.map +1 -0
- package/dist/core.d.ts +2 -0
- package/dist/core.d.ts.map +1 -0
- package/dist/core.js +2 -0
- package/dist/core.js.map +1 -0
- package/dist/diff/ConflictResolver.d.ts +27 -0
- package/dist/diff/ConflictResolver.d.ts.map +1 -0
- package/dist/diff/ConflictResolver.js +88 -0
- package/dist/diff/ConflictResolver.js.map +1 -0
- package/dist/diff/DiffEditor.d.ts +18 -0
- package/dist/diff/DiffEditor.d.ts.map +1 -0
- package/dist/diff/DiffEditor.js +212 -0
- package/dist/diff/DiffEditor.js.map +1 -0
- package/dist/diff/InlineDiffModel.d.ts +18 -0
- package/dist/diff/InlineDiffModel.d.ts.map +1 -0
- package/dist/diff/InlineDiffModel.js +78 -0
- package/dist/diff/InlineDiffModel.js.map +1 -0
- package/dist/element/TermaxEditorElement.d.ts +28 -0
- package/dist/element/TermaxEditorElement.d.ts.map +1 -0
- package/dist/element/TermaxEditorElement.js +123 -0
- package/dist/element/TermaxEditorElement.js.map +1 -0
- package/dist/fold/computeFoldRanges.d.ts +8 -0
- package/dist/fold/computeFoldRanges.d.ts.map +1 -0
- package/dist/fold/computeFoldRanges.js +109 -0
- package/dist/fold/computeFoldRanges.js.map +1 -0
- package/dist/format/formatter.d.ts +5 -0
- package/dist/format/formatter.d.ts.map +1 -0
- package/dist/format/formatter.js +89 -0
- package/dist/format/formatter.js.map +1 -0
- package/dist/git/GitGutterManager.d.ts +17 -0
- package/dist/git/GitGutterManager.d.ts.map +1 -0
- package/dist/git/GitGutterManager.js +50 -0
- package/dist/git/GitGutterManager.js.map +1 -0
- package/dist/git/InlineBlameManager.d.ts +18 -0
- package/dist/git/InlineBlameManager.d.ts.map +1 -0
- package/dist/git/InlineBlameManager.js +33 -0
- package/dist/git/InlineBlameManager.js.map +1 -0
- package/dist/gutter/FoldGutter.d.ts +12 -0
- package/dist/gutter/FoldGutter.d.ts.map +1 -0
- package/dist/gutter/FoldGutter.js +51 -0
- package/dist/gutter/FoldGutter.js.map +1 -0
- package/dist/gutter/LineNumbers.d.ts +11 -0
- package/dist/gutter/LineNumbers.d.ts.map +1 -0
- package/dist/gutter/LineNumbers.js +71 -0
- package/dist/gutter/LineNumbers.js.map +1 -0
- package/dist/highlight/microTokenizer.d.ts +20 -0
- package/dist/highlight/microTokenizer.d.ts.map +1 -0
- package/dist/highlight/microTokenizer.js +951 -0
- package/dist/highlight/microTokenizer.js.map +1 -0
- package/dist/index.d.ts +46 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +46 -0
- package/dist/index.js.map +1 -0
- package/dist/input/KeymapPresets.d.ts +10 -0
- package/dist/input/KeymapPresets.d.ts.map +1 -0
- package/dist/input/KeymapPresets.js +46 -0
- package/dist/input/KeymapPresets.js.map +1 -0
- package/dist/input/OffscreenInput.d.ts +27 -0
- package/dist/input/OffscreenInput.d.ts.map +1 -0
- package/dist/input/OffscreenInput.js +367 -0
- package/dist/input/OffscreenInput.js.map +1 -0
- package/dist/languages/GrammarRegistry.d.ts +55 -0
- package/dist/languages/GrammarRegistry.d.ts.map +1 -0
- package/dist/languages/GrammarRegistry.js +80 -0
- package/dist/languages/GrammarRegistry.js.map +1 -0
- package/dist/languages/LanguageAdapter.d.ts +11 -0
- package/dist/languages/LanguageAdapter.d.ts.map +1 -0
- package/dist/languages/LanguageAdapter.js +47 -0
- package/dist/languages/LanguageAdapter.js.map +1 -0
- package/dist/languages/TreeSitterAdapter.d.ts +29 -0
- package/dist/languages/TreeSitterAdapter.d.ts.map +1 -0
- package/dist/languages/TreeSitterAdapter.js +99 -0
- package/dist/languages/TreeSitterAdapter.js.map +1 -0
- package/dist/languages/index.d.ts +16 -0
- package/dist/languages/index.d.ts.map +1 -0
- package/dist/languages/index.js +163 -0
- package/dist/languages/index.js.map +1 -0
- package/dist/lsp/InlayHintProvider.d.ts +18 -0
- package/dist/lsp/InlayHintProvider.d.ts.map +1 -0
- package/dist/lsp/InlayHintProvider.js +26 -0
- package/dist/lsp/InlayHintProvider.js.map +1 -0
- package/dist/lsp/LspClient.d.ts +73 -0
- package/dist/lsp/LspClient.d.ts.map +1 -0
- package/dist/lsp/LspClient.js +261 -0
- package/dist/lsp/LspClient.js.map +1 -0
- package/dist/lsp/SemanticTokensDecoder.d.ts +26 -0
- package/dist/lsp/SemanticTokensDecoder.d.ts.map +1 -0
- package/dist/lsp/SemanticTokensDecoder.js +88 -0
- package/dist/lsp/SemanticTokensDecoder.js.map +1 -0
- package/dist/lsp/WorkspaceSymbolIndex.d.ts +32 -0
- package/dist/lsp/WorkspaceSymbolIndex.d.ts.map +1 -0
- package/dist/lsp/WorkspaceSymbolIndex.js +73 -0
- package/dist/lsp/WorkspaceSymbolIndex.js.map +1 -0
- package/dist/minimap/Minimap.d.ts +24 -0
- package/dist/minimap/Minimap.d.ts.map +1 -0
- package/dist/minimap/Minimap.js +31 -0
- package/dist/minimap/Minimap.js.map +1 -0
- package/dist/minimap/useMinimap.d.ts +75 -0
- package/dist/minimap/useMinimap.d.ts.map +1 -0
- package/dist/minimap/useMinimap.js +179 -0
- package/dist/minimap/useMinimap.js.map +1 -0
- package/dist/navigation/StickyScrollHeader.d.ts +16 -0
- package/dist/navigation/StickyScrollHeader.d.ts.map +1 -0
- package/dist/navigation/StickyScrollHeader.js +49 -0
- package/dist/navigation/StickyScrollHeader.js.map +1 -0
- package/dist/navigation/StickyScrollManager.d.ts +18 -0
- package/dist/navigation/StickyScrollManager.d.ts.map +1 -0
- package/dist/navigation/StickyScrollManager.js +32 -0
- package/dist/navigation/StickyScrollManager.js.map +1 -0
- package/dist/overlay/CompletionMenu.d.ts +15 -0
- package/dist/overlay/CompletionMenu.d.ts.map +1 -0
- package/dist/overlay/CompletionMenu.js +90 -0
- package/dist/overlay/CompletionMenu.js.map +1 -0
- package/dist/overlay/FindReplace.d.ts +6 -0
- package/dist/overlay/FindReplace.d.ts.map +1 -0
- package/dist/overlay/FindReplace.js +278 -0
- package/dist/overlay/FindReplace.js.map +1 -0
- package/dist/overlay/HoverTooltip.d.ts +12 -0
- package/dist/overlay/HoverTooltip.d.ts.map +1 -0
- package/dist/overlay/HoverTooltip.js +67 -0
- package/dist/overlay/HoverTooltip.js.map +1 -0
- package/dist/overlay/RemoteCursorsOverlay.d.ts +15 -0
- package/dist/overlay/RemoteCursorsOverlay.d.ts.map +1 -0
- package/dist/overlay/RemoteCursorsOverlay.js +50 -0
- package/dist/overlay/RemoteCursorsOverlay.js.map +1 -0
- package/dist/overlay/SignatureHelpTooltip.d.ts +11 -0
- package/dist/overlay/SignatureHelpTooltip.d.ts.map +1 -0
- package/dist/overlay/SignatureHelpTooltip.js +36 -0
- package/dist/overlay/SignatureHelpTooltip.js.map +1 -0
- package/dist/pairs/SelectionSurround.d.ts +14 -0
- package/dist/pairs/SelectionSurround.d.ts.map +1 -0
- package/dist/pairs/SelectionSurround.js +29 -0
- package/dist/pairs/SelectionSurround.js.map +1 -0
- package/dist/pairs/pairMatching.d.ts +6 -0
- package/dist/pairs/pairMatching.d.ts.map +1 -0
- package/dist/pairs/pairMatching.js +169 -0
- package/dist/pairs/pairMatching.js.map +1 -0
- package/dist/plugin/ViewPlugin.d.ts +20 -0
- package/dist/plugin/ViewPlugin.d.ts.map +1 -0
- package/dist/plugin/ViewPlugin.js +17 -0
- package/dist/plugin/ViewPlugin.js.map +1 -0
- package/dist/react.d.ts +2 -0
- package/dist/react.d.ts.map +1 -0
- package/dist/react.js +2 -0
- package/dist/react.js.map +1 -0
- package/dist/renderer/CanvasViewport.d.ts +23 -0
- package/dist/renderer/CanvasViewport.d.ts.map +1 -0
- package/dist/renderer/CanvasViewport.js +134 -0
- package/dist/renderer/CanvasViewport.js.map +1 -0
- package/dist/renderer/VirtualizedLines.d.ts +30 -0
- package/dist/renderer/VirtualizedLines.d.ts.map +1 -0
- package/dist/renderer/VirtualizedLines.js +427 -0
- package/dist/renderer/VirtualizedLines.js.map +1 -0
- package/dist/renderer/windowing.d.ts +33 -0
- package/dist/renderer/windowing.d.ts.map +1 -0
- package/dist/renderer/windowing.js +50 -0
- package/dist/renderer/windowing.js.map +1 -0
- package/dist/snippet/SnippetEngine.d.ts +31 -0
- package/dist/snippet/SnippetEngine.d.ts.map +1 -0
- package/dist/snippet/SnippetEngine.js +119 -0
- package/dist/snippet/SnippetEngine.js.map +1 -0
- package/dist/themes/VSCodeThemeConverter.d.ts +24 -0
- package/dist/themes/VSCodeThemeConverter.d.ts.map +1 -0
- package/dist/themes/VSCodeThemeConverter.js +118 -0
- package/dist/themes/VSCodeThemeConverter.js.map +1 -0
- package/dist/themes/index.d.ts +9 -0
- package/dist/themes/index.d.ts.map +1 -0
- package/dist/themes/index.js +128 -0
- package/dist/themes/index.js.map +1 -0
- package/dist/vim/VimState.d.ts +32 -0
- package/dist/vim/VimState.d.ts.map +1 -0
- package/dist/vim/VimState.js +276 -0
- package/dist/vim/VimState.js.map +1 -0
- package/dist/vim/VimStatusBar.d.ts +9 -0
- package/dist/vim/VimStatusBar.d.ts.map +1 -0
- package/dist/vim/VimStatusBar.js +36 -0
- package/dist/vim/VimStatusBar.js.map +1 -0
- package/dist/widgets/ColorPickerWidget.d.ts +13 -0
- package/dist/widgets/ColorPickerWidget.d.ts.map +1 -0
- package/dist/widgets/ColorPickerWidget.js +49 -0
- package/dist/widgets/ColorPickerWidget.js.map +1 -0
- package/dist/worker/WorkerBridge.d.ts +36 -0
- package/dist/worker/WorkerBridge.d.ts.map +1 -0
- package/dist/worker/WorkerBridge.js +103 -0
- package/dist/worker/WorkerBridge.js.map +1 -0
- package/dist/workspace/WorkspaceTabManager.d.ts +25 -0
- package/dist/workspace/WorkspaceTabManager.d.ts.map +1 -0
- package/dist/workspace/WorkspaceTabManager.js +71 -0
- package/dist/workspace/WorkspaceTabManager.js.map +1 -0
- package/package.json +78 -0
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parse a standard TextMate/LSP snippet template.
|
|
3
|
+
* Examples:
|
|
4
|
+
* "console.log($1);"
|
|
5
|
+
* "for (let ${1:i} = 0; ${1:i} < ${2:n}; ${1:i}++) {\n\t$0\n}"
|
|
6
|
+
*/
|
|
7
|
+
export function parseSnippet(template) {
|
|
8
|
+
let text = "";
|
|
9
|
+
const fields = [];
|
|
10
|
+
let i = 0;
|
|
11
|
+
const len = template.length;
|
|
12
|
+
while (i < len) {
|
|
13
|
+
const ch = template[i];
|
|
14
|
+
if (ch === "\\") {
|
|
15
|
+
if (i + 1 < len) {
|
|
16
|
+
text += template[i + 1];
|
|
17
|
+
i += 2;
|
|
18
|
+
continue;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
if (ch === "$") {
|
|
22
|
+
// $1 or $0
|
|
23
|
+
if (/[0-9]/.test(template[i + 1] || "")) {
|
|
24
|
+
const index = parseInt(template[i + 1], 10);
|
|
25
|
+
const start = text.length;
|
|
26
|
+
fields.push({ index, start, end: start, placeholder: "" });
|
|
27
|
+
i += 2;
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
// ${1:placeholder} or ${1}
|
|
31
|
+
if (template[i + 1] === "{") {
|
|
32
|
+
const closeIdx = template.indexOf("}", i + 2);
|
|
33
|
+
if (closeIdx !== -1) {
|
|
34
|
+
const inner = template.slice(i + 2, closeIdx);
|
|
35
|
+
const colonIdx = inner.indexOf(":");
|
|
36
|
+
let index = 0;
|
|
37
|
+
let placeholder = "";
|
|
38
|
+
if (colonIdx !== -1) {
|
|
39
|
+
index = parseInt(inner.slice(0, colonIdx), 10) || 0;
|
|
40
|
+
placeholder = inner.slice(colonIdx + 1);
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
index = parseInt(inner, 10) || 0;
|
|
44
|
+
}
|
|
45
|
+
const start = text.length;
|
|
46
|
+
text += placeholder;
|
|
47
|
+
const end = text.length;
|
|
48
|
+
fields.push({ index, start, end, placeholder });
|
|
49
|
+
i = closeIdx + 1;
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
text += ch;
|
|
55
|
+
i++;
|
|
56
|
+
}
|
|
57
|
+
return { text, fields };
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Fuzzy matching score for auto-completion.
|
|
61
|
+
* Returns a score (higher is better) or null if target does not match query.
|
|
62
|
+
*/
|
|
63
|
+
export function fuzzyScore(query, target) {
|
|
64
|
+
if (!query)
|
|
65
|
+
return 0;
|
|
66
|
+
const q = query.toLowerCase();
|
|
67
|
+
const t = target.toLowerCase();
|
|
68
|
+
if (t === q)
|
|
69
|
+
return 1000;
|
|
70
|
+
if (t.startsWith(q))
|
|
71
|
+
return 500 - (t.length - q.length);
|
|
72
|
+
let qIdx = 0;
|
|
73
|
+
let score = 0;
|
|
74
|
+
let prevMatchIdx = -10;
|
|
75
|
+
for (let tIdx = 0; tIdx < t.length; tIdx++) {
|
|
76
|
+
if (qIdx < q.length && t[tIdx] === q[qIdx]) {
|
|
77
|
+
// Base match score
|
|
78
|
+
score += 10;
|
|
79
|
+
// Consecutive character bonus
|
|
80
|
+
if (tIdx === prevMatchIdx + 1) {
|
|
81
|
+
score += 15;
|
|
82
|
+
}
|
|
83
|
+
// Word boundary bonus (start of string, after _ or -, or CamelCase)
|
|
84
|
+
if (tIdx === 0 ||
|
|
85
|
+
target[tIdx - 1] === "_" ||
|
|
86
|
+
target[tIdx - 1] === "-" ||
|
|
87
|
+
target[tIdx - 1] === "." ||
|
|
88
|
+
(target[tIdx] >= "A" &&
|
|
89
|
+
target[tIdx] <= "Z" &&
|
|
90
|
+
target[tIdx - 1] >= "a" &&
|
|
91
|
+
target[tIdx - 1] <= "z")) {
|
|
92
|
+
score += 25;
|
|
93
|
+
}
|
|
94
|
+
prevMatchIdx = tIdx;
|
|
95
|
+
qIdx++;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
// Not all query characters were found
|
|
99
|
+
if (qIdx < q.length)
|
|
100
|
+
return null;
|
|
101
|
+
// Slight penalty for longer non-matching target length
|
|
102
|
+
score -= t.length - q.length;
|
|
103
|
+
return score;
|
|
104
|
+
}
|
|
105
|
+
export function filterAndSortCompletions(query, items) {
|
|
106
|
+
if (!query)
|
|
107
|
+
return items;
|
|
108
|
+
const scored = [];
|
|
109
|
+
for (const item of items) {
|
|
110
|
+
const textToMatch = item.filterText || item.label;
|
|
111
|
+
const score = fuzzyScore(query, textToMatch);
|
|
112
|
+
if (score !== null) {
|
|
113
|
+
scored.push({ item, score });
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
scored.sort((a, b) => b.score - a.score);
|
|
117
|
+
return scored.map((s) => s.item);
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=SnippetEngine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SnippetEngine.js","sourceRoot":"","sources":["../../src/snippet/SnippetEngine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { EditorTheme } from "@termaxjs/editor-core";
|
|
2
|
+
export interface VSCodeThemeRule {
|
|
3
|
+
name?: string;
|
|
4
|
+
scope?: string | string[];
|
|
5
|
+
settings: {
|
|
6
|
+
foreground?: string;
|
|
7
|
+
fontStyle?: string;
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
export interface VSCodeThemeJSON {
|
|
11
|
+
name?: string;
|
|
12
|
+
type?: "dark" | "light";
|
|
13
|
+
colors?: Record<string, string>;
|
|
14
|
+
tokenColors?: VSCodeThemeRule[];
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Converts a standard VS Code theme JSON object into a high-performance TermaxEditor EditorTheme.
|
|
18
|
+
*/
|
|
19
|
+
export declare class VSCodeThemeConverter {
|
|
20
|
+
static convert(themeJson: VSCodeThemeJSON, themeName?: string): EditorTheme;
|
|
21
|
+
}
|
|
22
|
+
export declare const TokyoNightTheme: EditorTheme;
|
|
23
|
+
export declare const CatppuccinMochaTheme: EditorTheme;
|
|
24
|
+
//# sourceMappingURL=VSCodeThemeConverter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VSCodeThemeConverter.d.ts","sourceRoot":"","sources":["../../src/themes/VSCodeThemeConverter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC1B,QAAQ,EAAE;QACR,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,WAAW,CAAC,EAAE,eAAe,EAAE,CAAC;CACjC;AAED;;GAEG;AACH,qBAAa,oBAAoB;WACjB,OAAO,CAAC,SAAS,EAAE,eAAe,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,WAAW;CAkEnF;AAGD,eAAO,MAAM,eAAe,EAAE,WAsB5B,CAAC;AAEH,eAAO,MAAM,oBAAoB,EAAE,WAsBjC,CAAC"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Converts a standard VS Code theme JSON object into a high-performance TermaxEditor EditorTheme.
|
|
3
|
+
*/
|
|
4
|
+
export class VSCodeThemeConverter {
|
|
5
|
+
static convert(themeJson, themeName) {
|
|
6
|
+
const colors = themeJson.colors ?? {};
|
|
7
|
+
const rules = themeJson.tokenColors ?? [];
|
|
8
|
+
const background = colors["editor.background"] ?? (themeJson.type === "light" ? "#ffffff" : "#1e1e1e");
|
|
9
|
+
const foreground = colors["editor.foreground"] ?? (themeJson.type === "light" ? "#000000" : "#d4d4d4");
|
|
10
|
+
const lineHighlight = colors["editor.lineHighlightBackground"];
|
|
11
|
+
const lineNumber = colors["editorLineNumber.foreground"];
|
|
12
|
+
const lineNumberActive = colors["editorLineNumber.activeForeground"];
|
|
13
|
+
const caret = colors["editorCursor.foreground"] ?? foreground;
|
|
14
|
+
const selection = colors["editor.selectionBackground"];
|
|
15
|
+
const gutterBackground = colors["editorGutter.background"] ?? background;
|
|
16
|
+
const syntax = {};
|
|
17
|
+
for (const rule of rules) {
|
|
18
|
+
if (!rule.settings?.foreground)
|
|
19
|
+
continue;
|
|
20
|
+
const fg = rule.settings.foreground;
|
|
21
|
+
const scopes = Array.isArray(rule.scope)
|
|
22
|
+
? rule.scope
|
|
23
|
+
: typeof rule.scope === "string"
|
|
24
|
+
? rule.scope.split(/,\s*/)
|
|
25
|
+
: [];
|
|
26
|
+
for (const scope of scopes) {
|
|
27
|
+
const cleanScope = scope.trim().toLowerCase();
|
|
28
|
+
if (cleanScope.includes("comment")) {
|
|
29
|
+
syntax.comment = fg;
|
|
30
|
+
}
|
|
31
|
+
else if (cleanScope.includes("string")) {
|
|
32
|
+
syntax.string = fg;
|
|
33
|
+
}
|
|
34
|
+
else if (cleanScope.includes("operator") || cleanScope.includes("punctuation")) {
|
|
35
|
+
syntax.operator = fg;
|
|
36
|
+
}
|
|
37
|
+
else if (cleanScope.includes("keyword") || cleanScope.includes("storage.type")) {
|
|
38
|
+
syntax.keyword = fg;
|
|
39
|
+
}
|
|
40
|
+
else if (cleanScope.includes("function") || cleanScope.includes("method")) {
|
|
41
|
+
syntax.function = fg;
|
|
42
|
+
}
|
|
43
|
+
else if (cleanScope.includes("variable") || cleanScope.includes("parameter")) {
|
|
44
|
+
syntax.variable = fg;
|
|
45
|
+
}
|
|
46
|
+
else if (cleanScope.includes("constant") || cleanScope.includes("number")) {
|
|
47
|
+
syntax.number = fg;
|
|
48
|
+
}
|
|
49
|
+
else if (cleanScope.includes("type") ||
|
|
50
|
+
cleanScope.includes("class") ||
|
|
51
|
+
cleanScope.includes("interface")) {
|
|
52
|
+
syntax.type = fg;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return {
|
|
57
|
+
name: themeName || themeJson.name || "VS Code Converted Theme",
|
|
58
|
+
background,
|
|
59
|
+
foreground,
|
|
60
|
+
lineHighlight,
|
|
61
|
+
lineNumber,
|
|
62
|
+
lineNumberActive,
|
|
63
|
+
caret,
|
|
64
|
+
selection,
|
|
65
|
+
gutterBackground,
|
|
66
|
+
syntax,
|
|
67
|
+
tokens: syntax,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
// Built-in iconic presets converted from VS Code ecosystem
|
|
72
|
+
export const TokyoNightTheme = VSCodeThemeConverter.convert({
|
|
73
|
+
name: "Tokyo Night",
|
|
74
|
+
type: "dark",
|
|
75
|
+
colors: {
|
|
76
|
+
"editor.background": "#1a1b26",
|
|
77
|
+
"editor.foreground": "#a9b1d6",
|
|
78
|
+
"editor.lineHighlightBackground": "#1e202e",
|
|
79
|
+
"editorLineNumber.foreground": "#363b54",
|
|
80
|
+
"editorLineNumber.activeForeground": "#7aa2f7",
|
|
81
|
+
"editorCursor.foreground": "#c0caf5",
|
|
82
|
+
"editor.selectionBackground": "#283457",
|
|
83
|
+
},
|
|
84
|
+
tokenColors: [
|
|
85
|
+
{ scope: "comment", settings: { foreground: "#565f89" } },
|
|
86
|
+
{ scope: "keyword, storage.type", settings: { foreground: "#bb9af7" } },
|
|
87
|
+
{ scope: "string", settings: { foreground: "#9ece6a" } },
|
|
88
|
+
{ scope: "entity.name.function", settings: { foreground: "#7aa2f7" } },
|
|
89
|
+
{ scope: "variable", settings: { foreground: "#c0caf5" } },
|
|
90
|
+
{ scope: "constant.numeric", settings: { foreground: "#ff9e64" } },
|
|
91
|
+
{ scope: "entity.name.type", settings: { foreground: "#2ac3de" } },
|
|
92
|
+
{ scope: "keyword.operator", settings: { foreground: "#89ddff" } },
|
|
93
|
+
],
|
|
94
|
+
});
|
|
95
|
+
export const CatppuccinMochaTheme = VSCodeThemeConverter.convert({
|
|
96
|
+
name: "Catppuccin Mocha",
|
|
97
|
+
type: "dark",
|
|
98
|
+
colors: {
|
|
99
|
+
"editor.background": "#1e1e2e",
|
|
100
|
+
"editor.foreground": "#cdd6f4",
|
|
101
|
+
"editor.lineHighlightBackground": "#313244",
|
|
102
|
+
"editorLineNumber.foreground": "#6c7086",
|
|
103
|
+
"editorLineNumber.activeForeground": "#cba6f7",
|
|
104
|
+
"editorCursor.foreground": "#f5e0dc",
|
|
105
|
+
"editor.selectionBackground": "#45475a",
|
|
106
|
+
},
|
|
107
|
+
tokenColors: [
|
|
108
|
+
{ scope: "comment", settings: { foreground: "#6c7086" } },
|
|
109
|
+
{ scope: "keyword, storage.type", settings: { foreground: "#cba6f7" } },
|
|
110
|
+
{ scope: "string", settings: { foreground: "#a6e3a1" } },
|
|
111
|
+
{ scope: "entity.name.function", settings: { foreground: "#89b4fa" } },
|
|
112
|
+
{ scope: "variable", settings: { foreground: "#f5e0dc" } },
|
|
113
|
+
{ scope: "constant.numeric", settings: { foreground: "#fab387" } },
|
|
114
|
+
{ scope: "entity.name.type", settings: { foreground: "#f9e2af" } },
|
|
115
|
+
{ scope: "keyword.operator", settings: { foreground: "#94e2d5" } },
|
|
116
|
+
],
|
|
117
|
+
});
|
|
118
|
+
//# sourceMappingURL=VSCodeThemeConverter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VSCodeThemeConverter.js","sourceRoot":"","sources":["../../src/themes/VSCodeThemeConverter.ts"],"names":[],"mappings":"AAkBA;;GAEG;AACH,MAAM,OAAO,oBAAoB;IACxB,MAAM,CAAC,OAAO,CAAC,SAA0B,EAAE,SAAkB;QAClE,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,IAAI,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,SAAS,CAAC,WAAW,IAAI,EAAE,CAAC;QAE1C,MAAM,UAAU,GACd,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACtF,MAAM,UAAU,GACd,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACtF,MAAM,aAAa,GAAG,MAAM,CAAC,gCAAgC,CAAC,CAAC;QAC/D,MAAM,UAAU,GAAG,MAAM,CAAC,6BAA6B,CAAC,CAAC;QACzD,MAAM,gBAAgB,GAAG,MAAM,CAAC,mCAAmC,CAAC,CAAC;QACrE,MAAM,KAAK,GAAG,MAAM,CAAC,yBAAyB,CAAC,IAAI,UAAU,CAAC;QAC9D,MAAM,SAAS,GAAG,MAAM,CAAC,4BAA4B,CAAC,CAAC;QACvD,MAAM,gBAAgB,GAAG,MAAM,CAAC,yBAAyB,CAAC,IAAI,UAAU,CAAC;QAEzE,MAAM,MAAM,GAA2B,EAAE,CAAC;QAE1C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU;gBAAE,SAAS;YACzC,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;YACpC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;gBACtC,CAAC,CAAC,IAAI,CAAC,KAAK;gBACZ,CAAC,CAAC,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ;oBAC9B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;oBAC1B,CAAC,CAAC,EAAE,CAAC;YAET,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;gBAC9C,IAAI,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;oBACnC,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC;gBACtB,CAAC;qBAAM,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACzC,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC;gBACrB,CAAC;qBAAM,IAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;oBACjF,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC;gBACvB,CAAC;qBAAM,IAAI,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;oBACjF,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC;gBACtB,CAAC;qBAAM,IAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC5E,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC;gBACvB,CAAC;qBAAM,IAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;oBAC/E,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC;gBACvB,CAAC;qBAAM,IAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC5E,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC;gBACrB,CAAC;qBAAM,IACL,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC;oBAC3B,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC;oBAC5B,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,EAChC,CAAC;oBACD,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;gBACnB,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO;YACL,IAAI,EAAE,SAAS,IAAI,SAAS,CAAC,IAAI,IAAI,yBAAyB;YAC9D,UAAU;YACV,UAAU;YACV,aAAa;YACb,UAAU;YACV,gBAAgB;YAChB,KAAK;YACL,SAAS;YACT,gBAAgB;YAChB,MAAM;YACN,MAAM,EAAE,MAAM;SACf,CAAC;IACJ,CAAC;CACF;AAED,2DAA2D;AAC3D,MAAM,CAAC,MAAM,eAAe,GAAgB,oBAAoB,CAAC,OAAO,CAAC;IACvE,IAAI,EAAE,aAAa;IACnB,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE;QACN,mBAAmB,EAAE,SAAS;QAC9B,mBAAmB,EAAE,SAAS;QAC9B,gCAAgC,EAAE,SAAS;QAC3C,6BAA6B,EAAE,SAAS;QACxC,mCAAmC,EAAE,SAAS;QAC9C,yBAAyB,EAAE,SAAS;QACpC,4BAA4B,EAAE,SAAS;KACxC;IACD,WAAW,EAAE;QACX,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE;QACzD,EAAE,KAAK,EAAE,uBAAuB,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE;QACvE,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE;QACxD,EAAE,KAAK,EAAE,sBAAsB,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE;QACtE,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE;QAC1D,EAAE,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE;QAClE,EAAE,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE;QAClE,EAAE,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE;KACnE;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAgB,oBAAoB,CAAC,OAAO,CAAC;IAC5E,IAAI,EAAE,kBAAkB;IACxB,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE;QACN,mBAAmB,EAAE,SAAS;QAC9B,mBAAmB,EAAE,SAAS;QAC9B,gCAAgC,EAAE,SAAS;QAC3C,6BAA6B,EAAE,SAAS;QACxC,mCAAmC,EAAE,SAAS;QAC9C,yBAAyB,EAAE,SAAS;QACpC,4BAA4B,EAAE,SAAS;KACxC;IACD,WAAW,EAAE;QACX,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE;QACzD,EAAE,KAAK,EAAE,uBAAuB,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE;QACvE,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE;QACxD,EAAE,KAAK,EAAE,sBAAsB,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE;QACtE,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE;QAC1D,EAAE,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE;QAClE,EAAE,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE;QAClE,EAAE,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE;KACnE;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { EditorTheme } from "@termaxjs/editor-core";
|
|
2
|
+
export type { EditorTheme };
|
|
3
|
+
export declare const githubDark: EditorTheme;
|
|
4
|
+
export declare const githubLight: EditorTheme;
|
|
5
|
+
export declare const oneDark: EditorTheme;
|
|
6
|
+
export declare const dracula: EditorTheme;
|
|
7
|
+
export declare const tokyoNight: EditorTheme;
|
|
8
|
+
export declare const THEMES: Record<string, EditorTheme>;
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/themes/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,YAAY,EAAE,WAAW,EAAE,CAAC;AAE5B,eAAO,MAAM,UAAU,EAAE,WAuBxB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,WAuBzB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,WAuBrB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,WAuBrB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,WAuBxB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAM9C,CAAC"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
export const githubDark = {
|
|
2
|
+
name: "GitHub Dark",
|
|
3
|
+
background: "#0d1117",
|
|
4
|
+
foreground: "#c9d1d9",
|
|
5
|
+
lineHighlight: "rgba(56, 139, 253, 0.08)",
|
|
6
|
+
lineNumber: "#6e7681",
|
|
7
|
+
lineNumberActive: "#e6edf3",
|
|
8
|
+
caret: "#58a6ff",
|
|
9
|
+
selection: "rgba(56, 139, 253, 0.25)",
|
|
10
|
+
border: "#30363d",
|
|
11
|
+
tokens: {
|
|
12
|
+
keyword: "#ff7b72",
|
|
13
|
+
type: "#79c0ff",
|
|
14
|
+
string: "#a5d6ff",
|
|
15
|
+
number: "#79c0ff",
|
|
16
|
+
comment: "#8b949e",
|
|
17
|
+
function: "#d2a8ff",
|
|
18
|
+
operator: "#ff7b72",
|
|
19
|
+
punctuation: "#c9d1d9",
|
|
20
|
+
tag: "#7ee787",
|
|
21
|
+
attribute: "#79c0ff",
|
|
22
|
+
plain: "#c9d1d9",
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
export const githubLight = {
|
|
26
|
+
name: "GitHub Light",
|
|
27
|
+
background: "#ffffff",
|
|
28
|
+
foreground: "#24292f",
|
|
29
|
+
lineHighlight: "rgba(234, 238, 242, 0.8)",
|
|
30
|
+
lineNumber: "#8c959f",
|
|
31
|
+
lineNumberActive: "#24292f",
|
|
32
|
+
caret: "#0969da",
|
|
33
|
+
selection: "rgba(84, 174, 255, 0.3)",
|
|
34
|
+
border: "#d0d7de",
|
|
35
|
+
tokens: {
|
|
36
|
+
keyword: "#cf222e",
|
|
37
|
+
type: "#0550ae",
|
|
38
|
+
string: "#0a3069",
|
|
39
|
+
number: "#0550ae",
|
|
40
|
+
comment: "#6e7781",
|
|
41
|
+
function: "#8250df",
|
|
42
|
+
operator: "#cf222e",
|
|
43
|
+
punctuation: "#24292f",
|
|
44
|
+
tag: "#116329",
|
|
45
|
+
attribute: "#0550ae",
|
|
46
|
+
plain: "#24292f",
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
export const oneDark = {
|
|
50
|
+
name: "One Dark",
|
|
51
|
+
background: "#282c34",
|
|
52
|
+
foreground: "#abb2bf",
|
|
53
|
+
lineHighlight: "#2c313a",
|
|
54
|
+
lineNumber: "#4b5263",
|
|
55
|
+
lineNumberActive: "#abb2bf",
|
|
56
|
+
caret: "#528bff",
|
|
57
|
+
selection: "#3e4451",
|
|
58
|
+
border: "#181a1f",
|
|
59
|
+
tokens: {
|
|
60
|
+
keyword: "#c678dd",
|
|
61
|
+
type: "#e5c07b",
|
|
62
|
+
string: "#98c379",
|
|
63
|
+
number: "#d19a66",
|
|
64
|
+
comment: "#5c6370",
|
|
65
|
+
function: "#61afef",
|
|
66
|
+
operator: "#56b6c2",
|
|
67
|
+
punctuation: "#abb2bf",
|
|
68
|
+
tag: "#e06c75",
|
|
69
|
+
attribute: "#d19a66",
|
|
70
|
+
plain: "#abb2bf",
|
|
71
|
+
},
|
|
72
|
+
};
|
|
73
|
+
export const dracula = {
|
|
74
|
+
name: "Dracula",
|
|
75
|
+
background: "#282a36",
|
|
76
|
+
foreground: "#f8f8f2",
|
|
77
|
+
lineHighlight: "#44475a",
|
|
78
|
+
lineNumber: "#6272a4",
|
|
79
|
+
lineNumberActive: "#f8f8f2",
|
|
80
|
+
caret: "#ff79c6",
|
|
81
|
+
selection: "rgba(68, 71, 90, 0.8)",
|
|
82
|
+
border: "#191a21",
|
|
83
|
+
tokens: {
|
|
84
|
+
keyword: "#ff79c6",
|
|
85
|
+
type: "#8be9fd",
|
|
86
|
+
string: "#f1fa8c",
|
|
87
|
+
number: "#bd93f9",
|
|
88
|
+
comment: "#6272a4",
|
|
89
|
+
function: "#50fa7b",
|
|
90
|
+
operator: "#ff79c6",
|
|
91
|
+
punctuation: "#f8f8f2",
|
|
92
|
+
tag: "#ff79c6",
|
|
93
|
+
attribute: "#50fa7b",
|
|
94
|
+
plain: "#f8f8f2",
|
|
95
|
+
},
|
|
96
|
+
};
|
|
97
|
+
export const tokyoNight = {
|
|
98
|
+
name: "Tokyo Night",
|
|
99
|
+
background: "#1a1b26",
|
|
100
|
+
foreground: "#a9b1d6",
|
|
101
|
+
lineHighlight: "#24283b",
|
|
102
|
+
lineNumber: "#565f89",
|
|
103
|
+
lineNumberActive: "#c0caf5",
|
|
104
|
+
caret: "#7aa2f7",
|
|
105
|
+
selection: "#33467c",
|
|
106
|
+
border: "#15161e",
|
|
107
|
+
tokens: {
|
|
108
|
+
keyword: "#bb9af7",
|
|
109
|
+
type: "#2ac3de",
|
|
110
|
+
string: "#9ece6a",
|
|
111
|
+
number: "#ff9e64",
|
|
112
|
+
comment: "#565f89",
|
|
113
|
+
function: "#7aa2f7",
|
|
114
|
+
operator: "#89ddff",
|
|
115
|
+
punctuation: "#a9b1d6",
|
|
116
|
+
tag: "#f7768e",
|
|
117
|
+
attribute: "#7dcfff",
|
|
118
|
+
plain: "#a9b1d6",
|
|
119
|
+
},
|
|
120
|
+
};
|
|
121
|
+
export const THEMES = {
|
|
122
|
+
githubDark,
|
|
123
|
+
githubLight,
|
|
124
|
+
oneDark,
|
|
125
|
+
dracula,
|
|
126
|
+
tokyoNight,
|
|
127
|
+
};
|
|
128
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/themes/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { type Position, type Selection, type Range } from "@termaxjs/editor-core";
|
|
2
|
+
export type VimMode = "NORMAL" | "INSERT" | "VISUAL" | "VISUAL_LINE" | "VISUAL_BLOCK" | "COMMAND";
|
|
3
|
+
export interface VimContext {
|
|
4
|
+
lines: string[];
|
|
5
|
+
cursor: Position;
|
|
6
|
+
selection: Range | null;
|
|
7
|
+
selections: Selection[];
|
|
8
|
+
insertText: (text: string) => void;
|
|
9
|
+
deleteSelectionOrChar: (isForward?: boolean) => void;
|
|
10
|
+
enter: () => void;
|
|
11
|
+
setCursor: (pos: Position, preserveSelection?: boolean) => void;
|
|
12
|
+
setSelection: (range: Range | null) => void;
|
|
13
|
+
setSelections: (selections: Selection[]) => void;
|
|
14
|
+
setContent: (content: string) => void;
|
|
15
|
+
undo: () => void;
|
|
16
|
+
redo: () => void;
|
|
17
|
+
onSave?: () => void;
|
|
18
|
+
}
|
|
19
|
+
export declare class VimEngine {
|
|
20
|
+
mode: VimMode;
|
|
21
|
+
commandBuffer: string;
|
|
22
|
+
registers: Map<string, string>;
|
|
23
|
+
exInput: string;
|
|
24
|
+
handleKey(key: string, ctx: VimContext, e?: {
|
|
25
|
+
ctrlKey?: boolean;
|
|
26
|
+
metaKey?: boolean;
|
|
27
|
+
preventDefault?: () => void;
|
|
28
|
+
}): boolean;
|
|
29
|
+
private handleNormalVisualKey;
|
|
30
|
+
executeExCommand(cmd: string, ctx: VimContext): void;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=VimState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VimState.d.ts","sourceRoot":"","sources":["../../src/vim/VimState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,SAAS,EAAE,KAAK,KAAK,EAAoB,MAAM,uBAAuB,CAAC;AAEpG,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,aAAa,GAAG,cAAc,GAAG,SAAS,CAAC;AAElG,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,EAAE,QAAQ,CAAC;IACjB,SAAS,EAAE,KAAK,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,qBAAqB,EAAE,CAAC,SAAS,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACrD,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,SAAS,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,iBAAiB,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAChE,YAAY,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,CAAC;IAC5C,aAAa,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,KAAK,IAAI,CAAC;IACjD,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,qBAAa,SAAS;IACb,IAAI,EAAE,OAAO,CAAY;IACzB,aAAa,SAAM;IACnB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAa;IAC3C,OAAO,SAAM;IAEb,SAAS,CACd,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,UAAU,EACf,CAAC,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,IAAI,CAAA;KAAE,GACxE,OAAO;IAyDV,OAAO,CAAC,qBAAqB;IA8MtB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,GAAG,IAAI;CAmB5D"}
|