@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/NetworkGraph.js CHANGED
@@ -38,8 +38,13 @@ var __objRest = (source, exclude) => {
38
38
  }
39
39
  return target;
40
40
  };
41
- var __esm = (fn, res) => function __init() {
42
- return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
41
+ var __esm = (fn, res, err) => function __init() {
42
+ if (err) throw err[0];
43
+ try {
44
+ return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
45
+ } catch (e) {
46
+ throw err = [e], e;
47
+ }
43
48
  };
44
49
  var __export = (target, all) => {
45
50
  for (var name in all)
@@ -1518,7 +1523,10 @@ var useSortingParams = ({ requestParams, onRequestParamsChange }) => {
1518
1523
  onSort = (e, { sortKey, sortDir }) => {
1519
1524
  if (typeof sortKey === "string") {
1520
1525
  const nextSortDir = (0, lodash_exports.has)(nextSortDirMap, sortDir) ? nextSortDirMap[sortDir] : "none";
1521
- onRequestParamsChange(__spreadValues(__spreadValues({}, requestParams), { offset: 0, sort: { [sortKey]: nextSortDir } }));
1526
+ onRequestParamsChange(__spreadProps(__spreadValues({}, requestParams), {
1527
+ offset: 0,
1528
+ sort: { [sortKey]: nextSortDir }
1529
+ }));
1522
1530
  } else {
1523
1531
  onRequestParamsChange(requestParams);
1524
1532
  }
@@ -1674,7 +1682,7 @@ var Cover = styled_components_default.div`
1674
1682
  bottom: 0;
1675
1683
  `;
1676
1684
  var Blocker = styled_components_default.div.attrs({
1677
- "data-splunk-visualization-version": "28.8.0 - 633c53372"
1685
+ "data-splunk-visualization-version": "28.9.0 - 96b03188d"
1678
1686
  })`
1679
1687
  position: relative;
1680
1688
  width: 100%;
@@ -1717,6 +1725,16 @@ var variables_default = "default" in defaultImport20 ? defaultImport20.default :
1717
1725
  // src/common/components/IconPlaceholder.tsx
1718
1726
  init_define_global();
1719
1727
 
1728
+ // esm-externals:@splunk/themes
1729
+ var themes_exports = {};
1730
+ __export(themes_exports, {
1731
+ default: () => themes_default
1732
+ });
1733
+ init_define_global();
1734
+ var defaultImport21 = __toESM(require("@splunk/themes"));
1735
+ __reExport(themes_exports, require("@splunk/themes"));
1736
+ var themes_default = "default" in defaultImport21 ? defaultImport21.default : defaultImport21;
1737
+
1720
1738
  // src/common/hocs/FixedSizeContainer.tsx
1721
1739
  init_define_global();
1722
1740
 
@@ -1726,9 +1744,9 @@ __export(style_exports, {
1726
1744
  default: () => style_default
1727
1745
  });
1728
1746
  init_define_global();
1729
- var defaultImport21 = __toESM(require("@splunk/visualizations-shared/style"));
1747
+ var defaultImport22 = __toESM(require("@splunk/visualizations-shared/style"));
1730
1748
  __reExport(style_exports, require("@splunk/visualizations-shared/style"));
1731
- var style_default = "default" in defaultImport21 ? defaultImport21.default : defaultImport21;
1749
+ var style_default = "default" in defaultImport22 ? defaultImport22.default : defaultImport22;
1732
1750
 
1733
1751
  // src/common/hocs/FixedSizeContainer.tsx
1734
1752
  var Item = styled_components_default.div.attrs(({ width }) => ({
@@ -1785,7 +1803,7 @@ var withFixedSizeContainer = (Viz) => {
1785
1803
  FixSizeItem,
1786
1804
  {
1787
1805
  "data-test": "fix-size-item",
1788
- "data-splunk-visualization-version": "28.8.0 - 633c53372",
1806
+ "data-splunk-visualization-version": "28.9.0 - 96b03188d",
1789
1807
  width,
1790
1808
  height,
1791
1809
  backgroundColor
@@ -1806,6 +1824,14 @@ var shouldShowIconPlaceholder = (dataSources, loading = false) => {
1806
1824
  const noFields = fields === void 0;
1807
1825
  return loading || noData || noFields;
1808
1826
  };
1827
+ var PlaceholderContainer = styled_components_default.div`
1828
+ /* The inline token color wins when supported. Older browsers discard an
1829
+ unsupported oklch value and retain this inherited fallback instead. */
1830
+ color: ${(0, themes_exports.pick)({
1831
+ dark: "#fafafa",
1832
+ light: "#2c2c2c"
1833
+ })};
1834
+ `;
1809
1835
  var IconPlaceholder = (props) => {
1810
1836
  const {
1811
1837
  width = SplunkVisualization_default.defaults.width,
@@ -1820,7 +1846,6 @@ var IconPlaceholder = (props) => {
1820
1846
  style: {
1821
1847
  left: "50%",
1822
1848
  top: "50%",
1823
- color: iconColor,
1824
1849
  opacity: 0.15,
1825
1850
  position: "absolute",
1826
1851
  transform: "translate(-50%, -50%)"
@@ -1830,7 +1855,14 @@ var IconPlaceholder = (props) => {
1830
1855
  "data-test": "icon-placeholder"
1831
1856
  });
1832
1857
  }
1833
- return /* @__PURE__ */ react_exports.createElement("div", { style: { width, height, background: backgroundColor } }, content);
1858
+ return /* @__PURE__ */ react_exports.createElement(
1859
+ PlaceholderContainer,
1860
+ {
1861
+ "data-test": "icon-placeholder-container",
1862
+ style: { width, height, background: backgroundColor, color: iconColor }
1863
+ },
1864
+ content
1865
+ );
1834
1866
  };
1835
1867
  var IconPlaceholder_default = FixedSizeContainer_default(IconPlaceholder);
1836
1868
 
@@ -1883,9 +1915,9 @@ __export(numberUtils_exports, {
1883
1915
  default: () => numberUtils_default
1884
1916
  });
1885
1917
  init_define_global();
1886
- var defaultImport22 = __toESM(require("@splunk/visualizations-shared/numberUtils"));
1918
+ var defaultImport23 = __toESM(require("@splunk/visualizations-shared/numberUtils"));
1887
1919
  __reExport(numberUtils_exports, require("@splunk/visualizations-shared/numberUtils"));
1888
- var numberUtils_default = "default" in defaultImport22 ? defaultImport22.default : defaultImport22;
1920
+ var numberUtils_default = "default" in defaultImport23 ? defaultImport23.default : defaultImport23;
1889
1921
 
1890
1922
  // src/common/interfaces/index.ts
1891
1923
  init_define_global();
@@ -1977,7 +2009,7 @@ var largestTriangleThreeBuckets = (data, threshold, preferredDownsampleIndices)
1977
2009
  let avgY = 0;
1978
2010
  let avgRangeStart = Math.floor((i + 1) * every) + 1;
1979
2011
  let avgRangeEnd = Math.floor((i + 2) * every) + 1;
1980
- avgRangeEnd = avgRangeEnd < dataLength ? avgRangeEnd : dataLength;
2012
+ avgRangeEnd = Math.min(avgRangeEnd, dataLength);
1981
2013
  const avgRangeLength = avgRangeEnd - avgRangeStart;
1982
2014
  for (; avgRangeStart < avgRangeEnd; avgRangeStart++) {
1983
2015
  avgX += Number(data[avgRangeStart][0]);
@@ -2012,9 +2044,9 @@ var largestTriangleThreeBuckets = (data, threshold, preferredDownsampleIndices)
2012
2044
  };
2013
2045
  var strictlyCoerceYColumn = (column, options) => {
2014
2046
  const isNullCoercionEnabled = options.nullValueDisplay === "zero";
2015
- const canLooselyCoerceSomeValues = column.findIndex(
2047
+ const canLooselyCoerceSomeValues = column.some(
2016
2048
  (value) => (0, numberUtils_exports.startsWithNumber)(`${value}`) || isNullCoercionEnabled && value === null
2017
- ) >= 0;
2049
+ );
2018
2050
  const coercedColumn = [];
2019
2051
  const canDownsampleColumn = !column.some((value) => {
2020
2052
  const coercedValue = Number(value);
@@ -2033,7 +2065,7 @@ var strictlyCoerceYColumn = (column, options) => {
2033
2065
  };
2034
2066
  var strictlyCoerceXColumn = (column, fieldType) => {
2035
2067
  if (fieldType === "number") {
2036
- const coercedXColumn = column.map((xValue) => Number(xValue));
2068
+ const coercedXColumn = column.map(Number);
2037
2069
  if (isColumnStrictlyIncreasing(coercedXColumn, fieldType)) {
2038
2070
  return coercedXColumn;
2039
2071
  }
@@ -2338,16 +2370,16 @@ __export(FeatureFlags_exports, {
2338
2370
  default: () => FeatureFlags_default
2339
2371
  });
2340
2372
  init_define_global();
2341
- var defaultImport23 = __toESM(require("@splunk/visualization-context/FeatureFlags"));
2373
+ var defaultImport24 = __toESM(require("@splunk/visualization-context/FeatureFlags"));
2342
2374
  __reExport(FeatureFlags_exports, require("@splunk/visualization-context/FeatureFlags"));
2343
- var FeatureFlags_default = "default" in defaultImport23 ? defaultImport23.default : defaultImport23;
2375
+ var FeatureFlags_default = "default" in defaultImport24 ? defaultImport24.default : defaultImport24;
2344
2376
 
2345
2377
  // src/common/utils/featureFlagUtils.ts
2346
2378
  var getFeatureFlag = (context, flagName) => {
2347
- if (context && Object.keys(context).find((key) => key === flagName)) {
2379
+ if (context && Object.keys(context).includes(flagName)) {
2348
2380
  return context[flagName];
2349
2381
  }
2350
- if (Object.keys(FeatureFlags_default).find((key) => key === flagName)) {
2382
+ if (Object.keys(FeatureFlags_default).includes(flagName)) {
2351
2383
  return FeatureFlags_default[flagName];
2352
2384
  }
2353
2385
  return false;
@@ -2362,9 +2394,9 @@ __export(trellisUtils_exports, {
2362
2394
  default: () => trellisUtils_default
2363
2395
  });
2364
2396
  init_define_global();
2365
- var defaultImport24 = __toESM(require("@splunk/visualizations-shared/trellisUtils"));
2397
+ var defaultImport25 = __toESM(require("@splunk/visualizations-shared/trellisUtils"));
2366
2398
  __reExport(trellisUtils_exports, require("@splunk/visualizations-shared/trellisUtils"));
2367
- var trellisUtils_default = "default" in defaultImport24 ? defaultImport24.default : defaultImport24;
2399
+ var trellisUtils_default = "default" in defaultImport25 ? defaultImport25.default : defaultImport25;
2368
2400
 
2369
2401
  // src/common/utils/trellisUtils.ts
2370
2402
  var turnOffLegendDisplayWhenTrellisIsOn = (isTrellisOn, options) => {
@@ -2385,9 +2417,9 @@ __export(visualization_canvas_exports, {
2385
2417
  default: () => visualization_canvas_default
2386
2418
  });
2387
2419
  init_define_global();
2388
- var defaultImport25 = __toESM(require("@splunk/visualization-canvas"));
2420
+ var defaultImport26 = __toESM(require("@splunk/visualization-canvas"));
2389
2421
  __reExport(visualization_canvas_exports, require("@splunk/visualization-canvas"));
2390
- var visualization_canvas_default = "default" in defaultImport25 ? defaultImport25.default : defaultImport25;
2422
+ var visualization_canvas_default = "default" in defaultImport26 ? defaultImport26.default : defaultImport26;
2391
2423
 
2392
2424
  // src/common/components/VizStyleWrapper.jsx
2393
2425
  init_define_global();
@@ -2414,9 +2446,9 @@ __export(Triangle_exports, {
2414
2446
  default: () => Triangle_default
2415
2447
  });
2416
2448
  init_define_global();
2417
- var defaultImport26 = __toESM(require("@splunk/react-icons/Triangle"));
2449
+ var defaultImport27 = __toESM(require("@splunk/react-icons/Triangle"));
2418
2450
  __reExport(Triangle_exports, require("@splunk/react-icons/Triangle"));
2419
- var Triangle_default = "default" in defaultImport26 ? defaultImport26.default : defaultImport26;
2451
+ var Triangle_default = "default" in defaultImport27 ? defaultImport27.default : defaultImport27;
2420
2452
 
2421
2453
  // esm-externals:@splunk/visualizations-shared/propUtils
2422
2454
  var propUtils_exports = {};
@@ -2424,9 +2456,9 @@ __export(propUtils_exports, {
2424
2456
  default: () => propUtils_default
2425
2457
  });
2426
2458
  init_define_global();
2427
- var defaultImport27 = __toESM(require("@splunk/visualizations-shared/propUtils"));
2459
+ var defaultImport28 = __toESM(require("@splunk/visualizations-shared/propUtils"));
2428
2460
  __reExport(propUtils_exports, require("@splunk/visualizations-shared/propUtils"));
2429
- var propUtils_default = "default" in defaultImport27 ? defaultImport27.default : defaultImport27;
2461
+ var propUtils_default = "default" in defaultImport28 ? defaultImport28.default : defaultImport28;
2430
2462
 
2431
2463
  // esm-externals:@splunk/visualizations-shared/simpleXMLOptions
2432
2464
  var simpleXMLOptions_exports = {};
@@ -2434,9 +2466,9 @@ __export(simpleXMLOptions_exports, {
2434
2466
  default: () => simpleXMLOptions_default
2435
2467
  });
2436
2468
  init_define_global();
2437
- var defaultImport28 = __toESM(require("@splunk/visualizations-shared/simpleXMLOptions"));
2469
+ var defaultImport29 = __toESM(require("@splunk/visualizations-shared/simpleXMLOptions"));
2438
2470
  __reExport(simpleXMLOptions_exports, require("@splunk/visualizations-shared/simpleXMLOptions"));
2439
- var simpleXMLOptions_default = "default" in defaultImport28 ? defaultImport28.default : defaultImport28;
2471
+ var simpleXMLOptions_default = "default" in defaultImport29 ? defaultImport29.default : defaultImport29;
2440
2472
 
2441
2473
  // src/common/chartingUtils.ts
2442
2474
  var DEFAULT_LINE_WIDTH = 2;
@@ -2475,9 +2507,9 @@ var shouldEnableSearchZoom = (eventHandlers = [], xField = "") => {
2475
2507
  const xAxisIsTime = xField === "_time";
2476
2508
  return !!rangeSelectEventHandler && xAxisIsTime;
2477
2509
  };
2478
- var canvasSupportedTimeSeriesCharts = ["splunk.line", "splunk.area"];
2510
+ var canvasSupportedTimeSeriesCharts = /* @__PURE__ */ new Set(["splunk.line", "splunk.area"]);
2479
2511
  var isTimeSeriesCanvasRenderSupported = (vizConfigKey) => {
2480
- return canvasSupportedTimeSeriesCharts.includes(vizConfigKey);
2512
+ return canvasSupportedTimeSeriesCharts.has(vizConfigKey);
2481
2513
  };
2482
2514
  var filterChartDataFromInternalFields = (chartData) => {
2483
2515
  const { fields, columns } = chartData;
@@ -2493,7 +2525,7 @@ var filterChartDataFromInternalFields = (chartData) => {
2493
2525
  return { fields: filteredFields, columns: filteredColumns };
2494
2526
  };
2495
2527
  var convert2DArrayToNumbers = (arr) => {
2496
- return arr.map((subArray) => subArray.map((element) => parseFloat(element)));
2528
+ return arr.map((subArray) => subArray.map((element) => Number.parseFloat(element)));
2497
2529
  };
2498
2530
  var parseAxisValue = (val) => {
2499
2531
  if (val === void 0 || val === null || val === "auto" || val === "") {
@@ -2531,6 +2563,7 @@ var getLegend = (props) => {
2531
2563
  return (0, visualization_canvas_exports.TopLegendFactory)(__spreadValues({
2532
2564
  wrap: true
2533
2565
  }, commonLegendProps));
2566
+ // Note: By default, use right legend
2534
2567
  default:
2535
2568
  return (0, visualization_canvas_exports.SideLegendFactory)(__spreadValues({}, commonLegendProps));
2536
2569
  }
@@ -2663,10 +2696,10 @@ var getSeriesOverrides = (opts) => {
2663
2696
  let spanGaps;
2664
2697
  if (nullValueMode === "gaps") {
2665
2698
  spanGaps = false;
2666
- } else if (nullValueMode != null) {
2667
- spanGaps = true;
2668
- } else {
2699
+ } else if (nullValueMode == null) {
2669
2700
  spanGaps = void 0;
2701
+ } else {
2702
+ spanGaps = true;
2670
2703
  }
2671
2704
  const replaceNullsWithZero = nullValueMode === "zero" ? true : void 0;
2672
2705
  const isAreaChart = type === "area";
@@ -2743,9 +2776,9 @@ __export(visualization_schemas_exports, {
2743
2776
  default: () => visualization_schemas_default
2744
2777
  });
2745
2778
  init_define_global();
2746
- var defaultImport29 = __toESM(require("@splunk/visualization-schemas"));
2779
+ var defaultImport30 = __toESM(require("@splunk/visualization-schemas"));
2747
2780
  __reExport(visualization_schemas_exports, require("@splunk/visualization-schemas"));
2748
- var visualization_schemas_default = "default" in defaultImport29 ? defaultImport29.default : defaultImport29;
2781
+ var visualization_schemas_default = "default" in defaultImport30 ? defaultImport30.default : defaultImport30;
2749
2782
 
2750
2783
  // src/common/hooks/useTrellisEnabled.ts
2751
2784
  var useTrellisFeatureFlagOn = () => {
@@ -3111,11 +3144,11 @@ var TimeSeriesChartWrapper = (props) => {
3111
3144
  y2AxisMajorUnitFromSimpleXML,
3112
3145
  y2AxisMajorTickInterval
3113
3146
  );
3114
- const xAxisMajorTickSizeNum = xAxisMajorTickSize != null ? Number(xAxisMajorTickSize) : void 0;
3115
- const yAxisMajorTickSizeNum = yAxisMajorTickSize != null ? Number(yAxisMajorTickSize) : void 0;
3116
- const y2AxisMajorTickSizeNum = y2AxisMajorTickSize != null ? Number(y2AxisMajorTickSize) : void 0;
3117
- const yAxisMinorTickSizeNum = yAxisMinorTickSize != null ? Number(yAxisMinorTickSize) : void 0;
3118
- const y2AxisMinorTickSizeNum = y2AxisMinorTickSize != null ? Number(y2AxisMinorTickSize) : void 0;
3147
+ const xAxisMajorTickSizeNum = xAxisMajorTickSize == null ? void 0 : Number(xAxisMajorTickSize);
3148
+ const yAxisMajorTickSizeNum = yAxisMajorTickSize == null ? void 0 : Number(yAxisMajorTickSize);
3149
+ const y2AxisMajorTickSizeNum = y2AxisMajorTickSize == null ? void 0 : Number(y2AxisMajorTickSize);
3150
+ const yAxisMinorTickSizeNum = yAxisMinorTickSize == null ? void 0 : Number(yAxisMinorTickSize);
3151
+ const y2AxisMinorTickSizeNum = y2AxisMinorTickSize == null ? void 0 : Number(y2AxisMinorTickSize);
3119
3152
  const areaOpacityForCanvas = getAreaOpacityForCanvas(areaOpacity);
3120
3153
  const seriesColors = seriesColorsStr ? JSON.parse(seriesColorsStr) : void 0;
3121
3154
  const seriesColorsByField = fieldColors ? JSON.parse(fieldColors) : void 0;
@@ -3527,6 +3560,76 @@ var buildEventCallbackProps = (supportedEvents, evaluatedOptionsToUse, onEventTr
3527
3560
  });
3528
3561
  return result;
3529
3562
  };
3563
+ var buildAllEventCallbackProps = (events, evaluatedOptionsToUse, onEventTrigger, { supportsEvents, hasEventHandlers, mode }) => {
3564
+ if (!supportsEvents) return {};
3565
+ const defaultEvents = {};
3566
+ const userEvents = {};
3567
+ Object.entries(events || {}).forEach(([eventKey, eventConfig]) => {
3568
+ (eventConfig.source === "default" ? defaultEvents : userEvents)[eventKey] = eventConfig;
3569
+ });
3570
+ const userProps = hasEventHandlers && mode === "view" ? buildEventCallbackProps(userEvents, evaluatedOptionsToUse, onEventTrigger) : {};
3571
+ return __spreadValues(__spreadValues({}, userProps), buildEventCallbackProps(defaultEvents, evaluatedOptionsToUse, onEventTrigger));
3572
+ };
3573
+ var applyContextTimezone = (localeContext) => {
3574
+ if (localeContext.serializedTimezone && !moment_default.getDefaultSplunkTimezone()) {
3575
+ moment_default.setDefaultSplunkTimezone(localeContext.serializedTimezone);
3576
+ }
3577
+ };
3578
+ var getAsyncOptionsEvaluationParams = ({
3579
+ visualizationID,
3580
+ props,
3581
+ optionsToEvaluate,
3582
+ downsampledDataSources,
3583
+ vizConfig,
3584
+ bypassCloneDeepOptionScope,
3585
+ lazyLoadingDataFrame
3586
+ }) => {
3587
+ return {
3588
+ visualizationID,
3589
+ props,
3590
+ options: __spreadValues({}, optionsToEvaluate),
3591
+ dataSources: downsampledDataSources,
3592
+ theme: vizConfig.themes,
3593
+ bypassCloneDeepOptionScope,
3594
+ lazyLoadingDataFrame
3595
+ };
3596
+ };
3597
+ var evaluateOptionsSync = ({
3598
+ optionsToEvaluate,
3599
+ downsampledDataSources,
3600
+ dataSourcesInState,
3601
+ dataFramesInState,
3602
+ setDataSourcesInState,
3603
+ setDataFramesInState,
3604
+ computeDataFrames,
3605
+ featureFlagContext,
3606
+ themeFunc
3607
+ }) => {
3608
+ let dataFrames = dataFramesInState;
3609
+ if (downsampledDataSources !== dataSourcesInState) {
3610
+ setDataSourcesInState(downsampledDataSources);
3611
+ dataFrames = Options_exports.Options.dataFrameFromDataSource(
3612
+ downsampledDataSources,
3613
+ getFeatureFlag(featureFlagContext, "visualizations_lazyLoadingDataFrame")
3614
+ );
3615
+ setDataFramesInState(dataFrames);
3616
+ }
3617
+ let mergedFrames = dataFrames;
3618
+ if (computeDataFrames && dataFrames) {
3619
+ const derivedFrames = computeDataFrames({
3620
+ dataSources: downsampledDataSources,
3621
+ options: optionsToEvaluate.options
3622
+ });
3623
+ mergedFrames = __spreadValues(__spreadValues({}, dataFrames), derivedFrames);
3624
+ }
3625
+ return Options_exports.Options.evaluate(
3626
+ optionsToEvaluate,
3627
+ downsampledDataSources,
3628
+ themeFunc,
3629
+ mergedFrames,
3630
+ getFeatureFlag(featureFlagContext, "visualizations_bypassCloneDeepOptionScope")
3631
+ );
3632
+ };
3530
3633
  var withDashboardViz = (opts) => {
3531
3634
  const {
3532
3635
  ReactViz,
@@ -3558,11 +3661,7 @@ var withDashboardViz = (opts) => {
3558
3661
  onRequestParamsChange = lodash_exports.noop
3559
3662
  } = props;
3560
3663
  const localeContext = react_exports.useContext(TimezoneContext_default);
3561
- if (localeContext.serializedTimezone) {
3562
- if (!moment_default.getDefaultSplunkTimezone()) {
3563
- moment_default.setDefaultSplunkTimezone(localeContext.serializedTimezone);
3564
- }
3565
- }
3664
+ applyContextTimezone(localeContext);
3566
3665
  const themeFunc = (themeVar) => {
3567
3666
  var _a2, _b;
3568
3667
  return (_b = (_a2 = vizConfig.themes)[themeVar]) == null ? void 0 : _b.call(_a2, props);
@@ -3590,7 +3689,12 @@ var withDashboardViz = (opts) => {
3590
3689
  featureFlagContext == null ? void 0 : featureFlagContext.visualizations_enableAcceleratedRender
3591
3690
  );
3592
3691
  const isAcceleratedRenderOn = isAcceleratedRenderFeatureFlagOn && isTimeSeriesCanvasRenderSupported(vizConfig.key) && (options == null ? void 0 : options.acceleratedRender) === true;
3593
- const isMounted = react_exports.useRef(true);
3692
+ const bypassCloneDeepOptionScope = Boolean(
3693
+ getFeatureFlag(featureFlagContext, "visualizations_bypassCloneDeepOptionScope")
3694
+ );
3695
+ const lazyLoadingDataFrame = Boolean(
3696
+ getFeatureFlag(featureFlagContext, "visualizations_lazyLoadingDataFrame")
3697
+ );
3594
3698
  const optionsToEvaluate = react_exports.useMemo(() => {
3595
3699
  var _a2;
3596
3700
  const legendDisplay = turnOffLegendDisplayWhenTrellisIsOn(isTrellisOn, options);
@@ -3629,63 +3733,74 @@ var withDashboardViz = (opts) => {
3629
3733
  threshold,
3630
3734
  isDownsamplingEnabled
3631
3735
  });
3632
- evaluatedOptions = useDeepMemo(() => {
3736
+ const asyncOptionsEvaluationParams = useDeepMemo(
3737
+ () => getAsyncOptionsEvaluationParams({
3738
+ visualizationID,
3739
+ props,
3740
+ optionsToEvaluate,
3741
+ downsampledDataSources,
3742
+ vizConfig,
3743
+ bypassCloneDeepOptionScope,
3744
+ lazyLoadingDataFrame
3745
+ }),
3746
+ [
3747
+ visualizationID,
3748
+ optionsToEvaluate,
3749
+ downsampledDataSources,
3750
+ vizConfig,
3751
+ bypassCloneDeepOptionScope,
3752
+ lazyLoadingDataFrame,
3753
+ currentThemeFamily,
3754
+ currentThemeColorScheme,
3755
+ currentThemeDensity,
3756
+ localeContext.serializedTimezone
3757
+ ]
3758
+ );
3759
+ react_exports.useEffect(() => {
3760
+ if (!useAsyncEvaluatedOptions) {
3761
+ return void 0;
3762
+ }
3763
+ let ownsEvaluation = true;
3633
3764
  try {
3634
- if (useAsyncEvaluatedOptions) {
3635
- const asyncDynamicOptionsEvaluatorParams = {
3636
- visualizationID,
3637
- props,
3638
- options: optionsToEvaluate,
3639
- dataSources: downsampledDataSources,
3640
- theme: vizConfig.themes,
3641
- bypassCloneDeepOptionScope: Boolean(
3642
- getFeatureFlag(featureFlagContext, "visualizations_bypassCloneDeepOptionScope")
3643
- ),
3644
- lazyLoadingDataFrame: Boolean(
3645
- getFeatureFlag(featureFlagContext, "visualizations_lazyLoadingDataFrame")
3646
- )
3647
- };
3648
- async_dynamic_options_evaluator_default.evaluate(asyncDynamicOptionsEvaluatorParams).then((results) => {
3765
+ async_dynamic_options_evaluator_default.evaluate(asyncOptionsEvaluationParams).then((results) => {
3766
+ if (ownsEvaluation) {
3649
3767
  setEvaluatedOptionsAsync(results.results);
3650
- }).catch(() => {
3651
- if (isMounted.current) {
3652
- setUseAsyncEvaluatedOptions(false);
3653
- }
3654
- });
3655
- } else {
3656
- let dataFrames = dataFramesInState;
3657
- if (downsampledDataSources !== dataSourcesInState) {
3658
- setDataSourcesInState(downsampledDataSources);
3659
- dataFrames = Options_exports.Options.dataFrameFromDataSource(
3660
- downsampledDataSources,
3661
- getFeatureFlag(featureFlagContext, "visualizations_lazyLoadingDataFrame")
3662
- );
3663
- setDataFramesInState(dataFrames);
3664
3768
  }
3665
- let mergedFrames = dataFrames;
3666
- if (computeDataFrames && dataFrames) {
3667
- const derivedFrames = computeDataFrames({
3668
- dataSources: downsampledDataSources,
3669
- options: optionsToEvaluate.options
3670
- });
3671
- mergedFrames = __spreadValues(__spreadValues({}, dataFrames), derivedFrames);
3769
+ }).catch(() => {
3770
+ if (ownsEvaluation) {
3771
+ setUseAsyncEvaluatedOptions(false);
3672
3772
  }
3673
- const result = Options_exports.Options.evaluate(
3674
- optionsToEvaluate,
3675
- downsampledDataSources,
3676
- themeFunc,
3677
- mergedFrames,
3678
- getFeatureFlag(featureFlagContext, "visualizations_bypassCloneDeepOptionScope")
3679
- );
3680
- return result;
3773
+ });
3774
+ } catch (e) {
3775
+ setUseAsyncEvaluatedOptions(false);
3776
+ }
3777
+ return () => {
3778
+ ownsEvaluation = false;
3779
+ async_dynamic_options_evaluator_default.reset(visualizationID);
3780
+ };
3781
+ }, [asyncOptionsEvaluationParams, useAsyncEvaluatedOptions, visualizationID]);
3782
+ evaluatedOptions = useDeepMemo(() => {
3783
+ try {
3784
+ if (useAsyncEvaluatedOptions) {
3785
+ return {};
3681
3786
  }
3787
+ return evaluateOptionsSync({
3788
+ optionsToEvaluate,
3789
+ downsampledDataSources,
3790
+ dataSourcesInState,
3791
+ dataFramesInState,
3792
+ setDataSourcesInState,
3793
+ setDataFramesInState,
3794
+ computeDataFrames,
3795
+ featureFlagContext,
3796
+ themeFunc
3797
+ });
3682
3798
  } catch (e) {
3683
3799
  if (e instanceof Error) {
3684
3800
  console.error(`unexpected error evaluating options: ${e.message}`);
3685
3801
  }
3686
3802
  return {};
3687
3803
  }
3688
- return {};
3689
3804
  }, [
3690
3805
  currentThemeFamily,
3691
3806
  currentThemeColorScheme,
@@ -3695,7 +3810,7 @@ var withDashboardViz = (opts) => {
3695
3810
  localeContext.serializedTimezone,
3696
3811
  useAsyncEvaluatedOptions
3697
3812
  ]);
3698
- const evaluatedOptionsToUse = !useAsyncEvaluatedOptions ? evaluatedOptions : evaluatedOptionsAsync;
3813
+ const evaluatedOptionsToUse = useAsyncEvaluatedOptions ? evaluatedOptionsAsync : evaluatedOptions;
3699
3814
  let dataSourceMetadata = {};
3700
3815
  const OptionKey = "paginateDataSourceKey";
3701
3816
  const optsKey = (0, lodash_exports.has)(evaluatedOptionsToUse, OptionKey) && evaluatedOptionsToUse[OptionKey];
@@ -3717,7 +3832,7 @@ var withDashboardViz = (opts) => {
3717
3832
  sortParams,
3718
3833
  paginatorParams
3719
3834
  };
3720
- if (vizConfig.supports.indexOf("page-and-sort" /* PAGE_AND_SORT */) === -1 && !(0, lodash_exports.has)(dataSources, paginateDataSourceKey)) {
3835
+ if (!vizConfig.supports.includes("page-and-sort" /* PAGE_AND_SORT */) && !(0, lodash_exports.has)(dataSources, paginateDataSourceKey)) {
3721
3836
  dataSourceMetadata = {};
3722
3837
  }
3723
3838
  const clonedEvaluatedOptions = __spreadValues({}, evaluatedOptionsToUse);
@@ -3727,14 +3842,6 @@ var withDashboardViz = (opts) => {
3727
3842
  react_exports.useEffect(() => {
3728
3843
  onComputedProps(clonedEvaluatedOptions);
3729
3844
  });
3730
- react_exports.useEffect(() => {
3731
- return () => {
3732
- if (useAsyncEvaluatedOptions) {
3733
- isMounted.current = false;
3734
- async_dynamic_options_evaluator_default.reset(visualizationID);
3735
- }
3736
- };
3737
- }, []);
3738
3845
  const { requiredProps = [], supports } = vizConfig;
3739
3846
  const missing = missingKeys(requiredProps, evaluatedOptionsToUse);
3740
3847
  if (missing.length > 0 && supports.includes("placeholder" /* PLACEHOLDER */) && vizConfig.key !== "splunk.singlevalue") {
@@ -3749,7 +3856,16 @@ var withDashboardViz = (opts) => {
3749
3856
  }
3750
3857
  );
3751
3858
  }
3752
- const eventCallbackProps = hasEventHandlers && mode === "view" && vizConfig.supports.includes("events" /* EVENTS */) ? buildEventCallbackProps(vizConfig.events, evaluatedOptionsToUse, onEventTrigger) : {};
3859
+ const eventCallbackProps = buildAllEventCallbackProps(
3860
+ vizConfig.events,
3861
+ evaluatedOptionsToUse,
3862
+ onEventTrigger,
3863
+ {
3864
+ supportsEvents: vizConfig.supports.includes("events" /* EVENTS */),
3865
+ hasEventHandlers,
3866
+ mode
3867
+ }
3868
+ );
3753
3869
  const computedVizProps = computeVizProps2(__spreadProps(__spreadValues(__spreadProps(__spreadValues(__spreadValues({}, props), evaluatedOptionsToUse), {
3754
3870
  // Align option transformation with the actual renderer selected below.
3755
3871
  // This prevents canvas-only option preservation from leaking into Highcharts mode.
@@ -3777,8 +3893,9 @@ var withDashboardViz = (opts) => {
3777
3893
  onEventTrigger: SplunkVisualization_default.defaults.onEventTrigger
3778
3894
  });
3779
3895
  DashboardViz.config = vizConfig;
3780
- return (0, styled_components_exports.withTheme)(
3781
- withPlaceholder_default(withEditModeCover_default(DashboardViz, disableEditModeCover), useIconPlaceholder)
3896
+ return Object.assign(
3897
+ (0, styled_components_exports.withTheme)(withPlaceholder_default(withEditModeCover_default(DashboardViz, disableEditModeCover), useIconPlaceholder)),
3898
+ { config: vizConfig }
3782
3899
  );
3783
3900
  };
3784
3901
  var withDashboardViz_default = withDashboardViz;
@@ -3792,9 +3909,9 @@ __export(d3_transition_exports, {
3792
3909
  default: () => d3_transition_default
3793
3910
  });
3794
3911
  init_define_global();
3795
- var defaultImport30 = __toESM(require("d3-transition"));
3912
+ var defaultImport31 = __toESM(require("d3-transition"));
3796
3913
  __reExport(d3_transition_exports, require("d3-transition"));
3797
- var d3_transition_default = "default" in defaultImport30 ? defaultImport30.default : defaultImport30;
3914
+ var d3_transition_default = "default" in defaultImport31 ? defaultImport31.default : defaultImport31;
3798
3915
 
3799
3916
  // esm-externals:d3-selection
3800
3917
  var d3_selection_exports = {};
@@ -3802,9 +3919,9 @@ __export(d3_selection_exports, {
3802
3919
  default: () => d3_selection_default
3803
3920
  });
3804
3921
  init_define_global();
3805
- var defaultImport31 = __toESM(require("d3-selection"));
3922
+ var defaultImport32 = __toESM(require("d3-selection"));
3806
3923
  __reExport(d3_selection_exports, require("d3-selection"));
3807
- var d3_selection_default = "default" in defaultImport31 ? defaultImport31.default : defaultImport31;
3924
+ var d3_selection_default = "default" in defaultImport32 ? defaultImport32.default : defaultImport32;
3808
3925
 
3809
3926
  // esm-externals:d3-zoom
3810
3927
  var d3_zoom_exports = {};
@@ -3812,9 +3929,9 @@ __export(d3_zoom_exports, {
3812
3929
  default: () => d3_zoom_default
3813
3930
  });
3814
3931
  init_define_global();
3815
- var defaultImport32 = __toESM(require("d3-zoom"));
3932
+ var defaultImport33 = __toESM(require("d3-zoom"));
3816
3933
  __reExport(d3_zoom_exports, require("d3-zoom"));
3817
- var d3_zoom_default = "default" in defaultImport32 ? defaultImport32.default : defaultImport32;
3934
+ var d3_zoom_default = "default" in defaultImport33 ? defaultImport33.default : defaultImport33;
3818
3935
 
3819
3936
  // src/NetworkGraph/PureNetworkGraph/utils/networkGraphUtils.ts
3820
3937
  init_define_global();
@@ -3825,9 +3942,9 @@ __export(dagre_exports, {
3825
3942
  default: () => dagre_default
3826
3943
  });
3827
3944
  init_define_global();
3828
- var defaultImport33 = __toESM(require("dagre"));
3945
+ var defaultImport34 = __toESM(require("dagre"));
3829
3946
  __reExport(dagre_exports, require("dagre"));
3830
- var dagre_default = "default" in defaultImport33 ? defaultImport33.default : defaultImport33;
3947
+ var dagre_default = "default" in defaultImport34 ? defaultImport34.default : defaultImport34;
3831
3948
 
3832
3949
  // esm-externals:@splunk/visualizations-shared/iconUtils
3833
3950
  var iconUtils_exports = {};
@@ -3835,9 +3952,9 @@ __export(iconUtils_exports, {
3835
3952
  default: () => iconUtils_default
3836
3953
  });
3837
3954
  init_define_global();
3838
- var defaultImport34 = __toESM(require("@splunk/visualizations-shared/iconUtils"));
3955
+ var defaultImport35 = __toESM(require("@splunk/visualizations-shared/iconUtils"));
3839
3956
  __reExport(iconUtils_exports, require("@splunk/visualizations-shared/iconUtils"));
3840
- var iconUtils_default = "default" in defaultImport34 ? defaultImport34.default : defaultImport34;
3957
+ var iconUtils_default = "default" in defaultImport35 ? defaultImport35.default : defaultImport35;
3841
3958
 
3842
3959
  // esm-externals:@splunk/visualization-encoding/utils/colorUtils
3843
3960
  var colorUtils_exports2 = {};
@@ -3845,9 +3962,9 @@ __export(colorUtils_exports2, {
3845
3962
  default: () => colorUtils_default2
3846
3963
  });
3847
3964
  init_define_global();
3848
- var defaultImport35 = __toESM(require("@splunk/visualization-encoding/utils/colorUtils"));
3965
+ var defaultImport36 = __toESM(require("@splunk/visualization-encoding/utils/colorUtils"));
3849
3966
  __reExport(colorUtils_exports2, require("@splunk/visualization-encoding/utils/colorUtils"));
3850
- var colorUtils_default2 = "default" in defaultImport35 ? defaultImport35.default : defaultImport35;
3967
+ var colorUtils_default2 = "default" in defaultImport36 ? defaultImport36.default : defaultImport36;
3851
3968
 
3852
3969
  // src/common/utils/textUtils.ts
3853
3970
  init_define_global();
@@ -3859,40 +3976,54 @@ var computeTextWidth = (text, font) => {
3859
3976
  const measure = context.measureText(text);
3860
3977
  return measure.width;
3861
3978
  };
3979
+ var truncateEnd = (text, context, maxWidth, ellipsis) => {
3980
+ for (let i = text.length - 1; i > 0; i -= 1) {
3981
+ const truncatedText = text.slice(0, i) + ellipsis;
3982
+ if (context.measureText(truncatedText).width <= maxWidth) {
3983
+ return truncatedText;
3984
+ }
3985
+ }
3986
+ return ellipsis;
3987
+ };
3988
+ var truncateStart = (text, context, maxWidth, ellipsis) => {
3989
+ for (let i = 0; i < text.length; i += 1) {
3990
+ const truncatedText = ellipsis + text.slice(i);
3991
+ if (context.measureText(truncatedText).width <= maxWidth) {
3992
+ return truncatedText;
3993
+ }
3994
+ }
3995
+ return ellipsis;
3996
+ };
3997
+ var truncateMiddle = (text, context, maxWidth, ellipsis) => {
3998
+ const ellipsisWidth = context.measureText(ellipsis).width;
3999
+ for (let i = 0; i < text.length / 2; i += 1) {
4000
+ const left = text.slice(0, Math.floor(text.length / 2) - i);
4001
+ const right = text.slice(Math.ceil(text.length / 2) + i);
4002
+ const truncatedText = left + ellipsis + right;
4003
+ if (context.measureText(left).width + ellipsisWidth + context.measureText(right).width <= maxWidth) {
4004
+ return truncatedText;
4005
+ }
4006
+ }
4007
+ return ellipsis;
4008
+ };
3862
4009
  var truncateText = (text, maxWidth, truncationType, font = `10px ${VIZ_FONT_FAMILY}`) => {
3863
4010
  const canvas = document.createElement("canvas");
3864
4011
  const context = canvas.getContext("2d");
3865
4012
  if (!context) return text;
3866
4013
  context.font = font;
3867
4014
  const ellipsis = "...";
3868
- const ellipsisWidth = context.measureText(ellipsis).width;
3869
4015
  const fullTextWidth = context.measureText(text).width;
3870
4016
  if (fullTextWidth <= maxWidth) {
3871
4017
  return text;
3872
4018
  }
3873
4019
  if (truncationType === "ellipsisEnd") {
3874
- for (let i = text.length - 1; i > 0; i -= 1) {
3875
- const truncatedText = text.slice(0, i) + ellipsis;
3876
- if (context.measureText(truncatedText).width <= maxWidth) {
3877
- return truncatedText;
3878
- }
3879
- }
3880
- } else if (truncationType === "ellipsisStart") {
3881
- for (let i = 0; i < text.length; i += 1) {
3882
- const truncatedText = ellipsis + text.slice(i);
3883
- if (context.measureText(truncatedText).width <= maxWidth) {
3884
- return truncatedText;
3885
- }
3886
- }
3887
- } else if (truncationType === "ellipsisMiddle") {
3888
- for (let i = 0; i < text.length / 2; i += 1) {
3889
- const left = text.slice(0, Math.floor(text.length / 2) - i);
3890
- const right = text.slice(Math.ceil(text.length / 2) + i);
3891
- const truncatedText = left + ellipsis + right;
3892
- if (context.measureText(left).width + ellipsisWidth + context.measureText(right).width <= maxWidth) {
3893
- return truncatedText;
3894
- }
3895
- }
4020
+ return truncateEnd(text, context, maxWidth, ellipsis);
4021
+ }
4022
+ if (truncationType === "ellipsisStart") {
4023
+ return truncateStart(text, context, maxWidth, ellipsis);
4024
+ }
4025
+ if (truncationType === "ellipsisMiddle") {
4026
+ return truncateMiddle(text, context, maxWidth, ellipsis);
3896
4027
  }
3897
4028
  return ellipsis;
3898
4029
  };
@@ -3906,9 +4037,9 @@ __export(d3_force_exports, {
3906
4037
  default: () => d3_force_default
3907
4038
  });
3908
4039
  init_define_global();
3909
- var defaultImport36 = __toESM(require("d3-force"));
4040
+ var defaultImport37 = __toESM(require("d3-force"));
3910
4041
  __reExport(d3_force_exports, require("d3-force"));
3911
- var d3_force_default = "default" in defaultImport36 ? defaultImport36.default : defaultImport36;
4042
+ var d3_force_default = "default" in defaultImport37 ? defaultImport37.default : defaultImport37;
3912
4043
 
3913
4044
  // esm-externals:d3-quadtree
3914
4045
  var d3_quadtree_exports = {};
@@ -3916,9 +4047,9 @@ __export(d3_quadtree_exports, {
3916
4047
  default: () => d3_quadtree_default
3917
4048
  });
3918
4049
  init_define_global();
3919
- var defaultImport37 = __toESM(require("d3-quadtree"));
4050
+ var defaultImport38 = __toESM(require("d3-quadtree"));
3920
4051
  __reExport(d3_quadtree_exports, require("d3-quadtree"));
3921
- var d3_quadtree_default = "default" in defaultImport37 ? defaultImport37.default : defaultImport37;
4052
+ var d3_quadtree_default = "default" in defaultImport38 ? defaultImport38.default : defaultImport38;
3922
4053
 
3923
4054
  // src/NetworkGraph/PureNetworkGraph/utils/networkGraphShared.ts
3924
4055
  init_define_global();
@@ -4117,9 +4248,10 @@ var RECT_TOP_MARGIN = 4;
4117
4248
  var LABEL_FONT_SIZE = 12;
4118
4249
  var FONT = `${LABEL_FONT_SIZE}px ${VIZ_FONT_FAMILY}`;
4119
4250
  var DIM_OPACITY = 0.25;
4120
- var NODE_FOCUS_RING_PADDING = 4;
4251
+ var NODE_FOCUS_RING_GAP = 2;
4121
4252
  var NODE_FOCUS_RING_STROKE_WIDTH = 3;
4122
- var NODE_FOCUS_RING_SCREEN_PADDING = NODE_FOCUS_RING_STROKE_WIDTH / 2;
4253
+ var NODE_FOCUS_RING_PADDING = NODE_FOCUS_RING_GAP + NODE_FOCUS_RING_STROKE_WIDTH / 2;
4254
+ var NODE_FOCUS_RING_OUTER_PADDING = NODE_FOCUS_RING_GAP + NODE_FOCUS_RING_STROKE_WIDTH;
4123
4255
  var MIN_NODE_SPACING = 4;
4124
4256
  var MIN_EDGE_LENGTH = 48;
4125
4257
  var MIN_NODE_CONTAINER_SIZE = DEFAULT_NODE_RADIUS * 2 + MIN_EDGE_LENGTH;
@@ -4141,12 +4273,12 @@ var toFiniteNumberOrFallback = (value, fallback) => {
4141
4273
  return numericValue != null ? numericValue : fallback;
4142
4274
  };
4143
4275
  var getIconRenderInfo = (icon) => {
4144
- var _a;
4276
+ var _a, _b;
4145
4277
  const isIconString = typeof icon === "string";
4146
4278
  const isRelativeIcon = isIconString ? (0, iconUtils_exports.isRelativeUrlPath)(icon) : false;
4147
4279
  let iconUrl = isIconString ? icon : void 0;
4148
- if (iconUrl && isRelativeIcon && typeof window !== "undefined" && ((_a = window.location) == null ? void 0 : _a.origin)) {
4149
- iconUrl = `${window.location.origin}${iconUrl}`;
4280
+ if (iconUrl && isRelativeIcon && ((_b = (_a = globalThis.window) == null ? void 0 : _a.location) == null ? void 0 : _b.origin)) {
4281
+ iconUrl = `${globalThis.window.location.origin}${iconUrl}`;
4150
4282
  }
4151
4283
  const shouldRenderRemoteIcon = !!iconUrl && isIconString && ((0, iconUtils_exports.isRemoteIcon)(iconUrl) || (0, iconUtils_exports.isDataURI)(iconUrl) || isRelativeIcon);
4152
4284
  return { iconUrl, shouldRenderRemoteIcon };
@@ -4160,7 +4292,7 @@ var sanitizeSvgId = (id) => {
4160
4292
  var unsanitizeSvgId = (safeId) => {
4161
4293
  const hex = safeId.startsWith("id_") ? safeId.slice(3) : safeId;
4162
4294
  const pairs = hex.match(/.{1,2}/g) || [];
4163
- const bytes = new Uint8Array(pairs.map((byte) => parseInt(byte, 16)));
4295
+ const bytes = new Uint8Array(pairs.map((byte) => Number.parseInt(byte, 16)));
4164
4296
  const decoder = new TextDecoder();
4165
4297
  return decoder.decode(bytes);
4166
4298
  };
@@ -4530,10 +4662,7 @@ var truncateTextToMaxLines = (text = "", font = `12px ${VIZ_FONT_FAMILY}`, maxWi
4530
4662
  if (fitsOnCurrentLine) {
4531
4663
  currentLineText = lineWithNextWord;
4532
4664
  wordQueue.shift();
4533
- } else if (!isNextWordLongerThanMaxWidth) {
4534
- outputLines.push(currentLineText);
4535
- currentLineText = "";
4536
- } else {
4665
+ } else if (isNextWordLongerThanMaxWidth) {
4537
4666
  const { currentLineWithSplit, remainder } = handleWordSplit(
4538
4667
  context,
4539
4668
  maxWidth,
@@ -4543,6 +4672,9 @@ var truncateTextToMaxLines = (text = "", font = `12px ${VIZ_FONT_FAMILY}`, maxWi
4543
4672
  outputLines.push(currentLineWithSplit);
4544
4673
  currentLineText = "";
4545
4674
  wordQueue[0] = remainder;
4675
+ } else {
4676
+ outputLines.push(currentLineText);
4677
+ currentLineText = "";
4546
4678
  }
4547
4679
  }
4548
4680
  if (currentLineText && outputLines.length < maxLines) {
@@ -4550,7 +4682,7 @@ var truncateTextToMaxLines = (text = "", font = `12px ${VIZ_FONT_FAMILY}`, maxWi
4550
4682
  }
4551
4683
  return outputLines;
4552
4684
  };
4553
- var getNodeBounds = (node, options = {}) => {
4685
+ var getNodeBounds = (node) => {
4554
4686
  var _a, _b;
4555
4687
  if (!node) return void 0;
4556
4688
  if (!Number.isFinite(node.x) || !Number.isFinite(node.y)) return void 0;
@@ -4561,7 +4693,7 @@ var getNodeBounds = (node, options = {}) => {
4561
4693
  const nodeLabelWidth = textWidth + RECT_HORIZONTAL_PADDING * 2;
4562
4694
  const nodeDiameter = (_b = node.size) != null ? _b : DEFAULT_NODE_RADIUS * 2;
4563
4695
  const nodeRadius = nodeDiameter / 2;
4564
- const nodeCircleRadius = options.includeFocusRing ? nodeRadius + NODE_FOCUS_RING_PADDING : nodeRadius;
4696
+ const nodeCircleRadius = nodeRadius;
4565
4697
  const nodeLeft = node.x - Math.max(nodeCircleRadius, nodeLabelWidth / 2);
4566
4698
  const nodeWidth = Math.max(nodeCircleRadius * 2, nodeLabelWidth);
4567
4699
  return {
@@ -4572,15 +4704,25 @@ var getNodeBounds = (node, options = {}) => {
4572
4704
  };
4573
4705
  };
4574
4706
  var getScreenBounds = (node, transform, options = {}) => {
4575
- const bounds = getNodeBounds(node, options);
4707
+ var _a;
4708
+ const bounds = getNodeBounds(node);
4576
4709
  if (!bounds) {
4577
4710
  return null;
4578
4711
  }
4579
- const screenPadding = options.includeFocusRing ? NODE_FOCUS_RING_SCREEN_PADDING : 0;
4580
- const left = bounds.x * transform.k + transform.x - screenPadding;
4581
- const top = bounds.y * transform.k + transform.y - screenPadding;
4582
- const right = bounds.x2 * transform.k + transform.x + screenPadding;
4583
- const bottom = bounds.y2 * transform.k + transform.y + screenPadding;
4712
+ let left = bounds.x * transform.k + transform.x;
4713
+ let top = bounds.y * transform.k + transform.y;
4714
+ let right = bounds.x2 * transform.k + transform.x;
4715
+ let bottom = bounds.y2 * transform.k + transform.y;
4716
+ if (options.includeFocusRing) {
4717
+ const nodeRadius = ((_a = node.size) != null ? _a : DEFAULT_NODE_RADIUS * 2) / 2;
4718
+ const focusRingRadius = (nodeRadius + NODE_FOCUS_RING_OUTER_PADDING) * transform.k;
4719
+ const nodeCenterX = node.x * transform.k + transform.x;
4720
+ const nodeCenterY = node.y * transform.k + transform.y;
4721
+ left = Math.min(left, nodeCenterX - focusRingRadius);
4722
+ top = Math.min(top, nodeCenterY - focusRingRadius);
4723
+ right = Math.max(right, nodeCenterX + focusRingRadius);
4724
+ bottom = Math.max(bottom, nodeCenterY + focusRingRadius);
4725
+ }
4584
4726
  return {
4585
4727
  left,
4586
4728
  top,
@@ -5172,16 +5314,6 @@ init_define_global();
5172
5314
  // src/NetworkGraph/PureNetworkGraph/components/Node.tsx
5173
5315
  init_define_global();
5174
5316
 
5175
- // esm-externals:@splunk/themes
5176
- var themes_exports = {};
5177
- __export(themes_exports, {
5178
- default: () => themes_default
5179
- });
5180
- init_define_global();
5181
- var defaultImport38 = __toESM(require("@splunk/themes"));
5182
- __reExport(themes_exports, require("@splunk/themes"));
5183
- var themes_default = "default" in defaultImport38 ? defaultImport38.default : defaultImport38;
5184
-
5185
5317
  // esm-externals:@splunk/visualizations-shared/RemoteIcon
5186
5318
  var RemoteIcon_exports = {};
5187
5319
  __export(RemoteIcon_exports, {
@@ -5300,11 +5432,13 @@ var NodeCircle = styled_components_default.circle`
5300
5432
  }
5301
5433
  `;
5302
5434
  var NodeFocusRing = styled_components_default.circle`
5303
- fill: none;
5435
+ fill: ${(props) => {
5436
+ var _a;
5437
+ return (_a = props.$backgroundColor) != null ? _a : themes_exports.variables.backgroundColorPage;
5438
+ }};
5304
5439
  stroke: ${themes_exports.variables.focusColor};
5305
5440
  stroke-width: ${NODE_FOCUS_RING_STROKE_WIDTH}px;
5306
5441
  pointer-events: none;
5307
- vector-effect: non-scaling-stroke;
5308
5442
  `;
5309
5443
  var IconElement = (_a) => {
5310
5444
  var _b = _a, { icon } = _b, iconProps = __objRest(_b, ["icon"]);
@@ -5344,7 +5478,8 @@ var Node = (0, react_exports.memo)(function Node2(props) {
5344
5478
  handleAnchor,
5345
5479
  handleRequestClose,
5346
5480
  isDragging = false,
5347
- tabIndex = 0
5481
+ tabIndex = 0,
5482
+ backgroundColor
5348
5483
  } = props;
5349
5484
  const circleRef = (0, react_exports.useRef)(null);
5350
5485
  const truncatedText = truncateTextToMaxLines(label, FONT, MAX_TEXT_WIDTH, 2);
@@ -5370,7 +5505,7 @@ var Node = (0, react_exports.memo)(function Node2(props) {
5370
5505
  return;
5371
5506
  }
5372
5507
  let isMounted = true;
5373
- const loadIcon = () => __async(this, null, function* () {
5508
+ const loadIcon = () => __async(null, null, function* () {
5374
5509
  const loadIconFn = iconLoader_default[builtInIcon];
5375
5510
  if (!loadIconFn) {
5376
5511
  if (isMounted) {
@@ -5395,8 +5530,6 @@ var Node = (0, react_exports.memo)(function Node2(props) {
5395
5530
  };
5396
5531
  }, [builtInIcon]);
5397
5532
  const nodeClickHandler = (0, react_exports.useCallback)(() => {
5398
- var _a2;
5399
- (_a2 = circleRef.current) == null ? void 0 : _a2.focus();
5400
5533
  if (handleNodeClick) {
5401
5534
  handleNodeClick({ id, value, index });
5402
5535
  }
@@ -5468,7 +5601,8 @@ var Node = (0, react_exports.memo)(function Node2(props) {
5468
5601
  r: radius + NODE_FOCUS_RING_PADDING,
5469
5602
  cx: x,
5470
5603
  cy: y,
5471
- opacity
5604
+ opacity,
5605
+ $backgroundColor: backgroundColor
5472
5606
  }
5473
5607
  ), /* @__PURE__ */ react_exports.createElement(
5474
5608
  NodeCircle,
@@ -5761,7 +5895,8 @@ var NetworkGraphSvg = (0, react_exports.memo)(function NetworkGraphSvg2({
5761
5895
  highlightedNode,
5762
5896
  setHighlightedNode = () => void 0,
5763
5897
  isDragging = false,
5764
- activeNodeId
5898
+ activeNodeId,
5899
+ backgroundColor
5765
5900
  }) {
5766
5901
  var _a, _b;
5767
5902
  const graphId = (0, react_exports.useId)();
@@ -5807,8 +5942,10 @@ var NetworkGraphSvg = (0, react_exports.memo)(function NetworkGraphSvg2({
5807
5942
  (0, react_exports.useEffect)(() => {
5808
5943
  if (isReadyToRender) {
5809
5944
  (0, d3_selection_exports.select)(svgRef == null ? void 0 : svgRef.current).selectAll("circle").on("mousedown", (event) => {
5945
+ var _a2, _b2;
5810
5946
  event.stopPropagation();
5811
5947
  handleMouseDown(event);
5948
+ (_b2 = (_a2 = event.currentTarget).focus) == null ? void 0 : _b2.call(_a2);
5812
5949
  });
5813
5950
  }
5814
5951
  }, [handleMouseDown, isReadyToRender, svgRef]);
@@ -5909,7 +6046,8 @@ var NetworkGraphSvg = (0, react_exports.memo)(function NetworkGraphSvg2({
5909
6046
  handleAnchor,
5910
6047
  handleRequestClose,
5911
6048
  isDragging,
5912
- tabIndex: getNodeTabIndex(id)
6049
+ tabIndex: getNodeTabIndex(id),
6050
+ backgroundColor
5913
6051
  }
5914
6052
  );
5915
6053
  }))
@@ -6016,7 +6154,7 @@ var ZoomControls = (0, react_exports.memo)(function ZoomControls2(props) {
6016
6154
  disableZoomOut = false,
6017
6155
  buttonTabIndex
6018
6156
  } = props;
6019
- return /* @__PURE__ */ react_exports.createElement(StyledZoomControlsContainer, { "data-test": "zoom-controls-container" }, !hideZoomControls && /* @__PURE__ */ react_exports.createElement(StyledBaseContainer, { "data-test": "zoom-buttons-container" }, /* @__PURE__ */ react_exports.createElement(Tooltip_default2, { contentRelationship: "label", content: (0, i18n_exports._)("Zoom in") }, /* @__PURE__ */ react_exports.createElement(
6157
+ return /* @__PURE__ */ react_exports.createElement(StyledZoomControlsContainer, { "data-test": "zoom-controls-container" }, !hideZoomControls && /* @__PURE__ */ react_exports.createElement(StyledBaseContainer, { "data-test": "zoom-buttons-container" }, /* @__PURE__ */ react_exports.createElement(Tooltip_default2, { contentRelationship: "label", content: (0, i18n_exports._)("Zoom in"), defaultPlacement: "right" }, /* @__PURE__ */ react_exports.createElement(
6020
6158
  StyledZoomInButton,
6021
6159
  {
6022
6160
  icon: /* @__PURE__ */ react_exports.createElement(Plus_default, null),
@@ -6026,7 +6164,7 @@ var ZoomControls = (0, react_exports.memo)(function ZoomControls2(props) {
6026
6164
  "data-test": "zoom-in-button",
6027
6165
  tabIndex: buttonTabIndex
6028
6166
  }
6029
- )), /* @__PURE__ */ react_exports.createElement(Tooltip_default2, { contentRelationship: "label", content: (0, i18n_exports._)("Zoom out") }, /* @__PURE__ */ react_exports.createElement(
6167
+ )), /* @__PURE__ */ react_exports.createElement(Tooltip_default2, { contentRelationship: "label", content: (0, i18n_exports._)("Zoom out"), defaultPlacement: "right" }, /* @__PURE__ */ react_exports.createElement(
6030
6168
  StyledZoomOutButton,
6031
6169
  {
6032
6170
  icon: /* @__PURE__ */ react_exports.createElement(Minus_default, null),
@@ -6036,7 +6174,7 @@ var ZoomControls = (0, react_exports.memo)(function ZoomControls2(props) {
6036
6174
  "data-test": "zoom-out-button",
6037
6175
  tabIndex: buttonTabIndex
6038
6176
  }
6039
- ))), !hideReset && /* @__PURE__ */ react_exports.createElement(StyledResetContainer, { moveToTop: hideZoomControls, "data-test": "reset-button-container" }, /* @__PURE__ */ react_exports.createElement(Tooltip_default2, { contentRelationship: "label", content: (0, i18n_exports._)("Reset zoom") }, /* @__PURE__ */ react_exports.createElement(
6177
+ ))), !hideReset && /* @__PURE__ */ react_exports.createElement(StyledResetContainer, { moveToTop: hideZoomControls, "data-test": "reset-button-container" }, /* @__PURE__ */ react_exports.createElement(Tooltip_default2, { contentRelationship: "label", content: (0, i18n_exports._)("Reset zoom"), defaultPlacement: "right" }, /* @__PURE__ */ react_exports.createElement(
6040
6178
  StyledButton,
6041
6179
  {
6042
6180
  icon: /* @__PURE__ */ react_exports.createElement(SquareAndCorners_default, null),
@@ -6659,7 +6797,8 @@ var PureNetworkGraph = ({
6659
6797
  highlightedNode,
6660
6798
  setHighlightedNode,
6661
6799
  isDragging: isDragging.dragStarted,
6662
- activeNodeId
6800
+ activeNodeId,
6801
+ backgroundColor
6663
6802
  }
6664
6803
  ))
6665
6804
  );
@@ -7417,7 +7556,7 @@ var config = {
7417
7556
  /**
7418
7557
  * viz name
7419
7558
  */
7420
- name: "NetworkGraph",
7559
+ name: (0, i18n_exports._)("Network graph"),
7421
7560
  category: "Flow" /* FLOW */,
7422
7561
  status: "preview",
7423
7562
  /**