@sproutsocial/seeds-react-data-viz 0.23.1 → 0.24.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.
Files changed (49) hide show
  1. package/dist/{axis-WOeYkTO1.d.mts → axis-B61qI-nm.d.mts} +1 -15
  2. package/dist/{axis-WOeYkTO1.d.ts → axis-B78FtYLh.d.ts} +1 -15
  3. package/dist/bar/index.d.mts +2 -2
  4. package/dist/bar/index.d.ts +2 -2
  5. package/dist/bar/index.js +14 -14
  6. package/dist/bar/index.js.map +1 -1
  7. package/dist/bubble/index.d.mts +1 -1
  8. package/dist/bubble/index.d.ts +1 -1
  9. package/dist/bubble/index.js +4 -4
  10. package/dist/{chartBase-BClSc5EN.d.mts → chartBase-CptOt3V0.d.mts} +23 -1
  11. package/dist/{chartBase-CycEw2vy.d.ts → chartBase-Nl6mcTB7.d.ts} +23 -1
  12. package/dist/{chunk-GQOKCB3M.js → chunk-3P6MPBSZ.js} +212 -27
  13. package/dist/chunk-3P6MPBSZ.js.map +1 -0
  14. package/dist/{chunk-6SF6OYQA.js → chunk-MTGYEUZN.js} +3 -3
  15. package/dist/{chunk-6SF6OYQA.js.map → chunk-MTGYEUZN.js.map} +1 -1
  16. package/dist/chunk-OP6K5NDR.js +52 -0
  17. package/dist/chunk-OP6K5NDR.js.map +1 -0
  18. package/dist/donut/index.d.mts +1 -1
  19. package/dist/donut/index.d.ts +1 -1
  20. package/dist/donut/index.js +4 -4
  21. package/dist/esm/bar/index.js +10 -10
  22. package/dist/esm/bar/index.js.map +1 -1
  23. package/dist/esm/bubble/index.js +1 -1
  24. package/dist/esm/{chunk-EHKGDOMK.js → chunk-ISP4A622.js} +196 -11
  25. package/dist/esm/chunk-ISP4A622.js.map +1 -0
  26. package/dist/esm/{chunk-AEBP4NCY.js → chunk-MQDI7D54.js} +2 -2
  27. package/dist/esm/chunk-Y4RJJBJQ.js +52 -0
  28. package/dist/esm/chunk-Y4RJJBJQ.js.map +1 -0
  29. package/dist/esm/donut/index.js +1 -1
  30. package/dist/esm/line-area/index.js +10 -10
  31. package/dist/esm/line-area/index.js.map +1 -1
  32. package/dist/esm/sparkline/index.js +9 -9
  33. package/dist/esm/sparkline/index.js.map +1 -1
  34. package/dist/line-area/index.d.mts +2 -2
  35. package/dist/line-area/index.d.ts +2 -2
  36. package/dist/line-area/index.js +14 -14
  37. package/dist/line-area/index.js.map +1 -1
  38. package/dist/sparkline/index.d.mts +3 -3
  39. package/dist/sparkline/index.d.ts +3 -3
  40. package/dist/sparkline/index.js +10 -10
  41. package/dist/sparkline/index.js.map +1 -1
  42. package/package.json +5 -5
  43. package/dist/chunk-6D7P3IOT.js +0 -150
  44. package/dist/chunk-6D7P3IOT.js.map +0 -1
  45. package/dist/chunk-GQOKCB3M.js.map +0 -1
  46. package/dist/esm/chunk-EHKGDOMK.js.map +0 -1
  47. package/dist/esm/chunk-NAKJY5PA.js +0 -150
  48. package/dist/esm/chunk-NAKJY5PA.js.map +0 -1
  49. /package/dist/esm/{chunk-AEBP4NCY.js.map → chunk-MQDI7D54.js.map} +0 -0
@@ -1,18 +1,4 @@
1
- /**
2
- * Pure, Highcharts-free datetime axis label formatter for v2 chart families.
3
- *
4
- * Ports v1's `helpers/xAxisLabelFormatter` into a rendering-agnostic shape: it
5
- * returns a `{ primary, secondary? }` object instead of an HTML string, leaving
6
- * SVG rendering to the caller. The timezone- and DST-correct boundary detection
7
- * (calendar parts read in the target timezone) and the per-granularity
8
- * `Intl.DateTimeFormat` option sets are a near-verbatim port of v1.
9
- *
10
- * The one net-new piece versus v1 is granularity derivation: v1 receives
11
- * `unitName` from Highcharts, but `charts/` may not depend on Highcharts types
12
- * (see `charts/README.md` invariants), so granularity is derived from the
13
- * spacing of `tickPositions`.
14
- */
15
- type DatetimeTimeFormat = "12" | "24";
1
+ import { D as DatetimeTimeFormat } from './chartBase-CptOt3V0.mjs';
16
2
 
17
3
  /** A datetime data point: `[msSinceEpoch, value]` tuple or `{ x, y }` object. */
18
4
  type DatetimePoint = [number, number | null] | {
@@ -1,18 +1,4 @@
1
- /**
2
- * Pure, Highcharts-free datetime axis label formatter for v2 chart families.
3
- *
4
- * Ports v1's `helpers/xAxisLabelFormatter` into a rendering-agnostic shape: it
5
- * returns a `{ primary, secondary? }` object instead of an HTML string, leaving
6
- * SVG rendering to the caller. The timezone- and DST-correct boundary detection
7
- * (calendar parts read in the target timezone) and the per-granularity
8
- * `Intl.DateTimeFormat` option sets are a near-verbatim port of v1.
9
- *
10
- * The one net-new piece versus v1 is granularity derivation: v1 receives
11
- * `unitName` from Highcharts, but `charts/` may not depend on Highcharts types
12
- * (see `charts/README.md` invariants), so granularity is derived from the
13
- * spacing of `tickPositions`.
14
- */
15
- type DatetimeTimeFormat = "12" | "24";
1
+ import { D as DatetimeTimeFormat } from './chartBase-Nl6mcTB7.js';
16
2
 
17
3
  /** A datetime data point: `[msSinceEpoch, value]` tuple or `{ x, y }` object. */
18
4
  type DatetimePoint = [number, number | null] | {
@@ -1,11 +1,11 @@
1
1
  import * as react from 'react';
2
2
  import { ReactNode } from 'react';
3
3
  import { C as ChartAnnotation } from '../annotations-CjFoRPXf.mjs';
4
- import { V as ValueFormat, C as ChartTooltipProps } from '../chartBase-BClSc5EN.mjs';
4
+ import { V as ValueFormat, C as ChartTooltipProps } from '../chartBase-CptOt3V0.mjs';
5
5
  import { C as ChartColorableEntity, a as ChartIconableEntity, b as ChartClickHandler, c as ChartHoverHandler } from '../interactions-pEXA1XxF.mjs';
6
6
  export { d as ChartHoverSeries } from '../interactions-pEXA1XxF.mjs';
7
7
  import { C as ChartExportHandle } from '../chartExport-CKYpuhik.mjs';
8
- import { C as ChartDataPoint, a as CategoryAxis, D as DatetimeAxis, b as DatetimePoint } from '../axis-WOeYkTO1.mjs';
8
+ import { C as ChartDataPoint, a as CategoryAxis, D as DatetimeAxis, b as DatetimePoint } from '../axis-B61qI-nm.mjs';
9
9
  import '@sproutsocial/seeds-react-icon';
10
10
  import '../types-DxrhdAdn.mjs';
11
11
  import 'highcharts';
@@ -1,11 +1,11 @@
1
1
  import * as react from 'react';
2
2
  import { ReactNode } from 'react';
3
3
  import { C as ChartAnnotation } from '../annotations-CjFoRPXf.js';
4
- import { V as ValueFormat, C as ChartTooltipProps } from '../chartBase-CycEw2vy.js';
4
+ import { V as ValueFormat, C as ChartTooltipProps } from '../chartBase-Nl6mcTB7.js';
5
5
  import { C as ChartColorableEntity, a as ChartIconableEntity, b as ChartClickHandler, c as ChartHoverHandler } from '../interactions-pEXA1XxF.js';
6
6
  export { d as ChartHoverSeries } from '../interactions-pEXA1XxF.js';
7
7
  import { C as ChartExportHandle } from '../chartExport-CKYpuhik.js';
8
- import { C as ChartDataPoint, a as CategoryAxis, D as DatetimeAxis, b as DatetimePoint } from '../axis-WOeYkTO1.js';
8
+ import { C as ChartDataPoint, a as CategoryAxis, D as DatetimeAxis, b as DatetimePoint } from '../axis-B78FtYLh.js';
9
9
  import '@sproutsocial/seeds-react-icon';
10
10
  import '../types-DxrhdAdn.js';
11
11
  import 'highcharts';
package/dist/bar/index.js CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
 
4
4
 
5
- var _chunk6SF6OYQAjs = require('../chunk-6SF6OYQA.js');
5
+ var _chunkMTGYEUZNjs = require('../chunk-MTGYEUZN.js');
6
6
 
7
7
 
8
8
 
9
- var _chunk6D7P3IOTjs = require('../chunk-6D7P3IOT.js');
9
+ var _chunkOP6K5NDRjs = require('../chunk-OP6K5NDR.js');
10
10
 
11
11
 
12
12
  var _chunk6EIJCJCNjs = require('../chunk-6EIJCJCN.js');
@@ -17,7 +17,7 @@ var _chunk33Y5FZTTjs = require('../chunk-33Y5FZTT.js');
17
17
 
18
18
 
19
19
 
20
- var _chunkGQOKCB3Mjs = require('../chunk-GQOKCB3M.js');
20
+ var _chunk3P6MPBSZjs = require('../chunk-3P6MPBSZ.js');
21
21
  require('../chunk-2H2Z7PKZ.js');
22
22
 
23
23
  // src/charts/bar/BarChart.tsx
@@ -31,8 +31,8 @@ function buildBarChartOptions(props, direction, series = props.series) {
31
31
  const chartType = highchartsType(direction);
32
32
  const isDatetime = props.xAxis.type === "datetime";
33
33
  const isMultiSeries = series.length > 1;
34
- const tooltipTimezone = _chunk6D7P3IOTjs.resolveTooltipTimezone.call(void 0, props.xAxis, props.timezone);
35
- const { annotations, lookup: annotationLookup } = _chunk6SF6OYQAjs.buildAnnotationConfig.call(void 0,
34
+ const tooltipOptions = _chunkOP6K5NDRjs.resolveTooltipOptions.call(void 0, props);
35
+ const { annotations, lookup: annotationLookup } = _chunkMTGYEUZNjs.buildAnnotationConfig.call(void 0,
36
36
  props.annotations
37
37
  );
38
38
  const barTypeConfig = {
@@ -92,11 +92,11 @@ function buildBarChartOptions(props, direction, series = props.series) {
92
92
  }
93
93
  }
94
94
  };
95
- const base = _chunkGQOKCB3Mjs.buildBaseChartOptions.call(void 0, {
95
+ const base = _chunk3P6MPBSZjs.buildBaseChartOptions.call(void 0, {
96
96
  type: chartType,
97
97
  description: props.description,
98
98
  reserveTopMargin: Boolean(annotations),
99
- timezone: tooltipTimezone
99
+ timezone: tooltipOptions.timezone
100
100
  });
101
101
  const options = {
102
102
  ...base,
@@ -113,7 +113,7 @@ function buildBarChartOptions(props, direction, series = props.series) {
113
113
  // spacing ([10, 10, 15, 10]) shrinks the plot area.
114
114
  spacing: [5, 1, 0, 2]
115
115
  },
116
- xAxis: _chunk6D7P3IOTjs.buildDimensionalAxis.call(void 0, props.xAxis, _nullishCoalesce(tooltipTimezone, () => ( "UTC"))),
116
+ xAxis: _chunkOP6K5NDRjs.buildDimensionalAxis.call(void 0, props.xAxis, _nullishCoalesce(tooltipOptions.timezone, () => ( "UTC"))),
117
117
  yAxis: {
118
118
  min: _optionalChain([props, 'access', _15 => _15.yAxis, 'optionalAccess', _16 => _16.min]),
119
119
  max: _optionalChain([props, 'access', _17 => _17.yAxis, 'optionalAccess', _18 => _18.max]),
@@ -127,7 +127,7 @@ function buildBarChartOptions(props, direction, series = props.series) {
127
127
  enabled: _optionalChain([props, 'access', _23 => _23.yAxis, 'optionalAccess', _24 => _24.showLabels]) !== false,
128
128
  // A declarative `format` drives ticks through the shared valueFormatter;
129
129
  // absent it, the zero-config decimal default (1.20K / 1.20M / 1.20B).
130
- formatter: _optionalChain([props, 'access', _25 => _25.yAxis, 'optionalAccess', _26 => _26.format]) ? _chunk6SF6OYQAjs.makeValueAxisLabelFormatter.call(void 0, props.yAxis.format) : _chunk6SF6OYQAjs.defaultValueAxisLabelFormatter
130
+ formatter: _optionalChain([props, 'access', _25 => _25.yAxis, 'optionalAccess', _26 => _26.format]) ? _chunkMTGYEUZNjs.makeValueAxisLabelFormatter.call(void 0, props.yAxis.format) : _chunkMTGYEUZNjs.defaultValueAxisLabelFormatter
131
131
  }
132
132
  },
133
133
  plotOptions: {
@@ -142,7 +142,7 @@ function buildBarChartOptions(props, direction, series = props.series) {
142
142
  })),
143
143
  ...annotations ? { annotations } : {}
144
144
  };
145
- return { options, annotationLookup, tooltipTimezone };
145
+ return { options, annotationLookup, tooltipOptions };
146
146
  }
147
147
 
148
148
  // src/charts/constants.ts
@@ -152,14 +152,14 @@ var BAR_CHART_DEFAULT_SERIES_LIMIT = 10;
152
152
  var _jsxruntime = require('react/jsx-runtime');
153
153
  var BarChart = _react.memo.call(void 0, function BarChart2(props) {
154
154
  const seriesLimit = _nullishCoalesce(props.seriesLimit, () => ( BAR_CHART_DEFAULT_SERIES_LIMIT));
155
- const { colors, series } = _chunkGQOKCB3Mjs.useSeedsChartSetup.call(void 0, {
155
+ const { colors, series } = _chunk3P6MPBSZjs.useSeedsChartSetup.call(void 0, {
156
156
  series: props.series,
157
157
  seriesLimit,
158
158
  isSeriesLimitOverridden: props.seriesLimit !== void 0,
159
159
  hideSeriesLimitWarning: props.hideSeriesLimitWarning,
160
160
  componentName: "BarChart"
161
161
  });
162
- const { options, annotationLookup, tooltipTimezone } = buildBarChartOptions(
162
+ const { options, annotationLookup, tooltipOptions } = buildBarChartOptions(
163
163
  props,
164
164
  _nullishCoalesce(props.direction, () => ( "vertical")),
165
165
  series
@@ -172,7 +172,7 @@ var BarChart = _react.memo.call(void 0, function BarChart2(props) {
172
172
  className: props.className
173
173
  });
174
174
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ...containerProps, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
175
- _chunkGQOKCB3Mjs.ChartRenderer,
175
+ _chunk3P6MPBSZjs.ChartRenderer,
176
176
  {
177
177
  options,
178
178
  series,
@@ -181,7 +181,7 @@ var BarChart = _react.memo.call(void 0, function BarChart2(props) {
181
181
  annotationLookup,
182
182
  hasOnClick,
183
183
  tooltipClickLabel: props.tooltipClickLabel,
184
- timezone: tooltipTimezone,
184
+ tooltipOptions,
185
185
  invalidNumberLabel: props.invalidNumberLabel,
186
186
  valueFormat: _optionalChain([props, 'access', _27 => _27.yAxis, 'optionalAccess', _28 => _28.format]),
187
187
  exportTitle: props.exportTitle,
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/_work/seeds/seeds/seeds-react/seeds-react-data-viz/dist/bar/index.js","../../src/charts/bar/BarChart.tsx","../../src/charts/bar/adapter.ts","../../src/charts/constants.ts"],"names":["BarChart"],"mappings":"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","file":"/home/runner/_work/seeds/seeds/seeds-react/seeds-react-data-viz/dist/bar/index.js","sourcesContent":[null,"import { memo } from \"react\";\nimport { useSeedsChartSetup, ChartRenderer } from \"../shared/chartBase\";\nimport { getChartContainerProps } from \"../shared/chartContainer\";\nimport { buildBarChartOptions } from \"./adapter\";\nimport type { BarChartProps } from \"./types\";\nimport { BAR_CHART_DEFAULT_SERIES_LIMIT } from \"../constants\";\n\nexport const BarChart = memo(function BarChart(props: BarChartProps) {\n // The shared hook caps the series to the limit (and warns once per render\n // when the default is exceeded without an explicit override) so the adapter\n // and renderer below all consume the capped data.\n const seriesLimit = props.seriesLimit ?? BAR_CHART_DEFAULT_SERIES_LIMIT;\n const { colors, series } = useSeedsChartSetup({\n series: props.series,\n seriesLimit,\n isSeriesLimitOverridden: props.seriesLimit !== undefined,\n hideSeriesLimitWarning: props.hideSeriesLimitWarning,\n componentName: \"BarChart\",\n });\n\n const { options, annotationLookup, tooltipTimezone } = buildBarChartOptions(\n props,\n props.direction ?? \"vertical\",\n series\n );\n const hasOnClick = Boolean(props.onClick);\n\n // Plain <div> consuming the shared chart-styles.css contract via\n // getChartContainerProps. Colors are the RAW per-series colors (undefined when\n // unset, so only explicit overrides inline --highcharts-color-N), NOT the\n // palette-resolved `colors` passed to ChartRenderer. Neither stylesheet is\n // self-imported (consumers import both).\n const containerProps = getChartContainerProps({\n familyClasses: [\"seeds-chart-time-series\", \"seeds-chart-bar\"],\n colors: series.map((s) => s.color),\n hasOnClick,\n className: props.className,\n });\n\n return (\n <div {...containerProps}>\n <ChartRenderer\n options={options}\n series={series}\n colors={colors}\n tooltip={props.tooltip}\n annotationLookup={annotationLookup}\n hasOnClick={hasOnClick}\n tooltipClickLabel={props.tooltipClickLabel}\n timezone={tooltipTimezone}\n invalidNumberLabel={props.invalidNumberLabel}\n valueFormat={props.yAxis?.format}\n exportTitle={props.exportTitle}\n onReady={props.onReady}\n />\n </div>\n );\n});\n","import { buildAnnotationConfig } from \"../shared/annotations\";\nimport type { ChartAnnotationLookup } from \"../shared/annotations\";\nimport type {\n SeedsChartColumnPlotOptions,\n SeedsChartOptions,\n} from \"../shared/chartBase\";\nimport { buildBaseChartOptions } from \"../shared/baseChartOptions\";\nimport { TIME_SERIES_CHART_HEIGHT } from \"../../constants/chartOptions\";\nimport {\n buildDimensionalAxis,\n resolveTooltipTimezone,\n} from \"../shared/axisOptions\";\nimport {\n defaultValueAxisLabelFormatter,\n makeValueAxisLabelFormatter,\n} from \"../shared/valueAxisLabelFormatter\";\nimport type { BarChartDirection, BarChartProps } from \"./types\";\n\n// Maps the public `direction` to the Highcharts series/chart type. Highcharts\n// `bar` is a horizontally-oriented `column`: it performs the visual rotation\n// while keeping axis roles (xAxis = category, yAxis = value), so the rest of the\n// adapter is direction-agnostic.\nfunction highchartsType(direction: BarChartDirection): \"column\" | \"bar\" {\n return direction === \"horizontal\" ? \"bar\" : \"column\";\n}\n\nexport function buildBarChartOptions(\n props: BarChartProps,\n direction: BarChartDirection,\n // The (already-capped) series to render. Defaults to `props.series` so the\n // ~40 existing call sites keep working; the component passes the capped\n // series from `useSeedsChartSetup` explicitly.\n series: BarChartProps[\"series\"] = props.series\n): {\n options: SeedsChartOptions;\n annotationLookup: ChartAnnotationLookup | undefined;\n /** Resolved timezone for the tooltip date formatter; undefined on category axes. */\n tooltipTimezone: string | undefined;\n} {\n const chartType = highchartsType(direction);\n const isDatetime = props.xAxis.type === \"datetime\";\n // Gate the `onMouseEnter`/`onMouseLeave` `series` field on the *rendered*\n // (already-capped) series count, not `props.series` — if `seriesLimit` caps a\n // multi-series input down to one rendered series the chart is effectively\n // single-series, and `series` must be absent per the \"present only for\n // multi-series bar\" contract.\n const isMultiSeries = series.length > 1;\n const tooltipTimezone = resolveTooltipTimezone(props.xAxis, props.timezone);\n const { annotations, lookup: annotationLookup } = buildAnnotationConfig(\n props.annotations\n );\n // `column` (vertical) and `bar` (horizontal) take the same option shape, so a\n // single config is assigned under the active direction's key. Typed\n // explicitly so the `point.events` handlers below keep their `this`/`event`\n // contextual types (a computed `[chartType]` key would otherwise erase them).\n const barTypeConfig: SeedsChartColumnPlotOptions = {\n // \"grouped\" maps to omitting `stacking` — Highcharts renders multi-series\n // columns side-by-side when no stacking is set.\n ...(props.stacking === \"grouped\"\n ? {}\n : { stacking: props.stacking ?? \"normal\" }),\n // Horizontal bars are height-constrained (fixed chart height ÷ categories),\n // so the same padding fractions that work for columns produce hairline bars.\n pointPadding: direction === \"horizontal\" ? 0.05 : 0.25,\n groupPadding: direction === \"horizontal\" ? 0.1 : 0.25,\n // Fixed bar width on datetime axes. Sparse time-series otherwise size\n // columns from the (large) gap between points and balloon; a fixed\n // pointWidth: 20 gives a consistent time-series treatment. Dense datetime\n // data may instead want a maxPointWidth cap — revisit when Line/Area land.\n ...(isDatetime ? { pointWidth: 20 } : {}),\n borderRadius: 4,\n borderWidth: 0,\n // Pairs with the `:hover` dimming rule in `styles.ts`: while the cursor\n // is over the chart, all bars dim; these handlers restore opacity for\n // every bar at the hovered x (so stacked/grouped bars highlight together\n // rather than just the single hovered bar).\n point: {\n events: {\n click: props.onClick\n ? (event) => props.onClick!({ position: event.point.x })\n : undefined,\n mouseOver: function () {\n const x = this.x;\n props.onMouseEnter?.({\n position: x,\n // Omit the key entirely (not `series: undefined`) for single-series\n // so consumers testing `\"series\" in payload` see the contract.\n ...(isMultiSeries\n ? {\n series: { name: this.series.name, index: this.series.index },\n }\n : {}),\n });\n this.series.chart.series.forEach((s) => {\n if (s.type !== chartType) return;\n s.data.forEach((point) => {\n if (point.x !== x) return;\n point.graphic?.element?.classList.add(\"bar-point-hover\");\n });\n });\n },\n mouseOut: function () {\n props.onMouseLeave?.({\n position: this.x,\n ...(isMultiSeries\n ? {\n series: { name: this.series.name, index: this.series.index },\n }\n : {}),\n });\n this.series.chart.series.forEach((s) => {\n if (s.type !== chartType) return;\n s.data.forEach((point) => {\n point.graphic?.element?.classList.remove(\"bar-point-hover\");\n });\n });\n },\n },\n },\n };\n const base = buildBaseChartOptions({\n type: chartType,\n description: props.description,\n reserveTopMargin: Boolean(annotations),\n timezone: tooltipTimezone,\n });\n\n const options: SeedsChartOptions = {\n ...base,\n // Default height baseline (overridable via `props.height`) so consumers\n // who don't configure sizing keep the design-reviewed default.\n chart: {\n ...base.chart,\n // Re-assert the definite `type` so spreading the optionally-typed\n // `base.chart` doesn't widen the required `type` field to optional.\n type: chartType,\n height: props.height ?? TIME_SERIES_CHART_HEIGHT,\n // Tight time-series spacing (from constants/chartOptions.ts) so the plot\n // area fills the 275px container; without it Highcharts' larger default\n // spacing ([10, 10, 15, 10]) shrinks the plot area.\n spacing: [5, 1, 0, 2],\n },\n xAxis: buildDimensionalAxis(props.xAxis, tooltipTimezone ?? \"UTC\"),\n yAxis: {\n min: props.yAxis?.min,\n max: props.yAxis?.max,\n gridLineWidth: props.yAxis?.showGridLines === false ? 0 : 1,\n // A dedicated plotLine at 0, styled distinctly from regular gridlines\n // (see chartStyles.ts).\n plotLines: [{ value: 0, className: \"y-axis-zero-line\", zIndex: 3 }],\n title: { text: props.yAxis?.title ?? \"\" },\n labels: {\n // `showLabels` toggles tick-label visibility; defaults to shown.\n enabled: props.yAxis?.showLabels !== false,\n // A declarative `format` drives ticks through the shared valueFormatter;\n // absent it, the zero-config decimal default (1.20K / 1.20M / 1.20B).\n formatter: props.yAxis?.format\n ? makeValueAxisLabelFormatter(props.yAxis.format)\n : defaultValueAxisLabelFormatter,\n },\n },\n plotOptions: {\n series: { animation: false },\n [chartType]: barTypeConfig,\n },\n series: series.map((s) => ({\n type: chartType,\n name: s.name,\n data: [...s.data],\n color: s.color,\n })),\n ...(annotations ? { annotations } : {}),\n };\n\n return { options, annotationLookup, tooltipTimezone };\n}\n","export const BAR_CHART_DEFAULT_SERIES_LIMIT = 10;\n"]}
1
+ {"version":3,"sources":["/home/runner/_work/seeds/seeds/seeds-react/seeds-react-data-viz/dist/bar/index.js","../../src/charts/bar/BarChart.tsx","../../src/charts/bar/adapter.ts","../../src/charts/constants.ts"],"names":["BarChart"],"mappings":"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","file":"/home/runner/_work/seeds/seeds/seeds-react/seeds-react-data-viz/dist/bar/index.js","sourcesContent":[null,"import { memo } from \"react\";\nimport { useSeedsChartSetup, ChartRenderer } from \"../shared/chartBase\";\nimport { getChartContainerProps } from \"../shared/chartContainer\";\nimport { buildBarChartOptions } from \"./adapter\";\nimport type { BarChartProps } from \"./types\";\nimport { BAR_CHART_DEFAULT_SERIES_LIMIT } from \"../constants\";\n\nexport const BarChart = memo(function BarChart(props: BarChartProps) {\n // The shared hook caps the series to the limit (and warns once per render\n // when the default is exceeded without an explicit override) so the adapter\n // and renderer below all consume the capped data.\n const seriesLimit = props.seriesLimit ?? BAR_CHART_DEFAULT_SERIES_LIMIT;\n const { colors, series } = useSeedsChartSetup({\n series: props.series,\n seriesLimit,\n isSeriesLimitOverridden: props.seriesLimit !== undefined,\n hideSeriesLimitWarning: props.hideSeriesLimitWarning,\n componentName: \"BarChart\",\n });\n\n const { options, annotationLookup, tooltipOptions } = buildBarChartOptions(\n props,\n props.direction ?? \"vertical\",\n series\n );\n const hasOnClick = Boolean(props.onClick);\n\n // Plain <div> consuming the shared chart-styles.css contract via\n // getChartContainerProps. Colors are the RAW per-series colors (undefined when\n // unset, so only explicit overrides inline --highcharts-color-N), NOT the\n // palette-resolved `colors` passed to ChartRenderer. Neither stylesheet is\n // self-imported (consumers import both).\n const containerProps = getChartContainerProps({\n familyClasses: [\"seeds-chart-time-series\", \"seeds-chart-bar\"],\n colors: series.map((s) => s.color),\n hasOnClick,\n className: props.className,\n });\n\n return (\n <div {...containerProps}>\n <ChartRenderer\n options={options}\n series={series}\n colors={colors}\n tooltip={props.tooltip}\n annotationLookup={annotationLookup}\n hasOnClick={hasOnClick}\n tooltipClickLabel={props.tooltipClickLabel}\n tooltipOptions={tooltipOptions}\n invalidNumberLabel={props.invalidNumberLabel}\n valueFormat={props.yAxis?.format}\n exportTitle={props.exportTitle}\n onReady={props.onReady}\n />\n </div>\n );\n});\n","import { buildAnnotationConfig } from \"../shared/annotations\";\nimport type { ChartAnnotationLookup } from \"../shared/annotations\";\nimport type {\n ChartTooltipProps,\n SeedsChartColumnPlotOptions,\n SeedsChartOptions,\n} from \"../shared/chartBase\";\nimport { buildBaseChartOptions } from \"../shared/baseChartOptions\";\nimport { TIME_SERIES_CHART_HEIGHT } from \"../../constants/chartOptions\";\nimport {\n buildDimensionalAxis,\n resolveTooltipOptions,\n} from \"../shared/axisOptions\";\nimport {\n defaultValueAxisLabelFormatter,\n makeValueAxisLabelFormatter,\n} from \"../shared/valueAxisLabelFormatter\";\nimport type { BarChartDirection, BarChartProps } from \"./types\";\n\n// Maps the public `direction` to the Highcharts series/chart type. Highcharts\n// `bar` is a horizontally-oriented `column`: it performs the visual rotation\n// while keeping axis roles (xAxis = category, yAxis = value), so the rest of the\n// adapter is direction-agnostic.\nfunction highchartsType(direction: BarChartDirection): \"column\" | \"bar\" {\n return direction === \"horizontal\" ? \"bar\" : \"column\";\n}\n\nexport function buildBarChartOptions(\n props: BarChartProps,\n direction: BarChartDirection,\n // The (already-capped) series to render. Defaults to `props.series` so the\n // ~40 existing call sites keep working; the component passes the capped\n // series from `useSeedsChartSetup` explicitly.\n series: BarChartProps[\"series\"] = props.series\n): {\n options: SeedsChartOptions;\n annotationLookup: ChartAnnotationLookup | undefined;\n /** Resolved datetime-derived tooltip options (timezone / timeFormat / textLocale); all undefined on category axes. */\n tooltipOptions: Pick<\n ChartTooltipProps,\n \"timezone\" | \"timeFormat\" | \"textLocale\"\n >;\n} {\n const chartType = highchartsType(direction);\n const isDatetime = props.xAxis.type === \"datetime\";\n // Gate the `onMouseEnter`/`onMouseLeave` `series` field on the *rendered*\n // (already-capped) series count, not `props.series` — if `seriesLimit` caps a\n // multi-series input down to one rendered series the chart is effectively\n // single-series, and `series` must be absent per the \"present only for\n // multi-series bar\" contract.\n const isMultiSeries = series.length > 1;\n const tooltipOptions = resolveTooltipOptions(props);\n const { annotations, lookup: annotationLookup } = buildAnnotationConfig(\n props.annotations\n );\n // `column` (vertical) and `bar` (horizontal) take the same option shape, so a\n // single config is assigned under the active direction's key. Typed\n // explicitly so the `point.events` handlers below keep their `this`/`event`\n // contextual types (a computed `[chartType]` key would otherwise erase them).\n const barTypeConfig: SeedsChartColumnPlotOptions = {\n // \"grouped\" maps to omitting `stacking` — Highcharts renders multi-series\n // columns side-by-side when no stacking is set.\n ...(props.stacking === \"grouped\"\n ? {}\n : { stacking: props.stacking ?? \"normal\" }),\n // Horizontal bars are height-constrained (fixed chart height ÷ categories),\n // so the same padding fractions that work for columns produce hairline bars.\n pointPadding: direction === \"horizontal\" ? 0.05 : 0.25,\n groupPadding: direction === \"horizontal\" ? 0.1 : 0.25,\n // Fixed bar width on datetime axes. Sparse time-series otherwise size\n // columns from the (large) gap between points and balloon; a fixed\n // pointWidth: 20 gives a consistent time-series treatment. Dense datetime\n // data may instead want a maxPointWidth cap — revisit when Line/Area land.\n ...(isDatetime ? { pointWidth: 20 } : {}),\n borderRadius: 4,\n borderWidth: 0,\n // Pairs with the `:hover` dimming rule in `styles.ts`: while the cursor\n // is over the chart, all bars dim; these handlers restore opacity for\n // every bar at the hovered x (so stacked/grouped bars highlight together\n // rather than just the single hovered bar).\n point: {\n events: {\n click: props.onClick\n ? (event) => props.onClick!({ position: event.point.x })\n : undefined,\n mouseOver: function () {\n const x = this.x;\n props.onMouseEnter?.({\n position: x,\n // Omit the key entirely (not `series: undefined`) for single-series\n // so consumers testing `\"series\" in payload` see the contract.\n ...(isMultiSeries\n ? {\n series: { name: this.series.name, index: this.series.index },\n }\n : {}),\n });\n this.series.chart.series.forEach((s) => {\n if (s.type !== chartType) return;\n s.data.forEach((point) => {\n if (point.x !== x) return;\n point.graphic?.element?.classList.add(\"bar-point-hover\");\n });\n });\n },\n mouseOut: function () {\n props.onMouseLeave?.({\n position: this.x,\n ...(isMultiSeries\n ? {\n series: { name: this.series.name, index: this.series.index },\n }\n : {}),\n });\n this.series.chart.series.forEach((s) => {\n if (s.type !== chartType) return;\n s.data.forEach((point) => {\n point.graphic?.element?.classList.remove(\"bar-point-hover\");\n });\n });\n },\n },\n },\n };\n const base = buildBaseChartOptions({\n type: chartType,\n description: props.description,\n reserveTopMargin: Boolean(annotations),\n timezone: tooltipOptions.timezone,\n });\n\n const options: SeedsChartOptions = {\n ...base,\n // Default height baseline (overridable via `props.height`) so consumers\n // who don't configure sizing keep the design-reviewed default.\n chart: {\n ...base.chart,\n // Re-assert the definite `type` so spreading the optionally-typed\n // `base.chart` doesn't widen the required `type` field to optional.\n type: chartType,\n height: props.height ?? TIME_SERIES_CHART_HEIGHT,\n // Tight time-series spacing (from constants/chartOptions.ts) so the plot\n // area fills the 275px container; without it Highcharts' larger default\n // spacing ([10, 10, 15, 10]) shrinks the plot area.\n spacing: [5, 1, 0, 2],\n },\n xAxis: buildDimensionalAxis(props.xAxis, tooltipOptions.timezone ?? \"UTC\"),\n yAxis: {\n min: props.yAxis?.min,\n max: props.yAxis?.max,\n gridLineWidth: props.yAxis?.showGridLines === false ? 0 : 1,\n // A dedicated plotLine at 0, styled distinctly from regular gridlines\n // (see chartStyles.ts).\n plotLines: [{ value: 0, className: \"y-axis-zero-line\", zIndex: 3 }],\n title: { text: props.yAxis?.title ?? \"\" },\n labels: {\n // `showLabels` toggles tick-label visibility; defaults to shown.\n enabled: props.yAxis?.showLabels !== false,\n // A declarative `format` drives ticks through the shared valueFormatter;\n // absent it, the zero-config decimal default (1.20K / 1.20M / 1.20B).\n formatter: props.yAxis?.format\n ? makeValueAxisLabelFormatter(props.yAxis.format)\n : defaultValueAxisLabelFormatter,\n },\n },\n plotOptions: {\n series: { animation: false },\n [chartType]: barTypeConfig,\n },\n series: series.map((s) => ({\n type: chartType,\n name: s.name,\n data: [...s.data],\n color: s.color,\n })),\n ...(annotations ? { annotations } : {}),\n };\n\n return { options, annotationLookup, tooltipOptions };\n}\n","export const BAR_CHART_DEFAULT_SERIES_LIMIT = 10;\n"]}
@@ -1,6 +1,6 @@
1
1
  import * as react from 'react';
2
2
  import { ReactNode, MouseEventHandler } from 'react';
3
- import { C as ChartTooltipProps, a as ChartTooltipDataRow, V as ValueFormat } from '../chartBase-BClSc5EN.mjs';
3
+ import { C as ChartTooltipProps, a as ChartTooltipDataRow, V as ValueFormat } from '../chartBase-CptOt3V0.mjs';
4
4
  import { C as ChartExportHandle } from '../chartExport-CKYpuhik.mjs';
5
5
  import { C as ChartColorableEntity, a as ChartIconableEntity, c as ChartHoverHandler } from '../interactions-pEXA1XxF.mjs';
6
6
  export { h as defaultBubbleChartWidth } from '../chartOptions-DHzoGRdG.mjs';
@@ -1,6 +1,6 @@
1
1
  import * as react from 'react';
2
2
  import { ReactNode, MouseEventHandler } from 'react';
3
- import { C as ChartTooltipProps, a as ChartTooltipDataRow, V as ValueFormat } from '../chartBase-CycEw2vy.js';
3
+ import { C as ChartTooltipProps, a as ChartTooltipDataRow, V as ValueFormat } from '../chartBase-Nl6mcTB7.js';
4
4
  import { C as ChartExportHandle } from '../chartExport-CKYpuhik.js';
5
5
  import { C as ChartColorableEntity, a as ChartIconableEntity, c as ChartHoverHandler } from '../interactions-pEXA1XxF.js';
6
6
  export { h as defaultBubbleChartWidth } from '../chartOptions-DHzoGRdG.js';
@@ -11,7 +11,7 @@ var _chunk33Y5FZTTjs = require('../chunk-33Y5FZTT.js');
11
11
 
12
12
 
13
13
 
14
- var _chunkGQOKCB3Mjs = require('../chunk-GQOKCB3M.js');
14
+ var _chunk3P6MPBSZjs = require('../chunk-3P6MPBSZ.js');
15
15
  require('../chunk-2H2Z7PKZ.js');
16
16
 
17
17
  // src/charts/bubble/BubbleChart.tsx
@@ -107,7 +107,7 @@ function mapBubbleTooltipRow(data) {
107
107
  }
108
108
  function buildBubbleChartOptions(props) {
109
109
  const hasOnClick = Boolean(props.onClick);
110
- const base = _chunkGQOKCB3Mjs.buildBaseChartOptions.call(void 0, {
110
+ const base = _chunk3P6MPBSZjs.buildBaseChartOptions.call(void 0, {
111
111
  type: "packedbubble",
112
112
  description: props.accessibility.description,
113
113
  svgContainerLabel: props.accessibility.svgContainerLabel,
@@ -182,7 +182,7 @@ function buildBubbleChartOptions(props) {
182
182
  // src/charts/bubble/BubbleChart.tsx
183
183
  var _jsxruntime = require('react/jsx-runtime');
184
184
  var BubbleChart = _react.memo.call(void 0, function BubbleChart2(props) {
185
- const { colors } = _chunkGQOKCB3Mjs.useSeedsChartSetup.call(void 0, {
185
+ const { colors } = _chunk3P6MPBSZjs.useSeedsChartSetup.call(void 0, {
186
186
  series: props.data.map((d) => ({ color: d.color }))
187
187
  });
188
188
  const options = _react.useMemo.call(void 0, () => buildBubbleChartOptions(props), [props]);
@@ -206,7 +206,7 @@ var BubbleChart = _react.memo.call(void 0, function BubbleChart2(props) {
206
206
  ...hasOnPlotBackgroundClick ? { "data-has-on-plot-background-click": "" } : {},
207
207
  onClick: props.onPlotBackgroundClick,
208
208
  children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
209
- _chunkGQOKCB3Mjs.ChartRenderer,
209
+ _chunk3P6MPBSZjs.ChartRenderer,
210
210
  {
211
211
  options,
212
212
  series: props.data.map((d, i) => ({
@@ -2,6 +2,22 @@ import { ReactNode } from 'react';
2
2
  import { TypeIconName } from '@sproutsocial/seeds-react-icon';
3
3
  import { c as TypeChartNumberFormat, k as TypeChartStyleColor } from './types-DxrhdAdn.mjs';
4
4
 
5
+ /**
6
+ * Pure, Highcharts-free datetime axis label formatter for v2 chart families.
7
+ *
8
+ * Ports v1's `helpers/xAxisLabelFormatter` into a rendering-agnostic shape: it
9
+ * returns a `{ primary, secondary? }` object instead of an HTML string, leaving
10
+ * SVG rendering to the caller. The timezone- and DST-correct boundary detection
11
+ * (calendar parts read in the target timezone) and the per-granularity
12
+ * `Intl.DateTimeFormat` option sets are a near-verbatim port of v1.
13
+ *
14
+ * The one net-new piece versus v1 is granularity derivation: v1 receives
15
+ * `unitName` from Highcharts, but `charts/` may not depend on Highcharts types
16
+ * (see `charts/README.md` invariants), so granularity is derived from the
17
+ * spacing of `tickPositions`.
18
+ */
19
+ type DatetimeTimeFormat = "12" | "24";
20
+
5
21
  type TypeValuePercentInput = "decimal" | "whole";
6
22
  type TypeValueFormatterOptions = Readonly<{
7
23
  /** The raw numeric value. For duration, milliseconds. */
@@ -46,6 +62,12 @@ interface ChartTooltipProps {
46
62
  hideTitle?: boolean;
47
63
  /** Resolved chart timezone — pass to date formatters when `position` is a numeric timestamp. Undefined on category axes. */
48
64
  timezone?: string;
65
+ /** Resolved datetime-axis `timeFormat` ("12" | "24"). Governs the hour-granularity date title. Undefined on category axes. */
66
+ timeFormat?: DatetimeTimeFormat;
67
+ /** Full x-axis tick positions, extracted at the engine boundary — used to derive the title's granularity (day vs month vs hour …). Undefined on category axes. */
68
+ tickPositions?: readonly number[];
69
+ /** Locale for the date title's Intl formatting. Defaults to "en-US" (see CE-36); threaded internally, not a consumer-facing prop today (CE-35). */
70
+ textLocale?: Intl.LocalesArgument;
49
71
  /** Declarative annotation anchored at this position, if any. Rendered in the tooltip header. */
50
72
  annotation?: {
51
73
  icon?: TypeIconName;
@@ -63,4 +85,4 @@ interface ChartTooltipProps {
63
85
  valueFormat?: ValueFormat;
64
86
  }
65
87
 
66
- export type { ChartTooltipProps as C, ValueFormat as V, ChartTooltipDataRow as a };
88
+ export type { ChartTooltipProps as C, DatetimeTimeFormat as D, ValueFormat as V, ChartTooltipDataRow as a };
@@ -2,6 +2,22 @@ import { ReactNode } from 'react';
2
2
  import { TypeIconName } from '@sproutsocial/seeds-react-icon';
3
3
  import { c as TypeChartNumberFormat, k as TypeChartStyleColor } from './types-DxrhdAdn.js';
4
4
 
5
+ /**
6
+ * Pure, Highcharts-free datetime axis label formatter for v2 chart families.
7
+ *
8
+ * Ports v1's `helpers/xAxisLabelFormatter` into a rendering-agnostic shape: it
9
+ * returns a `{ primary, secondary? }` object instead of an HTML string, leaving
10
+ * SVG rendering to the caller. The timezone- and DST-correct boundary detection
11
+ * (calendar parts read in the target timezone) and the per-granularity
12
+ * `Intl.DateTimeFormat` option sets are a near-verbatim port of v1.
13
+ *
14
+ * The one net-new piece versus v1 is granularity derivation: v1 receives
15
+ * `unitName` from Highcharts, but `charts/` may not depend on Highcharts types
16
+ * (see `charts/README.md` invariants), so granularity is derived from the
17
+ * spacing of `tickPositions`.
18
+ */
19
+ type DatetimeTimeFormat = "12" | "24";
20
+
5
21
  type TypeValuePercentInput = "decimal" | "whole";
6
22
  type TypeValueFormatterOptions = Readonly<{
7
23
  /** The raw numeric value. For duration, milliseconds. */
@@ -46,6 +62,12 @@ interface ChartTooltipProps {
46
62
  hideTitle?: boolean;
47
63
  /** Resolved chart timezone — pass to date formatters when `position` is a numeric timestamp. Undefined on category axes. */
48
64
  timezone?: string;
65
+ /** Resolved datetime-axis `timeFormat` ("12" | "24"). Governs the hour-granularity date title. Undefined on category axes. */
66
+ timeFormat?: DatetimeTimeFormat;
67
+ /** Full x-axis tick positions, extracted at the engine boundary — used to derive the title's granularity (day vs month vs hour …). Undefined on category axes. */
68
+ tickPositions?: readonly number[];
69
+ /** Locale for the date title's Intl formatting. Defaults to "en-US" (see CE-36); threaded internally, not a consumer-facing prop today (CE-35). */
70
+ textLocale?: Intl.LocalesArgument;
49
71
  /** Declarative annotation anchored at this position, if any. Rendered in the tooltip header. */
50
72
  annotation?: {
51
73
  icon?: TypeIconName;
@@ -63,4 +85,4 @@ interface ChartTooltipProps {
63
85
  valueFormat?: ValueFormat;
64
86
  }
65
87
 
66
- export type { ChartTooltipProps as C, ValueFormat as V, ChartTooltipDataRow as a };
88
+ export type { ChartTooltipProps as C, DatetimeTimeFormat as D, ValueFormat as V, ChartTooltipDataRow as a };