@tooee/themes 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/README.md +5 -0
- package/dist/ThemePicker.d.ts +14 -0
- package/dist/ThemePicker.d.ts.map +1 -0
- package/dist/ThemePicker.js +96 -0
- package/dist/ThemePicker.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/theme.d.ts +111 -0
- package/dist/theme.d.ts.map +1 -0
- package/dist/theme.js +560 -0
- package/dist/theme.js.map +1 -0
- package/package.json +43 -0
- package/src/ThemePicker.tsx +163 -0
- package/src/index.ts +21 -0
- package/src/theme.tsx +727 -0
- package/src/themes/aura.json +69 -0
- package/src/themes/ayu.json +80 -0
- package/src/themes/catppuccin-frappe.json +233 -0
- package/src/themes/catppuccin-macchiato.json +233 -0
- package/src/themes/catppuccin.json +112 -0
- package/src/themes/cobalt2.json +228 -0
- package/src/themes/cursor.json +249 -0
- package/src/themes/dracula.json +219 -0
- package/src/themes/everforest.json +241 -0
- package/src/themes/flexoki.json +237 -0
- package/src/themes/github-light.json +56 -0
- package/src/themes/github.json +233 -0
- package/src/themes/gruvbox.json +95 -0
- package/src/themes/kanagawa.json +77 -0
- package/src/themes/lucent-orng.json +227 -0
- package/src/themes/material.json +235 -0
- package/src/themes/matrix.json +77 -0
- package/src/themes/mercury.json +252 -0
- package/src/themes/monokai.json +221 -0
- package/src/themes/nightowl.json +221 -0
- package/src/themes/nord.json +223 -0
- package/src/themes/one-dark.json +84 -0
- package/src/themes/opencode-light.json +62 -0
- package/src/themes/opencode.json +245 -0
- package/src/themes/orng.json +245 -0
- package/src/themes/osaka-jade.json +93 -0
- package/src/themes/palenight.json +222 -0
- package/src/themes/rosepine.json +234 -0
- package/src/themes/solarized.json +223 -0
- package/src/themes/synthwave84.json +226 -0
- package/src/themes/tokyonight.json +243 -0
- package/src/themes/vercel.json +245 -0
- package/src/themes/vesper.json +218 -0
- package/src/themes/zenburn.json +223 -0
package/README.md
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface ThemePickerEntry {
|
|
2
|
+
id: string;
|
|
3
|
+
title: string;
|
|
4
|
+
}
|
|
5
|
+
interface ThemePickerProps {
|
|
6
|
+
entries: ThemePickerEntry[];
|
|
7
|
+
currentTheme: string;
|
|
8
|
+
onSelect: (name: string) => void;
|
|
9
|
+
onClose: () => void;
|
|
10
|
+
onNavigate: (name: string) => void;
|
|
11
|
+
}
|
|
12
|
+
export declare function ThemePicker({ entries, currentTheme, onSelect, onClose, onNavigate, }: ThemePickerProps): import("react").ReactNode;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=ThemePicker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThemePicker.d.ts","sourceRoot":"","sources":["../src/ThemePicker.tsx"],"names":[],"mappings":"AAIA,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;CACd;AAED,UAAU,gBAAgB;IACxB,OAAO,EAAE,gBAAgB,EAAE,CAAA;IAC3B,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAChC,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CACnC;AAwBD,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,YAAY,EACZ,QAAQ,EACR,OAAO,EACP,UAAU,GACX,EAAE,gBAAgB,6BAqHlB"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "@opentui/react/jsx-runtime";
|
|
2
|
+
import { useState, useMemo, useCallback } from "react";
|
|
3
|
+
import { useKeyboard } from "@opentui/react";
|
|
4
|
+
import { useTheme } from "./theme.js";
|
|
5
|
+
function fuzzyMatch(query, text) {
|
|
6
|
+
const lowerQuery = query.toLowerCase();
|
|
7
|
+
const lowerText = text.toLowerCase();
|
|
8
|
+
let qi = 0;
|
|
9
|
+
let score = 0;
|
|
10
|
+
let lastMatchIndex = -2;
|
|
11
|
+
for (let ti = 0; ti < lowerText.length && qi < lowerQuery.length; ti++) {
|
|
12
|
+
if (lowerText[ti] === lowerQuery[qi]) {
|
|
13
|
+
if (ti === 0)
|
|
14
|
+
score += 3;
|
|
15
|
+
else if (" -./".includes(lowerText[ti - 1]))
|
|
16
|
+
score += 2;
|
|
17
|
+
else if (ti === lastMatchIndex + 1)
|
|
18
|
+
score += 1;
|
|
19
|
+
lastMatchIndex = ti;
|
|
20
|
+
qi++;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return qi === lowerQuery.length ? score : null;
|
|
24
|
+
}
|
|
25
|
+
export function ThemePicker({ entries, currentTheme, onSelect, onClose, onNavigate, }) {
|
|
26
|
+
const { theme } = useTheme();
|
|
27
|
+
const [filter, setFilter] = useState("");
|
|
28
|
+
const [activeIndex, setActiveIndex] = useState(() => {
|
|
29
|
+
const idx = entries.findIndex((e) => e.id === currentTheme);
|
|
30
|
+
return idx >= 0 ? idx : 0;
|
|
31
|
+
});
|
|
32
|
+
const filtered = useMemo(() => {
|
|
33
|
+
if (!filter)
|
|
34
|
+
return entries;
|
|
35
|
+
const results = [];
|
|
36
|
+
for (const entry of entries) {
|
|
37
|
+
const score = fuzzyMatch(filter, entry.title);
|
|
38
|
+
if (score !== null)
|
|
39
|
+
results.push({ entry, score });
|
|
40
|
+
}
|
|
41
|
+
results.sort((a, b) => b.score - a.score);
|
|
42
|
+
return results.map((r) => r.entry);
|
|
43
|
+
}, [entries, filter]);
|
|
44
|
+
const handleSelect = useCallback(() => {
|
|
45
|
+
const item = filtered[activeIndex];
|
|
46
|
+
if (item) {
|
|
47
|
+
onSelect(item.id);
|
|
48
|
+
}
|
|
49
|
+
}, [filtered, activeIndex, onSelect]);
|
|
50
|
+
const navigateTo = useCallback((index) => {
|
|
51
|
+
setActiveIndex(index);
|
|
52
|
+
const item = filtered[index];
|
|
53
|
+
if (item) {
|
|
54
|
+
onNavigate(item.id);
|
|
55
|
+
}
|
|
56
|
+
}, [filtered, onNavigate]);
|
|
57
|
+
useKeyboard((key) => {
|
|
58
|
+
if (key.name === "escape") {
|
|
59
|
+
key.preventDefault();
|
|
60
|
+
onClose();
|
|
61
|
+
}
|
|
62
|
+
else if (key.name === "return") {
|
|
63
|
+
key.preventDefault();
|
|
64
|
+
handleSelect();
|
|
65
|
+
}
|
|
66
|
+
else if (key.name === "up") {
|
|
67
|
+
key.preventDefault();
|
|
68
|
+
navigateTo(Math.max(0, activeIndex - 1));
|
|
69
|
+
}
|
|
70
|
+
else if (key.name === "down") {
|
|
71
|
+
key.preventDefault();
|
|
72
|
+
navigateTo(Math.min(filtered.length - 1, activeIndex + 1));
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
return (_jsxs("box", { position: "absolute", left: "20%", right: "20%", top: 2, maxHeight: "60%", flexDirection: "column", backgroundColor: theme.backgroundPanel, border: true, borderColor: theme.border, children: [_jsxs("box", { flexDirection: "row", paddingLeft: 1, paddingRight: 1, height: 1, children: [_jsx("text", { content: "\uD83C\uDFA8 ", fg: theme.accent }), _jsx("input", { focused: true, placeholder: "Filter themes...", onInput: (value) => {
|
|
76
|
+
setFilter(value);
|
|
77
|
+
setActiveIndex(0);
|
|
78
|
+
// Preview first match
|
|
79
|
+
if (!value) {
|
|
80
|
+
if (entries.length > 0)
|
|
81
|
+
onNavigate(entries[0].id);
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
const results = [];
|
|
85
|
+
for (const entry of entries) {
|
|
86
|
+
const score = fuzzyMatch(value, entry.title);
|
|
87
|
+
if (score !== null)
|
|
88
|
+
results.push({ entry, score });
|
|
89
|
+
}
|
|
90
|
+
results.sort((a, b) => b.score - a.score);
|
|
91
|
+
if (results.length > 0)
|
|
92
|
+
onNavigate(results[0].entry.id);
|
|
93
|
+
}
|
|
94
|
+
}, backgroundColor: "transparent", focusedBackgroundColor: "transparent", textColor: theme.text, placeholderColor: theme.textMuted, cursorColor: theme.accent, style: { flexGrow: 1 } }), _jsx("text", { content: ` ${filtered.length}`, fg: theme.textMuted })] }), _jsx("box", { height: 1, width: "100%", backgroundColor: theme.border }), _jsx("scrollbox", { focused: false, style: { flexGrow: 1 }, children: filtered.map((entry, i) => (_jsx("box", { flexDirection: "row", paddingLeft: 1, paddingRight: 1, height: 1, backgroundColor: i === activeIndex ? theme.backgroundElement : undefined, children: _jsx("text", { content: entry.title, fg: theme.text, style: { flexGrow: 1 } }) }, entry.id))) })] }));
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=ThemePicker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThemePicker.js","sourceRoot":"","sources":["../src/ThemePicker.tsx"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { ThemeProvider, ThemeSwitcherProvider, useTheme, useThemeSwitcher, defaultTheme, resolveTheme, buildSyntaxStyle, loadThemes, getThemeNames, } from "./theme.js";
|
|
2
|
+
export type { Theme, ThemeJSON, ResolvedTheme, ThemeProviderProps, ThemeSwitcherProviderProps, } from "./theme.js";
|
|
3
|
+
export { ThemePicker } from "./ThemePicker.jsx";
|
|
4
|
+
export type { ThemePickerEntry } from "./ThemePicker.jsx";
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,QAAQ,EACR,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,UAAU,EACV,aAAa,GACd,MAAM,YAAY,CAAA;AACnB,YAAY,EACV,KAAK,EACL,SAAS,EACT,aAAa,EACb,kBAAkB,EAClB,0BAA0B,GAC3B,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,QAAQ,EACR,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,UAAU,EACV,aAAa,GACd,MAAM,YAAY,CAAA;AASnB,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA"}
|
package/dist/theme.d.ts
ADDED
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
import { SyntaxStyle } from "@opentui/core";
|
|
3
|
+
type HexColor = `#${string}`;
|
|
4
|
+
type RefName = string;
|
|
5
|
+
type Variant = {
|
|
6
|
+
dark: HexColor | RefName;
|
|
7
|
+
light: HexColor | RefName;
|
|
8
|
+
};
|
|
9
|
+
type ColorValue = HexColor | RefName | Variant;
|
|
10
|
+
export interface ThemeJSON {
|
|
11
|
+
$schema?: string;
|
|
12
|
+
defs?: Record<string, HexColor | RefName>;
|
|
13
|
+
theme: Record<string, ColorValue>;
|
|
14
|
+
}
|
|
15
|
+
export interface ResolvedTheme {
|
|
16
|
+
primary: string;
|
|
17
|
+
secondary: string;
|
|
18
|
+
accent: string;
|
|
19
|
+
error: string;
|
|
20
|
+
warning: string;
|
|
21
|
+
success: string;
|
|
22
|
+
info: string;
|
|
23
|
+
text: string;
|
|
24
|
+
textMuted: string;
|
|
25
|
+
background: string;
|
|
26
|
+
backgroundPanel: string;
|
|
27
|
+
backgroundElement: string;
|
|
28
|
+
border: string;
|
|
29
|
+
borderActive: string;
|
|
30
|
+
borderSubtle: string;
|
|
31
|
+
diffAdded: string;
|
|
32
|
+
diffRemoved: string;
|
|
33
|
+
diffContext: string;
|
|
34
|
+
diffHunkHeader: string;
|
|
35
|
+
diffHighlightAdded: string;
|
|
36
|
+
diffHighlightRemoved: string;
|
|
37
|
+
diffAddedBg: string;
|
|
38
|
+
diffRemovedBg: string;
|
|
39
|
+
diffContextBg: string;
|
|
40
|
+
diffLineNumber: string;
|
|
41
|
+
diffAddedLineNumberBg: string;
|
|
42
|
+
diffRemovedLineNumberBg: string;
|
|
43
|
+
markdownText: string;
|
|
44
|
+
markdownHeading: string;
|
|
45
|
+
markdownLink: string;
|
|
46
|
+
markdownLinkText: string;
|
|
47
|
+
markdownCode: string;
|
|
48
|
+
markdownBlockQuote: string;
|
|
49
|
+
markdownEmph: string;
|
|
50
|
+
markdownStrong: string;
|
|
51
|
+
markdownHorizontalRule: string;
|
|
52
|
+
markdownListItem: string;
|
|
53
|
+
markdownListEnumeration: string;
|
|
54
|
+
markdownImage: string;
|
|
55
|
+
markdownImageText: string;
|
|
56
|
+
markdownCodeBlock: string;
|
|
57
|
+
cursorLine: string;
|
|
58
|
+
selection: string;
|
|
59
|
+
syntaxComment: string;
|
|
60
|
+
syntaxKeyword: string;
|
|
61
|
+
syntaxFunction: string;
|
|
62
|
+
syntaxVariable: string;
|
|
63
|
+
syntaxString: string;
|
|
64
|
+
syntaxNumber: string;
|
|
65
|
+
syntaxType: string;
|
|
66
|
+
syntaxOperator: string;
|
|
67
|
+
syntaxPunctuation: string;
|
|
68
|
+
}
|
|
69
|
+
export declare function resolveTheme(json: ThemeJSON, mode: "dark" | "light"): ResolvedTheme;
|
|
70
|
+
export declare function buildSyntaxStyle(resolved: ResolvedTheme): SyntaxStyle;
|
|
71
|
+
export declare function loadThemes(): Map<string, ThemeJSON>;
|
|
72
|
+
export declare function getThemeNames(): string[];
|
|
73
|
+
export interface Theme {
|
|
74
|
+
name: string;
|
|
75
|
+
mode: "dark" | "light";
|
|
76
|
+
colors: ResolvedTheme;
|
|
77
|
+
syntax: SyntaxStyle;
|
|
78
|
+
}
|
|
79
|
+
export declare const defaultTheme: Theme;
|
|
80
|
+
interface ThemeContextValue {
|
|
81
|
+
theme: ResolvedTheme;
|
|
82
|
+
syntax: SyntaxStyle;
|
|
83
|
+
name: string;
|
|
84
|
+
mode: "dark" | "light";
|
|
85
|
+
}
|
|
86
|
+
export interface ThemeProviderProps {
|
|
87
|
+
/** Theme name (e.g. "tokyonight", "catppuccin", "dracula") */
|
|
88
|
+
name?: string;
|
|
89
|
+
/** Color mode */
|
|
90
|
+
mode?: "dark" | "light";
|
|
91
|
+
/** Full Theme object (overrides name/mode if provided) */
|
|
92
|
+
theme?: Theme;
|
|
93
|
+
children: ReactNode;
|
|
94
|
+
}
|
|
95
|
+
export declare function ThemeProvider({ name, mode, theme: themeProp, children }: ThemeProviderProps): ReactNode;
|
|
96
|
+
export declare function useTheme(): ThemeContextValue;
|
|
97
|
+
interface ThemeSwitcherContextValue extends ThemeContextValue {
|
|
98
|
+
nextTheme: () => void;
|
|
99
|
+
prevTheme: () => void;
|
|
100
|
+
setTheme: (name: string) => void;
|
|
101
|
+
allThemes: string[];
|
|
102
|
+
}
|
|
103
|
+
export interface ThemeSwitcherProviderProps {
|
|
104
|
+
initialTheme?: string;
|
|
105
|
+
initialMode?: "dark" | "light";
|
|
106
|
+
children: ReactNode;
|
|
107
|
+
}
|
|
108
|
+
export declare function ThemeSwitcherProvider({ initialTheme, initialMode, children, }: ThemeSwitcherProviderProps): ReactNode;
|
|
109
|
+
export declare function useThemeSwitcher(): ThemeSwitcherContextValue;
|
|
110
|
+
export {};
|
|
111
|
+
//# sourceMappingURL=theme.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../src/theme.tsx"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAA;AACd,OAAO,EAAQ,WAAW,EAAE,MAAM,eAAe,CAAA;AASjD,KAAK,QAAQ,GAAG,IAAI,MAAM,EAAE,CAAA;AAC5B,KAAK,OAAO,GAAG,MAAM,CAAA;AACrB,KAAK,OAAO,GAAG;IAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC;IAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAA;CAAE,CAAA;AACtE,KAAK,UAAU,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAA;AAE9C,MAAM,WAAW,SAAS;IACxB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,CAAA;IACzC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;CAClC;AAMD,MAAM,WAAW,aAAa;IAE5B,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,eAAe,EAAE,MAAM,CAAA;IACvB,iBAAiB,EAAE,MAAM,CAAA;IACzB,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IAEpB,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,EAAE,MAAM,CAAA;IACtB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,oBAAoB,EAAE,MAAM,CAAA;IAC5B,WAAW,EAAE,MAAM,CAAA;IACnB,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,MAAM,CAAA;IACrB,cAAc,EAAE,MAAM,CAAA;IACtB,qBAAqB,EAAE,MAAM,CAAA;IAC7B,uBAAuB,EAAE,MAAM,CAAA;IAE/B,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,gBAAgB,EAAE,MAAM,CAAA;IACxB,YAAY,EAAE,MAAM,CAAA;IACpB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,EAAE,MAAM,CAAA;IACtB,sBAAsB,EAAE,MAAM,CAAA;IAC9B,gBAAgB,EAAE,MAAM,CAAA;IACxB,uBAAuB,EAAE,MAAM,CAAA;IAC/B,aAAa,EAAE,MAAM,CAAA;IACrB,iBAAiB,EAAE,MAAM,CAAA;IACzB,iBAAiB,EAAE,MAAM,CAAA;IAEzB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IAEjB,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,MAAM,CAAA;IACrB,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,cAAc,EAAE,MAAM,CAAA;IACtB,iBAAiB,EAAE,MAAM,CAAA;CAC1B;AAsHD,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,aAAa,CAuBnF;AA8MD,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,aAAa,GAAG,WAAW,CAErE;AAqDD,wBAAgB,UAAU,IAAI,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAEnD;AAED,wBAAgB,aAAa,IAAI,MAAM,EAAE,CAExC;AAED,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;IACtB,MAAM,EAAE,aAAa,CAAA;IACrB,MAAM,EAAE,WAAW,CAAA;CACpB;AAoFD,eAAO,MAAM,YAAY,EAAE,KAA6B,CAAA;AAMxD,UAAU,iBAAiB;IACzB,KAAK,EAAE,aAAa,CAAA;IACpB,MAAM,EAAE,WAAW,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AASD,MAAM,WAAW,kBAAkB;IACjC,8DAA8D;IAC9D,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,iBAAiB;IACjB,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IACvB,0DAA0D;IAC1D,KAAK,CAAC,EAAE,KAAK,CAAA;IACb,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED,wBAAgB,aAAa,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,kBAAkB,aAc3F;AAED,wBAAgB,QAAQ,IAAI,iBAAiB,CAE5C;AAMD,UAAU,yBAA0B,SAAQ,iBAAiB;IAC3D,SAAS,EAAE,MAAM,IAAI,CAAA;IACrB,SAAS,EAAE,MAAM,IAAI,CAAA;IACrB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAChC,SAAS,EAAE,MAAM,EAAE,CAAA;CACpB;AAID,MAAM,WAAW,0BAA0B;IACzC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IAC9B,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED,wBAAgB,qBAAqB,CAAC,EACpC,YAAY,EACZ,WAAW,EACX,QAAQ,GACT,EAAE,0BAA0B,aAyD5B;AAED,wBAAgB,gBAAgB,IAAI,yBAAyB,CAI5D"}
|