@splunk/visualizations 28.5.2 → 28.6.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 (359) hide show
  1. package/Area/Area.d.ts.map +1 -1
  2. package/Area/areaUtils.d.ts +1 -1
  3. package/Area/areaUtils.d.ts.map +1 -1
  4. package/Area/config.d.ts.map +1 -1
  5. package/Area.config.js +93 -25
  6. package/Area.config.js.map +3 -3
  7. package/Area.js +708 -319
  8. package/Area.js.map +4 -4
  9. package/Bar/Bar.d.ts.map +1 -1
  10. package/Bar.config.js +81 -24
  11. package/Bar.config.js.map +3 -3
  12. package/Bar.js +528 -297
  13. package/Bar.js.map +4 -4
  14. package/Bubble.config.js +80 -23
  15. package/Bubble.config.js.map +2 -2
  16. package/Bubble.js +375 -208
  17. package/Bubble.js.map +4 -4
  18. package/CHANGELOG.external.md +75 -8
  19. package/ChoroplethSvg/PureChoroplethSvg/PureChoroplethSvg.d.ts +1 -0
  20. package/ChoroplethSvg/PureChoroplethSvg/PureChoroplethSvg.d.ts.map +1 -1
  21. package/ChoroplethSvg/PureChoroplethSvg/SvgChoroplethDynamic.d.ts +12 -25
  22. package/ChoroplethSvg/PureChoroplethSvg/SvgChoroplethDynamic.d.ts.map +1 -1
  23. package/ChoroplethSvg/PureChoroplethSvg/SvgMutator.d.ts +11 -4
  24. package/ChoroplethSvg/PureChoroplethSvg/SvgMutator.d.ts.map +1 -1
  25. package/ChoroplethSvg.js +1133 -253
  26. package/ChoroplethSvg.js.map +4 -4
  27. package/Column/Column.d.ts.map +1 -1
  28. package/Column.config.js +81 -24
  29. package/Column.config.js.map +3 -3
  30. package/Column.js +531 -300
  31. package/Column.js.map +4 -4
  32. package/Ellipse.config.js +1 -1
  33. package/Ellipse.config.js.map +2 -2
  34. package/Ellipse.js +277 -161
  35. package/Ellipse.js.map +4 -4
  36. package/Events/config.d.ts.map +1 -1
  37. package/Events.config.js +13 -3
  38. package/Events.config.js.map +2 -2
  39. package/Events.js +330 -194
  40. package/Events.js.map +4 -4
  41. package/FillerGauge/FillerGauge.d.ts.map +1 -1
  42. package/FillerGauge/config.d.ts.map +1 -1
  43. package/FillerGauge.config.js +76 -24
  44. package/FillerGauge.config.js.map +2 -2
  45. package/FillerGauge.js +512 -271
  46. package/FillerGauge.js.map +4 -4
  47. package/Image/config.d.ts.map +1 -1
  48. package/Image.config.js +7 -0
  49. package/Image.config.js.map +2 -2
  50. package/Image.js +282 -149
  51. package/Image.js.map +4 -4
  52. package/LICENSE +13 -0
  53. package/Line/Line.d.ts.map +1 -1
  54. package/Line/config.d.ts.map +1 -1
  55. package/Line/lineUtils.d.ts.map +1 -1
  56. package/Line/mockdata/LineData.d.ts +21 -0
  57. package/Line/mockdata/LineData.d.ts.map +1 -1
  58. package/Line.config.js +86 -25
  59. package/Line.config.js.map +3 -3
  60. package/Line.js +638 -382
  61. package/Line.js.map +4 -4
  62. package/LinkGraph/PureLinkGraph/PureLinkGraph.d.ts +47 -73
  63. package/LinkGraph/PureLinkGraph/PureLinkGraph.d.ts.map +1 -1
  64. package/LinkGraph/PureLinkGraph/PureLinkGraphUtils.d.ts +11 -2
  65. package/LinkGraph/PureLinkGraph/PureLinkGraphUtils.d.ts.map +1 -1
  66. package/LinkGraph/PureLinkGraph/components/Graph.d.ts +5 -5
  67. package/LinkGraph/PureLinkGraph/components/Node.d.ts +2 -2
  68. package/LinkGraph/PureLinkGraph/components/Nodes.d.ts +2 -2
  69. package/LinkGraph.js +886 -759
  70. package/LinkGraph.js.map +4 -4
  71. package/Map/PureMap/BubbleLayer.d.ts.map +1 -1
  72. package/Map/PureMap/Tooltip.d.ts.map +1 -1
  73. package/Map/config.d.ts.map +1 -1
  74. package/Map.config.js +4 -1
  75. package/Map.config.js.map +2 -2
  76. package/Map.js +296 -169
  77. package/Map.js.map +4 -4
  78. package/Markdown/Markdown.d.ts.map +1 -1
  79. package/Markdown.config.js.map +1 -1
  80. package/Markdown.js +283 -157
  81. package/Markdown.js.map +4 -4
  82. package/MarkerGauge/MarkerGauge.d.ts +1 -47
  83. package/MarkerGauge/MarkerGauge.d.ts.map +1 -1
  84. package/MarkerGauge/PureMarkerGauge/MarkerGauge.d.ts +22 -68
  85. package/MarkerGauge/PureMarkerGauge/MarkerGauge.d.ts.map +1 -1
  86. package/MarkerGauge/config.d.ts.map +1 -1
  87. package/MarkerGauge.config.js +75 -23
  88. package/MarkerGauge.config.js.map +2 -2
  89. package/MarkerGauge.js +560 -375
  90. package/MarkerGauge.js.map +4 -4
  91. package/NetworkGraph/NetworkGraph.d.ts +2 -1
  92. package/NetworkGraph/NetworkGraph.d.ts.map +1 -1
  93. package/NetworkGraph/PureNetworkGraph/utils/networkGraphUtils.d.ts.map +1 -1
  94. package/NetworkGraph.config.js.map +2 -2
  95. package/NetworkGraph.js +628 -434
  96. package/NetworkGraph.js.map +4 -4
  97. package/ParallelCoordinates.config.js.map +1 -1
  98. package/ParallelCoordinates.js +288 -172
  99. package/ParallelCoordinates.js.map +4 -4
  100. package/Pie/Pie.d.ts.map +1 -1
  101. package/Pie/pieUtils.d.ts +2 -2
  102. package/Pie.config.js +74 -22
  103. package/Pie.config.js.map +2 -2
  104. package/Pie.js +522 -296
  105. package/Pie.js.map +4 -4
  106. package/ProcessTree/ProcessTree.d.ts +21 -0
  107. package/ProcessTree/ProcessTree.d.ts.map +1 -0
  108. package/ProcessTree/PureProcessTree/PureProcessTree.d.ts +32 -0
  109. package/ProcessTree/PureProcessTree/PureProcessTree.d.ts.map +1 -0
  110. package/ProcessTree/PureProcessTree/components/DirectionalBytes.d.ts +8 -0
  111. package/ProcessTree/PureProcessTree/components/DirectionalBytes.d.ts.map +1 -0
  112. package/ProcessTree/PureProcessTree/components/ProcessTreeLeftPanel.d.ts +44 -0
  113. package/ProcessTree/PureProcessTree/components/ProcessTreeLeftPanel.d.ts.map +1 -0
  114. package/ProcessTree/PureProcessTree/components/ProcessTreeRightPanel.d.ts +20 -0
  115. package/ProcessTree/PureProcessTree/components/ProcessTreeRightPanel.d.ts.map +1 -0
  116. package/ProcessTree/PureProcessTree/hooks/useProcessTreeExpansionState.d.ts +20 -0
  117. package/ProcessTree/PureProcessTree/hooks/useProcessTreeExpansionState.d.ts.map +1 -0
  118. package/ProcessTree/PureProcessTree/hooks/useProcessTreeGraphData.d.ts +44 -0
  119. package/ProcessTree/PureProcessTree/hooks/useProcessTreeGraphData.d.ts.map +1 -0
  120. package/ProcessTree/PureProcessTree/hooks/useProcessTreeLinkOverlay.d.ts +23 -0
  121. package/ProcessTree/PureProcessTree/hooks/useProcessTreeLinkOverlay.d.ts.map +1 -0
  122. package/ProcessTree/PureProcessTree/mockdata/data.d.ts +235 -0
  123. package/ProcessTree/PureProcessTree/mockdata/data.d.ts.map +1 -0
  124. package/ProcessTree/PureProcessTree/utils/iconLoader.d.ts +9 -0
  125. package/ProcessTree/PureProcessTree/utils/iconLoader.d.ts.map +1 -0
  126. package/ProcessTree/PureProcessTree/utils/processTreeLinkOverlayUtils.d.ts +36 -0
  127. package/ProcessTree/PureProcessTree/utils/processTreeLinkOverlayUtils.d.ts.map +1 -0
  128. package/ProcessTree/PureProcessTree/utils/processTreeUtils.d.ts +80 -0
  129. package/ProcessTree/PureProcessTree/utils/processTreeUtils.d.ts.map +1 -0
  130. package/ProcessTree/config.d.ts +4 -0
  131. package/ProcessTree/config.d.ts.map +1 -0
  132. package/ProcessTree/index.d.ts +3 -0
  133. package/ProcessTree/index.d.ts.map +1 -0
  134. package/ProcessTree.config.js +192 -0
  135. package/ProcessTree.config.js.map +7 -0
  136. package/ProcessTree.js +5058 -0
  137. package/ProcessTree.js.map +7 -0
  138. package/Punchcard/Punchcard.d.ts +1 -5
  139. package/Punchcard/Punchcard.d.ts.map +1 -1
  140. package/Punchcard/PurePunchcard/Punchcard.d.ts +28 -32
  141. package/Punchcard/PurePunchcard/Punchcard.d.ts.map +1 -1
  142. package/Punchcard/PurePunchcard/src/PunchcardAxis.d.ts +7 -12
  143. package/Punchcard/PurePunchcard/src/PunchcardAxis.d.ts.map +1 -1
  144. package/Punchcard/PurePunchcard/src/PunchcardBubble.d.ts +14 -19
  145. package/Punchcard/PurePunchcard/src/PunchcardBubble.d.ts.map +1 -1
  146. package/Punchcard/PurePunchcard/src/PunchcardChartArea.d.ts +22 -27
  147. package/Punchcard/PurePunchcard/src/PunchcardChartArea.d.ts.map +1 -1
  148. package/Punchcard/PurePunchcard/src/PunchcardGridLines.d.ts +3 -8
  149. package/Punchcard/PurePunchcard/src/PunchcardGridLines.d.ts.map +1 -1
  150. package/Punchcard/PurePunchcard/src/PunchcardLegend.d.ts +9 -14
  151. package/Punchcard/PurePunchcard/src/PunchcardLegend.d.ts.map +1 -1
  152. package/Punchcard/PurePunchcard/src/PunchcardRow.d.ts.map +1 -1
  153. package/Punchcard.config.js.map +1 -1
  154. package/Punchcard.js +444 -631
  155. package/Punchcard.js.map +4 -4
  156. package/Rectangle.config.js +1 -1
  157. package/Rectangle.config.js.map +2 -2
  158. package/Rectangle.js +289 -173
  159. package/Rectangle.js.map +4 -4
  160. package/RichText/PureRichText/Editor/EditorPanel.d.ts +20 -0
  161. package/RichText/PureRichText/Editor/EditorPanel.d.ts.map +1 -0
  162. package/RichText/PureRichText/Editor/EditorPanelStyles.d.ts +17 -0
  163. package/RichText/PureRichText/Editor/EditorPanelStyles.d.ts.map +1 -0
  164. package/RichText/PureRichText/Editor/FontSelector.d.ts +15 -0
  165. package/RichText/PureRichText/Editor/FontSelector.d.ts.map +1 -0
  166. package/RichText/PureRichText/Editor/FormatButton.d.ts +23 -0
  167. package/RichText/PureRichText/Editor/FormatButton.d.ts.map +1 -0
  168. package/RichText/PureRichText/Editor/editorPanelUtils.d.ts +19 -0
  169. package/RichText/PureRichText/Editor/editorPanelUtils.d.ts.map +1 -0
  170. package/RichText/PureRichText/Editor/hooks/useLineSpacing.d.ts +11 -0
  171. package/RichText/PureRichText/Editor/hooks/useLineSpacing.d.ts.map +1 -0
  172. package/RichText/PureRichText/Editor/hooks/useLinkHandlers.d.ts +26 -0
  173. package/RichText/PureRichText/Editor/hooks/useLinkHandlers.d.ts.map +1 -0
  174. package/RichText/PureRichText/Editor/index.d.ts +9 -0
  175. package/RichText/PureRichText/Editor/index.d.ts.map +1 -0
  176. package/RichText/PureRichText/InnerEditor.d.ts +41 -0
  177. package/RichText/PureRichText/InnerEditor.d.ts.map +1 -0
  178. package/RichText/PureRichText/PureRichText.d.ts +19 -0
  179. package/RichText/PureRichText/PureRichText.d.ts.map +1 -0
  180. package/RichText/PureRichText/PureRichTextContext.d.ts +64 -0
  181. package/RichText/PureRichText/PureRichTextContext.d.ts.map +1 -0
  182. package/RichText/PureRichText/RichTextStyles.d.ts +25 -0
  183. package/RichText/PureRichText/RichTextStyles.d.ts.map +1 -0
  184. package/RichText/PureRichText/activeInstance.d.ts +23 -0
  185. package/RichText/PureRichText/activeInstance.d.ts.map +1 -0
  186. package/RichText/PureRichText/config.d.ts +17 -0
  187. package/RichText/PureRichText/config.d.ts.map +1 -0
  188. package/RichText/PureRichText/hooks/index.d.ts +12 -0
  189. package/RichText/PureRichText/hooks/index.d.ts.map +1 -0
  190. package/RichText/PureRichText/hooks/useContentSave.d.ts +25 -0
  191. package/RichText/PureRichText/hooks/useContentSave.d.ts.map +1 -0
  192. package/RichText/PureRichText/hooks/useContentSync.d.ts +28 -0
  193. package/RichText/PureRichText/hooks/useContentSync.d.ts.map +1 -0
  194. package/RichText/PureRichText/hooks/useDashboardKeyboardNav.d.ts +33 -0
  195. package/RichText/PureRichText/hooks/useDashboardKeyboardNav.d.ts.map +1 -0
  196. package/RichText/PureRichText/hooks/useEditModeEffect.d.ts +10 -0
  197. package/RichText/PureRichText/hooks/useEditModeEffect.d.ts.map +1 -0
  198. package/RichText/PureRichText/hooks/useEditorSetup.d.ts +36 -0
  199. package/RichText/PureRichText/hooks/useEditorSetup.d.ts.map +1 -0
  200. package/RichText/PureRichText/hooks/useFakeHighlight.d.ts +33 -0
  201. package/RichText/PureRichText/hooks/useFakeHighlight.d.ts.map +1 -0
  202. package/RichText/PureRichText/hooks/useFocusHandlers.d.ts +35 -0
  203. package/RichText/PureRichText/hooks/useFocusHandlers.d.ts.map +1 -0
  204. package/RichText/PureRichText/hooks/useKeyboardShortcuts.d.ts +18 -0
  205. package/RichText/PureRichText/hooks/useKeyboardShortcuts.d.ts.map +1 -0
  206. package/RichText/PureRichText/hooks/useMouseHandlers.d.ts +24 -0
  207. package/RichText/PureRichText/hooks/useMouseHandlers.d.ts.map +1 -0
  208. package/RichText/PureRichText/hooks/useRichTextState.d.ts +38 -0
  209. package/RichText/PureRichText/hooks/useRichTextState.d.ts.map +1 -0
  210. package/RichText/PureRichText/hooks/useStepFontSize.d.ts +17 -0
  211. package/RichText/PureRichText/hooks/useStepFontSize.d.ts.map +1 -0
  212. package/RichText/PureRichText/hooks/useStepLineSpacing.d.ts +18 -0
  213. package/RichText/PureRichText/hooks/useStepLineSpacing.d.ts.map +1 -0
  214. package/RichText/PureRichText/hooks/useTokenMap.d.ts +45 -0
  215. package/RichText/PureRichText/hooks/useTokenMap.d.ts.map +1 -0
  216. package/RichText/PureRichText/index.d.ts +16 -0
  217. package/RichText/PureRichText/index.d.ts.map +1 -0
  218. package/RichText/PureRichText/renderers/ElementRenderer.d.ts +8 -0
  219. package/RichText/PureRichText/renderers/ElementRenderer.d.ts.map +1 -0
  220. package/RichText/PureRichText/renderers/LeafRenderer.d.ts +8 -0
  221. package/RichText/PureRichText/renderers/LeafRenderer.d.ts.map +1 -0
  222. package/RichText/PureRichText/types.d.ts +111 -0
  223. package/RichText/PureRichText/types.d.ts.map +1 -0
  224. package/RichText/PureRichText/utils/a11yUtils.d.ts +9 -0
  225. package/RichText/PureRichText/utils/a11yUtils.d.ts.map +1 -0
  226. package/RichText/PureRichText/utils/fontSize.d.ts +6 -0
  227. package/RichText/PureRichText/utils/fontSize.d.ts.map +1 -0
  228. package/RichText/PureRichText/utils/slateUtils.d.ts +99 -0
  229. package/RichText/PureRichText/utils/slateUtils.d.ts.map +1 -0
  230. package/RichText/RichText.d.ts +17 -0
  231. package/RichText/RichText.d.ts.map +1 -0
  232. package/RichText/config.d.ts +4 -0
  233. package/RichText/config.d.ts.map +1 -0
  234. package/RichText/index.d.ts +7 -0
  235. package/RichText/index.d.ts.map +1 -0
  236. package/RichText.config.js +268 -0
  237. package/RichText.config.js.map +7 -0
  238. package/RichText.js +7674 -0
  239. package/RichText.js.map +7 -0
  240. package/Sankey/PureSankey/PureSankey.d.ts.map +1 -1
  241. package/Sankey/PureSankey/SankeyLink.d.ts.map +1 -1
  242. package/Sankey/PureSankey/SankeyNode.d.ts +10 -3
  243. package/Sankey/PureSankey/SankeyNode.d.ts.map +1 -1
  244. package/Sankey/PureSankey/SankeyTooltip.d.ts.map +1 -1
  245. package/Sankey/PureSankey/SankeyUtils.d.ts +10 -0
  246. package/Sankey/PureSankey/SankeyUtils.d.ts.map +1 -1
  247. package/Sankey.config.js.map +1 -1
  248. package/Sankey.js +562 -290
  249. package/Sankey.js.map +4 -4
  250. package/Scatter/Scatter.d.ts.map +1 -1
  251. package/Scatter.config.js +81 -24
  252. package/Scatter.config.js.map +3 -3
  253. package/Scatter.js +528 -297
  254. package/Scatter.js.map +4 -4
  255. package/SingleValue/SingleValue.d.ts.map +1 -1
  256. package/SingleValue/config.d.ts.map +1 -1
  257. package/SingleValue.config.js +76 -24
  258. package/SingleValue.config.js.map +2 -2
  259. package/SingleValue.js +534 -314
  260. package/SingleValue.js.map +4 -4
  261. package/SingleValueBasic.js.map +1 -1
  262. package/SingleValueIcon/SingleValueIcon.d.ts.map +1 -1
  263. package/SingleValueIcon/config.d.ts.map +1 -1
  264. package/SingleValueIcon.config.js +76 -24
  265. package/SingleValueIcon.config.js.map +2 -2
  266. package/SingleValueIcon.js +512 -287
  267. package/SingleValueIcon.js.map +4 -4
  268. package/SingleValueRadial/PureSingleValueRadial/utils/gaugeUtils.d.ts +0 -8
  269. package/SingleValueRadial/PureSingleValueRadial/utils/gaugeUtils.d.ts.map +1 -1
  270. package/SingleValueRadial/SingleValueRadial.d.ts.map +1 -1
  271. package/SingleValueRadial/config.d.ts.map +1 -1
  272. package/SingleValueRadial.config.js +76 -24
  273. package/SingleValueRadial.config.js.map +2 -2
  274. package/SingleValueRadial.js +543 -326
  275. package/SingleValueRadial.js.map +4 -4
  276. package/TRELLIS.md +48 -0
  277. package/Table/PureTable.d.ts +1 -0
  278. package/Table/PureTable.d.ts.map +1 -1
  279. package/Table/Table.d.ts.map +1 -1
  280. package/Table/cells/ArrayCell.d.ts.map +1 -1
  281. package/Table/config.d.ts.map +1 -1
  282. package/Table/hooks.d.ts.map +1 -1
  283. package/Table/tableUtils.d.ts +14 -0
  284. package/Table/tableUtils.d.ts.map +1 -0
  285. package/Table.config.js +4 -10
  286. package/Table.config.js.map +2 -2
  287. package/Table.js +769 -355
  288. package/Table.js.map +4 -4
  289. package/Timeline/PureTimeline/src/TimelineYAxis.d.ts.map +1 -1
  290. package/Timeline/PureTimeline/src/utils/timelineUtils.d.ts +5 -0
  291. package/Timeline/PureTimeline/src/utils/timelineUtils.d.ts.map +1 -1
  292. package/Timeline/Timeline.d.ts +2 -0
  293. package/Timeline/Timeline.d.ts.map +1 -1
  294. package/Timeline/config.d.ts.map +1 -1
  295. package/Timeline/mockdata/timelineDataSource.d.ts +34 -0
  296. package/Timeline/mockdata/timelineDataSource.d.ts.map +1 -1
  297. package/Timeline.config.js +15 -0
  298. package/Timeline.config.js.map +2 -2
  299. package/Timeline.js +348 -186
  300. package/Timeline.js.map +4 -4
  301. package/common/Charting.d.ts.map +1 -1
  302. package/common/Charting.js +50 -28
  303. package/common/Charting.js.map +2 -2
  304. package/common/ChartingApi.d.ts +1 -1
  305. package/common/ChartingApi.d.ts.map +1 -1
  306. package/common/ChartingApi.js.map +2 -2
  307. package/common/DocExampleWithVizSandbox.js.map +1 -1
  308. package/common/OptionsDoc.js.map +1 -1
  309. package/common/OverviewDoc.js.map +1 -1
  310. package/common/SplunkVisualization.d.ts +1 -1
  311. package/common/SplunkVisualization.d.ts.map +1 -1
  312. package/common/SplunkVisualization.js +6 -4
  313. package/common/SplunkVisualization.js.map +2 -2
  314. package/common/StyledSkipLink.d.ts +2 -0
  315. package/common/StyledSkipLink.d.ts.map +1 -0
  316. package/common/StyledSkipLink.js +81 -0
  317. package/common/StyledSkipLink.js.map +7 -0
  318. package/common/TimeSeriesChartWrapper.d.ts.map +1 -1
  319. package/common/TimeSeriesChartWrapper.js +228 -107
  320. package/common/TimeSeriesChartWrapper.js.map +4 -4
  321. package/common/chartingUtils.d.ts +32 -6
  322. package/common/chartingUtils.d.ts.map +1 -1
  323. package/common/chartingUtils.js +166 -39
  324. package/common/chartingUtils.js.map +4 -4
  325. package/common/components/TrellisTitle.d.ts.map +1 -1
  326. package/common/docUtils.js +1 -1
  327. package/common/docUtils.js.map +2 -2
  328. package/common/editorConfig/AxesChartDataDisplay.d.ts.map +1 -1
  329. package/common/editorConfig/AxesChartYGridAndLabels.d.ts.map +1 -1
  330. package/common/editorConfig/BackgroundColor.d.ts +2 -2
  331. package/common/editorConfig/TrellisEditors.d.ts +33 -5
  332. package/common/editorConfig/TrellisEditors.d.ts.map +1 -1
  333. package/common/hocs/mockdata/trellisData.d.ts +54 -0
  334. package/common/hocs/mockdata/trellisData.d.ts.map +1 -1
  335. package/common/hocs/withTrellis.d.ts +9 -0
  336. package/common/hocs/withTrellis.d.ts.map +1 -1
  337. package/common/hooks/useSorting.d.ts +2 -2
  338. package/common/hooks/useSorting.d.ts.map +1 -1
  339. package/common/shapeUtils.d.ts +1 -1
  340. package/common/shapeUtils.d.ts.map +1 -1
  341. package/common/shapeUtils.js.map +2 -2
  342. package/common/utils/dataUtils.js +2 -1
  343. package/common/utils/dataUtils.js.map +2 -2
  344. package/common/utils/focusUtils.d.ts +4 -0
  345. package/common/utils/focusUtils.d.ts.map +1 -0
  346. package/common/utils/focusUtils.js +101 -0
  347. package/common/utils/focusUtils.js.map +7 -0
  348. package/common/utils/mapUtils.js +2 -6
  349. package/common/utils/mapUtils.js.map +2 -2
  350. package/common/utils/singleValueUtils.js +14 -26
  351. package/common/utils/singleValueUtils.js.map +2 -2
  352. package/common/utils/trellisUtils.d.ts.map +1 -1
  353. package/common/utils/trellisUtils.js +76 -70
  354. package/common/utils/trellisUtils.js.map +2 -2
  355. package/common/withDashboardViz.d.ts.map +1 -1
  356. package/common/withDashboardViz.js +276 -151
  357. package/common/withDashboardViz.js.map +4 -4
  358. package/package.json +32 -27
  359. package/LICENSE.md +0 -449
package/Scatter.js CHANGED
@@ -12,6 +12,7 @@ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
12
12
  var __getProtoOf = Object.getPrototypeOf;
13
13
  var __hasOwnProp = Object.prototype.hasOwnProperty;
14
14
  var __propIsEnum = Object.prototype.propertyIsEnumerable;
15
+ var __pow = Math.pow;
15
16
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
16
17
  var __spreadValues = (a, b) => {
17
18
  for (var prop in b || (b = {}))
@@ -59,6 +60,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
59
60
  mod
60
61
  ));
61
62
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
63
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
62
64
 
63
65
  // src/Scatter/index.ts
64
66
  var Scatter_exports = {};
@@ -558,8 +560,27 @@ var TrellisTitleDiv = styled_components_default.div`
558
560
  background-color: ${(props) => props.backgroundColor};
559
561
  box-shadow: 0 1px ${(props) => props.backgroundColor}; // this is added to avoid a 1px gap between title and viz divs that showed up intermittently because of pixel rounding error in chrome.
560
562
  `;
563
+ var formatTrellisKey = (value) => {
564
+ if (value === null || value === void 0) {
565
+ return "";
566
+ }
567
+ if (typeof value === "string") {
568
+ return value;
569
+ }
570
+ if (typeof value === "number" || typeof value === "boolean") {
571
+ return value.toString();
572
+ }
573
+ if (typeof value === "symbol") {
574
+ return value.toString();
575
+ }
576
+ try {
577
+ return JSON.stringify(value);
578
+ } catch (e) {
579
+ return typeof value === "bigint" ? value.toString() : "";
580
+ }
581
+ };
561
582
  var TrellisTitle = (props) => {
562
- const titleText = String(props.trellisKey).toString();
583
+ const titleText = formatTrellisKey(props.trellisKey);
563
584
  return /* @__PURE__ */ react_exports.createElement(
564
585
  TrellisTitleDiv,
565
586
  {
@@ -797,6 +818,35 @@ var Charting = (props) => {
797
818
  });
798
819
  }
799
820
  );
821
+ const initChart = (updatedOptions, serializedTimezone, ianaTimezone, utcOffset) => {
822
+ destroyChart();
823
+ charting_bundle_default.setTheme(themeKey);
824
+ if (colorPalette.length > 0) {
825
+ charting_bundle_default.setColorPalette(colorPalette);
826
+ }
827
+ chart.current = charting_bundle_default.createChart(container.current, __spreadValues(__spreadValues(__spreadValues(__spreadProps(__spreadValues({}, updatedOptions), {
828
+ drilldown: "all"
829
+ }), typeof serializedTimezone === "string" && {
830
+ "time.serializedTz": serializedTimezone
831
+ }), typeof ianaTimezone === "string" && {
832
+ "time.ianaTimezone": ianaTimezone
833
+ }), typeof utcOffset === "number" && {
834
+ "time.timezoneOffset": utcOffset
835
+ }));
836
+ chart.current.on("pointClick", (e) => {
837
+ handleClick2(e, "point.click" /* POINT_CLICK */);
838
+ });
839
+ chart.current.on("pointMouseOver", (e) => {
840
+ handlePointMouseOver(e, "point.mouseover" /* POINT_MOUSE_OVER */);
841
+ });
842
+ chart.current.on("pointMouseOut", (e) => {
843
+ handlePointMouseOut(e, "point.mouseout" /* POINT_MOUSE_OUT */);
844
+ });
845
+ chart.current.on("legendClick", (e) => {
846
+ handleClick2(e, "legend.click" /* LEGEND_CLICK */);
847
+ });
848
+ chart.current.on("chartRangeSelect", handleSelect);
849
+ };
800
850
  const drawChart = () => {
801
851
  const updatedOptions = __spreadProps(__spreadValues({}, options), { shouldColorizeTooltipData: false });
802
852
  const computedChartSize = computeChartingSize();
@@ -820,33 +870,7 @@ var Charting = (props) => {
820
870
  }
821
871
  try {
822
872
  if (needsInit.current) {
823
- destroyChart();
824
- charting_bundle_default.setTheme(themeKey);
825
- if (colorPalette.length > 0) {
826
- charting_bundle_default.setColorPalette(colorPalette);
827
- }
828
- chart.current = charting_bundle_default.createChart(container.current, __spreadValues(__spreadValues(__spreadValues(__spreadProps(__spreadValues({}, updatedOptions), {
829
- drilldown: "all"
830
- }), typeof serializedTimezone === "string" && {
831
- "time.serializedTz": serializedTimezone
832
- }), typeof ianaTimezone === "string" && {
833
- "time.ianaTimezone": ianaTimezone
834
- }), typeof utcOffset === "number" && {
835
- "time.timezoneOffset": utcOffset
836
- }));
837
- chart.current.on("pointClick", (e) => {
838
- handleClick2(e, "point.click" /* POINT_CLICK */);
839
- });
840
- chart.current.on("pointMouseOver", (e) => {
841
- handlePointMouseOver(e, "point.mouseover" /* POINT_MOUSE_OVER */);
842
- });
843
- chart.current.on("pointMouseOut", (e) => {
844
- handlePointMouseOut(e, "point.mouseout" /* POINT_MOUSE_OUT */);
845
- });
846
- chart.current.on("legendClick", (e) => {
847
- handleClick2(e, "legend.click" /* LEGEND_CLICK */);
848
- });
849
- chart.current.on("chartRangeSelect", handleSelect);
873
+ initChart(updatedOptions, serializedTimezone, ianaTimezone, utcOffset);
850
874
  }
851
875
  if (needsRedraw.current) {
852
876
  charting_bundle_default.setTheme(themeKey);
@@ -1036,26 +1060,59 @@ var isTrellisEnabled = ({ options, featureFlags }) => {
1036
1060
  const { splitByLayout = visualization_schemas_exports.LAYOUT_TYPE.Off } = options;
1037
1061
  return isTrellisFeatureFlagOn({ featureFlags }) && splitByLayout === visualization_schemas_exports.LAYOUT_TYPE.Trellis;
1038
1062
  };
1039
- var TrellisEditorConfig = [
1040
- [
1041
- {
1042
- label: (0, i18n_exports._)("Trellis layout"),
1043
- option: "splitByLayout",
1044
- editor: "editor.toggle",
1045
- showEditor: isTrellisFeatureFlagOn
1046
- }
1047
- ],
1048
- [
1049
- {
1050
- label: (0, i18n_exports._)("Split by"),
1051
- option: "trellisSplitBy",
1052
- editor: "editor.trellisSplitBy",
1053
- editorProps: {
1054
- dataSourceKey: "primary"
1055
- },
1056
- showEditor: isTrellisEnabled
1057
- }
1058
- ],
1063
+ var sortByValuesBase = [
1064
+ { label: (0, i18n_exports._)("Result"), value: "result" },
1065
+ { label: (0, i18n_exports._)("Name"), value: "name" }
1066
+ ];
1067
+ var sortByValuesWithValue = [...sortByValuesBase, { label: (0, i18n_exports._)("Value"), value: "value" }];
1068
+ var sortByValuesWithValueAndTrend = [
1069
+ ...sortByValuesBase,
1070
+ { label: (0, i18n_exports._)("Value"), value: "value" },
1071
+ { label: (0, i18n_exports._)("Trend"), value: "trend" }
1072
+ ];
1073
+ var makeSortRow = (sortByValues) => [
1074
+ {
1075
+ label: (0, i18n_exports._)("Sort by"),
1076
+ option: "trellisSortBy",
1077
+ editor: "editor.select",
1078
+ editorProps: {
1079
+ values: sortByValues
1080
+ },
1081
+ showEditor: isTrellisEnabled
1082
+ },
1083
+ {
1084
+ label: (0, i18n_exports._)("Sort order"),
1085
+ option: "trellisSortOrder",
1086
+ editor: "editor.select",
1087
+ editorProps: {
1088
+ values: [
1089
+ { label: (0, i18n_exports._)("Ascending"), value: "ascending" },
1090
+ { label: (0, i18n_exports._)("Descending"), value: "descending" }
1091
+ ]
1092
+ },
1093
+ showEditor: isTrellisEnabled
1094
+ }
1095
+ ];
1096
+ var trellisLayoutRow = [
1097
+ {
1098
+ label: (0, i18n_exports._)("Trellis layout"),
1099
+ option: "splitByLayout",
1100
+ editor: "editor.toggle",
1101
+ showEditor: isTrellisFeatureFlagOn
1102
+ }
1103
+ ];
1104
+ var trellisSplitByRow = [
1105
+ {
1106
+ label: (0, i18n_exports._)("Split by"),
1107
+ option: "trellisSplitBy",
1108
+ editor: "editor.trellisSplitBy",
1109
+ editorProps: {
1110
+ dataSourceKey: "primary"
1111
+ },
1112
+ showEditor: isTrellisEnabled
1113
+ }
1114
+ ];
1115
+ var trellisLayoutRows = [
1059
1116
  [
1060
1117
  {
1061
1118
  label: (0, i18n_exports._)("Number of columns"),
@@ -1099,6 +1156,24 @@ var TrellisEditorConfig = [
1099
1156
  }
1100
1157
  ]
1101
1158
  ];
1159
+ var TrellisEditorConfig = [
1160
+ trellisLayoutRow,
1161
+ trellisSplitByRow,
1162
+ makeSortRow(sortByValuesBase),
1163
+ ...trellisLayoutRows
1164
+ ];
1165
+ var GaugeTrellisEditorConfig = [
1166
+ trellisLayoutRow,
1167
+ trellisSplitByRow,
1168
+ makeSortRow(sortByValuesWithValue),
1169
+ ...trellisLayoutRows
1170
+ ];
1171
+ var SingleValueTrellisEditorConfig = [
1172
+ trellisLayoutRow,
1173
+ trellisSplitByRow,
1174
+ makeSortRow(sortByValuesWithValueAndTrend),
1175
+ ...trellisLayoutRows
1176
+ ];
1102
1177
  var TimechartTrellisEditorConfig = [
1103
1178
  [
1104
1179
  {
@@ -1106,7 +1181,6 @@ var TimechartTrellisEditorConfig = [
1106
1181
  option: "splitByLayout",
1107
1182
  editor: "editor.toggle",
1108
1183
  showEditor: isTrellisFeatureFlagOn,
1109
- // add help text for timecharts
1110
1184
  editorProps: {
1111
1185
  help: (0, i18n_exports._)(
1112
1186
  "Y2-axis and overlay field configurations are not supported when trellis is enabled."
@@ -1115,7 +1189,9 @@ var TimechartTrellisEditorConfig = [
1115
1189
  }
1116
1190
  }
1117
1191
  ],
1118
- ...TrellisEditorConfig.slice(1),
1192
+ trellisSplitByRow,
1193
+ makeSortRow(sortByValuesBase),
1194
+ ...trellisLayoutRows,
1119
1195
  [
1120
1196
  {
1121
1197
  label: (0, i18n_exports._)("Shared y-axis scale"),
@@ -1395,7 +1471,7 @@ var AxesChartDataDisplayBase = {
1395
1471
  editorProps: {
1396
1472
  filterByTypes: ["number"]
1397
1473
  },
1398
- isDisabled: isTrellisEnabled3
1474
+ isDisabled: ({ options, featureFlags }) => isTrellisEnabled3({ options, featureFlags }) || options.stackMode === "stacked100"
1399
1475
  }
1400
1476
  ],
1401
1477
  [
@@ -1919,6 +1995,10 @@ var AxesChartLegendWithTrellisAndMode = ({
1919
1995
  var AxesChartLegend_default = AxesChartLegend;
1920
1996
 
1921
1997
  // src/common/editorConfig/AxesChartYGridAndLabels.ts
1998
+ var isAcceleratedRenderEnabled2 = ({ options, featureFlags }) => {
1999
+ const { acceleratedRender } = options;
2000
+ return isAcceleratedRenderFeatureFlagOn({ featureFlags }) && acceleratedRender;
2001
+ };
1922
2002
  var AxesChartYGridAndLabels = {
1923
2003
  label: (0, i18n_exports._)("Y-axis grid and labels"),
1924
2004
  layout: [
@@ -1983,7 +2063,8 @@ var AxesChartYGridAndLabels = {
1983
2063
  {
1984
2064
  label: (0, i18n_exports._)("Extend to whole grid"),
1985
2065
  option: "showYAxisExtendedRange",
1986
- editor: "editor.checkbox"
2066
+ editor: "editor.checkbox",
2067
+ showEditor: ({ options, featureFlags }) => !isAcceleratedRenderEnabled2({ options, featureFlags })
1987
2068
  }
1988
2069
  ],
1989
2070
  [
@@ -2277,7 +2358,7 @@ var prop_types_default = "default" in defaultImport30 ? defaultImport30.default
2277
2358
  var INITIAL_HEIGHT = 250;
2278
2359
  var SplunkVisualization = class {
2279
2360
  };
2280
- SplunkVisualization.propTypes = {
2361
+ __publicField(SplunkVisualization, "propTypes", {
2281
2362
  /**
2282
2363
  * display mode
2283
2364
  */
@@ -2353,11 +2434,11 @@ SplunkVisualization.propTypes = {
2353
2434
  * A callback to request new data with updated request params
2354
2435
  */
2355
2436
  onRequestParamsChange: prop_types_exports.func
2356
- };
2437
+ });
2357
2438
  /**
2358
2439
  *
2359
2440
  */
2360
- SplunkVisualization.defaults = {
2441
+ __publicField(SplunkVisualization, "defaults", {
2361
2442
  // BaseVisualization in dashboard-visualizations uses 100% for width but 250 for height
2362
2443
  width: "100%",
2363
2444
  height: INITIAL_HEIGHT,
@@ -2372,7 +2453,7 @@ SplunkVisualization.defaults = {
2372
2453
  onComputedProps: () => ({}),
2373
2454
  loading: false,
2374
2455
  onRequestParamsChange: lodash_exports.noop
2375
- };
2456
+ });
2376
2457
  var SplunkVisualization_default = SplunkVisualization;
2377
2458
 
2378
2459
  // src/common/hooks/useSorting.ts
@@ -2423,9 +2504,9 @@ var usePaginationParams = ({
2423
2504
  meta,
2424
2505
  onRequestParamsChange
2425
2506
  }) => {
2426
- const totalCount = meta && meta.totalCount || 0;
2427
- const offset = requestParams && requestParams.offset || 0;
2428
- const count = requestParams && requestParams.count;
2507
+ const totalCount = (meta == null ? void 0 : meta.totalCount) || 0;
2508
+ const offset = (requestParams == null ? void 0 : requestParams.offset) || 0;
2509
+ const count = requestParams == null ? void 0 : requestParams.count;
2429
2510
  const totalPages = typeof count === "number" && count > 0 ? Math.ceil(totalCount / count) : 0;
2430
2511
  const current = typeof count === "number" && count > 0 ? Math.floor(offset / count) + 1 : 0;
2431
2512
  const isPaging = totalPages > 1 && typeof onRequestParamsChange === "function";
@@ -2524,7 +2605,7 @@ var Cover = styled_components_default.div`
2524
2605
  bottom: 0;
2525
2606
  `;
2526
2607
  var Blocker = styled_components_default.div.attrs({
2527
- "data-splunk-visualization-version": "28.5.2 - fd77ce608"
2608
+ "data-splunk-visualization-version": "28.6.0 - 92427899a"
2528
2609
  })`
2529
2610
  position: relative;
2530
2611
  width: 100%;
@@ -2605,7 +2686,7 @@ var withFixedSizeContainer = (Viz) => {
2605
2686
  FixSizeItem,
2606
2687
  {
2607
2688
  "data-test": "fix-size-item",
2608
- "data-splunk-visualization-version": "28.5.2 - fd77ce608",
2689
+ "data-splunk-visualization-version": "28.6.0 - 92427899a",
2609
2690
  width,
2610
2691
  height,
2611
2692
  backgroundColor
@@ -2885,7 +2966,7 @@ var dataSourcesSplitByAggregationsUnknown = (dataSource) => {
2885
2966
  const columns = (_d = (_c = dataSource == null ? void 0 : dataSource.primary) == null ? void 0 : _c.data) == null ? void 0 : _d.columns;
2886
2967
  let splitDataSources = null;
2887
2968
  let errorCode = null;
2888
- if (fields && fields.length) {
2969
+ if (fields == null ? void 0 : fields.length) {
2889
2970
  splitDataSources = {};
2890
2971
  for (let i = 0; i < fields.length; i += 1) {
2891
2972
  const fieldName = fields[i].name;
@@ -2936,7 +3017,7 @@ var dataSourcesSplitByAggregationsTimechartAndChart = (dataSource) => {
2936
3017
  }
2937
3018
  });
2938
3019
  });
2939
- } else if ((!splitByFields || !splitByFields.length) && fields.length > 1) {
3020
+ } else if (!(splitByFields == null ? void 0 : splitByFields.length) && fields.length > 1) {
2940
3021
  splitDataSources = {};
2941
3022
  for (let i = 1; i < fields.length; i += 1) {
2942
3023
  const fieldName = fields[i].name;
@@ -2992,7 +3073,7 @@ var dataSourcesSplitByModeTimechart = (dataSource, splitBy) => {
2992
3073
  if (fields.length > 0) {
2993
3074
  splitByFields = (0, trellisUtils_exports.extractSplitByFieldsChartFields)(fields);
2994
3075
  }
2995
- if (splitByFields && splitByFields.indexOf(splitBy) > -1) {
3076
+ if (splitByFields == null ? void 0 : splitByFields.includes(splitBy)) {
2996
3077
  splitDataSources = {};
2997
3078
  const dataSourceKeys = (0, trellisUtils_exports.extractDataSourceAggregationKeysChart)(fields);
2998
3079
  const valueKeys = [];
@@ -3023,6 +3104,68 @@ var dataSourcesSplitByModeTimechart = (dataSource, splitBy) => {
3023
3104
  }
3024
3105
  return { splitDataSources, errorCode };
3025
3106
  };
3107
+ var splitRowWise = (dataSource, columns, fields, otherSplitBy, dataSourceKeys, nonDataSourceAggregations) => {
3108
+ const splitDataSources = {};
3109
+ const valueKeys = (0, lodash_exports.cloneDeep)(columns[0]);
3110
+ valueKeys.forEach((val, idx) => {
3111
+ splitDataSources[val] = (0, lodash_exports.cloneDeep)((0, lodash_exports.omit)(dataSource, ["primary.data.fields", "primary.data.columns"]));
3112
+ splitDataSources[val].primary.data.fields = [];
3113
+ if (otherSplitBy.length) {
3114
+ splitDataSources[val].primary.data.fields = [{ name: otherSplitBy[0] }];
3115
+ }
3116
+ if (dataSourceKeys.length) {
3117
+ const columnValues = [[]];
3118
+ splitDataSources[val].primary.data.fields = [
3119
+ ...splitDataSources[val].primary.data.fields,
3120
+ ...dataSourceKeys.map((k) => ({ name: k }))
3121
+ ];
3122
+ dataSourceKeys.forEach(() => {
3123
+ columnValues.push([]);
3124
+ });
3125
+ for (let i = 1; i <= Math.ceil((fields.length - 1) / dataSourceKeys.length); i += 1) {
3126
+ columnValues[0].push(fields[i].splitby_value ? fields[i].splitby_value : fields[i].name);
3127
+ dataSourceKeys.forEach((dskey, dsIndx) => {
3128
+ const mul = (fields.length - 1) / dataSourceKeys.length;
3129
+ columnValues[dsIndx + 1].push(columns[i + dsIndx * mul][idx]);
3130
+ });
3131
+ }
3132
+ splitDataSources[val].primary.data.columns = columnValues;
3133
+ } else if (nonDataSourceAggregations.length) {
3134
+ const columnValues = [];
3135
+ fields.forEach((aggregationField, fieldIdx) => {
3136
+ if (fieldIdx > 0) {
3137
+ splitDataSources[val].primary.data.fields.push(aggregationField);
3138
+ columnValues.push([columns[fieldIdx][idx]]);
3139
+ }
3140
+ });
3141
+ splitDataSources[val].primary.data.columns = columnValues;
3142
+ }
3143
+ });
3144
+ return splitDataSources;
3145
+ };
3146
+ var splitColumnWise = (dataSource, columns, fields, otherSplitBy, dataSourceKeys) => {
3147
+ const splitDataSources = {};
3148
+ const valueKeys = [];
3149
+ for (let i = 1; i < fields.length; i += 1) {
3150
+ valueKeys.push(fields[i].splitby_value ? fields[i].splitby_value : fields[i].name);
3151
+ }
3152
+ valueKeys.forEach((val) => {
3153
+ splitDataSources[val] = (0, lodash_exports.cloneDeep)((0, lodash_exports.omit)(dataSource, ["primary.data.fields", "primary.data.columns"]));
3154
+ splitDataSources[val].primary.data.fields = [
3155
+ { name: otherSplitBy[0] },
3156
+ ...dataSourceKeys.map((k) => ({ name: k }))
3157
+ ];
3158
+ splitDataSources[val].primary.data.columns = [[...columns[0]]];
3159
+ dataSourceKeys.forEach((dsKey) => {
3160
+ fields.forEach((field, idx) => {
3161
+ if (field.data_source === dsKey && (field.splitby_value === val || field.name === val)) {
3162
+ splitDataSources[val].primary.data.columns.push([...columns[idx]]);
3163
+ }
3164
+ });
3165
+ });
3166
+ });
3167
+ return splitDataSources;
3168
+ };
3026
3169
  var dataSourcesSplitByModeChart = (dataSource, splitBy) => {
3027
3170
  var _a, _b, _c, _d;
3028
3171
  const fields = toFieldEntries((_b = (_a = dataSource == null ? void 0 : dataSource.primary) == null ? void 0 : _a.data) == null ? void 0 : _b.fields);
@@ -3033,8 +3176,7 @@ var dataSourcesSplitByModeChart = (dataSource, splitBy) => {
3033
3176
  if (fields.length > 0) {
3034
3177
  splitByFields = (0, trellisUtils_exports.extractSplitByFieldsChartFields)(fields);
3035
3178
  }
3036
- if (splitByFields && splitByFields.indexOf(splitBy) > -1) {
3037
- splitDataSources = {};
3179
+ if (splitByFields == null ? void 0 : splitByFields.includes(splitBy)) {
3038
3180
  const splitByFieldIdx = splitByFields.findIndex((f) => f === splitBy);
3039
3181
  const otherSplitBy = splitByFields.filter((f) => f !== splitBy);
3040
3182
  const dataSourceKeys = (0, trellisUtils_exports.extractDataSourceAggregationKeysChart)(fields);
@@ -3045,71 +3187,16 @@ var dataSourcesSplitByModeChart = (dataSource, splitBy) => {
3045
3187
  }
3046
3188
  }
3047
3189
  if (splitByFieldIdx === 0) {
3048
- const valueKeys = (0, lodash_exports.cloneDeep)(columns[0]);
3049
- valueKeys.forEach((val, idx) => {
3050
- splitDataSources[val] = (0, lodash_exports.cloneDeep)(
3051
- (0, lodash_exports.omit)(dataSource, ["primary.data.fields", "primary.data.columns"])
3052
- );
3053
- splitDataSources[val].primary.data.fields = [];
3054
- if (otherSplitBy.length) {
3055
- splitDataSources[val].primary.data.fields = [{ name: otherSplitBy[0] }];
3056
- }
3057
- if (dataSourceKeys.length) {
3058
- const columnValues = [[]];
3059
- splitDataSources[val].primary.data.fields = [
3060
- ...splitDataSources[val].primary.data.fields,
3061
- ...dataSourceKeys.map((k) => ({
3062
- name: k
3063
- }))
3064
- ];
3065
- dataSourceKeys.forEach(() => {
3066
- columnValues.push([]);
3067
- });
3068
- for (let i = 1; i <= Math.ceil((fields.length - 1) / dataSourceKeys.length); i += 1) {
3069
- columnValues[0].push(
3070
- fields[i].splitby_value ? fields[i].splitby_value : fields[i].name
3071
- );
3072
- dataSourceKeys.forEach((dskey, dsIndx) => {
3073
- const mul = (fields.length - 1) / dataSourceKeys.length;
3074
- columnValues[dsIndx + 1].push(columns[i + dsIndx * mul][idx]);
3075
- });
3076
- }
3077
- splitDataSources[val].primary.data.columns = columnValues;
3078
- } else if (nonDataSourceAggregations.length) {
3079
- const columnValues = [];
3080
- fields.forEach((aggregationField, fieldIdx) => {
3081
- if (fieldIdx > 0) {
3082
- splitDataSources[val].primary.data.fields.push(aggregationField);
3083
- columnValues.push([columns[fieldIdx][idx]]);
3084
- }
3085
- });
3086
- splitDataSources[val].primary.data.columns = columnValues;
3087
- }
3088
- });
3190
+ splitDataSources = splitRowWise(
3191
+ dataSource,
3192
+ columns,
3193
+ fields,
3194
+ otherSplitBy,
3195
+ dataSourceKeys,
3196
+ nonDataSourceAggregations
3197
+ );
3089
3198
  } else {
3090
- const valueKeys = [];
3091
- for (let i = 1; i < fields.length; i += 1) {
3092
- valueKeys.push(fields[i].splitby_value ? fields[i].splitby_value : fields[i].name);
3093
- }
3094
- valueKeys.forEach((val) => {
3095
- splitDataSources[val] = (0, lodash_exports.cloneDeep)(
3096
- (0, lodash_exports.omit)(dataSource, ["primary.data.fields", "primary.data.columns"])
3097
- );
3098
- splitDataSources[val].primary.data.fields = [
3099
- { name: otherSplitBy[0] },
3100
- ...dataSourceKeys.map((k) => ({
3101
- name: k
3102
- }))
3103
- ];
3104
- splitDataSources[val].primary.data.columns = [[...columns[0]]];
3105
- dataSourceKeys.forEach((dsKey) => {
3106
- fields.forEach((field, idx) => {
3107
- if (field.data_source === dsKey && (field.splitby_value === val || field.name === val)) {
3108
- splitDataSources[val].primary.data.columns.push([...columns[idx]]);
3109
- }
3110
- });
3111
- });
3112
- });
3199
+ splitDataSources = splitColumnWise(dataSource, columns, fields, otherSplitBy, dataSourceKeys);
3113
3200
  }
3114
3201
  } else {
3115
3202
  errorCode = "INVALID_SPLIT_BY_FIELD";
@@ -3127,7 +3214,7 @@ var dataSourcesSplitByModeStatsorUnknown = (dataSource, splitBy, splitMode) => {
3127
3214
  splitByFields = splitMode !== trellisUtils_exports.UNKNOWN ? (0, trellisUtils_exports.extractSplitByFieldsForStats)(fields) : (0, trellisUtils_exports.extractSplitByFieldsForUnknown)(fields);
3128
3215
  }
3129
3216
  const splitByIndex = fields.findIndex((field) => field.name === splitBy);
3130
- if (splitByFields && splitByFields.indexOf(splitBy) > -1) {
3217
+ if (splitByFields == null ? void 0 : splitByFields.includes(splitBy)) {
3131
3218
  const splitByColumn = (_f = (_e = dataSource == null ? void 0 : dataSource.primary) == null ? void 0 : _e.data) == null ? void 0 : _f.columns[splitByIndex];
3132
3219
  splitDataSources = {};
3133
3220
  splitByColumn.forEach((val, idx) => {
@@ -3249,6 +3336,15 @@ var defaultImport36 = __toESM(require("@splunk/react-icons/Triangle"));
3249
3336
  __reExport(Triangle_exports, require("@splunk/react-icons/Triangle"));
3250
3337
  var Triangle_default = "default" in defaultImport36 ? defaultImport36.default : defaultImport36;
3251
3338
 
3339
+ // esm-externals:@splunk/visualizations-shared/propUtils
3340
+ var propUtils_exports = {};
3341
+ __export(propUtils_exports, {
3342
+ default: () => propUtils_default
3343
+ });
3344
+ var defaultImport37 = __toESM(require("@splunk/visualizations-shared/propUtils"));
3345
+ __reExport(propUtils_exports, require("@splunk/visualizations-shared/propUtils"));
3346
+ var propUtils_default = "default" in defaultImport37 ? defaultImport37.default : defaultImport37;
3347
+
3252
3348
  // src/common/chartingUtils.ts
3253
3349
  var DEFAULT_LINE_WIDTH = 2;
3254
3350
  var getAnnotationsForCanvas = ({
@@ -3312,9 +3408,9 @@ var shouldEnableSearchZoom = (eventHandlers = [], xField = "") => {
3312
3408
  const xAxisIsTime = xField === "_time";
3313
3409
  return !!rangeSelectEventHandler && xAxisIsTime;
3314
3410
  };
3315
- var canvasSupportedTimeSeriesCharts = ["splunk.line"];
3411
+ var canvasSupportedTimeSeriesCharts = ["splunk.line", "splunk.area"];
3316
3412
  var isTimeSeriesCanvasRenderSupported = (vizConfigKey) => {
3317
- return canvasSupportedTimeSeriesCharts.indexOf(vizConfigKey) > -1;
3413
+ return canvasSupportedTimeSeriesCharts.includes(vizConfigKey);
3318
3414
  };
3319
3415
  var filterChartDataFromInternalFields = (chartData) => {
3320
3416
  const { fields, columns } = chartData;
@@ -3469,46 +3565,66 @@ var getY2ScaleConfig = (label, axisAbbreviation, axisScale, roundAxisLabelsToInt
3469
3565
  }
3470
3566
  return y2Config;
3471
3567
  };
3472
- var getSeriesOverrides = (yfields, y2fields, lineWidth, overlayFields, y2Enabled, nullValueMode, markerDisplay, lineDashStyle, lineDashStylesByField, stepPosition, stepPositionsByField) => {
3568
+ var getSeriesType = (isOverlay, isAreaChart, isStacked) => {
3569
+ if (isOverlay) return "line";
3570
+ if (!isAreaChart) return void 0;
3571
+ return isStacked ? "stacked-area" : "area";
3572
+ };
3573
+ var getY2Scale = (field, y2fields, overlayFields) => {
3574
+ const assignToY2 = (y2fields == null ? void 0 : y2fields.length) > 0 && y2fields.includes(field) || !(y2fields == null ? void 0 : y2fields.length) && (overlayFields == null ? void 0 : overlayFields.includes(field));
3575
+ return assignToY2 ? "y2" : "y";
3576
+ };
3577
+ var getSeriesOverrides = (opts) => {
3578
+ var _a;
3579
+ const {
3580
+ yfields,
3581
+ y2fields,
3582
+ lineWidth,
3583
+ overlayFields,
3584
+ y2Enabled,
3585
+ nullValueMode,
3586
+ markerDisplay,
3587
+ lineDashStyle,
3588
+ lineDashStylesByField,
3589
+ stepPosition,
3590
+ stepPositionsByField,
3591
+ type,
3592
+ stackMode,
3593
+ showLines
3594
+ } = opts;
3473
3595
  const seriesConfig = {};
3474
3596
  let spanGaps;
3475
- let replaceNullsWithZero;
3476
3597
  if (nullValueMode === "gaps") {
3477
3598
  spanGaps = false;
3478
- } else if (nullValueMode === "connect" || nullValueMode === "zero") {
3599
+ } else if (nullValueMode != null) {
3479
3600
  spanGaps = true;
3480
- if (nullValueMode === "zero") {
3481
- replaceNullsWithZero = true;
3482
- }
3601
+ } else {
3602
+ spanGaps = void 0;
3483
3603
  }
3484
- yfields.forEach((field) => {
3604
+ const replaceNullsWithZero = nullValueMode === "zero" ? true : void 0;
3605
+ const isAreaChart = type === "area";
3606
+ const isStacked = isAreaChart && (stackMode === "stacked" || stackMode === "stacked100");
3607
+ const areaFields = isAreaChart ? yfields.filter((f) => !(overlayFields == null ? void 0 : overlayFields.includes(f))) : yfields;
3608
+ const overlayFieldsInOrder = (_a = overlayFields == null ? void 0 : overlayFields.filter((f) => yfields.includes(f))) != null ? _a : [];
3609
+ const orderedFields = isAreaChart ? [...areaFields, ...overlayFieldsInOrder] : yfields;
3610
+ orderedFields.forEach((field) => {
3611
+ var _a2;
3612
+ const isOverlay = (_a2 = overlayFields == null ? void 0 : overlayFields.includes(field)) != null ? _a2 : false;
3613
+ const isPercent = isAreaChart && stackMode === "stacked100" && !isOverlay;
3614
+ const shouldHideAreaOutline = isAreaChart && showLines === false && !isOverlay;
3485
3615
  seriesConfig[field] = {
3486
- overrides: { width: lineWidth != null ? lineWidth : DEFAULT_LINE_WIDTH }
3616
+ overrides: __spreadValues({
3617
+ width: shouldHideAreaOutline ? 0 : lineWidth != null ? lineWidth : DEFAULT_LINE_WIDTH
3618
+ }, isPercent ? { stacking: { mode: "percent", group: "A" } } : {})
3487
3619
  };
3488
- if (spanGaps !== void 0) {
3489
- seriesConfig[field].overrides.spanGaps = spanGaps;
3490
- }
3491
- if (y2Enabled) {
3492
- const shouldAssignToY2 = (
3493
- // If y2Fields are present, assign all y2Fields to y2 scale
3494
- (y2fields == null ? void 0 : y2fields.length) > 0 && y2fields.includes(field) || // Else, assign all overlayFields to y2 scale
3495
- (!y2fields || y2fields.length === 0) && (overlayFields == null ? void 0 : overlayFields.includes(field))
3496
- );
3497
- if (shouldAssignToY2) {
3498
- seriesConfig[field].overrides.scale = "y2";
3499
- } else {
3500
- seriesConfig[field].overrides.scale = "y";
3501
- }
3502
- }
3503
- if (overlayFields == null ? void 0 : overlayFields.includes(field)) {
3504
- seriesConfig[field].type = "line";
3505
- }
3506
- if (markerDisplay !== void 0) {
3507
- seriesConfig[field].markerDisplay = markerDisplay;
3508
- }
3509
- const fieldDashStyle = (lineDashStylesByField == null ? void 0 : lineDashStylesByField[field]) || lineDashStyle;
3510
- if (fieldDashStyle) {
3511
- seriesConfig[field].lineDashStyle = fieldDashStyle;
3620
+ const seriesType = getSeriesType(isOverlay, isAreaChart, isStacked);
3621
+ if (seriesType !== void 0) seriesConfig[field].type = seriesType;
3622
+ if (spanGaps !== void 0) seriesConfig[field].overrides.spanGaps = spanGaps;
3623
+ if (y2Enabled) seriesConfig[field].overrides.scale = getY2Scale(field, y2fields, overlayFields);
3624
+ if (markerDisplay !== void 0) seriesConfig[field].markerDisplay = markerDisplay;
3625
+ if (!isAreaChart || isOverlay) {
3626
+ const fieldDashStyle = (lineDashStylesByField == null ? void 0 : lineDashStylesByField[field]) || lineDashStyle;
3627
+ if (fieldDashStyle) seriesConfig[field].lineDashStyle = fieldDashStyle;
3512
3628
  }
3513
3629
  const hasFieldStepPosition = Object.hasOwn(stepPositionsByField || {}, field);
3514
3630
  const fieldStepPosition = hasFieldStepPosition ? stepPositionsByField == null ? void 0 : stepPositionsByField[field] : stepPosition;
@@ -3674,6 +3790,38 @@ var parseArrayOption = (value) => {
3674
3790
  }
3675
3791
  return void 0;
3676
3792
  };
3793
+ var getAreaOpacityForCanvas = (areaOpacity) => (
3794
+ // Preserve legacy visualizations behavior where area opacity is squared to match charting output.
3795
+ areaOpacity !== void 0 && areaOpacity !== null ? __pow(areaOpacity, 2) : areaOpacity
3796
+ );
3797
+ var parseTickIntervalOption = (simpleXMLValue, canvasValue) => {
3798
+ if (simpleXMLValue) return Number(simpleXMLValue);
3799
+ if (canvasValue) return Number(canvasValue);
3800
+ return void 0;
3801
+ };
3802
+ var getYAxisTitles = ({
3803
+ y2Enabled,
3804
+ yFields,
3805
+ y2Fields,
3806
+ overlayFields,
3807
+ yAxisTitleText,
3808
+ yAxisTitleVisibility,
3809
+ y2AxisTitleText,
3810
+ y2AxisTitleVisibility,
3811
+ containerHeight
3812
+ }) => {
3813
+ const yFieldsForTitle = y2Enabled ? yFields.filter((field) => !y2Fields.includes(field)) : yFields;
3814
+ const fieldsForY2Axis = y2Fields.length > 0 ? y2Fields : overlayFields;
3815
+ const yAxisTitle = ellipsisAxisTitle(
3816
+ getComputedAxisTitles(yAxisTitleText, yFieldsForTitle, yAxisTitleVisibility),
3817
+ containerHeight
3818
+ );
3819
+ const y2AxisTitle = ellipsisAxisTitle(
3820
+ getComputedAxisTitles(y2AxisTitleText, fieldsForY2Axis, y2AxisTitleVisibility),
3821
+ containerHeight
3822
+ );
3823
+ return { yAxisTitle, y2AxisTitle };
3824
+ };
3677
3825
  var TimeSeriesChartWrapper = (props) => {
3678
3826
  var _b, _c, _d;
3679
3827
  const _a = props, {
@@ -3763,6 +3911,8 @@ var TimeSeriesChartWrapper = (props) => {
3763
3911
  "chart.overlayFields": overlayFieldsStr,
3764
3912
  "chart.nullValueMode": nullValueMode,
3765
3913
  "chart.showDataLabels": showDataLabels,
3914
+ "chart.showLines": showLines,
3915
+ "chart.stackMode": stackMode,
3766
3916
  lineWidth,
3767
3917
  lineDashStyle,
3768
3918
  fieldDashStyles: lineDashStylesByFieldStr,
@@ -3791,7 +3941,10 @@ var TimeSeriesChartWrapper = (props) => {
3791
3941
  yAxisMinorTickSize,
3792
3942
  y2AxisMinorTickSize,
3793
3943
  showYAxisWithZero: showYAxisWithZeroFromOptions,
3794
- showY2AxisWithZero: showY2AxisWithZeroFromOptions
3944
+ showY2AxisWithZero: showY2AxisWithZeroFromOptions,
3945
+ // area only props
3946
+ areaFillOpacity: areaOpacity,
3947
+ chart: chartType
3795
3948
  } = options;
3796
3949
  const dataValuesDisplay = showDataLabels === "none" ? "off" : showDataLabels;
3797
3950
  const showYAxisWithZero = showYAxisWithZeroFromProps != null ? showYAxisWithZeroFromProps : showYAxisWithZeroFromOptions;
@@ -3808,13 +3961,11 @@ var TimeSeriesChartWrapper = (props) => {
3808
3961
  const yAxisMax = parseAxisValue(yAxisMaxRaw);
3809
3962
  const y2AxisMin = parseAxisValue(y2AxisMinRaw);
3810
3963
  const y2AxisMax = parseAxisValue(y2AxisMaxRaw);
3811
- const parseTickInterval = (simpleXMLValue, canvasValue) => {
3812
- if (simpleXMLValue) return Number(simpleXMLValue);
3813
- if (canvasValue) return Number(canvasValue);
3814
- return void 0;
3815
- };
3816
- const yAxisMajorTickIntervalNum = parseTickInterval(yAxisMajorUnitFromSimpleXML, yAxisMajorTickInterval);
3817
- const y2AxisMajorTickIntervalNum = parseTickInterval(
3964
+ const yAxisMajorTickIntervalNum = parseTickIntervalOption(
3965
+ yAxisMajorUnitFromSimpleXML,
3966
+ yAxisMajorTickInterval
3967
+ );
3968
+ const y2AxisMajorTickIntervalNum = parseTickIntervalOption(
3818
3969
  y2AxisMajorUnitFromSimpleXML,
3819
3970
  y2AxisMajorTickInterval
3820
3971
  );
@@ -3823,6 +3974,7 @@ var TimeSeriesChartWrapper = (props) => {
3823
3974
  const y2AxisMajorTickSizeNum = y2AxisMajorTickSize != null ? Number(y2AxisMajorTickSize) : void 0;
3824
3975
  const yAxisMinorTickSizeNum = yAxisMinorTickSize != null ? Number(yAxisMinorTickSize) : void 0;
3825
3976
  const y2AxisMinorTickSizeNum = y2AxisMinorTickSize != null ? Number(y2AxisMinorTickSize) : void 0;
3977
+ const areaOpacityForCanvas = getAreaOpacityForCanvas(areaOpacity);
3826
3978
  const seriesColors = seriesColorsStr ? JSON.parse(seriesColorsStr) : void 0;
3827
3979
  const seriesColorsByField = fieldColors ? JSON.parse(fieldColors) : void 0;
3828
3980
  const lineDashStylesByField = lineDashStylesByFieldStr ? JSON.parse(lineDashStylesByFieldStr) : void 0;
@@ -3853,26 +4005,40 @@ var TimeSeriesChartWrapper = (props) => {
3853
4005
  );
3854
4006
  let xAxisTitle = getComputedAxisTitles(xAxisTitleText, [xField], xAxisTitleVisibility);
3855
4007
  xAxisTitle = ellipsisAxisTitle(xAxisTitle, containerWidth);
3856
- const yFieldsForTitle = y2Enabled ? yFields.filter((field) => !y2Fields.includes(field)) : yFields;
3857
- let yAxisTitle = getComputedAxisTitles(yAxisTitleText, yFieldsForTitle, yAxisTitleVisibility);
3858
- yAxisTitle = ellipsisAxisTitle(yAxisTitle, containerHeight);
3859
- const fieldsForY2Axis = y2Fields.length > 0 ? y2Fields : overlayFields;
3860
- let y2AxisTitle = getComputedAxisTitles(y2AxisTitleText, fieldsForY2Axis, y2AxisTitleVisibility);
3861
- y2AxisTitle = ellipsisAxisTitle(y2AxisTitle, containerHeight);
4008
+ const { yAxisTitle, y2AxisTitle } = getYAxisTitles({
4009
+ y2Enabled,
4010
+ yFields,
4011
+ y2Fields,
4012
+ overlayFields,
4013
+ yAxisTitleText,
4014
+ yAxisTitleVisibility,
4015
+ y2AxisTitleText,
4016
+ y2AxisTitleVisibility,
4017
+ containerHeight
4018
+ });
3862
4019
  const xScaleConfig = (0, react_exports.useMemo)(
3863
4020
  () => getXScaleConfig(xAxisTitle, xAxisLabelVisibility, xAxisLabelRotation),
3864
4021
  [xAxisTitle, xAxisLabelVisibility, xAxisLabelRotation]
3865
4022
  );
4023
+ const isStacked100 = stackMode === "stacked100";
3866
4024
  const yScaleConfig = (0, react_exports.useMemo)(
3867
- () => getYScaleConfig(
3868
- yAxisTitle,
3869
- yAxisAbbreviation,
3870
- yAxisScale,
3871
- yAxisLabelVisibility,
3872
- yAxisMin,
3873
- yAxisMax
3874
- ),
3875
- [yAxisTitle, yAxisAbbreviation, yAxisScale, yAxisLabelVisibility, yAxisMin, yAxisMax]
4025
+ () => {
4026
+ const config2 = getYScaleConfig(
4027
+ yAxisTitle,
4028
+ yAxisAbbreviation,
4029
+ yAxisScale,
4030
+ yAxisLabelVisibility,
4031
+ yAxisMin,
4032
+ yAxisMax
4033
+ );
4034
+ if (isStacked100) {
4035
+ config2.y.tickFmt = (v) => `${Math.round(v * 100)}%`;
4036
+ config2.y.range = () => [0, 1];
4037
+ }
4038
+ return config2;
4039
+ },
4040
+ // eslint-disable-next-line react-hooks/exhaustive-deps
4041
+ [yAxisTitle, yAxisAbbreviation, yAxisScale, yAxisLabelVisibility, yAxisMin, yAxisMax, isStacked100]
3876
4042
  );
3877
4043
  const y2ScaleConfig = (0, react_exports.useMemo)(() => {
3878
4044
  if (y2Enabled) {
@@ -3904,10 +4070,11 @@ var TimeSeriesChartWrapper = (props) => {
3904
4070
  ];
3905
4071
  chartData.fields = filteredChartData.fields;
3906
4072
  chartData.columns = seriesDataFormatted;
4073
+ const normalizedStackMode = stackMode === "stacked" || stackMode === "stacked100" ? stackMode : "auto";
3907
4074
  const seriesOverrides = (0, react_exports.useMemo)(
3908
- () => getSeriesOverrides(
3909
- yFields,
3910
- y2Fields,
4075
+ () => getSeriesOverrides({
4076
+ yfields: yFields,
4077
+ y2fields: y2Fields,
3911
4078
  lineWidth,
3912
4079
  overlayFields,
3913
4080
  y2Enabled,
@@ -3916,8 +4083,11 @@ var TimeSeriesChartWrapper = (props) => {
3916
4083
  lineDashStyle,
3917
4084
  lineDashStylesByField,
3918
4085
  stepPosition,
3919
- stepPositionsByField
3920
- ),
4086
+ stepPositionsByField,
4087
+ type: chartType,
4088
+ stackMode: normalizedStackMode,
4089
+ showLines
4090
+ }),
3921
4091
  [
3922
4092
  yFields,
3923
4093
  y2Fields,
@@ -3929,7 +4099,10 @@ var TimeSeriesChartWrapper = (props) => {
3929
4099
  lineDashStyle,
3930
4100
  lineDashStylesByField,
3931
4101
  stepPosition,
3932
- stepPositionsByField
4102
+ stepPositionsByField,
4103
+ chartType,
4104
+ normalizedStackMode,
4105
+ showLines
3933
4106
  ]
3934
4107
  );
3935
4108
  const chartingEventAnnotations = (0, react_exports.useMemo)(
@@ -3997,50 +4170,54 @@ var TimeSeriesChartWrapper = (props) => {
3997
4170
  react_exports.useEffect(() => {
3998
4171
  additionalTooltipValuesRef.current = additionalTooltipValues;
3999
4172
  }, [additionalTooltipValues]);
4173
+ const handleCrosshairMouseout = react_exports.useCallback(() => {
4174
+ if (onPointMouseOut && lastPayloadRef.current) {
4175
+ onPointMouseOut({
4176
+ type: "point.mouseout",
4177
+ originalEvent: lastOriginalEventRef.current,
4178
+ payload: lastPayloadRef.current
4179
+ });
4180
+ }
4181
+ previousMouseoverPayloadRef.current = null;
4182
+ }, [onPointMouseOut]);
4000
4183
  const handleChartCrosshairChange = react_exports.useCallback(
4001
4184
  (event) => {
4002
- if (onPointMouseOver || onPointMouseOut) {
4003
- if (!event) {
4004
- if (onPointMouseOut && lastPayloadRef.current) {
4005
- onPointMouseOut({
4006
- type: "point.mouseout",
4007
- originalEvent: lastOriginalEventRef.current,
4008
- payload: lastPayloadRef.current
4009
- });
4010
- }
4011
- previousMouseoverPayloadRef.current = null;
4012
- return;
4013
- }
4014
- const payload = __spreadProps(__spreadValues({}, (0, lodash_exports.pick)(event, "value", "seriesKey", "time", "index", "seriesIndex")), {
4015
- name: event.seriesKey
4185
+ if (!onPointMouseOver && !onPointMouseOut) {
4186
+ return;
4187
+ }
4188
+ if (!event) {
4189
+ handleCrosshairMouseout();
4190
+ return;
4191
+ }
4192
+ const payload = __spreadProps(__spreadValues({}, (0, lodash_exports.pick)(event, "value", "seriesKey", "time", "index", "seriesIndex")), {
4193
+ name: event.seriesKey
4194
+ });
4195
+ delete payload.seriesKey;
4196
+ if (event.rowContext) {
4197
+ Object.assign(
4198
+ payload,
4199
+ Object.keys(event.rowContext).reduce((acc, fieldName) => {
4200
+ acc[`row.${fieldName}.value`] = event.rowContext[fieldName];
4201
+ return acc;
4202
+ }, {})
4203
+ );
4204
+ }
4205
+ const updatedPayload = appendTrellisToPayload2(payload, trellisKey, trellisSplitBy);
4206
+ if (!hasMouseoverPayloadChanged(updatedPayload, previousMouseoverPayloadRef.current)) {
4207
+ return;
4208
+ }
4209
+ lastPayloadRef.current = updatedPayload;
4210
+ lastOriginalEventRef.current = event;
4211
+ previousMouseoverPayloadRef.current = __spreadValues({}, updatedPayload);
4212
+ if (onPointMouseOver) {
4213
+ onPointMouseOver({
4214
+ type: "point.mouseover",
4215
+ originalEvent: event,
4216
+ payload: updatedPayload
4016
4217
  });
4017
- delete payload.seriesKey;
4018
- if (event.rowContext) {
4019
- Object.assign(
4020
- payload,
4021
- Object.keys(event.rowContext).reduce((acc, fieldName) => {
4022
- acc[`row.${fieldName}.value`] = event.rowContext[fieldName];
4023
- return acc;
4024
- }, {})
4025
- );
4026
- }
4027
- const updatedPayload = appendTrellisToPayload2(payload, trellisKey, trellisSplitBy);
4028
- if (!hasMouseoverPayloadChanged(updatedPayload, previousMouseoverPayloadRef.current)) {
4029
- return;
4030
- }
4031
- lastPayloadRef.current = updatedPayload;
4032
- lastOriginalEventRef.current = event;
4033
- previousMouseoverPayloadRef.current = __spreadValues({}, updatedPayload);
4034
- if (onPointMouseOver) {
4035
- onPointMouseOver({
4036
- type: "point.mouseover",
4037
- originalEvent: event,
4038
- payload: updatedPayload
4039
- });
4040
- }
4041
4218
  }
4042
4219
  },
4043
- [onPointMouseOver, onPointMouseOut, trellisKey, trellisSplitBy]
4220
+ [onPointMouseOver, onPointMouseOut, trellisKey, trellisSplitBy, handleCrosshairMouseout]
4044
4221
  );
4045
4222
  const dataKey = `${(_b = chartData.columns[0]) == null ? void 0 : _b[0]}-${(_c = chartData.columns[0]) == null ? void 0 : _c[chartData.columns[0].length - 1]}-${(_d = chartData.columns[0]) == null ? void 0 : _d.length}`;
4046
4223
  const memoizedChart = (0, react_exports.useMemo)(() => {
@@ -4095,7 +4272,8 @@ var TimeSeriesChartWrapper = (props) => {
4095
4272
  showXAxisLine,
4096
4273
  showYAxisLine,
4097
4274
  showY2AxisLine,
4098
- xAxisMaxLabelParts
4275
+ xAxisMaxLabelParts,
4276
+ areaOpacity: areaOpacityForCanvas
4099
4277
  }
4100
4278
  ));
4101
4279
  }, [
@@ -4147,7 +4325,8 @@ var TimeSeriesChartWrapper = (props) => {
4147
4325
  showYAxisLine,
4148
4326
  showY2AxisLine,
4149
4327
  legendMode,
4150
- xAxisMaxLabelParts
4328
+ xAxisMaxLabelParts,
4329
+ areaOpacityForCanvas
4151
4330
  ]);
4152
4331
  const memoizedVisualization = (0, react_exports.useMemo)(() => {
4153
4332
  return /* @__PURE__ */ react_exports.createElement(VizStyleWrapper_default, { backgroundColor: bgColor }, memoizedChart);
@@ -4175,6 +4354,37 @@ var TimeSeriesChartWrapper_default = TimeSeriesChartWrapper;
4175
4354
 
4176
4355
  // src/common/withDashboardViz.tsx
4177
4356
  var SanitizedTimeSeriesChartWrapper = (0, SanitizeProps_exports.withSanitizedProps)(TimeSeriesChartWrapper_default);
4357
+ var buildEventCallbackProps = (supportedEvents, evaluatedOptionsToUse, onEventTrigger) => {
4358
+ const result = {};
4359
+ Object.keys(supportedEvents).forEach((eventName) => {
4360
+ const { parentKeys, payloadKeys } = supportedEvents[eventName];
4361
+ const eventCallbackPropName = (0, lodash_exports.camelCase)(`on.${eventName}`);
4362
+ let payload = {};
4363
+ if (Array.isArray(payloadKeys) && payloadKeys.length) {
4364
+ payloadKeys.forEach((p) => {
4365
+ payload[p] = evaluatedOptionsToUse[p];
4366
+ });
4367
+ }
4368
+ result[eventCallbackPropName] = (ev) => {
4369
+ if (ev == null ? void 0 : ev.payload) {
4370
+ payload = __spreadValues({}, ev.payload);
4371
+ }
4372
+ return onEventTrigger({
4373
+ originalEvent: ev,
4374
+ payload,
4375
+ type: eventName
4376
+ });
4377
+ };
4378
+ if (parentKeys) {
4379
+ for (let i = parentKeys.length - 1; i >= 0; i -= 1) {
4380
+ const newObject = {};
4381
+ newObject[parentKeys[i]] = result[eventCallbackPropName];
4382
+ result[eventCallbackPropName] = newObject;
4383
+ }
4384
+ }
4385
+ });
4386
+ return result;
4387
+ };
4178
4388
  var withDashboardViz = (opts) => {
4179
4389
  const {
4180
4390
  ReactViz,
@@ -4232,9 +4442,7 @@ var withDashboardViz = (opts) => {
4232
4442
  const isDownsamplingEnabledByFeatureFlag = Boolean(
4233
4443
  featureFlagContext == null ? void 0 : featureFlagContext.visualizations_enableDownsampling
4234
4444
  );
4235
- const isTrellisFeatureFlagOn4 = Boolean(
4236
- featureFlagContext && featureFlagContext.visualizations_enableTrellis
4237
- );
4445
+ const isTrellisFeatureFlagOn4 = Boolean(featureFlagContext == null ? void 0 : featureFlagContext.visualizations_enableTrellis);
4238
4446
  const isTrellisOn = isTrellisFeatureFlagOn4 && ((_a = vizConfig == null ? void 0 : vizConfig.supports) == null ? void 0 : _a.includes("trellis" /* TRELLIS */)) && (options == null ? void 0 : options.splitByLayout) === "trellis" /* TRELLIS */;
4239
4447
  const isAcceleratedRenderFeatureFlagOn2 = Boolean(
4240
4448
  featureFlagContext == null ? void 0 : featureFlagContext.visualizations_enableAcceleratedRender
@@ -4399,38 +4607,12 @@ var withDashboardViz = (opts) => {
4399
4607
  }
4400
4608
  );
4401
4609
  }
4402
- const eventCallbackProps = {};
4403
- if (hasEventHandlers && mode === "view" && vizConfig.supports.indexOf("events" /* EVENTS */) > -1) {
4404
- const supportedEvents = vizConfig.events;
4405
- Object.keys(supportedEvents).forEach((eventName) => {
4406
- const { parentKeys, payloadKeys } = supportedEvents[eventName];
4407
- const eventCallbackPropName = (0, lodash_exports.camelCase)(`on.${eventName}`);
4408
- let payload = {};
4409
- if (Array.isArray(payloadKeys) && payloadKeys.length) {
4410
- payloadKeys.forEach((p) => {
4411
- payload[p] = evaluatedOptionsToUse[p];
4412
- });
4413
- }
4414
- eventCallbackProps[eventCallbackPropName] = (ev) => {
4415
- if (ev == null ? void 0 : ev.payload) {
4416
- payload = __spreadValues({}, ev.payload);
4417
- }
4418
- return onEventTrigger({
4419
- originalEvent: ev,
4420
- payload,
4421
- type: eventName
4422
- });
4423
- };
4424
- if (parentKeys) {
4425
- for (let i = parentKeys.length - 1; i >= 0; i -= 1) {
4426
- const newObject = {};
4427
- newObject[parentKeys[i]] = eventCallbackProps[eventCallbackPropName];
4428
- eventCallbackProps[eventCallbackPropName] = newObject;
4429
- }
4430
- }
4431
- });
4432
- }
4433
- const computedVizProps = computeVizProps2(__spreadProps(__spreadValues(__spreadValues(__spreadValues({}, props), evaluatedOptionsToUse), eventCallbackProps), {
4610
+ const eventCallbackProps = hasEventHandlers && mode === "view" && vizConfig.supports.includes("events" /* EVENTS */) ? buildEventCallbackProps(vizConfig.events, evaluatedOptionsToUse, onEventTrigger) : {};
4611
+ const computedVizProps = computeVizProps2(__spreadProps(__spreadValues(__spreadProps(__spreadValues(__spreadValues({}, props), evaluatedOptionsToUse), {
4612
+ // Align option transformation with the actual renderer selected below.
4613
+ // This prevents canvas-only option preservation from leaking into Highcharts mode.
4614
+ isAcceleratedRenderOn
4615
+ }), eventCallbackProps), {
4434
4616
  themeFunc
4435
4617
  }));
4436
4618
  if (useAsyncEvaluatedOptions && Object.keys(evaluatedOptionsToUse).length === 0) {
@@ -4459,15 +4641,6 @@ var withDashboardViz = (opts) => {
4459
4641
  };
4460
4642
  var withDashboardViz_default = withDashboardViz;
4461
4643
 
4462
- // esm-externals:@splunk/visualizations-shared/propUtils
4463
- var propUtils_exports = {};
4464
- __export(propUtils_exports, {
4465
- default: () => propUtils_default
4466
- });
4467
- var defaultImport37 = __toESM(require("@splunk/visualizations-shared/propUtils"));
4468
- __reExport(propUtils_exports, require("@splunk/visualizations-shared/propUtils"));
4469
- var propUtils_default = "default" in defaultImport37 ? defaultImport37.default : defaultImport37;
4470
-
4471
4644
  // src/Scatter/scatterUtils.ts
4472
4645
  var scatterOptionsSCMapping = {
4473
4646
  xAxisLabelRotation: "xAxisMajorLabelRotation",
@@ -4539,6 +4712,53 @@ __reExport(themes_exports, require("@splunk/themes"));
4539
4712
  var themes_default = "default" in defaultImport39 ? defaultImport39.default : defaultImport39;
4540
4713
 
4541
4714
  // src/common/hocs/withTrellis.tsx
4715
+ var evaluatePanelOption = (panelDataSources, allOptions, optionKey, vizContext) => {
4716
+ try {
4717
+ const evaluated = Options_exports.Options.evaluate({ context: vizContext, options: allOptions }, panelDataSources);
4718
+ const num = Number(evaluated == null ? void 0 : evaluated[optionKey]);
4719
+ return Number.isNaN(num) ? Number.NaN : num;
4720
+ } catch (e) {
4721
+ return Number.NaN;
4722
+ }
4723
+ };
4724
+ var sortTrellisKeys = (keys, trellisSortBy, trellisSortOrder, modifiedDataSourceBySplitBy, mergedOptions, vizContext) => {
4725
+ if (trellisSortBy === "name") {
4726
+ keys.sort((a, b) => {
4727
+ const cmp = a.localeCompare(b, void 0, { numeric: true, sensitivity: "base" });
4728
+ return trellisSortOrder === "descending" ? -cmp : cmp;
4729
+ });
4730
+ } else if (trellisSortBy === "value" || trellisSortBy === "trend") {
4731
+ let optionKey;
4732
+ if (trellisSortBy === "trend") {
4733
+ optionKey = "trendValue";
4734
+ } else {
4735
+ optionKey = mergedOptions.value !== void 0 ? "value" : "majorValue";
4736
+ }
4737
+ keys.sort((a, b) => {
4738
+ const valA = evaluatePanelOption(
4739
+ modifiedDataSourceBySplitBy[a],
4740
+ mergedOptions,
4741
+ optionKey,
4742
+ vizContext
4743
+ );
4744
+ const valB = evaluatePanelOption(
4745
+ modifiedDataSourceBySplitBy[b],
4746
+ mergedOptions,
4747
+ optionKey,
4748
+ vizContext
4749
+ );
4750
+ const nanA = Number.isNaN(valA);
4751
+ const nanB = Number.isNaN(valB);
4752
+ if (nanA && nanB) return 0;
4753
+ if (nanA) return 1;
4754
+ if (nanB) return -1;
4755
+ const cmp = valA - valB;
4756
+ return trellisSortOrder === "descending" ? -cmp : cmp;
4757
+ });
4758
+ } else if (trellisSortOrder === "descending") {
4759
+ keys.reverse();
4760
+ }
4761
+ };
4542
4762
  var TrellisContainer = styled_components_default.div`
4543
4763
  overflow: hidden;
4544
4764
  display: flex;
@@ -4583,6 +4803,14 @@ var showErrorMessage = (errorCode, width, height) => {
4583
4803
  }
4584
4804
  return /* @__PURE__ */ react_exports.createElement(Message_default, { width, height, message: (0, i18n_exports._)("Error render in trellis"), level: "info" });
4585
4805
  };
4806
+ var resolveTrellisSplitBy = (trellisSplitBy, fields) => {
4807
+ var _a;
4808
+ if (trellisSplitBy && trellisSplitBy.length > 0) {
4809
+ return trellisSplitBy;
4810
+ }
4811
+ const splitByPossibleFields = (0, trellisUtils_exports.getAllPossibleSplitByFields)(fields);
4812
+ return ((_a = splitByPossibleFields.fields) == null ? void 0 : _a.length) ? splitByPossibleFields.fields[0] : AGGREGATIONS;
4813
+ };
4586
4814
  var withTrellis = (Viz) => {
4587
4815
  const VizWithTrellis = (opts) => {
4588
4816
  const cachedHandleResize = react_exports.useCallback((w, h) => {
@@ -4591,7 +4819,7 @@ var withTrellis = (Viz) => {
4591
4819
  }, []);
4592
4820
  const [containerWidth, setContainerWidth] = react_exports.useState(Number(opts.width));
4593
4821
  const [containerHeight, setContainerHeight] = react_exports.useState(Number(opts.height));
4594
- const _a = opts, { options = {}, height, width } = _a, otherProps = __objRest(_a, ["options", "height", "width"]);
4822
+ const _a = opts, { options = {}, context = {}, height, width } = _a, otherProps = __objRest(_a, ["options", "context", "height", "width"]);
4595
4823
  const defaultOptions = (0, JSONSchemaUtils_exports.pickFieldFromJSONSchema)(Viz.config.optionsSchema, "default");
4596
4824
  const mergedOptions = (0, hocUtils_exports.deepMergeWithArrayPrimitiveOverrides)({}, options, defaultOptions);
4597
4825
  const {
@@ -4601,6 +4829,8 @@ var withTrellis = (Viz) => {
4601
4829
  trellisRowHeight,
4602
4830
  splitByLayout,
4603
4831
  trellisSplitBy,
4832
+ trellisSortBy,
4833
+ trellisSortOrder,
4604
4834
  trellisSharedScale,
4605
4835
  stackMode,
4606
4836
  yAxisMin,
@@ -4669,7 +4899,7 @@ var withTrellis = (Viz) => {
4669
4899
  }, [pageCount, trellisSplitBy]);
4670
4900
  (0, react_exports.useEffect)(() => {
4671
4901
  updateDataDisplay(pageNum);
4672
- }, [columns, fields, trellisSplitBy, pageNum, splitByLayout]);
4902
+ }, [columns, fields, trellisSplitBy, trellisSortBy, trellisSortOrder, pageNum, splitByLayout]);
4673
4903
  const handlePageChange = (0, react_exports.useCallback)(
4674
4904
  (event, { page }) => {
4675
4905
  setPageNum(page);
@@ -4677,9 +4907,7 @@ var withTrellis = (Viz) => {
4677
4907
  [pageNum, pagedData]
4678
4908
  );
4679
4909
  const featureFlagContext = react_exports.useContext(FeatureFlagContext_default);
4680
- const isTrellisFeatureFlagOn4 = Boolean(
4681
- featureFlagContext && featureFlagContext.visualizations_enableTrellis
4682
- );
4910
+ const isTrellisFeatureFlagOn4 = Boolean(featureFlagContext == null ? void 0 : featureFlagContext.visualizations_enableTrellis);
4683
4911
  if (!isTrellisFeatureFlagOn4 || !splitByLayout || splitByLayout !== visualization_schemas_exports.LAYOUT_TYPE.Trellis) {
4684
4912
  return /* @__PURE__ */ react_exports.createElement(Viz, __spreadValues({}, opts));
4685
4913
  }
@@ -4687,14 +4915,9 @@ var withTrellis = (Viz) => {
4687
4915
  if (noColumns || noFields) {
4688
4916
  return /* @__PURE__ */ react_exports.createElement(Message_default, { width, height, message: (0, i18n_exports._)("Loading"), level: "info" });
4689
4917
  }
4690
- let currTrellisSplitBy = trellisSplitBy;
4691
- if (!trellisSplitBy || trellisSplitBy.length === 0) {
4692
- const splitByPossibleFields = (0, trellisUtils_exports.getAllPossibleSplitByFields)(fields);
4693
- currTrellisSplitBy = splitByPossibleFields.fields && splitByPossibleFields.fields.length ? splitByPossibleFields.fields[0] : AGGREGATIONS;
4694
- }
4695
- const splitMode = (0, trellisUtils_exports.getTrellisDataSplitterMode)(fields);
4918
+ const currTrellisSplitBy = resolveTrellisSplitBy(trellisSplitBy, fields);
4696
4919
  const dataSplitResult = getTrellisDataSourcesBySplitMode(
4697
- splitMode,
4920
+ (0, trellisUtils_exports.getTrellisDataSplitterMode)(fields),
4698
4921
  dataSources,
4699
4922
  currTrellisSplitBy
4700
4923
  );
@@ -4703,12 +4926,19 @@ var withTrellis = (Viz) => {
4703
4926
  if (!modifiedDataSourceBySplitBy || Object.keys(modifiedDataSourceBySplitBy).length === 0 || dataSplitErrorCode) {
4704
4927
  return showErrorMessage(dataSplitErrorCode, width, height);
4705
4928
  }
4706
- const splitByKeysModified = modifiedDataSourceBySplitBy ? Object.keys(modifiedDataSourceBySplitBy) : [];
4707
- if (splitByKeysModified) {
4708
- showPaginator = splitByKeysModified.length > pageCount;
4709
- splitByKeys = splitByKeysModified;
4710
- totalPages = splitByKeysModified ? Math.ceil(splitByKeysModified.length / pageCount) : 0;
4711
- }
4929
+ const splitByKeysModified = Object.keys(modifiedDataSourceBySplitBy);
4930
+ const vizContext = (0, lodash_exports.defaultsDeep)({}, context, Viz.config.defaultContext);
4931
+ sortTrellisKeys(
4932
+ splitByKeysModified,
4933
+ trellisSortBy,
4934
+ trellisSortOrder,
4935
+ modifiedDataSourceBySplitBy,
4936
+ mergedOptions,
4937
+ vizContext
4938
+ );
4939
+ showPaginator = splitByKeysModified.length > pageCount;
4940
+ splitByKeys = splitByKeysModified;
4941
+ totalPages = Math.ceil(splitByKeysModified.length / pageCount);
4712
4942
  const [calculatedMin, calculatedMax] = determineMinMax(
4713
4943
  modifiedDataSourceBySplitBy,
4714
4944
  trellisSharedScale,
@@ -4742,6 +4972,7 @@ var withTrellis = (Viz) => {
4742
4972
  /* @__PURE__ */ react_exports.createElement(
4743
4973
  Viz,
4744
4974
  __spreadProps(__spreadValues({}, otherProps), {
4975
+ context,
4745
4976
  trellisKey: splitByKey,
4746
4977
  trellisSplitBy: currTrellisSplitBy,
4747
4978
  dataSources: modifiedDataSourceBySplitBy[splitByKey],