@stackframe/dashboard-ui-components 2.8.84 → 2.8.85
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/analytics-chart/analytics-chart-pie.d.ts +67 -0
- package/dist/components/analytics-chart/analytics-chart-pie.d.ts.map +1 -0
- package/dist/components/analytics-chart/analytics-chart-pie.js +253 -0
- package/dist/components/analytics-chart/analytics-chart-pie.js.map +1 -0
- package/dist/components/analytics-chart/analytics-chart.d.ts +554 -0
- package/dist/components/analytics-chart/analytics-chart.d.ts.map +1 -0
- package/dist/components/analytics-chart/analytics-chart.js +1021 -0
- package/dist/components/analytics-chart/analytics-chart.js.map +1 -0
- package/dist/components/analytics-chart/default-analytics-chart-tooltip.d.ts +66 -0
- package/dist/components/analytics-chart/default-analytics-chart-tooltip.d.ts.map +1 -0
- package/dist/components/analytics-chart/default-analytics-chart-tooltip.js +179 -0
- package/dist/components/analytics-chart/default-analytics-chart-tooltip.js.map +1 -0
- package/dist/components/analytics-chart/format.d.ts +13 -0
- package/dist/components/analytics-chart/format.d.ts.map +1 -0
- package/dist/components/analytics-chart/format.js +138 -0
- package/dist/components/analytics-chart/format.js.map +1 -0
- package/dist/components/analytics-chart/index.d.ts +8 -0
- package/dist/components/analytics-chart/index.js +184 -0
- package/dist/components/analytics-chart/palette.d.ts +15 -0
- package/dist/components/analytics-chart/palette.d.ts.map +1 -0
- package/dist/components/analytics-chart/palette.js +60 -0
- package/dist/components/analytics-chart/palette.js.map +1 -0
- package/dist/components/analytics-chart/render-data-series.d.ts +28 -0
- package/dist/components/analytics-chart/render-data-series.d.ts.map +1 -0
- package/dist/components/analytics-chart/render-data-series.js +109 -0
- package/dist/components/analytics-chart/render-data-series.js.map +1 -0
- package/dist/components/analytics-chart/state.d.ts +54 -0
- package/dist/components/analytics-chart/state.d.ts.map +1 -0
- package/dist/components/analytics-chart/state.js +142 -0
- package/dist/components/analytics-chart/state.js.map +1 -0
- package/dist/components/analytics-chart/strings.d.ts +33 -0
- package/dist/components/analytics-chart/strings.d.ts.map +1 -0
- package/dist/components/analytics-chart/strings.js +37 -0
- package/dist/components/analytics-chart/strings.js.map +1 -0
- package/dist/components/analytics-chart/types.d.ts +157 -0
- package/dist/components/analytics-chart/types.d.ts.map +1 -0
- package/dist/components/analytics-chart/types.js +21 -0
- package/dist/components/analytics-chart/types.js.map +1 -0
- package/dist/components/badge.d.ts +16 -0
- package/dist/components/badge.d.ts.map +1 -1
- package/dist/components/badge.js +16 -0
- package/dist/components/badge.js.map +1 -1
- package/dist/components/button.d.ts +15 -1
- package/dist/components/button.d.ts.map +1 -1
- package/dist/components/button.js +14 -0
- package/dist/components/button.js.map +1 -1
- package/dist/components/card.d.ts +28 -0
- package/dist/components/card.d.ts.map +1 -1
- package/dist/components/card.js +28 -0
- package/dist/components/card.js.map +1 -1
- package/dist/components/chart-card.d.ts +29 -0
- package/dist/components/chart-card.d.ts.map +1 -1
- package/dist/components/chart-card.js +29 -0
- package/dist/components/chart-card.js.map +1 -1
- package/dist/components/chart-legend.d.ts +1 -2
- package/dist/components/chart-legend.d.ts.map +1 -1
- package/dist/components/chart-legend.js +0 -4
- package/dist/components/chart-legend.js.map +1 -1
- package/dist/components/data-grid/data-grid-sizing.d.ts +11 -0
- package/dist/components/data-grid/data-grid-sizing.d.ts.map +1 -0
- package/dist/components/data-grid/data-grid-sizing.js +34 -0
- package/dist/components/data-grid/data-grid-sizing.js.map +1 -0
- package/dist/components/data-grid/data-grid-toolbar.d.ts +31 -0
- package/dist/components/data-grid/data-grid-toolbar.d.ts.map +1 -0
- package/dist/components/data-grid/data-grid-toolbar.js +226 -0
- package/dist/components/data-grid/data-grid-toolbar.js.map +1 -0
- package/dist/components/data-grid/data-grid.d.ts +233 -0
- package/dist/components/data-grid/data-grid.d.ts.map +1 -0
- package/dist/components/data-grid/data-grid.js +871 -0
- package/dist/components/data-grid/data-grid.js.map +1 -0
- package/dist/components/data-grid/index.d.ts +7 -0
- package/dist/components/data-grid/index.js +176 -0
- package/dist/components/data-grid/state.d.ts +91 -0
- package/dist/components/data-grid/state.d.ts.map +1 -0
- package/dist/components/data-grid/state.js +329 -0
- package/dist/components/data-grid/state.js.map +1 -0
- package/dist/components/data-grid/strings.d.ts +8 -0
- package/dist/components/data-grid/strings.d.ts.map +1 -0
- package/dist/components/data-grid/strings.js +42 -0
- package/dist/components/data-grid/strings.js.map +1 -0
- package/dist/components/data-grid/types.d.ts +242 -0
- package/dist/components/data-grid/types.d.ts.map +1 -0
- package/dist/components/data-grid/types.js +0 -0
- package/dist/components/data-grid/use-data-source.d.ts +79 -0
- package/dist/components/data-grid/use-data-source.d.ts.map +1 -0
- package/dist/components/data-grid/use-data-source.js +236 -0
- package/dist/components/data-grid/use-data-source.js.map +1 -0
- package/dist/components/empty-state.d.ts +16 -0
- package/dist/components/empty-state.d.ts.map +1 -1
- package/dist/components/empty-state.js +16 -0
- package/dist/components/empty-state.js.map +1 -1
- package/dist/components/metric-card.d.ts +24 -0
- package/dist/components/metric-card.d.ts.map +1 -1
- package/dist/components/metric-card.js +24 -0
- package/dist/components/metric-card.js.map +1 -1
- package/dist/components/progress-bar.d.ts +10 -0
- package/dist/components/progress-bar.d.ts.map +1 -1
- package/dist/components/progress-bar.js +10 -0
- package/dist/components/progress-bar.js.map +1 -1
- package/dist/components/separator.d.ts +9 -0
- package/dist/components/separator.d.ts.map +1 -1
- package/dist/components/separator.js +9 -0
- package/dist/components/separator.js.map +1 -1
- package/dist/components/skeleton.d.ts +12 -0
- package/dist/components/skeleton.d.ts.map +1 -1
- package/dist/components/skeleton.js +12 -0
- package/dist/components/skeleton.js.map +1 -1
- package/dist/components/table.d.ts +25 -0
- package/dist/components/table.d.ts.map +1 -1
- package/dist/components/table.js +25 -0
- package/dist/components/table.js.map +1 -1
- package/dist/dashboard-ui-components.global.js +8607 -2902
- package/dist/dashboard-ui-components.global.js.map +4 -4
- package/dist/esm/components/analytics-chart/analytics-chart-pie.d.ts +67 -0
- package/dist/esm/components/analytics-chart/analytics-chart-pie.d.ts.map +1 -0
- package/dist/esm/components/analytics-chart/analytics-chart-pie.js +251 -0
- package/dist/esm/components/analytics-chart/analytics-chart-pie.js.map +1 -0
- package/dist/esm/components/analytics-chart/analytics-chart.d.ts +554 -0
- package/dist/esm/components/analytics-chart/analytics-chart.d.ts.map +1 -0
- package/dist/esm/components/analytics-chart/analytics-chart.js +1019 -0
- package/dist/esm/components/analytics-chart/analytics-chart.js.map +1 -0
- package/dist/esm/components/analytics-chart/default-analytics-chart-tooltip.d.ts +66 -0
- package/dist/esm/components/analytics-chart/default-analytics-chart-tooltip.d.ts.map +1 -0
- package/dist/esm/components/analytics-chart/default-analytics-chart-tooltip.js +176 -0
- package/dist/esm/components/analytics-chart/default-analytics-chart-tooltip.js.map +1 -0
- package/dist/esm/components/analytics-chart/format.d.ts +13 -0
- package/dist/esm/components/analytics-chart/format.d.ts.map +1 -0
- package/dist/esm/components/analytics-chart/format.js +133 -0
- package/dist/esm/components/analytics-chart/format.js.map +1 -0
- package/dist/esm/components/analytics-chart/index.d.ts +8 -0
- package/dist/esm/components/analytics-chart/index.js +9 -0
- package/dist/esm/components/analytics-chart/palette.d.ts +15 -0
- package/dist/esm/components/analytics-chart/palette.d.ts.map +1 -0
- package/dist/esm/components/analytics-chart/palette.js +55 -0
- package/dist/esm/components/analytics-chart/palette.js.map +1 -0
- package/dist/esm/components/analytics-chart/render-data-series.d.ts +28 -0
- package/dist/esm/components/analytics-chart/render-data-series.d.ts.map +1 -0
- package/dist/esm/components/analytics-chart/render-data-series.js +107 -0
- package/dist/esm/components/analytics-chart/render-data-series.js.map +1 -0
- package/dist/esm/components/analytics-chart/state.d.ts +54 -0
- package/dist/esm/components/analytics-chart/state.d.ts.map +1 -0
- package/dist/esm/components/analytics-chart/state.js +126 -0
- package/dist/esm/components/analytics-chart/state.js.map +1 -0
- package/dist/esm/components/analytics-chart/strings.d.ts +33 -0
- package/dist/esm/components/analytics-chart/strings.d.ts.map +1 -0
- package/dist/esm/components/analytics-chart/strings.js +34 -0
- package/dist/esm/components/analytics-chart/strings.js.map +1 -0
- package/dist/esm/components/analytics-chart/types.d.ts +157 -0
- package/dist/esm/components/analytics-chart/types.d.ts.map +1 -0
- package/dist/esm/components/analytics-chart/types.js +18 -0
- package/dist/esm/components/analytics-chart/types.js.map +1 -0
- package/dist/esm/components/badge.d.ts +16 -0
- package/dist/esm/components/badge.d.ts.map +1 -1
- package/dist/esm/components/badge.js +16 -0
- package/dist/esm/components/badge.js.map +1 -1
- package/dist/esm/components/button.d.ts +14 -0
- package/dist/esm/components/button.d.ts.map +1 -1
- package/dist/esm/components/button.js +14 -0
- package/dist/esm/components/button.js.map +1 -1
- package/dist/esm/components/card.d.ts +28 -0
- package/dist/esm/components/card.d.ts.map +1 -1
- package/dist/esm/components/card.js +28 -0
- package/dist/esm/components/card.js.map +1 -1
- package/dist/esm/components/chart-card.d.ts +29 -0
- package/dist/esm/components/chart-card.d.ts.map +1 -1
- package/dist/esm/components/chart-card.js +29 -0
- package/dist/esm/components/chart-card.js.map +1 -1
- package/dist/esm/components/chart-legend.d.ts +1 -2
- package/dist/esm/components/chart-legend.d.ts.map +1 -1
- package/dist/esm/components/chart-legend.js +1 -3
- package/dist/esm/components/chart-legend.js.map +1 -1
- package/dist/esm/components/data-grid/data-grid-sizing.d.ts +11 -0
- package/dist/esm/components/data-grid/data-grid-sizing.d.ts.map +1 -0
- package/dist/esm/components/data-grid/data-grid-sizing.js +29 -0
- package/dist/esm/components/data-grid/data-grid-sizing.js.map +1 -0
- package/dist/esm/components/data-grid/data-grid-toolbar.d.ts +31 -0
- package/dist/esm/components/data-grid/data-grid-toolbar.d.ts.map +1 -0
- package/dist/esm/components/data-grid/data-grid-toolbar.js +223 -0
- package/dist/esm/components/data-grid/data-grid-toolbar.js.map +1 -0
- package/dist/esm/components/data-grid/data-grid.d.ts +233 -0
- package/dist/esm/components/data-grid/data-grid.d.ts.map +1 -0
- package/dist/esm/components/data-grid/data-grid.js +868 -0
- package/dist/esm/components/data-grid/data-grid.js.map +1 -0
- package/dist/esm/components/data-grid/index.d.ts +7 -0
- package/dist/esm/components/data-grid/index.js +7 -0
- package/dist/esm/components/data-grid/state.d.ts +91 -0
- package/dist/esm/components/data-grid/state.d.ts.map +1 -0
- package/dist/esm/components/data-grid/state.js +305 -0
- package/dist/esm/components/data-grid/state.js.map +1 -0
- package/dist/esm/components/data-grid/strings.d.ts +8 -0
- package/dist/esm/components/data-grid/strings.d.ts.map +1 -0
- package/dist/esm/components/data-grid/strings.js +39 -0
- package/dist/esm/components/data-grid/strings.js.map +1 -0
- package/dist/esm/components/data-grid/types.d.ts +242 -0
- package/dist/esm/components/data-grid/types.d.ts.map +1 -0
- package/dist/esm/components/data-grid/types.js +1 -0
- package/dist/esm/components/data-grid/use-data-source.d.ts +79 -0
- package/dist/esm/components/data-grid/use-data-source.d.ts.map +1 -0
- package/dist/esm/components/data-grid/use-data-source.js +234 -0
- package/dist/esm/components/data-grid/use-data-source.js.map +1 -0
- package/dist/esm/components/empty-state.d.ts +16 -0
- package/dist/esm/components/empty-state.d.ts.map +1 -1
- package/dist/esm/components/empty-state.js +16 -0
- package/dist/esm/components/empty-state.js.map +1 -1
- package/dist/esm/components/metric-card.d.ts +24 -0
- package/dist/esm/components/metric-card.d.ts.map +1 -1
- package/dist/esm/components/metric-card.js +24 -0
- package/dist/esm/components/metric-card.js.map +1 -1
- package/dist/esm/components/progress-bar.d.ts +10 -0
- package/dist/esm/components/progress-bar.d.ts.map +1 -1
- package/dist/esm/components/progress-bar.js +10 -0
- package/dist/esm/components/progress-bar.js.map +1 -1
- package/dist/esm/components/separator.d.ts +9 -0
- package/dist/esm/components/separator.d.ts.map +1 -1
- package/dist/esm/components/separator.js +9 -0
- package/dist/esm/components/separator.js.map +1 -1
- package/dist/esm/components/skeleton.d.ts +12 -0
- package/dist/esm/components/skeleton.d.ts.map +1 -1
- package/dist/esm/components/skeleton.js +12 -0
- package/dist/esm/components/skeleton.js.map +1 -1
- package/dist/esm/components/table.d.ts +25 -0
- package/dist/esm/components/table.d.ts.map +1 -1
- package/dist/esm/components/table.js +25 -0
- package/dist/esm/components/table.js.map +1 -1
- package/dist/esm/index.d.ts +4 -2
- package/dist/esm/index.js +6 -2
- package/dist/index.d.ts +15 -2
- package/dist/index.js +16 -7
- package/package.json +4 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.js","names":[],"sources":["../../../src/components/analytics-chart/format.ts"],"sourcesContent":["import type { FormatKind, FormatKindType, AnalyticsChartDelta } from \"./types\";\n\nexport const FORMAT_KIND_TYPES: FormatKindType[] = [\n \"numeric\",\n \"short\",\n \"currency\",\n \"duration\",\n \"datetime\",\n \"percent\",\n];\n\nexport const DEFAULT_FORMAT_KIND: { [K in FormatKindType]: Extract<FormatKind, { type: K }> } = {\n numeric: { type: \"numeric\", locale: \"en-US\", decimals: 0 },\n short: { type: \"short\", precision: 1, locale: \"en-US\" },\n currency: { type: \"currency\", currency: \"USD\", divisor: 100, locale: \"en-US\" },\n duration: { type: \"duration\", unit: \"s\", showZero: false },\n datetime: { type: \"datetime\", style: \"short\", locale: \"en-US\" },\n percent: { type: \"percent\", source: \"fraction\", decimals: 1 },\n};\n\nfunction formatRelative(value: number, locale: string): string {\n const diff = value - Date.now();\n const absSec = Math.abs(diff) / 1000;\n const rtf = new Intl.RelativeTimeFormat(locale, { numeric: \"auto\" });\n if (absSec >= 86_400) return rtf.format(Math.round(diff / 86_400_000), \"day\");\n if (absSec >= 3600) return rtf.format(Math.round(diff / 3_600_000), \"hour\");\n if (absSec >= 60) return rtf.format(Math.round(diff / 60_000), \"minute\");\n return \"just now\";\n}\n\n/** `short` uses compact notation (e.g. `1.2K`), not a custom `k` suffix. */\nexport function formatValue(value: number, kind: FormatKind): string {\n switch (kind.type) {\n case \"numeric\": {\n const decimals = kind.decimals ?? 0;\n return value.toLocaleString(kind.locale ?? \"en-US\", {\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n });\n }\n case \"short\": {\n const precision = kind.precision ?? 1;\n return new Intl.NumberFormat(kind.locale ?? \"en-US\", {\n notation: \"compact\",\n compactDisplay: \"short\",\n minimumFractionDigits: precision,\n maximumFractionDigits: precision,\n }).format(value);\n }\n case \"currency\": {\n const divisor = kind.divisor ?? 1;\n return new Intl.NumberFormat(kind.locale ?? \"en-US\", {\n style: \"currency\",\n currency: kind.currency ?? \"USD\",\n }).format(value / divisor);\n }\n case \"duration\": {\n const unit = kind.unit ?? \"s\";\n const seconds = unit === \"ms\" ? value / 1000\n : unit === \"m\" ? value * 60\n : unit === \"h\" ? value * 3600\n : value;\n const h = Math.floor(seconds / 3600);\n const m = Math.floor((seconds % 3600) / 60);\n const s = Math.floor(seconds % 60);\n if (h > 0) return `${h}h ${m}m ${s}s`;\n if (m > 0) return `${m}m ${s}s`;\n if (unit === \"ms\" && seconds < 1) return `${Math.round(value)}ms`;\n if (s > 0 || kind.showZero) return `${s}s`;\n return \"0s\";\n }\n case \"datetime\": {\n const d = new Date(value);\n const style = kind.style ?? \"short\";\n const locale = kind.locale ?? \"en-US\";\n if (style === \"iso\") return d.toISOString();\n if (style === \"relative\") return formatRelative(value, locale);\n if (style === \"long\") return d.toLocaleString(locale, {\n dateStyle: \"medium\",\n timeStyle: \"short\",\n });\n return d.toLocaleDateString(locale, { month: \"short\", day: \"numeric\" });\n }\n case \"percent\": {\n const source = kind.source ?? \"fraction\";\n const decimals = kind.decimals ?? 1;\n const pct = source === \"basis\" ? value / 100\n : source === \"whole\" ? value\n : value * 100;\n return `${pct.toFixed(decimals)}%`;\n }\n }\n}\n\nexport function formatDelta(current: number, previous: number): AnalyticsChartDelta {\n if (!Number.isFinite(current) || !Number.isFinite(previous)) return { pct: null, sign: \"na\" };\n if (previous === 0) return current === 0 ? { pct: 0, sign: \"flat\" } : { pct: null, sign: \"na\" };\n const pct = Number((((current - previous) / previous) * 100).toFixed(1));\n const sign = pct > 0 ? \"up\" : pct < 0 ? \"down\" : \"flat\";\n return { pct, sign };\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ANALYTICS_CHART_DEFAULT_STRINGS, AnalyticsChartStrings, resolveAnalyticsChartStrings } from "./strings.js";
|
|
2
|
+
import { AnalyticsChartAnnotationsLayer, AnalyticsChartAreaLayer, AnalyticsChartBarLayer, AnalyticsChartDataLayer, AnalyticsChartDelta, AnalyticsChartLayer, AnalyticsChartLayerType, AnalyticsChartLayers, AnalyticsChartLineLayer, AnalyticsChartPalette, AnalyticsChartPieProps, AnalyticsChartPieState, AnalyticsChartSegmentRamp, AnalyticsChartSeries, AnalyticsChartState, AnalyticsChartStrokeStyle, AnalyticsChartTimeseriesState, AnalyticsChartView, Annotation, FormatKind, FormatKindCurrency, FormatKindDatetime, FormatKindDuration, FormatKindNumeric, FormatKindPercent, FormatKindShort, FormatKindType, Point, pointValue } from "./types.js";
|
|
3
|
+
import { AnalyticsChartTooltipContext, AnalyticsChartTooltipLayerView, AnalyticsChartTooltipSegmentRow, DefaultAnalyticsChartTooltip, DefaultAnalyticsChartTooltipProps, TrendPill } from "./default-analytics-chart-tooltip.js";
|
|
4
|
+
import { AnalyticsChart, AnalyticsChartProps, Margin } from "./analytics-chart.js";
|
|
5
|
+
import { DEFAULT_FORMAT_KIND, FORMAT_KIND_TYPES, formatDelta, formatValue } from "./format.js";
|
|
6
|
+
import { ANALYTICS_CHART_DEFAULT_PALETTE, buildRampColors, buildSegmentThemeMap, resolveAnalyticsChartPalette } from "./palette.js";
|
|
7
|
+
import { ANALYTICS_CHART_DEFAULT_LAYERS, ANALYTICS_CHART_DEFAULT_STATE, EMPTY_MATRIX, EMPTY_SERIES, ResolvedDataLayerStyle, STROKE_DASHARRAY, computeLocalInProgressIdx, findAnnotationsLayer, findCompareLayer, findLayerById, findPrimaryLayer, isAnalyticsChartDataLayer, isTimeseriesState, patchLayerById, resolveDataLayerStyle, setLayerById } from "./state.js";
|
|
8
|
+
export { ANALYTICS_CHART_DEFAULT_LAYERS, ANALYTICS_CHART_DEFAULT_PALETTE, ANALYTICS_CHART_DEFAULT_STATE, ANALYTICS_CHART_DEFAULT_STRINGS, AnalyticsChart, type AnalyticsChartAnnotationsLayer, type AnalyticsChartAreaLayer, type AnalyticsChartBarLayer, type AnalyticsChartDataLayer, type AnalyticsChartDelta, type AnalyticsChartLayer, type AnalyticsChartLayerType, type AnalyticsChartLayers, type AnalyticsChartLineLayer, type AnalyticsChartPalette, type AnalyticsChartPieProps, type AnalyticsChartPieState, type AnalyticsChartProps, type AnalyticsChartSegmentRamp, type AnalyticsChartSeries, type AnalyticsChartState, type AnalyticsChartStrings, type AnalyticsChartStrokeStyle, type AnalyticsChartTimeseriesState, type AnalyticsChartTooltipContext, type AnalyticsChartTooltipLayerView, type AnalyticsChartTooltipSegmentRow, type AnalyticsChartView, type Annotation, DEFAULT_FORMAT_KIND, DefaultAnalyticsChartTooltip, type DefaultAnalyticsChartTooltipProps, EMPTY_MATRIX, EMPTY_SERIES, FORMAT_KIND_TYPES, type FormatKind, type FormatKindCurrency, type FormatKindDatetime, type FormatKindDuration, type FormatKindNumeric, type FormatKindPercent, type FormatKindShort, type FormatKindType, type Margin, type Point, type ResolvedDataLayerStyle, STROKE_DASHARRAY, TrendPill, buildRampColors, buildSegmentThemeMap, computeLocalInProgressIdx, findAnnotationsLayer, findCompareLayer, findLayerById, findPrimaryLayer, formatDelta, formatValue, isAnalyticsChartDataLayer, isTimeseriesState, patchLayerById, pointValue, resolveAnalyticsChartPalette, resolveAnalyticsChartStrings, resolveDataLayerStyle, setLayerById };
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
|
+
const require_chunk = require('../../chunk-BE-pF4vm.js');
|
|
3
|
+
let __default_analytics_chart_tooltip_js = require("./default-analytics-chart-tooltip.js");
|
|
4
|
+
let __format_js = require("./format.js");
|
|
5
|
+
let __types_js = require("./types.js");
|
|
6
|
+
let __palette_js = require("./palette.js");
|
|
7
|
+
let __state_js = require("./state.js");
|
|
8
|
+
let __strings_js = require("./strings.js");
|
|
9
|
+
let __analytics_chart_js = require("./analytics-chart.js");
|
|
10
|
+
|
|
11
|
+
Object.defineProperty(exports, 'ANALYTICS_CHART_DEFAULT_LAYERS', {
|
|
12
|
+
enumerable: true,
|
|
13
|
+
get: function () {
|
|
14
|
+
return __state_js.ANALYTICS_CHART_DEFAULT_LAYERS;
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
Object.defineProperty(exports, 'ANALYTICS_CHART_DEFAULT_PALETTE', {
|
|
18
|
+
enumerable: true,
|
|
19
|
+
get: function () {
|
|
20
|
+
return __palette_js.ANALYTICS_CHART_DEFAULT_PALETTE;
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
Object.defineProperty(exports, 'ANALYTICS_CHART_DEFAULT_STATE', {
|
|
24
|
+
enumerable: true,
|
|
25
|
+
get: function () {
|
|
26
|
+
return __state_js.ANALYTICS_CHART_DEFAULT_STATE;
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
Object.defineProperty(exports, 'ANALYTICS_CHART_DEFAULT_STRINGS', {
|
|
30
|
+
enumerable: true,
|
|
31
|
+
get: function () {
|
|
32
|
+
return __strings_js.ANALYTICS_CHART_DEFAULT_STRINGS;
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
Object.defineProperty(exports, 'AnalyticsChart', {
|
|
36
|
+
enumerable: true,
|
|
37
|
+
get: function () {
|
|
38
|
+
return __analytics_chart_js.AnalyticsChart;
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
Object.defineProperty(exports, 'DEFAULT_FORMAT_KIND', {
|
|
42
|
+
enumerable: true,
|
|
43
|
+
get: function () {
|
|
44
|
+
return __format_js.DEFAULT_FORMAT_KIND;
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
Object.defineProperty(exports, 'DefaultAnalyticsChartTooltip', {
|
|
48
|
+
enumerable: true,
|
|
49
|
+
get: function () {
|
|
50
|
+
return __default_analytics_chart_tooltip_js.DefaultAnalyticsChartTooltip;
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
Object.defineProperty(exports, 'EMPTY_MATRIX', {
|
|
54
|
+
enumerable: true,
|
|
55
|
+
get: function () {
|
|
56
|
+
return __state_js.EMPTY_MATRIX;
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
Object.defineProperty(exports, 'EMPTY_SERIES', {
|
|
60
|
+
enumerable: true,
|
|
61
|
+
get: function () {
|
|
62
|
+
return __state_js.EMPTY_SERIES;
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
Object.defineProperty(exports, 'FORMAT_KIND_TYPES', {
|
|
66
|
+
enumerable: true,
|
|
67
|
+
get: function () {
|
|
68
|
+
return __format_js.FORMAT_KIND_TYPES;
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
Object.defineProperty(exports, 'STROKE_DASHARRAY', {
|
|
72
|
+
enumerable: true,
|
|
73
|
+
get: function () {
|
|
74
|
+
return __state_js.STROKE_DASHARRAY;
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
Object.defineProperty(exports, 'TrendPill', {
|
|
78
|
+
enumerable: true,
|
|
79
|
+
get: function () {
|
|
80
|
+
return __default_analytics_chart_tooltip_js.TrendPill;
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
Object.defineProperty(exports, 'buildRampColors', {
|
|
84
|
+
enumerable: true,
|
|
85
|
+
get: function () {
|
|
86
|
+
return __palette_js.buildRampColors;
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
Object.defineProperty(exports, 'buildSegmentThemeMap', {
|
|
90
|
+
enumerable: true,
|
|
91
|
+
get: function () {
|
|
92
|
+
return __palette_js.buildSegmentThemeMap;
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
Object.defineProperty(exports, 'computeLocalInProgressIdx', {
|
|
96
|
+
enumerable: true,
|
|
97
|
+
get: function () {
|
|
98
|
+
return __state_js.computeLocalInProgressIdx;
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
Object.defineProperty(exports, 'findAnnotationsLayer', {
|
|
102
|
+
enumerable: true,
|
|
103
|
+
get: function () {
|
|
104
|
+
return __state_js.findAnnotationsLayer;
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
Object.defineProperty(exports, 'findCompareLayer', {
|
|
108
|
+
enumerable: true,
|
|
109
|
+
get: function () {
|
|
110
|
+
return __state_js.findCompareLayer;
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
Object.defineProperty(exports, 'findLayerById', {
|
|
114
|
+
enumerable: true,
|
|
115
|
+
get: function () {
|
|
116
|
+
return __state_js.findLayerById;
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
Object.defineProperty(exports, 'findPrimaryLayer', {
|
|
120
|
+
enumerable: true,
|
|
121
|
+
get: function () {
|
|
122
|
+
return __state_js.findPrimaryLayer;
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
Object.defineProperty(exports, 'formatDelta', {
|
|
126
|
+
enumerable: true,
|
|
127
|
+
get: function () {
|
|
128
|
+
return __format_js.formatDelta;
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
Object.defineProperty(exports, 'formatValue', {
|
|
132
|
+
enumerable: true,
|
|
133
|
+
get: function () {
|
|
134
|
+
return __format_js.formatValue;
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
Object.defineProperty(exports, 'isAnalyticsChartDataLayer', {
|
|
138
|
+
enumerable: true,
|
|
139
|
+
get: function () {
|
|
140
|
+
return __state_js.isAnalyticsChartDataLayer;
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
Object.defineProperty(exports, 'isTimeseriesState', {
|
|
144
|
+
enumerable: true,
|
|
145
|
+
get: function () {
|
|
146
|
+
return __state_js.isTimeseriesState;
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
Object.defineProperty(exports, 'patchLayerById', {
|
|
150
|
+
enumerable: true,
|
|
151
|
+
get: function () {
|
|
152
|
+
return __state_js.patchLayerById;
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
Object.defineProperty(exports, 'pointValue', {
|
|
156
|
+
enumerable: true,
|
|
157
|
+
get: function () {
|
|
158
|
+
return __types_js.pointValue;
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
Object.defineProperty(exports, 'resolveAnalyticsChartPalette', {
|
|
162
|
+
enumerable: true,
|
|
163
|
+
get: function () {
|
|
164
|
+
return __palette_js.resolveAnalyticsChartPalette;
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
Object.defineProperty(exports, 'resolveAnalyticsChartStrings', {
|
|
168
|
+
enumerable: true,
|
|
169
|
+
get: function () {
|
|
170
|
+
return __strings_js.resolveAnalyticsChartStrings;
|
|
171
|
+
}
|
|
172
|
+
});
|
|
173
|
+
Object.defineProperty(exports, 'resolveDataLayerStyle', {
|
|
174
|
+
enumerable: true,
|
|
175
|
+
get: function () {
|
|
176
|
+
return __state_js.resolveDataLayerStyle;
|
|
177
|
+
}
|
|
178
|
+
});
|
|
179
|
+
Object.defineProperty(exports, 'setLayerById', {
|
|
180
|
+
enumerable: true,
|
|
181
|
+
get: function () {
|
|
182
|
+
return __state_js.setLayerById;
|
|
183
|
+
}
|
|
184
|
+
});
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { AnalyticsChartPalette, AnalyticsChartSegmentRamp, AnalyticsChartSeries } from "./types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/components/analytics-chart/palette.d.ts
|
|
4
|
+
declare const ANALYTICS_CHART_DEFAULT_PALETTE: AnalyticsChartPalette;
|
|
5
|
+
declare function resolveAnalyticsChartPalette(override: Partial<AnalyticsChartPalette> | undefined): AnalyticsChartPalette;
|
|
6
|
+
/** Expand a ramp into N colors for a given theme. */
|
|
7
|
+
declare function buildRampColors(ramp: AnalyticsChartSegmentRamp, count: number, theme: "light" | "dark"): string[];
|
|
8
|
+
/** Per-segment light/dark colors for `ChartConfig.theme` (SVG only; siblings use inline vars). */
|
|
9
|
+
declare function buildSegmentThemeMap(series: readonly AnalyticsChartSeries[], ramp: AnalyticsChartSegmentRamp): Record<string, {
|
|
10
|
+
light: string;
|
|
11
|
+
dark: string;
|
|
12
|
+
}>;
|
|
13
|
+
//#endregion
|
|
14
|
+
export { ANALYTICS_CHART_DEFAULT_PALETTE, buildRampColors, buildSegmentThemeMap, resolveAnalyticsChartPalette };
|
|
15
|
+
//# sourceMappingURL=palette.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"palette.d.ts","names":[],"sources":["../../../src/components/analytics-chart/palette.ts"],"mappings":";;;cAMa,+BAAA,EAAiC,qBAAA;AAAA,iBAiB9B,4BAAA,CACd,QAAA,EAAU,OAAA,CAAQ,qBAAA,gBACjB,qBAAA;AAnBH;AAAA,iBA4BgB,eAAA,CACd,IAAA,EAAM,yBAAA,EACN,KAAA,UACA,KAAA;;iBAmBc,oBAAA,CACd,MAAA,WAAiB,oBAAA,IACjB,IAAA,EAAM,yBAAA,GACL,MAAA;EAAiB,KAAA;EAAe,IAAA;AAAA"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
|
+
|
|
3
|
+
//#region src/components/analytics-chart/palette.ts
|
|
4
|
+
const ANALYTICS_CHART_DEFAULT_PALETTE = {
|
|
5
|
+
primary: {
|
|
6
|
+
kind: "procedural",
|
|
7
|
+
hue: 220,
|
|
8
|
+
sat: 78,
|
|
9
|
+
shadeRangeLight: [28, 62],
|
|
10
|
+
shadeRangeDark: [52, 82]
|
|
11
|
+
},
|
|
12
|
+
compare: {
|
|
13
|
+
kind: "procedural",
|
|
14
|
+
hue: 38,
|
|
15
|
+
sat: 92,
|
|
16
|
+
shadeRangeLight: [28, 62],
|
|
17
|
+
shadeRangeDark: [52, 82]
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
function resolveAnalyticsChartPalette(override) {
|
|
21
|
+
if (!override) return ANALYTICS_CHART_DEFAULT_PALETTE;
|
|
22
|
+
return {
|
|
23
|
+
primary: override.primary ?? ANALYTICS_CHART_DEFAULT_PALETTE.primary,
|
|
24
|
+
compare: override.compare ?? ANALYTICS_CHART_DEFAULT_PALETTE.compare
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
/** Expand a ramp into N colors for a given theme. */
|
|
28
|
+
function buildRampColors(ramp, count, theme) {
|
|
29
|
+
if (ramp.kind === "explicit") {
|
|
30
|
+
const list = theme === "light" ? ramp.light : ramp.dark;
|
|
31
|
+
if (list.length === 0) return Array.from({ length: count }, () => "#888");
|
|
32
|
+
return Array.from({ length: count }, (_, i) => list[i < list.length ? i : list.length - 1]);
|
|
33
|
+
}
|
|
34
|
+
const range = theme === "light" ? ramp.shadeRangeLight : ramp.shadeRangeDark;
|
|
35
|
+
return Array.from({ length: count }, (_, i) => {
|
|
36
|
+
const t = count <= 1 ? .5 : i / (count - 1);
|
|
37
|
+
const l = range[0] + t * (range[1] - range[0]);
|
|
38
|
+
return `hsl(${ramp.hue} ${ramp.sat}% ${l.toFixed(1)}%)`;
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
/** Per-segment light/dark colors for `ChartConfig.theme` (SVG only; siblings use inline vars). */
|
|
42
|
+
function buildSegmentThemeMap(series, ramp) {
|
|
43
|
+
const light = buildRampColors(ramp, series.length, "light");
|
|
44
|
+
const dark = buildRampColors(ramp, series.length, "dark");
|
|
45
|
+
const out = {};
|
|
46
|
+
series.forEach((s, i) => {
|
|
47
|
+
out[s.key] = {
|
|
48
|
+
light: light[i],
|
|
49
|
+
dark: dark[i]
|
|
50
|
+
};
|
|
51
|
+
});
|
|
52
|
+
return out;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
//#endregion
|
|
56
|
+
exports.ANALYTICS_CHART_DEFAULT_PALETTE = ANALYTICS_CHART_DEFAULT_PALETTE;
|
|
57
|
+
exports.buildRampColors = buildRampColors;
|
|
58
|
+
exports.buildSegmentThemeMap = buildSegmentThemeMap;
|
|
59
|
+
exports.resolveAnalyticsChartPalette = resolveAnalyticsChartPalette;
|
|
60
|
+
//# sourceMappingURL=palette.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"palette.js","names":[],"sources":["../../../src/components/analytics-chart/palette.ts"],"sourcesContent":["import type {\n AnalyticsChartPalette,\n AnalyticsChartSegmentRamp,\n AnalyticsChartSeries,\n} from \"./types\";\n\nexport const ANALYTICS_CHART_DEFAULT_PALETTE: AnalyticsChartPalette = {\n primary: {\n kind: \"procedural\",\n hue: 220,\n sat: 78,\n shadeRangeLight: [28, 62],\n shadeRangeDark: [52, 82],\n },\n compare: {\n kind: \"procedural\",\n hue: 38,\n sat: 92,\n shadeRangeLight: [28, 62],\n shadeRangeDark: [52, 82],\n },\n};\n\nexport function resolveAnalyticsChartPalette(\n override: Partial<AnalyticsChartPalette> | undefined,\n): AnalyticsChartPalette {\n if (!override) return ANALYTICS_CHART_DEFAULT_PALETTE;\n return {\n primary: override.primary ?? ANALYTICS_CHART_DEFAULT_PALETTE.primary,\n compare: override.compare ?? ANALYTICS_CHART_DEFAULT_PALETTE.compare,\n };\n}\n\n/** Expand a ramp into N colors for a given theme. */\nexport function buildRampColors(\n ramp: AnalyticsChartSegmentRamp,\n count: number,\n theme: \"light\" | \"dark\",\n): string[] {\n if (ramp.kind === \"explicit\") {\n const list = theme === \"light\" ? ramp.light : ramp.dark;\n if (list.length === 0) return Array.from({ length: count }, () => \"#888\");\n return Array.from(\n { length: count },\n (_, i) => list[i < list.length ? i : list.length - 1]!,\n );\n }\n const range = theme === \"light\" ? ramp.shadeRangeLight : ramp.shadeRangeDark;\n return Array.from({ length: count }, (_, i) => {\n const t = count <= 1 ? 0.5 : i / (count - 1);\n const l = range[0] + t * (range[1] - range[0]);\n return `hsl(${ramp.hue} ${ramp.sat}% ${l.toFixed(1)}%)`;\n });\n}\n\n/** Per-segment light/dark colors for `ChartConfig.theme` (SVG only; siblings use inline vars). */\nexport function buildSegmentThemeMap(\n series: readonly AnalyticsChartSeries[],\n ramp: AnalyticsChartSegmentRamp,\n): Record<string, { light: string, dark: string }> {\n const light = buildRampColors(ramp, series.length, \"light\");\n const dark = buildRampColors(ramp, series.length, \"dark\");\n const out: Record<string, { light: string, dark: string }> = {};\n series.forEach((s, i) => {\n out[s.key] = { light: light[i]!, dark: dark[i]! };\n });\n return out;\n}\n"],"mappings":";;;AAMA,MAAa,kCAAyD;CACpE,SAAS;EACP,MAAM;EACN,KAAK;EACL,KAAK;EACL,iBAAiB,CAAC,IAAI,GAAG;EACzB,gBAAgB,CAAC,IAAI,GAAG;EACzB;CACD,SAAS;EACP,MAAM;EACN,KAAK;EACL,KAAK;EACL,iBAAiB,CAAC,IAAI,GAAG;EACzB,gBAAgB,CAAC,IAAI,GAAG;EACzB;CACF;AAED,SAAgB,6BACd,UACuB;AACvB,KAAI,CAAC,SAAU,QAAO;AACtB,QAAO;EACL,SAAS,SAAS,WAAW,gCAAgC;EAC7D,SAAS,SAAS,WAAW,gCAAgC;EAC9D;;;AAIH,SAAgB,gBACd,MACA,OACA,OACU;AACV,KAAI,KAAK,SAAS,YAAY;EAC5B,MAAM,OAAO,UAAU,UAAU,KAAK,QAAQ,KAAK;AACnD,MAAI,KAAK,WAAW,EAAG,QAAO,MAAM,KAAK,EAAE,QAAQ,OAAO,QAAQ,OAAO;AACzE,SAAO,MAAM,KACX,EAAE,QAAQ,OAAO,GAChB,GAAG,MAAM,KAAK,IAAI,KAAK,SAAS,IAAI,KAAK,SAAS,GACpD;;CAEH,MAAM,QAAQ,UAAU,UAAU,KAAK,kBAAkB,KAAK;AAC9D,QAAO,MAAM,KAAK,EAAE,QAAQ,OAAO,GAAG,GAAG,MAAM;EAC7C,MAAM,IAAI,SAAS,IAAI,KAAM,KAAK,QAAQ;EAC1C,MAAM,IAAI,MAAM,KAAK,KAAK,MAAM,KAAK,MAAM;AAC3C,SAAO,OAAO,KAAK,IAAI,GAAG,KAAK,IAAI,IAAI,EAAE,QAAQ,EAAE,CAAC;GACpD;;;AAIJ,SAAgB,qBACd,QACA,MACiD;CACjD,MAAM,QAAQ,gBAAgB,MAAM,OAAO,QAAQ,QAAQ;CAC3D,MAAM,OAAO,gBAAgB,MAAM,OAAO,QAAQ,OAAO;CACzD,MAAM,MAAuD,EAAE;AAC/D,QAAO,SAAS,GAAG,MAAM;AACvB,MAAI,EAAE,OAAO;GAAE,OAAO,MAAM;GAAK,MAAM,KAAK;GAAK;GACjD;AACF,QAAO"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { AnalyticsChartDataLayer, AnalyticsChartSeries } from "./types.js";
|
|
2
|
+
import { ReactNode } from "react";
|
|
3
|
+
|
|
4
|
+
//#region src/components/analytics-chart/render-data-series.d.ts
|
|
5
|
+
/** Area layers use fill-only `<Area>` plus `<Line>` for the top edge (not Recharts' closed-path stroke). */
|
|
6
|
+
type RenderDataSeriesArgs = {
|
|
7
|
+
layer: AnalyticsChartDataLayer;
|
|
8
|
+
segmented: boolean;
|
|
9
|
+
segmentSeries: readonly AnalyticsChartSeries[];
|
|
10
|
+
segKey: (segKey: string) => string;
|
|
11
|
+
stackId: string;
|
|
12
|
+
strokeDasharray: string | undefined;
|
|
13
|
+
segmentedStrokeDasharray: string | undefined;
|
|
14
|
+
fillOpacity: number;
|
|
15
|
+
segmentedFillOpacity: number;
|
|
16
|
+
baseOpacity?: number;
|
|
17
|
+
strokeWidth: number;
|
|
18
|
+
segmentedStrokeWidth: number;
|
|
19
|
+
inProgressKeys: {
|
|
20
|
+
solid: string;
|
|
21
|
+
dashed: string;
|
|
22
|
+
} | null;
|
|
23
|
+
};
|
|
24
|
+
/** Return value must be spread into `<ComposedChart>` as siblings — do not wrap in `<Fragment>`. */
|
|
25
|
+
declare function renderDataSeries(args: RenderDataSeriesArgs): ReactNode[];
|
|
26
|
+
//#endregion
|
|
27
|
+
export { RenderDataSeriesArgs, renderDataSeries };
|
|
28
|
+
//# sourceMappingURL=render-data-series.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render-data-series.d.ts","names":[],"sources":["../../../src/components/analytics-chart/render-data-series.tsx"],"mappings":";;;;;KAQY,oBAAA;EACV,KAAA,EAAO,uBAAA;EACP,SAAA;EACA,aAAA,WAAwB,oBAAA;EACxB,MAAA,GAAS,MAAA;EACT,OAAA;EACA,eAAA;EACA,wBAAA;EACA,WAAA;EACA,oBAAA;EACA,WAAA;EACA,WAAA;EACA,oBAAA;EACA,cAAA;IAAkB,KAAA;IAAe,MAAA;EAAA;AAAA;;iBAInB,gBAAA,CAAiB,IAAA,EAAM,oBAAA,GAAuB,SAAA"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
|
+
const require_chunk = require('../../chunk-BE-pF4vm.js');
|
|
3
|
+
let react_jsx_runtime = require("react/jsx-runtime");
|
|
4
|
+
let recharts = require("recharts");
|
|
5
|
+
|
|
6
|
+
//#region src/components/analytics-chart/render-data-series.tsx
|
|
7
|
+
/** Return value must be spread into `<ComposedChart>` as siblings — do not wrap in `<Fragment>`. */
|
|
8
|
+
function renderDataSeries(args) {
|
|
9
|
+
const { layer, segmented, segmentSeries, segKey, stackId, strokeDasharray, segmentedStrokeDasharray, fillOpacity, segmentedFillOpacity, baseOpacity = 1, strokeWidth, segmentedStrokeWidth, inProgressKeys } = args;
|
|
10
|
+
const nodes = [];
|
|
11
|
+
if (segmented) {
|
|
12
|
+
segmentSeries.forEach((s, sIdx) => {
|
|
13
|
+
const key = segKey(s.key);
|
|
14
|
+
const nodeKey = `${layer.id}_seg_${s.key}`;
|
|
15
|
+
if (layer.type === "bar") {
|
|
16
|
+
const isTop = sIdx === segmentSeries.length - 1;
|
|
17
|
+
nodes.push(/* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.Bar, {
|
|
18
|
+
dataKey: key,
|
|
19
|
+
stackId,
|
|
20
|
+
fill: `var(--color-${key})`,
|
|
21
|
+
radius: isTop ? [
|
|
22
|
+
2,
|
|
23
|
+
2,
|
|
24
|
+
0,
|
|
25
|
+
0
|
|
26
|
+
] : 0,
|
|
27
|
+
isAnimationActive: false,
|
|
28
|
+
opacity: baseOpacity
|
|
29
|
+
}, nodeKey));
|
|
30
|
+
} else if (layer.type === "area") nodes.push(/* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.Area, {
|
|
31
|
+
dataKey: key,
|
|
32
|
+
stackId,
|
|
33
|
+
type: "linear",
|
|
34
|
+
fill: `var(--color-${key})`,
|
|
35
|
+
fillOpacity: segmentedFillOpacity,
|
|
36
|
+
stroke: `var(--color-${key})`,
|
|
37
|
+
strokeWidth: segmentedStrokeWidth,
|
|
38
|
+
strokeDasharray: segmentedStrokeDasharray,
|
|
39
|
+
isAnimationActive: false,
|
|
40
|
+
opacity: baseOpacity
|
|
41
|
+
}, nodeKey));
|
|
42
|
+
else nodes.push(/* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.Line, {
|
|
43
|
+
dataKey: key,
|
|
44
|
+
type: "linear",
|
|
45
|
+
stroke: `var(--color-${key})`,
|
|
46
|
+
strokeWidth,
|
|
47
|
+
strokeDasharray: segmentedStrokeDasharray,
|
|
48
|
+
dot: false,
|
|
49
|
+
isAnimationActive: false,
|
|
50
|
+
opacity: baseOpacity
|
|
51
|
+
}, nodeKey));
|
|
52
|
+
});
|
|
53
|
+
return nodes;
|
|
54
|
+
}
|
|
55
|
+
if (layer.type === "bar") {
|
|
56
|
+
nodes.push(/* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.Bar, {
|
|
57
|
+
dataKey: layer.id,
|
|
58
|
+
fill: `var(--color-${layer.id})`,
|
|
59
|
+
radius: 2,
|
|
60
|
+
isAnimationActive: false
|
|
61
|
+
}, `${layer.id}_main`));
|
|
62
|
+
return nodes;
|
|
63
|
+
}
|
|
64
|
+
if (layer.type === "area") nodes.push(/* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.Area, {
|
|
65
|
+
dataKey: layer.id,
|
|
66
|
+
type: "linear",
|
|
67
|
+
fill: `var(--color-${layer.id})`,
|
|
68
|
+
fillOpacity,
|
|
69
|
+
stroke: "none",
|
|
70
|
+
isAnimationActive: false
|
|
71
|
+
}, `${layer.id}_area`));
|
|
72
|
+
if (inProgressKeys) {
|
|
73
|
+
nodes.push(/* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.Line, {
|
|
74
|
+
dataKey: inProgressKeys.solid,
|
|
75
|
+
type: "linear",
|
|
76
|
+
stroke: `var(--color-${layer.id})`,
|
|
77
|
+
strokeWidth,
|
|
78
|
+
strokeDasharray,
|
|
79
|
+
dot: false,
|
|
80
|
+
isAnimationActive: false,
|
|
81
|
+
connectNulls: true
|
|
82
|
+
}, `${layer.id}_solid`));
|
|
83
|
+
nodes.push(/* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.Line, {
|
|
84
|
+
dataKey: inProgressKeys.dashed,
|
|
85
|
+
type: "linear",
|
|
86
|
+
stroke: `var(--color-${layer.id})`,
|
|
87
|
+
strokeWidth,
|
|
88
|
+
strokeDasharray: "4 4",
|
|
89
|
+
dot: false,
|
|
90
|
+
isAnimationActive: false,
|
|
91
|
+
connectNulls: true,
|
|
92
|
+
opacity: .85
|
|
93
|
+
}, `${layer.id}_dashed`));
|
|
94
|
+
} else nodes.push(/* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.Line, {
|
|
95
|
+
dataKey: layer.id,
|
|
96
|
+
type: "linear",
|
|
97
|
+
stroke: `var(--color-${layer.id})`,
|
|
98
|
+
strokeWidth,
|
|
99
|
+
strokeDasharray,
|
|
100
|
+
dot: false,
|
|
101
|
+
isAnimationActive: false,
|
|
102
|
+
opacity: baseOpacity
|
|
103
|
+
}, `${layer.id}_line`));
|
|
104
|
+
return nodes;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
//#endregion
|
|
108
|
+
exports.renderDataSeries = renderDataSeries;
|
|
109
|
+
//# sourceMappingURL=render-data-series.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render-data-series.js","names":["Bar","Area","Line"],"sources":["../../../src/components/analytics-chart/render-data-series.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { Area, Bar, Line } from \"recharts\";\nimport type {\n AnalyticsChartDataLayer,\n AnalyticsChartSeries,\n} from \"./types\";\n\n/** Area layers use fill-only `<Area>` plus `<Line>` for the top edge (not Recharts' closed-path stroke). */\nexport type RenderDataSeriesArgs = {\n layer: AnalyticsChartDataLayer,\n segmented: boolean,\n segmentSeries: readonly AnalyticsChartSeries[],\n segKey: (segKey: string) => string,\n stackId: string,\n strokeDasharray: string | undefined,\n segmentedStrokeDasharray: string | undefined,\n fillOpacity: number,\n segmentedFillOpacity: number,\n baseOpacity?: number,\n strokeWidth: number,\n segmentedStrokeWidth: number,\n inProgressKeys: { solid: string, dashed: string } | null,\n};\n\n/** Return value must be spread into `<ComposedChart>` as siblings — do not wrap in `<Fragment>`. */\nexport function renderDataSeries(args: RenderDataSeriesArgs): ReactNode[] {\n const {\n layer,\n segmented,\n segmentSeries,\n segKey,\n stackId,\n strokeDasharray,\n segmentedStrokeDasharray,\n fillOpacity,\n segmentedFillOpacity,\n baseOpacity = 1,\n strokeWidth,\n segmentedStrokeWidth,\n inProgressKeys,\n } = args;\n\n const nodes: ReactNode[] = [];\n\n if (segmented) {\n segmentSeries.forEach((s, sIdx) => {\n const key = segKey(s.key);\n const nodeKey = `${layer.id}_seg_${s.key}`;\n if (layer.type === \"bar\") {\n const isTop = sIdx === segmentSeries.length - 1;\n nodes.push(\n <Bar\n key={nodeKey}\n dataKey={key}\n stackId={stackId}\n fill={`var(--color-${key})`}\n radius={isTop ? [2, 2, 0, 0] : 0}\n isAnimationActive={false}\n opacity={baseOpacity}\n />,\n );\n } else if (layer.type === \"area\") {\n nodes.push(\n <Area\n key={nodeKey}\n dataKey={key}\n stackId={stackId}\n type=\"linear\"\n fill={`var(--color-${key})`}\n fillOpacity={segmentedFillOpacity}\n stroke={`var(--color-${key})`}\n strokeWidth={segmentedStrokeWidth}\n strokeDasharray={segmentedStrokeDasharray}\n isAnimationActive={false}\n opacity={baseOpacity}\n />,\n );\n } else {\n nodes.push(\n <Line\n key={nodeKey}\n dataKey={key}\n type=\"linear\"\n stroke={`var(--color-${key})`}\n strokeWidth={strokeWidth}\n strokeDasharray={segmentedStrokeDasharray}\n dot={false}\n isAnimationActive={false}\n opacity={baseOpacity}\n />,\n );\n }\n });\n return nodes;\n }\n\n if (layer.type === \"bar\") {\n nodes.push(\n <Bar\n key={`${layer.id}_main`}\n dataKey={layer.id}\n fill={`var(--color-${layer.id})`}\n radius={2}\n isAnimationActive={false}\n />,\n );\n return nodes;\n }\n\n if (layer.type === \"area\") {\n nodes.push(\n <Area\n key={`${layer.id}_area`}\n dataKey={layer.id}\n type=\"linear\"\n fill={`var(--color-${layer.id})`}\n fillOpacity={fillOpacity}\n stroke=\"none\"\n isAnimationActive={false}\n />,\n );\n }\n\n if (inProgressKeys) {\n nodes.push(\n <Line\n key={`${layer.id}_solid`}\n dataKey={inProgressKeys.solid}\n type=\"linear\"\n stroke={`var(--color-${layer.id})`}\n strokeWidth={strokeWidth}\n strokeDasharray={strokeDasharray}\n dot={false}\n isAnimationActive={false}\n connectNulls\n />,\n );\n nodes.push(\n <Line\n key={`${layer.id}_dashed`}\n dataKey={inProgressKeys.dashed}\n type=\"linear\"\n stroke={`var(--color-${layer.id})`}\n strokeWidth={strokeWidth}\n strokeDasharray=\"4 4\"\n dot={false}\n isAnimationActive={false}\n connectNulls\n opacity={0.85}\n />,\n );\n } else {\n nodes.push(\n <Line\n key={`${layer.id}_line`}\n dataKey={layer.id}\n type=\"linear\"\n stroke={`var(--color-${layer.id})`}\n strokeWidth={strokeWidth}\n strokeDasharray={strokeDasharray}\n dot={false}\n isAnimationActive={false}\n opacity={baseOpacity}\n />,\n );\n }\n\n return nodes;\n}\n"],"mappings":";;;;;;;AAyBA,SAAgB,iBAAiB,MAAyC;CACxE,MAAM,EACJ,OACA,WACA,eACA,QACA,SACA,iBACA,0BACA,aACA,sBACA,cAAc,GACd,aACA,sBACA,mBACE;CAEJ,MAAM,QAAqB,EAAE;AAE7B,KAAI,WAAW;AACb,gBAAc,SAAS,GAAG,SAAS;GACjC,MAAM,MAAM,OAAO,EAAE,IAAI;GACzB,MAAM,UAAU,GAAG,MAAM,GAAG,OAAO,EAAE;AACrC,OAAI,MAAM,SAAS,OAAO;IACxB,MAAM,QAAQ,SAAS,cAAc,SAAS;AAC9C,UAAM,KACJ,2CAACA;KAEC,SAAS;KACA;KACT,MAAM,eAAe,IAAI;KACzB,QAAQ,QAAQ;MAAC;MAAG;MAAG;MAAG;MAAE,GAAG;KAC/B,mBAAmB;KACnB,SAAS;OANJ,QAOL,CACH;cACQ,MAAM,SAAS,OACxB,OAAM,KACJ,2CAACC;IAEC,SAAS;IACA;IACT,MAAK;IACL,MAAM,eAAe,IAAI;IACzB,aAAa;IACb,QAAQ,eAAe,IAAI;IAC3B,aAAa;IACb,iBAAiB;IACjB,mBAAmB;IACnB,SAAS;MAVJ,QAWL,CACH;OAED,OAAM,KACJ,2CAACC;IAEC,SAAS;IACT,MAAK;IACL,QAAQ,eAAe,IAAI;IACd;IACb,iBAAiB;IACjB,KAAK;IACL,mBAAmB;IACnB,SAAS;MARJ,QASL,CACH;IAEH;AACF,SAAO;;AAGT,KAAI,MAAM,SAAS,OAAO;AACxB,QAAM,KACJ,2CAACF;GAEC,SAAS,MAAM;GACf,MAAM,eAAe,MAAM,GAAG;GAC9B,QAAQ;GACR,mBAAmB;KAJd,GAAG,MAAM,GAAG,OAKjB,CACH;AACD,SAAO;;AAGT,KAAI,MAAM,SAAS,OACjB,OAAM,KACJ,2CAACC;EAEC,SAAS,MAAM;EACf,MAAK;EACL,MAAM,eAAe,MAAM,GAAG;EACjB;EACb,QAAO;EACP,mBAAmB;IANd,GAAG,MAAM,GAAG,OAOjB,CACH;AAGH,KAAI,gBAAgB;AAClB,QAAM,KACJ,2CAACC;GAEC,SAAS,eAAe;GACxB,MAAK;GACL,QAAQ,eAAe,MAAM,GAAG;GACnB;GACI;GACjB,KAAK;GACL,mBAAmB;GACnB;KARK,GAAG,MAAM,GAAG,QASjB,CACH;AACD,QAAM,KACJ,2CAACA;GAEC,SAAS,eAAe;GACxB,MAAK;GACL,QAAQ,eAAe,MAAM,GAAG;GACnB;GACb,iBAAgB;GAChB,KAAK;GACL,mBAAmB;GACnB;GACA,SAAS;KATJ,GAAG,MAAM,GAAG,SAUjB,CACH;OAED,OAAM,KACJ,2CAACA;EAEC,SAAS,MAAM;EACf,MAAK;EACL,QAAQ,eAAe,MAAM,GAAG;EACnB;EACI;EACjB,KAAK;EACL,mBAAmB;EACnB,SAAS;IARJ,GAAG,MAAM,GAAG,OASjB,CACH;AAGH,QAAO"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { AnalyticsChartAnnotationsLayer, AnalyticsChartDataLayer, AnalyticsChartLayer, AnalyticsChartLayerType, AnalyticsChartLayers, AnalyticsChartSeries, AnalyticsChartState, AnalyticsChartStrokeStyle, AnalyticsChartTimeseriesState } from "./types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/components/analytics-chart/state.d.ts
|
|
4
|
+
declare const STROKE_DASHARRAY: Record<AnalyticsChartStrokeStyle, string | undefined>;
|
|
5
|
+
declare const EMPTY_SERIES: readonly AnalyticsChartSeries[];
|
|
6
|
+
declare const EMPTY_MATRIX: readonly (readonly number[])[];
|
|
7
|
+
/** Generic non-segmented defaults; demos swap in segment data. */
|
|
8
|
+
declare const ANALYTICS_CHART_DEFAULT_LAYERS: AnalyticsChartLayers;
|
|
9
|
+
/**
|
|
10
|
+
* Default state for `AnalyticsChart`. ALWAYS spread from this when
|
|
11
|
+
* initializing state; never build the state object by hand. Ships with
|
|
12
|
+
* three pre-configured layers (primary, compare, annotations) — map over
|
|
13
|
+
* `layers` to override individual ones.
|
|
14
|
+
*
|
|
15
|
+
* ```tsx
|
|
16
|
+
* const [state, setState] = React.useState({
|
|
17
|
+
* ...ANALYTICS_CHART_DEFAULT_STATE,
|
|
18
|
+
* layers: ANALYTICS_CHART_DEFAULT_STATE.layers.map(l =>
|
|
19
|
+
* l.kind === "compare" ? { ...l, visible: false } : l
|
|
20
|
+
* ),
|
|
21
|
+
* });
|
|
22
|
+
* ```
|
|
23
|
+
*
|
|
24
|
+
* See the JSDoc on `AnalyticsChart` for the full contract, examples, and
|
|
25
|
+
* the segment data format.
|
|
26
|
+
*/
|
|
27
|
+
declare const ANALYTICS_CHART_DEFAULT_STATE: AnalyticsChartState;
|
|
28
|
+
declare function findPrimaryLayer(layers: AnalyticsChartLayers): AnalyticsChartDataLayer | undefined;
|
|
29
|
+
declare function findCompareLayer(layers: AnalyticsChartLayers): AnalyticsChartDataLayer | undefined;
|
|
30
|
+
declare function findAnnotationsLayer(layers: AnalyticsChartLayers): AnalyticsChartAnnotationsLayer | undefined;
|
|
31
|
+
declare function findLayerById(layers: AnalyticsChartLayers, id: string): AnalyticsChartLayer | undefined;
|
|
32
|
+
declare function isAnalyticsChartDataLayer(l: AnalyticsChartLayer): l is AnalyticsChartDataLayer;
|
|
33
|
+
declare function isTimeseriesState(state: AnalyticsChartState): state is AnalyticsChartTimeseriesState;
|
|
34
|
+
/** Replace a single layer (looked up by id) with a new layer object. */
|
|
35
|
+
declare function setLayerById(layers: AnalyticsChartLayers, id: string, next: AnalyticsChartLayer): AnalyticsChartLayers;
|
|
36
|
+
/** Shallow-patch fields on a layer by id. The patch type is deliberately
|
|
37
|
+
* loose — callers are trusted to supply only fields the layer's
|
|
38
|
+
* `kind`/`type` actually owns. */
|
|
39
|
+
declare function patchLayerById(layers: AnalyticsChartLayers, id: string, patch: Record<string, unknown>): AnalyticsChartLayers;
|
|
40
|
+
type ResolvedDataLayerStyle = {
|
|
41
|
+
color: string;
|
|
42
|
+
type: AnalyticsChartLayerType;
|
|
43
|
+
strokeStyle: AnalyticsChartStrokeStyle;
|
|
44
|
+
fillOpacity: number;
|
|
45
|
+
};
|
|
46
|
+
declare function resolveDataLayerStyle(layer: AnalyticsChartDataLayer): ResolvedDataLayerStyle;
|
|
47
|
+
/** Translate a layer's absolute `inProgressFromIndex` into a local index
|
|
48
|
+
* inside the visible window. Returns `null` when the marker sits beyond
|
|
49
|
+
* the visible window, `0` when it sits before the window (whole window
|
|
50
|
+
* is dashed), or the clamped local index otherwise. */
|
|
51
|
+
declare function computeLocalInProgressIdx(absIdx: number | null | undefined, visibleStart: number, visibleEnd: number): number | null;
|
|
52
|
+
//#endregion
|
|
53
|
+
export { ANALYTICS_CHART_DEFAULT_LAYERS, ANALYTICS_CHART_DEFAULT_STATE, EMPTY_MATRIX, EMPTY_SERIES, ResolvedDataLayerStyle, STROKE_DASHARRAY, computeLocalInProgressIdx, findAnnotationsLayer, findCompareLayer, findLayerById, findPrimaryLayer, isAnalyticsChartDataLayer, isTimeseriesState, patchLayerById, resolveDataLayerStyle, setLayerById };
|
|
54
|
+
//# sourceMappingURL=state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.d.ts","names":[],"sources":["../../../src/components/analytics-chart/state.ts"],"mappings":";;;cAaa,gBAAA,EAAkB,MAAA,CAAO,yBAAA;AAAA,cAMzB,YAAA,WAAuB,oBAAA;AAAA,cACvB,YAAA;;cAGA,8BAAA,EAAgC,oBAAA;;;AAJ7C;;;;;AACA;;;;;AAGA;;;;;AA6CA;cAAa,6BAAA,EAA+B,mBAAA;AAAA,iBAY5B,gBAAA,CAAiB,MAAA,EAAQ,oBAAA,GAAuB,uBAAA;AAAA,iBAIhD,gBAAA,CAAiB,MAAA,EAAQ,oBAAA,GAAuB,uBAAA;AAAA,iBAIhD,oBAAA,CAAqB,MAAA,EAAQ,oBAAA,GAAuB,8BAAA;AAAA,iBAKpD,aAAA,CACd,MAAA,EAAQ,oBAAA,EACR,EAAA,WACC,mBAAA;AAAA,iBAIa,yBAAA,CAA0B,CAAA,EAAG,mBAAA,GAAsB,CAAA,IAAK,uBAAA;AAAA,iBAIxD,iBAAA,CACd,KAAA,EAAO,mBAAA,GACN,KAAA,IAAS,6BAAA;;iBAKI,YAAA,CACd,MAAA,EAAQ,oBAAA,EACR,EAAA,UACA,IAAA,EAAM,mBAAA,GACL,oBAAA;;;;iBAOa,cAAA,CACd,MAAA,EAAQ,oBAAA,EACR,EAAA,UACA,KAAA,EAAO,MAAA,oBACN,oBAAA;AAAA,KAIS,sBAAA;EACV,KAAA;EACA,IAAA,EAAM,uBAAA;EACN,WAAA,EAAa,yBAAA;EACb,WAAA;AAAA;AAAA,iBAGc,qBAAA,CACd,KAAA,EAAO,uBAAA,GACN,sBAAA;;;AAnDH;;iBAkEgB,yBAAA,CACd,MAAA,6BACA,YAAA,UACA,UAAA"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
|
+
const require_chunk = require('../../chunk-BE-pF4vm.js');
|
|
3
|
+
let __format_js = require("./format.js");
|
|
4
|
+
|
|
5
|
+
//#region src/components/analytics-chart/state.ts
|
|
6
|
+
const STROKE_DASHARRAY = {
|
|
7
|
+
solid: void 0,
|
|
8
|
+
dashed: "5 4",
|
|
9
|
+
dotted: "1 4"
|
|
10
|
+
};
|
|
11
|
+
const EMPTY_SERIES = [];
|
|
12
|
+
const EMPTY_MATRIX = [];
|
|
13
|
+
/** Generic non-segmented defaults; demos swap in segment data. */
|
|
14
|
+
const ANALYTICS_CHART_DEFAULT_LAYERS = [
|
|
15
|
+
{
|
|
16
|
+
id: "primary",
|
|
17
|
+
kind: "primary",
|
|
18
|
+
label: "Current",
|
|
19
|
+
visible: true,
|
|
20
|
+
color: "#2563eb",
|
|
21
|
+
segmented: false,
|
|
22
|
+
type: "area",
|
|
23
|
+
strokeStyle: "solid",
|
|
24
|
+
fillOpacity: .22,
|
|
25
|
+
inProgressFromIndex: null
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
id: "compare",
|
|
29
|
+
kind: "compare",
|
|
30
|
+
label: "Previous period",
|
|
31
|
+
visible: true,
|
|
32
|
+
color: "#f59e0b",
|
|
33
|
+
segmented: false,
|
|
34
|
+
type: "line",
|
|
35
|
+
strokeStyle: "dashed",
|
|
36
|
+
inProgressFromIndex: null
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
id: "annotations",
|
|
40
|
+
kind: "annotations",
|
|
41
|
+
label: "Annotations",
|
|
42
|
+
visible: true,
|
|
43
|
+
color: "#f59e0b"
|
|
44
|
+
}
|
|
45
|
+
];
|
|
46
|
+
/**
|
|
47
|
+
* Default state for `AnalyticsChart`. ALWAYS spread from this when
|
|
48
|
+
* initializing state; never build the state object by hand. Ships with
|
|
49
|
+
* three pre-configured layers (primary, compare, annotations) — map over
|
|
50
|
+
* `layers` to override individual ones.
|
|
51
|
+
*
|
|
52
|
+
* ```tsx
|
|
53
|
+
* const [state, setState] = React.useState({
|
|
54
|
+
* ...ANALYTICS_CHART_DEFAULT_STATE,
|
|
55
|
+
* layers: ANALYTICS_CHART_DEFAULT_STATE.layers.map(l =>
|
|
56
|
+
* l.kind === "compare" ? { ...l, visible: false } : l
|
|
57
|
+
* ),
|
|
58
|
+
* });
|
|
59
|
+
* ```
|
|
60
|
+
*
|
|
61
|
+
* See the JSDoc on `AnalyticsChart` for the full contract, examples, and
|
|
62
|
+
* the segment data format.
|
|
63
|
+
*/
|
|
64
|
+
const ANALYTICS_CHART_DEFAULT_STATE = {
|
|
65
|
+
view: "timeseries",
|
|
66
|
+
layers: ANALYTICS_CHART_DEFAULT_LAYERS,
|
|
67
|
+
xFormatKind: __format_js.DEFAULT_FORMAT_KIND.datetime,
|
|
68
|
+
yFormatKind: __format_js.DEFAULT_FORMAT_KIND.short,
|
|
69
|
+
showGrid: true,
|
|
70
|
+
showXAxis: true,
|
|
71
|
+
showYAxis: true,
|
|
72
|
+
zoomRange: null,
|
|
73
|
+
pinnedIndex: null
|
|
74
|
+
};
|
|
75
|
+
function findPrimaryLayer(layers) {
|
|
76
|
+
return layers.find((x) => x.kind === "primary");
|
|
77
|
+
}
|
|
78
|
+
function findCompareLayer(layers) {
|
|
79
|
+
return layers.find((x) => x.kind === "compare");
|
|
80
|
+
}
|
|
81
|
+
function findAnnotationsLayer(layers) {
|
|
82
|
+
return layers.find((x) => x.kind === "annotations");
|
|
83
|
+
}
|
|
84
|
+
function findLayerById(layers, id) {
|
|
85
|
+
return layers.find((l) => l.id === id);
|
|
86
|
+
}
|
|
87
|
+
function isAnalyticsChartDataLayer(l) {
|
|
88
|
+
return l.kind === "primary" || l.kind === "compare";
|
|
89
|
+
}
|
|
90
|
+
function isTimeseriesState(state) {
|
|
91
|
+
return state.view === "timeseries";
|
|
92
|
+
}
|
|
93
|
+
/** Replace a single layer (looked up by id) with a new layer object. */
|
|
94
|
+
function setLayerById(layers, id, next) {
|
|
95
|
+
return layers.map((l) => l.id === id ? next : l);
|
|
96
|
+
}
|
|
97
|
+
/** Shallow-patch fields on a layer by id. The patch type is deliberately
|
|
98
|
+
* loose — callers are trusted to supply only fields the layer's
|
|
99
|
+
* `kind`/`type` actually owns. */
|
|
100
|
+
function patchLayerById(layers, id, patch) {
|
|
101
|
+
return layers.map((l) => l.id === id ? {
|
|
102
|
+
...l,
|
|
103
|
+
...patch
|
|
104
|
+
} : l);
|
|
105
|
+
}
|
|
106
|
+
function resolveDataLayerStyle(layer) {
|
|
107
|
+
return {
|
|
108
|
+
color: layer.color,
|
|
109
|
+
type: layer.type,
|
|
110
|
+
strokeStyle: layer.type === "bar" ? "solid" : layer.strokeStyle,
|
|
111
|
+
fillOpacity: layer.type === "line" ? 0 : layer.fillOpacity
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
/** Translate a layer's absolute `inProgressFromIndex` into a local index
|
|
115
|
+
* inside the visible window. Returns `null` when the marker sits beyond
|
|
116
|
+
* the visible window, `0` when it sits before the window (whole window
|
|
117
|
+
* is dashed), or the clamped local index otherwise. */
|
|
118
|
+
function computeLocalInProgressIdx(absIdx, visibleStart, visibleEnd) {
|
|
119
|
+
if (absIdx == null) return null;
|
|
120
|
+
const local = absIdx - visibleStart;
|
|
121
|
+
if (local >= visibleEnd - visibleStart + 1) return null;
|
|
122
|
+
if (local < 0) return 0;
|
|
123
|
+
return local;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
//#endregion
|
|
127
|
+
exports.ANALYTICS_CHART_DEFAULT_LAYERS = ANALYTICS_CHART_DEFAULT_LAYERS;
|
|
128
|
+
exports.ANALYTICS_CHART_DEFAULT_STATE = ANALYTICS_CHART_DEFAULT_STATE;
|
|
129
|
+
exports.EMPTY_MATRIX = EMPTY_MATRIX;
|
|
130
|
+
exports.EMPTY_SERIES = EMPTY_SERIES;
|
|
131
|
+
exports.STROKE_DASHARRAY = STROKE_DASHARRAY;
|
|
132
|
+
exports.computeLocalInProgressIdx = computeLocalInProgressIdx;
|
|
133
|
+
exports.findAnnotationsLayer = findAnnotationsLayer;
|
|
134
|
+
exports.findCompareLayer = findCompareLayer;
|
|
135
|
+
exports.findLayerById = findLayerById;
|
|
136
|
+
exports.findPrimaryLayer = findPrimaryLayer;
|
|
137
|
+
exports.isAnalyticsChartDataLayer = isAnalyticsChartDataLayer;
|
|
138
|
+
exports.isTimeseriesState = isTimeseriesState;
|
|
139
|
+
exports.patchLayerById = patchLayerById;
|
|
140
|
+
exports.resolveDataLayerStyle = resolveDataLayerStyle;
|
|
141
|
+
exports.setLayerById = setLayerById;
|
|
142
|
+
//# sourceMappingURL=state.js.map
|