panelui-native 0.6.0 → 0.9.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.
Files changed (181) hide show
  1. package/README.md +1 -1
  2. package/lib/module/components/accordion/index.js +7 -5
  3. package/lib/module/components/accordion/index.js.map +1 -1
  4. package/lib/module/components/alert/index.js +3 -6
  5. package/lib/module/components/alert/index.js.map +1 -1
  6. package/lib/module/components/attachment/index.js +219 -0
  7. package/lib/module/components/attachment/index.js.map +1 -0
  8. package/lib/module/components/bottom-sheet/index.js +82 -4
  9. package/lib/module/components/bottom-sheet/index.js.map +1 -1
  10. package/lib/module/components/button/index.js +36 -1
  11. package/lib/module/components/button/index.js.map +1 -1
  12. package/lib/module/components/dialog/index.js +6 -2
  13. package/lib/module/components/dialog/index.js.map +1 -1
  14. package/lib/module/components/empty-state/index.js +98 -22
  15. package/lib/module/components/empty-state/index.js.map +1 -1
  16. package/lib/module/components/inline-select/index.js +171 -46
  17. package/lib/module/components/inline-select/index.js.map +1 -1
  18. package/lib/module/components/input/index.js +28 -5
  19. package/lib/module/components/input/index.js.map +1 -1
  20. package/lib/module/components/input-group/index.js +0 -1
  21. package/lib/module/components/input-group/index.js.map +1 -1
  22. package/lib/module/components/item/index.js +359 -0
  23. package/lib/module/components/item/index.js.map +1 -0
  24. package/lib/module/components/label/index.js +5 -3
  25. package/lib/module/components/label/index.js.map +1 -1
  26. package/lib/module/components/line-chart/index.js +1024 -0
  27. package/lib/module/components/line-chart/index.js.map +1 -0
  28. package/lib/module/components/marker/index.js +190 -0
  29. package/lib/module/components/marker/index.js.map +1 -0
  30. package/lib/module/components/message/index.js +334 -0
  31. package/lib/module/components/message/index.js.map +1 -0
  32. package/lib/module/components/message-scroller/index.js +451 -0
  33. package/lib/module/components/message-scroller/index.js.map +1 -0
  34. package/lib/module/components/popover/index.js +500 -0
  35. package/lib/module/components/popover/index.js.map +1 -0
  36. package/lib/module/components/radio-group/index.js +104 -16
  37. package/lib/module/components/radio-group/index.js.map +1 -1
  38. package/lib/module/components/scroll-fade/index.js +119 -71
  39. package/lib/module/components/scroll-fade/index.js.map +1 -1
  40. package/lib/module/components/select/index.js +35 -6
  41. package/lib/module/components/select/index.js.map +1 -1
  42. package/lib/module/components/separator/index.js +91 -0
  43. package/lib/module/components/separator/index.js.map +1 -0
  44. package/lib/module/components/shimmer/index.js +111 -64
  45. package/lib/module/components/shimmer/index.js.map +1 -1
  46. package/lib/module/components/surface/index.js +24 -4
  47. package/lib/module/components/surface/index.js.map +1 -1
  48. package/lib/module/components/switch/index.js +20 -1
  49. package/lib/module/components/switch/index.js.map +1 -1
  50. package/lib/module/components/toast/index.js +7 -8
  51. package/lib/module/components/toast/index.js.map +1 -1
  52. package/lib/module/components/typography/index.js +3 -3
  53. package/lib/module/hooks/index.js +1 -0
  54. package/lib/module/hooks/index.js.map +1 -1
  55. package/lib/module/hooks/use-breakpoint.js +2 -2
  56. package/lib/module/hooks/use-copy-to-clipboard.js +0 -2
  57. package/lib/module/hooks/use-copy-to-clipboard.js.map +1 -1
  58. package/lib/module/hooks/use-keyboard-avoidance.js +120 -0
  59. package/lib/module/hooks/use-keyboard-avoidance.js.map +1 -0
  60. package/lib/module/icons/index.js +73 -4
  61. package/lib/module/icons/index.js.map +1 -1
  62. package/lib/module/index.js +13 -1
  63. package/lib/module/index.js.map +1 -1
  64. package/lib/module/native/index.js +53 -0
  65. package/lib/module/native/index.js.map +1 -0
  66. package/lib/module/primitives/keyboard-avoider.js +40 -0
  67. package/lib/module/primitives/keyboard-avoider.js.map +1 -0
  68. package/lib/module/primitives/scrim.js +72 -0
  69. package/lib/module/primitives/scrim.js.map +1 -0
  70. package/lib/module/providers/panel-ui-provider.js +24 -4
  71. package/lib/module/providers/panel-ui-provider.js.map +1 -1
  72. package/lib/module/theme/use-theme.js +1 -1
  73. package/lib/typescript/src/components/accordion/index.d.ts +7 -5
  74. package/lib/typescript/src/components/accordion/index.d.ts.map +1 -1
  75. package/lib/typescript/src/components/alert/index.d.ts +3 -6
  76. package/lib/typescript/src/components/alert/index.d.ts.map +1 -1
  77. package/lib/typescript/src/components/attachment/index.d.ts +93 -0
  78. package/lib/typescript/src/components/attachment/index.d.ts.map +1 -0
  79. package/lib/typescript/src/components/bottom-sheet/index.d.ts +27 -2
  80. package/lib/typescript/src/components/bottom-sheet/index.d.ts.map +1 -1
  81. package/lib/typescript/src/components/button/index.d.ts +11 -0
  82. package/lib/typescript/src/components/button/index.d.ts.map +1 -1
  83. package/lib/typescript/src/components/dialog/index.d.ts +7 -1
  84. package/lib/typescript/src/components/dialog/index.d.ts.map +1 -1
  85. package/lib/typescript/src/components/empty-state/index.d.ts +156 -7
  86. package/lib/typescript/src/components/empty-state/index.d.ts.map +1 -1
  87. package/lib/typescript/src/components/inline-select/index.d.ts +29 -6
  88. package/lib/typescript/src/components/inline-select/index.d.ts.map +1 -1
  89. package/lib/typescript/src/components/input/index.d.ts +13 -0
  90. package/lib/typescript/src/components/input/index.d.ts.map +1 -1
  91. package/lib/typescript/src/components/input-group/index.d.ts +0 -1
  92. package/lib/typescript/src/components/input-group/index.d.ts.map +1 -1
  93. package/lib/typescript/src/components/item/index.d.ts +286 -0
  94. package/lib/typescript/src/components/item/index.d.ts.map +1 -0
  95. package/lib/typescript/src/components/label/index.d.ts +5 -3
  96. package/lib/typescript/src/components/label/index.d.ts.map +1 -1
  97. package/lib/typescript/src/components/line-chart/index.d.ts +247 -0
  98. package/lib/typescript/src/components/line-chart/index.d.ts.map +1 -0
  99. package/lib/typescript/src/components/marker/index.d.ts +137 -0
  100. package/lib/typescript/src/components/marker/index.d.ts.map +1 -0
  101. package/lib/typescript/src/components/message/index.d.ts +177 -0
  102. package/lib/typescript/src/components/message/index.d.ts.map +1 -0
  103. package/lib/typescript/src/components/message-scroller/index.d.ts +150 -0
  104. package/lib/typescript/src/components/message-scroller/index.d.ts.map +1 -0
  105. package/lib/typescript/src/components/popover/index.d.ts +130 -0
  106. package/lib/typescript/src/components/popover/index.d.ts.map +1 -0
  107. package/lib/typescript/src/components/radio-group/index.d.ts +32 -0
  108. package/lib/typescript/src/components/radio-group/index.d.ts.map +1 -1
  109. package/lib/typescript/src/components/scroll-fade/index.d.ts +18 -9
  110. package/lib/typescript/src/components/scroll-fade/index.d.ts.map +1 -1
  111. package/lib/typescript/src/components/select/index.d.ts +16 -1
  112. package/lib/typescript/src/components/select/index.d.ts.map +1 -1
  113. package/lib/typescript/src/components/separator/index.d.ts +47 -0
  114. package/lib/typescript/src/components/separator/index.d.ts.map +1 -0
  115. package/lib/typescript/src/components/shimmer/index.d.ts +38 -20
  116. package/lib/typescript/src/components/shimmer/index.d.ts.map +1 -1
  117. package/lib/typescript/src/components/surface/index.d.ts +51 -2
  118. package/lib/typescript/src/components/surface/index.d.ts.map +1 -1
  119. package/lib/typescript/src/components/switch/index.d.ts +10 -0
  120. package/lib/typescript/src/components/switch/index.d.ts.map +1 -1
  121. package/lib/typescript/src/components/toast/index.d.ts +4 -4
  122. package/lib/typescript/src/components/toast/index.d.ts.map +1 -1
  123. package/lib/typescript/src/hooks/index.d.ts +1 -0
  124. package/lib/typescript/src/hooks/index.d.ts.map +1 -1
  125. package/lib/typescript/src/hooks/use-breakpoint.d.ts +2 -2
  126. package/lib/typescript/src/hooks/use-copy-to-clipboard.d.ts +0 -2
  127. package/lib/typescript/src/hooks/use-copy-to-clipboard.d.ts.map +1 -1
  128. package/lib/typescript/src/hooks/use-keyboard-avoidance.d.ts +20 -0
  129. package/lib/typescript/src/hooks/use-keyboard-avoidance.d.ts.map +1 -0
  130. package/lib/typescript/src/icons/index.d.ts +10 -4
  131. package/lib/typescript/src/icons/index.d.ts.map +1 -1
  132. package/lib/typescript/src/index.d.ts +11 -1
  133. package/lib/typescript/src/index.d.ts.map +1 -1
  134. package/lib/typescript/src/native/index.d.ts +35 -0
  135. package/lib/typescript/src/native/index.d.ts.map +1 -0
  136. package/lib/typescript/src/primitives/keyboard-avoider.d.ts +22 -0
  137. package/lib/typescript/src/primitives/keyboard-avoider.d.ts.map +1 -0
  138. package/lib/typescript/src/primitives/scrim.d.ts +21 -0
  139. package/lib/typescript/src/primitives/scrim.d.ts.map +1 -0
  140. package/lib/typescript/src/providers/panel-ui-provider.d.ts +1 -1
  141. package/lib/typescript/src/providers/panel-ui-provider.d.ts.map +1 -1
  142. package/lib/typescript/src/theme/use-theme.d.ts +1 -1
  143. package/package.json +16 -3
  144. package/src/components/accordion/index.tsx +7 -5
  145. package/src/components/alert/index.tsx +3 -6
  146. package/src/components/attachment/index.tsx +279 -0
  147. package/src/components/bottom-sheet/index.tsx +102 -2
  148. package/src/components/button/index.tsx +52 -0
  149. package/src/components/dialog/index.tsx +10 -1
  150. package/src/components/empty-state/index.tsx +64 -19
  151. package/src/components/inline-select/index.tsx +191 -44
  152. package/src/components/input/index.tsx +39 -3
  153. package/src/components/input-group/index.tsx +0 -1
  154. package/src/components/item/index.tsx +387 -0
  155. package/src/components/label/index.tsx +5 -3
  156. package/src/components/line-chart/index.tsx +1224 -0
  157. package/src/components/marker/index.tsx +194 -0
  158. package/src/components/message/index.tsx +336 -0
  159. package/src/components/message-scroller/index.tsx +574 -0
  160. package/src/components/popover/index.tsx +599 -0
  161. package/src/components/radio-group/index.tsx +108 -17
  162. package/src/components/scroll-fade/index.tsx +163 -51
  163. package/src/components/select/index.tsx +54 -9
  164. package/src/components/separator/index.tsx +97 -0
  165. package/src/components/shimmer/index.tsx +151 -58
  166. package/src/components/surface/index.tsx +32 -5
  167. package/src/components/switch/index.tsx +27 -1
  168. package/src/components/toast/index.tsx +7 -8
  169. package/src/components/typography/index.tsx +3 -3
  170. package/src/hooks/index.ts +5 -0
  171. package/src/hooks/use-breakpoint.ts +2 -2
  172. package/src/hooks/use-copy-to-clipboard.ts +0 -2
  173. package/src/hooks/use-keyboard-avoidance.ts +140 -0
  174. package/src/icons/index.tsx +52 -4
  175. package/src/index.ts +92 -0
  176. package/src/native/index.ts +79 -0
  177. package/src/primitives/keyboard-avoider.tsx +49 -0
  178. package/src/primitives/scrim.tsx +95 -0
  179. package/src/providers/panel-ui-provider.tsx +30 -9
  180. package/src/theme/use-theme.ts +1 -1
  181. package/theme.css +63 -3
@@ -1,25 +1,85 @@
1
1
  "use strict";
2
2
 
3
+ /**
4
+ * RadioGroup — one choice from a set.
5
+ *
6
+ * The group owns the value and hands each item its selected state through
7
+ * context, so an item is a thin pressable that reports its own value up and
8
+ * reads selection back down.
9
+ *
10
+ * Two shapes, chosen on the group and inherited by every item: `dot` is the
11
+ * classic label-beside-a-disc row; `card` turns the whole surface into the
12
+ * target — for pickable options where the disc is a confirmation rather than
13
+ * the thing you aim at. The card is the same treatment `Checkbox` offers, so a
14
+ * form mixing single- and multi-select choices reads as one family.
15
+ *
16
+ * ```tsx
17
+ * <RadioGroup value={plan} onValueChange={setPlan} variant="card">
18
+ * <RadioGroup.Item value="pro" label="Pro" description="For growing teams" />
19
+ * <RadioGroup.Item value="max" label="Max" description="Everything, uncapped" />
20
+ * </RadioGroup>
21
+ * ```
22
+ */
3
23
  import { createContext, forwardRef, useContext, useEffect, useMemo } from 'react';
4
24
  import { Pressable, View } from 'react-native';
5
25
  import Animated, { useAnimatedStyle, useSharedValue, withSpring, withTiming } from 'react-native-reanimated';
26
+ import { tv } from 'tailwind-variants';
6
27
  import { cn } from "../../utils/cn.js";
7
28
  import { Text } from "../../primitives/text.js";
8
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
29
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
30
+ const itemVariants = tv({
31
+ slots: {
32
+ row: 'flex-row items-center gap-2.5',
33
+ indicator: 'h-5 w-5 items-center justify-center rounded-full border border-input bg-background',
34
+ label: 'text-sm text-foreground',
35
+ description: 'text-xs text-muted-foreground'
36
+ },
37
+ variants: {
38
+ variant: {
39
+ dot: {},
40
+ card: {
41
+ // The whole surface is the target; the disc moves to the trailing edge
42
+ // as a confirmation of the row, not the affordance for it.
43
+ row: 'w-full items-start justify-between gap-3 rounded-xl border border-border bg-card p-4',
44
+ label: 'text-base font-medium'
45
+ }
46
+ },
47
+ selected: {
48
+ true: {}
49
+ },
50
+ disabled: {
51
+ true: {
52
+ row: 'opacity-50'
53
+ }
54
+ }
55
+ },
56
+ compoundVariants: [{
57
+ variant: 'card',
58
+ selected: true,
59
+ class: {
60
+ row: 'border-primary bg-accent'
61
+ }
62
+ }],
63
+ defaultVariants: {
64
+ variant: 'dot'
65
+ }
66
+ });
9
67
  const RadioGroupContext = /*#__PURE__*/createContext(null);
10
68
  const RadioGroupRoot = /*#__PURE__*/forwardRef(({
11
69
  className,
12
70
  value,
13
71
  onValueChange,
14
72
  disabled,
73
+ variant = 'dot',
15
74
  children,
16
75
  ...props
17
76
  }, ref) => {
18
77
  const context = useMemo(() => ({
19
78
  value,
20
79
  onValueChange,
21
- disabled
22
- }), [value, onValueChange, disabled]);
80
+ disabled,
81
+ variant
82
+ }), [value, onValueChange, disabled, variant]);
23
83
  return /*#__PURE__*/_jsx(RadioGroupContext.Provider, {
24
84
  value: context,
25
85
  children: /*#__PURE__*/_jsx(View, {
@@ -36,7 +96,9 @@ const RadioGroupItem = /*#__PURE__*/forwardRef(({
36
96
  className,
37
97
  value,
38
98
  label,
99
+ description,
39
100
  disabled: itemDisabled,
101
+ hideIndicator,
40
102
  children
41
103
  }, ref) => {
42
104
  const context = useContext(RadioGroupContext);
@@ -45,6 +107,7 @@ const RadioGroupItem = /*#__PURE__*/forwardRef(({
45
107
  }
46
108
  const selected = context.value === value;
47
109
  const disabled = itemDisabled || context.disabled;
110
+ const variant = context.variant;
48
111
  const progress = useSharedValue(selected ? 1 : 0);
49
112
  useEffect(() => {
50
113
  progress.value = selected ? withSpring(1, {
@@ -61,7 +124,39 @@ const RadioGroupItem = /*#__PURE__*/forwardRef(({
61
124
  scale: progress.value
62
125
  }]
63
126
  }));
64
- return /*#__PURE__*/_jsxs(Pressable, {
127
+ const slots = itemVariants({
128
+ variant,
129
+ selected,
130
+ disabled: !!disabled
131
+ });
132
+ const indicator = hideIndicator ? null : /*#__PURE__*/_jsx(View, {
133
+ className: slots.indicator(),
134
+ children: /*#__PURE__*/_jsx(Animated.View, {
135
+ style: dotStyle,
136
+ className: "h-2.5 w-2.5 rounded-full bg-primary"
137
+ })
138
+ });
139
+
140
+ // The card lays its text out first so the disc sits at the trailing edge;
141
+ // the dot row keeps the classic disc-then-label order.
142
+ const body = variant === 'card' ? /*#__PURE__*/_jsxs(_Fragment, {
143
+ children: [/*#__PURE__*/_jsxs(View, {
144
+ className: "flex-1 gap-1",
145
+ children: [label ? /*#__PURE__*/_jsx(Text, {
146
+ className: slots.label(),
147
+ children: label
148
+ }) : children, description ? /*#__PURE__*/_jsx(Text, {
149
+ className: slots.description(),
150
+ children: description
151
+ }) : null]
152
+ }), indicator]
153
+ }) : /*#__PURE__*/_jsxs(_Fragment, {
154
+ children: [indicator, label ? /*#__PURE__*/_jsx(Text, {
155
+ className: slots.label(),
156
+ children: label
157
+ }) : children]
158
+ });
159
+ return /*#__PURE__*/_jsx(Pressable, {
65
160
  ref: ref,
66
161
  accessibilityRole: "radio",
67
162
  accessibilityState: {
@@ -71,18 +166,11 @@ const RadioGroupItem = /*#__PURE__*/forwardRef(({
71
166
  accessibilityLabel: label,
72
167
  disabled: disabled,
73
168
  onPress: () => context.onValueChange(value),
74
- hitSlop: 8,
75
- className: cn('flex-row items-center gap-2.5', disabled && 'opacity-50', className),
76
- children: [/*#__PURE__*/_jsx(View, {
77
- className: "h-5 w-5 items-center justify-center rounded-full border border-input bg-background",
78
- children: /*#__PURE__*/_jsx(Animated.View, {
79
- style: dotStyle,
80
- className: "h-2.5 w-2.5 rounded-full bg-primary"
81
- })
82
- }), label ? /*#__PURE__*/_jsx(Text, {
83
- className: "text-sm text-foreground",
84
- children: label
85
- }) : children]
169
+ hitSlop: variant === 'card' ? undefined : 8,
170
+ className: slots.row({
171
+ className
172
+ }),
173
+ children: body
86
174
  });
87
175
  });
88
176
  RadioGroupItem.displayName = 'RadioGroup.Item';
@@ -1 +1 @@
1
- {"version":3,"names":["createContext","forwardRef","useContext","useEffect","useMemo","Pressable","View","Animated","useAnimatedStyle","useSharedValue","withSpring","withTiming","cn","Text","jsx","_jsx","jsxs","_jsxs","RadioGroupContext","RadioGroupRoot","className","value","onValueChange","disabled","children","props","ref","context","Provider","accessibilityRole","displayName","RadioGroupItem","label","itemDisabled","Error","selected","progress","damping","stiffness","mass","duration","dotStyle","opacity","transform","scale","accessibilityState","accessibilityLabel","onPress","hitSlop","style","RadioGroup","Object","assign","Item"],"sourceRoot":"../../../../src","sources":["components/radio-group/index.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["createContext","forwardRef","useContext","useEffect","useMemo","Pressable","View","Animated","useAnimatedStyle","useSharedValue","withSpring","withTiming","tv","cn","Text","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","itemVariants","slots","row","indicator","label","description","variants","variant","dot","card","selected","true","disabled","compoundVariants","class","defaultVariants","RadioGroupContext","RadioGroupRoot","className","value","onValueChange","children","props","ref","context","Provider","accessibilityRole","displayName","RadioGroupItem","itemDisabled","hideIndicator","Error","progress","damping","stiffness","mass","duration","dotStyle","opacity","transform","scale","style","body","accessibilityState","accessibilityLabel","onPress","hitSlop","undefined","RadioGroup","Object","assign","Item"],"sourceRoot":"../../../../src","sources":["components/radio-group/index.tsx"],"mappings":"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","ignoreList":[]}
@@ -3,14 +3,13 @@
3
3
  /**
4
4
  * ScrollFade — fades the edges of a scroll container.
5
5
  *
6
- * The React Native equivalent of shadcn-ui/ui's `scroll-fade` utility
7
- * (https://ui.shadcn.com/docs/utils/scroll-fade), which is CSS `mask-image`
8
- * driven by a scroll timeline. React Native has neither masks nor scroll
9
- * timelines, so the fades are SVG gradients overlaid on each edge, with their
10
- * opacity following the scroll position.
6
+ * Content that runs past a boundary reads better fading out than being cut
7
+ * off, and the fade doubles as an affordance: an edge that is fading is an
8
+ * edge with more content behind it.
11
9
  *
12
- * Composition follows heroui-native's ScrollShadow: wrap the scrollable and
13
- * let the orientation be inferred from its `horizontal` prop.
10
+ * Scroll position, content size and viewport size are all held in shared
11
+ * values and consumed by `useAnimatedStyle`, so the fades track the scroll on
12
+ * the UI thread without re-rendering React.
14
13
  *
15
14
  * ```tsx
16
15
  * <ScrollFade>
@@ -18,61 +17,101 @@
18
17
  * </ScrollFade>
19
18
  * ```
20
19
  */
21
- import { Children, cloneElement, isValidElement, useState } from 'react';
22
- import { View } from 'react-native';
23
- import Svg, { Defs, LinearGradient, Rect, Stop } from 'react-native-svg';
20
+ import { Children, isValidElement, useMemo } from 'react';
21
+ import { StyleSheet, View } from 'react-native';
22
+ import { LinearGradient } from 'expo-linear-gradient';
23
+ import Animated, { useAnimatedScrollHandler, useAnimatedStyle, useComposedEventHandler, useDerivedValue, useSharedValue } from 'react-native-reanimated';
24
24
  import { useCSSVariable } from 'uniwind';
25
25
 
26
26
  /** Past this many pixels from an edge, that edge's fade is fully shown. */
27
27
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
28
- const FADE_IN_DISTANCE = 24;
28
+ const DEFAULT_FADE_IN_DISTANCE = 24;
29
29
  export function ScrollFade({
30
30
  className,
31
31
  size = 48,
32
32
  edges = 'both',
33
+ orientation,
33
34
  color,
35
+ fadeInDistance = DEFAULT_FADE_IN_DISTANCE,
36
+ enabled = true,
34
37
  children,
35
38
  ...props
36
39
  }) {
37
- const [startOpacity, setStartOpacity] = useState(0);
38
- const [endOpacity, setEndOpacity] = useState(0);
40
+ const offset = useSharedValue(0);
41
+ const contentLength = useSharedValue(0);
42
+ const viewportLength = useSharedValue(0);
39
43
  const themeBackground = useCSSVariable('--color-background');
40
44
  const fadeColor = color ?? (typeof themeBackground === 'string' ? themeBackground : '#000000');
41
45
  const child = Children.only(children);
42
- const horizontal = /*#__PURE__*/isValidElement(child) ? !!child.props.horizontal : false;
43
- const handleScroll = event => {
44
- const {
45
- contentOffset,
46
- contentSize,
47
- layoutMeasurement
48
- } = event.nativeEvent;
49
- const offset = horizontal ? contentOffset.x : contentOffset.y;
50
- const total = horizontal ? contentSize.width : contentSize.height;
51
- const visible = horizontal ? layoutMeasurement.width : layoutMeasurement.height;
52
- const remaining = total - visible - offset;
46
+ const horizontal = orientation !== undefined ? orientation === 'horizontal' : /*#__PURE__*/isValidElement(child) && !!child.props.horizontal;
47
+
48
+ // Reanimated can only drive a scroll handler on an animated component, and
49
+ // `Animated.ScrollView` is not necessarily what was passed in — the child may
50
+ // be a FlatList, a SectionList or a custom scrollable. Keyed on the element
51
+ // *type*, not the element: rebuilding the wrapper would remount the list.
52
+ const childType = /*#__PURE__*/isValidElement(child) ? child.type : null;
53
+ const AnimatedScrollable = useMemo(() => childType ? Animated.createAnimatedComponent(childType) : null, [childType]);
54
+ const scrollHandler = useAnimatedScrollHandler({
55
+ onScroll: event => {
56
+ const {
57
+ contentOffset,
58
+ contentSize,
59
+ layoutMeasurement
60
+ } = event;
61
+ offset.value = horizontal ? contentOffset.x : contentOffset.y;
62
+ contentLength.value = horizontal ? contentSize.width : contentSize.height;
63
+ viewportLength.value = horizontal ? layoutMeasurement.width : layoutMeasurement.height;
64
+ }
65
+ });
53
66
 
54
- // Each edge fades in over the first FADE_IN_DISTANCE px of travel, so an
55
- // edge with nothing past it shows nothing.
56
- setStartOpacity(Math.min(offset / FADE_IN_DISTANCE, 1));
57
- setEndOpacity(Math.min(Math.max(remaining, 0) / FADE_IN_DISTANCE, 1));
58
- child.props.onScroll?.(event);
67
+ // A consumer `onScroll` is composed rather than dropped — but because the
68
+ // child is now an animated component it has to be an animated handler too.
69
+ const onScroll = useComposedEventHandler([scrollHandler, child.props.onScroll ?? null]);
70
+
71
+ // Measured up front as well as on scroll, so an end edge with content behind
72
+ // it fades from the first frame rather than waiting for a scroll event.
73
+ const onLayout = event => {
74
+ const {
75
+ width,
76
+ height
77
+ } = event.nativeEvent.layout;
78
+ viewportLength.value = horizontal ? width : height;
79
+ child.props.onLayout?.(event);
80
+ };
81
+ const onContentSizeChange = (width, height) => {
82
+ contentLength.value = horizontal ? width : height;
83
+ child.props.onContentSizeChange?.(width, height);
59
84
  };
60
- const scrollable = /*#__PURE__*/isValidElement(child) ? /*#__PURE__*/cloneElement(child, {
61
- onScroll: handleScroll,
85
+ const startOpacity = useDerivedValue(() => Math.min(offset.value / fadeInDistance, 1));
86
+ const endOpacity = useDerivedValue(() => {
87
+ // Nothing to fade towards when the content fits inside the viewport.
88
+ const remaining = contentLength.value - viewportLength.value - offset.value;
89
+ return Math.min(Math.max(remaining, 0) / fadeInDistance, 1);
90
+ });
91
+ const scrollable = AnimatedScrollable && /*#__PURE__*/isValidElement(child) ? /*#__PURE__*/_jsx(AnimatedScrollable, {
92
+ ...child.props,
93
+ onScroll: onScroll,
94
+ onLayout: onLayout,
95
+ onContentSizeChange: onContentSizeChange,
62
96
  scrollEventThrottle: child.props.scrollEventThrottle ?? 16
63
97
  }) : child;
64
- const showStart = edges !== 'end';
65
- const showEnd = edges !== 'start';
98
+ if (!enabled || edges === 'none') {
99
+ return /*#__PURE__*/_jsx(View, {
100
+ ...props,
101
+ className: className,
102
+ children: scrollable
103
+ });
104
+ }
66
105
  return /*#__PURE__*/_jsxs(View, {
67
106
  ...props,
68
107
  className: className,
69
- children: [scrollable, showStart ? /*#__PURE__*/_jsx(Fade, {
108
+ children: [scrollable, edges !== 'end' ? /*#__PURE__*/_jsx(Fade, {
70
109
  color: fadeColor,
71
110
  size: size,
72
111
  horizontal: horizontal,
73
112
  opacity: startOpacity,
74
113
  edge: "start"
75
- }) : null, showEnd ? /*#__PURE__*/_jsx(Fade, {
114
+ }) : null, edges !== 'start' ? /*#__PURE__*/_jsx(Fade, {
76
115
  color: fadeColor,
77
116
  size: size,
78
117
  horizontal: horizontal,
@@ -92,7 +131,6 @@ function Fade({
92
131
  edge
93
132
  }) {
94
133
  const isStart = edge === 'start';
95
- const id = `scroll-fade-${edge}-${horizontal ? 'x' : 'y'}`;
96
134
  const position = horizontal ? {
97
135
  top: 0,
98
136
  bottom: 0,
@@ -112,45 +150,55 @@ function Fade({
112
150
  bottom: 0
113
151
  })
114
152
  };
153
+ const style = useAnimatedStyle(() => ({
154
+ opacity: opacity.value
155
+ }));
115
156
 
116
- // The gradient runs from the screen edge inwards, so it is reversed on the
157
+ // The gradient runs from the edge inwards, so its stops are reversed on the
117
158
  // end edge.
118
- const [x2, y2] = horizontal ? [1, 0] : [0, 1];
119
- return /*#__PURE__*/_jsx(View, {
159
+ const colors = isStart ? [withAlpha(color, 1), withAlpha(color, 0)] : [withAlpha(color, 0), withAlpha(color, 1)];
160
+ return /*#__PURE__*/_jsx(Animated.View, {
120
161
  pointerEvents: "none",
121
- style: {
122
- position: 'absolute',
123
- opacity,
124
- ...position
125
- },
126
- children: /*#__PURE__*/_jsxs(Svg, {
127
- width: "100%",
128
- height: "100%",
129
- children: [/*#__PURE__*/_jsx(Defs, {
130
- children: /*#__PURE__*/_jsxs(LinearGradient, {
131
- id: id,
132
- x1: "0",
133
- y1: "0",
134
- x2: String(x2),
135
- y2: String(y2),
136
- children: [/*#__PURE__*/_jsx(Stop, {
137
- offset: "0",
138
- stopColor: color,
139
- stopOpacity: isStart ? 1 : 0
140
- }), /*#__PURE__*/_jsx(Stop, {
141
- offset: "1",
142
- stopColor: color,
143
- stopOpacity: isStart ? 0 : 1
144
- })]
145
- })
146
- }), /*#__PURE__*/_jsx(Rect, {
147
- x: "0",
148
- y: "0",
149
- width: "100%",
150
- height: "100%",
151
- fill: `url(#${id})`
152
- })]
162
+ style: [{
163
+ position: 'absolute'
164
+ }, position, style],
165
+ children: /*#__PURE__*/_jsx(LinearGradient, {
166
+ colors: colors,
167
+ start: {
168
+ x: 0,
169
+ y: 0
170
+ },
171
+ end: horizontal ? {
172
+ x: 1,
173
+ y: 0
174
+ } : {
175
+ x: 0,
176
+ y: 1
177
+ },
178
+ style: StyleSheet.absoluteFill
153
179
  })
154
180
  });
155
181
  }
182
+
183
+ /**
184
+ * Gradients need a transparent stop of the *same* colour — `transparent` is
185
+ * black at zero alpha on Android, which shows as a grey smear.
186
+ */
187
+ function withAlpha(color, alpha) {
188
+ if (color.startsWith('#')) {
189
+ const hex = color.slice(1);
190
+ const full = hex.length === 3 ? hex.split('').map(c => c + c).join('') : hex.slice(0, 6);
191
+ const r = parseInt(full.slice(0, 2), 16);
192
+ const g = parseInt(full.slice(2, 4), 16);
193
+ const b = parseInt(full.slice(4, 6), 16);
194
+ if (Number.isNaN(r + g + b)) return color;
195
+ return `rgba(${r}, ${g}, ${b}, ${alpha})`;
196
+ }
197
+ const channels = color.match(/rgba?\(([^)]+)\)/)?.[1];
198
+ if (channels) {
199
+ const [r, g, b] = channels.split(',').map(part => part.trim());
200
+ return `rgba(${r}, ${g}, ${b}, ${alpha})`;
201
+ }
202
+ return color;
203
+ }
156
204
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Children","cloneElement","isValidElement","useState","View","Svg","Defs","LinearGradient","Rect","Stop","useCSSVariable","jsx","_jsx","jsxs","_jsxs","FADE_IN_DISTANCE","ScrollFade","className","size","edges","color","children","props","startOpacity","setStartOpacity","endOpacity","setEndOpacity","themeBackground","fadeColor","child","only","horizontal","handleScroll","event","contentOffset","contentSize","layoutMeasurement","nativeEvent","offset","x","y","total","width","height","visible","remaining","Math","min","max","onScroll","scrollable","scrollEventThrottle","showStart","showEnd","Fade","opacity","edge","displayName","isStart","id","position","top","bottom","left","right","x2","y2","pointerEvents","style","x1","y1","String","stopColor","stopOpacity","fill"],"sourceRoot":"../../../../src","sources":["components/scroll-fade/index.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Children","isValidElement","useMemo","StyleSheet","View","LinearGradient","Animated","useAnimatedScrollHandler","useAnimatedStyle","useComposedEventHandler","useDerivedValue","useSharedValue","useCSSVariable","jsx","_jsx","jsxs","_jsxs","DEFAULT_FADE_IN_DISTANCE","ScrollFade","className","size","edges","orientation","color","fadeInDistance","enabled","children","props","offset","contentLength","viewportLength","themeBackground","fadeColor","child","only","horizontal","undefined","childType","type","AnimatedScrollable","createAnimatedComponent","scrollHandler","onScroll","event","contentOffset","contentSize","layoutMeasurement","value","x","y","width","height","onLayout","nativeEvent","layout","onContentSizeChange","startOpacity","Math","min","endOpacity","remaining","max","scrollable","scrollEventThrottle","Fade","opacity","edge","displayName","isStart","position","top","bottom","left","right","style","colors","withAlpha","pointerEvents","start","end","absoluteFill","alpha","startsWith","hex","slice","full","length","split","map","c","join","r","parseInt","g","b","Number","isNaN","channels","match","part","trim"],"sourceRoot":"../../../../src","sources":["components/scroll-fade/index.tsx"],"mappings":"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","ignoreList":[]}
@@ -5,6 +5,7 @@ import { Pressable, ScrollView, View } from 'react-native';
5
5
  import { tv } from 'tailwind-variants';
6
6
  import { useCSSVariable } from 'uniwind';
7
7
  import { CheckIcon, ChevronDownIcon } from "../../icons/index.js";
8
+ import { getNativeUI } from "../../native/index.js";
8
9
  import { Text } from "../../primitives/text.js";
9
10
  import { BottomSheet } from "../bottom-sheet/index.js";
10
11
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
@@ -75,18 +76,25 @@ function SelectRoot({
75
76
  placeholder = 'Select an option',
76
77
  title,
77
78
  disabled,
79
+ native,
80
+ nativeAppearance = 'menu',
78
81
  children
79
82
  }) {
80
83
  const [open, setOpen] = useState(false);
81
- const selectedLabel = useMemo(() => {
82
- let label;
84
+ const nativeUI = native ? getNativeUI() : null;
85
+ const options = useMemo(() => {
86
+ const collected = [];
83
87
  Children.forEach(children, child => {
84
- if (/*#__PURE__*/isValidElement(child) && child.props.value === value) {
85
- label = child.props.label;
88
+ if (/*#__PURE__*/isValidElement(child)) {
89
+ collected.push({
90
+ value: child.props.value,
91
+ label: child.props.label
92
+ });
86
93
  }
87
94
  });
88
- return label;
89
- }, [children, value]);
95
+ return collected;
96
+ }, [children]);
97
+ const selectedLabel = useMemo(() => options.find(option => option.value === value)?.label, [options, value]);
90
98
  const context = useMemo(() => ({
91
99
  value,
92
100
  onSelect: next => {
@@ -102,6 +110,27 @@ function SelectRoot({
102
110
  disabled: !!disabled
103
111
  });
104
112
  const chevronColor = useCSSVariable('--color-muted-foreground');
113
+ if (nativeUI) {
114
+ const {
115
+ Host,
116
+ Picker
117
+ } = nativeUI;
118
+ // The native picker has no empty state, so an unset value shows the first
119
+ // option rather than the placeholder.
120
+ return /*#__PURE__*/_jsx(Host, {
121
+ matchContents: true,
122
+ children: /*#__PURE__*/_jsx(Picker, {
123
+ selectedValue: value ?? options[0]?.value ?? '',
124
+ onValueChange: next => onValueChange(next),
125
+ appearance: nativeAppearance,
126
+ enabled: !disabled,
127
+ children: options.map(option => /*#__PURE__*/_jsx(Picker.Item, {
128
+ label: option.label,
129
+ value: option.value
130
+ }, option.value))
131
+ })
132
+ });
133
+ }
105
134
  return /*#__PURE__*/_jsxs(SelectContext.Provider, {
106
135
  value: context,
107
136
  children: [/*#__PURE__*/_jsxs(Pressable, {
@@ -1 +1 @@
1
- {"version":3,"names":["Children","createContext","isValidElement","useContext","useMemo","useState","Pressable","ScrollView","View","tv","useCSSVariable","CheckIcon","ChevronDownIcon","Text","BottomSheet","jsx","_jsx","jsxs","_jsxs","selectVariants","slots","trigger","triggerLabel","placeholder","item","itemLabel","itemIndicator","variants","selected","true","disabled","SelectContext","SelectItem","value","label","context","Error","checkColor","accessibilityRole","accessibilityState","onPress","onSelect","className","children","size","color","SelectRoot","onValueChange","title","open","setOpen","selectedLabel","forEach","child","props","next","placeholderSlot","chevronColor","Provider","expanded","onOpenChange","Content","weight","bounces","Select","Object","assign","Item"],"sourceRoot":"../../../../src","sources":["components/select/index.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Children","createContext","isValidElement","useContext","useMemo","useState","Pressable","ScrollView","View","tv","useCSSVariable","CheckIcon","ChevronDownIcon","getNativeUI","Text","BottomSheet","jsx","_jsx","jsxs","_jsxs","selectVariants","slots","trigger","triggerLabel","placeholder","item","itemLabel","itemIndicator","variants","selected","true","disabled","SelectContext","SelectItem","value","label","context","Error","checkColor","accessibilityRole","accessibilityState","onPress","onSelect","className","children","size","color","SelectRoot","onValueChange","title","native","nativeAppearance","open","setOpen","nativeUI","options","collected","forEach","child","push","props","selectedLabel","find","option","next","placeholderSlot","chevronColor","Host","Picker","matchContents","selectedValue","appearance","enabled","map","Item","Provider","expanded","onOpenChange","Content","weight","bounces","Select","Object","assign"],"sourceRoot":"../../../../src","sources":["components/select/index.tsx"],"mappings":";;AAAA,SACEA,QAAQ,EACRC,aAAa,EACbC,cAAc,EACdC,UAAU,EACVC,OAAO,EACPC,QAAQ,QAGH,OAAO;AACd,SAASC,SAAS,EAAEC,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAC1D,SAASC,EAAE,QAAQ,mBAAmB;AACtC,SAASC,cAAc,QAAQ,SAAS;AACxC,SAASC,SAAS,EAAEC,eAAe,QAAQ,sBAAa;AACxD,SAASC,WAAW,QAAQ,uBAAc;AAC1C,SAASC,IAAI,QAAQ,0BAAuB;AAC5C,SAASC,WAAW,QAAQ,0BAAiB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAE9C,MAAMC,cAAc,GAAGX,EAAE,CAAC;EACxBY,KAAK,EAAE;IACLC,OAAO,EACL,8GAA8G;IAChHC,YAAY,EAAE,8CAA8C;IAC5DC,WAAW,EAAE,wCAAwC;IACrDC,IAAI,EAAE,kDAAkD;IACxDC,SAAS,EAAE,8CAA8C;IACzDC,aAAa,EAAE;EACjB,CAAC;EACDC,QAAQ,EAAE;IACRC,QAAQ,EAAE;MACRC,IAAI,EAAE;QAAEL,IAAI,EAAE;MAAY;IAC5B,CAAC;IACDM,QAAQ,EAAE;MACRD,IAAI,EAAE;QAAER,OAAO,EAAE;MAAa;IAChC;EACF;AACF,CAAC,CAAC;AAOF,MAAMU,aAAa,gBAAG/B,aAAa,CAA4B,IAAI,CAAC;AAOpE;AACA,SAASgC,UAAUA,CAAC;EAAEC,KAAK;EAAEC;AAAuB,CAAC,EAAE;EACrD,MAAMC,OAAO,GAAGjC,UAAU,CAAC6B,aAAa,CAAC;EACzC,IAAI,CAACI,OAAO,EAAE;IACZ,MAAM,IAAIC,KAAK,CAAC,4CAA4C,CAAC;EAC/D;EAEA,MAAMR,QAAQ,GAAGO,OAAO,CAACF,KAAK,KAAKA,KAAK;EACxC,MAAM;IAAET,IAAI;IAAEC,SAAS;IAAEC;EAAc,CAAC,GAAGP,cAAc,CAAC;IAAES;EAAS,CAAC,CAAC;EACvE,MAAMS,UAAU,GAAG5B,cAAc,CAAC,0BAA0B,CAAC;EAE7D,oBACES,KAAA,CAACb,SAAS;IACRiC,iBAAiB,EAAC,UAAU;IAC5BC,kBAAkB,EAAE;MAAEX;IAAS,CAAE;IACjCY,OAAO,EAAEA,CAAA,KAAML,OAAO,CAACM,QAAQ,CAACR,KAAK,CAAE;IACvCS,SAAS,EAAElB,IAAI,CAAC,CAAE;IAAAmB,QAAA,gBAElB3B,IAAA,CAACH,IAAI;MAAC6B,SAAS,EAAEjB,SAAS,CAAC,CAAE;MAAAkB,QAAA,EAAET;IAAK,CAAO,CAAC,eAC5ClB,IAAA,CAACT,IAAI;MAACmC,SAAS,EAAEhB,aAAa,CAAC,CAAE;MAAAiB,QAAA,EAC9Bf,QAAQ,gBACPZ,IAAA,CAACN,SAAS;QACRkC,IAAI,EAAE,EAAG;QACTC,KAAK,EAAE,OAAOR,UAAU,KAAK,QAAQ,GAAGA,UAAU,GAAG;MAAU,CAChE,CAAC,GACA;IAAI,CACJ,CAAC;EAAA,CACE,CAAC;AAEhB;AA4BA,SAASS,UAAUA,CAAC;EAClBJ,SAAS;EACTT,KAAK;EACLc,aAAa;EACbxB,WAAW,GAAG,kBAAkB;EAChCyB,KAAK;EACLlB,QAAQ;EACRmB,MAAM;EACNC,gBAAgB,GAAG,MAAM;EACzBP;AACW,CAAC,EAAE;EACd,MAAM,CAACQ,IAAI,EAAEC,OAAO,CAAC,GAAGhD,QAAQ,CAAC,KAAK,CAAC;EACvC,MAAMiD,QAAQ,GAAGJ,MAAM,GAAGrC,WAAW,CAAC,CAAC,GAAG,IAAI;EAE9C,MAAM0C,OAAO,GAAGnD,OAAO,CAAC,MAAM;IAC5B,MAAMoD,SAA4B,GAAG,EAAE;IACvCxD,QAAQ,CAACyD,OAAO,CAACb,QAAQ,EAAGc,KAAK,IAAK;MACpC,iBAAIxD,cAAc,CAAkBwD,KAAK,CAAC,EAAE;QAC1CF,SAAS,CAACG,IAAI,CAAC;UAAEzB,KAAK,EAAEwB,KAAK,CAACE,KAAK,CAAC1B,KAAK;UAAEC,KAAK,EAAEuB,KAAK,CAACE,KAAK,CAACzB;QAAM,CAAC,CAAC;MACxE;IACF,CAAC,CAAC;IACF,OAAOqB,SAAS;EAClB,CAAC,EAAE,CAACZ,QAAQ,CAAC,CAAC;EAEd,MAAMiB,aAAa,GAAGzD,OAAO,CAC3B,MAAMmD,OAAO,CAACO,IAAI,CAAEC,MAAM,IAAKA,MAAM,CAAC7B,KAAK,KAAKA,KAAK,CAAC,EAAEC,KAAK,EAC7D,CAACoB,OAAO,EAAErB,KAAK,CACjB,CAAC;EAED,MAAME,OAAO,GAAGhC,OAAO,CACrB,OAAO;IACL8B,KAAK;IACLQ,QAAQ,EAAGsB,IAAI,IAAK;MAClBhB,aAAa,CAACgB,IAAI,CAAC;MACnBX,OAAO,CAAC,KAAK,CAAC;IAChB;EACF,CAAC,CAAC,EACF,CAACnB,KAAK,EAAEc,aAAa,CACvB,CAAC;EAED,MAAM;IAAE1B,OAAO;IAAEC,YAAY;IAAEC,WAAW,EAAEyC;EAAgB,CAAC,GAAG7C,cAAc,CAAC;IAC7EW,QAAQ,EAAE,CAAC,CAACA;EACd,CAAC,CAAC;EACF,MAAMmC,YAAY,GAAGxD,cAAc,CAAC,0BAA0B,CAAC;EAE/D,IAAI4C,QAAQ,EAAE;IACZ,MAAM;MAAEa,IAAI;MAAEC;IAAO,CAAC,GAAGd,QAAQ;IACjC;IACA;IACA,oBACErC,IAAA,CAACkD,IAAI;MAACE,aAAa;MAAAzB,QAAA,eACjB3B,IAAA,CAACmD,MAAM;QACLE,aAAa,EAAEpC,KAAK,IAAIqB,OAAO,CAAC,CAAC,CAAC,EAAErB,KAAK,IAAI,EAAG;QAChDc,aAAa,EAAGgB,IAAY,IAAKhB,aAAa,CAACgB,IAAI,CAAE;QACrDO,UAAU,EAAEpB,gBAAiB;QAC7BqB,OAAO,EAAE,CAACzC,QAAS;QAAAa,QAAA,EAElBW,OAAO,CAACkB,GAAG,CAAEV,MAAM,iBAClB9C,IAAA,CAACmD,MAAM,CAACM,IAAI;UAEVvC,KAAK,EAAE4B,MAAM,CAAC5B,KAAM;UACpBD,KAAK,EAAE6B,MAAM,CAAC7B;QAAM,GAFf6B,MAAM,CAAC7B,KAGb,CACF;MAAC,CACI;IAAC,CACL,CAAC;EAEX;EAEA,oBACEf,KAAA,CAACa,aAAa,CAAC2C,QAAQ;IAACzC,KAAK,EAAEE,OAAQ;IAAAQ,QAAA,gBACrCzB,KAAA,CAACb,SAAS;MACRiC,iBAAiB,EAAC,QAAQ;MAC1BC,kBAAkB,EAAE;QAAET,QAAQ,EAAE,CAAC,CAACA,QAAQ;QAAE6C,QAAQ,EAAExB;MAAK,CAAE;MAC7DrB,QAAQ,EAAEA,QAAS;MACnBU,OAAO,EAAEA,CAAA,KAAMY,OAAO,CAAC,IAAI,CAAE;MAC7BV,SAAS,EAAErB,OAAO,CAAC;QAAEqB;MAAU,CAAC,CAAE;MAAAC,QAAA,GAEjCiB,aAAa,gBACZ5C,IAAA,CAACH,IAAI;QAAC6B,SAAS,EAAEpB,YAAY,CAAC,CAAE;QAAAqB,QAAA,EAAEiB;MAAa,CAAO,CAAC,gBAEvD5C,IAAA,CAACH,IAAI;QAAC6B,SAAS,EAAEsB,eAAe,CAAC,CAAE;QAAArB,QAAA,EAAEpB;MAAW,CAAO,CACxD,eACDP,IAAA,CAACL,eAAe;QACdkC,KAAK,EAAE,OAAOoB,YAAY,KAAK,QAAQ,GAAGA,YAAY,GAAG;MAAU,CACpE,CAAC;IAAA,CACO,CAAC,eACZjD,IAAA,CAACF,WAAW;MAACqC,IAAI,EAAEA,IAAK;MAACyB,YAAY,EAAExB,OAAQ;MAAAT,QAAA,eAC7C3B,IAAA,CAACF,WAAW,CAAC+D,OAAO;QAAAlC,QAAA,eAGlBzB,KAAA,CAACa,aAAa,CAAC2C,QAAQ;UAACzC,KAAK,EAAEE,OAAQ;UAAAQ,QAAA,GACpCK,KAAK,gBACJhC,IAAA,CAACH,IAAI;YAAC+B,IAAI,EAAC,IAAI;YAACkC,MAAM,EAAC,UAAU;YAACpC,SAAS,EAAC,WAAW;YAAAC,QAAA,EACpDK;UAAK,CACF,CAAC,GACL,IAAI,eACRhC,IAAA,CAACV,UAAU;YAACyE,OAAO,EAAE,KAAM;YAACrC,SAAS,EAAC,UAAU;YAAAC,QAAA,eAC9C3B,IAAA,CAACT,IAAI;cAACmC,SAAS,EAAC,YAAY;cAAAC,QAAA,EAAEA;YAAQ,CAAO;UAAC,CACpC,CAAC;QAAA,CACS;MAAC,CACN;IAAC,CACX,CAAC;EAAA,CACQ,CAAC;AAE7B;AAEA,OAAO,MAAMqC,MAAM,GAAGC,MAAM,CAACC,MAAM,CAACpC,UAAU,EAAE;EAC9C2B,IAAI,EAAEzC;AACR,CAAC,CAAC","ignoreList":[]}