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.
- package/README.md +6 -1
- package/lib/module/components/accordion/index.js +32 -4
- package/lib/module/components/accordion/index.js.map +1 -1
- package/lib/module/components/button/index.js +83 -15
- package/lib/module/components/button/index.js.map +1 -1
- package/lib/module/components/button-group/index.js +186 -0
- package/lib/module/components/button-group/index.js.map +1 -0
- package/lib/module/components/color-picker/index.js +110 -1
- package/lib/module/components/color-picker/index.js.map +1 -1
- package/lib/module/components/combobox/index.js +7 -1
- package/lib/module/components/combobox/index.js.map +1 -1
- package/lib/module/components/date-time-picker/index.js +272 -0
- package/lib/module/components/date-time-picker/index.js.map +1 -0
- package/lib/module/components/fab/index.js +514 -0
- package/lib/module/components/fab/index.js.map +1 -0
- package/lib/module/components/grid-item/index.js +486 -0
- package/lib/module/components/grid-item/index.js.map +1 -0
- package/lib/module/components/{kpi-chart → kpi}/index.js +62 -62
- package/lib/module/components/kpi/index.js.map +1 -0
- package/lib/module/components/line-chart/index.js +92 -10
- package/lib/module/components/line-chart/index.js.map +1 -1
- package/lib/module/components/markdown-editor/index.js +406 -0
- package/lib/module/components/markdown-editor/index.js.map +1 -0
- package/lib/module/components/markdown-editor/markdown-transforms.js +243 -0
- package/lib/module/components/markdown-editor/markdown-transforms.js.map +1 -0
- package/lib/module/components/pie-chart/index.js +625 -0
- package/lib/module/components/pie-chart/index.js.map +1 -0
- package/lib/module/components/questionnaire/index.js +1312 -0
- package/lib/module/components/questionnaire/index.js.map +1 -0
- package/lib/module/components/scatter-chart/index.js +1173 -0
- package/lib/module/components/scatter-chart/index.js.map +1 -0
- package/lib/module/components/tabs/index.js +359 -41
- package/lib/module/components/tabs/index.js.map +1 -1
- package/lib/module/components/time-picker/index.js +34 -6
- package/lib/module/components/time-picker/index.js.map +1 -1
- package/lib/module/components/tree/index.js +500 -0
- package/lib/module/components/tree/index.js.map +1 -0
- package/lib/module/icons/index.js +217 -0
- package/lib/module/icons/index.js.map +1 -1
- package/lib/module/index.js +11 -2
- package/lib/module/index.js.map +1 -1
- package/lib/module/utils/chart.js +81 -0
- package/lib/module/utils/chart.js.map +1 -1
- package/lib/typescript/src/components/accordion/index.d.ts +21 -0
- package/lib/typescript/src/components/accordion/index.d.ts.map +1 -1
- package/lib/typescript/src/components/button/index.d.ts +21 -0
- package/lib/typescript/src/components/button/index.d.ts.map +1 -1
- package/lib/typescript/src/components/button-group/index.d.ts +212 -0
- package/lib/typescript/src/components/button-group/index.d.ts.map +1 -0
- package/lib/typescript/src/components/color-picker/index.d.ts +82 -1
- package/lib/typescript/src/components/color-picker/index.d.ts.map +1 -1
- package/lib/typescript/src/components/combobox/index.d.ts.map +1 -1
- package/lib/typescript/src/components/date-time-picker/index.d.ts +127 -0
- package/lib/typescript/src/components/date-time-picker/index.d.ts.map +1 -0
- package/lib/typescript/src/components/fab/index.d.ts +285 -0
- package/lib/typescript/src/components/fab/index.d.ts.map +1 -0
- package/lib/typescript/src/components/grid-item/index.d.ts +292 -0
- package/lib/typescript/src/components/grid-item/index.d.ts.map +1 -0
- package/lib/typescript/src/components/{kpi-chart → kpi}/index.d.ts +65 -65
- package/lib/typescript/src/components/kpi/index.d.ts.map +1 -0
- package/lib/typescript/src/components/line-chart/index.d.ts +25 -1
- package/lib/typescript/src/components/line-chart/index.d.ts.map +1 -1
- package/lib/typescript/src/components/markdown-editor/index.d.ts +102 -0
- package/lib/typescript/src/components/markdown-editor/index.d.ts.map +1 -0
- package/lib/typescript/src/components/markdown-editor/markdown-transforms.d.ts +76 -0
- package/lib/typescript/src/components/markdown-editor/markdown-transforms.d.ts.map +1 -0
- package/lib/typescript/src/components/pie-chart/index.d.ts +245 -0
- package/lib/typescript/src/components/pie-chart/index.d.ts.map +1 -0
- package/lib/typescript/src/components/questionnaire/index.d.ts +336 -0
- package/lib/typescript/src/components/questionnaire/index.d.ts.map +1 -0
- package/lib/typescript/src/components/scatter-chart/index.d.ts +309 -0
- package/lib/typescript/src/components/scatter-chart/index.d.ts.map +1 -0
- package/lib/typescript/src/components/tabs/index.d.ts +29 -2
- package/lib/typescript/src/components/tabs/index.d.ts.map +1 -1
- package/lib/typescript/src/components/time-picker/index.d.ts +19 -1
- package/lib/typescript/src/components/time-picker/index.d.ts.map +1 -1
- package/lib/typescript/src/components/tree/index.d.ts +125 -0
- package/lib/typescript/src/components/tree/index.d.ts.map +1 -0
- package/lib/typescript/src/icons/index.d.ts +22 -0
- package/lib/typescript/src/icons/index.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +14 -5
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/utils/chart.d.ts +34 -0
- package/lib/typescript/src/utils/chart.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/accordion/index.tsx +48 -6
- package/src/components/button/index.tsx +97 -15
- package/src/components/button-group/index.tsx +199 -0
- package/src/components/color-picker/index.tsx +140 -3
- package/src/components/combobox/index.tsx +7 -1
- package/src/components/date-time-picker/index.tsx +411 -0
- package/src/components/fab/index.tsx +583 -0
- package/src/components/grid-item/index.tsx +515 -0
- package/src/components/{kpi-chart → kpi}/index.tsx +85 -85
- package/src/components/line-chart/index.tsx +98 -8
- package/src/components/markdown-editor/index.tsx +526 -0
- package/src/components/markdown-editor/markdown-transforms.ts +228 -0
- package/src/components/pie-chart/index.tsx +863 -0
- package/src/components/questionnaire/index.tsx +1615 -0
- package/src/components/scatter-chart/index.tsx +1401 -0
- package/src/components/tabs/index.tsx +392 -50
- package/src/components/time-picker/index.tsx +42 -6
- package/src/components/tree/index.tsx +564 -0
- package/src/icons/index.tsx +154 -0
- package/src/index.ts +142 -18
- package/src/utils/chart.ts +110 -0
- package/lib/module/components/kpi-chart/index.js.map +0 -1
- 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
|
|
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
|
-
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
56
|
-
*
|
|
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
|
|
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
|
|
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
|
|
67
|
-
*
|
|
68
|
-
*
|
|
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
|
-
|
|
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
|
-
|
|
188
|
-
|
|
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,
|
|
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
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
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
|
-
|
|
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
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
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
|
-
|
|
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
|
-
|
|
462
|
-
|
|
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',
|