@voila.dev/chart 5.0.113 → 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 +22 -0
- package/dist/core/motion/motion-store.d.ts.map +1 -0
- package/dist/core/motion/motion-store.js +325 -0
- package/dist/core/motion/motion-store.js.map +7 -0
- 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/motion/timing.d.ts +30 -0
- package/dist/core/motion/timing.d.ts.map +1 -0
- package/dist/core/motion/timing.js +25 -0
- package/dist/core/motion/timing.js.map +7 -0
- package/dist/core/motion/tween.d.ts +2 -0
- package/dist/core/motion/tween.d.ts.map +1 -1
- package/dist/core/motion/tween.js +1 -0
- package/dist/core/motion/tween.js.map +2 -2
- 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/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -0
- package/dist/index.js.map +2 -2
- package/dist/react/chart.d.ts +7 -2
- package/dist/react/chart.d.ts.map +1 -1
- package/dist/react/chart.js +12 -7
- 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 +6 -5
- package/dist/react/use-animated-scene.d.ts.map +1 -1
- package/dist/react/use-animated-scene.js +36 -24
- 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 -1
- 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 +449 -0
- package/src/core/motion/points-motion.ts +190 -0
- package/src/core/motion/strings.ts +68 -0
- package/src/core/motion/timing.ts +63 -0
- package/src/core/motion/tween.ts +1 -1
- package/src/core/types.ts +98 -0
- package/src/geo/geo.ts +2 -0
- package/src/index.ts +9 -0
- package/src/react/chart.tsx +21 -9
- package/src/react/svg-scene.tsx +5 -1
- package/src/react/use-animated-scene.ts +49 -33
- package/src/voronoi/voronoi.ts +2 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timing.d.ts","sourceRoot":"","sources":["../../../src/core/motion/timing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,qGAAqG;AACrG,MAAM,MAAM,cAAc,GACvB;IACA,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC;IACzB,2CAA2C;IAC3C,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,8GAA8G;IAC9G,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,0EAA0E;IAC1E,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CACzB,GACD;IACA,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEL,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC;IAClC,kDAAkD;IAClD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,kCAAkC;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CACzB;AAKD,6DAA6D;AAC7D,wBAAgB,WAAW,CAC1B,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,cAAc,GACxC,WAAW,GAAG,IAAI,CAgBpB;AAED,kHAAkH;AAClH,wBAAgB,YAAY,CAC3B,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GACX,MAAM,CAGR"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
const DEFAULT_DURATION = 300;
|
|
2
|
+
const MAX_STAGGER_TOTAL = 0.3;
|
|
3
|
+
function chartTiming(animate) {
|
|
4
|
+
if (animate === false || animate === 0) return null;
|
|
5
|
+
const options = typeof animate === "object" ? animate : { duration: animate === true ? DEFAULT_DURATION : animate };
|
|
6
|
+
return {
|
|
7
|
+
type: options.type ?? "spring",
|
|
8
|
+
duration: (options.duration ?? DEFAULT_DURATION) / 1e3,
|
|
9
|
+
bounce: Math.min(
|
|
10
|
+
Math.max("bounce" in options ? options.bounce ?? 0 : 0, 0),
|
|
11
|
+
0.5
|
|
12
|
+
),
|
|
13
|
+
easing: ("easing" in options ? options.easing : void 0) ?? "easeOut",
|
|
14
|
+
stagger: (options.stagger ?? 0) / 1e3
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
function staggerDelay(timing, index, count) {
|
|
18
|
+
if (timing.stagger === 0 || count < 2) return 0;
|
|
19
|
+
return index * Math.min(timing.stagger, MAX_STAGGER_TOTAL / (count - 1));
|
|
20
|
+
}
|
|
21
|
+
export {
|
|
22
|
+
chartTiming,
|
|
23
|
+
staggerDelay
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=timing.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/core/motion/timing.ts"],
|
|
4
|
+
"sourcesContent": ["import type { EasingName } from \"@voila.dev/motion\";\n\n/** How a data update moves: what `<Chart animate>` accepts beyond `true`, `false` and a duration. */\nexport type ChartAnimation =\n\t| {\n\t\t\treadonly type?: \"spring\";\n\t\t\t/** Perceived duration, in milliseconds. */\n\t\t\treadonly duration?: number;\n\t\t\t/** 0 never overshoots (the default: a bar past its value shows a number the data doesn't have); up to 0.5. */\n\t\t\treadonly bounce?: number;\n\t\t\t/** Milliseconds between marks in focus order, capped at 300 ms in all. */\n\t\t\treadonly stagger?: number;\n\t }\n\t| {\n\t\t\treadonly type: \"tween\";\n\t\t\treadonly duration?: number;\n\t\t\treadonly easing?: EasingName;\n\t\t\treadonly stagger?: number;\n\t };\n\nexport interface ChartTiming {\n\treadonly type: \"spring\" | \"tween\";\n\t/** Seconds, as the motion package counts them. */\n\treadonly duration: number;\n\treadonly bounce: number;\n\treadonly easing: EasingName;\n\t/** Seconds between neighbours. */\n\treadonly stagger: number;\n}\n\nconst DEFAULT_DURATION = 300;\nconst MAX_STAGGER_TOTAL = 0.3;\n\n/** The timing an `animate` prop means, or `null` to snap. */\nexport function chartTiming(\n\tanimate: boolean | number | ChartAnimation,\n): ChartTiming | null {\n\tif (animate === false || animate === 0) return null;\n\tconst options: ChartAnimation =\n\t\ttypeof animate === \"object\"\n\t\t\t? animate\n\t\t\t: { duration: animate === true ? DEFAULT_DURATION : animate };\n\treturn {\n\t\ttype: options.type ?? \"spring\",\n\t\tduration: (options.duration ?? DEFAULT_DURATION) / 1000,\n\t\tbounce: Math.min(\n\t\t\tMath.max(\"bounce\" in options ? (options.bounce ?? 0) : 0, 0),\n\t\t\t0.5,\n\t\t),\n\t\teasing: (\"easing\" in options ? options.easing : undefined) ?? \"easeOut\",\n\t\tstagger: (options.stagger ?? 0) / 1000,\n\t};\n}\n\n/** The delay of the `index`-th of `count` marks: the gap shrinks so the last one never waits more than 300 ms. */\nexport function staggerDelay(\n\ttiming: ChartTiming,\n\tindex: number,\n\tcount: number,\n): number {\n\tif (timing.stagger === 0 || count < 2) return 0;\n\treturn index * Math.min(timing.stagger, MAX_STAGGER_TOTAL / (count - 1));\n}\n"],
|
|
5
|
+
"mappings": "AA8BA,MAAM,mBAAmB;AACzB,MAAM,oBAAoB;AAGnB,SAAS,YACf,SACqB;AACrB,MAAI,YAAY,SAAS,YAAY,EAAG,QAAO;AAC/C,QAAM,UACL,OAAO,YAAY,WAChB,UACA,EAAE,UAAU,YAAY,OAAO,mBAAmB,QAAQ;AAC9D,SAAO;AAAA,IACN,MAAM,QAAQ,QAAQ;AAAA,IACtB,WAAW,QAAQ,YAAY,oBAAoB;AAAA,IACnD,QAAQ,KAAK;AAAA,MACZ,KAAK,IAAI,YAAY,UAAW,QAAQ,UAAU,IAAK,GAAG,CAAC;AAAA,MAC3D;AAAA,IACD;AAAA,IACA,SAAS,YAAY,UAAU,QAAQ,SAAS,WAAc;AAAA,IAC9D,UAAU,QAAQ,WAAW,KAAK;AAAA,EACnC;AACD;AAGO,SAAS,aACf,QACA,OACA,OACS;AACT,MAAI,OAAO,YAAY,KAAK,QAAQ,EAAG,QAAO;AAC9C,SAAO,QAAQ,KAAK,IAAI,OAAO,SAAS,qBAAqB,QAAQ,EAAE;AACxE;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import type { ChartScene } from "../types.js";
|
|
2
|
+
/** Two paths can tween when only their numbers differ. */
|
|
3
|
+
export declare function tweenPath(from: string, to: string, t: number): string;
|
|
2
4
|
/** `to`, `t` of the way from `from` (0 is `from`, 1 is `to`). */
|
|
3
5
|
export declare function tweenScene(from: ChartScene, to: ChartScene, t: number): ChartScene;
|
|
4
6
|
/** Fast out, slow in: the motion settles rather than stops. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tween.d.ts","sourceRoot":"","sources":["../../../src/core/motion/tween.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,UAAU,EAAa,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"tween.d.ts","sourceRoot":"","sources":["../../../src/core/motion/tween.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,UAAU,EAAa,MAAM,iBAAiB,CAAC;AAoBzE,0DAA0D;AAC1D,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAiBrE;AAyED,iEAAiE;AACjE,wBAAgB,UAAU,CACzB,IAAI,EAAE,UAAU,EAChB,EAAE,EAAE,UAAU,EACd,CAAC,EAAE,MAAM,GACP,UAAU,CASZ;AAED,+DAA+D;AAC/D,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE9C"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/core/motion/tween.ts"],
|
|
4
|
-
"sourcesContent": ["import type { ChartPaint, ChartScene, SceneNode } from \"#/core/types.ts\";\n\n/**\n * A scene part of the way from one scene to the next, keyed by node: what an\n * animated update draws on each frame. It lives in the core so the SVG and\n * Canvas renderers animate identically, and never feeds hit-testing or\n * focus: those always read the scene being animated towards.\n *\n * A node present on both sides moves; a new one fades in; one that left is\n * gone at once (fading out a bar the data no longer has would show a value\n * that is not true any more). A path tweens point by point when both shapes\n * share their commands, and swaps at the end when they do not.\n */\n\nconst NUMBER = /-?\\d*\\.?\\d+(?:e[-+]?\\d+)?/gi;\n\nfunction mix(from: number, to: number, t: number): number {\n\treturn from + (to - from) * t;\n}\n\n/** Two paths can tween when only their numbers differ. */\
|
|
5
|
-
"mappings": "AAcA,MAAM,SAAS;AAEf,SAAS,IAAI,MAAc,IAAY,GAAmB;AACzD,SAAO,QAAQ,KAAK,QAAQ;AAC7B;
|
|
4
|
+
"sourcesContent": ["import type { ChartPaint, ChartScene, SceneNode } from \"#/core/types.ts\";\n\n/**\n * A scene part of the way from one scene to the next, keyed by node: what an\n * animated update draws on each frame. It lives in the core so the SVG and\n * Canvas renderers animate identically, and never feeds hit-testing or\n * focus: those always read the scene being animated towards.\n *\n * A node present on both sides moves; a new one fades in; one that left is\n * gone at once (fading out a bar the data no longer has would show a value\n * that is not true any more). A path tweens point by point when both shapes\n * share their commands, and swaps at the end when they do not.\n */\n\nconst NUMBER = /-?\\d*\\.?\\d+(?:e[-+]?\\d+)?/gi;\n\nfunction mix(from: number, to: number, t: number): number {\n\treturn from + (to - from) * t;\n}\n\n/** Two paths can tween when only their numbers differ. */\nexport function tweenPath(from: string, to: string, t: number): string {\n\tconst fromNumbers = from.match(NUMBER);\n\tconst toNumbers = to.match(NUMBER);\n\tif (\n\t\tfromNumbers === null ||\n\t\ttoNumbers === null ||\n\t\tfromNumbers.length !== toNumbers.length ||\n\t\tfrom.replace(NUMBER, \"#\") !== to.replace(NUMBER, \"#\")\n\t) {\n\t\treturn t < 1 ? from : to;\n\t}\n\tlet index = 0;\n\treturn to.replace(NUMBER, () => {\n\t\tconst value = mix(Number(fromNumbers[index]), Number(toNumbers[index]), t);\n\t\tindex += 1;\n\t\treturn String(Math.round(value * 100) / 100);\n\t});\n}\n\nfunction fadeIn<TPaint extends ChartPaint>(paint: TPaint, t: number): TPaint {\n\treturn { ...paint, opacity: (paint.opacity ?? 1) * t };\n}\n\nfunction tweenNode(\n\tfrom: SceneNode | undefined,\n\tto: SceneNode,\n\tt: number,\n): SceneNode {\n\tif (from === undefined || from.kind !== to.kind) {\n\t\treturn to.kind === \"group\"\n\t\t\t? {\n\t\t\t\t\t...to,\n\t\t\t\t\tchildren: to.children.map((child) => tweenNode(undefined, child, t)),\n\t\t\t\t}\n\t\t\t: { ...to, paint: fadeIn(to.paint, t) };\n\t}\n\tswitch (to.kind) {\n\t\tcase \"group\": {\n\t\t\tconst before = new Map(\n\t\t\t\t(from as typeof to).children.map((child) => [child.key, child]),\n\t\t\t);\n\t\t\treturn {\n\t\t\t\t...to,\n\t\t\t\tchildren: to.children.map((child) =>\n\t\t\t\t\ttweenNode(before.get(child.key), child, t),\n\t\t\t\t),\n\t\t\t};\n\t\t}\n\t\tcase \"rect\": {\n\t\t\tconst previous = from as typeof to;\n\t\t\treturn {\n\t\t\t\t...to,\n\t\t\t\tx: mix(previous.x, to.x, t),\n\t\t\t\ty: mix(previous.y, to.y, t),\n\t\t\t\twidth: mix(previous.width, to.width, t),\n\t\t\t\theight: mix(previous.height, to.height, t),\n\t\t\t};\n\t\t}\n\t\tcase \"circle\": {\n\t\t\tconst previous = from as typeof to;\n\t\t\treturn {\n\t\t\t\t...to,\n\t\t\t\tcx: mix(previous.cx, to.cx, t),\n\t\t\t\tcy: mix(previous.cy, to.cy, t),\n\t\t\t\tr: mix(previous.r, to.r, t),\n\t\t\t};\n\t\t}\n\t\tcase \"line\": {\n\t\t\tconst previous = from as typeof to;\n\t\t\treturn {\n\t\t\t\t...to,\n\t\t\t\tx1: mix(previous.x1, to.x1, t),\n\t\t\t\ty1: mix(previous.y1, to.y1, t),\n\t\t\t\tx2: mix(previous.x2, to.x2, t),\n\t\t\t\ty2: mix(previous.y2, to.y2, t),\n\t\t\t};\n\t\t}\n\t\tcase \"text\": {\n\t\t\tconst previous = from as typeof to;\n\t\t\treturn {\n\t\t\t\t...to,\n\t\t\t\tx: mix(previous.x, to.x, t),\n\t\t\t\ty: mix(previous.y, to.y, t),\n\t\t\t};\n\t\t}\n\t\tcase \"path\":\n\t\t\treturn { ...to, d: tweenPath((from as typeof to).d, to.d, t) };\n\t}\n}\n\n/** `to`, `t` of the way from `from` (0 is `from`, 1 is `to`). */\nexport function tweenScene(\n\tfrom: ChartScene,\n\tto: ChartScene,\n\tt: number,\n): ChartScene {\n\tif (t >= 1) {\n\t\treturn to;\n\t}\n\tconst before = new Map(from.nodes.map((node) => [node.key, node]));\n\treturn {\n\t\t...to,\n\t\tnodes: to.nodes.map((node) => tweenNode(before.get(node.key), node, t)),\n\t};\n}\n\n/** Fast out, slow in: the motion settles rather than stops. */\nexport function easeOutCubic(t: number): number {\n\treturn 1 - (1 - t) ** 3;\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
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": "AAAA;AAAA,EAGC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,SAAS,aAAa,cAAc,mBAAmB;AACvD,SAAS,QAAQ,aAAa;AAqB9B,MAAM,cAA2D;AAAA,EAChE,eAAe;AAAA,EACf,iBAAiB;AAAA,EACjB,UAAU;AAAA,EACV,iBAAiB;AAAA,EACjB,cAAc;AAAA,EACd,cAAc;AAAA,EACd,QAAQ,MAAM,kBAAkB,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;AACrE;AAIA,SAAS,aAAa,UAGV;AACX,MAAI,SAAS,SAAS,WAAW;AAChC,WAAO;AAAA,MACN,GAAG;AAAA,MACH,aAAc,SAAS,YAAuB;AAAA,QAAI,CAAC,SAClD,CAAC,GAAG,IAAI,EAAE,QAAQ;AAAA,MACnB;AAAA,IACD;AAAA,EACD;AACA,MAAI,SAAS,SAAS,gBAAgB;AACrC,WAAO;AAAA,MACN,GAAG;AAAA,MACH,aAAc,SAAS,YAAyB;AAAA,QAAI,CAAC,YACpD,QAAQ,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,QAAQ,CAAC;AAAA,MAC1C;AAAA,IACD;AAAA,EACD;AACA,SAAO;AACR;AAOO,SAAS,OAAU,QAAc;AACvC,QAAM,QAAQ;AAKd,MAAI,MAAM,SAAS,uBAAuB,MAAM,QAAQ,MAAM,QAAQ,GAAG;AACxE,WAAO;AAAA,MACN,GAAG;AAAA,MACH,UAAU,MAAM,SAAS,IAAI,CAAC,YAAY,OAAO,OAAO,CAAC;AAAA,IAC1D;AAAA,EACD;AACA,MAAI,MAAM,SAAS,aAAa,MAAM,UAAU;AAC/C,WAAO,QAAQ,KAA8B,IAAI,IAAI,KAAK,KACtD,EAAE,GAAG,OAAO,UAAU,aAAa,MAAM,QAAQ,EAAE,IACpD;AAAA,EACJ;AACA,SAAO;AACR;AAcO,SAAS,WACf,MACA,SACkB;AAClB,SAAO;AAAA,IACN,IAAI,MAA6B;AAChC,YAAM,QAAQ,QAAQ,SAAS;AAC/B,YAAM,aACL,OAAO,SAAS,aAAa,OAAO,YAAY,IAAI,GACnD,EAAE;AAAA,QACH;AAAA,UACC,CAAC,KAAK,IAAI,OAAO,KAAK,IAAI,KAAK;AAAA,UAC/B,CAAC,KAAK,IAAI,KAAK,QAAQ,OAAO,KAAK,IAAI,KAAK,SAAS,KAAK;AAAA,QAC3D;AAAA,QACA,OAAO,QAAQ,MAAM;AAAA,MACtB;AACA,YAAM,OAAO,QAAQ,SAAS;AAC9B,aAAO;AAAA,QACN,QAAQ,WAAW,UAAU;AAC5B,gBAAM,QAAQ,UAAU,CAAC,WAAW,QAAQ,CAAC;AAC7C,iBAAO,QAAQ,EAAE,GAAG,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,EAAE,IAAI;AAAA,QAC/C;AAAA,QACA,MAAM,CAAC,aAAa,KAAK,QAAiC,KAAK;AAAA,QAC/D,SAAS,UAAU;AAClB,gBAAM,CAAC,GAAG,CAAC,IAAI,KAAK,SAAS,QAAiC;AAC9D,iBAAO,EAAE,GAAG,EAAE;AAAA,QACf;AAAA,QACA,OAAO,UAAU;AAChB,gBAAM,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK;AAAA,YACjC;AAAA,UACD;AACA,iBAAO,EAAE,GAAG,IAAI,GAAG,IAAI,OAAO,KAAK,IAAI,QAAQ,KAAK,GAAG;AAAA,QACxD;AAAA,MACD;AAAA,IACD;AAAA,EACD;AACD;AAsBO,SAAS,SACf,UACA,SACY;AACZ,QAAM,QAAQ,YAAY,UAAU,QAAQ,IAAI;AAChD,QAAM,SAAS,YAAY,UAAU,QAAQ,KAAK;AAClD,SAAO;AAAA,IACN,IAAI,QAAQ;AAAA,IACZ,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,QAAQ,EAAE,OAAO,QAAQ,MAAM;AAAA,IAC/B,UACC,QAAQ,UAAU,SACf,CAAC,IACD,EAAE,OAAO,EAAE,QAAQ,OAAO,OAAO,WAAW,EAAE,EAAE;AAAA,IACpD,OAAO,SAAS;AACf,YAAM,KAAK,OAAO,QAAQ,IAAI,OAAO,OAAO;AAC5C,YAAM,SAAS,QAAQ;AACvB,UAAI,WAAW,QAAW;AACzB,eAAO,EAAE,OAAO,CAAC,EAAE;AAAA,MACpB;AACA,YAAM,QAAqB,CAAC;AAC5B,YAAM,SAAuB,CAAC;AAC9B,iBAAW,CAAC,OAAO,OAAO,KAAK,SAAS,QAAQ,GAAG;AAClD,cAAM,OAAO,OAAO,MAAM,KAAK,KAAK,KAAK;AACzC,cAAM,QAAQ,OAAO,KAAK;AAC1B,cAAM,OACL,QAAQ,SACP,UAAU,UAAa,QAAQ,UAAU,SACvC,QAAQ,MAAM,OACd,QAAQ,QAAQ,KAAK;AACzB,cAAM,QAAQ,OAAO,OAAO;AAC5B,cAAM,IAAI,OAAO,KAAK,KAAK;AAC3B,YAAI,MAAM,GAAI;AACd,cAAM,KAAK;AAAA,UACV,MAAM;AAAA,UACN,KAAK,GAAG,EAAE,IAAI,IAAI;AAAA,UAClB,MAAM;AAAA,UACN;AAAA,UACA,OAAO,MAAM;AAAA,YACZ;AAAA,YACA,QAAQ,QAAQ,UAAU,QAAQ,MAAM;AAAA,YACxC,aAAa;AAAA,UACd,CAAC;AAAA,QACF,CAAC;AACD,YAAI,QAAQ,QAAQ,OAAO;AAC1B,gBAAM,SAAS,OAAO,SAAS,KAAK;AACpC,gBAAM,SAAS,aAAa,KAAK;AACjC,iBAAO,KAAK;AAAA,YACX,KAAK,GAAG,EAAE,IAAI,IAAI;AAAA,YAClB,QAAQ;AAAA,YACR;AAAA,YACA,OAAO;AAAA,YACP,GAAG,OAAO;AAAA,YACV,GAAG,OAAO;AAAA,YACV,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,aAAa,QAAQ;AAAA,YACrB,OAAO;AAAA,YACP,OAAO;AAAA,YACP,OACC,UAAU,SACP,KACA,WAAW,SACV,OAAO,KAAK,IACZ,QAAQ,QAAQ,MAAM;AAAA,YAC3B,KAAK,EAAE,MAAM,QAAQ,MAAM,OAAO,OAAO,KAAK,EAAE;AAAA,UACjD,CAAC;AAAA,QACF;AAAA,MACD;AACA,aAAO,EAAE,OAAO,OAAO;AAAA,IACxB;AAAA,EACD;AACD;AAiBO,SAAS,OACf,MACA,SACY;AACZ,QAAM,aAAa,YAAY,MAAM,QAAQ,SAAS,EAAE,IAAI,YAAY;AACxE,QAAM,YAAY,YAAY,MAAM,QAAQ,QAAQ,EAAE,IAAI,YAAY;AACtE,QAAM,QAAQ,YAAY,MAAM,QAAQ,IAAI;AAC5C,QAAM,SAAS,YAAY,MAAM,QAAQ,KAAK,EAAE,IAAI,YAAY;AAChE,QAAM,QAAQ,QAAQ,MAAM,UAAa,OAAO,QAAQ,MAAM;AAC9D,QAAM,QAAQ,QACX,YAAY,MAAM,QAAQ,CAAsC,EAAE;AAAA,IAClE;AAAA,EACD,IACC,CAAC;AACJ,QAAM,UAAU,KAAK,IAAI,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,KAAK,IAAI,QAAQ,CAAC,CAAC,CAAC;AACvE,SAAO;AAAA,IACN,IAAI,QAAQ;AAAA,IACZ,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,QAAQ,EAAE,OAAO,QAAQ,MAAM;AAAA,IAC/B,UAAU,CAAC;AAAA,IACX,OAAO,SAAS;AACf,YAAM,KAAK,OAAO,QAAQ,IAAI,UAAU,OAAO;AAC/C,YAAM,SAAS,QAAQ;AACvB,UAAI,WAAW,QAAW;AACzB,eAAO,EAAE,OAAO,CAAC,EAAE;AAAA,MACpB;AACA,YAAM,QAAQ,QAAQ,QAAQ,QAAQ,aAAa,QAAQ,SAAS;AACpE,YAAM,YAAY,QAAQ,aAAa;AACvC,YAAM,QAAqB,CAAC;AAC5B,YAAM,SAAuB,CAAC;AAC9B,iBAAW,CAAC,OAAO,KAAK,KAAK,KAAK,QAAQ,GAAG;AAC5C,cAAM,YAAY,WAAW,KAAK;AAClC,cAAM,WAAW,UAAU,KAAK;AAChC,YAAI,cAAc,UAAa,aAAa,OAAW;AACvD,cAAM,KAAK,OAAO,QAAQ,WAAW,QAAQ;AAC7C,YAAI,OAAO,OAAW;AACtB,cAAM,IACL,OAAO,QAAQ,MAAM,WAClB,QAAQ,IACR,QACC,YAAY,IACX,IACA,KAAK,KAAK,KAAK,IAAI,MAAM,KAAK,KAAK,CAAC,IAAI,OAAO,IAAI,YACpD;AACL,cAAM,OAAO,OAAO,MAAM,KAAK,KAAK,KAAK;AACzC,cAAM,KAAK;AAAA,UACV,MAAM;AAAA,UACN,KAAK,GAAG,EAAE,IAAI,KAAK;AAAA,UACnB,MAAM;AAAA,UACN,IAAI,GAAG;AAAA,UACP,IAAI,GAAG;AAAA,UACP;AAAA,UACA,OAAO;AAAA,YACN,MAAM;AAAA,YACN,aAAa;AAAA,YACb,QAAQ,QAAQ,MAAM;AAAA,YACtB,aAAa;AAAA,UACd;AAAA,QACD,CAAC;AACD,YAAI,QAAQ,QAAQ,OAAO;AAC1B,gBAAM,QAAQ,OAAO,KAAK,KAAK,MAAM,KAAK;AAC1C,iBAAO,KAAK;AAAA,YACX,KAAK,GAAG,EAAE,IAAI,KAAK;AAAA,YACnB,QAAQ;AAAA,YACR;AAAA,YACA;AAAA,YACA,GAAG,GAAG;AAAA,YACN,GAAG,GAAG;AAAA,YACN,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,aAAa,QAAQ;AAAA,YACrB;AAAA,YACA,OAAO;AAAA,YACP,OAAO,UAAU,SAAY,KAAK,QAAQ,QAAQ,KAAK;AAAA,YACvD,KAAK;AAAA,cACJ,MAAM;AAAA,cACN,MAAM;AAAA,gBACL,GAAG,GAAG,IAAI,IAAI;AAAA,gBACd,GAAG,GAAG,IAAI,IAAI;AAAA,gBACd,OAAO,IAAI,IAAI;AAAA,gBACf,QAAQ,IAAI,IAAI;AAAA,cACjB;AAAA,YACD;AAAA,UACD,CAAC;AAAA,QACF;AAAA,MACD;AACA,aAAO,EAAE,OAAO,OAAO;AAAA,IACxB;AAAA,EACD;AACD;",
|
|
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
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -22,6 +22,8 @@ export { boxSummary, kernelDensity, linearFit, quantile, } from "./core/marks/st
|
|
|
22
22
|
export { type WaffleOptions, waffleY } from "./core/marks/stats/waffle.js";
|
|
23
23
|
export { type TextOptions, text } from "./core/marks/text.js";
|
|
24
24
|
export { type TickOptions, tickX, tickY } from "./core/marks/tick.js";
|
|
25
|
+
export { createMotionStore, type MotionStore, } from "./core/motion/motion-store.js";
|
|
26
|
+
export { type ChartAnimation, type ChartTiming, chartTiming, } from "./core/motion/timing.js";
|
|
25
27
|
export { easeOutCubic, tweenScene } from "./core/motion/tween.js";
|
|
26
28
|
export { type ChartFocusStop, findNearest, focusStops, } from "./core/nearest.js";
|
|
27
29
|
export { estimateTextWidth } from "./core/text.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EACN,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,yBAAyB,EAC9B,KAAK,SAAS,EACd,WAAW,GACX,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAAE,KAAK,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,KAAK,WAAW,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,KAAK,UAAU,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,EACN,KAAK,UAAU,EACf,GAAG,EACH,KAAK,EACL,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,EACL,SAAS,GACT,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AACtE,YAAY,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EACN,KAAK,iBAAiB,EACtB,WAAW,GACX,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACN,KAAK,UAAU,EACf,IAAI,EACJ,KAAK,gBAAgB,EACrB,SAAS,EACT,OAAO,GACP,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EACN,KAAK,gBAAgB,EACrB,SAAS,GACT,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACN,KAAK,iBAAiB,EACtB,WAAW,GACX,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACN,UAAU,EACV,aAAa,EACb,SAAS,EACT,QAAQ,GACR,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,KAAK,aAAa,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,KAAK,WAAW,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EACN,KAAK,cAAc,EACnB,WAAW,EACX,UAAU,GACV,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,mBAAmB,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -43,6 +43,12 @@ import {
|
|
|
43
43
|
import { waffleY } from "./core/marks/stats/waffle.js";
|
|
44
44
|
import { text } from "./core/marks/text.js";
|
|
45
45
|
import { tickX, tickY } from "./core/marks/tick.js";
|
|
46
|
+
import {
|
|
47
|
+
createMotionStore
|
|
48
|
+
} from "./core/motion/motion-store.js";
|
|
49
|
+
import {
|
|
50
|
+
chartTiming
|
|
51
|
+
} from "./core/motion/timing.js";
|
|
46
52
|
import { easeOutCubic, tweenScene } from "./core/motion/tween.js";
|
|
47
53
|
import {
|
|
48
54
|
findNearest,
|
|
@@ -60,7 +66,9 @@ export {
|
|
|
60
66
|
boxSummary,
|
|
61
67
|
boxY,
|
|
62
68
|
cell,
|
|
69
|
+
chartTiming,
|
|
63
70
|
compileChart,
|
|
71
|
+
createMotionStore,
|
|
64
72
|
defineChart,
|
|
65
73
|
differenceY,
|
|
66
74
|
dodgeY,
|
package/dist/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/index.ts"],
|
|
4
|
-
"sourcesContent": ["export { type CompileOptions, compileChart } from \"#/core/compile.ts\";\nexport {\n\ttype ChartAxisOptions,\n\ttype ChartBuildContext,\n\ttype ChartColorOptions,\n\ttype ChartDefinition,\n\ttype ChartFacet,\n\ttype ChartFacetOptions,\n\ttype ChartPositionScaleOptions,\n\ttype ChartSpec,\n\tdefineChart,\n} from \"#/core/define-chart.ts\";\nexport { facet } from \"#/core/facet.ts\";\nexport { formatDate, formatNumber, formatValue } from \"#/core/format.ts\";\nexport { type AreaOptions, areaX, areaY } from \"#/core/marks/area.ts\";\nexport { type BarOptions, barX, barY } from \"#/core/marks/bar.ts\";\nexport { type CellOptions, cell } from \"#/core/marks/cell.ts\";\nexport { type DotOptions, dot } from \"#/core/marks/dot.ts\";\nexport { type FunnelOptions, funnel } from \"#/core/marks/funnel.ts\";\nexport { type LineOptions, lineX, lineY } from \"#/core/marks/line.ts\";\nexport {\n\ttype ArcOptions,\n\tarc,\n\tdonut,\n\ttype RadarOptions,\n\ttype RadialBarOptions,\n\tradar,\n\tradialBar,\n} from \"#/core/marks/polar.ts\";\nexport { type RectOptions, rectY } from \"#/core/marks/rect.ts\";\nexport { type RuleOptions, ruleX, ruleY } from \"#/core/marks/rule.ts\";\nexport type { ChartMarkOptions } from \"#/core/marks/shared.ts\";\nexport {\n\ttype DifferenceOptions,\n\tdifferenceY,\n} from \"#/core/marks/stats/difference.ts\";\nexport {\n\ttype BoxOptions,\n\tboxY,\n\ttype RidgelineOptions,\n\tridgeline,\n\tviolinY,\n} from \"#/core/marks/stats/distribution.ts\";\nexport { type DodgeOptions, dodgeY } from \"#/core/marks/stats/dodge.ts\";\nexport { type HexbinOptions, hexbin } from \"#/core/marks/stats/hexbin.ts\";\nexport {\n\ttype HistogramOptions,\n\thistogram,\n} from \"#/core/marks/stats/histogram.ts\";\nexport {\n\ttype RegressionOptions,\n\tregressionY,\n} from \"#/core/marks/stats/regression.ts\";\nexport {\n\tboxSummary,\n\tkernelDensity,\n\tlinearFit,\n\tquantile,\n} from \"#/core/marks/stats/statistics.ts\";\nexport { type WaffleOptions, waffleY } from \"#/core/marks/stats/waffle.ts\";\nexport { type TextOptions, text } from \"#/core/marks/text.ts\";\nexport { type TickOptions, tickX, tickY } from \"#/core/marks/tick.ts\";\nexport { easeOutCubic, tweenScene } from \"#/core/motion/tween.ts\";\nexport {\n\ttype ChartFocusStop,\n\tfindNearest,\n\tfocusStops,\n} from \"#/core/nearest.ts\";\nexport { estimateTextWidth } from \"#/core/text.ts\";\nexport { DEFAULT_THEME } from \"#/core/theme.ts\";\nexport type * from \"#/core/types.ts\";\n"],
|
|
5
|
-
"mappings": "AAAA,SAA8B,oBAAoB;AAClD;AAAA,EASC;AAAA,OACM;AACP,SAAS,aAAa;AACtB,SAAS,YAAY,cAAc,mBAAmB;AACtD,SAA2B,OAAO,aAAa;AAC/C,SAA0B,MAAM,YAAY;AAC5C,SAA2B,YAAY;AACvC,SAA0B,WAAW;AACrC,SAA6B,cAAc;AAC3C,SAA2B,OAAO,aAAa;AAC/C;AAAA,EAEC;AAAA,EACA;AAAA,EAGA;AAAA,EACA;AAAA,OACM;AACP,SAA2B,aAAa;AACxC,SAA2B,OAAO,aAAa;AAE/C;AAAA,EAEC;AAAA,OACM;AACP;AAAA,EAEC;AAAA,EAEA;AAAA,EACA;AAAA,OACM;AACP,SAA4B,cAAc;AAC1C,SAA6B,cAAc;AAC3C;AAAA,EAEC;AAAA,OACM;AACP;AAAA,EAEC;AAAA,OACM;AACP;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,SAA6B,eAAe;AAC5C,SAA2B,YAAY;AACvC,SAA2B,OAAO,aAAa;AAC/C,SAAS,cAAc,kBAAkB;AACzC;AAAA,EAEC;AAAA,EACA;AAAA,OACM;AACP,SAAS,yBAAyB;AAClC,SAAS,qBAAqB;",
|
|
4
|
+
"sourcesContent": ["export { type CompileOptions, compileChart } from \"#/core/compile.ts\";\nexport {\n\ttype ChartAxisOptions,\n\ttype ChartBuildContext,\n\ttype ChartColorOptions,\n\ttype ChartDefinition,\n\ttype ChartFacet,\n\ttype ChartFacetOptions,\n\ttype ChartPositionScaleOptions,\n\ttype ChartSpec,\n\tdefineChart,\n} from \"#/core/define-chart.ts\";\nexport { facet } from \"#/core/facet.ts\";\nexport { formatDate, formatNumber, formatValue } from \"#/core/format.ts\";\nexport { type AreaOptions, areaX, areaY } from \"#/core/marks/area.ts\";\nexport { type BarOptions, barX, barY } from \"#/core/marks/bar.ts\";\nexport { type CellOptions, cell } from \"#/core/marks/cell.ts\";\nexport { type DotOptions, dot } from \"#/core/marks/dot.ts\";\nexport { type FunnelOptions, funnel } from \"#/core/marks/funnel.ts\";\nexport { type LineOptions, lineX, lineY } from \"#/core/marks/line.ts\";\nexport {\n\ttype ArcOptions,\n\tarc,\n\tdonut,\n\ttype RadarOptions,\n\ttype RadialBarOptions,\n\tradar,\n\tradialBar,\n} from \"#/core/marks/polar.ts\";\nexport { type RectOptions, rectY } from \"#/core/marks/rect.ts\";\nexport { type RuleOptions, ruleX, ruleY } from \"#/core/marks/rule.ts\";\nexport type { ChartMarkOptions } from \"#/core/marks/shared.ts\";\nexport {\n\ttype DifferenceOptions,\n\tdifferenceY,\n} from \"#/core/marks/stats/difference.ts\";\nexport {\n\ttype BoxOptions,\n\tboxY,\n\ttype RidgelineOptions,\n\tridgeline,\n\tviolinY,\n} from \"#/core/marks/stats/distribution.ts\";\nexport { type DodgeOptions, dodgeY } from \"#/core/marks/stats/dodge.ts\";\nexport { type HexbinOptions, hexbin } from \"#/core/marks/stats/hexbin.ts\";\nexport {\n\ttype HistogramOptions,\n\thistogram,\n} from \"#/core/marks/stats/histogram.ts\";\nexport {\n\ttype RegressionOptions,\n\tregressionY,\n} from \"#/core/marks/stats/regression.ts\";\nexport {\n\tboxSummary,\n\tkernelDensity,\n\tlinearFit,\n\tquantile,\n} from \"#/core/marks/stats/statistics.ts\";\nexport { type WaffleOptions, waffleY } from \"#/core/marks/stats/waffle.ts\";\nexport { type TextOptions, text } from \"#/core/marks/text.ts\";\nexport { type TickOptions, tickX, tickY } from \"#/core/marks/tick.ts\";\nexport {\n\tcreateMotionStore,\n\ttype MotionStore,\n} from \"#/core/motion/motion-store.ts\";\nexport {\n\ttype ChartAnimation,\n\ttype ChartTiming,\n\tchartTiming,\n} from \"#/core/motion/timing.ts\";\nexport { easeOutCubic, tweenScene } from \"#/core/motion/tween.ts\";\nexport {\n\ttype ChartFocusStop,\n\tfindNearest,\n\tfocusStops,\n} from \"#/core/nearest.ts\";\nexport { estimateTextWidth } from \"#/core/text.ts\";\nexport { DEFAULT_THEME } from \"#/core/theme.ts\";\nexport type * from \"#/core/types.ts\";\n"],
|
|
5
|
+
"mappings": "AAAA,SAA8B,oBAAoB;AAClD;AAAA,EASC;AAAA,OACM;AACP,SAAS,aAAa;AACtB,SAAS,YAAY,cAAc,mBAAmB;AACtD,SAA2B,OAAO,aAAa;AAC/C,SAA0B,MAAM,YAAY;AAC5C,SAA2B,YAAY;AACvC,SAA0B,WAAW;AACrC,SAA6B,cAAc;AAC3C,SAA2B,OAAO,aAAa;AAC/C;AAAA,EAEC;AAAA,EACA;AAAA,EAGA;AAAA,EACA;AAAA,OACM;AACP,SAA2B,aAAa;AACxC,SAA2B,OAAO,aAAa;AAE/C;AAAA,EAEC;AAAA,OACM;AACP;AAAA,EAEC;AAAA,EAEA;AAAA,EACA;AAAA,OACM;AACP,SAA4B,cAAc;AAC1C,SAA6B,cAAc;AAC3C;AAAA,EAEC;AAAA,OACM;AACP;AAAA,EAEC;AAAA,OACM;AACP;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,SAA6B,eAAe;AAC5C,SAA2B,YAAY;AACvC,SAA2B,OAAO,aAAa;AAC/C;AAAA,EACC;AAAA,OAEM;AACP;AAAA,EAGC;AAAA,OACM;AACP,SAAS,cAAc,kBAAkB;AACzC;AAAA,EAEC;AAAA,EACA;AAAA,OACM;AACP,SAAS,yBAAyB;AAClC,SAAS,qBAAqB;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/dist/react/chart.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import type { ChartDefinition } from "../core/define-chart.js";
|
|
3
|
+
import { type ChartAnimation } from "../core/motion/timing.js";
|
|
3
4
|
import type { ChartPoint } from "../core/types.js";
|
|
4
5
|
import { type ChartBrush } from "./brush-contract.js";
|
|
5
6
|
import { type ChartTooltipRenderProps } from "./chart-tooltip.js";
|
|
@@ -23,8 +24,12 @@ interface Props extends Omit<React.ComponentProps<"div">, "children" | "onSelect
|
|
|
23
24
|
readonly legend?: boolean;
|
|
24
25
|
/** The visually hidden table of the values. On by default; turn it off only when the page shows the same table. */
|
|
25
26
|
readonly dataTable?: boolean;
|
|
26
|
-
/**
|
|
27
|
-
|
|
27
|
+
/**
|
|
28
|
+
* How a data update moves: `true` (a spring with no bounce), a perceived
|
|
29
|
+
* duration in milliseconds, or `{ duration, bounce, stagger }` and
|
|
30
|
+
* `{ type: "tween", easing }`. `false` snaps; reduced motion always does.
|
|
31
|
+
*/
|
|
32
|
+
readonly animate?: boolean | number | ChartAnimation;
|
|
28
33
|
/**
|
|
29
34
|
* Zoom a continuous x: the wheel while the chart has focus, + and −,
|
|
30
35
|
* Shift and the arrows to pan, a drag to pan when zoomed, 0 to reset.
|
|
@@ -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;
|
|
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
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
2
|
import * as React from "react";
|
|
3
3
|
import { compileChart } from "../core/compile.js";
|
|
4
|
+
import { chartTiming } from "../core/motion/timing.js";
|
|
4
5
|
import { findNearest, focusStops } from "../core/nearest.js";
|
|
5
6
|
import { toNumber } from "../core/scales/continuous.js";
|
|
6
7
|
import {
|
|
@@ -23,7 +24,6 @@ import { useChartZoom } from "./use-chart-zoom.js";
|
|
|
23
24
|
import { useTextMeasurer } from "./use-text-measurer.js";
|
|
24
25
|
const DEFAULT_HEIGHT = 300;
|
|
25
26
|
const DEFAULT_INITIAL_WIDTH = 640;
|
|
26
|
-
const DEFAULT_DURATION = 300;
|
|
27
27
|
const CHART_CSS = `
|
|
28
28
|
[data-slot="chart-surface"]:focus-visible{outline:2px solid var(--ring,Highlight);outline-offset:2px;border-radius:4px}
|
|
29
29
|
@media (forced-colors:active){
|
|
@@ -102,15 +102,17 @@ 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
|
-
const
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
110
|
+
const animateKey = JSON.stringify(animate);
|
|
111
|
+
const timing = React.useMemo(
|
|
112
|
+
() => chartTiming(JSON.parse(animateKey)),
|
|
113
|
+
[animateKey]
|
|
113
114
|
);
|
|
115
|
+
const shown = useAnimatedScene(scene, animationTrigger, timing);
|
|
114
116
|
const messages = messagesFor(scene.locale);
|
|
115
117
|
const { active, handlers } = useChartFocus({
|
|
116
118
|
stops,
|
|
@@ -194,16 +196,19 @@ function Chart({
|
|
|
194
196
|
if (event.key === "+" || event.key === "=") {
|
|
195
197
|
event.preventDefault();
|
|
196
198
|
viewport.zoomAround(center, ZOOM_STEP);
|
|
199
|
+
setKeyboardZooms((count) => count + 1);
|
|
197
200
|
return;
|
|
198
201
|
}
|
|
199
202
|
if (event.key === "-" || event.key === "_") {
|
|
200
203
|
event.preventDefault();
|
|
201
204
|
viewport.zoomAround(center, 1 / ZOOM_STEP);
|
|
205
|
+
setKeyboardZooms((count) => count + 1);
|
|
202
206
|
return;
|
|
203
207
|
}
|
|
204
208
|
if (event.key === "0") {
|
|
205
209
|
event.preventDefault();
|
|
206
210
|
viewport.reset();
|
|
211
|
+
setKeyboardZooms((count) => count + 1);
|
|
207
212
|
return;
|
|
208
213
|
}
|
|
209
214
|
if (event.shiftKey && (event.key === "ArrowLeft" || event.key === "ArrowRight")) {
|