orn-ui 0.2.8 → 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.
Files changed (80) hide show
  1. package/AGENTS.md +6 -2
  2. package/README.md +6 -6
  3. package/lib/commonjs/atoms/ShinyText.js +188 -0
  4. package/lib/commonjs/atoms/ShinyText.js.map +1 -0
  5. package/lib/commonjs/atoms/index.js +7 -0
  6. package/lib/commonjs/atoms/index.js.map +1 -1
  7. package/lib/commonjs/organisms/Chart.js +947 -0
  8. package/lib/commonjs/organisms/Chart.js.map +1 -0
  9. package/lib/commonjs/organisms/OptionWheel.js +408 -0
  10. package/lib/commonjs/organisms/OptionWheel.js.map +1 -0
  11. package/lib/commonjs/organisms/Timeline.js +420 -0
  12. package/lib/commonjs/organisms/Timeline.js.map +1 -0
  13. package/lib/commonjs/organisms/chart/frame.js +373 -0
  14. package/lib/commonjs/organisms/chart/frame.js.map +1 -0
  15. package/lib/commonjs/organisms/chart/marks.js +316 -0
  16. package/lib/commonjs/organisms/chart/marks.js.map +1 -0
  17. package/lib/commonjs/organisms/chart/math.js +468 -0
  18. package/lib/commonjs/organisms/chart/math.js.map +1 -0
  19. package/lib/commonjs/organisms/chart/palette.js +120 -0
  20. package/lib/commonjs/organisms/chart/palette.js.map +1 -0
  21. package/lib/commonjs/organisms/index.js +21 -0
  22. package/lib/commonjs/organisms/index.js.map +1 -1
  23. package/lib/module/atoms/ShinyText.js +183 -0
  24. package/lib/module/atoms/ShinyText.js.map +1 -0
  25. package/lib/module/atoms/index.js +1 -0
  26. package/lib/module/atoms/index.js.map +1 -1
  27. package/lib/module/organisms/Chart.js +942 -0
  28. package/lib/module/organisms/Chart.js.map +1 -0
  29. package/lib/module/organisms/OptionWheel.js +403 -0
  30. package/lib/module/organisms/OptionWheel.js.map +1 -0
  31. package/lib/module/organisms/Timeline.js +415 -0
  32. package/lib/module/organisms/Timeline.js.map +1 -0
  33. package/lib/module/organisms/chart/frame.js +367 -0
  34. package/lib/module/organisms/chart/frame.js.map +1 -0
  35. package/lib/module/organisms/chart/marks.js +310 -0
  36. package/lib/module/organisms/chart/marks.js.map +1 -0
  37. package/lib/module/organisms/chart/math.js +445 -0
  38. package/lib/module/organisms/chart/math.js.map +1 -0
  39. package/lib/module/organisms/chart/palette.js +114 -0
  40. package/lib/module/organisms/chart/palette.js.map +1 -0
  41. package/lib/module/organisms/index.js +3 -0
  42. package/lib/module/organisms/index.js.map +1 -1
  43. package/lib/typescript/atoms/ShinyText.d.ts +48 -0
  44. package/lib/typescript/atoms/ShinyText.d.ts.map +1 -0
  45. package/lib/typescript/atoms/index.d.ts +2 -0
  46. package/lib/typescript/atoms/index.d.ts.map +1 -1
  47. package/lib/typescript/organisms/Chart.d.ts +208 -0
  48. package/lib/typescript/organisms/Chart.d.ts.map +1 -0
  49. package/lib/typescript/organisms/OptionWheel.d.ts +78 -0
  50. package/lib/typescript/organisms/OptionWheel.d.ts.map +1 -0
  51. package/lib/typescript/organisms/Timeline.d.ts +61 -0
  52. package/lib/typescript/organisms/Timeline.d.ts.map +1 -0
  53. package/lib/typescript/organisms/chart/frame.d.ts +85 -0
  54. package/lib/typescript/organisms/chart/frame.d.ts.map +1 -0
  55. package/lib/typescript/organisms/chart/marks.d.ts +88 -0
  56. package/lib/typescript/organisms/chart/marks.d.ts.map +1 -0
  57. package/lib/typescript/organisms/chart/math.d.ts +161 -0
  58. package/lib/typescript/organisms/chart/math.d.ts.map +1 -0
  59. package/lib/typescript/organisms/chart/palette.d.ts +6 -0
  60. package/lib/typescript/organisms/chart/palette.d.ts.map +1 -0
  61. package/lib/typescript/organisms/index.d.ts +6 -0
  62. package/lib/typescript/organisms/index.d.ts.map +1 -1
  63. package/llms.txt +3 -3
  64. package/package.json +23 -2
  65. package/registry/chart.json +35 -0
  66. package/registry/index.json +53 -0
  67. package/registry/manifest.json +28 -0
  68. package/registry/option-wheel.json +19 -0
  69. package/registry/shiny-text.json +19 -0
  70. package/registry/timeline.json +20 -0
  71. package/src/atoms/ShinyText.tsx +226 -0
  72. package/src/atoms/index.ts +2 -0
  73. package/src/organisms/Chart.tsx +1223 -0
  74. package/src/organisms/OptionWheel.tsx +476 -0
  75. package/src/organisms/Timeline.tsx +467 -0
  76. package/src/organisms/chart/frame.tsx +349 -0
  77. package/src/organisms/chart/marks.tsx +295 -0
  78. package/src/organisms/chart/math.ts +475 -0
  79. package/src/organisms/chart/palette.ts +112 -0
  80. package/src/organisms/index.ts +14 -0
@@ -0,0 +1,468 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.angleOf = angleOf;
7
+ exports.arcAt = arcAt;
8
+ exports.arcsFor = arcsFor;
9
+ exports.clamp = clamp;
10
+ exports.exactTicks = exactTicks;
11
+ exports.extent = extent;
12
+ exports.fanStrips = fanStrips;
13
+ exports.formatNumber = formatNumber;
14
+ exports.growExtent = growExtent;
15
+ exports.linearScale = linearScale;
16
+ exports.lttbIndices = lttbIndices;
17
+ exports.niceScale = niceScale;
18
+ exports.niceStep = niceStep;
19
+ exports.polar = polar;
20
+ exports.radarAngles = radarAngles;
21
+ exports.sampleY = sampleY;
22
+ exports.segmentBox = segmentBox;
23
+ exports.smoothPoints = smoothPoints;
24
+ exports.stackRow = stackRow;
25
+ exports.toNumber = toNumber;
26
+ /**
27
+ * Geometría y escalas de Chart: todo lo que se puede probar sin montar un
28
+ * árbol vive acá, sin React y sin dependencias. marks.tsx sólo traduce estos
29
+ * números a estilos, y Chart.tsx sólo decide qué marca dibujar.
30
+ *
31
+ * Convenciones:
32
+ * - Coordenadas de React Native: origen arriba-izquierda, `y` crece hacia abajo.
33
+ * - Ángulos en grados, 0° a las 12 en punto, creciendo en sentido horario —
34
+ * que es como se lee una torta y como gira `transform: rotate` en RN.
35
+ */
36
+
37
+ /** Fila de datos: una categoría del eje x y un número por serie. */
38
+
39
+ /** Lee una celda como número, o null si no lo es (hueco en la serie). */
40
+ function toNumber(value) {
41
+ return typeof value === 'number' && Number.isFinite(value) ? value : null;
42
+ }
43
+ function clamp(value, min, max) {
44
+ return Math.min(max, Math.max(min, value));
45
+ }
46
+
47
+ /** Mata el ruido de punto flotante que deja sumar `step` en un bucle. */
48
+ function tidy(value) {
49
+ return Number(value.toFixed(10));
50
+ }
51
+
52
+ // ── escalas ────────────────────────────────────────────────────────────────
53
+
54
+ /**
55
+ * El 1, 2, 5 o 10 (por su potencia de diez) más cercano por encima de `rough`.
56
+ * Es lo que hace que los ticks caigan en números que alguien diría en voz
57
+ * alta — 0, 250, 500 — y no en 0, 237, 474.
58
+ */
59
+ function niceStep(rough) {
60
+ if (!(rough > 0)) return 1;
61
+ const magnitude = Math.pow(10, Math.floor(Math.log10(rough)));
62
+ const fraction = rough / magnitude;
63
+ const nice = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10;
64
+ return nice * magnitude;
65
+ }
66
+ /**
67
+ * Dominio redondeado a valores legibles más la lista de ticks. `count` es una
68
+ * intención, no una promesa: redondear hacia afuera puede dar uno más o uno
69
+ * menos, y eso es preferible a un eje con números arbitrarios.
70
+ */
71
+ function niceScale(min, max, count = 5) {
72
+ let lo = Math.min(min, max);
73
+ let hi = Math.max(min, max);
74
+ if (!Number.isFinite(lo) || !Number.isFinite(hi)) {
75
+ lo = 0;
76
+ hi = 1;
77
+ }
78
+ if (lo === hi) {
79
+ // Un solo valor no define un rango. Se le inventa uno simétrico para que
80
+ // la marca no quede ni pegada al borde ni ocupando el alto entero.
81
+ const pad = Math.abs(lo) || 1;
82
+ lo -= pad;
83
+ hi += pad;
84
+ }
85
+ const step = niceStep((hi - lo) / Math.max(1, count));
86
+ const start = Math.floor(lo / step) * step;
87
+ const end = Math.ceil(hi / step) * step;
88
+ const values = [];
89
+ // `end + step / 2` en vez de `end`: sumar step acumula error y el último
90
+ // tick se perdería justo en los dominios que más se usan (0–100, 0–1).
91
+ for (let value = start; value <= end + step / 2; value += step) values.push(tidy(value));
92
+ return {
93
+ min: start,
94
+ max: end,
95
+ step,
96
+ values
97
+ };
98
+ }
99
+
100
+ /**
101
+ * Ticks de un dominio que el consumidor fijó a mano. No redondea nada: si
102
+ * alguien pide 0–100, el eje dice 0–100. Es lo contrario de `niceScale`, y es
103
+ * lo que necesita un chart en vivo — un eje que se reacomoda en cada tick hace
104
+ * saltar la línea aunque el dato no se haya movido.
105
+ */
106
+ function exactTicks(min, max, count = 5) {
107
+ const lo = Math.min(min, max);
108
+ const hi = Math.max(min, max);
109
+ const steps = Math.max(1, Math.floor(count));
110
+ if (lo === hi) return {
111
+ min: lo,
112
+ max: hi,
113
+ step: 0,
114
+ values: [lo]
115
+ };
116
+ const step = (hi - lo) / steps;
117
+ return {
118
+ min: lo,
119
+ max: hi,
120
+ step,
121
+ values: Array.from({
122
+ length: steps + 1
123
+ }, (_, index) => tidy(lo + index * step))
124
+ };
125
+ }
126
+
127
+ /**
128
+ * Une dos dominios quedándose con el más ancho. Es el modo 'sticky': el eje
129
+ * crece cuando llega un valor que no entraba y no se vuelve a achicar, así
130
+ * que lo que se ve moverse es el dato y no la escala.
131
+ */
132
+ function growExtent(previous, next) {
133
+ if (!previous) return next;
134
+ return [Math.min(previous[0], next[0]), Math.max(previous[1], next[1])];
135
+ }
136
+
137
+ /** Interpolador lineal dominio → rango. Dominio degenerado cae al medio del rango. */
138
+ function linearScale(domain, range) {
139
+ const [d0, d1] = domain;
140
+ const [r0, r1] = range;
141
+ const span = d1 - d0;
142
+ if (span === 0) return () => (r0 + r1) / 2;
143
+ return value => r0 + (value - d0) / span * (r1 - r0);
144
+ }
145
+ /** Mínimo y máximo de las series pedidas. Sin datos devuelve [0, 1]. */
146
+ function extent(rows, keys, options = {}) {
147
+ const {
148
+ stacked = false,
149
+ includeZero = false
150
+ } = options;
151
+ let min = Infinity;
152
+ let max = -Infinity;
153
+ for (const row of rows) {
154
+ if (stacked) {
155
+ // Positivos y negativos se apilan hacia lados opuestos del cero, así que
156
+ // cada lado tiene su propio total y ninguno cancela al otro.
157
+ let up = 0;
158
+ let down = 0;
159
+ for (const key of keys) {
160
+ const value = toNumber(row[key]);
161
+ if (value === null) continue;
162
+ if (value >= 0) up += value;else down += value;
163
+ }
164
+ min = Math.min(min, down);
165
+ max = Math.max(max, up);
166
+ } else {
167
+ for (const key of keys) {
168
+ const value = toNumber(row[key]);
169
+ if (value === null) continue;
170
+ min = Math.min(min, value);
171
+ max = Math.max(max, value);
172
+ }
173
+ }
174
+ }
175
+ if (min === Infinity) return [0, 1];
176
+ if (includeZero) {
177
+ min = Math.min(min, 0);
178
+ max = Math.max(max, 0);
179
+ }
180
+ return [min, max];
181
+ }
182
+
183
+ // ── apilado ────────────────────────────────────────────────────────────────
184
+
185
+ /**
186
+ * Bandas apiladas de una fila. Los positivos crecen desde 0 hacia arriba y
187
+ * los negativos desde 0 hacia abajo: una serie negativa no le come el alto a
188
+ * las positivas, que es lo que pasa si se apila todo en un solo acumulador.
189
+ */
190
+ function stackRow(row, keys) {
191
+ const bands = [];
192
+ let up = 0;
193
+ let down = 0;
194
+ for (const key of keys) {
195
+ const value = toNumber(row[key]);
196
+ if (value === null) continue;
197
+ if (value >= 0) {
198
+ bands.push({
199
+ key,
200
+ from: up,
201
+ to: up + value,
202
+ value
203
+ });
204
+ up += value;
205
+ } else {
206
+ bands.push({
207
+ key,
208
+ from: down,
209
+ to: down + value,
210
+ value
211
+ });
212
+ down += value;
213
+ }
214
+ }
215
+ return bands;
216
+ }
217
+
218
+ // ── polar ──────────────────────────────────────────────────────────────────
219
+
220
+ const RAD = Math.PI / 180;
221
+
222
+ /** Punto a `radius` del centro en el ángulo dado (0° arriba, horario). */
223
+ function polar(center, radius, angle) {
224
+ return {
225
+ x: center.x + radius * Math.sin(angle * RAD),
226
+ y: center.y - radius * Math.cos(angle * RAD)
227
+ };
228
+ }
229
+
230
+ /** Ángulo de un punto respecto del centro, normalizado a [0, 360). */
231
+ function angleOf(center, point) {
232
+ const degrees = Math.atan2(point.x - center.x, center.y - point.y) / RAD;
233
+ return (degrees + 360) % 360;
234
+ }
235
+ /**
236
+ * Arcos de una torta. Los negativos no existen en una torta (no hay "menos
237
+ * porción"): se descartan en vez de invertirse. Total 0 ⇒ nada que dibujar.
238
+ */
239
+ function arcsFor(values) {
240
+ const safe = values.map(value => Number.isFinite(value) && value > 0 ? value : 0);
241
+ const total = safe.reduce((sum, value) => sum + value, 0);
242
+ if (total <= 0) return [];
243
+ const arcs = [];
244
+ let cursor = 0;
245
+ safe.forEach((value, index) => {
246
+ if (value <= 0) return;
247
+ const sweep = value / total * 360;
248
+ arcs.push({
249
+ index,
250
+ start: cursor,
251
+ sweep,
252
+ value,
253
+ ratio: value / total
254
+ });
255
+ cursor += sweep;
256
+ });
257
+ return arcs;
258
+ }
259
+
260
+ /** El arco que contiene ese ángulo, o -1. */
261
+ function arcAt(arcs, angle) {
262
+ const normalized = (angle + 360) % 360;
263
+ for (const arc of arcs) {
264
+ if (normalized >= arc.start && normalized < arc.start + arc.sweep) return arc.index;
265
+ }
266
+ return -1;
267
+ }
268
+
269
+ /** Ángulos de los ejes de un radar: el primero arriba, el resto en reparto parejo. */
270
+ function radarAngles(count) {
271
+ if (count <= 0) return [];
272
+ return Array.from({
273
+ length: count
274
+ }, (_, index) => index * 360 / count);
275
+ }
276
+
277
+ // ── segmentos y curvas ─────────────────────────────────────────────────────
278
+
279
+ /**
280
+ * Caja de un segmento a→b: sin SVG, una línea es un rectángulo fino rotado
281
+ * sobre su centro. Ancho = distancia, alto = grosor, rotación = la pendiente.
282
+ */
283
+ function segmentBox(a, b, thickness) {
284
+ const dx = b.x - a.x;
285
+ const dy = b.y - a.y;
286
+ const length = Math.hypot(dx, dy);
287
+ return {
288
+ left: (a.x + b.x) / 2 - length / 2,
289
+ top: (a.y + b.y) / 2 - thickness / 2,
290
+ width: length,
291
+ height: thickness,
292
+ rotate: Math.atan2(dy, dx) / RAD
293
+ };
294
+ }
295
+
296
+ /**
297
+ * Suaviza una polilínea con Catmull-Rom muestreada en `steps` tramos por vano.
298
+ * La curva pasa por todos los puntos originales (a diferencia de un Bézier de
299
+ * control libre), así que el dato sigue siendo el dato; sólo se agrega camino
300
+ * entre medio, y el resultado se dibuja con los mismos segmentos rectos.
301
+ */
302
+ function smoothPoints(points, steps = 8) {
303
+ if (points.length < 3 || steps < 2) return points;
304
+ const out = [points[0]];
305
+ for (let i = 0; i < points.length - 1; i += 1) {
306
+ // Los extremos se duplican para que el primer y el último vano tengan
307
+ // las cuatro referencias que pide la spline.
308
+ const p0 = points[i - 1] ?? points[i];
309
+ const p1 = points[i];
310
+ const p2 = points[i + 1];
311
+ const p3 = points[i + 2] ?? p2;
312
+ for (let s = 1; s <= steps; s += 1) {
313
+ const t = s / steps;
314
+ const t2 = t * t;
315
+ const t3 = t2 * t;
316
+ out.push({
317
+ x: 0.5 * (2 * p1.x + (-p0.x + p2.x) * t + (2 * p0.x - 5 * p1.x + 4 * p2.x - p3.x) * t2 + (-p0.x + 3 * p1.x - 3 * p2.x + p3.x) * t3),
318
+ y: 0.5 * (2 * p1.y + (-p0.y + p2.y) * t + (2 * p0.y - 5 * p1.y + 4 * p2.y - p3.y) * t2 + (-p0.y + 3 * p1.y - 3 * p2.y + p3.y) * t3)
319
+ });
320
+ }
321
+ }
322
+ return out;
323
+ }
324
+
325
+ /**
326
+ * `y` de la polilínea en esa `x`, o null si cae fuera. Es lo que convierte una
327
+ * línea en área: cada tira vertical pregunta su alto acá.
328
+ */
329
+ function sampleY(points, x) {
330
+ if (points.length === 0) return null;
331
+ if (points.length === 1) return points[0].y;
332
+ for (let i = 0; i < points.length - 1; i += 1) {
333
+ const a = points[i];
334
+ const b = points[i + 1];
335
+ const [lo, hi] = a.x <= b.x ? [a, b] : [b, a];
336
+ if (x < lo.x || x > hi.x) continue;
337
+ if (hi.x === lo.x) return lo.y;
338
+ return lo.y + (x - lo.x) / (hi.x - lo.x) * (hi.y - lo.y);
339
+ }
340
+ return null;
341
+ }
342
+
343
+ // ── formato ────────────────────────────────────────────────────────────────
344
+
345
+ const UNITS = ['', 'k', 'M', 'B'];
346
+
347
+ /**
348
+ * Formato por defecto de ejes y tooltip: compacto, porque un eje de un chart
349
+ * de 320px no tiene lugar para "1250000". El consumidor lo reemplaza entero
350
+ * con `formatValue`.
351
+ */
352
+ function formatNumber(value) {
353
+ if (!Number.isFinite(value)) return '';
354
+ const sign = value < 0 ? '-' : '';
355
+ let magnitude = Math.abs(value);
356
+ let unit = 0;
357
+ while (magnitude >= 1000 && unit < UNITS.length - 1) {
358
+ magnitude /= 1000;
359
+ unit += 1;
360
+ }
361
+ const decimals = magnitude < 10 && magnitude % 1 !== 0 ? 1 : 0;
362
+ return `${sign}${magnitude.toFixed(decimals)}${UNITS[unit]}`;
363
+ }
364
+ /**
365
+ * Descompone un polígono alrededor de un centro en porciones angulares: es lo
366
+ * que permite rellenar un radar con la misma primitiva que dibuja una torta.
367
+ *
368
+ * El corte va por el lado del polígono (parámetro `t`), no por el ángulo: el
369
+ * radio de una cuerda no es lineal en el ángulo, y cortando por ángulo los
370
+ * vértices quedarían redondeados justo donde el dato manda que haya una punta.
371
+ */
372
+ function fanStrips(center, points, steps = 6) {
373
+ if (points.length < 3 || steps < 1) return [];
374
+ const strips = [];
375
+ for (let i = 0; i < points.length; i += 1) {
376
+ const a = points[i];
377
+ const b = points[(i + 1) % points.length];
378
+ let previous = a;
379
+ let previousAngle = angleOf(center, a);
380
+ for (let s = 1; s <= steps; s += 1) {
381
+ const t = s / steps;
382
+ const point = {
383
+ x: a.x + (b.x - a.x) * t,
384
+ y: a.y + (b.y - a.y) * t
385
+ };
386
+ const angle = angleOf(center, point);
387
+ // El salto de 360 a 0 cae en algún lado del recorrido: sin esto, esa
388
+ // porción se dibujaría girando al revés y taparía todo el resto.
389
+ let sweep = angle - previousAngle;
390
+ if (sweep < 0) sweep += 360;
391
+ if (sweep > 0) {
392
+ const radius = (Math.hypot(previous.x - center.x, previous.y - center.y) + Math.hypot(point.x - center.x, point.y - center.y)) / 2;
393
+ // Las porciones se solapan un pelo a propósito: sin el solape, el
394
+ // antialias deja una costura clara entre tira y tira.
395
+ strips.push({
396
+ start: previousAngle,
397
+ sweep: sweep + 0.4,
398
+ radius
399
+ });
400
+ }
401
+ previous = point;
402
+ previousAngle = angle;
403
+ }
404
+ }
405
+ return strips;
406
+ }
407
+
408
+ // ── diezmado ───────────────────────────────────────────────────────────────
409
+
410
+ /**
411
+ * LTTB (Largest-Triangle-Three-Buckets): elige `threshold` puntos de `values`
412
+ * quedándose con la forma de la curva. Devuelve índices, no puntos, para que
413
+ * quien llama pueda conservar la fila entera —todas sus series— y no sólo la
414
+ * que se usó para decidir.
415
+ *
416
+ * Por qué no un muestreo cada N: cada N se come los picos, que son justo lo
417
+ * que alguien mira en una serie temporal. LTTB parte el recorrido en baldes y
418
+ * de cada uno se queda con el punto que forma el triángulo más grande con el
419
+ * ya elegido y con el promedio del balde siguiente — o sea, con el que más
420
+ * cambia la silueta. Primero y último se conservan siempre.
421
+ *
422
+ * `x` es el índice: las categorías de un chart están repartidas parejo sobre
423
+ * el eje, así que la distancia horizontal entre dos puntos es su distancia de
424
+ * índice.
425
+ */
426
+ function lttbIndices(values, threshold) {
427
+ const total = values.length;
428
+ if (threshold >= total || threshold < 3) return values.map((_, index) => index);
429
+ const at = index => values[index] ?? 0;
430
+ const selected = [0];
431
+ // Un balde por punto intermedio: el primero y el último no se sortean. Con
432
+ // `threshold < total` el balde mide más de un punto, así que ninguno queda
433
+ // vacío y salen exactamente `threshold` índices, sin repetidos.
434
+ const every = (total - 2) / (threshold - 2);
435
+ let previous = 0;
436
+ for (let bucket = 0; bucket < threshold - 2; bucket += 1) {
437
+ // Promedio del balde *siguiente*: el tercer vértice del triángulo. Va
438
+ // corrido un balde respecto de los candidatos, y ese corrimiento es el
439
+ // algoritmo — comparar contra el propio balde no mira hacia adelante.
440
+ const avgStart = Math.floor((bucket + 1) * every) + 1;
441
+ const avgEnd = Math.min(Math.floor((bucket + 2) * every) + 1, total);
442
+ let avgX = 0;
443
+ let avgY = 0;
444
+ for (let i = avgStart; i < avgEnd; i += 1) {
445
+ avgX += i;
446
+ avgY += at(i);
447
+ }
448
+ const span = Math.max(1, avgEnd - avgStart);
449
+ avgX /= span;
450
+ avgY /= span;
451
+ const start = Math.floor(bucket * every) + 1;
452
+ const end = Math.floor((bucket + 1) * every) + 1;
453
+ let best = start;
454
+ let bestArea = -1;
455
+ for (let i = start; i < end; i += 1) {
456
+ const area = Math.abs((previous - avgX) * (at(i) - at(previous)) - (previous - i) * (avgY - at(previous)));
457
+ if (area > bestArea) {
458
+ bestArea = area;
459
+ best = i;
460
+ }
461
+ }
462
+ selected.push(best);
463
+ previous = best;
464
+ }
465
+ selected.push(total - 1);
466
+ return selected;
467
+ }
468
+ //# sourceMappingURL=math.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["toNumber","value","Number","isFinite","clamp","min","max","Math","tidy","toFixed","niceStep","rough","magnitude","pow","floor","log10","fraction","nice","niceScale","count","lo","hi","pad","abs","step","start","end","ceil","values","push","exactTicks","steps","Array","from","length","_","index","growExtent","previous","next","linearScale","domain","range","d0","d1","r0","r1","span","extent","rows","keys","options","stacked","includeZero","Infinity","row","up","down","key","stackRow","bands","to","RAD","PI","polar","center","radius","angle","x","sin","y","cos","angleOf","point","degrees","atan2","arcsFor","safe","map","total","reduce","sum","arcs","cursor","forEach","sweep","ratio","arcAt","normalized","arc","radarAngles","segmentBox","a","b","thickness","dx","dy","hypot","left","top","width","height","rotate","smoothPoints","points","out","i","p0","p1","p2","p3","s","t","t2","t3","sampleY","UNITS","formatNumber","sign","unit","decimals","fanStrips","strips","previousAngle","lttbIndices","threshold","at","selected","every","bucket","avgStart","avgEnd","avgX","avgY","best","bestArea","area"],"sourceRoot":"../../../../src","sources":["organisms/chart/math.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.GRAPHIC_CONTRAST = void 0;
7
+ exports.seriesPalette = seriesPalette;
8
+ var _colors = require("../../theme/colors");
9
+ /**
10
+ * Paleta categórica de Chart, derivada del theme.
11
+ *
12
+ * No hay una lista de colores acá a propósito: si la hubiera, un `brand`
13
+ * personalizado daría un chart que no se parece al resto de la app, y el modo
14
+ * oscuro tendría que mantenerse a mano. Las primeras series reusan los acentos
15
+ * del theme (que ya vienen con el contraste resuelto para su scheme) y, cuando
16
+ * se acaban, se sigue rotando el tono del primario por el ángulo áureo: la
17
+ * secuencia 137.5° es la que más tarda en repetir un tono parecido, que es
18
+ * exactamente lo que se le pide a una paleta categórica.
19
+ *
20
+ * Cada color se verifica contra `surface` a 3:1 — el mínimo de WCAG 1.4.11
21
+ * para objetos gráficos, que es lo que es una barra — y se aclara u oscurece
22
+ * hasta cumplirlo.
23
+ */
24
+
25
+ /** Contraste mínimo de un objeto gráfico contra su fondo (WCAG 1.4.11). */
26
+ const GRAPHIC_CONTRAST = exports.GRAPHIC_CONTRAST = 3;
27
+ const GOLDEN_ANGLE = 137.508;
28
+
29
+ /** Acentos del theme en orden de aparición: tonos bien separados entre sí. */
30
+ function seeds(theme) {
31
+ const {
32
+ primary,
33
+ secondary,
34
+ warning,
35
+ success,
36
+ error
37
+ } = theme.colors;
38
+ return [primary, secondary, warning, success, error];
39
+ }
40
+
41
+ /**
42
+ * Empuja la luminosidad hasta despegar del fondo. El paso es chico y el tope
43
+ * bajo porque el objetivo es corregir un color, no inventar otro: si en 12
44
+ * intentos no llegó, se devuelve lo mejor que se consiguió.
45
+ */
46
+ function readable(hex, surface) {
47
+ if ((0, _colors.contrast)(hex, surface) >= GRAPHIC_CONTRAST) return hex;
48
+ const hsl = (0, _colors.toHsl)(hex);
49
+ // Sobre un fondo claro hay que oscurecer, sobre uno oscuro aclarar.
50
+ const direction = (0, _colors.toHsl)(surface).l > 0.5 ? -1 : 1;
51
+ let best = hex;
52
+ let bestContrast = (0, _colors.contrast)(hex, surface);
53
+ for (let step = 1; step <= 12; step += 1) {
54
+ const candidate = (0, _colors.toHex)({
55
+ ...hsl,
56
+ l: Math.min(0.95, Math.max(0.08, hsl.l + direction * step * 0.05))
57
+ });
58
+ const score = (0, _colors.contrast)(candidate, surface);
59
+ if (score > bestContrast) {
60
+ best = candidate;
61
+ bestContrast = score;
62
+ }
63
+ if (score >= GRAPHIC_CONTRAST) return candidate;
64
+ }
65
+ return best;
66
+ }
67
+ function buildUnsafe(theme, count) {
68
+ const base = seeds(theme);
69
+ const surface = theme.colors.surface;
70
+ const out = [];
71
+ for (let index = 0; index < count; index += 1) {
72
+ if (index < base.length) {
73
+ out.push(readable(base[index], surface));
74
+ continue;
75
+ }
76
+ // Pasados los acentos, se gira el tono del primario. `l` alterna un
77
+ // escalón por vuelta para que dos tonos vecinos no se confundan si la
78
+ // rotación los acerca.
79
+ const seed = (0, _colors.toHsl)(base[0]);
80
+ const turn = index - base.length + 1;
81
+ out.push(readable((0, _colors.toHex)({
82
+ h: (seed.h + turn * GOLDEN_ANGLE) % 360,
83
+ s: Math.max(0.35, seed.s),
84
+ l: Math.min(0.78, Math.max(0.28, seed.l + (turn % 2 === 0 ? 0.08 : -0.04)))
85
+ }), surface));
86
+ }
87
+ return out;
88
+ }
89
+
90
+ /**
91
+ * Los helpers de color hablan hex. Un theme con un acento en `rgba()` es
92
+ * legal para React Native y hace que `toHsl` tire: en ese caso se cae a los
93
+ * acentos tal cual vinieron, ciclando. Un chart con colores repetidos es peor
94
+ * que uno con colores derivados, pero muchísimo mejor que uno que no renderiza.
95
+ */
96
+ function build(theme, count) {
97
+ try {
98
+ return buildUnsafe(theme, count);
99
+ } catch {
100
+ const base = seeds(theme);
101
+ return Array.from({
102
+ length: count
103
+ }, (_, index) => base[index % base.length]);
104
+ }
105
+ }
106
+
107
+ // Una paleta por theme, y por theme el arreglo más largo pedido hasta ahora:
108
+ // la cache se comparte entre todos los charts montados, que es el caso normal
109
+ // (un dashboard con seis charts sobre el mismo theme).
110
+ const cache = new WeakMap();
111
+
112
+ /** `count` colores estables para las series: el mismo índice da siempre el mismo color. */
113
+ function seriesPalette(theme, count) {
114
+ const cached = cache.get(theme);
115
+ if (cached && cached.length >= count) return cached.slice(0, count);
116
+ const built = build(theme, Math.max(count, 8));
117
+ cache.set(theme, built);
118
+ return built.slice(0, count);
119
+ }
120
+ //# sourceMappingURL=palette.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_colors","require","GRAPHIC_CONTRAST","exports","GOLDEN_ANGLE","seeds","theme","primary","secondary","warning","success","error","colors","readable","hex","surface","contrast","hsl","toHsl","direction","l","best","bestContrast","step","candidate","toHex","Math","min","max","score","buildUnsafe","count","base","out","index","length","push","seed","turn","h","s","build","Array","from","_","cache","WeakMap","seriesPalette","cached","get","slice","built","set"],"sourceRoot":"../../../../src","sources":["organisms/chart/palette.ts"],"mappings":"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","ignoreList":[]}
@@ -21,6 +21,12 @@ Object.defineProperty(exports, "BottomSheet", {
21
21
  return _BottomSheet.BottomSheet;
22
22
  }
23
23
  });
24
+ Object.defineProperty(exports, "Chart", {
25
+ enumerable: true,
26
+ get: function () {
27
+ return _Chart.Chart;
28
+ }
29
+ });
24
30
  Object.defineProperty(exports, "DEFAULT_MONTH_NAMES", {
25
31
  enumerable: true,
26
32
  get: function () {
@@ -63,6 +69,12 @@ Object.defineProperty(exports, "NavigationBar", {
63
69
  return _NavigationBar.NavigationBar;
64
70
  }
65
71
  });
72
+ Object.defineProperty(exports, "OptionWheel", {
73
+ enumerable: true,
74
+ get: function () {
75
+ return _OptionWheel.OptionWheel;
76
+ }
77
+ });
66
78
  Object.defineProperty(exports, "ReorderableList", {
67
79
  enumerable: true,
68
80
  get: function () {
@@ -99,6 +111,12 @@ Object.defineProperty(exports, "ThemeToggle", {
99
111
  return _ThemeToggle.ThemeToggle;
100
112
  }
101
113
  });
114
+ Object.defineProperty(exports, "Timeline", {
115
+ enumerable: true,
116
+ get: function () {
117
+ return _Timeline.Timeline;
118
+ }
119
+ });
102
120
  Object.defineProperty(exports, "Toast", {
103
121
  enumerable: true,
104
122
  get: function () {
@@ -171,8 +189,10 @@ Object.defineProperty(exports, "useToast", {
171
189
  return _ToastProvider.useToast;
172
190
  }
173
191
  });
192
+ var _Timeline = require("./Timeline");
174
193
  var _Modal = require("./Modal");
175
194
  var _BottomSheet = require("./BottomSheet");
195
+ var _OptionWheel = require("./OptionWheel");
176
196
  var _Select = require("./Select");
177
197
  var _Alert = require("./Alert");
178
198
  var _AlertProvider = require("./AlertProvider");
@@ -188,4 +208,5 @@ var _ThemeToggle = require("./ThemeToggle");
188
208
  var _NavigationBar = require("./NavigationBar");
189
209
  var _ReorderableList = require("./ReorderableList");
190
210
  var _Slides = require("./Slides");
211
+ var _Chart = require("./Chart");
191
212
  //# sourceMappingURL=index.js.map