@howells/hairline 0.0.0-stage → 0.1.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/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 +34 -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 +162 -4
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/** Thickness of one rung: the family's mark, a solid 2px bar on whole pixels. */
|
|
2
|
+
export declare const RUNG = 2;
|
|
3
|
+
/** Whole-pixel pitch for `count` rungs in `room` px, between 4 and `max`. */
|
|
4
|
+
export declare const rungPitch: (room: number, count: number, max?: number) => number;
|
|
5
|
+
/** Top edge of rung `k` (0 = lowest) above a whole-pixel `floor`. */
|
|
6
|
+
export declare const rungY: (floor: number, k: number, pitch: number) => number;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { NoteProps } from "../../schema/options.js";
|
|
2
|
+
import type { HistBin } from "./rung-histogram.data.js";
|
|
3
|
+
interface RungHistogramProps extends NoteProps {
|
|
4
|
+
data?: HistBin[];
|
|
5
|
+
format?: (v: number) => string;
|
|
6
|
+
/** Formats bin edges on the axis, e.g. 210 → "3:30". */
|
|
7
|
+
formatX?: (v: number) => string;
|
|
8
|
+
height?: number;
|
|
9
|
+
/** Label every nth bin edge (doubled when bins are under 34px wide). */
|
|
10
|
+
labelEvery?: number;
|
|
11
|
+
/** The marker's position; defaults to the median. Pass null to hide it. */
|
|
12
|
+
marker?: number | null;
|
|
13
|
+
markerLabel?: string;
|
|
14
|
+
/** Records per rung. */
|
|
15
|
+
unit?: number;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* F14 Finish times. Binned counts drawn as stacks of 2px rungs at one pitch, one
|
|
19
|
+
* per record, every fifth darker; the tallest bin in ink with its count, and an evenly dotted guide where half the records are in.
|
|
20
|
+
*/
|
|
21
|
+
export declare const RungHistogram: (props: RungHistogramProps) => import("react").JSX.Element;
|
|
22
|
+
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/** One bin: [x0, x1) and how many records fell in it. */
|
|
2
|
+
export interface HistBin {
|
|
3
|
+
count: number;
|
|
4
|
+
x0: number;
|
|
5
|
+
x1: number;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* London Marathon 2016 (24 April 2016): mass-event finishers in five-minute
|
|
9
|
+
* bins of finish time, 2:30 to 7:00, as a count of runners. Edges are finish
|
|
10
|
+
* time in minutes, so 180 is 3:00 (the file does not say gun or chip time).
|
|
11
|
+
*
|
|
12
|
+
* Source: AndrewMillerOnline/marathon-results (MIT licence), a public GitHub
|
|
13
|
+
* dataset of marathon results gathered from the race's own results site, file
|
|
14
|
+
* London/results-2014-2018.csv. No login or token needed.
|
|
15
|
+
* https://github.com/AndrewMillerOnline/marathon-results
|
|
16
|
+
* https://raw.githubusercontent.com/AndrewMillerOnline/marathon-results/main/London/results-2014-2018.csv
|
|
17
|
+
* Fetched 2026-10-15.
|
|
18
|
+
*
|
|
19
|
+
* Transform: keep rows with year = 2016 (38,983 rows). Drop the 44 elite-field
|
|
20
|
+
* rows (event=ELIT in details_url) and 79 rows with no valid half and finish
|
|
21
|
+
* time pair (the finish is blank or not after halfway), leaving 38,860 mass
|
|
22
|
+
* finishers. Rows for 2015 to 2018 are one field short (no club value), so the
|
|
23
|
+
* finish time sits in the column headed time_half and the half-way time in the
|
|
24
|
+
* one headed division; the time_full column is empty on every such row. Each
|
|
25
|
+
* finish time is floored to whole minutes and counted in [x0, x1) five-minute
|
|
26
|
+
* bins from 150 to 420 minutes. 72 finishers under 2:30 and 442 at 7:00
|
|
27
|
+
* or later fall outside the window and are not drawn, so the 54 bins hold
|
|
28
|
+
* 38,346. Runners tied on place stay as separate records (each has its own id).
|
|
29
|
+
* Cross-check: https://www.race-insight.com/en/results/london-marathon-2016
|
|
30
|
+
* (fetched 2026-10-15) lists 38,983 participants, the same as the file's 38,983 rows.
|
|
31
|
+
*/
|
|
32
|
+
export declare const rungHistogramDemo: HistBin[];
|
|
33
|
+
/** Where the cumulative count crosses half, interpolated inside its bin. */
|
|
34
|
+
export declare const binMedian: (bins: readonly HistBin[]) => number;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { NoteProps } from "../../schema/options.js";
|
|
2
|
+
import type { WaterfallDatum } from "./rung-waterfall.data.js";
|
|
3
|
+
interface RungWaterfallProps extends NoteProps {
|
|
4
|
+
data?: WaterfallDatum[];
|
|
5
|
+
/** Units per rung. */
|
|
6
|
+
unit?: number;
|
|
7
|
+
height?: number;
|
|
8
|
+
format?: (v: number) => string;
|
|
9
|
+
/** Index drawn in the hero colour. */
|
|
10
|
+
highlight?: number;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* F9 Waterfall. Gross to net as floating blocks of 2px rungs at one pitch:
|
|
14
|
+
* totals stand on the floor, steps float at the running level, deductions are
|
|
15
|
+
* broken (beaded) rungs. Solid hairline connectors carry the level across;
|
|
16
|
+
* the closing total is in ink.
|
|
17
|
+
*/
|
|
18
|
+
export declare const RungWaterfall: (props: RungWaterfallProps) => import("react").JSX.Element;
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/** A step adds or removes `value`; a total draws the running level from the floor (its `value` is optional). */
|
|
2
|
+
export interface WaterfallDatum {
|
|
3
|
+
label: string;
|
|
4
|
+
total?: boolean;
|
|
5
|
+
value?: number;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* F9 Where carbon goes. The world's carbon dioxide in an average year of
|
|
9
|
+
* 2015 to 2024, in billions of tonnes of CO2: what fossil fuels and land use
|
|
10
|
+
* emit (40.9), what the ocean and plants take back up, and what is left in
|
|
11
|
+
* the air (20.4), about half.
|
|
12
|
+
*
|
|
13
|
+
* Source: Global Carbon Project, Global Carbon Budget 2025 (Friedlingstein et
|
|
14
|
+
* al., 2025, Earth System Science Data), Global_Carbon_Budget_2025v1.0.xlsx,
|
|
15
|
+
* sheet "Global Carbon Budget". Freely available; cite the Global Carbon
|
|
16
|
+
* Budget 2025 (ICOS licence CC BY 4.0).
|
|
17
|
+
* https://globalcarbonbudget.org/datahub/the-latest-gcb-data-2025/
|
|
18
|
+
* https://doi.org/10.18160/GCP-2025
|
|
19
|
+
* Fetched 2026-10-16.
|
|
20
|
+
*
|
|
21
|
+
* Transform: mean of the ten years 2015 to 2024 for each column, in GtC.
|
|
22
|
+
* Fossil is "fossil emissions excluding carbonation" less "cement
|
|
23
|
+
* carbonation sink" (10.012 - 0.210 = 9.802), as the budget's headline
|
|
24
|
+
* fossil figure is net of carbonation; land use is "land-use change
|
|
25
|
+
* emissions" (1.372); ocean and plants are "ocean sink" (3.221) and "land
|
|
26
|
+
* sink" (2.363). Each is multiplied by 3.664 to give GtCO2, as the sheet
|
|
27
|
+
* directs, and rounded to 0.1 so the totals add up as shown: 35.9, 5.0,
|
|
28
|
+
* 11.8 and 8.7. The closing total is the level reached, 20.4, as is measured
|
|
29
|
+
* "atmospheric growth" (20.42); the budget imbalance (0.06) is left out. Scripts: reference/scripts/F9-gcb/sheet.py and budget.py.
|
|
30
|
+
*/
|
|
31
|
+
export declare const rungWaterfallDemo: WaterfallDatum[];
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
interface RungsProps {
|
|
2
|
+
/** Class for every `every`th rung, so a stack counts off ("" for none). */
|
|
3
|
+
accent?: string;
|
|
4
|
+
/** Accent rhythm in rungs; 5 by default. */
|
|
5
|
+
every?: number;
|
|
6
|
+
className: string;
|
|
7
|
+
/** Pattern fill (`url(#id)`) for the rungs themselves, e.g. a dotted rung. */
|
|
8
|
+
fill?: string;
|
|
9
|
+
floor: number;
|
|
10
|
+
/** Rungs already stacked below this run (stacks and waterfalls). */
|
|
11
|
+
from?: number;
|
|
12
|
+
id: string;
|
|
13
|
+
left: number;
|
|
14
|
+
n: number;
|
|
15
|
+
/** Entry-stagger slot of the lowest rung. */
|
|
16
|
+
order?: number;
|
|
17
|
+
pitch: number;
|
|
18
|
+
/** Whole px an accent rung reaches past the run on each side; 0 by default. */
|
|
19
|
+
reach?: number;
|
|
20
|
+
width: number;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* A run of `n` countable rungs standing on `floor`, one per unit: solid 2px
|
|
24
|
+
* bars at one whole-pixel pitch. Every fifth (or `every`th) rung can step
|
|
25
|
+
* darker, and reach a little wider, like the long marks on a rule.
|
|
26
|
+
*/
|
|
27
|
+
export declare const Rungs: (props: RungsProps) => import("react").JSX.Element;
|
|
28
|
+
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/** One key entry: a swatch (pattern fill or solid tone) and its name. */
|
|
2
|
+
export interface KeyItem {
|
|
3
|
+
/** Pattern fill (`paint(id)`) for a textured swatch. */
|
|
4
|
+
fill?: string;
|
|
5
|
+
name: string;
|
|
6
|
+
/** Fill class for a solid swatch, e.g. "fill-hero". */
|
|
7
|
+
tone?: string;
|
|
8
|
+
}
|
|
9
|
+
interface SeriesKeyProps {
|
|
10
|
+
/** Which edge `x` is: the row's left edge (default) or its right edge. */
|
|
11
|
+
align?: "end" | "start";
|
|
12
|
+
items: readonly KeyItem[];
|
|
13
|
+
x: number;
|
|
14
|
+
/** Baseline of the names; swatches centre on their x-height. */
|
|
15
|
+
y: number;
|
|
16
|
+
}
|
|
17
|
+
/** A one-row key: 12px swatches, each named in the note voice. */
|
|
18
|
+
export declare const SeriesKey: (props: SeriesKeyProps) => import("react").JSX.Element;
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { NoteProps } from "../../schema/options.js";
|
|
2
|
+
import type { StackDatum } from "./stacked-rungs.data.js";
|
|
3
|
+
interface StackedRungsProps extends NoteProps {
|
|
4
|
+
data?: StackDatum[];
|
|
5
|
+
/** Series names, bottom (darkest) first. At most three. */
|
|
6
|
+
series?: string[];
|
|
7
|
+
/** Units per rung. */
|
|
8
|
+
unit?: number;
|
|
9
|
+
height?: number;
|
|
10
|
+
format?: (v: number) => string;
|
|
11
|
+
/** Index of the category whose bottom segment is drawn in the hero colour. */
|
|
12
|
+
highlight?: number;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* F7 Stacked counts. Each category is one stack of 2px rungs split into up to
|
|
16
|
+
* three engravings (dark rungs, light rungs, beaded rungs) with a one-rung gap
|
|
17
|
+
* between segments. The leader's bottom segment is in ink. Segment counts sit beside the stack, the total on top.
|
|
18
|
+
*/
|
|
19
|
+
export declare const StackedRungs: (props: StackedRungsProps) => import("react").JSX.Element;
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/** One category split into up to three parts, bottom part first. */
|
|
2
|
+
export interface StackDatum {
|
|
3
|
+
label: string;
|
|
4
|
+
parts: number[];
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* F7 Medals by Games. Great Britain's gold, silver and bronze medals at the
|
|
8
|
+
* last four Summer Olympics. Totals: London 65, Rio 67, Tokyo 64, Paris 65.
|
|
9
|
+
*
|
|
10
|
+
* Source: the medal counts in the infobox of the Wikipedia article for each
|
|
11
|
+
* Games (text available under CC BY-SA 4.0), which cite the IOC and BBC Sport
|
|
12
|
+
* medal tables.
|
|
13
|
+
* https://en.wikipedia.org/wiki/Great_Britain_at_the_2012_Summer_Olympics
|
|
14
|
+
* https://en.wikipedia.org/wiki/Great_Britain_at_the_2016_Summer_Olympics
|
|
15
|
+
* https://en.wikipedia.org/wiki/Great_Britain_at_the_2020_Summer_Olympics
|
|
16
|
+
* https://en.wikipedia.org/wiki/Great_Britain_at_the_2024_Summer_Olympics
|
|
17
|
+
* Fetched 2026-10-15 (wikitext via action=raw).
|
|
18
|
+
*
|
|
19
|
+
* Transform: the gold, silver and bronze fields of each infobox, unchanged.
|
|
20
|
+
* London 2012 is the count after the later reallocation of a men's high jump
|
|
21
|
+
* medal (29 gold, 18 silver, 18 bronze; the original count was 17 silver and
|
|
22
|
+
* 19 bronze, as the article text says). Scripts: reference/scripts/F7/gen.py.
|
|
23
|
+
*/
|
|
24
|
+
export declare const stackedRungsDemo: StackDatum[];
|
|
25
|
+
/** Series names for the demo, bottom (darkest) first. */
|
|
26
|
+
export declare const stackedRungsSeries: string[];
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { NoteProps } from "../../schema/options.js";
|
|
2
|
+
import type { StreamData } from "./stream-ribbon.data.js";
|
|
3
|
+
interface StreamRibbonProps extends NoteProps {
|
|
4
|
+
data?: StreamData;
|
|
5
|
+
format?: (v: number) => string;
|
|
6
|
+
height?: number;
|
|
7
|
+
/** Each date stands for a whole year (dated 1 January): ticks, tooltips and the description say years, not periods. */
|
|
8
|
+
yearly?: boolean;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* F16 Streamgraph. Composition over continuous time as a wiggle-centred
|
|
12
|
+
* stream: band width = each series, the river's width = the total. Every
|
|
13
|
+
* band is engraved on paper inside a 1px rule; today's leader is crosshatched
|
|
14
|
+
* in ink under a 2px ink top edge. Sized
|
|
15
|
+
* for a half cell, the river fills the height; the latest total sits at its
|
|
16
|
+
* mouth.
|
|
17
|
+
*/
|
|
18
|
+
export declare const StreamRibbon: (props: StreamRibbonProps) => import("react").JSX.Element;
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export interface StreamSeries {
|
|
2
|
+
name: string;
|
|
3
|
+
values: number[];
|
|
4
|
+
}
|
|
5
|
+
/** Series are listed bottom to top; every series has one value per date. */
|
|
6
|
+
export interface StreamData {
|
|
7
|
+
dates: Date[];
|
|
8
|
+
series: StreamSeries[];
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* F16 Runs by source. Where the runs came from in the Indian Premier League,
|
|
12
|
+
* each year from 2008 to 2026: running between the wickets, fours, sixes and
|
|
13
|
+
* extras, in the first two innings of every match (1243 matches). Sixes
|
|
14
|
+
* grew from 3,738 runs in 2008 to 8,556 in 2026.
|
|
15
|
+
*
|
|
16
|
+
* Source: Cricsheet, Indian Premier League ball-by-ball data, CSV format
|
|
17
|
+
* (ipl_csv2.zip; Open Data Commons Attribution License v1.0, credit Cricsheet).
|
|
18
|
+
* https://cricsheet.org/downloads/
|
|
19
|
+
* https://cricsheet.org/downloads/ipl_csv2.zip
|
|
20
|
+
* Fetched 2026-10-15.
|
|
21
|
+
*
|
|
22
|
+
* Transform: for every match file (all_matches.csv, which repeats every match, is skipped), every delivery in innings 1 and 2 (super overs left out),
|
|
23
|
+
* group by the year of start_date. A delivery with runs_off_bat of 4 or 6 that
|
|
24
|
+
* is not flagged non_boundary counts its runs to Fours or Sixes; every other
|
|
25
|
+
* run off the bat counts to Running; the extras column (wides, no-balls, byes,
|
|
26
|
+
* leg byes, penalties) counts to Extras. Each year is dated 1 January in the
|
|
27
|
+
* chart, a placeholder for the season. Scripts: reference/scripts/F16/gen.py.
|
|
28
|
+
*/
|
|
29
|
+
export declare const streamRibbonDemo: StreamData;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { NoteProps } from "../../schema/options.js";
|
|
2
|
+
import type { BoxDatum } from "./tick-box.data.js";
|
|
3
|
+
interface TickBoxProps extends NoteProps {
|
|
4
|
+
data?: BoxDatum[];
|
|
5
|
+
/** "low" (default) puts the lowest median in ink; "high" the highest. */
|
|
6
|
+
darkest?: "high" | "low";
|
|
7
|
+
format?: (v: number) => string;
|
|
8
|
+
height?: number;
|
|
9
|
+
/** Axis ticks; defaults to five even steps. */
|
|
10
|
+
ticks?: number[];
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* F15 Box plot. The box is the middle half, diagonal hatch on paper inside a
|
|
14
|
+
* 1px rule; a 2px rung marks the median, whiskers and caps are
|
|
15
|
+
* hairlines, outliers are hollow. The lowest median (or highest, with
|
|
16
|
+
* `darkest`) is crosshatched in ink, its median an ink rung in a paper gutter.
|
|
17
|
+
*/
|
|
18
|
+
export declare const TickBox: (props: TickBoxProps) => import("react").JSX.Element;
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/** A five-number summary plus the points beyond the whiskers. */
|
|
2
|
+
export interface BoxDatum {
|
|
3
|
+
label: string;
|
|
4
|
+
max: number;
|
|
5
|
+
median: number;
|
|
6
|
+
min: number;
|
|
7
|
+
outliers?: number[];
|
|
8
|
+
q1: number;
|
|
9
|
+
q3: number;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* F15 Sunshine by season. Hours of bright sunshine in each month recorded at
|
|
13
|
+
* Oxford (Radcliffe Observatory), grouped by season: spring is March to May,
|
|
14
|
+
* summer June to August, autumn September to November, winter December to
|
|
15
|
+
* February. 1173 monthly readings, from 1929 to 2026-09.
|
|
16
|
+
*
|
|
17
|
+
* Source: Met Office historic station data, Oxford, monthly (Open Government
|
|
18
|
+
* Licence v3.0). Sunshine comes from a Campbell Stokes recorder, and from an
|
|
19
|
+
* automatic Kipp & Zonen sensor in later years, as the file's header explains.
|
|
20
|
+
* https://www.metoffice.gov.uk/research/climate/maps-and-data/historic-station-data
|
|
21
|
+
* https://www.metoffice.gov.uk/pub/data/weather/uk/climate/stationdata/oxforddata.txt
|
|
22
|
+
* Fetched 2026-10-15.
|
|
23
|
+
*
|
|
24
|
+
* Transform: take the "sun" column, drop months marked missing (---), strip the
|
|
25
|
+
* estimate (*) and sensor (#) marks, and group the months by season. For each
|
|
26
|
+
* season: quartiles by linear interpolation, the whiskers at the lowest and
|
|
27
|
+
* highest reading within 1.5 times the interquartile range of the box, and the
|
|
28
|
+
* readings beyond them listed as outliers. Scripts: reference/scripts/F11/gen.py.
|
|
29
|
+
*/
|
|
30
|
+
export declare const tickBoxDemo: BoxDatum[];
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { NoteProps } from "../../schema/options.js";
|
|
2
|
+
import type { ShareDatum } from "./tick-donut.data.js";
|
|
3
|
+
interface TickDonutProps extends NoteProps {
|
|
4
|
+
data?: ShareDatum[];
|
|
5
|
+
height?: number;
|
|
6
|
+
format?: (v: number) => string;
|
|
7
|
+
/** Big centre number and the caption under it. Defaults to the total over "total". */
|
|
8
|
+
center?: {
|
|
9
|
+
caption: string;
|
|
10
|
+
value: string;
|
|
11
|
+
};
|
|
12
|
+
/** Index of the source to draw in the hero colour. */
|
|
13
|
+
highlight?: number;
|
|
14
|
+
/** What the total counts, captioned under it, e.g. "a year". */
|
|
15
|
+
unit?: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* F4 Share ring. A dial of 100 radial 2px rungs, one per percent, read
|
|
19
|
+
* clockwise from twelve o'clock, every tenth a little longer, inside an
|
|
20
|
+
* evenly dotted ring. The largest source is in ink, the rest one grey each;
|
|
21
|
+
* the total sits in the middle, every source named outside the rim.
|
|
22
|
+
*/
|
|
23
|
+
export declare const TickDonut: (props: TickDonutProps) => import("react").JSX.Element;
|
|
24
|
+
export {};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/** One part of a whole. */
|
|
2
|
+
export interface ShareDatum {
|
|
3
|
+
label: string;
|
|
4
|
+
value: number;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* F4 Where the bill goes. What the energy price cap allows for in a typical
|
|
8
|
+
* annual dual fuel bill paid by Direct Debit, 1 October to 31 December 2025:
|
|
9
|
+
* pounds a year, £1,755 in all.
|
|
10
|
+
*
|
|
11
|
+
* Source: Ofgem, "Energy price cap (default tariff) update from 1 October 2025",
|
|
12
|
+
* letter of 27 August 2025, Annex 1 "Direct Debit Price Cap Cost Breakdown"
|
|
13
|
+
* (a UK regulator's published letter), cap period 15a, typical domestic consumption
|
|
14
|
+
* at medium level.
|
|
15
|
+
* https://www.ofgem.gov.uk/sites/default/files/2025-08/summary-of-changes-to-energy-price-cap-1-october-to-31-december-2025.pdf
|
|
16
|
+
* Fetched 2026-10-15.
|
|
17
|
+
*
|
|
18
|
+
* Transform: wholesale (including contracts for difference) 720, networks
|
|
19
|
+
* 396, operating, debt and industry costs 270, policy 215 and VAT 84 are the
|
|
20
|
+
* October to December column as printed. "Other" adds the earnings before
|
|
21
|
+
* interest and tax allowance (42), headroom (18) and levelisation
|
|
22
|
+
* allowance (10): 70. The six parts add to 1755, the printed total.
|
|
23
|
+
* Scripts: reference/scripts/F4/gen.py.
|
|
24
|
+
*/
|
|
25
|
+
export declare const tickDonutDemo: ShareDatum[];
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { NoteProps } from "../../schema/options.js";
|
|
2
|
+
import type { TickGaugeDatum } from "./tick-gauge.data.js";
|
|
3
|
+
interface TickGaugeProps extends NoteProps {
|
|
4
|
+
/** Line under the big number; receives the ticks still to come. Defaults to the amount to come. */
|
|
5
|
+
caption?: (remaining: number) => string;
|
|
6
|
+
data?: TickGaugeDatum;
|
|
7
|
+
/** Formats the raw value and target for the tooltip. */
|
|
8
|
+
format?: (v: number) => string;
|
|
9
|
+
height?: number;
|
|
10
|
+
/** Total sweep of the dial in degrees, centred on 12 o'clock. */
|
|
11
|
+
sweep?: number;
|
|
12
|
+
/** How many ticks make the full dial. */
|
|
13
|
+
ticks?: number;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* F11 Progress dial. Progress toward a target as a dial of 2px rungs, one per
|
|
17
|
+
* percent: earned rungs in one mid grey, the rung at the current value in
|
|
18
|
+
* ink, the rest pale, inside an evenly dotted arc.
|
|
19
|
+
* The big number says it plainly.
|
|
20
|
+
*/
|
|
21
|
+
export declare const TickGauge: (props: TickGaugeProps) => import("react").JSX.Element;
|
|
22
|
+
export {};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/** Progress toward a target, in any unit. */
|
|
2
|
+
export interface TickGaugeDatum {
|
|
3
|
+
target: number;
|
|
4
|
+
value: number;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* F11 Rain so far. Rain recorded at Oxford (Radcliffe Observatory) from January
|
|
8
|
+
* to September 2026, in millimetres (242.6), against the average annual total
|
|
9
|
+
* for 1991 to 2020 (681.4). Months from January 2026 are provisional and
|
|
10
|
+
* many readings are marked as estimates in the file.
|
|
11
|
+
*
|
|
12
|
+
* Source: Met Office historic station data, Oxford, monthly (Open Government
|
|
13
|
+
* Licence v3.0). Station at 51.761 N, 1.262 W, 63 m.
|
|
14
|
+
* https://www.metoffice.gov.uk/research/climate/maps-and-data/historic-station-data
|
|
15
|
+
* https://www.metoffice.gov.uk/pub/data/weather/uk/climate/stationdata/oxforddata.txt
|
|
16
|
+
* Fetched 2026-10-15.
|
|
17
|
+
*
|
|
18
|
+
* Transform: value = the sum of the "rain" column for the 9 months of 2026 in
|
|
19
|
+
* the file (January to month 9). target = the mean over 1991 to 2020 of each
|
|
20
|
+
* year's sum of the 12 monthly "rain" values (all 360 months present), computed
|
|
21
|
+
* here rather than quoted from a Met Office average. Asterisks marking estimates
|
|
22
|
+
* are ignored. Scripts: reference/scripts/F11/gen.py.
|
|
23
|
+
*/
|
|
24
|
+
export declare const tickGaugeDemo: TickGaugeDatum;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { NoteProps } from "../../schema/options.js";
|
|
2
|
+
import type { CountDatum } from "./tick-rows.data.js";
|
|
3
|
+
interface TickRowsProps extends NoteProps {
|
|
4
|
+
data?: CountDatum[];
|
|
5
|
+
/** Units per tick. */
|
|
6
|
+
unit?: number;
|
|
7
|
+
height?: number;
|
|
8
|
+
format?: (v: number) => string;
|
|
9
|
+
/** Index of the row drawn in the hero colour. */
|
|
10
|
+
highlight?: number;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* F5 Count rows. Each row is a queue of countable 2px rungs at one pitch, one
|
|
14
|
+
* per unit, bundled in fives with one empty slot between bundles, like a
|
|
15
|
+
* tally, on a faint track with the count at the end. The leading row is ink.
|
|
16
|
+
*/
|
|
17
|
+
export declare const TickRows: (props: TickRowsProps) => import("react").JSX.Element;
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/** A labelled count. */
|
|
2
|
+
export interface CountDatum {
|
|
3
|
+
label: string;
|
|
4
|
+
value: number;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* F5 Birds counted. Total birds of each species counted in the UK's gardens in
|
|
8
|
+
* the 2026 Big Garden Birdwatch, the six most seen: the house
|
|
9
|
+
* sparrow (1,275,378) heads the list, ahead of the blue tit (1,114,620).
|
|
10
|
+
*
|
|
11
|
+
* Source: RSPB, Big Garden Birdwatch results page and its data file
|
|
12
|
+
* bgbw_results_2022_2026_en.json (version 2026-03-12), UK leaderboard for 2026.
|
|
13
|
+
* https://www.rspb.org.uk/whats-happening/big-garden-birdwatch/results
|
|
14
|
+
* https://base-prod.rspb-prod.magnolia-platform.com/dam/jcr:a3238936-23e0-4b99-a88a-6838d0f0c9b2/bgbw_results_2022_2026_en.json
|
|
15
|
+
* Fetched 2026-10-15. The RSPB states no reuse licence on the page; the counts
|
|
16
|
+
* are published facts and are credited here.
|
|
17
|
+
*
|
|
18
|
+
* Transform: the first six species of years[2026].countries["UK"].species, in
|
|
19
|
+
* the order given (already by count, largest first), with the first letter of
|
|
20
|
+
* each name capitalised and the rest lower case. Counts are as published.
|
|
21
|
+
* Scripts: reference/scripts/F5/gen.py.
|
|
22
|
+
*/
|
|
23
|
+
export declare const tickRowsDemo: CountDatum[];
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { FontMetrics } from "../../schema/metrics.js";
|
|
2
|
+
/** Saturday or Sunday, in UTC. */
|
|
3
|
+
export declare const isWeekend: (d: Date) => boolean;
|
|
4
|
+
export declare const fmtMonthDay: (d: Date) => string;
|
|
5
|
+
/** UTC midnight `n` days after `start` (ISO date string). */
|
|
6
|
+
export declare const dayAfter: (start: string, n: number) => Date;
|
|
7
|
+
/** Room a right-hand value scale needs past the last datum, in px. */
|
|
8
|
+
export declare const VALUE_AXIS_ROOM = 48;
|
|
9
|
+
/** The baseline of a daily chart: above the axis labels and any wrapped note. */
|
|
10
|
+
export declare const dailyFloor: (height: number, note: string | undefined, width: number, metrics?: FontMetrics) => number;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { FontMetrics } from "../../schema/metrics.js";
|
|
2
|
+
/** Point on a circle, angle in radians measured clockwise from 12 o'clock. */
|
|
3
|
+
export declare const polar: (cx: number, cy: number, r: number, a: number) => {
|
|
4
|
+
x: number;
|
|
5
|
+
y: number;
|
|
6
|
+
};
|
|
7
|
+
/** Index of the largest value (first one wins ties). */
|
|
8
|
+
export declare const maxIndex: (values: readonly number[]) => number;
|
|
9
|
+
/**
|
|
10
|
+
* Ink width of a string in the 11px sans roles, for centring a composition:
|
|
11
|
+
* digits are tabular (0.65em), the rest is `sansWidth` less its safety margin.
|
|
12
|
+
*/
|
|
13
|
+
export declare const inkWidth: (text: string, metrics?: FontMetrics) => number;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { NoteProps } from "../../schema/options.js";
|
|
2
|
+
import type { RingData } from "./circular-graph.data.js";
|
|
3
|
+
interface CircularGraphProps extends NoteProps {
|
|
4
|
+
data?: RingData;
|
|
5
|
+
format?: (v: number) => string;
|
|
6
|
+
height?: number;
|
|
7
|
+
/** Node id(s) labelled at rest; defaults to the two largest of each group. */
|
|
8
|
+
highlight?: string | string[];
|
|
9
|
+
/** Word after the neighbour count in the tooltip, e.g. "borders shown". */
|
|
10
|
+
linkUnit?: string;
|
|
11
|
+
/** Unit after a node's size in the tooltip. */
|
|
12
|
+
sizeUnit?: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* B1 Land borders (big). Countries sit on a ring grouped by continent, dot area =
|
|
16
|
+
* land neighbours; links curve inside the ring like chords. Hover a node to light up its
|
|
17
|
+
* neighbours; click anywhere to replay the entry.
|
|
18
|
+
*/
|
|
19
|
+
export declare const CircularGraph: (props: CircularGraphProps) => import("react").JSX.Element;
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* B1 Land borders: the countries with five or more land neighbours, round a
|
|
3
|
+
* ring by continent, linked by the length of border they share.
|
|
4
|
+
* Source: CIA, The World Factbook, country profiles, Geography, "Land
|
|
5
|
+
* boundaries: border countries" (public domain). The CIA took the Factbook
|
|
6
|
+
* offline in February 2026; the profiles were fetched on 2026-10-15 from the
|
|
7
|
+
* factbook.json mirror, https://github.com/factbook/factbook.json (one JSON
|
|
8
|
+
* file per country, a verbatim copy of the profile text), 252 files.
|
|
9
|
+
* Transform: each "Name 1,234 km" entry in a profile's border list is one
|
|
10
|
+
* reported length; entries for the same neighbour are summed (China-Russia is
|
|
11
|
+
* 4,133 + 46 km). Territories and dependencies are left out (French Guiana,
|
|
12
|
+
* Gaza Strip, West Bank, Gibraltar, Hong Kong, Macau, Western Sahara, Saint
|
|
13
|
+
* Martin, Sint Maarten, the Guantanamo Bay base, Akrotiri and Dhekelia,
|
|
14
|
+
* Greenland); so is the European Union's profile. Where both countries report
|
|
15
|
+
* the border and differ (Israel-Jordan 327 and 307, Germany-Poland 447 and
|
|
16
|
+
* 467, Mexico-United States 3,155 and 3,111) the larger is kept; one pair is
|
|
17
|
+
* reported by one side only (Denmark's profile lists Canada, 1.3 km, a pair
|
|
18
|
+
* outside the countries shown). 156
|
|
19
|
+
* countries have a land border; the 57 with five or more neighbours are
|
|
20
|
+
* shown, with 105 borders among them. A node's size is its number of land
|
|
21
|
+
* neighbours counting the countries not shown. Continent is assigned by hand
|
|
22
|
+
* (Russia in Europe; Turkey, Azerbaijan and Kazakhstan in Asia; the Middle
|
|
23
|
+
* East, Central, South and East Asia together as Asia).
|
|
24
|
+
* Names are the Factbook's short forms; the Central African Republic's is
|
|
25
|
+
* missing there and is written out, and "Cote d'Ivoire" takes its accent.
|
|
26
|
+
*/
|
|
27
|
+
export interface RingNode {
|
|
28
|
+
/** Group the node belongs to; groups sit together on the ring. */
|
|
29
|
+
group: string;
|
|
30
|
+
/** Unique id, also the label, e.g. "Germany". */
|
|
31
|
+
id: string;
|
|
32
|
+
/** Size measure (land neighbours); drives the dot area. */
|
|
33
|
+
size: number;
|
|
34
|
+
}
|
|
35
|
+
export interface RingLink {
|
|
36
|
+
source: string;
|
|
37
|
+
target: string;
|
|
38
|
+
/** Length of the border the two countries share, in km. */
|
|
39
|
+
weight: number;
|
|
40
|
+
}
|
|
41
|
+
export interface RingData {
|
|
42
|
+
links: RingLink[];
|
|
43
|
+
nodes: RingNode[];
|
|
44
|
+
}
|
|
45
|
+
/** The 57 countries with five or more land neighbours; a link is the length of border they share. */
|
|
46
|
+
export declare const circularGraphDemo: RingData;
|