@voila.dev/chart 5.0.114 → 5.0.117
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/dist/canvas/paint-scene.d.ts.map +1 -1
- package/dist/canvas/paint-scene.js +3 -1
- package/dist/canvas/paint-scene.js.map +2 -2
- package/dist/contour/density.d.ts.map +1 -1
- package/dist/contour/density.js +2 -0
- package/dist/contour/density.js.map +2 -2
- package/dist/core/marks/area.d.ts.map +1 -1
- package/dist/core/marks/area.js +27 -11
- package/dist/core/marks/area.js.map +2 -2
- package/dist/core/marks/bar.d.ts.map +1 -1
- package/dist/core/marks/bar.js +2 -0
- package/dist/core/marks/bar.js.map +2 -2
- package/dist/core/marks/line.d.ts.map +1 -1
- package/dist/core/marks/line.js +13 -4
- package/dist/core/marks/line.js.map +2 -2
- package/dist/core/marks/polar.d.ts.map +1 -1
- package/dist/core/marks/polar.js +22 -5
- package/dist/core/marks/polar.js.map +2 -2
- package/dist/core/marks/shared.d.ts +8 -1
- package/dist/core/marks/shared.d.ts.map +1 -1
- package/dist/core/marks/shared.js.map +2 -2
- package/dist/core/marks/stats/difference.d.ts.map +1 -1
- package/dist/core/marks/stats/difference.js +20 -7
- package/dist/core/marks/stats/difference.js.map +2 -2
- package/dist/core/motion/arc-motion.d.ts +9 -0
- package/dist/core/motion/arc-motion.d.ts.map +1 -0
- package/dist/core/motion/arc-motion.js +67 -0
- package/dist/core/motion/arc-motion.js.map +7 -0
- package/dist/core/motion/enter-exit.d.ts +6 -0
- package/dist/core/motion/enter-exit.d.ts.map +1 -0
- package/dist/core/motion/enter-exit.js +20 -0
- package/dist/core/motion/enter-exit.js.map +7 -0
- package/dist/core/motion/leaving.d.ts +12 -0
- package/dist/core/motion/leaving.d.ts.map +1 -0
- package/dist/core/motion/leaving.js +33 -0
- package/dist/core/motion/leaving.js.map +7 -0
- package/dist/core/motion/motion-store.d.ts +4 -1
- package/dist/core/motion/motion-store.d.ts.map +1 -1
- package/dist/core/motion/motion-store.js +251 -100
- package/dist/core/motion/motion-store.js.map +3 -3
- package/dist/core/motion/points-motion.d.ts +6 -0
- package/dist/core/motion/points-motion.d.ts.map +1 -0
- package/dist/core/motion/points-motion.js +140 -0
- package/dist/core/motion/points-motion.js.map +7 -0
- package/dist/core/motion/strings.d.ts +18 -0
- package/dist/core/motion/strings.d.ts.map +1 -0
- package/dist/core/motion/strings.js +34 -0
- package/dist/core/motion/strings.js.map +7 -0
- package/dist/core/types.d.ts +85 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/geo/geo.d.ts.map +1 -1
- package/dist/geo/geo.js +2 -0
- package/dist/geo/geo.js.map +2 -2
- package/dist/react/chart.d.ts.map +1 -1
- package/dist/react/chart.js +6 -2
- package/dist/react/chart.js.map +2 -2
- package/dist/react/svg-scene.d.ts.map +1 -1
- package/dist/react/svg-scene.js +3 -1
- package/dist/react/svg-scene.js.map +2 -2
- package/dist/react/use-animated-scene.d.ts.map +1 -1
- package/dist/react/use-animated-scene.js +14 -2
- package/dist/react/use-animated-scene.js.map +2 -2
- package/dist/voronoi/voronoi.d.ts.map +1 -1
- package/dist/voronoi/voronoi.js +2 -0
- package/dist/voronoi/voronoi.js.map +2 -2
- package/package.json +2 -2
- package/src/canvas/paint-scene.ts +5 -1
- package/src/contour/density.ts +2 -0
- package/src/core/marks/area.ts +28 -13
- package/src/core/marks/bar.ts +2 -0
- package/src/core/marks/line.ts +15 -8
- package/src/core/marks/polar.ts +22 -5
- package/src/core/marks/shared.ts +8 -0
- package/src/core/marks/stats/difference.ts +28 -8
- package/src/core/motion/arc-motion.ts +113 -0
- package/src/core/motion/enter-exit.ts +44 -0
- package/src/core/motion/leaving.ts +55 -0
- package/src/core/motion/motion-store.ts +332 -109
- package/src/core/motion/points-motion.ts +190 -0
- package/src/core/motion/strings.ts +68 -0
- package/src/core/types.ts +98 -0
- package/src/geo/geo.ts +2 -0
- package/src/react/chart.tsx +8 -2
- package/src/react/svg-scene.tsx +5 -1
- package/src/react/use-animated-scene.ts +18 -2
- package/src/voronoi/voronoi.ts +2 -0
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { areaPath, linePath, polygonPath } from "../paths.js";
|
|
2
|
+
const POINT_FIELDS = ["x", "y", "x0", "y0"];
|
|
3
|
+
function pointsPath(geometry) {
|
|
4
|
+
if (geometry.kind !== "points") return "";
|
|
5
|
+
const { runs, shape, curve } = geometry;
|
|
6
|
+
if (shape === "polygon") return polygonPath(runs[0] ?? []);
|
|
7
|
+
return runs.map(
|
|
8
|
+
(run) => shape === "area" ? areaPath(
|
|
9
|
+
run,
|
|
10
|
+
run.map((point) => ({
|
|
11
|
+
x: point.x0 ?? point.x,
|
|
12
|
+
y: point.y0 ?? point.y
|
|
13
|
+
})),
|
|
14
|
+
curve
|
|
15
|
+
) : linePath(run, curve)
|
|
16
|
+
).join("");
|
|
17
|
+
}
|
|
18
|
+
function channel(key, field) {
|
|
19
|
+
return `${key}${field}`;
|
|
20
|
+
}
|
|
21
|
+
function fields(point, into) {
|
|
22
|
+
for (const field of POINT_FIELDS) {
|
|
23
|
+
const value = point[field];
|
|
24
|
+
if (value !== void 0) into.set(channel(point.key, field), value);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
function as(key, point) {
|
|
28
|
+
return { ...point, key };
|
|
29
|
+
}
|
|
30
|
+
function neighbour(order, index, has) {
|
|
31
|
+
for (let at = index - 1; at >= 0; at -= 1) {
|
|
32
|
+
const found = has.get(order[at]);
|
|
33
|
+
if (found) return found;
|
|
34
|
+
}
|
|
35
|
+
for (let at = index + 1; at < order.length; at += 1) {
|
|
36
|
+
const found = has.get(order[at]);
|
|
37
|
+
if (found) return found;
|
|
38
|
+
}
|
|
39
|
+
return void 0;
|
|
40
|
+
}
|
|
41
|
+
function mergeOrder(before, after) {
|
|
42
|
+
const merged = [...after];
|
|
43
|
+
const known = new Set(after);
|
|
44
|
+
for (const [index, key] of before.entries()) {
|
|
45
|
+
if (known.has(key)) continue;
|
|
46
|
+
const previous = before[index - 1];
|
|
47
|
+
merged.splice(
|
|
48
|
+
previous === void 0 ? 0 : merged.indexOf(previous) + 1,
|
|
49
|
+
0,
|
|
50
|
+
key
|
|
51
|
+
);
|
|
52
|
+
known.add(key);
|
|
53
|
+
}
|
|
54
|
+
return merged;
|
|
55
|
+
}
|
|
56
|
+
function pointsPlan(from, to) {
|
|
57
|
+
if (from.runs.length !== to.runs.length || from.shape !== to.shape)
|
|
58
|
+
return void 0;
|
|
59
|
+
const starts = /* @__PURE__ */ new Map();
|
|
60
|
+
const targets = /* @__PURE__ */ new Map();
|
|
61
|
+
const orders = to.runs.map((run, index) => {
|
|
62
|
+
const old = new Map(
|
|
63
|
+
(from.runs[index] ?? []).map((point) => [point.key, point])
|
|
64
|
+
);
|
|
65
|
+
const next = new Map(run.map((point) => [point.key, point]));
|
|
66
|
+
if (old.size !== (from.runs[index]?.length ?? 0) || next.size !== run.length) {
|
|
67
|
+
return void 0;
|
|
68
|
+
}
|
|
69
|
+
const order = mergeOrder([...old.keys()], [...next.keys()]);
|
|
70
|
+
for (const [at, key] of order.entries()) {
|
|
71
|
+
const target = next.get(key) ?? neighbour(order, at, next);
|
|
72
|
+
const start = old.get(key) ?? neighbour(order, at, old) ?? target;
|
|
73
|
+
if (target === void 0 || start === void 0) continue;
|
|
74
|
+
fields(as(key, start), starts);
|
|
75
|
+
fields(as(key, target), targets);
|
|
76
|
+
}
|
|
77
|
+
return order;
|
|
78
|
+
});
|
|
79
|
+
if (orders.some((order) => order === void 0)) return void 0;
|
|
80
|
+
return {
|
|
81
|
+
starts,
|
|
82
|
+
targets,
|
|
83
|
+
build(value) {
|
|
84
|
+
const area = to.runs.some((run) => run[0]?.y0 !== void 0);
|
|
85
|
+
return {
|
|
86
|
+
...to,
|
|
87
|
+
runs: orders.map(
|
|
88
|
+
(order) => order.map((key) => ({
|
|
89
|
+
key,
|
|
90
|
+
x: value(channel(key, "x")),
|
|
91
|
+
y: value(channel(key, "y")),
|
|
92
|
+
...area ? { x0: value(channel(key, "x0")), y0: value(channel(key, "y0")) } : {}
|
|
93
|
+
}))
|
|
94
|
+
)
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
function pointsLength(geometry) {
|
|
100
|
+
if (geometry.kind !== "points") return 0;
|
|
101
|
+
let length = 0;
|
|
102
|
+
for (const run of geometry.runs) {
|
|
103
|
+
for (let index = 1; index < run.length; index += 1) {
|
|
104
|
+
const a = run[index - 1];
|
|
105
|
+
const b = run[index];
|
|
106
|
+
length += Math.hypot(b.x - a.x, b.y - a.y);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return length * 1.1;
|
|
110
|
+
}
|
|
111
|
+
function collapsed(node) {
|
|
112
|
+
const geometry = node.geometry;
|
|
113
|
+
if (geometry?.kind !== "points" || geometry.runs[0]?.[0]?.y0 === void 0) {
|
|
114
|
+
return void 0;
|
|
115
|
+
}
|
|
116
|
+
return {
|
|
117
|
+
...node,
|
|
118
|
+
geometry: {
|
|
119
|
+
...geometry,
|
|
120
|
+
runs: geometry.runs.map(
|
|
121
|
+
(run) => run.map((point) => ({
|
|
122
|
+
...point,
|
|
123
|
+
x: point.x0 ?? point.x,
|
|
124
|
+
y: point.y0 ?? point.y
|
|
125
|
+
}))
|
|
126
|
+
)
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
const POINTS_MOTION = {
|
|
131
|
+
plan: (from, to) => from.kind === "points" && to.kind === "points" ? pointsPlan(from, to) : void 0,
|
|
132
|
+
draw: pointsPath,
|
|
133
|
+
length: pointsLength,
|
|
134
|
+
enter: (node) => node.enter === "grow" ? collapsed(node) : void 0
|
|
135
|
+
};
|
|
136
|
+
export {
|
|
137
|
+
POINTS_MOTION,
|
|
138
|
+
pointsPath
|
|
139
|
+
};
|
|
140
|
+
//# sourceMappingURL=points-motion.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/core/motion/points-motion.ts"],
|
|
4
|
+
"sourcesContent": ["import { areaPath, linePath, polygonPath } from \"#/core/paths.ts\";\nimport type {\n\tGeometryMotion,\n\tGeometryPlan,\n\tGeometryPoint,\n\tSceneGeometry,\n\tScenePath,\n} from \"#/core/types.ts\";\n\ntype Points = Extract<SceneGeometry, { kind: \"points\" }>;\n\nconst POINT_FIELDS = [\"x\", \"y\", \"x0\", \"y0\"] as const;\n\n/** A line, an area or a radar outline through its points. */\nexport function pointsPath(geometry: SceneGeometry): string {\n\tif (geometry.kind !== \"points\") return \"\";\n\tconst { runs, shape, curve } = geometry;\n\tif (shape === \"polygon\") return polygonPath(runs[0] ?? []);\n\treturn runs\n\t\t.map((run) =>\n\t\t\tshape === \"area\"\n\t\t\t\t? areaPath(\n\t\t\t\t\t\trun,\n\t\t\t\t\t\trun.map((point) => ({\n\t\t\t\t\t\t\tx: point.x0 ?? point.x,\n\t\t\t\t\t\t\ty: point.y0 ?? point.y,\n\t\t\t\t\t\t})),\n\t\t\t\t\t\tcurve,\n\t\t\t\t\t)\n\t\t\t\t: linePath(run, curve),\n\t\t)\n\t\t.join(\"\");\n}\n\nfunction channel(key: string, field: string): string {\n\treturn `${key}\\u0001${field}`;\n}\n\nfunction fields(point: GeometryPoint, into: Map<string, number>) {\n\tfor (const field of POINT_FIELDS) {\n\t\tconst value = point[field];\n\t\tif (value !== undefined) into.set(channel(point.key, field), value);\n\t}\n}\n\n/** `point`'s numbers under `key`'s channel names: a point entering from, or folding into, a neighbour. */\nfunction as(key: string, point: GeometryPoint): GeometryPoint {\n\treturn { ...point, key };\n}\n\n/** The nearest of `order` around `index` that `has` knows: looking back first, then ahead. */\nfunction neighbour(\n\torder: readonly string[],\n\tindex: number,\n\thas: ReadonlyMap<string, GeometryPoint>,\n): GeometryPoint | undefined {\n\tfor (let at = index - 1; at >= 0; at -= 1) {\n\t\tconst found = has.get(order[at] as string);\n\t\tif (found) return found;\n\t}\n\tfor (let at = index + 1; at < order.length; at += 1) {\n\t\tconst found = has.get(order[at] as string);\n\t\tif (found) return found;\n\t}\n\treturn undefined;\n}\n\n/** The new keys, with the ones that left kept after the old point before them. */\nfunction mergeOrder(\n\tbefore: readonly string[],\n\tafter: readonly string[],\n): string[] {\n\tconst merged = [...after];\n\tconst known = new Set(after);\n\tfor (const [index, key] of before.entries()) {\n\t\tif (known.has(key)) continue;\n\t\tconst previous = before[index - 1];\n\t\tmerged.splice(\n\t\t\tprevious === undefined ? 0 : merged.indexOf(previous) + 1,\n\t\t\t0,\n\t\t\tkey,\n\t\t);\n\t\tknown.add(key);\n\t}\n\treturn merged;\n}\n\n/**\n * Points keyed by x. A point that appears enters from its nearest old\n * neighbour (a month added on the right slides out of the last one); a\n * point that leaves folds into its nearest new neighbour. Undefined when the\n * runs don't line up: the caller falls back to tweening the path.\n */\nfunction pointsPlan(from: Points, to: Points): GeometryPlan | undefined {\n\tif (from.runs.length !== to.runs.length || from.shape !== to.shape)\n\t\treturn undefined;\n\tconst starts = new Map<string, number>();\n\tconst targets = new Map<string, number>();\n\tconst orders = to.runs.map((run, index): string[] | undefined => {\n\t\tconst old = new Map(\n\t\t\t(from.runs[index] ?? []).map((point) => [point.key, point]),\n\t\t);\n\t\tconst next = new Map(run.map((point) => [point.key, point]));\n\t\t// Two points under one key can't be told apart: tween the path instead.\n\t\tif (\n\t\t\told.size !== (from.runs[index]?.length ?? 0) ||\n\t\t\tnext.size !== run.length\n\t\t) {\n\t\t\treturn undefined;\n\t\t}\n\t\tconst order = mergeOrder([...old.keys()], [...next.keys()]);\n\t\tfor (const [at, key] of order.entries()) {\n\t\t\tconst target = next.get(key) ?? neighbour(order, at, next);\n\t\t\tconst start = old.get(key) ?? neighbour(order, at, old) ?? target;\n\t\t\tif (target === undefined || start === undefined) continue;\n\t\t\tfields(as(key, start), starts);\n\t\t\tfields(as(key, target), targets);\n\t\t}\n\t\treturn order;\n\t});\n\tif (orders.some((order) => order === undefined)) return undefined;\n\treturn {\n\t\tstarts,\n\t\ttargets,\n\t\tbuild(value) {\n\t\t\tconst area = to.runs.some((run) => run[0]?.y0 !== undefined);\n\t\t\treturn {\n\t\t\t\t...to,\n\t\t\t\truns: (orders as string[][]).map((order) =>\n\t\t\t\t\torder.map((key) => ({\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tx: value(channel(key, \"x\")),\n\t\t\t\t\t\ty: value(channel(key, \"y\")),\n\t\t\t\t\t\t...(area\n\t\t\t\t\t\t\t? { x0: value(channel(key, \"x0\")), y0: value(channel(key, \"y0\")) }\n\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t})),\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t};\n}\n\n/** A line's length along its points: what Canvas dashes against to trace it in. */\nfunction pointsLength(geometry: SceneGeometry): number {\n\tif (geometry.kind !== \"points\") return 0;\n\tlet length = 0;\n\tfor (const run of geometry.runs) {\n\t\tfor (let index = 1; index < run.length; index += 1) {\n\t\t\tconst a = run[index - 1] as GeometryPoint;\n\t\t\tconst b = run[index] as GeometryPoint;\n\t\t\tlength += Math.hypot(b.x - a.x, b.y - a.y);\n\t\t}\n\t}\n\t// A curve runs a little longer than its chords; the dash must cover it all.\n\treturn length * 1.1;\n}\n\n/** An area, or the line over it, grows from its lower edge. */\nfunction collapsed(node: ScenePath): ScenePath | undefined {\n\tconst geometry = node.geometry;\n\t// A line over an area carries the area's lower edge too, so the two grow as one.\n\tif (geometry?.kind !== \"points\" || geometry.runs[0]?.[0]?.y0 === undefined) {\n\t\treturn undefined;\n\t}\n\treturn {\n\t\t...node,\n\t\tgeometry: {\n\t\t\t...geometry,\n\t\t\truns: geometry.runs.map((run) =>\n\t\t\t\trun.map((point) => ({\n\t\t\t\t\t...point,\n\t\t\t\t\tx: point.x0 ?? point.x,\n\t\t\t\t\ty: point.y0 ?? point.y,\n\t\t\t\t})),\n\t\t\t),\n\t\t},\n\t};\n}\n\n/** Lines, areas and radar outlines: points keyed by x (or by axis). */\nexport const POINTS_MOTION: GeometryMotion = {\n\tplan: (from, to) =>\n\t\tfrom.kind === \"points\" && to.kind === \"points\"\n\t\t\t? pointsPlan(from, to)\n\t\t\t: undefined,\n\tdraw: pointsPath,\n\tlength: pointsLength,\n\tenter: (node) => (node.enter === \"grow\" ? collapsed(node) : undefined),\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { SceneNode } from "../types.js";
|
|
2
|
+
/** The channels that move as a string mixed by progress, not as a number. */
|
|
3
|
+
export declare const STRING_CHANNELS: readonly ["d", "fill", "stroke"];
|
|
4
|
+
export type StringChannel = (typeof STRING_CHANNELS)[number];
|
|
5
|
+
/**
|
|
6
|
+
* A colour part of the way to another, as CSS: `color-mix()` reads the
|
|
7
|
+
* chart's `var(--chart-1)` tokens as they are, so nothing parses colours,
|
|
8
|
+
* and the Canvas resolver computes the mix against the page like any
|
|
9
|
+
* other colour.
|
|
10
|
+
*/
|
|
11
|
+
export declare function colourBetween(from: string, to: string, progress: number): string;
|
|
12
|
+
/** What a string channel of `node` reads now. */
|
|
13
|
+
export declare function stringOf(node: SceneNode | undefined, channel: StringChannel): string | undefined;
|
|
14
|
+
/** The mix from what was painted to what `node` asks for. */
|
|
15
|
+
export declare function stringMixer(node: SceneNode, channel: StringChannel, from: string, to: string): (progress: number) => string;
|
|
16
|
+
/** `node` with each string channel set to its moving value. */
|
|
17
|
+
export declare function withStrings(node: SceneNode, values: Partial<Record<StringChannel, string>>): SceneNode;
|
|
18
|
+
//# sourceMappingURL=strings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"strings.d.ts","sourceRoot":"","sources":["../../../src/core/motion/strings.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,6EAA6E;AAC7E,eAAO,MAAM,eAAe,YAAI,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAU,CAAC;AAEhE,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAK7D;;;;;GAKG;AACH,wBAAgB,aAAa,CAC5B,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,MAAM,GACd,MAAM,CAKR;AAED,iDAAiD;AACjD,wBAAgB,QAAQ,CACvB,IAAI,EAAE,SAAS,GAAG,SAAS,EAC3B,OAAO,EAAE,aAAa,GACpB,MAAM,GAAG,SAAS,CAOpB;AAED,6DAA6D;AAC7D,wBAAgB,WAAW,CAC1B,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,GACR,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAM9B;AAED,+DAA+D;AAC/D,wBAAgB,WAAW,CAC1B,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,GAC5C,SAAS,CAQX"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { tweenPath } from "./tween.js";
|
|
2
|
+
const STRING_CHANNELS = ["d", "fill", "stroke"];
|
|
3
|
+
const COLOUR_STEPS = 50;
|
|
4
|
+
function colourBetween(from, to, progress) {
|
|
5
|
+
const step = Math.round(Math.min(1, Math.max(0, progress)) * COLOUR_STEPS);
|
|
6
|
+
if (step === 0) return from;
|
|
7
|
+
if (step === COLOUR_STEPS) return to;
|
|
8
|
+
return `color-mix(in oklab, ${to} ${step * 100 / COLOUR_STEPS}%, ${from})`;
|
|
9
|
+
}
|
|
10
|
+
function stringOf(node, channel) {
|
|
11
|
+
if (node === void 0 || node.kind === "group") return void 0;
|
|
12
|
+
return channel === "d" ? node.kind === "path" ? node.d : void 0 : node.paint[channel];
|
|
13
|
+
}
|
|
14
|
+
function stringMixer(node, channel, from, to) {
|
|
15
|
+
if (channel !== "d") {
|
|
16
|
+
return (progress) => colourBetween(from, to, progress);
|
|
17
|
+
}
|
|
18
|
+
const morph = node.kind === "path" ? node.morph : void 0;
|
|
19
|
+
return morph ? morph(from, to) : (progress) => tweenPath(from, to, progress);
|
|
20
|
+
}
|
|
21
|
+
function withStrings(node, values) {
|
|
22
|
+
if (node.kind === "group") return node;
|
|
23
|
+
const { d, ...colours } = values;
|
|
24
|
+
const shaped = d === void 0 || node.kind !== "path" ? node : { ...node, d };
|
|
25
|
+
return Object.keys(colours).length === 0 ? shaped : { ...shaped, paint: { ...shaped.paint, ...colours } };
|
|
26
|
+
}
|
|
27
|
+
export {
|
|
28
|
+
STRING_CHANNELS,
|
|
29
|
+
colourBetween,
|
|
30
|
+
stringMixer,
|
|
31
|
+
stringOf,
|
|
32
|
+
withStrings
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=strings.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/core/motion/strings.ts"],
|
|
4
|
+
"sourcesContent": ["import { tweenPath } from \"#/core/motion/tween.ts\";\nimport type { SceneNode } from \"#/core/types.ts\";\n\n/** The channels that move as a string mixed by progress, not as a number. */\nexport const STRING_CHANNELS = [\"d\", \"fill\", \"stroke\"] as const;\n\nexport type StringChannel = (typeof STRING_CHANNELS)[number];\n\n/** 2 % steps: at most 51 colours per pair, so the Canvas resolver's cache stays small. */\nconst COLOUR_STEPS = 50;\n\n/**\n * A colour part of the way to another, as CSS: `color-mix()` reads the\n * chart's `var(--chart-1)` tokens as they are, so nothing parses colours,\n * and the Canvas resolver computes the mix against the page like any\n * other colour.\n */\nexport function colourBetween(\n\tfrom: string,\n\tto: string,\n\tprogress: number,\n): string {\n\tconst step = Math.round(Math.min(1, Math.max(0, progress)) * COLOUR_STEPS);\n\tif (step === 0) return from;\n\tif (step === COLOUR_STEPS) return to;\n\treturn `color-mix(in oklab, ${to} ${(step * 100) / COLOUR_STEPS}%, ${from})`;\n}\n\n/** What a string channel of `node` reads now. */\nexport function stringOf(\n\tnode: SceneNode | undefined,\n\tchannel: StringChannel,\n): string | undefined {\n\tif (node === undefined || node.kind === \"group\") return undefined;\n\treturn channel === \"d\"\n\t\t? node.kind === \"path\"\n\t\t\t? node.d\n\t\t\t: undefined\n\t\t: node.paint[channel];\n}\n\n/** The mix from what was painted to what `node` asks for. */\nexport function stringMixer(\n\tnode: SceneNode,\n\tchannel: StringChannel,\n\tfrom: string,\n\tto: string,\n): (progress: number) => string {\n\tif (channel !== \"d\") {\n\t\treturn (progress) => colourBetween(from, to, progress);\n\t}\n\tconst morph = node.kind === \"path\" ? node.morph : undefined;\n\treturn morph ? morph(from, to) : (progress) => tweenPath(from, to, progress);\n}\n\n/** `node` with each string channel set to its moving value. */\nexport function withStrings(\n\tnode: SceneNode,\n\tvalues: Partial<Record<StringChannel, string>>,\n): SceneNode {\n\tif (node.kind === \"group\") return node;\n\tconst { d, ...colours } = values;\n\tconst shaped =\n\t\td === undefined || node.kind !== \"path\" ? node : { ...node, d };\n\treturn Object.keys(colours).length === 0\n\t\t? shaped\n\t\t: ({ ...shaped, paint: { ...shaped.paint, ...colours } } as SceneNode);\n}\n"],
|
|
5
|
+
"mappings": "AAAA,SAAS,iBAAiB;AAInB,MAAM,kBAAkB,CAAC,KAAK,QAAQ,QAAQ;AAKrD,MAAM,eAAe;AAQd,SAAS,cACf,MACA,IACA,UACS;AACT,QAAM,OAAO,KAAK,MAAM,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,QAAQ,CAAC,IAAI,YAAY;AACzE,MAAI,SAAS,EAAG,QAAO;AACvB,MAAI,SAAS,aAAc,QAAO;AAClC,SAAO,uBAAuB,EAAE,IAAK,OAAO,MAAO,YAAY,MAAM,IAAI;AAC1E;AAGO,SAAS,SACf,MACA,SACqB;AACrB,MAAI,SAAS,UAAa,KAAK,SAAS,QAAS,QAAO;AACxD,SAAO,YAAY,MAChB,KAAK,SAAS,SACb,KAAK,IACL,SACD,KAAK,MAAM,OAAO;AACtB;AAGO,SAAS,YACf,MACA,SACA,MACA,IAC+B;AAC/B,MAAI,YAAY,KAAK;AACpB,WAAO,CAAC,aAAa,cAAc,MAAM,IAAI,QAAQ;AAAA,EACtD;AACA,QAAM,QAAQ,KAAK,SAAS,SAAS,KAAK,QAAQ;AAClD,SAAO,QAAQ,MAAM,MAAM,EAAE,IAAI,CAAC,aAAa,UAAU,MAAM,IAAI,QAAQ;AAC5E;AAGO,SAAS,YACf,MACA,QACY;AACZ,MAAI,KAAK,SAAS,QAAS,QAAO;AAClC,QAAM,EAAE,GAAG,GAAG,QAAQ,IAAI;AAC1B,QAAM,SACL,MAAM,UAAa,KAAK,SAAS,SAAS,OAAO,EAAE,GAAG,MAAM,EAAE;AAC/D,SAAO,OAAO,KAAK,OAAO,EAAE,WAAW,IACpC,SACC,EAAE,GAAG,QAAQ,OAAO,EAAE,GAAG,OAAO,OAAO,GAAG,QAAQ,EAAE;AACzD;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/dist/core/types.d.ts
CHANGED
|
@@ -66,6 +66,15 @@ export interface ChartPaint {
|
|
|
66
66
|
readonly strokeOpacity?: number;
|
|
67
67
|
/** Fill with diagonal hatching in the fill colour: a value pencilled in, not yet true. */
|
|
68
68
|
readonly hatch?: boolean;
|
|
69
|
+
/**
|
|
70
|
+
* Only the first `fraction` of the stroke is drawn: a line tracing itself
|
|
71
|
+
* in. `length` is the path's length in pixels, which Canvas needs for its
|
|
72
|
+
* dash and SVG doesn't (it measures with `pathLength`).
|
|
73
|
+
*/
|
|
74
|
+
readonly drawn?: {
|
|
75
|
+
readonly fraction: number;
|
|
76
|
+
readonly length: number;
|
|
77
|
+
};
|
|
69
78
|
}
|
|
70
79
|
export interface ChartTextPaint extends ChartPaint {
|
|
71
80
|
readonly fontSize?: number;
|
|
@@ -80,7 +89,15 @@ interface SceneNodeBase {
|
|
|
80
89
|
readonly series?: string;
|
|
81
90
|
/** A role for styling and tests: "mark", "axis", "grid", "label"… */
|
|
82
91
|
readonly role?: string;
|
|
92
|
+
/** How the node appears when an update adds it: see `ChartEnter`. Fades by default. */
|
|
93
|
+
readonly enter?: ChartEnter;
|
|
83
94
|
}
|
|
95
|
+
/**
|
|
96
|
+
* How a data mark appears. "grow" rises from its baseline (bars, areas) or
|
|
97
|
+
* opens from its neighbour (slices); "draw" traces a line in on the first
|
|
98
|
+
* render; "fade" fades in; "none" is there at once.
|
|
99
|
+
*/
|
|
100
|
+
export type ChartEnter = "grow" | "draw" | "fade" | "none";
|
|
84
101
|
export interface SceneGroup extends SceneNodeBase {
|
|
85
102
|
readonly kind: "group";
|
|
86
103
|
/** Shifts the children: a facet's cell drawn at its place in the grid. Clips are in the shifted space. */
|
|
@@ -98,14 +115,82 @@ export interface SceneRect extends SceneNodeBase {
|
|
|
98
115
|
readonly width: number;
|
|
99
116
|
readonly height: number;
|
|
100
117
|
readonly corners?: ChartCorners;
|
|
118
|
+
/** The edge a bar grows from and shrinks back to: `y` for a column, `x` for a bar, in pixels. */
|
|
119
|
+
readonly baseline?: {
|
|
120
|
+
readonly axis: "x" | "y";
|
|
121
|
+
readonly at: number;
|
|
122
|
+
};
|
|
101
123
|
readonly paint: ChartPaint;
|
|
102
124
|
}
|
|
103
125
|
/** Any outline: a line, an area, a wedge, a country. `d` is SVG path data, which `Path2D` reads as well. */
|
|
104
126
|
export interface ScenePath extends SceneNodeBase {
|
|
105
127
|
readonly kind: "path";
|
|
106
128
|
readonly d: string;
|
|
129
|
+
/** What the shape means, when it has a simple meaning: motion moves that, then redraws `d`. */
|
|
130
|
+
readonly geometry?: SceneGeometry;
|
|
131
|
+
/**
|
|
132
|
+
* How that geometry moves, brought by the mark that drew it (like
|
|
133
|
+
* `morph`), so a chart only loads the motion of the shapes it has.
|
|
134
|
+
*/
|
|
135
|
+
readonly motion?: GeometryMotion;
|
|
107
136
|
readonly paint: ChartPaint;
|
|
137
|
+
/**
|
|
138
|
+
* How an update moves this outline into a new one whose commands differ:
|
|
139
|
+
* a country, a contour, a cell. Set by the marks whose shapes have no
|
|
140
|
+
* simpler meaning, so the morph only loads with them; without it, paths
|
|
141
|
+
* whose commands differ swap at the end.
|
|
142
|
+
*/
|
|
143
|
+
readonly morph?: PathMorpher;
|
|
144
|
+
}
|
|
145
|
+
/** A point of a line, an area or a radar, keyed by its position so an update can slide it. */
|
|
146
|
+
export interface GeometryPoint {
|
|
147
|
+
readonly key: string;
|
|
148
|
+
readonly x: number;
|
|
149
|
+
readonly y: number;
|
|
150
|
+
/** The area's lower edge under this point. */
|
|
151
|
+
readonly x0?: number;
|
|
152
|
+
readonly y0?: number;
|
|
153
|
+
}
|
|
154
|
+
export type SceneGeometry = {
|
|
155
|
+
readonly kind: "points";
|
|
156
|
+
/** One run per unbroken stretch: a gap in the data splits the line. */
|
|
157
|
+
readonly runs: ReadonlyArray<ReadonlyArray<GeometryPoint>>;
|
|
158
|
+
readonly shape: "line" | "area" | "polygon";
|
|
159
|
+
readonly curve?: ChartCurve;
|
|
160
|
+
} | {
|
|
161
|
+
readonly kind: "arc";
|
|
162
|
+
readonly cx: number;
|
|
163
|
+
readonly cy: number;
|
|
164
|
+
readonly innerRadius: number;
|
|
165
|
+
readonly outerRadius: number;
|
|
166
|
+
readonly startAngle: number;
|
|
167
|
+
readonly endAngle: number;
|
|
168
|
+
};
|
|
169
|
+
/**
|
|
170
|
+
* A geometry in motion: every number it has, by channel name, where each
|
|
171
|
+
* starts and where it goes, and how to rebuild the shape from the numbers of
|
|
172
|
+
* one frame. The store springs the numbers; the plan only knows shapes.
|
|
173
|
+
*/
|
|
174
|
+
export interface GeometryPlan {
|
|
175
|
+
readonly starts: ReadonlyMap<string, number>;
|
|
176
|
+
readonly targets: ReadonlyMap<string, number>;
|
|
177
|
+
build(value: (channel: string) => number): SceneGeometry;
|
|
178
|
+
}
|
|
179
|
+
/** What the motion store asks of a kind of geometry. */
|
|
180
|
+
export interface GeometryMotion {
|
|
181
|
+
/** How `from` (what is painted) becomes `to`; undefined to tween the path instead. */
|
|
182
|
+
plan(from: SceneGeometry, to: SceneGeometry): GeometryPlan | undefined;
|
|
183
|
+
/** The path data of one frame, through the mark's own builder, so every frame is a valid shape. */
|
|
184
|
+
draw(geometry: SceneGeometry): string;
|
|
185
|
+
/** Its length in pixels: what Canvas dashes against to trace a line in. */
|
|
186
|
+
length?(geometry: SceneGeometry): number;
|
|
187
|
+
/** The shape a node an update adds grows from; `siblings` is its new list, `known` the old scene. */
|
|
188
|
+
enter?(node: ScenePath, siblings: readonly SceneNode[], known: ReadonlyMap<string, SceneNode>): ScenePath | undefined;
|
|
189
|
+
/** The shape a node an update removes collapses to; `siblings` is its old list, `known` the new scene. */
|
|
190
|
+
exit?(node: ScenePath, siblings: readonly SceneNode[], known: ReadonlyMap<string, SceneNode>): ScenePath | undefined;
|
|
108
191
|
}
|
|
192
|
+
/** The outlines between two paths, 0 at `from` and 1 at `to`. */
|
|
193
|
+
export type PathMorpher = (from: string, to: string) => (progress: number) => string;
|
|
109
194
|
export interface SceneCircle extends SceneNodeBase {
|
|
110
195
|
readonly kind: "circle";
|
|
111
196
|
readonly cx: number;
|
package/dist/core/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
|
package/dist/geo/geo.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geo.d.ts","sourceRoot":"","sources":["../../src/geo/geo.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"geo.d.ts","sourceRoot":"","sources":["../../src/geo/geo.ts"],"names":[],"mappings":"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"}
|
package/dist/geo/geo.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { mixPath } from "@voila.dev/motion";
|
|
1
2
|
import {
|
|
2
3
|
geoAlbersUsa,
|
|
3
4
|
geoArea,
|
|
@@ -113,6 +114,7 @@ function geoShape(features, options) {
|
|
|
113
114
|
key: `${id}:${name}`,
|
|
114
115
|
role: "mark",
|
|
115
116
|
d,
|
|
117
|
+
morph: mixPath,
|
|
116
118
|
paint: paint({
|
|
117
119
|
fill,
|
|
118
120
|
stroke: options.stroke ?? context.theme.background,
|
package/dist/geo/geo.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/geo/geo.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n\ttype GeoPermissibleObjects,\n\ttype GeoProjection,\n\tgeoAlbersUsa,\n\tgeoArea,\n\tgeoConicConformal,\n\tgeoEqualEarth,\n\tgeoEquirectangular,\n\tgeoMercator,\n\tgeoNaturalEarth1,\n\tgeoOrthographic,\n\tgeoPath,\n} from \"d3-geo\";\nimport { isPlaceable, numericValue, readChannel } from \"#/core/channel.ts\";\nimport { markId, paint } from \"#/core/marks/shared.ts\";\nimport type {\n\tChartAccessor,\n\tChartFittedProjection,\n\tChartMark,\n\tChartPoint,\n\tChartProjection,\n\tChartValue,\n\tSceneNode,\n} from \"#/core/types.ts\";\n\nexport type ProjectionName =\n\t| \"equal-earth\"\n\t| \"natural-earth\"\n\t| \"mercator\"\n\t| \"equirectangular\"\n\t| \"orthographic\"\n\t| \"albers-usa\"\n\t/** Conformal conic on France's own standard parallels (Lambert 93's). */\n\t| \"france\";\n\nconst PROJECTIONS: Record<ProjectionName, () => GeoProjection> = {\n\t\"equal-earth\": geoEqualEarth,\n\t\"natural-earth\": geoNaturalEarth1,\n\tmercator: geoMercator,\n\tequirectangular: geoEquirectangular,\n\torthographic: geoOrthographic,\n\t\"albers-usa\": geoAlbersUsa as unknown as () => GeoProjection,\n\tfrance: () => geoConicConformal().parallels([44, 49]).rotate([-3, 0]),\n};\n\ntype Ring = ReadonlyArray<ReadonlyArray<number>>;\n\nfunction reverseRings(geometry: {\n\ttype: string;\n\tcoordinates?: unknown;\n}): unknown {\n\tif (geometry.type === \"Polygon\") {\n\t\treturn {\n\t\t\t...geometry,\n\t\t\tcoordinates: (geometry.coordinates as Ring[]).map((ring) =>\n\t\t\t\t[...ring].reverse(),\n\t\t\t),\n\t\t};\n\t}\n\tif (geometry.type === \"MultiPolygon\") {\n\t\treturn {\n\t\t\t...geometry,\n\t\t\tcoordinates: (geometry.coordinates as Ring[][]).map((polygon) =>\n\t\t\t\tpolygon.map((ring) => [...ring].reverse()),\n\t\t\t),\n\t\t};\n\t}\n\treturn geometry;\n}\n\n/**\n * GeoJSON as RFC 7946 writes it winds rings counter-clockwise; d3-geo reads\n * that as \"the whole sphere except this region\". A shape covering more than\n * half the globe is that mistake, so its rings are turned round.\n */\nexport function rewind<T>(object: T): T {\n\tconst value = object as {\n\t\ttype?: string;\n\t\tfeatures?: unknown[];\n\t\tgeometry?: { type: string };\n\t};\n\tif (value.type === \"FeatureCollection\" && Array.isArray(value.features)) {\n\t\treturn {\n\t\t\t...value,\n\t\t\tfeatures: value.features.map((feature) => rewind(feature)),\n\t\t} as T;\n\t}\n\tif (value.type === \"Feature\" && value.geometry) {\n\t\treturn geoArea(value as GeoPermissibleObjects) > 2 * Math.PI\n\t\t\t? ({ ...value, geometry: reverseRings(value.geometry) } as T)\n\t\t\t: object;\n\t}\n\treturn object;\n}\n\nexport interface ProjectionOptions {\n\t/** The GeoJSON the map should frame: usually the shapes it draws. */\n\treadonly domain: GeoPermissibleObjects;\n\t/** Pixels kept clear around the framed shape. */\n\treadonly inset?: number;\n}\n\n/**\n * How longitude and latitude become pixels, fitted so `domain` fills the\n * plot. A name picks one of the usual projections; any d3-geo projection\n * factory works too.\n */\nexport function projection(\n\tkind: ProjectionName | (() => GeoProjection),\n\toptions: ProjectionOptions,\n): ChartProjection {\n\treturn {\n\t\tfit(plot): ChartFittedProjection {\n\t\t\tconst inset = options.inset ?? 4;\n\t\t\tconst projected = (\n\t\t\t\ttypeof kind === \"function\" ? kind : PROJECTIONS[kind]\n\t\t\t)().fitExtent(\n\t\t\t\t[\n\t\t\t\t\t[plot.x + inset, plot.y + inset],\n\t\t\t\t\t[plot.x + plot.width - inset, plot.y + plot.height - inset],\n\t\t\t\t],\n\t\t\t\trewind(options.domain),\n\t\t\t);\n\t\t\tconst path = geoPath(projected);\n\t\t\treturn {\n\t\t\t\tproject(longitude, latitude) {\n\t\t\t\t\tconst point = projected([longitude, latitude]);\n\t\t\t\t\treturn point ? { x: point[0], y: point[1] } : undefined;\n\t\t\t\t},\n\t\t\t\tpath: (geometry) => path(geometry as GeoPermissibleObjects) ?? \"\",\n\t\t\t\tcentroid(geometry) {\n\t\t\t\t\tconst [x, y] = path.centroid(geometry as GeoPermissibleObjects);\n\t\t\t\t\treturn { x, y };\n\t\t\t\t},\n\t\t\t\tbounds(geometry) {\n\t\t\t\t\tconst [[x0, y0], [x1, y1]] = path.bounds(\n\t\t\t\t\t\tgeometry as GeoPermissibleObjects,\n\t\t\t\t\t);\n\t\t\t\t\treturn { x: x0, y: y0, width: x1 - x0, height: y1 - y0 };\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\t};\n}\n\ninterface Feature {\n\treadonly type: \"Feature\";\n\treadonly properties?: Record<string, unknown> | null;\n\treadonly geometry: unknown;\n}\n\nexport interface GeoShapeOptions<TFeature> {\n\treadonly id?: string;\n\t/** A region's name: tooltip, table, live region. */\n\treadonly name: ChartAccessor<TFeature, unknown>;\n\t/** A value per region: a choropleth on a sequential (numbers) or ordinal (categories) color scale. */\n\treadonly color?: ChartAccessor<TFeature, ChartValue>;\n\treadonly fill?: string;\n\treadonly stroke?: string;\n\t/** What the colour values are, for the table heading. */\n\treadonly label?: string;\n\treadonly tip?: boolean;\n}\n\n/** Regions, countries, d\u00E9partements: one shape per GeoJSON feature. */\nexport function geoShape<TFeature extends Feature>(\n\tfeatures: ReadonlyArray<TFeature>,\n\toptions: GeoShapeOptions<TFeature>,\n): ChartMark {\n\tconst names = readChannel(features, options.name);\n\tconst colors = readChannel(features, options.color);\n\treturn {\n\t\tid: options.id,\n\t\tcoordinate: \"frame\",\n\t\tfocusOrder: \"point\",\n\t\ttitles: { value: options.label },\n\t\tchannels:\n\t\t\toptions.color === undefined\n\t\t\t\t? {}\n\t\t\t\t: { color: { values: colors.filter(isPlaceable) } },\n\t\trender(context) {\n\t\t\tconst id = markId(options.id, \"geo\", context);\n\t\t\tconst fitted = context.projection;\n\t\t\tif (fitted === undefined) {\n\t\t\t\treturn { nodes: [] };\n\t\t\t}\n\t\t\tconst nodes: SceneNode[] = [];\n\t\t\tconst points: ChartPoint[] = [];\n\t\t\tfor (const [index, feature] of features.entries()) {\n\t\t\t\tconst name = String(names[index] ?? index);\n\t\t\t\tconst value = colors[index];\n\t\t\t\tconst fill =\n\t\t\t\t\toptions.fill ??\n\t\t\t\t\t(value === undefined || options.color === undefined\n\t\t\t\t\t\t? context.theme.grid\n\t\t\t\t\t\t: context.colorOf(value));\n\t\t\t\tconst shape = rewind(feature);\n\t\t\t\tconst d = fitted.path(shape);\n\t\t\t\tif (d === \"\") continue;\n\t\t\t\tnodes.push({\n\t\t\t\t\tkind: \"path\",\n\t\t\t\t\tkey: `${id}:${name}`,\n\t\t\t\t\trole: \"mark\",\n\t\t\t\t\td,\n\t\t\t\t\tpaint: paint({\n\t\t\t\t\t\tfill,\n\t\t\t\t\t\tstroke: options.stroke ?? context.theme.background,\n\t\t\t\t\t\tstrokeWidth: 0.75,\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t\tif (options.tip !== false) {\n\t\t\t\t\tconst center = fitted.centroid(shape);\n\t\t\t\t\tconst number = numericValue(value);\n\t\t\t\t\tpoints.push({\n\t\t\t\t\t\tkey: `${id}:${name}`,\n\t\t\t\t\t\tmarkId: id,\n\t\t\t\t\t\tindex,\n\t\t\t\t\t\tdatum: feature,\n\t\t\t\t\t\tx: center.x,\n\t\t\t\t\t\ty: center.y,\n\t\t\t\t\t\txValue: name,\n\t\t\t\t\t\tyValue: value,\n\t\t\t\t\t\tseriesLabel: options.label,\n\t\t\t\t\t\tcolor: fill,\n\t\t\t\t\t\ttitle: name,\n\t\t\t\t\t\tvalue:\n\t\t\t\t\t\t\tvalue === undefined\n\t\t\t\t\t\t\t\t? \"\"\n\t\t\t\t\t\t\t\t: number === undefined\n\t\t\t\t\t\t\t\t\t? String(value)\n\t\t\t\t\t\t\t\t\t: context.formatY(number),\n\t\t\t\t\t\thit: { kind: \"rect\", rect: fitted.bounds(shape) },\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn { nodes, points };\n\t\t},\n\t};\n}\n\nexport interface GeoDotOptions<TDatum> {\n\treadonly id?: string;\n\treadonly longitude: ChartAccessor<TDatum, ChartValue>;\n\treadonly latitude: ChartAccessor<TDatum, ChartValue>;\n\treadonly name: ChartAccessor<TDatum, unknown>;\n\t/** A radius in pixels, or a field whose values set each dot's area. */\n\treadonly r?: number | ChartAccessor<TDatum, ChartValue>;\n\treadonly maxRadius?: number;\n\treadonly fill?: string;\n\treadonly label?: string;\n\treadonly value?: ChartAccessor<TDatum, ChartValue>;\n\treadonly tip?: boolean;\n}\n\n/** Places on the map: a dot at each longitude and latitude, sized by a value if asked. */\nexport function geoDot<TDatum>(\n\tdata: ReadonlyArray<TDatum>,\n\toptions: GeoDotOptions<TDatum>,\n): ChartMark {\n\tconst longitudes = readChannel(data, options.longitude).map(numericValue);\n\tconst latitudes = readChannel(data, options.latitude).map(numericValue);\n\tconst names = readChannel(data, options.name);\n\tconst values = readChannel(data, options.value).map(numericValue);\n\tconst sized = options.r !== undefined && typeof options.r !== \"number\";\n\tconst sizes = sized\n\t\t? readChannel(data, options.r as ChartAccessor<TDatum, ChartValue>).map(\n\t\t\t\tnumericValue,\n\t\t\t)\n\t\t: [];\n\tconst largest = Math.max(0, ...sizes.map((size) => Math.abs(size ?? 0)));\n\treturn {\n\t\tid: options.id,\n\t\tcoordinate: \"frame\",\n\t\tfocusOrder: \"point\",\n\t\ttitles: { value: options.label },\n\t\tchannels: {},\n\t\trender(context) {\n\t\t\tconst id = markId(options.id, \"geoDot\", context);\n\t\t\tconst fitted = context.projection;\n\t\t\tif (fitted === undefined) {\n\t\t\t\treturn { nodes: [] };\n\t\t\t}\n\t\t\tconst color = options.fill ?? context.paletteColor(context.markIndex);\n\t\t\tconst maxRadius = options.maxRadius ?? 16;\n\t\t\tconst nodes: SceneNode[] = [];\n\t\t\tconst points: ChartPoint[] = [];\n\t\t\tfor (const [index, datum] of data.entries()) {\n\t\t\t\tconst longitude = longitudes[index];\n\t\t\t\tconst latitude = latitudes[index];\n\t\t\t\tif (longitude === undefined || latitude === undefined) continue;\n\t\t\t\tconst at = fitted.project(longitude, latitude);\n\t\t\t\tif (at === undefined) continue;\n\t\t\t\tconst r =\n\t\t\t\t\ttypeof options.r === \"number\"\n\t\t\t\t\t\t? options.r\n\t\t\t\t\t\t: sized\n\t\t\t\t\t\t\t? largest === 0\n\t\t\t\t\t\t\t\t? 0\n\t\t\t\t\t\t\t\t: Math.sqrt(Math.abs(sizes[index] ?? 0) / largest) * maxRadius\n\t\t\t\t\t\t\t: 4;\n\t\t\t\tconst name = String(names[index] ?? index);\n\t\t\t\tnodes.push({\n\t\t\t\t\tkind: \"circle\",\n\t\t\t\t\tkey: `${id}:${index}`,\n\t\t\t\t\trole: \"mark\",\n\t\t\t\t\tcx: at.x,\n\t\t\t\t\tcy: at.y,\n\t\t\t\t\tr,\n\t\t\t\t\tpaint: {\n\t\t\t\t\t\tfill: color,\n\t\t\t\t\t\tfillOpacity: 0.75,\n\t\t\t\t\t\tstroke: context.theme.background,\n\t\t\t\t\t\tstrokeWidth: 1,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t\tif (options.tip !== false) {\n\t\t\t\t\tconst value = values[index] ?? sizes[index];\n\t\t\t\t\tpoints.push({\n\t\t\t\t\t\tkey: `${id}:${index}`,\n\t\t\t\t\t\tmarkId: id,\n\t\t\t\t\t\tindex,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t\tx: at.x,\n\t\t\t\t\t\ty: at.y,\n\t\t\t\t\t\txValue: name,\n\t\t\t\t\t\tyValue: value,\n\t\t\t\t\t\tseriesLabel: options.label,\n\t\t\t\t\t\tcolor,\n\t\t\t\t\t\ttitle: name,\n\t\t\t\t\t\tvalue: value === undefined ? \"\" : context.formatY(value),\n\t\t\t\t\t\thit: {\n\t\t\t\t\t\t\tkind: \"rect\",\n\t\t\t\t\t\t\trect: {\n\t\t\t\t\t\t\t\tx: at.x - r - 2,\n\t\t\t\t\t\t\t\ty: at.y - r - 2,\n\t\t\t\t\t\t\t\twidth: r * 2 + 4,\n\t\t\t\t\t\t\t\theight: r * 2 + 4,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn { nodes, points };\n\t\t},\n\t};\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["import { mixPath } from \"@voila.dev/motion\";\nimport {\n\ttype GeoPermissibleObjects,\n\ttype GeoProjection,\n\tgeoAlbersUsa,\n\tgeoArea,\n\tgeoConicConformal,\n\tgeoEqualEarth,\n\tgeoEquirectangular,\n\tgeoMercator,\n\tgeoNaturalEarth1,\n\tgeoOrthographic,\n\tgeoPath,\n} from \"d3-geo\";\nimport { isPlaceable, numericValue, readChannel } from \"#/core/channel.ts\";\nimport { markId, paint } from \"#/core/marks/shared.ts\";\nimport type {\n\tChartAccessor,\n\tChartFittedProjection,\n\tChartMark,\n\tChartPoint,\n\tChartProjection,\n\tChartValue,\n\tSceneNode,\n} from \"#/core/types.ts\";\n\nexport type ProjectionName =\n\t| \"equal-earth\"\n\t| \"natural-earth\"\n\t| \"mercator\"\n\t| \"equirectangular\"\n\t| \"orthographic\"\n\t| \"albers-usa\"\n\t/** Conformal conic on France's own standard parallels (Lambert 93's). */\n\t| \"france\";\n\nconst PROJECTIONS: Record<ProjectionName, () => GeoProjection> = {\n\t\"equal-earth\": geoEqualEarth,\n\t\"natural-earth\": geoNaturalEarth1,\n\tmercator: geoMercator,\n\tequirectangular: geoEquirectangular,\n\torthographic: geoOrthographic,\n\t\"albers-usa\": geoAlbersUsa as unknown as () => GeoProjection,\n\tfrance: () => geoConicConformal().parallels([44, 49]).rotate([-3, 0]),\n};\n\ntype Ring = ReadonlyArray<ReadonlyArray<number>>;\n\nfunction reverseRings(geometry: {\n\ttype: string;\n\tcoordinates?: unknown;\n}): unknown {\n\tif (geometry.type === \"Polygon\") {\n\t\treturn {\n\t\t\t...geometry,\n\t\t\tcoordinates: (geometry.coordinates as Ring[]).map((ring) =>\n\t\t\t\t[...ring].reverse(),\n\t\t\t),\n\t\t};\n\t}\n\tif (geometry.type === \"MultiPolygon\") {\n\t\treturn {\n\t\t\t...geometry,\n\t\t\tcoordinates: (geometry.coordinates as Ring[][]).map((polygon) =>\n\t\t\t\tpolygon.map((ring) => [...ring].reverse()),\n\t\t\t),\n\t\t};\n\t}\n\treturn geometry;\n}\n\n/**\n * GeoJSON as RFC 7946 writes it winds rings counter-clockwise; d3-geo reads\n * that as \"the whole sphere except this region\". A shape covering more than\n * half the globe is that mistake, so its rings are turned round.\n */\nexport function rewind<T>(object: T): T {\n\tconst value = object as {\n\t\ttype?: string;\n\t\tfeatures?: unknown[];\n\t\tgeometry?: { type: string };\n\t};\n\tif (value.type === \"FeatureCollection\" && Array.isArray(value.features)) {\n\t\treturn {\n\t\t\t...value,\n\t\t\tfeatures: value.features.map((feature) => rewind(feature)),\n\t\t} as T;\n\t}\n\tif (value.type === \"Feature\" && value.geometry) {\n\t\treturn geoArea(value as GeoPermissibleObjects) > 2 * Math.PI\n\t\t\t? ({ ...value, geometry: reverseRings(value.geometry) } as T)\n\t\t\t: object;\n\t}\n\treturn object;\n}\n\nexport interface ProjectionOptions {\n\t/** The GeoJSON the map should frame: usually the shapes it draws. */\n\treadonly domain: GeoPermissibleObjects;\n\t/** Pixels kept clear around the framed shape. */\n\treadonly inset?: number;\n}\n\n/**\n * How longitude and latitude become pixels, fitted so `domain` fills the\n * plot. A name picks one of the usual projections; any d3-geo projection\n * factory works too.\n */\nexport function projection(\n\tkind: ProjectionName | (() => GeoProjection),\n\toptions: ProjectionOptions,\n): ChartProjection {\n\treturn {\n\t\tfit(plot): ChartFittedProjection {\n\t\t\tconst inset = options.inset ?? 4;\n\t\t\tconst projected = (\n\t\t\t\ttypeof kind === \"function\" ? kind : PROJECTIONS[kind]\n\t\t\t)().fitExtent(\n\t\t\t\t[\n\t\t\t\t\t[plot.x + inset, plot.y + inset],\n\t\t\t\t\t[plot.x + plot.width - inset, plot.y + plot.height - inset],\n\t\t\t\t],\n\t\t\t\trewind(options.domain),\n\t\t\t);\n\t\t\tconst path = geoPath(projected);\n\t\t\treturn {\n\t\t\t\tproject(longitude, latitude) {\n\t\t\t\t\tconst point = projected([longitude, latitude]);\n\t\t\t\t\treturn point ? { x: point[0], y: point[1] } : undefined;\n\t\t\t\t},\n\t\t\t\tpath: (geometry) => path(geometry as GeoPermissibleObjects) ?? \"\",\n\t\t\t\tcentroid(geometry) {\n\t\t\t\t\tconst [x, y] = path.centroid(geometry as GeoPermissibleObjects);\n\t\t\t\t\treturn { x, y };\n\t\t\t\t},\n\t\t\t\tbounds(geometry) {\n\t\t\t\t\tconst [[x0, y0], [x1, y1]] = path.bounds(\n\t\t\t\t\t\tgeometry as GeoPermissibleObjects,\n\t\t\t\t\t);\n\t\t\t\t\treturn { x: x0, y: y0, width: x1 - x0, height: y1 - y0 };\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\t};\n}\n\ninterface Feature {\n\treadonly type: \"Feature\";\n\treadonly properties?: Record<string, unknown> | null;\n\treadonly geometry: unknown;\n}\n\nexport interface GeoShapeOptions<TFeature> {\n\treadonly id?: string;\n\t/** A region's name: tooltip, table, live region. */\n\treadonly name: ChartAccessor<TFeature, unknown>;\n\t/** A value per region: a choropleth on a sequential (numbers) or ordinal (categories) color scale. */\n\treadonly color?: ChartAccessor<TFeature, ChartValue>;\n\treadonly fill?: string;\n\treadonly stroke?: string;\n\t/** What the colour values are, for the table heading. */\n\treadonly label?: string;\n\treadonly tip?: boolean;\n}\n\n/** Regions, countries, d\u00E9partements: one shape per GeoJSON feature. */\nexport function geoShape<TFeature extends Feature>(\n\tfeatures: ReadonlyArray<TFeature>,\n\toptions: GeoShapeOptions<TFeature>,\n): ChartMark {\n\tconst names = readChannel(features, options.name);\n\tconst colors = readChannel(features, options.color);\n\treturn {\n\t\tid: options.id,\n\t\tcoordinate: \"frame\",\n\t\tfocusOrder: \"point\",\n\t\ttitles: { value: options.label },\n\t\tchannels:\n\t\t\toptions.color === undefined\n\t\t\t\t? {}\n\t\t\t\t: { color: { values: colors.filter(isPlaceable) } },\n\t\trender(context) {\n\t\t\tconst id = markId(options.id, \"geo\", context);\n\t\t\tconst fitted = context.projection;\n\t\t\tif (fitted === undefined) {\n\t\t\t\treturn { nodes: [] };\n\t\t\t}\n\t\t\tconst nodes: SceneNode[] = [];\n\t\t\tconst points: ChartPoint[] = [];\n\t\t\tfor (const [index, feature] of features.entries()) {\n\t\t\t\tconst name = String(names[index] ?? index);\n\t\t\t\tconst value = colors[index];\n\t\t\t\tconst fill =\n\t\t\t\t\toptions.fill ??\n\t\t\t\t\t(value === undefined || options.color === undefined\n\t\t\t\t\t\t? context.theme.grid\n\t\t\t\t\t\t: context.colorOf(value));\n\t\t\t\tconst shape = rewind(feature);\n\t\t\t\tconst d = fitted.path(shape);\n\t\t\t\tif (d === \"\") continue;\n\t\t\t\tnodes.push({\n\t\t\t\t\tkind: \"path\",\n\t\t\t\t\tkey: `${id}:${name}`,\n\t\t\t\t\trole: \"mark\",\n\t\t\t\t\td,\n\t\t\t\t\tmorph: mixPath,\n\t\t\t\t\tpaint: paint({\n\t\t\t\t\t\tfill,\n\t\t\t\t\t\tstroke: options.stroke ?? context.theme.background,\n\t\t\t\t\t\tstrokeWidth: 0.75,\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t\tif (options.tip !== false) {\n\t\t\t\t\tconst center = fitted.centroid(shape);\n\t\t\t\t\tconst number = numericValue(value);\n\t\t\t\t\tpoints.push({\n\t\t\t\t\t\tkey: `${id}:${name}`,\n\t\t\t\t\t\tmarkId: id,\n\t\t\t\t\t\tindex,\n\t\t\t\t\t\tdatum: feature,\n\t\t\t\t\t\tx: center.x,\n\t\t\t\t\t\ty: center.y,\n\t\t\t\t\t\txValue: name,\n\t\t\t\t\t\tyValue: value,\n\t\t\t\t\t\tseriesLabel: options.label,\n\t\t\t\t\t\tcolor: fill,\n\t\t\t\t\t\ttitle: name,\n\t\t\t\t\t\tvalue:\n\t\t\t\t\t\t\tvalue === undefined\n\t\t\t\t\t\t\t\t? \"\"\n\t\t\t\t\t\t\t\t: number === undefined\n\t\t\t\t\t\t\t\t\t? String(value)\n\t\t\t\t\t\t\t\t\t: context.formatY(number),\n\t\t\t\t\t\thit: { kind: \"rect\", rect: fitted.bounds(shape) },\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn { nodes, points };\n\t\t},\n\t};\n}\n\nexport interface GeoDotOptions<TDatum> {\n\treadonly id?: string;\n\treadonly longitude: ChartAccessor<TDatum, ChartValue>;\n\treadonly latitude: ChartAccessor<TDatum, ChartValue>;\n\treadonly name: ChartAccessor<TDatum, unknown>;\n\t/** A radius in pixels, or a field whose values set each dot's area. */\n\treadonly r?: number | ChartAccessor<TDatum, ChartValue>;\n\treadonly maxRadius?: number;\n\treadonly fill?: string;\n\treadonly label?: string;\n\treadonly value?: ChartAccessor<TDatum, ChartValue>;\n\treadonly tip?: boolean;\n}\n\n/** Places on the map: a dot at each longitude and latitude, sized by a value if asked. */\nexport function geoDot<TDatum>(\n\tdata: ReadonlyArray<TDatum>,\n\toptions: GeoDotOptions<TDatum>,\n): ChartMark {\n\tconst longitudes = readChannel(data, options.longitude).map(numericValue);\n\tconst latitudes = readChannel(data, options.latitude).map(numericValue);\n\tconst names = readChannel(data, options.name);\n\tconst values = readChannel(data, options.value).map(numericValue);\n\tconst sized = options.r !== undefined && typeof options.r !== \"number\";\n\tconst sizes = sized\n\t\t? readChannel(data, options.r as ChartAccessor<TDatum, ChartValue>).map(\n\t\t\t\tnumericValue,\n\t\t\t)\n\t\t: [];\n\tconst largest = Math.max(0, ...sizes.map((size) => Math.abs(size ?? 0)));\n\treturn {\n\t\tid: options.id,\n\t\tcoordinate: \"frame\",\n\t\tfocusOrder: \"point\",\n\t\ttitles: { value: options.label },\n\t\tchannels: {},\n\t\trender(context) {\n\t\t\tconst id = markId(options.id, \"geoDot\", context);\n\t\t\tconst fitted = context.projection;\n\t\t\tif (fitted === undefined) {\n\t\t\t\treturn { nodes: [] };\n\t\t\t}\n\t\t\tconst color = options.fill ?? context.paletteColor(context.markIndex);\n\t\t\tconst maxRadius = options.maxRadius ?? 16;\n\t\t\tconst nodes: SceneNode[] = [];\n\t\t\tconst points: ChartPoint[] = [];\n\t\t\tfor (const [index, datum] of data.entries()) {\n\t\t\t\tconst longitude = longitudes[index];\n\t\t\t\tconst latitude = latitudes[index];\n\t\t\t\tif (longitude === undefined || latitude === undefined) continue;\n\t\t\t\tconst at = fitted.project(longitude, latitude);\n\t\t\t\tif (at === undefined) continue;\n\t\t\t\tconst r =\n\t\t\t\t\ttypeof options.r === \"number\"\n\t\t\t\t\t\t? options.r\n\t\t\t\t\t\t: sized\n\t\t\t\t\t\t\t? largest === 0\n\t\t\t\t\t\t\t\t? 0\n\t\t\t\t\t\t\t\t: Math.sqrt(Math.abs(sizes[index] ?? 0) / largest) * maxRadius\n\t\t\t\t\t\t\t: 4;\n\t\t\t\tconst name = String(names[index] ?? index);\n\t\t\t\tnodes.push({\n\t\t\t\t\tkind: \"circle\",\n\t\t\t\t\tkey: `${id}:${index}`,\n\t\t\t\t\trole: \"mark\",\n\t\t\t\t\tcx: at.x,\n\t\t\t\t\tcy: at.y,\n\t\t\t\t\tr,\n\t\t\t\t\tpaint: {\n\t\t\t\t\t\tfill: color,\n\t\t\t\t\t\tfillOpacity: 0.75,\n\t\t\t\t\t\tstroke: context.theme.background,\n\t\t\t\t\t\tstrokeWidth: 1,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t\tif (options.tip !== false) {\n\t\t\t\t\tconst value = values[index] ?? sizes[index];\n\t\t\t\t\tpoints.push({\n\t\t\t\t\t\tkey: `${id}:${index}`,\n\t\t\t\t\t\tmarkId: id,\n\t\t\t\t\t\tindex,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t\tx: at.x,\n\t\t\t\t\t\ty: at.y,\n\t\t\t\t\t\txValue: name,\n\t\t\t\t\t\tyValue: value,\n\t\t\t\t\t\tseriesLabel: options.label,\n\t\t\t\t\t\tcolor,\n\t\t\t\t\t\ttitle: name,\n\t\t\t\t\t\tvalue: value === undefined ? \"\" : context.formatY(value),\n\t\t\t\t\t\thit: {\n\t\t\t\t\t\t\tkind: \"rect\",\n\t\t\t\t\t\t\trect: {\n\t\t\t\t\t\t\t\tx: at.x - r - 2,\n\t\t\t\t\t\t\t\ty: at.y - r - 2,\n\t\t\t\t\t\t\t\twidth: r * 2 + 4,\n\t\t\t\t\t\t\t\theight: r * 2 + 4,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn { nodes, points };\n\t\t},\n\t};\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chart.d.ts","sourceRoot":"","sources":["../../src/react/chart.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,KAAK,cAAc,EAAe,MAAM,yBAAyB,CAAC;AAG3E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EACN,KAAK,UAAU,EAGf,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAGN,KAAK,uBAAuB,EAC5B,MAAM,2BAA2B,CAAC;AAGnC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AA4BzD,UAAU,KACT,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,OAAO,CAAC;IAC5E,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;IACrC,sFAAsF;IACtF,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,4DAA4D;IAC5D,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,iDAAiD;IACjD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,sEAAsE;IACtE,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,kGAAkG;IAClG,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC;IAClC,sEAAsE;IACtE,QAAQ,CAAC,OAAO,CAAC,EACd,OAAO,GACP,CAAC,CAAC,KAAK,EAAE,uBAAuB,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;IACzD,2DAA2D;IAC3D,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,mHAAmH;IACnH,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,cAAc,CAAC;IACrD;;;OAGG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,iHAAiH;IACjH,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,KAAK,IAAI,CAAC;IAC5D,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,KAAK,IAAI,CAAC;CACvD;AAOD;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,EACrB,UAAU,EACV,SAAS,EACT,eAAe,EACf,MAAuB,EACvB,WAAW,EACX,YAAoC,EACpC,QAAQ,EAAE,QAAsB,EAChC,OAAc,EACd,MAAM,EACN,SAAgB,EAChB,OAAc,EACd,IAAY,EACZ,KAAK,EAAE,aAAa,EACpB,aAAa,EACb,QAAQ,EACR,KAAK,EACL,GAAG,KAAK,EACR,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"chart.d.ts","sourceRoot":"","sources":["../../src/react/chart.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,KAAK,cAAc,EAAe,MAAM,yBAAyB,CAAC;AAG3E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EACN,KAAK,UAAU,EAGf,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAGN,KAAK,uBAAuB,EAC5B,MAAM,2BAA2B,CAAC;AAGnC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AA4BzD,UAAU,KACT,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,OAAO,CAAC;IAC5E,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;IACrC,sFAAsF;IACtF,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,4DAA4D;IAC5D,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,iDAAiD;IACjD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,sEAAsE;IACtE,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,kGAAkG;IAClG,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC;IAClC,sEAAsE;IACtE,QAAQ,CAAC,OAAO,CAAC,EACd,OAAO,GACP,CAAC,CAAC,KAAK,EAAE,uBAAuB,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;IACzD,2DAA2D;IAC3D,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,mHAAmH;IACnH,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,cAAc,CAAC;IACrD;;;OAGG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,iHAAiH;IACjH,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,KAAK,IAAI,CAAC;IAC5D,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,KAAK,IAAI,CAAC;CACvD;AAOD;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,EACrB,UAAU,EACV,SAAS,EACT,eAAe,EACf,MAAuB,EACvB,WAAW,EACX,YAAoC,EACpC,QAAQ,EAAE,QAAsB,EAChC,OAAc,EACd,MAAM,EACN,SAAgB,EAChB,OAAc,EACd,IAAY,EACZ,KAAK,EAAE,aAAa,EACpB,aAAa,EACb,QAAQ,EACR,KAAK,EACL,GAAG,KAAK,EACR,EAAE,KAAK,qBAgYP"}
|
package/dist/react/chart.js
CHANGED
|
@@ -102,9 +102,10 @@ function Chart({
|
|
|
102
102
|
const [zoomAnnouncement, setZoomAnnouncement] = React.useState("");
|
|
103
103
|
const drag = React.useRef(null);
|
|
104
104
|
const stops = React.useMemo(() => focusStops(scene), [scene]);
|
|
105
|
+
const [keyboardZooms, setKeyboardZooms] = React.useState(0);
|
|
105
106
|
const animationTrigger = React.useMemo(
|
|
106
|
-
() => [definition, hidden],
|
|
107
|
-
[definition, hidden]
|
|
107
|
+
() => [definition, hidden, keyboardZooms],
|
|
108
|
+
[definition, hidden, keyboardZooms]
|
|
108
109
|
);
|
|
109
110
|
const animateKey = JSON.stringify(animate);
|
|
110
111
|
const timing = React.useMemo(
|
|
@@ -195,16 +196,19 @@ function Chart({
|
|
|
195
196
|
if (event.key === "+" || event.key === "=") {
|
|
196
197
|
event.preventDefault();
|
|
197
198
|
viewport.zoomAround(center, ZOOM_STEP);
|
|
199
|
+
setKeyboardZooms((count) => count + 1);
|
|
198
200
|
return;
|
|
199
201
|
}
|
|
200
202
|
if (event.key === "-" || event.key === "_") {
|
|
201
203
|
event.preventDefault();
|
|
202
204
|
viewport.zoomAround(center, 1 / ZOOM_STEP);
|
|
205
|
+
setKeyboardZooms((count) => count + 1);
|
|
203
206
|
return;
|
|
204
207
|
}
|
|
205
208
|
if (event.key === "0") {
|
|
206
209
|
event.preventDefault();
|
|
207
210
|
viewport.reset();
|
|
211
|
+
setKeyboardZooms((count) => count + 1);
|
|
208
212
|
return;
|
|
209
213
|
}
|
|
210
214
|
if (event.shiftKey && (event.key === "ArrowLeft" || event.key === "ArrowRight")) {
|