@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/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, YStack } from '@tamagui/stacks'
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 = React.forwardRef<TamaguiElement, CheckboxIndicatorProps>(
127
- (props: ScopedProps<CheckboxIndicatorProps>, forwardedRef) => {
128
- const {
129
- __scopeCheckbox,
130
- children: childrenProp,
131
- forceMount,
132
- disablePassStyles,
133
- ...indicatorProps
134
- } = props
135
- const context = useCheckboxContext(INDICATOR_NAME, __scopeCheckbox)
136
- const iconSize =
137
- (typeof context.size === 'number'
138
- ? context.size * 0.65
139
- : getFontSize(context.size)) * context.scaleIcon
140
- const theme = useTheme()
141
- const getThemedIcon = useGetThemedIcon({ size: iconSize, color: theme.color })
142
-
143
- const childrens = React.Children.toArray(childrenProp)
144
- const children = childrens.map((child) => {
145
- if (disablePassStyles || !React.isValidElement(child)) {
146
- return child
147
- }
148
- return getThemedIcon(child)
149
- })
150
-
151
- if (forceMount || isIndeterminate(context.state) || context.state === true)
152
- return (
153
- <CheckboxIndicatorFrame
154
- theme="active"
155
- data-state={getState(context.state)}
156
- data-disabled={context.disabled ? '' : undefined}
157
- pointerEvents="none"
158
- {...indicatorProps}
159
- ref={forwardedRef}
160
- >
161
- {children}
162
- </CheckboxIndicatorFrame>
163
- )
164
-
165
- return null
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 adjustedSizeToken = stepTokenUpOrDown('size', propsActive.size, sizeAdjust)
272
- const size = Math.floor(getVariableValue(adjustedSizeToken) * 0.5)
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 (!isWeb) {
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
- // YStack is here to provide theme for native input
292
- <YStack asChild theme={checkboxProps.theme}>
293
- <CheckboxProvider
294
- scope={__scopeCheckbox}
295
- state={checked}
296
- disabled={disabled}
297
- size={size}
298
- scaleIcon={scaleIcon}
299
- >
300
- {isWeb && native ? (
301
- <BubbleInput
302
- control={button}
303
- bubbles={!hasConsumerStoppedPropagationRef.current}
304
- name={name}
305
- value={value}
306
- checked={checked}
307
- required={required}
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
- id={props.id}
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
- <CheckboxFrame
314
- width={size}
315
- height={size}
316
- theme={checked ? 'active' : null}
317
- tag="button"
318
- role="checkbox"
319
- aria-labelledby={labelledBy}
320
- aria-checked={isIndeterminate(checked) ? 'mixed' : checked}
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
- {isWeb && isFormControl ? (
355
- <BubbleInput
356
- isHidden
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
- }
@@ -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>> & {
@@ -1 +1 @@
1
- {"version":3,"file":"Checkbox.d.ts","sourceRoot":"","sources":["../src/Checkbox.tsx"],"names":[],"mappings":"AAIA,OAAO,EACL,QAAQ,EACR,UAAU,EACV,cAAc,EAWf,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;AAqDD,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6BxB,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,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAzHnB;;;WAGG;;QAEH;;WAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAPH;;;WAGG;;QAEH;;WAEG;;;CA+PJ,CAAA;AAID,OAAO,EAAE,mBAAmB,EAAE,CAAA"}
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"}