@howells/hairline 0.0.0-stage → 0.2.0
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/CHANGELOG.md +7 -0
- package/LICENSE +21 -0
- package/README.md +148 -2
- package/lib/charts/axes.js +5 -0
- package/lib/charts/basics/candlestick.data.js +44 -0
- package/lib/charts/basics/candlestick.js +180 -0
- package/lib/charts/basics/daily-empty.js +24 -0
- package/lib/charts/basics/daily-readings.js +16 -0
- package/lib/charts/basics/dot-heat.data.js +225 -0
- package/lib/charts/basics/dot-heat.js +174 -0
- package/lib/charts/basics/dumbbell-queue.js +203 -0
- package/lib/charts/basics/hairline-area.js +208 -0
- package/lib/charts/basics/hairline-line.js +195 -0
- package/lib/charts/basics/nested-treemap.data.js +55 -0
- package/lib/charts/basics/nested-treemap.js +191 -0
- package/lib/charts/basics/paired-rungs.data.js +31 -0
- package/lib/charts/basics/paired-rungs.js +151 -0
- package/lib/charts/basics/plumb-scatter.js +229 -0
- package/lib/charts/basics/rung-bars.js +178 -0
- package/lib/charts/basics/rung-geometry.js +6 -0
- package/lib/charts/basics/rung-histogram.data.js +73 -0
- package/lib/charts/basics/rung-histogram.js +153 -0
- package/lib/charts/basics/rung-waterfall.data.js +30 -0
- package/lib/charts/basics/rung-waterfall.js +150 -0
- package/lib/charts/basics/rungs.js +22 -0
- package/lib/charts/basics/series-key.js +26 -0
- package/lib/charts/basics/stacked-rungs.data.js +42 -0
- package/lib/charts/basics/stacked-rungs.js +174 -0
- package/lib/charts/basics/stream-ribbon.data.js +124 -0
- package/lib/charts/basics/stream-ribbon.js +336 -0
- package/lib/charts/basics/tick-box.data.js +50 -0
- package/lib/charts/basics/tick-box.js +226 -0
- package/lib/charts/basics/tick-donut.data.js +30 -0
- package/lib/charts/basics/tick-donut.js +210 -0
- package/lib/charts/basics/tick-gauge.data.js +8 -0
- package/lib/charts/basics/tick-gauge.js +169 -0
- package/lib/charts/basics/tick-rows.data.js +30 -0
- package/lib/charts/basics/tick-rows.js +121 -0
- package/lib/charts/basics/util-a.js +15 -0
- package/lib/charts/basics/util-b.js +13 -0
- package/lib/charts/big/circular-graph.data.js +827 -0
- package/lib/charts/big/circular-graph.js +289 -0
- package/lib/charts/big/force-galaxy-model.js +167 -0
- package/lib/charts/big/force-galaxy.data.js +813 -0
- package/lib/charts/big/force-galaxy.js +276 -0
- package/lib/charts/big/thread-triptych.data.js +204 -0
- package/lib/charts/big/thread-triptych.js +334 -0
- package/lib/charts/board/room.js +6 -0
- package/lib/charts/board/slope.js +176 -0
- package/lib/charts/board/spread.js +28 -0
- package/lib/charts/control.js +18 -0
- package/lib/charts/core.js +84 -0
- package/lib/charts/data-table.js +34 -0
- package/lib/charts/fills.js +153 -0
- package/lib/charts/forms/area-difference.data.js +62 -0
- package/lib/charts/forms/area-difference.js +192 -0
- package/lib/charts/forms/brush-math.js +42 -0
- package/lib/charts/forms/brush-strip.js +199 -0
- package/lib/charts/forms/brushed-overview.data.js +374 -0
- package/lib/charts/forms/brushed-overview.js +162 -0
- package/lib/charts/forms/chord-ring.data.js +140 -0
- package/lib/charts/forms/chord-ring.js +167 -0
- package/lib/charts/forms/circle-pack.data.js +80 -0
- package/lib/charts/forms/circle-pack.js +99 -0
- package/lib/charts/forms/hatched-stack.data.js +71 -0
- package/lib/charts/forms/hatched-stack.js +228 -0
- package/lib/charts/forms/radial-year.data.js +13 -0
- package/lib/charts/forms/radial-year.js +156 -0
- package/lib/charts/frame.js +73 -0
- package/lib/charts/glance/aggregate-sankey.data.js +74 -0
- package/lib/charts/glance/aggregate-sankey.js +242 -0
- package/lib/charts/glance/bar-race.data.js +122 -0
- package/lib/charts/glance/bar-race.js +246 -0
- package/lib/charts/glance/big-slice.data.js +41 -0
- package/lib/charts/glance/big-slice.js +238 -0
- package/lib/charts/glance/chunky-bars.data.js +22 -0
- package/lib/charts/glance/chunky-bars.js +113 -0
- package/lib/charts/glance/circular-graph.data.js +146 -0
- package/lib/charts/glance/circular-graph.js +138 -0
- package/lib/charts/glance/control-slot.js +9 -0
- package/lib/charts/glance/diverging-bar.data.js +34 -0
- package/lib/charts/glance/diverging-bar.js +154 -0
- package/lib/charts/glance/dot-waffle.data.js +26 -0
- package/lib/charts/glance/dot-waffle.js +179 -0
- package/lib/charts/glance/draw-in.data.js +9 -0
- package/lib/charts/glance/draw-in.goals.json.js +289 -0
- package/lib/charts/glance/draw-in.js +214 -0
- package/lib/charts/glance/dynamic-stream.data.js +6 -0
- package/lib/charts/glance/dynamic-stream.js +189 -0
- package/lib/charts/glance/force-graph.data.js +77 -0
- package/lib/charts/glance/force-graph.js +211 -0
- package/lib/charts/glance/jitter-strip.data.js +10 -0
- package/lib/charts/glance/jitter-strip.easter.json.js +430 -0
- package/lib/charts/glance/jitter-strip.js +157 -0
- package/lib/charts/glance/link-bundle.js +51 -0
- package/lib/charts/glance/matrix-heat-glance.data.js +108 -0
- package/lib/charts/glance/matrix-heat-glance.js +170 -0
- package/lib/charts/glance/pictorial-bar.data.js +22 -0
- package/lib/charts/glance/pictorial-bar.js +180 -0
- package/lib/charts/glance/rainfall-dual-area.data.js +177 -0
- package/lib/charts/glance/rainfall-dual-area.js +192 -0
- package/lib/charts/glance/rank-strip.data.js +76 -0
- package/lib/charts/glance/rank-strip.js +172 -0
- package/lib/charts/glance/scatter-labels.js +60 -0
- package/lib/charts/glance/scatter-morph.data.js +78 -0
- package/lib/charts/glance/scatter-morph.js +338 -0
- package/lib/charts/glance/single-axis.data.js +6 -0
- package/lib/charts/glance/single-axis.js +150 -0
- package/lib/charts/glance/single-axis.tides.json.js +180 -0
- package/lib/charts/glance/stagger-wave.data.js +66 -0
- package/lib/charts/glance/stagger-wave.js +132 -0
- package/lib/charts/glance/tree-lr.data.js +41 -0
- package/lib/charts/glance/tree-lr.js +135 -0
- package/lib/charts/glance/util-a.js +49 -0
- package/lib/charts/glance/util-b.js +19 -0
- package/lib/charts/glance/violin.data.js +9 -0
- package/lib/charts/glance/violin.js +185 -0
- package/lib/charts/glance/violin.tenors.json.js +5 -0
- package/lib/charts/hooks.js +154 -0
- package/lib/charts/hover.js +19 -0
- package/lib/charts/lupi/arc-matrix.data.js +83 -0
- package/lib/charts/lupi/arc-matrix.js +146 -0
- package/lib/charts/lupi/ballot-tally.data.js +22 -0
- package/lib/charts/lupi/ballot-tally.js +125 -0
- package/lib/charts/lupi/barcode-lollipop.data.js +195 -0
- package/lib/charts/lupi/barcode-lollipop.js +161 -0
- package/lib/charts/lupi/brand-spectrum.data.js +70 -0
- package/lib/charts/lupi/brand-spectrum.js +233 -0
- package/lib/charts/lupi/bubble-almanac.data.js +689 -0
- package/lib/charts/lupi/bubble-almanac.js +164 -0
- package/lib/charts/lupi/calendar-heat.data.js +399 -0
- package/lib/charts/lupi/calendar-heat.js +175 -0
- package/lib/charts/lupi/cluster-field.data.js +83 -0
- package/lib/charts/lupi/cluster-field.js +173 -0
- package/lib/charts/lupi/dot-cascade.data.js +54 -0
- package/lib/charts/lupi/dot-cascade.js +124 -0
- package/lib/charts/lupi/dotty-matrix.data.js +170 -0
- package/lib/charts/lupi/dotty-matrix.js +126 -0
- package/lib/charts/lupi/hourglass-stream.data.js +30 -0
- package/lib/charts/lupi/hourglass-stream.js +158 -0
- package/lib/charts/lupi/hundred-field.data.js +38 -0
- package/lib/charts/lupi/hundred-field.js +237 -0
- package/lib/charts/lupi/launch-fan.data.js +315 -0
- package/lib/charts/lupi/launch-fan.js +198 -0
- package/lib/charts/lupi/matrix-heat.data.js +97 -0
- package/lib/charts/lupi/matrix-heat.js +246 -0
- package/lib/charts/lupi/parallel-coordinates.data.js +54 -0
- package/lib/charts/lupi/parallel-coordinates.js +218 -0
- package/lib/charts/lupi/radial-convergence.data.js +178 -0
- package/lib/charts/lupi/radial-convergence.js +208 -0
- package/lib/charts/lupi/radial-patchwork.data.js +454 -0
- package/lib/charts/lupi/radial-patchwork.js +181 -0
- package/lib/charts/lupi/ridgeline.data.js +1834 -0
- package/lib/charts/lupi/ridgeline.js +195 -0
- package/lib/charts/lupi/trend-lineage.data.js +51 -0
- package/lib/charts/lupi/trend-lineage.js +198 -0
- package/lib/charts/lupi/type-colonnade.data.js +18 -0
- package/lib/charts/lupi/type-colonnade.js +198 -0
- package/lib/charts/lupi/util-a.js +14 -0
- package/lib/charts/lupi/util-b.js +12 -0
- package/lib/charts/maps/choropleth.js +295 -0
- package/lib/charts/maps/geo.js +84 -0
- package/lib/charts/maps/legend.js +83 -0
- package/lib/charts/maps/step-fill.js +9 -0
- package/lib/charts/maps/us-choropleth.data.js +249 -0
- package/lib/charts/maps/us-choropleth.js +41 -0
- package/lib/charts/maps/world-choropleth.data.js +681 -0
- package/lib/charts/maps/world-choropleth.js +46 -0
- package/lib/charts/markers.js +35 -0
- package/lib/charts/marks.js +31 -0
- package/lib/charts/motion.js +11 -0
- package/lib/charts/originals/daily-users.data.js +101 -0
- package/lib/charts/originals/daily-users.js +203 -0
- package/lib/charts/originals/feature-rank.data.js +92 -0
- package/lib/charts/originals/feature-rank.js +167 -0
- package/lib/charts/originals/format.js +5 -0
- package/lib/charts/originals/key.js +26 -0
- package/lib/charts/originals/response-time.data.js +98 -0
- package/lib/charts/originals/response-time.js +187 -0
- package/lib/charts/originals/revenue-by-plan.data.js +26 -0
- package/lib/charts/originals/revenue-by-plan.js +248 -0
- package/lib/charts/playback.js +68 -0
- package/lib/charts/plot-note.js +27 -0
- package/lib/charts/roles.js +5 -0
- package/lib/charts/rules.js +66 -0
- package/lib/charts/scale-context.js +6 -0
- package/lib/charts/shapes.js +8 -0
- package/lib/charts/shared-options.js +25 -0
- package/lib/charts/svg.js +43 -0
- package/lib/charts/text.js +30 -0
- package/lib/charts/texture-ids.js +20 -0
- package/lib/charts/texture.js +286 -0
- package/lib/charts/util.js +43 -0
- package/lib/charts/value-grid.js +26 -0
- package/lib/draw.js +27 -0
- package/lib/entries/dumbbell-queue.js +2 -0
- package/lib/entries/hairline-area.js +2 -0
- package/lib/entries/hairline-line.js +2 -0
- package/lib/entries/plumb-scatter.js +2 -0
- package/lib/entries/rung-bars.js +2 -0
- package/lib/entries/slope.js +2 -0
- package/lib/frame.js +2 -0
- package/lib/hairline.css +1385 -0
- package/lib/index.js +72 -0
- package/lib/json-schema/dumbbell-queue.json +258 -0
- package/lib/json-schema/hairline-area.json +262 -0
- package/lib/json-schema/hairline-line.json +256 -0
- package/lib/json-schema/index.json +50 -0
- package/lib/json-schema/plumb-scatter.json +363 -0
- package/lib/json-schema/rung-bars.json +230 -0
- package/lib/json-schema/slope.json +333 -0
- package/lib/kit.js +16 -0
- package/lib/lib/format.js +29 -0
- package/lib/lib/random.js +8 -0
- package/lib/maps.js +4 -0
- package/lib/schema/daily.js +9 -0
- package/lib/schema/dumbbell-queue.js +28 -0
- package/lib/schema/format.js +72 -0
- package/lib/schema/hairline-area.js +24 -0
- package/lib/schema/hairline-line.js +23 -0
- package/lib/schema/key.js +4 -0
- package/lib/schema/metrics.js +26 -0
- package/lib/schema/motion.js +12 -0
- package/lib/schema/options.js +21 -0
- package/lib/schema/plumb-scatter.js +48 -0
- package/lib/schema/registry.js +132 -0
- package/lib/schema/rung-bars.js +25 -0
- package/lib/schema/scale.js +9 -0
- package/lib/schema/slope.js +28 -0
- package/lib/schema/validate.js +25 -0
- package/lib/schema.js +16 -0
- package/lib/theme/derive.js +98 -0
- package/lib/theme.css +443 -0
- package/lib/theme.js +1 -0
- package/lib/tokens.css +306 -0
- package/lib/types/charts/axes.d.ts +14 -0
- package/lib/types/charts/basics/candlestick.d.ts +22 -0
- package/lib/types/charts/basics/candlestick.data.d.ts +10 -0
- package/lib/types/charts/basics/daily-empty.d.ts +7 -0
- package/lib/types/charts/basics/daily-readings.d.ts +38 -0
- package/lib/types/charts/basics/dot-heat.d.ts +19 -0
- package/lib/types/charts/basics/dot-heat.data.d.ts +28 -0
- package/lib/types/charts/basics/dumbbell-queue.d.ts +15 -0
- package/lib/types/charts/basics/hairline-area.d.ts +18 -0
- package/lib/types/charts/basics/hairline-line.d.ts +18 -0
- package/lib/types/charts/basics/nested-treemap.d.ts +18 -0
- package/lib/types/charts/basics/nested-treemap.data.d.ts +30 -0
- package/lib/types/charts/basics/paired-rungs.d.ts +21 -0
- package/lib/types/charts/basics/paired-rungs.data.d.ts +43 -0
- package/lib/types/charts/basics/plumb-scatter.d.ts +14 -0
- package/lib/types/charts/basics/rung-bars.d.ts +16 -0
- package/lib/types/charts/basics/rung-geometry.d.ts +6 -0
- package/lib/types/charts/basics/rung-histogram.d.ts +22 -0
- package/lib/types/charts/basics/rung-histogram.data.d.ts +34 -0
- package/lib/types/charts/basics/rung-waterfall.d.ts +19 -0
- package/lib/types/charts/basics/rung-waterfall.data.d.ts +31 -0
- package/lib/types/charts/basics/rungs.d.ts +28 -0
- package/lib/types/charts/basics/series-key.d.ts +19 -0
- package/lib/types/charts/basics/stacked-rungs.d.ts +20 -0
- package/lib/types/charts/basics/stacked-rungs.data.d.ts +26 -0
- package/lib/types/charts/basics/stream-ribbon.d.ts +19 -0
- package/lib/types/charts/basics/stream-ribbon.data.d.ts +29 -0
- package/lib/types/charts/basics/tick-box.d.ts +19 -0
- package/lib/types/charts/basics/tick-box.data.d.ts +30 -0
- package/lib/types/charts/basics/tick-donut.d.ts +24 -0
- package/lib/types/charts/basics/tick-donut.data.d.ts +25 -0
- package/lib/types/charts/basics/tick-gauge.d.ts +22 -0
- package/lib/types/charts/basics/tick-gauge.data.d.ts +24 -0
- package/lib/types/charts/basics/tick-rows.d.ts +18 -0
- package/lib/types/charts/basics/tick-rows.data.d.ts +23 -0
- package/lib/types/charts/basics/util-a.d.ts +10 -0
- package/lib/types/charts/basics/util-b.d.ts +13 -0
- package/lib/types/charts/big/circular-graph.d.ts +20 -0
- package/lib/types/charts/big/circular-graph.data.d.ts +46 -0
- package/lib/types/charts/big/force-galaxy-model.d.ts +109 -0
- package/lib/types/charts/big/force-galaxy.d.ts +18 -0
- package/lib/types/charts/big/force-galaxy.data.d.ts +48 -0
- package/lib/types/charts/big/thread-triptych.d.ts +17 -0
- package/lib/types/charts/big/thread-triptych.data.d.ts +41 -0
- package/lib/types/charts/board/room.d.ts +18 -0
- package/lib/types/charts/board/slope.d.ts +14 -0
- package/lib/types/charts/board/spread.d.ts +5 -0
- package/lib/types/charts/control.d.ts +17 -0
- package/lib/types/charts/core.d.ts +77 -0
- package/lib/types/charts/data-table.d.ts +18 -0
- package/lib/types/charts/fills.d.ts +103 -0
- package/lib/types/charts/forms/area-difference.d.ts +9 -0
- package/lib/types/charts/forms/area-difference.data.d.ts +26 -0
- package/lib/types/charts/forms/brush-math.d.ts +19 -0
- package/lib/types/charts/forms/brush-strip.d.ts +19 -0
- package/lib/types/charts/forms/brushed-overview.d.ts +12 -0
- package/lib/types/charts/forms/brushed-overview.data.d.ts +16 -0
- package/lib/types/charts/forms/chord-ring.d.ts +12 -0
- package/lib/types/charts/forms/chord-ring.data.d.ts +29 -0
- package/lib/types/charts/forms/circle-pack.d.ts +9 -0
- package/lib/types/charts/forms/circle-pack.data.d.ts +23 -0
- package/lib/types/charts/forms/hatched-stack.d.ts +10 -0
- package/lib/types/charts/forms/hatched-stack.data.d.ts +36 -0
- package/lib/types/charts/forms/radial-year.d.ts +8 -0
- package/lib/types/charts/forms/radial-year.data.d.ts +17 -0
- package/lib/types/charts/frame.d.ts +21 -0
- package/lib/types/charts/glance/aggregate-sankey.d.ts +23 -0
- package/lib/types/charts/glance/aggregate-sankey.data.d.ts +32 -0
- package/lib/types/charts/glance/bar-race.d.ts +20 -0
- package/lib/types/charts/glance/bar-race.data.d.ts +32 -0
- package/lib/types/charts/glance/big-slice.d.ts +27 -0
- package/lib/types/charts/glance/big-slice.data.d.ts +30 -0
- package/lib/types/charts/glance/chunky-bars.d.ts +18 -0
- package/lib/types/charts/glance/chunky-bars.data.d.ts +24 -0
- package/lib/types/charts/glance/circular-graph.d.ts +19 -0
- package/lib/types/charts/glance/circular-graph.data.d.ts +43 -0
- package/lib/types/charts/glance/control-slot.d.ts +9 -0
- package/lib/types/charts/glance/diverging-bar.d.ts +19 -0
- package/lib/types/charts/glance/diverging-bar.data.d.ts +27 -0
- package/lib/types/charts/glance/dot-waffle.d.ts +19 -0
- package/lib/types/charts/glance/dot-waffle.data.d.ts +31 -0
- package/lib/types/charts/glance/draw-in.d.ts +20 -0
- package/lib/types/charts/glance/draw-in.data.d.ts +6 -0
- package/lib/types/charts/glance/dynamic-stream.d.ts +22 -0
- package/lib/types/charts/glance/dynamic-stream.data.d.ts +7 -0
- package/lib/types/charts/glance/force-graph.d.ts +16 -0
- package/lib/types/charts/glance/force-graph.data.d.ts +45 -0
- package/lib/types/charts/glance/jitter-strip.d.ts +24 -0
- package/lib/types/charts/glance/jitter-strip.data.d.ts +27 -0
- package/lib/types/charts/glance/link-bundle.d.ts +22 -0
- package/lib/types/charts/glance/matrix-heat-glance.d.ts +22 -0
- package/lib/types/charts/glance/matrix-heat-glance.data.d.ts +35 -0
- package/lib/types/charts/glance/pictorial-bar.d.ts +20 -0
- package/lib/types/charts/glance/pictorial-bar.data.d.ts +27 -0
- package/lib/types/charts/glance/rainfall-dual-area.d.ts +19 -0
- package/lib/types/charts/glance/rainfall-dual-area.data.d.ts +32 -0
- package/lib/types/charts/glance/rank-strip.d.ts +19 -0
- package/lib/types/charts/glance/rank-strip.data.d.ts +36 -0
- package/lib/types/charts/glance/scatter-labels.d.ts +23 -0
- package/lib/types/charts/glance/scatter-morph.d.ts +22 -0
- package/lib/types/charts/glance/scatter-morph.data.d.ts +30 -0
- package/lib/types/charts/glance/single-axis.d.ts +27 -0
- package/lib/types/charts/glance/single-axis.data.d.ts +6 -0
- package/lib/types/charts/glance/stagger-wave.d.ts +18 -0
- package/lib/types/charts/glance/stagger-wave.data.d.ts +26 -0
- package/lib/types/charts/glance/tree-lr.d.ts +16 -0
- package/lib/types/charts/glance/tree-lr.data.d.ts +27 -0
- package/lib/types/charts/glance/util-a.d.ts +31 -0
- package/lib/types/charts/glance/util-b.d.ts +12 -0
- package/lib/types/charts/glance/violin.d.ts +22 -0
- package/lib/types/charts/glance/violin.data.d.ts +24 -0
- package/lib/types/charts/hooks.d.ts +109 -0
- package/lib/types/charts/hover.d.ts +26 -0
- package/lib/types/charts/lupi/arc-matrix.d.ts +18 -0
- package/lib/types/charts/lupi/arc-matrix.data.d.ts +28 -0
- package/lib/types/charts/lupi/ballot-tally.d.ts +19 -0
- package/lib/types/charts/lupi/ballot-tally.data.d.ts +28 -0
- package/lib/types/charts/lupi/barcode-lollipop.d.ts +19 -0
- package/lib/types/charts/lupi/barcode-lollipop.data.d.ts +26 -0
- package/lib/types/charts/lupi/brand-spectrum.d.ts +28 -0
- package/lib/types/charts/lupi/brand-spectrum.data.d.ts +34 -0
- package/lib/types/charts/lupi/bubble-almanac.d.ts +22 -0
- package/lib/types/charts/lupi/bubble-almanac.data.d.ts +45 -0
- package/lib/types/charts/lupi/calendar-heat.d.ts +19 -0
- package/lib/types/charts/lupi/calendar-heat.data.d.ts +20 -0
- package/lib/types/charts/lupi/cluster-field.d.ts +21 -0
- package/lib/types/charts/lupi/cluster-field.data.d.ts +52 -0
- package/lib/types/charts/lupi/dot-cascade.d.ts +22 -0
- package/lib/types/charts/lupi/dot-cascade.data.d.ts +24 -0
- package/lib/types/charts/lupi/dotty-matrix.d.ts +17 -0
- package/lib/types/charts/lupi/dotty-matrix.data.d.ts +32 -0
- package/lib/types/charts/lupi/hourglass-stream.d.ts +18 -0
- package/lib/types/charts/lupi/hourglass-stream.data.d.ts +27 -0
- package/lib/types/charts/lupi/hundred-field.d.ts +18 -0
- package/lib/types/charts/lupi/hundred-field.data.d.ts +24 -0
- package/lib/types/charts/lupi/launch-fan.d.ts +37 -0
- package/lib/types/charts/lupi/launch-fan.data.d.ts +41 -0
- package/lib/types/charts/lupi/matrix-heat.d.ts +20 -0
- package/lib/types/charts/lupi/matrix-heat.data.d.ts +29 -0
- package/lib/types/charts/lupi/parallel-coordinates.d.ts +23 -0
- package/lib/types/charts/lupi/parallel-coordinates.data.d.ts +40 -0
- package/lib/types/charts/lupi/radial-convergence.d.ts +15 -0
- package/lib/types/charts/lupi/radial-convergence.data.d.ts +24 -0
- package/lib/types/charts/lupi/radial-patchwork.d.ts +16 -0
- package/lib/types/charts/lupi/radial-patchwork.data.d.ts +35 -0
- package/lib/types/charts/lupi/ridgeline.d.ts +23 -0
- package/lib/types/charts/lupi/ridgeline.data.d.ts +19 -0
- package/lib/types/charts/lupi/trend-lineage.d.ts +18 -0
- package/lib/types/charts/lupi/trend-lineage.data.d.ts +56 -0
- package/lib/types/charts/lupi/type-colonnade.d.ts +20 -0
- package/lib/types/charts/lupi/type-colonnade.data.d.ts +30 -0
- package/lib/types/charts/lupi/util-a.d.ts +9 -0
- package/lib/types/charts/lupi/util-b.d.ts +11 -0
- package/lib/types/charts/maps/choropleth.d.ts +33 -0
- package/lib/types/charts/maps/geo.d.ts +48 -0
- package/lib/types/charts/maps/legend.d.ts +14 -0
- package/lib/types/charts/maps/step-fill.d.ts +6 -0
- package/lib/types/charts/maps/us-choropleth.d.ts +25 -0
- package/lib/types/charts/maps/us-choropleth.data.d.ts +23 -0
- package/lib/types/charts/maps/world-choropleth.d.ts +22 -0
- package/lib/types/charts/maps/world-choropleth.data.d.ts +35 -0
- package/lib/types/charts/markers.d.ts +42 -0
- package/lib/types/charts/marks.d.ts +58 -0
- package/lib/types/charts/motion.d.ts +12 -0
- package/lib/types/charts/originals/daily-users.d.ts +13 -0
- package/lib/types/charts/originals/daily-users.data.d.ts +17 -0
- package/lib/types/charts/originals/feature-rank.d.ts +13 -0
- package/lib/types/charts/originals/feature-rank.data.d.ts +29 -0
- package/lib/types/charts/originals/format.d.ts +2 -0
- package/lib/types/charts/originals/key.d.ts +16 -0
- package/lib/types/charts/originals/response-time.d.ts +11 -0
- package/lib/types/charts/originals/response-time.data.d.ts +24 -0
- package/lib/types/charts/originals/revenue-by-plan.d.ts +12 -0
- package/lib/types/charts/originals/revenue-by-plan.data.d.ts +26 -0
- package/lib/types/charts/playback.d.ts +42 -0
- package/lib/types/charts/plot-note.d.ts +37 -0
- package/lib/types/charts/roles.d.ts +28 -0
- package/lib/types/charts/rules.d.ts +62 -0
- package/lib/types/charts/scale-context.d.ts +3 -0
- package/lib/types/charts/shapes.d.ts +9 -0
- package/lib/types/charts/shared-options.d.ts +25 -0
- package/lib/types/charts/svg.d.ts +24 -0
- package/lib/types/charts/text.d.ts +36 -0
- package/lib/types/charts/texture-ids.d.ts +24 -0
- package/lib/types/charts/texture.d.ts +185 -0
- package/lib/types/charts/util.d.ts +66 -0
- package/lib/types/charts/value-grid.d.ts +22 -0
- package/lib/types/draw.d.ts +279 -0
- package/lib/types/entries/dumbbell-queue.d.ts +2 -0
- package/lib/types/entries/hairline-area.d.ts +2 -0
- package/lib/types/entries/hairline-line.d.ts +2 -0
- package/lib/types/entries/plumb-scatter.d.ts +2 -0
- package/lib/types/entries/rung-bars.d.ts +2 -0
- package/lib/types/entries/slope.d.ts +2 -0
- package/lib/types/frame.d.ts +2 -0
- package/lib/types/index.d.ts +82 -0
- package/lib/types/kit.d.ts +22 -0
- package/lib/types/lib/format.d.ts +58 -0
- package/lib/types/lib/random.d.ts +5 -0
- package/lib/types/maps.d.ts +2 -0
- package/lib/types/schema/daily.d.ts +14 -0
- package/lib/types/schema/dumbbell-queue.d.ts +91 -0
- package/lib/types/schema/format.d.ts +101 -0
- package/lib/types/schema/hairline-area.d.ts +83 -0
- package/lib/types/schema/hairline-line.d.ts +85 -0
- package/lib/types/schema/key.d.ts +12 -0
- package/lib/types/schema/metrics.d.ts +26 -0
- package/lib/types/schema/motion.d.ts +22 -0
- package/lib/types/schema/options.d.ts +51 -0
- package/lib/types/schema/plumb-scatter.d.ts +124 -0
- package/lib/types/schema/registry.d.ts +309 -0
- package/lib/types/schema/rung-bars.d.ts +84 -0
- package/lib/types/schema/scale.d.ts +36 -0
- package/lib/types/schema/slope.d.ts +120 -0
- package/lib/types/schema/validate.d.ts +29 -0
- package/lib/types/schema.d.ts +30 -0
- package/lib/types/theme/derive.d.ts +23 -0
- package/lib/types/theme.d.ts +2 -0
- package/lib/vendor/us-atlas/states-10m.json.js +13855 -0
- package/lib/vendor/world-atlas/countries-110m.json.js +9357 -0
- package/package.json +160 -3
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { NoteProps } from "../../schema/options.js";
|
|
2
|
+
import type { JitterGroup } from "./jitter-strip.data.js";
|
|
3
|
+
interface JitterStripProps extends NoteProps {
|
|
4
|
+
data?: JitterGroup[];
|
|
5
|
+
height?: number;
|
|
6
|
+
format?: (v: number) => string;
|
|
7
|
+
/** Axis caption, e.g. "days after 21 March". */
|
|
8
|
+
axisLabel?: string;
|
|
9
|
+
/** Formats the labels on the scale; defaults to `format`. */
|
|
10
|
+
tickFormat?: (v: number) => string;
|
|
11
|
+
/** Unit for the tooltip noun when a record has no name, e.g. "year". */
|
|
12
|
+
unit?: string;
|
|
13
|
+
/** Index of the hero group (default the first: median and name in ink); a given one also inks its rings. */
|
|
14
|
+
highlight?: number;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* G15 Easter dates. One hollow ring per record, set on a lattice: values
|
|
18
|
+
* snap to equal-pitch columns and stack outward from each band's centre
|
|
19
|
+
* line, so pile-ups read as taller columns, evenly spaced, with no random
|
|
20
|
+
* jitter. The hero row's median (the first group, or the highlight) is a
|
|
21
|
+
* 2px ink tick; every other median is a quiet 2px rule.
|
|
22
|
+
*/
|
|
23
|
+
export declare const JitterStrip: (props: JitterStripProps) => import("react").JSX.Element;
|
|
24
|
+
export {};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export interface JitterGroup {
|
|
2
|
+
label: string;
|
|
3
|
+
/** One value per record. */
|
|
4
|
+
values: number[];
|
|
5
|
+
/** One name per record, in the same order as `values`, for the tooltip. */
|
|
6
|
+
names?: string[];
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Easter dates: the date of Easter Sunday in every year of the 1800s, 1900s,
|
|
10
|
+
* 2000s and 2100s (100 years each), as days after 21 March (0 is 21 March, 35
|
|
11
|
+
* is 25 April), which are the earliest and latest it can fall. The days are
|
|
12
|
+
* in jitter-strip.easter.json, one list a century in year order.
|
|
13
|
+
*
|
|
14
|
+
* Source: computed with the Gregorian rule, the Meeus/Jones/Butcher
|
|
15
|
+
* algorithm (Jean Meeus, Astronomical Algorithms, 1991), as set out at
|
|
16
|
+
* https://en.wikipedia.org/wiki/Date_of_Easter#Anonymous_Gregorian_algorithm
|
|
17
|
+
* and checked against the Good Friday dates (2019 to 2028, ten of them) in
|
|
18
|
+
* gov.uk's bank holidays file for England and Wales (Open Government
|
|
19
|
+
* Licence v3.0), https://www.gov.uk/bank-holidays.json, fetched 2026-10-15.
|
|
20
|
+
*
|
|
21
|
+
* Transform: for each year, Easter Sunday minus 21 March of that year in
|
|
22
|
+
* days. The 2100s are a prediction.
|
|
23
|
+
* Sanity: the earliest Easter in the four centuries is 22 March (1818) and
|
|
24
|
+
* the latest 25 April (1886, 1943, 2038 and 2190); the median in the 2000s is
|
|
25
|
+
* 20 days after 21 March, 10 April.
|
|
26
|
+
*/
|
|
27
|
+
export declare const jitterStripDemo: JitterGroup[];
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { CSSProperties } from "react";
|
|
2
|
+
interface Point {
|
|
3
|
+
x: number;
|
|
4
|
+
y: number;
|
|
5
|
+
}
|
|
6
|
+
interface LinkBundleProps {
|
|
7
|
+
/** Tone, motion and hover classes for the strands, e.g. "stroke-l4 draw". */
|
|
8
|
+
className: string;
|
|
9
|
+
/** Number of hairlines, 1–4: the link's weight. */
|
|
10
|
+
lines: number;
|
|
11
|
+
/** Control point of a bowed link; omit for a straight one. */
|
|
12
|
+
q?: Point;
|
|
13
|
+
s: Point;
|
|
14
|
+
style?: CSSProperties;
|
|
15
|
+
t: Point;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* A link engraved as a bundle of 1px hairlines at a 2px pitch, centred on
|
|
19
|
+
* the link's path; the number of strands carries its weight.
|
|
20
|
+
*/
|
|
21
|
+
export declare const LinkBundle: (props: LinkBundleProps) => import("react").JSX.Element;
|
|
22
|
+
export {};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { NoteProps } from "../../schema/options.js";
|
|
2
|
+
import type { MatrixGlanceData } from "./matrix-heat-glance.data.js";
|
|
3
|
+
interface MatrixHeatGlanceProps extends NoteProps {
|
|
4
|
+
data?: MatrixGlanceData;
|
|
5
|
+
/** Overrides the natural height (which follows the cell size). */
|
|
6
|
+
height?: number;
|
|
7
|
+
/** Value domain for the five screens; defaults to 0 – 100. */
|
|
8
|
+
domain?: [number, number];
|
|
9
|
+
format?: (v: number) => string;
|
|
10
|
+
/** Suffix for the tooltip value, e.g. "% of households". */
|
|
11
|
+
unit?: string;
|
|
12
|
+
/** [row, column] of the hero cell; defaults to the highest value. */
|
|
13
|
+
highlight?: [number, number];
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* G20 Kit by income. One tile per row and column, each a halftone screen
|
|
17
|
+
* on paper whose dot grows a step per bin (five bins, pitch 4), the number
|
|
18
|
+
* centred on a paper plate. The one hero tile (the highest value) is solid
|
|
19
|
+
* ink, its number in paper.
|
|
20
|
+
*/
|
|
21
|
+
export declare const MatrixHeatGlance: (props: MatrixHeatGlanceProps) => import("react").JSX.Element;
|
|
22
|
+
export {};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export interface MatrixGlanceData {
|
|
2
|
+
columns: string[];
|
|
3
|
+
rows: string[];
|
|
4
|
+
/** values[row][column]. */
|
|
5
|
+
values: number[][];
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Kit by income: the percentage of UK households that own a car or van, a
|
|
9
|
+
* tumble dryer, a dishwasher, a home computer, an internet connection and a
|
|
10
|
+
* mobile phone, by tenth of gross household income, financial year ending 2019
|
|
11
|
+
* (April 2018 to March 2019). It is the last year the survey asked about
|
|
12
|
+
* dishwashers and tumble dryers.
|
|
13
|
+
*
|
|
14
|
+
* Source: Office for National Statistics, Family spending workbook 4:
|
|
15
|
+
* expenditure by household characteristic, financial years ending 2001 to
|
|
16
|
+
* 2019 (Living Costs and Food Survey; Open Government Licence v3.0), sheets
|
|
17
|
+
* A46 "Percentage of households with durable goods by income group and
|
|
18
|
+
* household composition" and A47 "Percentage of households with cars by income
|
|
19
|
+
* group":
|
|
20
|
+
* https://www.ons.gov.uk/peoplepopulationandcommunity/personalandhouseholdfinances/expenditure/datasets/familyspendingworkbook4expenditurebyhouseholdcharacteristic
|
|
21
|
+
* file https://www.ons.gov.uk/file?uri=/peoplepopulationandcommunity/personalandhouseholdfinances/expenditure/datasets/familyspendingworkbook4expenditurebyhouseholdcharacteristic/fye2001tofye2019/familyspendingworkbook4expenditurebyhouseholdcharacteristics.xlsx
|
|
22
|
+
* Fetched 2026-10-15.
|
|
23
|
+
*
|
|
24
|
+
* Transform: the ten rows "Lowest ten per cent" to "Highest ten per cent"
|
|
25
|
+
* under "Gross income decile group". Tumble dryer, Dishwasher, Computer
|
|
26
|
+
* (home computer), Internet (internet connection) and Mobile (mobile phone)
|
|
27
|
+
* are the A46 columns of those names; Car is the A47 column "All with
|
|
28
|
+
* cars/vans". Whole per cents, as published. Rows are labelled by tenth
|
|
29
|
+
* ("2nd" is the second decile group). The workbook for the year ending 2021
|
|
30
|
+
* (note 3 to its table A46) says the dishwasher and tumble dryer questions
|
|
31
|
+
* were removed from the questionnaire that year.
|
|
32
|
+
* Sanity: 20% of households in the lowest tenth have a dishwasher against 83%
|
|
33
|
+
* in the highest; the mobile phone is the flattest, 88% to 99%.
|
|
34
|
+
*/
|
|
35
|
+
export declare const matrixHeatGlanceDemo: MatrixGlanceData;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { NoteProps } from "../../schema/options.js";
|
|
2
|
+
import type { PictorialDatum } from "./pictorial-bar.data.js";
|
|
3
|
+
interface PictorialBarProps extends NoteProps {
|
|
4
|
+
data?: PictorialDatum[];
|
|
5
|
+
/** Amount one icon stands for (same units as `value`). */
|
|
6
|
+
unit?: number;
|
|
7
|
+
height?: number;
|
|
8
|
+
format?: (v: number) => string;
|
|
9
|
+
/** Footnote. */
|
|
10
|
+
/** Index of the row to draw in the hero colour. */
|
|
11
|
+
highlight?: number;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* G5 Long novels. Each row is a track of page glyphs; one page =
|
|
15
|
+
* `unit`. Every page is a 1px outline; the counted pages are filled with
|
|
16
|
+
* the row's hatch and the last is cut to the remainder. Only the biggest
|
|
17
|
+
* row is inked; the others are engraved in one grey.
|
|
18
|
+
*/
|
|
19
|
+
export declare const PictorialBar: (props: PictorialBarProps) => import("react").JSX.Element;
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* G5 Long novels: the length of four long novels in English, in thousands of
|
|
3
|
+
* words. One page glyph is 50 thousand words.
|
|
4
|
+
*
|
|
5
|
+
* Source: Project Gutenberg plain-text editions (public domain; the Project
|
|
6
|
+
* Gutenberg licence lets the texts be used for any purpose, and these counts
|
|
7
|
+
* are derived facts), fetched 2026-10-15 from https://www.gutenberg.org/cache/epub/<id>/pg<id>.txt :
|
|
8
|
+
* 2600 War and Peace, translated by Aylmer Maude
|
|
9
|
+
* 135 Les Misérables, translated by Isabel Florence Hapgood
|
|
10
|
+
* 996 Don Quixote, translated by John Ormsby
|
|
11
|
+
* 145 Middlemarch, by George Eliot (written in English)
|
|
12
|
+
*
|
|
13
|
+
* Transform: every whitespace-separated token containing a letter or digit,
|
|
14
|
+
* between the "*** START OF" and "*** END OF" marker lines, so the Gutenberg
|
|
15
|
+
* licence text is left out but any translator's preface or notes inside the
|
|
16
|
+
* book are counted. Raw counts: 563,001, 564,986, 427,245 and 316,339 words,
|
|
17
|
+
* rounded to the nearest thousand. These are English translations, so the
|
|
18
|
+
* counts belong to a particular translation, not to the original. Les
|
|
19
|
+
* Misérables (Hapgood) edges War and Peace (Maude) by about two thousand words.
|
|
20
|
+
*/
|
|
21
|
+
export interface PictorialDatum {
|
|
22
|
+
label: string;
|
|
23
|
+
/** Thousands of words. */
|
|
24
|
+
value: number;
|
|
25
|
+
}
|
|
26
|
+
/** Words in four long novels, in thousands. */
|
|
27
|
+
export declare const pictorialBarDemo: PictorialDatum[];
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { NoteProps } from "../../schema/options.js";
|
|
2
|
+
import type { RainfallDatum } from "./rainfall-dual-area.data.js";
|
|
3
|
+
interface RainfallDualAreaProps extends NoteProps {
|
|
4
|
+
data?: RainfallDatum[];
|
|
5
|
+
height?: number;
|
|
6
|
+
formatInput?: (v: number) => string;
|
|
7
|
+
formatOutput?: (v: number) => string;
|
|
8
|
+
/** Names for the two series, used in the tooltip. */
|
|
9
|
+
inputName?: string;
|
|
10
|
+
outputName?: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* G8 Rain and river. Hatched input bars hang from a hairline top rule like
|
|
14
|
+
* rain (millimetres a day); the output rises below as an area engraved in fine
|
|
15
|
+
* horizontal rules (river flow) under a 2px ink line. Two scales, stacked, one
|
|
16
|
+
* shared time axis. Scrub to read a day.
|
|
17
|
+
*/
|
|
18
|
+
export declare const RainfallDualArea: (props: RainfallDualAreaProps) => import("react").JSX.Element;
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* G8 Rain and river: the Ure in Wensleydale, 28 November to 21 December 2015.
|
|
3
|
+
* Rain hangs from the top; the river rises from the floor.
|
|
4
|
+
*
|
|
5
|
+
* Sources: Environment Agency Hydrology API (Open Government Licence v3.0),
|
|
6
|
+
* https://environment.data.gov.uk/hydrology/ , fetched 2026-10-15.
|
|
7
|
+
* - Flow: daily mean flow, m3/s, River Ure at Kilgram Bridge (station
|
|
8
|
+
* F2206, guid 41d13879-a145-4975-83bc-1aa9878d2fb5), measure
|
|
9
|
+
* 41d13879-a145-4975-83bc-1aa9878d2fb5-flow-m-86400-m3s-qualified:
|
|
10
|
+
* https://environment.data.gov.uk/hydrology/id/measures/41d13879-a145-4975-83bc-1aa9878d2fb5-flow-m-86400-m3s-qualified/readings.json?mineq-date=2015-11-28&maxeq-date=2015-12-21
|
|
11
|
+
* - Rain: daily total, mm, the Sedbusk rain gauge in Upper Wensleydale
|
|
12
|
+
* (guid 74d6a909-ad5a-4e66-8f2a-9ad42ec1dbb5), measure
|
|
13
|
+
* 74d6a909-ad5a-4e66-8f2a-9ad42ec1dbb5-rainfall-t-86400-mm-qualified:
|
|
14
|
+
* https://environment.data.gov.uk/hydrology/id/measures/74d6a909-ad5a-4e66-8f2a-9ad42ec1dbb5-rainfall-t-86400-mm-qualified/readings.json?mineq-date=2015-11-28&maxeq-date=2015-12-21
|
|
15
|
+
*
|
|
16
|
+
* Transform: the 24 days from 2015-11-28 to 2015-12-21, each date's rain
|
|
17
|
+
* total and mean flow side by side, flow rounded to 0.1 m3/s. All 48 readings
|
|
18
|
+
* are marked Complete. The rain gauge is one point, not a catchment average.
|
|
19
|
+
* The wettest day is 5 December (76.8
|
|
20
|
+
* mm); the river's daily mean peaks the same day (315.1 m3/s), so the two
|
|
21
|
+
* shapes line up bar for bar rather than lagging by days.
|
|
22
|
+
*/
|
|
23
|
+
export interface RainfallDatum {
|
|
24
|
+
/** The day. */
|
|
25
|
+
date: Date;
|
|
26
|
+
/** Hangs from the top: rain, mm. */
|
|
27
|
+
input: number;
|
|
28
|
+
/** Rises from the floor: mean river flow, m3/s. */
|
|
29
|
+
output: number;
|
|
30
|
+
}
|
|
31
|
+
/** Rain at Sedbusk and flow of the Ure at Kilgram Bridge, a day at a time. */
|
|
32
|
+
export declare const rainfallDemo: RainfallDatum[];
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { NoteProps } from "../../schema/options.js";
|
|
2
|
+
import type { RankStripData } from "./rank-strip.data.js";
|
|
3
|
+
interface RankStripProps extends NoteProps {
|
|
4
|
+
data?: RankStripData;
|
|
5
|
+
/** Overrides the natural height (which follows the cell size). */
|
|
6
|
+
height?: number;
|
|
7
|
+
/** Label of the hero entity; defaults to the biggest climber. */
|
|
8
|
+
highlight?: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* G21 Nobel countries. One row per entity, one tile per period, the tile
|
|
12
|
+
* carrying the rank small in its lower-left corner. Each tile is engraved:
|
|
13
|
+
* the higher the rank, the denser and darker its hatch, so a
|
|
14
|
+
* climb reads as a row darkening left to right. The hero entity's row has
|
|
15
|
+
* a 2px concentric outline and the net move is printed at the end of every
|
|
16
|
+
* row.
|
|
17
|
+
*/
|
|
18
|
+
export declare const RankStrip: (props: RankStripProps) => import("react").JSX.Element;
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export interface RankSeries {
|
|
2
|
+
label: string;
|
|
3
|
+
/** Rank in each period, 1 = top. */
|
|
4
|
+
ranks: number[];
|
|
5
|
+
}
|
|
6
|
+
export interface RankStripData {
|
|
7
|
+
periods: string[];
|
|
8
|
+
series: RankSeries[];
|
|
9
|
+
/** Size of the field the ranks are among, for the tooltip ("#3 of 6"); defaults to the number of series. */
|
|
10
|
+
outOf?: number;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Nobel countries: where six countries rank among themselves by Nobel Prizes
|
|
14
|
+
* won in five 15-year periods, 1951 to 2025.
|
|
15
|
+
*
|
|
16
|
+
* Source: Nobel Prize Outreach, Nobel Prize API v2.1, all laureates (CC0, per
|
|
17
|
+
* the API terms of use, https://www.nobelprize.org/about/terms-of-use-for-api-nobelprize-org-and-data-nobelprize-org/):
|
|
18
|
+
* https://api.nobelprize.org/2.1/laureates?limit=1200&format=json
|
|
19
|
+
* Fetched 2026-10-15.
|
|
20
|
+
*
|
|
21
|
+
* Transform, one rule throughout: a laureate's country is their country of
|
|
22
|
+
* birth in today's borders (birth.place.countryNow), not the country of their
|
|
23
|
+
* institution. Every laureate and prize pair counts 1, so a shared prize is
|
|
24
|
+
* counted whole for each laureate, and someone with two prizes counts twice.
|
|
25
|
+
* Organisations have no birthplace and are skipped (34 prizes, with a few
|
|
26
|
+
* laureates without a recorded birth country). A prize belongs to the period
|
|
27
|
+
* of its award year, and 2026 is not in the table. Counts, in period order:
|
|
28
|
+
* USA 30, 48, 52, 70, 61; United Kingdom 12, 17, 7, 14, 18; Germany 9, 11, 14,
|
|
29
|
+
* 7, 7; France 8, 8, 4, 4, 12; Japan 1, 3, 3, 9, 13; Sweden 3, 6, 5, 1, 3.
|
|
30
|
+
* Rank is among these six only (1 is most prizes). The six and the periods were
|
|
31
|
+
* chosen so that no two countries tie in any period, so no tie-break is
|
|
32
|
+
* needed (the script checks it).
|
|
33
|
+
* Sanity: Japan climbs from 6th to 3rd with 13 prizes in 2011 to 2025; Germany
|
|
34
|
+
* slips from 3rd to 5th.
|
|
35
|
+
*/
|
|
36
|
+
export declare const rankStripDemo: RankStripData;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/** A name set beside one mark. */
|
|
2
|
+
export interface PlacedName {
|
|
3
|
+
id: string;
|
|
4
|
+
x: number;
|
|
5
|
+
y: number;
|
|
6
|
+
text: string;
|
|
7
|
+
anchor: "end" | "middle" | "start";
|
|
8
|
+
kind: "name";
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Names for the circles of a scatter, largest first. Each goes right of its
|
|
12
|
+
* circle, else left, above or below, taking the first spot that is clear of
|
|
13
|
+
* every circle and every name already set; failing that, the first spot clear
|
|
14
|
+
* of the other names (over a smaller circle); failing that, it is left out
|
|
15
|
+
* (the tooltip still names it). `at` gives a datum's centre and radius.
|
|
16
|
+
*/
|
|
17
|
+
export declare const placeNames: <T extends {
|
|
18
|
+
label: string;
|
|
19
|
+
value: number;
|
|
20
|
+
}>(data: T[], bounds: {
|
|
21
|
+
left: number;
|
|
22
|
+
right: number;
|
|
23
|
+
}, at: (d: T) => [number, number, number]) => PlacedName[];
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { NoteProps } from "../../schema/options.js";
|
|
2
|
+
import type { MorphDatum } from "./scatter-morph.data.js";
|
|
3
|
+
interface ScatterMorphProps extends NoteProps {
|
|
4
|
+
data?: MorphDatum[];
|
|
5
|
+
height?: number;
|
|
6
|
+
format?: (v: number) => string;
|
|
7
|
+
/** Axis names for the scatter view. */
|
|
8
|
+
xLabel?: string;
|
|
9
|
+
yLabel?: string;
|
|
10
|
+
formatX?: (v: number) => string;
|
|
11
|
+
formatY?: (v: number) => string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* G9 Largest asteroids. One set of entities that cycles through three views,
|
|
15
|
+
* scatter → bars → ring, every few seconds; each mark flies smoothly into its
|
|
16
|
+
* new shape. Hover pauses the cycle; the view controls jump straight to a
|
|
17
|
+
* view. The biggest item is solid ink; the rest are hatched on paper inside
|
|
18
|
+
* a 1px rim, the pattern fixed to the page so marks glide across one
|
|
19
|
+
* continuous engraved screen.
|
|
20
|
+
*/
|
|
21
|
+
export declare const ScatterMorph: (props: ScatterMorphProps) => import("react").JSX.Element;
|
|
22
|
+
export {};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* G9 Largest asteroids: the twelve largest asteroids of the main belt. Size is
|
|
3
|
+
* diameter in kilometres, x the tilt of the orbit (inclination, degrees), y how
|
|
4
|
+
* stretched it is (eccentricity, 0 a circle).
|
|
5
|
+
*
|
|
6
|
+
* Source: NASA/JPL Small-Body Database (SBDB) Query API,
|
|
7
|
+
* https://ssd-api.jpl.nasa.gov/doc/sbdb_query.html , fetched 2026-10-15:
|
|
8
|
+
* https://ssd-api.jpl.nasa.gov/sbdb_query.api?fields=full_name,name,diameter,a,i,e&sb-kind=a&sb-class=IMB,MBA,OMB&sort=-diameter&limit=12
|
|
9
|
+
* The API pages state no licence; NASA/JPL products are US government works,
|
|
10
|
+
* which is public domain in the US (an assumption, not a statement read there).
|
|
11
|
+
*
|
|
12
|
+
* Transform: sb-kind=a is asteroids; sb-class=IMB,MBA,OMB (inner, middle and
|
|
13
|
+
* outer main belt) leaves out the trans-Neptunian bodies and centaurs that
|
|
14
|
+
* the plain list puts among the largest, and the twelve largest by diameter
|
|
15
|
+
* are kept in the order the API gives. Value is the diameter rounded to whole
|
|
16
|
+
* kilometres; x is the inclination in degrees and y the eccentricity, as
|
|
17
|
+
* given. Ceres, 939 km, is the largest and is also classed a dwarf planet;
|
|
18
|
+
* Pallas, the third largest, has the most tilted orbit (34.93 degrees).
|
|
19
|
+
*/
|
|
20
|
+
export interface MorphDatum {
|
|
21
|
+
label: string;
|
|
22
|
+
/** Size: area in the scatter, height in the bars, angle in the ring. */
|
|
23
|
+
value: number;
|
|
24
|
+
/** Scatter x: orbital inclination, degrees. */
|
|
25
|
+
x: number;
|
|
26
|
+
/** Scatter y: orbital eccentricity. */
|
|
27
|
+
y: number;
|
|
28
|
+
}
|
|
29
|
+
/** The twelve largest main-belt asteroids: diameter (km), inclination, eccentricity. */
|
|
30
|
+
export declare const scatterMorphDemo: MorphDatum[];
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { NoteProps } from "../../schema/options.js";
|
|
2
|
+
import type { SingleAxisRow } from "./single-axis.data.js";
|
|
3
|
+
interface SingleAxisProps extends NoteProps {
|
|
4
|
+
data?: SingleAxisRow[];
|
|
5
|
+
height?: number;
|
|
6
|
+
/** Labels for the columns; defaults to hours 00:00–23:00. */
|
|
7
|
+
columns?: string[];
|
|
8
|
+
/** Column indices that get an axis label. */
|
|
9
|
+
ticks?: number[];
|
|
10
|
+
format?: (v: number) => string;
|
|
11
|
+
/** Unit shown in the tooltip, e.g. "m". */
|
|
12
|
+
unit?: string;
|
|
13
|
+
/** Clock the hours are read on, shown after the axis and in the tooltip. */
|
|
14
|
+
zone?: string;
|
|
15
|
+
/** Index of the row to draw in the hero colour. */
|
|
16
|
+
highlight?: number;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* G14 Up the Hudson (punch card). One row per station, each on its own
|
|
20
|
+
* hairline hour axis (local standard time); circle area = predicted tide
|
|
21
|
+
* height, rows in order up a river. The row with
|
|
22
|
+
* the highest tides (or the highlight) is solid ink; every other station's
|
|
23
|
+
* circles are hatched over a paper ground inside a 1px outline, so neighbours
|
|
24
|
+
* overlap cleanly.
|
|
25
|
+
*/
|
|
26
|
+
export declare const SingleAxis: (props: SingleAxisProps) => import("react").JSX.Element;
|
|
27
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { NoteProps } from "../../schema/options.js";
|
|
2
|
+
import type { WaveDatum } from "./stagger-wave.data.js";
|
|
3
|
+
interface StaggerWaveProps extends NoteProps {
|
|
4
|
+
data?: WaveDatum[];
|
|
5
|
+
height?: number;
|
|
6
|
+
format?: (v: number) => string;
|
|
7
|
+
/** Index of the bar to draw in the hero colour. */
|
|
8
|
+
highlight?: number;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* G12 Cold December. Thirty to sixty narrow bars, one a day, squared off with
|
|
12
|
+
* a 2px corner, that enter as a wave, left to right. Bars stand on a zero
|
|
13
|
+
* line: up for a positive value, down for a negative one. The peak (or the
|
|
14
|
+
* highlight) is solid ink; every other bar is hatched inside a crisp 1px
|
|
15
|
+
* outline. The card's Replay re-runs it.
|
|
16
|
+
*/
|
|
17
|
+
export declare const StaggerWave: (props: StaggerWaveProps) => import("react").JSX.Element;
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* G12 Cold December: the daily mean temperature of central England, 2 November
|
|
3
|
+
* to 27 December 2010, one bar a day.
|
|
4
|
+
*
|
|
5
|
+
* Source: Met Office Hadley Centre Central England Temperature (HadCET),
|
|
6
|
+
* daily mean, v2.1.1.0 + provisional,
|
|
7
|
+
* https://www.metoffice.gov.uk/hadobs/hadcet/data/download.html
|
|
8
|
+
* File: https://www.metoffice.gov.uk/hadobs/hadcet/data/meantemp_daily_totals.txt
|
|
9
|
+
* Fetched 2026-10-15. Licence: Open Government Licence v3.0, with the Met
|
|
10
|
+
* Office's attribution.
|
|
11
|
+
*
|
|
12
|
+
* Transform: the 56 values from 2010-11-02 to 2010-12-27, in degrees Celsius
|
|
13
|
+
* to one decimal place, exactly as they stand (none is missing). The coldest
|
|
14
|
+
* is 20 December, -7.0; 23 of the 56 days are below zero. December 2010 had
|
|
15
|
+
* a mean of -0.67 (the mean of its 31 daily values), the coldest December in
|
|
16
|
+
* the series since 1890 (-0.80).
|
|
17
|
+
*/
|
|
18
|
+
export interface WaveDatum {
|
|
19
|
+
date: Date;
|
|
20
|
+
/** Daily mean temperature, degrees Celsius. */
|
|
21
|
+
value: number;
|
|
22
|
+
}
|
|
23
|
+
/** Daily mean central England temperature, 2 November to 27 December 2010. */
|
|
24
|
+
export declare const staggerWaveDemo: WaveDatum[];
|
|
25
|
+
/** Index of the coldest day, the bar drawn in ink. */
|
|
26
|
+
export declare const staggerWaveColdest: number;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { NoteProps } from "../../schema/options.js";
|
|
2
|
+
import type { TreeDatum } from "./tree-lr.data.js";
|
|
3
|
+
interface TreeLRProps extends NoteProps {
|
|
4
|
+
data?: TreeDatum;
|
|
5
|
+
height?: number;
|
|
6
|
+
/** Name of a top-level branch to draw in the hero colour. */
|
|
7
|
+
highlight?: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* G7 Indo-European. A two- or three-level hierarchy laid out left to right
|
|
11
|
+
* with smooth 1px hairline links; leaves are bare ends, named where the
|
|
12
|
+
* link stops. One branch (the highlight, else the first) is inked; the
|
|
13
|
+
* others share one grey. Hover any node to trace its path back to the root.
|
|
14
|
+
*/
|
|
15
|
+
export declare const TreeLR: (props: TreeLRProps) => import("react").JSX.Element;
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* G7 Indo-European: four branches of the Indo-European family and three
|
|
3
|
+
* languages under each.
|
|
4
|
+
*
|
|
5
|
+
* Source: Glottolog 5.3 (Hammarström, Forkel, Haspelmath and Bank, Max Planck
|
|
6
|
+
* Institute for Evolutionary Anthropology, Leipzig, 2026), CC BY 4.0,
|
|
7
|
+
* https://doi.org/10.5281/zenodo.15525265 . File glottolog_languoid.csv.zip,
|
|
8
|
+
* https://glottolog.org/meta/downloads , fetched 2026-10-15.
|
|
9
|
+
*
|
|
10
|
+
* Transform: Glottolog's tree is much deeper than this one. Indo-European
|
|
11
|
+
* (indo1319) has Classical Indo-European (clas1257) below it; Germanic
|
|
12
|
+
* (germ1287), Italic then Romance (roma1334) and Celtic (celt1248) sit under
|
|
13
|
+
* that, and Slavic (slav1255) sits under Balto-Slavic. This chart prunes the
|
|
14
|
+
* intermediate families and keeps the four branches directly under the root.
|
|
15
|
+
* The twelve languages were chosen by hand, spread across each branch's
|
|
16
|
+
* sub-branches, and each was checked in the file to have its branch among its
|
|
17
|
+
* ancestors (English stan1293, German stan1295 and Icelandic icel1247 under
|
|
18
|
+
* Germanic; French stan1290, Italian ital1282 and Romanian roma1327 under
|
|
19
|
+
* Romance; Irish iris1253, Welsh wels1247 and Breton bret1244 under Celtic;
|
|
20
|
+
* Russian russ1263, Polish poli1260 and Bulgarian bulg1262 under Slavic).
|
|
21
|
+
*/
|
|
22
|
+
export interface TreeDatum {
|
|
23
|
+
name: string;
|
|
24
|
+
children?: TreeDatum[];
|
|
25
|
+
}
|
|
26
|
+
/** Twelve Indo-European languages under four of its branches. */
|
|
27
|
+
export declare const treeLRDemo: TreeDatum;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rendered width of `text` in a text role (`t-label`, `t-axis`, ...), read
|
|
3
|
+
* from the page's own Inter. Falls back to the estimate until the font is in
|
|
4
|
+
* (and is not remembered then).
|
|
5
|
+
*/
|
|
6
|
+
export declare const textWidth: (text: string, role: string) => number;
|
|
7
|
+
/** Width of the widest of `labels` in `role`, rounded up: room to reserve beside a plot. */
|
|
8
|
+
export declare const labelRoom: (labels: string[], role?: string) => number;
|
|
9
|
+
export declare const LADDER_FILL: string[];
|
|
10
|
+
export declare const LADDER_STROKE: string[];
|
|
11
|
+
/** Fill class for a ladder step, or the hero fill. */
|
|
12
|
+
export declare const fillFor: (i: number, hero?: boolean) => string;
|
|
13
|
+
/** Stroke class for a ladder step, or the hero stroke. */
|
|
14
|
+
export declare const strokeFor: (i: number, hero?: boolean) => string;
|
|
15
|
+
/**
|
|
16
|
+
* Ladder steps by rank: the largest value gets `steps[0]`, the next
|
|
17
|
+
* `steps[1]`, and so on (the last step repeats).
|
|
18
|
+
*/
|
|
19
|
+
export declare const rankTones: (values: number[], steps: number[]) => number[];
|
|
20
|
+
/** Explicit plus and a true minus sign: +12, −18. */
|
|
21
|
+
export declare const fmtSigned: (v: number) => string;
|
|
22
|
+
export type Pt = [number, number];
|
|
23
|
+
export declare const rectPts: (x0: number, y0: number, x1: number, y1: number) => Pt[];
|
|
24
|
+
export declare const circlePts: (cx: number, cy: number, r: number) => Pt[];
|
|
25
|
+
/**
|
|
26
|
+
* Annular sector between radii r0 < r1 and angles a0 < a1 (clockwise from
|
|
27
|
+
* 12 o'clock), trimmed by a parallel gap `g` on each radial side.
|
|
28
|
+
*/
|
|
29
|
+
export declare const sectorPts: (cx: number, cy: number, r0: number, r1: number, a0: number, a1: number, g: number) => Pt[];
|
|
30
|
+
export declare const ptsPath: (pts: Pt[]) => string;
|
|
31
|
+
export declare const blendPts: (a: Pt[], b: Pt[], t: number) => Pt[];
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/** Ladder step for rank `rank` of `n`, spread so the last stays readable at step `lightest`. */
|
|
2
|
+
export declare const ladderStep: (rank: number, n: number, lightest?: number) => number;
|
|
3
|
+
/** Deterministic log-normal samples: the shared normal draws, exponentiated. */
|
|
4
|
+
export declare const logNormals: (seed: number, n: number, median: number, sigma: number) => number[];
|
|
5
|
+
/** Gaussian kernel density of `values`, sampled at `at`. */
|
|
6
|
+
export declare const density: (values: number[], at: number[], bandwidth: number) => number[];
|
|
7
|
+
/** Silverman's rule-of-thumb bandwidth. */
|
|
8
|
+
export declare const silverman: (values: number[]) => number;
|
|
9
|
+
/** Height of the glance control slot: one control's 44px hit area. */
|
|
10
|
+
export declare const CONTROL_SLOT_H = 44;
|
|
11
|
+
/** How many hairlines a link of `value` gets: one to four, by its share of the heaviest. */
|
|
12
|
+
export declare const bundleLines: (value: number, max: number) => number;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { NoteProps } from "../../schema/options.js";
|
|
2
|
+
import type { ViolinGroup } from "./violin.data.js";
|
|
3
|
+
interface ViolinProps extends NoteProps {
|
|
4
|
+
data?: ViolinGroup[];
|
|
5
|
+
height?: number;
|
|
6
|
+
format?: (v: number) => string;
|
|
7
|
+
/** Unit noun for the tooltip, e.g. "towers". */
|
|
8
|
+
unit?: string;
|
|
9
|
+
/** Darkest = lowest median (true) or highest (false, e.g. the heaviest bells). */
|
|
10
|
+
lowIsBest?: boolean;
|
|
11
|
+
/** Index of the group to draw in the hero colour. */
|
|
12
|
+
highlight?: number;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* G19 Tenor weights. One filled density silhouette per group, mirrored around
|
|
16
|
+
* its centre line; width = how many records sit at that value. A 2px
|
|
17
|
+
* paper-coloured rung marks the median, printed beside it. The lowest-median group
|
|
18
|
+
* (or the highlight, or the highest median when `lowIsBest` is false) is solid ink; the rest are hatched inside
|
|
19
|
+
* a 1px outline.
|
|
20
|
+
*/
|
|
21
|
+
export declare const Violin: (props: ViolinProps) => import("react").JSX.Element;
|
|
22
|
+
export {};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export interface ViolinGroup {
|
|
2
|
+
label: string;
|
|
3
|
+
/** One value per record. */
|
|
4
|
+
values: number[];
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Tenor weights: the weight of the heaviest bell, in hundredweight (cwt), for
|
|
8
|
+
* every full-circle ring of 6, 8, 10 and 12 bells, one value per tower.
|
|
9
|
+
*
|
|
10
|
+
* Source: Dove's Guide for Church Bell Ringers, Central Council of Church Bell
|
|
11
|
+
* Ringers, dove.csv, licensed Creative Commons Attribution-ShareAlike 4.0
|
|
12
|
+
* (credit the Central Council; data derived from it shares alike):
|
|
13
|
+
* https://dove.cccbr.org.uk/dove.csv (download page https://dove.cccbr.org.uk/downloads)
|
|
14
|
+
* Fetched 2026-10-15.
|
|
15
|
+
*
|
|
16
|
+
* Transform: rows with RingType "Full-circle ring" and Bells 6, 8, 10 or 12
|
|
17
|
+
* (2,958, 1,892, 303 and 139 towers); the column Wt, which is the tenor in
|
|
18
|
+
* pounds, was kept as given (blank weights dropped) and is in
|
|
19
|
+
* violin.tenors.json, sorted. Divided here by 112 to give hundredweight.
|
|
20
|
+
* Sanity: the heaviest tenor is Liverpool Cathedral's, 9,195 lb or 82 cwt, in
|
|
21
|
+
* the ring of 12; the median tenor is 10 cwt for six bells and 25.7 cwt for
|
|
22
|
+
* twelve. Dove marks some weights as approximate or estimated.
|
|
23
|
+
*/
|
|
24
|
+
export declare const violinDemo: ViolinGroup[];
|