@vielzeug/prism 26.11.5 → 26.11.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +25 -10
- package/dist/_dev.js +1 -2
- package/dist/_tappers.js +1 -2
- package/dist/animation/easing.js +1 -2
- package/dist/animation/motion.js +0 -1
- package/dist/animation/reveal.cjs +1 -1
- package/dist/animation/reveal.cjs.map +1 -1
- package/dist/animation/reveal.js +29 -30
- package/dist/animation/transition.js +1 -2
- package/dist/animation/tween.js +1 -2
- package/dist/axes/axis.js +1 -2
- package/dist/axes/grid.js +1 -2
- package/dist/axes/scale-utils.js +1 -2
- package/dist/charts/area/area-chart.cjs +1 -1
- package/dist/charts/area/area-chart.cjs.map +1 -1
- package/dist/charts/area/area-chart.js +34 -35
- package/dist/charts/area/area-renderer.cjs +1 -1
- package/dist/charts/area/area-renderer.cjs.map +1 -1
- package/dist/charts/area/area-renderer.js +56 -57
- package/dist/charts/area/area-renderer.js.map +1 -1
- package/dist/charts/bar/bar-chart.cjs +1 -1
- package/dist/charts/bar/bar-chart.cjs.map +1 -1
- package/dist/charts/bar/bar-chart.js +80 -81
- package/dist/charts/bar/bar-chart.js.map +1 -1
- package/dist/charts/bar/bar-hit-test.js +1 -2
- package/dist/charts/bar/bar-renderer.cjs +1 -1
- package/dist/charts/bar/bar-renderer.cjs.map +1 -1
- package/dist/charts/bar/bar-renderer.js +42 -43
- package/dist/charts/bar/bar-value-labels.cjs +1 -1
- package/dist/charts/bar/bar-value-labels.cjs.map +1 -1
- package/dist/charts/bar/bar-value-labels.js +17 -18
- package/dist/charts/heatmap/heatmap-chart.cjs +1 -1
- package/dist/charts/heatmap/heatmap-chart.cjs.map +1 -1
- package/dist/charts/heatmap/heatmap-chart.js +43 -44
- package/dist/charts/heatmap/heatmap-color.js +1 -2
- package/dist/charts/line/line-chart.cjs +1 -1
- package/dist/charts/line/line-chart.cjs.map +1 -1
- package/dist/charts/line/line-chart.js +41 -42
- package/dist/charts/line/line-renderer.cjs +1 -1
- package/dist/charts/line/line-renderer.cjs.map +1 -1
- package/dist/charts/line/line-renderer.js +81 -82
- package/dist/charts/line/line-renderer.js.map +1 -1
- package/dist/charts/pie/pie-chart.cjs +1 -1
- package/dist/charts/pie/pie-chart.cjs.map +1 -1
- package/dist/charts/pie/pie-chart.js +69 -70
- package/dist/charts/pie/pie-renderer.js +1 -2
- package/dist/charts/radar/radar-chart.cjs +1 -1
- package/dist/charts/radar/radar-chart.cjs.map +1 -1
- package/dist/charts/radar/radar-chart.js +118 -119
- package/dist/charts/radar/radar-chart.js.map +1 -1
- package/dist/charts/radar/radar-geometry.cjs +1 -1
- package/dist/charts/radar/radar-geometry.cjs.map +1 -1
- package/dist/charts/radar/radar-geometry.js +15 -16
- package/dist/charts/scatter/scatter-chart.cjs +1 -1
- package/dist/charts/scatter/scatter-chart.cjs.map +1 -1
- package/dist/charts/scatter/scatter-chart.js +33 -34
- package/dist/charts/scatter/scatter-renderer.cjs +1 -1
- package/dist/charts/scatter/scatter-renderer.cjs.map +1 -1
- package/dist/charts/scatter/scatter-renderer.js +22 -23
- package/dist/charts/sparkline/sparkline.cjs +1 -1
- package/dist/charts/sparkline/sparkline.cjs.map +1 -1
- package/dist/charts/sparkline/sparkline.js +87 -88
- package/dist/charts/sparkline/sparkline.js.map +1 -1
- package/dist/core/cartesian-model.js +1 -2
- package/dist/core/cartesian-scales.js +1 -2
- package/dist/core/chart-base.cjs +1 -1
- package/dist/core/chart-base.cjs.map +1 -1
- package/dist/core/chart-base.js +13 -14
- package/dist/core/chart-scaffold.cjs +1 -1
- package/dist/core/chart-scaffold.cjs.map +1 -1
- package/dist/core/chart-scaffold.js +33 -34
- package/dist/core/datum-style.js +1 -2
- package/dist/core/ids.js +1 -2
- package/dist/core/layout.js +1 -2
- package/dist/core/polar.js +1 -2
- package/dist/core/responsive.js +1 -2
- package/dist/core/series-id.js +1 -2
- package/dist/errors.js +1 -2
- package/dist/index.cjs +1 -1
- package/dist/index.js +14 -14
- package/dist/interaction/announcer.js +1 -2
- package/dist/interaction/crosshair.js +1 -2
- package/dist/interaction/events.js +1 -2
- package/dist/interaction/legend.js +1 -2
- package/dist/interaction/scatter-interaction.cjs +1 -1
- package/dist/interaction/scatter-interaction.cjs.map +1 -1
- package/dist/interaction/scatter-interaction.js +26 -27
- package/dist/interaction/series-interaction.cjs +1 -1
- package/dist/interaction/series-interaction.cjs.map +1 -1
- package/dist/interaction/series-interaction.js +40 -41
- package/dist/interaction/tooltip.js +1 -2
- package/dist/prism.cjs +1 -1
- package/dist/prism.cjs.map +1 -1
- package/dist/prism.iife.js +1 -1
- package/dist/prism.iife.js.map +1 -1
- package/dist/prism.js +52 -103
- package/dist/prism.js.map +1 -1
- package/dist/scales/band.js +1 -2
- package/dist/scales/linear.js +1 -2
- package/dist/scales/time.js +1 -2
- package/dist/svg/element.js +1 -2
- package/dist/svg/path.js +1 -2
- package/dist/svg/text.js +1 -2
- package/dist/theme/index.js +1 -2
- package/package.json +6 -6
package/README.md
CHANGED
|
@@ -22,19 +22,34 @@ document.body.append(host);
|
|
|
22
22
|
|
|
23
23
|
const chart = createLineChart(host, {
|
|
24
24
|
a11y: { ariaLabel: 'Revenue by month' },
|
|
25
|
-
series: [
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
25
|
+
series: [
|
|
26
|
+
{
|
|
27
|
+
color: '#3b82f6',
|
|
28
|
+
data: [
|
|
29
|
+
{ key: 1, value: 10 },
|
|
30
|
+
{ key: 2, value: 25 },
|
|
31
|
+
{ key: 3, value: 18 },
|
|
32
|
+
{ key: 4, value: 32 },
|
|
33
|
+
],
|
|
34
|
+
name: 'Revenue',
|
|
35
|
+
},
|
|
36
|
+
],
|
|
30
37
|
tooltip: true,
|
|
31
38
|
});
|
|
32
39
|
|
|
33
|
-
chart.update([
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
}
|
|
40
|
+
chart.update([
|
|
41
|
+
{
|
|
42
|
+
color: '#3b82f6',
|
|
43
|
+
data: [
|
|
44
|
+
{ key: 1, value: 10 },
|
|
45
|
+
{ key: 2, value: 25 },
|
|
46
|
+
{ key: 3, value: 18 },
|
|
47
|
+
{ key: 4, value: 32 },
|
|
48
|
+
{ key: 5, value: 28 },
|
|
49
|
+
],
|
|
50
|
+
name: 'Revenue',
|
|
51
|
+
},
|
|
52
|
+
]);
|
|
38
53
|
|
|
39
54
|
chart.dispose();
|
|
40
55
|
```
|
package/dist/_dev.js
CHANGED
package/dist/_tappers.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
// src/_tappers.ts
|
|
2
2
|
function createTappers() {
|
|
3
3
|
let e = /* @__PURE__ */ new Set(), t = !1;
|
|
4
4
|
return {
|
|
@@ -20,7 +20,6 @@ function createTappers() {
|
|
|
20
20
|
}
|
|
21
21
|
};
|
|
22
22
|
}
|
|
23
|
-
//#endregion
|
|
24
23
|
export { createTappers };
|
|
25
24
|
|
|
26
25
|
//# sourceMappingURL=_tappers.js.map
|
package/dist/animation/easing.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
// src/animation/easing.ts
|
|
2
2
|
var e = {
|
|
3
3
|
"back-out": (e) => 1 + 2.70158 * (e - 1) ** 3 + 1.70158 * (e - 1) ** 2,
|
|
4
4
|
"ease-in": (e) => e * e * e,
|
|
@@ -10,7 +10,6 @@ var e = {
|
|
|
10
10
|
function resolveEasing(t) {
|
|
11
11
|
return typeof t == "function" ? t : t !== void 0 && Object.hasOwn(e, t) ? e[t] : e["ease-out"];
|
|
12
12
|
}
|
|
13
|
-
//#endregion
|
|
14
13
|
export { e as easings, resolveEasing };
|
|
15
14
|
|
|
16
15
|
//# sourceMappingURL=easing.js.map
|
package/dist/animation/motion.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require("../
|
|
1
|
+
const e=require("../core/ids.cjs"),t=require("../svg/element.cjs"),n=require("./easing.cjs"),r=require("./transition.cjs");var i=new WeakMap;function cancelReveal(e){i.get(e)?.()}function playTraceReveal(a,o,s,c,l,u){if(cancelReveal(a),l.duration<=0||u?.aborted)return()=>{};let d=e.uniqueId(`prism-trace`),f=t.createSvgElement(`defs`),p=c/2,m=t.createSvgElement(`mask`,{height:o.height+c,id:d,maskContentUnits:`userSpaceOnUse`,maskUnits:`userSpaceOnUse`,width:o.width+c,x:-p,y:-p}),h=s.map(({d:e})=>{let n=t.createSvgElement(`path`,{d:e,fill:`none`,pathLength:1,stroke:`white`,"stroke-dasharray":`1 1`,"stroke-dashoffset":1,"stroke-width":c});return m.appendChild(n),n});f.appendChild(m),a.insertBefore(f,a.firstChild),a.setAttribute(`mask`,`url(#${d})`);let cancelTween=()=>{},finish=()=>{i.delete(a),a.removeAttribute(`mask`),f.remove(),u?.removeEventListener(`abort`,finish),cancelTween()};return i.set(a,finish),u?.addEventListener(`abort`,finish,{once:!0}),cancelTween=r.startTween({count:1,duration:l.duration,easing:n.resolveEasing(l.easing),onComplete:finish,onFrame:e=>{let t=e(0);for(let[e,n]of h.entries()){let{start:r,end:i}=s[e],a=Math.max(0,Math.min(1,(t-r)/(i-r)));n.setAttribute(`stroke-dashoffset`,String(1-a))}},signal:u}),finish}function playGrowReveal(a,o,s,c,l){if(cancelReveal(a),s(),c.duration<=0||o.length===0||l.signal?.aborted)return()=>{};let u=e.uniqueId(`prism-reveal`),d=t.createSvgElement(`defs`),f=t.createSvgElement(`clipPath`,{id:u}),p=o.map(e=>{let n=t.createSvgElement(`rect`,{height:0,width:0,x:e.x,y:e.y});return f.appendChild(n),n});d.appendChild(f),a.insertBefore(d,a.firstChild),a.setAttribute(`clip-path`,`url(#${u})`);let cancelTween=()=>{},finish=()=>{i.delete(a),a.removeAttribute(`clip-path`),d.remove(),l.signal?.removeEventListener(`abort`,finish),cancelTween()};return i.set(a,finish),l.signal?.addEventListener(`abort`,finish,{once:!0}),cancelTween=r.startTween({count:o.length,duration:c.duration,easing:n.resolveEasing(c.easing),onComplete:finish,onFrame:e=>{for(let[n,r]of p.entries()){let i=o[n],a=Math.max(0,Math.min(1,e(n)));if(l.axis===`y`){let e=i.anchor+(i.y-i.anchor)*a,n=i.anchor+(i.y+i.height-i.anchor)*a;t.setAttributes(r,{height:Math.max(0,n-e),width:i.width,y:e})}else{let e=i.anchor+(i.x-i.anchor)*a,n=i.anchor+(i.x+i.width-i.anchor)*a;t.setAttributes(r,{height:i.height,width:Math.max(0,n-e),x:e})}}},signal:l.signal,stagger:l.stagger}),finish}exports.cancelReveal=cancelReveal,exports.playGrowReveal=playGrowReveal,exports.playTraceReveal=playTraceReveal;
|
|
2
2
|
//# sourceMappingURL=reveal.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reveal.cjs","names":["uniqueId","createSvgElement","startTween","resolveEasing","require_element","require_easing","require_transition","
|
|
1
|
+
{"version":3,"file":"reveal.cjs","names":["uniqueId","createSvgElement","startTween","resolveEasing","require_ids","require_element","require_easing","require_transition","activeReveals","parent","motion","signal","maskId","host","padding","strokeWidth","mask","bounds","traces","paths","trace","e","progress","i","revealed","start","end","paintFinal","lanes","options","clipId","clipPath","rects","rect","lane","top","bottom","left","right"],"sources":["../../src/animation/reveal.ts"],"sourcesContent":["import { uniqueId } from '../core/ids';\nimport { createSvgElement, setAttributes } from '../svg/element';\nimport type { TransitionConfig } from '../types';\nimport { resolveEasing } from './easing';\nimport { startTween } from './transition';\n\nconst activeReveals = new WeakMap<Element, () => void>();\n\nexport function cancelReveal(parent: Element): void {\n activeReveals.get(parent)?.();\n}\n\n/** Traces final line geometry without replacing its dash or per-datum styling. */\nexport function playTraceReveal(\n parent: SVGGElement,\n bounds: { height: number; width: number },\n paths: readonly { d: string; end: number; start: number }[],\n strokeWidth: number,\n motion: TransitionConfig & { duration: number },\n signal?: AbortSignal,\n): () => void {\n cancelReveal(parent);\n if (motion.duration <= 0 || signal?.aborted) return () => {};\n\n const maskId = uniqueId('prism-trace');\n const host = createSvgElement('defs');\n const padding = strokeWidth / 2;\n const mask = createSvgElement('mask', {\n height: bounds.height + strokeWidth,\n id: maskId,\n maskContentUnits: 'userSpaceOnUse',\n maskUnits: 'userSpaceOnUse',\n width: bounds.width + strokeWidth,\n x: -padding,\n y: -padding,\n });\n const traces = paths.map(({ d }) => {\n const trace = createSvgElement('path', {\n d,\n fill: 'none',\n pathLength: 1,\n stroke: 'white',\n 'stroke-dasharray': '1 1',\n 'stroke-dashoffset': 1,\n 'stroke-width': strokeWidth,\n });\n mask.appendChild(trace);\n return trace;\n });\n host.appendChild(mask);\n parent.insertBefore(host, parent.firstChild);\n parent.setAttribute('mask', `url(#${maskId})`);\n\n let cancelTween: () => void = () => {};\n const finish = (): void => {\n activeReveals.delete(parent);\n parent.removeAttribute('mask');\n host.remove();\n signal?.removeEventListener('abort', finish);\n cancelTween();\n };\n activeReveals.set(parent, finish);\n signal?.addEventListener('abort', finish, { once: true });\n cancelTween = startTween({\n count: 1,\n duration: motion.duration,\n easing: resolveEasing(motion.easing),\n onComplete: finish,\n onFrame: (progress) => {\n const e = progress(0);\n for (const [i, trace] of traces.entries()) {\n const { start, end } = paths[i];\n const revealed = Math.max(0, Math.min(1, (e - start) / (end - start)));\n trace.setAttribute('stroke-dashoffset', String(1 - revealed));\n }\n },\n signal,\n });\n return finish;\n}\n\nexport interface GrowRevealLane {\n anchor: number;\n height: number;\n width: number;\n x: number;\n y: number;\n}\n\n/** Reveals finished bars from their own baseline without distorting rounded corners. */\nexport function playGrowReveal(\n parent: SVGGElement,\n lanes: readonly GrowRevealLane[],\n paintFinal: () => void,\n motion: TransitionConfig & { duration: number },\n options: { axis: 'x' | 'y'; signal?: AbortSignal; stagger?: number },\n): () => void {\n cancelReveal(parent);\n paintFinal();\n if (motion.duration <= 0 || lanes.length === 0 || options.signal?.aborted) return () => {};\n\n const clipId = uniqueId('prism-reveal');\n const host = createSvgElement('defs');\n const clipPath = createSvgElement('clipPath', { id: clipId });\n const rects = lanes.map((lane) => {\n const rect = createSvgElement('rect', { height: 0, width: 0, x: lane.x, y: lane.y });\n clipPath.appendChild(rect);\n return rect;\n });\n host.appendChild(clipPath);\n parent.insertBefore(host, parent.firstChild);\n parent.setAttribute('clip-path', `url(#${clipId})`);\n\n let cancelTween: () => void = () => {};\n const finish = (): void => {\n activeReveals.delete(parent);\n parent.removeAttribute('clip-path');\n host.remove();\n options.signal?.removeEventListener('abort', finish);\n cancelTween();\n };\n activeReveals.set(parent, finish);\n options.signal?.addEventListener('abort', finish, { once: true });\n cancelTween = startTween({\n count: lanes.length,\n duration: motion.duration,\n easing: resolveEasing(motion.easing),\n onComplete: finish,\n onFrame: (progress) => {\n for (const [i, rect] of rects.entries()) {\n const lane = lanes[i];\n const e = Math.max(0, Math.min(1, progress(i)));\n if (options.axis === 'y') {\n const top = lane.anchor + (lane.y - lane.anchor) * e;\n const bottom = lane.anchor + (lane.y + lane.height - lane.anchor) * e;\n setAttributes(rect, { height: Math.max(0, bottom - top), width: lane.width, y: top });\n } else {\n const left = lane.anchor + (lane.x - lane.anchor) * e;\n const right = lane.anchor + (lane.x + lane.width - lane.anchor) * e;\n setAttributes(rect, { height: lane.height, width: Math.max(0, right - left), x: left });\n }\n }\n },\n signal: options.signal,\n stagger: options.stagger,\n });\n return finish;\n}\n"],"mappings":"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"}
|
package/dist/animation/reveal.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
|
|
1
|
+
import { uniqueId as e } from "../core/ids.js";
|
|
2
|
+
import { createSvgElement as t, setAttributes as n } from "../svg/element.js";
|
|
3
|
+
import { resolveEasing as r } from "./easing.js";
|
|
4
|
+
import { startTween as i } from "./transition.js";
|
|
5
|
+
// src/animation/reveal.ts
|
|
6
6
|
var a = /* @__PURE__ */ new WeakMap();
|
|
7
7
|
function cancelReveal(e) {
|
|
8
8
|
a.get(e)?.();
|
|
9
9
|
}
|
|
10
|
-
function playTraceReveal(
|
|
11
|
-
if (cancelReveal(
|
|
12
|
-
let d =
|
|
10
|
+
function playTraceReveal(n, o, s, c, l, u) {
|
|
11
|
+
if (cancelReveal(n), l.duration <= 0 || u?.aborted) return () => {};
|
|
12
|
+
let d = e("prism-trace"), f = t("defs"), p = c / 2, m = t("mask", {
|
|
13
13
|
height: o.height + c,
|
|
14
14
|
id: d,
|
|
15
15
|
maskContentUnits: "userSpaceOnUse",
|
|
@@ -17,9 +17,9 @@ function playTraceReveal(t, o, s, c, l, u) {
|
|
|
17
17
|
width: o.width + c,
|
|
18
18
|
x: -p,
|
|
19
19
|
y: -p
|
|
20
|
-
}), h = s.map(({ d:
|
|
21
|
-
let n =
|
|
22
|
-
d:
|
|
20
|
+
}), h = s.map(({ d: e }) => {
|
|
21
|
+
let n = t("path", {
|
|
22
|
+
d: e,
|
|
23
23
|
fill: "none",
|
|
24
24
|
pathLength: 1,
|
|
25
25
|
stroke: "white",
|
|
@@ -29,14 +29,14 @@ function playTraceReveal(t, o, s, c, l, u) {
|
|
|
29
29
|
});
|
|
30
30
|
return m.appendChild(n), n;
|
|
31
31
|
});
|
|
32
|
-
f.appendChild(m),
|
|
32
|
+
f.appendChild(m), n.insertBefore(f, n.firstChild), n.setAttribute("mask", `url(#${d})`);
|
|
33
33
|
let cancelTween = () => {}, finish = () => {
|
|
34
|
-
a.delete(
|
|
34
|
+
a.delete(n), n.removeAttribute("mask"), f.remove(), u?.removeEventListener("abort", finish), cancelTween();
|
|
35
35
|
};
|
|
36
|
-
return a.set(
|
|
36
|
+
return a.set(n, finish), u?.addEventListener("abort", finish, { once: !0 }), cancelTween = i({
|
|
37
37
|
count: 1,
|
|
38
38
|
duration: l.duration,
|
|
39
|
-
easing:
|
|
39
|
+
easing: r(l.easing),
|
|
40
40
|
onComplete: finish,
|
|
41
41
|
onFrame: (e) => {
|
|
42
42
|
let t = e(0);
|
|
@@ -50,12 +50,12 @@ function playTraceReveal(t, o, s, c, l, u) {
|
|
|
50
50
|
}
|
|
51
51
|
function playGrowReveal(o, s, c, l, u) {
|
|
52
52
|
if (cancelReveal(o), c(), l.duration <= 0 || s.length === 0 || u.signal?.aborted) return () => {};
|
|
53
|
-
let d =
|
|
54
|
-
let n =
|
|
53
|
+
let d = e("prism-reveal"), f = t("defs"), p = t("clipPath", { id: d }), m = s.map((e) => {
|
|
54
|
+
let n = t("rect", {
|
|
55
55
|
height: 0,
|
|
56
56
|
width: 0,
|
|
57
|
-
x:
|
|
58
|
-
y:
|
|
57
|
+
x: e.x,
|
|
58
|
+
y: e.y
|
|
59
59
|
});
|
|
60
60
|
return p.appendChild(n), n;
|
|
61
61
|
});
|
|
@@ -63,26 +63,26 @@ function playGrowReveal(o, s, c, l, u) {
|
|
|
63
63
|
let cancelTween = () => {}, finish = () => {
|
|
64
64
|
a.delete(o), o.removeAttribute("clip-path"), f.remove(), u.signal?.removeEventListener("abort", finish), cancelTween();
|
|
65
65
|
};
|
|
66
|
-
return a.set(o, finish), u.signal?.addEventListener("abort", finish, { once: !0 }), cancelTween =
|
|
66
|
+
return a.set(o, finish), u.signal?.addEventListener("abort", finish, { once: !0 }), cancelTween = i({
|
|
67
67
|
count: s.length,
|
|
68
68
|
duration: l.duration,
|
|
69
|
-
easing:
|
|
69
|
+
easing: r(l.easing),
|
|
70
70
|
onComplete: finish,
|
|
71
71
|
onFrame: (e) => {
|
|
72
|
-
for (let [
|
|
73
|
-
let i = s[
|
|
72
|
+
for (let [t, r] of m.entries()) {
|
|
73
|
+
let i = s[t], a = Math.max(0, Math.min(1, e(t)));
|
|
74
74
|
if (u.axis === "y") {
|
|
75
|
-
let e = i.anchor + (i.y - i.anchor) * a,
|
|
76
|
-
|
|
77
|
-
height: Math.max(0,
|
|
75
|
+
let e = i.anchor + (i.y - i.anchor) * a, t = i.anchor + (i.y + i.height - i.anchor) * a;
|
|
76
|
+
n(r, {
|
|
77
|
+
height: Math.max(0, t - e),
|
|
78
78
|
width: i.width,
|
|
79
79
|
y: e
|
|
80
80
|
});
|
|
81
81
|
} else {
|
|
82
|
-
let e = i.anchor + (i.x - i.anchor) * a,
|
|
83
|
-
|
|
82
|
+
let e = i.anchor + (i.x - i.anchor) * a, t = i.anchor + (i.x + i.width - i.anchor) * a;
|
|
83
|
+
n(r, {
|
|
84
84
|
height: i.height,
|
|
85
|
-
width: Math.max(0,
|
|
85
|
+
width: Math.max(0, t - e),
|
|
86
86
|
x: e
|
|
87
87
|
});
|
|
88
88
|
}
|
|
@@ -92,7 +92,6 @@ function playGrowReveal(o, s, c, l, u) {
|
|
|
92
92
|
stagger: u.stagger
|
|
93
93
|
}), finish;
|
|
94
94
|
}
|
|
95
|
-
//#endregion
|
|
96
95
|
export { cancelReveal, playGrowReveal, playTraceReveal };
|
|
97
96
|
|
|
98
97
|
//# sourceMappingURL=reveal.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { resolveEasing as e } from "./easing.js";
|
|
2
2
|
import { resolveMotion as t } from "./motion.js";
|
|
3
3
|
import { tweenNumber as n } from "./tween.js";
|
|
4
|
-
|
|
4
|
+
// src/animation/transition.ts
|
|
5
5
|
function startTween(e) {
|
|
6
6
|
let { count: t, duration: n, easing: r, stagger: i = 0, signal: a, onFrame: o, onComplete: s } = e;
|
|
7
7
|
if (a?.aborted) return () => {};
|
|
@@ -34,7 +34,6 @@ function animate(r, i, a, o) {
|
|
|
34
34
|
stagger: s.stagger
|
|
35
35
|
});
|
|
36
36
|
}
|
|
37
|
-
//#endregion
|
|
38
37
|
export { animate, startTween };
|
|
39
38
|
|
|
40
39
|
//# sourceMappingURL=transition.js.map
|
package/dist/animation/tween.js
CHANGED
package/dist/axes/axis.js
CHANGED
|
@@ -2,7 +2,7 @@ import "../_dev.js";
|
|
|
2
2
|
import { createSvgElement as e, removeChildren as t, setAttributes as n } from "../svg/element.js";
|
|
3
3
|
import { createTextElement as r, estimateTextWidth as i } from "../svg/text.js";
|
|
4
4
|
import { mapTick as a } from "./scale-utils.js";
|
|
5
|
-
|
|
5
|
+
// src/axes/axis.ts
|
|
6
6
|
var o = 11, s = 8, c = new Intl.NumberFormat(void 0, {
|
|
7
7
|
maximumSignificantDigits: 3,
|
|
8
8
|
notation: "compact"
|
|
@@ -71,7 +71,6 @@ function renderAxis(i, o, s, c, l = "bottom") {
|
|
|
71
71
|
}) : n(e, { transform: `translate(${6 * p * 7}, ${c / 2}) rotate(-90)` }), i.appendChild(e);
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
|
-
//#endregion
|
|
75
74
|
export { positionAxis, renderAxis, resolveTickCount, resolveTicks };
|
|
76
75
|
|
|
77
76
|
//# sourceMappingURL=axis.js.map
|
package/dist/axes/grid.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createSvgElement as e, removeChildren as t } from "../svg/element.js";
|
|
2
2
|
import { mapTick as n } from "./scale-utils.js";
|
|
3
|
-
|
|
3
|
+
// src/axes/grid.ts
|
|
4
4
|
function renderGrid(r, i, a, o, s, c) {
|
|
5
5
|
t(r);
|
|
6
6
|
let l = a !== !0 && a.color || void 0, u = a !== !0 && a.dash || void 0;
|
|
@@ -24,7 +24,6 @@ function renderGrid(r, i, a, o, s, c) {
|
|
|
24
24
|
}), r.appendChild(e("line", c));
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
|
-
//#endregion
|
|
28
27
|
export { renderGrid };
|
|
29
28
|
|
|
30
29
|
//# sourceMappingURL=grid.js.map
|
package/dist/axes/scale-utils.js
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
|
|
1
|
+
// src/axes/scale-utils.ts
|
|
2
2
|
function isBandScale(e) {
|
|
3
3
|
return typeof e.bandwidth == "function";
|
|
4
4
|
}
|
|
5
5
|
function mapTick(e, t) {
|
|
6
6
|
return isBandScale(e) ? e.map(t) + e.bandwidth() / 2 : e.map(t);
|
|
7
7
|
}
|
|
8
|
-
//#endregion
|
|
9
8
|
export { mapTick };
|
|
10
9
|
|
|
11
10
|
//# sourceMappingURL=scale-utils.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require("../../
|
|
1
|
+
const e=require("../../axes/axis.cjs"),t=require("../../axes/grid.cjs"),n=require("../../core/cartesian-scales.cjs"),r=require("../../core/chart-scaffold.cjs"),i=require("../../core/layout.cjs"),a=require("../../core/series-id.cjs"),o=require("../../interaction/crosshair.cjs"),s=require("../../interaction/series-interaction.cjs"),c=require("../../svg/element.cjs"),l=require("../../theme/index.cjs"),u=require("./area-renderer.cjs");function createAreaChart(d,f){let p=null,m=null,h=f.series;return r.createChartScaffold(d,f,d=>{let{groups:g,legend:_,tooltip:v}=d;_?.update(h.map((e,t)=>({color:l.seriesColor(t,e.color),name:e.name})));let y=d.dimensions,b=i.chartArea(y.width,y.height,y.margin),x=h.map(e=>e.data),S=x.flat().map(e=>e.key),C=x.flat().map(e=>e.value);if(S.length===0){r.clearCartesianDom(g,_,v,p),m?.replaceChildren();return}f.crosshair&&!p&&(p=o.createCrosshair(d.chartArea,f.crosshair));let w=n.buildXScale(S,b.width),T=n.buildYScale(C,b.height),E=T.map(0),D=f.xAxis===!1?!1:f.xAxis??{},O=f.yAxis!==!1&&{grid:!0,...f.yAxis};for(O&&O.grid&&t.renderGrid(g.grid,T,O.grid,b.width,`horizontal`,e.resolveTicks(T,O,e.resolveTickCount(O,b.height,`left`))),D&&D.grid&&t.renderGrid(g.grid,w,D.grid,b.height,`vertical`,e.resolveTicks(w,D,e.resolveTickCount(D,b.width,`bottom`))),D?(e.positionAxis(g.xAxis,D.position??`bottom`,b.width,b.height),e.renderAxis(g.xAxis,w,D,b.width,`bottom`)):g.xAxis.replaceChildren(),O?(e.positionAxis(g.yAxis,O.position??`left`,b.width,b.height),e.renderAxis(g.yAxis,T,O,b.height,`left`)):g.yAxis.replaceChildren();g.series.children.length>h.length;)g.series.removeChild(g.series.lastChild);let k=[];for(let e=0;e<h.length;e++){let t=h[e],n=g.series.children[e];n||(n=c.createSvgElement(`g`,{class:`prism-area-series`}),g.series.appendChild(n)),n.setAttribute(`data-series-id`,a.seriesDomId(t,e));let r=u.computeAreaPoints(x[e],w,T);k.push(r),u.renderArea(n,r,E,{color:l.seriesColor(e,t.color),curve:t.curve??`linear`,disposalSignal:d.disposalSignal,fill:t.fill??`gradient`,fillOpacity:t.fillOpacity,marks:t.data,showLine:t.showLine!==!1,transition:f.transition})}return v?.hide(),m=s.ensureMarkerGroup(d.chartArea,m),s.createSeriesInteraction({announcer:d.announcer,colors:()=>h.map((e,t)=>l.seriesColor(t,e.color)),crosshair:p,dims:()=>d.dimensions,getData:()=>x,getPoints:()=>k,getSeriesList:()=>h,margin:d.dimensions.margin,markers:m,onClick:f.onClick,onHover:f.onHover,seriesGroup:g.series,svg:d.svg,tooltip:v,tooltipFormat:typeof f.tooltip==`object`?f.tooltip:void 0})},e=>{h=e})}exports.createAreaChart=createAreaChart;
|
|
2
2
|
//# sourceMappingURL=area-chart.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"area-chart.cjs","names":["createChartScaffold","seriesColor","chartArea","createCrosshair","buildXScale","buildYScale","resolveTicks","resolveTickCount","createSvgElement","seriesDomId","computeAreaPoints","ensureMarkerGroup","createSeriesInteraction","
|
|
1
|
+
{"version":3,"file":"area-chart.cjs","names":["createChartScaffold","seriesColor","chartArea","createCrosshair","buildXScale","buildYScale","resolveTicks","resolveTickCount","createSvgElement","seriesDomId","computeAreaPoints","ensureMarkerGroup","createSeriesInteraction","require_axis","require_grid","require_cartesian_scales","require_chart_scaffold","require_layout","require_series_id","require_crosshair","require_series_interaction","require_element","require_index","require_area_renderer","crosshair","markers","seriesList","config","container","ctx","legend","i","s","dims","area","allData","series","allX","datum","allY","d","groups","tooltip","xScale","yScale","baselineY","xAxisConfig","yAxisConfig","allPoints","group","points","data"],"sources":["../../../src/charts/area/area-chart.ts"],"sourcesContent":["import { positionAxis, renderAxis, resolveTickCount, resolveTicks } from '../../axes/axis';\nimport { renderGrid } from '../../axes/grid';\nimport { buildXScale, buildYScale } from '../../core/cartesian-scales';\nimport { clearCartesianDom, createChartScaffold } from '../../core/chart-scaffold';\nimport { chartArea } from '../../core/layout';\nimport { seriesDomId } from '../../core/series-id';\nimport { createCrosshair } from '../../interaction/crosshair';\nimport { createSeriesInteraction, ensureMarkerGroup } from '../../interaction/series-interaction';\nimport { createSvgElement } from '../../svg/element';\nimport type { Point } from '../../svg/path';\nimport { seriesColor } from '../../theme';\nimport type { AreaChartConfig, AreaSeriesConfig, ChartHandle, XAxisConfig, YAxisConfig } from '../../types';\nimport { computeAreaPoints, renderArea } from './area-renderer';\n\nexport function createAreaChart(container: HTMLElement, config: AreaChartConfig): ChartHandle<AreaSeriesConfig[]> {\n let crosshair: ReturnType<typeof createCrosshair> | null = null;\n let markers: SVGGElement | null = null;\n let seriesList = config.series;\n\n return createChartScaffold(\n container,\n config,\n (ctx) => {\n const { groups, legend, tooltip } = ctx;\n legend?.update(seriesList.map((s, i) => ({ color: seriesColor(i, s.color), name: s.name })));\n const dims = ctx.dimensions;\n const area = chartArea(dims.width, dims.height, dims.margin);\n const allData = seriesList.map((series) => series.data);\n const allX = allData.flat().map((datum) => datum.key);\n const allY = allData.flat().map((d) => d.value);\n\n if (allX.length === 0) {\n clearCartesianDom(groups, legend, tooltip, crosshair);\n markers?.replaceChildren();\n\n return;\n }\n\n if (config.crosshair && !crosshair) {\n crosshair = createCrosshair(ctx.chartArea, config.crosshair);\n }\n\n const xScale = buildXScale(allX, area.width);\n const yScale = buildYScale(allY, area.height);\n const baselineY = yScale.map(0);\n\n // Axes render by default (value axis with gridlines); `false` opts out. The value\n // axis merges over its default so a partial config (e.g. only `tickFormat`) keeps\n // the default gridlines.\n const xAxisConfig: XAxisConfig | false = config.xAxis === false ? false : (config.xAxis ?? {});\n const yAxisConfig: YAxisConfig | false = config.yAxis === false ? false : { grid: true, ...config.yAxis };\n\n if (yAxisConfig && yAxisConfig.grid) {\n renderGrid(\n groups.grid,\n yScale,\n yAxisConfig.grid,\n area.width,\n 'horizontal',\n resolveTicks(yScale, yAxisConfig, resolveTickCount(yAxisConfig, area.height, 'left')),\n );\n }\n\n if (xAxisConfig && xAxisConfig.grid) {\n renderGrid(\n groups.grid,\n xScale,\n xAxisConfig.grid,\n area.height,\n 'vertical',\n resolveTicks(xScale, xAxisConfig, resolveTickCount(xAxisConfig, area.width, 'bottom')),\n );\n }\n\n if (xAxisConfig) {\n positionAxis(groups.xAxis, xAxisConfig.position ?? 'bottom', area.width, area.height);\n renderAxis(groups.xAxis, xScale, xAxisConfig, area.width, 'bottom');\n } else {\n groups.xAxis.replaceChildren();\n }\n\n if (yAxisConfig) {\n positionAxis(groups.yAxis, yAxisConfig.position ?? 'left', area.width, area.height);\n renderAxis(groups.yAxis, yScale, yAxisConfig, area.height, 'left');\n } else {\n groups.yAxis.replaceChildren();\n }\n\n while (groups.series.children.length > seriesList.length) {\n groups.series.removeChild(groups.series.lastChild!);\n }\n\n const allPoints: Point[][] = [];\n\n for (let i = 0; i < seriesList.length; i++) {\n const series = seriesList[i];\n let group = groups.series.children[i] as SVGGElement | undefined;\n\n if (!group) {\n group = createSvgElement('g', { class: 'prism-area-series' });\n groups.series.appendChild(group);\n }\n\n group.setAttribute('data-series-id', seriesDomId(series, i));\n\n const points = computeAreaPoints(allData[i], xScale, yScale);\n\n allPoints.push(points);\n\n renderArea(group, points, baselineY, {\n color: seriesColor(i, series.color),\n curve: series.curve ?? 'linear',\n disposalSignal: ctx.disposalSignal,\n fill: series.fill ?? 'gradient',\n fillOpacity: series.fillOpacity,\n marks: series.data,\n showLine: series.showLine !== false,\n transition: config.transition,\n });\n }\n\n tooltip?.hide();\n markers = ensureMarkerGroup(ctx.chartArea, markers);\n\n return createSeriesInteraction({\n announcer: ctx.announcer,\n colors: () => seriesList.map((s, i) => seriesColor(i, s.color)),\n crosshair,\n dims: () => ctx.dimensions,\n getData: () => allData,\n getPoints: () => allPoints,\n getSeriesList: () => seriesList,\n margin: ctx.dimensions.margin,\n markers,\n onClick: config.onClick,\n onHover: config.onHover,\n seriesGroup: groups.series,\n svg: ctx.svg,\n tooltip,\n tooltipFormat: typeof config.tooltip === 'object' ? config.tooltip : undefined,\n });\n },\n (data) => {\n seriesList = data;\n },\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,64 +1,64 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { chartArea as
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
1
|
+
import { positionAxis as e, renderAxis as t, resolveTickCount as n, resolveTicks as r } from "../../axes/axis.js";
|
|
2
|
+
import { renderGrid as i } from "../../axes/grid.js";
|
|
3
|
+
import { buildXScale as a, buildYScale as o } from "../../core/cartesian-scales.js";
|
|
4
|
+
import { clearCartesianDom as s, createChartScaffold as c } from "../../core/chart-scaffold.js";
|
|
5
|
+
import { chartArea as l } from "../../core/layout.js";
|
|
6
|
+
import { seriesDomId as u } from "../../core/series-id.js";
|
|
7
|
+
import { createCrosshair as d } from "../../interaction/crosshair.js";
|
|
8
|
+
import { createSeriesInteraction as f, ensureMarkerGroup as p } from "../../interaction/series-interaction.js";
|
|
9
|
+
import { createSvgElement as m } from "../../svg/element.js";
|
|
10
10
|
import { seriesColor as h } from "../../theme/index.js";
|
|
11
11
|
import { computeAreaPoints as g, renderArea as _ } from "./area-renderer.js";
|
|
12
|
-
|
|
12
|
+
// src/charts/area/area-chart.ts
|
|
13
13
|
function createAreaChart(v, y) {
|
|
14
14
|
let b = null, x = null, S = y.series;
|
|
15
|
-
return
|
|
16
|
-
let { groups: v, legend: C, tooltip: w } =
|
|
15
|
+
return c(v, y, (c) => {
|
|
16
|
+
let { groups: v, legend: C, tooltip: w } = c;
|
|
17
17
|
C?.update(S.map((e, t) => ({
|
|
18
18
|
color: h(t, e.color),
|
|
19
19
|
name: e.name
|
|
20
20
|
})));
|
|
21
|
-
let T =
|
|
21
|
+
let T = c.dimensions, E = l(T.width, T.height, T.margin), D = S.map((e) => e.data), O = D.flat().map((e) => e.key), k = D.flat().map((e) => e.value);
|
|
22
22
|
if (O.length === 0) {
|
|
23
|
-
|
|
23
|
+
s(v, C, w, b), x?.replaceChildren();
|
|
24
24
|
return;
|
|
25
25
|
}
|
|
26
|
-
y.crosshair && !b && (b =
|
|
27
|
-
let A =
|
|
26
|
+
y.crosshair && !b && (b = d(c.chartArea, y.crosshair));
|
|
27
|
+
let A = a(O, E.width), j = o(k, E.height), M = j.map(0), N = y.xAxis === !1 ? !1 : y.xAxis ?? {}, P = y.yAxis !== !1 && {
|
|
28
28
|
grid: !0,
|
|
29
29
|
...y.yAxis
|
|
30
30
|
};
|
|
31
|
-
for (P && P.grid &&
|
|
31
|
+
for (P && P.grid && i(v.grid, j, P.grid, E.width, "horizontal", r(j, P, n(P, E.height, "left"))), N && N.grid && i(v.grid, A, N.grid, E.height, "vertical", r(A, N, n(N, E.width, "bottom"))), N ? (e(v.xAxis, N.position ?? "bottom", E.width, E.height), t(v.xAxis, A, N, E.width, "bottom")) : v.xAxis.replaceChildren(), P ? (e(v.yAxis, P.position ?? "left", E.width, E.height), t(v.yAxis, j, P, E.height, "left")) : v.yAxis.replaceChildren(); v.series.children.length > S.length;) v.series.removeChild(v.series.lastChild);
|
|
32
32
|
let F = [];
|
|
33
|
-
for (let
|
|
34
|
-
let
|
|
35
|
-
|
|
36
|
-
let
|
|
37
|
-
F.push(
|
|
38
|
-
color: h(
|
|
39
|
-
curve:
|
|
40
|
-
disposalSignal:
|
|
41
|
-
fill:
|
|
42
|
-
fillOpacity:
|
|
43
|
-
marks:
|
|
44
|
-
showLine:
|
|
33
|
+
for (let e = 0; e < S.length; e++) {
|
|
34
|
+
let t = S[e], n = v.series.children[e];
|
|
35
|
+
n || (n = m("g", { class: "prism-area-series" }), v.series.appendChild(n)), n.setAttribute("data-series-id", u(t, e));
|
|
36
|
+
let r = g(D[e], A, j);
|
|
37
|
+
F.push(r), _(n, r, M, {
|
|
38
|
+
color: h(e, t.color),
|
|
39
|
+
curve: t.curve ?? "linear",
|
|
40
|
+
disposalSignal: c.disposalSignal,
|
|
41
|
+
fill: t.fill ?? "gradient",
|
|
42
|
+
fillOpacity: t.fillOpacity,
|
|
43
|
+
marks: t.data,
|
|
44
|
+
showLine: t.showLine !== !1,
|
|
45
45
|
transition: y.transition
|
|
46
46
|
});
|
|
47
47
|
}
|
|
48
|
-
return w?.hide(), x =
|
|
49
|
-
announcer:
|
|
48
|
+
return w?.hide(), x = p(c.chartArea, x), f({
|
|
49
|
+
announcer: c.announcer,
|
|
50
50
|
colors: () => S.map((e, t) => h(t, e.color)),
|
|
51
51
|
crosshair: b,
|
|
52
|
-
dims: () =>
|
|
52
|
+
dims: () => c.dimensions,
|
|
53
53
|
getData: () => D,
|
|
54
54
|
getPoints: () => F,
|
|
55
55
|
getSeriesList: () => S,
|
|
56
|
-
margin:
|
|
56
|
+
margin: c.dimensions.margin,
|
|
57
57
|
markers: x,
|
|
58
58
|
onClick: y.onClick,
|
|
59
59
|
onHover: y.onHover,
|
|
60
60
|
seriesGroup: v.series,
|
|
61
|
-
svg:
|
|
61
|
+
svg: c.svg,
|
|
62
62
|
tooltip: w,
|
|
63
63
|
tooltipFormat: typeof y.tooltip == "object" ? y.tooltip : void 0
|
|
64
64
|
});
|
|
@@ -66,7 +66,6 @@ function createAreaChart(v, y) {
|
|
|
66
66
|
S = e;
|
|
67
67
|
});
|
|
68
68
|
}
|
|
69
|
-
//#endregion
|
|
70
69
|
export { createAreaChart };
|
|
71
70
|
|
|
72
71
|
//# sourceMappingURL=area-chart.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
require("../../_dev.cjs");const e=require("../../
|
|
1
|
+
require("../../_dev.cjs");const e=require("../../animation/easing.cjs"),t=require("../../animation/motion.cjs"),n=require("../../animation/transition.cjs"),r=require("../../animation/tween.cjs"),i=require("../../core/datum-style.cjs"),a=require("../../core/ids.cjs"),o=require("../../svg/element.cjs"),s=require("../../svg/path.cjs");var c=new WeakMap,l=new WeakMap;function buildLinePath(e,t){return t===`monotone`?s.monotonePath(e):t===`step`?s.stepPath(e):s.linePath(e)}function applyAreaFill(e,t,n){let r=e.querySelector(`linearGradient`);if(n.fill===`gradient`){if(!r){let t=o.createSvgElement(`defs`);r=o.createSvgElement(`linearGradient`,{id:a.uniqueId(`prism-area-fill`),x1:0,x2:0,y1:0,y2:1}),r.append(o.createSvgElement(`stop`,{class:`prism-area-stop-top`,offset:0}),o.createSvgElement(`stop`,{class:`prism-area-stop-bottom`,offset:1})),t.appendChild(r),e.insertBefore(t,e.firstChild)}for(let e of r.querySelectorAll(`stop`))e.setAttribute(`stop-color`,n.color),e.style.stopColor=n.color;o.setAttributes(t,{fill:`url(#${r.id})`})}else r?.parentElement?.remove(),o.setAttributes(t,{fill:n.color});o.setAttributes(t,{class:`prism-area-fill prism-area-fill--${n.fill}`,stroke:`none`}),t.style.fillOpacity=n.fillOpacity===void 0?``:String(n.fillOpacity)}function renderArea(a,u,d,f){let p=t.resolveMotion(f.transition),m=p.duration,h=e.resolveEasing(p.easing),g=a.querySelector(`.prism-area-fill`);g||(g=o.createSvgElement(`path`,{class:`prism-area-fill`}),a.appendChild(g)),applyAreaFill(a,g,f);let _=null,v=[],y=[],b=i.hasStyledRuns(f.marks),x=f.marks??[];if(f.showLine){if(b){v=i.computeStyleRuns(x,u.length);let e=[...a.querySelectorAll(`.prism-area-line`)];for(let t of e.slice(v.length))t.remove();y=v.map((t,n)=>{let r=e[n];if(r)return r;let i=o.createSvgElement(`path`,{class:`prism-area-line`,fill:`none`});return a.appendChild(i),i});for(let[e,t]of v.entries())o.setAttributes(y[e],{opacity:t.opacity,stroke:f.color,"stroke-dasharray":t.dash,"stroke-width":2});_=null}else{let e=[...a.querySelectorAll(`.prism-area-line`)];for(let t of e.slice(1))t.remove();_=e[0]??null,_||(_=o.createSvgElement(`path`,{class:`prism-area-line`,fill:`none`}),a.appendChild(_)),o.setAttributes(_,{opacity:void 0,stroke:f.color,"stroke-dasharray":void 0,"stroke-width":2})}}else for(let e of a.querySelectorAll(`.prism-area-line`))e.remove();let drawLine=e=>{if(f.showLine){if(b)for(let[t,n]of v.entries())o.setAttributes(y[t],{d:buildLinePath(e.slice(n.start,n.end+1),f.curve)});else _&&o.setAttributes(_,{d:buildLinePath(e,f.curve)})}};if(m===0){let e=u.map(e=>({x:e.x,y:d}));o.setAttributes(g,{d:s.areaPath(u,e,f.curve)}),drawLine(u),l.set(a,u);return}c.get(a)?.();let S=l.has(a)?l.get(a)??u:u.map(e=>({x:e.x,y:d})),C=u.map((e,t)=>S[t]??S[S.length-1]??u[t]),paintFrame=e=>{let t=u.map((t,n)=>({x:r.tweenNumber(C[n].x,t.x,e),y:r.tweenNumber(C[n].y,t.y,e)})),n=t.map(e=>({x:e.x,y:d}));l.set(a,t),o.setAttributes(g,{d:s.areaPath(t,n,f.curve)}),drawLine(t)};paintFrame(0),c.set(a,n.startTween({count:1,duration:m,easing:h,onComplete:()=>{c.delete(a),l.set(a,u)},onFrame:e=>paintFrame(e(0)),signal:f.disposalSignal}))}function computeAreaPoints(e,t,n){return e.some(e=>e.key==null)||e.some(e=>typeof e.key==`string`),e.map(e=>({x:t.map(e.key),y:n.map(e.value)}))}exports.computeAreaPoints=computeAreaPoints,exports.renderArea=renderArea;
|
|
2
2
|
//# sourceMappingURL=area-renderer.cjs.map
|