@splunk/visualizations 28.8.0 → 28.9.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 (273) hide show
  1. package/Area.config.js +2 -4
  2. package/Area.config.js.map +2 -2
  3. package/Area.js +245 -147
  4. package/Area.js.map +4 -4
  5. package/Bar.config.js +2 -4
  6. package/Bar.config.js.map +2 -2
  7. package/Bar.js +246 -148
  8. package/Bar.js.map +4 -4
  9. package/Bubble/Bubble.d.ts +3 -1
  10. package/Bubble/Bubble.d.ts.map +1 -1
  11. package/Bubble.js +216 -108
  12. package/Bubble.js.map +4 -4
  13. package/CHANGELOG.external.md +31 -1
  14. package/ChoroplethSvg/ChoroplethSvg.d.ts +3 -1
  15. package/ChoroplethSvg/ChoroplethSvg.d.ts.map +1 -1
  16. package/ChoroplethSvg/PureChoroplethSvg/PureChoroplethSvg.d.ts.map +1 -1
  17. package/ChoroplethSvg/PureChoroplethSvg/SvgMutator.d.ts.map +1 -1
  18. package/ChoroplethSvg.js +638 -209
  19. package/ChoroplethSvg.js.map +4 -4
  20. package/Column.config.js +2 -4
  21. package/Column.config.js.map +2 -2
  22. package/Column.js +246 -148
  23. package/Column.js.map +4 -4
  24. package/Ellipse/Ellipse.d.ts +3 -1
  25. package/Ellipse/Ellipse.d.ts.map +1 -1
  26. package/Ellipse.js +216 -105
  27. package/Ellipse.js.map +4 -4
  28. package/Events/Events.d.ts +5 -3
  29. package/Events/Events.d.ts.map +1 -1
  30. package/Events/PureEvents/FieldSummaryTooltip.d.ts.map +1 -1
  31. package/Events/PureEvents/PureEvents.d.ts +0 -1
  32. package/Events/PureEvents/PureEvents.d.ts.map +1 -1
  33. package/Events.js +270 -157
  34. package/Events.js.map +4 -4
  35. package/FillerGauge.js +243 -140
  36. package/FillerGauge.js.map +4 -4
  37. package/Image/Image.d.ts +3 -1
  38. package/Image/Image.d.ts.map +1 -1
  39. package/Image.js +217 -106
  40. package/Image.js.map +4 -4
  41. package/Line.config.js +2 -4
  42. package/Line.config.js.map +2 -2
  43. package/Line.js +246 -148
  44. package/Line.js.map +4 -4
  45. package/LinkGraph/LinkGraph.d.ts +3 -1
  46. package/LinkGraph/LinkGraph.d.ts.map +1 -1
  47. package/LinkGraph/PureLinkGraph/PureLinkGraphUtils.d.ts.map +1 -1
  48. package/LinkGraph/PureLinkGraph/components/Node.d.ts.map +1 -1
  49. package/LinkGraph.config.js +1 -1
  50. package/LinkGraph.config.js.map +2 -2
  51. package/LinkGraph.js +802 -682
  52. package/LinkGraph.js.map +4 -4
  53. package/Map/Map.d.ts +10 -9
  54. package/Map/Map.d.ts.map +1 -1
  55. package/Map/PureMap/BubbleLayer.d.ts.map +1 -1
  56. package/Map/PureMap/ClusterLayer.d.ts.map +1 -1
  57. package/Map/PureMap/MapUtils.d.ts.map +1 -1
  58. package/Map/PureMap/MarkerWrapper.d.ts.map +1 -1
  59. package/Map/PureMap/PureMap.d.ts +8 -65
  60. package/Map/PureMap/PureMap.d.ts.map +1 -1
  61. package/Map.config.js +1 -1
  62. package/Map.config.js.map +2 -2
  63. package/Map.js +363 -313
  64. package/Map.js.map +4 -4
  65. package/Markdown/Markdown.d.ts +9 -1
  66. package/Markdown/Markdown.d.ts.map +1 -1
  67. package/Markdown/config.d.ts.map +1 -1
  68. package/Markdown.config.js +5 -0
  69. package/Markdown.config.js.map +2 -2
  70. package/Markdown.js +225 -94
  71. package/Markdown.js.map +3 -3
  72. package/MarkerGauge.js +239 -134
  73. package/MarkerGauge.js.map +4 -4
  74. package/NetworkGraph/PureNetworkGraph/PureNetworkGraph.d.ts.map +1 -1
  75. package/NetworkGraph/PureNetworkGraph/components/NetworkGraphSvg.d.ts +1 -0
  76. package/NetworkGraph/PureNetworkGraph/components/NetworkGraphSvg.d.ts.map +1 -1
  77. package/NetworkGraph/PureNetworkGraph/components/Node.d.ts +1 -0
  78. package/NetworkGraph/PureNetworkGraph/components/Node.d.ts.map +1 -1
  79. package/NetworkGraph/PureNetworkGraph/utils/networkGraphUtils.d.ts +3 -5
  80. package/NetworkGraph/PureNetworkGraph/utils/networkGraphUtils.d.ts.map +1 -1
  81. package/NetworkGraph.config.js +4 -2
  82. package/NetworkGraph.config.js.map +2 -2
  83. package/NetworkGraph.js +327 -188
  84. package/NetworkGraph.js.map +4 -4
  85. package/ParallelCoordinates/ParallelCoordinates.d.ts +3 -1
  86. package/ParallelCoordinates/ParallelCoordinates.d.ts.map +1 -1
  87. package/ParallelCoordinates.js +239 -128
  88. package/ParallelCoordinates.js.map +4 -4
  89. package/Pie/config.d.ts.map +1 -1
  90. package/Pie/pieUtils.d.ts.map +1 -1
  91. package/Pie.config.js +4 -2
  92. package/Pie.config.js.map +2 -2
  93. package/Pie.js +228 -125
  94. package/Pie.js.map +3 -3
  95. package/ProcessTree/ProcessTree.d.ts +3 -1
  96. package/ProcessTree/ProcessTree.d.ts.map +1 -1
  97. package/ProcessTree/PureProcessTree/PureProcessTree.d.ts +1 -0
  98. package/ProcessTree/PureProcessTree/PureProcessTree.d.ts.map +1 -1
  99. package/ProcessTree/PureProcessTree/components/ProcessTreeLeftPanel.d.ts +1 -0
  100. package/ProcessTree/PureProcessTree/components/ProcessTreeLeftPanel.d.ts.map +1 -1
  101. package/ProcessTree/PureProcessTree/hooks/useProcessTreeGraphData.d.ts +2 -1
  102. package/ProcessTree/PureProcessTree/hooks/useProcessTreeGraphData.d.ts.map +1 -1
  103. package/ProcessTree/PureProcessTree/utils/iconLoader.d.ts +2 -0
  104. package/ProcessTree/PureProcessTree/utils/iconLoader.d.ts.map +1 -1
  105. package/ProcessTree/PureProcessTree/utils/processTreeUtils.d.ts +5 -1
  106. package/ProcessTree/PureProcessTree/utils/processTreeUtils.d.ts.map +1 -1
  107. package/ProcessTree.js +435 -192
  108. package/ProcessTree.js.map +4 -4
  109. package/Punchcard/Punchcard.d.ts +3 -1
  110. package/Punchcard/Punchcard.d.ts.map +1 -1
  111. package/Punchcard.js +238 -129
  112. package/Punchcard.js.map +4 -4
  113. package/Rectangle/Rectangle.d.ts +3 -1
  114. package/Rectangle/Rectangle.d.ts.map +1 -1
  115. package/Rectangle.js +218 -116
  116. package/Rectangle.js.map +4 -4
  117. package/RichText/PureRichText/Editor/EditorPanel.d.ts +1 -4
  118. package/RichText/PureRichText/Editor/EditorPanel.d.ts.map +1 -1
  119. package/RichText/PureRichText/Editor/hooks/useConfigPanelFocus.d.ts +14 -0
  120. package/RichText/PureRichText/Editor/hooks/useConfigPanelFocus.d.ts.map +1 -0
  121. package/RichText/PureRichText/Editor/hooks/useEditorPanelSync.d.ts +15 -0
  122. package/RichText/PureRichText/Editor/hooks/useEditorPanelSync.d.ts.map +1 -0
  123. package/RichText/PureRichText/Editor/hooks/useLinkHandlers.d.ts.map +1 -1
  124. package/RichText/PureRichText/Editor/hooks/usePortalTarget.d.ts +9 -0
  125. package/RichText/PureRichText/Editor/hooks/usePortalTarget.d.ts.map +1 -0
  126. package/RichText/PureRichText/InnerEditor.d.ts +15 -9
  127. package/RichText/PureRichText/InnerEditor.d.ts.map +1 -1
  128. package/RichText/PureRichText/PureRichText.d.ts +5 -10
  129. package/RichText/PureRichText/PureRichText.d.ts.map +1 -1
  130. package/RichText/PureRichText/PureRichTextContext.d.ts +3 -6
  131. package/RichText/PureRichText/PureRichTextContext.d.ts.map +1 -1
  132. package/RichText/PureRichText/RichTextStyles.d.ts +5 -4
  133. package/RichText/PureRichText/RichTextStyles.d.ts.map +1 -1
  134. package/RichText/PureRichText/activeInstance.d.ts +6 -7
  135. package/RichText/PureRichText/activeInstance.d.ts.map +1 -1
  136. package/RichText/PureRichText/config.d.ts.map +1 -1
  137. package/RichText/PureRichText/hooks/useContentSync.d.ts +9 -9
  138. package/RichText/PureRichText/hooks/useContentSync.d.ts.map +1 -1
  139. package/RichText/PureRichText/hooks/useDashboardKeyboardNav.d.ts +2 -7
  140. package/RichText/PureRichText/hooks/useDashboardKeyboardNav.d.ts.map +1 -1
  141. package/RichText/PureRichText/hooks/useEditorSetup.d.ts +8 -4
  142. package/RichText/PureRichText/hooks/useEditorSetup.d.ts.map +1 -1
  143. package/RichText/PureRichText/hooks/useFocusHandlers.d.ts +2 -4
  144. package/RichText/PureRichText/hooks/useFocusHandlers.d.ts.map +1 -1
  145. package/RichText/PureRichText/hooks/useKeyboardShortcuts.d.ts.map +1 -1
  146. package/RichText/PureRichText/hooks/useMouseHandlers.d.ts +3 -7
  147. package/RichText/PureRichText/hooks/useMouseHandlers.d.ts.map +1 -1
  148. package/RichText/PureRichText/hooks/useStepFontSize.d.ts +2 -2
  149. package/RichText/PureRichText/hooks/useStepLineSpacing.d.ts +2 -3
  150. package/RichText/PureRichText/hooks/useStepLineSpacing.d.ts.map +1 -1
  151. package/RichText/PureRichText/hooks/useTokenMap.d.ts +13 -24
  152. package/RichText/PureRichText/hooks/useTokenMap.d.ts.map +1 -1
  153. package/RichText/PureRichText/renderers/ElementRenderer.d.ts +2 -5
  154. package/RichText/PureRichText/renderers/ElementRenderer.d.ts.map +1 -1
  155. package/RichText/PureRichText/types.d.ts +6 -0
  156. package/RichText/PureRichText/types.d.ts.map +1 -1
  157. package/RichText/PureRichText/utils/slateUtils.d.ts +26 -2
  158. package/RichText/PureRichText/utils/slateUtils.d.ts.map +1 -1
  159. package/RichText/RichText.d.ts +3 -1
  160. package/RichText/RichText.d.ts.map +1 -1
  161. package/RichText/config.d.ts.map +1 -1
  162. package/RichText.config.js +5 -0
  163. package/RichText.config.js.map +2 -2
  164. package/RichText.js +1848 -842
  165. package/RichText.js.map +4 -4
  166. package/Sankey/PureSankey/PureSankey.d.ts +2 -0
  167. package/Sankey/PureSankey/PureSankey.d.ts.map +1 -1
  168. package/Sankey/PureSankey/SankeyLink.d.ts +3 -1
  169. package/Sankey/PureSankey/SankeyLink.d.ts.map +1 -1
  170. package/Sankey/PureSankey/SankeyNode.d.ts +5 -2
  171. package/Sankey/PureSankey/SankeyNode.d.ts.map +1 -1
  172. package/Sankey/PureSankey/SankeyUtils.d.ts.map +1 -1
  173. package/Sankey/Sankey.d.ts +3 -1
  174. package/Sankey/Sankey.d.ts.map +1 -1
  175. package/Sankey.js +508 -219
  176. package/Sankey.js.map +4 -4
  177. package/Scatter.config.js +3 -5
  178. package/Scatter.config.js.map +2 -2
  179. package/Scatter.js +244 -146
  180. package/Scatter.js.map +4 -4
  181. package/SingleValue/SingleValue.d.ts.map +1 -1
  182. package/SingleValue.js +273 -173
  183. package/SingleValue.js.map +4 -4
  184. package/SingleValueBasic.js +4 -4
  185. package/SingleValueBasic.js.map +2 -2
  186. package/SingleValueIcon/SingleValueIcon.d.ts.map +1 -1
  187. package/SingleValueIcon.js +264 -164
  188. package/SingleValueIcon.js.map +4 -4
  189. package/SingleValueRadial.js +267 -167
  190. package/SingleValueRadial.js.map +4 -4
  191. package/SparkLine/SparkLine.d.ts.map +1 -1
  192. package/SparkLine.js.map +2 -2
  193. package/Table/PureTable.d.ts.map +1 -1
  194. package/Table/Table.d.ts +2 -5
  195. package/Table/Table.d.ts.map +1 -1
  196. package/Table/hooks.d.ts.map +1 -1
  197. package/Table.config.js +1 -1
  198. package/Table.config.js.map +2 -2
  199. package/Table.js +293 -271
  200. package/Table.js.map +4 -4
  201. package/Timeline/Timeline.d.ts +3 -1
  202. package/Timeline/Timeline.d.ts.map +1 -1
  203. package/Timeline.config.js +2 -2
  204. package/Timeline.config.js.map +2 -2
  205. package/Timeline.js +266 -142
  206. package/Timeline.js.map +4 -4
  207. package/Treemap/Treemap.d.ts +3 -1
  208. package/Treemap/Treemap.d.ts.map +1 -1
  209. package/Treemap.js +263 -147
  210. package/Treemap.js.map +4 -4
  211. package/common/Charting.js +8 -10
  212. package/common/Charting.js.map +2 -2
  213. package/common/ChartingApi.d.ts.map +1 -1
  214. package/common/ChartingApi.js +5 -2
  215. package/common/ChartingApi.js.map +2 -2
  216. package/common/DocExampleWithVizSandbox.js +3 -3
  217. package/common/DocExampleWithVizSandbox.js.map +2 -2
  218. package/common/GaugeMajorTicks.js.map +2 -2
  219. package/common/GaugeValueMarker.js.map +2 -2
  220. package/common/OptionsDoc.js +1 -1
  221. package/common/OptionsDoc.js.map +2 -2
  222. package/common/OverviewDoc.js +3 -3
  223. package/common/OverviewDoc.js.map +2 -2
  224. package/common/ThemesDoc.js.map +2 -2
  225. package/common/TimeSeriesChartWrapper.js +10 -9
  226. package/common/TimeSeriesChartWrapper.js.map +2 -2
  227. package/common/chartingUtils.d.ts.map +1 -1
  228. package/common/chartingUtils.js +12 -11
  229. package/common/chartingUtils.js.map +2 -2
  230. package/common/components/IconPlaceholder.d.ts.map +1 -1
  231. package/common/docUtils.d.ts.map +1 -1
  232. package/common/docUtils.js +15 -6
  233. package/common/docUtils.js.map +2 -2
  234. package/common/editorConfig/AxesChartDataDisplay.d.ts.map +1 -1
  235. package/common/gaugeUtils.d.ts.map +1 -1
  236. package/common/gaugeUtils.js +4 -2
  237. package/common/gaugeUtils.js.map +2 -2
  238. package/common/hooks/useSorting.d.ts.map +1 -1
  239. package/common/interfaces/VizEvent.d.ts +7 -0
  240. package/common/interfaces/VizEvent.d.ts.map +1 -1
  241. package/common/utils/dataUtils.d.ts.map +1 -1
  242. package/common/utils/dataUtils.js +6 -10
  243. package/common/utils/dataUtils.js.map +2 -2
  244. package/common/utils/featureFlagUtils.js +2 -2
  245. package/common/utils/featureFlagUtils.js.map +2 -2
  246. package/common/utils/focusUtils.js +1 -1
  247. package/common/utils/focusUtils.js.map +2 -2
  248. package/common/utils/mapUtils.d.ts.map +1 -1
  249. package/common/utils/mapUtils.js +14 -18
  250. package/common/utils/mapUtils.js.map +2 -2
  251. package/common/utils/singleValueUtils.js +22 -25
  252. package/common/utils/singleValueUtils.js.map +2 -2
  253. package/common/utils/textUtils.d.ts.map +1 -1
  254. package/common/utils/textUtils.js +37 -23
  255. package/common/utils/textUtils.js.map +2 -2
  256. package/common/utils/trellisUtils.d.ts.map +1 -1
  257. package/common/utils/trellisUtils.js +18 -17
  258. package/common/utils/trellisUtils.js.map +2 -2
  259. package/common/utils/urlUtils.js.map +2 -2
  260. package/common/utils/visualizationTheme.d.ts +15 -0
  261. package/common/utils/visualizationTheme.d.ts.map +1 -0
  262. package/common/utils/visualizationTheme.js +72 -0
  263. package/common/utils/visualizationTheme.js.map +7 -0
  264. package/common/withDashboardViz.d.ts +3 -1
  265. package/common/withDashboardViz.d.ts.map +1 -1
  266. package/common/withDashboardViz.js +216 -105
  267. package/common/withDashboardViz.js.map +4 -4
  268. package/docs-llm/network-graph/options.md +2 -2
  269. package/docs-llm/pie/examples-json.md +195 -0
  270. package/docs-llm/pie/examples-react.md +123 -0
  271. package/docs-llm/pie/options.md +1 -1
  272. package/docs-llm/process-tree/options.md +3 -2
  273. package/package.json +24 -24
package/MarkerGauge.js CHANGED
@@ -350,8 +350,10 @@ var getGradientStops = ({ ranges, orientation }) => {
350
350
  const stopColors = getGradientStopColors({ ranges, orientation });
351
351
  stops.push({ offset: `${offsets[0]}%`, stopColor: stopColors[0] });
352
352
  for (let i = 1; i < ranges.length; i += 1) {
353
- stops.push({ offset: `${offsets[i - 1]}%`, stopColor: stopColors[i] });
354
- stops.push({ offset: `${offsets[i]}%`, stopColor: stopColors[i] });
353
+ stops.push(
354
+ { offset: `${offsets[i - 1]}%`, stopColor: stopColors[i] },
355
+ { offset: `${offsets[i]}%`, stopColor: stopColors[i] }
356
+ );
355
357
  }
356
358
  return stops;
357
359
  };
@@ -1825,7 +1827,10 @@ var useSortingParams = ({ requestParams, onRequestParamsChange }) => {
1825
1827
  onSort = (e, { sortKey, sortDir }) => {
1826
1828
  if (typeof sortKey === "string") {
1827
1829
  const nextSortDir = (0, lodash_exports.has)(nextSortDirMap, sortDir) ? nextSortDirMap[sortDir] : "none";
1828
- onRequestParamsChange(__spreadValues(__spreadValues({}, requestParams), { offset: 0, sort: { [sortKey]: nextSortDir } }));
1830
+ onRequestParamsChange(__spreadProps(__spreadValues({}, requestParams), {
1831
+ offset: 0,
1832
+ sort: { [sortKey]: nextSortDir }
1833
+ }));
1829
1834
  } else {
1830
1835
  onRequestParamsChange(requestParams);
1831
1836
  }
@@ -1942,7 +1947,7 @@ var Cover = styled_components_default.div`
1942
1947
  bottom: 0;
1943
1948
  `;
1944
1949
  var Blocker = styled_components_default.div.attrs({
1945
- "data-splunk-visualization-version": "28.8.0 - 633c53372"
1950
+ "data-splunk-visualization-version": "28.9.0 - 96b03188d"
1946
1951
  })`
1947
1952
  position: relative;
1948
1953
  width: 100%;
@@ -1968,6 +1973,15 @@ var defaultImport28 = __toESM(require("@splunk/visualizations-shared/colorUtils"
1968
1973
  __reExport(colorUtils_exports, require("@splunk/visualizations-shared/colorUtils"));
1969
1974
  var colorUtils_default = "default" in defaultImport28 ? defaultImport28.default : defaultImport28;
1970
1975
 
1976
+ // esm-externals:@splunk/themes
1977
+ var themes_exports = {};
1978
+ __export(themes_exports, {
1979
+ default: () => themes_default
1980
+ });
1981
+ var defaultImport29 = __toESM(require("@splunk/themes"));
1982
+ __reExport(themes_exports, require("@splunk/themes"));
1983
+ var themes_default = "default" in defaultImport29 ? defaultImport29.default : defaultImport29;
1984
+
1971
1985
  // src/common/hocs/FixedSizeContainer.tsx
1972
1986
  var Item = styled_components_default.div.attrs(({ width }) => ({
1973
1987
  style: {
@@ -2023,7 +2037,7 @@ var withFixedSizeContainer = (Viz) => {
2023
2037
  FixSizeItem,
2024
2038
  {
2025
2039
  "data-test": "fix-size-item",
2026
- "data-splunk-visualization-version": "28.8.0 - 633c53372",
2040
+ "data-splunk-visualization-version": "28.9.0 - 96b03188d",
2027
2041
  width,
2028
2042
  height,
2029
2043
  backgroundColor
@@ -2044,6 +2058,14 @@ var shouldShowIconPlaceholder = (dataSources, loading = false) => {
2044
2058
  const noFields = fields === void 0;
2045
2059
  return loading || noData || noFields;
2046
2060
  };
2061
+ var PlaceholderContainer = styled_components_default.div`
2062
+ /* The inline token color wins when supported. Older browsers discard an
2063
+ unsupported oklch value and retain this inherited fallback instead. */
2064
+ color: ${(0, themes_exports.pick)({
2065
+ dark: "#fafafa",
2066
+ light: "#2c2c2c"
2067
+ })};
2068
+ `;
2047
2069
  var IconPlaceholder = (props) => {
2048
2070
  const {
2049
2071
  width = SplunkVisualization_default.defaults.width,
@@ -2058,7 +2080,6 @@ var IconPlaceholder = (props) => {
2058
2080
  style: {
2059
2081
  left: "50%",
2060
2082
  top: "50%",
2061
- color: iconColor,
2062
2083
  opacity: 0.15,
2063
2084
  position: "absolute",
2064
2085
  transform: "translate(-50%, -50%)"
@@ -2068,7 +2089,14 @@ var IconPlaceholder = (props) => {
2068
2089
  "data-test": "icon-placeholder"
2069
2090
  });
2070
2091
  }
2071
- return /* @__PURE__ */ react_exports.createElement("div", { style: { width, height, background: backgroundColor } }, content);
2092
+ return /* @__PURE__ */ react_exports.createElement(
2093
+ PlaceholderContainer,
2094
+ {
2095
+ "data-test": "icon-placeholder-container",
2096
+ style: { width, height, background: backgroundColor, color: iconColor }
2097
+ },
2098
+ content
2099
+ );
2072
2100
  };
2073
2101
  var IconPlaceholder_default = FixedSizeContainer_default(IconPlaceholder);
2074
2102
 
@@ -2133,7 +2161,7 @@ var largestTriangleThreeBuckets = (data, threshold, preferredDownsampleIndices)
2133
2161
  let avgY = 0;
2134
2162
  let avgRangeStart = Math.floor((i + 1) * every) + 1;
2135
2163
  let avgRangeEnd = Math.floor((i + 2) * every) + 1;
2136
- avgRangeEnd = avgRangeEnd < dataLength ? avgRangeEnd : dataLength;
2164
+ avgRangeEnd = Math.min(avgRangeEnd, dataLength);
2137
2165
  const avgRangeLength = avgRangeEnd - avgRangeStart;
2138
2166
  for (; avgRangeStart < avgRangeEnd; avgRangeStart++) {
2139
2167
  avgX += Number(data[avgRangeStart][0]);
@@ -2168,9 +2196,9 @@ var largestTriangleThreeBuckets = (data, threshold, preferredDownsampleIndices)
2168
2196
  };
2169
2197
  var strictlyCoerceYColumn = (column, options) => {
2170
2198
  const isNullCoercionEnabled = options.nullValueDisplay === "zero";
2171
- const canLooselyCoerceSomeValues = column.findIndex(
2199
+ const canLooselyCoerceSomeValues = column.some(
2172
2200
  (value) => (0, numberUtils_exports.startsWithNumber)(`${value}`) || isNullCoercionEnabled && value === null
2173
- ) >= 0;
2201
+ );
2174
2202
  const coercedColumn = [];
2175
2203
  const canDownsampleColumn = !column.some((value) => {
2176
2204
  const coercedValue = Number(value);
@@ -2189,7 +2217,7 @@ var strictlyCoerceYColumn = (column, options) => {
2189
2217
  };
2190
2218
  var strictlyCoerceXColumn = (column, fieldType) => {
2191
2219
  if (fieldType === "number") {
2192
- const coercedXColumn = column.map((xValue) => Number(xValue));
2220
+ const coercedXColumn = column.map(Number);
2193
2221
  if (isColumnStrictlyIncreasing(coercedXColumn, fieldType)) {
2194
2222
  return coercedXColumn;
2195
2223
  }
@@ -2488,16 +2516,16 @@ var FeatureFlags_exports = {};
2488
2516
  __export(FeatureFlags_exports, {
2489
2517
  default: () => FeatureFlags_default
2490
2518
  });
2491
- var defaultImport29 = __toESM(require("@splunk/visualization-context/FeatureFlags"));
2519
+ var defaultImport30 = __toESM(require("@splunk/visualization-context/FeatureFlags"));
2492
2520
  __reExport(FeatureFlags_exports, require("@splunk/visualization-context/FeatureFlags"));
2493
- var FeatureFlags_default = "default" in defaultImport29 ? defaultImport29.default : defaultImport29;
2521
+ var FeatureFlags_default = "default" in defaultImport30 ? defaultImport30.default : defaultImport30;
2494
2522
 
2495
2523
  // src/common/utils/featureFlagUtils.ts
2496
2524
  var getFeatureFlag = (context, flagName) => {
2497
- if (context && Object.keys(context).find((key) => key === flagName)) {
2525
+ if (context && Object.keys(context).includes(flagName)) {
2498
2526
  return context[flagName];
2499
2527
  }
2500
- if (Object.keys(FeatureFlags_default).find((key) => key === flagName)) {
2528
+ if (Object.keys(FeatureFlags_default).includes(flagName)) {
2501
2529
  return FeatureFlags_default[flagName];
2502
2530
  }
2503
2531
  return false;
@@ -2508,9 +2536,9 @@ var trellisUtils_exports = {};
2508
2536
  __export(trellisUtils_exports, {
2509
2537
  default: () => trellisUtils_default
2510
2538
  });
2511
- var defaultImport30 = __toESM(require("@splunk/visualizations-shared/trellisUtils"));
2539
+ var defaultImport31 = __toESM(require("@splunk/visualizations-shared/trellisUtils"));
2512
2540
  __reExport(trellisUtils_exports, require("@splunk/visualizations-shared/trellisUtils"));
2513
- var trellisUtils_default = "default" in defaultImport30 ? defaultImport30.default : defaultImport30;
2541
+ var trellisUtils_default = "default" in defaultImport31 ? defaultImport31.default : defaultImport31;
2514
2542
 
2515
2543
  // src/common/utils/trellisUtils.ts
2516
2544
  var AGGREGATIONS = "aggregations";
@@ -2731,7 +2759,7 @@ var dataSourcesSplitByModeChart = (dataSource, splitBy) => {
2731
2759
  splitByFields = (0, trellisUtils_exports.extractSplitByFieldsChartFields)(fields);
2732
2760
  }
2733
2761
  if (splitByFields == null ? void 0 : splitByFields.includes(splitBy)) {
2734
- const splitByFieldIdx = splitByFields.findIndex((f) => f === splitBy);
2762
+ const splitByFieldIdx = splitByFields.indexOf(splitBy);
2735
2763
  const otherSplitBy = splitByFields.filter((f) => f !== splitBy);
2736
2764
  const dataSourceKeys = (0, trellisUtils_exports.extractDataSourceAggregationKeysChart)(fields);
2737
2765
  const nonDataSourceAggregations = [];
@@ -2765,17 +2793,17 @@ var dataSourcesSplitByModeStatsorUnknown = (dataSource, splitBy, splitMode) => {
2765
2793
  let splitByFields = [];
2766
2794
  let errorCode = null;
2767
2795
  if (fields.length > 0) {
2768
- splitByFields = splitMode !== trellisUtils_exports.UNKNOWN ? (0, trellisUtils_exports.extractSplitByFieldsForStats)(fields) : (0, trellisUtils_exports.extractSplitByFieldsForUnknown)(fields);
2796
+ splitByFields = splitMode === trellisUtils_exports.UNKNOWN ? (0, trellisUtils_exports.extractSplitByFieldsForUnknown)(fields) : (0, trellisUtils_exports.extractSplitByFieldsForStats)(fields);
2769
2797
  }
2770
2798
  const splitByIndex = fields.findIndex((field) => field.name === splitBy);
2771
2799
  if (splitByFields == null ? void 0 : splitByFields.includes(splitBy)) {
2772
2800
  const splitByColumn = (_f = (_e = dataSource == null ? void 0 : dataSource.primary) == null ? void 0 : _e.data) == null ? void 0 : _f.columns[splitByIndex];
2773
2801
  splitDataSources = {};
2774
2802
  splitByColumn.forEach((val, idx) => {
2775
- if (!splitDataSources[val]) {
2776
- splitDataSources[val] = [idx];
2777
- } else {
2803
+ if (splitDataSources[val]) {
2778
2804
  splitDataSources[val].push(idx);
2805
+ } else {
2806
+ splitDataSources[val] = [idx];
2779
2807
  }
2780
2808
  });
2781
2809
  const cloneFields = (0, lodash_exports.cloneDeep)(fields);
@@ -2826,27 +2854,28 @@ var turnOffLegendDisplayWhenTrellisIsOn = (isTrellisOn, options) => {
2826
2854
  }
2827
2855
  return {};
2828
2856
  };
2857
+ var extendMinMaxWithColumn = (column, range2) => column.reduce((acc, point) => {
2858
+ const pointNumber = Number(point);
2859
+ if (Number.isNaN(pointNumber)) {
2860
+ return acc;
2861
+ }
2862
+ return {
2863
+ min: Math.min(pointNumber, acc.min),
2864
+ max: Math.max(pointNumber, acc.max)
2865
+ };
2866
+ }, range2);
2829
2867
  var calculateSharedMinMax = (splitData) => {
2830
- let max = -Infinity;
2831
- let min = Infinity;
2868
+ let range2 = { min: Infinity, max: -Infinity };
2832
2869
  Object.keys(splitData).forEach((splitByKey) => {
2833
2870
  const datasources = splitData[splitByKey];
2834
2871
  Object.keys(datasources).forEach((datasourceName) => {
2835
2872
  const dataColumns = datasources[datasourceName].data.columns;
2836
2873
  dataColumns.forEach((column) => {
2837
- column.forEach((point) => {
2838
- const pointNumber = Number(point);
2839
- if (pointNumber > max) {
2840
- max = pointNumber;
2841
- }
2842
- if (pointNumber < min) {
2843
- min = pointNumber;
2844
- }
2845
- });
2874
+ range2 = extendMinMaxWithColumn(column, range2);
2846
2875
  });
2847
2876
  });
2848
2877
  });
2849
- return [min, max];
2878
+ return [range2.min, range2.max];
2850
2879
  };
2851
2880
  var determineMinMax = (splitData, trellisSharedScale, yAxisMin, yAxisMax, stackMode) => {
2852
2881
  if (!trellisSharedScale || stackMode === "stacked100" || yAxisMin !== "auto" && yAxisMax !== "auto")
@@ -2862,9 +2891,9 @@ var visualization_canvas_exports = {};
2862
2891
  __export(visualization_canvas_exports, {
2863
2892
  default: () => visualization_canvas_default
2864
2893
  });
2865
- var defaultImport31 = __toESM(require("@splunk/visualization-canvas"));
2894
+ var defaultImport32 = __toESM(require("@splunk/visualization-canvas"));
2866
2895
  __reExport(visualization_canvas_exports, require("@splunk/visualization-canvas"));
2867
- var visualization_canvas_default = "default" in defaultImport31 ? defaultImport31.default : defaultImport31;
2896
+ var visualization_canvas_default = "default" in defaultImport32 ? defaultImport32.default : defaultImport32;
2868
2897
 
2869
2898
  // src/common/components/VizStyleWrapper.jsx
2870
2899
  var VizStyleWrapper = styled_components_default.div.attrs(({ dataTestKey }) => ({
@@ -2886,27 +2915,27 @@ var Triangle_exports = {};
2886
2915
  __export(Triangle_exports, {
2887
2916
  default: () => Triangle_default
2888
2917
  });
2889
- var defaultImport32 = __toESM(require("@splunk/react-icons/Triangle"));
2918
+ var defaultImport33 = __toESM(require("@splunk/react-icons/Triangle"));
2890
2919
  __reExport(Triangle_exports, require("@splunk/react-icons/Triangle"));
2891
- var Triangle_default = "default" in defaultImport32 ? defaultImport32.default : defaultImport32;
2920
+ var Triangle_default = "default" in defaultImport33 ? defaultImport33.default : defaultImport33;
2892
2921
 
2893
2922
  // esm-externals:@splunk/visualizations-shared/propUtils
2894
2923
  var propUtils_exports = {};
2895
2924
  __export(propUtils_exports, {
2896
2925
  default: () => propUtils_default
2897
2926
  });
2898
- var defaultImport33 = __toESM(require("@splunk/visualizations-shared/propUtils"));
2927
+ var defaultImport34 = __toESM(require("@splunk/visualizations-shared/propUtils"));
2899
2928
  __reExport(propUtils_exports, require("@splunk/visualizations-shared/propUtils"));
2900
- var propUtils_default = "default" in defaultImport33 ? defaultImport33.default : defaultImport33;
2929
+ var propUtils_default = "default" in defaultImport34 ? defaultImport34.default : defaultImport34;
2901
2930
 
2902
2931
  // esm-externals:@splunk/visualizations-shared/simpleXMLOptions
2903
2932
  var simpleXMLOptions_exports = {};
2904
2933
  __export(simpleXMLOptions_exports, {
2905
2934
  default: () => simpleXMLOptions_default
2906
2935
  });
2907
- var defaultImport34 = __toESM(require("@splunk/visualizations-shared/simpleXMLOptions"));
2936
+ var defaultImport35 = __toESM(require("@splunk/visualizations-shared/simpleXMLOptions"));
2908
2937
  __reExport(simpleXMLOptions_exports, require("@splunk/visualizations-shared/simpleXMLOptions"));
2909
- var simpleXMLOptions_default = "default" in defaultImport34 ? defaultImport34.default : defaultImport34;
2938
+ var simpleXMLOptions_default = "default" in defaultImport35 ? defaultImport35.default : defaultImport35;
2910
2939
 
2911
2940
  // src/common/chartingUtils.ts
2912
2941
  var DEFAULT_LINE_WIDTH = 2;
@@ -2945,9 +2974,9 @@ var shouldEnableSearchZoom = (eventHandlers = [], xField = "") => {
2945
2974
  const xAxisIsTime = xField === "_time";
2946
2975
  return !!rangeSelectEventHandler && xAxisIsTime;
2947
2976
  };
2948
- var canvasSupportedTimeSeriesCharts = ["splunk.line", "splunk.area"];
2977
+ var canvasSupportedTimeSeriesCharts = /* @__PURE__ */ new Set(["splunk.line", "splunk.area"]);
2949
2978
  var isTimeSeriesCanvasRenderSupported = (vizConfigKey) => {
2950
- return canvasSupportedTimeSeriesCharts.includes(vizConfigKey);
2979
+ return canvasSupportedTimeSeriesCharts.has(vizConfigKey);
2951
2980
  };
2952
2981
  var filterChartDataFromInternalFields = (chartData) => {
2953
2982
  const { fields, columns } = chartData;
@@ -2963,7 +2992,7 @@ var filterChartDataFromInternalFields = (chartData) => {
2963
2992
  return { fields: filteredFields, columns: filteredColumns };
2964
2993
  };
2965
2994
  var convert2DArrayToNumbers = (arr) => {
2966
- return arr.map((subArray) => subArray.map((element) => parseFloat(element)));
2995
+ return arr.map((subArray) => subArray.map((element) => Number.parseFloat(element)));
2967
2996
  };
2968
2997
  var parseAxisValue = (val) => {
2969
2998
  if (val === void 0 || val === null || val === "auto" || val === "") {
@@ -3001,6 +3030,7 @@ var getLegend = (props) => {
3001
3030
  return (0, visualization_canvas_exports.TopLegendFactory)(__spreadValues({
3002
3031
  wrap: true
3003
3032
  }, commonLegendProps));
3033
+ // Note: By default, use right legend
3004
3034
  default:
3005
3035
  return (0, visualization_canvas_exports.SideLegendFactory)(__spreadValues({}, commonLegendProps));
3006
3036
  }
@@ -3133,10 +3163,10 @@ var getSeriesOverrides = (opts) => {
3133
3163
  let spanGaps;
3134
3164
  if (nullValueMode === "gaps") {
3135
3165
  spanGaps = false;
3136
- } else if (nullValueMode != null) {
3137
- spanGaps = true;
3138
- } else {
3166
+ } else if (nullValueMode == null) {
3139
3167
  spanGaps = void 0;
3168
+ } else {
3169
+ spanGaps = true;
3140
3170
  }
3141
3171
  const replaceNullsWithZero = nullValueMode === "zero" ? true : void 0;
3142
3172
  const isAreaChart = type === "area";
@@ -3506,11 +3536,11 @@ var TimeSeriesChartWrapper = (props) => {
3506
3536
  y2AxisMajorUnitFromSimpleXML,
3507
3537
  y2AxisMajorTickInterval
3508
3538
  );
3509
- const xAxisMajorTickSizeNum = xAxisMajorTickSize != null ? Number(xAxisMajorTickSize) : void 0;
3510
- const yAxisMajorTickSizeNum = yAxisMajorTickSize != null ? Number(yAxisMajorTickSize) : void 0;
3511
- const y2AxisMajorTickSizeNum = y2AxisMajorTickSize != null ? Number(y2AxisMajorTickSize) : void 0;
3512
- const yAxisMinorTickSizeNum = yAxisMinorTickSize != null ? Number(yAxisMinorTickSize) : void 0;
3513
- const y2AxisMinorTickSizeNum = y2AxisMinorTickSize != null ? Number(y2AxisMinorTickSize) : void 0;
3539
+ const xAxisMajorTickSizeNum = xAxisMajorTickSize == null ? void 0 : Number(xAxisMajorTickSize);
3540
+ const yAxisMajorTickSizeNum = yAxisMajorTickSize == null ? void 0 : Number(yAxisMajorTickSize);
3541
+ const y2AxisMajorTickSizeNum = y2AxisMajorTickSize == null ? void 0 : Number(y2AxisMajorTickSize);
3542
+ const yAxisMinorTickSizeNum = yAxisMinorTickSize == null ? void 0 : Number(yAxisMinorTickSize);
3543
+ const y2AxisMinorTickSizeNum = y2AxisMinorTickSize == null ? void 0 : Number(y2AxisMinorTickSize);
3514
3544
  const areaOpacityForCanvas = getAreaOpacityForCanvas(areaOpacity);
3515
3545
  const seriesColors = seriesColorsStr ? JSON.parse(seriesColorsStr) : void 0;
3516
3546
  const seriesColorsByField = fieldColors ? JSON.parse(fieldColors) : void 0;
@@ -3922,6 +3952,76 @@ var buildEventCallbackProps = (supportedEvents, evaluatedOptionsToUse, onEventTr
3922
3952
  });
3923
3953
  return result;
3924
3954
  };
3955
+ var buildAllEventCallbackProps = (events, evaluatedOptionsToUse, onEventTrigger, { supportsEvents, hasEventHandlers, mode }) => {
3956
+ if (!supportsEvents) return {};
3957
+ const defaultEvents = {};
3958
+ const userEvents = {};
3959
+ Object.entries(events || {}).forEach(([eventKey, eventConfig]) => {
3960
+ (eventConfig.source === "default" ? defaultEvents : userEvents)[eventKey] = eventConfig;
3961
+ });
3962
+ const userProps = hasEventHandlers && mode === "view" ? buildEventCallbackProps(userEvents, evaluatedOptionsToUse, onEventTrigger) : {};
3963
+ return __spreadValues(__spreadValues({}, userProps), buildEventCallbackProps(defaultEvents, evaluatedOptionsToUse, onEventTrigger));
3964
+ };
3965
+ var applyContextTimezone = (localeContext) => {
3966
+ if (localeContext.serializedTimezone && !moment_default.getDefaultSplunkTimezone()) {
3967
+ moment_default.setDefaultSplunkTimezone(localeContext.serializedTimezone);
3968
+ }
3969
+ };
3970
+ var getAsyncOptionsEvaluationParams = ({
3971
+ visualizationID,
3972
+ props,
3973
+ optionsToEvaluate,
3974
+ downsampledDataSources,
3975
+ vizConfig,
3976
+ bypassCloneDeepOptionScope,
3977
+ lazyLoadingDataFrame
3978
+ }) => {
3979
+ return {
3980
+ visualizationID,
3981
+ props,
3982
+ options: __spreadValues({}, optionsToEvaluate),
3983
+ dataSources: downsampledDataSources,
3984
+ theme: vizConfig.themes,
3985
+ bypassCloneDeepOptionScope,
3986
+ lazyLoadingDataFrame
3987
+ };
3988
+ };
3989
+ var evaluateOptionsSync = ({
3990
+ optionsToEvaluate,
3991
+ downsampledDataSources,
3992
+ dataSourcesInState,
3993
+ dataFramesInState,
3994
+ setDataSourcesInState,
3995
+ setDataFramesInState,
3996
+ computeDataFrames,
3997
+ featureFlagContext,
3998
+ themeFunc
3999
+ }) => {
4000
+ let dataFrames = dataFramesInState;
4001
+ if (downsampledDataSources !== dataSourcesInState) {
4002
+ setDataSourcesInState(downsampledDataSources);
4003
+ dataFrames = Options_exports.Options.dataFrameFromDataSource(
4004
+ downsampledDataSources,
4005
+ getFeatureFlag(featureFlagContext, "visualizations_lazyLoadingDataFrame")
4006
+ );
4007
+ setDataFramesInState(dataFrames);
4008
+ }
4009
+ let mergedFrames = dataFrames;
4010
+ if (computeDataFrames && dataFrames) {
4011
+ const derivedFrames = computeDataFrames({
4012
+ dataSources: downsampledDataSources,
4013
+ options: optionsToEvaluate.options
4014
+ });
4015
+ mergedFrames = __spreadValues(__spreadValues({}, dataFrames), derivedFrames);
4016
+ }
4017
+ return Options_exports.Options.evaluate(
4018
+ optionsToEvaluate,
4019
+ downsampledDataSources,
4020
+ themeFunc,
4021
+ mergedFrames,
4022
+ getFeatureFlag(featureFlagContext, "visualizations_bypassCloneDeepOptionScope")
4023
+ );
4024
+ };
3925
4025
  var withDashboardViz = (opts) => {
3926
4026
  const {
3927
4027
  ReactViz,
@@ -3953,11 +4053,7 @@ var withDashboardViz = (opts) => {
3953
4053
  onRequestParamsChange = lodash_exports.noop
3954
4054
  } = props;
3955
4055
  const localeContext = react_exports.useContext(TimezoneContext_default);
3956
- if (localeContext.serializedTimezone) {
3957
- if (!moment_default.getDefaultSplunkTimezone()) {
3958
- moment_default.setDefaultSplunkTimezone(localeContext.serializedTimezone);
3959
- }
3960
- }
4056
+ applyContextTimezone(localeContext);
3961
4057
  const themeFunc = (themeVar) => {
3962
4058
  var _a2, _b;
3963
4059
  return (_b = (_a2 = vizConfig.themes)[themeVar]) == null ? void 0 : _b.call(_a2, props);
@@ -3985,7 +4081,12 @@ var withDashboardViz = (opts) => {
3985
4081
  featureFlagContext == null ? void 0 : featureFlagContext.visualizations_enableAcceleratedRender
3986
4082
  );
3987
4083
  const isAcceleratedRenderOn = isAcceleratedRenderFeatureFlagOn && isTimeSeriesCanvasRenderSupported(vizConfig.key) && (options == null ? void 0 : options.acceleratedRender) === true;
3988
- const isMounted = react_exports.useRef(true);
4084
+ const bypassCloneDeepOptionScope = Boolean(
4085
+ getFeatureFlag(featureFlagContext, "visualizations_bypassCloneDeepOptionScope")
4086
+ );
4087
+ const lazyLoadingDataFrame = Boolean(
4088
+ getFeatureFlag(featureFlagContext, "visualizations_lazyLoadingDataFrame")
4089
+ );
3989
4090
  const optionsToEvaluate = react_exports.useMemo(() => {
3990
4091
  var _a2;
3991
4092
  const legendDisplay = turnOffLegendDisplayWhenTrellisIsOn(isTrellisOn, options);
@@ -4024,63 +4125,74 @@ var withDashboardViz = (opts) => {
4024
4125
  threshold,
4025
4126
  isDownsamplingEnabled
4026
4127
  });
4027
- evaluatedOptions = useDeepMemo(() => {
4128
+ const asyncOptionsEvaluationParams = useDeepMemo(
4129
+ () => getAsyncOptionsEvaluationParams({
4130
+ visualizationID,
4131
+ props,
4132
+ optionsToEvaluate,
4133
+ downsampledDataSources,
4134
+ vizConfig,
4135
+ bypassCloneDeepOptionScope,
4136
+ lazyLoadingDataFrame
4137
+ }),
4138
+ [
4139
+ visualizationID,
4140
+ optionsToEvaluate,
4141
+ downsampledDataSources,
4142
+ vizConfig,
4143
+ bypassCloneDeepOptionScope,
4144
+ lazyLoadingDataFrame,
4145
+ currentThemeFamily,
4146
+ currentThemeColorScheme,
4147
+ currentThemeDensity,
4148
+ localeContext.serializedTimezone
4149
+ ]
4150
+ );
4151
+ react_exports.useEffect(() => {
4152
+ if (!useAsyncEvaluatedOptions) {
4153
+ return void 0;
4154
+ }
4155
+ let ownsEvaluation = true;
4028
4156
  try {
4029
- if (useAsyncEvaluatedOptions) {
4030
- const asyncDynamicOptionsEvaluatorParams = {
4031
- visualizationID,
4032
- props,
4033
- options: optionsToEvaluate,
4034
- dataSources: downsampledDataSources,
4035
- theme: vizConfig.themes,
4036
- bypassCloneDeepOptionScope: Boolean(
4037
- getFeatureFlag(featureFlagContext, "visualizations_bypassCloneDeepOptionScope")
4038
- ),
4039
- lazyLoadingDataFrame: Boolean(
4040
- getFeatureFlag(featureFlagContext, "visualizations_lazyLoadingDataFrame")
4041
- )
4042
- };
4043
- async_dynamic_options_evaluator_default.evaluate(asyncDynamicOptionsEvaluatorParams).then((results) => {
4157
+ async_dynamic_options_evaluator_default.evaluate(asyncOptionsEvaluationParams).then((results) => {
4158
+ if (ownsEvaluation) {
4044
4159
  setEvaluatedOptionsAsync(results.results);
4045
- }).catch(() => {
4046
- if (isMounted.current) {
4047
- setUseAsyncEvaluatedOptions(false);
4048
- }
4049
- });
4050
- } else {
4051
- let dataFrames = dataFramesInState;
4052
- if (downsampledDataSources !== dataSourcesInState) {
4053
- setDataSourcesInState(downsampledDataSources);
4054
- dataFrames = Options_exports.Options.dataFrameFromDataSource(
4055
- downsampledDataSources,
4056
- getFeatureFlag(featureFlagContext, "visualizations_lazyLoadingDataFrame")
4057
- );
4058
- setDataFramesInState(dataFrames);
4059
4160
  }
4060
- let mergedFrames = dataFrames;
4061
- if (computeDataFrames && dataFrames) {
4062
- const derivedFrames = computeDataFrames({
4063
- dataSources: downsampledDataSources,
4064
- options: optionsToEvaluate.options
4065
- });
4066
- mergedFrames = __spreadValues(__spreadValues({}, dataFrames), derivedFrames);
4161
+ }).catch(() => {
4162
+ if (ownsEvaluation) {
4163
+ setUseAsyncEvaluatedOptions(false);
4067
4164
  }
4068
- const result = Options_exports.Options.evaluate(
4069
- optionsToEvaluate,
4070
- downsampledDataSources,
4071
- themeFunc,
4072
- mergedFrames,
4073
- getFeatureFlag(featureFlagContext, "visualizations_bypassCloneDeepOptionScope")
4074
- );
4075
- return result;
4165
+ });
4166
+ } catch (e) {
4167
+ setUseAsyncEvaluatedOptions(false);
4168
+ }
4169
+ return () => {
4170
+ ownsEvaluation = false;
4171
+ async_dynamic_options_evaluator_default.reset(visualizationID);
4172
+ };
4173
+ }, [asyncOptionsEvaluationParams, useAsyncEvaluatedOptions, visualizationID]);
4174
+ evaluatedOptions = useDeepMemo(() => {
4175
+ try {
4176
+ if (useAsyncEvaluatedOptions) {
4177
+ return {};
4076
4178
  }
4179
+ return evaluateOptionsSync({
4180
+ optionsToEvaluate,
4181
+ downsampledDataSources,
4182
+ dataSourcesInState,
4183
+ dataFramesInState,
4184
+ setDataSourcesInState,
4185
+ setDataFramesInState,
4186
+ computeDataFrames,
4187
+ featureFlagContext,
4188
+ themeFunc
4189
+ });
4077
4190
  } catch (e) {
4078
4191
  if (e instanceof Error) {
4079
4192
  console.error(`unexpected error evaluating options: ${e.message}`);
4080
4193
  }
4081
4194
  return {};
4082
4195
  }
4083
- return {};
4084
4196
  }, [
4085
4197
  currentThemeFamily,
4086
4198
  currentThemeColorScheme,
@@ -4090,7 +4202,7 @@ var withDashboardViz = (opts) => {
4090
4202
  localeContext.serializedTimezone,
4091
4203
  useAsyncEvaluatedOptions
4092
4204
  ]);
4093
- const evaluatedOptionsToUse = !useAsyncEvaluatedOptions ? evaluatedOptions : evaluatedOptionsAsync;
4205
+ const evaluatedOptionsToUse = useAsyncEvaluatedOptions ? evaluatedOptionsAsync : evaluatedOptions;
4094
4206
  let dataSourceMetadata = {};
4095
4207
  const OptionKey = "paginateDataSourceKey";
4096
4208
  const optsKey = (0, lodash_exports.has)(evaluatedOptionsToUse, OptionKey) && evaluatedOptionsToUse[OptionKey];
@@ -4112,7 +4224,7 @@ var withDashboardViz = (opts) => {
4112
4224
  sortParams,
4113
4225
  paginatorParams
4114
4226
  };
4115
- if (vizConfig.supports.indexOf("page-and-sort" /* PAGE_AND_SORT */) === -1 && !(0, lodash_exports.has)(dataSources, paginateDataSourceKey)) {
4227
+ if (!vizConfig.supports.includes("page-and-sort" /* PAGE_AND_SORT */) && !(0, lodash_exports.has)(dataSources, paginateDataSourceKey)) {
4116
4228
  dataSourceMetadata = {};
4117
4229
  }
4118
4230
  const clonedEvaluatedOptions = __spreadValues({}, evaluatedOptionsToUse);
@@ -4122,14 +4234,6 @@ var withDashboardViz = (opts) => {
4122
4234
  react_exports.useEffect(() => {
4123
4235
  onComputedProps(clonedEvaluatedOptions);
4124
4236
  });
4125
- react_exports.useEffect(() => {
4126
- return () => {
4127
- if (useAsyncEvaluatedOptions) {
4128
- isMounted.current = false;
4129
- async_dynamic_options_evaluator_default.reset(visualizationID);
4130
- }
4131
- };
4132
- }, []);
4133
4237
  const { requiredProps = [], supports } = vizConfig;
4134
4238
  const missing = missingKeys(requiredProps, evaluatedOptionsToUse);
4135
4239
  if (missing.length > 0 && supports.includes("placeholder" /* PLACEHOLDER */) && vizConfig.key !== "splunk.singlevalue") {
@@ -4144,7 +4248,16 @@ var withDashboardViz = (opts) => {
4144
4248
  }
4145
4249
  );
4146
4250
  }
4147
- const eventCallbackProps = hasEventHandlers && mode === "view" && vizConfig.supports.includes("events" /* EVENTS */) ? buildEventCallbackProps(vizConfig.events, evaluatedOptionsToUse, onEventTrigger) : {};
4251
+ const eventCallbackProps = buildAllEventCallbackProps(
4252
+ vizConfig.events,
4253
+ evaluatedOptionsToUse,
4254
+ onEventTrigger,
4255
+ {
4256
+ supportsEvents: vizConfig.supports.includes("events" /* EVENTS */),
4257
+ hasEventHandlers,
4258
+ mode
4259
+ }
4260
+ );
4148
4261
  const computedVizProps = computeVizProps2(__spreadProps(__spreadValues(__spreadProps(__spreadValues(__spreadValues({}, props), evaluatedOptionsToUse), {
4149
4262
  // Align option transformation with the actual renderer selected below.
4150
4263
  // This prevents canvas-only option preservation from leaking into Highcharts mode.
@@ -4172,8 +4285,9 @@ var withDashboardViz = (opts) => {
4172
4285
  onEventTrigger: SplunkVisualization_default.defaults.onEventTrigger
4173
4286
  });
4174
4287
  DashboardViz.config = vizConfig;
4175
- return (0, styled_components_exports.withTheme)(
4176
- withPlaceholder_default(withEditModeCover_default(DashboardViz, disableEditModeCover), useIconPlaceholder)
4288
+ return Object.assign(
4289
+ (0, styled_components_exports.withTheme)(withPlaceholder_default(withEditModeCover_default(DashboardViz, disableEditModeCover), useIconPlaceholder)),
4290
+ { config: vizConfig }
4177
4291
  );
4178
4292
  };
4179
4293
  var withDashboardViz_default = withDashboardViz;
@@ -4183,18 +4297,9 @@ var Paginator_exports = {};
4183
4297
  __export(Paginator_exports, {
4184
4298
  default: () => Paginator_default
4185
4299
  });
4186
- var defaultImport35 = __toESM(require("@splunk/react-ui/Paginator"));
4300
+ var defaultImport36 = __toESM(require("@splunk/react-ui/Paginator"));
4187
4301
  __reExport(Paginator_exports, require("@splunk/react-ui/Paginator"));
4188
- var Paginator_default = "default" in defaultImport35 ? defaultImport35.default : defaultImport35;
4189
-
4190
- // esm-externals:@splunk/themes
4191
- var themes_exports = {};
4192
- __export(themes_exports, {
4193
- default: () => themes_default
4194
- });
4195
- var defaultImport36 = __toESM(require("@splunk/themes"));
4196
- __reExport(themes_exports, require("@splunk/themes"));
4197
- var themes_default = "default" in defaultImport36 ? defaultImport36.default : defaultImport36;
4302
+ var Paginator_default = "default" in defaultImport36 ? defaultImport36.default : defaultImport36;
4198
4303
 
4199
4304
  // esm-externals:@splunk/themes/useSplunkTheme
4200
4305
  var useSplunkTheme_exports = {};
@@ -4226,7 +4331,7 @@ var sortTrellisKeys = (keys, trellisSortBy, trellisSortOrder, modifiedDataSource
4226
4331
  if (trellisSortBy === "trend") {
4227
4332
  optionKey = "trendValue";
4228
4333
  } else {
4229
- optionKey = mergedOptions.value !== void 0 ? "value" : "majorValue";
4334
+ optionKey = mergedOptions.value === void 0 ? "majorValue" : "value";
4230
4335
  }
4231
4336
  keys.sort((a, b) => {
4232
4337
  const valA = evaluatePanelOption(
@@ -4378,13 +4483,13 @@ var withTrellis = (Viz) => {
4378
4483
  const noColumns = columns === void 0;
4379
4484
  const noFields = fields === void 0;
4380
4485
  const updateDataDisplay = (currPage) => {
4381
- if (!showPaginator) {
4382
- setPagedData(splitByKeys);
4383
- setPageNum(1);
4384
- } else {
4486
+ if (showPaginator) {
4385
4487
  const startIdx = pageCount * (currPage - 1);
4386
4488
  const paged = splitByKeys.slice(startIdx, startIdx + pageCount);
4387
4489
  setPagedData(paged);
4490
+ } else {
4491
+ setPagedData(splitByKeys);
4492
+ setPageNum(1);
4388
4493
  }
4389
4494
  };
4390
4495
  (0, react_exports.useEffect)(() => {