@hjmds/react 1.36.1 → 1.37.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chart.d.ts.map +1 -1
- package/dist/chart.js +12 -2
- package/dist/chart.js.map +1 -1
- package/dist/evidence.d.ts +1 -1
- package/dist/evidence.js +1 -1
- package/dist/evidence.js.map +1 -1
- package/dist/feedback.d.ts +5 -1
- package/dist/feedback.d.ts.map +1 -1
- package/dist/feedback.js +3 -2
- package/dist/feedback.js.map +1 -1
- package/dist/provider.d.ts.map +1 -1
- package/dist/provider.js +3 -3
- package/dist/provider.js.map +1 -1
- package/dist/screens.d.ts +3 -1
- package/dist/screens.d.ts.map +1 -1
- package/dist/screens.js +2 -2
- package/dist/screens.js.map +1 -1
- package/dist/styles.css +24 -12
- package/dist/styles.layered.css +24 -12
- package/dist/theme.d.ts.map +1 -1
- package/dist/theme.js +12 -2
- package/dist/theme.js.map +1 -1
- package/dist/toast.d.ts.map +1 -1
- package/dist/toast.js +2 -2
- package/dist/toast.js.map +1 -1
- package/package.json +3 -3
package/dist/chart.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chart.js","sourceRoot":"","sources":["../src/chart.tsx"],"names":[],"mappings":"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,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;IACjL,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAClL,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CA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","sourcesContent":["import {\n useCallback,\n useId,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type KeyboardEvent,\n type PointerEvent,\n type ReactNode,\n} from \"react\";\nimport type { ColorReference } from \"@hjmds/design-contracts/color-references\";\nimport { resolveDatavizSeriesColor } from \"@hjmds/design-contracts/dataviz\";\nimport {\n prepareChartLineMorph,\n areaPath,\n chartRecipe,\n describeChart,\n isChartNumber,\n linePath,\n nearestChartIndex,\n nearestScatterPoint,\n observedIndices,\n resolveBarGeometry,\n resolveLineGeometry,\n resolvePieGeometry, resolvePieVisibility, type PieVisibilitySummary,\n resolveRadarGeometry,\n resolveScatterGeometry,\n scaleLinear,\n seriesExtremes,\n splitSegments,\n stackValues,\n stepChartIndex,\n validateChartSeries,\n type ChartBar,\n type ChartBarLayout,\n type ChartCurve,\n type ChartInsets,\n type ChartOrientation,\n type ChartSeries,\n type ScatterDatum,\n} from \"@hjmds/design-contracts/components/chart\";\nimport { spacing } from \"@hjmds/design-contracts/foundations\";\nimport { useOptionalHjmTheme } from \"./provider.js\";\nimport { classNames } from \"./internal.js\";\nimport type { HjmCompositionStyleProp } from \"./composition-style.js\";\n\n/*\n * Web chart renderers (2026-10-14). Geometry, domains, stacking, gaps and the text alternative come\n * from `@hjmds/design-contracts/components/chart`; this file only paints plain SVG and translates\n * pointer/keyboard input into the contract's focus index. Prop names mirror\n * `@hjmds/react-native/chart` so products write one chart description for both surfaces.\n * Interaction follows react-native-wagmi-charts (press-and-drag cursor, release returns to the\n * latest value) with pointer events and `touch-action: pan-y` so vertical page scrolling still wins.\n * Optional data morphing updates SVG hosts directly and respects reduced motion.\n */\n\n// ---------------------------------------------------------------------------------------------\n// Shared helpers\n// ---------------------------------------------------------------------------------------------\n\nfunction kebab(value: string): string {\n return value.replace(/[A-Z]/g, (letter) => `-${letter.toLowerCase()}`);\n}\n\n/**\n * Chrome colors stay recipe references resolved through the provider's CSS variables, so a theme\n * switch repaints without re-rendering and the recipe (not styles.css) owns the choice.\n */\nfunction cssColor(reference: ColorReference): string {\n const name = reference.source === \"theme\"\n ? `--hjm-color-${kebab(reference.key)}`\n : reference.source === \"accent\" ? `--hjm-accent-${kebab(reference.key)}` : `--hjm-accent-fill-${kebab(reference.key)}`;\n return reference.alpha === undefined || reference.alpha === 1\n ? `var(${name})`\n : `color-mix(in srgb, var(${name}) ${Math.round(reference.alpha * 100)}%, transparent)`;\n}\n\nconst chrome = chartRecipe.chrome;\nconst chromeStyle = {\n \"--hjm-chart-axis-line\": cssColor(chrome.axisLine),\n \"--hjm-chart-axis-label\": cssColor(chrome.axisLabel),\n \"--hjm-chart-grid-line\": cssColor(chrome.gridLine),\n \"--hjm-chart-grid-width\": `${chrome.gridWidth}px`,\n \"--hjm-chart-legend-label\": cssColor(chrome.legendLabel),\n \"--hjm-chart-tooltip-surface\": cssColor(chrome.tooltipSurface),\n \"--hjm-chart-tooltip-border\": cssColor(chrome.tooltipBorder),\n \"--hjm-chart-tooltip-content\": cssColor(chrome.tooltipContent),\n} as CSSProperties;\n\nfunction useSeriesColor(): (series: Readonly<{ color?: string | undefined }>, index: number) => string {\n const theme = useOptionalHjmTheme()?.environment.theme ?? \"light\";\n return useCallback((series, index) => series.color ?? resolveDatavizSeriesColor(theme, index), [theme]);\n}\n\nfunction useSvgId(): string {\n return useId().replace(/[^a-zA-Z0-9_-]/g, \"\");\n}\n\n/** Responsive width: `fallback` renders on the server and before the first measurement. */\nfunction useMeasuredWidth(fallback: number): [(node: HTMLDivElement | null) => void, number] {\n const [width, setWidth] = useState(fallback);\n const [node, setNode] = useState<HTMLDivElement | null>(null);\n useLayoutEffect(() => {\n if (!node) return;\n const update = (next: number) => { if (next > 0) setWidth(Math.round(next)); };\n update(node.getBoundingClientRect().width);\n if (typeof ResizeObserver === \"undefined\") return;\n const observer = new ResizeObserver((entries) => update(entries[0]?.contentRect.width ?? 0));\n observer.observe(node);\n return () => observer.disconnect();\n }, [node]);\n return [setNode, width];\n}\n\ntype FocusDetail = Readonly<{ scrubbing: boolean }>;\ntype FocusProps = Readonly<{\n /** Controlled focused category; `null` shows no focus. */\n focusIndex?: number | null;\n defaultFocusIndex?: number | null;\n onFocusChange?: (index: number | null, detail: FocusDetail) => void;\n /** Keep the scrubbed point after release instead of returning to the default (Native parity, 2026-10-14). */\n holdOnRelease?: boolean;\n}>;\n\n/** Controlled/uncontrolled focus plus a transient scrub index (same model as the Native renderer). */\nfunction useFocus({ focusIndex, defaultFocusIndex = null, onFocusChange, holdOnRelease = false }: FocusProps, fallback: number | null, categories?: readonly string[]) {\n const categoryKey = (index: number | null) => index === null || categories?.[index] === undefined ? null : JSON.stringify([categories[index], categories.slice(0, index).filter(value => value === categories[index]).length]);\n const selectedKey = useRef<string | null>(categoryKey(defaultFocusIndex));\n const [own, setOwn] = useState<number | null>(defaultFocusIndex);\n const [scrub, setScrub] = useState<number | null>(null);\n const last = useRef<number | null>(null);\n const mapped = categories && selectedKey.current !== null ? categories.findIndex((_, index) => categoryKey(index) === selectedKey.current) : own;\n const ownSelection = mapped === -1 ? null : mapped;\n const settled = focusIndex !== undefined ? (categories && (focusIndex === null || categories[focusIndex] === undefined) ? null : focusIndex) : ownSelection;\n const focus = scrub ?? settled ?? fallback;\n const set = useCallback((index: number | null, scrubbing: boolean) => {\n if (scrubbing) { setScrub(index); last.current = index; }\n else { setScrub(null); if (focusIndex === undefined) { selectedKey.current = categoryKey(index); setOwn(index); } }\n onFocusChange?.(index, { scrubbing });\n }, [focusIndex, onFocusChange, categories]);\n const release = useCallback(() => set(holdOnRelease ? last.current : null, false), [set, holdOnRelease]);\n return { focus, scrubbing: scrub !== null, set, release };\n}\n\n/** Press-and-drag; the pointer is captured so a drag that leaves the plot keeps scrubbing. */\nfunction useScrub(pick: (x: number, y: number) => number | null, onScrub: (index: number | null) => void, onEnd: () => void) {\n const active = useRef<number | null>(null);\n const at = (event: PointerEvent<HTMLElement>) => {\n const rect = event.currentTarget.getBoundingClientRect();\n return pick(event.clientX - rect.left, event.clientY - rect.top);\n };\n return {\n onPointerDown(event: PointerEvent<HTMLElement>) {\n if (event.button !== 0) return;\n active.current = event.pointerId;\n event.currentTarget.setPointerCapture?.(event.pointerId);\n onScrub(at(event));\n },\n onPointerMove(event: PointerEvent<HTMLElement>) {\n if (active.current !== event.pointerId) return;\n onScrub(at(event));\n },\n onPointerUp(event: PointerEvent<HTMLElement>) {\n if (active.current !== event.pointerId) return;\n active.current = null;\n onEnd();\n },\n onPointerCancel(event: PointerEvent<HTMLElement>) {\n if (active.current !== event.pointerId) return;\n active.current = null;\n onEnd();\n },\n };\n}\n\nfunction valueText(categories: readonly string[], series: readonly ChartSeries[], index: number, format: (value: number) => string, missing: string): string {\n const values = series.map((item) => { const v = item.values[index]; return isChartNumber(v) ? format(v) : missing; });\n return series.length === 1 ? `${categories[index]} ${values[0]}` : `${categories[index]} ${series.map((item, s) => `${item.label} ${values[s]}`).join(\", \")}`;\n}\n\n/** Arrow/Home/End stepping over observed indices only; returns undefined for unrelated keys. */\nfunction keyStep(event: KeyboardEvent, available: readonly number[], focus: number | null, nextKeys: readonly string[], previousKeys: readonly string[]): number | null | undefined {\n if (nextKeys.includes(event.key)) return stepChartIndex(available, focus, 1);\n if (previousKeys.includes(event.key)) return stepChartIndex(available, focus, -1);\n if (event.key === \"Home\") return available[0] ?? null;\n if (event.key === \"End\") return available.at(-1) ?? null;\n return undefined;\n}\n\nfunction CursorBubble({ x, width, text }: Readonly<{ x: number; width: number; text: string }>) {\n // Clamped like the Native bubble so the label never leaves the plot.\n const half = 44, center = Math.min(width - half, Math.max(half, x));\n return <span className=\"hjm-chart__bubble\" aria-hidden=\"true\" style={{ left: center }}>{text}</span>;\n}\n\ntype ChartRootProps = Readonly<{\n className?: string;\n /** Canonical layout-only placement on the root element. Controlled visual keys are excluded. */\n layoutStyle?: HjmCompositionStyleProp;\n}>;\n\ntype CartesianCommon = ChartRootProps & Readonly<{\n categories: readonly string[];\n series: readonly ChartSeries[];\n /** Accessible name (Web `aria-label`). Product-localized. */\n accessibilityLabel: string;\n formatValue: (value: number) => string;\n /** Spoken/written for a missing observation in the text alternative. */\n missingLabel: string;\n height?: number;\n /** Width used on the server and before the first ResizeObserver measurement. */\n width?: number;\n domain?: readonly [number, number];\n showAxis?: boolean;\n}>;\n\n// Paths/rectangles update their host attributes directly; values, axes and accessibility\n// always come from the latest real data. No per-frame React reconciliation.\nfunction MotionLinePath({ points, lower, floor, curve, animate, ...rest }: Omit<React.SVGProps<SVGPathElement>, \"points\" | \"ref\"> & { points: readonly { x: number; y: number }[]; lower?: readonly { x: number; y: number }[] | undefined; floor?: number | undefined; curve: ChartCurve; animate: boolean }) {\n const reducedMotion = useOptionalHjmTheme()?.environment.reducedMotion;\n const node = useRef<SVGPathElement | null>(null);\n const previous = useRef<{ points: readonly { x: number; y: number }[]; lower?: readonly { x: number; y: number }[] | undefined; floor?: number | undefined } | null>(null);\n const path = (p: readonly { x: number; y: number }[], base?: number, edge?: readonly { x: number; y: number }[]) => base === undefined ? linePath(p, curve) : areaPath(p, base, curve, edge);\n const signature = JSON.stringify([points, lower, floor, curve]);\n useLayoutEffect(() => {\n const before = previous.current;\n const target = { points, lower, floor };\n previous.current = target;\n // A bounded morph avoids multiplying frame work for dense historical datasets.\n const morph = animate && !reducedMotion && !document.hidden && before && points.length + before.points.length <= 1024 ? prepareChartLineMorph(before.points, points) : null;\n if (!morph) { node.current?.setAttribute(\"d\", path(points, floor, lower)); return; }\n const lowerMorph = before?.lower && lower ? prepareChartLineMorph(before.lower, lower) : null;\n let frame = 0, start: number | undefined;\n const paint = (t: number) => {\n const current = t === 1 ? target : { points: morph(t), lower: lowerMorph?.(t) ?? lower, floor: floor === undefined ? undefined : (before?.floor ?? floor) + (floor - (before?.floor ?? floor)) * t };\n previous.current = current;\n const d = path(current.points, current.floor, current.lower); node.current?.setAttribute(\"d\", d);\n };\n const tick = (now: number) => { start ??= now; const t = Math.min(1, (now - start) / 220); paint(1 - (1 - t) ** 3); if (t < 1) frame = requestAnimationFrame(tick); };\n paint(0); frame = requestAnimationFrame(tick);\n const visibility = () => { if (document.hidden) { cancelAnimationFrame(frame); paint(1); } }; document.addEventListener(\"visibilitychange\", visibility);\n return () => { cancelAnimationFrame(frame); document.removeEventListener(\"visibilitychange\", visibility); };\n }, [signature, animate, reducedMotion]);\n return <path {...rest} ref={node} d={path(points, floor, lower)} />;\n}\nfunction MotionBar({ bar, animate, vertical = true, rounded = true, ...rest }: React.SVGProps<SVGPathElement> & { bar: ChartBar; animate: boolean; vertical?: boolean; rounded?: boolean }) {\n const reducedMotion = useOptionalHjmTheme()?.environment.reducedMotion;\n const node = useRef<SVGPathElement | null>(null), previous = useRef<ChartBar | null>(null);\n const signature = JSON.stringify([bar, vertical, rounded]);\n useLayoutEffect(() => {\n const before = previous.current; previous.current = bar;\n if (!animate || reducedMotion || !before || document.hidden) { node.current?.setAttribute(\"d\", barPath(bar, vertical, bar.value < 0, rounded)); return; }\n let frame = 0, start: number | undefined;\n const paint = (t: number) => {\n const value = { ...bar, x: before.x + (bar.x - before.x) * t, y: before.y + (bar.y - before.y) * t, width: before.width + (bar.width - before.width) * t, height: before.height + (bar.height - before.height) * t };\n previous.current = value; node.current?.setAttribute(\"d\", barPath(value, vertical, value.value < 0, rounded));\n };\n const tick = (now: number) => { start ??= now; const t = Math.min(1, (now - start) / 220); paint(1 - (1 - t) ** 3); if (t < 1) frame = requestAnimationFrame(tick); };\n paint(0); frame = requestAnimationFrame(tick);\n const visibility = () => { if (document.hidden) { cancelAnimationFrame(frame); paint(1); } }; document.addEventListener(\"visibilitychange\", visibility);\n return () => { cancelAnimationFrame(frame); document.removeEventListener(\"visibilitychange\", visibility); };\n }, [signature, animate, reducedMotion]);\n return <path {...rest} ref={node} d={barPath(bar, vertical, bar.value < 0, rounded)} />;\n}\n\n// ---------------------------------------------------------------------------------------------\n// LineChart\n// ---------------------------------------------------------------------------------------------\n\nexport type LineChartProps = CartesianCommon & FocusProps & Readonly<{\n curve?: ChartCurve;\n /** Separate dotted vertical drops at the observed edges of missing periods; no bridge or invented values. */\n missingConnection?: \"none\" | \"dotted\";\n /** Gradient area under each line. Defaults to on for a single series. */\n area?: boolean;\n stacked?: boolean;\n /** Smallest value on top (ranks, ERA). */\n invert?: boolean;\n includeZero?: boolean;\n /** Dashed horizontal reference line; `\"first\"` uses the first observation (previous close). */\n referenceValue?: number | \"first\";\n /** Labels for the first series' high/low markers, shown while not scrubbing. */\n extremes?: Readonly<{ high: string; low: string }>;\n /** Bubble text above the cursor while scrubbing; defaults to the category. */\n cursorLabel?: (index: number) => string;\n /** Morph actual data changes; reduced motion snaps immediately. */\n animateChanges?: boolean;\n /** Keep the chosen side in series color; mute the other side. */\n scrubEmphasis?: \"before\" | \"after\";\n /** Value labels only (rank charts: \"#1\" at the top). */\n valueAxis?: boolean;\n /** Overrides grid/label ticks. */\n ticks?: readonly number[];\n}>;\n\nexport function LineChart({\n categories, series, accessibilityLabel, formatValue, missingLabel, height = chartRecipe.heights.regular, width: fallbackWidth = 320,\n curve = \"linear\", missingConnection = \"none\", area, stacked = false, invert = false, domain, includeZero, referenceValue, extremes, showAxis = false,\n valueAxis = false, ticks: tickOverride, cursorLabel, animateChanges = false, scrubEmphasis, className, layoutStyle, ...focusProps\n}: LineChartProps) {\n validateChartSeries(categories, series);\n const colorOf = useSeriesColor(), id = useSvgId(), descriptionId = `${id}-description`;\n const [measure, width] = useMeasuredWidth(fallbackWidth);\n const available = useMemo(() => observedIndices(series), [series]);\n const { focus, scrubbing, set, release } = useFocus(focusProps, available.at(-1) ?? null, categories);\n const insets = showAxis || valueAxis ? chartRecipe.insets.axis : chartRecipe.insets.plot;\n const g = useMemo(() => resolveLineGeometry({\n categories, series, width, height, insets, invert, stacked,\n ...(domain ? { domain } : {}), ...(includeZero === undefined ? {} : { includeZero }),\n }), [categories, series, width, height, insets, invert, stacked, domain, includeZero]);\n // Release returns to the default (latest) focus unless holdOnRelease keeps the scrubbed point.\n const handlers = useScrub((x) => nearestChartIndex(g.xs, x, available), (index) => set(index, true), release);\n const showArea = area ?? series.length === 1;\n const reference = referenceValue === \"first\" ? series[0]?.values.find(isChartNumber) : referenceValue;\n const marks = extremes && !scrubbing ? seriesExtremes(series[0]?.values ?? []) : null;\n const onKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n const next = keyStep(event, available, focus, [\"ArrowRight\", \"ArrowUp\"], [\"ArrowLeft\", \"ArrowDown\"]);\n if (next === undefined) return;\n event.preventDefault();\n set(next, false);\n };\n return (\n <div ref={measure} className={classNames(\"hjm-chart\", \"hjm-chart--line\", className)} style={{ ...chromeStyle, ...layoutStyle }} data-scrubbing={scrubbing || undefined}>\n <div\n className=\"hjm-chart__plot\"\n role=\"slider\"\n tabIndex={0}\n aria-label={accessibilityLabel}\n aria-describedby={descriptionId}\n aria-valuemin={0}\n aria-valuemax={Math.max(0, categories.length - 1)}\n aria-valuenow={focus ?? 0}\n aria-valuetext={focus === null ? missingLabel : valueText(categories, series, focus, formatValue, missingLabel)}\n style={{ blockSize: height }}\n onKeyDown={onKeyDown}\n {...handlers}\n >\n <svg width={width} height={height} viewBox={`0 0 ${width} ${height}`} aria-hidden=\"true\" focusable=\"false\">\n <defs>\n <clipPath id={`${id}-scrub`}><rect x={scrubEmphasis === \"after\" && focus !== null ? g.xs[focus] ?? g.plot.left : g.plot.left} y={0} width={focus === null ? width : scrubEmphasis === \"after\" ? g.plot.right - (g.xs[focus] ?? g.plot.left) : (g.xs[focus] ?? g.plot.right) - g.plot.left} height={height} /></clipPath>\n {series.map((item, s) => (\n <linearGradient key={item.id} id={`${id}-area-${s}`} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0\" stopColor={colorOf(item, s)} stopOpacity={chartRecipe.area.topOpacity} />\n <stop offset=\"1\" stopColor={colorOf(item, s)} stopOpacity={chartRecipe.area.bottomOpacity} />\n </linearGradient>\n ))}\n </defs>\n {(tickOverride ?? g.ticks).map((tick) => <line key={tick} className=\"hjm-chart__grid\" x1={g.plot.left} x2={g.plot.right} y1={g.y(tick)} y2={g.y(tick)} />)}\n {showAxis || valueAxis ? (tickOverride ?? g.ticks).map((tick) => <text key={`t${tick}`} className=\"hjm-chart__label\" x={g.plot.left - 6} y={g.y(tick)} dominantBaseline=\"middle\" textAnchor=\"end\">{formatValue(tick)}</text>) : null}\n {isChartNumber(reference) ? (\n <line className=\"hjm-chart__reference\" x1={g.plot.left} x2={g.plot.right} y1={g.y(reference)} y2={g.y(reference)} strokeDasharray={chartRecipe.reference.dash.join(\" \")} />\n ) : null}\n {series.map((item, s) => {\n const color = colorOf(item, s), segments = splitSegments(g.plots[s]!);\n const lower = g.lower?.[s];\n return (\n <g key={item.id} data-series={item.id}>\n {/* Drop each observed edge vertically; never connect across the absent periods. */}\n {missingConnection === \"dotted\" && segments.slice(1).map((segment, index) => {\n const before = segments[index]!.at(-1)!, after = segment[0]!;\n return <g key={`gap${index}`}>{[before, after].map(point => <line key={point.index} x1={point.x} y1={point.y} x2={point.x} y2={g.plot.bottom} stroke={color} strokeWidth={chartRecipe.line.strokeWidth} strokeDasharray={chartRecipe.line.missingDash.join(\" \")} strokeLinecap=\"round\" opacity={chartRecipe.line.missingOpacity} />)}</g>;\n })}\n {showArea || stacked ? segments.map((segment, i) => (\n <MotionLinePath animate={animateChanges} points={segment} floor={g.plot.bottom} curve={curve} lower={lower ? segment.map((p) => lower[p.index]!) : undefined} key={`a${i}`} className=\"hjm-chart__area\" fill={`url(#${id}-area-${s})`} />\n )) : null}\n {segments.map((segment, i) => (\n <g key={`l${i}`}><MotionLinePath animate={animateChanges} points={segment} curve={curve} className=\"hjm-chart__line\" stroke={scrubEmphasis && focus !== null ? \"var(--hjm-chart-axis-label)\" : color} strokeWidth={chartRecipe.line.strokeWidth} fill=\"none\" strokeLinejoin=\"round\" strokeLinecap=\"round\" />\n {scrubEmphasis && focus !== null && <g clipPath={`url(#${id}-scrub)`}><MotionLinePath animate={animateChanges} points={segment} curve={curve} className=\"hjm-chart__line\" stroke={color} strokeWidth={chartRecipe.line.strokeWidth} fill=\"none\" strokeLinejoin=\"round\" strokeLinecap=\"round\" /></g>}</g>\n ))}\n {/* An isolated observation between gaps has no line, so it gets a dot. */}\n {segments.filter((segment) => segment.length === 1).map((segment) => (\n <circle key={`d${segment[0]!.index}`} cx={segment[0]!.x} cy={segment[0]!.y} r={3} fill={color} />\n ))}\n </g>\n );\n })}\n {focus !== null && g.xs[focus] !== undefined ? (\n <g className=\"hjm-chart__focus\">\n <line className=\"hjm-chart__cursor\" x1={g.xs[focus]} x2={g.xs[focus]} y1={g.plot.top - 4} y2={g.plot.bottom} strokeWidth={chartRecipe.cursor.strokeWidth} strokeDasharray={scrubbing ? undefined : chartRecipe.cursor.dash.join(\" \")} />\n {series.map((item, s) => {\n const p = g.plots[s]![focus];\n if (!p) return null;\n const color = colorOf(item, s);\n return (\n <g key={item.id}>\n <circle cx={p.x} cy={p.y} r={chartRecipe.line.focusHaloRadius} fill={color} opacity={chartRecipe.line.focusHaloOpacity} />\n <circle className=\"hjm-chart__dot\" cx={p.x} cy={p.y} r={chartRecipe.line.pointRadius} fill={color} strokeWidth={2} />\n </g>\n );\n })}\n </g>\n ) : null}\n {marks && extremes ? ([[marks.max, extremes.high], [marks.min, extremes.low]] as const)\n .filter(([index], i) => i === 0 || index !== marks.max)\n .map(([index, label]) => {\n const p = g.plots[0]![index];\n if (!p) return null;\n // Place extrema on opposite sides even in a compressed, inverted rank domain.\n const dy = index === (invert ? marks.min : marks.max) ? -10 : 16;\n return (\n <text key={label} className=\"hjm-chart__label hjm-chart__extreme\" x={Math.min(g.plot.right - 4, Math.max(g.plot.left + 4, p.x))} y={Math.max(10, Math.min(height - 2, p.y + dy))}\n textAnchor={p.x < width * 0.2 ? \"start\" : p.x > width * 0.8 ? \"end\" : \"middle\"}>{`${label} ${formatValue(p.value)}`}</text>\n );\n }) : null}\n {showAxis && categories.length > 0 ? (\n <>\n <text className=\"hjm-chart__label\" x={g.xs[0]} y={height - 4} textAnchor=\"start\">{categories[0]}</text>\n {categories.length > 1 ? <text className=\"hjm-chart__label\" x={g.xs.at(-1)} y={height - 4} textAnchor=\"end\">{categories.at(-1)}</text> : null}\n </>\n ) : null}\n </svg>\n {scrubbing && focus !== null && g.xs[focus] !== undefined ? <CursorBubble x={g.xs[focus]!} width={width} text={cursorLabel?.(focus) ?? categories[focus]!} /> : null}\n </div>\n <p id={descriptionId} className=\"hjm-visually-hidden\">{describeChart(categories, series, formatValue, missingLabel)}</p>\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------------------------\n// BarChart\n// ---------------------------------------------------------------------------------------------\n\nexport type BarChartProps = CartesianCommon & FocusProps & Readonly<{\n orientation?: ChartOrientation;\n layout?: ChartBarLayout;\n /** Value label at each bar end (the stack total for stacked bars). */\n showValues?: boolean;\n animateChanges?: boolean;\n}>;\n\n/** Rounds only the value end of a bar so stacks read as one column. */\nfunction barPath(bar: ChartBar, vertical: boolean, negative: boolean, round: boolean): string {\n const { x, y, width: w, height: h } = bar;\n const r = round ? Math.min(chartRecipe.bar.radius, vertical ? w / 2 : h / 2, vertical ? h : w) : 0;\n const n = (value: number) => Number(value.toFixed(2));\n if (r <= 0) return `M${n(x)},${n(y)}h${n(w)}v${n(h)}h${n(-w)}Z`;\n if (vertical && !negative) return `M${n(x)},${n(y + h)}V${n(y + r)}Q${n(x)},${n(y)} ${n(x + r)},${n(y)}H${n(x + w - r)}Q${n(x + w)},${n(y)} ${n(x + w)},${n(y + r)}V${n(y + h)}Z`;\n if (vertical) return `M${n(x)},${n(y)}H${n(x + w)}V${n(y + h - r)}Q${n(x + w)},${n(y + h)} ${n(x + w - r)},${n(y + h)}H${n(x + r)}Q${n(x)},${n(y + h)} ${n(x)},${n(y + h - r)}Z`;\n if (!negative) return `M${n(x)},${n(y)}H${n(x + w - r)}Q${n(x + w)},${n(y)} ${n(x + w)},${n(y + r)}V${n(y + h - r)}Q${n(x + w)},${n(y + h)} ${n(x + w - r)},${n(y + h)}H${n(x)}Z`;\n return `M${n(x + w)},${n(y)}V${n(y + h)}H${n(x + r)}Q${n(x)},${n(y + h)} ${n(x)},${n(y + h - r)}V${n(y + r)}Q${n(x)},${n(y)} ${n(x + r)},${n(y)}Z`;\n}\n\nexport function BarChart({\n categories, series, accessibilityLabel, formatValue, missingLabel, height, width: fallbackWidth = 320, orientation = \"vertical\",\n layout = \"grouped\", domain, showAxis = false, showValues = false, animateChanges = false, className, layoutStyle, ...focusProps\n}: BarChartProps) {\n validateChartSeries(categories, series);\n const colorOf = useSeriesColor(), id = useSvgId(), descriptionId = `${id}-description`;\n const [measure, width] = useMeasuredWidth(fallbackWidth);\n const vertical = orientation === \"vertical\";\n // Horizontal bars grow with the category count so labels never overlap (same rule as Native).\n const resolvedHeight = height ?? (vertical ? chartRecipe.heights.regular : Math.max(chartRecipe.heights.compact, categories.length * 36 + spacing.lg));\n const available = useMemo(() => observedIndices(series), [series]);\n const { focus, scrubbing, set } = useFocus(focusProps, null, categories);\n const insets: ChartInsets = vertical\n ? (showAxis ? chartRecipe.insets.axis : { ...chartRecipe.insets.plot, bottom: spacing.lg })\n : { top: spacing.xs, right: showValues ? 48 : spacing.sm, bottom: spacing.xs, left: 72 };\n const g = useMemo(() => resolveBarGeometry({ categories, series, width, height: resolvedHeight, insets, orientation, layout, ...(domain ? { domain } : {}) }),\n [categories, series, width, resolvedHeight, insets, orientation, layout, domain]);\n const categoryKeys = useMemo(() => {\n const occurrences = new Map<string, number>();\n return categories.map(label => { const occurrence = occurrences.get(label) ?? 0; occurrences.set(label, occurrence + 1); return JSON.stringify([label, occurrence]); });\n }, [categories]);\n // Only the outermost segment of each stack (per sign) gets rounded corners.\n const outer = useMemo(() => {\n if (layout !== \"stacked\") return null;\n const stacks = stackValues(series), result = new Set<string>();\n categories.forEach((_, i) => {\n let positive = -1, negative = -1;\n series.forEach((item, s) => { const v = item.values[i]; if (!isChartNumber(v) || !stacks[s]![i]) return; if (v >= 0) positive = s; else negative = s; });\n if (positive >= 0) result.add(`${positive}-${i}`);\n if (negative >= 0) result.add(`${negative}-${i}`);\n });\n return result;\n }, [categories, series, layout]);\n const handlers = useScrub((x, y) => nearestChartIndex(g.centers, vertical ? x : y, available), (index) => set(index, true), () => set(focus, false));\n const onKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n if (event.key === \"Escape\" && focus !== null) { event.preventDefault(); set(null, false); return; }\n const next = vertical\n ? keyStep(event, available, focus, [\"ArrowRight\", \"ArrowUp\"], [\"ArrowLeft\", \"ArrowDown\"])\n : keyStep(event, available, focus, [\"ArrowDown\", \"ArrowRight\"], [\"ArrowUp\", \"ArrowLeft\"]);\n if (next === undefined) return;\n event.preventDefault();\n set(next, false);\n };\n const totals = layout === \"stacked\" && showValues\n ? categories.map((_, i) => series.reduce((sum, item) => sum + (isChartNumber(item.values[i]) ? item.values[i]! : 0), 0))\n : null;\n return (\n <div ref={measure} className={classNames(\"hjm-chart\", \"hjm-chart--bar\", className)} style={{ ...chromeStyle, ...layoutStyle }} data-orientation={orientation} data-scrubbing={scrubbing || undefined}>\n <div\n className=\"hjm-chart__plot\"\n role=\"slider\"\n tabIndex={0}\n aria-label={accessibilityLabel}\n aria-describedby={descriptionId}\n aria-orientation={vertical ? \"horizontal\" : \"vertical\"}\n aria-valuemin={0}\n aria-valuemax={Math.max(0, categories.length - 1)}\n aria-valuenow={focus ?? 0}\n // Without a focus the slider has no value; its name stands in so nothing misleading is read.\n aria-valuetext={focus === null ? accessibilityLabel : valueText(categories, series, focus, formatValue, missingLabel)}\n style={{ blockSize: resolvedHeight }}\n onKeyDown={onKeyDown}\n {...handlers}\n >\n <svg width={width} height={resolvedHeight} viewBox={`0 0 ${width} ${resolvedHeight}`} aria-hidden=\"true\" focusable=\"false\">\n {g.ticks.map((tick) => vertical\n ? <line key={tick} className=\"hjm-chart__grid\" x1={g.plot.left} x2={g.plot.right} y1={g.value(tick)} y2={g.value(tick)} />\n : <line key={tick} className=\"hjm-chart__grid\" y1={g.plot.top} y2={g.plot.bottom} x1={g.value(tick)} x2={g.value(tick)} />)}\n {showAxis && vertical ? g.ticks.map((tick) => <text key={`t${tick}`} className=\"hjm-chart__label\" x={g.plot.left - 6} y={g.value(tick)} dominantBaseline=\"middle\" textAnchor=\"end\">{formatValue(tick)}</text>) : null}\n {g.bars.map((bar) => (\n <MotionBar\n key={`${series[bar.seriesIndex]!.id}-${categoryKeys[bar.index]}`}\n bar={bar} animate={animateChanges && g.bars.length <= 200} vertical={vertical} rounded={outer ? outer.has(`${bar.seriesIndex}-${bar.index}`) : true}\n className=\"hjm-chart__bar\"\n data-index={bar.index}\n fill={colorOf(series[bar.seriesIndex]!, bar.seriesIndex)}\n opacity={focus === null || focus === bar.index ? 1 : chartRecipe.bar.restOpacity}\n />\n ))}\n {showValues && layout === \"grouped\" ? g.bars.map((bar) => (\n <text key={`v${bar.seriesIndex}-${bar.index}`} className=\"hjm-chart__label hjm-chart__value\"\n x={vertical ? bar.x + bar.width / 2 : bar.x + bar.width + 4} y={vertical ? bar.y - 4 : bar.y + bar.height / 2}\n dominantBaseline={vertical ? undefined : \"middle\"} textAnchor={vertical ? \"middle\" : \"start\"}>{formatValue(bar.value)}</text>\n )) : null}\n {totals ? totals.map((total, i) => {\n if (!available.includes(i)) return null;\n const end = g.value(Math.max(0, ...stackValues(series).map((row) => row[i]?.[1] ?? 0)));\n return (\n <text key={`total${i}`} className=\"hjm-chart__label hjm-chart__value\" x={vertical ? g.centers[i] : end + 4} y={vertical ? end - 4 : g.centers[i]}\n dominantBaseline={vertical ? undefined : \"middle\"} textAnchor={vertical ? \"middle\" : \"start\"}>{formatValue(total)}</text>\n );\n }) : null}\n {categories.map((category, i) => vertical\n ? (categories.length <= 12 || i % Math.ceil(categories.length / 12) === 0)\n ? <text key={`c${i}`} className=\"hjm-chart__label\" data-focused={focus === i || undefined} x={g.centers[i]} y={resolvedHeight - 4} textAnchor=\"middle\">{category}</text>\n : null\n : <text key={`c${i}`} className=\"hjm-chart__label\" data-focused={focus === i || undefined} x={g.plot.left - 8} y={g.centers[i]} dominantBaseline=\"middle\" textAnchor=\"end\">{category}</text>)}\n </svg>\n {scrubbing && focus !== null && vertical && g.centers[focus] !== undefined\n ? <CursorBubble x={g.centers[focus]!} width={width} text={valueText(categories, series, focus, formatValue, missingLabel)} />\n : null}\n </div>\n <p id={descriptionId} className=\"hjm-visually-hidden\">{describeChart(categories, series, formatValue, missingLabel)}</p>\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------------------------\n// ChartLegend\n// ---------------------------------------------------------------------------------------------\n\nexport type ChartLegendItem = Readonly<{ id: string; label: string; color: string; value?: string }>;\nexport type ChartLegendProps = ChartRootProps & Readonly<{\n items: readonly ChartLegendItem[]; exclusion?: Readonly<{ excludedIds: readonly string[]; onToggle: (id: string) => void; label: (item: ChartLegendItem, included: boolean) => string }>;\n selectedId?: string | null;\n /** When given, rows are toggle buttons; pressing the selected row clears the selection. */\n onSelect?: (id: string | null) => void;\n}>;\n\n/** Swatch + label (+ value). Color is never the only encoding: every row carries its label. */\nexport function ChartLegend({ items, selectedId, onSelect, exclusion, className, layoutStyle }: ChartLegendProps) {\n return (\n <ul className={classNames(\"hjm-chart-legend\", className)} style={{ ...chromeStyle, ...layoutStyle }} data-interactive={onSelect ? \"\" : undefined}>\n {items.map((item) => {\n const content = (\n <>\n <span className=\"hjm-chart-legend__swatch\" aria-hidden=\"true\" style={{ background: item.color }} />\n <span className=\"hjm-chart-legend__label\">{item.label}</span>\n {item.value !== undefined ? <span className=\"hjm-chart-legend__value\">{item.value}</span> : null}\n </>\n );\n const dimmed = selectedId != null && selectedId !== item.id;\n return (\n <li key={item.id} className=\"hjm-chart-legend__item\" data-dimmed={dimmed || undefined}>\n {exclusion ? <input type=\"checkbox\" checked={!exclusion.excludedIds.includes(item.id)} aria-label={exclusion.label(item, !exclusion.excludedIds.includes(item.id))} onChange={() => exclusion.onToggle(item.id)} /> : null}\n {onSelect ? (\n <button type=\"button\" className=\"hjm-chart-legend__button\" aria-pressed={selectedId === item.id} onClick={() => onSelect(selectedId === item.id ? null : item.id)}>\n {content}\n </button>\n ) : content}\n </li>\n );\n })}\n </ul>\n );\n}\n\n// ---------------------------------------------------------------------------------------------\n// PieChart\n// ---------------------------------------------------------------------------------------------\n\nexport type PieDatum = Readonly<{ id: string; label: string; value: number | null; color?: string }>;\nexport type PieChartProps = ChartRootProps & Readonly<{\n data: readonly PieDatum[];\n accessibilityLabel: string;\n formatValue: (value: number) => string;\n donut?: boolean;\n size?: number;\n /** Rendered in the donut hole (ignored for a full pie). */\n centerContent?: ReactNode | ((summary: PieVisibilitySummary) => ReactNode);\n /** Controlled denominator filtering, independent of selectedId emphasis. */\n exclusion?: Readonly<{ excludedIds: readonly string[]; onExcludedIdsChange: (ids: readonly string[]) => void; label: (datum: PieDatum, included: boolean) => string }>;\n selectedId?: string | null;\n defaultSelectedId?: string | null;\n onSelect?: (id: string | null) => void;\n showLegend?: boolean;\n}>;\n\nexport function PieChart({\n data, accessibilityLabel, formatValue, donut = true, size = 180, centerContent, selectedId, defaultSelectedId = null, onSelect,\n showLegend = true, exclusion, className, layoutStyle,\n}: PieChartProps) {\n const colorOf = useSeriesColor(), id = useSvgId(), descriptionId = `${id}-description`;\n const [own, setOwn] = useState<string | null>(defaultSelectedId);\n const candidate = selectedId !== undefined ? selectedId : own;\n const selected = candidate !== null && exclusion?.excludedIds.includes(candidate) ? null : candidate;\n const interactive = onSelect !== undefined || selectedId !== undefined;\n const select = (next: string | null) => { if (selectedId === undefined) setOwn(next); onSelect?.(next); };\n const toggle = (next: string) => select(selected === next ? null : next);\n // The selected slice moves outward by this much, so it is reserved inside the box.\n const lift = 4;\n const radius = size / 2 - lift - 2, inner = donut ? radius * chartRecipe.pie.donutRatio : 0;\n const visibility = resolvePieVisibility(data, exclusion?.excludedIds);\n const slices = resolvePieGeometry(visibility.values, { cx: size / 2, cy: size / 2, radius, innerRadius: inner });\n const center = typeof centerContent === \"function\" ? centerContent(visibility) : centerContent;\n const legendExclusion = exclusion ? { excludedIds: exclusion.excludedIds, label: (item: ChartLegendItem, included: boolean) => exclusion.label(data.find(datum => datum.id === item.id)!, included),\n onToggle: (id: string) => exclusion.onExcludedIdsChange(exclusion.excludedIds.includes(id) ? exclusion.excludedIds.filter(key => key !== id) : [...exclusion.excludedIds, id]) } : undefined;\n const colorAt = (index: number) => colorOf(data[index]!, index);\n const percentOf = (index: number) => slices.find((slice) => slice.index === index)?.percent;\n const percentText = (index: number) => { const p = percentOf(index); return p === undefined ? \"\" : `${Math.round(p)}%`; };\n const rowValue = (d: PieDatum, i: number) => isChartNumber(d.value) ? `${formatValue(d.value)}${percentOf(i) !== undefined ? ` · ${percentText(i)}` : \"\"}` : \"—\";\n const summary = data.map((d, i) => exclusion?.excludedIds.includes(d.id) ? \"\" : `${d.label} ${isChartNumber(d.value) ? formatValue(d.value) : \"\"}${percentOf(i) !== undefined ? ` (${percentText(i)})` : \"\"}`.trim()).filter(Boolean).join(\", \");\n // With a legend, its rows are the keyboard path; slices stay pointer targets so each item has\n // one tab stop. Without a legend the slices themselves become the buttons.\n const sliceButtons = interactive && !showLegend;\n return (\n <div className={classNames(\"hjm-chart\", \"hjm-chart--pie\", className)} style={{ ...chromeStyle, ...layoutStyle }}>\n <div className=\"hjm-chart__pie\" role={sliceButtons ? \"group\" : \"img\"} aria-label={accessibilityLabel} aria-describedby={descriptionId} style={{ inlineSize: size, blockSize: size }}>\n <svg width={size} height={size} viewBox={`0 0 ${size} ${size}`} aria-hidden={sliceButtons ? undefined : true} focusable=\"false\">\n {slices.map((slice) => {\n const datum = data[slice.index]!, isSelected = selected === datum.id;\n const mid = (slice.startAngle + slice.endAngle) / 2;\n return (\n <path\n key={datum.id}\n className=\"hjm-chart__slice\"\n data-id={datum.id}\n data-selected={isSelected || undefined}\n d={slice.path}\n fill={colorAt(slice.index)}\n opacity={selected !== null && !isSelected ? chartRecipe.bar.restOpacity : 1}\n transform={isSelected ? `translate(${(Math.sin(mid) * lift).toFixed(2)} ${(-Math.cos(mid) * lift).toFixed(2)})` : undefined}\n {...(interactive ? { onClick: () => toggle(datum.id) } : {})}\n {...(sliceButtons ? {\n role: \"button\",\n tabIndex: 0,\n \"aria-pressed\": isSelected,\n \"aria-label\": `${datum.label} ${rowValue(datum, slice.index)}`,\n onKeyDown: (event: KeyboardEvent<SVGPathElement>) => {\n if (event.key !== \"Enter\" && event.key !== \" \") return;\n event.preventDefault();\n toggle(datum.id);\n },\n } : {})}\n />\n );\n })}\n {!donut ? slices.filter((slice) => slice.percent >= chartRecipe.pie.minLabelPercent * 2).map((slice) => (\n <text key={`t${slice.index}`} className=\"hjm-chart__slice-label\" x={slice.centroid.x} y={slice.centroid.y} dominantBaseline=\"middle\" textAnchor=\"middle\">{percentText(slice.index)}</text>\n )) : null}\n </svg>\n {donut && center != null ? <div className=\"hjm-chart__pie-center\">{center}</div> : null}\n </div>\n {showLegend ? (\n <ChartLegend\n items={data.map((d, i) => ({ id: d.id, label: d.label, color: colorAt(i), value: rowValue(d, i) }))}\n selectedId={selected}\n {...(legendExclusion ? { exclusion: legendExclusion } : {})}\n {...(interactive ? { onSelect: select } : {})}\n />\n ) : null}\n <p id={descriptionId} className=\"hjm-visually-hidden\">{summary}</p>\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------------------------\n// RadarChart\n// ---------------------------------------------------------------------------------------------\n\nexport type RadarChartProps = ChartRootProps & Readonly<{\n /** At least three axes. */\n categories: readonly string[];\n series: readonly ChartSeries[];\n accessibilityLabel: string;\n formatValue: (value: number) => string;\n missingLabel: string;\n /** One shared domain for every axis; defaults to 0..max. */\n domain?: readonly [number, number];\n levels?: number;\n size?: number;\n /** Defaults to on for more than one series. */\n showLegend?: boolean;\n}>;\n\nexport function RadarChart({\n categories, series, accessibilityLabel, formatValue, missingLabel, domain, levels = chartRecipe.radar.levels, size = 240, showLegend,\n className, layoutStyle,\n}: RadarChartProps) {\n validateChartSeries(categories, series);\n const colorOf = useSeriesColor(), id = useSvgId(), descriptionId = `${id}-description`;\n // Room around the polygon for axis labels (same reservation as Native).\n const pad = 44, center = size / 2;\n const g = resolveRadarGeometry({ categories, series, cx: center, cy: center, radius: center - pad, levels, ...(domain ? { domain } : {}) });\n return (\n <div className={classNames(\"hjm-chart\", \"hjm-chart--radar\", className)} style={{ ...chromeStyle, ...layoutStyle }}>\n <div className=\"hjm-chart__radar\" role=\"img\" aria-label={accessibilityLabel} aria-describedby={descriptionId} style={{ inlineSize: size, blockSize: size }}>\n <svg width={size} height={size} viewBox={`0 0 ${size} ${size}`} aria-hidden=\"true\" focusable=\"false\">\n {g.rings.map((ring, i) => <path key={i} className=\"hjm-chart__grid\" d={ring} fill=\"none\" />)}\n {g.axes.map((axis) => <line key={axis.index} className=\"hjm-chart__grid\" x1={center} y1={center} x2={axis.end.x} y2={axis.end.y} />)}\n {g.polygons.map((polygon) => {\n const color = colorOf(series[polygon.seriesIndex]!, polygon.seriesIndex);\n return (\n <g key={polygon.seriesIndex} data-series={series[polygon.seriesIndex]!.id}>\n <path className=\"hjm-chart__polygon\" d={polygon.path} fill={color} fillOpacity={chartRecipe.radar.fillOpacity} stroke={color} strokeWidth={chartRecipe.radar.strokeWidth} strokeLinejoin=\"round\" />\n {polygon.points.map((p) => p.value !== null ? <circle key={p.index} cx={p.x} cy={p.y} r={3} fill={color} /> : null)}\n </g>\n );\n })}\n {g.axes.map((axis) => {\n const first = series[0]?.values[axis.index];\n return (\n <g key={`l${axis.index}`}>\n <text className=\"hjm-chart__label hjm-chart__axis-name\" x={axis.labelAt.x} y={axis.labelAt.y} dominantBaseline=\"middle\" textAnchor={axis.anchor}>{axis.label}</text>\n {series.length === 1 ? (\n <text className=\"hjm-chart__label\" x={axis.labelAt.x} y={axis.labelAt.y + 14} dominantBaseline=\"middle\" textAnchor={axis.anchor}>{isChartNumber(first) ? formatValue(first) : missingLabel}</text>\n ) : null}\n </g>\n );\n })}\n </svg>\n </div>\n {showLegend ?? series.length > 1 ? <ChartLegend items={series.map((item, s) => ({ id: item.id, label: item.label, color: colorOf(item, s) }))} /> : null}\n <p id={descriptionId} className=\"hjm-visually-hidden\">{describeChart(categories, series, formatValue, missingLabel)}</p>\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------------------------\n// ScatterChart\n// ---------------------------------------------------------------------------------------------\n\nexport type ScatterChartProps = ChartRootProps & Readonly<{\n points: readonly ScatterDatum[];\n accessibilityLabel: string;\n xLabel: string;\n yLabel: string;\n formatX: (value: number) => string;\n formatY: (value: number) => string;\n height?: number;\n /** Width used on the server and before the first ResizeObserver measurement. */\n width?: number;\n /** Legend labels by `seriesIndex`; the legend shows for two or more. */\n seriesLabels?: readonly string[];\n focusId?: string | null;\n onFocusChange?: (id: string | null) => void;\n}>;\n\nexport function ScatterChart({\n points, accessibilityLabel, xLabel, yLabel, formatX, formatY, height = chartRecipe.heights.tall, width: fallbackWidth = 320,\n seriesLabels, focusId, onFocusChange, className, layoutStyle,\n}: ScatterChartProps) {\n const colorOf = useSeriesColor(), id = useSvgId(), descriptionId = `${id}-description`;\n const [measure, width] = useMeasuredWidth(fallbackWidth);\n const [own, setOwn] = useState<string | null>(null);\n const focused = focusId !== undefined ? focusId : own;\n const choose = (next: string | null) => { if (focusId === undefined) setOwn(next); onFocusChange?.(next); };\n const g = useMemo(() => resolveScatterGeometry({ points, width, height }), [points, width, height]);\n // Keyboard order follows the x axis so arrows read left to right.\n const ordered = useMemo(() => [...points].sort((a, b) => a.x - b.x || a.y - b.y), [points]);\n const handlers = useScrub((x, y) => nearestScatterPoint(g.points, x, y), (index) => { if (index !== null) choose(points[index]!.id); }, () => undefined);\n const focusPoint = g.points.find((p) => p.id === focused);\n const sx = scaleLinear(g.xDomain, [g.plot.left, g.plot.right]), sy = scaleLinear(g.yDomain, [g.plot.bottom, g.plot.top]);\n const describe = (p: ScatterDatum) => `${p.label}, ${xLabel} ${formatX(p.x)}, ${yLabel} ${formatY(p.y)}`;\n const position = ordered.findIndex((p) => p.id === focused);\n const onKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n let next: ScatterDatum | undefined;\n if (event.key === \"ArrowRight\" || event.key === \"ArrowUp\") next = ordered[Math.min(ordered.length - 1, position + 1)];\n else if (event.key === \"ArrowLeft\" || event.key === \"ArrowDown\") next = ordered[position < 0 ? ordered.length - 1 : Math.max(0, position - 1)];\n else if (event.key === \"Home\") next = ordered[0];\n else if (event.key === \"End\") next = ordered.at(-1);\n else if (event.key === \"Escape\" && focused !== null) { event.preventDefault(); choose(null); return; }\n else return;\n event.preventDefault();\n if (next) choose(next.id);\n };\n return (\n <div ref={measure} className={classNames(\"hjm-chart\", \"hjm-chart--scatter\", className)} style={{ ...chromeStyle, ...layoutStyle }}>\n <div\n className=\"hjm-chart__plot\"\n role=\"slider\"\n tabIndex={0}\n aria-label={accessibilityLabel}\n aria-describedby={descriptionId}\n aria-valuemin={0}\n aria-valuemax={Math.max(0, points.length - 1)}\n aria-valuenow={Math.max(0, position)}\n aria-valuetext={focusPoint ? describe(focusPoint) : accessibilityLabel}\n style={{ blockSize: height }}\n onKeyDown={onKeyDown}\n {...handlers}\n >\n <svg width={width} height={height} viewBox={`0 0 ${width} ${height}`} aria-hidden=\"true\" focusable=\"false\">\n {g.yTicks.map((tick) => (\n <g key={`y${tick}`}>\n <line className=\"hjm-chart__grid\" x1={g.plot.left} x2={g.plot.right} y1={sy(tick)} y2={sy(tick)} />\n <text className=\"hjm-chart__label\" x={g.plot.left - 6} y={sy(tick)} dominantBaseline=\"middle\" textAnchor=\"end\">{formatY(tick)}</text>\n </g>\n ))}\n {g.xTicks.map((tick) => <text key={`x${tick}`} className=\"hjm-chart__label\" x={sx(tick)} y={height - 4} textAnchor=\"middle\">{formatX(tick)}</text>)}\n {g.points.map((p) => {\n const isFocused = p.id === focused;\n return (\n <circle key={p.id} className={classNames(\"hjm-chart__point\", isFocused && \"hjm-chart__dot\")} data-id={p.id} cx={p.px} cy={p.py}\n r={isFocused ? chartRecipe.scatter.focusRadius : chartRecipe.scatter.radius} fill={colorOf({}, p.seriesIndex ?? 0)}\n opacity={focused !== null && !isFocused ? 0.45 : 0.9} strokeWidth={isFocused ? 2 : 0} />\n );\n })}\n </svg>\n {focusPoint ? <CursorBubble x={focusPoint.px} width={width} text={`${focusPoint.label} · ${formatX(focusPoint.x)} / ${formatY(focusPoint.y)}`} /> : null}\n </div>\n <div className=\"hjm-chart__axis-titles\" aria-hidden=\"true\"><span>{yLabel} ↑</span><span>{xLabel} →</span></div>\n {seriesLabels && seriesLabels.length > 1 ? <ChartLegend items={seriesLabels.map((label, i) => ({ id: String(i), label, color: colorOf({}, i) }))} /> : null}\n <p id={descriptionId} className=\"hjm-visually-hidden\">{points.map(describe).join(\". \")}</p>\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------------------------\n// Sparkline\n// ---------------------------------------------------------------------------------------------\n\nexport type SparklineProps = ChartRootProps & Readonly<{\n values: readonly (number | null)[];\n color?: string;\n invert?: boolean;\n domain?: readonly [number, number];\n width?: number;\n height?: number;\n /** Omit when the adjacent text already states the value; the sparkline is then decorative. */\n accessibilityLabel?: string;\n}>;\n\nexport function Sparkline({\n values, color, invert = false, domain, width = chartRecipe.sparkline.width, height = chartRecipe.sparkline.height, accessibilityLabel,\n className, layoutStyle,\n}: SparklineProps) {\n const colorOf = useSeriesColor(), id = useSvgId();\n const stroke = color ?? colorOf({}, 0);\n const pad = chartRecipe.sparkline.padding;\n const g = resolveLineGeometry({\n categories: values.map((_, i) => String(i)), series: [{ id: \"s\", label: \"s\", values }], width, height,\n insets: { top: pad, right: pad, bottom: pad, left: pad }, invert, ...(domain ? { domain } : {}),\n });\n const segments = splitSegments(g.plots[0]!);\n const labelled = accessibilityLabel !== undefined && accessibilityLabel.trim().length > 0;\n return (\n <svg\n className={classNames(\"hjm-sparkline\", className)}\n style={layoutStyle}\n width={width}\n height={height}\n viewBox={`0 0 ${width} ${height}`}\n focusable=\"false\"\n {...(labelled ? { role: \"img\", \"aria-label\": accessibilityLabel } : { \"aria-hidden\": true })}\n >\n <defs>\n <linearGradient id={`${id}-spark`} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0\" stopColor={stroke} stopOpacity={0.28} />\n <stop offset=\"1\" stopColor={stroke} stopOpacity={0} />\n </linearGradient>\n </defs>\n {segments.map((segment, i) => <path key={`a${i}`} d={areaPath(segment, height)} fill={`url(#${id}-spark)`} />)}\n {segments.map((segment, i) => <path key={`l${i}`} className=\"hjm-chart__line\" d={linePath(segment)} stroke={stroke} strokeWidth={chartRecipe.sparkline.strokeWidth} fill=\"none\" strokeLinejoin=\"round\" strokeLinecap=\"round\" />)}\n </svg>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"chart.js","sourceRoot":"","sources":["../src/chart.tsx"],"names":[],"mappings":"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,CAAC,GAAG,CAAC;IAClL,IAAI,QAAQ;QAAE,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;IACjL,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAClL,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,C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","sourcesContent":["import {\n useCallback,\n useId,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type KeyboardEvent,\n type PointerEvent,\n type ReactNode,\n} from \"react\";\nimport type { ColorReference } from \"@hjmds/design-contracts/color-references\";\nimport { resolveDatavizSeriesColor } from \"@hjmds/design-contracts/dataviz\";\nimport {\n prepareChartLineMorph,\n areaPath,\n chartRecipe,\n describeChart,\n isChartNumber,\n linePath,\n nearestChartIndex,\n nearestScatterPoint,\n observedIndices,\n resolveBarGeometry,\n resolveLineGeometry,\n resolvePieGeometry, resolvePieVisibility, type PieVisibilitySummary,\n resolveRadarGeometry,\n resolveScatterGeometry,\n scaleLinear,\n seriesExtremes,\n splitSegments,\n stackValues,\n stepChartIndex,\n validateChartSeries,\n type ChartBar,\n type ChartBarLayout,\n type ChartCurve,\n type ChartInsets,\n type ChartOrientation,\n type ChartSeries,\n type ScatterDatum,\n} from \"@hjmds/design-contracts/components/chart\";\nimport { spacing, typography } from \"@hjmds/design-contracts/foundations\";\nimport { useOptionalHjmTheme } from \"./provider.js\";\nimport { classNames } from \"./internal.js\";\nimport type { HjmCompositionStyleProp } from \"./composition-style.js\";\n\n/*\n * Web chart renderers (2026-10-14). Geometry, domains, stacking, gaps and the text alternative come\n * from `@hjmds/design-contracts/components/chart`; this file only paints plain SVG and translates\n * pointer/keyboard input into the contract's focus index. Prop names mirror\n * `@hjmds/react-native/chart` so products write one chart description for both surfaces.\n * Interaction follows react-native-wagmi-charts (press-and-drag cursor, release returns to the\n * latest value) with pointer events and `touch-action: pan-y` so vertical page scrolling still wins.\n * Optional data morphing updates SVG hosts directly and respects reduced motion.\n */\n\n// ---------------------------------------------------------------------------------------------\n// Shared helpers\n// ---------------------------------------------------------------------------------------------\n\nfunction kebab(value: string): string {\n return value.replace(/[A-Z]/g, (letter) => `-${letter.toLowerCase()}`);\n}\n\n/**\n * Chrome colors stay recipe references resolved through the provider's CSS variables, so a theme\n * switch repaints without re-rendering and the recipe (not styles.css) owns the choice.\n */\nfunction cssColor(reference: ColorReference): string {\n const name = reference.source === \"theme\"\n ? `--hjm-color-${kebab(reference.key)}`\n : reference.source === \"accent\" ? `--hjm-accent-${kebab(reference.key)}` : `--hjm-accent-fill-${kebab(reference.key)}`;\n return reference.alpha === undefined || reference.alpha === 1\n ? `var(${name})`\n : `color-mix(in srgb, var(${name}) ${Math.round(reference.alpha * 100)}%, transparent)`;\n}\n\nconst chrome = chartRecipe.chrome;\nconst chromeStyle = {\n \"--hjm-chart-axis-line\": cssColor(chrome.axisLine),\n \"--hjm-chart-axis-label\": cssColor(chrome.axisLabel),\n \"--hjm-chart-grid-line\": cssColor(chrome.gridLine),\n \"--hjm-chart-grid-width\": `${chrome.gridWidth}px`,\n \"--hjm-chart-legend-label\": cssColor(chrome.legendLabel),\n \"--hjm-chart-tooltip-surface\": cssColor(chrome.tooltipSurface),\n \"--hjm-chart-tooltip-border\": cssColor(chrome.tooltipBorder),\n \"--hjm-chart-tooltip-content\": cssColor(chrome.tooltipContent),\n \"--hjm-chart-label-surface\": cssColor(chrome.labelSurface),\n \"--hjm-chart-label-content\": cssColor(chrome.labelContent),\n} as CSSProperties;\n\nfunction useSeriesColor(): (series: Readonly<{ color?: string | undefined }>, index: number) => string {\n const theme = useOptionalHjmTheme()?.environment.theme ?? \"light\";\n return useCallback((series, index) => series.color ?? resolveDatavizSeriesColor(theme, index), [theme]);\n}\n\nfunction useSvgId(): string {\n return useId().replace(/[^a-zA-Z0-9_-]/g, \"\");\n}\n\n/** Responsive width: `fallback` renders on the server and before the first measurement. */\nfunction useMeasuredWidth(fallback: number): [(node: HTMLDivElement | null) => void, number] {\n const [width, setWidth] = useState(fallback);\n const [node, setNode] = useState<HTMLDivElement | null>(null);\n useLayoutEffect(() => {\n if (!node) return;\n const update = (next: number) => { if (next > 0) setWidth(Math.round(next)); };\n update(node.getBoundingClientRect().width);\n if (typeof ResizeObserver === \"undefined\") return;\n const observer = new ResizeObserver((entries) => update(entries[0]?.contentRect.width ?? 0));\n observer.observe(node);\n return () => observer.disconnect();\n }, [node]);\n return [setNode, width];\n}\n\ntype FocusDetail = Readonly<{ scrubbing: boolean }>;\ntype FocusProps = Readonly<{\n /** Controlled focused category; `null` shows no focus. */\n focusIndex?: number | null;\n defaultFocusIndex?: number | null;\n onFocusChange?: (index: number | null, detail: FocusDetail) => void;\n /** Keep the scrubbed point after release instead of returning to the default (Native parity, 2026-10-14). */\n holdOnRelease?: boolean;\n}>;\n\n/** Controlled/uncontrolled focus plus a transient scrub index (same model as the Native renderer). */\nfunction useFocus({ focusIndex, defaultFocusIndex = null, onFocusChange, holdOnRelease = false }: FocusProps, fallback: number | null, categories?: readonly string[]) {\n const categoryKey = (index: number | null) => index === null || categories?.[index] === undefined ? null : JSON.stringify([categories[index], categories.slice(0, index).filter(value => value === categories[index]).length]);\n const selectedKey = useRef<string | null>(categoryKey(defaultFocusIndex));\n const [own, setOwn] = useState<number | null>(defaultFocusIndex);\n const [scrub, setScrub] = useState<number | null>(null);\n const last = useRef<number | null>(null);\n const mapped = categories && selectedKey.current !== null ? categories.findIndex((_, index) => categoryKey(index) === selectedKey.current) : own;\n const ownSelection = mapped === -1 ? null : mapped;\n const settled = focusIndex !== undefined ? (categories && (focusIndex === null || categories[focusIndex] === undefined) ? null : focusIndex) : ownSelection;\n const focus = scrub ?? settled ?? fallback;\n const set = useCallback((index: number | null, scrubbing: boolean) => {\n if (scrubbing) { setScrub(index); last.current = index; }\n else { setScrub(null); if (focusIndex === undefined) { selectedKey.current = categoryKey(index); setOwn(index); } }\n onFocusChange?.(index, { scrubbing });\n }, [focusIndex, onFocusChange, categories]);\n const release = useCallback(() => set(holdOnRelease ? last.current : null, false), [set, holdOnRelease]);\n return { focus, scrubbing: scrub !== null, set, release };\n}\n\n/** Press-and-drag; the pointer is captured so a drag that leaves the plot keeps scrubbing. */\nfunction useScrub(pick: (x: number, y: number) => number | null, onScrub: (index: number | null) => void, onEnd: () => void) {\n const active = useRef<number | null>(null);\n const at = (event: PointerEvent<HTMLElement>) => {\n const rect = event.currentTarget.getBoundingClientRect();\n return pick(event.clientX - rect.left, event.clientY - rect.top);\n };\n return {\n onPointerDown(event: PointerEvent<HTMLElement>) {\n if (event.button !== 0) return;\n active.current = event.pointerId;\n event.currentTarget.setPointerCapture?.(event.pointerId);\n onScrub(at(event));\n },\n onPointerMove(event: PointerEvent<HTMLElement>) {\n if (active.current !== event.pointerId) return;\n onScrub(at(event));\n },\n onPointerUp(event: PointerEvent<HTMLElement>) {\n if (active.current !== event.pointerId) return;\n active.current = null;\n onEnd();\n },\n onPointerCancel(event: PointerEvent<HTMLElement>) {\n if (active.current !== event.pointerId) return;\n active.current = null;\n onEnd();\n },\n };\n}\n\nfunction valueText(categories: readonly string[], series: readonly ChartSeries[], index: number, format: (value: number) => string, missing: string): string {\n const values = series.map((item) => { const v = item.values[index]; return isChartNumber(v) ? format(v) : missing; });\n return series.length === 1 ? `${categories[index]} ${values[0]}` : `${categories[index]} ${series.map((item, s) => `${item.label} ${values[s]}`).join(\", \")}`;\n}\n\n/** Arrow/Home/End stepping over observed indices only; returns undefined for unrelated keys. */\nfunction keyStep(event: KeyboardEvent, available: readonly number[], focus: number | null, nextKeys: readonly string[], previousKeys: readonly string[]): number | null | undefined {\n if (nextKeys.includes(event.key)) return stepChartIndex(available, focus, 1);\n if (previousKeys.includes(event.key)) return stepChartIndex(available, focus, -1);\n if (event.key === \"Home\") return available[0] ?? null;\n if (event.key === \"End\") return available.at(-1) ?? null;\n return undefined;\n}\n\nfunction CursorBubble({ x, width, text }: Readonly<{ x: number; width: number; text: string }>) {\n // Clamped like the Native bubble so the label never leaves the plot.\n const half = 44, center = Math.min(width - half, Math.max(half, x));\n return <span className=\"hjm-chart__bubble\" aria-hidden=\"true\" style={{ left: center }}>{text}</span>;\n}\n\ntype ChartRootProps = Readonly<{\n className?: string;\n /** Canonical layout-only placement on the root element. Controlled visual keys are excluded. */\n layoutStyle?: HjmCompositionStyleProp;\n}>;\n\ntype CartesianCommon = ChartRootProps & Readonly<{\n categories: readonly string[];\n series: readonly ChartSeries[];\n /** Accessible name (Web `aria-label`). Product-localized. */\n accessibilityLabel: string;\n formatValue: (value: number) => string;\n /** Spoken/written for a missing observation in the text alternative. */\n missingLabel: string;\n height?: number;\n /** Width used on the server and before the first ResizeObserver measurement. */\n width?: number;\n domain?: readonly [number, number];\n showAxis?: boolean;\n}>;\n\n// Paths/rectangles update their host attributes directly; values, axes and accessibility\n// always come from the latest real data. No per-frame React reconciliation.\nfunction MotionLinePath({ points, lower, floor, curve, animate, ...rest }: Omit<React.SVGProps<SVGPathElement>, \"points\" | \"ref\"> & { points: readonly { x: number; y: number }[]; lower?: readonly { x: number; y: number }[] | undefined; floor?: number | undefined; curve: ChartCurve; animate: boolean }) {\n const reducedMotion = useOptionalHjmTheme()?.environment.reducedMotion;\n const node = useRef<SVGPathElement | null>(null);\n const previous = useRef<{ points: readonly { x: number; y: number }[]; lower?: readonly { x: number; y: number }[] | undefined; floor?: number | undefined } | null>(null);\n const path = (p: readonly { x: number; y: number }[], base?: number, edge?: readonly { x: number; y: number }[]) => base === undefined ? linePath(p, curve) : areaPath(p, base, curve, edge);\n const signature = JSON.stringify([points, lower, floor, curve]);\n useLayoutEffect(() => {\n const before = previous.current;\n const target = { points, lower, floor };\n previous.current = target;\n // A bounded morph avoids multiplying frame work for dense historical datasets.\n const morph = animate && !reducedMotion && !document.hidden && before && points.length + before.points.length <= 1024 ? prepareChartLineMorph(before.points, points) : null;\n if (!morph) { node.current?.setAttribute(\"d\", path(points, floor, lower)); return; }\n const lowerMorph = before?.lower && lower ? prepareChartLineMorph(before.lower, lower) : null;\n let frame = 0, start: number | undefined;\n const paint = (t: number) => {\n const current = t === 1 ? target : { points: morph(t), lower: lowerMorph?.(t) ?? lower, floor: floor === undefined ? undefined : (before?.floor ?? floor) + (floor - (before?.floor ?? floor)) * t };\n previous.current = current;\n const d = path(current.points, current.floor, current.lower); node.current?.setAttribute(\"d\", d);\n };\n const tick = (now: number) => { start ??= now; const t = Math.min(1, (now - start) / 220); paint(1 - (1 - t) ** 3); if (t < 1) frame = requestAnimationFrame(tick); };\n paint(0); frame = requestAnimationFrame(tick);\n const visibility = () => { if (document.hidden) { cancelAnimationFrame(frame); paint(1); } }; document.addEventListener(\"visibilitychange\", visibility);\n return () => { cancelAnimationFrame(frame); document.removeEventListener(\"visibilitychange\", visibility); };\n }, [signature, animate, reducedMotion]);\n return <path {...rest} ref={node} d={path(points, floor, lower)} />;\n}\nfunction MotionBar({ bar, animate, vertical = true, rounded = true, ...rest }: React.SVGProps<SVGPathElement> & { bar: ChartBar; animate: boolean; vertical?: boolean; rounded?: boolean }) {\n const reducedMotion = useOptionalHjmTheme()?.environment.reducedMotion;\n const node = useRef<SVGPathElement | null>(null), previous = useRef<ChartBar | null>(null);\n const signature = JSON.stringify([bar, vertical, rounded]);\n useLayoutEffect(() => {\n const before = previous.current; previous.current = bar;\n if (!animate || reducedMotion || !before || document.hidden) { node.current?.setAttribute(\"d\", barPath(bar, vertical, bar.value < 0, rounded)); return; }\n let frame = 0, start: number | undefined;\n const paint = (t: number) => {\n const value = { ...bar, x: before.x + (bar.x - before.x) * t, y: before.y + (bar.y - before.y) * t, width: before.width + (bar.width - before.width) * t, height: before.height + (bar.height - before.height) * t };\n previous.current = value; node.current?.setAttribute(\"d\", barPath(value, vertical, value.value < 0, rounded));\n };\n const tick = (now: number) => { start ??= now; const t = Math.min(1, (now - start) / 220); paint(1 - (1 - t) ** 3); if (t < 1) frame = requestAnimationFrame(tick); };\n paint(0); frame = requestAnimationFrame(tick);\n const visibility = () => { if (document.hidden) { cancelAnimationFrame(frame); paint(1); } }; document.addEventListener(\"visibilitychange\", visibility);\n return () => { cancelAnimationFrame(frame); document.removeEventListener(\"visibilitychange\", visibility); };\n }, [signature, animate, reducedMotion]);\n return <path {...rest} ref={node} d={barPath(bar, vertical, bar.value < 0, rounded)} />;\n}\n\n// ---------------------------------------------------------------------------------------------\n// LineChart\n// ---------------------------------------------------------------------------------------------\n\nexport type LineChartProps = CartesianCommon & FocusProps & Readonly<{\n curve?: ChartCurve;\n /** Separate dotted vertical drops at the observed edges of missing periods; no bridge or invented values. */\n missingConnection?: \"none\" | \"dotted\";\n /** Gradient area under each line. Defaults to on for a single series. */\n area?: boolean;\n stacked?: boolean;\n /** Smallest value on top (ranks, ERA). */\n invert?: boolean;\n includeZero?: boolean;\n /** Dashed horizontal reference line; `\"first\"` uses the first observation (previous close). */\n referenceValue?: number | \"first\";\n /** Labels for the first series' high/low markers, shown while not scrubbing. */\n extremes?: Readonly<{ high: string; low: string }>;\n /** Bubble text above the cursor while scrubbing; defaults to the category. */\n cursorLabel?: (index: number) => string;\n /** Morph actual data changes; reduced motion snaps immediately. */\n animateChanges?: boolean;\n /** Keep the chosen side in series color; mute the other side. */\n scrubEmphasis?: \"before\" | \"after\";\n /** Value labels only (rank charts: \"#1\" at the top). */\n valueAxis?: boolean;\n /** Overrides grid/label ticks. */\n ticks?: readonly number[];\n}>;\n\nexport function LineChart({\n categories, series, accessibilityLabel, formatValue, missingLabel, height = chartRecipe.heights.regular, width: fallbackWidth = 320,\n curve = \"linear\", missingConnection = \"none\", area, stacked = false, invert = false, domain, includeZero, referenceValue, extremes, showAxis = false,\n valueAxis = false, ticks: tickOverride, cursorLabel, animateChanges = false, scrubEmphasis, className, layoutStyle, ...focusProps\n}: LineChartProps) {\n validateChartSeries(categories, series);\n const colorOf = useSeriesColor(), id = useSvgId(), descriptionId = `${id}-description`;\n const [measure, width] = useMeasuredWidth(fallbackWidth);\n const available = useMemo(() => observedIndices(series), [series]);\n const { focus, scrubbing, set, release } = useFocus(focusProps, available.at(-1) ?? null, categories);\n const insets = showAxis || valueAxis ? chartRecipe.insets.axis : chartRecipe.insets.plot;\n const g = useMemo(() => resolveLineGeometry({\n categories, series, width, height, insets, invert, stacked,\n ...(domain ? { domain } : {}), ...(includeZero === undefined ? {} : { includeZero }),\n }), [categories, series, width, height, insets, invert, stacked, domain, includeZero]);\n // Release returns to the default (latest) focus unless holdOnRelease keeps the scrubbed point.\n const handlers = useScrub((x) => nearestChartIndex(g.xs, x, available), (index) => set(index, true), release);\n const showArea = area ?? series.length === 1;\n const reference = referenceValue === \"first\" ? series[0]?.values.find(isChartNumber) : referenceValue;\n const marks = extremes && !scrubbing ? seriesExtremes(series[0]?.values ?? []) : null;\n const onKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n const next = keyStep(event, available, focus, [\"ArrowRight\", \"ArrowUp\"], [\"ArrowLeft\", \"ArrowDown\"]);\n if (next === undefined) return;\n event.preventDefault();\n set(next, false);\n };\n return (\n <div ref={measure} className={classNames(\"hjm-chart\", \"hjm-chart--line\", className)} style={{ ...chromeStyle, ...layoutStyle }} data-scrubbing={scrubbing || undefined}>\n <div\n className=\"hjm-chart__plot\"\n role=\"slider\"\n tabIndex={0}\n aria-label={accessibilityLabel}\n aria-describedby={descriptionId}\n aria-valuemin={0}\n aria-valuemax={Math.max(0, categories.length - 1)}\n aria-valuenow={focus ?? 0}\n aria-valuetext={focus === null ? missingLabel : valueText(categories, series, focus, formatValue, missingLabel)}\n style={{ blockSize: height }}\n onKeyDown={onKeyDown}\n {...handlers}\n >\n <svg width={width} height={height} viewBox={`0 0 ${width} ${height}`} aria-hidden=\"true\" focusable=\"false\">\n <defs>\n <clipPath id={`${id}-scrub`}><rect x={scrubEmphasis === \"after\" && focus !== null ? g.xs[focus] ?? g.plot.left : g.plot.left} y={0} width={focus === null ? width : scrubEmphasis === \"after\" ? g.plot.right - (g.xs[focus] ?? g.plot.left) : (g.xs[focus] ?? g.plot.right) - g.plot.left} height={height} /></clipPath>\n {series.map((item, s) => (\n <linearGradient key={item.id} id={`${id}-area-${s}`} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0\" stopColor={colorOf(item, s)} stopOpacity={chartRecipe.area.topOpacity} />\n <stop offset=\"1\" stopColor={colorOf(item, s)} stopOpacity={chartRecipe.area.bottomOpacity} />\n </linearGradient>\n ))}\n </defs>\n {(tickOverride ?? g.ticks).map((tick) => <line key={tick} className=\"hjm-chart__grid\" x1={g.plot.left} x2={g.plot.right} y1={g.y(tick)} y2={g.y(tick)} />)}\n {showAxis || valueAxis ? (tickOverride ?? g.ticks).map((tick) => <text key={`t${tick}`} className=\"hjm-chart__label\" x={g.plot.left - 6} y={g.y(tick)} dominantBaseline=\"middle\" textAnchor=\"end\">{formatValue(tick)}</text>) : null}\n {isChartNumber(reference) ? (\n <line className=\"hjm-chart__reference\" x1={g.plot.left} x2={g.plot.right} y1={g.y(reference)} y2={g.y(reference)} strokeDasharray={chartRecipe.reference.dash.join(\" \")} />\n ) : null}\n {series.map((item, s) => {\n const color = colorOf(item, s), segments = splitSegments(g.plots[s]!);\n const lower = g.lower?.[s];\n return (\n <g key={item.id} data-series={item.id}>\n {/* Drop each observed edge vertically; never connect across the absent periods. */}\n {missingConnection === \"dotted\" && segments.slice(1).map((segment, index) => {\n const before = segments[index]!.at(-1)!, after = segment[0]!;\n return <g key={`gap${index}`}>{[before, after].map(point => <line key={point.index} x1={point.x} y1={point.y} x2={point.x} y2={g.plot.bottom} stroke={color} strokeWidth={chartRecipe.line.strokeWidth} strokeDasharray={chartRecipe.line.missingDash.join(\" \")} strokeLinecap=\"round\" opacity={chartRecipe.line.missingOpacity} />)}</g>;\n })}\n {showArea || stacked ? segments.map((segment, i) => (\n <MotionLinePath animate={animateChanges} points={segment} floor={g.plot.bottom} curve={curve} lower={lower ? segment.map((p) => lower[p.index]!) : undefined} key={`a${i}`} className=\"hjm-chart__area\" fill={`url(#${id}-area-${s})`} />\n )) : null}\n {segments.map((segment, i) => (\n <g key={`l${i}`}><MotionLinePath animate={animateChanges} points={segment} curve={curve} className=\"hjm-chart__line\" stroke={scrubEmphasis && focus !== null ? \"var(--hjm-chart-axis-label)\" : color} strokeWidth={chartRecipe.line.strokeWidth} fill=\"none\" strokeLinejoin=\"round\" strokeLinecap=\"round\" />\n {scrubEmphasis && focus !== null && <g clipPath={`url(#${id}-scrub)`}><MotionLinePath animate={animateChanges} points={segment} curve={curve} className=\"hjm-chart__line\" stroke={color} strokeWidth={chartRecipe.line.strokeWidth} fill=\"none\" strokeLinejoin=\"round\" strokeLinecap=\"round\" /></g>}</g>\n ))}\n {/* An isolated observation between gaps has no line, so it gets a dot. */}\n {segments.filter((segment) => segment.length === 1).map((segment) => (\n <circle key={`d${segment[0]!.index}`} cx={segment[0]!.x} cy={segment[0]!.y} r={3} fill={color} />\n ))}\n </g>\n );\n })}\n {focus !== null && g.xs[focus] !== undefined ? (\n <g className=\"hjm-chart__focus\">\n <line className=\"hjm-chart__cursor\" x1={g.xs[focus]} x2={g.xs[focus]} y1={g.plot.top - 4} y2={g.plot.bottom} strokeWidth={chartRecipe.cursor.strokeWidth} strokeDasharray={scrubbing ? undefined : chartRecipe.cursor.dash.join(\" \")} />\n {series.map((item, s) => {\n const p = g.plots[s]![focus];\n if (!p) return null;\n const color = colorOf(item, s);\n return (\n <g key={item.id}>\n <circle cx={p.x} cy={p.y} r={chartRecipe.line.focusHaloRadius} fill={color} opacity={chartRecipe.line.focusHaloOpacity} />\n <circle className=\"hjm-chart__dot\" cx={p.x} cy={p.y} r={chartRecipe.line.pointRadius} fill={color} strokeWidth={2} />\n </g>\n );\n })}\n </g>\n ) : null}\n {marks && extremes ? ([[marks.max, extremes.high], [marks.min, extremes.low]] as const)\n .filter(([index], i) => i === 0 || index !== marks.max)\n .map(([index, label]) => {\n const p = g.plots[0]![index];\n if (!p) return null;\n // Place extrema on opposite sides even in a compressed, inverted rank domain.\n const dy = index === (invert ? marks.min : marks.max) ? -10 : 16;\n return (\n <text key={label} className=\"hjm-chart__label hjm-chart__extreme\" x={Math.min(g.plot.right - 4, Math.max(g.plot.left + 4, p.x))} y={Math.max(10, Math.min(height - 2, p.y + dy))}\n textAnchor={p.x < width * 0.2 ? \"start\" : p.x > width * 0.8 ? \"end\" : \"middle\"}>{`${label} ${formatValue(p.value)}`}</text>\n );\n }) : null}\n {showAxis && categories.length > 0 ? (\n <>\n <text className=\"hjm-chart__label\" x={g.xs[0]} y={height - 4} textAnchor=\"start\">{categories[0]}</text>\n {categories.length > 1 ? <text className=\"hjm-chart__label\" x={g.xs.at(-1)} y={height - 4} textAnchor=\"end\">{categories.at(-1)}</text> : null}\n </>\n ) : null}\n </svg>\n {scrubbing && focus !== null && g.xs[focus] !== undefined ? <CursorBubble x={g.xs[focus]!} width={width} text={cursorLabel?.(focus) ?? categories[focus]!} /> : null}\n </div>\n <p id={descriptionId} className=\"hjm-visually-hidden\">{describeChart(categories, series, formatValue, missingLabel)}</p>\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------------------------\n// BarChart\n// ---------------------------------------------------------------------------------------------\n\nexport type BarChartProps = CartesianCommon & FocusProps & Readonly<{\n orientation?: ChartOrientation;\n layout?: ChartBarLayout;\n /** Value label at each bar end (the stack total for stacked bars). */\n showValues?: boolean;\n animateChanges?: boolean;\n}>;\n\n/** Rounds only the value end of a bar so stacks read as one column. */\nfunction barPath(bar: ChartBar, vertical: boolean, negative: boolean, round: boolean): string {\n const { x, y, width: w, height: h } = bar;\n const r = round ? Math.min(chartRecipe.bar.radius, vertical ? w / 2 : h / 2, vertical ? h : w) : 0;\n const n = (value: number) => Number(value.toFixed(2));\n if (r <= 0) return `M${n(x)},${n(y)}h${n(w)}v${n(h)}h${n(-w)}Z`;\n if (vertical && !negative) return `M${n(x)},${n(y + h)}V${n(y + r)}Q${n(x)},${n(y)} ${n(x + r)},${n(y)}H${n(x + w - r)}Q${n(x + w)},${n(y)} ${n(x + w)},${n(y + r)}V${n(y + h)}Z`;\n if (vertical) return `M${n(x)},${n(y)}H${n(x + w)}V${n(y + h - r)}Q${n(x + w)},${n(y + h)} ${n(x + w - r)},${n(y + h)}H${n(x + r)}Q${n(x)},${n(y + h)} ${n(x)},${n(y + h - r)}Z`;\n if (!negative) return `M${n(x)},${n(y)}H${n(x + w - r)}Q${n(x + w)},${n(y)} ${n(x + w)},${n(y + r)}V${n(y + h - r)}Q${n(x + w)},${n(y + h)} ${n(x + w - r)},${n(y + h)}H${n(x)}Z`;\n return `M${n(x + w)},${n(y)}V${n(y + h)}H${n(x + r)}Q${n(x)},${n(y + h)} ${n(x)},${n(y + h - r)}V${n(y + r)}Q${n(x)},${n(y)} ${n(x + r)},${n(y)}Z`;\n}\n\nexport function BarChart({\n categories, series, accessibilityLabel, formatValue, missingLabel, height, width: fallbackWidth = 320, orientation = \"vertical\",\n layout = \"grouped\", domain, showAxis = false, showValues = false, animateChanges = false, className, layoutStyle, ...focusProps\n}: BarChartProps) {\n validateChartSeries(categories, series);\n const colorOf = useSeriesColor(), id = useSvgId(), descriptionId = `${id}-description`;\n const [measure, width] = useMeasuredWidth(fallbackWidth);\n const vertical = orientation === \"vertical\";\n // Horizontal bars grow with the category count so labels never overlap (same rule as Native).\n const resolvedHeight = height ?? (vertical ? chartRecipe.heights.regular : Math.max(chartRecipe.heights.compact, categories.length * 36 + spacing.lg));\n const available = useMemo(() => observedIndices(series), [series]);\n const { focus, scrubbing, set } = useFocus(focusProps, null, categories);\n const insets: ChartInsets = vertical\n ? (showAxis ? chartRecipe.insets.axis : { ...chartRecipe.insets.plot, bottom: spacing.lg })\n : { top: spacing.xs, right: showValues ? 48 : spacing.sm, bottom: spacing.xs, left: 72 };\n const g = useMemo(() => resolveBarGeometry({ categories, series, width, height: resolvedHeight, insets, orientation, layout, ...(domain ? { domain } : {}) }),\n [categories, series, width, resolvedHeight, insets, orientation, layout, domain]);\n const categoryKeys = useMemo(() => {\n const occurrences = new Map<string, number>();\n return categories.map(label => { const occurrence = occurrences.get(label) ?? 0; occurrences.set(label, occurrence + 1); return JSON.stringify([label, occurrence]); });\n }, [categories]);\n // Only the outermost segment of each stack (per sign) gets rounded corners.\n const outer = useMemo(() => {\n if (layout !== \"stacked\") return null;\n const stacks = stackValues(series), result = new Set<string>();\n categories.forEach((_, i) => {\n let positive = -1, negative = -1;\n series.forEach((item, s) => { const v = item.values[i]; if (!isChartNumber(v) || !stacks[s]![i]) return; if (v >= 0) positive = s; else negative = s; });\n if (positive >= 0) result.add(`${positive}-${i}`);\n if (negative >= 0) result.add(`${negative}-${i}`);\n });\n return result;\n }, [categories, series, layout]);\n const handlers = useScrub((x, y) => nearestChartIndex(g.centers, vertical ? x : y, available), (index) => set(index, true), () => set(focus, false));\n const onKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n if (event.key === \"Escape\" && focus !== null) { event.preventDefault(); set(null, false); return; }\n const next = vertical\n ? keyStep(event, available, focus, [\"ArrowRight\", \"ArrowUp\"], [\"ArrowLeft\", \"ArrowDown\"])\n : keyStep(event, available, focus, [\"ArrowDown\", \"ArrowRight\"], [\"ArrowUp\", \"ArrowLeft\"]);\n if (next === undefined) return;\n event.preventDefault();\n set(next, false);\n };\n const totals = layout === \"stacked\" && showValues\n ? categories.map((_, i) => series.reduce((sum, item) => sum + (isChartNumber(item.values[i]) ? item.values[i]! : 0), 0))\n : null;\n return (\n <div ref={measure} className={classNames(\"hjm-chart\", \"hjm-chart--bar\", className)} style={{ ...chromeStyle, ...layoutStyle }} data-orientation={orientation} data-scrubbing={scrubbing || undefined}>\n <div\n className=\"hjm-chart__plot\"\n role=\"slider\"\n tabIndex={0}\n aria-label={accessibilityLabel}\n aria-describedby={descriptionId}\n aria-orientation={vertical ? \"horizontal\" : \"vertical\"}\n aria-valuemin={0}\n aria-valuemax={Math.max(0, categories.length - 1)}\n aria-valuenow={focus ?? 0}\n // Without a focus the slider has no value; its name stands in so nothing misleading is read.\n aria-valuetext={focus === null ? accessibilityLabel : valueText(categories, series, focus, formatValue, missingLabel)}\n style={{ blockSize: resolvedHeight }}\n onKeyDown={onKeyDown}\n {...handlers}\n >\n <svg width={width} height={resolvedHeight} viewBox={`0 0 ${width} ${resolvedHeight}`} aria-hidden=\"true\" focusable=\"false\">\n {g.ticks.map((tick) => vertical\n ? <line key={tick} className=\"hjm-chart__grid\" x1={g.plot.left} x2={g.plot.right} y1={g.value(tick)} y2={g.value(tick)} />\n : <line key={tick} className=\"hjm-chart__grid\" y1={g.plot.top} y2={g.plot.bottom} x1={g.value(tick)} x2={g.value(tick)} />)}\n {showAxis && vertical ? g.ticks.map((tick) => <text key={`t${tick}`} className=\"hjm-chart__label\" x={g.plot.left - 6} y={g.value(tick)} dominantBaseline=\"middle\" textAnchor=\"end\">{formatValue(tick)}</text>) : null}\n {g.bars.map((bar) => (\n <MotionBar\n key={`${series[bar.seriesIndex]!.id}-${categoryKeys[bar.index]}`}\n bar={bar} animate={animateChanges && g.bars.length <= 200} vertical={vertical} rounded={outer ? outer.has(`${bar.seriesIndex}-${bar.index}`) : true}\n className=\"hjm-chart__bar\"\n data-index={bar.index}\n fill={colorOf(series[bar.seriesIndex]!, bar.seriesIndex)}\n opacity={focus === null || focus === bar.index ? 1 : chartRecipe.bar.restOpacity}\n />\n ))}\n {showValues && layout === \"grouped\" ? g.bars.map((bar) => (\n <text key={`v${bar.seriesIndex}-${bar.index}`} className=\"hjm-chart__label hjm-chart__value\"\n x={vertical ? bar.x + bar.width / 2 : bar.x + bar.width + 4} y={vertical ? bar.y - 4 : bar.y + bar.height / 2}\n dominantBaseline={vertical ? undefined : \"middle\"} textAnchor={vertical ? \"middle\" : \"start\"}>{formatValue(bar.value)}</text>\n )) : null}\n {totals ? totals.map((total, i) => {\n if (!available.includes(i)) return null;\n const end = g.value(Math.max(0, ...stackValues(series).map((row) => row[i]?.[1] ?? 0)));\n return (\n <text key={`total${i}`} className=\"hjm-chart__label hjm-chart__value\" x={vertical ? g.centers[i] : end + 4} y={vertical ? end - 4 : g.centers[i]}\n dominantBaseline={vertical ? undefined : \"middle\"} textAnchor={vertical ? \"middle\" : \"start\"}>{formatValue(total)}</text>\n );\n }) : null}\n {categories.map((category, i) => vertical\n ? (categories.length <= 12 || i % Math.ceil(categories.length / 12) === 0)\n ? <text key={`c${i}`} className=\"hjm-chart__label\" data-focused={focus === i || undefined} x={g.centers[i]} y={resolvedHeight - 4} textAnchor=\"middle\">{category}</text>\n : null\n : <text key={`c${i}`} className=\"hjm-chart__label\" data-focused={focus === i || undefined} x={g.plot.left - 8} y={g.centers[i]} dominantBaseline=\"middle\" textAnchor=\"end\">{category}</text>)}\n </svg>\n {scrubbing && focus !== null && vertical && g.centers[focus] !== undefined\n ? <CursorBubble x={g.centers[focus]!} width={width} text={valueText(categories, series, focus, formatValue, missingLabel)} />\n : null}\n </div>\n <p id={descriptionId} className=\"hjm-visually-hidden\">{describeChart(categories, series, formatValue, missingLabel)}</p>\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------------------------\n// ChartLegend\n// ---------------------------------------------------------------------------------------------\n\nexport type ChartLegendItem = Readonly<{ id: string; label: string; color: string; value?: string }>;\nexport type ChartLegendProps = ChartRootProps & Readonly<{\n items: readonly ChartLegendItem[]; exclusion?: Readonly<{ excludedIds: readonly string[]; onToggle: (id: string) => void; label: (item: ChartLegendItem, included: boolean) => string }>;\n selectedId?: string | null;\n /** When given, rows are toggle buttons; pressing the selected row clears the selection. */\n onSelect?: (id: string | null) => void;\n}>;\n\n/** Swatch + label (+ value). Color is never the only encoding: every row carries its label. */\nexport function ChartLegend({ items, selectedId, onSelect, exclusion, className, layoutStyle }: ChartLegendProps) {\n return (\n <ul className={classNames(\"hjm-chart-legend\", className)} style={{ ...chromeStyle, ...layoutStyle }} data-interactive={onSelect ? \"\" : undefined}>\n {items.map((item) => {\n const content = (\n <>\n <span className=\"hjm-chart-legend__swatch\" aria-hidden=\"true\" style={{ background: item.color }} />\n <span className=\"hjm-chart-legend__label\">{item.label}</span>\n {item.value !== undefined ? <span className=\"hjm-chart-legend__value\">{item.value}</span> : null}\n </>\n );\n const dimmed = selectedId != null && selectedId !== item.id;\n return (\n <li key={item.id} className=\"hjm-chart-legend__item\" data-dimmed={dimmed || undefined}>\n {exclusion ? <input type=\"checkbox\" checked={!exclusion.excludedIds.includes(item.id)} aria-label={exclusion.label(item, !exclusion.excludedIds.includes(item.id))} onChange={() => exclusion.onToggle(item.id)} /> : null}\n {onSelect ? (\n <button type=\"button\" className=\"hjm-chart-legend__button\" aria-pressed={selectedId === item.id} onClick={() => onSelect(selectedId === item.id ? null : item.id)}>\n {content}\n </button>\n ) : content}\n </li>\n );\n })}\n </ul>\n );\n}\n\n// ---------------------------------------------------------------------------------------------\n// PieChart\n// ---------------------------------------------------------------------------------------------\n\nexport type PieDatum = Readonly<{ id: string; label: string; value: number | null; color?: string }>;\nexport type PieChartProps = ChartRootProps & Readonly<{\n data: readonly PieDatum[];\n accessibilityLabel: string;\n formatValue: (value: number) => string;\n donut?: boolean;\n size?: number;\n /** Rendered in the donut hole (ignored for a full pie). */\n centerContent?: ReactNode | ((summary: PieVisibilitySummary) => ReactNode);\n /** Controlled denominator filtering, independent of selectedId emphasis. */\n exclusion?: Readonly<{ excludedIds: readonly string[]; onExcludedIdsChange: (ids: readonly string[]) => void; label: (datum: PieDatum, included: boolean) => string }>;\n selectedId?: string | null;\n defaultSelectedId?: string | null;\n onSelect?: (id: string | null) => void;\n showLegend?: boolean;\n}>;\n\nexport function PieChart({\n data, accessibilityLabel, formatValue, donut = true, size = 180, centerContent, selectedId, defaultSelectedId = null, onSelect,\n showLegend = true, exclusion, className, layoutStyle,\n}: PieChartProps) {\n const labelTheme = useOptionalHjmTheme();\n const labelMetrics = labelTheme?.designProfile?.tokens.typography[chrome.labelVariant] ?? typography[chrome.labelVariant];\n const labelScale = labelTheme?.environment.textScale ?? 1;\n const colorOf = useSeriesColor(), id = useSvgId(), descriptionId = `${id}-description`;\n const [own, setOwn] = useState<string | null>(defaultSelectedId);\n const candidate = selectedId !== undefined ? selectedId : own;\n const selected = candidate !== null && exclusion?.excludedIds.includes(candidate) ? null : candidate;\n const interactive = onSelect !== undefined || selectedId !== undefined;\n const select = (next: string | null) => { if (selectedId === undefined) setOwn(next); onSelect?.(next); };\n const toggle = (next: string) => select(selected === next ? null : next);\n // The selected slice moves outward by this much, so it is reserved inside the box.\n const lift = 4;\n const radius = size / 2 - lift - 2, inner = donut ? radius * chartRecipe.pie.donutRatio : 0;\n const visibility = resolvePieVisibility(data, exclusion?.excludedIds);\n const slices = resolvePieGeometry(visibility.values, { cx: size / 2, cy: size / 2, radius, innerRadius: inner });\n const center = typeof centerContent === \"function\" ? centerContent(visibility) : centerContent;\n const legendExclusion = exclusion ? { excludedIds: exclusion.excludedIds, label: (item: ChartLegendItem, included: boolean) => exclusion.label(data.find(datum => datum.id === item.id)!, included),\n onToggle: (id: string) => exclusion.onExcludedIdsChange(exclusion.excludedIds.includes(id) ? exclusion.excludedIds.filter(key => key !== id) : [...exclusion.excludedIds, id]) } : undefined;\n const colorAt = (index: number) => colorOf(data[index]!, index);\n const percentOf = (index: number) => slices.find((slice) => slice.index === index)?.percent;\n const percentText = (index: number) => { const p = percentOf(index); return p === undefined ? \"\" : `${Math.round(p)}%`; };\n const rowValue = (d: PieDatum, i: number) => isChartNumber(d.value) ? `${formatValue(d.value)}${percentOf(i) !== undefined ? ` · ${percentText(i)}` : \"\"}` : \"—\";\n const summary = data.map((d, i) => exclusion?.excludedIds.includes(d.id) ? \"\" : `${d.label} ${isChartNumber(d.value) ? formatValue(d.value) : \"\"}${percentOf(i) !== undefined ? ` (${percentText(i)})` : \"\"}`.trim()).filter(Boolean).join(\", \");\n // With a legend, its rows are the keyboard path; slices stay pointer targets so each item has\n // one tab stop. Without a legend the slices themselves become the buttons.\n const sliceButtons = interactive && !showLegend;\n return (\n <div className={classNames(\"hjm-chart\", \"hjm-chart--pie\", className)} style={{ ...chromeStyle, ...layoutStyle }}>\n <div className=\"hjm-chart__pie\" role={sliceButtons ? \"group\" : \"img\"} aria-label={accessibilityLabel} aria-describedby={descriptionId} style={{ inlineSize: size, blockSize: size }}>\n <svg width={size} height={size} viewBox={`0 0 ${size} ${size}`} aria-hidden={sliceButtons ? undefined : true} focusable=\"false\">\n {slices.map((slice) => {\n const datum = data[slice.index]!, isSelected = selected === datum.id;\n const mid = (slice.startAngle + slice.endAngle) / 2;\n return (\n <path\n key={datum.id}\n className=\"hjm-chart__slice\"\n data-id={datum.id}\n data-selected={isSelected || undefined}\n d={slice.path}\n fill={colorAt(slice.index)}\n opacity={selected !== null && !isSelected ? chartRecipe.bar.restOpacity : 1}\n transform={isSelected ? `translate(${(Math.sin(mid) * lift).toFixed(2)} ${(-Math.cos(mid) * lift).toFixed(2)})` : undefined}\n {...(interactive ? { onClick: () => toggle(datum.id) } : {})}\n {...(sliceButtons ? {\n role: \"button\",\n tabIndex: 0,\n \"aria-pressed\": isSelected,\n \"aria-label\": `${datum.label} ${rowValue(datum, slice.index)}`,\n onKeyDown: (event: KeyboardEvent<SVGPathElement>) => {\n if (event.key !== \"Enter\" && event.key !== \" \") return;\n event.preventDefault();\n toggle(datum.id);\n },\n } : {})}\n />\n );\n })}\n {!donut ? slices.filter((slice) => slice.percent >= chartRecipe.pie.minLabelPercent * 2).map((slice) => {\n const label = percentText(slice.index);\n const labelWidth = label.length * labelMetrics.fontSize * labelScale + spacing.xxs * 2;\n const labelHeight = labelMetrics.lineHeight * labelScale + spacing.xxs;\n return <g key={`t${slice.index}`} pointerEvents=\"none\">\n <rect x={slice.centroid.x - labelWidth / 2} y={slice.centroid.y - labelHeight / 2} width={labelWidth} height={labelHeight} style={{ rx: \"var(--hjm-radius-sm)\", fill: \"var(--hjm-chart-label-surface)\" }} />\n <text className=\"hjm-chart__slice-label\" x={slice.centroid.x} y={slice.centroid.y} dominantBaseline=\"middle\" textAnchor=\"middle\">{label}</text>\n </g>;\n }) : null}\n </svg>\n {donut && center != null ? <div className=\"hjm-chart__pie-center\">{center}</div> : null}\n </div>\n {showLegend ? (\n <ChartLegend\n items={data.map((d, i) => ({ id: d.id, label: d.label, color: colorAt(i), value: rowValue(d, i) }))}\n selectedId={selected}\n {...(legendExclusion ? { exclusion: legendExclusion } : {})}\n {...(interactive ? { onSelect: select } : {})}\n />\n ) : null}\n <p id={descriptionId} className=\"hjm-visually-hidden\">{summary}</p>\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------------------------\n// RadarChart\n// ---------------------------------------------------------------------------------------------\n\nexport type RadarChartProps = ChartRootProps & Readonly<{\n /** At least three axes. */\n categories: readonly string[];\n series: readonly ChartSeries[];\n accessibilityLabel: string;\n formatValue: (value: number) => string;\n missingLabel: string;\n /** One shared domain for every axis; defaults to 0..max. */\n domain?: readonly [number, number];\n levels?: number;\n size?: number;\n /** Defaults to on for more than one series. */\n showLegend?: boolean;\n}>;\n\nexport function RadarChart({\n categories, series, accessibilityLabel, formatValue, missingLabel, domain, levels = chartRecipe.radar.levels, size = 240, showLegend,\n className, layoutStyle,\n}: RadarChartProps) {\n validateChartSeries(categories, series);\n const colorOf = useSeriesColor(), id = useSvgId(), descriptionId = `${id}-description`;\n // Room around the polygon for axis labels (same reservation as Native).\n const pad = 44, center = size / 2;\n const g = resolveRadarGeometry({ categories, series, cx: center, cy: center, radius: center - pad, levels, ...(domain ? { domain } : {}) });\n return (\n <div className={classNames(\"hjm-chart\", \"hjm-chart--radar\", className)} style={{ ...chromeStyle, ...layoutStyle }}>\n <div className=\"hjm-chart__radar\" role=\"img\" aria-label={accessibilityLabel} aria-describedby={descriptionId} style={{ inlineSize: size, blockSize: size }}>\n <svg width={size} height={size} viewBox={`0 0 ${size} ${size}`} aria-hidden=\"true\" focusable=\"false\">\n {g.rings.map((ring, i) => <path key={i} className=\"hjm-chart__grid\" d={ring} fill=\"none\" />)}\n {g.axes.map((axis) => <line key={axis.index} className=\"hjm-chart__grid\" x1={center} y1={center} x2={axis.end.x} y2={axis.end.y} />)}\n {g.polygons.map((polygon) => {\n const color = colorOf(series[polygon.seriesIndex]!, polygon.seriesIndex);\n return (\n <g key={polygon.seriesIndex} data-series={series[polygon.seriesIndex]!.id}>\n <path className=\"hjm-chart__polygon\" d={polygon.path} fill={color} fillOpacity={chartRecipe.radar.fillOpacity} stroke={color} strokeWidth={chartRecipe.radar.strokeWidth} strokeLinejoin=\"round\" />\n {polygon.points.map((p) => p.value !== null ? <circle key={p.index} cx={p.x} cy={p.y} r={3} fill={color} /> : null)}\n </g>\n );\n })}\n {g.axes.map((axis) => {\n const first = series[0]?.values[axis.index];\n return (\n <g key={`l${axis.index}`}>\n <text className=\"hjm-chart__label hjm-chart__axis-name\" x={axis.labelAt.x} y={axis.labelAt.y} dominantBaseline=\"middle\" textAnchor={axis.anchor}>{axis.label}</text>\n {series.length === 1 ? (\n <text className=\"hjm-chart__label\" x={axis.labelAt.x} y={axis.labelAt.y + 14} dominantBaseline=\"middle\" textAnchor={axis.anchor}>{isChartNumber(first) ? formatValue(first) : missingLabel}</text>\n ) : null}\n </g>\n );\n })}\n </svg>\n </div>\n {showLegend ?? series.length > 1 ? <ChartLegend items={series.map((item, s) => ({ id: item.id, label: item.label, color: colorOf(item, s) }))} /> : null}\n <p id={descriptionId} className=\"hjm-visually-hidden\">{describeChart(categories, series, formatValue, missingLabel)}</p>\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------------------------\n// ScatterChart\n// ---------------------------------------------------------------------------------------------\n\nexport type ScatterChartProps = ChartRootProps & Readonly<{\n points: readonly ScatterDatum[];\n accessibilityLabel: string;\n xLabel: string;\n yLabel: string;\n formatX: (value: number) => string;\n formatY: (value: number) => string;\n height?: number;\n /** Width used on the server and before the first ResizeObserver measurement. */\n width?: number;\n /** Legend labels by `seriesIndex`; the legend shows for two or more. */\n seriesLabels?: readonly string[];\n focusId?: string | null;\n onFocusChange?: (id: string | null) => void;\n}>;\n\nexport function ScatterChart({\n points, accessibilityLabel, xLabel, yLabel, formatX, formatY, height = chartRecipe.heights.tall, width: fallbackWidth = 320,\n seriesLabels, focusId, onFocusChange, className, layoutStyle,\n}: ScatterChartProps) {\n const colorOf = useSeriesColor(), id = useSvgId(), descriptionId = `${id}-description`;\n const [measure, width] = useMeasuredWidth(fallbackWidth);\n const [own, setOwn] = useState<string | null>(null);\n const focused = focusId !== undefined ? focusId : own;\n const choose = (next: string | null) => { if (focusId === undefined) setOwn(next); onFocusChange?.(next); };\n const g = useMemo(() => resolveScatterGeometry({ points, width, height }), [points, width, height]);\n // Keyboard order follows the x axis so arrows read left to right.\n const ordered = useMemo(() => [...points].sort((a, b) => a.x - b.x || a.y - b.y), [points]);\n const handlers = useScrub((x, y) => nearestScatterPoint(g.points, x, y), (index) => { if (index !== null) choose(points[index]!.id); }, () => undefined);\n const focusPoint = g.points.find((p) => p.id === focused);\n const sx = scaleLinear(g.xDomain, [g.plot.left, g.plot.right]), sy = scaleLinear(g.yDomain, [g.plot.bottom, g.plot.top]);\n const describe = (p: ScatterDatum) => `${p.label}, ${xLabel} ${formatX(p.x)}, ${yLabel} ${formatY(p.y)}`;\n const position = ordered.findIndex((p) => p.id === focused);\n const onKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n let next: ScatterDatum | undefined;\n if (event.key === \"ArrowRight\" || event.key === \"ArrowUp\") next = ordered[Math.min(ordered.length - 1, position + 1)];\n else if (event.key === \"ArrowLeft\" || event.key === \"ArrowDown\") next = ordered[position < 0 ? ordered.length - 1 : Math.max(0, position - 1)];\n else if (event.key === \"Home\") next = ordered[0];\n else if (event.key === \"End\") next = ordered.at(-1);\n else if (event.key === \"Escape\" && focused !== null) { event.preventDefault(); choose(null); return; }\n else return;\n event.preventDefault();\n if (next) choose(next.id);\n };\n return (\n <div ref={measure} className={classNames(\"hjm-chart\", \"hjm-chart--scatter\", className)} style={{ ...chromeStyle, ...layoutStyle }}>\n <div\n className=\"hjm-chart__plot\"\n role=\"slider\"\n tabIndex={0}\n aria-label={accessibilityLabel}\n aria-describedby={descriptionId}\n aria-valuemin={0}\n aria-valuemax={Math.max(0, points.length - 1)}\n aria-valuenow={Math.max(0, position)}\n aria-valuetext={focusPoint ? describe(focusPoint) : accessibilityLabel}\n style={{ blockSize: height }}\n onKeyDown={onKeyDown}\n {...handlers}\n >\n <svg width={width} height={height} viewBox={`0 0 ${width} ${height}`} aria-hidden=\"true\" focusable=\"false\">\n {g.yTicks.map((tick) => (\n <g key={`y${tick}`}>\n <line className=\"hjm-chart__grid\" x1={g.plot.left} x2={g.plot.right} y1={sy(tick)} y2={sy(tick)} />\n <text className=\"hjm-chart__label\" x={g.plot.left - 6} y={sy(tick)} dominantBaseline=\"middle\" textAnchor=\"end\">{formatY(tick)}</text>\n </g>\n ))}\n {g.xTicks.map((tick) => <text key={`x${tick}`} className=\"hjm-chart__label\" x={sx(tick)} y={height - 4} textAnchor=\"middle\">{formatX(tick)}</text>)}\n {g.points.map((p) => {\n const isFocused = p.id === focused;\n return (\n <circle key={p.id} className={classNames(\"hjm-chart__point\", isFocused && \"hjm-chart__dot\")} data-id={p.id} cx={p.px} cy={p.py}\n r={isFocused ? chartRecipe.scatter.focusRadius : chartRecipe.scatter.radius} fill={colorOf({}, p.seriesIndex ?? 0)}\n opacity={focused !== null && !isFocused ? 0.45 : 0.9} strokeWidth={isFocused ? 2 : 0} />\n );\n })}\n </svg>\n {focusPoint ? <CursorBubble x={focusPoint.px} width={width} text={`${focusPoint.label} · ${formatX(focusPoint.x)} / ${formatY(focusPoint.y)}`} /> : null}\n </div>\n <div className=\"hjm-chart__axis-titles\" aria-hidden=\"true\"><span>{yLabel} ↑</span><span>{xLabel} →</span></div>\n {seriesLabels && seriesLabels.length > 1 ? <ChartLegend items={seriesLabels.map((label, i) => ({ id: String(i), label, color: colorOf({}, i) }))} /> : null}\n <p id={descriptionId} className=\"hjm-visually-hidden\">{points.map(describe).join(\". \")}</p>\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------------------------\n// Sparkline\n// ---------------------------------------------------------------------------------------------\n\nexport type SparklineProps = ChartRootProps & Readonly<{\n values: readonly (number | null)[];\n color?: string;\n invert?: boolean;\n domain?: readonly [number, number];\n width?: number;\n height?: number;\n /** Omit when the adjacent text already states the value; the sparkline is then decorative. */\n accessibilityLabel?: string;\n}>;\n\nexport function Sparkline({\n values, color, invert = false, domain, width = chartRecipe.sparkline.width, height = chartRecipe.sparkline.height, accessibilityLabel,\n className, layoutStyle,\n}: SparklineProps) {\n const colorOf = useSeriesColor(), id = useSvgId();\n const stroke = color ?? colorOf({}, 0);\n const pad = chartRecipe.sparkline.padding;\n const g = resolveLineGeometry({\n categories: values.map((_, i) => String(i)), series: [{ id: \"s\", label: \"s\", values }], width, height,\n insets: { top: pad, right: pad, bottom: pad, left: pad }, invert, ...(domain ? { domain } : {}),\n });\n const segments = splitSegments(g.plots[0]!);\n const labelled = accessibilityLabel !== undefined && accessibilityLabel.trim().length > 0;\n return (\n <svg\n className={classNames(\"hjm-sparkline\", className)}\n style={layoutStyle}\n width={width}\n height={height}\n viewBox={`0 0 ${width} ${height}`}\n focusable=\"false\"\n {...(labelled ? { role: \"img\", \"aria-label\": accessibilityLabel } : { \"aria-hidden\": true })}\n >\n <defs>\n <linearGradient id={`${id}-spark`} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0\" stopColor={stroke} stopOpacity={0.28} />\n <stop offset=\"1\" stopColor={stroke} stopOpacity={0} />\n </linearGradient>\n </defs>\n {segments.map((segment, i) => <path key={`a${i}`} d={areaPath(segment, height)} fill={`url(#${id}-spark)`} />)}\n {segments.map((segment, i) => <path key={`l${i}`} className=\"hjm-chart__line\" d={linePath(segment)} stroke={stroke} strokeWidth={chartRecipe.sparkline.strokeWidth} fill=\"none\" strokeLinejoin=\"round\" strokeLinecap=\"round\" />)}\n </svg>\n );\n}\n"]}
|
package/dist/evidence.d.ts
CHANGED
|
@@ -34,7 +34,7 @@ export type ReactRendererEvidenceManifest = Readonly<{
|
|
|
34
34
|
export declare const reactRendererEvidence: {
|
|
35
35
|
readonly schemaVersion: 2;
|
|
36
36
|
readonly packageName: "@hjmds/react";
|
|
37
|
-
readonly packageVersion: "1.
|
|
37
|
+
readonly packageVersion: "1.37.1";
|
|
38
38
|
readonly surface: "web";
|
|
39
39
|
readonly components: Readonly<{
|
|
40
40
|
/** Canonical component id from the design-contracts catalog. */
|
package/dist/evidence.js
CHANGED
|
@@ -135,7 +135,7 @@ const activeWebEntries = componentCatalog.filter((entry) => {
|
|
|
135
135
|
export const reactRendererEvidence = {
|
|
136
136
|
schemaVersion: reactRendererEvidenceSchemaVersion,
|
|
137
137
|
packageName: "@hjmds/react",
|
|
138
|
-
packageVersion: "1.
|
|
138
|
+
packageVersion: "1.37.1",
|
|
139
139
|
surface: "web",
|
|
140
140
|
components: activeWebEntries.map(derivedClaim),
|
|
141
141
|
};
|