@sproutsocial/seeds-react-data-viz 0.25.1 → 0.26.1

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 (33) hide show
  1. package/dist/bar/index.js +10 -10
  2. package/dist/bubble/index.js +4 -4
  3. package/dist/charts.css +139 -12
  4. package/dist/{chunk-2A3KLUIF.js → chunk-BRIU5SPJ.js} +3 -3
  5. package/dist/{chunk-2A3KLUIF.js.map → chunk-BRIU5SPJ.js.map} +1 -1
  6. package/dist/{chunk-TNZNBMSZ.js → chunk-NU2RCATK.js} +95 -47
  7. package/dist/chunk-NU2RCATK.js.map +1 -0
  8. package/dist/{chunk-CWKFNAXF.js → chunk-PIZ4MT2B.js} +3 -3
  9. package/dist/{chunk-CWKFNAXF.js.map → chunk-PIZ4MT2B.js.map} +1 -1
  10. package/dist/donut/index.js +4 -4
  11. package/dist/esm/bar/index.js +3 -3
  12. package/dist/esm/bubble/index.js +1 -1
  13. package/dist/esm/{chunk-AJGRGRI6.js → chunk-GHP4TT7H.js} +2 -2
  14. package/dist/esm/{chunk-CIG5NERD.js → chunk-OZ7SPMTQ.js} +2 -2
  15. package/dist/esm/{chunk-V63L6753.js → chunk-XEFCGFCF.js} +69 -21
  16. package/dist/esm/chunk-XEFCGFCF.js.map +1 -0
  17. package/dist/esm/donut/index.js +1 -1
  18. package/dist/esm/line-area/index.js +3 -3
  19. package/dist/esm/sparkline/index.js +2 -2
  20. package/dist/esm/wordcloud/index.js +32 -4
  21. package/dist/esm/wordcloud/index.js.map +1 -1
  22. package/dist/line-area/index.js +10 -10
  23. package/dist/sparkline/index.js +6 -6
  24. package/dist/wordcloud/index.d.mts +8 -1
  25. package/dist/wordcloud/index.d.ts +8 -1
  26. package/dist/wordcloud/index.js +40 -12
  27. package/dist/wordcloud/index.js.map +1 -1
  28. package/dist/wordcloud.css +138 -11
  29. package/package.json +1 -1
  30. package/dist/chunk-TNZNBMSZ.js.map +0 -1
  31. package/dist/esm/chunk-V63L6753.js.map +0 -1
  32. /package/dist/esm/{chunk-AJGRGRI6.js.map → chunk-GHP4TT7H.js.map} +0 -0
  33. /package/dist/esm/{chunk-CIG5NERD.js.map → chunk-OZ7SPMTQ.js.map} +0 -0
package/dist/bar/index.js CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
 
4
4
 
5
- var _chunkCWKFNAXFjs = require('../chunk-CWKFNAXF.js');
5
+ var _chunkPIZ4MT2Bjs = require('../chunk-PIZ4MT2B.js');
6
6
 
7
7
 
8
8
 
9
- var _chunk2A3KLUIFjs = require('../chunk-2A3KLUIF.js');
9
+ var _chunkBRIU5SPJjs = require('../chunk-BRIU5SPJ.js');
10
10
 
11
11
 
12
12
  var _chunk6EIJCJCNjs = require('../chunk-6EIJCJCN.js');
@@ -14,7 +14,7 @@ var _chunk6EIJCJCNjs = require('../chunk-6EIJCJCN.js');
14
14
 
15
15
 
16
16
 
17
- var _chunkTNZNBMSZjs = require('../chunk-TNZNBMSZ.js');
17
+ var _chunkNU2RCATKjs = require('../chunk-NU2RCATK.js');
18
18
 
19
19
 
20
20
  var _chunkLWDHU4QKjs = require('../chunk-LWDHU4QK.js');
@@ -30,8 +30,8 @@ function buildBarChartOptions(props, direction, series = props.series) {
30
30
  const chartType = highchartsType(direction);
31
31
  const isDatetime = props.xAxis.type === "datetime";
32
32
  const isMultiSeries = series.length > 1;
33
- const tooltipOptions = _chunk2A3KLUIFjs.resolveTooltipOptions.call(void 0, props);
34
- const { annotations, lookup: annotationLookup } = _chunkCWKFNAXFjs.buildAnnotationConfig.call(void 0,
33
+ const tooltipOptions = _chunkBRIU5SPJjs.resolveTooltipOptions.call(void 0, props);
34
+ const { annotations, lookup: annotationLookup } = _chunkPIZ4MT2Bjs.buildAnnotationConfig.call(void 0,
35
35
  props.annotations
36
36
  );
37
37
  const barTypeConfig = {
@@ -91,7 +91,7 @@ function buildBarChartOptions(props, direction, series = props.series) {
91
91
  }
92
92
  }
93
93
  };
94
- const base = _chunkTNZNBMSZjs.buildBaseChartOptions.call(void 0, {
94
+ const base = _chunkNU2RCATKjs.buildBaseChartOptions.call(void 0, {
95
95
  type: chartType,
96
96
  description: props.description,
97
97
  reserveTopMargin: Boolean(annotations),
@@ -112,7 +112,7 @@ function buildBarChartOptions(props, direction, series = props.series) {
112
112
  // spacing ([10, 10, 15, 10]) shrinks the plot area.
113
113
  spacing: [5, 1, 0, 2]
114
114
  },
115
- xAxis: _chunk2A3KLUIFjs.buildDimensionalAxis.call(void 0, props.xAxis, _nullishCoalesce(tooltipOptions.timezone, () => ( "UTC"))),
115
+ xAxis: _chunkBRIU5SPJjs.buildDimensionalAxis.call(void 0, props.xAxis, _nullishCoalesce(tooltipOptions.timezone, () => ( "UTC"))),
116
116
  yAxis: {
117
117
  min: _optionalChain([props, 'access', _15 => _15.yAxis, 'optionalAccess', _16 => _16.min]),
118
118
  max: _optionalChain([props, 'access', _17 => _17.yAxis, 'optionalAccess', _18 => _18.max]),
@@ -126,7 +126,7 @@ function buildBarChartOptions(props, direction, series = props.series) {
126
126
  enabled: _optionalChain([props, 'access', _23 => _23.yAxis, 'optionalAccess', _24 => _24.showLabels]) !== false,
127
127
  // A declarative `format` drives ticks through the shared valueFormatter;
128
128
  // absent it, the zero-config decimal default (1.20K / 1.20M / 1.20B).
129
- formatter: _optionalChain([props, 'access', _25 => _25.yAxis, 'optionalAccess', _26 => _26.format]) ? _chunkCWKFNAXFjs.makeValueAxisLabelFormatter.call(void 0, props.yAxis.format) : _chunkCWKFNAXFjs.defaultValueAxisLabelFormatter
129
+ formatter: _optionalChain([props, 'access', _25 => _25.yAxis, 'optionalAccess', _26 => _26.format]) ? _chunkPIZ4MT2Bjs.makeValueAxisLabelFormatter.call(void 0, props.yAxis.format) : _chunkPIZ4MT2Bjs.defaultValueAxisLabelFormatter
130
130
  }
131
131
  },
132
132
  plotOptions: {
@@ -151,7 +151,7 @@ var BAR_CHART_DEFAULT_SERIES_LIMIT = 10;
151
151
  var _jsxruntime = require('react/jsx-runtime');
152
152
  var BarChart = _react.memo.call(void 0, function BarChart2(props) {
153
153
  const seriesLimit = _nullishCoalesce(props.seriesLimit, () => ( BAR_CHART_DEFAULT_SERIES_LIMIT));
154
- const { colors, series } = _chunkTNZNBMSZjs.useSeedsChartSetup.call(void 0, {
154
+ const { colors, series } = _chunkNU2RCATKjs.useSeedsChartSetup.call(void 0, {
155
155
  series: props.series,
156
156
  seriesLimit,
157
157
  isSeriesLimitOverridden: props.seriesLimit !== void 0,
@@ -171,7 +171,7 @@ var BarChart = _react.memo.call(void 0, function BarChart2(props) {
171
171
  className: props.className
172
172
  });
173
173
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ...containerProps, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
174
- _chunkTNZNBMSZjs.ChartRenderer,
174
+ _chunkNU2RCATKjs.ChartRenderer,
175
175
  {
176
176
  options,
177
177
  series,
@@ -5,7 +5,7 @@ var _chunk6EIJCJCNjs = require('../chunk-6EIJCJCN.js');
5
5
 
6
6
 
7
7
 
8
- var _chunkTNZNBMSZjs = require('../chunk-TNZNBMSZ.js');
8
+ var _chunkNU2RCATKjs = require('../chunk-NU2RCATK.js');
9
9
 
10
10
 
11
11
 
@@ -106,7 +106,7 @@ function mapBubbleTooltipRow(data) {
106
106
  }
107
107
  function buildBubbleChartOptions(props) {
108
108
  const hasOnClick = Boolean(props.onClick);
109
- const base = _chunkTNZNBMSZjs.buildBaseChartOptions.call(void 0, {
109
+ const base = _chunkNU2RCATKjs.buildBaseChartOptions.call(void 0, {
110
110
  type: "packedbubble",
111
111
  description: props.accessibility.description,
112
112
  svgContainerLabel: props.accessibility.svgContainerLabel,
@@ -181,7 +181,7 @@ function buildBubbleChartOptions(props) {
181
181
  // src/charts/bubble/BubbleChart.tsx
182
182
  var _jsxruntime = require('react/jsx-runtime');
183
183
  var BubbleChart = _react.memo.call(void 0, function BubbleChart2(props) {
184
- const { colors } = _chunkTNZNBMSZjs.useSeedsChartSetup.call(void 0, {
184
+ const { colors } = _chunkNU2RCATKjs.useSeedsChartSetup.call(void 0, {
185
185
  series: props.data.map((d) => ({ color: d.color }))
186
186
  });
187
187
  const options = _react.useMemo.call(void 0, () => buildBubbleChartOptions(props), [props]);
@@ -205,7 +205,7 @@ var BubbleChart = _react.memo.call(void 0, function BubbleChart2(props) {
205
205
  ...hasOnPlotBackgroundClick ? { "data-has-on-plot-background-click": "" } : {},
206
206
  onClick: props.onPlotBackgroundClick,
207
207
  children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
208
- _chunkTNZNBMSZjs.ChartRenderer,
208
+ _chunkNU2RCATKjs.ChartRenderer,
209
209
  {
210
210
  options,
211
211
  series: props.data.map((d, i) => ({
package/dist/charts.css CHANGED
@@ -700,7 +700,7 @@
700
700
  * Seeds WordCloud family styles.
701
701
  *
702
702
  * The wordcloud-specific layer on top of the shared `chart-styles.css`
703
- * foundation, implementing a three-layer opacity model:
703
+ * foundation, implementing a four-layer opacity model:
704
704
  *
705
705
  * 1. Weight ramp — per-point `opacity` set once in the adapter's series
706
706
  * data (wordcloud/adapter.ts), landing as an SVG
@@ -710,23 +710,39 @@
710
710
  * attribute (set from `activeGroupId`, resolved against
711
711
  * `groups`), scoped per adapter-assigned
712
712
  * `.seeds-wordcloud-word--group-{n}` class.
713
+ * 2b. Name dim — below. Gated on the wrapper's `data-active-word-indices`
714
+ * attribute (set from `activeNames`, resolved by
715
+ * `WordCloud.tsx`'s `resolveActiveWordIndices` against
716
+ * the rendered points — names are unbounded, unlike
717
+ * `groups`, so this keys off each point's bounded
718
+ * rendered position instead), scoped per
719
+ * `.seeds-wordcloud-word--index-{n}` class. The active
720
+ * set can contain several indices at once (e.g. every
721
+ * occurrence of a hovered term across competitor
722
+ * groups), so this layer uses the list-attribute
723
+ * selector (`~=`) instead of layer 2's exact match (`=`).
713
724
  * 3. Hover — below. Highcharts' native `.highcharts-point-hover`/
714
725
  * `.highcharts-point-inactive`, inherited from
715
- * ColumnSeries state handling.
716
- *
717
- * All three layers write the CSS `opacity` *property*, never `fill-opacity`:
718
- * a presentation attribute (layer 1) resolves in the author origin at
726
+ * ColumnSeries state handling. Only active when the
727
+ * consumer hasn't opted into layer 2b (see
728
+ * `buildWordCloudOptions`'s `hasActiveNames` the
729
+ * consumer's own set drives dimming unopposed once
730
+ * they've taken it over, instead of fighting Highcharts'
731
+ * own hover-triggered `inactiveOtherPoints`).
732
+ *
733
+ * All layers write the CSS `opacity` *property*, never `fill-opacity`: a
734
+ * presentation attribute (layer 1) resolves in the author origin at
719
735
  * specificity 0, so any author `opacity` declaration here replaces it
720
736
  * outright rather than multiplying with it. This matches `donut/donut.css`'s
721
737
  * existing opacity-property dimming.
722
738
  *
723
- * Layers 2 and 3 can coexist (hovering a word while `activeGroupId` is set),
724
- * and layer 3 must always win. The layer 2 rules below exclude
725
- * `.highcharts-point-hover`/`.highcharts-point-inactive` from their selector
726
- * for exactly this: the moment any point is hovered, every point in the
727
- * series carries one of those two classes (`inactiveOtherPoints: true`), so
728
- * layer 2 stops matching anything and layer 3 takes over completely, with no
729
- * `!important` needed.
739
+ * Layers 2/2b and 3 can coexist (hovering a word while `activeGroupId` is
740
+ * set), and layer 3 must always win when it's active. The layer 2/2b rules
741
+ * below exclude `.highcharts-point-hover`/`.highcharts-point-inactive` from
742
+ * their selector for exactly this: the moment any point is hovered (with
743
+ * `inactiveOtherPoints: true`), every point in the series carries one of
744
+ * those two classes, so layers 2/2b stop matching anything and layer 3 takes
745
+ * over completely, with no `!important` needed.
730
746
  *
731
747
  * Consumers import BOTH stylesheets once (the component never self-imports):
732
748
  *
@@ -775,3 +791,114 @@
775
791
  .seeds-chart-wordcloud[data-active-group-index]:not([data-active-group-index="19"]) .seeds-wordcloud-word--group-19:not(.highcharts-point-hover):not(.highcharts-point-inactive) {
776
792
  opacity: 0.4;
777
793
  }
794
+
795
+ /* Layer 2b: name dim. Only active when the wrapper sets
796
+ `data-active-word-indices` (resolved from `activeNames` against the
797
+ rendered points); bounded by `WORD_CLOUD_MAXIMUM_WORD_COUNT` (100 —
798
+ adapter.ts). Excludes hover-state classes so layer 3 always wins during a
799
+ hover (see the file header). Uses the list-attribute selector (`~=`),
800
+ unlike layer 2's exact match (`=`), since several indices can be active at
801
+ once. One shared declaration: every index dims to the same 0.4, only the
802
+ selector differs. */
803
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="0"]) .seeds-wordcloud-word--index-0:not(.highcharts-point-hover):not(.highcharts-point-inactive),
804
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="1"]) .seeds-wordcloud-word--index-1:not(.highcharts-point-hover):not(.highcharts-point-inactive),
805
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="2"]) .seeds-wordcloud-word--index-2:not(.highcharts-point-hover):not(.highcharts-point-inactive),
806
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="3"]) .seeds-wordcloud-word--index-3:not(.highcharts-point-hover):not(.highcharts-point-inactive),
807
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="4"]) .seeds-wordcloud-word--index-4:not(.highcharts-point-hover):not(.highcharts-point-inactive),
808
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="5"]) .seeds-wordcloud-word--index-5:not(.highcharts-point-hover):not(.highcharts-point-inactive),
809
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="6"]) .seeds-wordcloud-word--index-6:not(.highcharts-point-hover):not(.highcharts-point-inactive),
810
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="7"]) .seeds-wordcloud-word--index-7:not(.highcharts-point-hover):not(.highcharts-point-inactive),
811
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="8"]) .seeds-wordcloud-word--index-8:not(.highcharts-point-hover):not(.highcharts-point-inactive),
812
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="9"]) .seeds-wordcloud-word--index-9:not(.highcharts-point-hover):not(.highcharts-point-inactive),
813
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="10"]) .seeds-wordcloud-word--index-10:not(.highcharts-point-hover):not(.highcharts-point-inactive),
814
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="11"]) .seeds-wordcloud-word--index-11:not(.highcharts-point-hover):not(.highcharts-point-inactive),
815
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="12"]) .seeds-wordcloud-word--index-12:not(.highcharts-point-hover):not(.highcharts-point-inactive),
816
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="13"]) .seeds-wordcloud-word--index-13:not(.highcharts-point-hover):not(.highcharts-point-inactive),
817
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="14"]) .seeds-wordcloud-word--index-14:not(.highcharts-point-hover):not(.highcharts-point-inactive),
818
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="15"]) .seeds-wordcloud-word--index-15:not(.highcharts-point-hover):not(.highcharts-point-inactive),
819
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="16"]) .seeds-wordcloud-word--index-16:not(.highcharts-point-hover):not(.highcharts-point-inactive),
820
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="17"]) .seeds-wordcloud-word--index-17:not(.highcharts-point-hover):not(.highcharts-point-inactive),
821
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="18"]) .seeds-wordcloud-word--index-18:not(.highcharts-point-hover):not(.highcharts-point-inactive),
822
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="19"]) .seeds-wordcloud-word--index-19:not(.highcharts-point-hover):not(.highcharts-point-inactive),
823
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="20"]) .seeds-wordcloud-word--index-20:not(.highcharts-point-hover):not(.highcharts-point-inactive),
824
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="21"]) .seeds-wordcloud-word--index-21:not(.highcharts-point-hover):not(.highcharts-point-inactive),
825
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="22"]) .seeds-wordcloud-word--index-22:not(.highcharts-point-hover):not(.highcharts-point-inactive),
826
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="23"]) .seeds-wordcloud-word--index-23:not(.highcharts-point-hover):not(.highcharts-point-inactive),
827
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="24"]) .seeds-wordcloud-word--index-24:not(.highcharts-point-hover):not(.highcharts-point-inactive),
828
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="25"]) .seeds-wordcloud-word--index-25:not(.highcharts-point-hover):not(.highcharts-point-inactive),
829
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="26"]) .seeds-wordcloud-word--index-26:not(.highcharts-point-hover):not(.highcharts-point-inactive),
830
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="27"]) .seeds-wordcloud-word--index-27:not(.highcharts-point-hover):not(.highcharts-point-inactive),
831
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="28"]) .seeds-wordcloud-word--index-28:not(.highcharts-point-hover):not(.highcharts-point-inactive),
832
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="29"]) .seeds-wordcloud-word--index-29:not(.highcharts-point-hover):not(.highcharts-point-inactive),
833
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="30"]) .seeds-wordcloud-word--index-30:not(.highcharts-point-hover):not(.highcharts-point-inactive),
834
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="31"]) .seeds-wordcloud-word--index-31:not(.highcharts-point-hover):not(.highcharts-point-inactive),
835
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="32"]) .seeds-wordcloud-word--index-32:not(.highcharts-point-hover):not(.highcharts-point-inactive),
836
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="33"]) .seeds-wordcloud-word--index-33:not(.highcharts-point-hover):not(.highcharts-point-inactive),
837
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="34"]) .seeds-wordcloud-word--index-34:not(.highcharts-point-hover):not(.highcharts-point-inactive),
838
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="35"]) .seeds-wordcloud-word--index-35:not(.highcharts-point-hover):not(.highcharts-point-inactive),
839
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="36"]) .seeds-wordcloud-word--index-36:not(.highcharts-point-hover):not(.highcharts-point-inactive),
840
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="37"]) .seeds-wordcloud-word--index-37:not(.highcharts-point-hover):not(.highcharts-point-inactive),
841
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="38"]) .seeds-wordcloud-word--index-38:not(.highcharts-point-hover):not(.highcharts-point-inactive),
842
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="39"]) .seeds-wordcloud-word--index-39:not(.highcharts-point-hover):not(.highcharts-point-inactive),
843
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="40"]) .seeds-wordcloud-word--index-40:not(.highcharts-point-hover):not(.highcharts-point-inactive),
844
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="41"]) .seeds-wordcloud-word--index-41:not(.highcharts-point-hover):not(.highcharts-point-inactive),
845
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="42"]) .seeds-wordcloud-word--index-42:not(.highcharts-point-hover):not(.highcharts-point-inactive),
846
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="43"]) .seeds-wordcloud-word--index-43:not(.highcharts-point-hover):not(.highcharts-point-inactive),
847
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="44"]) .seeds-wordcloud-word--index-44:not(.highcharts-point-hover):not(.highcharts-point-inactive),
848
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="45"]) .seeds-wordcloud-word--index-45:not(.highcharts-point-hover):not(.highcharts-point-inactive),
849
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="46"]) .seeds-wordcloud-word--index-46:not(.highcharts-point-hover):not(.highcharts-point-inactive),
850
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="47"]) .seeds-wordcloud-word--index-47:not(.highcharts-point-hover):not(.highcharts-point-inactive),
851
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="48"]) .seeds-wordcloud-word--index-48:not(.highcharts-point-hover):not(.highcharts-point-inactive),
852
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="49"]) .seeds-wordcloud-word--index-49:not(.highcharts-point-hover):not(.highcharts-point-inactive),
853
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="50"]) .seeds-wordcloud-word--index-50:not(.highcharts-point-hover):not(.highcharts-point-inactive),
854
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="51"]) .seeds-wordcloud-word--index-51:not(.highcharts-point-hover):not(.highcharts-point-inactive),
855
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="52"]) .seeds-wordcloud-word--index-52:not(.highcharts-point-hover):not(.highcharts-point-inactive),
856
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="53"]) .seeds-wordcloud-word--index-53:not(.highcharts-point-hover):not(.highcharts-point-inactive),
857
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="54"]) .seeds-wordcloud-word--index-54:not(.highcharts-point-hover):not(.highcharts-point-inactive),
858
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="55"]) .seeds-wordcloud-word--index-55:not(.highcharts-point-hover):not(.highcharts-point-inactive),
859
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="56"]) .seeds-wordcloud-word--index-56:not(.highcharts-point-hover):not(.highcharts-point-inactive),
860
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="57"]) .seeds-wordcloud-word--index-57:not(.highcharts-point-hover):not(.highcharts-point-inactive),
861
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="58"]) .seeds-wordcloud-word--index-58:not(.highcharts-point-hover):not(.highcharts-point-inactive),
862
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="59"]) .seeds-wordcloud-word--index-59:not(.highcharts-point-hover):not(.highcharts-point-inactive),
863
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="60"]) .seeds-wordcloud-word--index-60:not(.highcharts-point-hover):not(.highcharts-point-inactive),
864
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="61"]) .seeds-wordcloud-word--index-61:not(.highcharts-point-hover):not(.highcharts-point-inactive),
865
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="62"]) .seeds-wordcloud-word--index-62:not(.highcharts-point-hover):not(.highcharts-point-inactive),
866
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="63"]) .seeds-wordcloud-word--index-63:not(.highcharts-point-hover):not(.highcharts-point-inactive),
867
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="64"]) .seeds-wordcloud-word--index-64:not(.highcharts-point-hover):not(.highcharts-point-inactive),
868
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="65"]) .seeds-wordcloud-word--index-65:not(.highcharts-point-hover):not(.highcharts-point-inactive),
869
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="66"]) .seeds-wordcloud-word--index-66:not(.highcharts-point-hover):not(.highcharts-point-inactive),
870
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="67"]) .seeds-wordcloud-word--index-67:not(.highcharts-point-hover):not(.highcharts-point-inactive),
871
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="68"]) .seeds-wordcloud-word--index-68:not(.highcharts-point-hover):not(.highcharts-point-inactive),
872
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="69"]) .seeds-wordcloud-word--index-69:not(.highcharts-point-hover):not(.highcharts-point-inactive),
873
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="70"]) .seeds-wordcloud-word--index-70:not(.highcharts-point-hover):not(.highcharts-point-inactive),
874
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="71"]) .seeds-wordcloud-word--index-71:not(.highcharts-point-hover):not(.highcharts-point-inactive),
875
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="72"]) .seeds-wordcloud-word--index-72:not(.highcharts-point-hover):not(.highcharts-point-inactive),
876
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="73"]) .seeds-wordcloud-word--index-73:not(.highcharts-point-hover):not(.highcharts-point-inactive),
877
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="74"]) .seeds-wordcloud-word--index-74:not(.highcharts-point-hover):not(.highcharts-point-inactive),
878
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="75"]) .seeds-wordcloud-word--index-75:not(.highcharts-point-hover):not(.highcharts-point-inactive),
879
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="76"]) .seeds-wordcloud-word--index-76:not(.highcharts-point-hover):not(.highcharts-point-inactive),
880
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="77"]) .seeds-wordcloud-word--index-77:not(.highcharts-point-hover):not(.highcharts-point-inactive),
881
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="78"]) .seeds-wordcloud-word--index-78:not(.highcharts-point-hover):not(.highcharts-point-inactive),
882
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="79"]) .seeds-wordcloud-word--index-79:not(.highcharts-point-hover):not(.highcharts-point-inactive),
883
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="80"]) .seeds-wordcloud-word--index-80:not(.highcharts-point-hover):not(.highcharts-point-inactive),
884
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="81"]) .seeds-wordcloud-word--index-81:not(.highcharts-point-hover):not(.highcharts-point-inactive),
885
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="82"]) .seeds-wordcloud-word--index-82:not(.highcharts-point-hover):not(.highcharts-point-inactive),
886
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="83"]) .seeds-wordcloud-word--index-83:not(.highcharts-point-hover):not(.highcharts-point-inactive),
887
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="84"]) .seeds-wordcloud-word--index-84:not(.highcharts-point-hover):not(.highcharts-point-inactive),
888
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="85"]) .seeds-wordcloud-word--index-85:not(.highcharts-point-hover):not(.highcharts-point-inactive),
889
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="86"]) .seeds-wordcloud-word--index-86:not(.highcharts-point-hover):not(.highcharts-point-inactive),
890
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="87"]) .seeds-wordcloud-word--index-87:not(.highcharts-point-hover):not(.highcharts-point-inactive),
891
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="88"]) .seeds-wordcloud-word--index-88:not(.highcharts-point-hover):not(.highcharts-point-inactive),
892
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="89"]) .seeds-wordcloud-word--index-89:not(.highcharts-point-hover):not(.highcharts-point-inactive),
893
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="90"]) .seeds-wordcloud-word--index-90:not(.highcharts-point-hover):not(.highcharts-point-inactive),
894
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="91"]) .seeds-wordcloud-word--index-91:not(.highcharts-point-hover):not(.highcharts-point-inactive),
895
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="92"]) .seeds-wordcloud-word--index-92:not(.highcharts-point-hover):not(.highcharts-point-inactive),
896
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="93"]) .seeds-wordcloud-word--index-93:not(.highcharts-point-hover):not(.highcharts-point-inactive),
897
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="94"]) .seeds-wordcloud-word--index-94:not(.highcharts-point-hover):not(.highcharts-point-inactive),
898
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="95"]) .seeds-wordcloud-word--index-95:not(.highcharts-point-hover):not(.highcharts-point-inactive),
899
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="96"]) .seeds-wordcloud-word--index-96:not(.highcharts-point-hover):not(.highcharts-point-inactive),
900
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="97"]) .seeds-wordcloud-word--index-97:not(.highcharts-point-hover):not(.highcharts-point-inactive),
901
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="98"]) .seeds-wordcloud-word--index-98:not(.highcharts-point-hover):not(.highcharts-point-inactive),
902
+ .seeds-chart-wordcloud[data-active-word-indices]:not([data-active-word-indices~="99"]) .seeds-wordcloud-word--index-99:not(.highcharts-point-hover):not(.highcharts-point-inactive) {
903
+ opacity: 0.4;
904
+ }
@@ -1,11 +1,11 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }
2
2
 
3
- var _chunkTNZNBMSZjs = require('./chunk-TNZNBMSZ.js');
3
+ var _chunkNU2RCATKjs = require('./chunk-NU2RCATK.js');
4
4
 
5
5
  // src/charts/shared/axisOptions.ts
6
6
  function makeDatetimeAxisLabelFormatter(timezone, timeFormat) {
7
7
  return function() {
8
- const { primary, secondary } = _chunkTNZNBMSZjs.datetimeFormatter.call(void 0, {
8
+ const { primary, secondary } = _chunkNU2RCATKjs.datetimeFormatter.call(void 0, {
9
9
  value: this.value,
10
10
  tickPositions: _nullishCoalesce(this.axis.tickPositions, () => ( [])),
11
11
  timezone,
@@ -53,4 +53,4 @@ function resolveTooltipOptions(input) {
53
53
 
54
54
 
55
55
  exports.buildDimensionalAxis = buildDimensionalAxis; exports.resolveTooltipOptions = resolveTooltipOptions;
56
- //# sourceMappingURL=chunk-2A3KLUIF.js.map
56
+ //# sourceMappingURL=chunk-BRIU5SPJ.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/_work/seeds/seeds/seeds-react/seeds-react-data-viz/dist/chunk-2A3KLUIF.js","../src/charts/shared/axisOptions.ts"],"names":[],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B;AACA;ACqBA,SAAS,8BAAA,CACP,QAAA,EACA,UAAA,EACA;AACA,EAAA,OAAO,QAAA,CAAA,EAAwD;AAC7D,IAAA,MAAM,EAAE,OAAA,EAAS,UAAU,EAAA,EAAI,gDAAA;AAAkB,MAC/C,KAAA,EAAO,IAAA,CAAK,KAAA;AAAA,MACZ,aAAA,mBAAe,IAAA,CAAK,IAAA,CAAK,aAAA,UAAiB,CAAC,GAAA;AAAA,MAC3C,QAAA;AAAA,MACA;AAAA,IACF,CAAC,CAAA;AACD,IAAA,OAAO,UAAA,EACH,CAAA,EAAA;AAEN,EAAA;AACF;AAOgB;AAII,EAAA;AACT,IAAA;AACC,MAAA;AACU,MAAA;AACR,MAAA;AACK,QAAA;AACb,MAAA;AACF,IAAA;AACF,EAAA;AACO,EAAA;AACC,IAAA;AACU,IAAA;AACA,IAAA;AAClB,EAAA;AACF;AAOgB;AAIO,EAAA;AACvB;AAqBgB;AAGC,EAAA;AACH,EAAA;AACH,IAAA;AACK,MAAA;AACE,MAAA;AACA,MAAA;AACd,IAAA;AACF,EAAA;AACO,EAAA;AACK,IAAA;AACQ,IAAA;AACN,IAAA;AACd,EAAA;AACF;ADhEwB;AACA;AACA;AACA;AACA","file":"/home/runner/_work/seeds/seeds/seeds-react/seeds-react-data-viz/dist/chunk-2A3KLUIF.js","sourcesContent":[null,"// Shared adapter helpers for the X/Y chart families (bar, line-area, …). Each\n// family's adapter still owns its `chart.type`, `plotOptions`, `series`, and\n// value (y) axis; these utilities cover the dimensional-axis + timezone wiring\n// that is identical across families, so it lives in one place.\n//\n// Deliberately granular (one concern per function) rather than a single base-\n// options builder, so a non-X/Y family like donut can reuse the subset that\n// applies to it. The broader shared-shell + value-axis sharing is left to the\n// X/Y pattern-sharing spike — the value axis in particular diverges per family\n// today (e.g. bar's declarative `format` from CE-41), so it stays per-family.\n\nimport type { DimensionalAxis } from \"./axis\";\nimport type {\n ChartTooltipProps,\n SeedsAxisLabelFormatterContext,\n SeedsChartXAxisOptions,\n} from \"./chartBase\";\nimport { datetimeFormatter } from \"./formatters/datetimeFormatter\";\nimport type { DatetimeTimeFormat } from \"./formatters/datetimeFormatter\";\n\n// Datetime tick labels: a granularity-aware, timezone/DST-correct two-line\n// stacked label via the shared `datetimeFormatter`, rendered as SVG. `<br/>` is a\n// line break in Highcharts' SVG text (styledMode, useHTML: false); the secondary\n// token is wrapped in a <span> — rendered as a <tspan> — styled by the\n// `.highcharts-xaxis-labels` rule in `styles/chartStyles.ts`.\nfunction makeDatetimeAxisLabelFormatter(\n timezone: string,\n timeFormat: DatetimeTimeFormat | undefined\n) {\n return function (this: SeedsAxisLabelFormatterContext): string {\n const { primary, secondary } = datetimeFormatter({\n value: this.value,\n tickPositions: this.axis.tickPositions ?? [],\n timezone,\n timeFormat,\n });\n return secondary\n ? `${primary}<br/><span class=\"hc-axis-label-secondary\">${secondary}</span>`\n : primary;\n };\n}\n\n/**\n * Builds the dimensional (x) axis options shared by the X/Y chart families.\n * Category axes pass their labels through; datetime axes get the granularity-\n * aware two-line label formatter. `timezone` is only consulted for datetime.\n */\nexport function buildDimensionalAxis(\n axis: DimensionalAxis,\n timezone: string\n): SeedsChartXAxisOptions {\n if (axis.type === \"datetime\") {\n return {\n type: \"datetime\",\n crosshair: axis.crosshair,\n labels: {\n formatter: makeDatetimeAxisLabelFormatter(timezone, axis.timeFormat),\n },\n };\n }\n return {\n type: \"category\",\n categories: [...axis.categories],\n crosshair: axis.crosshair,\n };\n}\n\n/**\n * The timezone shared by datetime-axis ticks (`time.timezone`) and the tooltip\n * date formatter, so they can never disagree about the day. Defaults to `\"UTC\"`\n * on a datetime axis; `undefined` on a category axis (timezone is meaningless).\n */\nexport function resolveTooltipTimezone(\n axis: DimensionalAxis,\n timezone?: string\n): string | undefined {\n return axis.type === \"datetime\" ? timezone ?? \"UTC\" : undefined;\n}\n\n/**\n * The slice of a family's public props the tooltip defaults derive from. Every\n * X/Y family satisfies this structurally, so a family passes its props straight\n * in. Growing the inputs means widening this type, not changing call sites.\n */\nexport type ChartTooltipOptionsInput = Readonly<{\n xAxis?: DimensionalAxis;\n timezone?: string;\n}>;\n\n/**\n * The tooltip's datetime-derived options as one object, so the resolver output\n * and the `ChartTooltipProps` payload can't drift. `timezone` gets the `?? \"UTC\"`\n * default via `resolveTooltipTimezone`; `timeFormat` is read straight off a\n * datetime axis; `textLocale` has no input source in this signature today\n * (CE-35) and resolves to `undefined` — wiring it to `valueFormat.textLocale` is\n * out of scope. Both sides are derived types: widen the input, add the field to\n * `ChartTooltipProps` and this `Pick`, and the compiler keeps them aligned.\n */\nexport function resolveTooltipOptions(\n input: ChartTooltipOptionsInput\n): Pick<ChartTooltipProps, \"timezone\" | \"timeFormat\" | \"textLocale\"> {\n const { xAxis, timezone } = input;\n if (!xAxis) {\n return {\n timezone: undefined,\n timeFormat: undefined,\n textLocale: undefined,\n };\n }\n return {\n timezone: resolveTooltipTimezone(xAxis, timezone),\n timeFormat: xAxis.type === \"datetime\" ? xAxis.timeFormat : undefined,\n textLocale: undefined,\n };\n}\n"]}
1
+ {"version":3,"sources":["/home/runner/_work/seeds/seeds/seeds-react/seeds-react-data-viz/dist/chunk-BRIU5SPJ.js","../src/charts/shared/axisOptions.ts"],"names":[],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B;AACA;ACqBA,SAAS,8BAAA,CACP,QAAA,EACA,UAAA,EACA;AACA,EAAA,OAAO,QAAA,CAAA,EAAwD;AAC7D,IAAA,MAAM,EAAE,OAAA,EAAS,UAAU,EAAA,EAAI,gDAAA;AAAkB,MAC/C,KAAA,EAAO,IAAA,CAAK,KAAA;AAAA,MACZ,aAAA,mBAAe,IAAA,CAAK,IAAA,CAAK,aAAA,UAAiB,CAAC,GAAA;AAAA,MAC3C,QAAA;AAAA,MACA;AAAA,IACF,CAAC,CAAA;AACD,IAAA,OAAO,UAAA,EACH,CAAA,EAAA;AAEN,EAAA;AACF;AAOgB;AAII,EAAA;AACT,IAAA;AACC,MAAA;AACU,MAAA;AACR,MAAA;AACK,QAAA;AACb,MAAA;AACF,IAAA;AACF,EAAA;AACO,EAAA;AACC,IAAA;AACU,IAAA;AACA,IAAA;AAClB,EAAA;AACF;AAOgB;AAIO,EAAA;AACvB;AAqBgB;AAGC,EAAA;AACH,EAAA;AACH,IAAA;AACK,MAAA;AACE,MAAA;AACA,MAAA;AACd,IAAA;AACF,EAAA;AACO,EAAA;AACK,IAAA;AACQ,IAAA;AACN,IAAA;AACd,EAAA;AACF;ADhEwB;AACA;AACA;AACA;AACA","file":"/home/runner/_work/seeds/seeds/seeds-react/seeds-react-data-viz/dist/chunk-BRIU5SPJ.js","sourcesContent":[null,"// Shared adapter helpers for the X/Y chart families (bar, line-area, …). Each\n// family's adapter still owns its `chart.type`, `plotOptions`, `series`, and\n// value (y) axis; these utilities cover the dimensional-axis + timezone wiring\n// that is identical across families, so it lives in one place.\n//\n// Deliberately granular (one concern per function) rather than a single base-\n// options builder, so a non-X/Y family like donut can reuse the subset that\n// applies to it. The broader shared-shell + value-axis sharing is left to the\n// X/Y pattern-sharing spike — the value axis in particular diverges per family\n// today (e.g. bar's declarative `format` from CE-41), so it stays per-family.\n\nimport type { DimensionalAxis } from \"./axis\";\nimport type {\n ChartTooltipProps,\n SeedsAxisLabelFormatterContext,\n SeedsChartXAxisOptions,\n} from \"./chartBase\";\nimport { datetimeFormatter } from \"./formatters/datetimeFormatter\";\nimport type { DatetimeTimeFormat } from \"./formatters/datetimeFormatter\";\n\n// Datetime tick labels: a granularity-aware, timezone/DST-correct two-line\n// stacked label via the shared `datetimeFormatter`, rendered as SVG. `<br/>` is a\n// line break in Highcharts' SVG text (styledMode, useHTML: false); the secondary\n// token is wrapped in a <span> — rendered as a <tspan> — styled by the\n// `.highcharts-xaxis-labels` rule in `styles/chartStyles.ts`.\nfunction makeDatetimeAxisLabelFormatter(\n timezone: string,\n timeFormat: DatetimeTimeFormat | undefined\n) {\n return function (this: SeedsAxisLabelFormatterContext): string {\n const { primary, secondary } = datetimeFormatter({\n value: this.value,\n tickPositions: this.axis.tickPositions ?? [],\n timezone,\n timeFormat,\n });\n return secondary\n ? `${primary}<br/><span class=\"hc-axis-label-secondary\">${secondary}</span>`\n : primary;\n };\n}\n\n/**\n * Builds the dimensional (x) axis options shared by the X/Y chart families.\n * Category axes pass their labels through; datetime axes get the granularity-\n * aware two-line label formatter. `timezone` is only consulted for datetime.\n */\nexport function buildDimensionalAxis(\n axis: DimensionalAxis,\n timezone: string\n): SeedsChartXAxisOptions {\n if (axis.type === \"datetime\") {\n return {\n type: \"datetime\",\n crosshair: axis.crosshair,\n labels: {\n formatter: makeDatetimeAxisLabelFormatter(timezone, axis.timeFormat),\n },\n };\n }\n return {\n type: \"category\",\n categories: [...axis.categories],\n crosshair: axis.crosshair,\n };\n}\n\n/**\n * The timezone shared by datetime-axis ticks (`time.timezone`) and the tooltip\n * date formatter, so they can never disagree about the day. Defaults to `\"UTC\"`\n * on a datetime axis; `undefined` on a category axis (timezone is meaningless).\n */\nexport function resolveTooltipTimezone(\n axis: DimensionalAxis,\n timezone?: string\n): string | undefined {\n return axis.type === \"datetime\" ? timezone ?? \"UTC\" : undefined;\n}\n\n/**\n * The slice of a family's public props the tooltip defaults derive from. Every\n * X/Y family satisfies this structurally, so a family passes its props straight\n * in. Growing the inputs means widening this type, not changing call sites.\n */\nexport type ChartTooltipOptionsInput = Readonly<{\n xAxis?: DimensionalAxis;\n timezone?: string;\n}>;\n\n/**\n * The tooltip's datetime-derived options as one object, so the resolver output\n * and the `ChartTooltipProps` payload can't drift. `timezone` gets the `?? \"UTC\"`\n * default via `resolveTooltipTimezone`; `timeFormat` is read straight off a\n * datetime axis; `textLocale` has no input source in this signature today\n * (CE-35) and resolves to `undefined` — wiring it to `valueFormat.textLocale` is\n * out of scope. Both sides are derived types: widen the input, add the field to\n * `ChartTooltipProps` and this `Pick`, and the compiler keeps them aligned.\n */\nexport function resolveTooltipOptions(\n input: ChartTooltipOptionsInput\n): Pick<ChartTooltipProps, \"timezone\" | \"timeFormat\" | \"textLocale\"> {\n const { xAxis, timezone } = input;\n if (!xAxis) {\n return {\n timezone: undefined,\n timeFormat: undefined,\n textLocale: undefined,\n };\n }\n return {\n timezone: resolveTooltipTimezone(xAxis, timezone),\n timeFormat: xAxis.type === \"datetime\" ? xAxis.timeFormat : undefined,\n textLocale: undefined,\n };\n}\n"]}