panelui-native 0.44.0 → 0.49.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 (108) hide show
  1. package/README.md +6 -1
  2. package/lib/module/components/accordion/index.js +32 -4
  3. package/lib/module/components/accordion/index.js.map +1 -1
  4. package/lib/module/components/button/index.js +83 -15
  5. package/lib/module/components/button/index.js.map +1 -1
  6. package/lib/module/components/button-group/index.js +186 -0
  7. package/lib/module/components/button-group/index.js.map +1 -0
  8. package/lib/module/components/color-picker/index.js +110 -1
  9. package/lib/module/components/color-picker/index.js.map +1 -1
  10. package/lib/module/components/combobox/index.js +7 -1
  11. package/lib/module/components/combobox/index.js.map +1 -1
  12. package/lib/module/components/date-time-picker/index.js +272 -0
  13. package/lib/module/components/date-time-picker/index.js.map +1 -0
  14. package/lib/module/components/fab/index.js +514 -0
  15. package/lib/module/components/fab/index.js.map +1 -0
  16. package/lib/module/components/grid-item/index.js +486 -0
  17. package/lib/module/components/grid-item/index.js.map +1 -0
  18. package/lib/module/components/{kpi-chart → kpi}/index.js +62 -62
  19. package/lib/module/components/kpi/index.js.map +1 -0
  20. package/lib/module/components/line-chart/index.js +92 -10
  21. package/lib/module/components/line-chart/index.js.map +1 -1
  22. package/lib/module/components/markdown-editor/index.js +406 -0
  23. package/lib/module/components/markdown-editor/index.js.map +1 -0
  24. package/lib/module/components/markdown-editor/markdown-transforms.js +243 -0
  25. package/lib/module/components/markdown-editor/markdown-transforms.js.map +1 -0
  26. package/lib/module/components/pie-chart/index.js +625 -0
  27. package/lib/module/components/pie-chart/index.js.map +1 -0
  28. package/lib/module/components/questionnaire/index.js +1312 -0
  29. package/lib/module/components/questionnaire/index.js.map +1 -0
  30. package/lib/module/components/scatter-chart/index.js +1173 -0
  31. package/lib/module/components/scatter-chart/index.js.map +1 -0
  32. package/lib/module/components/tabs/index.js +359 -41
  33. package/lib/module/components/tabs/index.js.map +1 -1
  34. package/lib/module/components/time-picker/index.js +34 -6
  35. package/lib/module/components/time-picker/index.js.map +1 -1
  36. package/lib/module/components/tree/index.js +500 -0
  37. package/lib/module/components/tree/index.js.map +1 -0
  38. package/lib/module/icons/index.js +217 -0
  39. package/lib/module/icons/index.js.map +1 -1
  40. package/lib/module/index.js +11 -2
  41. package/lib/module/index.js.map +1 -1
  42. package/lib/module/utils/chart.js +81 -0
  43. package/lib/module/utils/chart.js.map +1 -1
  44. package/lib/typescript/src/components/accordion/index.d.ts +21 -0
  45. package/lib/typescript/src/components/accordion/index.d.ts.map +1 -1
  46. package/lib/typescript/src/components/button/index.d.ts +21 -0
  47. package/lib/typescript/src/components/button/index.d.ts.map +1 -1
  48. package/lib/typescript/src/components/button-group/index.d.ts +212 -0
  49. package/lib/typescript/src/components/button-group/index.d.ts.map +1 -0
  50. package/lib/typescript/src/components/color-picker/index.d.ts +82 -1
  51. package/lib/typescript/src/components/color-picker/index.d.ts.map +1 -1
  52. package/lib/typescript/src/components/combobox/index.d.ts.map +1 -1
  53. package/lib/typescript/src/components/date-time-picker/index.d.ts +127 -0
  54. package/lib/typescript/src/components/date-time-picker/index.d.ts.map +1 -0
  55. package/lib/typescript/src/components/fab/index.d.ts +285 -0
  56. package/lib/typescript/src/components/fab/index.d.ts.map +1 -0
  57. package/lib/typescript/src/components/grid-item/index.d.ts +292 -0
  58. package/lib/typescript/src/components/grid-item/index.d.ts.map +1 -0
  59. package/lib/typescript/src/components/{kpi-chart → kpi}/index.d.ts +65 -65
  60. package/lib/typescript/src/components/kpi/index.d.ts.map +1 -0
  61. package/lib/typescript/src/components/line-chart/index.d.ts +25 -1
  62. package/lib/typescript/src/components/line-chart/index.d.ts.map +1 -1
  63. package/lib/typescript/src/components/markdown-editor/index.d.ts +102 -0
  64. package/lib/typescript/src/components/markdown-editor/index.d.ts.map +1 -0
  65. package/lib/typescript/src/components/markdown-editor/markdown-transforms.d.ts +76 -0
  66. package/lib/typescript/src/components/markdown-editor/markdown-transforms.d.ts.map +1 -0
  67. package/lib/typescript/src/components/pie-chart/index.d.ts +245 -0
  68. package/lib/typescript/src/components/pie-chart/index.d.ts.map +1 -0
  69. package/lib/typescript/src/components/questionnaire/index.d.ts +336 -0
  70. package/lib/typescript/src/components/questionnaire/index.d.ts.map +1 -0
  71. package/lib/typescript/src/components/scatter-chart/index.d.ts +309 -0
  72. package/lib/typescript/src/components/scatter-chart/index.d.ts.map +1 -0
  73. package/lib/typescript/src/components/tabs/index.d.ts +29 -2
  74. package/lib/typescript/src/components/tabs/index.d.ts.map +1 -1
  75. package/lib/typescript/src/components/time-picker/index.d.ts +19 -1
  76. package/lib/typescript/src/components/time-picker/index.d.ts.map +1 -1
  77. package/lib/typescript/src/components/tree/index.d.ts +125 -0
  78. package/lib/typescript/src/components/tree/index.d.ts.map +1 -0
  79. package/lib/typescript/src/icons/index.d.ts +22 -0
  80. package/lib/typescript/src/icons/index.d.ts.map +1 -1
  81. package/lib/typescript/src/index.d.ts +14 -5
  82. package/lib/typescript/src/index.d.ts.map +1 -1
  83. package/lib/typescript/src/utils/chart.d.ts +34 -0
  84. package/lib/typescript/src/utils/chart.d.ts.map +1 -1
  85. package/package.json +1 -1
  86. package/src/components/accordion/index.tsx +48 -6
  87. package/src/components/button/index.tsx +97 -15
  88. package/src/components/button-group/index.tsx +199 -0
  89. package/src/components/color-picker/index.tsx +140 -3
  90. package/src/components/combobox/index.tsx +7 -1
  91. package/src/components/date-time-picker/index.tsx +411 -0
  92. package/src/components/fab/index.tsx +583 -0
  93. package/src/components/grid-item/index.tsx +515 -0
  94. package/src/components/{kpi-chart → kpi}/index.tsx +85 -85
  95. package/src/components/line-chart/index.tsx +98 -8
  96. package/src/components/markdown-editor/index.tsx +526 -0
  97. package/src/components/markdown-editor/markdown-transforms.ts +228 -0
  98. package/src/components/pie-chart/index.tsx +863 -0
  99. package/src/components/questionnaire/index.tsx +1615 -0
  100. package/src/components/scatter-chart/index.tsx +1401 -0
  101. package/src/components/tabs/index.tsx +392 -50
  102. package/src/components/time-picker/index.tsx +42 -6
  103. package/src/components/tree/index.tsx +564 -0
  104. package/src/icons/index.tsx +154 -0
  105. package/src/index.ts +142 -18
  106. package/src/utils/chart.ts +110 -0
  107. package/lib/module/components/kpi-chart/index.js.map +0 -1
  108. package/lib/typescript/src/components/kpi-chart/index.d.ts.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Children","createContext","forwardRef","isValidElement","useContext","useEffect","useImperativeHandle","useMemo","useRef","useState","StyleSheet","View","Gesture","GestureDetector","Animated","Easing","runOnJS","useAnimatedProps","useAnimatedStyle","useDerivedValue","useReducedMotion","useSharedValue","withTiming","Svg","Circle","G","Line","SvgLine","useCSSVariable","Text","compactNumber","useSeriesColor","xAt","yOf","cn","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","AnimatedCircle","createAnimatedComponent","AnimatedG","STAGGER","SKELETON_FADE","SELECT_DURATION","landing","t","back","u","PADDING","top","right","bottom","left","Y_AXIS_WIDTH","Y_AXIS_GUTTER","AXIS_LABEL_HEIGHT","POINT_LABEL_WIDTH","LABEL_WIDTH","LABEL_HEIGHT","HIT_RADIUS","ScatterChartContext","useChart","component","context","Error","useScatterChart","activePoint","xDataKey","ScatterChartRoot","className","data","status","aspectRatio","animationDuration","domainDuration","xDomain","yDomain","onActivePointChange","compact","children","props","ref","size","setSize","width","height","series","setSeries","setActivePointState","reveal","xMin","xMax","yMin","yMax","activeId","reducedMotion","registerSeries","key","color","current","existing","find","k","filter","unregisterSeries","hasYAxis","found","forEach","child","type","axis","pad","plot","Math","max","seriesKeys","map","join","extents","keys","split","lowX","Infinity","highX","lowY","highY","row","x","Number","isNaN","y","padExtent","loading","x0","x1","y0","y1","first","value","duration","revealed","playReveal","easing","out","cubic","length","replay","setActivePoint","point","onLayout","event","nativeEvent","layout","abs","xExtent","yExtent","svg","overlay","header","partition","Provider","style","absoluteFill","displayName","min","index","layer","push","ChildSlot","ScatterChartGrid","rows","columns","dashArray","opacity","token","stroke","Array","from","_unused","x2","y2","strokeWidth","strokeDasharray","ScatterChartPoints","dataKey","colorIndex","sizeKey","sizeRange","fill","sizeExtent","points","r","radiusFor","order","Dot","id","total","extent","range","fallback","rMin","rMax","ratio","area","sqrt","selected","start","animatedProps","arrived","swell","cx","cy","fillOpacity","ScatterChartSkeleton","count","fade","mounted","setMounted","finished","dots","fx","fy","dot","ScatterChartXAxis","ticks","format","labels","text","position","inset","pointerEvents","label","muted","numberOfLines","textAlign","ScatterChartYAxis","ScatterChartTooltip","showLabel","formatX","formatY","formatTitle","hitRadius","hit","xs","ys","ids","indices","owners","select","at","indexOf","datum","pan","limit","resolve","px","py","bestId","best","i","dx","dy","distance","clear","Pan","minDistance","onBegin","onUpdate","onFinalize","labelStyle","half","transform","translateX","translateY","fmtX","fmtY","gesture","backgroundColor","undefined","weight","ScatterChartLegend","SeriesSwatch","ScatterChartHeader","title","caption","legend","trailing","ScatterChart","Object","assign","Header","Grid","Points","Skeleton","XAxis","YAxis","Tooltip","Legend"],"sourceRoot":"../../../../src","sources":["components/scatter-chart/index.tsx"],"mappings":"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","ignoreList":[]}
@@ -17,11 +17,20 @@
17
17
  * <Tabs.Content value="account">…</Tabs.Content>
18
18
  * </Tabs>
19
19
  * ```
20
+ *
21
+ * **Swiping.** Only the visible panel is mounted, so a drag has nothing behind
22
+ * it to reveal. The panel still tracks the finger one to one and dims as it
23
+ * goes, and the panel arriving comes back up through the same fade — the
24
+ * movement carries the change and the dissolve covers the gap. On release the
25
+ * arriving panel picks up a whole panel's width from wherever the outgoing one
26
+ * was let go, so the two views draw one continuous movement between them. The
27
+ * displacement lives on the root for exactly that reason: a value belonging to
28
+ * either panel would be destroyed at the handover.
20
29
  */
21
30
  import { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';
22
- import { Pressable, ScrollView, View } from 'react-native';
31
+ import { Platform, Pressable, ScrollView, View } from 'react-native';
23
32
  import { Gesture, GestureDetector } from 'react-native-gesture-handler';
24
- import Animated, { FadeIn, runOnJS, useAnimatedStyle, useSharedValue, withSpring } from 'react-native-reanimated';
33
+ import Animated, { Easing, Extrapolation, FadeIn, interpolate, runOnJS, useAnimatedStyle, useReducedMotion, useSharedValue, withSpring, withTiming } from 'react-native-reanimated';
25
34
  import { tv } from 'tailwind-variants';
26
35
  import { useDirectionSign } from "../../hooks/use-direction.js";
27
36
  import { Text, textChildren } from "../../primitives/text.js";
@@ -48,25 +57,40 @@ const SWIPE_DISTANCE_RATIO = 0.25;
48
57
  const SWIPE_VELOCITY = 500;
49
58
 
50
59
  /**
51
- * How much of the finger's travel the panel actually follows.
60
+ * How much of the finger's travel the panel follows at the ends of the row,
61
+ * where there is nowhere for it to go. Everywhere else it follows all of it.
62
+ */
63
+ const SWIPE_RESISTANCE_AT_END = 0.16;
64
+
65
+ /**
66
+ * How far the panel fades as it is dragged, at a full panel's width.
67
+ *
68
+ * Tracking the finger one to one leaves the space behind the panel empty,
69
+ * because the panels are separate views and only the visible one is mounted.
70
+ * Dimming as it goes is what keeps that from reading as a hole punched in the
71
+ * card: a panel on its way out is on its way out, and the one arriving comes
72
+ * back up through the same fade. The two together read as a dissolve carried
73
+ * by the movement, rather than as a gap between two slides.
52
74
  *
53
- * Not all of it: a panel that tracked one-to-one would look like a pager that
54
- * is about to reveal the next panel, and there is nothing behind it to reveal
55
- * — the panels are separate views, only one of which is mounted. A third of
56
- * the distance is enough to say the gesture was received.
75
+ * **iOS only, and that is not a compromise.** A transform is a property of the
76
+ * layer the panel is drawn into, so moving it costs nothing per frame however
77
+ * much is inside it. An opacity that changes every frame is not: on Android the
78
+ * panel's view group has no offscreen buffer to fade, so the alpha is pushed
79
+ * down into its children and the whole visible subtree is re-drawn on every
80
+ * frame of the drag. Behind a list that is thirty rows of text and images,
81
+ * which is what a tab panel usually is, that is the difference between a swipe
82
+ * that tracks the finger and one that stutters. iOS fades the layer itself and
83
+ * is unaffected.
57
84
  */
58
- const SWIPE_FOLLOW = 0.32;
59
- /** …and a fraction of that again at the ends, where there is nowhere to go. */
60
- const SWIPE_FOLLOW_AT_END = 0.1;
85
+ const SWIPE_FADE = Platform.OS === 'ios' ? 0.75 : 0;
61
86
 
62
87
  /**
63
- * How far off its resting place the arriving panel starts, as a share of the
64
- * panel's width.
88
+ * How far off its resting place a panel arriving by a *press* starts, as a
89
+ * share of the panel's width.
65
90
  *
66
- * A swipe that commits should not look like a swipe that was cancelled. Both
67
- * end with a panel settling at rest, and the only thing that distinguishes
68
- * them is which side it settled *from* — so the incoming panel picks up
69
- * roughly where the outgoing one was let go, on the far side, and travels in.
91
+ * A press has no finger travel to continue from, so it is given a throw of its
92
+ * own. A swipe does not use this: the panel it hands over to picks up exactly
93
+ * one width from wherever the outgoing one has travelled to — see `setValue`.
70
94
  */
71
95
  const SWIPE_ENTER = 0.3;
72
96
 
@@ -76,6 +100,25 @@ const ENTER_SPRING = {
76
100
  stiffness: 240,
77
101
  mass: 0.6
78
102
  };
103
+
104
+ /** How far the label's reveal is from its own width, in points — the gap after the icon. */
105
+ const LABEL_GAP = 6;
106
+
107
+ /** Points of room over the measured label, so a rounding error cannot truncate it. */
108
+ const LABEL_SLACK = 2;
109
+
110
+ /** Milliseconds for a tab to open its label, and for the one before it to close. */
111
+ const EXPAND_DURATION = 260;
112
+
113
+ /**
114
+ * A width the ghost label is measured inside.
115
+ *
116
+ * A `Text` measures against the box it is in, and the box it is really in is a
117
+ * pill whose width is the thing being measured. So the copy that gets measured
118
+ * sits in a box wide enough not to be the constraint, and reports the width the
119
+ * label actually wants.
120
+ */
121
+ const MEASURE_WIDTH = 400;
79
122
  const tabsVariants = tv({
80
123
  slots: {
81
124
  list: 'flex-row',
@@ -104,6 +147,22 @@ const tabsVariants = tv({
104
147
  list: 'gap-1',
105
148
  indicator: 'bottom-0 top-0 rounded-full bg-primary',
106
149
  trigger: 'rounded-full py-2'
150
+ },
151
+ /*
152
+ * A row of icon pills, one of which is open.
153
+ *
154
+ * Every tab draws its own pill here, so there is no indicator to slide
155
+ * between them — the shape that moves is the open tab itself, widening
156
+ * to let its label out and closing again behind it. An indicator sliding
157
+ * under pills that already have backgrounds would be invisible anyway.
158
+ *
159
+ * The open pill is a step further from the page than the closed ones:
160
+ * lighter in a dark theme, darker in a light one, which is what the
161
+ * tertiary surface token means and why it is used rather than a colour.
162
+ */
163
+ expanding: {
164
+ list: 'gap-1.5',
165
+ trigger: 'rounded-full bg-muted px-3.5 py-2.5'
107
166
  }
108
167
  },
109
168
  active: {
@@ -135,12 +194,34 @@ const tabsVariants = tv({
135
194
  class: {
136
195
  label: 'text-primary-foreground'
137
196
  }
197
+ },
198
+ // A pill is as wide as what is inside it. Equal shares would give every
199
+ // closed tab the width of the open one, which is the layout this variant
200
+ // exists to avoid.
201
+ {
202
+ variant: 'expanding',
203
+ class: {
204
+ trigger: 'flex-none'
205
+ }
206
+ }, {
207
+ variant: 'expanding',
208
+ active: true,
209
+ class: {
210
+ trigger: 'bg-surface-tertiary'
211
+ }
138
212
  }],
139
213
  defaultVariants: {
140
214
  variant: 'segmented',
141
215
  scrollable: false
142
216
  }
143
217
  });
218
+
219
+ /**
220
+ * What a swipe hands over to the tab it commits to: where the finger left the
221
+ * outgoing panel, and how fast it was still going. Absent when the tab was
222
+ * changed by pressing a trigger, which has neither.
223
+ */
224
+
144
225
  const TabsContext = /*#__PURE__*/createContext(null);
145
226
  function useTabs(component) {
146
227
  const context = useContext(TabsContext);
@@ -171,7 +252,25 @@ function TabsRoot({
171
252
  const [scrollable, setScrollable] = useState(false);
172
253
  const isControlled = value !== undefined;
173
254
  const resolvedValue = isControlled ? value : internalValue;
174
- const setValue = useCallback(next => {
255
+
256
+ /*
257
+ * The two things `setValue` reads that change on every switch, held where
258
+ * reading them does not make it a new function.
259
+ *
260
+ * With them in the dependency list, changing tab produced a new `setValue`,
261
+ * therefore a new context, therefore a new `step`, therefore a new pan
262
+ * gesture — which detaches and re-attaches the native recogniser on the same
263
+ * commit that mounts the arriving panel's contents. The busiest frame of the
264
+ * interaction was doing the one piece of work that had no reason to be there.
265
+ */
266
+ const tabsRef = useRef(tabs);
267
+ tabsRef.current = tabs;
268
+ const valueRef = useRef(resolvedValue);
269
+ valueRef.current = resolvedValue;
270
+ const setValue = useCallback((next, handover) => {
271
+ const tabs = tabsRef.current;
272
+ const resolvedValue = valueRef.current;
273
+
175
274
  /*
176
275
  * The arriving panel starts on the side it is arriving from, and travels
177
276
  * in. Done here rather than in the panel because only the root knows
@@ -184,13 +283,34 @@ function TabsRoot({
184
283
  const from = tabs.indexOf(resolvedValue);
185
284
  const to = tabs.indexOf(next);
186
285
  if (from !== -1 && to !== -1 && from !== to) {
187
- swipeOffset.value = (to > from ? 1 : -1) * sign * panelWidth.value * SWIPE_ENTER;
188
- swipeOffset.value = withSpring(0, ENTER_SPRING);
286
+ const direction = to > from ? 1 : -1;
287
+ if (handover) {
288
+ /*
289
+ * A swipe hands over mid-movement, so the arriving panel starts a
290
+ * whole panel's width from wherever the outgoing one has got to —
291
+ * which is where it *would* have been all along, had both been
292
+ * mounted. Read live rather than captured, because the outgoing
293
+ * panel is still travelling while this runs: adding to the current
294
+ * displacement rather than replacing it is the whole difference
295
+ * between one continuous movement and a jump at the moment the
296
+ * arriving panel finishes mounting.
297
+ */
298
+ swipeOffset.value += direction * sign * panelWidth.value;
299
+ swipeOffset.value = withSpring(0, {
300
+ ...ENTER_SPRING,
301
+ // Carried across too, so a flick keeps its speed instead of
302
+ // stopping dead and starting again from rest.
303
+ velocity: handover.velocity
304
+ });
305
+ } else {
306
+ swipeOffset.value = direction * sign * panelWidth.value * SWIPE_ENTER;
307
+ swipeOffset.value = withSpring(0, ENTER_SPRING);
308
+ }
189
309
  }
190
310
  }
191
311
  if (!isControlled) setInternalValue(next);
192
312
  onValueChange?.(next);
193
- }, [isControlled, onValueChange, swipeable, tabs, resolvedValue, sign, swipeOffset, panelWidth]);
313
+ }, [isControlled, onValueChange, swipeable, sign, swipeOffset, panelWidth]);
194
314
  const registerLayout = useCallback((tab, layout) => {
195
315
  setLayouts(current => {
196
316
  const existing = current[tab];
@@ -320,7 +440,7 @@ function TabsList({
320
440
  accessibilityRole: "tablist",
321
441
  className: cn(list(), className),
322
442
  ...props,
323
- children: [/*#__PURE__*/_jsx(TabsIndicator, {}), textChildren(children)]
443
+ children: [variant === 'expanding' ? null : /*#__PURE__*/_jsx(TabsIndicator, {}), textChildren(children)]
324
444
  });
325
445
  if (!scrollable) return row;
326
446
  return /*#__PURE__*/_jsx(ScrollView, {
@@ -374,6 +494,19 @@ function TabsTrigger({
374
494
  registerTab(value);
375
495
  return () => unregisterTab(value);
376
496
  }, [value, registerTab, unregisterTab]);
497
+ if (context.variant === 'expanding') {
498
+ return /*#__PURE__*/_jsx(ExpandingTrigger, {
499
+ active: active,
500
+ disabled: disabled,
501
+ icon: icon,
502
+ badge: badge,
503
+ labelClassName: slots.label(),
504
+ className: cn(slots.trigger(), className),
505
+ onLayout: handleLayout,
506
+ onPress: () => context.setValue(value),
507
+ children: children
508
+ });
509
+ }
377
510
  return /*#__PURE__*/_jsxs(Pressable, {
378
511
  accessibilityRole: "tab",
379
512
  accessibilityState: {
@@ -392,6 +525,126 @@ function TabsTrigger({
392
525
  })), badge]
393
526
  });
394
527
  }
528
+
529
+ /**
530
+ * A tab that is an icon until it is selected, and then an icon and its label.
531
+ *
532
+ * The label is never unmounted, only closed over. Two reasons, and both matter:
533
+ * a screen reader walking a row of unlabelled icons has nothing to read out,
534
+ * and a label that mounts on selection has no width to animate *from*, so the
535
+ * pill would jump to its open size and the text would fade in inside it.
536
+ *
537
+ * So the width is animated instead, which needs a number — and the number is
538
+ * the one thing that cannot be measured in place, because the box the label
539
+ * sits in is the box being resized. A second copy, laid out once in a box wide
540
+ * enough not to constrain it, reports the width and is never seen.
541
+ */
542
+ function ExpandingTrigger({
543
+ active,
544
+ disabled,
545
+ icon,
546
+ badge,
547
+ className,
548
+ labelClassName,
549
+ onLayout,
550
+ onPress,
551
+ children
552
+ }) {
553
+ const [labelWidth, setLabelWidth] = useState(0);
554
+ const reducedMotion = useReducedMotion();
555
+ const open = useSharedValue(active ? 1 : 0);
556
+ useEffect(() => {
557
+ if (reducedMotion) {
558
+ open.value = active ? 1 : 0;
559
+ return;
560
+ }
561
+ /*
562
+ * A curve, not a spring.
563
+ *
564
+ * This animates a *width*, so every frame of it is a layout pass — and the
565
+ * row is centred, so every other pill moves with it. A spring overshoots
566
+ * past its target and settles back, which on a box that is clipping text
567
+ * means the last word slides in, out and in again, and the whole row
568
+ * wobbles with it. The curve leaves quickly and arrives slowly, and it
569
+ * arrives once.
570
+ */
571
+ open.value = withTiming(active ? 1 : 0, {
572
+ duration: EXPAND_DURATION,
573
+ easing: Easing.bezier(0.2, 0, 0, 1)
574
+ });
575
+ }, [active, reducedMotion, open]);
576
+ const reveal = useAnimatedStyle(() => ({
577
+ width: (labelWidth + LABEL_GAP) * open.value,
578
+ /*
579
+ * Behind the width, not ahead of it. Text drawn into a box narrower than
580
+ * itself is text with its end cut off, and doing that on purpose for the
581
+ * first half of the animation is the difference between a label arriving
582
+ * and a label being wiped on.
583
+ */
584
+ opacity: interpolate(open.value, [0.35, 0.9], [0, 1], Extrapolation.CLAMP)
585
+ }));
586
+ const label = textChildren(children, text => /*#__PURE__*/_jsx(Text, {
587
+ size: "sm",
588
+ weight: "medium",
589
+ numberOfLines: 1,
590
+ className: labelClassName,
591
+ children: text
592
+ }));
593
+ return /*#__PURE__*/_jsxs(Pressable, {
594
+ accessibilityRole: "tab",
595
+ accessibilityState: {
596
+ selected: active,
597
+ disabled
598
+ }
599
+ // The label may be closed to nothing, and a tab announced as an unlabelled
600
+ // icon is a tab nobody can choose.
601
+ ,
602
+ accessibilityLabel: typeof children === 'string' ? children : undefined,
603
+ disabled: disabled,
604
+ onPress: onPress,
605
+ onLayout: onLayout,
606
+ className: cn('flex-row items-center', className),
607
+ children: [icon, /*#__PURE__*/_jsx(Animated.View, {
608
+ style: [{
609
+ overflow: 'hidden'
610
+ }, reveal],
611
+ children: /*#__PURE__*/_jsx(View, {
612
+ style: {
613
+ width: labelWidth + LABEL_GAP,
614
+ paddingStart: LABEL_GAP
615
+ },
616
+ children: label
617
+ })
618
+ }), /*#__PURE__*/_jsx(View, {
619
+ pointerEvents: "none",
620
+ style: {
621
+ position: 'absolute',
622
+ opacity: 0,
623
+ width: MEASURE_WIDTH
624
+ },
625
+ children: /*#__PURE__*/_jsx(View, {
626
+ style: {
627
+ alignSelf: 'flex-start'
628
+ },
629
+ onLayout: event => {
630
+ /*
631
+ * Rounded up and given a couple of points over.
632
+ *
633
+ * The measurement and the box it is put back into are two different
634
+ * layout passes, and a fraction of a point between them is enough
635
+ * for a single-line `Text` to decide it does not fit and truncate —
636
+ * which shows up as a label permanently missing its last letter.
637
+ */
638
+ const measured = Math.ceil(event.nativeEvent.layout.width) + LABEL_SLACK;
639
+ if (measured > LABEL_SLACK && measured !== labelWidth) {
640
+ setLabelWidth(measured);
641
+ }
642
+ },
643
+ children: label
644
+ })
645
+ }), badge]
646
+ });
647
+ }
395
648
  function TabsContent({
396
649
  className,
397
650
  value,
@@ -418,11 +671,25 @@ function TabsContent({
418
671
  index.value = position;
419
672
  count.value = tabs.length;
420
673
  }, [position, tabs.length, index, count]);
421
- const step = useCallback(delta => {
422
- const from = tabs.indexOf(value);
423
- const next = tabs[from + delta];
424
- if (next) setValue(next);
425
- }, [tabs, value, setValue]);
674
+
675
+ /*
676
+ * Same reason as `setValue` on the root: `step` is reached through the pan
677
+ * gesture, and a `step` that changes identity on every switch rebuilds the
678
+ * gesture on every switch. The two facts it needs are read at call time
679
+ * instead, which is when they are wanted anyway.
680
+ */
681
+ const tabsRef = useRef(tabs);
682
+ tabsRef.current = tabs;
683
+ const valueRef = useRef(value);
684
+ valueRef.current = value;
685
+ const step = useCallback((delta, velocity) => {
686
+ const list = tabsRef.current;
687
+ const from = list.indexOf(valueRef.current);
688
+ const next = list[from + delta];
689
+ if (next) setValue(next, {
690
+ velocity
691
+ });
692
+ }, [setValue]);
426
693
  const pan = useMemo(() => Gesture.Pan()
427
694
  // Sideways past the threshold takes the gesture; any real vertical
428
695
  // travel hands it back, so a panel that scrolls still scrolls.
@@ -431,7 +698,14 @@ function TabsContent({
431
698
  // rightwards under LTR and leftwards under RTL.
432
699
  const travel = event.translationX * sign;
433
700
  const atEnd = travel > 0 && index.value === 0 || travel < 0 && index.value >= count.value - 1;
434
- offset.value = event.translationX * (atEnd ? SWIPE_FOLLOW_AT_END : SWIPE_FOLLOW);
701
+ /*
702
+ * One to one, except at the ends. The panel is under the finger for
703
+ * the whole of the drag, which is what lets the handover on release
704
+ * continue the movement rather than restart it — and a panel that
705
+ * moved a third as far as the finger never felt attached to it in
706
+ * the first place.
707
+ */
708
+ offset.value = atEnd ? event.translationX * SWIPE_RESISTANCE_AT_END : event.translationX;
435
709
  }).onEnd(event => {
436
710
  const travel = event.translationX * sign;
437
711
  const speed = event.velocityX * sign;
@@ -442,26 +716,63 @@ function TabsContent({
442
716
  // Distance and speed can disagree — a flick back the way it came
443
717
  // reads as a cancel — so the direction comes from whichever of the
444
718
  // two crossed its threshold, speed first.
445
- //
446
- // No spring back to zero here: `setValue` on the root throws the
447
- // displacement across to the side the next panel arrives from, and
448
- // springing to rest first would undo it a frame before it happens.
449
- runOnJS(step)(fast ? speed < 0 ? 1 : -1 : travel < 0 ? 1 : -1);
719
+ const delta = fast ? speed < 0 ? 1 : -1 : travel < 0 ? 1 : -1;
720
+
721
+ /*
722
+ * The outgoing panel carries on off the edge on the UI thread,
723
+ * immediately, rather than waiting to be told what happened.
724
+ *
725
+ * It used to hold wherever the finger left it until `setValue`
726
+ * landed — which is fine when React commits in a frame, and is a
727
+ * visible freeze when the arriving panel is expensive to mount, a
728
+ * list of any size being the usual case. The panel appeared to
729
+ * stick to the screen for exactly as long as the JS thread was
730
+ * busy, which reads as the swipe having dropped the gesture.
731
+ *
732
+ * `setValue` still places the arriving panel *relative* to this
733
+ * one, reading the offset live at commit time, so continuing the
734
+ * movement here does not desynchronise the handover: the panel
735
+ * that arrives is one width from wherever this one has got to,
736
+ * whenever that turns out to be.
737
+ */
738
+ offset.value = withSpring(-delta * sign * width.value, {
739
+ ...ENTER_SPRING,
740
+ velocity: event.velocityX
741
+ });
742
+ runOnJS(step)(delta, event.velocityX);
450
743
  return;
451
744
  }
452
745
 
453
- // Nothing changed hands, so this panel simply comes back.
454
- offset.value = withSpring(0, SPRING);
746
+ // Nothing changed hands, so this panel simply comes back — with the
747
+ // speed it was let go at, so a cancelled flick decelerates rather
748
+ // than stopping and being pulled.
749
+ offset.value = withSpring(0, {
750
+ ...SPRING,
751
+ velocity: event.velocityX
752
+ });
455
753
  }).onFinalize((_event, success) => {
456
754
  // A cancelled gesture never reaches `onEnd`, and would otherwise
457
755
  // leave the panel wherever the finger abandoned it.
458
756
  if (!success) offset.value = withSpring(0, SPRING);
459
757
  }), [sign, step, offset, width, index, count]);
460
- const followStyle = useAnimatedStyle(() => ({
461
- transform: [{
462
- translateX: offset.value
463
- }]
464
- }));
758
+ const followStyle = useAnimatedStyle(() => {
759
+ // No `opacity` key at all when there is no fade, rather than a constant 1.
760
+ // Declaring it would still mark the property as animated and hand the view
761
+ // an alpha to composite every frame — the cost this is avoiding.
762
+ if (!SWIPE_FADE) return {
763
+ transform: [{
764
+ translateX: offset.value
765
+ }]
766
+ };
767
+ const span = width.value || 1;
768
+ const travelled = Math.min(1, Math.abs(offset.value) / span);
769
+ return {
770
+ transform: [{
771
+ translateX: offset.value
772
+ }],
773
+ opacity: 1 - SWIPE_FADE * travelled
774
+ };
775
+ });
465
776
  if (!active && !context.keepMounted) return null;
466
777
 
467
778
  /*
@@ -492,10 +803,17 @@ function TabsContent({
492
803
  // letting it say so would leave the visible panel with no width.
493
804
  const measured = event.nativeEvent.layout.width;
494
805
  if (measured > 0) width.value = measured;
495
- },
806
+ }
807
+ /*
808
+ * The follow style goes on the panel that is moving, and only that one.
809
+ * Under `keepMounted` every other panel is `display: none` and cannot be
810
+ * seen to move — but an animated style still subscribes them all to the
811
+ * offset, so a five-tab set ran five mappers per frame to reposition four
812
+ * views nobody was looking at.
813
+ */,
496
814
  style: [!active && {
497
815
  display: 'none'
498
- }, swipeable && followStyle, style],
816
+ }, swipeable && active && followStyle, style],
499
817
  pointerEvents: active ? 'auto' : 'none',
500
818
  accessibilityElementsHidden: !active,
501
819
  importantForAccessibility: active ? 'auto' : 'no-hide-descendants',