@tamagui/checkbox 1.3.0 → 1.4.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/dist/cjs/Checkbox.js +124 -121
- package/dist/cjs/Checkbox.js.map +2 -2
- package/dist/esm/Checkbox.js +125 -124
- package/dist/esm/Checkbox.js.map +2 -2
- package/dist/esm/Checkbox.mjs +125 -124
- package/dist/esm/Checkbox.mjs.map +2 -2
- package/dist/jsx/Checkbox.js +111 -110
- package/dist/jsx/Checkbox.js.map +2 -2
- package/dist/jsx/Checkbox.mjs +111 -110
- package/dist/jsx/Checkbox.mjs.map +2 -2
- package/package.json +11 -11
- package/src/Checkbox.tsx +140 -138
- package/types/Checkbox.d.ts +8 -3
- package/types/Checkbox.d.ts.map +1 -1
package/src/Checkbox.tsx
CHANGED
|
@@ -7,10 +7,8 @@ import {
|
|
|
7
7
|
SizeTokens,
|
|
8
8
|
TamaguiElement,
|
|
9
9
|
composeEventHandlers,
|
|
10
|
-
getConfig,
|
|
11
10
|
getVariableValue,
|
|
12
11
|
isWeb,
|
|
13
|
-
mergeProps,
|
|
14
12
|
styled,
|
|
15
13
|
useComposedRefs,
|
|
16
14
|
useMediaPropsActive,
|
|
@@ -24,7 +22,7 @@ import { getFontSize } from '@tamagui/font-size'
|
|
|
24
22
|
import { getSize, stepTokenUpOrDown } from '@tamagui/get-size'
|
|
25
23
|
import { useGetThemedIcon } from '@tamagui/helpers-tamagui'
|
|
26
24
|
import { useLabelContext } from '@tamagui/label'
|
|
27
|
-
import { ThemeableStack
|
|
25
|
+
import { ThemeableStack } from '@tamagui/stacks'
|
|
28
26
|
import { useControllableState } from '@tamagui/use-controllable-state'
|
|
29
27
|
import * as React from 'react'
|
|
30
28
|
|
|
@@ -123,47 +121,49 @@ export type CheckboxIndicatorProps = CheckboxIndicatorFrameProps & {
|
|
|
123
121
|
disablePassStyles?: boolean
|
|
124
122
|
}
|
|
125
123
|
|
|
126
|
-
const CheckboxIndicator =
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
124
|
+
const CheckboxIndicator = CheckboxIndicatorFrame.extractable(
|
|
125
|
+
React.forwardRef<TamaguiElement, CheckboxIndicatorProps>(
|
|
126
|
+
(props: ScopedProps<CheckboxIndicatorProps>, forwardedRef) => {
|
|
127
|
+
const {
|
|
128
|
+
__scopeCheckbox,
|
|
129
|
+
children: childrenProp,
|
|
130
|
+
forceMount,
|
|
131
|
+
disablePassStyles,
|
|
132
|
+
...indicatorProps
|
|
133
|
+
} = props
|
|
134
|
+
const context = useCheckboxContext(INDICATOR_NAME, __scopeCheckbox)
|
|
135
|
+
const iconSize =
|
|
136
|
+
(typeof context.size === 'number'
|
|
137
|
+
? context.size * 0.65
|
|
138
|
+
: getFontSize(context.size)) * context.scaleIcon
|
|
139
|
+
const theme = useTheme()
|
|
140
|
+
const getThemedIcon = useGetThemedIcon({ size: iconSize, color: theme.color })
|
|
141
|
+
|
|
142
|
+
const childrens = React.Children.toArray(childrenProp)
|
|
143
|
+
const children = childrens.map((child) => {
|
|
144
|
+
if (disablePassStyles || !React.isValidElement(child)) {
|
|
145
|
+
return child
|
|
146
|
+
}
|
|
147
|
+
return getThemedIcon(child)
|
|
148
|
+
})
|
|
149
|
+
|
|
150
|
+
if (forceMount || isIndeterminate(context.state) || context.state === true)
|
|
151
|
+
return (
|
|
152
|
+
<CheckboxIndicatorFrame
|
|
153
|
+
theme="active"
|
|
154
|
+
data-state={getState(context.state)}
|
|
155
|
+
data-disabled={context.disabled ? '' : undefined}
|
|
156
|
+
pointerEvents="none"
|
|
157
|
+
{...indicatorProps}
|
|
158
|
+
ref={forwardedRef}
|
|
159
|
+
>
|
|
160
|
+
{children}
|
|
161
|
+
</CheckboxIndicatorFrame>
|
|
162
|
+
)
|
|
163
|
+
|
|
164
|
+
return null
|
|
165
|
+
}
|
|
166
|
+
)
|
|
167
167
|
)
|
|
168
168
|
|
|
169
169
|
CheckboxIndicator.displayName = INDICATOR_NAME
|
|
@@ -177,19 +177,24 @@ const CHECKBOX_NAME = 'Checkbox'
|
|
|
177
177
|
export const CheckboxFrame = styled(ThemeableStack, {
|
|
178
178
|
name: CHECKBOX_NAME,
|
|
179
179
|
tag: 'button',
|
|
180
|
-
backgroundColor: '$background',
|
|
181
|
-
alignItems: 'center',
|
|
182
|
-
justifyContent: 'center',
|
|
183
|
-
pressTheme: true,
|
|
184
|
-
focusable: true,
|
|
185
|
-
borderWidth: 2,
|
|
186
|
-
borderColor: 'transparent',
|
|
187
|
-
|
|
188
|
-
focusStyle: {
|
|
189
|
-
borderColor: '$borderColorFocus',
|
|
190
|
-
},
|
|
191
180
|
|
|
192
181
|
variants: {
|
|
182
|
+
unstyled: {
|
|
183
|
+
false: {
|
|
184
|
+
backgroundColor: '$background',
|
|
185
|
+
alignItems: 'center',
|
|
186
|
+
justifyContent: 'center',
|
|
187
|
+
pressTheme: true,
|
|
188
|
+
focusable: true,
|
|
189
|
+
borderWidth: 2,
|
|
190
|
+
borderColor: 'transparent',
|
|
191
|
+
|
|
192
|
+
focusStyle: {
|
|
193
|
+
borderColor: '$borderColorFocus',
|
|
194
|
+
},
|
|
195
|
+
},
|
|
196
|
+
},
|
|
197
|
+
|
|
193
198
|
size: {
|
|
194
199
|
'...size': (val, { tokens }) => {
|
|
195
200
|
const radiusToken = getVariableValue(getSize(val)) / 8
|
|
@@ -202,6 +207,7 @@ export const CheckboxFrame = styled(ThemeableStack, {
|
|
|
202
207
|
|
|
203
208
|
defaultVariants: {
|
|
204
209
|
size: '$true',
|
|
210
|
+
unstyled: false,
|
|
205
211
|
},
|
|
206
212
|
})
|
|
207
213
|
|
|
@@ -230,6 +236,7 @@ export interface CheckboxProps
|
|
|
230
236
|
value?: string
|
|
231
237
|
native?: boolean
|
|
232
238
|
scaleIcon?: number
|
|
239
|
+
scaleSize?: number
|
|
233
240
|
sizeAdjust?: number
|
|
234
241
|
}
|
|
235
242
|
|
|
@@ -245,6 +252,7 @@ export const Checkbox = withStaticProperties(
|
|
|
245
252
|
defaultChecked,
|
|
246
253
|
required,
|
|
247
254
|
scaleIcon = 1,
|
|
255
|
+
scaleSize = 0.45,
|
|
248
256
|
sizeAdjust = 0,
|
|
249
257
|
disabled,
|
|
250
258
|
value = 'on',
|
|
@@ -268,13 +276,15 @@ export const Checkbox = withStaticProperties(
|
|
|
268
276
|
onChange: onCheckedChange,
|
|
269
277
|
})
|
|
270
278
|
|
|
271
|
-
const
|
|
272
|
-
|
|
279
|
+
const adjustedSize = getVariableValue(
|
|
280
|
+
stepTokenUpOrDown('size', propsActive.size, sizeAdjust)
|
|
281
|
+
)
|
|
282
|
+
const size = scaleSize ? Math.round(adjustedSize * scaleSize) : adjustedSize
|
|
273
283
|
|
|
274
284
|
const labelId = useLabelContext(button)
|
|
275
285
|
const labelledBy = ariaLabelledby || labelId
|
|
276
286
|
|
|
277
|
-
if (
|
|
287
|
+
if (process.env.TAMAGUI_TARGET === 'native') {
|
|
278
288
|
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
279
289
|
React.useEffect(() => {
|
|
280
290
|
if (!props.id) return
|
|
@@ -288,85 +298,82 @@ export const Checkbox = withStaticProperties(
|
|
|
288
298
|
}
|
|
289
299
|
|
|
290
300
|
return (
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
301
|
+
<CheckboxProvider
|
|
302
|
+
scope={__scopeCheckbox}
|
|
303
|
+
state={checked}
|
|
304
|
+
disabled={disabled}
|
|
305
|
+
size={size}
|
|
306
|
+
scaleIcon={scaleIcon}
|
|
307
|
+
>
|
|
308
|
+
{isWeb && native ? (
|
|
309
|
+
<BubbleInput
|
|
310
|
+
control={button}
|
|
311
|
+
bubbles={!hasConsumerStoppedPropagationRef.current}
|
|
312
|
+
name={name}
|
|
313
|
+
value={value}
|
|
314
|
+
checked={checked}
|
|
315
|
+
required={required}
|
|
316
|
+
disabled={disabled}
|
|
317
|
+
id={props.id}
|
|
318
|
+
/>
|
|
319
|
+
) : (
|
|
320
|
+
<>
|
|
321
|
+
<CheckboxFrame
|
|
322
|
+
width={size}
|
|
323
|
+
height={size}
|
|
324
|
+
theme={checked ? 'active' : null}
|
|
325
|
+
tag="button"
|
|
326
|
+
role="checkbox"
|
|
327
|
+
aria-labelledby={labelledBy}
|
|
328
|
+
aria-checked={isIndeterminate(checked) ? 'mixed' : checked}
|
|
329
|
+
aria-required={required}
|
|
330
|
+
data-state={getState(checked)}
|
|
331
|
+
data-disabled={disabled ? '' : undefined}
|
|
308
332
|
disabled={disabled}
|
|
309
|
-
|
|
333
|
+
{...checkboxProps}
|
|
334
|
+
ref={composedRefs}
|
|
335
|
+
{...(isWeb && {
|
|
336
|
+
type: 'button',
|
|
337
|
+
value,
|
|
338
|
+
onKeyDown: composeEventHandlers(
|
|
339
|
+
(props as React.HTMLProps<HTMLButtonElement>).onKeyDown,
|
|
340
|
+
(event) => {
|
|
341
|
+
// According to WAI ARIA, Checkboxes don't activate on enter keypress
|
|
342
|
+
if (event.key === 'Enter') event.preventDefault()
|
|
343
|
+
}
|
|
344
|
+
),
|
|
345
|
+
})}
|
|
346
|
+
onPress={composeEventHandlers(props.onPress as any, (event) => {
|
|
347
|
+
setChecked((prevChecked) =>
|
|
348
|
+
isIndeterminate(prevChecked) ? true : !prevChecked
|
|
349
|
+
)
|
|
350
|
+
if (isFormControl) {
|
|
351
|
+
hasConsumerStoppedPropagationRef.current =
|
|
352
|
+
event.isPropagationStopped()
|
|
353
|
+
// if checkbox is in a form, stop propagation from the button so that we only propagate
|
|
354
|
+
// one click event (from the input). We propagate changes from an input so that native
|
|
355
|
+
// form validation works and form events reflect checkbox updates.
|
|
356
|
+
if (!hasConsumerStoppedPropagationRef.current)
|
|
357
|
+
event.stopPropagation()
|
|
358
|
+
}
|
|
359
|
+
})}
|
|
310
360
|
/>
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
<
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
aria-required={required}
|
|
322
|
-
data-state={getState(checked)}
|
|
323
|
-
data-disabled={disabled ? '' : undefined}
|
|
361
|
+
|
|
362
|
+
{isWeb && isFormControl ? (
|
|
363
|
+
<BubbleInput
|
|
364
|
+
isHidden
|
|
365
|
+
control={button}
|
|
366
|
+
bubbles={!hasConsumerStoppedPropagationRef.current}
|
|
367
|
+
name={name}
|
|
368
|
+
value={value}
|
|
369
|
+
checked={checked}
|
|
370
|
+
required={required}
|
|
324
371
|
disabled={disabled}
|
|
325
|
-
{...checkboxProps}
|
|
326
|
-
ref={composedRefs}
|
|
327
|
-
{...(isWeb && {
|
|
328
|
-
type: 'button',
|
|
329
|
-
value: value,
|
|
330
|
-
onKeyDown: composeEventHandlers(
|
|
331
|
-
(props as React.HTMLProps<HTMLButtonElement>).onKeyDown,
|
|
332
|
-
(event) => {
|
|
333
|
-
// According to WAI ARIA, Checkboxes don't activate on enter keypress
|
|
334
|
-
if (event.key === 'Enter') event.preventDefault()
|
|
335
|
-
}
|
|
336
|
-
),
|
|
337
|
-
})}
|
|
338
|
-
onPress={composeEventHandlers(props.onPress as any, (event) => {
|
|
339
|
-
setChecked((prevChecked) =>
|
|
340
|
-
isIndeterminate(prevChecked) ? true : !prevChecked
|
|
341
|
-
)
|
|
342
|
-
if (isFormControl) {
|
|
343
|
-
hasConsumerStoppedPropagationRef.current =
|
|
344
|
-
event.isPropagationStopped()
|
|
345
|
-
// if checkbox is in a form, stop propagation from the button so that we only propagate
|
|
346
|
-
// one click event (from the input). We propagate changes from an input so that native
|
|
347
|
-
// form validation works and form events reflect checkbox updates.
|
|
348
|
-
if (!hasConsumerStoppedPropagationRef.current)
|
|
349
|
-
event.stopPropagation()
|
|
350
|
-
}
|
|
351
|
-
})}
|
|
352
372
|
/>
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
control={button}
|
|
358
|
-
bubbles={!hasConsumerStoppedPropagationRef.current}
|
|
359
|
-
name={name}
|
|
360
|
-
value={value}
|
|
361
|
-
checked={checked}
|
|
362
|
-
required={required}
|
|
363
|
-
disabled={disabled}
|
|
364
|
-
/>
|
|
365
|
-
) : null}
|
|
366
|
-
</>
|
|
367
|
-
)}
|
|
368
|
-
</CheckboxProvider>
|
|
369
|
-
</YStack>
|
|
373
|
+
) : null}
|
|
374
|
+
</>
|
|
375
|
+
)}
|
|
376
|
+
</CheckboxProvider>
|
|
370
377
|
)
|
|
371
378
|
}
|
|
372
379
|
)
|
|
@@ -379,8 +386,3 @@ export const Checkbox = withStaticProperties(
|
|
|
379
386
|
Checkbox.displayName = CHECKBOX_NAME
|
|
380
387
|
|
|
381
388
|
export { createCheckboxScope }
|
|
382
|
-
|
|
383
|
-
const cloneElementWithPropOrder = (child: any, props: Object) => {
|
|
384
|
-
const next = mergeProps(child.props, props, false, getConfig().shorthands)[0]
|
|
385
|
-
return React.cloneElement({ ...child, props: null }, next)
|
|
386
|
-
}
|
package/types/Checkbox.d.ts
CHANGED
|
@@ -152,7 +152,8 @@ export declare const CheckboxFrame: import("@tamagui/core").TamaguiComponent<Omi
|
|
|
152
152
|
readonly bordered?: number | boolean | undefined;
|
|
153
153
|
readonly transparent?: boolean | undefined;
|
|
154
154
|
readonly chromeless?: boolean | "all" | undefined;
|
|
155
|
-
}, "size"> & {
|
|
155
|
+
}, "size" | "unstyled"> & {
|
|
156
|
+
readonly unstyled?: boolean | undefined;
|
|
156
157
|
readonly size?: SizeTokens | undefined;
|
|
157
158
|
} & import("@tamagui/core").MediaProps<Partial<Omit<import("react-native").ViewProps, "display" | "children" | "onLayout" | keyof import("react-native").GestureResponderHandlers> & import("@tamagui/core").ExtendBaseStackProps & import("@tamagui/core").TamaguiComponentPropsBase & import("@tamagui/core").WithThemeValues<import("@tamagui/core").StackStylePropsBase> & import("@tamagui/core").WithShorthands<import("@tamagui/core").WithThemeValues<import("@tamagui/core").StackStylePropsBase>> & import("@tamagui/core/types/reactNativeTypes").RNViewProps & Omit<{
|
|
158
159
|
readonly fullscreen?: boolean | undefined;
|
|
@@ -169,7 +170,8 @@ export declare const CheckboxFrame: import("@tamagui/core").TamaguiComponent<Omi
|
|
|
169
170
|
readonly bordered?: number | boolean | undefined;
|
|
170
171
|
readonly transparent?: boolean | undefined;
|
|
171
172
|
readonly chromeless?: boolean | "all" | undefined;
|
|
172
|
-
}, "size"> & {
|
|
173
|
+
}, "size" | "unstyled"> & {
|
|
174
|
+
readonly unstyled?: boolean | undefined;
|
|
173
175
|
readonly size?: SizeTokens | undefined;
|
|
174
176
|
}>> & import("@tamagui/core").PseudoProps<Partial<Omit<import("react-native").ViewProps, "display" | "children" | "onLayout" | keyof import("react-native").GestureResponderHandlers> & import("@tamagui/core").ExtendBaseStackProps & import("@tamagui/core").TamaguiComponentPropsBase & import("@tamagui/core").WithThemeValues<import("@tamagui/core").StackStylePropsBase> & import("@tamagui/core").WithShorthands<import("@tamagui/core").WithThemeValues<import("@tamagui/core").StackStylePropsBase>> & import("@tamagui/core/types/reactNativeTypes").RNViewProps & Omit<{
|
|
175
177
|
readonly fullscreen?: boolean | undefined;
|
|
@@ -186,7 +188,8 @@ export declare const CheckboxFrame: import("@tamagui/core").TamaguiComponent<Omi
|
|
|
186
188
|
readonly bordered?: number | boolean | undefined;
|
|
187
189
|
readonly transparent?: boolean | undefined;
|
|
188
190
|
readonly chromeless?: boolean | "all" | undefined;
|
|
189
|
-
}, "size"> & {
|
|
191
|
+
}, "size" | "unstyled"> & {
|
|
192
|
+
readonly unstyled?: boolean | undefined;
|
|
190
193
|
readonly size?: SizeTokens | undefined;
|
|
191
194
|
}>>, TamaguiElement, Omit<import("react-native").ViewProps, "display" | "children" | "onLayout" | keyof import("react-native").GestureResponderHandlers> & import("@tamagui/core").ExtendBaseStackProps & import("@tamagui/core").TamaguiComponentPropsBase & import("@tamagui/core").WithThemeValues<import("@tamagui/core").StackStylePropsBase> & import("@tamagui/core").WithShorthands<import("@tamagui/core").WithThemeValues<import("@tamagui/core").StackStylePropsBase>> & import("@tamagui/core/types/reactNativeTypes").RNViewProps, {
|
|
192
195
|
readonly fullscreen?: boolean | undefined;
|
|
@@ -204,6 +207,7 @@ export declare const CheckboxFrame: import("@tamagui/core").TamaguiComponent<Omi
|
|
|
204
207
|
readonly transparent?: boolean | undefined;
|
|
205
208
|
readonly chromeless?: boolean | "all" | undefined;
|
|
206
209
|
} & {
|
|
210
|
+
readonly unstyled?: boolean | undefined;
|
|
207
211
|
readonly size?: SizeTokens | undefined;
|
|
208
212
|
}>;
|
|
209
213
|
declare const createCheckboxScope: import("@tamagui/create-context").CreateScope;
|
|
@@ -218,6 +222,7 @@ export interface CheckboxProps extends Omit<CheckboxFrameProps, 'checked' | 'def
|
|
|
218
222
|
value?: string;
|
|
219
223
|
native?: boolean;
|
|
220
224
|
scaleIcon?: number;
|
|
225
|
+
scaleSize?: number;
|
|
221
226
|
sizeAdjust?: number;
|
|
222
227
|
}
|
|
223
228
|
export declare const Checkbox: React.ForwardRefExoticComponent<CheckboxProps & React.RefAttributes<HTMLButtonElement>> & {
|
package/types/Checkbox.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Checkbox.d.ts","sourceRoot":"","sources":["../src/Checkbox.tsx"],"names":[],"mappings":"AAIA,OAAO,EACL,QAAQ,EACR,UAAU,EACV,cAAc,
|
|
1
|
+
{"version":3,"file":"Checkbox.d.ts","sourceRoot":"","sources":["../src/Checkbox.tsx"],"names":[],"mappings":"AAIA,OAAO,EACL,QAAQ,EACR,UAAU,EACV,cAAc,EASf,MAAM,eAAe,CAAA;AAUtB,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,eAAe,CAAA;AAEpD,wBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,IAAI,eAAe,CAElF;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,YAAY,6CAE7C;AAED,KAAK,UAAU,GAAG,GAAG,CAAA;AACrB,UAAU,gBAAiB,SAAQ,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC;IAC5D,OAAO,EAAE,YAAY,CAAA;IACrB,OAAO,EAAE,WAAW,GAAG,IAAI,CAAA;IAC3B,OAAO,EAAE,OAAO,CAAA;IAEhB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,eAAO,MAAM,WAAW,UAAW,gBAAgB,gBAkDlD,CAAA;AAQD,QAAA,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAE1B,CAAA;AAEF,KAAK,2BAA2B,GAAG,QAAQ,CAAC,OAAO,sBAAsB,CAAC,CAAA;AAE1E,MAAM,MAAM,sBAAsB,GAAG,2BAA2B,GAAG;IACjE;;;OAGG;IACH,UAAU,CAAC,EAAE,IAAI,CAAA;IACjB;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAC5B,CAAA;AAuDD,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmCxB,CAAA;AAGF,QAAA,MAA8B,mBAAmB,+CAAqC,CAAA;AAYtF,KAAK,kBAAkB,GAAG,QAAQ,CAAC,OAAO,aAAa,CAAC,CAAA;AACxD,MAAM,WAAW,aACf,SAAQ,IAAI,CAAC,kBAAkB,EAAE,SAAS,GAAG,gBAAgB,CAAC;IAC9D,OAAO,CAAC,EAAE,YAAY,CAAA;IACtB,cAAc,CAAC,EAAE,YAAY,CAAA;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,eAAe,CAAC,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAAA;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAlInB;;;WAGG;;QAEH;;WAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAPH;;;WAGG;;QAEH;;WAEG;;;CAwQJ,CAAA;AAID,OAAO,EAAE,mBAAmB,EAAE,CAAA"}
|