@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/FillerGauge.js CHANGED
@@ -904,7 +904,10 @@ var useSortingParams = ({ requestParams, onRequestParamsChange }) => {
904
904
  onSort = (e, { sortKey, sortDir }) => {
905
905
  if (typeof sortKey === "string") {
906
906
  const nextSortDir = (0, lodash_exports.has)(nextSortDirMap, sortDir) ? nextSortDirMap[sortDir] : "none";
907
- onRequestParamsChange(__spreadValues(__spreadValues({}, requestParams), { offset: 0, sort: { [sortKey]: nextSortDir } }));
907
+ onRequestParamsChange(__spreadProps(__spreadValues({}, requestParams), {
908
+ offset: 0,
909
+ sort: { [sortKey]: nextSortDir }
910
+ }));
908
911
  } else {
909
912
  onRequestParamsChange(requestParams);
910
913
  }
@@ -1039,7 +1042,7 @@ var Cover = styled_components_default.div`
1039
1042
  bottom: 0;
1040
1043
  `;
1041
1044
  var Blocker = styled_components_default.div.attrs({
1042
- "data-splunk-visualization-version": "28.8.0 - 633c53372"
1045
+ "data-splunk-visualization-version": "28.9.0 - 96b03188d"
1043
1046
  })`
1044
1047
  position: relative;
1045
1048
  width: 100%;
@@ -1065,14 +1068,23 @@ var defaultImport26 = __toESM(require("@splunk/visualizations-shared/colorUtils"
1065
1068
  __reExport(colorUtils_exports, require("@splunk/visualizations-shared/colorUtils"));
1066
1069
  var colorUtils_default = "default" in defaultImport26 ? defaultImport26.default : defaultImport26;
1067
1070
 
1071
+ // esm-externals:@splunk/themes
1072
+ var themes_exports = {};
1073
+ __export(themes_exports, {
1074
+ default: () => themes_default
1075
+ });
1076
+ var defaultImport27 = __toESM(require("@splunk/themes"));
1077
+ __reExport(themes_exports, require("@splunk/themes"));
1078
+ var themes_default = "default" in defaultImport27 ? defaultImport27.default : defaultImport27;
1079
+
1068
1080
  // esm-externals:@splunk/visualizations-shared/style
1069
1081
  var style_exports = {};
1070
1082
  __export(style_exports, {
1071
1083
  default: () => style_default
1072
1084
  });
1073
- var defaultImport27 = __toESM(require("@splunk/visualizations-shared/style"));
1085
+ var defaultImport28 = __toESM(require("@splunk/visualizations-shared/style"));
1074
1086
  __reExport(style_exports, require("@splunk/visualizations-shared/style"));
1075
- var style_default = "default" in defaultImport27 ? defaultImport27.default : defaultImport27;
1087
+ var style_default = "default" in defaultImport28 ? defaultImport28.default : defaultImport28;
1076
1088
 
1077
1089
  // src/common/hocs/FixedSizeContainer.tsx
1078
1090
  var Item = styled_components_default.div.attrs(({ width }) => ({
@@ -1129,7 +1141,7 @@ var withFixedSizeContainer = (Viz) => {
1129
1141
  FixSizeItem,
1130
1142
  {
1131
1143
  "data-test": "fix-size-item",
1132
- "data-splunk-visualization-version": "28.8.0 - 633c53372",
1144
+ "data-splunk-visualization-version": "28.9.0 - 96b03188d",
1133
1145
  width,
1134
1146
  height,
1135
1147
  backgroundColor
@@ -1150,6 +1162,14 @@ var shouldShowIconPlaceholder = (dataSources, loading = false) => {
1150
1162
  const noFields = fields === void 0;
1151
1163
  return loading || noData || noFields;
1152
1164
  };
1165
+ var PlaceholderContainer = styled_components_default.div`
1166
+ /* The inline token color wins when supported. Older browsers discard an
1167
+ unsupported oklch value and retain this inherited fallback instead. */
1168
+ color: ${(0, themes_exports.pick)({
1169
+ dark: "#fafafa",
1170
+ light: "#2c2c2c"
1171
+ })};
1172
+ `;
1153
1173
  var IconPlaceholder = (props) => {
1154
1174
  const {
1155
1175
  width = SplunkVisualization_default.defaults.width,
@@ -1164,7 +1184,6 @@ var IconPlaceholder = (props) => {
1164
1184
  style: {
1165
1185
  left: "50%",
1166
1186
  top: "50%",
1167
- color: iconColor,
1168
1187
  opacity: 0.15,
1169
1188
  position: "absolute",
1170
1189
  transform: "translate(-50%, -50%)"
@@ -1174,7 +1193,14 @@ var IconPlaceholder = (props) => {
1174
1193
  "data-test": "icon-placeholder"
1175
1194
  });
1176
1195
  }
1177
- return /* @__PURE__ */ react_exports.createElement("div", { style: { width, height, background: backgroundColor } }, content);
1196
+ return /* @__PURE__ */ react_exports.createElement(
1197
+ PlaceholderContainer,
1198
+ {
1199
+ "data-test": "icon-placeholder-container",
1200
+ style: { width, height, background: backgroundColor, color: iconColor }
1201
+ },
1202
+ content
1203
+ );
1178
1204
  };
1179
1205
  var IconPlaceholder_default = FixedSizeContainer_default(IconPlaceholder);
1180
1206
 
@@ -1220,9 +1246,9 @@ var numberUtils_exports = {};
1220
1246
  __export(numberUtils_exports, {
1221
1247
  default: () => numberUtils_default
1222
1248
  });
1223
- var defaultImport28 = __toESM(require("@splunk/visualizations-shared/numberUtils"));
1249
+ var defaultImport29 = __toESM(require("@splunk/visualizations-shared/numberUtils"));
1224
1250
  __reExport(numberUtils_exports, require("@splunk/visualizations-shared/numberUtils"));
1225
- var numberUtils_default = "default" in defaultImport28 ? defaultImport28.default : defaultImport28;
1251
+ var numberUtils_default = "default" in defaultImport29 ? defaultImport29.default : defaultImport29;
1226
1252
 
1227
1253
  // src/common/utils/dataUtils.ts
1228
1254
  var getFieldName = (field) => typeof field === "string" ? field : field.name;
@@ -1248,7 +1274,7 @@ var largestTriangleThreeBuckets = (data, threshold, preferredDownsampleIndices)
1248
1274
  let avgY = 0;
1249
1275
  let avgRangeStart = Math.floor((i + 1) * every) + 1;
1250
1276
  let avgRangeEnd = Math.floor((i + 2) * every) + 1;
1251
- avgRangeEnd = avgRangeEnd < dataLength ? avgRangeEnd : dataLength;
1277
+ avgRangeEnd = Math.min(avgRangeEnd, dataLength);
1252
1278
  const avgRangeLength = avgRangeEnd - avgRangeStart;
1253
1279
  for (; avgRangeStart < avgRangeEnd; avgRangeStart++) {
1254
1280
  avgX += Number(data[avgRangeStart][0]);
@@ -1283,9 +1309,9 @@ var largestTriangleThreeBuckets = (data, threshold, preferredDownsampleIndices)
1283
1309
  };
1284
1310
  var strictlyCoerceYColumn = (column, options) => {
1285
1311
  const isNullCoercionEnabled = options.nullValueDisplay === "zero";
1286
- const canLooselyCoerceSomeValues = column.findIndex(
1312
+ const canLooselyCoerceSomeValues = column.some(
1287
1313
  (value) => (0, numberUtils_exports.startsWithNumber)(`${value}`) || isNullCoercionEnabled && value === null
1288
- ) >= 0;
1314
+ );
1289
1315
  const coercedColumn = [];
1290
1316
  const canDownsampleColumn = !column.some((value) => {
1291
1317
  const coercedValue = Number(value);
@@ -1304,7 +1330,7 @@ var strictlyCoerceYColumn = (column, options) => {
1304
1330
  };
1305
1331
  var strictlyCoerceXColumn = (column, fieldType) => {
1306
1332
  if (fieldType === "number") {
1307
- const coercedXColumn = column.map((xValue) => Number(xValue));
1333
+ const coercedXColumn = column.map(Number);
1308
1334
  if (isColumnStrictlyIncreasing(coercedXColumn, fieldType)) {
1309
1335
  return coercedXColumn;
1310
1336
  }
@@ -1603,16 +1629,16 @@ var FeatureFlags_exports = {};
1603
1629
  __export(FeatureFlags_exports, {
1604
1630
  default: () => FeatureFlags_default
1605
1631
  });
1606
- var defaultImport29 = __toESM(require("@splunk/visualization-context/FeatureFlags"));
1632
+ var defaultImport30 = __toESM(require("@splunk/visualization-context/FeatureFlags"));
1607
1633
  __reExport(FeatureFlags_exports, require("@splunk/visualization-context/FeatureFlags"));
1608
- var FeatureFlags_default = "default" in defaultImport29 ? defaultImport29.default : defaultImport29;
1634
+ var FeatureFlags_default = "default" in defaultImport30 ? defaultImport30.default : defaultImport30;
1609
1635
 
1610
1636
  // src/common/utils/featureFlagUtils.ts
1611
1637
  var getFeatureFlag = (context, flagName) => {
1612
- if (context && Object.keys(context).find((key) => key === flagName)) {
1638
+ if (context && Object.keys(context).includes(flagName)) {
1613
1639
  return context[flagName];
1614
1640
  }
1615
- if (Object.keys(FeatureFlags_default).find((key) => key === flagName)) {
1641
+ if (Object.keys(FeatureFlags_default).includes(flagName)) {
1616
1642
  return FeatureFlags_default[flagName];
1617
1643
  }
1618
1644
  return false;
@@ -1623,9 +1649,9 @@ var trellisUtils_exports = {};
1623
1649
  __export(trellisUtils_exports, {
1624
1650
  default: () => trellisUtils_default
1625
1651
  });
1626
- var defaultImport30 = __toESM(require("@splunk/visualizations-shared/trellisUtils"));
1652
+ var defaultImport31 = __toESM(require("@splunk/visualizations-shared/trellisUtils"));
1627
1653
  __reExport(trellisUtils_exports, require("@splunk/visualizations-shared/trellisUtils"));
1628
- var trellisUtils_default = "default" in defaultImport30 ? defaultImport30.default : defaultImport30;
1654
+ var trellisUtils_default = "default" in defaultImport31 ? defaultImport31.default : defaultImport31;
1629
1655
 
1630
1656
  // src/common/utils/trellisUtils.ts
1631
1657
  var AGGREGATIONS = "aggregations";
@@ -1846,7 +1872,7 @@ var dataSourcesSplitByModeChart = (dataSource, splitBy) => {
1846
1872
  splitByFields = (0, trellisUtils_exports.extractSplitByFieldsChartFields)(fields);
1847
1873
  }
1848
1874
  if (splitByFields == null ? void 0 : splitByFields.includes(splitBy)) {
1849
- const splitByFieldIdx = splitByFields.findIndex((f) => f === splitBy);
1875
+ const splitByFieldIdx = splitByFields.indexOf(splitBy);
1850
1876
  const otherSplitBy = splitByFields.filter((f) => f !== splitBy);
1851
1877
  const dataSourceKeys = (0, trellisUtils_exports.extractDataSourceAggregationKeysChart)(fields);
1852
1878
  const nonDataSourceAggregations = [];
@@ -1880,17 +1906,17 @@ var dataSourcesSplitByModeStatsorUnknown = (dataSource, splitBy, splitMode) => {
1880
1906
  let splitByFields = [];
1881
1907
  let errorCode = null;
1882
1908
  if (fields.length > 0) {
1883
- splitByFields = splitMode !== trellisUtils_exports.UNKNOWN ? (0, trellisUtils_exports.extractSplitByFieldsForStats)(fields) : (0, trellisUtils_exports.extractSplitByFieldsForUnknown)(fields);
1909
+ splitByFields = splitMode === trellisUtils_exports.UNKNOWN ? (0, trellisUtils_exports.extractSplitByFieldsForUnknown)(fields) : (0, trellisUtils_exports.extractSplitByFieldsForStats)(fields);
1884
1910
  }
1885
1911
  const splitByIndex = fields.findIndex((field) => field.name === splitBy);
1886
1912
  if (splitByFields == null ? void 0 : splitByFields.includes(splitBy)) {
1887
1913
  const splitByColumn = (_f = (_e = dataSource == null ? void 0 : dataSource.primary) == null ? void 0 : _e.data) == null ? void 0 : _f.columns[splitByIndex];
1888
1914
  splitDataSources = {};
1889
1915
  splitByColumn.forEach((val, idx) => {
1890
- if (!splitDataSources[val]) {
1891
- splitDataSources[val] = [idx];
1892
- } else {
1916
+ if (splitDataSources[val]) {
1893
1917
  splitDataSources[val].push(idx);
1918
+ } else {
1919
+ splitDataSources[val] = [idx];
1894
1920
  }
1895
1921
  });
1896
1922
  const cloneFields = (0, lodash_exports.cloneDeep)(fields);
@@ -1941,27 +1967,28 @@ var turnOffLegendDisplayWhenTrellisIsOn = (isTrellisOn, options) => {
1941
1967
  }
1942
1968
  return {};
1943
1969
  };
1970
+ var extendMinMaxWithColumn = (column, range2) => column.reduce((acc, point) => {
1971
+ const pointNumber = Number(point);
1972
+ if (Number.isNaN(pointNumber)) {
1973
+ return acc;
1974
+ }
1975
+ return {
1976
+ min: Math.min(pointNumber, acc.min),
1977
+ max: Math.max(pointNumber, acc.max)
1978
+ };
1979
+ }, range2);
1944
1980
  var calculateSharedMinMax = (splitData) => {
1945
- let max = -Infinity;
1946
- let min = Infinity;
1981
+ let range2 = { min: Infinity, max: -Infinity };
1947
1982
  Object.keys(splitData).forEach((splitByKey) => {
1948
1983
  const datasources = splitData[splitByKey];
1949
1984
  Object.keys(datasources).forEach((datasourceName) => {
1950
1985
  const dataColumns = datasources[datasourceName].data.columns;
1951
1986
  dataColumns.forEach((column) => {
1952
- column.forEach((point) => {
1953
- const pointNumber = Number(point);
1954
- if (pointNumber > max) {
1955
- max = pointNumber;
1956
- }
1957
- if (pointNumber < min) {
1958
- min = pointNumber;
1959
- }
1960
- });
1987
+ range2 = extendMinMaxWithColumn(column, range2);
1961
1988
  });
1962
1989
  });
1963
1990
  });
1964
- return [min, max];
1991
+ return [range2.min, range2.max];
1965
1992
  };
1966
1993
  var determineMinMax = (splitData, trellisSharedScale, yAxisMin, yAxisMax, stackMode) => {
1967
1994
  if (!trellisSharedScale || stackMode === "stacked100" || yAxisMin !== "auto" && yAxisMax !== "auto")
@@ -1977,9 +2004,9 @@ var visualization_canvas_exports = {};
1977
2004
  __export(visualization_canvas_exports, {
1978
2005
  default: () => visualization_canvas_default
1979
2006
  });
1980
- var defaultImport31 = __toESM(require("@splunk/visualization-canvas"));
2007
+ var defaultImport32 = __toESM(require("@splunk/visualization-canvas"));
1981
2008
  __reExport(visualization_canvas_exports, require("@splunk/visualization-canvas"));
1982
- var visualization_canvas_default = "default" in defaultImport31 ? defaultImport31.default : defaultImport31;
2009
+ var visualization_canvas_default = "default" in defaultImport32 ? defaultImport32.default : defaultImport32;
1983
2010
 
1984
2011
  // src/common/components/VizStyleWrapper.jsx
1985
2012
  var VizStyleWrapper = styled_components_default.div.attrs(({ dataTestKey }) => ({
@@ -2001,27 +2028,27 @@ var Triangle_exports = {};
2001
2028
  __export(Triangle_exports, {
2002
2029
  default: () => Triangle_default
2003
2030
  });
2004
- var defaultImport32 = __toESM(require("@splunk/react-icons/Triangle"));
2031
+ var defaultImport33 = __toESM(require("@splunk/react-icons/Triangle"));
2005
2032
  __reExport(Triangle_exports, require("@splunk/react-icons/Triangle"));
2006
- var Triangle_default = "default" in defaultImport32 ? defaultImport32.default : defaultImport32;
2033
+ var Triangle_default = "default" in defaultImport33 ? defaultImport33.default : defaultImport33;
2007
2034
 
2008
2035
  // esm-externals:@splunk/visualizations-shared/propUtils
2009
2036
  var propUtils_exports = {};
2010
2037
  __export(propUtils_exports, {
2011
2038
  default: () => propUtils_default
2012
2039
  });
2013
- var defaultImport33 = __toESM(require("@splunk/visualizations-shared/propUtils"));
2040
+ var defaultImport34 = __toESM(require("@splunk/visualizations-shared/propUtils"));
2014
2041
  __reExport(propUtils_exports, require("@splunk/visualizations-shared/propUtils"));
2015
- var propUtils_default = "default" in defaultImport33 ? defaultImport33.default : defaultImport33;
2042
+ var propUtils_default = "default" in defaultImport34 ? defaultImport34.default : defaultImport34;
2016
2043
 
2017
2044
  // esm-externals:@splunk/visualizations-shared/simpleXMLOptions
2018
2045
  var simpleXMLOptions_exports = {};
2019
2046
  __export(simpleXMLOptions_exports, {
2020
2047
  default: () => simpleXMLOptions_default
2021
2048
  });
2022
- var defaultImport34 = __toESM(require("@splunk/visualizations-shared/simpleXMLOptions"));
2049
+ var defaultImport35 = __toESM(require("@splunk/visualizations-shared/simpleXMLOptions"));
2023
2050
  __reExport(simpleXMLOptions_exports, require("@splunk/visualizations-shared/simpleXMLOptions"));
2024
- var simpleXMLOptions_default = "default" in defaultImport34 ? defaultImport34.default : defaultImport34;
2051
+ var simpleXMLOptions_default = "default" in defaultImport35 ? defaultImport35.default : defaultImport35;
2025
2052
 
2026
2053
  // src/common/chartingUtils.ts
2027
2054
  var DEFAULT_LINE_WIDTH = 2;
@@ -2060,9 +2087,9 @@ var shouldEnableSearchZoom = (eventHandlers = [], xField = "") => {
2060
2087
  const xAxisIsTime = xField === "_time";
2061
2088
  return !!rangeSelectEventHandler && xAxisIsTime;
2062
2089
  };
2063
- var canvasSupportedTimeSeriesCharts = ["splunk.line", "splunk.area"];
2090
+ var canvasSupportedTimeSeriesCharts = /* @__PURE__ */ new Set(["splunk.line", "splunk.area"]);
2064
2091
  var isTimeSeriesCanvasRenderSupported = (vizConfigKey) => {
2065
- return canvasSupportedTimeSeriesCharts.includes(vizConfigKey);
2092
+ return canvasSupportedTimeSeriesCharts.has(vizConfigKey);
2066
2093
  };
2067
2094
  var filterChartDataFromInternalFields = (chartData) => {
2068
2095
  const { fields, columns } = chartData;
@@ -2078,7 +2105,7 @@ var filterChartDataFromInternalFields = (chartData) => {
2078
2105
  return { fields: filteredFields, columns: filteredColumns };
2079
2106
  };
2080
2107
  var convert2DArrayToNumbers = (arr) => {
2081
- return arr.map((subArray) => subArray.map((element) => parseFloat(element)));
2108
+ return arr.map((subArray) => subArray.map((element) => Number.parseFloat(element)));
2082
2109
  };
2083
2110
  var parseAxisValue = (val) => {
2084
2111
  if (val === void 0 || val === null || val === "auto" || val === "") {
@@ -2116,6 +2143,7 @@ var getLegend = (props) => {
2116
2143
  return (0, visualization_canvas_exports.TopLegendFactory)(__spreadValues({
2117
2144
  wrap: true
2118
2145
  }, commonLegendProps));
2146
+ // Note: By default, use right legend
2119
2147
  default:
2120
2148
  return (0, visualization_canvas_exports.SideLegendFactory)(__spreadValues({}, commonLegendProps));
2121
2149
  }
@@ -2248,10 +2276,10 @@ var getSeriesOverrides = (opts) => {
2248
2276
  let spanGaps;
2249
2277
  if (nullValueMode === "gaps") {
2250
2278
  spanGaps = false;
2251
- } else if (nullValueMode != null) {
2252
- spanGaps = true;
2253
- } else {
2279
+ } else if (nullValueMode == null) {
2254
2280
  spanGaps = void 0;
2281
+ } else {
2282
+ spanGaps = true;
2255
2283
  }
2256
2284
  const replaceNullsWithZero = nullValueMode === "zero" ? true : void 0;
2257
2285
  const isAreaChart = type === "area";
@@ -2682,11 +2710,11 @@ var TimeSeriesChartWrapper = (props) => {
2682
2710
  y2AxisMajorUnitFromSimpleXML,
2683
2711
  y2AxisMajorTickInterval
2684
2712
  );
2685
- const xAxisMajorTickSizeNum = xAxisMajorTickSize != null ? Number(xAxisMajorTickSize) : void 0;
2686
- const yAxisMajorTickSizeNum = yAxisMajorTickSize != null ? Number(yAxisMajorTickSize) : void 0;
2687
- const y2AxisMajorTickSizeNum = y2AxisMajorTickSize != null ? Number(y2AxisMajorTickSize) : void 0;
2688
- const yAxisMinorTickSizeNum = yAxisMinorTickSize != null ? Number(yAxisMinorTickSize) : void 0;
2689
- const y2AxisMinorTickSizeNum = y2AxisMinorTickSize != null ? Number(y2AxisMinorTickSize) : void 0;
2713
+ const xAxisMajorTickSizeNum = xAxisMajorTickSize == null ? void 0 : Number(xAxisMajorTickSize);
2714
+ const yAxisMajorTickSizeNum = yAxisMajorTickSize == null ? void 0 : Number(yAxisMajorTickSize);
2715
+ const y2AxisMajorTickSizeNum = y2AxisMajorTickSize == null ? void 0 : Number(y2AxisMajorTickSize);
2716
+ const yAxisMinorTickSizeNum = yAxisMinorTickSize == null ? void 0 : Number(yAxisMinorTickSize);
2717
+ const y2AxisMinorTickSizeNum = y2AxisMinorTickSize == null ? void 0 : Number(y2AxisMinorTickSize);
2690
2718
  const areaOpacityForCanvas = getAreaOpacityForCanvas(areaOpacity);
2691
2719
  const seriesColors = seriesColorsStr ? JSON.parse(seriesColorsStr) : void 0;
2692
2720
  const seriesColorsByField = fieldColors ? JSON.parse(fieldColors) : void 0;
@@ -3098,6 +3126,76 @@ var buildEventCallbackProps = (supportedEvents, evaluatedOptionsToUse, onEventTr
3098
3126
  });
3099
3127
  return result;
3100
3128
  };
3129
+ var buildAllEventCallbackProps = (events, evaluatedOptionsToUse, onEventTrigger, { supportsEvents, hasEventHandlers, mode }) => {
3130
+ if (!supportsEvents) return {};
3131
+ const defaultEvents = {};
3132
+ const userEvents = {};
3133
+ Object.entries(events || {}).forEach(([eventKey, eventConfig]) => {
3134
+ (eventConfig.source === "default" ? defaultEvents : userEvents)[eventKey] = eventConfig;
3135
+ });
3136
+ const userProps = hasEventHandlers && mode === "view" ? buildEventCallbackProps(userEvents, evaluatedOptionsToUse, onEventTrigger) : {};
3137
+ return __spreadValues(__spreadValues({}, userProps), buildEventCallbackProps(defaultEvents, evaluatedOptionsToUse, onEventTrigger));
3138
+ };
3139
+ var applyContextTimezone = (localeContext) => {
3140
+ if (localeContext.serializedTimezone && !moment_default.getDefaultSplunkTimezone()) {
3141
+ moment_default.setDefaultSplunkTimezone(localeContext.serializedTimezone);
3142
+ }
3143
+ };
3144
+ var getAsyncOptionsEvaluationParams = ({
3145
+ visualizationID,
3146
+ props,
3147
+ optionsToEvaluate,
3148
+ downsampledDataSources,
3149
+ vizConfig,
3150
+ bypassCloneDeepOptionScope,
3151
+ lazyLoadingDataFrame
3152
+ }) => {
3153
+ return {
3154
+ visualizationID,
3155
+ props,
3156
+ options: __spreadValues({}, optionsToEvaluate),
3157
+ dataSources: downsampledDataSources,
3158
+ theme: vizConfig.themes,
3159
+ bypassCloneDeepOptionScope,
3160
+ lazyLoadingDataFrame
3161
+ };
3162
+ };
3163
+ var evaluateOptionsSync = ({
3164
+ optionsToEvaluate,
3165
+ downsampledDataSources,
3166
+ dataSourcesInState,
3167
+ dataFramesInState,
3168
+ setDataSourcesInState,
3169
+ setDataFramesInState,
3170
+ computeDataFrames,
3171
+ featureFlagContext,
3172
+ themeFunc
3173
+ }) => {
3174
+ let dataFrames = dataFramesInState;
3175
+ if (downsampledDataSources !== dataSourcesInState) {
3176
+ setDataSourcesInState(downsampledDataSources);
3177
+ dataFrames = Options_exports.Options.dataFrameFromDataSource(
3178
+ downsampledDataSources,
3179
+ getFeatureFlag(featureFlagContext, "visualizations_lazyLoadingDataFrame")
3180
+ );
3181
+ setDataFramesInState(dataFrames);
3182
+ }
3183
+ let mergedFrames = dataFrames;
3184
+ if (computeDataFrames && dataFrames) {
3185
+ const derivedFrames = computeDataFrames({
3186
+ dataSources: downsampledDataSources,
3187
+ options: optionsToEvaluate.options
3188
+ });
3189
+ mergedFrames = __spreadValues(__spreadValues({}, dataFrames), derivedFrames);
3190
+ }
3191
+ return Options_exports.Options.evaluate(
3192
+ optionsToEvaluate,
3193
+ downsampledDataSources,
3194
+ themeFunc,
3195
+ mergedFrames,
3196
+ getFeatureFlag(featureFlagContext, "visualizations_bypassCloneDeepOptionScope")
3197
+ );
3198
+ };
3101
3199
  var withDashboardViz = (opts) => {
3102
3200
  const {
3103
3201
  ReactViz,
@@ -3129,11 +3227,7 @@ var withDashboardViz = (opts) => {
3129
3227
  onRequestParamsChange = lodash_exports.noop
3130
3228
  } = props;
3131
3229
  const localeContext = react_exports.useContext(TimezoneContext_default);
3132
- if (localeContext.serializedTimezone) {
3133
- if (!moment_default.getDefaultSplunkTimezone()) {
3134
- moment_default.setDefaultSplunkTimezone(localeContext.serializedTimezone);
3135
- }
3136
- }
3230
+ applyContextTimezone(localeContext);
3137
3231
  const themeFunc = (themeVar) => {
3138
3232
  var _a2, _b;
3139
3233
  return (_b = (_a2 = vizConfig.themes)[themeVar]) == null ? void 0 : _b.call(_a2, props);
@@ -3161,7 +3255,12 @@ var withDashboardViz = (opts) => {
3161
3255
  featureFlagContext == null ? void 0 : featureFlagContext.visualizations_enableAcceleratedRender
3162
3256
  );
3163
3257
  const isAcceleratedRenderOn = isAcceleratedRenderFeatureFlagOn && isTimeSeriesCanvasRenderSupported(vizConfig.key) && (options == null ? void 0 : options.acceleratedRender) === true;
3164
- const isMounted = react_exports.useRef(true);
3258
+ const bypassCloneDeepOptionScope = Boolean(
3259
+ getFeatureFlag(featureFlagContext, "visualizations_bypassCloneDeepOptionScope")
3260
+ );
3261
+ const lazyLoadingDataFrame = Boolean(
3262
+ getFeatureFlag(featureFlagContext, "visualizations_lazyLoadingDataFrame")
3263
+ );
3165
3264
  const optionsToEvaluate = react_exports.useMemo(() => {
3166
3265
  var _a2;
3167
3266
  const legendDisplay = turnOffLegendDisplayWhenTrellisIsOn(isTrellisOn, options);
@@ -3200,63 +3299,74 @@ var withDashboardViz = (opts) => {
3200
3299
  threshold,
3201
3300
  isDownsamplingEnabled
3202
3301
  });
3203
- evaluatedOptions = useDeepMemo(() => {
3302
+ const asyncOptionsEvaluationParams = useDeepMemo(
3303
+ () => getAsyncOptionsEvaluationParams({
3304
+ visualizationID,
3305
+ props,
3306
+ optionsToEvaluate,
3307
+ downsampledDataSources,
3308
+ vizConfig,
3309
+ bypassCloneDeepOptionScope,
3310
+ lazyLoadingDataFrame
3311
+ }),
3312
+ [
3313
+ visualizationID,
3314
+ optionsToEvaluate,
3315
+ downsampledDataSources,
3316
+ vizConfig,
3317
+ bypassCloneDeepOptionScope,
3318
+ lazyLoadingDataFrame,
3319
+ currentThemeFamily,
3320
+ currentThemeColorScheme,
3321
+ currentThemeDensity,
3322
+ localeContext.serializedTimezone
3323
+ ]
3324
+ );
3325
+ react_exports.useEffect(() => {
3326
+ if (!useAsyncEvaluatedOptions) {
3327
+ return void 0;
3328
+ }
3329
+ let ownsEvaluation = true;
3204
3330
  try {
3205
- if (useAsyncEvaluatedOptions) {
3206
- const asyncDynamicOptionsEvaluatorParams = {
3207
- visualizationID,
3208
- props,
3209
- options: optionsToEvaluate,
3210
- dataSources: downsampledDataSources,
3211
- theme: vizConfig.themes,
3212
- bypassCloneDeepOptionScope: Boolean(
3213
- getFeatureFlag(featureFlagContext, "visualizations_bypassCloneDeepOptionScope")
3214
- ),
3215
- lazyLoadingDataFrame: Boolean(
3216
- getFeatureFlag(featureFlagContext, "visualizations_lazyLoadingDataFrame")
3217
- )
3218
- };
3219
- async_dynamic_options_evaluator_default.evaluate(asyncDynamicOptionsEvaluatorParams).then((results) => {
3331
+ async_dynamic_options_evaluator_default.evaluate(asyncOptionsEvaluationParams).then((results) => {
3332
+ if (ownsEvaluation) {
3220
3333
  setEvaluatedOptionsAsync(results.results);
3221
- }).catch(() => {
3222
- if (isMounted.current) {
3223
- setUseAsyncEvaluatedOptions(false);
3224
- }
3225
- });
3226
- } else {
3227
- let dataFrames = dataFramesInState;
3228
- if (downsampledDataSources !== dataSourcesInState) {
3229
- setDataSourcesInState(downsampledDataSources);
3230
- dataFrames = Options_exports.Options.dataFrameFromDataSource(
3231
- downsampledDataSources,
3232
- getFeatureFlag(featureFlagContext, "visualizations_lazyLoadingDataFrame")
3233
- );
3234
- setDataFramesInState(dataFrames);
3235
3334
  }
3236
- let mergedFrames = dataFrames;
3237
- if (computeDataFrames && dataFrames) {
3238
- const derivedFrames = computeDataFrames({
3239
- dataSources: downsampledDataSources,
3240
- options: optionsToEvaluate.options
3241
- });
3242
- mergedFrames = __spreadValues(__spreadValues({}, dataFrames), derivedFrames);
3335
+ }).catch(() => {
3336
+ if (ownsEvaluation) {
3337
+ setUseAsyncEvaluatedOptions(false);
3243
3338
  }
3244
- const result = Options_exports.Options.evaluate(
3245
- optionsToEvaluate,
3246
- downsampledDataSources,
3247
- themeFunc,
3248
- mergedFrames,
3249
- getFeatureFlag(featureFlagContext, "visualizations_bypassCloneDeepOptionScope")
3250
- );
3251
- return result;
3339
+ });
3340
+ } catch (e) {
3341
+ setUseAsyncEvaluatedOptions(false);
3342
+ }
3343
+ return () => {
3344
+ ownsEvaluation = false;
3345
+ async_dynamic_options_evaluator_default.reset(visualizationID);
3346
+ };
3347
+ }, [asyncOptionsEvaluationParams, useAsyncEvaluatedOptions, visualizationID]);
3348
+ evaluatedOptions = useDeepMemo(() => {
3349
+ try {
3350
+ if (useAsyncEvaluatedOptions) {
3351
+ return {};
3252
3352
  }
3353
+ return evaluateOptionsSync({
3354
+ optionsToEvaluate,
3355
+ downsampledDataSources,
3356
+ dataSourcesInState,
3357
+ dataFramesInState,
3358
+ setDataSourcesInState,
3359
+ setDataFramesInState,
3360
+ computeDataFrames,
3361
+ featureFlagContext,
3362
+ themeFunc
3363
+ });
3253
3364
  } catch (e) {
3254
3365
  if (e instanceof Error) {
3255
3366
  console.error(`unexpected error evaluating options: ${e.message}`);
3256
3367
  }
3257
3368
  return {};
3258
3369
  }
3259
- return {};
3260
3370
  }, [
3261
3371
  currentThemeFamily,
3262
3372
  currentThemeColorScheme,
@@ -3266,7 +3376,7 @@ var withDashboardViz = (opts) => {
3266
3376
  localeContext.serializedTimezone,
3267
3377
  useAsyncEvaluatedOptions
3268
3378
  ]);
3269
- const evaluatedOptionsToUse = !useAsyncEvaluatedOptions ? evaluatedOptions : evaluatedOptionsAsync;
3379
+ const evaluatedOptionsToUse = useAsyncEvaluatedOptions ? evaluatedOptionsAsync : evaluatedOptions;
3270
3380
  let dataSourceMetadata = {};
3271
3381
  const OptionKey = "paginateDataSourceKey";
3272
3382
  const optsKey = (0, lodash_exports.has)(evaluatedOptionsToUse, OptionKey) && evaluatedOptionsToUse[OptionKey];
@@ -3288,7 +3398,7 @@ var withDashboardViz = (opts) => {
3288
3398
  sortParams,
3289
3399
  paginatorParams
3290
3400
  };
3291
- if (vizConfig.supports.indexOf("page-and-sort" /* PAGE_AND_SORT */) === -1 && !(0, lodash_exports.has)(dataSources, paginateDataSourceKey)) {
3401
+ if (!vizConfig.supports.includes("page-and-sort" /* PAGE_AND_SORT */) && !(0, lodash_exports.has)(dataSources, paginateDataSourceKey)) {
3292
3402
  dataSourceMetadata = {};
3293
3403
  }
3294
3404
  const clonedEvaluatedOptions = __spreadValues({}, evaluatedOptionsToUse);
@@ -3298,14 +3408,6 @@ var withDashboardViz = (opts) => {
3298
3408
  react_exports.useEffect(() => {
3299
3409
  onComputedProps(clonedEvaluatedOptions);
3300
3410
  });
3301
- react_exports.useEffect(() => {
3302
- return () => {
3303
- if (useAsyncEvaluatedOptions) {
3304
- isMounted.current = false;
3305
- async_dynamic_options_evaluator_default.reset(visualizationID);
3306
- }
3307
- };
3308
- }, []);
3309
3411
  const { requiredProps = [], supports } = vizConfig;
3310
3412
  const missing = missingKeys(requiredProps, evaluatedOptionsToUse);
3311
3413
  if (missing.length > 0 && supports.includes("placeholder" /* PLACEHOLDER */) && vizConfig.key !== "splunk.singlevalue") {
@@ -3320,7 +3422,16 @@ var withDashboardViz = (opts) => {
3320
3422
  }
3321
3423
  );
3322
3424
  }
3323
- const eventCallbackProps = hasEventHandlers && mode === "view" && vizConfig.supports.includes("events" /* EVENTS */) ? buildEventCallbackProps(vizConfig.events, evaluatedOptionsToUse, onEventTrigger) : {};
3425
+ const eventCallbackProps = buildAllEventCallbackProps(
3426
+ vizConfig.events,
3427
+ evaluatedOptionsToUse,
3428
+ onEventTrigger,
3429
+ {
3430
+ supportsEvents: vizConfig.supports.includes("events" /* EVENTS */),
3431
+ hasEventHandlers,
3432
+ mode
3433
+ }
3434
+ );
3324
3435
  const computedVizProps = computeVizProps2(__spreadProps(__spreadValues(__spreadProps(__spreadValues(__spreadValues({}, props), evaluatedOptionsToUse), {
3325
3436
  // Align option transformation with the actual renderer selected below.
3326
3437
  // This prevents canvas-only option preservation from leaking into Highcharts mode.
@@ -3348,8 +3459,9 @@ var withDashboardViz = (opts) => {
3348
3459
  onEventTrigger: SplunkVisualization_default.defaults.onEventTrigger
3349
3460
  });
3350
3461
  DashboardViz.config = vizConfig;
3351
- return (0, styled_components_exports.withTheme)(
3352
- withPlaceholder_default(withEditModeCover_default(DashboardViz, disableEditModeCover), useIconPlaceholder)
3462
+ return Object.assign(
3463
+ (0, styled_components_exports.withTheme)(withPlaceholder_default(withEditModeCover_default(DashboardViz, disableEditModeCover), useIconPlaceholder)),
3464
+ { config: vizConfig }
3353
3465
  );
3354
3466
  };
3355
3467
  var withDashboardViz_default = withDashboardViz;
@@ -3359,9 +3471,9 @@ var colorConstants_exports = {};
3359
3471
  __export(colorConstants_exports, {
3360
3472
  default: () => colorConstants_default
3361
3473
  });
3362
- var defaultImport35 = __toESM(require("@splunk/visualizations-shared/colorConstants"));
3474
+ var defaultImport36 = __toESM(require("@splunk/visualizations-shared/colorConstants"));
3363
3475
  __reExport(colorConstants_exports, require("@splunk/visualizations-shared/colorConstants"));
3364
- var colorConstants_default = "default" in defaultImport35 ? defaultImport35.default : defaultImport35;
3476
+ var colorConstants_default = "default" in defaultImport36 ? defaultImport36.default : defaultImport36;
3365
3477
 
3366
3478
  // src/common/gaugeUtils.ts
3367
3479
  var GAUGE_THICKNESS = 50;
@@ -3862,9 +3974,9 @@ var format_exports = {};
3862
3974
  __export(format_exports, {
3863
3975
  default: () => format_default
3864
3976
  });
3865
- var defaultImport36 = __toESM(require("@splunk/ui-utils/format"));
3977
+ var defaultImport37 = __toESM(require("@splunk/ui-utils/format"));
3866
3978
  __reExport(format_exports, require("@splunk/ui-utils/format"));
3867
- var format_default = "default" in defaultImport36 ? defaultImport36.default : defaultImport36;
3979
+ var format_default = "default" in defaultImport37 ? defaultImport37.default : defaultImport37;
3868
3980
 
3869
3981
  // src/common/GaugeValueMarker.jsx
3870
3982
  var MARKER_THICKNESS = 15;
@@ -4210,18 +4322,9 @@ var Paginator_exports = {};
4210
4322
  __export(Paginator_exports, {
4211
4323
  default: () => Paginator_default
4212
4324
  });
4213
- var defaultImport37 = __toESM(require("@splunk/react-ui/Paginator"));
4325
+ var defaultImport38 = __toESM(require("@splunk/react-ui/Paginator"));
4214
4326
  __reExport(Paginator_exports, require("@splunk/react-ui/Paginator"));
4215
- var Paginator_default = "default" in defaultImport37 ? defaultImport37.default : defaultImport37;
4216
-
4217
- // esm-externals:@splunk/themes
4218
- var themes_exports = {};
4219
- __export(themes_exports, {
4220
- default: () => themes_default
4221
- });
4222
- var defaultImport38 = __toESM(require("@splunk/themes"));
4223
- __reExport(themes_exports, require("@splunk/themes"));
4224
- var themes_default = "default" in defaultImport38 ? defaultImport38.default : defaultImport38;
4327
+ var Paginator_default = "default" in defaultImport38 ? defaultImport38.default : defaultImport38;
4225
4328
 
4226
4329
  // esm-externals:@splunk/themes/useSplunkTheme
4227
4330
  var useSplunkTheme_exports = {};
@@ -4253,7 +4356,7 @@ var sortTrellisKeys = (keys, trellisSortBy, trellisSortOrder, modifiedDataSource
4253
4356
  if (trellisSortBy === "trend") {
4254
4357
  optionKey = "trendValue";
4255
4358
  } else {
4256
- optionKey = mergedOptions.value !== void 0 ? "value" : "majorValue";
4359
+ optionKey = mergedOptions.value === void 0 ? "majorValue" : "value";
4257
4360
  }
4258
4361
  keys.sort((a, b) => {
4259
4362
  const valA = evaluatePanelOption(
@@ -4405,13 +4508,13 @@ var withTrellis = (Viz) => {
4405
4508
  const noColumns = columns === void 0;
4406
4509
  const noFields = fields === void 0;
4407
4510
  const updateDataDisplay = (currPage) => {
4408
- if (!showPaginator) {
4409
- setPagedData(splitByKeys);
4410
- setPageNum(1);
4411
- } else {
4511
+ if (showPaginator) {
4412
4512
  const startIdx = pageCount * (currPage - 1);
4413
4513
  const paged = splitByKeys.slice(startIdx, startIdx + pageCount);
4414
4514
  setPagedData(paged);
4515
+ } else {
4516
+ setPagedData(splitByKeys);
4517
+ setPageNum(1);
4415
4518
  }
4416
4519
  };
4417
4520
  (0, react_exports.useEffect)(() => {