import { T as TestCase, D as DateFormat } from '../types-BxXRrWRl.js'; export { b as buildMetadata, i as inferType, m as makeEncodingItem, a as makeField } from '../types-BxXRrWRl.js'; import { c as ChartAssemblyInput } from '../types-DHaPWLqG.js'; /** * Synthetic data generators for chart gallery test cases. * Pure utility functions — no React/UI dependencies. */ /** Seeded random for reproducibility */ declare function seededRandom(seed: number): () => number; /** Generate an array of sequential dates */ declare function genDates(n: number, startYear?: number): string[]; /** Generate month names */ declare function genMonths(n: number): string[]; /** Generate year values */ declare function genYears(n: number, start?: number): number[]; /** Generate natural-looking date strings like "Jun 12 1998" */ declare function genNaturalDates(n: number, startYear?: number): string[]; /** Generate category names by semantic type */ declare function genCategories(semanticType: string, n: number): string[]; /** Generate n random unique names (first + last) for very large discrete tests */ declare function genRandomNames(n: number, seed?: number): string[]; /** Generate random numeric measure values */ declare function genMeasure(n: number, min?: number, max?: number, integers?: boolean): number[]; declare function genScatterTests(): TestCase[]; declare function genRegressionTests(): TestCase[]; declare function genBarTests(): TestCase[]; declare function genStackedBarTests(): TestCase[]; declare function genGroupedBarTests(): TestCase[]; declare function genHistogramTests(): TestCase[]; declare function genBoxplotTests(): TestCase[]; declare function genDensityTests(): TestCase[]; declare function genStripPlotTests(): TestCase[]; declare function genDensityContourTests(): TestCase[]; declare function genViolinTests(): TestCase[]; declare function genLineTests(): TestCase[]; declare function genSparklineTests(): TestCase[]; declare function genBumpChartTests(): TestCase[]; declare function genSlopeTests(): TestCase[]; /** * ECharts wall variants — color-grouped slopegraphs (basic, temporal crossings, * zero-crossing). Reuses the canonical cases that translate cleanly to the * series-based ECharts backend. */ declare function genEChartsSlopeTests(): TestCase[]; /** * Chart.js wall variants — color-grouped slopegraphs. Chart.js builds one * dataset per category, so the color-grouped cases are the representative set. */ declare function genChartJsSlopeTests(): TestCase[]; declare function genConnectedScatterTests(): TestCase[]; /** * ECharts wall variants — basic single trajectory, multi-series color, temporal * order, and the self-crossing loop. These translate cleanly to the * series-based ECharts backend. */ declare function genEChartsConnectedScatterTests(): TestCase[]; /** * Chart.js wall variants — basic single trajectory, multi-series color, the * self-crossing loop, and the index-order multi-series case. Chart.js builds one * dataset per trajectory, so the single and color-grouped cases are the * representative set. */ declare function genChartJsConnectedScatterTests(): TestCase[]; declare function genAreaTests(): TestCase[]; declare function genStreamgraphTests(): TestCase[]; declare function genRangeAreaTests(): TestCase[]; /** * ECharts wall variants — the cases that translate cleanly to the stacked * transparent-base + translucent-delta band on a category x-axis (basic single * band, two overlapping color bands, a zero-crossing band). */ declare function genEChartsRangeAreaTests(): TestCase[]; /** * Chart.js wall variants — bands built from a lower + upper line dataset pair * (single band, two overlapping color bands, a numeric-x confidence band, an * ordinal-x quarterly band). */ declare function genChartJsRangeAreaTests(): TestCase[]; declare function genEcdfTests(): TestCase[]; /** * ECharts wall variants — the cases that read cleanly as one stepped line per * group on a value x-axis (basic single curve, two/three shifted color groups, * a small-n chunky curve, and the negatives case). */ declare function genEChartsEcdfTests(): TestCase[]; /** * Chart.js wall variants — one stepped line dataset per group on a linear * x-axis (basic single curve, two shifted color groups, a skewed curve, and a * smooth large-n curve). */ declare function genChartJsEcdfTests(): TestCase[]; declare function genHeatmapTests(): TestCase[]; declare function genPieTests(): TestCase[]; declare function genRangedDotPlotTests(): TestCase[]; declare function genLollipopTests(): TestCase[]; declare function genWaterfallTests(): TestCase[]; declare function genBarTableTests(): TestCase[]; declare function genCandlestickTests(): TestCase[]; declare function genRadarTests(): TestCase[]; declare function genPyramidTests(): TestCase[]; declare function genRoseTests(): TestCase[]; /** Facet cardinality sizes */ declare const FACET_SIZES: { readonly S: 2; readonly M: 4; readonly L: 8; readonly XL: 12; }; /** Discrete axis cardinality sizes */ declare const DISCRETE_SIZES: { readonly S: 4; readonly M: 8; readonly L: 20; readonly XL: 50; }; declare function genFacetColumnTests(): TestCase[]; declare function genFacetRowTests(): TestCase[]; declare function genFacetColRowTests(): TestCase[]; /** * 1. Small facet counts — columns only, rows only, and col×row. * Should render comfortably without wrapping or clipping. */ declare function genFacetSmallTests(): TestCase[]; /** * 2. Larger column counts that require horizontal wrapping. * 6-8 columns should exceed the default ~400px subplot width. */ declare function genFacetWrapTests(): TestCase[]; /** * 3. Large col×row grids that require clipping/scrolling. * Many panels stress the layout engine. */ declare function genFacetClipTests(): TestCase[]; /** * Overflowed Column facets — enough column facet values that the layout * must clip/wrap, combined with discrete (banded) or continuous axes. * * Tests that computeFacetGrid correctly caps and wraps column-only facets. */ declare function genFacetOverflowedColTests(): TestCase[]; /** * Overflowed Column + Row facets — both dimensions exceed comfortable * capacity, requiring independent capping on each axis. * * With canvas 400×300 and minSubplotSize 60: * - 20 bars → minSubplotWidth = max(60, 20×6) = 120 → maxFacetCols = floor(600/120) = 5 * - continuous y → minSubplotHeight = 60 → maxFacetRows = floor(450/60) = 7 * So 8 cols clips to 5, 10 rows clips to 7. */ declare function genFacetOverflowedColRowTests(): TestCase[]; /** * Overflowed Row facets — enough row facet values that the layout * must clip vertically. */ declare function genFacetOverflowedRowTests(): TestCase[]; /** * Dense Line + Facet tests — many overlapping color series within each * facet panel. Tests layout, legend, and readability when both the * number of lines per panel and the number of facet columns are high. * * Covers 3, 4, 5, and 6 column facets with 8 color series each. */ declare function genFacetDenseLineTests(): TestCase[]; declare function genOverflowTests(): TestCase[]; declare function genElasticityTests(): TestCase[]; /** * Generate the 3×3 gas-pressure test matrix. * Row = density (sparse / dense / very dense) * Column = distribution (uniform / single cluster / two clusters) */ declare function genGasPressureTests(): TestCase[]; declare function genLineAreaStretchTests(): TestCase[]; declare function genEChartsScatterTests(): TestCase[]; declare function genEChartsLineTests(): TestCase[]; declare function genEChartsBarTests(): TestCase[]; declare function genEChartsStackedBarTests(): TestCase[]; declare function genEChartsGroupedBarTests(): TestCase[]; declare function genEChartsStressTests(): TestCase[]; declare function genEChartsAreaTests(): TestCase[]; declare function genEChartsPieTests(): TestCase[]; declare function genEChartsHeatmapTests(): TestCase[]; declare function genEChartsHistogramTests(): TestCase[]; declare function genEChartsBoxplotTests(): TestCase[]; declare function genEChartsRadarTests(): TestCase[]; declare function genEChartsCandlestickTests(): TestCase[]; declare function genEChartsStreamgraphTests(): TestCase[]; /** Small facet counts — columns, rows, col×row */ declare function genEChartsFacetSmallTests(): TestCase[]; /** Larger column counts that require horizontal wrapping */ declare function genEChartsFacetWrapTests(): TestCase[]; /** Large col×row grids requiring clipping */ declare function genEChartsFacetClipTests(): TestCase[]; declare function genEChartsRoseTests(): TestCase[]; declare function genEChartsGaugeTests(): TestCase[]; declare function genEChartsFunnelTests(): TestCase[]; declare function genEChartsTreemapTests(): TestCase[]; declare function genEChartsSunburstTests(): TestCase[]; declare function genEChartsSankeyTests(): TestCase[]; declare function genEChartsUniqueStressTests(): TestCase[]; declare function genEChartsCalendarTests(): TestCase[]; declare function genEChartsParallelTests(): TestCase[]; declare function genEChartsGraphTests(): TestCase[]; declare function genEChartsTreeTests(): TestCase[]; declare function genChartJsScatterTests(): TestCase[]; declare function genChartJsLineTests(): TestCase[]; declare function genChartJsBarTests(): TestCase[]; declare function genChartJsStackedBarTests(): TestCase[]; declare function genChartJsGroupedBarTests(): TestCase[]; declare function genChartJsAreaTests(): TestCase[]; declare function genChartJsPieTests(): TestCase[]; declare function genChartJsHistogramTests(): TestCase[]; declare function genChartJsRadarTests(): TestCase[]; declare function genChartJsStressTests(): TestCase[]; declare function genChartJsRoseTests(): TestCase[]; declare function genChartJsDoughnutTests(): TestCase[]; declare function genChartJsComboTests(): TestCase[]; declare function genChartJsBubbleTests(): TestCase[]; /** The four acceptance templates, single-series and color-grouped. */ declare function genPlotlyCoreTests(): TestCase[]; /** Facet grid path: column, row, and column×row subplot grids. */ declare function genPlotlyFacetTests(): TestCase[]; /** * Discrete-axis sizing tests. * * For each major chart type, creates test cases at three cardinality levels * (20, 60, 120) designed for a 400×300 canvas. This systematically exercises * the assembler's elastic stretch, overflow filtering, label rotation, and * step-based sizing across discrete X and discrete Y orientations. * * Cardinality rationale (400×300 canvas, ~20px default step): * - 20 items: fits comfortably, no compression needed * - 60 items: triggers elastic stretch, label rotation * - 120 items: triggers overflow filtering (too many to show) */ declare function genDiscreteAxisTests(): TestCase[]; declare function genDateTests(dateFormats: DateFormat[], seed: number): TestCase[]; declare function genDateYearTests(): TestCase[]; declare function genDateMonthTests(): TestCase[]; declare function genDateYearMonthTests(): TestCase[]; declare function genDateDecadeTests(): TestCase[]; declare function genDateDateTimeTests(): TestCase[]; declare function genDateHoursTests(): TestCase[]; declare function genSemanticContextTests(): TestCase[]; /** * Generate all snap-to-bound test cases. * * Demonstrates the snap-to-bound heuristic for Percentage [0,100] * and PercentageChange [-1,1]. Each bound snaps independently when * data reaches within 25% of the effective side range from that edge. * For zero-straddling domains (lo < 0 < hi), each side's threshold is * computed relative to its distance from zero, not the full range. */ declare function genSnapToBoundTests(): TestCase[]; declare function genMapTests(): TestCase[]; declare function genChoroplethTests(): TestCase[]; declare function genGanttTests(): TestCase[]; declare function genBulletTests(): TestCase[]; /** * Synthetic **game operations** panel for a three-phase gallery story: * (1) overview — line + regional grouped bar on MAU; (2) change — monthly waterfall + game×month heatmap; * (3) composition — ECharts sunburst region → gameType → game (Dec totalUsers). * * **Detail rows**: Period × Game × Region; `period` is `2025-01` … `2025-12`; ≤24 games, 6 `gameType` values; regions N|E|S|W. * MAU stocks use {@link OMNI_VIZ_STOCK_SCALE} so monthly net-add and MAU views stay in a comparable visual range. * Net-add seasonality follows {@link narrativeMonthFlowMultiplier} (calendar month): 1–2 increase step-up; 3–5 decrease * easing; 6–8 increase fading; 9–10 decrease easing; 11–12 increase. */ interface OmniVizRow { /** Year-month `YYYY-MM` (2025-01 … 2025-12) */ period: string; game: string; gameType: string; /** Net new (may be negative) */ newUsers: number; /** End-of-month MAU stock */ totalUsers: number; region: (typeof OMNI_VIZ_REGIONS)[number]; } declare const OMNI_VIZ_MONTHS: readonly ["2025-01", "2025-02", "2025-03", "2025-04", "2025-05", "2025-06", "2025-07", "2025-08", "2025-09", "2025-10", "2025-11", "2025-12"]; declare const OMNI_VIZ_REGIONS: readonly ["N", "E", "S", "W"]; declare const OMNI_VIZ_GAME_TYPES: readonly ["Mobile Casual", "Mobile Midcore", "PC / Client", "Console", "Cross-platform", "Web / Mini-game"]; declare const OMNI_VIZ_GAME_ORDER: readonly ["Starforge Tactics", "Neon Drift 2049", "Pocket Kingdoms", "Azure Legends", "Dustwind Arena", "Circuit Breakers", "Moonlit Odyssey", "Granite & Glyphs", "Velvet Racing Club", "Echoes of Athera", "Snack Stack Saga", "Ironbound Front", "Sakura Stage Live", "Deepline Submarine", "Pixel Farmers Co-op", "Void Choir Online", "Metro Hustle", "Coral Reef Builder", "Blade Symphony X", "Quiet Hours VR", "Turbo Kart Universe", "Guildfall Chronicles", "Match-3 Museum", "Northwind Survival"]; declare const OMNI_VIZ_ROWS: OmniVizRow[]; declare const OMNI_VIZ_LEVELS: { readonly games: readonly ["Starforge Tactics", "Neon Drift 2049", "Pocket Kingdoms", "Azure Legends", "Dustwind Arena", "Circuit Breakers", "Moonlit Odyssey", "Granite & Glyphs", "Velvet Racing Club", "Echoes of Athera", "Snack Stack Saga", "Ironbound Front", "Sakura Stage Live", "Deepline Submarine", "Pixel Farmers Co-op", "Void Choir Online", "Metro Hustle", "Coral Reef Builder", "Blade Symphony X", "Quiet Hours VR", "Turbo Kart Universe", "Guildfall Chronicles", "Match-3 Museum", "Northwind Survival"]; readonly gameTypes: readonly ["Mobile Casual", "Mobile Midcore", "PC / Client", "Console", "Cross-platform", "Web / Mini-game"]; readonly regions: readonly ["N", "E", "S", "W"]; readonly months: readonly ["2025-01", "2025-02", "2025-03", "2025-04", "2025-05", "2025-06", "2025-07", "2025-08", "2025-09", "2025-10", "2025-11", "2025-12"]; readonly periodStarts: readonly ["2025-01", "2025-02", "2025-03", "2025-04", "2025-05", "2025-06", "2025-07", "2025-08", "2025-09", "2025-10", "2025-11", "2025-12"]; }; declare function omniVizDetailTable(): Record[]; /** * Phase 1 — Line: facet region; x = month; y = totalUsers (sum of MAU across games in each gameType bucket); color = gameType. * Different apps spike on different months → visible as diverging multi-series lines per panel. */ declare function omniVizLineTable(): Record[]; /** * Phase 1 — Grouped bar: x = month; y = sum(totalUsers) across all regions/games; color & group = gameType. */ declare function omniVizGroupedBarRegionGameTypeTable(): Record[]; /** * Phase 2 — Waterfall: monthly portfolio net newUsers by period. * * The Waterfall template auto-infers the first period as start, the last period * as end, and the middle periods as deltas when no explicit Type column exists. */ declare function omniVizWaterfallTable(): Record[]; /** * Phase 2 — Heatmap: x = game, y = month, color = newUsers (summed over regions). */ declare function omniVizHeatmapGameMonthTable(): Record[]; /** * Phase 3 — Sunburst (ECharts): region → gameType → game; leaf size = Dec totalUsers (composition). */ declare function omniVizSunburstTable(): Record[]; declare function genOmniVizLineTests(): TestCase[]; declare function genOmniVizGroupedBarTests(): TestCase[]; declare function genOmniVizWaterfallTests(): TestCase[]; declare function genOmniVizHeatmapTests(): TestCase[]; declare function genOmniVizSunburstTests(): TestCase[]; /** Keys in `TEST_GENERATORS` for the Omni gallery (charts only; data table chip is separate). */ declare const GALLERY_OMNI_VIZ_GENERATOR_KEYS: readonly ["Omni: Line", "Omni: Grouped Bar", "Omni: Waterfall", "Omni: Heatmap", "Omni: Sunburst"]; declare const OMNI_VIZ_GALLERY_DATA_TABLE_ENTRY: "Omni: Data Table Preview"; /** * Static Series Gallery Examples * * Demonstrates the static series feature (array-valued encodings) across * multiple chart types and data scenarios. These examples use wide-format * data where multiple columns represent different measures. */ /** Simple two-series line chart — Revenue vs Expenses */ declare const STATIC_SERIES_LINE_BASIC: ChartAssemblyInput; /** Three-metric KPI dashboard line chart */ declare const STATIC_SERIES_LINE_THREE_KPIS: ChartAssemblyInput; /** Four-city temperature comparison (many series) */ declare const STATIC_SERIES_LINE_MANY_SERIES: ChartAssemblyInput; /** Stock price comparison — dotted line variant */ declare const STATIC_SERIES_DOTTED_LINE_STOCKS: ChartAssemblyInput; /** Stacked area chart — revenue channels over time */ declare const STATIC_SERIES_AREA_STACKED: ChartAssemblyInput; /** Scatter plot with static series — Revenue vs Expenses with labeled points */ declare const STATIC_SERIES_SCATTER: ChartAssemblyInput; declare const STATIC_SERIES_GALLERY_EXAMPLES: { label: string; input: ChartAssemblyInput; }[]; /** * Barrel export for chart test-data generators. * * Re-exports every generator plus the shared types, * and exposes the master TEST_GENERATORS map and GALLERY_SECTIONS config. */ /** All test generators mapped by chart group */ declare const TEST_GENERATORS: Record TestCase[]>; export { DISCRETE_SIZES, DateFormat, FACET_SIZES, GALLERY_OMNI_VIZ_GENERATOR_KEYS, OMNI_VIZ_GALLERY_DATA_TABLE_ENTRY, OMNI_VIZ_GAME_ORDER, OMNI_VIZ_GAME_TYPES, OMNI_VIZ_LEVELS, OMNI_VIZ_MONTHS, OMNI_VIZ_REGIONS, OMNI_VIZ_ROWS, type OmniVizRow, STATIC_SERIES_AREA_STACKED, STATIC_SERIES_DOTTED_LINE_STOCKS, STATIC_SERIES_GALLERY_EXAMPLES, STATIC_SERIES_LINE_BASIC, STATIC_SERIES_LINE_MANY_SERIES, STATIC_SERIES_LINE_THREE_KPIS, STATIC_SERIES_SCATTER, TEST_GENERATORS, TestCase, genAreaTests, genBarTableTests, genBarTests, genBoxplotTests, genBulletTests, genBumpChartTests, genCandlestickTests, genCategories, genChartJsAreaTests, genChartJsBarTests, genChartJsBubbleTests, genChartJsComboTests, genChartJsConnectedScatterTests, genChartJsDoughnutTests, genChartJsEcdfTests, genChartJsGroupedBarTests, genChartJsHistogramTests, genChartJsLineTests, genChartJsPieTests, genChartJsRadarTests, genChartJsRangeAreaTests, genChartJsRoseTests, genChartJsScatterTests, genChartJsSlopeTests, genChartJsStackedBarTests, genChartJsStressTests, genChoroplethTests, genConnectedScatterTests, genDateDateTimeTests, genDateDecadeTests, genDateHoursTests, genDateMonthTests, genDateTests, genDateYearMonthTests, genDateYearTests, genDates, genDensityContourTests, genDensityTests, genDiscreteAxisTests, genEChartsAreaTests, genEChartsBarTests, genEChartsBoxplotTests, genEChartsCalendarTests, genEChartsCandlestickTests, genEChartsConnectedScatterTests, genEChartsEcdfTests, genEChartsFacetClipTests, genEChartsFacetSmallTests, genEChartsFacetWrapTests, genEChartsFunnelTests, genEChartsGaugeTests, genEChartsGraphTests, genEChartsGroupedBarTests, genEChartsHeatmapTests, genEChartsHistogramTests, genEChartsLineTests, genEChartsParallelTests, genEChartsPieTests, genEChartsRadarTests, genEChartsRangeAreaTests, genEChartsRoseTests, genEChartsSankeyTests, genEChartsScatterTests, genEChartsSlopeTests, genEChartsStackedBarTests, genEChartsStreamgraphTests, genEChartsStressTests, genEChartsSunburstTests, genEChartsTreeTests, genEChartsTreemapTests, genEChartsUniqueStressTests, genEcdfTests, genElasticityTests, genFacetClipTests, genFacetColRowTests, genFacetColumnTests, genFacetDenseLineTests, genFacetOverflowedColRowTests, genFacetOverflowedColTests, genFacetOverflowedRowTests, genFacetRowTests, genFacetSmallTests, genFacetWrapTests, genGanttTests, genGasPressureTests, genGroupedBarTests, genHeatmapTests, genHistogramTests, genLineAreaStretchTests, genLineTests, genLollipopTests, genMapTests, genMeasure, genMonths, genNaturalDates, genOmniVizGroupedBarTests, genOmniVizHeatmapTests, genOmniVizLineTests, genOmniVizSunburstTests, genOmniVizWaterfallTests, genOverflowTests, genPieTests, genPlotlyCoreTests, genPlotlyFacetTests, genPyramidTests, genRadarTests, genRandomNames, genRangeAreaTests, genRangedDotPlotTests, genRegressionTests, genRoseTests, genScatterTests, genSemanticContextTests, genSlopeTests, genSnapToBoundTests, genSparklineTests, genStackedBarTests, genStreamgraphTests, genStripPlotTests, genViolinTests, genWaterfallTests, genYears, omniVizDetailTable, omniVizGroupedBarRegionGameTypeTable, omniVizHeatmapGameMonthTable, omniVizLineTable, omniVizSunburstTable, omniVizWaterfallTable, seededRandom };