panelui-native 0.40.0 → 0.43.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 +4 -2
- package/lib/module/components/card/index.js +172 -3
- package/lib/module/components/card/index.js.map +1 -1
- package/lib/module/components/color-picker/index.js +1395 -0
- package/lib/module/components/color-picker/index.js.map +1 -0
- package/lib/module/components/combobox/index.js +87 -19
- package/lib/module/components/combobox/index.js.map +1 -1
- package/lib/module/components/drawer/index.js +13 -4
- package/lib/module/components/drawer/index.js.map +1 -1
- package/lib/module/components/kpi-chart/index.js +648 -0
- package/lib/module/components/kpi-chart/index.js.map +1 -0
- package/lib/module/components/map/index.js +72 -12
- package/lib/module/components/map/index.js.map +1 -1
- package/lib/module/components/menu/index.js +40 -10
- package/lib/module/components/menu/index.js.map +1 -1
- package/lib/module/components/pagination/index.js +19 -9
- package/lib/module/components/pagination/index.js.map +1 -1
- package/lib/module/components/panelside/index.js +68 -18
- package/lib/module/components/panelside/index.js.map +1 -1
- package/lib/module/components/radar-chart/index.js +704 -0
- package/lib/module/components/radar-chart/index.js.map +1 -0
- package/lib/module/components/section-rail/index.js +32 -7
- package/lib/module/components/section-rail/index.js.map +1 -1
- package/lib/module/components/slider/index.js +240 -39
- package/lib/module/components/slider/index.js.map +1 -1
- package/lib/module/components/tabs/index.js +194 -10
- package/lib/module/components/tabs/index.js.map +1 -1
- package/lib/module/components/text-animation/index.js +857 -0
- package/lib/module/components/text-animation/index.js.map +1 -0
- package/lib/module/icons/index.js +25 -7
- package/lib/module/icons/index.js.map +1 -1
- package/lib/module/index.js +5 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/theme/use-theme.js +1 -1
- package/lib/module/utils/chart.js +44 -0
- package/lib/module/utils/chart.js.map +1 -1
- package/lib/module/utils/color.js +268 -0
- package/lib/module/utils/color.js.map +1 -0
- package/lib/typescript/src/components/card/index.d.ts +20 -0
- package/lib/typescript/src/components/card/index.d.ts.map +1 -1
- package/lib/typescript/src/components/color-picker/index.d.ts +258 -0
- package/lib/typescript/src/components/color-picker/index.d.ts.map +1 -0
- package/lib/typescript/src/components/combobox/index.d.ts.map +1 -1
- package/lib/typescript/src/components/drawer/index.d.ts +13 -1
- package/lib/typescript/src/components/drawer/index.d.ts.map +1 -1
- package/lib/typescript/src/components/kpi-chart/index.d.ts +490 -0
- package/lib/typescript/src/components/kpi-chart/index.d.ts.map +1 -0
- package/lib/typescript/src/components/map/index.d.ts +37 -2
- package/lib/typescript/src/components/map/index.d.ts.map +1 -1
- package/lib/typescript/src/components/menu/index.d.ts.map +1 -1
- package/lib/typescript/src/components/pagination/index.d.ts.map +1 -1
- package/lib/typescript/src/components/panelside/index.d.ts +50 -4
- package/lib/typescript/src/components/panelside/index.d.ts.map +1 -1
- package/lib/typescript/src/components/radar-chart/index.d.ts +214 -0
- package/lib/typescript/src/components/radar-chart/index.d.ts.map +1 -0
- package/lib/typescript/src/components/section-rail/index.d.ts +8 -1
- package/lib/typescript/src/components/section-rail/index.d.ts.map +1 -1
- package/lib/typescript/src/components/slider/index.d.ts +19 -0
- package/lib/typescript/src/components/slider/index.d.ts.map +1 -1
- package/lib/typescript/src/components/tabs/index.d.ts +11 -1
- package/lib/typescript/src/components/tabs/index.d.ts.map +1 -1
- package/lib/typescript/src/components/text-animation/index.d.ts +268 -0
- package/lib/typescript/src/components/text-animation/index.d.ts.map +1 -0
- package/lib/typescript/src/icons/index.d.ts +6 -0
- package/lib/typescript/src/icons/index.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +8 -3
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/utils/chart.d.ts +21 -0
- package/lib/typescript/src/utils/chart.d.ts.map +1 -1
- package/lib/typescript/src/utils/color.d.ts +74 -0
- package/lib/typescript/src/utils/color.d.ts.map +1 -0
- package/package.json +2 -1
- package/src/components/card/index.tsx +227 -2
- package/src/components/color-picker/index.tsx +1618 -0
- package/src/components/combobox/index.tsx +89 -19
- package/src/components/drawer/index.tsx +31 -9
- package/src/components/kpi-chart/index.tsx +719 -0
- package/src/components/map/index.tsx +158 -14
- package/src/components/menu/index.tsx +51 -6
- package/src/components/pagination/index.tsx +18 -6
- package/src/components/panelside/index.tsx +134 -19
- package/src/components/radar-chart/index.tsx +910 -0
- package/src/components/section-rail/index.tsx +42 -8
- package/src/components/slider/index.tsx +283 -41
- package/src/components/tabs/index.tsx +263 -8
- package/src/components/text-animation/index.tsx +1093 -0
- package/src/icons/index.tsx +23 -4
- package/src/index.ts +73 -1
- package/src/theme/use-theme.ts +1 -1
- package/src/utils/chart.ts +52 -0
- package/src/utils/color.ts +246 -0
- package/theme.css +125 -112
package/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# PanelUI — React Native UI components for Expo, styled with Tailwind CSS
|
|
2
2
|
|
|
3
3
|
**PanelUI** (`panelui-native`) is an accessible, high-performance React Native component
|
|
4
|
-
library for Expo apps.
|
|
4
|
+
library for Expo apps. 81 typed components — buttons, bottom sheets, dialogs, selects,
|
|
5
5
|
toasts, forms — styled with Tailwind CSS v4 and animated on the UI thread with Reanimated.
|
|
6
6
|
Zero native code, so it runs in Expo Go.
|
|
7
7
|
|
|
@@ -181,6 +181,7 @@ you are done. Unstyled text on a white screen means the styles are not reaching
|
|
|
181
181
|
| `Checkbox` | Animated checkbox, as a row or a selectable card |
|
|
182
182
|
| `Chip` | Interactive pill — a filter, a tag, or a removable token |
|
|
183
183
|
| `CodeBlock` | Syntax-highlighted code with a header and a copy button |
|
|
184
|
+
| `ColorPicker` | A colour chosen by dragging — a saturation square, a hue scale, and opacity |
|
|
184
185
|
| `Combobox` | A text field that filters a list of options as you type |
|
|
185
186
|
| `DatePicker` | A calendar behind a button |
|
|
186
187
|
| `Dialog` | Modal dialog with a backdrop and footer actions |
|
|
@@ -225,7 +226,7 @@ you are done. Unstyled text on a white screen means the styles are not reaching
|
|
|
225
226
|
| `Shimmer` | Animated highlight sweeping across content |
|
|
226
227
|
| `Signature` | Sign with a finger, and get the result back out as SVG or PNG |
|
|
227
228
|
| `Skeleton` | Shimmer placeholder for loading content |
|
|
228
|
-
| `Slider` | Pick a value by dragging a thumb along a track |
|
|
229
|
+
| `Slider` | Pick a value, or a span, by dragging a thumb along a track |
|
|
229
230
|
| `Soundwave` | What a voice looks like while an app listens |
|
|
230
231
|
| `Sources` | The references behind an answer, behind a disclosure |
|
|
231
232
|
| `Spinner` | Indeterminate loading indicator |
|
|
@@ -236,6 +237,7 @@ you are done. Unstyled text on a white screen means the styles are not reaching
|
|
|
236
237
|
| `Table` | Rows and columns that stay lined up, with sortable headers |
|
|
237
238
|
| `Tabs` | Segmented navigation with an animated indicator |
|
|
238
239
|
| `Task` | A step an agent is working through, with its files |
|
|
240
|
+
| `TextAnimation` | Five ways a piece of text or a number arrives |
|
|
239
241
|
| `Textarea` | Multi-line text field that can grow with its content |
|
|
240
242
|
| `ThinkingOrb` | Dotted orb saying which kind of busy an agent is |
|
|
241
243
|
| `Timeline` | Vertical sequence of events |
|
|
@@ -1,7 +1,29 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
/**
|
|
4
|
+
* Card — a content surface, and the layer that decorates it.
|
|
5
|
+
*
|
|
6
|
+
* ```tsx
|
|
7
|
+
* <Card>
|
|
8
|
+
* <Card.Header>
|
|
9
|
+
* <Card.Title>Living room sofa</Card.Title>
|
|
10
|
+
* <Card.Description>Three seats, oat linen</Card.Description>
|
|
11
|
+
* </Card.Header>
|
|
12
|
+
* <Card.Footer>
|
|
13
|
+
* <Button fullWidth>Buy now</Button>
|
|
14
|
+
* </Card.Footer>
|
|
15
|
+
* </Card>
|
|
16
|
+
* ```
|
|
17
|
+
*
|
|
18
|
+
* All the padding lives on the slots and none of it on the root, which is why
|
|
19
|
+
* a card whose media reaches its own corners needs nothing but
|
|
20
|
+
* `overflow-hidden`.
|
|
21
|
+
*/
|
|
22
|
+
import { forwardRef, useEffect, useMemo } from 'react';
|
|
23
|
+
import { StyleSheet, View } from 'react-native';
|
|
24
|
+
import Animated, { Easing, cancelAnimation, useAnimatedStyle, useReducedMotion, useSharedValue, withRepeat, withTiming } from 'react-native-reanimated';
|
|
25
|
+
import { LinearGradient } from 'expo-linear-gradient';
|
|
26
|
+
import { useCSSVariable } from 'uniwind';
|
|
5
27
|
import { cn } from "../../utils/cn.js";
|
|
6
28
|
import { Text } from "../../primitives/text.js";
|
|
7
29
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
@@ -63,11 +85,158 @@ const CardFooter = /*#__PURE__*/forwardRef(({
|
|
|
63
85
|
...props
|
|
64
86
|
}));
|
|
65
87
|
CardFooter.displayName = 'Card.Footer';
|
|
88
|
+
|
|
89
|
+
/* -------------------------------------------------------------------------- */
|
|
90
|
+
/* Card.Wash */
|
|
91
|
+
/* -------------------------------------------------------------------------- */
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* How sharply the wash dissolves upward. The exponent is the whole look: at 1
|
|
95
|
+
* the colour is already at half strength across the middle of the card and
|
|
96
|
+
* reads as a tinted panel, and it takes about a cube before the top is
|
|
97
|
+
* genuinely untouched and the colour arrives in the bottom third.
|
|
98
|
+
*/
|
|
99
|
+
const WASH_CURVE = 3;
|
|
100
|
+
/**
|
|
101
|
+
* Stops the curve is sampled at. Ten is enough that the straight lines the
|
|
102
|
+
* renderer draws between them are not a shape anyone can see, and the fade
|
|
103
|
+
* stays continuous — stepping it would put a horizontal seam at every step.
|
|
104
|
+
*/
|
|
105
|
+
const WASH_STOPS = 10;
|
|
106
|
+
/** How long one breath takes at `speed={1}`. */
|
|
107
|
+
const WASH_PERIOD = 4200;
|
|
108
|
+
/**
|
|
109
|
+
* How far the wash swells and settles over one breath, as a fraction of
|
|
110
|
+
* `intensity`. Small on purpose: the movement should be noticed only by not
|
|
111
|
+
* being there, and anything larger reads as a light being switched.
|
|
112
|
+
*/
|
|
113
|
+
const WASH_BREATH = 0.22;
|
|
114
|
+
function isToken(value) {
|
|
115
|
+
return typeof value === 'string' && value.startsWith('--');
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Gradients need a transparent stop of the *same* colour — `transparent` is
|
|
120
|
+
* black at zero alpha on Android, which shows as a grey smear.
|
|
121
|
+
*/
|
|
122
|
+
function withAlpha(color, alpha) {
|
|
123
|
+
if (color.startsWith('#')) {
|
|
124
|
+
const hex = color.slice(1);
|
|
125
|
+
const full = hex.length === 3 ? hex.split('').map(c => c + c).join('') : hex.slice(0, 6);
|
|
126
|
+
const r = parseInt(full.slice(0, 2), 16);
|
|
127
|
+
const g = parseInt(full.slice(2, 4), 16);
|
|
128
|
+
const b = parseInt(full.slice(4, 6), 16);
|
|
129
|
+
if (Number.isNaN(r + g + b)) return color;
|
|
130
|
+
return `rgba(${r}, ${g}, ${b}, ${alpha})`;
|
|
131
|
+
}
|
|
132
|
+
const channels = color.match(/rgba?\(([^)]+)\)/)?.[1];
|
|
133
|
+
if (channels) {
|
|
134
|
+
const [r, g, b] = channels.split(',').map(part => part.trim());
|
|
135
|
+
return `rgba(${r}, ${g}, ${b}, ${alpha})`;
|
|
136
|
+
}
|
|
137
|
+
return color;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* A decorative layer for the back of a card: the tint rising from its bottom
|
|
141
|
+
* edge and fading out before it reaches the top.
|
|
142
|
+
*
|
|
143
|
+
* It fills its parent absolutely and takes no touches, so it goes first inside
|
|
144
|
+
* a `Card` and everything else is drawn over it. The card needs
|
|
145
|
+
* `overflow-hidden` — the layer reaches the root's edges, and the root is the
|
|
146
|
+
* thing with the corner radius.
|
|
147
|
+
*
|
|
148
|
+
* ```tsx
|
|
149
|
+
* <Card className="overflow-hidden">
|
|
150
|
+
* <Card.Wash tint="--color-primary" />
|
|
151
|
+
* <Card.Header>…</Card.Header>
|
|
152
|
+
* </Card>
|
|
153
|
+
* ```
|
|
154
|
+
*
|
|
155
|
+
* ## Why the rise is a curve and not a fade
|
|
156
|
+
*
|
|
157
|
+
* On a straight ramp the colour is already at half strength across the middle
|
|
158
|
+
* of the card, and what you see is a panel with a tint on it. On a curve there
|
|
159
|
+
* is nothing at all across the top two thirds and then the colour arrives —
|
|
160
|
+
* which is the difference between a card that has been coloured in and a card
|
|
161
|
+
* something is rising into.
|
|
162
|
+
*/
|
|
163
|
+
const CardWash = /*#__PURE__*/forwardRef(({
|
|
164
|
+
className,
|
|
165
|
+
tint = '--color-primary',
|
|
166
|
+
intensity = 0.16,
|
|
167
|
+
speed = 1,
|
|
168
|
+
style,
|
|
169
|
+
...props
|
|
170
|
+
}, ref) => {
|
|
171
|
+
const token = useCSSVariable(isToken(tint) ? tint : '--color-primary');
|
|
172
|
+
const resolved = typeof token === 'string' ? token : undefined;
|
|
173
|
+
const color = (isToken(tint) ? resolved : tint) ?? resolved ?? '#0a0a0a';
|
|
174
|
+
const reduced = useReducedMotion();
|
|
175
|
+
const still = reduced || speed <= 0;
|
|
176
|
+
const breath = useSharedValue(0);
|
|
177
|
+
useEffect(() => {
|
|
178
|
+
if (still) {
|
|
179
|
+
breath.value = 0;
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
breath.value = 0;
|
|
183
|
+
breath.value = withRepeat(withTiming(1, {
|
|
184
|
+
duration: WASH_PERIOD / speed,
|
|
185
|
+
easing: Easing.inOut(Easing.ease)
|
|
186
|
+
}), -1, true);
|
|
187
|
+
return () => cancelAnimation(breath);
|
|
188
|
+
}, [breath, speed, still]);
|
|
189
|
+
|
|
190
|
+
/*
|
|
191
|
+
* The breath is the layer's opacity rather than its colours: rebuilding
|
|
192
|
+
* ten `rgba()` strings per frame would be a JavaScript-thread animation of
|
|
193
|
+
* the kind this library does not do, and a view's opacity is a property
|
|
194
|
+
* the compositor already knows how to move.
|
|
195
|
+
*/
|
|
196
|
+
const breathing = useAnimatedStyle(() => ({
|
|
197
|
+
opacity: 1 - WASH_BREATH + breath.value * WASH_BREATH
|
|
198
|
+
}));
|
|
199
|
+
const {
|
|
200
|
+
colors,
|
|
201
|
+
locations
|
|
202
|
+
} = useMemo(() => {
|
|
203
|
+
const out = [];
|
|
204
|
+
const at = [];
|
|
205
|
+
for (let i = 0; i < WASH_STOPS; i += 1) {
|
|
206
|
+
const t = i / (WASH_STOPS - 1);
|
|
207
|
+
out.push(withAlpha(color, Math.pow(t, WASH_CURVE) * intensity));
|
|
208
|
+
at.push(t);
|
|
209
|
+
}
|
|
210
|
+
return {
|
|
211
|
+
colors: out,
|
|
212
|
+
locations: at
|
|
213
|
+
};
|
|
214
|
+
}, [color, intensity]);
|
|
215
|
+
return /*#__PURE__*/_jsx(Animated.View, {
|
|
216
|
+
ref: ref
|
|
217
|
+
// Decorative and non-interactive: it is the back of the card, and a
|
|
218
|
+
// screen reader announcing "image" over every card would be noise.
|
|
219
|
+
,
|
|
220
|
+
pointerEvents: "none",
|
|
221
|
+
accessibilityElementsHidden: true,
|
|
222
|
+
importantForAccessibility: "no-hide-descendants",
|
|
223
|
+
className: cn('absolute inset-0 overflow-hidden', className),
|
|
224
|
+
style: [still ? undefined : breathing, style],
|
|
225
|
+
...props,
|
|
226
|
+
children: /*#__PURE__*/_jsx(LinearGradient, {
|
|
227
|
+
colors: colors,
|
|
228
|
+
locations: locations,
|
|
229
|
+
style: StyleSheet.absoluteFill
|
|
230
|
+
})
|
|
231
|
+
});
|
|
232
|
+
});
|
|
233
|
+
CardWash.displayName = 'Card.Wash';
|
|
66
234
|
export const Card = Object.assign(CardRoot, {
|
|
67
235
|
Header: CardHeader,
|
|
68
236
|
Title: CardTitle,
|
|
69
237
|
Description: CardDescription,
|
|
70
238
|
Content: CardContent,
|
|
71
|
-
Footer: CardFooter
|
|
239
|
+
Footer: CardFooter,
|
|
240
|
+
Wash: CardWash
|
|
72
241
|
});
|
|
73
242
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["forwardRef","View","cn","Text","jsx","_jsx","CardRoot","className","props","ref","displayName","CardHeader","CardTitle","size","weight","CardDescription","muted","CardContent","CardFooter","Card","Object","assign","Header","Title","Description","Content","Footer"],"sourceRoot":"../../../../src","sources":["components/card/index.tsx"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,OAAO;
|
|
1
|
+
{"version":3,"names":["forwardRef","useEffect","useMemo","StyleSheet","View","Animated","Easing","cancelAnimation","useAnimatedStyle","useReducedMotion","useSharedValue","withRepeat","withTiming","LinearGradient","useCSSVariable","cn","Text","jsx","_jsx","CardRoot","className","props","ref","displayName","CardHeader","CardTitle","size","weight","CardDescription","muted","CardContent","CardFooter","WASH_CURVE","WASH_STOPS","WASH_PERIOD","WASH_BREATH","isToken","value","startsWith","withAlpha","color","alpha","hex","slice","full","length","split","map","c","join","r","parseInt","g","b","Number","isNaN","channels","match","part","trim","CardWash","tint","intensity","speed","style","token","resolved","undefined","reduced","still","breath","duration","easing","inOut","ease","breathing","opacity","colors","locations","out","at","i","t","push","Math","pow","pointerEvents","accessibilityElementsHidden","importantForAccessibility","children","absoluteFill","Card","Object","assign","Header","Title","Description","Content","Footer","Wash"],"sourceRoot":"../../../../src","sources":["components/card/index.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,UAAU,EAAEC,SAAS,EAAEC,OAAO,QAAQ,OAAO;AACtD,SAASC,UAAU,EAAEC,IAAI,QAAwB,cAAc;AAC/D,OAAOC,QAAQ,IACbC,MAAM,EACNC,eAAe,EACfC,gBAAgB,EAChBC,gBAAgB,EAChBC,cAAc,EACdC,UAAU,EACVC,UAAU,QACL,yBAAyB;AAChC,SAASC,cAAc,QAAQ,sBAAsB;AACrD,SAASC,cAAc,QAAQ,SAAS;AACxC,SAASC,EAAE,QAAQ,mBAAgB;AACnC,SAASC,IAAI,QAAwB,0BAAuB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAM7D,MAAMC,QAAQ,gBAAGnB,UAAU,CAAkB,CAAC;EAAEoB,SAAS;EAAE,GAAGC;AAAM,CAAC,EAAEC,GAAG,kBACxEJ,IAAA,CAACd,IAAI;EACHkB,GAAG,EAAEA,GAAI;EACTF,SAAS,EAAEL,EAAE,CAAC,oDAAoD,EAAEK,SAAS,CAAE;EAAA,GAC3EC;AAAK,CACV,CACF,CAAC;AACFF,QAAQ,CAACI,WAAW,GAAG,MAAM;AAE7B,MAAMC,UAAU,gBAAGxB,UAAU,CAAkB,CAAC;EAAEoB,SAAS;EAAE,GAAGC;AAAM,CAAC,EAAEC,GAAG,kBAC1EJ,IAAA,CAACd,IAAI;EAACkB,GAAG,EAAEA,GAAI;EAACF,SAAS,EAAEL,EAAE,CAAC,aAAa,EAAEK,SAAS,CAAE;EAAA,GAAKC;AAAK,CAAG,CACtE,CAAC;AACFG,UAAU,CAACD,WAAW,GAAG,aAAa;AAEtC,MAAME,SAAS,gBAAGzB,UAAU,CAC1B,CAAC;EAAEoB,SAAS;EAAE,GAAGC;AAAM,CAAC,EAAEC,GAAG,kBAC3BJ,IAAA,CAACF,IAAI;EACHM,GAAG,EAAEA,GAAI;EACTI,IAAI,EAAC,IAAI;EACTC,MAAM,EAAC,UAAU;EACjBP,SAAS,EAAEL,EAAE,CAAC,mCAAmC,EAAEK,SAAS,CAAE;EAAA,GAC1DC;AAAK,CACV,CAEL,CAAC;AACDI,SAAS,CAACF,WAAW,GAAG,YAAY;AAEpC,MAAMK,eAAe,gBAAG5B,UAAU,CAChC,CAAC;EAAEoB,SAAS;EAAE,GAAGC;AAAM,CAAC,EAAEC,GAAG,kBAC3BJ,IAAA,CAACF,IAAI;EAACM,GAAG,EAAEA,GAAI;EAACI,IAAI,EAAC,IAAI;EAACG,KAAK;EAACT,SAAS,EAAEA,SAAU;EAAA,GAAKC;AAAK,CAAG,CAEtE,CAAC;AACDO,eAAe,CAACL,WAAW,GAAG,kBAAkB;AAEhD,MAAMO,WAAW,gBAAG9B,UAAU,CAAkB,CAAC;EAAEoB,SAAS;EAAE,GAAGC;AAAM,CAAC,EAAEC,GAAG,kBAC3EJ,IAAA,CAACd,IAAI;EAACkB,GAAG,EAAEA,GAAI;EAACF,SAAS,EAAEL,EAAE,CAAC,UAAU,EAAEK,SAAS,CAAE;EAAA,GAAKC;AAAK,CAAG,CACnE,CAAC;AACFS,WAAW,CAACP,WAAW,GAAG,cAAc;AAExC,MAAMQ,UAAU,gBAAG/B,UAAU,CAAkB,CAAC;EAAEoB,SAAS;EAAE,GAAGC;AAAM,CAAC,EAAEC,GAAG,kBAC1EJ,IAAA,CAACd,IAAI;EACHkB,GAAG,EAAEA,GAAI;EACTF,SAAS,EAAEL,EAAE,CAAC,sCAAsC,EAAEK,SAAS,CAAE;EAAA,GAC7DC;AAAK,CACV,CACF,CAAC;AACFU,UAAU,CAACR,WAAW,GAAG,aAAa;;AAEtC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMS,UAAU,GAAG,CAAC;AACpB;AACA;AACA;AACA;AACA;AACA,MAAMC,UAAU,GAAG,EAAE;AACrB;AACA,MAAMC,WAAW,GAAG,IAAI;AACxB;AACA;AACA;AACA;AACA;AACA,MAAMC,WAAW,GAAG,IAAI;AAExB,SAASC,OAAOA,CAACC,KAAyB,EAAmB;EAC3D,OAAO,OAAOA,KAAK,KAAK,QAAQ,IAAIA,KAAK,CAACC,UAAU,CAAC,IAAI,CAAC;AAC5D;;AAEA;AACA;AACA;AACA;AACA,SAASC,SAASA,CAACC,KAAa,EAAEC,KAAa,EAAU;EACvD,IAAID,KAAK,CAACF,UAAU,CAAC,GAAG,CAAC,EAAE;IACzB,MAAMI,GAAG,GAAGF,KAAK,CAACG,KAAK,CAAC,CAAC,CAAC;IAC1B,MAAMC,IAAI,GACRF,GAAG,CAACG,MAAM,KAAK,CAAC,GACZH,GAAG,CACAI,KAAK,CAAC,EAAE,CAAC,CACTC,GAAG,CAAEC,CAAC,IAAKA,CAAC,GAAGA,CAAC,CAAC,CACjBC,IAAI,CAAC,EAAE,CAAC,GACXP,GAAG,CAACC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IACrB,MAAMO,CAAC,GAAGC,QAAQ,CAACP,IAAI,CAACD,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;IACxC,MAAMS,CAAC,GAAGD,QAAQ,CAACP,IAAI,CAACD,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;IACxC,MAAMU,CAAC,GAAGF,QAAQ,CAACP,IAAI,CAACD,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;IACxC,IAAIW,MAAM,CAACC,KAAK,CAACL,CAAC,GAAGE,CAAC,GAAGC,CAAC,CAAC,EAAE,OAAOb,KAAK;IACzC,OAAO,QAAQU,CAAC,KAAKE,CAAC,KAAKC,CAAC,KAAKZ,KAAK,GAAG;EAC3C;EAEA,MAAMe,QAAQ,GAAGhB,KAAK,CAACiB,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;EACrD,IAAID,QAAQ,EAAE;IACZ,MAAM,CAACN,CAAC,EAAEE,CAAC,EAAEC,CAAC,CAAC,GAAGG,QAAQ,CAACV,KAAK,CAAC,GAAG,CAAC,CAACC,GAAG,CAAEW,IAAI,IAAKA,IAAI,CAACC,IAAI,CAAC,CAAC,CAAC;IAChE,OAAO,QAAQT,CAAC,KAAKE,CAAC,KAAKC,CAAC,KAAKZ,KAAK,GAAG;EAC3C;EAEA,OAAOD,KAAK;AACd;AAsBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMoB,QAAQ,gBAAG5D,UAAU,CACzB,CACE;EACEoB,SAAS;EACTyC,IAAI,GAAG,iBAAiB;EACxBC,SAAS,GAAG,IAAI;EAChBC,KAAK,GAAG,CAAC;EACTC,KAAK;EACL,GAAG3C;AACL,CAAC,EACDC,GAAG,KACA;EACH,MAAM2C,KAAK,GAAGnD,cAAc,CAACsB,OAAO,CAACyB,IAAI,CAAC,GAAGA,IAAI,GAAG,iBAAiB,CAAC;EACtE,MAAMK,QAAQ,GAAG,OAAOD,KAAK,KAAK,QAAQ,GAAGA,KAAK,GAAGE,SAAS;EAC9D,MAAM3B,KAAK,GAAG,CAACJ,OAAO,CAACyB,IAAI,CAAC,GAAGK,QAAQ,GAAGL,IAAI,KAAKK,QAAQ,IAAI,SAAS;EAExE,MAAME,OAAO,GAAG3D,gBAAgB,CAAC,CAAC;EAClC,MAAM4D,KAAK,GAAGD,OAAO,IAAIL,KAAK,IAAI,CAAC;EAEnC,MAAMO,MAAM,GAAG5D,cAAc,CAAC,CAAC,CAAC;EAEhCT,SAAS,CAAC,MAAM;IACd,IAAIoE,KAAK,EAAE;MACTC,MAAM,CAACjC,KAAK,GAAG,CAAC;MAChB;IACF;IACAiC,MAAM,CAACjC,KAAK,GAAG,CAAC;IAChBiC,MAAM,CAACjC,KAAK,GAAG1B,UAAU,CACvBC,UAAU,CAAC,CAAC,EAAE;MACZ2D,QAAQ,EAAErC,WAAW,GAAG6B,KAAK;MAC7BS,MAAM,EAAElE,MAAM,CAACmE,KAAK,CAACnE,MAAM,CAACoE,IAAI;IAClC,CAAC,CAAC,EACF,CAAC,CAAC,EACF,IACF,CAAC;IACD,OAAO,MAAMnE,eAAe,CAAC+D,MAAM,CAAC;EACtC,CAAC,EAAE,CAACA,MAAM,EAAEP,KAAK,EAAEM,KAAK,CAAC,CAAC;;EAE1B;AACJ;AACA;AACA;AACA;AACA;EACI,MAAMM,SAAS,GAAGnE,gBAAgB,CAAC,OAAO;IACxCoE,OAAO,EAAE,CAAC,GAAGzC,WAAW,GAAGmC,MAAM,CAACjC,KAAK,GAAGF;EAC5C,CAAC,CAAC,CAAC;EAEH,MAAM;IAAE0C,MAAM;IAAEC;EAAU,CAAC,GAAG5E,OAAO,CAAC,MAAM;IAC1C,MAAM6E,GAAa,GAAG,EAAE;IACxB,MAAMC,EAAY,GAAG,EAAE;IACvB,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGhD,UAAU,EAAEgD,CAAC,IAAI,CAAC,EAAE;MACtC,MAAMC,CAAC,GAAGD,CAAC,IAAIhD,UAAU,GAAG,CAAC,CAAC;MAC9B8C,GAAG,CAACI,IAAI,CAAC5C,SAAS,CAACC,KAAK,EAAE4C,IAAI,CAACC,GAAG,CAACH,CAAC,EAAElD,UAAU,CAAC,GAAG8B,SAAS,CAAC,CAAC;MAC/DkB,EAAE,CAACG,IAAI,CAACD,CAAC,CAAC;IACZ;IACA,OAAO;MACLL,MAAM,EAAEE,GAAwD;MAChED,SAAS,EAAEE;IACb,CAAC;EACH,CAAC,EAAE,CAACxC,KAAK,EAAEsB,SAAS,CAAC,CAAC;EAEtB,oBACE5C,IAAA,CAACb,QAAQ,CAACD,IAAI;IACZkB,GAAG,EAAEA;IACL;IACA;IAAA;IACAgE,aAAa,EAAC,MAAM;IACpBC,2BAA2B;IAC3BC,yBAAyB,EAAC,qBAAqB;IAC/CpE,SAAS,EAAEL,EAAE,CAAC,kCAAkC,EAAEK,SAAS,CAAE;IAC7D4C,KAAK,EAAE,CAACK,KAAK,GAAGF,SAAS,GAAGQ,SAAS,EAAEX,KAAK,CAAE;IAAA,GAC1C3C,KAAK;IAAAoE,QAAA,eAOTvE,IAAA,CAACL,cAAc;MACbgE,MAAM,EAAEA,MAAO;MACfC,SAAS,EAAEA,SAAU;MACrBd,KAAK,EAAE7D,UAAU,CAACuF;IAAa,CAChC;EAAC,CACW,CAAC;AAEpB,CACF,CAAC;AACD9B,QAAQ,CAACrC,WAAW,GAAG,WAAW;AAElC,OAAO,MAAMoE,IAAI,GAAGC,MAAM,CAACC,MAAM,CAAC1E,QAAQ,EAAE;EAC1C2E,MAAM,EAAEtE,UAAU;EAClBuE,KAAK,EAAEtE,SAAS;EAChBuE,WAAW,EAAEpE,eAAe;EAC5BqE,OAAO,EAAEnE,WAAW;EACpBoE,MAAM,EAAEnE,UAAU;EAClBoE,IAAI,EAAEvC;AACR,CAAC,CAAC","ignoreList":[]}
|