orn-ui 0.2.7 → 0.2.9
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/AGENTS.md +25 -3
- package/README.md +9 -8
- package/lib/commonjs/atoms/Gradient.js +111 -0
- package/lib/commonjs/atoms/Gradient.js.map +1 -0
- package/lib/commonjs/atoms/ShinyText.js +188 -0
- package/lib/commonjs/atoms/ShinyText.js.map +1 -0
- package/lib/commonjs/atoms/index.js +14 -0
- package/lib/commonjs/atoms/index.js.map +1 -1
- package/lib/commonjs/organisms/Chart.js +947 -0
- package/lib/commonjs/organisms/Chart.js.map +1 -0
- package/lib/commonjs/organisms/OptionWheel.js +408 -0
- package/lib/commonjs/organisms/OptionWheel.js.map +1 -0
- package/lib/commonjs/organisms/Slides.js +406 -0
- package/lib/commonjs/organisms/Slides.js.map +1 -0
- package/lib/commonjs/organisms/Timeline.js +420 -0
- package/lib/commonjs/organisms/Timeline.js.map +1 -0
- package/lib/commonjs/organisms/chart/frame.js +373 -0
- package/lib/commonjs/organisms/chart/frame.js.map +1 -0
- package/lib/commonjs/organisms/chart/marks.js +316 -0
- package/lib/commonjs/organisms/chart/marks.js.map +1 -0
- package/lib/commonjs/organisms/chart/math.js +468 -0
- package/lib/commonjs/organisms/chart/math.js.map +1 -0
- package/lib/commonjs/organisms/chart/palette.js +120 -0
- package/lib/commonjs/organisms/chart/palette.js.map +1 -0
- package/lib/commonjs/organisms/index.js +28 -0
- package/lib/commonjs/organisms/index.js.map +1 -1
- package/lib/commonjs/organisms/useSlides.js +186 -0
- package/lib/commonjs/organisms/useSlides.js.map +1 -0
- package/lib/module/atoms/Gradient.js +106 -0
- package/lib/module/atoms/Gradient.js.map +1 -0
- package/lib/module/atoms/ShinyText.js +183 -0
- package/lib/module/atoms/ShinyText.js.map +1 -0
- package/lib/module/atoms/index.js +2 -0
- package/lib/module/atoms/index.js.map +1 -1
- package/lib/module/organisms/Chart.js +942 -0
- package/lib/module/organisms/Chart.js.map +1 -0
- package/lib/module/organisms/OptionWheel.js +403 -0
- package/lib/module/organisms/OptionWheel.js.map +1 -0
- package/lib/module/organisms/Slides.js +401 -0
- package/lib/module/organisms/Slides.js.map +1 -0
- package/lib/module/organisms/Timeline.js +415 -0
- package/lib/module/organisms/Timeline.js.map +1 -0
- package/lib/module/organisms/chart/frame.js +367 -0
- package/lib/module/organisms/chart/frame.js.map +1 -0
- package/lib/module/organisms/chart/marks.js +310 -0
- package/lib/module/organisms/chart/marks.js.map +1 -0
- package/lib/module/organisms/chart/math.js +445 -0
- package/lib/module/organisms/chart/math.js.map +1 -0
- package/lib/module/organisms/chart/palette.js +114 -0
- package/lib/module/organisms/chart/palette.js.map +1 -0
- package/lib/module/organisms/index.js +4 -0
- package/lib/module/organisms/index.js.map +1 -1
- package/lib/module/organisms/useSlides.js +182 -0
- package/lib/module/organisms/useSlides.js.map +1 -0
- package/lib/typescript/atoms/Gradient.d.ts +37 -0
- package/lib/typescript/atoms/Gradient.d.ts.map +1 -0
- package/lib/typescript/atoms/ShinyText.d.ts +48 -0
- package/lib/typescript/atoms/ShinyText.d.ts.map +1 -0
- package/lib/typescript/atoms/index.d.ts +4 -0
- package/lib/typescript/atoms/index.d.ts.map +1 -1
- package/lib/typescript/organisms/Chart.d.ts +208 -0
- package/lib/typescript/organisms/Chart.d.ts.map +1 -0
- package/lib/typescript/organisms/OptionWheel.d.ts +78 -0
- package/lib/typescript/organisms/OptionWheel.d.ts.map +1 -0
- package/lib/typescript/organisms/Slides.d.ts +69 -0
- package/lib/typescript/organisms/Slides.d.ts.map +1 -0
- package/lib/typescript/organisms/Timeline.d.ts +61 -0
- package/lib/typescript/organisms/Timeline.d.ts.map +1 -0
- package/lib/typescript/organisms/chart/frame.d.ts +85 -0
- package/lib/typescript/organisms/chart/frame.d.ts.map +1 -0
- package/lib/typescript/organisms/chart/marks.d.ts +88 -0
- package/lib/typescript/organisms/chart/marks.d.ts.map +1 -0
- package/lib/typescript/organisms/chart/math.d.ts +161 -0
- package/lib/typescript/organisms/chart/math.d.ts.map +1 -0
- package/lib/typescript/organisms/chart/palette.d.ts +6 -0
- package/lib/typescript/organisms/chart/palette.d.ts.map +1 -0
- package/lib/typescript/organisms/index.d.ts +8 -0
- package/lib/typescript/organisms/index.d.ts.map +1 -1
- package/lib/typescript/organisms/useSlides.d.ts +52 -0
- package/lib/typescript/organisms/useSlides.d.ts.map +1 -0
- package/llms.txt +6 -5
- package/package.json +33 -2
- package/registry/chart.json +35 -0
- package/registry/gradient.json +18 -0
- package/registry/index.json +79 -0
- package/registry/manifest.json +42 -0
- package/registry/option-wheel.json +19 -0
- package/registry/shiny-text.json +19 -0
- package/registry/slides.json +24 -0
- package/registry/timeline.json +20 -0
- package/src/atoms/Gradient.tsx +99 -0
- package/src/atoms/ShinyText.tsx +226 -0
- package/src/atoms/index.ts +4 -0
- package/src/organisms/Chart.tsx +1223 -0
- package/src/organisms/OptionWheel.tsx +476 -0
- package/src/organisms/Slides.tsx +413 -0
- package/src/organisms/Timeline.tsx +467 -0
- package/src/organisms/chart/frame.tsx +349 -0
- package/src/organisms/chart/marks.tsx +295 -0
- package/src/organisms/chart/math.ts +475 -0
- package/src/organisms/chart/palette.ts +112 -0
- package/src/organisms/index.ts +22 -0
- package/src/organisms/useSlides.ts +220 -0
|
@@ -0,0 +1,415 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React, { memo, useEffect, useMemo, useRef } from 'react';
|
|
4
|
+
import { Animated, Easing, Text, View } from 'react-native';
|
|
5
|
+
import { createStyles } from '../theme/createStyles';
|
|
6
|
+
import { useAllowFontScaling, useColors } from '../theme/UIProvider';
|
|
7
|
+
import { PressableScale } from '../atoms/PressableScale';
|
|
8
|
+
import { useReduceMotion } from '../atoms/Transition';
|
|
9
|
+
import { Icon } from '../icons/Icon';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Qué puede hacer un toque.
|
|
13
|
+
* - 'free': cualquier hito responde y la línea sigue a `items` para donde
|
|
14
|
+
* vaya, adelante o atrás. Es el que sirve cuando el recorrido no es un
|
|
15
|
+
* progreso, o cuando lo maneja otra cosa.
|
|
16
|
+
* - 'sequential': sólo responde el que sigue al alcanzado, y la línea no
|
|
17
|
+
* retrocede nunca. Avance estricto.
|
|
18
|
+
* - 'revisit': responden el que sigue y todos los ya alcanzados, y la línea
|
|
19
|
+
* tampoco retrocede. Es el caso de "puedo volver a mirar lo anterior sin
|
|
20
|
+
* perder lo que llevo".
|
|
21
|
+
*/
|
|
22
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
23
|
+
const DEFAULT_CURVE = 28;
|
|
24
|
+
const DEFAULT_SPACING = 84;
|
|
25
|
+
const NODE = 14;
|
|
26
|
+
const LINE = 2;
|
|
27
|
+
/** Tramos rectos por cada vano: con menos, la curva se ve poligonal. */
|
|
28
|
+
const SEGMENTS = 14;
|
|
29
|
+
const DOT = 3;
|
|
30
|
+
/** Un punto cada cuántos tramos: el camino entero va punteado por debajo. */
|
|
31
|
+
const DOT_EVERY = 2;
|
|
32
|
+
const DEFAULT_DURATION = 420;
|
|
33
|
+
/**
|
|
34
|
+
* Cuánto tarda un tramo en encenderse, medido en hitos. Chico para que el
|
|
35
|
+
* frente de la línea se lea como un borde y no como un degradado largo.
|
|
36
|
+
*/
|
|
37
|
+
const FADE = 0.06;
|
|
38
|
+
/**
|
|
39
|
+
* Capas del halo, de afuera hacia adentro. Son muchas y muy tenues a
|
|
40
|
+
* propósito: con tres capas se ven los anillos, que es justo lo contrario de
|
|
41
|
+
* un difuminado. Cuantos más escalones y más chico el salto de opacidad, más
|
|
42
|
+
* cerca queda de un degradado.
|
|
43
|
+
*/
|
|
44
|
+
/** Lo que el halo sobresale de la píldora: es lo que hay que dejarle de aire. */
|
|
45
|
+
const GLOW_BLEED = 20;
|
|
46
|
+
const GLOW_LAYERS = [{
|
|
47
|
+
inset: -GLOW_BLEED,
|
|
48
|
+
opacity: 0.03
|
|
49
|
+
}, {
|
|
50
|
+
inset: -16,
|
|
51
|
+
opacity: 0.035
|
|
52
|
+
}, {
|
|
53
|
+
inset: -12,
|
|
54
|
+
opacity: 0.04
|
|
55
|
+
}, {
|
|
56
|
+
inset: -8,
|
|
57
|
+
opacity: 0.045
|
|
58
|
+
}, {
|
|
59
|
+
inset: -5,
|
|
60
|
+
opacity: 0.05
|
|
61
|
+
}, {
|
|
62
|
+
inset: -2,
|
|
63
|
+
opacity: 0.055
|
|
64
|
+
}];
|
|
65
|
+
const useStyles = createStyles(theme => ({
|
|
66
|
+
root: {
|
|
67
|
+
alignSelf: 'stretch'
|
|
68
|
+
},
|
|
69
|
+
row: {
|
|
70
|
+
flexDirection: 'row',
|
|
71
|
+
alignItems: 'center'
|
|
72
|
+
},
|
|
73
|
+
side: {
|
|
74
|
+
flex: 1,
|
|
75
|
+
justifyContent: 'center'
|
|
76
|
+
},
|
|
77
|
+
sideLeft: {
|
|
78
|
+
alignItems: 'flex-end',
|
|
79
|
+
paddingRight: theme.tokens.spacing.md
|
|
80
|
+
},
|
|
81
|
+
sideRight: {
|
|
82
|
+
alignItems: 'flex-start',
|
|
83
|
+
paddingLeft: theme.tokens.spacing.md
|
|
84
|
+
},
|
|
85
|
+
node: {
|
|
86
|
+
position: 'absolute',
|
|
87
|
+
width: NODE,
|
|
88
|
+
height: NODE,
|
|
89
|
+
borderRadius: NODE / 2,
|
|
90
|
+
borderWidth: LINE
|
|
91
|
+
},
|
|
92
|
+
nodePending: {
|
|
93
|
+
backgroundColor: 'transparent',
|
|
94
|
+
borderColor: theme.colors.border
|
|
95
|
+
},
|
|
96
|
+
// Ocupa el círculo entero menos el borde, así el relleno no lo tapa.
|
|
97
|
+
nodeFill: {
|
|
98
|
+
position: 'absolute',
|
|
99
|
+
top: 0,
|
|
100
|
+
left: 0,
|
|
101
|
+
right: 0,
|
|
102
|
+
bottom: 0,
|
|
103
|
+
borderRadius: NODE / 2
|
|
104
|
+
},
|
|
105
|
+
pill: {
|
|
106
|
+
flexDirection: 'row',
|
|
107
|
+
alignItems: 'center',
|
|
108
|
+
gap: theme.tokens.spacing.sm,
|
|
109
|
+
paddingVertical: theme.tokens.spacing.sm,
|
|
110
|
+
paddingHorizontal: theme.tokens.spacing.lg,
|
|
111
|
+
borderRadius: theme.tokens.radius.full,
|
|
112
|
+
borderWidth: 1,
|
|
113
|
+
borderColor: theme.colors.border,
|
|
114
|
+
backgroundColor: theme.colors.surface
|
|
115
|
+
},
|
|
116
|
+
// El foco se marca con el borde, no con el relleno: el relleno ya está
|
|
117
|
+
// diciendo otra cosa (si el hito está alcanzado o no).
|
|
118
|
+
pillSelected: {
|
|
119
|
+
borderColor: theme.colors.primary,
|
|
120
|
+
borderWidth: 2
|
|
121
|
+
},
|
|
122
|
+
label: {
|
|
123
|
+
fontSize: theme.tokens.fontSize.md,
|
|
124
|
+
color: theme.colors.text
|
|
125
|
+
},
|
|
126
|
+
labelPending: {
|
|
127
|
+
color: theme.colors.textLight
|
|
128
|
+
},
|
|
129
|
+
emoji: {
|
|
130
|
+
fontSize: theme.tokens.fontSize.md
|
|
131
|
+
},
|
|
132
|
+
glow: {
|
|
133
|
+
position: 'absolute',
|
|
134
|
+
borderRadius: theme.tokens.radius.full,
|
|
135
|
+
backgroundColor: theme.colors.text
|
|
136
|
+
},
|
|
137
|
+
// La línea y los nodos viven en la misma capa y se posicionan con las mismas
|
|
138
|
+
// coordenadas. Es lo único que garantiza que el círculo caiga sobre la
|
|
139
|
+
// curva: en el flujo de la fila el nodo lo corre el flex —y los paddings que
|
|
140
|
+
// cada lado necesita para no cortar su píldora—, así que terminaba a un
|
|
141
|
+
// costado de la línea en vez de encima.
|
|
142
|
+
lineLayer: {
|
|
143
|
+
position: 'absolute',
|
|
144
|
+
top: 0,
|
|
145
|
+
left: 0,
|
|
146
|
+
right: 0,
|
|
147
|
+
bottom: 0,
|
|
148
|
+
alignItems: 'center'
|
|
149
|
+
},
|
|
150
|
+
// Hueco del ancho del nodo en la fila: la píldora se separa del centro lo
|
|
151
|
+
// mismo que antes, pero el círculo ya no se dibuja acá.
|
|
152
|
+
nodeSlot: {
|
|
153
|
+
width: NODE
|
|
154
|
+
},
|
|
155
|
+
segment: {
|
|
156
|
+
position: 'absolute',
|
|
157
|
+
width: LINE
|
|
158
|
+
},
|
|
159
|
+
dot: {
|
|
160
|
+
position: 'absolute',
|
|
161
|
+
width: DOT,
|
|
162
|
+
height: DOT,
|
|
163
|
+
borderRadius: DOT / 2
|
|
164
|
+
}
|
|
165
|
+
}));
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* Desvío horizontal del nodo `index` respecto del eje. Una onda entera a lo
|
|
169
|
+
* largo de la lista: el primero y el último caen sobre el eje, y los del medio
|
|
170
|
+
* se van a un lado y al otro. Es lo que convierte una columna en un camino.
|
|
171
|
+
*/
|
|
172
|
+
function offsetAt(index, count, curve) {
|
|
173
|
+
if (count < 2) return 0;
|
|
174
|
+
return curve * Math.sin(2 * Math.PI * index / (count - 1));
|
|
175
|
+
}
|
|
176
|
+
export const Timeline = /*#__PURE__*/memo(({
|
|
177
|
+
items,
|
|
178
|
+
curve = DEFAULT_CURVE,
|
|
179
|
+
spacing = DEFAULT_SPACING,
|
|
180
|
+
startSide = 'right',
|
|
181
|
+
glow = true,
|
|
182
|
+
onItemPress,
|
|
183
|
+
advance = 'free',
|
|
184
|
+
selectedIndex,
|
|
185
|
+
duration = DEFAULT_DURATION,
|
|
186
|
+
style,
|
|
187
|
+
testID
|
|
188
|
+
}) => {
|
|
189
|
+
const styles = useStyles();
|
|
190
|
+
const colors = useColors();
|
|
191
|
+
const allowFontScaling = useAllowFontScaling();
|
|
192
|
+
const reduceMotion = useReduceMotion();
|
|
193
|
+
const count = items.length;
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* Hasta dónde llegó el recorrido, en unidades de hito. Se cuenta desde el
|
|
197
|
+
* principio y se corta en el primer pendiente: un hito cumplido después de
|
|
198
|
+
* uno que no lo está no adelanta la línea, porque el camino es un camino.
|
|
199
|
+
*/
|
|
200
|
+
const reached = useMemo(() => {
|
|
201
|
+
let last = -1;
|
|
202
|
+
for (let i = 0; i < items.length; i += 1) {
|
|
203
|
+
if (items[i]?.status === 'pending') break;
|
|
204
|
+
last = i;
|
|
205
|
+
}
|
|
206
|
+
return last;
|
|
207
|
+
}, [items]);
|
|
208
|
+
|
|
209
|
+
/**
|
|
210
|
+
* Marca de agua: salvo en 'free', la línea se queda en lo más lejos que
|
|
211
|
+
* llegó. El progreso es del usuario, no del render — que el padre mande
|
|
212
|
+
* una lista más corta no puede desandar lo que ya recorrió.
|
|
213
|
+
*/
|
|
214
|
+
const furthest = useRef(reached);
|
|
215
|
+
if (advance === 'free') furthest.current = reached;else furthest.current = Math.max(furthest.current, reached);
|
|
216
|
+
const lineTo = furthest.current;
|
|
217
|
+
const progress = useRef(new Animated.Value(lineTo)).current;
|
|
218
|
+
useEffect(() => {
|
|
219
|
+
const animation = Animated.timing(progress, {
|
|
220
|
+
toValue: lineTo,
|
|
221
|
+
// Un hito por `duration`: avanzar tres de una vez tarda tres veces
|
|
222
|
+
// más, así se ve el recorrido y no un salto.
|
|
223
|
+
duration: reduceMotion ? 0 : duration,
|
|
224
|
+
easing: Easing.inOut(Easing.cubic),
|
|
225
|
+
useNativeDriver: true
|
|
226
|
+
});
|
|
227
|
+
animation.start();
|
|
228
|
+
return () => animation.stop();
|
|
229
|
+
}, [lineTo, duration, reduceMotion, progress]);
|
|
230
|
+
|
|
231
|
+
/**
|
|
232
|
+
* Cada vano partido en tramos rectos cortos, cada uno con su largo y su
|
|
233
|
+
* ángulo. Es la misma idea que `Gradient`: la plataforma no tiene curvas
|
|
234
|
+
* sin dependencia nativa, así que la curva se compone con pedazos rectos
|
|
235
|
+
* lo bastante chicos como para que el ojo no vea el quiebre.
|
|
236
|
+
*/
|
|
237
|
+
const pieces = useMemo(() => {
|
|
238
|
+
const out = [];
|
|
239
|
+
for (let i = 0; i < count - 1; i += 1) {
|
|
240
|
+
for (let step = 0; step < SEGMENTS; step += 1) {
|
|
241
|
+
const from = i + step / SEGMENTS;
|
|
242
|
+
const to = i + (step + 1) / SEGMENTS;
|
|
243
|
+
const x1 = offsetAt(from, count, curve);
|
|
244
|
+
const x2 = offsetAt(to, count, curve);
|
|
245
|
+
const y1 = from * spacing;
|
|
246
|
+
const y2 = to * spacing;
|
|
247
|
+
const dx = x2 - x1;
|
|
248
|
+
const dy = y2 - y1;
|
|
249
|
+
const length = Math.sqrt(dx * dx + dy * dy);
|
|
250
|
+
out.push({
|
|
251
|
+
key: `${i}-${step}`,
|
|
252
|
+
x: (x1 + x2) / 2,
|
|
253
|
+
y: (y1 + y2) / 2,
|
|
254
|
+
length,
|
|
255
|
+
// El tramo se dibuja vertical y se gira hasta la pendiente: el
|
|
256
|
+
// ángulo se mide desde el eje Y, no desde el X.
|
|
257
|
+
angle: `${Math.atan2(dx, dy) * (180 / Math.PI) * -1}deg`,
|
|
258
|
+
// Posición del tramo medida en hitos: es la misma escala que
|
|
259
|
+
// `progress`, así que comparar una cosa con la otra es directo.
|
|
260
|
+
at: to,
|
|
261
|
+
dotted: step % DOT_EVERY === 0
|
|
262
|
+
});
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
return out;
|
|
266
|
+
}, [count, curve, spacing]);
|
|
267
|
+
if (count === 0) return null;
|
|
268
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
269
|
+
style: [styles.root, {
|
|
270
|
+
height: count * spacing
|
|
271
|
+
}, style],
|
|
272
|
+
testID: testID,
|
|
273
|
+
children: [/*#__PURE__*/_jsxs(View, {
|
|
274
|
+
style: styles.lineLayer,
|
|
275
|
+
pointerEvents: "none",
|
|
276
|
+
children: [pieces.map(piece => piece.dotted && /*#__PURE__*/_jsx(View, {
|
|
277
|
+
style: [styles.dot, {
|
|
278
|
+
backgroundColor: colors.border,
|
|
279
|
+
top: spacing / 2 + piece.y - DOT / 2,
|
|
280
|
+
transform: [{
|
|
281
|
+
translateX: piece.x
|
|
282
|
+
}]
|
|
283
|
+
}]
|
|
284
|
+
}, `dot-${piece.key}`)), pieces.map(piece => /*#__PURE__*/_jsx(Animated.View, {
|
|
285
|
+
style: [styles.segment, {
|
|
286
|
+
backgroundColor: colors.textLight,
|
|
287
|
+
height: piece.length,
|
|
288
|
+
top: spacing / 2 + piece.y - piece.length / 2,
|
|
289
|
+
opacity: progress.interpolate({
|
|
290
|
+
inputRange: [piece.at - FADE, piece.at],
|
|
291
|
+
outputRange: [0, 1],
|
|
292
|
+
extrapolate: 'clamp'
|
|
293
|
+
}),
|
|
294
|
+
transform: [{
|
|
295
|
+
translateX: piece.x
|
|
296
|
+
}, {
|
|
297
|
+
rotate: piece.angle
|
|
298
|
+
}]
|
|
299
|
+
}]
|
|
300
|
+
}, `line-${piece.key}`)), items.map((item, index) => /*#__PURE__*/_jsx(View, {
|
|
301
|
+
style: [styles.node, styles.nodePending, {
|
|
302
|
+
top: spacing / 2 + index * spacing - NODE / 2,
|
|
303
|
+
transform: [{
|
|
304
|
+
translateX: offsetAt(index, count, curve)
|
|
305
|
+
}]
|
|
306
|
+
}],
|
|
307
|
+
children: /*#__PURE__*/_jsx(Animated.View, {
|
|
308
|
+
style: [styles.nodeFill, {
|
|
309
|
+
backgroundColor: colors.textLight,
|
|
310
|
+
opacity: progress.interpolate({
|
|
311
|
+
inputRange: [index - FADE, index],
|
|
312
|
+
outputRange: [0, 1],
|
|
313
|
+
extrapolate: 'clamp'
|
|
314
|
+
}),
|
|
315
|
+
transform: [{
|
|
316
|
+
scale: progress.interpolate({
|
|
317
|
+
inputRange: [index - FADE, index],
|
|
318
|
+
outputRange: [0.4, 1],
|
|
319
|
+
extrapolate: 'clamp'
|
|
320
|
+
})
|
|
321
|
+
}]
|
|
322
|
+
}]
|
|
323
|
+
})
|
|
324
|
+
}, `node-${item.label}-${index}`))]
|
|
325
|
+
}), items.map((item, index) => {
|
|
326
|
+
const pending = item.status === 'pending';
|
|
327
|
+
const onRight = index % 2 === 0 === (startSide === 'right');
|
|
328
|
+
const offset = offsetAt(index, count, curve);
|
|
329
|
+
// La fila entera se corre con la curva, píldora incluida, así que el
|
|
330
|
+
// lado hacia el que se fue pierde ese espacio contra el borde. Se lo
|
|
331
|
+
// devolvemos como padding, más lo que sobresale el halo: sin esto la
|
|
332
|
+
// píldora de más afuera queda cortada al ras.
|
|
333
|
+
const bleed = glow ? GLOW_BLEED : 0;
|
|
334
|
+
const roomLeft = Math.max(0, -offset) + bleed;
|
|
335
|
+
const roomRight = Math.max(0, offset) + bleed;
|
|
336
|
+
const pill = /*#__PURE__*/_jsxs(View, {
|
|
337
|
+
children: [glow && GLOW_LAYERS.map(layer => /*#__PURE__*/_jsx(View, {
|
|
338
|
+
pointerEvents: "none",
|
|
339
|
+
style: [styles.glow, {
|
|
340
|
+
top: layer.inset,
|
|
341
|
+
bottom: layer.inset,
|
|
342
|
+
left: layer.inset,
|
|
343
|
+
right: layer.inset,
|
|
344
|
+
opacity: pending ? layer.opacity / 2 : layer.opacity
|
|
345
|
+
}]
|
|
346
|
+
}, layer.inset)), /*#__PURE__*/_jsxs(View, {
|
|
347
|
+
style: [styles.pill, index === selectedIndex && styles.pillSelected],
|
|
348
|
+
children: [item.emoji ? /*#__PURE__*/_jsx(Text, {
|
|
349
|
+
allowFontScaling: allowFontScaling,
|
|
350
|
+
style: styles.emoji,
|
|
351
|
+
children: item.emoji
|
|
352
|
+
}) : !!item.iconName && /*#__PURE__*/_jsx(Icon, {
|
|
353
|
+
name: item.iconName,
|
|
354
|
+
size: 16,
|
|
355
|
+
color: pending ? colors.textLight : colors.text
|
|
356
|
+
}), /*#__PURE__*/_jsx(Text, {
|
|
357
|
+
allowFontScaling: allowFontScaling,
|
|
358
|
+
style: [styles.label, pending && styles.labelPending],
|
|
359
|
+
children: item.label
|
|
360
|
+
})]
|
|
361
|
+
})]
|
|
362
|
+
});
|
|
363
|
+
|
|
364
|
+
// 'sequential' deja tocar sólo el que sigue; 'revisit' también los
|
|
365
|
+
// ya recorridos. El que no responde se marca como deshabilitado en
|
|
366
|
+
// vez de quedarse mudo: un botón que no hace nada y no lo dice es
|
|
367
|
+
// peor que un botón apagado.
|
|
368
|
+
const reachable = advance === 'sequential' ? index === lineTo + 1 : advance === 'revisit' ? index <= lineTo + 1 : true;
|
|
369
|
+
const pressable = onItemPress ? /*#__PURE__*/_jsx(PressableScale, {
|
|
370
|
+
onPress: () => onItemPress(index),
|
|
371
|
+
disabled: !reachable,
|
|
372
|
+
accessibilityRole: "button",
|
|
373
|
+
accessibilityLabel: item.label,
|
|
374
|
+
accessibilityState: {
|
|
375
|
+
checked: !pending,
|
|
376
|
+
disabled: !reachable,
|
|
377
|
+
selected: index === selectedIndex
|
|
378
|
+
},
|
|
379
|
+
testID: testID && `${testID}-press-${index}`,
|
|
380
|
+
children: pill
|
|
381
|
+
}) : pill;
|
|
382
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
383
|
+
testID: testID && `${testID}-item-${index}`,
|
|
384
|
+
accessibilityRole: onItemPress ? undefined : 'text',
|
|
385
|
+
accessibilityLabel: onItemPress ? undefined : item.label,
|
|
386
|
+
accessibilityState: onItemPress ? undefined : {
|
|
387
|
+
checked: !pending
|
|
388
|
+
},
|
|
389
|
+
style: [styles.row, {
|
|
390
|
+
height: spacing,
|
|
391
|
+
transform: [{
|
|
392
|
+
translateX: offset
|
|
393
|
+
}]
|
|
394
|
+
}],
|
|
395
|
+
children: [/*#__PURE__*/_jsx(View, {
|
|
396
|
+
testID: testID && `${testID}-item-${index}-left`,
|
|
397
|
+
style: [styles.side, styles.sideLeft, {
|
|
398
|
+
paddingLeft: roomLeft
|
|
399
|
+
}],
|
|
400
|
+
children: !onRight && pressable
|
|
401
|
+
}), /*#__PURE__*/_jsx(View, {
|
|
402
|
+
style: styles.nodeSlot
|
|
403
|
+
}), /*#__PURE__*/_jsx(View, {
|
|
404
|
+
testID: testID && `${testID}-item-${index}-right`,
|
|
405
|
+
style: [styles.side, styles.sideRight, {
|
|
406
|
+
paddingRight: roomRight
|
|
407
|
+
}],
|
|
408
|
+
children: onRight && pressable
|
|
409
|
+
})]
|
|
410
|
+
}, `${item.label}-${index}`);
|
|
411
|
+
})]
|
|
412
|
+
});
|
|
413
|
+
});
|
|
414
|
+
Timeline.displayName = 'Timeline';
|
|
415
|
+
//# sourceMappingURL=Timeline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","memo","useEffect","useMemo","useRef","Animated","Easing","Text","View","createStyles","useAllowFontScaling","useColors","PressableScale","useReduceMotion","Icon","jsx","_jsx","jsxs","_jsxs","DEFAULT_CURVE","DEFAULT_SPACING","NODE","LINE","SEGMENTS","DOT","DOT_EVERY","DEFAULT_DURATION","FADE","GLOW_BLEED","GLOW_LAYERS","inset","opacity","useStyles","theme","root","alignSelf","row","flexDirection","alignItems","side","flex","justifyContent","sideLeft","paddingRight","tokens","spacing","md","sideRight","paddingLeft","node","position","width","height","borderRadius","borderWidth","nodePending","backgroundColor","borderColor","colors","border","nodeFill","top","left","right","bottom","pill","gap","sm","paddingVertical","paddingHorizontal","lg","radius","full","surface","pillSelected","primary","label","fontSize","color","text","labelPending","textLight","emoji","glow","lineLayer","nodeSlot","segment","dot","offsetAt","index","count","curve","Math","sin","PI","Timeline","items","startSide","onItemPress","advance","selectedIndex","duration","style","testID","styles","allowFontScaling","reduceMotion","length","reached","last","i","status","furthest","current","max","lineTo","progress","Value","animation","timing","toValue","easing","inOut","cubic","useNativeDriver","start","stop","pieces","out","step","from","to","x1","x2","y1","y2","dx","dy","sqrt","push","key","x","y","angle","atan2","at","dotted","children","pointerEvents","map","piece","transform","translateX","interpolate","inputRange","outputRange","extrapolate","rotate","item","scale","pending","onRight","offset","bleed","roomLeft","roomRight","layer","iconName","name","size","reachable","pressable","onPress","disabled","accessibilityRole","accessibilityLabel","accessibilityState","checked","selected","undefined","displayName"],"sourceRoot":"../../../src","sources":["organisms/Timeline.tsx"],"mappings":"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","ignoreList":[]}
|