@tamagui/theme-builder 2.0.0-rc.4 → 2.0.0-rc.40
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/dist/cjs/ThemeBuilder.cjs +131 -68
- package/dist/cjs/ThemeBuilder.native.js +208 -132
- package/dist/cjs/ThemeBuilder.native.js.map +1 -1
- package/dist/cjs/createStudioThemes.cjs +19 -17
- package/dist/cjs/createStudioThemes.native.js +19 -17
- package/dist/cjs/createStudioThemes.native.js.map +1 -1
- package/dist/cjs/createThemes.cjs +173 -123
- package/dist/cjs/createThemes.native.js +287 -248
- package/dist/cjs/createThemes.native.js.map +1 -1
- package/dist/cjs/defaultComponentThemes.cjs +12 -10
- package/dist/cjs/defaultComponentThemes.native.js +12 -10
- package/dist/cjs/defaultComponentThemes.native.js.map +1 -1
- package/dist/cjs/defaultTemplates.cjs +137 -132
- package/dist/cjs/defaultTemplates.native.js +144 -142
- package/dist/cjs/defaultTemplates.native.js.map +1 -1
- package/dist/cjs/defaultTemplatesStronger.cjs +135 -130
- package/dist/cjs/defaultTemplatesStronger.native.js +142 -140
- package/dist/cjs/defaultTemplatesStronger.native.js.map +1 -1
- package/dist/cjs/defaultTemplatesStrongest.cjs +135 -130
- package/dist/cjs/defaultTemplatesStrongest.native.js +142 -140
- package/dist/cjs/defaultTemplatesStrongest.native.js.map +1 -1
- package/dist/cjs/getThemeSuitePalettes.cjs +61 -50
- package/dist/cjs/getThemeSuitePalettes.native.js +79 -55
- package/dist/cjs/getThemeSuitePalettes.native.js.map +1 -1
- package/dist/cjs/helpers.cjs +12 -10
- package/dist/cjs/helpers.native.js +12 -10
- package/dist/cjs/helpers.native.js.map +1 -1
- package/dist/cjs/index.cjs +19 -17
- package/dist/cjs/index.native.js +19 -17
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/masks.cjs +29 -26
- package/dist/cjs/masks.native.js +98 -96
- package/dist/cjs/masks.native.js.map +1 -1
- package/dist/cjs/types.cjs +7 -5
- package/dist/cjs/types.native.js +7 -5
- package/dist/cjs/types.native.js.map +1 -1
- package/dist/esm/ThemeBuilder.mjs +119 -58
- package/dist/esm/ThemeBuilder.mjs.map +1 -1
- package/dist/esm/ThemeBuilder.native.js +196 -122
- package/dist/esm/ThemeBuilder.native.js.map +1 -1
- package/dist/esm/createStudioThemes.mjs +2 -2
- package/dist/esm/createStudioThemes.mjs.map +1 -1
- package/dist/esm/createStudioThemes.native.js +2 -2
- package/dist/esm/createStudioThemes.native.js.map +1 -1
- package/dist/esm/createThemes.mjs +156 -108
- package/dist/esm/createThemes.mjs.map +1 -1
- package/dist/esm/createThemes.native.js +270 -233
- package/dist/esm/createThemes.native.js.map +1 -1
- package/dist/esm/defaultTemplates.mjs +125 -122
- package/dist/esm/defaultTemplates.mjs.map +1 -1
- package/dist/esm/defaultTemplates.native.js +130 -130
- package/dist/esm/defaultTemplates.native.js.map +1 -1
- package/dist/esm/defaultTemplatesStronger.mjs +123 -120
- package/dist/esm/defaultTemplatesStronger.mjs.map +1 -1
- package/dist/esm/defaultTemplatesStronger.native.js +128 -128
- package/dist/esm/defaultTemplatesStronger.native.js.map +1 -1
- package/dist/esm/defaultTemplatesStrongest.mjs +123 -120
- package/dist/esm/defaultTemplatesStrongest.mjs.map +1 -1
- package/dist/esm/defaultTemplatesStrongest.native.js +128 -128
- package/dist/esm/defaultTemplatesStrongest.native.js.map +1 -1
- package/dist/esm/getThemeSuitePalettes.mjs +49 -40
- package/dist/esm/getThemeSuitePalettes.mjs.map +1 -1
- package/dist/esm/getThemeSuitePalettes.native.js +66 -44
- package/dist/esm/getThemeSuitePalettes.native.js.map +1 -1
- package/dist/esm/index.js +8 -24
- package/dist/esm/index.js.map +1 -6
- package/dist/esm/masks.mjs +17 -16
- package/dist/esm/masks.mjs.map +1 -1
- package/dist/esm/masks.native.js +18 -18
- package/dist/esm/masks.native.js.map +1 -1
- package/package.json +8 -10
- package/src/ThemeBuilder.ts +6 -0
- package/types/ThemeBuilder.d.ts.map +1 -1
- package/dist/cjs/ThemeBuilder.js +0 -184
- package/dist/cjs/ThemeBuilder.js.map +0 -6
- package/dist/cjs/createStudioThemes.js +0 -30
- package/dist/cjs/createStudioThemes.js.map +0 -6
- package/dist/cjs/createThemes.js +0 -356
- package/dist/cjs/createThemes.js.map +0 -6
- package/dist/cjs/defaultComponentThemes.js +0 -41
- package/dist/cjs/defaultComponentThemes.js.map +0 -6
- package/dist/cjs/defaultTemplates.js +0 -138
- package/dist/cjs/defaultTemplates.js.map +0 -6
- package/dist/cjs/defaultTemplatesStronger.js +0 -137
- package/dist/cjs/defaultTemplatesStronger.js.map +0 -6
- package/dist/cjs/defaultTemplatesStrongest.js +0 -137
- package/dist/cjs/defaultTemplatesStrongest.js.map +0 -6
- package/dist/cjs/getThemeSuitePalettes.js +0 -69
- package/dist/cjs/getThemeSuitePalettes.js.map +0 -6
- package/dist/cjs/helpers.js +0 -29
- package/dist/cjs/helpers.js.map +0 -6
- package/dist/cjs/index.js +0 -32
- package/dist/cjs/index.js.map +0 -6
- package/dist/cjs/masks.js +0 -86
- package/dist/cjs/masks.js.map +0 -6
- package/dist/cjs/types.js +0 -14
- package/dist/cjs/types.js.map +0 -6
- package/dist/esm/ThemeBuilder.js +0 -174
- package/dist/esm/ThemeBuilder.js.map +0 -6
- package/dist/esm/createStudioThemes.js +0 -18
- package/dist/esm/createStudioThemes.js.map +0 -6
- package/dist/esm/createThemes.js +0 -344
- package/dist/esm/createThemes.js.map +0 -6
- package/dist/esm/defaultComponentThemes.js +0 -25
- package/dist/esm/defaultComponentThemes.js.map +0 -6
- package/dist/esm/defaultTemplates.js +0 -122
- package/dist/esm/defaultTemplates.js.map +0 -6
- package/dist/esm/defaultTemplatesStronger.js +0 -121
- package/dist/esm/defaultTemplatesStronger.js.map +0 -6
- package/dist/esm/defaultTemplatesStrongest.js +0 -121
- package/dist/esm/defaultTemplatesStrongest.js.map +0 -6
- package/dist/esm/getThemeSuitePalettes.js +0 -53
- package/dist/esm/getThemeSuitePalettes.js.map +0 -6
- package/dist/esm/helpers.js +0 -13
- package/dist/esm/helpers.js.map +0 -6
- package/dist/esm/masks.js +0 -78
- package/dist/esm/masks.js.map +0 -6
- package/dist/esm/types.js +0 -1
- package/dist/esm/types.js.map +0 -6
|
@@ -5,113 +5,167 @@ class ThemeBuilder {
|
|
|
5
5
|
}
|
|
6
6
|
_getThemeFn;
|
|
7
7
|
addPalettes(palettes) {
|
|
8
|
-
|
|
8
|
+
this.state.palettes = {
|
|
9
9
|
// as {} prevents generic string key merge messing up types
|
|
10
10
|
...this.state.palettes,
|
|
11
11
|
...palettes
|
|
12
|
-
}
|
|
12
|
+
};
|
|
13
|
+
return this;
|
|
13
14
|
}
|
|
14
15
|
addTemplates(templates) {
|
|
15
|
-
|
|
16
|
+
this.state.templates = {
|
|
16
17
|
// as {} prevents generic string key merge messing up types
|
|
17
18
|
...this.state.templates,
|
|
18
19
|
...templates
|
|
19
|
-
}
|
|
20
|
+
};
|
|
21
|
+
return this;
|
|
20
22
|
}
|
|
21
23
|
addMasks(masks) {
|
|
22
|
-
|
|
24
|
+
this.state.masks = {
|
|
23
25
|
// as {} prevents generic string key merge messing up types
|
|
24
26
|
...this.state.masks,
|
|
25
27
|
...objectFromEntries(objectEntries(masks).map(([key, val]) => [key, createMask(val)]))
|
|
26
|
-
}
|
|
28
|
+
};
|
|
29
|
+
return this;
|
|
27
30
|
}
|
|
28
31
|
// for dev mode only really
|
|
29
32
|
_addedThemes = [];
|
|
30
33
|
addThemes(themes) {
|
|
31
|
-
|
|
34
|
+
this._addedThemes.push({
|
|
32
35
|
type: "themes",
|
|
33
36
|
args: [themes]
|
|
34
|
-
})
|
|
37
|
+
});
|
|
38
|
+
this.state.themes = {
|
|
35
39
|
// as {} prevents generic string key merge messing up types
|
|
36
40
|
...this.state.themes,
|
|
37
41
|
...themes
|
|
38
|
-
}
|
|
42
|
+
};
|
|
43
|
+
return this;
|
|
39
44
|
}
|
|
40
45
|
// these wont be typed to save some complexity and because they don't need to be typed!
|
|
41
46
|
addComponentThemes(childThemeDefinition, options) {
|
|
42
|
-
|
|
47
|
+
void this.addChildThemes(childThemeDefinition, options);
|
|
48
|
+
return this;
|
|
43
49
|
}
|
|
44
50
|
addChildThemes(childThemeDefinition, options) {
|
|
45
51
|
const currentThemes = this.state.themes;
|
|
46
|
-
if (!currentThemes)
|
|
52
|
+
if (!currentThemes) {
|
|
53
|
+
throw new Error(`No themes defined yet, use addThemes first to set your base themes`);
|
|
54
|
+
}
|
|
47
55
|
this._addedThemes.push({
|
|
48
56
|
type: "childThemes",
|
|
49
57
|
args: [childThemeDefinition, options]
|
|
50
58
|
});
|
|
51
|
-
const currentThemeNames = Object.keys(currentThemes)
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
59
|
+
const currentThemeNames = Object.keys(currentThemes);
|
|
60
|
+
const incomingThemeNames = Object.keys(childThemeDefinition);
|
|
61
|
+
const namesWithDefinitions = currentThemeNames.flatMap(prefix => {
|
|
62
|
+
const avoidNestingWithin = options?.avoidNestingWithin;
|
|
63
|
+
if (avoidNestingWithin) {
|
|
64
|
+
if (avoidNestingWithin.some(avoidName => prefix.startsWith(avoidName) || prefix.endsWith(avoidName))) {
|
|
65
|
+
return [];
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return incomingThemeNames.map(subName => {
|
|
69
|
+
const fullName = `${prefix}_${subName}`;
|
|
70
|
+
const definition = childThemeDefinition[subName];
|
|
71
|
+
if ("avoidNestingWithin" in definition) {
|
|
72
|
+
const avoidNest = definition.avoidNestingWithin;
|
|
73
|
+
if (avoidNest.some(name => {
|
|
74
|
+
if ((name === "light" || name === "dark") && prefix.includes("_")) {
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
77
|
+
return prefix.startsWith(name) || prefix.endsWith(name);
|
|
78
|
+
})) {
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
if (prefix.endsWith(`_${subName}`)) {
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
85
|
+
if (fullName in currentThemes) {
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
88
|
+
return [fullName, definition];
|
|
89
|
+
}).filter(Boolean);
|
|
90
|
+
});
|
|
91
|
+
const childThemes = Object.fromEntries(namesWithDefinitions);
|
|
92
|
+
const next = {
|
|
93
|
+
// as {} prevents generic string key merge messing up types
|
|
94
|
+
...this.state.themes,
|
|
95
|
+
...childThemes
|
|
96
|
+
};
|
|
97
|
+
this.state.themes = next;
|
|
98
|
+
return this;
|
|
68
99
|
}
|
|
69
100
|
getTheme(fn) {
|
|
70
|
-
|
|
101
|
+
this._getThemeFn = fn;
|
|
102
|
+
return this;
|
|
71
103
|
}
|
|
72
104
|
build() {
|
|
73
|
-
if (!this.state.themes)
|
|
74
|
-
|
|
75
|
-
|
|
105
|
+
if (!this.state.themes) {
|
|
106
|
+
return {};
|
|
107
|
+
}
|
|
108
|
+
const out = {};
|
|
109
|
+
const maskedThemes = [];
|
|
76
110
|
for (const themeName in this.state.themes) {
|
|
77
|
-
const nameParts = themeName.split("_")
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
111
|
+
const nameParts = themeName.split("_");
|
|
112
|
+
const parentName = nameParts.slice(0, nameParts.length - 1).join("_");
|
|
113
|
+
const definitions = this.state.themes[themeName];
|
|
114
|
+
const themeDefinition = Array.isArray(definitions) ? (() => {
|
|
115
|
+
const found = definitions.find(
|
|
116
|
+
// endWith match stronger than startsWith
|
|
117
|
+
d => d.parent ? parentName.endsWith(d.parent) || parentName.startsWith(d.parent) : true);
|
|
118
|
+
if (!found) {
|
|
119
|
+
return null;
|
|
120
|
+
}
|
|
121
|
+
return found;
|
|
122
|
+
})() : definitions;
|
|
123
|
+
if (!themeDefinition) {
|
|
124
|
+
continue;
|
|
125
|
+
}
|
|
126
|
+
if ("theme" in themeDefinition) {
|
|
127
|
+
out[themeName] = themeDefinition.theme;
|
|
128
|
+
} else if ("mask" in themeDefinition) {
|
|
129
|
+
maskedThemes.push({
|
|
130
|
+
parentName,
|
|
131
|
+
themeName,
|
|
132
|
+
mask: themeDefinition
|
|
133
|
+
});
|
|
134
|
+
} else {
|
|
91
135
|
let {
|
|
92
136
|
palette: paletteName = "",
|
|
93
137
|
template: templateName,
|
|
94
138
|
...options
|
|
95
139
|
} = themeDefinition;
|
|
96
140
|
const parentDefinition = this.state.themes[parentName];
|
|
97
|
-
if (!this.state.palettes)
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
141
|
+
if (!this.state.palettes) {
|
|
142
|
+
throw new Error(`No palettes defined for theme with palette expected: ${themeName}`);
|
|
143
|
+
}
|
|
144
|
+
let palette = this.state.palettes[paletteName || ""];
|
|
145
|
+
let attemptParentName = `${parentName}_${paletteName}`;
|
|
146
|
+
while (!palette && attemptParentName) {
|
|
147
|
+
if (attemptParentName in this.state.palettes) {
|
|
148
|
+
palette = this.state.palettes[attemptParentName];
|
|
149
|
+
paletteName = attemptParentName;
|
|
150
|
+
} else {
|
|
151
|
+
attemptParentName = attemptParentName.split("_").slice(0, -1).join("_");
|
|
152
|
+
}
|
|
153
|
+
}
|
|
101
154
|
if (!palette) {
|
|
102
155
|
const msg = process.env.NODE_ENV !== "production" ? `: ${themeName}: ${paletteName}
|
|
103
156
|
Definition: ${JSON.stringify(themeDefinition)}
|
|
104
157
|
Parent: ${JSON.stringify(parentDefinition)}
|
|
105
|
-
Potential: (${Object.keys(this.state.palettes).join(", ")})` :
|
|
158
|
+
Potential: (${Object.keys(this.state.palettes).join(", ")})` : ``;
|
|
106
159
|
throw new Error(`No palette for theme${msg}`);
|
|
107
160
|
}
|
|
108
161
|
const template = this.state.templates?.[templateName] ??
|
|
109
162
|
// fall back to finding the scheme specific on if it exists
|
|
110
163
|
this.state.templates?.[`${nameParts[0]}_${templateName}`];
|
|
111
|
-
if (!template)
|
|
112
|
-
|
|
113
|
-
-
|
|
114
|
-
|
|
164
|
+
if (!template) {
|
|
165
|
+
throw new Error(`No template for theme ${themeName}: ${templateName} in templates:
|
|
166
|
+
- ${Object.keys(this.state.templates || {}).join("\n - ")}`);
|
|
167
|
+
}
|
|
168
|
+
const theme = createThemeWithPalettes(this.state.palettes, paletteName, template, options, themeName, true);
|
|
115
169
|
out[themeName] = this._getThemeFn ? {
|
|
116
170
|
...theme,
|
|
117
171
|
...this._getThemeFn({
|
|
@@ -133,20 +187,27 @@ class ThemeBuilder {
|
|
|
133
187
|
parentName
|
|
134
188
|
} of maskedThemes) {
|
|
135
189
|
const parent = out[parentName];
|
|
136
|
-
if (!parent)
|
|
190
|
+
if (!parent) {
|
|
191
|
+
continue;
|
|
192
|
+
}
|
|
137
193
|
const {
|
|
138
194
|
mask: maskName,
|
|
139
195
|
...options
|
|
140
196
|
} = mask;
|
|
141
197
|
let maskFunction = this.state.masks?.[maskName];
|
|
142
|
-
if (!maskFunction)
|
|
198
|
+
if (!maskFunction) {
|
|
199
|
+
throw new Error(`No mask ${maskName}`);
|
|
200
|
+
}
|
|
143
201
|
const parentTheme = this.state.themes[parentName];
|
|
144
202
|
if (parentTheme && "childOptions" in parentTheme) {
|
|
145
203
|
const {
|
|
146
204
|
mask: mask2,
|
|
147
205
|
...childOpts
|
|
148
206
|
} = parentTheme.childOptions;
|
|
149
|
-
|
|
207
|
+
if (mask2) {
|
|
208
|
+
maskFunction = this.state.masks?.[mask2];
|
|
209
|
+
}
|
|
210
|
+
Object.assign(options, childOpts);
|
|
150
211
|
}
|
|
151
212
|
out[themeName] = applyMask(parent, maskFunction, options, parentName, themeName);
|
|
152
213
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["applyMask","createMask","createThemeWithPalettes","objectEntries","objectFromEntries","ThemeBuilder","constructor","state","_getThemeFn","addPalettes","palettes","addTemplates","templates","addMasks","masks","map","key","val","_addedThemes","addThemes","themes","push","type","args","addComponentThemes","childThemeDefinition","options","addChildThemes","currentThemes","Error","currentThemeNames","Object","keys","incomingThemeNames","namesWithDefinitions","flatMap","prefix","avoidNestingWithin","some","avoidName","startsWith","endsWith","subName","fullName","definition","name","includes","filter","Boolean","childThemes","fromEntries","next","getTheme","fn","build","out","maskedThemes","themeName","nameParts","split","parentName","slice","length","join","definitions","themeDefinition","Array","isArray","found","find","d","parent","theme","mask","palette","paletteName","template","templateName","parentDefinition","attemptParentName","msg","process","env","NODE_ENV","JSON","stringify","level","scheme","test","parentNames","maskName","maskFunction","parentTheme","mask2","childOpts","childOptions","assign","createThemeBuilder"],"sources":["../../src/ThemeBuilder.ts"],"sourcesContent":[null],"mappings":"AAQA,SACEA,SAAA,EACAC,UAAA,EACAC,uBAAA,EACAC,aAAA,EACAC,iBAAA,QACK;AAwFA,MAAMC,YAAA,CAGX;EAGAC,YAAmBC,KAAA,EAAc;IAAd,KAAAA,KAAA,GAAAA,KAAA;EAAe;EAF1BC,WAAA;EAIRC,YAAgDC,QAAA,EAAa;IAC3D,
|
|
1
|
+
{"version":3,"names":["applyMask","createMask","createThemeWithPalettes","objectEntries","objectFromEntries","ThemeBuilder","constructor","state","_getThemeFn","addPalettes","palettes","addTemplates","templates","addMasks","masks","map","key","val","_addedThemes","addThemes","themes","push","type","args","addComponentThemes","childThemeDefinition","options","addChildThemes","currentThemes","Error","currentThemeNames","Object","keys","incomingThemeNames","namesWithDefinitions","flatMap","prefix","avoidNestingWithin","some","avoidName","startsWith","endsWith","subName","fullName","definition","avoidNest","name","includes","filter","Boolean","childThemes","fromEntries","next","getTheme","fn","build","out","maskedThemes","themeName","nameParts","split","parentName","slice","length","join","definitions","themeDefinition","Array","isArray","found","find","d","parent","theme","mask","palette","paletteName","template","templateName","parentDefinition","attemptParentName","msg","process","env","NODE_ENV","JSON","stringify","level","scheme","test","parentNames","maskName","maskFunction","parentTheme","mask2","childOpts","childOptions","assign","createThemeBuilder"],"sources":["../../src/ThemeBuilder.ts"],"sourcesContent":[null],"mappings":"AAQA,SACEA,SAAA,EACAC,UAAA,EACAC,uBAAA,EACAC,aAAA,EACAC,iBAAA,QACK;AAwFA,MAAMC,YAAA,CAGX;EAGAC,YAAmBC,KAAA,EAAc;IAAd,KAAAA,KAAA,GAAAA,KAAA;EAAe;EAF1BC,WAAA;EAIRC,YAAgDC,QAAA,EAAa;IAC3D,KAAKH,KAAA,CAAMG,QAAA,GAAW;MAAA;MAEpB,GAAI,KAAKH,KAAA,CAAMG,QAAA;MACf,GAAGA;IACL;IACA,OAAO;EAMT;EAEAC,aAAkDC,SAAA,EAAc;IAC9D,KAAKL,KAAA,CAAMK,SAAA,GAAY;MAAA;MAErB,GAAI,KAAKL,KAAA,CAAMK,SAAA;MACf,GAAGA;IACL;IACA,OAAO;EAMT;EAEAC,SAA0CC,KAAA,EAAU;IAClD,KAAKP,KAAA,CAAMO,KAAA,GAAQ;MAAA;MAEjB,GAAI,KAAKP,KAAA,CAAMO,KAAA;MACf,GAAIV,iBAAA,CACFD,aAAA,CAAcW,KAAK,EAAEC,GAAA,CAAI,CAAC,CAACC,GAAA,EAAKC,GAAG,MAAM,CAACD,GAAA,EAAKf,UAAA,CAAWgB,GAAG,CAAC,CAAC,CACjE;IACF;IACA,OAAO;EAMT;EAAA;EAGAC,YAAA,GAAgE,EAAC;EAEjEC,UACEC,MAAA,EACA;IACA,KAAKF,YAAA,CAAaG,IAAA,CAAK;MAAEC,IAAA,EAAM;MAAUC,IAAA,EAAM,CAACH,MAAM;IAAE,CAAC;IAEzD,KAAKb,KAAA,CAAMa,MAAA,GAAS;MAAA;MAElB,GAAI,KAAKb,KAAA,CAAMa,MAAA;MACf,GAAGA;IACL;IAUA,OAAO;EAUT;EAAA;EAGAI,mBAGEC,oBAAA,EACAC,OAAA,EAGA;IACA,KAAK,KAAKC,cAAA,CAAeF,oBAAA,EAAsBC,OAAO;IACtD,OAAO;EACT;EAEAC,eAIEF,oBAAA,EACAC,OAAA,EAGA;IACA,MAAME,aAAA,GAAgB,KAAKrB,KAAA,CAAMa,MAAA;IACjC,IAAI,CAACQ,aAAA,EAAe;MAClB,MAAM,IAAIC,KAAA,CACR,oEACF;IACF;IAEA,KAAKX,YAAA,CAAaG,IAAA,CAAK;MAAEC,IAAA,EAAM;MAAeC,IAAA,EAAM,CAACE,oBAAA,EAAsBC,OAAO;IAAE,CAAC;IAMrF,MAAMI,iBAAA,GAAoBC,MAAA,CAAOC,IAAA,CAAKJ,aAAa;IACnD,MAAMK,kBAAA,GAAqBF,MAAA,CAAOC,IAAA,CAAKP,oBAAoB;IAE3D,MAAMS,oBAAA,GAAuBJ,iBAAA,CAAkBK,OAAA,CAASC,MAAA,IAAW;MACjE,MAAMC,kBAAA,GAAqBX,OAAA,EAASW,kBAAA;MACpC,IAAIA,kBAAA,EAAoB;QACtB,IACEA,kBAAA,CAAmBC,IAAA,CAChBC,SAAA,IAAcH,MAAA,CAAOI,UAAA,CAAWD,SAAS,KAAKH,MAAA,CAAOK,QAAA,CAASF,SAAS,CAC1E,GACA;UACA,OAAO,EAAC;QACV;MACF;MAEA,OAAON,kBAAA,CACJlB,GAAA,CAAK2B,OAAA,IAAY;QAChB,MAAMC,QAAA,GAAW,GAAGP,MAAM,IAAIM,OAAO;QACrC,MAAME,UAAA,GAAanB,oBAAA,CAAqBiB,OAAO;QAE/C,IAAI,wBAAwBE,UAAA,EAAY;UACtC,MAAMC,SAAA,GAAYD,UAAA,CAAWP,kBAAA;UAC7B,IACEQ,SAAA,CAAUP,IAAA,CAAMQ,IAAA,IAAS;YAEvB,KAAKA,IAAA,KAAS,WAAWA,IAAA,KAAS,WAAWV,MAAA,CAAOW,QAAA,CAAS,GAAG,GAAG;cACjE,OAAO;YACT;YACA,OAAOX,MAAA,CAAOI,UAAA,CAAWM,IAAI,KAAKV,MAAA,CAAOK,QAAA,CAASK,IAAI;UACxD,CAAC,GACD;YACA,OAAO;UACT;QACF;QAIA,IAAIV,MAAA,CAAOK,QAAA,CAAS,IAAIC,OAAO,EAAE,GAAG;UAClC,OAAO;QACT;QAIA,IAAIC,QAAA,IAAYf,aAAA,EAAe;UAC7B,OAAO;QACT;QAEA,OAAO,CAACe,QAAA,EAAUC,UAAU;MAC9B,CAAC,EACAI,MAAA,CAAOC,OAAO;IACnB,CAAC;IAQD,MAAMC,WAAA,GAAcnB,MAAA,CAAOoB,WAAA,CAAYjB,oBAAoB;IAE3D,MAAMkB,IAAA,GAAO;MAAA;MAEX,GAAI,KAAK7C,KAAA,CAAMa,MAAA;MACf,GAAG8B;IACL;IAGA,KAAK3C,KAAA,CAAMa,MAAA,GAASgC,IAAA;IAEpB,OAAO;EAMT;EAEAC,SACEC,EAAA,EAUA;IACA,KAAK9C,WAAA,GAAc8C,EAAA;IACnB,OAAO;EACT;EAEAC,MAAA,EAAoD;IAClD,IAAI,CAAC,KAAKhD,KAAA,CAAMa,MAAA,EAAQ;MACtB,OAAO,CAAC;IACV;IAEA,MAAMoC,GAAA,GAAM,CAAC;IACb,MAAMC,YAAA,GAIA,EAAC;IAEP,WAAWC,SAAA,IAAa,KAAKnD,KAAA,CAAMa,MAAA,EAAQ;MACzC,MAAMuC,SAAA,GAAYD,SAAA,CAAUE,KAAA,CAAM,GAAG;MACrC,MAAMC,UAAA,GAAaF,SAAA,CAAUG,KAAA,CAAM,GAAGH,SAAA,CAAUI,MAAA,GAAS,CAAC,EAAEC,IAAA,CAAK,GAAG;MAEpE,MAAMC,WAAA,GAAc,KAAK1D,KAAA,CAAMa,MAAA,CAAOsC,SAAS;MAC/C,MAAMQ,eAAA,GAAkBC,KAAA,CAAMC,OAAA,CAAQH,WAAW,KAC5C,MAAM;QACL,MAAMI,KAAA,GAAQJ,WAAA,CAAYK,IAAA;QAAA;QAEvBC,CAAA,IACCA,CAAA,CAAEC,MAAA,GACEX,UAAA,CAAWpB,QAAA,CAAS8B,CAAA,CAAEC,MAAO,KAAKX,UAAA,CAAWrB,UAAA,CAAW+B,CAAA,CAAEC,MAAO,IACjE,IACR;QACA,IAAI,CAACH,KAAA,EAAO;UACV,OAAO;QACT;QACA,OAAOA,KAAA;MACT,GAAG,IACHJ,WAAA;MAEJ,IAAI,CAACC,eAAA,EAAiB;QAEpB;MACF;MAEA,IAAI,WAAWA,eAAA,EAAiB;QAC9BV,GAAA,CAAIE,SAAS,IAAIQ,eAAA,CAAgBO,KAAA;MACnC,WAAW,UAAUP,eAAA,EAAiB;QACpCT,YAAA,CAAapC,IAAA,CAAK;UAAEwC,UAAA;UAAYH,SAAA;UAAWgB,IAAA,EAAMR;QAAgB,CAAC;MACpE,OAAO;QACL,IAAI;UACFS,OAAA,EAASC,WAAA,GAAc;UACvBC,QAAA,EAAUC,YAAA;UACV,GAAGpD;QACL,IAAIwC,eAAA;QAEJ,MAAMa,gBAAA,GAAmB,KAAKxE,KAAA,CAAMa,MAAA,CAAOyC,UAAU;QAErD,IAAI,CAAC,KAAKtD,KAAA,CAAMG,QAAA,EAAU;UACxB,MAAM,IAAImB,KAAA,CACR,wDAAwD6B,SAAS,EACnE;QACF;QAEA,IAAIiB,OAAA,GAAU,KAAKpE,KAAA,CAAMG,QAAA,CAASkE,WAAA,IAAe,EAAE;QACnD,IAAII,iBAAA,GAAoB,GAAGnB,UAAU,IAAIe,WAAW;QAEpD,OAAO,CAACD,OAAA,IAAWK,iBAAA,EAAmB;UACpC,IAAIA,iBAAA,IAAqB,KAAKzE,KAAA,CAAMG,QAAA,EAAU;YAC5CiE,OAAA,GAAU,KAAKpE,KAAA,CAAMG,QAAA,CAASsE,iBAAiB;YAC/CJ,WAAA,GAAcI,iBAAA;UAChB,OAAO;YACLA,iBAAA,GAAoBA,iBAAA,CAAkBpB,KAAA,CAAM,GAAG,EAAEE,KAAA,CAAM,GAAG,EAAE,EAAEE,IAAA,CAAK,GAAG;UACxE;QACF;QAEA,IAAI,CAACW,OAAA,EAAS;UACZ,MAAMM,GAAA,GACJC,OAAA,CAAQC,GAAA,CAAIC,QAAA,KAAa,eACrB,KAAK1B,SAAS,KAAKkB,WAAW;AAAA,wBACtBS,IAAA,CAAKC,SAAA,CAAUpB,eAAe,CAAC;AAAA,oBACnCmB,IAAA,CAAKC,SAAA,CAAUP,gBAAgB,CAAC;AAAA,wBAC5BhD,MAAA,CAAOC,IAAA,CAAK,KAAKzB,KAAA,CAAMG,QAAQ,EAAEsD,IAAA,CAAK,IAAI,CAAC,MACnD;UACN,MAAM,IAAInC,KAAA,CAAM,uBAAuBoD,GAAG,EAAE;QAC9C;QAEA,MAAMJ,QAAA,GACJ,KAAKtE,KAAA,CAAMK,SAAA,GAAYkE,YAAY;QAAA;QAEnC,KAAKvE,KAAA,CAAMK,SAAA,GAAY,GAAG+C,SAAA,CAAU,CAAC,CAAC,IAAImB,YAAY,EAAE;QAE1D,IAAI,CAACD,QAAA,EAAU;UACb,MAAM,IAAIhD,KAAA,CACR,yBAAyB6B,SAAS,KAAKoB,YAAY;AAAA,IAAqB/C,MAAA,CAAOC,IAAA,CAAK,KAAKzB,KAAA,CAAMK,SAAA,IAAa,CAAC,CAAC,EAAEoD,IAAA,CAAK,OAAO,CAAC,EAC/H;QACF;QAEA,MAAMS,KAAA,GAAQvE,uBAAA,CACZ,KAAKK,KAAA,CAAMG,QAAA,EACXkE,WAAA,EACAC,QAAA,EACAnD,OAAA,EACAgC,SAAA,EACA,IACF;QAEAF,GAAA,CAAIE,SAAS,IAAI,KAAKlD,WAAA,GAClB;UACE,GAAGiE,KAAA;UACH,GAAG,KAAKjE,WAAA,CAAY;YAClBiE,KAAA;YACA3B,IAAA,EAAMY,SAAA;YACN6B,KAAA,EAAO5B,SAAA,CAAUI,MAAA;YACjBF,UAAA;YACA2B,MAAA,EAAQ,iBAAiBC,IAAA,CAAK9B,SAAA,CAAU,CAAC,CAAC,IACrCA,SAAA,CAAU,CAAC,IACZ;YACJ+B,WAAA,EAAa/B,SAAA,CAAUG,KAAA,CAAM,GAAG,EAAE;YAClCa,OAAA;YACAE;UACF,CAAC;QACH,IACAJ,KAAA;MACN;IACF;IAEA,WAAW;MAAEC,IAAA;MAAMhB,SAAA;MAAWG;IAAW,KAAKJ,YAAA,EAAc;MAC1D,MAAMe,MAAA,GAAShB,GAAA,CAAIK,UAAU;MAE7B,IAAI,CAACW,MAAA,EAAQ;QAEX;MACF;MAEA,MAAM;QAAEE,IAAA,EAAMiB,QAAA;QAAU,GAAGjE;MAAQ,IAAIgD,IAAA;MACvC,IAAIkB,YAAA,GAAe,KAAKrF,KAAA,CAAMO,KAAA,GAAQ6E,QAAQ;MAE9C,IAAI,CAACC,YAAA,EAAc;QACjB,MAAM,IAAI/D,KAAA,CAAM,WAAW8D,QAAQ,EAAE;MACvC;MAEA,MAAME,WAAA,GAAc,KAAKtF,KAAA,CAAMa,MAAA,CAAOyC,UAAU;MAEhD,IAAIgC,WAAA,IAAe,kBAAkBA,WAAA,EAAa;QAChD,MAAM;UAAEnB,IAAA,EAAAoB,KAAA;UAAM,GAAGC;QAAU,IAAIF,WAAA,CAAYG,YAAA;QAC3C,IAAIF,KAAA,EAAM;UACRF,YAAA,GAAe,KAAKrF,KAAA,CAAMO,KAAA,GAAQgF,KAAI;QACxC;QACA/D,MAAA,CAAOkE,MAAA,CAAOvE,OAAA,EAASqE,SAAS;MAClC;MAEAvC,GAAA,CAAIE,SAAS,IAAI1D,SAAA,CACfwE,MAAA,EACAoB,YAAA,EACAlE,OAAA,EACAmC,UAAA,EACAH,SACF;IACF;IAEA,OAAOF,GAAA;EACT;AACF;AAEO,SAAS0C,mBAAA,EAAqB;EACnC,OAAO,IAAI7F,YAAA,CAAa,CAAC,CAAC;AAC5B","ignoreList":[]}
|