@splunk/visualizations 28.7.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 (375) 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 +56 -0
  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 +251 -143
  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 +6 -1
  69. package/Markdown.config.js.map +2 -2
  70. package/Markdown.js +226 -95
  71. package/Markdown.js.map +3 -3
  72. package/MarkerGauge.js +247 -137
  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 +20 -4
  127. package/RichText/PureRichText/InnerEditor.d.ts.map +1 -1
  128. package/RichText/PureRichText/PureRichText.d.ts +21 -9
  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/useContentSave.d.ts +6 -0
  138. package/RichText/PureRichText/hooks/useContentSave.d.ts.map +1 -1
  139. package/RichText/PureRichText/hooks/useContentSync.d.ts +13 -1
  140. package/RichText/PureRichText/hooks/useContentSync.d.ts.map +1 -1
  141. package/RichText/PureRichText/hooks/useDashboardKeyboardNav.d.ts +2 -7
  142. package/RichText/PureRichText/hooks/useDashboardKeyboardNav.d.ts.map +1 -1
  143. package/RichText/PureRichText/hooks/useEditorSetup.d.ts +8 -4
  144. package/RichText/PureRichText/hooks/useEditorSetup.d.ts.map +1 -1
  145. package/RichText/PureRichText/hooks/useFakeHighlight.d.ts +1 -16
  146. package/RichText/PureRichText/hooks/useFakeHighlight.d.ts.map +1 -1
  147. package/RichText/PureRichText/hooks/useFocusHandlers.d.ts +2 -4
  148. package/RichText/PureRichText/hooks/useFocusHandlers.d.ts.map +1 -1
  149. package/RichText/PureRichText/hooks/useKeyboardShortcuts.d.ts.map +1 -1
  150. package/RichText/PureRichText/hooks/useMouseHandlers.d.ts +3 -7
  151. package/RichText/PureRichText/hooks/useMouseHandlers.d.ts.map +1 -1
  152. package/RichText/PureRichText/hooks/useStepFontSize.d.ts +2 -2
  153. package/RichText/PureRichText/hooks/useStepLineSpacing.d.ts +2 -3
  154. package/RichText/PureRichText/hooks/useStepLineSpacing.d.ts.map +1 -1
  155. package/RichText/PureRichText/hooks/useTokenMap.d.ts +31 -40
  156. package/RichText/PureRichText/hooks/useTokenMap.d.ts.map +1 -1
  157. package/RichText/PureRichText/renderers/ElementRenderer.d.ts +2 -5
  158. package/RichText/PureRichText/renderers/ElementRenderer.d.ts.map +1 -1
  159. package/RichText/PureRichText/renderers/LeafRenderer.d.ts +0 -4
  160. package/RichText/PureRichText/renderers/LeafRenderer.d.ts.map +1 -1
  161. package/RichText/PureRichText/types.d.ts +21 -0
  162. package/RichText/PureRichText/types.d.ts.map +1 -1
  163. package/RichText/PureRichText/utils/slateUtils.d.ts +26 -2
  164. package/RichText/PureRichText/utils/slateUtils.d.ts.map +1 -1
  165. package/RichText/RichText.d.ts +5 -1
  166. package/RichText/RichText.d.ts.map +1 -1
  167. package/RichText/config.d.ts.map +1 -1
  168. package/RichText.config.js +19 -1
  169. package/RichText.config.js.map +2 -2
  170. package/RichText.js +2311 -835
  171. package/RichText.js.map +4 -4
  172. package/Sankey/PureSankey/PureSankey.d.ts +2 -0
  173. package/Sankey/PureSankey/PureSankey.d.ts.map +1 -1
  174. package/Sankey/PureSankey/SankeyLink.d.ts +3 -1
  175. package/Sankey/PureSankey/SankeyLink.d.ts.map +1 -1
  176. package/Sankey/PureSankey/SankeyNode.d.ts +5 -2
  177. package/Sankey/PureSankey/SankeyNode.d.ts.map +1 -1
  178. package/Sankey/PureSankey/SankeyUtils.d.ts.map +1 -1
  179. package/Sankey/Sankey.d.ts +3 -1
  180. package/Sankey/Sankey.d.ts.map +1 -1
  181. package/Sankey.js +508 -219
  182. package/Sankey.js.map +4 -4
  183. package/Scatter.config.js +3 -5
  184. package/Scatter.config.js.map +2 -2
  185. package/Scatter.js +244 -146
  186. package/Scatter.js.map +4 -4
  187. package/SingleValue/SingleValue.d.ts.map +1 -1
  188. package/SingleValue.js +273 -173
  189. package/SingleValue.js.map +4 -4
  190. package/SingleValueBasic.js +4 -4
  191. package/SingleValueBasic.js.map +2 -2
  192. package/SingleValueIcon/SingleValueIcon.d.ts.map +1 -1
  193. package/SingleValueIcon.js +264 -164
  194. package/SingleValueIcon.js.map +4 -4
  195. package/SingleValueRadial.js +267 -167
  196. package/SingleValueRadial.js.map +4 -4
  197. package/SparkLine/SparkLine.d.ts.map +1 -1
  198. package/SparkLine.js.map +2 -2
  199. package/Table/PureTable.d.ts +2 -0
  200. package/Table/PureTable.d.ts.map +1 -1
  201. package/Table/Table.d.ts +2 -5
  202. package/Table/Table.d.ts.map +1 -1
  203. package/Table/config.d.ts.map +1 -1
  204. package/Table/hooks.d.ts.map +1 -1
  205. package/Table.config.js +8 -1
  206. package/Table.config.js.map +2 -2
  207. package/Table.js +374 -270
  208. package/Table.js.map +4 -4
  209. package/Timeline/PureTimeline/PureTimeline.d.ts +6 -5
  210. package/Timeline/PureTimeline/PureTimeline.d.ts.map +1 -1
  211. package/Timeline/PureTimeline/src/CursorPlugin.d.ts +1 -0
  212. package/Timeline/PureTimeline/src/CursorPlugin.d.ts.map +1 -1
  213. package/Timeline/PureTimeline/src/TimelineLegend.d.ts +10 -7
  214. package/Timeline/PureTimeline/src/TimelineLegend.d.ts.map +1 -1
  215. package/Timeline/PureTimeline/src/TimelineTooltip.d.ts +5 -1
  216. package/Timeline/PureTimeline/src/TimelineTooltip.d.ts.map +1 -1
  217. package/Timeline/PureTimeline/src/TimelineUplot.d.ts +19 -2
  218. package/Timeline/PureTimeline/src/TimelineUplot.d.ts.map +1 -1
  219. package/Timeline/PureTimeline/src/TimelineYAxis.d.ts.map +1 -1
  220. package/Timeline/PureTimeline/src/XAxisPlugin.d.ts +1 -0
  221. package/Timeline/PureTimeline/src/XAxisPlugin.d.ts.map +1 -1
  222. package/Timeline/PureTimeline/src/utils/timelineUtils.d.ts +8 -0
  223. package/Timeline/PureTimeline/src/utils/timelineUtils.d.ts.map +1 -1
  224. package/Timeline/Timeline.d.ts +3 -1
  225. package/Timeline/Timeline.d.ts.map +1 -1
  226. package/Timeline.config.js +2 -2
  227. package/Timeline.config.js.map +2 -2
  228. package/Timeline.js +713 -351
  229. package/Timeline.js.map +4 -4
  230. package/Treemap/PureTreemap/components/PureTreemap.d.ts +42 -0
  231. package/Treemap/PureTreemap/components/PureTreemap.d.ts.map +1 -0
  232. package/Treemap/PureTreemap/components/TreemapBreadcrumb.d.ts +10 -0
  233. package/Treemap/PureTreemap/components/TreemapBreadcrumb.d.ts.map +1 -0
  234. package/Treemap/PureTreemap/components/TreemapChildCell.d.ts +28 -0
  235. package/Treemap/PureTreemap/components/TreemapChildCell.d.ts.map +1 -0
  236. package/Treemap/PureTreemap/components/TreemapHeader.d.ts +19 -0
  237. package/Treemap/PureTreemap/components/TreemapHeader.d.ts.map +1 -0
  238. package/Treemap/PureTreemap/components/TreemapHoverTarget.d.ts +17 -0
  239. package/Treemap/PureTreemap/components/TreemapHoverTarget.d.ts.map +1 -0
  240. package/Treemap/PureTreemap/components/TreemapLegend.d.ts +20 -0
  241. package/Treemap/PureTreemap/components/TreemapLegend.d.ts.map +1 -0
  242. package/Treemap/PureTreemap/components/TreemapNode.d.ts +5 -0
  243. package/Treemap/PureTreemap/components/TreemapNode.d.ts.map +1 -0
  244. package/Treemap/PureTreemap/components/TreemapParentNode.d.ts +10 -0
  245. package/Treemap/PureTreemap/components/TreemapParentNode.d.ts.map +1 -0
  246. package/Treemap/PureTreemap/components/TreemapStandaloneNode.d.ts +6 -0
  247. package/Treemap/PureTreemap/components/TreemapStandaloneNode.d.ts.map +1 -0
  248. package/Treemap/PureTreemap/components/TreemapTooltip.d.ts +17 -0
  249. package/Treemap/PureTreemap/components/TreemapTooltip.d.ts.map +1 -0
  250. package/Treemap/PureTreemap/mockdata/data.d.ts +90 -0
  251. package/Treemap/PureTreemap/mockdata/data.d.ts.map +1 -0
  252. package/Treemap/PureTreemap/utils/treemapColorUtils.d.ts +67 -0
  253. package/Treemap/PureTreemap/utils/treemapColorUtils.d.ts.map +1 -0
  254. package/Treemap/PureTreemap/utils/treemapDataColorUtils.d.ts +5 -0
  255. package/Treemap/PureTreemap/utils/treemapDataColorUtils.d.ts.map +1 -0
  256. package/Treemap/PureTreemap/utils/treemapDataUtils.d.ts +14 -0
  257. package/Treemap/PureTreemap/utils/treemapDataUtils.d.ts.map +1 -0
  258. package/Treemap/PureTreemap/utils/treemapLayout.d.ts +49 -0
  259. package/Treemap/PureTreemap/utils/treemapLayout.d.ts.map +1 -0
  260. package/Treemap/PureTreemap/utils/treemapNodeUtils.d.ts +81 -0
  261. package/Treemap/PureTreemap/utils/treemapNodeUtils.d.ts.map +1 -0
  262. package/Treemap/PureTreemap/utils/treemapTypes.d.ts +37 -0
  263. package/Treemap/PureTreemap/utils/treemapTypes.d.ts.map +1 -0
  264. package/Treemap/PureTreemap/utils/treemapUtils.d.ts +76 -0
  265. package/Treemap/PureTreemap/utils/treemapUtils.d.ts.map +1 -0
  266. package/Treemap/Treemap.d.ts +14 -0
  267. package/Treemap/Treemap.d.ts.map +1 -0
  268. package/Treemap/config.d.ts +4 -0
  269. package/Treemap/config.d.ts.map +1 -0
  270. package/Treemap/index.d.ts +3 -0
  271. package/Treemap/index.d.ts.map +1 -0
  272. package/Treemap.config.js +465 -0
  273. package/Treemap.config.js.map +7 -0
  274. package/Treemap.js +6349 -0
  275. package/Treemap.js.map +7 -0
  276. package/common/Charting.js +8 -10
  277. package/common/Charting.js.map +2 -2
  278. package/common/ChartingApi.d.ts.map +1 -1
  279. package/common/ChartingApi.js +5 -2
  280. package/common/ChartingApi.js.map +2 -2
  281. package/common/DocExampleWithVizSandbox.js +3 -3
  282. package/common/DocExampleWithVizSandbox.js.map +2 -2
  283. package/common/GaugeMajorTicks.js.map +2 -2
  284. package/common/GaugeValueMarker.js +1 -0
  285. package/common/GaugeValueMarker.js.map +2 -2
  286. package/common/OptionsDoc.js +1 -1
  287. package/common/OptionsDoc.js.map +2 -2
  288. package/common/OverviewDoc.js +3 -3
  289. package/common/OverviewDoc.js.map +2 -2
  290. package/common/ThemesDoc.js.map +2 -2
  291. package/common/TimeSeriesChartWrapper.js +10 -9
  292. package/common/TimeSeriesChartWrapper.js.map +2 -2
  293. package/common/chartingUtils.d.ts.map +1 -1
  294. package/common/chartingUtils.js +12 -11
  295. package/common/chartingUtils.js.map +2 -2
  296. package/common/components/IconPlaceholder.d.ts.map +1 -1
  297. package/common/docUtils.d.ts.map +1 -1
  298. package/common/docUtils.js +16 -14
  299. package/common/docUtils.js.map +2 -2
  300. package/common/editorConfig/AxesChartDataDisplay.d.ts.map +1 -1
  301. package/common/gaugeUtils.d.ts.map +1 -1
  302. package/common/gaugeUtils.js +11 -5
  303. package/common/gaugeUtils.js.map +2 -2
  304. package/common/hocs/FixedSizeContainer.d.ts.map +1 -1
  305. package/common/hooks/useDynamicHeight.d.ts +67 -0
  306. package/common/hooks/useDynamicHeight.d.ts.map +1 -0
  307. package/common/hooks/useSorting.d.ts.map +1 -1
  308. package/common/interfaces/VizCategory.d.ts +2 -1
  309. package/common/interfaces/VizCategory.d.ts.map +1 -1
  310. package/common/interfaces/VizEvent.d.ts +7 -0
  311. package/common/interfaces/VizEvent.d.ts.map +1 -1
  312. package/common/utils/dataUtils.d.ts.map +1 -1
  313. package/common/utils/dataUtils.js +6 -10
  314. package/common/utils/dataUtils.js.map +2 -2
  315. package/common/utils/featureFlagUtils.js +2 -2
  316. package/common/utils/featureFlagUtils.js.map +2 -2
  317. package/common/utils/focusUtils.js +1 -1
  318. package/common/utils/focusUtils.js.map +2 -2
  319. package/common/utils/mapUtils.d.ts.map +1 -1
  320. package/common/utils/mapUtils.js +14 -18
  321. package/common/utils/mapUtils.js.map +2 -2
  322. package/common/utils/singleValueUtils.js +22 -25
  323. package/common/utils/singleValueUtils.js.map +2 -2
  324. package/common/utils/textUtils.d.ts.map +1 -1
  325. package/common/utils/textUtils.js +37 -23
  326. package/common/utils/textUtils.js.map +2 -2
  327. package/common/utils/trellisUtils.d.ts.map +1 -1
  328. package/common/utils/trellisUtils.js +18 -17
  329. package/common/utils/trellisUtils.js.map +2 -2
  330. package/common/utils/urlUtils.js.map +2 -2
  331. package/common/utils/visualizationTheme.d.ts +15 -0
  332. package/common/utils/visualizationTheme.d.ts.map +1 -0
  333. package/common/utils/visualizationTheme.js +72 -0
  334. package/common/utils/visualizationTheme.js.map +7 -0
  335. package/common/withDashboardViz.d.ts +3 -1
  336. package/common/withDashboardViz.d.ts.map +1 -1
  337. package/common/withDashboardViz.js +216 -105
  338. package/common/withDashboardViz.js.map +4 -4
  339. package/docs-llm/INDEX.md +1 -0
  340. package/docs-llm/area/options.md +84 -84
  341. package/docs-llm/bar/options.md +77 -77
  342. package/docs-llm/bubble/options.md +51 -51
  343. package/docs-llm/choropleth-svg/options.md +5 -5
  344. package/docs-llm/column/options.md +82 -82
  345. package/docs-llm/ellipse/options.md +6 -6
  346. package/docs-llm/events/options.md +6 -6
  347. package/docs-llm/filler-gauge/options.md +16 -16
  348. package/docs-llm/image/options.md +3 -3
  349. package/docs-llm/line/options.md +82 -82
  350. package/docs-llm/link-graph/options.md +16 -16
  351. package/docs-llm/map/options.md +12 -12
  352. package/docs-llm/markdown/options.md +7 -7
  353. package/docs-llm/marker-gauge/options.md +16 -16
  354. package/docs-llm/network-graph/options.md +39 -39
  355. package/docs-llm/parallel-coordinates/options.md +4 -4
  356. package/docs-llm/pie/examples-json.md +195 -0
  357. package/docs-llm/pie/examples-react.md +123 -0
  358. package/docs-llm/pie/options.md +23 -23
  359. package/docs-llm/process-tree/options.md +23 -22
  360. package/docs-llm/punchcard/options.md +23 -23
  361. package/docs-llm/pure-rich-text/options.md +6 -5
  362. package/docs-llm/rectangle/options.md +9 -9
  363. package/docs-llm/rich-text/options.md +6 -5
  364. package/docs-llm/sankey/options.md +9 -9
  365. package/docs-llm/scatter/options.md +57 -57
  366. package/docs-llm/single-value/options.md +39 -39
  367. package/docs-llm/single-value-icon/options.md +33 -33
  368. package/docs-llm/single-value-radial/options.md +31 -31
  369. package/docs-llm/table/options.md +14 -13
  370. package/docs-llm/timeline/options.md +17 -17
  371. package/docs-llm/treemap/examples-json.md +5 -0
  372. package/docs-llm/treemap/examples-react.md +5 -0
  373. package/docs-llm/treemap/options.md +26 -0
  374. package/docs-llm/treemap/overview.md +27 -0
  375. package/package.json +31 -30
package/Sankey.js CHANGED
@@ -355,7 +355,10 @@ var useSortingParams = ({ requestParams, onRequestParamsChange }) => {
355
355
  onSort = (e, { sortKey, sortDir }) => {
356
356
  if (typeof sortKey === "string") {
357
357
  const nextSortDir = (0, lodash_exports.has)(nextSortDirMap, sortDir) ? nextSortDirMap[sortDir] : "none";
358
- onRequestParamsChange(__spreadValues(__spreadValues({}, requestParams), { offset: 0, sort: { [sortKey]: nextSortDir } }));
358
+ onRequestParamsChange(__spreadProps(__spreadValues({}, requestParams), {
359
+ offset: 0,
360
+ sort: { [sortKey]: nextSortDir }
361
+ }));
359
362
  } else {
360
363
  onRequestParamsChange(requestParams);
361
364
  }
@@ -499,7 +502,7 @@ var Cover = styled_components_default.div`
499
502
  bottom: 0;
500
503
  `;
501
504
  var Blocker = styled_components_default.div.attrs({
502
- "data-splunk-visualization-version": "28.7.0 - d7b18cab6"
505
+ "data-splunk-visualization-version": "28.9.0 - 96b03188d"
503
506
  })`
504
507
  position: relative;
505
508
  width: 100%;
@@ -525,14 +528,23 @@ var defaultImport20 = __toESM(require("@splunk/themes/variables"));
525
528
  __reExport(variables_exports, require("@splunk/themes/variables"));
526
529
  var variables_default = "default" in defaultImport20 ? defaultImport20.default : defaultImport20;
527
530
 
531
+ // esm-externals:@splunk/themes
532
+ var themes_exports = {};
533
+ __export(themes_exports, {
534
+ default: () => themes_default
535
+ });
536
+ var defaultImport21 = __toESM(require("@splunk/themes"));
537
+ __reExport(themes_exports, require("@splunk/themes"));
538
+ var themes_default = "default" in defaultImport21 ? defaultImport21.default : defaultImport21;
539
+
528
540
  // esm-externals:@splunk/visualizations-shared/style
529
541
  var style_exports = {};
530
542
  __export(style_exports, {
531
543
  default: () => style_default
532
544
  });
533
- var defaultImport21 = __toESM(require("@splunk/visualizations-shared/style"));
545
+ var defaultImport22 = __toESM(require("@splunk/visualizations-shared/style"));
534
546
  __reExport(style_exports, require("@splunk/visualizations-shared/style"));
535
- var style_default = "default" in defaultImport21 ? defaultImport21.default : defaultImport21;
547
+ var style_default = "default" in defaultImport22 ? defaultImport22.default : defaultImport22;
536
548
 
537
549
  // src/common/hocs/FixedSizeContainer.tsx
538
550
  var Item = styled_components_default.div.attrs(({ width }) => ({
@@ -589,7 +601,7 @@ var withFixedSizeContainer = (Viz) => {
589
601
  FixSizeItem,
590
602
  {
591
603
  "data-test": "fix-size-item",
592
- "data-splunk-visualization-version": "28.7.0 - d7b18cab6",
604
+ "data-splunk-visualization-version": "28.9.0 - 96b03188d",
593
605
  width,
594
606
  height,
595
607
  backgroundColor
@@ -610,6 +622,14 @@ var shouldShowIconPlaceholder = (dataSources, loading = false) => {
610
622
  const noFields = fields === void 0;
611
623
  return loading || noData || noFields;
612
624
  };
625
+ var PlaceholderContainer = styled_components_default.div`
626
+ /* The inline token color wins when supported. Older browsers discard an
627
+ unsupported oklch value and retain this inherited fallback instead. */
628
+ color: ${(0, themes_exports.pick)({
629
+ dark: "#fafafa",
630
+ light: "#2c2c2c"
631
+ })};
632
+ `;
613
633
  var IconPlaceholder = (props) => {
614
634
  const {
615
635
  width = SplunkVisualization_default.defaults.width,
@@ -624,7 +644,6 @@ var IconPlaceholder = (props) => {
624
644
  style: {
625
645
  left: "50%",
626
646
  top: "50%",
627
- color: iconColor,
628
647
  opacity: 0.15,
629
648
  position: "absolute",
630
649
  transform: "translate(-50%, -50%)"
@@ -634,7 +653,14 @@ var IconPlaceholder = (props) => {
634
653
  "data-test": "icon-placeholder"
635
654
  });
636
655
  }
637
- return /* @__PURE__ */ react_exports.createElement("div", { style: { width, height, background: backgroundColor } }, content);
656
+ return /* @__PURE__ */ react_exports.createElement(
657
+ PlaceholderContainer,
658
+ {
659
+ "data-test": "icon-placeholder-container",
660
+ style: { width, height, background: backgroundColor, color: iconColor }
661
+ },
662
+ content
663
+ );
638
664
  };
639
665
  var IconPlaceholder_default = FixedSizeContainer_default(IconPlaceholder);
640
666
 
@@ -680,9 +706,9 @@ var numberUtils_exports = {};
680
706
  __export(numberUtils_exports, {
681
707
  default: () => numberUtils_default
682
708
  });
683
- var defaultImport22 = __toESM(require("@splunk/visualizations-shared/numberUtils"));
709
+ var defaultImport23 = __toESM(require("@splunk/visualizations-shared/numberUtils"));
684
710
  __reExport(numberUtils_exports, require("@splunk/visualizations-shared/numberUtils"));
685
- var numberUtils_default = "default" in defaultImport22 ? defaultImport22.default : defaultImport22;
711
+ var numberUtils_default = "default" in defaultImport23 ? defaultImport23.default : defaultImport23;
686
712
 
687
713
  // src/common/utils/dataUtils.ts
688
714
  var getFieldName = (field) => typeof field === "string" ? field : field.name;
@@ -708,7 +734,7 @@ var largestTriangleThreeBuckets = (data, threshold, preferredDownsampleIndices)
708
734
  let avgY = 0;
709
735
  let avgRangeStart = Math.floor((i + 1) * every) + 1;
710
736
  let avgRangeEnd = Math.floor((i + 2) * every) + 1;
711
- avgRangeEnd = avgRangeEnd < dataLength ? avgRangeEnd : dataLength;
737
+ avgRangeEnd = Math.min(avgRangeEnd, dataLength);
712
738
  const avgRangeLength = avgRangeEnd - avgRangeStart;
713
739
  for (; avgRangeStart < avgRangeEnd; avgRangeStart++) {
714
740
  avgX += Number(data[avgRangeStart][0]);
@@ -743,9 +769,9 @@ var largestTriangleThreeBuckets = (data, threshold, preferredDownsampleIndices)
743
769
  };
744
770
  var strictlyCoerceYColumn = (column, options) => {
745
771
  const isNullCoercionEnabled = options.nullValueDisplay === "zero";
746
- const canLooselyCoerceSomeValues = column.findIndex(
772
+ const canLooselyCoerceSomeValues = column.some(
747
773
  (value) => (0, numberUtils_exports.startsWithNumber)(`${value}`) || isNullCoercionEnabled && value === null
748
- ) >= 0;
774
+ );
749
775
  const coercedColumn = [];
750
776
  const canDownsampleColumn = !column.some((value) => {
751
777
  const coercedValue = Number(value);
@@ -764,7 +790,7 @@ var strictlyCoerceYColumn = (column, options) => {
764
790
  };
765
791
  var strictlyCoerceXColumn = (column, fieldType) => {
766
792
  if (fieldType === "number") {
767
- const coercedXColumn = column.map((xValue) => Number(xValue));
793
+ const coercedXColumn = column.map(Number);
768
794
  if (isColumnStrictlyIncreasing(coercedXColumn, fieldType)) {
769
795
  return coercedXColumn;
770
796
  }
@@ -1063,16 +1089,16 @@ var FeatureFlags_exports = {};
1063
1089
  __export(FeatureFlags_exports, {
1064
1090
  default: () => FeatureFlags_default
1065
1091
  });
1066
- var defaultImport23 = __toESM(require("@splunk/visualization-context/FeatureFlags"));
1092
+ var defaultImport24 = __toESM(require("@splunk/visualization-context/FeatureFlags"));
1067
1093
  __reExport(FeatureFlags_exports, require("@splunk/visualization-context/FeatureFlags"));
1068
- var FeatureFlags_default = "default" in defaultImport23 ? defaultImport23.default : defaultImport23;
1094
+ var FeatureFlags_default = "default" in defaultImport24 ? defaultImport24.default : defaultImport24;
1069
1095
 
1070
1096
  // src/common/utils/featureFlagUtils.ts
1071
1097
  var getFeatureFlag = (context, flagName) => {
1072
- if (context && Object.keys(context).find((key) => key === flagName)) {
1098
+ if (context && Object.keys(context).includes(flagName)) {
1073
1099
  return context[flagName];
1074
1100
  }
1075
- if (Object.keys(FeatureFlags_default).find((key) => key === flagName)) {
1101
+ if (Object.keys(FeatureFlags_default).includes(flagName)) {
1076
1102
  return FeatureFlags_default[flagName];
1077
1103
  }
1078
1104
  return false;
@@ -1083,9 +1109,9 @@ var trellisUtils_exports = {};
1083
1109
  __export(trellisUtils_exports, {
1084
1110
  default: () => trellisUtils_default
1085
1111
  });
1086
- var defaultImport24 = __toESM(require("@splunk/visualizations-shared/trellisUtils"));
1112
+ var defaultImport25 = __toESM(require("@splunk/visualizations-shared/trellisUtils"));
1087
1113
  __reExport(trellisUtils_exports, require("@splunk/visualizations-shared/trellisUtils"));
1088
- var trellisUtils_default = "default" in defaultImport24 ? defaultImport24.default : defaultImport24;
1114
+ var trellisUtils_default = "default" in defaultImport25 ? defaultImport25.default : defaultImport25;
1089
1115
 
1090
1116
  // src/common/utils/trellisUtils.ts
1091
1117
  var turnOffLegendDisplayWhenTrellisIsOn = (isTrellisOn, options) => {
@@ -1102,9 +1128,9 @@ var visualization_canvas_exports = {};
1102
1128
  __export(visualization_canvas_exports, {
1103
1129
  default: () => visualization_canvas_default
1104
1130
  });
1105
- var defaultImport25 = __toESM(require("@splunk/visualization-canvas"));
1131
+ var defaultImport26 = __toESM(require("@splunk/visualization-canvas"));
1106
1132
  __reExport(visualization_canvas_exports, require("@splunk/visualization-canvas"));
1107
- var visualization_canvas_default = "default" in defaultImport25 ? defaultImport25.default : defaultImport25;
1133
+ var visualization_canvas_default = "default" in defaultImport26 ? defaultImport26.default : defaultImport26;
1108
1134
 
1109
1135
  // src/common/components/VizStyleWrapper.jsx
1110
1136
  var VizStyleWrapper = styled_components_default.div.attrs(({ dataTestKey }) => ({
@@ -1126,27 +1152,27 @@ var Triangle_exports = {};
1126
1152
  __export(Triangle_exports, {
1127
1153
  default: () => Triangle_default
1128
1154
  });
1129
- var defaultImport26 = __toESM(require("@splunk/react-icons/Triangle"));
1155
+ var defaultImport27 = __toESM(require("@splunk/react-icons/Triangle"));
1130
1156
  __reExport(Triangle_exports, require("@splunk/react-icons/Triangle"));
1131
- var Triangle_default = "default" in defaultImport26 ? defaultImport26.default : defaultImport26;
1157
+ var Triangle_default = "default" in defaultImport27 ? defaultImport27.default : defaultImport27;
1132
1158
 
1133
1159
  // esm-externals:@splunk/visualizations-shared/propUtils
1134
1160
  var propUtils_exports = {};
1135
1161
  __export(propUtils_exports, {
1136
1162
  default: () => propUtils_default
1137
1163
  });
1138
- var defaultImport27 = __toESM(require("@splunk/visualizations-shared/propUtils"));
1164
+ var defaultImport28 = __toESM(require("@splunk/visualizations-shared/propUtils"));
1139
1165
  __reExport(propUtils_exports, require("@splunk/visualizations-shared/propUtils"));
1140
- var propUtils_default = "default" in defaultImport27 ? defaultImport27.default : defaultImport27;
1166
+ var propUtils_default = "default" in defaultImport28 ? defaultImport28.default : defaultImport28;
1141
1167
 
1142
1168
  // esm-externals:@splunk/visualizations-shared/simpleXMLOptions
1143
1169
  var simpleXMLOptions_exports = {};
1144
1170
  __export(simpleXMLOptions_exports, {
1145
1171
  default: () => simpleXMLOptions_default
1146
1172
  });
1147
- var defaultImport28 = __toESM(require("@splunk/visualizations-shared/simpleXMLOptions"));
1173
+ var defaultImport29 = __toESM(require("@splunk/visualizations-shared/simpleXMLOptions"));
1148
1174
  __reExport(simpleXMLOptions_exports, require("@splunk/visualizations-shared/simpleXMLOptions"));
1149
- var simpleXMLOptions_default = "default" in defaultImport28 ? defaultImport28.default : defaultImport28;
1175
+ var simpleXMLOptions_default = "default" in defaultImport29 ? defaultImport29.default : defaultImport29;
1150
1176
 
1151
1177
  // src/common/chartingUtils.ts
1152
1178
  var DEFAULT_LINE_WIDTH = 2;
@@ -1185,9 +1211,9 @@ var shouldEnableSearchZoom = (eventHandlers = [], xField = "") => {
1185
1211
  const xAxisIsTime = xField === "_time";
1186
1212
  return !!rangeSelectEventHandler && xAxisIsTime;
1187
1213
  };
1188
- var canvasSupportedTimeSeriesCharts = ["splunk.line", "splunk.area"];
1214
+ var canvasSupportedTimeSeriesCharts = /* @__PURE__ */ new Set(["splunk.line", "splunk.area"]);
1189
1215
  var isTimeSeriesCanvasRenderSupported = (vizConfigKey) => {
1190
- return canvasSupportedTimeSeriesCharts.includes(vizConfigKey);
1216
+ return canvasSupportedTimeSeriesCharts.has(vizConfigKey);
1191
1217
  };
1192
1218
  var filterChartDataFromInternalFields = (chartData) => {
1193
1219
  const { fields, columns } = chartData;
@@ -1203,7 +1229,7 @@ var filterChartDataFromInternalFields = (chartData) => {
1203
1229
  return { fields: filteredFields, columns: filteredColumns };
1204
1230
  };
1205
1231
  var convert2DArrayToNumbers = (arr) => {
1206
- return arr.map((subArray) => subArray.map((element) => parseFloat(element)));
1232
+ return arr.map((subArray) => subArray.map((element) => Number.parseFloat(element)));
1207
1233
  };
1208
1234
  var parseAxisValue = (val) => {
1209
1235
  if (val === void 0 || val === null || val === "auto" || val === "") {
@@ -1241,6 +1267,7 @@ var getLegend = (props) => {
1241
1267
  return (0, visualization_canvas_exports.TopLegendFactory)(__spreadValues({
1242
1268
  wrap: true
1243
1269
  }, commonLegendProps));
1270
+ // Note: By default, use right legend
1244
1271
  default:
1245
1272
  return (0, visualization_canvas_exports.SideLegendFactory)(__spreadValues({}, commonLegendProps));
1246
1273
  }
@@ -1373,10 +1400,10 @@ var getSeriesOverrides = (opts) => {
1373
1400
  let spanGaps;
1374
1401
  if (nullValueMode === "gaps") {
1375
1402
  spanGaps = false;
1376
- } else if (nullValueMode != null) {
1377
- spanGaps = true;
1378
- } else {
1403
+ } else if (nullValueMode == null) {
1379
1404
  spanGaps = void 0;
1405
+ } else {
1406
+ spanGaps = true;
1380
1407
  }
1381
1408
  const replaceNullsWithZero = nullValueMode === "zero" ? true : void 0;
1382
1409
  const isAreaChart = type === "area";
@@ -1449,9 +1476,9 @@ var visualization_schemas_exports = {};
1449
1476
  __export(visualization_schemas_exports, {
1450
1477
  default: () => visualization_schemas_default
1451
1478
  });
1452
- var defaultImport29 = __toESM(require("@splunk/visualization-schemas"));
1479
+ var defaultImport30 = __toESM(require("@splunk/visualization-schemas"));
1453
1480
  __reExport(visualization_schemas_exports, require("@splunk/visualization-schemas"));
1454
- var visualization_schemas_default = "default" in defaultImport29 ? defaultImport29.default : defaultImport29;
1481
+ var visualization_schemas_default = "default" in defaultImport30 ? defaultImport30.default : defaultImport30;
1455
1482
 
1456
1483
  // src/common/hooks/useTrellisEnabled.ts
1457
1484
  var useTrellisFeatureFlagOn = () => {
@@ -1816,11 +1843,11 @@ var TimeSeriesChartWrapper = (props) => {
1816
1843
  y2AxisMajorUnitFromSimpleXML,
1817
1844
  y2AxisMajorTickInterval
1818
1845
  );
1819
- const xAxisMajorTickSizeNum = xAxisMajorTickSize != null ? Number(xAxisMajorTickSize) : void 0;
1820
- const yAxisMajorTickSizeNum = yAxisMajorTickSize != null ? Number(yAxisMajorTickSize) : void 0;
1821
- const y2AxisMajorTickSizeNum = y2AxisMajorTickSize != null ? Number(y2AxisMajorTickSize) : void 0;
1822
- const yAxisMinorTickSizeNum = yAxisMinorTickSize != null ? Number(yAxisMinorTickSize) : void 0;
1823
- const y2AxisMinorTickSizeNum = y2AxisMinorTickSize != null ? Number(y2AxisMinorTickSize) : void 0;
1846
+ const xAxisMajorTickSizeNum = xAxisMajorTickSize == null ? void 0 : Number(xAxisMajorTickSize);
1847
+ const yAxisMajorTickSizeNum = yAxisMajorTickSize == null ? void 0 : Number(yAxisMajorTickSize);
1848
+ const y2AxisMajorTickSizeNum = y2AxisMajorTickSize == null ? void 0 : Number(y2AxisMajorTickSize);
1849
+ const yAxisMinorTickSizeNum = yAxisMinorTickSize == null ? void 0 : Number(yAxisMinorTickSize);
1850
+ const y2AxisMinorTickSizeNum = y2AxisMinorTickSize == null ? void 0 : Number(y2AxisMinorTickSize);
1824
1851
  const areaOpacityForCanvas = getAreaOpacityForCanvas(areaOpacity);
1825
1852
  const seriesColors = seriesColorsStr ? JSON.parse(seriesColorsStr) : void 0;
1826
1853
  const seriesColorsByField = fieldColors ? JSON.parse(fieldColors) : void 0;
@@ -2232,6 +2259,76 @@ var buildEventCallbackProps = (supportedEvents, evaluatedOptionsToUse, onEventTr
2232
2259
  });
2233
2260
  return result;
2234
2261
  };
2262
+ var buildAllEventCallbackProps = (events, evaluatedOptionsToUse, onEventTrigger, { supportsEvents, hasEventHandlers, mode }) => {
2263
+ if (!supportsEvents) return {};
2264
+ const defaultEvents = {};
2265
+ const userEvents = {};
2266
+ Object.entries(events || {}).forEach(([eventKey, eventConfig]) => {
2267
+ (eventConfig.source === "default" ? defaultEvents : userEvents)[eventKey] = eventConfig;
2268
+ });
2269
+ const userProps = hasEventHandlers && mode === "view" ? buildEventCallbackProps(userEvents, evaluatedOptionsToUse, onEventTrigger) : {};
2270
+ return __spreadValues(__spreadValues({}, userProps), buildEventCallbackProps(defaultEvents, evaluatedOptionsToUse, onEventTrigger));
2271
+ };
2272
+ var applyContextTimezone = (localeContext) => {
2273
+ if (localeContext.serializedTimezone && !moment_default.getDefaultSplunkTimezone()) {
2274
+ moment_default.setDefaultSplunkTimezone(localeContext.serializedTimezone);
2275
+ }
2276
+ };
2277
+ var getAsyncOptionsEvaluationParams = ({
2278
+ visualizationID,
2279
+ props,
2280
+ optionsToEvaluate,
2281
+ downsampledDataSources,
2282
+ vizConfig,
2283
+ bypassCloneDeepOptionScope,
2284
+ lazyLoadingDataFrame
2285
+ }) => {
2286
+ return {
2287
+ visualizationID,
2288
+ props,
2289
+ options: __spreadValues({}, optionsToEvaluate),
2290
+ dataSources: downsampledDataSources,
2291
+ theme: vizConfig.themes,
2292
+ bypassCloneDeepOptionScope,
2293
+ lazyLoadingDataFrame
2294
+ };
2295
+ };
2296
+ var evaluateOptionsSync = ({
2297
+ optionsToEvaluate,
2298
+ downsampledDataSources,
2299
+ dataSourcesInState,
2300
+ dataFramesInState,
2301
+ setDataSourcesInState,
2302
+ setDataFramesInState,
2303
+ computeDataFrames,
2304
+ featureFlagContext,
2305
+ themeFunc
2306
+ }) => {
2307
+ let dataFrames = dataFramesInState;
2308
+ if (downsampledDataSources !== dataSourcesInState) {
2309
+ setDataSourcesInState(downsampledDataSources);
2310
+ dataFrames = Options_exports.Options.dataFrameFromDataSource(
2311
+ downsampledDataSources,
2312
+ getFeatureFlag(featureFlagContext, "visualizations_lazyLoadingDataFrame")
2313
+ );
2314
+ setDataFramesInState(dataFrames);
2315
+ }
2316
+ let mergedFrames = dataFrames;
2317
+ if (computeDataFrames && dataFrames) {
2318
+ const derivedFrames = computeDataFrames({
2319
+ dataSources: downsampledDataSources,
2320
+ options: optionsToEvaluate.options
2321
+ });
2322
+ mergedFrames = __spreadValues(__spreadValues({}, dataFrames), derivedFrames);
2323
+ }
2324
+ return Options_exports.Options.evaluate(
2325
+ optionsToEvaluate,
2326
+ downsampledDataSources,
2327
+ themeFunc,
2328
+ mergedFrames,
2329
+ getFeatureFlag(featureFlagContext, "visualizations_bypassCloneDeepOptionScope")
2330
+ );
2331
+ };
2235
2332
  var withDashboardViz = (opts) => {
2236
2333
  const {
2237
2334
  ReactViz,
@@ -2263,11 +2360,7 @@ var withDashboardViz = (opts) => {
2263
2360
  onRequestParamsChange = lodash_exports.noop
2264
2361
  } = props;
2265
2362
  const localeContext = react_exports.useContext(TimezoneContext_default);
2266
- if (localeContext.serializedTimezone) {
2267
- if (!moment_default.getDefaultSplunkTimezone()) {
2268
- moment_default.setDefaultSplunkTimezone(localeContext.serializedTimezone);
2269
- }
2270
- }
2363
+ applyContextTimezone(localeContext);
2271
2364
  const themeFunc = (themeVar) => {
2272
2365
  var _a2, _b;
2273
2366
  return (_b = (_a2 = vizConfig.themes)[themeVar]) == null ? void 0 : _b.call(_a2, props);
@@ -2295,7 +2388,12 @@ var withDashboardViz = (opts) => {
2295
2388
  featureFlagContext == null ? void 0 : featureFlagContext.visualizations_enableAcceleratedRender
2296
2389
  );
2297
2390
  const isAcceleratedRenderOn = isAcceleratedRenderFeatureFlagOn && isTimeSeriesCanvasRenderSupported(vizConfig.key) && (options == null ? void 0 : options.acceleratedRender) === true;
2298
- const isMounted = react_exports.useRef(true);
2391
+ const bypassCloneDeepOptionScope = Boolean(
2392
+ getFeatureFlag(featureFlagContext, "visualizations_bypassCloneDeepOptionScope")
2393
+ );
2394
+ const lazyLoadingDataFrame = Boolean(
2395
+ getFeatureFlag(featureFlagContext, "visualizations_lazyLoadingDataFrame")
2396
+ );
2299
2397
  const optionsToEvaluate = react_exports.useMemo(() => {
2300
2398
  var _a2;
2301
2399
  const legendDisplay = turnOffLegendDisplayWhenTrellisIsOn(isTrellisOn, options);
@@ -2334,63 +2432,74 @@ var withDashboardViz = (opts) => {
2334
2432
  threshold,
2335
2433
  isDownsamplingEnabled
2336
2434
  });
2337
- evaluatedOptions = useDeepMemo(() => {
2435
+ const asyncOptionsEvaluationParams = useDeepMemo(
2436
+ () => getAsyncOptionsEvaluationParams({
2437
+ visualizationID,
2438
+ props,
2439
+ optionsToEvaluate,
2440
+ downsampledDataSources,
2441
+ vizConfig,
2442
+ bypassCloneDeepOptionScope,
2443
+ lazyLoadingDataFrame
2444
+ }),
2445
+ [
2446
+ visualizationID,
2447
+ optionsToEvaluate,
2448
+ downsampledDataSources,
2449
+ vizConfig,
2450
+ bypassCloneDeepOptionScope,
2451
+ lazyLoadingDataFrame,
2452
+ currentThemeFamily,
2453
+ currentThemeColorScheme,
2454
+ currentThemeDensity,
2455
+ localeContext.serializedTimezone
2456
+ ]
2457
+ );
2458
+ react_exports.useEffect(() => {
2459
+ if (!useAsyncEvaluatedOptions) {
2460
+ return void 0;
2461
+ }
2462
+ let ownsEvaluation = true;
2338
2463
  try {
2339
- if (useAsyncEvaluatedOptions) {
2340
- const asyncDynamicOptionsEvaluatorParams = {
2341
- visualizationID,
2342
- props,
2343
- options: optionsToEvaluate,
2344
- dataSources: downsampledDataSources,
2345
- theme: vizConfig.themes,
2346
- bypassCloneDeepOptionScope: Boolean(
2347
- getFeatureFlag(featureFlagContext, "visualizations_bypassCloneDeepOptionScope")
2348
- ),
2349
- lazyLoadingDataFrame: Boolean(
2350
- getFeatureFlag(featureFlagContext, "visualizations_lazyLoadingDataFrame")
2351
- )
2352
- };
2353
- async_dynamic_options_evaluator_default.evaluate(asyncDynamicOptionsEvaluatorParams).then((results) => {
2464
+ async_dynamic_options_evaluator_default.evaluate(asyncOptionsEvaluationParams).then((results) => {
2465
+ if (ownsEvaluation) {
2354
2466
  setEvaluatedOptionsAsync(results.results);
2355
- }).catch(() => {
2356
- if (isMounted.current) {
2357
- setUseAsyncEvaluatedOptions(false);
2358
- }
2359
- });
2360
- } else {
2361
- let dataFrames = dataFramesInState;
2362
- if (downsampledDataSources !== dataSourcesInState) {
2363
- setDataSourcesInState(downsampledDataSources);
2364
- dataFrames = Options_exports.Options.dataFrameFromDataSource(
2365
- downsampledDataSources,
2366
- getFeatureFlag(featureFlagContext, "visualizations_lazyLoadingDataFrame")
2367
- );
2368
- setDataFramesInState(dataFrames);
2369
2467
  }
2370
- let mergedFrames = dataFrames;
2371
- if (computeDataFrames && dataFrames) {
2372
- const derivedFrames = computeDataFrames({
2373
- dataSources: downsampledDataSources,
2374
- options: optionsToEvaluate.options
2375
- });
2376
- mergedFrames = __spreadValues(__spreadValues({}, dataFrames), derivedFrames);
2468
+ }).catch(() => {
2469
+ if (ownsEvaluation) {
2470
+ setUseAsyncEvaluatedOptions(false);
2377
2471
  }
2378
- const result = Options_exports.Options.evaluate(
2379
- optionsToEvaluate,
2380
- downsampledDataSources,
2381
- themeFunc,
2382
- mergedFrames,
2383
- getFeatureFlag(featureFlagContext, "visualizations_bypassCloneDeepOptionScope")
2384
- );
2385
- return result;
2472
+ });
2473
+ } catch (e) {
2474
+ setUseAsyncEvaluatedOptions(false);
2475
+ }
2476
+ return () => {
2477
+ ownsEvaluation = false;
2478
+ async_dynamic_options_evaluator_default.reset(visualizationID);
2479
+ };
2480
+ }, [asyncOptionsEvaluationParams, useAsyncEvaluatedOptions, visualizationID]);
2481
+ evaluatedOptions = useDeepMemo(() => {
2482
+ try {
2483
+ if (useAsyncEvaluatedOptions) {
2484
+ return {};
2386
2485
  }
2486
+ return evaluateOptionsSync({
2487
+ optionsToEvaluate,
2488
+ downsampledDataSources,
2489
+ dataSourcesInState,
2490
+ dataFramesInState,
2491
+ setDataSourcesInState,
2492
+ setDataFramesInState,
2493
+ computeDataFrames,
2494
+ featureFlagContext,
2495
+ themeFunc
2496
+ });
2387
2497
  } catch (e) {
2388
2498
  if (e instanceof Error) {
2389
2499
  console.error(`unexpected error evaluating options: ${e.message}`);
2390
2500
  }
2391
2501
  return {};
2392
2502
  }
2393
- return {};
2394
2503
  }, [
2395
2504
  currentThemeFamily,
2396
2505
  currentThemeColorScheme,
@@ -2400,7 +2509,7 @@ var withDashboardViz = (opts) => {
2400
2509
  localeContext.serializedTimezone,
2401
2510
  useAsyncEvaluatedOptions
2402
2511
  ]);
2403
- const evaluatedOptionsToUse = !useAsyncEvaluatedOptions ? evaluatedOptions : evaluatedOptionsAsync;
2512
+ const evaluatedOptionsToUse = useAsyncEvaluatedOptions ? evaluatedOptionsAsync : evaluatedOptions;
2404
2513
  let dataSourceMetadata = {};
2405
2514
  const OptionKey = "paginateDataSourceKey";
2406
2515
  const optsKey = (0, lodash_exports.has)(evaluatedOptionsToUse, OptionKey) && evaluatedOptionsToUse[OptionKey];
@@ -2422,7 +2531,7 @@ var withDashboardViz = (opts) => {
2422
2531
  sortParams,
2423
2532
  paginatorParams
2424
2533
  };
2425
- if (vizConfig.supports.indexOf("page-and-sort" /* PAGE_AND_SORT */) === -1 && !(0, lodash_exports.has)(dataSources, paginateDataSourceKey)) {
2534
+ if (!vizConfig.supports.includes("page-and-sort" /* PAGE_AND_SORT */) && !(0, lodash_exports.has)(dataSources, paginateDataSourceKey)) {
2426
2535
  dataSourceMetadata = {};
2427
2536
  }
2428
2537
  const clonedEvaluatedOptions = __spreadValues({}, evaluatedOptionsToUse);
@@ -2432,14 +2541,6 @@ var withDashboardViz = (opts) => {
2432
2541
  react_exports.useEffect(() => {
2433
2542
  onComputedProps(clonedEvaluatedOptions);
2434
2543
  });
2435
- react_exports.useEffect(() => {
2436
- return () => {
2437
- if (useAsyncEvaluatedOptions) {
2438
- isMounted.current = false;
2439
- async_dynamic_options_evaluator_default.reset(visualizationID);
2440
- }
2441
- };
2442
- }, []);
2443
2544
  const { requiredProps = [], supports } = vizConfig;
2444
2545
  const missing = missingKeys(requiredProps, evaluatedOptionsToUse);
2445
2546
  if (missing.length > 0 && supports.includes("placeholder" /* PLACEHOLDER */) && vizConfig.key !== "splunk.singlevalue") {
@@ -2454,7 +2555,16 @@ var withDashboardViz = (opts) => {
2454
2555
  }
2455
2556
  );
2456
2557
  }
2457
- const eventCallbackProps = hasEventHandlers && mode === "view" && vizConfig.supports.includes("events" /* EVENTS */) ? buildEventCallbackProps(vizConfig.events, evaluatedOptionsToUse, onEventTrigger) : {};
2558
+ const eventCallbackProps = buildAllEventCallbackProps(
2559
+ vizConfig.events,
2560
+ evaluatedOptionsToUse,
2561
+ onEventTrigger,
2562
+ {
2563
+ supportsEvents: vizConfig.supports.includes("events" /* EVENTS */),
2564
+ hasEventHandlers,
2565
+ mode
2566
+ }
2567
+ );
2458
2568
  const computedVizProps = computeVizProps2(__spreadProps(__spreadValues(__spreadProps(__spreadValues(__spreadValues({}, props), evaluatedOptionsToUse), {
2459
2569
  // Align option transformation with the actual renderer selected below.
2460
2570
  // This prevents canvas-only option preservation from leaking into Highcharts mode.
@@ -2482,8 +2592,9 @@ var withDashboardViz = (opts) => {
2482
2592
  onEventTrigger: SplunkVisualization_default.defaults.onEventTrigger
2483
2593
  });
2484
2594
  DashboardViz.config = vizConfig;
2485
- return (0, styled_components_exports.withTheme)(
2486
- withPlaceholder_default(withEditModeCover_default(DashboardViz, disableEditModeCover), useIconPlaceholder)
2595
+ return Object.assign(
2596
+ (0, styled_components_exports.withTheme)(withPlaceholder_default(withEditModeCover_default(DashboardViz, disableEditModeCover), useIconPlaceholder)),
2597
+ { config: vizConfig }
2487
2598
  );
2488
2599
  };
2489
2600
  var withDashboardViz_default = withDashboardViz;
@@ -2493,36 +2604,36 @@ var visualization_color_palettes_exports = {};
2493
2604
  __export(visualization_color_palettes_exports, {
2494
2605
  default: () => visualization_color_palettes_default
2495
2606
  });
2496
- var defaultImport30 = __toESM(require("@splunk/visualization-color-palettes"));
2607
+ var defaultImport31 = __toESM(require("@splunk/visualization-color-palettes"));
2497
2608
  __reExport(visualization_color_palettes_exports, require("@splunk/visualization-color-palettes"));
2498
- var visualization_color_palettes_default = "default" in defaultImport30 ? defaultImport30.default : defaultImport30;
2609
+ var visualization_color_palettes_default = "default" in defaultImport31 ? defaultImport31.default : defaultImport31;
2499
2610
 
2500
2611
  // esm-externals:d3-interpolate
2501
2612
  var d3_interpolate_exports = {};
2502
2613
  __export(d3_interpolate_exports, {
2503
2614
  default: () => d3_interpolate_default
2504
2615
  });
2505
- var defaultImport31 = __toESM(require("d3-interpolate"));
2616
+ var defaultImport32 = __toESM(require("d3-interpolate"));
2506
2617
  __reExport(d3_interpolate_exports, require("d3-interpolate"));
2507
- var d3_interpolate_default = "default" in defaultImport31 ? defaultImport31.default : defaultImport31;
2618
+ var d3_interpolate_default = "default" in defaultImport32 ? defaultImport32.default : defaultImport32;
2508
2619
 
2509
2620
  // esm-externals:d3-array
2510
2621
  var d3_array_exports = {};
2511
2622
  __export(d3_array_exports, {
2512
2623
  default: () => d3_array_default
2513
2624
  });
2514
- var defaultImport32 = __toESM(require("d3-array"));
2625
+ var defaultImport33 = __toESM(require("d3-array"));
2515
2626
  __reExport(d3_array_exports, require("d3-array"));
2516
- var d3_array_default = "default" in defaultImport32 ? defaultImport32.default : defaultImport32;
2627
+ var d3_array_default = "default" in defaultImport33 ? defaultImport33.default : defaultImport33;
2517
2628
 
2518
2629
  // esm-externals:d3-collection
2519
2630
  var d3_collection_exports = {};
2520
2631
  __export(d3_collection_exports, {
2521
2632
  default: () => d3_collection_default
2522
2633
  });
2523
- var defaultImport33 = __toESM(require("d3-collection"));
2634
+ var defaultImport34 = __toESM(require("d3-collection"));
2524
2635
  __reExport(d3_collection_exports, require("d3-collection"));
2525
- var d3_collection_default = "default" in defaultImport33 ? defaultImport33.default : defaultImport33;
2636
+ var d3_collection_default = "default" in defaultImport34 ? defaultImport34.default : defaultImport34;
2526
2637
 
2527
2638
  // src/Sankey/PureSankey/lib/sankey.js
2528
2639
  var d3_sankey = function() {
@@ -2908,18 +3019,18 @@ var d3_scale_exports = {};
2908
3019
  __export(d3_scale_exports, {
2909
3020
  default: () => d3_scale_default
2910
3021
  });
2911
- var defaultImport34 = __toESM(require("d3-scale"));
3022
+ var defaultImport35 = __toESM(require("d3-scale"));
2912
3023
  __reExport(d3_scale_exports, require("d3-scale"));
2913
- var d3_scale_default = "default" in defaultImport34 ? defaultImport34.default : defaultImport34;
3024
+ var d3_scale_default = "default" in defaultImport35 ? defaultImport35.default : defaultImport35;
2914
3025
 
2915
3026
  // esm-externals:@splunk/visualization-encoding/utils/types
2916
3027
  var types_exports = {};
2917
3028
  __export(types_exports, {
2918
3029
  default: () => types_default
2919
3030
  });
2920
- var defaultImport35 = __toESM(require("@splunk/visualization-encoding/utils/types"));
3031
+ var defaultImport36 = __toESM(require("@splunk/visualization-encoding/utils/types"));
2921
3032
  __reExport(types_exports, require("@splunk/visualization-encoding/utils/types"));
2922
- var types_default = "default" in defaultImport35 ? defaultImport35.default : defaultImport35;
3033
+ var types_default = "default" in defaultImport36 ? defaultImport36.default : defaultImport36;
2923
3034
 
2924
3035
  // src/Sankey/PureSankey/SankeyUtils.ts
2925
3036
  var insertNodeIfNotExist = (sankeyData, nodeName) => {
@@ -2930,7 +3041,7 @@ var insertNodeIfNotExist = (sankeyData, nodeName) => {
2930
3041
  return;
2931
3042
  }
2932
3043
  nodeName = nodeName.trim();
2933
- if (!nodes.find((node) => node.name.toLocaleLowerCase() === nodeName.toLocaleLowerCase())) {
3044
+ if (!nodes.some((node) => node.name.toLocaleLowerCase() === nodeName.toLocaleLowerCase())) {
2934
3045
  nodes.push({ name: nodeName });
2935
3046
  }
2936
3047
  };
@@ -3046,10 +3157,14 @@ var extractLinkMidPoint = (pathStr) => {
3046
3157
  const points = [];
3047
3158
  points.push(section1.split(",").map((i) => Number.parseFloat(i)));
3048
3159
  const point2Arr = section2.split(" ");
3049
- points.push(point2Arr[point2Arr.length - 1].split(",").map((i) => Number.parseFloat(i)));
3050
- points.push(section3.split(",").map((i) => Number.parseFloat(i)));
3160
+ points.push(
3161
+ point2Arr.at(-1).split(",").map((i) => Number.parseFloat(i)),
3162
+ section3.split(",").map((i) => Number.parseFloat(i))
3163
+ );
3051
3164
  const point4Arr = section4.split(" ");
3052
- points.push(point4Arr[point4Arr.length - 1].split(",").map((i) => Number.parseFloat(i)));
3165
+ points.push(
3166
+ point4Arr.at(-1).split(",").map((i) => Number.parseFloat(i))
3167
+ );
3053
3168
  const width = Math.abs(points[0][0] - points[1][0]) / 2;
3054
3169
  const x = Math.min(points[0][0], points[1][0]) + width;
3055
3170
  const height = Math.abs(points[0][1] - points[2][1]) / 2;
@@ -3172,23 +3287,126 @@ var computeNodeLabelWidths = (nodes, nodeWidth, chartWidth) => {
3172
3287
  return widthMap;
3173
3288
  };
3174
3289
 
3290
+ // src/common/utils/textUtils.ts
3291
+ var VIZ_FONT_FAMILY = "'Splunk Platform Sans', 'Splunk Data Sans', Roboto, Droid, 'Helvetica Neue', Helvetica, Arial, sans-serif";
3292
+ var truncateEnd = (text, context, maxWidth, ellipsis) => {
3293
+ for (let i = text.length - 1; i > 0; i -= 1) {
3294
+ const truncatedText = text.slice(0, i) + ellipsis;
3295
+ if (context.measureText(truncatedText).width <= maxWidth) {
3296
+ return truncatedText;
3297
+ }
3298
+ }
3299
+ return ellipsis;
3300
+ };
3301
+ var truncateStart = (text, context, maxWidth, ellipsis) => {
3302
+ for (let i = 0; i < text.length; i += 1) {
3303
+ const truncatedText = ellipsis + text.slice(i);
3304
+ if (context.measureText(truncatedText).width <= maxWidth) {
3305
+ return truncatedText;
3306
+ }
3307
+ }
3308
+ return ellipsis;
3309
+ };
3310
+ var truncateMiddle = (text, context, maxWidth, ellipsis) => {
3311
+ const ellipsisWidth = context.measureText(ellipsis).width;
3312
+ for (let i = 0; i < text.length / 2; i += 1) {
3313
+ const left = text.slice(0, Math.floor(text.length / 2) - i);
3314
+ const right = text.slice(Math.ceil(text.length / 2) + i);
3315
+ const truncatedText = left + ellipsis + right;
3316
+ if (context.measureText(left).width + ellipsisWidth + context.measureText(right).width <= maxWidth) {
3317
+ return truncatedText;
3318
+ }
3319
+ }
3320
+ return ellipsis;
3321
+ };
3322
+ var truncateText = (text, maxWidth, truncationType, font = `10px ${VIZ_FONT_FAMILY}`) => {
3323
+ const canvas = document.createElement("canvas");
3324
+ const context = canvas.getContext("2d");
3325
+ if (!context) return text;
3326
+ context.font = font;
3327
+ const ellipsis = "...";
3328
+ const fullTextWidth = context.measureText(text).width;
3329
+ if (fullTextWidth <= maxWidth) {
3330
+ return text;
3331
+ }
3332
+ if (truncationType === "ellipsisEnd") {
3333
+ return truncateEnd(text, context, maxWidth, ellipsis);
3334
+ }
3335
+ if (truncationType === "ellipsisStart") {
3336
+ return truncateStart(text, context, maxWidth, ellipsis);
3337
+ }
3338
+ if (truncationType === "ellipsisMiddle") {
3339
+ return truncateMiddle(text, context, maxWidth, ellipsis);
3340
+ }
3341
+ return ellipsis;
3342
+ };
3343
+
3175
3344
  // src/Sankey/PureSankey/SankeyNode.tsx
3176
3345
  var NODE_VALUE_PRECISION = 2;
3177
3346
  var MIN_NODE_HEIGHT_FOR_LABEL_DISPLAY = 24;
3178
3347
  var LABEL_LINE_HEIGHT = 16;
3179
3348
  var MAX_LABEL_LINES = 3;
3180
- var getNodeOpacity = (nodeIndex, activeNodes) => {
3349
+ var LABEL_FONT = `12px ${DEFAULT_FONT_FAMILY}`;
3350
+ var packWordsIntoLines = (words, context, maxWidthPx, maxLines) => {
3351
+ const lines = [];
3352
+ let currentLine = "";
3353
+ let wordIndex = 0;
3354
+ while (wordIndex < words.length && lines.length < maxLines) {
3355
+ const word = words[wordIndex];
3356
+ const candidate = currentLine ? `${currentLine} ${word}` : word;
3357
+ if (currentLine && context.measureText(candidate).width > maxWidthPx) {
3358
+ lines.push(currentLine);
3359
+ currentLine = "";
3360
+ } else {
3361
+ currentLine = candidate;
3362
+ wordIndex += 1;
3363
+ }
3364
+ }
3365
+ if (currentLine) lines.push(currentLine);
3366
+ return { lines, wordIndex };
3367
+ };
3368
+ var wrapTextToLines = (text, maxWidthPx, maxLines) => {
3369
+ if (!text) return [""];
3370
+ if (maxWidthPx <= 0) return [truncateText(text, maxWidthPx, "ellipsisEnd", LABEL_FONT)];
3371
+ const canvas = document.createElement("canvas");
3372
+ const context = canvas.getContext("2d");
3373
+ if (!context) return [text];
3374
+ context.font = LABEL_FONT;
3375
+ const words = text.split(" ");
3376
+ const { lines, wordIndex } = packWordsIntoLines(words, context, maxWidthPx, maxLines);
3377
+ if (lines.length === maxLines && wordIndex < words.length) {
3378
+ lines[maxLines - 1] = `${lines[maxLines - 1]} ${words.slice(wordIndex).join(" ")}`;
3379
+ }
3380
+ const result = lines.length ? lines : [text];
3381
+ return result.map((line) => truncateText(line, maxWidthPx, "ellipsisEnd", LABEL_FONT));
3382
+ };
3383
+ var getNodeOpacity = (nodeIndex, activeNodes, inactiveOpacity) => {
3181
3384
  if (!(activeNodes == null ? void 0 : activeNodes.length)) {
3182
3385
  return DEFAULT_NODE_OPACITY;
3183
3386
  }
3184
3387
  const isActiveNode = activeNodes.find((node) => node.index === nodeIndex);
3185
- return isActiveNode ? DEFAULT_NODE_OPACITY : INACTIVE_OPACITY;
3388
+ return isActiveNode ? DEFAULT_NODE_OPACITY : inactiveOpacity;
3186
3389
  };
3187
3390
  var getNodeHeight = (node) => {
3188
3391
  return node.dy < 0 ? 1 : node.dy;
3189
3392
  };
3393
+ var getNodeLabelValueText = (showValues, labelDisplay, nodeValueFormatted, nodePercentFormatted, unit) => {
3394
+ if (!showValues) {
3395
+ return "";
3396
+ }
3397
+ switch (labelDisplay) {
3398
+ case "values":
3399
+ return `${unit}${nodeValueFormatted}`;
3400
+ case "percentage":
3401
+ return nodePercentFormatted;
3402
+ case "valuesAndPercentage":
3403
+ return `${nodePercentFormatted} ${unit}${nodeValueFormatted}`;
3404
+ default:
3405
+ return "";
3406
+ }
3407
+ };
3190
3408
  var NodeGroup = styled_components_default.g`
3191
- opacity: ${(props) => getNodeOpacity(props.node.index, props.activeNodes)};
3409
+ opacity: ${(props) => getNodeOpacity(props.node.index, props.activeNodes, props.inactiveOpacity)};
3192
3410
  &:hover {
3193
3411
  cursor: pointer;
3194
3412
  }
@@ -3197,10 +3415,50 @@ NodeGroup.displayName = "NodeGroup";
3197
3415
  var NodeRect = styled_components_default.rect`
3198
3416
  fill: ${(props) => typeof props.colorCategoryMapping === "function" ? props.colorCategoryMapping(props.node.name) : DEFAULT_NODE_COLOR};
3199
3417
  `;
3418
+ var OneCdLabelTspan = styled_components_default.tspan`
3419
+ /* Loki's Chromium 90 does not support the 1CD oklch colors. */
3420
+ fill: ${(0, themes_exports.pick)({
3421
+ dark: "#fafafa",
3422
+ light: "#2c2c2c"
3423
+ })};
3424
+ @supports (color: oklch(0 0 0)) {
3425
+ fill: ${themes_exports.variables.contentColorActive};
3426
+ }
3427
+ font-family: ${themes_exports.variables.fontFamily};
3428
+ font-size: ${themes_exports.variables.fontSizeSmall};
3429
+ font-style: normal;
3430
+ font-weight: ${themes_exports.variables.fontWeightSemiBold};
3431
+ line-height: ${themes_exports.variables.lineHeightComfortable};
3432
+
3433
+ /* Use directional shadows instead of WebKit text stroke so the outline
3434
+ remains subtle and renders consistently in Storybook and Loki. */
3435
+ text-shadow:
3436
+ -1px 0 ${themes_exports.variables.contentColorInverted},
3437
+ 1px 0 ${themes_exports.variables.contentColorInverted},
3438
+ 0 -1px ${themes_exports.variables.contentColorInverted},
3439
+ 0 1px ${themes_exports.variables.contentColorInverted};
3440
+ `;
3441
+ var SankeyNodeLabelLines = ({ lines, textX, firstLineCenterY, isSplunk1cd }) => lines.map((line, i) => {
3442
+ const sharedProps = {
3443
+ key: i,
3444
+ x: textX,
3445
+ y: i === 0 ? firstLineCenterY : void 0,
3446
+ dy: i === 0 ? "0.35em" : LABEL_LINE_HEIGHT,
3447
+ "data-test": line.dataTest
3448
+ };
3449
+ return isSplunk1cd ? (
3450
+ // eslint-disable-next-line react/jsx-key
3451
+ /* @__PURE__ */ react_exports.createElement(OneCdLabelTspan, __spreadProps(__spreadValues({}, sharedProps), { opacity: line.opacity }), line.text)
3452
+ ) : (
3453
+ // eslint-disable-next-line react/jsx-key
3454
+ /* @__PURE__ */ react_exports.createElement("tspan", __spreadProps(__spreadValues({}, sharedProps), { fill: line.fill, opacity: line.opacity }), line.text)
3455
+ );
3456
+ });
3200
3457
  var SankeyNode = ({
3201
3458
  node,
3202
3459
  activeNodes,
3203
3460
  nodeWidth,
3461
+ inactiveOpacity = INACTIVE_OPACITY,
3204
3462
  handleMouseOver = () => {
3205
3463
  },
3206
3464
  handleMouseLeave = () => {
@@ -3215,6 +3473,7 @@ var SankeyNode = ({
3215
3473
  {
3216
3474
  node,
3217
3475
  activeNodes,
3476
+ inactiveOpacity,
3218
3477
  className: "node",
3219
3478
  key: `node-${node.index}`,
3220
3479
  "data-test": `node-${node.index}`,
@@ -3245,7 +3504,9 @@ var SankeyNodeLabel = ({
3245
3504
  nodeValueColor,
3246
3505
  maxNode,
3247
3506
  labelDisplay: labelDisplayInput,
3248
- unit
3507
+ unit,
3508
+ isSplunk1cd = false,
3509
+ inactiveOpacity = INACTIVE_OPACITY
3249
3510
  }) => {
3250
3511
  const labelDisplay = labelDisplayInput != null ? labelDisplayInput : "off";
3251
3512
  let nodeValueFormatted = "";
@@ -3266,99 +3527,68 @@ var SankeyNodeLabel = ({
3266
3527
  const totalLinesAvailable = Math.min(MAX_LABEL_LINES + (showValues ? 1 : 0), totalLinesFromHeight);
3267
3528
  const valueLinesNeeded = showValues ? 1 : 0;
3268
3529
  const nameLinesAvailable = Math.min(MAX_LABEL_LINES, Math.max(1, totalLinesAvailable - valueLinesNeeded));
3269
- const contentLines = nameLinesAvailable + (showValues ? 1 : 0);
3270
- const minContentHeight = contentLines * LABEL_LINE_HEIGHT;
3271
- const foHeight = Math.max(nodeHeight, minContentHeight);
3272
- const foY = (nodeHeight - foHeight) / 2;
3273
- const foX = isLeftSide ? nodeWidth + LABEL_PADDING : -(labelWidth + LABEL_PADDING);
3274
- const foWidth = Math.max(0, labelWidth);
3275
- let valueText = "";
3530
+ const labelWidthPx = Math.max(0, labelWidth);
3531
+ const textX = node.x + (isLeftSide ? nodeWidth + LABEL_PADDING : -LABEL_PADDING);
3532
+ const textAnchor = isLeftSide ? "start" : "end";
3533
+ const valueText = getNodeLabelValueText(
3534
+ showValues,
3535
+ labelDisplay,
3536
+ nodeValueFormatted,
3537
+ nodePercentFormatted,
3538
+ unit
3539
+ );
3540
+ if (labelWidthPx <= 0) return null;
3541
+ const nameLines = wrapTextToLines(node.name, labelWidthPx, nameLinesAvailable);
3542
+ const truncatedValueText = valueText ? truncateText(valueText, labelWidthPx, "ellipsisEnd", LABEL_FONT) : "";
3543
+ const lines = nameLines.map((line) => ({ text: line, fill: nodeTextColor }));
3276
3544
  if (showValues) {
3277
- if (labelDisplay === "values") valueText = `${unit}${nodeValueFormatted}`;
3278
- else if (labelDisplay === "percentage") valueText = nodePercentFormatted;
3279
- else if (labelDisplay === "valuesAndPercentage")
3280
- valueText = `${nodePercentFormatted} ${unit}${nodeValueFormatted}`;
3545
+ lines.push({
3546
+ text: truncatedValueText,
3547
+ fill: nodeValueColor || nodeTextColor,
3548
+ opacity: isSplunk1cd ? 0.8 : 0.82,
3549
+ dataTest: `node-label-${node.index}`
3550
+ });
3281
3551
  }
3282
- const textAlign = isLeftSide ? "left" : "right";
3283
- const baseTextStyle = {
3284
- fontSize: "12px",
3285
- fontFamily: DEFAULT_FONT_FAMILY,
3286
- letterSpacing: "0.02em",
3287
- lineHeight: `${LABEL_LINE_HEIGHT}px`,
3288
- margin: 0,
3289
- padding: 0
3290
- };
3291
- if (foWidth <= 0) return null;
3552
+ const totalLines = lines.length;
3553
+ const firstLineCenterY = node.y + nodeHeight / 2 - (totalLines - 1) * LABEL_LINE_HEIGHT / 2;
3292
3554
  return /* @__PURE__ */ react_exports.createElement(
3293
- "foreignObject",
3555
+ "text",
3294
3556
  {
3295
- x: node.x + foX,
3296
- y: node.y + foY,
3297
- width: foWidth,
3298
- height: foHeight,
3299
- opacity: getNodeOpacity(node.index, activeNodes),
3300
- style: { pointerEvents: "none", overflow: "visible" }
3557
+ "data-test": `node-text-${node.index}`,
3558
+ textAnchor,
3559
+ style: { fontSize: "12px", fontFamily: DEFAULT_FONT_FAMILY, letterSpacing: "0.02em" },
3560
+ opacity: isSplunk1cd ? void 0 : getNodeOpacity(node.index, activeNodes, inactiveOpacity),
3561
+ pointerEvents: "none"
3301
3562
  },
3302
3563
  /* @__PURE__ */ react_exports.createElement(
3303
- "div",
3564
+ SankeyNodeLabelLines,
3304
3565
  {
3305
- "data-test": `node-text-${node.index}`,
3306
- style: {
3307
- display: "flex",
3308
- flexDirection: "column",
3309
- justifyContent: "center",
3310
- height: "100%",
3311
- overflow: "hidden",
3312
- textAlign,
3313
- pointerEvents: "none"
3314
- }
3315
- },
3316
- /* @__PURE__ */ react_exports.createElement(
3317
- "div",
3318
- {
3319
- style: __spreadProps(__spreadValues({}, baseTextStyle), {
3320
- color: nodeTextColor,
3321
- display: "-webkit-box",
3322
- WebkitLineClamp: nameLinesAvailable,
3323
- WebkitBoxOrient: "vertical",
3324
- overflow: "hidden",
3325
- wordBreak: "break-word"
3326
- })
3327
- },
3328
- node.name
3329
- ),
3330
- showValues && /* @__PURE__ */ react_exports.createElement(
3331
- "div",
3332
- {
3333
- "data-test": `node-label-${node.index}`,
3334
- style: __spreadProps(__spreadValues({}, baseTextStyle), {
3335
- color: nodeValueColor || nodeTextColor,
3336
- opacity: 0.82,
3337
- overflow: "hidden",
3338
- textOverflow: "ellipsis",
3339
- whiteSpace: "nowrap"
3340
- })
3341
- },
3342
- valueText
3343
- )
3566
+ lines,
3567
+ textX,
3568
+ firstLineCenterY,
3569
+ isSplunk1cd
3570
+ }
3344
3571
  )
3345
3572
  );
3346
3573
  };
3347
3574
  var SankeyNode_default = SankeyNode;
3348
3575
 
3349
3576
  // src/Sankey/PureSankey/SankeyLink.tsx
3350
- var getLinkFill = (link, colorCategoryMapping, colorMode) => {
3577
+ var getLinkFill = (link, colorCategoryMapping, colorMode, gradientId) => {
3578
+ if (gradientId) {
3579
+ return `url(#${gradientId})`;
3580
+ }
3351
3581
  if (colorMode === "categorical") {
3352
3582
  return colorCategoryMapping ? colorCategoryMapping(link.source.name) : DEFAULT_LINK_COLOR;
3353
3583
  }
3354
3584
  return (colorCategoryMapping == null ? void 0 : colorCategoryMapping[link.index]) || DEFAULT_LINK_COLOR;
3355
3585
  };
3356
- var getLinkOpacity = (link, activeLinks, linkOpacity) => {
3586
+ var getLinkOpacity = (link, activeLinks, linkOpacity, inactiveOpacity) => {
3357
3587
  if (!(activeLinks == null ? void 0 : activeLinks.length)) {
3358
3588
  return linkOpacity;
3359
3589
  }
3360
3590
  const isActiveLink = activeLinks.find((l) => l.id === link.id);
3361
- return isActiveLink ? linkOpacity : INACTIVE_OPACITY;
3591
+ return isActiveLink ? linkOpacity : inactiveOpacity;
3362
3592
  };
3363
3593
  var StyledSankeyLink = styled_components_default.g`
3364
3594
  &:hover {
@@ -3370,7 +3600,9 @@ var SankeyLink = ({
3370
3600
  colorCategoryMapping,
3371
3601
  activeLinks,
3372
3602
  linkOpacity,
3603
+ inactiveOpacity = INACTIVE_OPACITY,
3373
3604
  colorMode,
3605
+ gradientId,
3374
3606
  path,
3375
3607
  handleLinkClick,
3376
3608
  handleMouseOver = () => {
@@ -3387,8 +3619,8 @@ var SankeyLink = ({
3387
3619
  key: link.id,
3388
3620
  id: link.id,
3389
3621
  "data-test": link.id,
3390
- fill: getLinkFill(link, colorCategoryMapping, colorMode),
3391
- opacity: getLinkOpacity(link, activeLinks, linkOpacity),
3622
+ fill: getLinkFill(link, colorCategoryMapping, colorMode, gradientId),
3623
+ opacity: getLinkOpacity(link, activeLinks, linkOpacity, inactiveOpacity),
3392
3624
  onClick: linkClickHandler,
3393
3625
  onMouseOver: handleMouseOver,
3394
3626
  onMouseLeave: (ev) => {
@@ -3421,9 +3653,9 @@ var Popover_exports = {};
3421
3653
  __export(Popover_exports, {
3422
3654
  default: () => Popover_default
3423
3655
  });
3424
- var defaultImport36 = __toESM(require("@splunk/react-ui/Popover"));
3656
+ var defaultImport37 = __toESM(require("@splunk/react-ui/Popover"));
3425
3657
  __reExport(Popover_exports, require("@splunk/react-ui/Popover"));
3426
- var Popover_default = "default" in defaultImport36 ? defaultImport36.default : defaultImport36;
3658
+ var Popover_default = "default" in defaultImport37 ? defaultImport37.default : defaultImport37;
3427
3659
 
3428
3660
  // src/Sankey/PureSankey/SankeyTooltip.tsx
3429
3661
  var DEFAULT_PLACEMENT = "below";
@@ -3604,6 +3836,19 @@ var SankeyTooltip = ({
3604
3836
  };
3605
3837
  var SankeyTooltip_default = SankeyTooltip;
3606
3838
 
3839
+ // src/common/utils/visualizationTheme.ts
3840
+ var getVisualizationThemeFamily = ({ theme }) => {
3841
+ var _a;
3842
+ if (theme == null ? void 0 : theme.visualizationThemeFamily) {
3843
+ return theme.visualizationThemeFamily;
3844
+ }
3845
+ if (((_a = theme == null ? void 0 : theme.splunkThemeV1) == null ? void 0 : _a.customizer) === themes_exports.unstable_splunk1cdThemeCustomizer) {
3846
+ return "splunk-1cd";
3847
+ }
3848
+ return getSettingsFromThemedProps_default({ theme }).family;
3849
+ };
3850
+ var isSplunk1cdTheme = (props) => getVisualizationThemeFamily(props) === "splunk-1cd";
3851
+
3607
3852
  // src/Sankey/PureSankey/PureSankey.tsx
3608
3853
  var DEFAULT_FONT_FAMILY = '"Splunk Platform Sans", "Proxima Nova", "Helvetica Neue", Helvetica, Arial, sans-serif';
3609
3854
  var DEFAULT_NODE_COLOR = "#909090";
@@ -3612,6 +3857,8 @@ var DEFAULT_SERIES_COLOR = visualization_color_palettes_exports.VIZ_CATEGORICAL;
3612
3857
  var DEFAULT_LINK_OPACITY = 0.5;
3613
3858
  var DEFAULT_NODE_OPACITY = 1;
3614
3859
  var INACTIVE_OPACITY = 0.05;
3860
+ var ONE_CD_INACTIVE_OPACITY = 0.15;
3861
+ var getInactiveOpacity = (isSplunk1cd) => isSplunk1cd ? ONE_CD_INACTIVE_OPACITY : INACTIVE_OPACITY;
3615
3862
  var CHART_MIN_WIDTH = 300;
3616
3863
  var CHART_MIN_HEIGHT = 200;
3617
3864
  var DEFAULT_CHART_WIDTH = 600;
@@ -3621,6 +3868,8 @@ var DEFAULT_TARGET_INDEX = 1;
3621
3868
  var DEFAULT_LINK_VALUE_INDEX = 2;
3622
3869
  var MARGIN = { top: 17, right: 25, bottom: 17, left: 30 };
3623
3870
  var TRANSLATE_POS = { x: 28, y: 17 };
3871
+ var ONE_CD_GRADIENT_START_OFFSET = "0.16%";
3872
+ var ONE_CD_GRADIENT_END_OFFSET = "99.85%";
3624
3873
  var SankeyContainer = styled_components_default.div`
3625
3874
  overflow: hidden;
3626
3875
  ${(props) => (0, style_exports.toDimension)((0, lodash_exports.pick)(props, ["width", "height"]))};
@@ -3650,6 +3899,10 @@ var PureSankey = ({
3650
3899
  onNodeClick = lodash_exports.noop,
3651
3900
  onLinkClick = lodash_exports.noop
3652
3901
  }) => {
3902
+ const theme = (0, styled_components_exports.useTheme)();
3903
+ const isSplunk1cd = isSplunk1cdTheme({ theme });
3904
+ const inactiveOpacity = getInactiveOpacity(isSplunk1cd);
3905
+ const gradientIdPrefix = react_exports.useMemo(() => (0, id_exports.createDOMID)("sankey-gradient"), []);
3653
3906
  const [containerWidth, setContainerWidth] = react_exports.useState(Number(width));
3654
3907
  const [containerHeight, setContainerHeight] = react_exports.useState(Number(height));
3655
3908
  const cachedHandleResize = react_exports.useCallback((w, h) => {
@@ -3733,8 +3986,8 @@ var PureSankey = ({
3733
3986
  if (sankeyContainerElement == null ? void 0 : sankeyContainerElement.current) {
3734
3987
  const w = sankeyContainerElement.current.getBoundingClientRect().width;
3735
3988
  const h = sankeyContainerElement.current.getBoundingClientRect().height;
3736
- const sWidth = checkDigitsOnly(width) ? parseInt(width, 10) : w;
3737
- const sHeight = checkDigitsOnly(height) ? parseInt(height, 10) : h;
3989
+ const sWidth = checkDigitsOnly(width) ? Number.parseInt(width, 10) : w;
3990
+ const sHeight = checkDigitsOnly(height) ? Number.parseInt(height, 10) : h;
3738
3991
  setSankeyWidth(sWidth - MARGIN.left - MARGIN.right);
3739
3992
  setSankeyHeight(sHeight - MARGIN.top - MARGIN.bottom);
3740
3993
  }
@@ -3772,6 +4025,15 @@ var PureSankey = ({
3772
4025
  });
3773
4026
  const maxNode = getMaxNode(sankeyData.nodes);
3774
4027
  const nodeLabelWidths = computeNodeLabelWidths(sankeyData.nodes, nodeWidth, sankeyWidth);
4028
+ const useOneCdGradients = isSplunk1cd && colorMode === "categorical";
4029
+ const getGradientId = (link) => useOneCdGradients && link.source.index !== link.target.index ? `${gradientIdPrefix}-${link.source.index}-${link.target.index}-${link.index}` : void 0;
4030
+ const getNodeColor = (node) => {
4031
+ if (typeof colorCategoryMapping === "function") {
4032
+ const color = colorCategoryMapping(node.name);
4033
+ return typeof color === "string" ? color : DEFAULT_LINK_COLOR;
4034
+ }
4035
+ return DEFAULT_LINK_COLOR;
4036
+ };
3775
4037
  const renderLinks = (links) => {
3776
4038
  return links.map((link) => /* @__PURE__ */ react_exports.createElement(
3777
4039
  SankeyLink_default,
@@ -3779,11 +4041,13 @@ var PureSankey = ({
3779
4041
  link,
3780
4042
  activeLinks,
3781
4043
  linkOpacity,
4044
+ inactiveOpacity,
3782
4045
  path,
3783
4046
  key: getLinkId(link),
3784
4047
  "data-test": getLinkId(link),
3785
4048
  colorCategoryMapping,
3786
4049
  colorMode,
4050
+ gradientId: getGradientId(link),
3787
4051
  handleMouseOver: (ev) => {
3788
4052
  setActiveLinks([link]);
3789
4053
  setActiveNodes([link.source, link.target]);
@@ -3805,6 +4069,7 @@ var PureSankey = ({
3805
4069
  "data-test": getNodeId(node),
3806
4070
  activeNodes,
3807
4071
  nodeWidth,
4072
+ inactiveOpacity,
3808
4073
  colorCategoryMapping,
3809
4074
  handleMouseOver: (ev) => {
3810
4075
  const connections = nodeConnectionsMap[node.index];
@@ -3834,10 +4099,43 @@ var PureSankey = ({
3834
4099
  labelDisplay,
3835
4100
  unit,
3836
4101
  nodeTextColor,
3837
- nodeValueColor
4102
+ nodeValueColor,
4103
+ isSplunk1cd,
4104
+ inactiveOpacity
3838
4105
  }
3839
4106
  ));
3840
4107
  };
4108
+ const renderLinkGradients = () => {
4109
+ if (!useOneCdGradients) {
4110
+ return null;
4111
+ }
4112
+ return /* @__PURE__ */ react_exports.createElement("defs", null, sankeyData.links.map((link) => {
4113
+ const gradientId = getGradientId(link);
4114
+ if (!gradientId) {
4115
+ return null;
4116
+ }
4117
+ return /* @__PURE__ */ react_exports.createElement(
4118
+ "linearGradient",
4119
+ {
4120
+ id: gradientId,
4121
+ key: gradientId,
4122
+ gradientUnits: "userSpaceOnUse",
4123
+ x1: link.source.x + link.source.dx,
4124
+ y1: link.source.y + link.sy + link.dy / 2,
4125
+ x2: link.target.x,
4126
+ y2: link.target.y + link.ty + link.dy / 2
4127
+ },
4128
+ /* @__PURE__ */ react_exports.createElement(
4129
+ "stop",
4130
+ {
4131
+ offset: ONE_CD_GRADIENT_START_OFFSET,
4132
+ stopColor: getNodeColor(link.source)
4133
+ }
4134
+ ),
4135
+ /* @__PURE__ */ react_exports.createElement("stop", { offset: ONE_CD_GRADIENT_END_OFFSET, stopColor: getNodeColor(link.target) })
4136
+ );
4137
+ }));
4138
+ };
3841
4139
  if (containerWidth < CHART_MIN_WIDTH || containerHeight < CHART_MIN_HEIGHT) {
3842
4140
  return /* @__PURE__ */ react_exports.createElement(SankeyContainer, { height, width, ref: sankeyContainerElement }, /* @__PURE__ */ react_exports.createElement(SizeAwareWrapper_default, { width, height, onResize: cachedHandleResize }), /* @__PURE__ */ react_exports.createElement(
3843
4141
  Message_default,
@@ -3856,7 +4154,7 @@ var PureSankey = ({
3856
4154
  dataTestKey: "SankeyWrapper",
3857
4155
  onMouseLeave: handleWrapperMouseLeave
3858
4156
  },
3859
- /* @__PURE__ */ react_exports.createElement("svg", { height: "100%", width: "100%", "data-test": "sankey-svg" }, /* @__PURE__ */ react_exports.createElement("g", { transform: `translate(${TRANSLATE_POS.x},${TRANSLATE_POS.y})` }, /* @__PURE__ */ react_exports.createElement("g", { className: "link-group", "data-test": "link-group" }, renderLinks(sankeyData.links), openLinkToolTip && /* @__PURE__ */ react_exports.createElement(
4157
+ /* @__PURE__ */ react_exports.createElement("svg", { height: "100%", width: "100%", "data-test": "sankey-svg" }, renderLinkGradients(), /* @__PURE__ */ react_exports.createElement("g", { transform: `translate(${TRANSLATE_POS.x},${TRANSLATE_POS.y})` }, /* @__PURE__ */ react_exports.createElement("g", { className: "link-group", "data-test": "link-group" }, renderLinks(sankeyData.links), openLinkToolTip && /* @__PURE__ */ react_exports.createElement(
3860
4158
  SankeyTooltip_default,
3861
4159
  {
3862
4160
  mode: "link",
@@ -3900,36 +4198,27 @@ var visualization_icons_exports = {};
3900
4198
  __export(visualization_icons_exports, {
3901
4199
  default: () => visualization_icons_default
3902
4200
  });
3903
- var defaultImport37 = __toESM(require("@splunk/visualization-icons"));
4201
+ var defaultImport38 = __toESM(require("@splunk/visualization-icons"));
3904
4202
  __reExport(visualization_icons_exports, require("@splunk/visualization-icons"));
3905
- var visualization_icons_default = "default" in defaultImport37 ? defaultImport37.default : defaultImport37;
4203
+ var visualization_icons_default = "default" in defaultImport38 ? defaultImport38.default : defaultImport38;
3906
4204
 
3907
4205
  // esm-externals:@splunk/visualization-icons/placeholders
3908
4206
  var placeholders_exports = {};
3909
4207
  __export(placeholders_exports, {
3910
4208
  default: () => placeholders_default
3911
4209
  });
3912
- var defaultImport38 = __toESM(require("@splunk/visualization-icons/placeholders"));
4210
+ var defaultImport39 = __toESM(require("@splunk/visualization-icons/placeholders"));
3913
4211
  __reExport(placeholders_exports, require("@splunk/visualization-icons/placeholders"));
3914
- var placeholders_default = "default" in defaultImport38 ? defaultImport38.default : defaultImport38;
4212
+ var placeholders_default = "default" in defaultImport39 ? defaultImport39.default : defaultImport39;
3915
4213
 
3916
4214
  // esm-externals:@splunk/visualization-color-palettes/editors/PresetPalettes
3917
4215
  var PresetPalettes_exports = {};
3918
4216
  __export(PresetPalettes_exports, {
3919
4217
  default: () => PresetPalettes_default
3920
4218
  });
3921
- var defaultImport39 = __toESM(require("@splunk/visualization-color-palettes/editors/PresetPalettes"));
4219
+ var defaultImport40 = __toESM(require("@splunk/visualization-color-palettes/editors/PresetPalettes"));
3922
4220
  __reExport(PresetPalettes_exports, require("@splunk/visualization-color-palettes/editors/PresetPalettes"));
3923
- var PresetPalettes_default = "default" in defaultImport39 ? defaultImport39.default : defaultImport39;
3924
-
3925
- // esm-externals:@splunk/themes
3926
- var themes_exports = {};
3927
- __export(themes_exports, {
3928
- default: () => themes_default
3929
- });
3930
- var defaultImport40 = __toESM(require("@splunk/themes"));
3931
- __reExport(themes_exports, require("@splunk/themes"));
3932
- var themes_default = "default" in defaultImport40 ? defaultImport40.default : defaultImport40;
4221
+ var PresetPalettes_default = "default" in defaultImport40 ? defaultImport40.default : defaultImport40;
3933
4222
 
3934
4223
  // esm-externals:@splunk/visualizations-shared/configUtils
3935
4224
  var configUtils_exports = {};