@vielzeug/prism 2.1.2 → 2.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/dist/animation/index.d.ts +1 -1
  2. package/dist/animation/index.d.ts.map +1 -1
  3. package/dist/animation/tween.cjs.map +1 -1
  4. package/dist/animation/tween.d.ts +0 -1
  5. package/dist/animation/tween.d.ts.map +1 -1
  6. package/dist/animation/tween.js.map +1 -1
  7. package/dist/charts/pie/pie-chart.cjs +1 -1
  8. package/dist/charts/pie/pie-chart.cjs.map +1 -1
  9. package/dist/charts/pie/pie-chart.d.ts.map +1 -1
  10. package/dist/charts/pie/pie-chart.js +0 -1
  11. package/dist/charts/pie/pie-chart.js.map +1 -1
  12. package/dist/charts/sparkline/sparkline.cjs +1 -1
  13. package/dist/charts/sparkline/sparkline.cjs.map +1 -1
  14. package/dist/charts/sparkline/sparkline.js +1 -1
  15. package/dist/charts/sparkline/sparkline.js.map +1 -1
  16. package/dist/core/chart-base.cjs +1 -1
  17. package/dist/core/chart-base.cjs.map +1 -1
  18. package/dist/core/chart-base.d.ts +0 -1
  19. package/dist/core/chart-base.d.ts.map +1 -1
  20. package/dist/core/chart-base.js +1 -1
  21. package/dist/core/chart-base.js.map +1 -1
  22. package/dist/core/chart-scaffold.cjs +1 -1
  23. package/dist/core/chart-scaffold.cjs.map +1 -1
  24. package/dist/core/chart-scaffold.js +0 -1
  25. package/dist/core/chart-scaffold.js.map +1 -1
  26. package/dist/errors.cjs +1 -1
  27. package/dist/errors.cjs.map +1 -1
  28. package/dist/errors.d.ts +0 -8
  29. package/dist/errors.d.ts.map +1 -1
  30. package/dist/errors.js +3 -6
  31. package/dist/errors.js.map +1 -1
  32. package/dist/index.cjs +1 -1
  33. package/dist/index.d.ts +1 -1
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +9 -9
  36. package/dist/interaction/index.d.ts +0 -1
  37. package/dist/interaction/index.d.ts.map +1 -1
  38. package/dist/prism.cjs +1 -1
  39. package/dist/prism.cjs.map +1 -1
  40. package/dist/prism.iife.js +1 -1
  41. package/dist/prism.iife.js.map +1 -1
  42. package/dist/prism.js +1 -1
  43. package/dist/prism.js.map +1 -1
  44. package/dist/scales/band.cjs.map +1 -1
  45. package/dist/scales/band.d.ts +2 -1
  46. package/dist/scales/band.d.ts.map +1 -1
  47. package/dist/scales/band.js.map +1 -1
  48. package/dist/scales/types.d.ts +0 -1
  49. package/dist/scales/types.d.ts.map +1 -1
  50. package/dist/svg/index.d.ts +1 -1
  51. package/dist/svg/index.d.ts.map +1 -1
  52. package/dist/svg/text.cjs.map +1 -1
  53. package/dist/svg/text.d.ts +0 -5
  54. package/dist/svg/text.d.ts.map +1 -1
  55. package/dist/svg/text.js.map +1 -1
  56. package/dist/types.d.ts +3 -3
  57. package/dist/types.d.ts.map +1 -1
  58. package/package.json +5 -5
  59. package/dist/axes/types.d.ts +0 -2
  60. package/dist/axes/types.d.ts.map +0 -1
  61. package/dist/charts/area/area-types.d.ts +0 -2
  62. package/dist/charts/area/area-types.d.ts.map +0 -1
  63. package/dist/charts/bar/bar-types.d.ts +0 -2
  64. package/dist/charts/bar/bar-types.d.ts.map +0 -1
  65. package/dist/charts/index.d.ts +0 -6
  66. package/dist/charts/index.d.ts.map +0 -1
  67. package/dist/charts/line/line-types.d.ts +0 -2
  68. package/dist/charts/line/line-types.d.ts.map +0 -1
  69. package/dist/interaction/hit-test.d.ts +0 -3
  70. package/dist/interaction/hit-test.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"chart-scaffold.cjs","names":[],"sources":["../../src/core/chart-scaffold.ts"],"sourcesContent":["import type { Readable } from '@vielzeug/ripple';\n\nimport { createScope, effect } from '@vielzeug/ripple';\nimport { error } from '../_dev';\nimport type { CrosshairState } from '../interaction/crosshair';\nimport type { LegendState } from '../interaction/legend';\nimport { createLegend } from '../interaction/legend';\nimport type { TooltipState } from '../interaction/tooltip';\nimport { createTooltip } from '../interaction/tooltip';\nimport { createSvgElement, removeChildren } from '../svg/element';\nimport type { BaseChartConfig, ChartDimensions, ChartHandle, ChartPlugin, ChartPluginContext } from '../types';\nimport { createChartBase } from './chart-base';\n\nexport interface ScaffoldGroups {\n grid: SVGGElement;\n series: SVGGElement;\n xAxis: SVGGElement;\n yAxis: SVGGElement;\n}\n\n/**\n * Clears a cartesian chart's series/grid/axis groups and hides its legend/tooltip/crosshair —\n * shared by every cartesian chart factory's \"no data\" early-return so a reactive series\n * transitioning to empty leaves a fully blank chart, not a half-cleared one.\n */\nexport function clearCartesianDom(\n groups: ScaffoldGroups,\n legend: LegendState | null,\n tooltip: TooltipState | null,\n crosshair?: CrosshairState | null,\n): void {\n removeChildren(groups.series);\n removeChildren(groups.grid);\n removeChildren(groups.xAxis);\n removeChildren(groups.yAxis);\n legend?.update([]);\n tooltip?.hide();\n crosshair?.hide();\n}\n\nexport interface ScaffoldContext {\n chartArea: SVGGElement;\n container: HTMLElement;\n dimensions: Readable<ChartDimensions>;\n /** Aborted when the chart is disposed — renderers use this to stop rescheduling in-flight `requestAnimationFrame` transitions. */\n disposalSignal: AbortSignal;\n groups: ScaffoldGroups;\n legend: LegendState | null;\n svg: SVGSVGElement;\n tooltip: TooltipState | null;\n}\n\nexport interface RadialScaffoldContext {\n container: HTMLElement;\n dimensions: Readable<ChartDimensions>;\n /** Aborted when the chart is disposed — renderers use this to stop rescheduling in-flight `requestAnimationFrame` transitions. */\n disposalSignal: AbortSignal;\n legend: LegendState | null;\n svg: SVGSVGElement;\n tooltip: TooltipState | null;\n}\n\nexport interface ChartEventHandlers {\n onClick?: (event: MouseEvent) => void;\n onKeyDown?: (event: KeyboardEvent) => void;\n onMouseLeave?: (event: MouseEvent) => void;\n onMouseMove?: (event: MouseEvent) => void;\n}\n\nfunction runScaffold<TCtx>(\n container: HTMLElement,\n config: BaseChartConfig,\n buildCtx: (\n base: {\n chartArea: SVGGElement;\n dimensions: Readable<ChartDimensions>;\n svg: SVGSVGElement;\n },\n tooltip: TooltipState | null,\n legend: LegendState | null,\n disposalSignal: AbortSignal,\n ) => TCtx,\n renderFn: (ctx: TCtx) => ChartEventHandlers | undefined,\n): ChartHandle {\n const base = createChartBase(container, { a11y: config.a11y, ariaLabel: config.ariaLabel, margin: config.margin });\n const tooltip = config.tooltip ? createTooltip(container, config.tooltip) : null;\n const legend = config.legend ? createLegend(container, config.legend) : null;\n const ac = new AbortController();\n const ctx = buildCtx(base, tooltip, legend, ac.signal);\n\n let disposed = false;\n const events = makeEventManager(base.svg);\n\n const scope = createScope();\n\n scope.run(() => {\n effect(\n () => {\n if (disposed) return;\n\n events.attach(renderFn(ctx));\n },\n { scheduler: 'microtask' },\n );\n });\n\n const installedPlugins: ChartPlugin[] = [];\n\n if (config.plugins) {\n const pluginCtx: ChartPluginContext = {\n container,\n dimensions: base.dimensions,\n disposalSignal: ac.signal,\n svg: base.svg,\n };\n\n for (const plugin of config.plugins) {\n try {\n plugin.install(pluginCtx);\n installedPlugins.push(plugin);\n } catch (err) {\n error('A chart plugin threw during install() — skipping it; the rest of the chart still renders.', err);\n }\n }\n }\n\n return {\n get disposalSignal(): AbortSignal {\n return ac.signal;\n },\n\n dispose() {\n if (disposed) return;\n\n disposed = true;\n ac.abort();\n events.detach();\n\n for (const p of installedPlugins) {\n try {\n p.dispose();\n } catch (err) {\n error('A chart plugin threw during dispose() — continuing to tear down the rest of the chart.', err);\n }\n }\n\n tooltip?.dispose();\n legend?.dispose();\n scope.dispose();\n base.dispose();\n },\n\n get disposed(): boolean {\n return disposed;\n },\n\n el: base.svg,\n\n [Symbol.dispose]() {\n this.dispose();\n },\n };\n}\n\nfunction makeEventManager(svg: SVGSVGElement): {\n attach(handlers: ChartEventHandlers | undefined): void;\n detach(): void;\n} {\n let active: ChartEventHandlers | null = null;\n\n return {\n attach(handlers) {\n if (active) {\n if (active.onMouseMove) svg.removeEventListener('mousemove', active.onMouseMove);\n\n if (active.onMouseLeave) svg.removeEventListener('mouseleave', active.onMouseLeave);\n\n if (active.onClick) svg.removeEventListener('click', active.onClick);\n\n if (active.onKeyDown) svg.removeEventListener('keydown', active.onKeyDown);\n\n active = null;\n }\n\n if (!handlers) return;\n\n active = handlers;\n\n if (handlers.onMouseMove) svg.addEventListener('mousemove', handlers.onMouseMove);\n\n if (handlers.onMouseLeave) svg.addEventListener('mouseleave', handlers.onMouseLeave);\n\n if (handlers.onClick) svg.addEventListener('click', handlers.onClick);\n\n if (handlers.onKeyDown) svg.addEventListener('keydown', handlers.onKeyDown);\n },\n detach() {\n this.attach(undefined);\n },\n };\n}\n\n/**\n * Cartesian scaffold: provides grid/axis/series SVG groups and a reactive\n * render loop. `renderFn` is called inside a reactive effect; it returns\n * optional `ChartEventHandlers` that are attached/replaced on every render.\n */\nexport function createChartScaffold(\n container: HTMLElement,\n config: BaseChartConfig,\n renderFn: (ctx: ScaffoldContext) => ChartEventHandlers | undefined,\n): ChartHandle {\n return runScaffold(\n container,\n config,\n (base, tooltip, legend, disposalSignal) => {\n const groups: ScaffoldGroups = {\n // Grid lines are purely decorative relative to the root svg's own role=\"img\"/aria-label.\n // Axis groups are NOT hidden wholesale — they can contain a meaningful `.prism-axis-title`;\n // `renderAxis` marks its own decorative tick lines/labels individually instead.\n grid: createSvgElement('g', { 'aria-hidden': 'true', class: 'prism-grid' }),\n series: createSvgElement('g', { class: 'prism-series' }),\n xAxis: createSvgElement('g', { class: 'prism-x-axis' }),\n yAxis: createSvgElement('g', { class: 'prism-y-axis' }),\n };\n\n base.chartArea.appendChild(groups.grid);\n base.chartArea.appendChild(groups.xAxis);\n base.chartArea.appendChild(groups.yAxis);\n base.chartArea.appendChild(groups.series);\n\n return {\n chartArea: base.chartArea,\n container,\n dimensions: base.dimensions,\n disposalSignal,\n groups,\n legend,\n svg: base.svg,\n tooltip,\n } satisfies ScaffoldContext;\n },\n renderFn,\n );\n}\n\n/**\n * Radial scaffold: for charts that do not use cartesian axis groups\n * (pie, donut, semi). Provides only tooltip, legend, and the SVG root.\n */\nexport function createRadialScaffold(\n container: HTMLElement,\n config: BaseChartConfig,\n renderFn: (ctx: RadialScaffoldContext) => ChartEventHandlers | undefined,\n): ChartHandle {\n return runScaffold(\n container,\n config,\n (base, tooltip, legend, disposalSignal) =>\n ({\n container,\n dimensions: base.dimensions,\n disposalSignal,\n legend,\n svg: base.svg,\n tooltip,\n }) satisfies RadialScaffoldContext,\n renderFn,\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"chart-scaffold.cjs","names":[],"sources":["../../src/core/chart-scaffold.ts"],"sourcesContent":["import type { Readable } from '@vielzeug/ripple';\n\nimport { createScope, effect } from '@vielzeug/ripple';\nimport { error } from '../_dev';\nimport type { CrosshairState } from '../interaction/crosshair';\nimport type { LegendState } from '../interaction/legend';\nimport { createLegend } from '../interaction/legend';\nimport type { TooltipState } from '../interaction/tooltip';\nimport { createTooltip } from '../interaction/tooltip';\nimport { createSvgElement, removeChildren } from '../svg/element';\nimport type { BaseChartConfig, ChartDimensions, ChartHandle, ChartPlugin, ChartPluginContext } from '../types';\nimport { createChartBase } from './chart-base';\n\nexport interface ScaffoldGroups {\n grid: SVGGElement;\n series: SVGGElement;\n xAxis: SVGGElement;\n yAxis: SVGGElement;\n}\n\n/**\n * Clears a cartesian chart's series/grid/axis groups and hides its legend/tooltip/crosshair —\n * shared by every cartesian chart factory's \"no data\" early-return so a reactive series\n * transitioning to empty leaves a fully blank chart, not a half-cleared one.\n */\nexport function clearCartesianDom(\n groups: ScaffoldGroups,\n legend: LegendState | null,\n tooltip: TooltipState | null,\n crosshair?: CrosshairState | null,\n): void {\n removeChildren(groups.series);\n removeChildren(groups.grid);\n removeChildren(groups.xAxis);\n removeChildren(groups.yAxis);\n legend?.update([]);\n tooltip?.hide();\n crosshair?.hide();\n}\n\nexport interface ScaffoldContext {\n chartArea: SVGGElement;\n container: HTMLElement;\n dimensions: Readable<ChartDimensions>;\n /** Aborted when the chart is disposed — renderers use this to stop rescheduling in-flight `requestAnimationFrame` transitions. */\n disposalSignal: AbortSignal;\n groups: ScaffoldGroups;\n legend: LegendState | null;\n svg: SVGSVGElement;\n tooltip: TooltipState | null;\n}\n\nexport interface RadialScaffoldContext {\n container: HTMLElement;\n dimensions: Readable<ChartDimensions>;\n /** Aborted when the chart is disposed — renderers use this to stop rescheduling in-flight `requestAnimationFrame` transitions. */\n disposalSignal: AbortSignal;\n legend: LegendState | null;\n svg: SVGSVGElement;\n tooltip: TooltipState | null;\n}\n\nexport interface ChartEventHandlers {\n onClick?: (event: MouseEvent) => void;\n onKeyDown?: (event: KeyboardEvent) => void;\n onMouseLeave?: (event: MouseEvent) => void;\n onMouseMove?: (event: MouseEvent) => void;\n}\n\nfunction runScaffold<TCtx>(\n container: HTMLElement,\n config: BaseChartConfig,\n buildCtx: (\n base: {\n chartArea: SVGGElement;\n dimensions: Readable<ChartDimensions>;\n svg: SVGSVGElement;\n },\n tooltip: TooltipState | null,\n legend: LegendState | null,\n disposalSignal: AbortSignal,\n ) => TCtx,\n renderFn: (ctx: TCtx) => ChartEventHandlers | undefined,\n): ChartHandle {\n const base = createChartBase(container, { a11y: config.a11y, margin: config.margin });\n const tooltip = config.tooltip ? createTooltip(container, config.tooltip) : null;\n const legend = config.legend ? createLegend(container, config.legend) : null;\n const ac = new AbortController();\n const ctx = buildCtx(base, tooltip, legend, ac.signal);\n\n let disposed = false;\n const events = makeEventManager(base.svg);\n\n const scope = createScope();\n\n scope.run(() => {\n effect(\n () => {\n if (disposed) return;\n\n events.attach(renderFn(ctx));\n },\n { scheduler: 'microtask' },\n );\n });\n\n const installedPlugins: ChartPlugin[] = [];\n\n if (config.plugins) {\n const pluginCtx: ChartPluginContext = {\n container,\n dimensions: base.dimensions,\n disposalSignal: ac.signal,\n svg: base.svg,\n };\n\n for (const plugin of config.plugins) {\n try {\n plugin.install(pluginCtx);\n installedPlugins.push(plugin);\n } catch (err) {\n error('A chart plugin threw during install() — skipping it; the rest of the chart still renders.', err);\n }\n }\n }\n\n return {\n get disposalSignal(): AbortSignal {\n return ac.signal;\n },\n\n dispose() {\n if (disposed) return;\n\n disposed = true;\n ac.abort();\n events.detach();\n\n for (const p of installedPlugins) {\n try {\n p.dispose();\n } catch (err) {\n error('A chart plugin threw during dispose() — continuing to tear down the rest of the chart.', err);\n }\n }\n\n tooltip?.dispose();\n legend?.dispose();\n scope.dispose();\n base.dispose();\n },\n\n get disposed(): boolean {\n return disposed;\n },\n\n el: base.svg,\n\n [Symbol.dispose]() {\n this.dispose();\n },\n };\n}\n\nfunction makeEventManager(svg: SVGSVGElement): {\n attach(handlers: ChartEventHandlers | undefined): void;\n detach(): void;\n} {\n let active: ChartEventHandlers | null = null;\n\n return {\n attach(handlers) {\n if (active) {\n if (active.onMouseMove) svg.removeEventListener('mousemove', active.onMouseMove);\n\n if (active.onMouseLeave) svg.removeEventListener('mouseleave', active.onMouseLeave);\n\n if (active.onClick) svg.removeEventListener('click', active.onClick);\n\n if (active.onKeyDown) svg.removeEventListener('keydown', active.onKeyDown);\n\n active = null;\n }\n\n if (!handlers) return;\n\n active = handlers;\n\n if (handlers.onMouseMove) svg.addEventListener('mousemove', handlers.onMouseMove);\n\n if (handlers.onMouseLeave) svg.addEventListener('mouseleave', handlers.onMouseLeave);\n\n if (handlers.onClick) svg.addEventListener('click', handlers.onClick);\n\n if (handlers.onKeyDown) svg.addEventListener('keydown', handlers.onKeyDown);\n },\n detach() {\n this.attach(undefined);\n },\n };\n}\n\n/**\n * Cartesian scaffold: provides grid/axis/series SVG groups and a reactive\n * render loop. `renderFn` is called inside a reactive effect; it returns\n * optional `ChartEventHandlers` that are attached/replaced on every render.\n */\nexport function createChartScaffold(\n container: HTMLElement,\n config: BaseChartConfig,\n renderFn: (ctx: ScaffoldContext) => ChartEventHandlers | undefined,\n): ChartHandle {\n return runScaffold(\n container,\n config,\n (base, tooltip, legend, disposalSignal) => {\n const groups: ScaffoldGroups = {\n // Grid lines are purely decorative relative to the root svg's own role=\"img\"/aria-label.\n // Axis groups are NOT hidden wholesale — they can contain a meaningful `.prism-axis-title`;\n // `renderAxis` marks its own decorative tick lines/labels individually instead.\n grid: createSvgElement('g', { 'aria-hidden': 'true', class: 'prism-grid' }),\n series: createSvgElement('g', { class: 'prism-series' }),\n xAxis: createSvgElement('g', { class: 'prism-x-axis' }),\n yAxis: createSvgElement('g', { class: 'prism-y-axis' }),\n };\n\n base.chartArea.appendChild(groups.grid);\n base.chartArea.appendChild(groups.xAxis);\n base.chartArea.appendChild(groups.yAxis);\n base.chartArea.appendChild(groups.series);\n\n return {\n chartArea: base.chartArea,\n container,\n dimensions: base.dimensions,\n disposalSignal,\n groups,\n legend,\n svg: base.svg,\n tooltip,\n } satisfies ScaffoldContext;\n },\n renderFn,\n );\n}\n\n/**\n * Radial scaffold: for charts that do not use cartesian axis groups\n * (pie, donut, semi). Provides only tooltip, legend, and the SVG root.\n */\nexport function createRadialScaffold(\n container: HTMLElement,\n config: BaseChartConfig,\n renderFn: (ctx: RadialScaffoldContext) => ChartEventHandlers | undefined,\n): ChartHandle {\n return runScaffold(\n container,\n config,\n (base, tooltip, legend, disposalSignal) =>\n ({\n container,\n dimensions: base.dimensions,\n disposalSignal,\n legend,\n svg: base.svg,\n tooltip,\n }) satisfies RadialScaffoldContext,\n renderFn,\n );\n}\n"],"mappings":"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"}
@@ -11,7 +11,6 @@ function s(e, n, r, i) {
11
11
  function c(e, t, s, c) {
12
12
  let u = i(e, {
13
13
  a11y: t.a11y,
14
- ariaLabel: t.ariaLabel,
15
14
  margin: t.margin
16
15
  }), d = t.tooltip ? r(e, t.tooltip) : null, f = t.legend ? n(e, t.legend) : null, p = new AbortController(), m = s(u, d, f, p.signal), h = !1, g = l(u.svg), _ = a();
17
16
  _.run(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"chart-scaffold.js","names":[],"sources":["../../src/core/chart-scaffold.ts"],"sourcesContent":["import type { Readable } from '@vielzeug/ripple';\n\nimport { createScope, effect } from '@vielzeug/ripple';\nimport { error } from '../_dev';\nimport type { CrosshairState } from '../interaction/crosshair';\nimport type { LegendState } from '../interaction/legend';\nimport { createLegend } from '../interaction/legend';\nimport type { TooltipState } from '../interaction/tooltip';\nimport { createTooltip } from '../interaction/tooltip';\nimport { createSvgElement, removeChildren } from '../svg/element';\nimport type { BaseChartConfig, ChartDimensions, ChartHandle, ChartPlugin, ChartPluginContext } from '../types';\nimport { createChartBase } from './chart-base';\n\nexport interface ScaffoldGroups {\n grid: SVGGElement;\n series: SVGGElement;\n xAxis: SVGGElement;\n yAxis: SVGGElement;\n}\n\n/**\n * Clears a cartesian chart's series/grid/axis groups and hides its legend/tooltip/crosshair —\n * shared by every cartesian chart factory's \"no data\" early-return so a reactive series\n * transitioning to empty leaves a fully blank chart, not a half-cleared one.\n */\nexport function clearCartesianDom(\n groups: ScaffoldGroups,\n legend: LegendState | null,\n tooltip: TooltipState | null,\n crosshair?: CrosshairState | null,\n): void {\n removeChildren(groups.series);\n removeChildren(groups.grid);\n removeChildren(groups.xAxis);\n removeChildren(groups.yAxis);\n legend?.update([]);\n tooltip?.hide();\n crosshair?.hide();\n}\n\nexport interface ScaffoldContext {\n chartArea: SVGGElement;\n container: HTMLElement;\n dimensions: Readable<ChartDimensions>;\n /** Aborted when the chart is disposed — renderers use this to stop rescheduling in-flight `requestAnimationFrame` transitions. */\n disposalSignal: AbortSignal;\n groups: ScaffoldGroups;\n legend: LegendState | null;\n svg: SVGSVGElement;\n tooltip: TooltipState | null;\n}\n\nexport interface RadialScaffoldContext {\n container: HTMLElement;\n dimensions: Readable<ChartDimensions>;\n /** Aborted when the chart is disposed — renderers use this to stop rescheduling in-flight `requestAnimationFrame` transitions. */\n disposalSignal: AbortSignal;\n legend: LegendState | null;\n svg: SVGSVGElement;\n tooltip: TooltipState | null;\n}\n\nexport interface ChartEventHandlers {\n onClick?: (event: MouseEvent) => void;\n onKeyDown?: (event: KeyboardEvent) => void;\n onMouseLeave?: (event: MouseEvent) => void;\n onMouseMove?: (event: MouseEvent) => void;\n}\n\nfunction runScaffold<TCtx>(\n container: HTMLElement,\n config: BaseChartConfig,\n buildCtx: (\n base: {\n chartArea: SVGGElement;\n dimensions: Readable<ChartDimensions>;\n svg: SVGSVGElement;\n },\n tooltip: TooltipState | null,\n legend: LegendState | null,\n disposalSignal: AbortSignal,\n ) => TCtx,\n renderFn: (ctx: TCtx) => ChartEventHandlers | undefined,\n): ChartHandle {\n const base = createChartBase(container, { a11y: config.a11y, ariaLabel: config.ariaLabel, margin: config.margin });\n const tooltip = config.tooltip ? createTooltip(container, config.tooltip) : null;\n const legend = config.legend ? createLegend(container, config.legend) : null;\n const ac = new AbortController();\n const ctx = buildCtx(base, tooltip, legend, ac.signal);\n\n let disposed = false;\n const events = makeEventManager(base.svg);\n\n const scope = createScope();\n\n scope.run(() => {\n effect(\n () => {\n if (disposed) return;\n\n events.attach(renderFn(ctx));\n },\n { scheduler: 'microtask' },\n );\n });\n\n const installedPlugins: ChartPlugin[] = [];\n\n if (config.plugins) {\n const pluginCtx: ChartPluginContext = {\n container,\n dimensions: base.dimensions,\n disposalSignal: ac.signal,\n svg: base.svg,\n };\n\n for (const plugin of config.plugins) {\n try {\n plugin.install(pluginCtx);\n installedPlugins.push(plugin);\n } catch (err) {\n error('A chart plugin threw during install() — skipping it; the rest of the chart still renders.', err);\n }\n }\n }\n\n return {\n get disposalSignal(): AbortSignal {\n return ac.signal;\n },\n\n dispose() {\n if (disposed) return;\n\n disposed = true;\n ac.abort();\n events.detach();\n\n for (const p of installedPlugins) {\n try {\n p.dispose();\n } catch (err) {\n error('A chart plugin threw during dispose() — continuing to tear down the rest of the chart.', err);\n }\n }\n\n tooltip?.dispose();\n legend?.dispose();\n scope.dispose();\n base.dispose();\n },\n\n get disposed(): boolean {\n return disposed;\n },\n\n el: base.svg,\n\n [Symbol.dispose]() {\n this.dispose();\n },\n };\n}\n\nfunction makeEventManager(svg: SVGSVGElement): {\n attach(handlers: ChartEventHandlers | undefined): void;\n detach(): void;\n} {\n let active: ChartEventHandlers | null = null;\n\n return {\n attach(handlers) {\n if (active) {\n if (active.onMouseMove) svg.removeEventListener('mousemove', active.onMouseMove);\n\n if (active.onMouseLeave) svg.removeEventListener('mouseleave', active.onMouseLeave);\n\n if (active.onClick) svg.removeEventListener('click', active.onClick);\n\n if (active.onKeyDown) svg.removeEventListener('keydown', active.onKeyDown);\n\n active = null;\n }\n\n if (!handlers) return;\n\n active = handlers;\n\n if (handlers.onMouseMove) svg.addEventListener('mousemove', handlers.onMouseMove);\n\n if (handlers.onMouseLeave) svg.addEventListener('mouseleave', handlers.onMouseLeave);\n\n if (handlers.onClick) svg.addEventListener('click', handlers.onClick);\n\n if (handlers.onKeyDown) svg.addEventListener('keydown', handlers.onKeyDown);\n },\n detach() {\n this.attach(undefined);\n },\n };\n}\n\n/**\n * Cartesian scaffold: provides grid/axis/series SVG groups and a reactive\n * render loop. `renderFn` is called inside a reactive effect; it returns\n * optional `ChartEventHandlers` that are attached/replaced on every render.\n */\nexport function createChartScaffold(\n container: HTMLElement,\n config: BaseChartConfig,\n renderFn: (ctx: ScaffoldContext) => ChartEventHandlers | undefined,\n): ChartHandle {\n return runScaffold(\n container,\n config,\n (base, tooltip, legend, disposalSignal) => {\n const groups: ScaffoldGroups = {\n // Grid lines are purely decorative relative to the root svg's own role=\"img\"/aria-label.\n // Axis groups are NOT hidden wholesale — they can contain a meaningful `.prism-axis-title`;\n // `renderAxis` marks its own decorative tick lines/labels individually instead.\n grid: createSvgElement('g', { 'aria-hidden': 'true', class: 'prism-grid' }),\n series: createSvgElement('g', { class: 'prism-series' }),\n xAxis: createSvgElement('g', { class: 'prism-x-axis' }),\n yAxis: createSvgElement('g', { class: 'prism-y-axis' }),\n };\n\n base.chartArea.appendChild(groups.grid);\n base.chartArea.appendChild(groups.xAxis);\n base.chartArea.appendChild(groups.yAxis);\n base.chartArea.appendChild(groups.series);\n\n return {\n chartArea: base.chartArea,\n container,\n dimensions: base.dimensions,\n disposalSignal,\n groups,\n legend,\n svg: base.svg,\n tooltip,\n } satisfies ScaffoldContext;\n },\n renderFn,\n );\n}\n\n/**\n * Radial scaffold: for charts that do not use cartesian axis groups\n * (pie, donut, semi). Provides only tooltip, legend, and the SVG root.\n */\nexport function createRadialScaffold(\n container: HTMLElement,\n config: BaseChartConfig,\n renderFn: (ctx: RadialScaffoldContext) => ChartEventHandlers | undefined,\n): ChartHandle {\n return runScaffold(\n container,\n config,\n (base, tooltip, legend, disposalSignal) =>\n ({\n container,\n dimensions: base.dimensions,\n disposalSignal,\n legend,\n svg: base.svg,\n tooltip,\n }) satisfies RadialScaffoldContext,\n renderFn,\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"chart-scaffold.js","names":[],"sources":["../../src/core/chart-scaffold.ts"],"sourcesContent":["import type { Readable } from '@vielzeug/ripple';\n\nimport { createScope, effect } from '@vielzeug/ripple';\nimport { error } from '../_dev';\nimport type { CrosshairState } from '../interaction/crosshair';\nimport type { LegendState } from '../interaction/legend';\nimport { createLegend } from '../interaction/legend';\nimport type { TooltipState } from '../interaction/tooltip';\nimport { createTooltip } from '../interaction/tooltip';\nimport { createSvgElement, removeChildren } from '../svg/element';\nimport type { BaseChartConfig, ChartDimensions, ChartHandle, ChartPlugin, ChartPluginContext } from '../types';\nimport { createChartBase } from './chart-base';\n\nexport interface ScaffoldGroups {\n grid: SVGGElement;\n series: SVGGElement;\n xAxis: SVGGElement;\n yAxis: SVGGElement;\n}\n\n/**\n * Clears a cartesian chart's series/grid/axis groups and hides its legend/tooltip/crosshair —\n * shared by every cartesian chart factory's \"no data\" early-return so a reactive series\n * transitioning to empty leaves a fully blank chart, not a half-cleared one.\n */\nexport function clearCartesianDom(\n groups: ScaffoldGroups,\n legend: LegendState | null,\n tooltip: TooltipState | null,\n crosshair?: CrosshairState | null,\n): void {\n removeChildren(groups.series);\n removeChildren(groups.grid);\n removeChildren(groups.xAxis);\n removeChildren(groups.yAxis);\n legend?.update([]);\n tooltip?.hide();\n crosshair?.hide();\n}\n\nexport interface ScaffoldContext {\n chartArea: SVGGElement;\n container: HTMLElement;\n dimensions: Readable<ChartDimensions>;\n /** Aborted when the chart is disposed — renderers use this to stop rescheduling in-flight `requestAnimationFrame` transitions. */\n disposalSignal: AbortSignal;\n groups: ScaffoldGroups;\n legend: LegendState | null;\n svg: SVGSVGElement;\n tooltip: TooltipState | null;\n}\n\nexport interface RadialScaffoldContext {\n container: HTMLElement;\n dimensions: Readable<ChartDimensions>;\n /** Aborted when the chart is disposed — renderers use this to stop rescheduling in-flight `requestAnimationFrame` transitions. */\n disposalSignal: AbortSignal;\n legend: LegendState | null;\n svg: SVGSVGElement;\n tooltip: TooltipState | null;\n}\n\nexport interface ChartEventHandlers {\n onClick?: (event: MouseEvent) => void;\n onKeyDown?: (event: KeyboardEvent) => void;\n onMouseLeave?: (event: MouseEvent) => void;\n onMouseMove?: (event: MouseEvent) => void;\n}\n\nfunction runScaffold<TCtx>(\n container: HTMLElement,\n config: BaseChartConfig,\n buildCtx: (\n base: {\n chartArea: SVGGElement;\n dimensions: Readable<ChartDimensions>;\n svg: SVGSVGElement;\n },\n tooltip: TooltipState | null,\n legend: LegendState | null,\n disposalSignal: AbortSignal,\n ) => TCtx,\n renderFn: (ctx: TCtx) => ChartEventHandlers | undefined,\n): ChartHandle {\n const base = createChartBase(container, { a11y: config.a11y, margin: config.margin });\n const tooltip = config.tooltip ? createTooltip(container, config.tooltip) : null;\n const legend = config.legend ? createLegend(container, config.legend) : null;\n const ac = new AbortController();\n const ctx = buildCtx(base, tooltip, legend, ac.signal);\n\n let disposed = false;\n const events = makeEventManager(base.svg);\n\n const scope = createScope();\n\n scope.run(() => {\n effect(\n () => {\n if (disposed) return;\n\n events.attach(renderFn(ctx));\n },\n { scheduler: 'microtask' },\n );\n });\n\n const installedPlugins: ChartPlugin[] = [];\n\n if (config.plugins) {\n const pluginCtx: ChartPluginContext = {\n container,\n dimensions: base.dimensions,\n disposalSignal: ac.signal,\n svg: base.svg,\n };\n\n for (const plugin of config.plugins) {\n try {\n plugin.install(pluginCtx);\n installedPlugins.push(plugin);\n } catch (err) {\n error('A chart plugin threw during install() — skipping it; the rest of the chart still renders.', err);\n }\n }\n }\n\n return {\n get disposalSignal(): AbortSignal {\n return ac.signal;\n },\n\n dispose() {\n if (disposed) return;\n\n disposed = true;\n ac.abort();\n events.detach();\n\n for (const p of installedPlugins) {\n try {\n p.dispose();\n } catch (err) {\n error('A chart plugin threw during dispose() — continuing to tear down the rest of the chart.', err);\n }\n }\n\n tooltip?.dispose();\n legend?.dispose();\n scope.dispose();\n base.dispose();\n },\n\n get disposed(): boolean {\n return disposed;\n },\n\n el: base.svg,\n\n [Symbol.dispose]() {\n this.dispose();\n },\n };\n}\n\nfunction makeEventManager(svg: SVGSVGElement): {\n attach(handlers: ChartEventHandlers | undefined): void;\n detach(): void;\n} {\n let active: ChartEventHandlers | null = null;\n\n return {\n attach(handlers) {\n if (active) {\n if (active.onMouseMove) svg.removeEventListener('mousemove', active.onMouseMove);\n\n if (active.onMouseLeave) svg.removeEventListener('mouseleave', active.onMouseLeave);\n\n if (active.onClick) svg.removeEventListener('click', active.onClick);\n\n if (active.onKeyDown) svg.removeEventListener('keydown', active.onKeyDown);\n\n active = null;\n }\n\n if (!handlers) return;\n\n active = handlers;\n\n if (handlers.onMouseMove) svg.addEventListener('mousemove', handlers.onMouseMove);\n\n if (handlers.onMouseLeave) svg.addEventListener('mouseleave', handlers.onMouseLeave);\n\n if (handlers.onClick) svg.addEventListener('click', handlers.onClick);\n\n if (handlers.onKeyDown) svg.addEventListener('keydown', handlers.onKeyDown);\n },\n detach() {\n this.attach(undefined);\n },\n };\n}\n\n/**\n * Cartesian scaffold: provides grid/axis/series SVG groups and a reactive\n * render loop. `renderFn` is called inside a reactive effect; it returns\n * optional `ChartEventHandlers` that are attached/replaced on every render.\n */\nexport function createChartScaffold(\n container: HTMLElement,\n config: BaseChartConfig,\n renderFn: (ctx: ScaffoldContext) => ChartEventHandlers | undefined,\n): ChartHandle {\n return runScaffold(\n container,\n config,\n (base, tooltip, legend, disposalSignal) => {\n const groups: ScaffoldGroups = {\n // Grid lines are purely decorative relative to the root svg's own role=\"img\"/aria-label.\n // Axis groups are NOT hidden wholesale — they can contain a meaningful `.prism-axis-title`;\n // `renderAxis` marks its own decorative tick lines/labels individually instead.\n grid: createSvgElement('g', { 'aria-hidden': 'true', class: 'prism-grid' }),\n series: createSvgElement('g', { class: 'prism-series' }),\n xAxis: createSvgElement('g', { class: 'prism-x-axis' }),\n yAxis: createSvgElement('g', { class: 'prism-y-axis' }),\n };\n\n base.chartArea.appendChild(groups.grid);\n base.chartArea.appendChild(groups.xAxis);\n base.chartArea.appendChild(groups.yAxis);\n base.chartArea.appendChild(groups.series);\n\n return {\n chartArea: base.chartArea,\n container,\n dimensions: base.dimensions,\n disposalSignal,\n groups,\n legend,\n svg: base.svg,\n tooltip,\n } satisfies ScaffoldContext;\n },\n renderFn,\n );\n}\n\n/**\n * Radial scaffold: for charts that do not use cartesian axis groups\n * (pie, donut, semi). Provides only tooltip, legend, and the SVG root.\n */\nexport function createRadialScaffold(\n container: HTMLElement,\n config: BaseChartConfig,\n renderFn: (ctx: RadialScaffoldContext) => ChartEventHandlers | undefined,\n): ChartHandle {\n return runScaffold(\n container,\n config,\n (base, tooltip, legend, disposalSignal) =>\n ({\n container,\n dimensions: base.dimensions,\n disposalSignal,\n legend,\n svg: base.svg,\n tooltip,\n }) satisfies RadialScaffoldContext,\n renderFn,\n );\n}\n"],"mappings":"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"}
package/dist/errors.cjs CHANGED
@@ -1,2 +1,2 @@
1
- var e=class e extends Error{constructor(e,t){super(e,t),this.name=new.target.name,Object.setPrototypeOf(this,new.target.prototype)}static is(t){return t instanceof e}},t=class extends e{},n=class extends e{};exports.PrismDisposedError=t,exports.PrismError=e,exports.PrismRenderError=n;
1
+ var e=class extends Error{constructor(e,t){super(e,t),this.name=new.target.name,Object.setPrototypeOf(this,new.target.prototype)}},t=class extends e{};exports.PrismError=e,exports.PrismRenderError=t;
2
2
  //# sourceMappingURL=errors.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.cjs","names":[],"sources":["../src/errors.ts"],"sourcesContent":["/** Base class for all prism errors. Use `instanceof PrismError` to catch any prism-originated error. */\nexport class PrismError extends Error {\n constructor(message: string, opts?: ErrorOptions) {\n super(message, opts);\n this.name = new.target.name;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static is(err: unknown): err is PrismError {\n return err instanceof PrismError;\n }\n}\n\n/**\n * Reserved for future disposal-sensitive APIs on `ChartHandle`. Currently, calling\n * `dispose()` more than once is a documented no-op rather than an error — no code path\n * throws this yet.\n */\nexport class PrismDisposedError extends PrismError {}\n\n/** Thrown when a chart is given a structurally invalid configuration it cannot render at all (e.g. a non-Element `container`). Recoverable issues like empty or malformed data emit a dev-mode warning instead — see the package docs for details. */\nexport class PrismRenderError extends PrismError {}\n"],"mappings":"AACA,IAAa,EAAb,MAAa,UAAmB,KAAM,CACpC,YAAY,EAAiB,EAAqB,CAChD,MAAM,EAAS,CAAI,EACnB,KAAK,KAAO,WAAW,KACvB,OAAO,eAAe,KAAM,WAAW,SAAS,CAClD,CAEA,OAAO,GAAG,EAAiC,CACzC,OAAO,aAAe,CACxB,CACF,EAOa,EAAb,cAAwC,CAAW,CAAC,EAGvC,EAAb,cAAsC,CAAW,CAAC"}
1
+ {"version":3,"file":"errors.cjs","names":[],"sources":["../src/errors.ts"],"sourcesContent":["/** Base class for all prism errors. Use `instanceof PrismError` to catch any prism-originated error. */\nexport class PrismError extends Error {\n constructor(message: string, opts?: ErrorOptions) {\n super(message, opts);\n this.name = new.target.name;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n\n/** Thrown when a chart is given a structurally invalid configuration it cannot render at all (e.g. a non-Element `container`). Recoverable issues like empty or malformed data emit a dev-mode warning instead — see the package docs for details. */\nexport class PrismRenderError extends PrismError {}\n"],"mappings":"AACA,IAAa,EAAb,cAAgC,KAAM,CACpC,YAAY,EAAiB,EAAqB,CAChD,MAAM,EAAS,CAAI,EACnB,KAAK,KAAO,WAAW,KACvB,OAAO,eAAe,KAAM,WAAW,SAAS,CAClD,CACF,EAGa,EAAb,cAAsC,CAAW,CAAC"}
package/dist/errors.d.ts CHANGED
@@ -1,14 +1,6 @@
1
1
  /** Base class for all prism errors. Use `instanceof PrismError` to catch any prism-originated error. */
2
2
  export declare class PrismError extends Error {
3
3
  constructor(message: string, opts?: ErrorOptions);
4
- static is(err: unknown): err is PrismError;
5
- }
6
- /**
7
- * Reserved for future disposal-sensitive APIs on `ChartHandle`. Currently, calling
8
- * `dispose()` more than once is a documented no-op rather than an error — no code path
9
- * throws this yet.
10
- */
11
- export declare class PrismDisposedError extends PrismError {
12
4
  }
13
5
  /** Thrown when a chart is given a structurally invalid configuration it cannot render at all (e.g. a non-Element `container`). Recoverable issues like empty or malformed data emit a dev-mode warning instead — see the package docs for details. */
14
6
  export declare class PrismRenderError extends PrismError {
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,wGAAwG;AACxG,qBAAa,UAAW,SAAQ,KAAK;gBACvB,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,YAAY;IAMhD,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,UAAU;CAG3C;AAED;;;;GAIG;AACH,qBAAa,kBAAmB,SAAQ,UAAU;CAAG;AAErD,sPAAsP;AACtP,qBAAa,gBAAiB,SAAQ,UAAU;CAAG"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,wGAAwG;AACxG,qBAAa,UAAW,SAAQ,KAAK;gBACvB,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,YAAY;CAKjD;AAED,sPAAsP;AACtP,qBAAa,gBAAiB,SAAQ,UAAU;CAAG"}
package/dist/errors.js CHANGED
@@ -1,13 +1,10 @@
1
1
  //#region src/errors.ts
2
- var e = class e extends Error {
2
+ var e = class extends Error {
3
3
  constructor(e, t) {
4
4
  super(e, t), this.name = new.target.name, Object.setPrototypeOf(this, new.target.prototype);
5
5
  }
6
- static is(t) {
7
- return t instanceof e;
8
- }
9
- }, t = class extends e {}, n = class extends e {};
6
+ }, t = class extends e {};
10
7
  //#endregion
11
- export { t as PrismDisposedError, e as PrismError, n as PrismRenderError };
8
+ export { e as PrismError, t as PrismRenderError };
12
9
 
13
10
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","names":[],"sources":["../src/errors.ts"],"sourcesContent":["/** Base class for all prism errors. Use `instanceof PrismError` to catch any prism-originated error. */\nexport class PrismError extends Error {\n constructor(message: string, opts?: ErrorOptions) {\n super(message, opts);\n this.name = new.target.name;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static is(err: unknown): err is PrismError {\n return err instanceof PrismError;\n }\n}\n\n/**\n * Reserved for future disposal-sensitive APIs on `ChartHandle`. Currently, calling\n * `dispose()` more than once is a documented no-op rather than an error — no code path\n * throws this yet.\n */\nexport class PrismDisposedError extends PrismError {}\n\n/** Thrown when a chart is given a structurally invalid configuration it cannot render at all (e.g. a non-Element `container`). Recoverable issues like empty or malformed data emit a dev-mode warning instead — see the package docs for details. */\nexport class PrismRenderError extends PrismError {}\n"],"mappings":";AACA,IAAa,IAAb,MAAa,UAAmB,MAAM;CACpC,YAAY,GAAiB,GAAqB;EAGhD,AAFA,MAAM,GAAS,CAAI,GACnB,KAAK,OAAO,WAAW,MACvB,OAAO,eAAe,MAAM,WAAW,SAAS;CAClD;CAEA,OAAO,GAAG,GAAiC;EACzC,OAAO,aAAe;CACxB;AACF,GAOa,IAAb,cAAwC,EAAW,CAAC,GAGvC,IAAb,cAAsC,EAAW,CAAC"}
1
+ {"version":3,"file":"errors.js","names":[],"sources":["../src/errors.ts"],"sourcesContent":["/** Base class for all prism errors. Use `instanceof PrismError` to catch any prism-originated error. */\nexport class PrismError extends Error {\n constructor(message: string, opts?: ErrorOptions) {\n super(message, opts);\n this.name = new.target.name;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n\n/** Thrown when a chart is given a structurally invalid configuration it cannot render at all (e.g. a non-Element `container`). Recoverable issues like empty or malformed data emit a dev-mode warning instead — see the package docs for details. */\nexport class PrismRenderError extends PrismError {}\n"],"mappings":";AACA,IAAa,IAAb,cAAgC,MAAM;CACpC,YAAY,GAAiB,GAAqB;EAGhD,AAFA,MAAM,GAAS,CAAI,GACnB,KAAK,OAAO,WAAW,MACvB,OAAO,eAAe,MAAM,WAAW,SAAS;CAClD;AACF,GAGa,IAAb,cAAsC,EAAW,CAAC"}
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./animation/transition.cjs"),t=require("./scales/linear.cjs"),n=require("./scales/time.cjs"),r=require("./errors.cjs"),i=require("./theme/index.cjs"),a=require("./charts/area/area-chart.cjs"),o=require("./scales/band.cjs"),s=require("./charts/bar/bar-chart.cjs"),c=require("./charts/line/line-chart.cjs"),l=require("./charts/pie/pie-chart.cjs"),u=require("./charts/sparkline/sparkline.cjs");exports.PrismDisposedError=r.PrismDisposedError,exports.PrismError=r.PrismError,exports.PrismRenderError=r.PrismRenderError,exports.animate=e.animate,exports.bandScale=o.bandScale,exports.createAreaChart=a.createAreaChart,exports.createBarChart=s.createBarChart,exports.createLineChart=c.createLineChart,exports.createPieChart=l.createPieChart,exports.createSparkline=u.createSparkline,exports.linearScale=t.linearScale,exports.resetTheme=i.resetTheme,exports.seriesColor=i.seriesColor,exports.setTheme=i.setTheme,exports.timeScale=n.timeScale;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./animation/transition.cjs"),t=require("./scales/linear.cjs"),n=require("./scales/time.cjs"),r=require("./errors.cjs"),i=require("./theme/index.cjs"),a=require("./charts/area/area-chart.cjs"),o=require("./scales/band.cjs"),s=require("./charts/bar/bar-chart.cjs"),c=require("./charts/line/line-chart.cjs"),l=require("./charts/pie/pie-chart.cjs"),u=require("./charts/sparkline/sparkline.cjs");exports.PrismError=r.PrismError,exports.PrismRenderError=r.PrismRenderError,exports.animate=e.animate,exports.bandScale=o.bandScale,exports.createAreaChart=a.createAreaChart,exports.createBarChart=s.createBarChart,exports.createLineChart=c.createLineChart,exports.createPieChart=l.createPieChart,exports.createSparkline=u.createSparkline,exports.linearScale=t.linearScale,exports.resetTheme=i.resetTheme,exports.seriesColor=i.seriesColor,exports.setTheme=i.setTheme,exports.timeScale=n.timeScale;
package/dist/index.d.ts CHANGED
@@ -6,7 +6,7 @@ export { createBarChart } from './charts/bar';
6
6
  export { createLineChart } from './charts/line';
7
7
  export { createPieChart } from './charts/pie';
8
8
  export { createSparkline } from './charts/sparkline';
9
- export { PrismDisposedError, PrismError, PrismRenderError } from './errors';
9
+ export { PrismError, PrismRenderError } from './errors';
10
10
  export type { LegendState } from './interaction/legend';
11
11
  export type { TooltipState } from './interaction/tooltip';
12
12
  export { bandScale } from './scales/band';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,YAAY,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,YAAY,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEjD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5E,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,YAAY,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C,YAAY,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5D,YAAY,EACV,eAAe,EACf,gBAAgB,EAChB,UAAU,EACV,YAAY,EACZ,SAAS,EACT,cAAc,EACd,eAAe,EACf,UAAU,EACV,eAAe,EACf,SAAS,EACT,eAAe,EACf,UAAU,EACV,WAAW,EACX,WAAW,EACX,WAAW,EACX,kBAAkB,EAClB,eAAe,EACf,KAAK,EACL,UAAU,EACV,YAAY,EACZ,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,cAAc,EACd,UAAU,EACV,UAAU,EACV,KAAK,EACL,MAAM,EACN,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,gBAAgB,GACjB,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,YAAY,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,YAAY,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEjD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAExD,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,YAAY,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C,YAAY,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5D,YAAY,EACV,eAAe,EACf,gBAAgB,EAChB,UAAU,EACV,YAAY,EACZ,SAAS,EACT,cAAc,EACd,eAAe,EACf,UAAU,EACV,eAAe,EACf,SAAS,EACT,eAAe,EACf,UAAU,EACV,WAAW,EACX,WAAW,EACX,WAAW,EACX,kBAAkB,EAClB,eAAe,EACf,KAAK,EACL,UAAU,EACV,YAAY,EACZ,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,cAAc,EACd,UAAU,EACV,UAAU,EACV,KAAK,EACL,MAAM,EACN,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,gBAAgB,GACjB,MAAM,SAAS,CAAC"}
package/dist/index.js CHANGED
@@ -1,12 +1,12 @@
1
1
  import { animate as e } from "./animation/transition.js";
2
2
  import { linearScale as t } from "./scales/linear.js";
3
3
  import { timeScale as n } from "./scales/time.js";
4
- import { PrismDisposedError as r, PrismError as i, PrismRenderError as a } from "./errors.js";
5
- import { resetTheme as o, seriesColor as s, setTheme as c } from "./theme/index.js";
6
- import { createAreaChart as l } from "./charts/area/area-chart.js";
7
- import { bandScale as u } from "./scales/band.js";
8
- import { createBarChart as d } from "./charts/bar/bar-chart.js";
9
- import { createLineChart as f } from "./charts/line/line-chart.js";
10
- import { createPieChart as p } from "./charts/pie/pie-chart.js";
11
- import { createSparkline as m } from "./charts/sparkline/sparkline.js";
12
- export { r as PrismDisposedError, i as PrismError, a as PrismRenderError, e as animate, u as bandScale, l as createAreaChart, d as createBarChart, f as createLineChart, p as createPieChart, m as createSparkline, t as linearScale, o as resetTheme, s as seriesColor, c as setTheme, n as timeScale };
4
+ import { PrismError as r, PrismRenderError as i } from "./errors.js";
5
+ import { resetTheme as a, seriesColor as o, setTheme as s } from "./theme/index.js";
6
+ import { createAreaChart as c } from "./charts/area/area-chart.js";
7
+ import { bandScale as l } from "./scales/band.js";
8
+ import { createBarChart as u } from "./charts/bar/bar-chart.js";
9
+ import { createLineChart as d } from "./charts/line/line-chart.js";
10
+ import { createPieChart as f } from "./charts/pie/pie-chart.js";
11
+ import { createSparkline as p } from "./charts/sparkline/sparkline.js";
12
+ export { r as PrismError, i as PrismRenderError, e as animate, l as bandScale, c as createAreaChart, u as createBarChart, d as createLineChart, f as createPieChart, p as createSparkline, t as linearScale, a as resetTheme, o as seriesColor, s as setTheme, n as timeScale };
@@ -1,7 +1,6 @@
1
1
  export type { CrosshairState } from './crosshair';
2
2
  export { createCrosshair } from './crosshair';
3
3
  export { getMousePosition } from './events';
4
- export { nearestPointX } from './hit-test';
5
4
  export type { LegendState } from './legend';
6
5
  export { createLegend } from './legend';
7
6
  export type { TooltipState } from './tooltip';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/interaction/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/interaction/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC"}
package/dist/prism.cjs CHANGED
@@ -1,2 +1,2 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require("@vielzeug/ripple"),t=require("@vielzeug/orbit");var n={"ease-in":e=>e*e,"ease-in-out":e=>e<.5?2*e*e:1-(-2*e+2)**2/2,"ease-out":e=>1-(1-e)*(1-e),linear:e=>e};function r(e){return typeof e==`function`?e:e!==void 0&&Object.hasOwn(n,e)?n[e]:n[`ease-out`]}function i(e,t=300){let n=e?.preference??`system`,r=typeof matchMedia<`u`&&matchMedia(`(prefers-reduced-motion: reduce)`).matches,i=n===`never`||n===`system`&&r?0:e?.duration??t;return{...e,duration:i,stagger:Math.max(0,e?.stagger??0)}}function a(e,t,n){return e+(t-e)*n}function o(e,t,n,o){let s=i(t),c=s.duration,l=r(s.easing),u=s.stagger;if(c===0||e.length===0){for(let t of e)for(let[e,{to:n}]of Object.entries(t.attrs))t.el.setAttribute(e,String(n));return n?.(),()=>{}}let d=null,f=!1,p=Math.max(c,c+u*(e.length-1));function m(t){if(f||o?.aborted)return;d===null&&(d=t);let r=t-d;for(let t=0;t<e.length;t++){let n=e[t],i=u*t,o=Math.max(0,r-i),s=Math.min(1,o/c),d=l(s);for(let[e,{from:t,to:r}]of Object.entries(n.attrs))n.el.setAttribute(e,String(a(t,r,d)))}r<p?requestAnimationFrame(m):n?.()}return requestAnimationFrame(m),()=>{f=!0}}var s=`http://www.w3.org/2000/svg`;function c(e,t){let n=document.createElementNS(s,e);return t&&l(n,t),n}function l(e,t){for(let[n,r]of Object.entries(t)){if(r===void 0){e.removeAttribute(n);continue}typeof r==`number`&&!Number.isFinite(r)&&`${n}${e.tagName}${r}`,e.setAttribute(n,String(r))}}function u(e){for(;e.firstChild;)e.removeChild(e.firstChild)}function d(e,t){let n=c(`text`,t);return n.textContent=e,n}function f(e){return typeof e.bandwidth==`function`}function p(e,t){return f(e)?e.map(t)+e.bandwidth()/2:e.map(t)}var m=e=>e instanceof Date?e.toLocaleDateString(void 0,{month:`short`,year:`numeric`}):String(e);function h(e,t,n){let r=e.position??n,i=r===`bottom`||r===`top`?Math.max(2,Math.floor(t/80)):Math.max(2,Math.floor(t/50));return e.tickCount??i}function g(e,t,n,r,i=`bottom`){u(e);let a=n.position??i,o=a===`bottom`||a===`top`,s=a===`top`||a===`left`,f=s?-1:1,g=c(`line`,{"aria-hidden":`true`,class:`prism-axis-line`,x1:0,x2:o?r:0,y1:0,y2:o?0:r});e.appendChild(g);let _=t.ticks(h(n,r,i)),v=n.tickFormat??m;for(let n of _){let r=p(t,n),i=c(`line`,{"aria-hidden":`true`,class:`prism-axis-tick`,x1:o?r:0,x2:o?r:6*f,y1:o?0:r,y2:o?6*f:r});e.appendChild(i);let a=d(v(n),{"aria-hidden":`true`,class:`prism-axis-label`,"dominant-baseline":o?s?`auto`:`hanging`:`middle`,"text-anchor":o?`middle`:s?`end`:`start`,x:o?r:6*f*1.5,y:o?6*f*1.5:r});e.appendChild(a)}if(n.label){let t=d(n.label,{class:`prism-axis-title`,"dominant-baseline":`middle`,"text-anchor":`middle`});o?l(t,{x:r/2,y:6*f*3.5}):l(t,{transform:`translate(${6*f*4}, ${r/2}) rotate(-90)`}),e.appendChild(t)}}function _(e,t,n,r,i,a=10){u(e);let o=n!==!0&&n.color||void 0,s=n!==!0&&n.dash||void 0,l=t.ticks(a);for(let n of l){let a=p(t,n),l={class:`prism-grid-line`,stroke:o??`var(--prism-grid-color)`,"stroke-dasharray":s,"stroke-opacity":`var(--prism-grid-opacity)`};i===`vertical`?Object.assign(l,{x1:a,x2:a,y1:0,y2:r}):Object.assign(l,{x1:0,x2:r,y1:a,y2:a}),e.appendChild(c(`line`,l))}}function v(e,t){let n=Math.floor(Math.log10(e)),r=e/10**n,i;return i=t?r<1.5?1:r<3?2:r<7?5:10:r<=1?1:r<=2?2:r<=5?5:10,i*10**n}function y(e,t,n){if(!Number.isFinite(e)||!Number.isFinite(t))return[0,1];if(e>t&&([e,t]=[t,e]),e===t)return[e-1,t+1];let r=v(v(t-e,!1)/Math.max(1,n-1),!0);return[Math.floor(e/r)*r,Math.ceil(t/r)*r]}function b(e){let t=()=>e.nice===!1?e.domain:y(e.domain[0],e.domain[1],10),n=()=>e.range;return{get domain(){return t()},invert(e){let[r,i]=t(),[a,o]=n();return o===a?r:r+(e-a)/(o-a)*(i-r)},map(r){let[i,a]=t(),[o,s]=n();if(a===i)return o;let c=(r-i)/(a-i);return e.clamp&&(c=Math.max(0,Math.min(1,c))),o+c*(s-o)},get range(){return n()},ticks(e=10){if(e<=0)return[];let[n,r]=t();if(n===r||e===1)return[n];let i=Math.min(n,r),a=Math.max(n,r),o=v(v(a-i,!1)/(e-1),!0),s=Math.ceil(i/o)*o,c=Math.floor(a/o)*o,l=[];for(let e=s;e<=c+o*.5;e+=o)l.push(Math.round(e*0xe8d4a51000)/0xe8d4a51000);return l}}}var x=1e3,S=60*x,C=60*S,w=24*C,T=30*w,E=365*w,D=[x,5*x,15*x,30*x,S,5*S,15*S,30*S,C,3*C,6*C,12*C,w,7*w,T,3*T,6*T,E];function O(e,t){let n=Math.abs(e)/Math.max(1,t);for(let e of D)if(e>=n)return e;return E}function k(e,t){let[n,r]=e;n.getTime()>r.getTime()&&([n,r]=[r,n]);let i=O(r.getTime()-n.getTime(),t);return[new Date(Math.floor(n.getTime()/i)*i),new Date(Math.ceil(r.getTime()/i)*i)]}function A(e){let t=()=>e.nice===!1?e.domain:k(e.domain,10),n=()=>e.range;return{get domain(){return t()},invert(e){let[r,i]=t(),[a,o]=n();if(o===a)return r;let s=(e-a)/(o-a);return new Date(r.getTime()+s*(i.getTime()-r.getTime()))},map(e){let[r,i]=t(),[a,o]=n(),s=i.getTime()-r.getTime();return s===0?a:a+(e.getTime()-r.getTime())/s*(o-a)},get range(){return n()},ticks(e=10){let[n,r]=t(),i=O(r.getTime()-n.getTime(),e),a=Math.ceil(n.getTime()/i)*i,o=[];for(let e=a;e<=r.getTime();e+=i)o.push(new Date(e));return o}}}function j(e,t){if(e.length===0||e.some(e=>e==null)||e.some(e=>typeof e==`number`&&!Number.isFinite(e)))return b({domain:[0,1],range:[0,t]});if(e[0]instanceof Date){let n=e,r=Math.min(...n.map(Number)),i=Math.max(...n.map(Number));return A({domain:[new Date(r),new Date(r===i?i+1:i)],range:[0,t]})}let n=e,r=Math.min(...n),i=Math.max(...n);return b({domain:[r,r===i?i+1:i],nice:!1,range:[0,t]})}function M(e,t,n=!0){if(e.length===0||e.some(e=>e==null)||e.some(e=>!Number.isFinite(e)))return b({domain:[0,1],range:[t,0]});let r=Math.min(...e),i=n?Math.min(0,r):r,a=Math.max(...e);return b({domain:[i,i===a?a+1:a],range:[t,0]})}function N(e){return e===!0?`bottom`:e.position??`bottom`}function P(e,t){let n=N(t),r=document.createElement(`div`);r.className=`prism-legend prism-legend-${n}`,n===`top`?e.insertBefore(r,e.firstChild):e.appendChild(r);let i=()=>{r.remove()};return{dispose:i,el:r,[Symbol.dispose]:i,update(e){r.innerHTML=``;for(let t of e){let e=document.createElement(`div`);e.className=`prism-legend-item`;let n=document.createElement(`span`);n.className=`prism-legend-dot`,n.style.backgroundColor=t.color;let i=document.createElement(`span`);i.className=`prism-legend-label`,i.textContent=t.name,e.appendChild(n),e.appendChild(i),r.appendChild(e)}}}}function ee(e,n){getComputedStyle(e).position===`static`&&(e.style.position=`relative`);let r=document.createElement(`div`);r.className=`prism-tooltip`,r.style.position=`absolute`,r.style.pointerEvents=`none`,r.style.top=`0`,r.style.left=`0`,r.setAttribute(`role`,`status`),r.setAttribute(`aria-live`,`polite`),e.appendChild(r);let i=n!==!0&&n?.offset||8,a=n===!0?void 0:n?.render,o=n===!0?void 0:n?.sanitize,s=null,c=null,l=!1,u=()=>{c!==null&&(clearTimeout(c),c=null)},d=()=>{s!==null&&(cancelAnimationFrame(s),s=null)},f=()=>{d(),u(),r.remove()};return{dispose:f,el:r,hide(){d(),u(),l=!1,r.style.opacity=`0`,c=setTimeout(()=>{c=null,l||(r.textContent=``)},150)},show(n,c,d,f){if(!e.isConnected)return;if(u(),a){let e=a(d,f);o?r.innerHTML=o(e):r.textContent=e}else r.textContent=`${f.name}: ${d.value}`;let{x:p,y:m}=(0,t.computePosition)({getBoundingClientRect:()=>{let t=e.getBoundingClientRect();return{bottom:t.top+c,height:0,left:t.left+n,right:t.left+n,top:t.top+c,width:0,x:t.left+n,y:t.top+c}}},r,{containingBlock:e,middleware:[(0,t.offset)(i),(0,t.flip)(),(0,t.shift)({padding:8})],placement:`top`});if(r.style.left=`${p}px`,r.style.top=`${m}px`,l){s===null&&(r.style.opacity=`1`);return}l=!0,r.style.opacity=`0`,s=requestAnimationFrame(()=>{s=null,l&&(r.style.opacity=`1`)})},[Symbol.dispose]:f}}var F=class e extends Error{constructor(e,t){super(e,t),this.name=new.target.name,Object.setPrototypeOf(this,new.target.prototype)}static is(t){return t instanceof e}},te=class extends F{},I=class extends F{},ne={bottom:40,left:50,right:20,top:20};function re(e){return{...ne,...e}}function L(e,t,n){return{height:Math.max(0,t-n.top-n.bottom),width:Math.max(0,e-n.left-n.right)}}function ie(e,t){let n=null,r=new ResizeObserver(e=>{n!==null&&cancelAnimationFrame(n),n=requestAnimationFrame(()=>{n=null;let r=e[0];if(r){let{height:e,width:n}=r.contentRect;t(n,e)}})});return r.observe(e),()=>{n!==null&&cancelAnimationFrame(n),r.disconnect()}}function ae(t,n){if(!(typeof t==`object`&&t&&t.nodeType===1&&typeof t.appendChild==`function`&&typeof t.getBoundingClientRect==`function`)){let e=t;throw new I(`Invalid chart configuration: \`container\` must be a DOM Element, received ${e===null?`null`:typeof e==`object`?e.constructor?.name??`object`:typeof e}.`)}let r=re(n.margin),i=n.a11y??(n.ariaLabel?{ariaLabel:n.ariaLabel}:void 0),a=c(`svg`,{...n.ariaHidden||i?.decorative?{"aria-hidden":`true`}:{...i?{"aria-label":i.ariaLabel,tabindex:`0`}:{},role:`img`},class:`prism-chart`,style:`display:block;width:100%;height:100%`}),o=c(`g`,{class:`prism-chart-area`,transform:`translate(${r.left},${r.top})`});a.appendChild(o);let s=t.getBoundingClientRect();s.width===0||s.height;let u=typeof getComputedStyle<`u`?getComputedStyle(t):null;u&&u.position;let d=(0,e.signal)({height:s.height||300,margin:r,width:s.width||600}),f=ie(t,(e,t)=>{d.value={height:t,margin:r,width:e},l(a,{height:t,viewBox:`0 0 ${e} ${t}`,width:e})}),p=s.width||600,m=s.height||300;return l(a,{height:m,viewBox:`0 0 ${p} ${m}`,width:p}),t.appendChild(a),{chartArea:o,dimensions:d,dispose(){f(),a.remove()},svg:a}}function R(e,t,n,r){u(e.series),u(e.grid),u(e.xAxis),u(e.yAxis),t?.update([]),n?.hide(),r?.hide()}function oe(t,n,r,i){let a=ae(t,{a11y:n.a11y,ariaLabel:n.ariaLabel,margin:n.margin}),o=n.tooltip?ee(t,n.tooltip):null,s=n.legend?P(t,n.legend):null,c=new AbortController,l=r(a,o,s,c.signal),u=!1,d=se(a.svg),f=(0,e.createScope)();f.run(()=>{(0,e.effect)(()=>{u||d.attach(i(l))},{scheduler:`microtask`})});let p=[];if(n.plugins){let e={container:t,dimensions:a.dimensions,disposalSignal:c.signal,svg:a.svg};for(let t of n.plugins)try{t.install(e),p.push(t)}catch{}}return{get disposalSignal(){return c.signal},dispose(){if(!u){u=!0,c.abort(),d.detach();for(let e of p)try{e.dispose()}catch{}o?.dispose(),s?.dispose(),f.dispose(),a.dispose()}},get disposed(){return u},el:a.svg,[Symbol.dispose](){this.dispose()}}}function se(e){let t=null;return{attach(n){t&&=(t.onMouseMove&&e.removeEventListener(`mousemove`,t.onMouseMove),t.onMouseLeave&&e.removeEventListener(`mouseleave`,t.onMouseLeave),t.onClick&&e.removeEventListener(`click`,t.onClick),t.onKeyDown&&e.removeEventListener(`keydown`,t.onKeyDown),null),n&&(t=n,n.onMouseMove&&e.addEventListener(`mousemove`,n.onMouseMove),n.onMouseLeave&&e.addEventListener(`mouseleave`,n.onMouseLeave),n.onClick&&e.addEventListener(`click`,n.onClick),n.onKeyDown&&e.addEventListener(`keydown`,n.onKeyDown))},detach(){this.attach(void 0)}}}function z(e,t,n){return oe(e,t,(t,n,r,i)=>{let a={grid:c(`g`,{"aria-hidden":`true`,class:`prism-grid`}),series:c(`g`,{class:`prism-series`}),xAxis:c(`g`,{class:`prism-x-axis`}),yAxis:c(`g`,{class:`prism-y-axis`})};return t.chartArea.appendChild(a.grid),t.chartArea.appendChild(a.xAxis),t.chartArea.appendChild(a.yAxis),t.chartArea.appendChild(a.series),{chartArea:t.chartArea,container:e,dimensions:t.dimensions,disposalSignal:i,groups:a,legend:r,svg:t.svg,tooltip:n}},n)}function ce(e,t,n){return oe(e,t,(t,n,r,i)=>({container:e,dimensions:t.dimensions,disposalSignal:i,legend:r,svg:t.svg,tooltip:n}),n)}function le(e,t){let n=t===!0||t?.vertical!==!1,r=t!==!0&&t?.horizontal===!0,i=t===!0||t?.snap!==!1,a=c(`g`,{"aria-hidden":`true`,class:`prism-crosshair`,style:`display:none`}),o=n?c(`line`,{class:`prism-crosshair-v`,"stroke-dasharray":`var(--prism-crosshair-dash, 4 2)`}):null,s=r?c(`line`,{class:`prism-crosshair-h`,"stroke-dasharray":`var(--prism-crosshair-dash, 4 2)`}):null;o&&a.appendChild(o),s&&a.appendChild(s),e.appendChild(a);let u=c(`text`,{"aria-live":`polite`,class:`prism-crosshair-live`,role:`status`,x:-9999,y:-9999});return e.appendChild(u),{hide(){a.style.display=`none`,u.textContent=``},show(e,t,n,r,i){a.style.display=``,o&&l(o,{x1:e,x2:e,y1:0,y2:r}),s&&l(s,{x1:0,x2:n,y1:t,y2:t}),i!==void 0&&(u.textContent=i)},snap:i}}function B(e){return e instanceof Date?`date:${e.getTime()}`:`${typeof e}:${String(e)}`}function ue(e,t){let n=[],r=new Map;return{domain:n,labels:r,series:e.map((e,i)=>{let a=new Map;for(let o of t[i]??[]){let t=B(o.key);if(a.has(t)){`${String(o.key)}${e.name}`;continue}a.set(t,o),r.has(t)||(r.set(t,o.key),n.push(t))}return{byKey:a,config:e}})}}function V(e,t,n,r){let i=e.getBoundingClientRect();return{x:t.clientX-i.left-n,y:t.clientY-i.top-r}}function de(e,t,n){let r=null,i=1/0;for(let a=0;a<t.length;a++)for(let o=0;o<(t[a]?.length??0);o++){let s=e[a]?.[o],c=t[a]?.[o];if(!s||!c)continue;let l=Math.abs(c.x-n);l<i&&(i=l,r=s.key)}return r}function H(e,t,n,r){let i=B(n),a=null,o=1/0;for(let n=0;n<t.length;n++){let s=e[n]?.findIndex(e=>B(e.key)===i)??-1,c=s===-1?void 0:e[n]?.[s],l=s===-1?void 0:t[n]?.[s];if(!c||!l)continue;let u=Number.isFinite(r)?Math.abs(l.y-r):0;u<o&&(o=u,a={datum:c,point:l,seriesIndex:n})}return a}function fe(e){let t=0;return{onClick:t=>{if(!e.onClick)return;let n=e.getPoints();if(n.length===0||n[0].length===0)return;let r=e.dims(),i=V(e.svg,t,r.margin.left,r.margin.top),a=L(r.width,r.height,r.margin);if(i.x<0||i.x>a.width||i.y<0||i.y>a.height)return;let o=de(e.getData(),n,i.x);if(o===null)return;let s=H(e.getData(),n,o,i.y),c=s?e.getSeriesList()[s.seriesIndex]:void 0;s&&c&&e.onClick({datum:s.datum,originalEvent:t,series:c})},onKeyDown:n=>{let r=e.getData(),i=e.getPoints(),a=[...new Map(r.flat().map(e=>[B(e.key),e.key])).values()];if(a.length!==0){if(n.key===`ArrowLeft`||n.key===`ArrowRight`){n.preventDefault(),t=Math.max(0,Math.min(a.length-1,t+(n.key===`ArrowLeft`?-1:1)));let o=a[t],s=H(r,i,o,1/0),c=s?e.getSeriesList()[s.seriesIndex]:void 0;if(!s||!c)return;e.crosshair?.show(s.point.x,s.point.y,e.dims().width,e.dims().height,`${c.name}: ${s.datum.value}`),e.tooltip?.show(s.point.x+e.dims().margin.left,s.point.y+e.dims().margin.top,s.datum,c),e.onHover?.({datum:s.datum,originalEvent:n,series:c})}if((n.key===`Enter`||n.key===` `)&&e.onClick){n.preventDefault();let o=a[t],s=H(r,i,o,1/0),c=s?e.getSeriesList()[s.seriesIndex]:void 0;s&&c&&e.onClick({datum:s.datum,originalEvent:n,series:c})}n.key===`Escape`&&(e.crosshair?.hide(),e.tooltip?.hide(),e.onHover?.(null))}},onMouseLeave:()=>{e.crosshair?.hide(),e.tooltip?.hide(),e.onHover?.(null)},onMouseMove:t=>{let n=e.getPoints();if(n.length===0||n[0].length===0)return;let r=e.dims(),i=V(e.svg,t,r.margin.left,r.margin.top),a=L(r.width,r.height,r.margin);if(i.x<0||i.x>a.width||i.y<0||i.y>a.height){e.crosshair?.hide(),e.tooltip?.hide();return}let o=de(e.getData(),n,i.x);if(o===null)return;let s=H(e.getData(),n,o,i.y),c=s?e.getSeriesList()[s.seriesIndex]:void 0,l=e.crosshair?.snap===!1?i.x:s?.point.x??i.x,u=e.crosshair?.snap===!1?i.y:s?.point.y??i.y;e.crosshair?.show(l,u,a.width,a.height,c&&s?`${c.name}: ${s.datum.value}`:void 0),s&&c&&(e.tooltip?.show(s.point.x+r.margin.left,s.point.y+r.margin.top,s.datum,c),e.onHover?.({datum:s.datum,originalEvent:t,series:c}))}}}var pe=8;function me(e){let t=document.documentElement;if(e.colors)for(let n=0;n<pe;n++){let r=e.colors[n];r?t.style.setProperty(`--prism-color-${n+1}`,r):t.style.removeProperty(`--prism-color-${n+1}`)}e.fontFamily&&t.style.setProperty(`--prism-font-family`,e.fontFamily),e.gridColor&&t.style.setProperty(`--prism-grid-color`,e.gridColor),e.gridOpacity!==void 0&&t.style.setProperty(`--prism-grid-opacity`,String(e.gridOpacity))}function he(){let e=document.documentElement;for(let t=1;t<=pe;t++)e.style.removeProperty(`--prism-color-${t}`);e.style.removeProperty(`--prism-font-family`),e.style.removeProperty(`--prism-grid-color`),e.style.removeProperty(`--prism-grid-opacity`)}function U(e,t){return t??`var(--prism-color-${e%pe+1})`}function W(e){if(e.length===0)return``;let t=`M${e[0].x},${e[0].y}`;for(let n=1;n<e.length;n++)t+=`L${e[n].x},${e[n].y}`;return t}function G(e){if(e.length<3)return W(e);let t=e.length,n=[];for(let r=0;r<t;r++)r===0?n.push({x:e[1].x-e[0].x,y:e[1].y-e[0].y}):r===t-1?n.push({x:e[t-1].x-e[t-2].x,y:e[t-1].y-e[t-2].y}):n.push({x:(e[r+1].x-e[r-1].x)/2,y:(e[r+1].y-e[r-1].y)/2});let r=`M${e[0].x},${e[0].y}`;for(let i=0;i<t-1;i++){let t=e[i],a=e[i+1],o=n[i],s=n[i+1],c=(a.x-t.x)/3;r+=`C${t.x+c},${t.y+o.y/3},${a.x-c},${a.y-s.y/3},${a.x},${a.y}`}return r}function K(e){if(e.length===0)return``;let t=`M${e[0].x},${e[0].y}`;for(let n=1;n<e.length;n++){let r=(e[n-1].x+e[n].x)/2;t+=`H${r}V${e[n].y}H${e[n].x}`}return t}function q(e,t,n=`linear`){if(e.length===0)return``;let r=n===`monotone`?G(e):n===`step`?K(e):W(e),i=[...t].reverse();if(i.length>0){r+=`L${i[0].x},${i[0].y}`;for(let e=1;e<i.length;e++)r+=`L${i[e].x},${i[e].y}`}return r+=`Z`,r}var J=new WeakMap,Y=new WeakMap;function ge(e,t){return t===`monotone`?G(e):t===`step`?K(e):W(e)}function _e(e,t,n,o){let s=i(o.transition,0),u=s.duration,d=r(s.easing),f=e.querySelector(`.prism-area-fill`);f||(f=c(`path`,{class:`prism-area-fill`}),e.appendChild(f)),l(f,{fill:o.color,"fill-opacity":o.fillOpacity,stroke:`none`});let p=null;if(o.showLine?(p=e.querySelector(`.prism-area-line`),p||(p=c(`path`,{class:`prism-area-line`,fill:`none`}),e.appendChild(p)),l(p,{stroke:o.color,"stroke-width":2})):e.querySelector(`.prism-area-line`)?.remove(),u===0){let e=t.map(e=>({x:e.x,y:n}));l(f,{d:q(t,e,o.curve)}),p&&l(p,{d:ge(t,o.curve)});return}if(J.get(e)?.(),!f.hasAttribute(`d`)){let r=t.map(e=>({x:e.x,y:n}));l(f,{d:q(t,r,o.curve)}),p&&l(p,{d:ge(t,o.curve)}),Y.set(e,t);return}let m=Y.get(e)??t,h=t.map((e,n)=>m[n]??m[m.length-1]??t[n]),g=null;function _(r){if(o.disposalSignal?.aborted){J.delete(e);return}g===null&&(g=r);let i=Math.min(1,(r-g)/u),s=d(i),c=t.map((e,t)=>({x:a(h[t].x,e.x,s),y:a(h[t].y,e.y,s)})),m=c.map(e=>({x:e.x,y:n}));if(l(f,{d:q(c,m,o.curve)}),p&&l(p,{d:ge(c,o.curve)}),i<1){let t=requestAnimationFrame(_);J.set(e,()=>cancelAnimationFrame(t))}else J.delete(e),Y.set(e,t)}Y.set(e,h);let v=requestAnimationFrame(_);J.set(e,()=>cancelAnimationFrame(v))}function ve(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)}))}function ye(t,n){let r=null;return z(t,n,t=>{let{groups:i,legend:a,tooltip:o}=t,s=t.dimensions.value,l=L(s.width,s.height,s.margin),u=(0,e.isReactive)(n.series)?n.series.value:n.series,d=u.map(t=>(0,e.isReactive)(t.data)?t.data.value:t.data),f=d.flat().map(e=>e.key),p=d.flat().map(e=>e.value);if(f.length===0){R(i,a,o,r);return}n.crosshair&&!r&&(r=le(t.chartArea,n.crosshair));let m=j(f,l.width),v=M(p,l.height),y=v.map(0);for(n.yAxis?.grid&&_(i.grid,v,n.yAxis.grid,l.width,`horizontal`,h(n.yAxis,l.height,`left`)),n.xAxis?.grid&&_(i.grid,m,n.xAxis.grid,l.height,`vertical`,h(n.xAxis,l.width,`bottom`)),n.xAxis&&(i.xAxis.setAttribute(`transform`,`translate(0,${l.height})`),g(i.xAxis,m,n.xAxis,l.width,`bottom`)),n.yAxis&&g(i.yAxis,v,n.yAxis,l.height,`left`);i.series.children.length>u.length;)i.series.removeChild(i.series.lastChild);let b=[];for(let e=0;e<u.length;e++){let r=u[e],a=i.series.children[e];a||(a=c(`g`,{class:`prism-area-series`}),i.series.appendChild(a));let o=ve(d[e],m,v);b.push(o),_e(a,o,y,{color:U(e,r.color),curve:r.curve??`linear`,disposalSignal:t.disposalSignal,fillOpacity:r.fillOpacity??.3,showLine:r.showLine!==!1,transition:n.transition})}return a?.update(u.map((e,t)=>({color:U(t,e.color),name:e.name}))),o?.hide(),fe({crosshair:r,dims:()=>t.dimensions.value,getData:()=>d,getPoints:()=>b,getSeriesList:()=>(0,e.isReactive)(n.series)?n.series.value:n.series,onClick:n.onClick,onHover:n.onHover,svg:t.svg,tooltip:o})})}function be(e){let t=()=>e.domain,n=()=>e.range,r=()=>{let r=t().length;if(r===0)return 0;let[i,a]=n(),o=e.padding??.1;return(a-i)/(r+(r-1)*o+(e.paddingOuter??o)*2)};return{bandwidth:r,get domain(){return t()},gap(){let t=e.padding??.1;return r()*t},map(i){let a=t().indexOf(i);if(a===-1)return`${i}`,0;let[o]=n(),s=r(),c=e.padding??.1;return o+(e.paddingOuter??c)*s+a*(s+s*c)},get range(){return n()},ticks(e){let n=t();if(e===void 0||e>=n.length)return[...n];if(e<=0)return[];let r=Math.ceil(n.length/e);return n.filter((e,t)=>t%r===0)}}}function xe(e,t,n){for(let r=0;r<t.length;r++){let i=n.bandCenter(t[r])-n.bandwidth/2;if(e>=i&&e<i+n.bandwidth)return r}return-1}function Se(e,t,n,r,i){if(r.stacked)if(r.horizontal){for(let n=0;n<i;n++)if(r.valueScale.map(r.stackedTops[n]?.[t]??0)>=e.x)return n;return i-1}else{for(let n=0;n<i;n++)if(r.valueScale.map(r.stackedTops[n]?.[t]??0)<=e.y)return n;return i-1}{let a=r.bandwidth/i,o=r.bandCenter(n[t])-r.bandwidth/2,s=r.horizontal?e.y-o:e.x-o,c=Math.floor(s/a);return Math.max(0,Math.min(i-1,c))}}function Ce(e,t,n,r,i){let a=i-1,o=r.stacked?r.stackedTops[a]?.[t]??0:Math.max(...Array.from({length:i},(e,r)=>n[r]?.[t]?.value??0)),s=r.valueScale.map(o);return r.horizontal?e.x>s:e.y<s}var we=new WeakMap;function Te(e,t,n,r,i,a){for(;e.children.length>t.length;){let t=e.lastElementChild;t&&e.removeChild(t)}let s=n.bandwidth(),u=a.stacked?s:s/a.seriesCount,d=a.stacked?0:u*a.seriesIndex,f=a.horizontal??!1,p=[],m=[];for(let o=0;o<t.length;o++){let s=t[o],h=n.map(s.key)+d,g=a.baselineYs?a.baselineYs[o]:i,_=r.map(s.y),v=e.children[o],y=!v;if(v||(v=c(`rect`,{class:`prism-bar`}),e.appendChild(v)),v.style.display=s.present?``:`none`,f){let e=Math.max(0,Math.abs(g-_)),t=Math.min(_,g);l(v,{fill:a.color,height:Math.max(0,u-1),rx:a.borderRadius,ry:a.borderRadius,y:h}),a.transition?y?(l(v,{width:0,x:g}),p.push({attrs:{width:{from:0,to:e},x:{from:g,to:t}},el:v})):m.push({attrs:{width:{from:Number(v.getAttribute(`width`)??e),to:e},x:{from:Number(v.getAttribute(`x`)??t),to:t}},el:v}):l(v,{width:e,x:t})}else{let e=Math.max(0,Math.abs(g-_)),t=Math.min(_,g);l(v,{fill:a.color,rx:a.borderRadius,ry:a.borderRadius,width:Math.max(0,u-1),x:h}),a.transition?y?(l(v,{height:0,y:g}),p.push({attrs:{height:{from:0,to:e},y:{from:g,to:t}},el:v})):m.push({attrs:{height:{from:Number(v.getAttribute(`height`)??e),to:e},y:{from:Number(v.getAttribute(`y`)??t),to:t}},el:v}):l(v,{height:e,y:t})}}if(a.transition){we.get(e)?.();let t=[];p.length>0&&t.push(o(p,a.transition,void 0,a.disposalSignal)),m.length>0&&t.push(o(m,{...a.transition,stagger:0},void 0,a.disposalSignal)),we.set(e,()=>{for(let e of t)e()})}}function Ee(e){return{horizontal:e===`grouped-horizontal`||e===`stacked-horizontal`,stacked:e===`stacked`||e===`stacked-horizontal`}}function De(t,n){return z(t,n,t=>{let{groups:r,legend:i,tooltip:a}=t,o=t.dimensions.value,s=L(o.width,o.height,o.margin),l=(0,e.isReactive)(n.series)?n.series.value:n.series,u=ue(l,l.map(t=>(0,e.isReactive)(t.data)?t.data.value:t.data)),d=u.domain,f=u.series.map(({byKey:e})=>d.map(t=>e.get(t))),p=e=>{if(e)return{...e,tickFormat:t=>{let n=String(t),r=u.labels.get(n)??t;return e.tickFormat?e.tickFormat(r):String(r)}}};if(d.length===0){R(r,i,a);return}let{horizontal:m,stacked:v}=Ee(n.variant??`grouped`),y,x;if(v){f.some(e=>e.some(e=>(e?.value??0)<0));let e=d.map((e,t)=>f.reduce((e,n)=>e+Math.max(0,n[t]?.value??0),0));y=Math.max(...e),x=0}else{let e=f.flatMap(e=>e.flatMap(e=>e?[e.value]:[]));y=Math.max(...e),x=Math.min(0,...e)}let S=be(m?{domain:d,range:[0,s.height]}:{domain:d,range:[0,s.width]}),C=b(m?{domain:[x,y],range:[0,s.width]}:{domain:[x,y],range:[s.height,0]}),w=[],T=Object.create(null);for(let e of d)T[e]=0;let E={bandCenter:e=>S.map(e)+S.bandwidth()/2,bandwidth:S.bandwidth(),baselinePx:C.map(0),horizontal:m,stacked:v,stackedTops:w,valueScale:C};if(m){n.xAxis?.grid&&_(r.grid,C,n.xAxis.grid,s.height,`vertical`,h(n.xAxis,s.width,`bottom`));let e=p(n.yAxis);e&&g(r.yAxis,S,e,s.height,`left`),n.xAxis&&(r.xAxis.setAttribute(`transform`,`translate(0,${s.height})`),g(r.xAxis,C,n.xAxis,s.width,`bottom`))}else{n.yAxis?.grid&&_(r.grid,C,n.yAxis.grid,s.width,`horizontal`,h(n.yAxis,s.height,`left`));let e=p(n.xAxis);e&&(r.xAxis.setAttribute(`transform`,`translate(0,${s.height})`),g(r.xAxis,S,e,s.width,`bottom`)),n.yAxis&&g(r.yAxis,C,n.yAxis,s.height,`left`)}for(;r.series.children.length>l.length;){let e=r.series.lastElementChild;e&&r.series.removeChild(e)}for(let e=0;e<l.length;e++){let i=l[e],a=r.series.children[e];a||(a=c(`g`,{class:`prism-bar-series`}),r.series.appendChild(a));let o=d.map((t,n)=>{let r=f[e]?.[n];if(v){let e=T[t]??0,n=e+Math.max(0,r?.value??0);return T[t]=n,{base:e,key:t,present:r!==void 0,y:n}}return{base:0,key:t,present:r!==void 0,y:r?.value??0}});w[e]=o.map(e=>e.y);let s=v?o.map(e=>C.map(e.base)):void 0;Te(a,o,S,C,E.baselinePx,{baselineYs:s,borderRadius:i.borderRadius??0,color:U(e,i.color),disposalSignal:t.disposalSignal,horizontal:m,seriesCount:l.length,seriesIndex:e,stacked:v,transition:n.transition})}return i?.update(l.map((e,t)=>({color:U(t,e.color),name:e.name}))),a?.hide(),{onClick:e=>{if(!n.onClick)return;let r=t.dimensions.value,i=V(t.svg,e,r.margin.left,r.margin.top),a=L(r.width,r.height,r.margin);if(i.x<0||i.x>a.width||i.y<0||i.y>a.height)return;let o=xe(m?i.y:i.x,d,E);if(o===-1)return;let s=Se(i,o,d,E,l.length),c=f[s]?.[o];c&&n.onClick({datum:c,originalEvent:e,series:l[s]})},onMouseLeave:()=>{a?.hide(),n.onHover?.(null)},onMouseMove:e=>{let r=t.dimensions.value,i=V(t.svg,e,r.margin.left,r.margin.top),o=L(r.width,r.height,r.margin);if(i.x<0||i.x>o.width||i.y<0||i.y>o.height){a?.hide();return}let s=xe(m?i.y:i.x,d,E);if(s===-1){a?.hide();return}if(Ce(i,s,f,E,l.length)){a?.hide();return}let c=Se(i,s,d,E,l.length),u=f[c]?.[s];if(u){let t=E.bandCenter(d[s]),i=v?w[c]?.[s]??u.value:u.value,o=C.map(i),f=m?o+r.margin.left:t+r.margin.left,p=m?t+r.margin.top:o+r.margin.top;a?.show(f,p,u,l[c]),n.onHover?.({datum:u,originalEvent:e,series:l[c]})}}}})}var X=new WeakMap;function Oe(e,t){return t===`monotone`?G(e):t===`step`?K(e):W(e)}function ke(e,t,n){let o=i(n.transition,0),s=o.duration,u=r(o.easing),d=e.querySelector(`.prism-line-path`);d||(d=c(`path`,{class:`prism-line-path`,fill:`none`}),e.appendChild(d)),l(d,{stroke:n.color,"stroke-width":n.strokeWidth});let f=e.querySelector(`.prism-line-dots`);if(n.showPoints?f||(f=c(`g`,{class:`prism-line-dots`}),e.appendChild(f)):f&&=(f.remove(),null),s===0){if(l(d,{d:Oe(t,n.curve)}),f){for(;f.children.length>t.length;)f.removeChild(f.lastChild);for(let e=0;e<t.length;e++){let r=f.children[e];r||(r=c(`circle`,{class:`prism-line-dot`}),f.appendChild(r)),l(r,{cx:t[e].x,cy:t[e].y,fill:n.color,r:n.pointRadius})}}return}X.get(e)?.();let p=!!d.getAttribute(`d`),m=[],h=null;if(f){let e=f.children.length;for(let t=0;t<e;t++){let e=f.children[t],n={x:Number(e.getAttribute(`cx`)),y:Number(e.getAttribute(`cy`))};m.push(n),h=n}for(;f.children.length>t.length;)f.removeChild(f.lastChild);for(let e=f.children.length;e<t.length;e++){let r=c(`circle`,{class:`prism-line-dot`});l(r,{cx:t[e].x,cy:t[e].y,fill:n.color,r:n.pointRadius}),f.appendChild(r)}}for(let e=m.length;e<t.length;e++)m.push(h??t[e]);let g=null;function _(r){if(n.disposalSignal?.aborted){X.delete(e);return}g===null&&(g=r);let i=Math.min(1,(r-g)/s),o=u(i),c=t.map((e,t)=>{let n=m[t]??e;return{x:a(n.x,e.x,o),y:a(n.y,e.y,o)}});if(l(d,{d:Oe(c,n.curve)}),f)for(let e=0;e<t.length;e++){let t=f.children[e];t&&l(t,{cx:c[e].x,cy:c[e].y})}if(i<1){let t=requestAnimationFrame(_);X.set(e,()=>cancelAnimationFrame(t))}else X.delete(e)}if(!p)l(d,{d:Oe(t,n.curve)});else{let t=requestAnimationFrame(_);X.set(e,()=>cancelAnimationFrame(t))}}function Ae(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)}))}function je(t,n){let r=null;return z(t,n,t=>{let{groups:i,legend:a,tooltip:o}=t,s=t.dimensions.value,l=L(s.width,s.height,s.margin),u=(0,e.isReactive)(n.series)?n.series.value:n.series,d=u.map(t=>(0,e.isReactive)(t.data)?t.data.value:t.data),f=d.flat().map(e=>e.key),p=d.flat().map(e=>e.value);if(f.length===0){R(i,a,o,r);return}n.crosshair&&!r&&(r=le(t.chartArea,n.crosshair));let m=j(f,l.width),v=M(p,l.height);for(n.yAxis?.grid&&_(i.grid,v,n.yAxis.grid,l.width,`horizontal`,h(n.yAxis,l.height,`left`)),n.xAxis?.grid&&_(i.grid,m,n.xAxis.grid,l.height,`vertical`,h(n.xAxis,l.width,`bottom`)),n.xAxis&&(i.xAxis.setAttribute(`transform`,`translate(0,${l.height})`),g(i.xAxis,m,n.xAxis,l.width,`bottom`)),n.yAxis&&g(i.yAxis,v,n.yAxis,l.height,`left`);i.series.children.length>u.length;)i.series.removeChild(i.series.lastChild);let y=[];for(let e=0;e<u.length;e++){let r=u[e],a=i.series.children[e];a||(a=c(`g`,{class:`prism-line-series`}),i.series.appendChild(a));let o=Ae(d[e],m,v);y.push(o),ke(a,o,{color:U(e,r.color),curve:r.curve??`linear`,disposalSignal:t.disposalSignal,pointRadius:r.pointRadius??3,showPoints:r.showPoints??!1,strokeWidth:r.strokeWidth??2,transition:n.transition})}return a?.update(u.map((e,t)=>({color:U(t,e.color),name:e.name}))),o?.hide(),fe({crosshair:r,dims:()=>t.dimensions.value,getData:()=>d,getPoints:()=>y,getSeriesList:()=>(0,e.isReactive)(n.series)?n.series.value:n.series,onClick:n.onClick,onHover:n.onHover,svg:t.svg,tooltip:o})})}function Me(e,t,n,r,i,a,o,s,c,l,u=!1){let d=e.reduce((e,t)=>e+Math.max(0,t.value),0);if(d===0)return[];let f=o-a,p=r>0?Math.asin(Math.min(1,s/2/r)):0,m=a,h=e.length;return e.map((e,a)=>{let o=Math.max(0,e.value)/d*f,s=m,g=m+o;m+=o;let _=Math.min(p,o/2);return{capEnd:u&&a===h-1,capStart:u&&a===0,centerX:t,centerY:n,color:e.color??l(a),cornerRadius:c,endAngle:g,index:a,innerRadius:i,outerRadius:r,padAngle:_,slice:e,startAngle:s}})}function Z(e,t,n,r){return`${e+n*Math.sin(r)},${t-n*Math.cos(r)}`}function Q(e,t,n){return e+t*Math.sin(n)}function $(e,t,n){return e-t*Math.cos(n)}function Ne(e){let{capEnd:t,capStart:n,centerX:r,centerY:i,cornerRadius:a,endAngle:o,innerRadius:s,outerRadius:c,padAngle:l,startAngle:u}=e,d=o-u;if(d<=0)return``;if(d>=2*Math.PI-1e-6){let e=u+Math.PI;return s<=0?`M${Z(r,i,c,u)}A${c},${c},0,1,1,${Z(r,i,c,e)}A${c},${c},0,1,1,${Z(r,i,c,u)}Z`:[`M${Z(r,i,c,u)}`,`A${c},${c},0,1,1,${Z(r,i,c,e)}`,`A${c},${c},0,1,1,${Z(r,i,c,u)}`,`M${Z(r,i,s,u)}`,`A${s},${s},0,1,0,${Z(r,i,s,e)}`,`A${s},${s},0,1,0,${Z(r,i,s,u)}`,`Z`].join(``)}let f=n?u:u+l,p=t?o:o-l;if(p<=f)return``;let m=p-f;if(a<=0){let e=+(m>Math.PI);return s<=0?`M${r},${i}L${Z(r,i,c,f)}A${c},${c},0,${e},1,${Z(r,i,c,p)}Z`:[`M${Z(r,i,c,f)}`,`A${c},${c},0,${e},1,${Z(r,i,c,p)}`,`L${Z(r,i,s,p)}`,`A${s},${s},0,${e},0,${Z(r,i,s,f)}`,`Z`].join(``)}let h=Math.min(a/c,m/2),g=Math.min(a/s,m/2),_=Math.min(a,(c-s)/2),v=(c-s)/2,y=f+(n?0:h),b=p-(t?0:h),x=f+(n?0:g),S=p-(t?0:g),C=+(b-y>Math.PI),w=+(S-x>Math.PI),T=Q(r,c,f),E=$(i,c,f),D=Q(r,c,p),O=$(i,c,p),k=Q(r,s,f),A=$(i,s,f),j=Q(r,s,p),M=$(i,s,p),N=_/(c-s),P=`${T+(k-T)*N},${E+(A-E)*N}`,ee=`${D+(j-D)*N},${O+(M-O)*N}`,F=`${k+(T-k)*N},${A+(E-A)*N}`,te=`${j+(D-j)*N},${M+(O-M)*N}`,I=[];return n?I.push(`M${Z(r,i,c,f)}`):(I.push(`M${P}`),I.push(`Q${T},${E},${Z(r,i,c,y)}`)),I.push(`A${c},${c},0,${C},1,${Z(r,i,c,b)}`),t?I.push(`A${v},${v},0,0,1,${Z(r,i,s,p)}`):(I.push(`Q${D},${O},${ee}`),I.push(`L${te}`),I.push(`Q${j},${M},${Z(r,i,s,S)}`)),I.push(`A${s},${s},0,${w},0,${Z(r,i,s,x)}`),n?I.push(`A${v},${v},0,0,0,${Z(r,i,c,f)}`):I.push(`Q${k},${A},${F}`),I.push(`Z`),I.join(``)}function Pe(e){let t=(e.startAngle+e.endAngle)/2,n=(e.outerRadius+e.innerRadius)/2;return{x:e.centerX+n*Math.sin(t),y:e.centerY-n*Math.cos(t)}}var Fe=2*Math.PI,Ie=-Math.PI/2,Le=Math.PI/2;function Re(e){return e===`semi`?{end:Le,start:Ie}:{end:Fe,start:0}}function ze(t,n){let o=n.variant??`pie`,s=n.padPixels??(o===`pie`?0:8),u=n.cornerRadius??(o===`pie`?0:8),d=c(`circle`,{class:`prism-pie-bg`,"pointer-events":`none`}),f=c(`g`,{class:`prism-pie-slices`,"shape-rendering":`geometricPrecision`}),p=c(`g`,{class:`prism-pie-labels`,"pointer-events":`none`}),m=[],h=null;function g(e){for(;p.children.length>m.length;)p.removeChild(p.lastChild);for(let t=0;t<m.length;t++){let n=m[t],r=e[t];if(!r?.label)continue;let{x:i,y:a}=Pe(n),o=p.children[t];o||(o=c(`text`,{class:`prism-pie-label`}),p.appendChild(o)),l(o,{"dominant-baseline":`middle`,fill:`var(--prism-pie-label-color, #fff)`,"font-family":`var(--prism-font-family, system-ui)`,"font-size":`var(--prism-pie-label-size, 12px)`,"text-anchor":`middle`,x:i,y:a}),o.textContent=r.label}}let _=ce(t,{a11y:n.a11y,ariaLabel:n.ariaLabel,legend:n.legend,plugins:n.plugins,tooltip:n.tooltip},_=>{let{legend:v,svg:y,tooltip:b}=_;y.contains(d)||(y.appendChild(d),y.appendChild(f),y.appendChild(p));let{height:x,width:S}=_.dimensions.value,C=o===`semi`,w=S/2,T=C?x*.85:x/2,E=C?Math.min(w,T)-8:Math.min(S,x)/2-8,D=o===`pie`?0:Math.round(E*.55),O=n.innerRadius===void 0?D:n.innerRadius,k=Math.max(O+1,E),A=(0,e.isReactive)(n.data)?n.data.value:n.data,{end:j,start:M}=Re(o);for(m=Me(A,w,T,k,O,M,j,s,u,e=>U(e),!1),l(d,{cx:w,cy:T,r:O>0?O:0}),d.setAttribute(`style`,`fill:var(--prism-bg,#fff)`);f.children.length>m.length;)f.removeChild(f.lastChild);for(;p.children.length>m.length;)p.removeChild(p.lastChild);let N=i(n.transition,0),P=N.duration,ee=r(N.easing);for(let e=0;e<m.length;e++){let t=m[e],r=f.children[e];r||(r=c(`path`,{class:`prism-pie-slice`}),f.appendChild(r)),r.setAttribute(`fill`,t.color),r.setAttribute(`stroke`,`none`),r.style.cursor=n.onClick||n.onHover?`pointer`:``}if(h!==null&&(cancelAnimationFrame(h),h=null),P>0){let e=null,t=n=>{e===null&&(e=n);let r=ee(Math.min(1,(n-e)/P)),i=a(M,j,r);for(let e=0;e<m.length;e++){let t=m[e],n=f.children[e];if(n)if(i<=t.startAngle)l(n,{d:``});else{let e=Math.min(t.endAngle,i);l(n,{d:Ne({...t,endAngle:e})})}}r<1?h=requestAnimationFrame(t):(h=null,g(A))};h=requestAnimationFrame(t)}else{for(let e=0;e<m.length;e++){let t=m[e],n=f.children[e];n&&l(n,{d:Ne(t)})}g(A)}return v?.update(m.map(e=>({color:e.color,name:e.slice.label??``}))),b?.hide(),{onClick:e=>{if(!n.onClick)return;let t=y.getBoundingClientRect(),r=e.clientX-t.left,i=e.clientY-t.top,a=Be(m,r,i,o);a>=0&&n.onClick(m[a].slice,a)},onMouseLeave:()=>{n.onHover?.(null,null),b?.hide()},onMouseMove:e=>{let r=y.getBoundingClientRect(),i=e.clientX-r.left,a=e.clientY-r.top,s=Be(m,i,a,o);if(s>=0){let e=m[s];n.onHover?.(e.slice,s);let{x:i,y:a}=Pe(e),o=t.getBoundingClientRect();b?.show(i+(r.left-o.left),a+(r.top-o.top),{key:s,value:e.slice.value},{color:e.color,data:[],name:e.slice.label??``})}else n.onHover?.(null,null),b?.hide()}}});return{get disposalSignal(){return _.disposalSignal},dispose(){h!==null&&(cancelAnimationFrame(h),h=null),_.dispose()},get disposed(){return _.disposed},el:_.el,[Symbol.dispose](){this.dispose()}}}function Be(e,t,n,r){for(let i=0;i<e.length;i++){let a=e[i],o=t-a.centerX,s=n-a.centerY,c=Math.sqrt(o*o+s*s);if(c<a.outerRadius&&c>=a.innerRadius){let e=Math.atan2(o,-s);if(r===`semi`){if(e>=a.startAngle-1e-9&&e<=a.endAngle+1e-9)return i}else{let t=e<0?e+Fe:e;if(t>=a.startAngle-1e-9&&t<=a.endAngle+1e-9)return i}}}return-1}function Ve(e,t,n){if(e.length===0)return[];let r=t/Math.max(1,e.length-1),i=Math.min(...e),a=Math.max(...e)-i||1;return e.map((e,t)=>({x:t*r,y:n-(e-i)/a*n}))}function He(e,t,n,r=`linear`){if(e.length===0)return``;let i=Ve(e,t,n);return q(i,i.map(e=>({x:e.x,y:n})),r??`linear`)}function Ue(e,t,n,r){if(e.length===0)return``;let i=Ve(e,t,n);return r===`monotone`?G(i):r===`step`?K(i):W(i)}function We(e,t,n,o,s,u,d){let f=t.length,p=Math.max(1,n/f-1),m=n/f,h=Math.min(0,...t),g=Math.max(...t)-h||1,_=i(u,0),v=_.duration,y=r(_.easing);for(;e.children.length>f;){let t=e.lastElementChild;t&&e.removeChild(t)}for(let n=0;n<f;n++){let r=Math.max(1,(t[n]-h)/g*o),i=o-r,u=e.children[n];if(u||(u=c(`rect`,{class:`prism-spark-bar`}),e.appendChild(u)),l(u,{fill:s,width:p,x:n*m}),v>0&&!u.hasAttribute(`data-init`)){u.setAttribute(`data-init`,`1`),l(u,{height:0,y:o});let e=null,t={h:0,y:o},n={h:r,y:i},s=r=>{if(d?.aborted)return;e===null&&(e=r);let i=y(Math.min(1,(r-e)/v));l(u,{height:a(t.h,n.h,i),y:a(t.y,n.y,i)}),i<1&&requestAnimationFrame(s)};requestAnimationFrame(s)}else u.setAttribute(`data-init`,`1`),l(u,{height:r,y:i})}}function Ge(e){return e.length>0&&e[0]!==null&&typeof e[0]==`object`}function Ke(e,t,n,r,i,a,o){let s=Math.min(i,n/2,r/2),c=a?s:0,l=a?s:0,u=o?s:0,d=o?s:0;return[`M${e+c},${t}`,`H${e+n-u}`,u?`Q${e+n},${t} ${e+n},${t+u}`:``,`V${t+r-d}`,d?`Q${e+n},${t+r} ${e+n-d},${t+r}`:``,`H${e+l}`,l?`Q${e},${t+r} ${e},${t+r-l}`:``,`V${t+c}`,c?`Q${e},${t} ${e+c},${t}`:``,`Z`].filter(Boolean).join(``)}function qe(e){return`var(--prism-color-${e%8+1})`}function Je(t,n){let r=n.variant??`line`,i=n.color??`var(--prism-color-1)`,a=n.curve??`linear`,o=n.strokeWidth??1.5,s=n.fillOpacity??.2,u=ae(t,{...n.ariaLabel?{ariaLabel:n.ariaLabel}:{ariaHidden:!0},margin:{bottom:0,left:0,right:0,top:0}}),{svg:d}=u;d.classList.add(`prism-sparkline`);let f=c(`g`,{class:`prism-spark-inner`});d.appendChild(f);let p;function m(){let{height:t,width:d}=u.dimensions.value,p=(0,e.isReactive)(n.data)?n.data.value:n.data;for(;f.firstChild;)f.removeChild(f.firstChild);if(p.length!==0){if(r===`stack`&&Ge(p)){let e=c(`g`,{class:`prism-spark-stack`});f.appendChild(e);let r=n.cornerRadius??4,i=p,a=i.reduce((e,t)=>e+Math.max(0,t.value),0);if(a>0){let o=(n.padPixels??0)/2,s=0;i.forEach((n,u)=>{let f=Math.round(s);s+=Math.max(0,n.value)/a*d;let p=u===i.length-1?d:Math.round(s),m=u===0,h=u===i.length-1,g=Ke(f+(m?0:o),0,Math.max(0,p-f-(m?0:o)-(h?0:o)),t,r,m,h),_=c(`path`,{class:`prism-spark-stack-segment`});l(_,{d:g,fill:n.color??qe(u)}),e.appendChild(_)})}}else if(r===`bar`){let e=c(`g`,{class:`prism-spark-bars`});f.appendChild(e),We(e,p,d,t,i,n.transition,g.signal)}else{if(r===`area`){let e=c(`path`,{class:`prism-spark-fill`});l(e,{d:He(p,d,t,a),fill:i,"fill-opacity":s,stroke:`none`}),f.appendChild(e)}let e=c(`path`,{class:`prism-spark-line`});l(e,{d:Ue(p,d,t,a),fill:`none`,stroke:i,"stroke-width":o}),f.appendChild(e)}Ge(p)||h(p)}}function h(e){if(p?.(),p=void 0,!n.onHover&&!n.onClick||e.length<=1)return;let{width:t}=u.dimensions.value;d.style.cursor=`crosshair`;let r=t/(e.length-1),i=t=>{let i=d.getBoundingClientRect(),a=t.clientX-i.left,o=Math.max(0,Math.min(e.length-1,Math.round(a/r)));n.onHover?.(o,e[o])},a=()=>n.onHover?.(null,null),o=t=>{if(!n.onClick)return;let i=d.getBoundingClientRect(),a=t.clientX-i.left,o=Math.max(0,Math.min(e.length-1,Math.round(a/r)));n.onClick(o,e[o])};d.addEventListener(`mousemove`,i),d.addEventListener(`mouseleave`,a),d.addEventListener(`click`,o),p=()=>{d.removeEventListener(`mousemove`,i),d.removeEventListener(`mouseleave`,a),d.removeEventListener(`click`,o)}}let g=new AbortController,_=(0,e.createScope)();_.run(()=>{(0,e.effect)(()=>{m()},{scheduler:`microtask`})});let v=!1;return{get disposalSignal(){return g.signal},dispose(){v||(v=!0,g.abort(),p?.(),_.dispose(),u.dispose())},get disposed(){return v},el:d,[Symbol.dispose](){this.dispose()}}}exports.PrismDisposedError=te,exports.PrismError=F,exports.PrismRenderError=I,exports.animate=o,exports.bandScale=be,exports.createAreaChart=ye,exports.createBarChart=De,exports.createLineChart=je,exports.createPieChart=ze,exports.createSparkline=Je,exports.linearScale=b,exports.resetTheme=he,exports.seriesColor=U,exports.setTheme=me,exports.timeScale=A;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require("@vielzeug/ripple"),t=require("@vielzeug/orbit");var n={"ease-in":e=>e*e,"ease-in-out":e=>e<.5?2*e*e:1-(-2*e+2)**2/2,"ease-out":e=>1-(1-e)*(1-e),linear:e=>e};function r(e){return typeof e==`function`?e:e!==void 0&&Object.hasOwn(n,e)?n[e]:n[`ease-out`]}function i(e,t=300){let n=e?.preference??`system`,r=typeof matchMedia<`u`&&matchMedia(`(prefers-reduced-motion: reduce)`).matches,i=n===`never`||n===`system`&&r?0:e?.duration??t;return{...e,duration:i,stagger:Math.max(0,e?.stagger??0)}}function a(e,t,n){return e+(t-e)*n}function o(e,t,n,o){let s=i(t),c=s.duration,l=r(s.easing),u=s.stagger;if(c===0||e.length===0){for(let t of e)for(let[e,{to:n}]of Object.entries(t.attrs))t.el.setAttribute(e,String(n));return n?.(),()=>{}}let d=null,f=!1,p=Math.max(c,c+u*(e.length-1));function m(t){if(f||o?.aborted)return;d===null&&(d=t);let r=t-d;for(let t=0;t<e.length;t++){let n=e[t],i=u*t,o=Math.max(0,r-i),s=Math.min(1,o/c),d=l(s);for(let[e,{from:t,to:r}]of Object.entries(n.attrs))n.el.setAttribute(e,String(a(t,r,d)))}r<p?requestAnimationFrame(m):n?.()}return requestAnimationFrame(m),()=>{f=!0}}var s=`http://www.w3.org/2000/svg`;function c(e,t){let n=document.createElementNS(s,e);return t&&l(n,t),n}function l(e,t){for(let[n,r]of Object.entries(t)){if(r===void 0){e.removeAttribute(n);continue}typeof r==`number`&&!Number.isFinite(r)&&`${n}${e.tagName}${r}`,e.setAttribute(n,String(r))}}function u(e){for(;e.firstChild;)e.removeChild(e.firstChild)}function d(e,t){let n=c(`text`,t);return n.textContent=e,n}function f(e){return typeof e.bandwidth==`function`}function p(e,t){return f(e)?e.map(t)+e.bandwidth()/2:e.map(t)}var m=e=>e instanceof Date?e.toLocaleDateString(void 0,{month:`short`,year:`numeric`}):String(e);function h(e,t,n){let r=e.position??n,i=r===`bottom`||r===`top`?Math.max(2,Math.floor(t/80)):Math.max(2,Math.floor(t/50));return e.tickCount??i}function g(e,t,n,r,i=`bottom`){u(e);let a=n.position??i,o=a===`bottom`||a===`top`,s=a===`top`||a===`left`,f=s?-1:1,g=c(`line`,{"aria-hidden":`true`,class:`prism-axis-line`,x1:0,x2:o?r:0,y1:0,y2:o?0:r});e.appendChild(g);let _=t.ticks(h(n,r,i)),v=n.tickFormat??m;for(let n of _){let r=p(t,n),i=c(`line`,{"aria-hidden":`true`,class:`prism-axis-tick`,x1:o?r:0,x2:o?r:6*f,y1:o?0:r,y2:o?6*f:r});e.appendChild(i);let a=d(v(n),{"aria-hidden":`true`,class:`prism-axis-label`,"dominant-baseline":o?s?`auto`:`hanging`:`middle`,"text-anchor":o?`middle`:s?`end`:`start`,x:o?r:6*f*1.5,y:o?6*f*1.5:r});e.appendChild(a)}if(n.label){let t=d(n.label,{class:`prism-axis-title`,"dominant-baseline":`middle`,"text-anchor":`middle`});o?l(t,{x:r/2,y:6*f*3.5}):l(t,{transform:`translate(${6*f*4}, ${r/2}) rotate(-90)`}),e.appendChild(t)}}function _(e,t,n,r,i,a=10){u(e);let o=n!==!0&&n.color||void 0,s=n!==!0&&n.dash||void 0,l=t.ticks(a);for(let n of l){let a=p(t,n),l={class:`prism-grid-line`,stroke:o??`var(--prism-grid-color)`,"stroke-dasharray":s,"stroke-opacity":`var(--prism-grid-opacity)`};i===`vertical`?Object.assign(l,{x1:a,x2:a,y1:0,y2:r}):Object.assign(l,{x1:0,x2:r,y1:a,y2:a}),e.appendChild(c(`line`,l))}}function v(e,t){let n=Math.floor(Math.log10(e)),r=e/10**n,i;return i=t?r<1.5?1:r<3?2:r<7?5:10:r<=1?1:r<=2?2:r<=5?5:10,i*10**n}function y(e,t,n){if(!Number.isFinite(e)||!Number.isFinite(t))return[0,1];if(e>t&&([e,t]=[t,e]),e===t)return[e-1,t+1];let r=v(v(t-e,!1)/Math.max(1,n-1),!0);return[Math.floor(e/r)*r,Math.ceil(t/r)*r]}function b(e){let t=()=>e.nice===!1?e.domain:y(e.domain[0],e.domain[1],10),n=()=>e.range;return{get domain(){return t()},invert(e){let[r,i]=t(),[a,o]=n();return o===a?r:r+(e-a)/(o-a)*(i-r)},map(r){let[i,a]=t(),[o,s]=n();if(a===i)return o;let c=(r-i)/(a-i);return e.clamp&&(c=Math.max(0,Math.min(1,c))),o+c*(s-o)},get range(){return n()},ticks(e=10){if(e<=0)return[];let[n,r]=t();if(n===r||e===1)return[n];let i=Math.min(n,r),a=Math.max(n,r),o=v(v(a-i,!1)/(e-1),!0),s=Math.ceil(i/o)*o,c=Math.floor(a/o)*o,l=[];for(let e=s;e<=c+o*.5;e+=o)l.push(Math.round(e*0xe8d4a51000)/0xe8d4a51000);return l}}}var x=1e3,S=60*x,C=60*S,w=24*C,T=30*w,E=365*w,D=[x,5*x,15*x,30*x,S,5*S,15*S,30*S,C,3*C,6*C,12*C,w,7*w,T,3*T,6*T,E];function O(e,t){let n=Math.abs(e)/Math.max(1,t);for(let e of D)if(e>=n)return e;return E}function k(e,t){let[n,r]=e;n.getTime()>r.getTime()&&([n,r]=[r,n]);let i=O(r.getTime()-n.getTime(),t);return[new Date(Math.floor(n.getTime()/i)*i),new Date(Math.ceil(r.getTime()/i)*i)]}function A(e){let t=()=>e.nice===!1?e.domain:k(e.domain,10),n=()=>e.range;return{get domain(){return t()},invert(e){let[r,i]=t(),[a,o]=n();if(o===a)return r;let s=(e-a)/(o-a);return new Date(r.getTime()+s*(i.getTime()-r.getTime()))},map(e){let[r,i]=t(),[a,o]=n(),s=i.getTime()-r.getTime();return s===0?a:a+(e.getTime()-r.getTime())/s*(o-a)},get range(){return n()},ticks(e=10){let[n,r]=t(),i=O(r.getTime()-n.getTime(),e),a=Math.ceil(n.getTime()/i)*i,o=[];for(let e=a;e<=r.getTime();e+=i)o.push(new Date(e));return o}}}function j(e,t){if(e.length===0||e.some(e=>e==null)||e.some(e=>typeof e==`number`&&!Number.isFinite(e)))return b({domain:[0,1],range:[0,t]});if(e[0]instanceof Date){let n=e,r=Math.min(...n.map(Number)),i=Math.max(...n.map(Number));return A({domain:[new Date(r),new Date(r===i?i+1:i)],range:[0,t]})}let n=e,r=Math.min(...n),i=Math.max(...n);return b({domain:[r,r===i?i+1:i],nice:!1,range:[0,t]})}function M(e,t,n=!0){if(e.length===0||e.some(e=>e==null)||e.some(e=>!Number.isFinite(e)))return b({domain:[0,1],range:[t,0]});let r=Math.min(...e),i=n?Math.min(0,r):r,a=Math.max(...e);return b({domain:[i,i===a?a+1:a],range:[t,0]})}function N(e){return e===!0?`bottom`:e.position??`bottom`}function P(e,t){let n=N(t),r=document.createElement(`div`);r.className=`prism-legend prism-legend-${n}`,n===`top`?e.insertBefore(r,e.firstChild):e.appendChild(r);let i=()=>{r.remove()};return{dispose:i,el:r,[Symbol.dispose]:i,update(e){r.innerHTML=``;for(let t of e){let e=document.createElement(`div`);e.className=`prism-legend-item`;let n=document.createElement(`span`);n.className=`prism-legend-dot`,n.style.backgroundColor=t.color;let i=document.createElement(`span`);i.className=`prism-legend-label`,i.textContent=t.name,e.appendChild(n),e.appendChild(i),r.appendChild(e)}}}}function ee(e,n){getComputedStyle(e).position===`static`&&(e.style.position=`relative`);let r=document.createElement(`div`);r.className=`prism-tooltip`,r.style.position=`absolute`,r.style.pointerEvents=`none`,r.style.top=`0`,r.style.left=`0`,r.setAttribute(`role`,`status`),r.setAttribute(`aria-live`,`polite`),e.appendChild(r);let i=n!==!0&&n?.offset||8,a=n===!0?void 0:n?.render,o=n===!0?void 0:n?.sanitize,s=null,c=null,l=!1,u=()=>{c!==null&&(clearTimeout(c),c=null)},d=()=>{s!==null&&(cancelAnimationFrame(s),s=null)},f=()=>{d(),u(),r.remove()};return{dispose:f,el:r,hide(){d(),u(),l=!1,r.style.opacity=`0`,c=setTimeout(()=>{c=null,l||(r.textContent=``)},150)},show(n,c,d,f){if(!e.isConnected)return;if(u(),a){let e=a(d,f);o?r.innerHTML=o(e):r.textContent=e}else r.textContent=`${f.name}: ${d.value}`;let{x:p,y:m}=(0,t.computePosition)({getBoundingClientRect:()=>{let t=e.getBoundingClientRect();return{bottom:t.top+c,height:0,left:t.left+n,right:t.left+n,top:t.top+c,width:0,x:t.left+n,y:t.top+c}}},r,{containingBlock:e,middleware:[(0,t.offset)(i),(0,t.flip)(),(0,t.shift)({padding:8})],placement:`top`});if(r.style.left=`${p}px`,r.style.top=`${m}px`,l){s===null&&(r.style.opacity=`1`);return}l=!0,r.style.opacity=`0`,s=requestAnimationFrame(()=>{s=null,l&&(r.style.opacity=`1`)})},[Symbol.dispose]:f}}var te=class extends Error{constructor(e,t){super(e,t),this.name=new.target.name,Object.setPrototypeOf(this,new.target.prototype)}},ne=class extends te{},F={bottom:40,left:50,right:20,top:20};function re(e){return{...F,...e}}function I(e,t,n){return{height:Math.max(0,t-n.top-n.bottom),width:Math.max(0,e-n.left-n.right)}}function ie(e,t){let n=null,r=new ResizeObserver(e=>{n!==null&&cancelAnimationFrame(n),n=requestAnimationFrame(()=>{n=null;let r=e[0];if(r){let{height:e,width:n}=r.contentRect;t(n,e)}})});return r.observe(e),()=>{n!==null&&cancelAnimationFrame(n),r.disconnect()}}function ae(t,n){if(!(typeof t==`object`&&t&&t.nodeType===1&&typeof t.appendChild==`function`&&typeof t.getBoundingClientRect==`function`)){let e=t;throw new ne(`Invalid chart configuration: \`container\` must be a DOM Element, received ${e===null?`null`:typeof e==`object`?e.constructor?.name??`object`:typeof e}.`)}let r=re(n.margin),i=n.a11y,a=c(`svg`,{...n.ariaHidden||i?.decorative?{"aria-hidden":`true`}:{...i?{"aria-label":i.ariaLabel,tabindex:`0`}:{},role:`img`},class:`prism-chart`,style:`display:block;width:100%;height:100%`}),o=c(`g`,{class:`prism-chart-area`,transform:`translate(${r.left},${r.top})`});a.appendChild(o);let s=t.getBoundingClientRect();s.width===0||s.height;let u=typeof getComputedStyle<`u`?getComputedStyle(t):null;u&&u.position;let d=(0,e.signal)({height:s.height||300,margin:r,width:s.width||600}),f=ie(t,(e,t)=>{d.value={height:t,margin:r,width:e},l(a,{height:t,viewBox:`0 0 ${e} ${t}`,width:e})}),p=s.width||600,m=s.height||300;return l(a,{height:m,viewBox:`0 0 ${p} ${m}`,width:p}),t.appendChild(a),{chartArea:o,dimensions:d,dispose(){f(),a.remove()},svg:a}}function L(e,t,n,r){u(e.series),u(e.grid),u(e.xAxis),u(e.yAxis),t?.update([]),n?.hide(),r?.hide()}function oe(t,n,r,i){let a=ae(t,{a11y:n.a11y,margin:n.margin}),o=n.tooltip?ee(t,n.tooltip):null,s=n.legend?P(t,n.legend):null,c=new AbortController,l=r(a,o,s,c.signal),u=!1,d=se(a.svg),f=(0,e.createScope)();f.run(()=>{(0,e.effect)(()=>{u||d.attach(i(l))},{scheduler:`microtask`})});let p=[];if(n.plugins){let e={container:t,dimensions:a.dimensions,disposalSignal:c.signal,svg:a.svg};for(let t of n.plugins)try{t.install(e),p.push(t)}catch{}}return{get disposalSignal(){return c.signal},dispose(){if(!u){u=!0,c.abort(),d.detach();for(let e of p)try{e.dispose()}catch{}o?.dispose(),s?.dispose(),f.dispose(),a.dispose()}},get disposed(){return u},el:a.svg,[Symbol.dispose](){this.dispose()}}}function se(e){let t=null;return{attach(n){t&&=(t.onMouseMove&&e.removeEventListener(`mousemove`,t.onMouseMove),t.onMouseLeave&&e.removeEventListener(`mouseleave`,t.onMouseLeave),t.onClick&&e.removeEventListener(`click`,t.onClick),t.onKeyDown&&e.removeEventListener(`keydown`,t.onKeyDown),null),n&&(t=n,n.onMouseMove&&e.addEventListener(`mousemove`,n.onMouseMove),n.onMouseLeave&&e.addEventListener(`mouseleave`,n.onMouseLeave),n.onClick&&e.addEventListener(`click`,n.onClick),n.onKeyDown&&e.addEventListener(`keydown`,n.onKeyDown))},detach(){this.attach(void 0)}}}function R(e,t,n){return oe(e,t,(t,n,r,i)=>{let a={grid:c(`g`,{"aria-hidden":`true`,class:`prism-grid`}),series:c(`g`,{class:`prism-series`}),xAxis:c(`g`,{class:`prism-x-axis`}),yAxis:c(`g`,{class:`prism-y-axis`})};return t.chartArea.appendChild(a.grid),t.chartArea.appendChild(a.xAxis),t.chartArea.appendChild(a.yAxis),t.chartArea.appendChild(a.series),{chartArea:t.chartArea,container:e,dimensions:t.dimensions,disposalSignal:i,groups:a,legend:r,svg:t.svg,tooltip:n}},n)}function ce(e,t,n){return oe(e,t,(t,n,r,i)=>({container:e,dimensions:t.dimensions,disposalSignal:i,legend:r,svg:t.svg,tooltip:n}),n)}function le(e,t){let n=t===!0||t?.vertical!==!1,r=t!==!0&&t?.horizontal===!0,i=t===!0||t?.snap!==!1,a=c(`g`,{"aria-hidden":`true`,class:`prism-crosshair`,style:`display:none`}),o=n?c(`line`,{class:`prism-crosshair-v`,"stroke-dasharray":`var(--prism-crosshair-dash, 4 2)`}):null,s=r?c(`line`,{class:`prism-crosshair-h`,"stroke-dasharray":`var(--prism-crosshair-dash, 4 2)`}):null;o&&a.appendChild(o),s&&a.appendChild(s),e.appendChild(a);let u=c(`text`,{"aria-live":`polite`,class:`prism-crosshair-live`,role:`status`,x:-9999,y:-9999});return e.appendChild(u),{hide(){a.style.display=`none`,u.textContent=``},show(e,t,n,r,i){a.style.display=``,o&&l(o,{x1:e,x2:e,y1:0,y2:r}),s&&l(s,{x1:0,x2:n,y1:t,y2:t}),i!==void 0&&(u.textContent=i)},snap:i}}function z(e){return e instanceof Date?`date:${e.getTime()}`:`${typeof e}:${String(e)}`}function ue(e,t){let n=[],r=new Map;return{domain:n,labels:r,series:e.map((e,i)=>{let a=new Map;for(let o of t[i]??[]){let t=z(o.key);if(a.has(t)){`${String(o.key)}${e.name}`;continue}a.set(t,o),r.has(t)||(r.set(t,o.key),n.push(t))}return{byKey:a,config:e}})}}function B(e,t,n,r){let i=e.getBoundingClientRect();return{x:t.clientX-i.left-n,y:t.clientY-i.top-r}}function de(e,t,n){let r=null,i=1/0;for(let a=0;a<t.length;a++)for(let o=0;o<(t[a]?.length??0);o++){let s=e[a]?.[o],c=t[a]?.[o];if(!s||!c)continue;let l=Math.abs(c.x-n);l<i&&(i=l,r=s.key)}return r}function V(e,t,n,r){let i=z(n),a=null,o=1/0;for(let n=0;n<t.length;n++){let s=e[n]?.findIndex(e=>z(e.key)===i)??-1,c=s===-1?void 0:e[n]?.[s],l=s===-1?void 0:t[n]?.[s];if(!c||!l)continue;let u=Number.isFinite(r)?Math.abs(l.y-r):0;u<o&&(o=u,a={datum:c,point:l,seriesIndex:n})}return a}function fe(e){let t=0;return{onClick:t=>{if(!e.onClick)return;let n=e.getPoints();if(n.length===0||n[0].length===0)return;let r=e.dims(),i=B(e.svg,t,r.margin.left,r.margin.top),a=I(r.width,r.height,r.margin);if(i.x<0||i.x>a.width||i.y<0||i.y>a.height)return;let o=de(e.getData(),n,i.x);if(o===null)return;let s=V(e.getData(),n,o,i.y),c=s?e.getSeriesList()[s.seriesIndex]:void 0;s&&c&&e.onClick({datum:s.datum,originalEvent:t,series:c})},onKeyDown:n=>{let r=e.getData(),i=e.getPoints(),a=[...new Map(r.flat().map(e=>[z(e.key),e.key])).values()];if(a.length!==0){if(n.key===`ArrowLeft`||n.key===`ArrowRight`){n.preventDefault(),t=Math.max(0,Math.min(a.length-1,t+(n.key===`ArrowLeft`?-1:1)));let o=a[t],s=V(r,i,o,1/0),c=s?e.getSeriesList()[s.seriesIndex]:void 0;if(!s||!c)return;e.crosshair?.show(s.point.x,s.point.y,e.dims().width,e.dims().height,`${c.name}: ${s.datum.value}`),e.tooltip?.show(s.point.x+e.dims().margin.left,s.point.y+e.dims().margin.top,s.datum,c),e.onHover?.({datum:s.datum,originalEvent:n,series:c})}if((n.key===`Enter`||n.key===` `)&&e.onClick){n.preventDefault();let o=a[t],s=V(r,i,o,1/0),c=s?e.getSeriesList()[s.seriesIndex]:void 0;s&&c&&e.onClick({datum:s.datum,originalEvent:n,series:c})}n.key===`Escape`&&(e.crosshair?.hide(),e.tooltip?.hide(),e.onHover?.(null))}},onMouseLeave:()=>{e.crosshair?.hide(),e.tooltip?.hide(),e.onHover?.(null)},onMouseMove:t=>{let n=e.getPoints();if(n.length===0||n[0].length===0)return;let r=e.dims(),i=B(e.svg,t,r.margin.left,r.margin.top),a=I(r.width,r.height,r.margin);if(i.x<0||i.x>a.width||i.y<0||i.y>a.height){e.crosshair?.hide(),e.tooltip?.hide();return}let o=de(e.getData(),n,i.x);if(o===null)return;let s=V(e.getData(),n,o,i.y),c=s?e.getSeriesList()[s.seriesIndex]:void 0,l=e.crosshair?.snap===!1?i.x:s?.point.x??i.x,u=e.crosshair?.snap===!1?i.y:s?.point.y??i.y;e.crosshair?.show(l,u,a.width,a.height,c&&s?`${c.name}: ${s.datum.value}`:void 0),s&&c&&(e.tooltip?.show(s.point.x+r.margin.left,s.point.y+r.margin.top,s.datum,c),e.onHover?.({datum:s.datum,originalEvent:t,series:c}))}}}var H=8;function pe(e){let t=document.documentElement;if(e.colors)for(let n=0;n<H;n++){let r=e.colors[n];r?t.style.setProperty(`--prism-color-${n+1}`,r):t.style.removeProperty(`--prism-color-${n+1}`)}e.fontFamily&&t.style.setProperty(`--prism-font-family`,e.fontFamily),e.gridColor&&t.style.setProperty(`--prism-grid-color`,e.gridColor),e.gridOpacity!==void 0&&t.style.setProperty(`--prism-grid-opacity`,String(e.gridOpacity))}function me(){let e=document.documentElement;for(let t=1;t<=H;t++)e.style.removeProperty(`--prism-color-${t}`);e.style.removeProperty(`--prism-font-family`),e.style.removeProperty(`--prism-grid-color`),e.style.removeProperty(`--prism-grid-opacity`)}function U(e,t){return t??`var(--prism-color-${e%H+1})`}function W(e){if(e.length===0)return``;let t=`M${e[0].x},${e[0].y}`;for(let n=1;n<e.length;n++)t+=`L${e[n].x},${e[n].y}`;return t}function G(e){if(e.length<3)return W(e);let t=e.length,n=[];for(let r=0;r<t;r++)r===0?n.push({x:e[1].x-e[0].x,y:e[1].y-e[0].y}):r===t-1?n.push({x:e[t-1].x-e[t-2].x,y:e[t-1].y-e[t-2].y}):n.push({x:(e[r+1].x-e[r-1].x)/2,y:(e[r+1].y-e[r-1].y)/2});let r=`M${e[0].x},${e[0].y}`;for(let i=0;i<t-1;i++){let t=e[i],a=e[i+1],o=n[i],s=n[i+1],c=(a.x-t.x)/3;r+=`C${t.x+c},${t.y+o.y/3},${a.x-c},${a.y-s.y/3},${a.x},${a.y}`}return r}function K(e){if(e.length===0)return``;let t=`M${e[0].x},${e[0].y}`;for(let n=1;n<e.length;n++){let r=(e[n-1].x+e[n].x)/2;t+=`H${r}V${e[n].y}H${e[n].x}`}return t}function q(e,t,n=`linear`){if(e.length===0)return``;let r=n===`monotone`?G(e):n===`step`?K(e):W(e),i=[...t].reverse();if(i.length>0){r+=`L${i[0].x},${i[0].y}`;for(let e=1;e<i.length;e++)r+=`L${i[e].x},${i[e].y}`}return r+=`Z`,r}var J=new WeakMap,Y=new WeakMap;function he(e,t){return t===`monotone`?G(e):t===`step`?K(e):W(e)}function ge(e,t,n,o){let s=i(o.transition,0),u=s.duration,d=r(s.easing),f=e.querySelector(`.prism-area-fill`);f||(f=c(`path`,{class:`prism-area-fill`}),e.appendChild(f)),l(f,{fill:o.color,"fill-opacity":o.fillOpacity,stroke:`none`});let p=null;if(o.showLine?(p=e.querySelector(`.prism-area-line`),p||(p=c(`path`,{class:`prism-area-line`,fill:`none`}),e.appendChild(p)),l(p,{stroke:o.color,"stroke-width":2})):e.querySelector(`.prism-area-line`)?.remove(),u===0){let e=t.map(e=>({x:e.x,y:n}));l(f,{d:q(t,e,o.curve)}),p&&l(p,{d:he(t,o.curve)});return}if(J.get(e)?.(),!f.hasAttribute(`d`)){let r=t.map(e=>({x:e.x,y:n}));l(f,{d:q(t,r,o.curve)}),p&&l(p,{d:he(t,o.curve)}),Y.set(e,t);return}let m=Y.get(e)??t,h=t.map((e,n)=>m[n]??m[m.length-1]??t[n]),g=null;function _(r){if(o.disposalSignal?.aborted){J.delete(e);return}g===null&&(g=r);let i=Math.min(1,(r-g)/u),s=d(i),c=t.map((e,t)=>({x:a(h[t].x,e.x,s),y:a(h[t].y,e.y,s)})),m=c.map(e=>({x:e.x,y:n}));if(l(f,{d:q(c,m,o.curve)}),p&&l(p,{d:he(c,o.curve)}),i<1){let t=requestAnimationFrame(_);J.set(e,()=>cancelAnimationFrame(t))}else J.delete(e),Y.set(e,t)}Y.set(e,h);let v=requestAnimationFrame(_);J.set(e,()=>cancelAnimationFrame(v))}function _e(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)}))}function ve(t,n){let r=null;return R(t,n,t=>{let{groups:i,legend:a,tooltip:o}=t,s=t.dimensions.value,l=I(s.width,s.height,s.margin),u=(0,e.isReactive)(n.series)?n.series.value:n.series,d=u.map(t=>(0,e.isReactive)(t.data)?t.data.value:t.data),f=d.flat().map(e=>e.key),p=d.flat().map(e=>e.value);if(f.length===0){L(i,a,o,r);return}n.crosshair&&!r&&(r=le(t.chartArea,n.crosshair));let m=j(f,l.width),v=M(p,l.height),y=v.map(0);for(n.yAxis?.grid&&_(i.grid,v,n.yAxis.grid,l.width,`horizontal`,h(n.yAxis,l.height,`left`)),n.xAxis?.grid&&_(i.grid,m,n.xAxis.grid,l.height,`vertical`,h(n.xAxis,l.width,`bottom`)),n.xAxis&&(i.xAxis.setAttribute(`transform`,`translate(0,${l.height})`),g(i.xAxis,m,n.xAxis,l.width,`bottom`)),n.yAxis&&g(i.yAxis,v,n.yAxis,l.height,`left`);i.series.children.length>u.length;)i.series.removeChild(i.series.lastChild);let b=[];for(let e=0;e<u.length;e++){let r=u[e],a=i.series.children[e];a||(a=c(`g`,{class:`prism-area-series`}),i.series.appendChild(a));let o=_e(d[e],m,v);b.push(o),ge(a,o,y,{color:U(e,r.color),curve:r.curve??`linear`,disposalSignal:t.disposalSignal,fillOpacity:r.fillOpacity??.3,showLine:r.showLine!==!1,transition:n.transition})}return a?.update(u.map((e,t)=>({color:U(t,e.color),name:e.name}))),o?.hide(),fe({crosshair:r,dims:()=>t.dimensions.value,getData:()=>d,getPoints:()=>b,getSeriesList:()=>(0,e.isReactive)(n.series)?n.series.value:n.series,onClick:n.onClick,onHover:n.onHover,svg:t.svg,tooltip:o})})}function ye(e){let t=()=>e.domain,n=()=>e.range,r=()=>{let r=t().length;if(r===0)return 0;let[i,a]=n(),o=e.padding??.1;return(a-i)/(r+(r-1)*o+(e.paddingOuter??o)*2)};return{bandwidth:r,get domain(){return t()},gap(){let t=e.padding??.1;return r()*t},map(i){let a=t().indexOf(i);if(a===-1)return`${i}`,0;let[o]=n(),s=r(),c=e.padding??.1;return o+(e.paddingOuter??c)*s+a*(s+s*c)},get range(){return n()},ticks(e){let n=t();if(e===void 0||e>=n.length)return[...n];if(e<=0)return[];let r=Math.ceil(n.length/e);return n.filter((e,t)=>t%r===0)}}}function be(e,t,n){for(let r=0;r<t.length;r++){let i=n.bandCenter(t[r])-n.bandwidth/2;if(e>=i&&e<i+n.bandwidth)return r}return-1}function xe(e,t,n,r,i){if(r.stacked)if(r.horizontal){for(let n=0;n<i;n++)if(r.valueScale.map(r.stackedTops[n]?.[t]??0)>=e.x)return n;return i-1}else{for(let n=0;n<i;n++)if(r.valueScale.map(r.stackedTops[n]?.[t]??0)<=e.y)return n;return i-1}{let a=r.bandwidth/i,o=r.bandCenter(n[t])-r.bandwidth/2,s=r.horizontal?e.y-o:e.x-o,c=Math.floor(s/a);return Math.max(0,Math.min(i-1,c))}}function Se(e,t,n,r,i){let a=i-1,o=r.stacked?r.stackedTops[a]?.[t]??0:Math.max(...Array.from({length:i},(e,r)=>n[r]?.[t]?.value??0)),s=r.valueScale.map(o);return r.horizontal?e.x>s:e.y<s}var Ce=new WeakMap;function we(e,t,n,r,i,a){for(;e.children.length>t.length;){let t=e.lastElementChild;t&&e.removeChild(t)}let s=n.bandwidth(),u=a.stacked?s:s/a.seriesCount,d=a.stacked?0:u*a.seriesIndex,f=a.horizontal??!1,p=[],m=[];for(let o=0;o<t.length;o++){let s=t[o],h=n.map(s.key)+d,g=a.baselineYs?a.baselineYs[o]:i,_=r.map(s.y),v=e.children[o],y=!v;if(v||(v=c(`rect`,{class:`prism-bar`}),e.appendChild(v)),v.style.display=s.present?``:`none`,f){let e=Math.max(0,Math.abs(g-_)),t=Math.min(_,g);l(v,{fill:a.color,height:Math.max(0,u-1),rx:a.borderRadius,ry:a.borderRadius,y:h}),a.transition?y?(l(v,{width:0,x:g}),p.push({attrs:{width:{from:0,to:e},x:{from:g,to:t}},el:v})):m.push({attrs:{width:{from:Number(v.getAttribute(`width`)??e),to:e},x:{from:Number(v.getAttribute(`x`)??t),to:t}},el:v}):l(v,{width:e,x:t})}else{let e=Math.max(0,Math.abs(g-_)),t=Math.min(_,g);l(v,{fill:a.color,rx:a.borderRadius,ry:a.borderRadius,width:Math.max(0,u-1),x:h}),a.transition?y?(l(v,{height:0,y:g}),p.push({attrs:{height:{from:0,to:e},y:{from:g,to:t}},el:v})):m.push({attrs:{height:{from:Number(v.getAttribute(`height`)??e),to:e},y:{from:Number(v.getAttribute(`y`)??t),to:t}},el:v}):l(v,{height:e,y:t})}}if(a.transition){Ce.get(e)?.();let t=[];p.length>0&&t.push(o(p,a.transition,void 0,a.disposalSignal)),m.length>0&&t.push(o(m,{...a.transition,stagger:0},void 0,a.disposalSignal)),Ce.set(e,()=>{for(let e of t)e()})}}function Te(e){return{horizontal:e===`grouped-horizontal`||e===`stacked-horizontal`,stacked:e===`stacked`||e===`stacked-horizontal`}}function Ee(t,n){return R(t,n,t=>{let{groups:r,legend:i,tooltip:a}=t,o=t.dimensions.value,s=I(o.width,o.height,o.margin),l=(0,e.isReactive)(n.series)?n.series.value:n.series,u=ue(l,l.map(t=>(0,e.isReactive)(t.data)?t.data.value:t.data)),d=u.domain,f=u.series.map(({byKey:e})=>d.map(t=>e.get(t))),p=e=>{if(e)return{...e,tickFormat:t=>{let n=String(t),r=u.labels.get(n)??t;return e.tickFormat?e.tickFormat(r):String(r)}}};if(d.length===0){L(r,i,a);return}let{horizontal:m,stacked:v}=Te(n.variant??`grouped`),y,x;if(v){f.some(e=>e.some(e=>(e?.value??0)<0));let e=d.map((e,t)=>f.reduce((e,n)=>e+Math.max(0,n[t]?.value??0),0));y=Math.max(...e),x=0}else{let e=f.flatMap(e=>e.flatMap(e=>e?[e.value]:[]));y=Math.max(...e),x=Math.min(0,...e)}let S=ye(m?{domain:d,range:[0,s.height]}:{domain:d,range:[0,s.width]}),C=b(m?{domain:[x,y],range:[0,s.width]}:{domain:[x,y],range:[s.height,0]}),w=[],T=Object.create(null);for(let e of d)T[e]=0;let E={bandCenter:e=>S.map(e)+S.bandwidth()/2,bandwidth:S.bandwidth(),baselinePx:C.map(0),horizontal:m,stacked:v,stackedTops:w,valueScale:C};if(m){n.xAxis?.grid&&_(r.grid,C,n.xAxis.grid,s.height,`vertical`,h(n.xAxis,s.width,`bottom`));let e=p(n.yAxis);e&&g(r.yAxis,S,e,s.height,`left`),n.xAxis&&(r.xAxis.setAttribute(`transform`,`translate(0,${s.height})`),g(r.xAxis,C,n.xAxis,s.width,`bottom`))}else{n.yAxis?.grid&&_(r.grid,C,n.yAxis.grid,s.width,`horizontal`,h(n.yAxis,s.height,`left`));let e=p(n.xAxis);e&&(r.xAxis.setAttribute(`transform`,`translate(0,${s.height})`),g(r.xAxis,S,e,s.width,`bottom`)),n.yAxis&&g(r.yAxis,C,n.yAxis,s.height,`left`)}for(;r.series.children.length>l.length;){let e=r.series.lastElementChild;e&&r.series.removeChild(e)}for(let e=0;e<l.length;e++){let i=l[e],a=r.series.children[e];a||(a=c(`g`,{class:`prism-bar-series`}),r.series.appendChild(a));let o=d.map((t,n)=>{let r=f[e]?.[n];if(v){let e=T[t]??0,n=e+Math.max(0,r?.value??0);return T[t]=n,{base:e,key:t,present:r!==void 0,y:n}}return{base:0,key:t,present:r!==void 0,y:r?.value??0}});w[e]=o.map(e=>e.y);let s=v?o.map(e=>C.map(e.base)):void 0;we(a,o,S,C,E.baselinePx,{baselineYs:s,borderRadius:i.borderRadius??0,color:U(e,i.color),disposalSignal:t.disposalSignal,horizontal:m,seriesCount:l.length,seriesIndex:e,stacked:v,transition:n.transition})}return i?.update(l.map((e,t)=>({color:U(t,e.color),name:e.name}))),a?.hide(),{onClick:e=>{if(!n.onClick)return;let r=t.dimensions.value,i=B(t.svg,e,r.margin.left,r.margin.top),a=I(r.width,r.height,r.margin);if(i.x<0||i.x>a.width||i.y<0||i.y>a.height)return;let o=be(m?i.y:i.x,d,E);if(o===-1)return;let s=xe(i,o,d,E,l.length),c=f[s]?.[o];c&&n.onClick({datum:c,originalEvent:e,series:l[s]})},onMouseLeave:()=>{a?.hide(),n.onHover?.(null)},onMouseMove:e=>{let r=t.dimensions.value,i=B(t.svg,e,r.margin.left,r.margin.top),o=I(r.width,r.height,r.margin);if(i.x<0||i.x>o.width||i.y<0||i.y>o.height){a?.hide();return}let s=be(m?i.y:i.x,d,E);if(s===-1){a?.hide();return}if(Se(i,s,f,E,l.length)){a?.hide();return}let c=xe(i,s,d,E,l.length),u=f[c]?.[s];if(u){let t=E.bandCenter(d[s]),i=v?w[c]?.[s]??u.value:u.value,o=C.map(i),f=m?o+r.margin.left:t+r.margin.left,p=m?t+r.margin.top:o+r.margin.top;a?.show(f,p,u,l[c]),n.onHover?.({datum:u,originalEvent:e,series:l[c]})}}}})}var X=new WeakMap;function De(e,t){return t===`monotone`?G(e):t===`step`?K(e):W(e)}function Oe(e,t,n){let o=i(n.transition,0),s=o.duration,u=r(o.easing),d=e.querySelector(`.prism-line-path`);d||(d=c(`path`,{class:`prism-line-path`,fill:`none`}),e.appendChild(d)),l(d,{stroke:n.color,"stroke-width":n.strokeWidth});let f=e.querySelector(`.prism-line-dots`);if(n.showPoints?f||(f=c(`g`,{class:`prism-line-dots`}),e.appendChild(f)):f&&=(f.remove(),null),s===0){if(l(d,{d:De(t,n.curve)}),f){for(;f.children.length>t.length;)f.removeChild(f.lastChild);for(let e=0;e<t.length;e++){let r=f.children[e];r||(r=c(`circle`,{class:`prism-line-dot`}),f.appendChild(r)),l(r,{cx:t[e].x,cy:t[e].y,fill:n.color,r:n.pointRadius})}}return}X.get(e)?.();let p=!!d.getAttribute(`d`),m=[],h=null;if(f){let e=f.children.length;for(let t=0;t<e;t++){let e=f.children[t],n={x:Number(e.getAttribute(`cx`)),y:Number(e.getAttribute(`cy`))};m.push(n),h=n}for(;f.children.length>t.length;)f.removeChild(f.lastChild);for(let e=f.children.length;e<t.length;e++){let r=c(`circle`,{class:`prism-line-dot`});l(r,{cx:t[e].x,cy:t[e].y,fill:n.color,r:n.pointRadius}),f.appendChild(r)}}for(let e=m.length;e<t.length;e++)m.push(h??t[e]);let g=null;function _(r){if(n.disposalSignal?.aborted){X.delete(e);return}g===null&&(g=r);let i=Math.min(1,(r-g)/s),o=u(i),c=t.map((e,t)=>{let n=m[t]??e;return{x:a(n.x,e.x,o),y:a(n.y,e.y,o)}});if(l(d,{d:De(c,n.curve)}),f)for(let e=0;e<t.length;e++){let t=f.children[e];t&&l(t,{cx:c[e].x,cy:c[e].y})}if(i<1){let t=requestAnimationFrame(_);X.set(e,()=>cancelAnimationFrame(t))}else X.delete(e)}if(!p)l(d,{d:De(t,n.curve)});else{let t=requestAnimationFrame(_);X.set(e,()=>cancelAnimationFrame(t))}}function ke(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)}))}function Ae(t,n){let r=null;return R(t,n,t=>{let{groups:i,legend:a,tooltip:o}=t,s=t.dimensions.value,l=I(s.width,s.height,s.margin),u=(0,e.isReactive)(n.series)?n.series.value:n.series,d=u.map(t=>(0,e.isReactive)(t.data)?t.data.value:t.data),f=d.flat().map(e=>e.key),p=d.flat().map(e=>e.value);if(f.length===0){L(i,a,o,r);return}n.crosshair&&!r&&(r=le(t.chartArea,n.crosshair));let m=j(f,l.width),v=M(p,l.height);for(n.yAxis?.grid&&_(i.grid,v,n.yAxis.grid,l.width,`horizontal`,h(n.yAxis,l.height,`left`)),n.xAxis?.grid&&_(i.grid,m,n.xAxis.grid,l.height,`vertical`,h(n.xAxis,l.width,`bottom`)),n.xAxis&&(i.xAxis.setAttribute(`transform`,`translate(0,${l.height})`),g(i.xAxis,m,n.xAxis,l.width,`bottom`)),n.yAxis&&g(i.yAxis,v,n.yAxis,l.height,`left`);i.series.children.length>u.length;)i.series.removeChild(i.series.lastChild);let y=[];for(let e=0;e<u.length;e++){let r=u[e],a=i.series.children[e];a||(a=c(`g`,{class:`prism-line-series`}),i.series.appendChild(a));let o=ke(d[e],m,v);y.push(o),Oe(a,o,{color:U(e,r.color),curve:r.curve??`linear`,disposalSignal:t.disposalSignal,pointRadius:r.pointRadius??3,showPoints:r.showPoints??!1,strokeWidth:r.strokeWidth??2,transition:n.transition})}return a?.update(u.map((e,t)=>({color:U(t,e.color),name:e.name}))),o?.hide(),fe({crosshair:r,dims:()=>t.dimensions.value,getData:()=>d,getPoints:()=>y,getSeriesList:()=>(0,e.isReactive)(n.series)?n.series.value:n.series,onClick:n.onClick,onHover:n.onHover,svg:t.svg,tooltip:o})})}function je(e,t,n,r,i,a,o,s,c,l,u=!1){let d=e.reduce((e,t)=>e+Math.max(0,t.value),0);if(d===0)return[];let f=o-a,p=r>0?Math.asin(Math.min(1,s/2/r)):0,m=a,h=e.length;return e.map((e,a)=>{let o=Math.max(0,e.value)/d*f,s=m,g=m+o;m+=o;let _=Math.min(p,o/2);return{capEnd:u&&a===h-1,capStart:u&&a===0,centerX:t,centerY:n,color:e.color??l(a),cornerRadius:c,endAngle:g,index:a,innerRadius:i,outerRadius:r,padAngle:_,slice:e,startAngle:s}})}function Z(e,t,n,r){return`${e+n*Math.sin(r)},${t-n*Math.cos(r)}`}function Q(e,t,n){return e+t*Math.sin(n)}function $(e,t,n){return e-t*Math.cos(n)}function Me(e){let{capEnd:t,capStart:n,centerX:r,centerY:i,cornerRadius:a,endAngle:o,innerRadius:s,outerRadius:c,padAngle:l,startAngle:u}=e,d=o-u;if(d<=0)return``;if(d>=2*Math.PI-1e-6){let e=u+Math.PI;return s<=0?`M${Z(r,i,c,u)}A${c},${c},0,1,1,${Z(r,i,c,e)}A${c},${c},0,1,1,${Z(r,i,c,u)}Z`:[`M${Z(r,i,c,u)}`,`A${c},${c},0,1,1,${Z(r,i,c,e)}`,`A${c},${c},0,1,1,${Z(r,i,c,u)}`,`M${Z(r,i,s,u)}`,`A${s},${s},0,1,0,${Z(r,i,s,e)}`,`A${s},${s},0,1,0,${Z(r,i,s,u)}`,`Z`].join(``)}let f=n?u:u+l,p=t?o:o-l;if(p<=f)return``;let m=p-f;if(a<=0){let e=+(m>Math.PI);return s<=0?`M${r},${i}L${Z(r,i,c,f)}A${c},${c},0,${e},1,${Z(r,i,c,p)}Z`:[`M${Z(r,i,c,f)}`,`A${c},${c},0,${e},1,${Z(r,i,c,p)}`,`L${Z(r,i,s,p)}`,`A${s},${s},0,${e},0,${Z(r,i,s,f)}`,`Z`].join(``)}let h=Math.min(a/c,m/2),g=Math.min(a/s,m/2),_=Math.min(a,(c-s)/2),v=(c-s)/2,y=f+(n?0:h),b=p-(t?0:h),x=f+(n?0:g),S=p-(t?0:g),C=+(b-y>Math.PI),w=+(S-x>Math.PI),T=Q(r,c,f),E=$(i,c,f),D=Q(r,c,p),O=$(i,c,p),k=Q(r,s,f),A=$(i,s,f),j=Q(r,s,p),M=$(i,s,p),N=_/(c-s),P=`${T+(k-T)*N},${E+(A-E)*N}`,ee=`${D+(j-D)*N},${O+(M-O)*N}`,te=`${k+(T-k)*N},${A+(E-A)*N}`,ne=`${j+(D-j)*N},${M+(O-M)*N}`,F=[];return n?F.push(`M${Z(r,i,c,f)}`):(F.push(`M${P}`),F.push(`Q${T},${E},${Z(r,i,c,y)}`)),F.push(`A${c},${c},0,${C},1,${Z(r,i,c,b)}`),t?F.push(`A${v},${v},0,0,1,${Z(r,i,s,p)}`):(F.push(`Q${D},${O},${ee}`),F.push(`L${ne}`),F.push(`Q${j},${M},${Z(r,i,s,S)}`)),F.push(`A${s},${s},0,${w},0,${Z(r,i,s,x)}`),n?F.push(`A${v},${v},0,0,0,${Z(r,i,c,f)}`):F.push(`Q${k},${A},${te}`),F.push(`Z`),F.join(``)}function Ne(e){let t=(e.startAngle+e.endAngle)/2,n=(e.outerRadius+e.innerRadius)/2;return{x:e.centerX+n*Math.sin(t),y:e.centerY-n*Math.cos(t)}}var Pe=2*Math.PI,Fe=-Math.PI/2,Ie=Math.PI/2;function Le(e){return e===`semi`?{end:Ie,start:Fe}:{end:Pe,start:0}}function Re(t,n){let o=n.variant??`pie`,s=n.padPixels??(o===`pie`?0:8),u=n.cornerRadius??(o===`pie`?0:8),d=c(`circle`,{class:`prism-pie-bg`,"pointer-events":`none`}),f=c(`g`,{class:`prism-pie-slices`,"shape-rendering":`geometricPrecision`}),p=c(`g`,{class:`prism-pie-labels`,"pointer-events":`none`}),m=[],h=null;function g(e){for(;p.children.length>m.length;)p.removeChild(p.lastChild);for(let t=0;t<m.length;t++){let n=m[t],r=e[t];if(!r?.label)continue;let{x:i,y:a}=Ne(n),o=p.children[t];o||(o=c(`text`,{class:`prism-pie-label`}),p.appendChild(o)),l(o,{"dominant-baseline":`middle`,fill:`var(--prism-pie-label-color, #fff)`,"font-family":`var(--prism-font-family, system-ui)`,"font-size":`var(--prism-pie-label-size, 12px)`,"text-anchor":`middle`,x:i,y:a}),o.textContent=r.label}}let _=ce(t,{a11y:n.a11y,legend:n.legend,plugins:n.plugins,tooltip:n.tooltip},_=>{let{legend:v,svg:y,tooltip:b}=_;y.contains(d)||(y.appendChild(d),y.appendChild(f),y.appendChild(p));let{height:x,width:S}=_.dimensions.value,C=o===`semi`,w=S/2,T=C?x*.85:x/2,E=C?Math.min(w,T)-8:Math.min(S,x)/2-8,D=o===`pie`?0:Math.round(E*.55),O=n.innerRadius===void 0?D:n.innerRadius,k=Math.max(O+1,E),A=(0,e.isReactive)(n.data)?n.data.value:n.data,{end:j,start:M}=Le(o);for(m=je(A,w,T,k,O,M,j,s,u,e=>U(e),!1),l(d,{cx:w,cy:T,r:O>0?O:0}),d.setAttribute(`style`,`fill:var(--prism-bg,#fff)`);f.children.length>m.length;)f.removeChild(f.lastChild);for(;p.children.length>m.length;)p.removeChild(p.lastChild);let N=i(n.transition,0),P=N.duration,ee=r(N.easing);for(let e=0;e<m.length;e++){let t=m[e],r=f.children[e];r||(r=c(`path`,{class:`prism-pie-slice`}),f.appendChild(r)),r.setAttribute(`fill`,t.color),r.setAttribute(`stroke`,`none`),r.style.cursor=n.onClick||n.onHover?`pointer`:``}if(h!==null&&(cancelAnimationFrame(h),h=null),P>0){let e=null,t=n=>{e===null&&(e=n);let r=ee(Math.min(1,(n-e)/P)),i=a(M,j,r);for(let e=0;e<m.length;e++){let t=m[e],n=f.children[e];if(n)if(i<=t.startAngle)l(n,{d:``});else{let e=Math.min(t.endAngle,i);l(n,{d:Me({...t,endAngle:e})})}}r<1?h=requestAnimationFrame(t):(h=null,g(A))};h=requestAnimationFrame(t)}else{for(let e=0;e<m.length;e++){let t=m[e],n=f.children[e];n&&l(n,{d:Me(t)})}g(A)}return v?.update(m.map(e=>({color:e.color,name:e.slice.label??``}))),b?.hide(),{onClick:e=>{if(!n.onClick)return;let t=y.getBoundingClientRect(),r=e.clientX-t.left,i=e.clientY-t.top,a=ze(m,r,i,o);a>=0&&n.onClick(m[a].slice,a)},onMouseLeave:()=>{n.onHover?.(null,null),b?.hide()},onMouseMove:e=>{let r=y.getBoundingClientRect(),i=e.clientX-r.left,a=e.clientY-r.top,s=ze(m,i,a,o);if(s>=0){let e=m[s];n.onHover?.(e.slice,s);let{x:i,y:a}=Ne(e),o=t.getBoundingClientRect();b?.show(i+(r.left-o.left),a+(r.top-o.top),{key:s,value:e.slice.value},{color:e.color,data:[],name:e.slice.label??``})}else n.onHover?.(null,null),b?.hide()}}});return{get disposalSignal(){return _.disposalSignal},dispose(){h!==null&&(cancelAnimationFrame(h),h=null),_.dispose()},get disposed(){return _.disposed},el:_.el,[Symbol.dispose](){this.dispose()}}}function ze(e,t,n,r){for(let i=0;i<e.length;i++){let a=e[i],o=t-a.centerX,s=n-a.centerY,c=Math.sqrt(o*o+s*s);if(c<a.outerRadius&&c>=a.innerRadius){let e=Math.atan2(o,-s);if(r===`semi`){if(e>=a.startAngle-1e-9&&e<=a.endAngle+1e-9)return i}else{let t=e<0?e+Pe:e;if(t>=a.startAngle-1e-9&&t<=a.endAngle+1e-9)return i}}}return-1}function Be(e,t,n){if(e.length===0)return[];let r=t/Math.max(1,e.length-1),i=Math.min(...e),a=Math.max(...e)-i||1;return e.map((e,t)=>({x:t*r,y:n-(e-i)/a*n}))}function Ve(e,t,n,r=`linear`){if(e.length===0)return``;let i=Be(e,t,n);return q(i,i.map(e=>({x:e.x,y:n})),r??`linear`)}function He(e,t,n,r){if(e.length===0)return``;let i=Be(e,t,n);return r===`monotone`?G(i):r===`step`?K(i):W(i)}function Ue(e,t,n,o,s,u,d){let f=t.length,p=Math.max(1,n/f-1),m=n/f,h=Math.min(0,...t),g=Math.max(...t)-h||1,_=i(u,0),v=_.duration,y=r(_.easing);for(;e.children.length>f;){let t=e.lastElementChild;t&&e.removeChild(t)}for(let n=0;n<f;n++){let r=Math.max(1,(t[n]-h)/g*o),i=o-r,u=e.children[n];if(u||(u=c(`rect`,{class:`prism-spark-bar`}),e.appendChild(u)),l(u,{fill:s,width:p,x:n*m}),v>0&&!u.hasAttribute(`data-init`)){u.setAttribute(`data-init`,`1`),l(u,{height:0,y:o});let e=null,t={h:0,y:o},n={h:r,y:i},s=r=>{if(d?.aborted)return;e===null&&(e=r);let i=y(Math.min(1,(r-e)/v));l(u,{height:a(t.h,n.h,i),y:a(t.y,n.y,i)}),i<1&&requestAnimationFrame(s)};requestAnimationFrame(s)}else u.setAttribute(`data-init`,`1`),l(u,{height:r,y:i})}}function We(e){return e.length>0&&e[0]!==null&&typeof e[0]==`object`}function Ge(e,t,n,r,i,a,o){let s=Math.min(i,n/2,r/2),c=a?s:0,l=a?s:0,u=o?s:0,d=o?s:0;return[`M${e+c},${t}`,`H${e+n-u}`,u?`Q${e+n},${t} ${e+n},${t+u}`:``,`V${t+r-d}`,d?`Q${e+n},${t+r} ${e+n-d},${t+r}`:``,`H${e+l}`,l?`Q${e},${t+r} ${e},${t+r-l}`:``,`V${t+c}`,c?`Q${e},${t} ${e+c},${t}`:``,`Z`].filter(Boolean).join(``)}function Ke(e){return`var(--prism-color-${e%8+1})`}function qe(t,n){let r=n.variant??`line`,i=n.color??`var(--prism-color-1)`,a=n.curve??`linear`,o=n.strokeWidth??1.5,s=n.fillOpacity??.2,u=ae(t,{...n.a11y?{a11y:n.a11y}:{ariaHidden:!0},margin:{bottom:0,left:0,right:0,top:0}}),{svg:d}=u;d.classList.add(`prism-sparkline`);let f=c(`g`,{class:`prism-spark-inner`});d.appendChild(f);let p;function m(){let{height:t,width:d}=u.dimensions.value,p=(0,e.isReactive)(n.data)?n.data.value:n.data;for(;f.firstChild;)f.removeChild(f.firstChild);if(p.length!==0){if(r===`stack`&&We(p)){let e=c(`g`,{class:`prism-spark-stack`});f.appendChild(e);let r=n.cornerRadius??4,i=p,a=i.reduce((e,t)=>e+Math.max(0,t.value),0);if(a>0){let o=(n.padPixels??0)/2,s=0;i.forEach((n,u)=>{let f=Math.round(s);s+=Math.max(0,n.value)/a*d;let p=u===i.length-1?d:Math.round(s),m=u===0,h=u===i.length-1,g=Ge(f+(m?0:o),0,Math.max(0,p-f-(m?0:o)-(h?0:o)),t,r,m,h),_=c(`path`,{class:`prism-spark-stack-segment`});l(_,{d:g,fill:n.color??Ke(u)}),e.appendChild(_)})}}else if(r===`bar`){let e=c(`g`,{class:`prism-spark-bars`});f.appendChild(e),Ue(e,p,d,t,i,n.transition,g.signal)}else{if(r===`area`){let e=c(`path`,{class:`prism-spark-fill`});l(e,{d:Ve(p,d,t,a),fill:i,"fill-opacity":s,stroke:`none`}),f.appendChild(e)}let e=c(`path`,{class:`prism-spark-line`});l(e,{d:He(p,d,t,a),fill:`none`,stroke:i,"stroke-width":o}),f.appendChild(e)}We(p)||h(p)}}function h(e){if(p?.(),p=void 0,!n.onHover&&!n.onClick||e.length<=1)return;let{width:t}=u.dimensions.value;d.style.cursor=`crosshair`;let r=t/(e.length-1),i=t=>{let i=d.getBoundingClientRect(),a=t.clientX-i.left,o=Math.max(0,Math.min(e.length-1,Math.round(a/r)));n.onHover?.(o,e[o])},a=()=>n.onHover?.(null,null),o=t=>{if(!n.onClick)return;let i=d.getBoundingClientRect(),a=t.clientX-i.left,o=Math.max(0,Math.min(e.length-1,Math.round(a/r)));n.onClick(o,e[o])};d.addEventListener(`mousemove`,i),d.addEventListener(`mouseleave`,a),d.addEventListener(`click`,o),p=()=>{d.removeEventListener(`mousemove`,i),d.removeEventListener(`mouseleave`,a),d.removeEventListener(`click`,o)}}let g=new AbortController,_=(0,e.createScope)();_.run(()=>{(0,e.effect)(()=>{m()},{scheduler:`microtask`})});let v=!1;return{get disposalSignal(){return g.signal},dispose(){v||(v=!0,g.abort(),p?.(),_.dispose(),u.dispose())},get disposed(){return v},el:d,[Symbol.dispose](){this.dispose()}}}exports.PrismError=te,exports.PrismRenderError=ne,exports.animate=o,exports.bandScale=ye,exports.createAreaChart=ve,exports.createBarChart=Ee,exports.createLineChart=Ae,exports.createPieChart=Re,exports.createSparkline=qe,exports.linearScale=b,exports.resetTheme=me,exports.seriesColor=U,exports.setTheme=pe,exports.timeScale=A;
2
2
  //# sourceMappingURL=prism.cjs.map