@splunk/visualizations 28.8.0 → 28.9.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 (279) 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 +43 -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/ChoroplethLayer.d.ts.map +1 -1
  57. package/Map/PureMap/ClusterLayer.d.ts.map +1 -1
  58. package/Map/PureMap/MapUtils.d.ts.map +1 -1
  59. package/Map/PureMap/MarkerWrapper.d.ts.map +1 -1
  60. package/Map/PureMap/PureMap.d.ts +8 -65
  61. package/Map/PureMap/PureMap.d.ts.map +1 -1
  62. package/Map/PureMap/mapWorker.d.ts +2 -0
  63. package/Map/PureMap/mapWorker.d.ts.map +1 -0
  64. package/Map.config.js +1 -1
  65. package/Map.config.js.map +2 -2
  66. package/Map.js +439 -336
  67. package/Map.js.map +4 -4
  68. package/Markdown/Markdown.d.ts +9 -1
  69. package/Markdown/Markdown.d.ts.map +1 -1
  70. package/Markdown/config.d.ts.map +1 -1
  71. package/Markdown.config.js +5 -0
  72. package/Markdown.config.js.map +2 -2
  73. package/Markdown.js +225 -94
  74. package/Markdown.js.map +3 -3
  75. package/MarkerGauge.js +239 -134
  76. package/MarkerGauge.js.map +4 -4
  77. package/NetworkGraph/PureNetworkGraph/PureNetworkGraph.d.ts.map +1 -1
  78. package/NetworkGraph/PureNetworkGraph/components/NetworkGraphSvg.d.ts +1 -0
  79. package/NetworkGraph/PureNetworkGraph/components/NetworkGraphSvg.d.ts.map +1 -1
  80. package/NetworkGraph/PureNetworkGraph/components/Node.d.ts +1 -0
  81. package/NetworkGraph/PureNetworkGraph/components/Node.d.ts.map +1 -1
  82. package/NetworkGraph/PureNetworkGraph/utils/networkGraphUtils.d.ts +3 -5
  83. package/NetworkGraph/PureNetworkGraph/utils/networkGraphUtils.d.ts.map +1 -1
  84. package/NetworkGraph.config.js +4 -2
  85. package/NetworkGraph.config.js.map +2 -2
  86. package/NetworkGraph.js +327 -188
  87. package/NetworkGraph.js.map +4 -4
  88. package/ParallelCoordinates/ParallelCoordinates.d.ts +3 -1
  89. package/ParallelCoordinates/ParallelCoordinates.d.ts.map +1 -1
  90. package/ParallelCoordinates.js +239 -128
  91. package/ParallelCoordinates.js.map +4 -4
  92. package/Pie/config.d.ts.map +1 -1
  93. package/Pie/pieUtils.d.ts.map +1 -1
  94. package/Pie.config.js +4 -2
  95. package/Pie.config.js.map +2 -2
  96. package/Pie.js +228 -125
  97. package/Pie.js.map +3 -3
  98. package/ProcessTree/ProcessTree.d.ts +3 -1
  99. package/ProcessTree/ProcessTree.d.ts.map +1 -1
  100. package/ProcessTree/PureProcessTree/PureProcessTree.d.ts +1 -0
  101. package/ProcessTree/PureProcessTree/PureProcessTree.d.ts.map +1 -1
  102. package/ProcessTree/PureProcessTree/components/ProcessTreeLeftPanel.d.ts +1 -0
  103. package/ProcessTree/PureProcessTree/components/ProcessTreeLeftPanel.d.ts.map +1 -1
  104. package/ProcessTree/PureProcessTree/hooks/useProcessTreeGraphData.d.ts +2 -1
  105. package/ProcessTree/PureProcessTree/hooks/useProcessTreeGraphData.d.ts.map +1 -1
  106. package/ProcessTree/PureProcessTree/utils/iconLoader.d.ts +2 -0
  107. package/ProcessTree/PureProcessTree/utils/iconLoader.d.ts.map +1 -1
  108. package/ProcessTree/PureProcessTree/utils/processTreeUtils.d.ts +5 -1
  109. package/ProcessTree/PureProcessTree/utils/processTreeUtils.d.ts.map +1 -1
  110. package/ProcessTree.js +435 -192
  111. package/ProcessTree.js.map +4 -4
  112. package/Punchcard/Punchcard.d.ts +3 -1
  113. package/Punchcard/Punchcard.d.ts.map +1 -1
  114. package/Punchcard.js +238 -129
  115. package/Punchcard.js.map +4 -4
  116. package/Rectangle/Rectangle.d.ts +3 -1
  117. package/Rectangle/Rectangle.d.ts.map +1 -1
  118. package/Rectangle.js +218 -116
  119. package/Rectangle.js.map +4 -4
  120. package/RichText/PureRichText/Editor/EditorPanel.d.ts +1 -4
  121. package/RichText/PureRichText/Editor/EditorPanel.d.ts.map +1 -1
  122. package/RichText/PureRichText/Editor/hooks/useConfigPanelFocus.d.ts +14 -0
  123. package/RichText/PureRichText/Editor/hooks/useConfigPanelFocus.d.ts.map +1 -0
  124. package/RichText/PureRichText/Editor/hooks/useEditorPanelSync.d.ts +15 -0
  125. package/RichText/PureRichText/Editor/hooks/useEditorPanelSync.d.ts.map +1 -0
  126. package/RichText/PureRichText/Editor/hooks/useLinkHandlers.d.ts.map +1 -1
  127. package/RichText/PureRichText/Editor/hooks/usePortalTarget.d.ts +9 -0
  128. package/RichText/PureRichText/Editor/hooks/usePortalTarget.d.ts.map +1 -0
  129. package/RichText/PureRichText/InnerEditor.d.ts +15 -9
  130. package/RichText/PureRichText/InnerEditor.d.ts.map +1 -1
  131. package/RichText/PureRichText/PureRichText.d.ts +5 -10
  132. package/RichText/PureRichText/PureRichText.d.ts.map +1 -1
  133. package/RichText/PureRichText/PureRichTextContext.d.ts +3 -6
  134. package/RichText/PureRichText/PureRichTextContext.d.ts.map +1 -1
  135. package/RichText/PureRichText/RichTextStyles.d.ts +5 -4
  136. package/RichText/PureRichText/RichTextStyles.d.ts.map +1 -1
  137. package/RichText/PureRichText/activeInstance.d.ts +6 -7
  138. package/RichText/PureRichText/activeInstance.d.ts.map +1 -1
  139. package/RichText/PureRichText/config.d.ts.map +1 -1
  140. package/RichText/PureRichText/hooks/useContentSync.d.ts +9 -9
  141. package/RichText/PureRichText/hooks/useContentSync.d.ts.map +1 -1
  142. package/RichText/PureRichText/hooks/useDashboardKeyboardNav.d.ts +2 -7
  143. package/RichText/PureRichText/hooks/useDashboardKeyboardNav.d.ts.map +1 -1
  144. package/RichText/PureRichText/hooks/useEditorSetup.d.ts +8 -4
  145. package/RichText/PureRichText/hooks/useEditorSetup.d.ts.map +1 -1
  146. package/RichText/PureRichText/hooks/useFocusHandlers.d.ts +2 -4
  147. package/RichText/PureRichText/hooks/useFocusHandlers.d.ts.map +1 -1
  148. package/RichText/PureRichText/hooks/useKeyboardShortcuts.d.ts.map +1 -1
  149. package/RichText/PureRichText/hooks/useMouseHandlers.d.ts +3 -7
  150. package/RichText/PureRichText/hooks/useMouseHandlers.d.ts.map +1 -1
  151. package/RichText/PureRichText/hooks/useStepFontSize.d.ts +2 -2
  152. package/RichText/PureRichText/hooks/useStepLineSpacing.d.ts +2 -3
  153. package/RichText/PureRichText/hooks/useStepLineSpacing.d.ts.map +1 -1
  154. package/RichText/PureRichText/hooks/useTokenMap.d.ts +13 -24
  155. package/RichText/PureRichText/hooks/useTokenMap.d.ts.map +1 -1
  156. package/RichText/PureRichText/renderers/ElementRenderer.d.ts +2 -5
  157. package/RichText/PureRichText/renderers/ElementRenderer.d.ts.map +1 -1
  158. package/RichText/PureRichText/types.d.ts +6 -0
  159. package/RichText/PureRichText/types.d.ts.map +1 -1
  160. package/RichText/PureRichText/utils/slateUtils.d.ts +26 -2
  161. package/RichText/PureRichText/utils/slateUtils.d.ts.map +1 -1
  162. package/RichText/RichText.d.ts +3 -1
  163. package/RichText/RichText.d.ts.map +1 -1
  164. package/RichText/config.d.ts.map +1 -1
  165. package/RichText.config.js +5 -0
  166. package/RichText.config.js.map +2 -2
  167. package/RichText.js +1848 -842
  168. package/RichText.js.map +4 -4
  169. package/Sankey/PureSankey/PureSankey.d.ts +2 -0
  170. package/Sankey/PureSankey/PureSankey.d.ts.map +1 -1
  171. package/Sankey/PureSankey/SankeyLink.d.ts +3 -1
  172. package/Sankey/PureSankey/SankeyLink.d.ts.map +1 -1
  173. package/Sankey/PureSankey/SankeyNode.d.ts +5 -2
  174. package/Sankey/PureSankey/SankeyNode.d.ts.map +1 -1
  175. package/Sankey/PureSankey/SankeyUtils.d.ts.map +1 -1
  176. package/Sankey/Sankey.d.ts +3 -1
  177. package/Sankey/Sankey.d.ts.map +1 -1
  178. package/Sankey.js +508 -219
  179. package/Sankey.js.map +4 -4
  180. package/Scatter.config.js +3 -5
  181. package/Scatter.config.js.map +2 -2
  182. package/Scatter.js +244 -146
  183. package/Scatter.js.map +4 -4
  184. package/SingleValue/SingleValue.d.ts.map +1 -1
  185. package/SingleValue.js +273 -173
  186. package/SingleValue.js.map +4 -4
  187. package/SingleValueBasic.js +4 -4
  188. package/SingleValueBasic.js.map +2 -2
  189. package/SingleValueIcon/SingleValueIcon.d.ts.map +1 -1
  190. package/SingleValueIcon.js +264 -164
  191. package/SingleValueIcon.js.map +4 -4
  192. package/SingleValueRadial.js +267 -167
  193. package/SingleValueRadial.js.map +4 -4
  194. package/SparkLine/SparkLine.d.ts.map +1 -1
  195. package/SparkLine.js.map +2 -2
  196. package/Table/PureTable.d.ts.map +1 -1
  197. package/Table/Table.d.ts +2 -5
  198. package/Table/Table.d.ts.map +1 -1
  199. package/Table/hooks.d.ts.map +1 -1
  200. package/Table.config.js +1 -1
  201. package/Table.config.js.map +2 -2
  202. package/Table.js +293 -271
  203. package/Table.js.map +4 -4
  204. package/Timeline/Timeline.d.ts +3 -1
  205. package/Timeline/Timeline.d.ts.map +1 -1
  206. package/Timeline.config.js +2 -2
  207. package/Timeline.config.js.map +2 -2
  208. package/Timeline.js +266 -142
  209. package/Timeline.js.map +4 -4
  210. package/Treemap/Treemap.d.ts +3 -1
  211. package/Treemap/Treemap.d.ts.map +1 -1
  212. package/Treemap.js +263 -147
  213. package/Treemap.js.map +4 -4
  214. package/common/Charting.js +8 -10
  215. package/common/Charting.js.map +2 -2
  216. package/common/ChartingApi.d.ts.map +1 -1
  217. package/common/ChartingApi.js +5 -2
  218. package/common/ChartingApi.js.map +2 -2
  219. package/common/DocExampleWithVizSandbox.d.ts +2 -0
  220. package/common/DocExampleWithVizSandbox.d.ts.map +1 -1
  221. package/common/DocExampleWithVizSandbox.js +54 -6
  222. package/common/DocExampleWithVizSandbox.js.map +2 -2
  223. package/common/GaugeMajorTicks.js.map +2 -2
  224. package/common/GaugeValueMarker.js.map +2 -2
  225. package/common/OptionsDoc.js +1 -1
  226. package/common/OptionsDoc.js.map +2 -2
  227. package/common/OverviewDoc.js +54 -6
  228. package/common/OverviewDoc.js.map +2 -2
  229. package/common/ThemesDoc.js.map +2 -2
  230. package/common/TimeSeriesChartWrapper.js +10 -9
  231. package/common/TimeSeriesChartWrapper.js.map +2 -2
  232. package/common/chartingUtils.d.ts.map +1 -1
  233. package/common/chartingUtils.js +12 -11
  234. package/common/chartingUtils.js.map +2 -2
  235. package/common/components/IconPlaceholder.d.ts.map +1 -1
  236. package/common/docUtils.d.ts.map +1 -1
  237. package/common/docUtils.js +15 -6
  238. package/common/docUtils.js.map +2 -2
  239. package/common/editorConfig/AxesChartDataDisplay.d.ts.map +1 -1
  240. package/common/gaugeUtils.d.ts.map +1 -1
  241. package/common/gaugeUtils.js +4 -2
  242. package/common/gaugeUtils.js.map +2 -2
  243. package/common/hooks/useSorting.d.ts.map +1 -1
  244. package/common/interfaces/VizEvent.d.ts +7 -0
  245. package/common/interfaces/VizEvent.d.ts.map +1 -1
  246. package/common/utils/dataUtils.d.ts.map +1 -1
  247. package/common/utils/dataUtils.js +6 -10
  248. package/common/utils/dataUtils.js.map +2 -2
  249. package/common/utils/featureFlagUtils.js +2 -2
  250. package/common/utils/featureFlagUtils.js.map +2 -2
  251. package/common/utils/focusUtils.js +1 -1
  252. package/common/utils/focusUtils.js.map +2 -2
  253. package/common/utils/mapUtils.d.ts.map +1 -1
  254. package/common/utils/mapUtils.js +17 -21
  255. package/common/utils/mapUtils.js.map +3 -3
  256. package/common/utils/singleValueUtils.js +22 -25
  257. package/common/utils/singleValueUtils.js.map +2 -2
  258. package/common/utils/textUtils.d.ts.map +1 -1
  259. package/common/utils/textUtils.js +37 -23
  260. package/common/utils/textUtils.js.map +2 -2
  261. package/common/utils/trellisUtils.d.ts.map +1 -1
  262. package/common/utils/trellisUtils.js +18 -17
  263. package/common/utils/trellisUtils.js.map +2 -2
  264. package/common/utils/urlUtils.js.map +2 -2
  265. package/common/utils/visualizationTheme.d.ts +15 -0
  266. package/common/utils/visualizationTheme.d.ts.map +1 -0
  267. package/common/utils/visualizationTheme.js +72 -0
  268. package/common/utils/visualizationTheme.js.map +7 -0
  269. package/common/withDashboardViz.d.ts +3 -1
  270. package/common/withDashboardViz.d.ts.map +1 -1
  271. package/common/withDashboardViz.js +216 -105
  272. package/common/withDashboardViz.js.map +4 -4
  273. package/docs-llm/map/examples-react.md +39 -39
  274. package/docs-llm/network-graph/options.md +2 -2
  275. package/docs-llm/pie/examples-json.md +195 -0
  276. package/docs-llm/pie/examples-react.md +123 -0
  277. package/docs-llm/pie/options.md +1 -1
  278. package/docs-llm/process-tree/options.md +3 -2
  279. package/package.json +32 -29
package/Column.js CHANGED
@@ -181,17 +181,18 @@ __reExport(themeUtils_exports, require("@splunk/visualizations-shared/themeUtils
181
181
  var themeUtils_default = "default" in defaultImport12 ? defaultImport12.default : defaultImport12;
182
182
 
183
183
  // src/common/ChartingApi.ts
184
+ var DEFAULT_HIGHLIGHT_POINT = { xValue: "", seriesName: "" };
184
185
  var ChartingApiFunctional = class {
185
186
  // eslint-disable-next-line no-useless-constructor
186
187
  constructor(chartRef) {
187
- this.chartRef = chartRef;
188
+ __publicField(this, "chartRef", chartRef);
188
189
  }
189
190
  /**
190
191
  * Allows users to programmatically highlight a point on the chart
191
192
  *
192
193
  * @memberof ChartingApiFunctional
193
194
  */
194
- highlight({ xValue, seriesName } = { xValue: "", seriesName: "" }) {
195
+ highlight({ xValue, seriesName } = DEFAULT_HIGHLIGHT_POINT) {
195
196
  this.getChart().highlight(xValue, seriesName);
196
197
  }
197
198
  /**
@@ -273,7 +274,7 @@ var largestTriangleThreeBuckets = (data, threshold, preferredDownsampleIndices)
273
274
  let avgY = 0;
274
275
  let avgRangeStart = Math.floor((i + 1) * every) + 1;
275
276
  let avgRangeEnd = Math.floor((i + 2) * every) + 1;
276
- avgRangeEnd = avgRangeEnd < dataLength ? avgRangeEnd : dataLength;
277
+ avgRangeEnd = Math.min(avgRangeEnd, dataLength);
277
278
  const avgRangeLength = avgRangeEnd - avgRangeStart;
278
279
  for (; avgRangeStart < avgRangeEnd; avgRangeStart++) {
279
280
  avgX += Number(data[avgRangeStart][0]);
@@ -308,9 +309,9 @@ var largestTriangleThreeBuckets = (data, threshold, preferredDownsampleIndices)
308
309
  };
309
310
  var strictlyCoerceYColumn = (column, options) => {
310
311
  const isNullCoercionEnabled = options.nullValueDisplay === "zero";
311
- const canLooselyCoerceSomeValues = column.findIndex(
312
+ const canLooselyCoerceSomeValues = column.some(
312
313
  (value) => (0, numberUtils_exports.startsWithNumber)(`${value}`) || isNullCoercionEnabled && value === null
313
- ) >= 0;
314
+ );
314
315
  const coercedColumn = [];
315
316
  const canDownsampleColumn = !column.some((value) => {
316
317
  const coercedValue = Number(value);
@@ -329,7 +330,7 @@ var strictlyCoerceYColumn = (column, options) => {
329
330
  };
330
331
  var strictlyCoerceXColumn = (column, fieldType) => {
331
332
  if (fieldType === "number") {
332
- const coercedXColumn = column.map((xValue) => Number(xValue));
333
+ const coercedXColumn = column.map(Number);
333
334
  if (isColumnStrictlyIncreasing(coercedXColumn, fieldType)) {
334
335
  return coercedXColumn;
335
336
  }
@@ -383,12 +384,8 @@ var calculateDownsamplingThreshold = ({
383
384
  }
384
385
  const fullSeries = (_c = primaryDataSource == null ? void 0 : primaryDataSource.data) == null ? void 0 : _c.columns[xFieldIndex];
385
386
  const downsampledSeries = currentTarget.dataSet.seriesList[downsampledXFieldIndex];
386
- const firstIndex = fullSeries.findIndex((x) => {
387
- return downsampledSeries[startXIndex] === x;
388
- });
389
- const lastIndex = fullSeries.findIndex((x) => {
390
- return downsampledSeries[endXIndex] === x;
391
- });
387
+ const firstIndex = fullSeries.indexOf(downsampledSeries[startXIndex]);
388
+ const lastIndex = fullSeries.indexOf(downsampledSeries[endXIndex]);
392
389
  if (firstIndex >= 0 && lastIndex >= 0 && firstIndex <= lastIndex) {
393
390
  return calculateThresholdOnRangeSelect({
394
391
  firstIndex,
@@ -880,7 +877,7 @@ var Charting = (props) => {
880
877
  const payload = appendTrellisToPayload(props, {
881
878
  width,
882
879
  height,
883
- currentTime: (/* @__PURE__ */ new Date()).getTime()
880
+ currentTime: Date.now()
884
881
  });
885
882
  chart.current.prepareAndDraw(chartData, updatedOptions, () => {
886
883
  onEventTrigger({
@@ -905,7 +902,7 @@ var Charting = (props) => {
905
902
  needsInit.current = false;
906
903
  needsRedraw.current = false;
907
904
  } catch (e) {
908
- window.console.error("Caught error rendering chart:", e);
905
+ globalThis.console.error("Caught error rendering chart:", e);
909
906
  }
910
907
  };
911
908
  const onContainerMount = (chartingContainer) => {
@@ -1562,10 +1559,8 @@ var AxesChartDataDisplayColumn = {
1562
1559
  };
1563
1560
  var AxesChartDataDisplayLine = {
1564
1561
  label: AxesChartDataDisplayBase.label,
1565
- layout: [
1566
- // remove stacked mode editor
1567
- ...AxesChartDataDisplayBase.layout.slice(1)
1568
- ]
1562
+ // remove stacked mode editor
1563
+ layout: AxesChartDataDisplayBase.layout.slice(1)
1569
1564
  };
1570
1565
 
1571
1566
  // src/common/editorConfig/BackgroundColor.ts
@@ -2700,7 +2695,10 @@ var useSortingParams = ({ requestParams, onRequestParamsChange }) => {
2700
2695
  onSort = (e, { sortKey, sortDir }) => {
2701
2696
  if (typeof sortKey === "string") {
2702
2697
  const nextSortDir = (0, lodash_exports.has)(nextSortDirMap, sortDir) ? nextSortDirMap[sortDir] : "none";
2703
- onRequestParamsChange(__spreadValues(__spreadValues({}, requestParams), { offset: 0, sort: { [sortKey]: nextSortDir } }));
2698
+ onRequestParamsChange(__spreadProps(__spreadValues({}, requestParams), {
2699
+ offset: 0,
2700
+ sort: { [sortKey]: nextSortDir }
2701
+ }));
2704
2702
  } else {
2705
2703
  onRequestParamsChange(requestParams);
2706
2704
  }
@@ -2826,7 +2824,7 @@ var Cover = styled_components_default.div`
2826
2824
  bottom: 0;
2827
2825
  `;
2828
2826
  var Blocker = styled_components_default.div.attrs({
2829
- "data-splunk-visualization-version": "28.8.0 - 633c53372"
2827
+ "data-splunk-visualization-version": "28.9.1 - fba477a41"
2830
2828
  })`
2831
2829
  position: relative;
2832
2830
  width: 100%;
@@ -2852,6 +2850,15 @@ var defaultImport32 = __toESM(require("@splunk/visualizations-shared/colorUtils"
2852
2850
  __reExport(colorUtils_exports, require("@splunk/visualizations-shared/colorUtils"));
2853
2851
  var colorUtils_default = "default" in defaultImport32 ? defaultImport32.default : defaultImport32;
2854
2852
 
2853
+ // esm-externals:@splunk/themes
2854
+ var themes_exports = {};
2855
+ __export(themes_exports, {
2856
+ default: () => themes_default
2857
+ });
2858
+ var defaultImport33 = __toESM(require("@splunk/themes"));
2859
+ __reExport(themes_exports, require("@splunk/themes"));
2860
+ var themes_default = "default" in defaultImport33 ? defaultImport33.default : defaultImport33;
2861
+
2855
2862
  // src/common/hocs/FixedSizeContainer.tsx
2856
2863
  var Item = styled_components_default.div.attrs(({ width }) => ({
2857
2864
  style: {
@@ -2907,7 +2914,7 @@ var withFixedSizeContainer = (Viz) => {
2907
2914
  FixSizeItem,
2908
2915
  {
2909
2916
  "data-test": "fix-size-item",
2910
- "data-splunk-visualization-version": "28.8.0 - 633c53372",
2917
+ "data-splunk-visualization-version": "28.9.1 - fba477a41",
2911
2918
  width,
2912
2919
  height,
2913
2920
  backgroundColor
@@ -2928,6 +2935,14 @@ var shouldShowIconPlaceholder = (dataSources, loading = false) => {
2928
2935
  const noFields = fields === void 0;
2929
2936
  return loading || noData || noFields;
2930
2937
  };
2938
+ var PlaceholderContainer = styled_components_default.div`
2939
+ /* The inline token color wins when supported. Older browsers discard an
2940
+ unsupported oklch value and retain this inherited fallback instead. */
2941
+ color: ${(0, themes_exports.pick)({
2942
+ dark: "#fafafa",
2943
+ light: "#2c2c2c"
2944
+ })};
2945
+ `;
2931
2946
  var IconPlaceholder = (props) => {
2932
2947
  const {
2933
2948
  width = SplunkVisualization_default.defaults.width,
@@ -2942,7 +2957,6 @@ var IconPlaceholder = (props) => {
2942
2957
  style: {
2943
2958
  left: "50%",
2944
2959
  top: "50%",
2945
- color: iconColor,
2946
2960
  opacity: 0.15,
2947
2961
  position: "absolute",
2948
2962
  transform: "translate(-50%, -50%)"
@@ -2952,7 +2966,14 @@ var IconPlaceholder = (props) => {
2952
2966
  "data-test": "icon-placeholder"
2953
2967
  });
2954
2968
  }
2955
- return /* @__PURE__ */ react_exports.createElement("div", { style: { width, height, background: backgroundColor } }, content);
2969
+ return /* @__PURE__ */ react_exports.createElement(
2970
+ PlaceholderContainer,
2971
+ {
2972
+ "data-test": "icon-placeholder-container",
2973
+ style: { width, height, background: backgroundColor, color: iconColor }
2974
+ },
2975
+ content
2976
+ );
2956
2977
  };
2957
2978
  var IconPlaceholder_default = FixedSizeContainer_default(IconPlaceholder);
2958
2979
 
@@ -3155,16 +3176,16 @@ var FeatureFlags_exports = {};
3155
3176
  __export(FeatureFlags_exports, {
3156
3177
  default: () => FeatureFlags_default
3157
3178
  });
3158
- var defaultImport33 = __toESM(require("@splunk/visualization-context/FeatureFlags"));
3179
+ var defaultImport34 = __toESM(require("@splunk/visualization-context/FeatureFlags"));
3159
3180
  __reExport(FeatureFlags_exports, require("@splunk/visualization-context/FeatureFlags"));
3160
- var FeatureFlags_default = "default" in defaultImport33 ? defaultImport33.default : defaultImport33;
3181
+ var FeatureFlags_default = "default" in defaultImport34 ? defaultImport34.default : defaultImport34;
3161
3182
 
3162
3183
  // src/common/utils/featureFlagUtils.ts
3163
3184
  var getFeatureFlag = (context, flagName) => {
3164
- if (context && Object.keys(context).find((key) => key === flagName)) {
3185
+ if (context && Object.keys(context).includes(flagName)) {
3165
3186
  return context[flagName];
3166
3187
  }
3167
- if (Object.keys(FeatureFlags_default).find((key) => key === flagName)) {
3188
+ if (Object.keys(FeatureFlags_default).includes(flagName)) {
3168
3189
  return FeatureFlags_default[flagName];
3169
3190
  }
3170
3191
  return false;
@@ -3175,9 +3196,9 @@ var trellisUtils_exports = {};
3175
3196
  __export(trellisUtils_exports, {
3176
3197
  default: () => trellisUtils_default
3177
3198
  });
3178
- var defaultImport34 = __toESM(require("@splunk/visualizations-shared/trellisUtils"));
3199
+ var defaultImport35 = __toESM(require("@splunk/visualizations-shared/trellisUtils"));
3179
3200
  __reExport(trellisUtils_exports, require("@splunk/visualizations-shared/trellisUtils"));
3180
- var trellisUtils_default = "default" in defaultImport34 ? defaultImport34.default : defaultImport34;
3201
+ var trellisUtils_default = "default" in defaultImport35 ? defaultImport35.default : defaultImport35;
3181
3202
 
3182
3203
  // src/common/utils/trellisUtils.ts
3183
3204
  var AGGREGATIONS = "aggregations";
@@ -3398,7 +3419,7 @@ var dataSourcesSplitByModeChart = (dataSource, splitBy) => {
3398
3419
  splitByFields = (0, trellisUtils_exports.extractSplitByFieldsChartFields)(fields);
3399
3420
  }
3400
3421
  if (splitByFields == null ? void 0 : splitByFields.includes(splitBy)) {
3401
- const splitByFieldIdx = splitByFields.findIndex((f) => f === splitBy);
3422
+ const splitByFieldIdx = splitByFields.indexOf(splitBy);
3402
3423
  const otherSplitBy = splitByFields.filter((f) => f !== splitBy);
3403
3424
  const dataSourceKeys = (0, trellisUtils_exports.extractDataSourceAggregationKeysChart)(fields);
3404
3425
  const nonDataSourceAggregations = [];
@@ -3432,17 +3453,17 @@ var dataSourcesSplitByModeStatsorUnknown = (dataSource, splitBy, splitMode) => {
3432
3453
  let splitByFields = [];
3433
3454
  let errorCode = null;
3434
3455
  if (fields.length > 0) {
3435
- splitByFields = splitMode !== trellisUtils_exports.UNKNOWN ? (0, trellisUtils_exports.extractSplitByFieldsForStats)(fields) : (0, trellisUtils_exports.extractSplitByFieldsForUnknown)(fields);
3456
+ splitByFields = splitMode === trellisUtils_exports.UNKNOWN ? (0, trellisUtils_exports.extractSplitByFieldsForUnknown)(fields) : (0, trellisUtils_exports.extractSplitByFieldsForStats)(fields);
3436
3457
  }
3437
3458
  const splitByIndex = fields.findIndex((field) => field.name === splitBy);
3438
3459
  if (splitByFields == null ? void 0 : splitByFields.includes(splitBy)) {
3439
3460
  const splitByColumn = (_f = (_e = dataSource == null ? void 0 : dataSource.primary) == null ? void 0 : _e.data) == null ? void 0 : _f.columns[splitByIndex];
3440
3461
  splitDataSources = {};
3441
3462
  splitByColumn.forEach((val, idx) => {
3442
- if (!splitDataSources[val]) {
3443
- splitDataSources[val] = [idx];
3444
- } else {
3463
+ if (splitDataSources[val]) {
3445
3464
  splitDataSources[val].push(idx);
3465
+ } else {
3466
+ splitDataSources[val] = [idx];
3446
3467
  }
3447
3468
  });
3448
3469
  const cloneFields = (0, lodash_exports.cloneDeep)(fields);
@@ -3493,27 +3514,28 @@ var turnOffLegendDisplayWhenTrellisIsOn = (isTrellisOn, options) => {
3493
3514
  }
3494
3515
  return {};
3495
3516
  };
3517
+ var extendMinMaxWithColumn = (column, range2) => column.reduce((acc, point) => {
3518
+ const pointNumber = Number(point);
3519
+ if (Number.isNaN(pointNumber)) {
3520
+ return acc;
3521
+ }
3522
+ return {
3523
+ min: Math.min(pointNumber, acc.min),
3524
+ max: Math.max(pointNumber, acc.max)
3525
+ };
3526
+ }, range2);
3496
3527
  var calculateSharedMinMax = (splitData) => {
3497
- let max = -Infinity;
3498
- let min = Infinity;
3528
+ let range2 = { min: Infinity, max: -Infinity };
3499
3529
  Object.keys(splitData).forEach((splitByKey) => {
3500
3530
  const datasources = splitData[splitByKey];
3501
3531
  Object.keys(datasources).forEach((datasourceName) => {
3502
3532
  const dataColumns = datasources[datasourceName].data.columns;
3503
3533
  dataColumns.forEach((column) => {
3504
- column.forEach((point) => {
3505
- const pointNumber = Number(point);
3506
- if (pointNumber > max) {
3507
- max = pointNumber;
3508
- }
3509
- if (pointNumber < min) {
3510
- min = pointNumber;
3511
- }
3512
- });
3534
+ range2 = extendMinMaxWithColumn(column, range2);
3513
3535
  });
3514
3536
  });
3515
3537
  });
3516
- return [min, max];
3538
+ return [range2.min, range2.max];
3517
3539
  };
3518
3540
  var determineMinMax = (splitData, trellisSharedScale, yAxisMin, yAxisMax, stackMode) => {
3519
3541
  if (!trellisSharedScale || stackMode === "stacked100" || yAxisMin !== "auto" && yAxisMax !== "auto")
@@ -3529,9 +3551,9 @@ var visualization_canvas_exports = {};
3529
3551
  __export(visualization_canvas_exports, {
3530
3552
  default: () => visualization_canvas_default
3531
3553
  });
3532
- var defaultImport35 = __toESM(require("@splunk/visualization-canvas"));
3554
+ var defaultImport36 = __toESM(require("@splunk/visualization-canvas"));
3533
3555
  __reExport(visualization_canvas_exports, require("@splunk/visualization-canvas"));
3534
- var visualization_canvas_default = "default" in defaultImport35 ? defaultImport35.default : defaultImport35;
3556
+ var visualization_canvas_default = "default" in defaultImport36 ? defaultImport36.default : defaultImport36;
3535
3557
 
3536
3558
  // src/common/components/VizStyleWrapper.jsx
3537
3559
  var VizStyleWrapper = styled_components_default.div.attrs(({ dataTestKey }) => ({
@@ -3553,18 +3575,18 @@ var Triangle_exports = {};
3553
3575
  __export(Triangle_exports, {
3554
3576
  default: () => Triangle_default
3555
3577
  });
3556
- var defaultImport36 = __toESM(require("@splunk/react-icons/Triangle"));
3578
+ var defaultImport37 = __toESM(require("@splunk/react-icons/Triangle"));
3557
3579
  __reExport(Triangle_exports, require("@splunk/react-icons/Triangle"));
3558
- var Triangle_default = "default" in defaultImport36 ? defaultImport36.default : defaultImport36;
3580
+ var Triangle_default = "default" in defaultImport37 ? defaultImport37.default : defaultImport37;
3559
3581
 
3560
3582
  // esm-externals:@splunk/visualizations-shared/propUtils
3561
3583
  var propUtils_exports = {};
3562
3584
  __export(propUtils_exports, {
3563
3585
  default: () => propUtils_default
3564
3586
  });
3565
- var defaultImport37 = __toESM(require("@splunk/visualizations-shared/propUtils"));
3587
+ var defaultImport38 = __toESM(require("@splunk/visualizations-shared/propUtils"));
3566
3588
  __reExport(propUtils_exports, require("@splunk/visualizations-shared/propUtils"));
3567
- var propUtils_default = "default" in defaultImport37 ? defaultImport37.default : defaultImport37;
3589
+ var propUtils_default = "default" in defaultImport38 ? defaultImport38.default : defaultImport38;
3568
3590
 
3569
3591
  // src/common/chartingUtils.ts
3570
3592
  var DEFAULT_LINE_WIDTH = 2;
@@ -3602,7 +3624,7 @@ var truncateData = (dataSet, truncationLimit) => {
3602
3624
  if (!dataSet) {
3603
3625
  return null;
3604
3626
  }
3605
- const limit = parseInt(truncationLimit, 10);
3627
+ const limit = Number.parseInt(truncationLimit, 10);
3606
3628
  if (!limit || limit <= 0) {
3607
3629
  return dataSet;
3608
3630
  }
@@ -3633,7 +3655,7 @@ var convertY2AxisOptions = (_a) => {
3633
3655
  const convertedOptions = __spreadValues({}, originalOptions);
3634
3656
  if (y2Fields) {
3635
3657
  convertedOptions["axisY2.enabled"] = true;
3636
- convertedOptions["axisY2.fields"] = (0, lodash_exports.isArray)(y2Fields) ? y2Fields.filter((name) => name).join(",") : y2Fields;
3658
+ convertedOptions["axisY2.fields"] = (0, lodash_exports.isArray)(y2Fields) ? y2Fields.filter(Boolean).join(",") : y2Fields;
3637
3659
  }
3638
3660
  return convertedOptions;
3639
3661
  };
@@ -3641,7 +3663,7 @@ var convertOverlayFields = (originalOptions) => {
3641
3663
  const convertedOptions = __spreadValues({}, originalOptions);
3642
3664
  const { overlayFields } = originalOptions;
3643
3665
  if (overlayFields) {
3644
- convertedOptions.overlayFields = Array.isArray(overlayFields) ? overlayFields.filter((field) => field).map((field) => field.trim()).join(",") : overlayFields;
3666
+ convertedOptions.overlayFields = Array.isArray(overlayFields) ? overlayFields.filter(Boolean).map((field) => field.trim()).join(",") : overlayFields;
3645
3667
  }
3646
3668
  return convertedOptions;
3647
3669
  };
@@ -3667,7 +3689,7 @@ var constructFieldsAndColumns = ({
3667
3689
  const y2FieldsArray = toArrayForSeries(y2, y2Fields);
3668
3690
  const y2AsArray = toArrayForSeries(y2, y2).map((series) => series == null ? void 0 : series.map(String));
3669
3691
  y2FieldsArray.forEach((y2Field, index) => {
3670
- if (yFieldsArray.indexOf(y2Field) === -1 && y2AsArray[index]) {
3692
+ if (!yFieldsArray.includes(y2Field) && y2AsArray[index]) {
3671
3693
  fields.push({
3672
3694
  name: y2Field
3673
3695
  });
@@ -3700,9 +3722,9 @@ var shouldEnableSearchZoom = (eventHandlers = [], xField = "") => {
3700
3722
  const xAxisIsTime = xField === "_time";
3701
3723
  return !!rangeSelectEventHandler && xAxisIsTime;
3702
3724
  };
3703
- var canvasSupportedTimeSeriesCharts = ["splunk.line", "splunk.area"];
3725
+ var canvasSupportedTimeSeriesCharts = /* @__PURE__ */ new Set(["splunk.line", "splunk.area"]);
3704
3726
  var isTimeSeriesCanvasRenderSupported = (vizConfigKey) => {
3705
- return canvasSupportedTimeSeriesCharts.includes(vizConfigKey);
3727
+ return canvasSupportedTimeSeriesCharts.has(vizConfigKey);
3706
3728
  };
3707
3729
  var filterChartDataFromInternalFields = (chartData) => {
3708
3730
  const { fields, columns } = chartData;
@@ -3718,7 +3740,7 @@ var filterChartDataFromInternalFields = (chartData) => {
3718
3740
  return { fields: filteredFields, columns: filteredColumns };
3719
3741
  };
3720
3742
  var convert2DArrayToNumbers = (arr) => {
3721
- return arr.map((subArray) => subArray.map((element) => parseFloat(element)));
3743
+ return arr.map((subArray) => subArray.map((element) => Number.parseFloat(element)));
3722
3744
  };
3723
3745
  var parseAxisValue = (val) => {
3724
3746
  if (val === void 0 || val === null || val === "auto" || val === "") {
@@ -3756,6 +3778,7 @@ var getLegend = (props) => {
3756
3778
  return (0, visualization_canvas_exports.TopLegendFactory)(__spreadValues({
3757
3779
  wrap: true
3758
3780
  }, commonLegendProps));
3781
+ // Note: By default, use right legend
3759
3782
  default:
3760
3783
  return (0, visualization_canvas_exports.SideLegendFactory)(__spreadValues({}, commonLegendProps));
3761
3784
  }
@@ -3888,10 +3911,10 @@ var getSeriesOverrides = (opts) => {
3888
3911
  let spanGaps;
3889
3912
  if (nullValueMode === "gaps") {
3890
3913
  spanGaps = false;
3891
- } else if (nullValueMode != null) {
3892
- spanGaps = true;
3893
- } else {
3914
+ } else if (nullValueMode == null) {
3894
3915
  spanGaps = void 0;
3916
+ } else {
3917
+ spanGaps = true;
3895
3918
  }
3896
3919
  const replaceNullsWithZero = nullValueMode === "zero" ? true : void 0;
3897
3920
  const isAreaChart = type === "area";
@@ -4261,11 +4284,11 @@ var TimeSeriesChartWrapper = (props) => {
4261
4284
  y2AxisMajorUnitFromSimpleXML,
4262
4285
  y2AxisMajorTickInterval
4263
4286
  );
4264
- const xAxisMajorTickSizeNum = xAxisMajorTickSize != null ? Number(xAxisMajorTickSize) : void 0;
4265
- const yAxisMajorTickSizeNum = yAxisMajorTickSize != null ? Number(yAxisMajorTickSize) : void 0;
4266
- const y2AxisMajorTickSizeNum = y2AxisMajorTickSize != null ? Number(y2AxisMajorTickSize) : void 0;
4267
- const yAxisMinorTickSizeNum = yAxisMinorTickSize != null ? Number(yAxisMinorTickSize) : void 0;
4268
- const y2AxisMinorTickSizeNum = y2AxisMinorTickSize != null ? Number(y2AxisMinorTickSize) : void 0;
4287
+ const xAxisMajorTickSizeNum = xAxisMajorTickSize == null ? void 0 : Number(xAxisMajorTickSize);
4288
+ const yAxisMajorTickSizeNum = yAxisMajorTickSize == null ? void 0 : Number(yAxisMajorTickSize);
4289
+ const y2AxisMajorTickSizeNum = y2AxisMajorTickSize == null ? void 0 : Number(y2AxisMajorTickSize);
4290
+ const yAxisMinorTickSizeNum = yAxisMinorTickSize == null ? void 0 : Number(yAxisMinorTickSize);
4291
+ const y2AxisMinorTickSizeNum = y2AxisMinorTickSize == null ? void 0 : Number(y2AxisMinorTickSize);
4269
4292
  const areaOpacityForCanvas = getAreaOpacityForCanvas(areaOpacity);
4270
4293
  const seriesColors = seriesColorsStr ? JSON.parse(seriesColorsStr) : void 0;
4271
4294
  const seriesColorsByField = fieldColors ? JSON.parse(fieldColors) : void 0;
@@ -4677,6 +4700,76 @@ var buildEventCallbackProps = (supportedEvents, evaluatedOptionsToUse, onEventTr
4677
4700
  });
4678
4701
  return result;
4679
4702
  };
4703
+ var buildAllEventCallbackProps = (events, evaluatedOptionsToUse, onEventTrigger, { supportsEvents, hasEventHandlers, mode }) => {
4704
+ if (!supportsEvents) return {};
4705
+ const defaultEvents = {};
4706
+ const userEvents = {};
4707
+ Object.entries(events || {}).forEach(([eventKey, eventConfig]) => {
4708
+ (eventConfig.source === "default" ? defaultEvents : userEvents)[eventKey] = eventConfig;
4709
+ });
4710
+ const userProps = hasEventHandlers && mode === "view" ? buildEventCallbackProps(userEvents, evaluatedOptionsToUse, onEventTrigger) : {};
4711
+ return __spreadValues(__spreadValues({}, userProps), buildEventCallbackProps(defaultEvents, evaluatedOptionsToUse, onEventTrigger));
4712
+ };
4713
+ var applyContextTimezone = (localeContext) => {
4714
+ if (localeContext.serializedTimezone && !moment_default.getDefaultSplunkTimezone()) {
4715
+ moment_default.setDefaultSplunkTimezone(localeContext.serializedTimezone);
4716
+ }
4717
+ };
4718
+ var getAsyncOptionsEvaluationParams = ({
4719
+ visualizationID,
4720
+ props,
4721
+ optionsToEvaluate,
4722
+ downsampledDataSources,
4723
+ vizConfig,
4724
+ bypassCloneDeepOptionScope,
4725
+ lazyLoadingDataFrame
4726
+ }) => {
4727
+ return {
4728
+ visualizationID,
4729
+ props,
4730
+ options: __spreadValues({}, optionsToEvaluate),
4731
+ dataSources: downsampledDataSources,
4732
+ theme: vizConfig.themes,
4733
+ bypassCloneDeepOptionScope,
4734
+ lazyLoadingDataFrame
4735
+ };
4736
+ };
4737
+ var evaluateOptionsSync = ({
4738
+ optionsToEvaluate,
4739
+ downsampledDataSources,
4740
+ dataSourcesInState,
4741
+ dataFramesInState,
4742
+ setDataSourcesInState,
4743
+ setDataFramesInState,
4744
+ computeDataFrames,
4745
+ featureFlagContext,
4746
+ themeFunc
4747
+ }) => {
4748
+ let dataFrames = dataFramesInState;
4749
+ if (downsampledDataSources !== dataSourcesInState) {
4750
+ setDataSourcesInState(downsampledDataSources);
4751
+ dataFrames = Options_exports.Options.dataFrameFromDataSource(
4752
+ downsampledDataSources,
4753
+ getFeatureFlag(featureFlagContext, "visualizations_lazyLoadingDataFrame")
4754
+ );
4755
+ setDataFramesInState(dataFrames);
4756
+ }
4757
+ let mergedFrames = dataFrames;
4758
+ if (computeDataFrames && dataFrames) {
4759
+ const derivedFrames = computeDataFrames({
4760
+ dataSources: downsampledDataSources,
4761
+ options: optionsToEvaluate.options
4762
+ });
4763
+ mergedFrames = __spreadValues(__spreadValues({}, dataFrames), derivedFrames);
4764
+ }
4765
+ return Options_exports.Options.evaluate(
4766
+ optionsToEvaluate,
4767
+ downsampledDataSources,
4768
+ themeFunc,
4769
+ mergedFrames,
4770
+ getFeatureFlag(featureFlagContext, "visualizations_bypassCloneDeepOptionScope")
4771
+ );
4772
+ };
4680
4773
  var withDashboardViz = (opts) => {
4681
4774
  const {
4682
4775
  ReactViz,
@@ -4708,11 +4801,7 @@ var withDashboardViz = (opts) => {
4708
4801
  onRequestParamsChange = lodash_exports.noop
4709
4802
  } = props;
4710
4803
  const localeContext = react_exports.useContext(TimezoneContext_default);
4711
- if (localeContext.serializedTimezone) {
4712
- if (!moment_default.getDefaultSplunkTimezone()) {
4713
- moment_default.setDefaultSplunkTimezone(localeContext.serializedTimezone);
4714
- }
4715
- }
4804
+ applyContextTimezone(localeContext);
4716
4805
  const themeFunc = (themeVar) => {
4717
4806
  var _a2, _b;
4718
4807
  return (_b = (_a2 = vizConfig.themes)[themeVar]) == null ? void 0 : _b.call(_a2, props);
@@ -4740,7 +4829,12 @@ var withDashboardViz = (opts) => {
4740
4829
  featureFlagContext == null ? void 0 : featureFlagContext.visualizations_enableAcceleratedRender
4741
4830
  );
4742
4831
  const isAcceleratedRenderOn = isAcceleratedRenderFeatureFlagOn2 && isTimeSeriesCanvasRenderSupported(vizConfig.key) && (options == null ? void 0 : options.acceleratedRender) === true;
4743
- const isMounted = react_exports.useRef(true);
4832
+ const bypassCloneDeepOptionScope = Boolean(
4833
+ getFeatureFlag(featureFlagContext, "visualizations_bypassCloneDeepOptionScope")
4834
+ );
4835
+ const lazyLoadingDataFrame = Boolean(
4836
+ getFeatureFlag(featureFlagContext, "visualizations_lazyLoadingDataFrame")
4837
+ );
4744
4838
  const optionsToEvaluate = react_exports.useMemo(() => {
4745
4839
  var _a2;
4746
4840
  const legendDisplay = turnOffLegendDisplayWhenTrellisIsOn(isTrellisOn, options);
@@ -4779,63 +4873,74 @@ var withDashboardViz = (opts) => {
4779
4873
  threshold,
4780
4874
  isDownsamplingEnabled
4781
4875
  });
4782
- evaluatedOptions = useDeepMemo(() => {
4876
+ const asyncOptionsEvaluationParams = useDeepMemo(
4877
+ () => getAsyncOptionsEvaluationParams({
4878
+ visualizationID,
4879
+ props,
4880
+ optionsToEvaluate,
4881
+ downsampledDataSources,
4882
+ vizConfig,
4883
+ bypassCloneDeepOptionScope,
4884
+ lazyLoadingDataFrame
4885
+ }),
4886
+ [
4887
+ visualizationID,
4888
+ optionsToEvaluate,
4889
+ downsampledDataSources,
4890
+ vizConfig,
4891
+ bypassCloneDeepOptionScope,
4892
+ lazyLoadingDataFrame,
4893
+ currentThemeFamily,
4894
+ currentThemeColorScheme,
4895
+ currentThemeDensity,
4896
+ localeContext.serializedTimezone
4897
+ ]
4898
+ );
4899
+ react_exports.useEffect(() => {
4900
+ if (!useAsyncEvaluatedOptions) {
4901
+ return void 0;
4902
+ }
4903
+ let ownsEvaluation = true;
4783
4904
  try {
4784
- if (useAsyncEvaluatedOptions) {
4785
- const asyncDynamicOptionsEvaluatorParams = {
4786
- visualizationID,
4787
- props,
4788
- options: optionsToEvaluate,
4789
- dataSources: downsampledDataSources,
4790
- theme: vizConfig.themes,
4791
- bypassCloneDeepOptionScope: Boolean(
4792
- getFeatureFlag(featureFlagContext, "visualizations_bypassCloneDeepOptionScope")
4793
- ),
4794
- lazyLoadingDataFrame: Boolean(
4795
- getFeatureFlag(featureFlagContext, "visualizations_lazyLoadingDataFrame")
4796
- )
4797
- };
4798
- async_dynamic_options_evaluator_default.evaluate(asyncDynamicOptionsEvaluatorParams).then((results) => {
4905
+ async_dynamic_options_evaluator_default.evaluate(asyncOptionsEvaluationParams).then((results) => {
4906
+ if (ownsEvaluation) {
4799
4907
  setEvaluatedOptionsAsync(results.results);
4800
- }).catch(() => {
4801
- if (isMounted.current) {
4802
- setUseAsyncEvaluatedOptions(false);
4803
- }
4804
- });
4805
- } else {
4806
- let dataFrames = dataFramesInState;
4807
- if (downsampledDataSources !== dataSourcesInState) {
4808
- setDataSourcesInState(downsampledDataSources);
4809
- dataFrames = Options_exports.Options.dataFrameFromDataSource(
4810
- downsampledDataSources,
4811
- getFeatureFlag(featureFlagContext, "visualizations_lazyLoadingDataFrame")
4812
- );
4813
- setDataFramesInState(dataFrames);
4814
4908
  }
4815
- let mergedFrames = dataFrames;
4816
- if (computeDataFrames && dataFrames) {
4817
- const derivedFrames = computeDataFrames({
4818
- dataSources: downsampledDataSources,
4819
- options: optionsToEvaluate.options
4820
- });
4821
- mergedFrames = __spreadValues(__spreadValues({}, dataFrames), derivedFrames);
4909
+ }).catch(() => {
4910
+ if (ownsEvaluation) {
4911
+ setUseAsyncEvaluatedOptions(false);
4822
4912
  }
4823
- const result = Options_exports.Options.evaluate(
4824
- optionsToEvaluate,
4825
- downsampledDataSources,
4826
- themeFunc,
4827
- mergedFrames,
4828
- getFeatureFlag(featureFlagContext, "visualizations_bypassCloneDeepOptionScope")
4829
- );
4830
- return result;
4913
+ });
4914
+ } catch (e) {
4915
+ setUseAsyncEvaluatedOptions(false);
4916
+ }
4917
+ return () => {
4918
+ ownsEvaluation = false;
4919
+ async_dynamic_options_evaluator_default.reset(visualizationID);
4920
+ };
4921
+ }, [asyncOptionsEvaluationParams, useAsyncEvaluatedOptions, visualizationID]);
4922
+ evaluatedOptions = useDeepMemo(() => {
4923
+ try {
4924
+ if (useAsyncEvaluatedOptions) {
4925
+ return {};
4831
4926
  }
4927
+ return evaluateOptionsSync({
4928
+ optionsToEvaluate,
4929
+ downsampledDataSources,
4930
+ dataSourcesInState,
4931
+ dataFramesInState,
4932
+ setDataSourcesInState,
4933
+ setDataFramesInState,
4934
+ computeDataFrames,
4935
+ featureFlagContext,
4936
+ themeFunc
4937
+ });
4832
4938
  } catch (e) {
4833
4939
  if (e instanceof Error) {
4834
4940
  console.error(`unexpected error evaluating options: ${e.message}`);
4835
4941
  }
4836
4942
  return {};
4837
4943
  }
4838
- return {};
4839
4944
  }, [
4840
4945
  currentThemeFamily,
4841
4946
  currentThemeColorScheme,
@@ -4845,7 +4950,7 @@ var withDashboardViz = (opts) => {
4845
4950
  localeContext.serializedTimezone,
4846
4951
  useAsyncEvaluatedOptions
4847
4952
  ]);
4848
- const evaluatedOptionsToUse = !useAsyncEvaluatedOptions ? evaluatedOptions : evaluatedOptionsAsync;
4953
+ const evaluatedOptionsToUse = useAsyncEvaluatedOptions ? evaluatedOptionsAsync : evaluatedOptions;
4849
4954
  let dataSourceMetadata = {};
4850
4955
  const OptionKey = "paginateDataSourceKey";
4851
4956
  const optsKey = (0, lodash_exports.has)(evaluatedOptionsToUse, OptionKey) && evaluatedOptionsToUse[OptionKey];
@@ -4867,7 +4972,7 @@ var withDashboardViz = (opts) => {
4867
4972
  sortParams,
4868
4973
  paginatorParams
4869
4974
  };
4870
- if (vizConfig.supports.indexOf("page-and-sort" /* PAGE_AND_SORT */) === -1 && !(0, lodash_exports.has)(dataSources, paginateDataSourceKey)) {
4975
+ if (!vizConfig.supports.includes("page-and-sort" /* PAGE_AND_SORT */) && !(0, lodash_exports.has)(dataSources, paginateDataSourceKey)) {
4871
4976
  dataSourceMetadata = {};
4872
4977
  }
4873
4978
  const clonedEvaluatedOptions = __spreadValues({}, evaluatedOptionsToUse);
@@ -4877,14 +4982,6 @@ var withDashboardViz = (opts) => {
4877
4982
  react_exports.useEffect(() => {
4878
4983
  onComputedProps(clonedEvaluatedOptions);
4879
4984
  });
4880
- react_exports.useEffect(() => {
4881
- return () => {
4882
- if (useAsyncEvaluatedOptions) {
4883
- isMounted.current = false;
4884
- async_dynamic_options_evaluator_default.reset(visualizationID);
4885
- }
4886
- };
4887
- }, []);
4888
4985
  const { requiredProps = [], supports } = vizConfig;
4889
4986
  const missing = missingKeys(requiredProps, evaluatedOptionsToUse);
4890
4987
  if (missing.length > 0 && supports.includes("placeholder" /* PLACEHOLDER */) && vizConfig.key !== "splunk.singlevalue") {
@@ -4899,7 +4996,16 @@ var withDashboardViz = (opts) => {
4899
4996
  }
4900
4997
  );
4901
4998
  }
4902
- const eventCallbackProps = hasEventHandlers && mode === "view" && vizConfig.supports.includes("events" /* EVENTS */) ? buildEventCallbackProps(vizConfig.events, evaluatedOptionsToUse, onEventTrigger) : {};
4999
+ const eventCallbackProps = buildAllEventCallbackProps(
5000
+ vizConfig.events,
5001
+ evaluatedOptionsToUse,
5002
+ onEventTrigger,
5003
+ {
5004
+ supportsEvents: vizConfig.supports.includes("events" /* EVENTS */),
5005
+ hasEventHandlers,
5006
+ mode
5007
+ }
5008
+ );
4903
5009
  const computedVizProps = computeVizProps2(__spreadProps(__spreadValues(__spreadProps(__spreadValues(__spreadValues({}, props), evaluatedOptionsToUse), {
4904
5010
  // Align option transformation with the actual renderer selected below.
4905
5011
  // This prevents canvas-only option preservation from leaking into Highcharts mode.
@@ -4927,8 +5033,9 @@ var withDashboardViz = (opts) => {
4927
5033
  onEventTrigger: SplunkVisualization_default.defaults.onEventTrigger
4928
5034
  });
4929
5035
  DashboardViz.config = vizConfig;
4930
- return (0, styled_components_exports.withTheme)(
4931
- withPlaceholder_default(withEditModeCover_default(DashboardViz, disableEditModeCover), useIconPlaceholder)
5036
+ return Object.assign(
5037
+ (0, styled_components_exports.withTheme)(withPlaceholder_default(withEditModeCover_default(DashboardViz, disableEditModeCover), useIconPlaceholder)),
5038
+ { config: vizConfig }
4932
5039
  );
4933
5040
  };
4934
5041
  var withDashboardViz_default = withDashboardViz;
@@ -5044,18 +5151,9 @@ var Paginator_exports = {};
5044
5151
  __export(Paginator_exports, {
5045
5152
  default: () => Paginator_default
5046
5153
  });
5047
- var defaultImport38 = __toESM(require("@splunk/react-ui/Paginator"));
5154
+ var defaultImport39 = __toESM(require("@splunk/react-ui/Paginator"));
5048
5155
  __reExport(Paginator_exports, require("@splunk/react-ui/Paginator"));
5049
- var Paginator_default = "default" in defaultImport38 ? defaultImport38.default : defaultImport38;
5050
-
5051
- // esm-externals:@splunk/themes
5052
- var themes_exports = {};
5053
- __export(themes_exports, {
5054
- default: () => themes_default
5055
- });
5056
- var defaultImport39 = __toESM(require("@splunk/themes"));
5057
- __reExport(themes_exports, require("@splunk/themes"));
5058
- var themes_default = "default" in defaultImport39 ? defaultImport39.default : defaultImport39;
5156
+ var Paginator_default = "default" in defaultImport39 ? defaultImport39.default : defaultImport39;
5059
5157
 
5060
5158
  // src/common/hocs/withTrellis.tsx
5061
5159
  var evaluatePanelOption = (panelDataSources, allOptions, optionKey, vizContext) => {
@@ -5078,7 +5176,7 @@ var sortTrellisKeys = (keys, trellisSortBy, trellisSortOrder, modifiedDataSource
5078
5176
  if (trellisSortBy === "trend") {
5079
5177
  optionKey = "trendValue";
5080
5178
  } else {
5081
- optionKey = mergedOptions.value !== void 0 ? "value" : "majorValue";
5179
+ optionKey = mergedOptions.value === void 0 ? "majorValue" : "value";
5082
5180
  }
5083
5181
  keys.sort((a, b) => {
5084
5182
  const valA = evaluatePanelOption(
@@ -5230,13 +5328,13 @@ var withTrellis = (Viz) => {
5230
5328
  const noColumns = columns === void 0;
5231
5329
  const noFields = fields === void 0;
5232
5330
  const updateDataDisplay = (currPage) => {
5233
- if (!showPaginator) {
5234
- setPagedData(splitByKeys);
5235
- setPageNum(1);
5236
- } else {
5331
+ if (showPaginator) {
5237
5332
  const startIdx = pageCount * (currPage - 1);
5238
5333
  const paged = splitByKeys.slice(startIdx, startIdx + pageCount);
5239
5334
  setPagedData(paged);
5335
+ } else {
5336
+ setPagedData(splitByKeys);
5337
+ setPageNum(1);
5240
5338
  }
5241
5339
  };
5242
5340
  (0, react_exports.useEffect)(() => {