@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/Pie.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/Pie/index.ts
64
66
  var Pie_exports = {};
@@ -560,8 +562,27 @@ var TrellisTitleDiv = styled_components_default.div`
560
562
  background-color: ${(props) => props.backgroundColor};
561
563
  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.
562
564
  `;
565
+ var formatTrellisKey = (value) => {
566
+ if (value === null || value === void 0) {
567
+ return "";
568
+ }
569
+ if (typeof value === "string") {
570
+ return value;
571
+ }
572
+ if (typeof value === "number" || typeof value === "boolean") {
573
+ return value.toString();
574
+ }
575
+ if (typeof value === "symbol") {
576
+ return value.toString();
577
+ }
578
+ try {
579
+ return JSON.stringify(value);
580
+ } catch (e) {
581
+ return typeof value === "bigint" ? value.toString() : "";
582
+ }
583
+ };
563
584
  var TrellisTitle = (props) => {
564
- const titleText = String(props.trellisKey).toString();
585
+ const titleText = formatTrellisKey(props.trellisKey);
565
586
  return /* @__PURE__ */ react_exports.createElement(
566
587
  TrellisTitleDiv,
567
588
  {
@@ -799,6 +820,35 @@ var Charting = (props) => {
799
820
  });
800
821
  }
801
822
  );
823
+ const initChart = (updatedOptions, serializedTimezone, ianaTimezone, utcOffset) => {
824
+ destroyChart();
825
+ charting_bundle_default.setTheme(themeKey);
826
+ if (colorPalette.length > 0) {
827
+ charting_bundle_default.setColorPalette(colorPalette);
828
+ }
829
+ chart.current = charting_bundle_default.createChart(container.current, __spreadValues(__spreadValues(__spreadValues(__spreadProps(__spreadValues({}, updatedOptions), {
830
+ drilldown: "all"
831
+ }), typeof serializedTimezone === "string" && {
832
+ "time.serializedTz": serializedTimezone
833
+ }), typeof ianaTimezone === "string" && {
834
+ "time.ianaTimezone": ianaTimezone
835
+ }), typeof utcOffset === "number" && {
836
+ "time.timezoneOffset": utcOffset
837
+ }));
838
+ chart.current.on("pointClick", (e) => {
839
+ handleClick2(e, "point.click" /* POINT_CLICK */);
840
+ });
841
+ chart.current.on("pointMouseOver", (e) => {
842
+ handlePointMouseOver(e, "point.mouseover" /* POINT_MOUSE_OVER */);
843
+ });
844
+ chart.current.on("pointMouseOut", (e) => {
845
+ handlePointMouseOut(e, "point.mouseout" /* POINT_MOUSE_OUT */);
846
+ });
847
+ chart.current.on("legendClick", (e) => {
848
+ handleClick2(e, "legend.click" /* LEGEND_CLICK */);
849
+ });
850
+ chart.current.on("chartRangeSelect", handleSelect);
851
+ };
802
852
  const drawChart = () => {
803
853
  const updatedOptions = __spreadProps(__spreadValues({}, options), { shouldColorizeTooltipData: false });
804
854
  const computedChartSize = computeChartingSize();
@@ -822,33 +872,7 @@ var Charting = (props) => {
822
872
  }
823
873
  try {
824
874
  if (needsInit.current) {
825
- destroyChart();
826
- charting_bundle_default.setTheme(themeKey);
827
- if (colorPalette.length > 0) {
828
- charting_bundle_default.setColorPalette(colorPalette);
829
- }
830
- chart.current = charting_bundle_default.createChart(container.current, __spreadValues(__spreadValues(__spreadValues(__spreadProps(__spreadValues({}, updatedOptions), {
831
- drilldown: "all"
832
- }), typeof serializedTimezone === "string" && {
833
- "time.serializedTz": serializedTimezone
834
- }), typeof ianaTimezone === "string" && {
835
- "time.ianaTimezone": ianaTimezone
836
- }), typeof utcOffset === "number" && {
837
- "time.timezoneOffset": utcOffset
838
- }));
839
- chart.current.on("pointClick", (e) => {
840
- handleClick2(e, "point.click" /* POINT_CLICK */);
841
- });
842
- chart.current.on("pointMouseOver", (e) => {
843
- handlePointMouseOver(e, "point.mouseover" /* POINT_MOUSE_OVER */);
844
- });
845
- chart.current.on("pointMouseOut", (e) => {
846
- handlePointMouseOut(e, "point.mouseout" /* POINT_MOUSE_OUT */);
847
- });
848
- chart.current.on("legendClick", (e) => {
849
- handleClick2(e, "legend.click" /* LEGEND_CLICK */);
850
- });
851
- chart.current.on("chartRangeSelect", handleSelect);
875
+ initChart(updatedOptions, serializedTimezone, ianaTimezone, utcOffset);
852
876
  }
853
877
  if (needsRedraw.current) {
854
878
  charting_bundle_default.setTheme(themeKey);
@@ -1039,26 +1063,59 @@ var isTrellisEnabled = ({ options, featureFlags }) => {
1039
1063
  const { splitByLayout = visualization_schemas_exports.LAYOUT_TYPE.Off } = options;
1040
1064
  return isTrellisFeatureFlagOn({ featureFlags }) && splitByLayout === visualization_schemas_exports.LAYOUT_TYPE.Trellis;
1041
1065
  };
1042
- var TrellisEditorConfig = [
1043
- [
1044
- {
1045
- label: (0, i18n_exports._)("Trellis layout"),
1046
- option: "splitByLayout",
1047
- editor: "editor.toggle",
1048
- showEditor: isTrellisFeatureFlagOn
1049
- }
1050
- ],
1051
- [
1052
- {
1053
- label: (0, i18n_exports._)("Split by"),
1054
- option: "trellisSplitBy",
1055
- editor: "editor.trellisSplitBy",
1056
- editorProps: {
1057
- dataSourceKey: "primary"
1058
- },
1059
- showEditor: isTrellisEnabled
1060
- }
1061
- ],
1066
+ var sortByValuesBase = [
1067
+ { label: (0, i18n_exports._)("Result"), value: "result" },
1068
+ { label: (0, i18n_exports._)("Name"), value: "name" }
1069
+ ];
1070
+ var sortByValuesWithValue = [...sortByValuesBase, { label: (0, i18n_exports._)("Value"), value: "value" }];
1071
+ var sortByValuesWithValueAndTrend = [
1072
+ ...sortByValuesBase,
1073
+ { label: (0, i18n_exports._)("Value"), value: "value" },
1074
+ { label: (0, i18n_exports._)("Trend"), value: "trend" }
1075
+ ];
1076
+ var makeSortRow = (sortByValues) => [
1077
+ {
1078
+ label: (0, i18n_exports._)("Sort by"),
1079
+ option: "trellisSortBy",
1080
+ editor: "editor.select",
1081
+ editorProps: {
1082
+ values: sortByValues
1083
+ },
1084
+ showEditor: isTrellisEnabled
1085
+ },
1086
+ {
1087
+ label: (0, i18n_exports._)("Sort order"),
1088
+ option: "trellisSortOrder",
1089
+ editor: "editor.select",
1090
+ editorProps: {
1091
+ values: [
1092
+ { label: (0, i18n_exports._)("Ascending"), value: "ascending" },
1093
+ { label: (0, i18n_exports._)("Descending"), value: "descending" }
1094
+ ]
1095
+ },
1096
+ showEditor: isTrellisEnabled
1097
+ }
1098
+ ];
1099
+ var trellisLayoutRow = [
1100
+ {
1101
+ label: (0, i18n_exports._)("Trellis layout"),
1102
+ option: "splitByLayout",
1103
+ editor: "editor.toggle",
1104
+ showEditor: isTrellisFeatureFlagOn
1105
+ }
1106
+ ];
1107
+ var trellisSplitByRow = [
1108
+ {
1109
+ label: (0, i18n_exports._)("Split by"),
1110
+ option: "trellisSplitBy",
1111
+ editor: "editor.trellisSplitBy",
1112
+ editorProps: {
1113
+ dataSourceKey: "primary"
1114
+ },
1115
+ showEditor: isTrellisEnabled
1116
+ }
1117
+ ];
1118
+ var trellisLayoutRows = [
1062
1119
  [
1063
1120
  {
1064
1121
  label: (0, i18n_exports._)("Number of columns"),
@@ -1102,6 +1159,24 @@ var TrellisEditorConfig = [
1102
1159
  }
1103
1160
  ]
1104
1161
  ];
1162
+ var TrellisEditorConfig = [
1163
+ trellisLayoutRow,
1164
+ trellisSplitByRow,
1165
+ makeSortRow(sortByValuesBase),
1166
+ ...trellisLayoutRows
1167
+ ];
1168
+ var GaugeTrellisEditorConfig = [
1169
+ trellisLayoutRow,
1170
+ trellisSplitByRow,
1171
+ makeSortRow(sortByValuesWithValue),
1172
+ ...trellisLayoutRows
1173
+ ];
1174
+ var SingleValueTrellisEditorConfig = [
1175
+ trellisLayoutRow,
1176
+ trellisSplitByRow,
1177
+ makeSortRow(sortByValuesWithValueAndTrend),
1178
+ ...trellisLayoutRows
1179
+ ];
1105
1180
  var TimechartTrellisEditorConfig = [
1106
1181
  [
1107
1182
  {
@@ -1109,7 +1184,6 @@ var TimechartTrellisEditorConfig = [
1109
1184
  option: "splitByLayout",
1110
1185
  editor: "editor.toggle",
1111
1186
  showEditor: isTrellisFeatureFlagOn,
1112
- // add help text for timecharts
1113
1187
  editorProps: {
1114
1188
  help: (0, i18n_exports._)(
1115
1189
  "Y2-axis and overlay field configurations are not supported when trellis is enabled."
@@ -1118,7 +1192,9 @@ var TimechartTrellisEditorConfig = [
1118
1192
  }
1119
1193
  }
1120
1194
  ],
1121
- ...TrellisEditorConfig.slice(1),
1195
+ trellisSplitByRow,
1196
+ makeSortRow(sortByValuesBase),
1197
+ ...trellisLayoutRows,
1122
1198
  [
1123
1199
  {
1124
1200
  label: (0, i18n_exports._)("Shared y-axis scale"),
@@ -1451,7 +1527,7 @@ var prop_types_default = "default" in defaultImport31 ? defaultImport31.default
1451
1527
  var INITIAL_HEIGHT = 250;
1452
1528
  var SplunkVisualization = class {
1453
1529
  };
1454
- SplunkVisualization.propTypes = {
1530
+ __publicField(SplunkVisualization, "propTypes", {
1455
1531
  /**
1456
1532
  * display mode
1457
1533
  */
@@ -1527,11 +1603,11 @@ SplunkVisualization.propTypes = {
1527
1603
  * A callback to request new data with updated request params
1528
1604
  */
1529
1605
  onRequestParamsChange: prop_types_exports.func
1530
- };
1606
+ });
1531
1607
  /**
1532
1608
  *
1533
1609
  */
1534
- SplunkVisualization.defaults = {
1610
+ __publicField(SplunkVisualization, "defaults", {
1535
1611
  // BaseVisualization in dashboard-visualizations uses 100% for width but 250 for height
1536
1612
  width: "100%",
1537
1613
  height: INITIAL_HEIGHT,
@@ -1546,7 +1622,7 @@ SplunkVisualization.defaults = {
1546
1622
  onComputedProps: () => ({}),
1547
1623
  loading: false,
1548
1624
  onRequestParamsChange: lodash_exports.noop
1549
- };
1625
+ });
1550
1626
  var SplunkVisualization_default = SplunkVisualization;
1551
1627
 
1552
1628
  // src/common/hooks/useSorting.ts
@@ -1597,9 +1673,9 @@ var usePaginationParams = ({
1597
1673
  meta,
1598
1674
  onRequestParamsChange
1599
1675
  }) => {
1600
- const totalCount = meta && meta.totalCount || 0;
1601
- const offset = requestParams && requestParams.offset || 0;
1602
- const count = requestParams && requestParams.count;
1676
+ const totalCount = (meta == null ? void 0 : meta.totalCount) || 0;
1677
+ const offset = (requestParams == null ? void 0 : requestParams.offset) || 0;
1678
+ const count = requestParams == null ? void 0 : requestParams.count;
1603
1679
  const totalPages = typeof count === "number" && count > 0 ? Math.ceil(totalCount / count) : 0;
1604
1680
  const current = typeof count === "number" && count > 0 ? Math.floor(offset / count) + 1 : 0;
1605
1681
  const isPaging = totalPages > 1 && typeof onRequestParamsChange === "function";
@@ -1698,7 +1774,7 @@ var Cover = styled_components_default.div`
1698
1774
  bottom: 0;
1699
1775
  `;
1700
1776
  var Blocker = styled_components_default.div.attrs({
1701
- "data-splunk-visualization-version": "28.5.2 - fd77ce608"
1777
+ "data-splunk-visualization-version": "28.6.0 - 92427899a"
1702
1778
  })`
1703
1779
  position: relative;
1704
1780
  width: 100%;
@@ -1779,7 +1855,7 @@ var withFixedSizeContainer = (Viz) => {
1779
1855
  FixSizeItem,
1780
1856
  {
1781
1857
  "data-test": "fix-size-item",
1782
- "data-splunk-visualization-version": "28.5.2 - fd77ce608",
1858
+ "data-splunk-visualization-version": "28.6.0 - 92427899a",
1783
1859
  width,
1784
1860
  height,
1785
1861
  backgroundColor
@@ -2059,7 +2135,7 @@ var dataSourcesSplitByAggregationsUnknown = (dataSource) => {
2059
2135
  const columns = (_d = (_c = dataSource == null ? void 0 : dataSource.primary) == null ? void 0 : _c.data) == null ? void 0 : _d.columns;
2060
2136
  let splitDataSources = null;
2061
2137
  let errorCode = null;
2062
- if (fields && fields.length) {
2138
+ if (fields == null ? void 0 : fields.length) {
2063
2139
  splitDataSources = {};
2064
2140
  for (let i = 0; i < fields.length; i += 1) {
2065
2141
  const fieldName = fields[i].name;
@@ -2110,7 +2186,7 @@ var dataSourcesSplitByAggregationsTimechartAndChart = (dataSource) => {
2110
2186
  }
2111
2187
  });
2112
2188
  });
2113
- } else if ((!splitByFields || !splitByFields.length) && fields.length > 1) {
2189
+ } else if (!(splitByFields == null ? void 0 : splitByFields.length) && fields.length > 1) {
2114
2190
  splitDataSources = {};
2115
2191
  for (let i = 1; i < fields.length; i += 1) {
2116
2192
  const fieldName = fields[i].name;
@@ -2166,7 +2242,7 @@ var dataSourcesSplitByModeTimechart = (dataSource, splitBy) => {
2166
2242
  if (fields.length > 0) {
2167
2243
  splitByFields = (0, trellisUtils_exports.extractSplitByFieldsChartFields)(fields);
2168
2244
  }
2169
- if (splitByFields && splitByFields.indexOf(splitBy) > -1) {
2245
+ if (splitByFields == null ? void 0 : splitByFields.includes(splitBy)) {
2170
2246
  splitDataSources = {};
2171
2247
  const dataSourceKeys = (0, trellisUtils_exports.extractDataSourceAggregationKeysChart)(fields);
2172
2248
  const valueKeys = [];
@@ -2197,6 +2273,68 @@ var dataSourcesSplitByModeTimechart = (dataSource, splitBy) => {
2197
2273
  }
2198
2274
  return { splitDataSources, errorCode };
2199
2275
  };
2276
+ var splitRowWise = (dataSource, columns, fields, otherSplitBy, dataSourceKeys, nonDataSourceAggregations) => {
2277
+ const splitDataSources = {};
2278
+ const valueKeys = (0, lodash_exports.cloneDeep)(columns[0]);
2279
+ valueKeys.forEach((val, idx) => {
2280
+ splitDataSources[val] = (0, lodash_exports.cloneDeep)((0, lodash_exports.omit)(dataSource, ["primary.data.fields", "primary.data.columns"]));
2281
+ splitDataSources[val].primary.data.fields = [];
2282
+ if (otherSplitBy.length) {
2283
+ splitDataSources[val].primary.data.fields = [{ name: otherSplitBy[0] }];
2284
+ }
2285
+ if (dataSourceKeys.length) {
2286
+ const columnValues = [[]];
2287
+ splitDataSources[val].primary.data.fields = [
2288
+ ...splitDataSources[val].primary.data.fields,
2289
+ ...dataSourceKeys.map((k) => ({ name: k }))
2290
+ ];
2291
+ dataSourceKeys.forEach(() => {
2292
+ columnValues.push([]);
2293
+ });
2294
+ for (let i = 1; i <= Math.ceil((fields.length - 1) / dataSourceKeys.length); i += 1) {
2295
+ columnValues[0].push(fields[i].splitby_value ? fields[i].splitby_value : fields[i].name);
2296
+ dataSourceKeys.forEach((dskey, dsIndx) => {
2297
+ const mul = (fields.length - 1) / dataSourceKeys.length;
2298
+ columnValues[dsIndx + 1].push(columns[i + dsIndx * mul][idx]);
2299
+ });
2300
+ }
2301
+ splitDataSources[val].primary.data.columns = columnValues;
2302
+ } else if (nonDataSourceAggregations.length) {
2303
+ const columnValues = [];
2304
+ fields.forEach((aggregationField, fieldIdx) => {
2305
+ if (fieldIdx > 0) {
2306
+ splitDataSources[val].primary.data.fields.push(aggregationField);
2307
+ columnValues.push([columns[fieldIdx][idx]]);
2308
+ }
2309
+ });
2310
+ splitDataSources[val].primary.data.columns = columnValues;
2311
+ }
2312
+ });
2313
+ return splitDataSources;
2314
+ };
2315
+ var splitColumnWise = (dataSource, columns, fields, otherSplitBy, dataSourceKeys) => {
2316
+ const splitDataSources = {};
2317
+ const valueKeys = [];
2318
+ for (let i = 1; i < fields.length; i += 1) {
2319
+ valueKeys.push(fields[i].splitby_value ? fields[i].splitby_value : fields[i].name);
2320
+ }
2321
+ valueKeys.forEach((val) => {
2322
+ splitDataSources[val] = (0, lodash_exports.cloneDeep)((0, lodash_exports.omit)(dataSource, ["primary.data.fields", "primary.data.columns"]));
2323
+ splitDataSources[val].primary.data.fields = [
2324
+ { name: otherSplitBy[0] },
2325
+ ...dataSourceKeys.map((k) => ({ name: k }))
2326
+ ];
2327
+ splitDataSources[val].primary.data.columns = [[...columns[0]]];
2328
+ dataSourceKeys.forEach((dsKey) => {
2329
+ fields.forEach((field, idx) => {
2330
+ if (field.data_source === dsKey && (field.splitby_value === val || field.name === val)) {
2331
+ splitDataSources[val].primary.data.columns.push([...columns[idx]]);
2332
+ }
2333
+ });
2334
+ });
2335
+ });
2336
+ return splitDataSources;
2337
+ };
2200
2338
  var dataSourcesSplitByModeChart = (dataSource, splitBy) => {
2201
2339
  var _a, _b, _c, _d;
2202
2340
  const fields = toFieldEntries((_b = (_a = dataSource == null ? void 0 : dataSource.primary) == null ? void 0 : _a.data) == null ? void 0 : _b.fields);
@@ -2207,8 +2345,7 @@ var dataSourcesSplitByModeChart = (dataSource, splitBy) => {
2207
2345
  if (fields.length > 0) {
2208
2346
  splitByFields = (0, trellisUtils_exports.extractSplitByFieldsChartFields)(fields);
2209
2347
  }
2210
- if (splitByFields && splitByFields.indexOf(splitBy) > -1) {
2211
- splitDataSources = {};
2348
+ if (splitByFields == null ? void 0 : splitByFields.includes(splitBy)) {
2212
2349
  const splitByFieldIdx = splitByFields.findIndex((f) => f === splitBy);
2213
2350
  const otherSplitBy = splitByFields.filter((f) => f !== splitBy);
2214
2351
  const dataSourceKeys = (0, trellisUtils_exports.extractDataSourceAggregationKeysChart)(fields);
@@ -2219,71 +2356,16 @@ var dataSourcesSplitByModeChart = (dataSource, splitBy) => {
2219
2356
  }
2220
2357
  }
2221
2358
  if (splitByFieldIdx === 0) {
2222
- const valueKeys = (0, lodash_exports.cloneDeep)(columns[0]);
2223
- valueKeys.forEach((val, idx) => {
2224
- splitDataSources[val] = (0, lodash_exports.cloneDeep)(
2225
- (0, lodash_exports.omit)(dataSource, ["primary.data.fields", "primary.data.columns"])
2226
- );
2227
- splitDataSources[val].primary.data.fields = [];
2228
- if (otherSplitBy.length) {
2229
- splitDataSources[val].primary.data.fields = [{ name: otherSplitBy[0] }];
2230
- }
2231
- if (dataSourceKeys.length) {
2232
- const columnValues = [[]];
2233
- splitDataSources[val].primary.data.fields = [
2234
- ...splitDataSources[val].primary.data.fields,
2235
- ...dataSourceKeys.map((k) => ({
2236
- name: k
2237
- }))
2238
- ];
2239
- dataSourceKeys.forEach(() => {
2240
- columnValues.push([]);
2241
- });
2242
- for (let i = 1; i <= Math.ceil((fields.length - 1) / dataSourceKeys.length); i += 1) {
2243
- columnValues[0].push(
2244
- fields[i].splitby_value ? fields[i].splitby_value : fields[i].name
2245
- );
2246
- dataSourceKeys.forEach((dskey, dsIndx) => {
2247
- const mul = (fields.length - 1) / dataSourceKeys.length;
2248
- columnValues[dsIndx + 1].push(columns[i + dsIndx * mul][idx]);
2249
- });
2250
- }
2251
- splitDataSources[val].primary.data.columns = columnValues;
2252
- } else if (nonDataSourceAggregations.length) {
2253
- const columnValues = [];
2254
- fields.forEach((aggregationField, fieldIdx) => {
2255
- if (fieldIdx > 0) {
2256
- splitDataSources[val].primary.data.fields.push(aggregationField);
2257
- columnValues.push([columns[fieldIdx][idx]]);
2258
- }
2259
- });
2260
- splitDataSources[val].primary.data.columns = columnValues;
2261
- }
2262
- });
2359
+ splitDataSources = splitRowWise(
2360
+ dataSource,
2361
+ columns,
2362
+ fields,
2363
+ otherSplitBy,
2364
+ dataSourceKeys,
2365
+ nonDataSourceAggregations
2366
+ );
2263
2367
  } else {
2264
- const valueKeys = [];
2265
- for (let i = 1; i < fields.length; i += 1) {
2266
- valueKeys.push(fields[i].splitby_value ? fields[i].splitby_value : fields[i].name);
2267
- }
2268
- valueKeys.forEach((val) => {
2269
- splitDataSources[val] = (0, lodash_exports.cloneDeep)(
2270
- (0, lodash_exports.omit)(dataSource, ["primary.data.fields", "primary.data.columns"])
2271
- );
2272
- splitDataSources[val].primary.data.fields = [
2273
- { name: otherSplitBy[0] },
2274
- ...dataSourceKeys.map((k) => ({
2275
- name: k
2276
- }))
2277
- ];
2278
- splitDataSources[val].primary.data.columns = [[...columns[0]]];
2279
- dataSourceKeys.forEach((dsKey) => {
2280
- fields.forEach((field, idx) => {
2281
- if (field.data_source === dsKey && (field.splitby_value === val || field.name === val)) {
2282
- splitDataSources[val].primary.data.columns.push([...columns[idx]]);
2283
- }
2284
- });
2285
- });
2286
- });
2368
+ splitDataSources = splitColumnWise(dataSource, columns, fields, otherSplitBy, dataSourceKeys);
2287
2369
  }
2288
2370
  } else {
2289
2371
  errorCode = "INVALID_SPLIT_BY_FIELD";
@@ -2301,7 +2383,7 @@ var dataSourcesSplitByModeStatsorUnknown = (dataSource, splitBy, splitMode) => {
2301
2383
  splitByFields = splitMode !== trellisUtils_exports.UNKNOWN ? (0, trellisUtils_exports.extractSplitByFieldsForStats)(fields) : (0, trellisUtils_exports.extractSplitByFieldsForUnknown)(fields);
2302
2384
  }
2303
2385
  const splitByIndex = fields.findIndex((field) => field.name === splitBy);
2304
- if (splitByFields && splitByFields.indexOf(splitBy) > -1) {
2386
+ if (splitByFields == null ? void 0 : splitByFields.includes(splitBy)) {
2305
2387
  const splitByColumn = (_f = (_e = dataSource == null ? void 0 : dataSource.primary) == null ? void 0 : _e.data) == null ? void 0 : _f.columns[splitByIndex];
2306
2388
  splitDataSources = {};
2307
2389
  splitByColumn.forEach((val, idx) => {
@@ -2423,6 +2505,15 @@ var defaultImport37 = __toESM(require("@splunk/react-icons/Triangle"));
2423
2505
  __reExport(Triangle_exports, require("@splunk/react-icons/Triangle"));
2424
2506
  var Triangle_default = "default" in defaultImport37 ? defaultImport37.default : defaultImport37;
2425
2507
 
2508
+ // esm-externals:@splunk/visualizations-shared/propUtils
2509
+ var propUtils_exports = {};
2510
+ __export(propUtils_exports, {
2511
+ default: () => propUtils_default
2512
+ });
2513
+ var defaultImport38 = __toESM(require("@splunk/visualizations-shared/propUtils"));
2514
+ __reExport(propUtils_exports, require("@splunk/visualizations-shared/propUtils"));
2515
+ var propUtils_default = "default" in defaultImport38 ? defaultImport38.default : defaultImport38;
2516
+
2426
2517
  // src/common/chartingUtils.ts
2427
2518
  var DEFAULT_LINE_WIDTH = 2;
2428
2519
  var getAnnotationsForCanvas = ({
@@ -2474,9 +2565,9 @@ var shouldEnableSearchZoom = (eventHandlers = [], xField = "") => {
2474
2565
  const xAxisIsTime = xField === "_time";
2475
2566
  return !!rangeSelectEventHandler && xAxisIsTime;
2476
2567
  };
2477
- var canvasSupportedTimeSeriesCharts = ["splunk.line"];
2568
+ var canvasSupportedTimeSeriesCharts = ["splunk.line", "splunk.area"];
2478
2569
  var isTimeSeriesCanvasRenderSupported = (vizConfigKey) => {
2479
- return canvasSupportedTimeSeriesCharts.indexOf(vizConfigKey) > -1;
2570
+ return canvasSupportedTimeSeriesCharts.includes(vizConfigKey);
2480
2571
  };
2481
2572
  var filterChartDataFromInternalFields = (chartData) => {
2482
2573
  const { fields, columns } = chartData;
@@ -2631,46 +2722,66 @@ var getY2ScaleConfig = (label, axisAbbreviation, axisScale, roundAxisLabelsToInt
2631
2722
  }
2632
2723
  return y2Config;
2633
2724
  };
2634
- var getSeriesOverrides = (yfields, y2fields, lineWidth, overlayFields, y2Enabled, nullValueMode, markerDisplay, lineDashStyle, lineDashStylesByField, stepPosition, stepPositionsByField) => {
2725
+ var getSeriesType = (isOverlay, isAreaChart, isStacked) => {
2726
+ if (isOverlay) return "line";
2727
+ if (!isAreaChart) return void 0;
2728
+ return isStacked ? "stacked-area" : "area";
2729
+ };
2730
+ var getY2Scale = (field, y2fields, overlayFields) => {
2731
+ 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));
2732
+ return assignToY2 ? "y2" : "y";
2733
+ };
2734
+ var getSeriesOverrides = (opts) => {
2735
+ var _a;
2736
+ const {
2737
+ yfields,
2738
+ y2fields,
2739
+ lineWidth,
2740
+ overlayFields,
2741
+ y2Enabled,
2742
+ nullValueMode,
2743
+ markerDisplay,
2744
+ lineDashStyle,
2745
+ lineDashStylesByField,
2746
+ stepPosition,
2747
+ stepPositionsByField,
2748
+ type,
2749
+ stackMode,
2750
+ showLines
2751
+ } = opts;
2635
2752
  const seriesConfig = {};
2636
2753
  let spanGaps;
2637
- let replaceNullsWithZero;
2638
2754
  if (nullValueMode === "gaps") {
2639
2755
  spanGaps = false;
2640
- } else if (nullValueMode === "connect" || nullValueMode === "zero") {
2756
+ } else if (nullValueMode != null) {
2641
2757
  spanGaps = true;
2642
- if (nullValueMode === "zero") {
2643
- replaceNullsWithZero = true;
2644
- }
2758
+ } else {
2759
+ spanGaps = void 0;
2645
2760
  }
2646
- yfields.forEach((field) => {
2761
+ const replaceNullsWithZero = nullValueMode === "zero" ? true : void 0;
2762
+ const isAreaChart = type === "area";
2763
+ const isStacked = isAreaChart && (stackMode === "stacked" || stackMode === "stacked100");
2764
+ const areaFields = isAreaChart ? yfields.filter((f) => !(overlayFields == null ? void 0 : overlayFields.includes(f))) : yfields;
2765
+ const overlayFieldsInOrder = (_a = overlayFields == null ? void 0 : overlayFields.filter((f) => yfields.includes(f))) != null ? _a : [];
2766
+ const orderedFields = isAreaChart ? [...areaFields, ...overlayFieldsInOrder] : yfields;
2767
+ orderedFields.forEach((field) => {
2768
+ var _a2;
2769
+ const isOverlay = (_a2 = overlayFields == null ? void 0 : overlayFields.includes(field)) != null ? _a2 : false;
2770
+ const isPercent = isAreaChart && stackMode === "stacked100" && !isOverlay;
2771
+ const shouldHideAreaOutline = isAreaChart && showLines === false && !isOverlay;
2647
2772
  seriesConfig[field] = {
2648
- overrides: { width: lineWidth != null ? lineWidth : DEFAULT_LINE_WIDTH }
2773
+ overrides: __spreadValues({
2774
+ width: shouldHideAreaOutline ? 0 : lineWidth != null ? lineWidth : DEFAULT_LINE_WIDTH
2775
+ }, isPercent ? { stacking: { mode: "percent", group: "A" } } : {})
2649
2776
  };
2650
- if (spanGaps !== void 0) {
2651
- seriesConfig[field].overrides.spanGaps = spanGaps;
2652
- }
2653
- if (y2Enabled) {
2654
- const shouldAssignToY2 = (
2655
- // If y2Fields are present, assign all y2Fields to y2 scale
2656
- (y2fields == null ? void 0 : y2fields.length) > 0 && y2fields.includes(field) || // Else, assign all overlayFields to y2 scale
2657
- (!y2fields || y2fields.length === 0) && (overlayFields == null ? void 0 : overlayFields.includes(field))
2658
- );
2659
- if (shouldAssignToY2) {
2660
- seriesConfig[field].overrides.scale = "y2";
2661
- } else {
2662
- seriesConfig[field].overrides.scale = "y";
2663
- }
2664
- }
2665
- if (overlayFields == null ? void 0 : overlayFields.includes(field)) {
2666
- seriesConfig[field].type = "line";
2667
- }
2668
- if (markerDisplay !== void 0) {
2669
- seriesConfig[field].markerDisplay = markerDisplay;
2670
- }
2671
- const fieldDashStyle = (lineDashStylesByField == null ? void 0 : lineDashStylesByField[field]) || lineDashStyle;
2672
- if (fieldDashStyle) {
2673
- seriesConfig[field].lineDashStyle = fieldDashStyle;
2777
+ const seriesType = getSeriesType(isOverlay, isAreaChart, isStacked);
2778
+ if (seriesType !== void 0) seriesConfig[field].type = seriesType;
2779
+ if (spanGaps !== void 0) seriesConfig[field].overrides.spanGaps = spanGaps;
2780
+ if (y2Enabled) seriesConfig[field].overrides.scale = getY2Scale(field, y2fields, overlayFields);
2781
+ if (markerDisplay !== void 0) seriesConfig[field].markerDisplay = markerDisplay;
2782
+ if (!isAreaChart || isOverlay) {
2783
+ const fieldDashStyle = (lineDashStylesByField == null ? void 0 : lineDashStylesByField[field]) || lineDashStyle;
2784
+ if (fieldDashStyle) seriesConfig[field].lineDashStyle = fieldDashStyle;
2674
2785
  }
2675
2786
  const hasFieldStepPosition = Object.hasOwn(stepPositionsByField || {}, field);
2676
2787
  const fieldStepPosition = hasFieldStepPosition ? stepPositionsByField == null ? void 0 : stepPositionsByField[field] : stepPosition;
@@ -2836,6 +2947,38 @@ var parseArrayOption = (value) => {
2836
2947
  }
2837
2948
  return void 0;
2838
2949
  };
2950
+ var getAreaOpacityForCanvas = (areaOpacity) => (
2951
+ // Preserve legacy visualizations behavior where area opacity is squared to match charting output.
2952
+ areaOpacity !== void 0 && areaOpacity !== null ? __pow(areaOpacity, 2) : areaOpacity
2953
+ );
2954
+ var parseTickIntervalOption = (simpleXMLValue, canvasValue) => {
2955
+ if (simpleXMLValue) return Number(simpleXMLValue);
2956
+ if (canvasValue) return Number(canvasValue);
2957
+ return void 0;
2958
+ };
2959
+ var getYAxisTitles = ({
2960
+ y2Enabled,
2961
+ yFields,
2962
+ y2Fields,
2963
+ overlayFields,
2964
+ yAxisTitleText,
2965
+ yAxisTitleVisibility,
2966
+ y2AxisTitleText,
2967
+ y2AxisTitleVisibility,
2968
+ containerHeight
2969
+ }) => {
2970
+ const yFieldsForTitle = y2Enabled ? yFields.filter((field) => !y2Fields.includes(field)) : yFields;
2971
+ const fieldsForY2Axis = y2Fields.length > 0 ? y2Fields : overlayFields;
2972
+ const yAxisTitle = ellipsisAxisTitle(
2973
+ getComputedAxisTitles(yAxisTitleText, yFieldsForTitle, yAxisTitleVisibility),
2974
+ containerHeight
2975
+ );
2976
+ const y2AxisTitle = ellipsisAxisTitle(
2977
+ getComputedAxisTitles(y2AxisTitleText, fieldsForY2Axis, y2AxisTitleVisibility),
2978
+ containerHeight
2979
+ );
2980
+ return { yAxisTitle, y2AxisTitle };
2981
+ };
2839
2982
  var TimeSeriesChartWrapper = (props) => {
2840
2983
  var _b, _c, _d;
2841
2984
  const _a = props, {
@@ -2925,6 +3068,8 @@ var TimeSeriesChartWrapper = (props) => {
2925
3068
  "chart.overlayFields": overlayFieldsStr,
2926
3069
  "chart.nullValueMode": nullValueMode,
2927
3070
  "chart.showDataLabels": showDataLabels,
3071
+ "chart.showLines": showLines,
3072
+ "chart.stackMode": stackMode,
2928
3073
  lineWidth,
2929
3074
  lineDashStyle,
2930
3075
  fieldDashStyles: lineDashStylesByFieldStr,
@@ -2953,7 +3098,10 @@ var TimeSeriesChartWrapper = (props) => {
2953
3098
  yAxisMinorTickSize,
2954
3099
  y2AxisMinorTickSize,
2955
3100
  showYAxisWithZero: showYAxisWithZeroFromOptions,
2956
- showY2AxisWithZero: showY2AxisWithZeroFromOptions
3101
+ showY2AxisWithZero: showY2AxisWithZeroFromOptions,
3102
+ // area only props
3103
+ areaFillOpacity: areaOpacity,
3104
+ chart: chartType
2957
3105
  } = options;
2958
3106
  const dataValuesDisplay = showDataLabels === "none" ? "off" : showDataLabels;
2959
3107
  const showYAxisWithZero = showYAxisWithZeroFromProps != null ? showYAxisWithZeroFromProps : showYAxisWithZeroFromOptions;
@@ -2970,13 +3118,11 @@ var TimeSeriesChartWrapper = (props) => {
2970
3118
  const yAxisMax = parseAxisValue(yAxisMaxRaw);
2971
3119
  const y2AxisMin = parseAxisValue(y2AxisMinRaw);
2972
3120
  const y2AxisMax = parseAxisValue(y2AxisMaxRaw);
2973
- const parseTickInterval = (simpleXMLValue, canvasValue) => {
2974
- if (simpleXMLValue) return Number(simpleXMLValue);
2975
- if (canvasValue) return Number(canvasValue);
2976
- return void 0;
2977
- };
2978
- const yAxisMajorTickIntervalNum = parseTickInterval(yAxisMajorUnitFromSimpleXML, yAxisMajorTickInterval);
2979
- const y2AxisMajorTickIntervalNum = parseTickInterval(
3121
+ const yAxisMajorTickIntervalNum = parseTickIntervalOption(
3122
+ yAxisMajorUnitFromSimpleXML,
3123
+ yAxisMajorTickInterval
3124
+ );
3125
+ const y2AxisMajorTickIntervalNum = parseTickIntervalOption(
2980
3126
  y2AxisMajorUnitFromSimpleXML,
2981
3127
  y2AxisMajorTickInterval
2982
3128
  );
@@ -2985,6 +3131,7 @@ var TimeSeriesChartWrapper = (props) => {
2985
3131
  const y2AxisMajorTickSizeNum = y2AxisMajorTickSize != null ? Number(y2AxisMajorTickSize) : void 0;
2986
3132
  const yAxisMinorTickSizeNum = yAxisMinorTickSize != null ? Number(yAxisMinorTickSize) : void 0;
2987
3133
  const y2AxisMinorTickSizeNum = y2AxisMinorTickSize != null ? Number(y2AxisMinorTickSize) : void 0;
3134
+ const areaOpacityForCanvas = getAreaOpacityForCanvas(areaOpacity);
2988
3135
  const seriesColors = seriesColorsStr ? JSON.parse(seriesColorsStr) : void 0;
2989
3136
  const seriesColorsByField = fieldColors ? JSON.parse(fieldColors) : void 0;
2990
3137
  const lineDashStylesByField = lineDashStylesByFieldStr ? JSON.parse(lineDashStylesByFieldStr) : void 0;
@@ -3015,26 +3162,40 @@ var TimeSeriesChartWrapper = (props) => {
3015
3162
  );
3016
3163
  let xAxisTitle = getComputedAxisTitles(xAxisTitleText, [xField], xAxisTitleVisibility);
3017
3164
  xAxisTitle = ellipsisAxisTitle(xAxisTitle, containerWidth);
3018
- const yFieldsForTitle = y2Enabled ? yFields.filter((field) => !y2Fields.includes(field)) : yFields;
3019
- let yAxisTitle = getComputedAxisTitles(yAxisTitleText, yFieldsForTitle, yAxisTitleVisibility);
3020
- yAxisTitle = ellipsisAxisTitle(yAxisTitle, containerHeight);
3021
- const fieldsForY2Axis = y2Fields.length > 0 ? y2Fields : overlayFields;
3022
- let y2AxisTitle = getComputedAxisTitles(y2AxisTitleText, fieldsForY2Axis, y2AxisTitleVisibility);
3023
- y2AxisTitle = ellipsisAxisTitle(y2AxisTitle, containerHeight);
3165
+ const { yAxisTitle, y2AxisTitle } = getYAxisTitles({
3166
+ y2Enabled,
3167
+ yFields,
3168
+ y2Fields,
3169
+ overlayFields,
3170
+ yAxisTitleText,
3171
+ yAxisTitleVisibility,
3172
+ y2AxisTitleText,
3173
+ y2AxisTitleVisibility,
3174
+ containerHeight
3175
+ });
3024
3176
  const xScaleConfig = (0, react_exports.useMemo)(
3025
3177
  () => getXScaleConfig(xAxisTitle, xAxisLabelVisibility, xAxisLabelRotation),
3026
3178
  [xAxisTitle, xAxisLabelVisibility, xAxisLabelRotation]
3027
3179
  );
3180
+ const isStacked100 = stackMode === "stacked100";
3028
3181
  const yScaleConfig = (0, react_exports.useMemo)(
3029
- () => getYScaleConfig(
3030
- yAxisTitle,
3031
- yAxisAbbreviation,
3032
- yAxisScale,
3033
- yAxisLabelVisibility,
3034
- yAxisMin,
3035
- yAxisMax
3036
- ),
3037
- [yAxisTitle, yAxisAbbreviation, yAxisScale, yAxisLabelVisibility, yAxisMin, yAxisMax]
3182
+ () => {
3183
+ const config2 = getYScaleConfig(
3184
+ yAxisTitle,
3185
+ yAxisAbbreviation,
3186
+ yAxisScale,
3187
+ yAxisLabelVisibility,
3188
+ yAxisMin,
3189
+ yAxisMax
3190
+ );
3191
+ if (isStacked100) {
3192
+ config2.y.tickFmt = (v) => `${Math.round(v * 100)}%`;
3193
+ config2.y.range = () => [0, 1];
3194
+ }
3195
+ return config2;
3196
+ },
3197
+ // eslint-disable-next-line react-hooks/exhaustive-deps
3198
+ [yAxisTitle, yAxisAbbreviation, yAxisScale, yAxisLabelVisibility, yAxisMin, yAxisMax, isStacked100]
3038
3199
  );
3039
3200
  const y2ScaleConfig = (0, react_exports.useMemo)(() => {
3040
3201
  if (y2Enabled) {
@@ -3066,10 +3227,11 @@ var TimeSeriesChartWrapper = (props) => {
3066
3227
  ];
3067
3228
  chartData.fields = filteredChartData.fields;
3068
3229
  chartData.columns = seriesDataFormatted;
3230
+ const normalizedStackMode = stackMode === "stacked" || stackMode === "stacked100" ? stackMode : "auto";
3069
3231
  const seriesOverrides = (0, react_exports.useMemo)(
3070
- () => getSeriesOverrides(
3071
- yFields,
3072
- y2Fields,
3232
+ () => getSeriesOverrides({
3233
+ yfields: yFields,
3234
+ y2fields: y2Fields,
3073
3235
  lineWidth,
3074
3236
  overlayFields,
3075
3237
  y2Enabled,
@@ -3078,8 +3240,11 @@ var TimeSeriesChartWrapper = (props) => {
3078
3240
  lineDashStyle,
3079
3241
  lineDashStylesByField,
3080
3242
  stepPosition,
3081
- stepPositionsByField
3082
- ),
3243
+ stepPositionsByField,
3244
+ type: chartType,
3245
+ stackMode: normalizedStackMode,
3246
+ showLines
3247
+ }),
3083
3248
  [
3084
3249
  yFields,
3085
3250
  y2Fields,
@@ -3091,7 +3256,10 @@ var TimeSeriesChartWrapper = (props) => {
3091
3256
  lineDashStyle,
3092
3257
  lineDashStylesByField,
3093
3258
  stepPosition,
3094
- stepPositionsByField
3259
+ stepPositionsByField,
3260
+ chartType,
3261
+ normalizedStackMode,
3262
+ showLines
3095
3263
  ]
3096
3264
  );
3097
3265
  const chartingEventAnnotations = (0, react_exports.useMemo)(
@@ -3159,50 +3327,54 @@ var TimeSeriesChartWrapper = (props) => {
3159
3327
  react_exports.useEffect(() => {
3160
3328
  additionalTooltipValuesRef.current = additionalTooltipValues;
3161
3329
  }, [additionalTooltipValues]);
3330
+ const handleCrosshairMouseout = react_exports.useCallback(() => {
3331
+ if (onPointMouseOut && lastPayloadRef.current) {
3332
+ onPointMouseOut({
3333
+ type: "point.mouseout",
3334
+ originalEvent: lastOriginalEventRef.current,
3335
+ payload: lastPayloadRef.current
3336
+ });
3337
+ }
3338
+ previousMouseoverPayloadRef.current = null;
3339
+ }, [onPointMouseOut]);
3162
3340
  const handleChartCrosshairChange = react_exports.useCallback(
3163
3341
  (event) => {
3164
- if (onPointMouseOver || onPointMouseOut) {
3165
- if (!event) {
3166
- if (onPointMouseOut && lastPayloadRef.current) {
3167
- onPointMouseOut({
3168
- type: "point.mouseout",
3169
- originalEvent: lastOriginalEventRef.current,
3170
- payload: lastPayloadRef.current
3171
- });
3172
- }
3173
- previousMouseoverPayloadRef.current = null;
3174
- return;
3175
- }
3176
- const payload = __spreadProps(__spreadValues({}, (0, lodash_exports.pick)(event, "value", "seriesKey", "time", "index", "seriesIndex")), {
3177
- name: event.seriesKey
3342
+ if (!onPointMouseOver && !onPointMouseOut) {
3343
+ return;
3344
+ }
3345
+ if (!event) {
3346
+ handleCrosshairMouseout();
3347
+ return;
3348
+ }
3349
+ const payload = __spreadProps(__spreadValues({}, (0, lodash_exports.pick)(event, "value", "seriesKey", "time", "index", "seriesIndex")), {
3350
+ name: event.seriesKey
3351
+ });
3352
+ delete payload.seriesKey;
3353
+ if (event.rowContext) {
3354
+ Object.assign(
3355
+ payload,
3356
+ Object.keys(event.rowContext).reduce((acc, fieldName) => {
3357
+ acc[`row.${fieldName}.value`] = event.rowContext[fieldName];
3358
+ return acc;
3359
+ }, {})
3360
+ );
3361
+ }
3362
+ const updatedPayload = appendTrellisToPayload2(payload, trellisKey, trellisSplitBy);
3363
+ if (!hasMouseoverPayloadChanged(updatedPayload, previousMouseoverPayloadRef.current)) {
3364
+ return;
3365
+ }
3366
+ lastPayloadRef.current = updatedPayload;
3367
+ lastOriginalEventRef.current = event;
3368
+ previousMouseoverPayloadRef.current = __spreadValues({}, updatedPayload);
3369
+ if (onPointMouseOver) {
3370
+ onPointMouseOver({
3371
+ type: "point.mouseover",
3372
+ originalEvent: event,
3373
+ payload: updatedPayload
3178
3374
  });
3179
- delete payload.seriesKey;
3180
- if (event.rowContext) {
3181
- Object.assign(
3182
- payload,
3183
- Object.keys(event.rowContext).reduce((acc, fieldName) => {
3184
- acc[`row.${fieldName}.value`] = event.rowContext[fieldName];
3185
- return acc;
3186
- }, {})
3187
- );
3188
- }
3189
- const updatedPayload = appendTrellisToPayload2(payload, trellisKey, trellisSplitBy);
3190
- if (!hasMouseoverPayloadChanged(updatedPayload, previousMouseoverPayloadRef.current)) {
3191
- return;
3192
- }
3193
- lastPayloadRef.current = updatedPayload;
3194
- lastOriginalEventRef.current = event;
3195
- previousMouseoverPayloadRef.current = __spreadValues({}, updatedPayload);
3196
- if (onPointMouseOver) {
3197
- onPointMouseOver({
3198
- type: "point.mouseover",
3199
- originalEvent: event,
3200
- payload: updatedPayload
3201
- });
3202
- }
3203
3375
  }
3204
3376
  },
3205
- [onPointMouseOver, onPointMouseOut, trellisKey, trellisSplitBy]
3377
+ [onPointMouseOver, onPointMouseOut, trellisKey, trellisSplitBy, handleCrosshairMouseout]
3206
3378
  );
3207
3379
  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}`;
3208
3380
  const memoizedChart = (0, react_exports.useMemo)(() => {
@@ -3257,7 +3429,8 @@ var TimeSeriesChartWrapper = (props) => {
3257
3429
  showXAxisLine,
3258
3430
  showYAxisLine,
3259
3431
  showY2AxisLine,
3260
- xAxisMaxLabelParts
3432
+ xAxisMaxLabelParts,
3433
+ areaOpacity: areaOpacityForCanvas
3261
3434
  }
3262
3435
  ));
3263
3436
  }, [
@@ -3309,7 +3482,8 @@ var TimeSeriesChartWrapper = (props) => {
3309
3482
  showYAxisLine,
3310
3483
  showY2AxisLine,
3311
3484
  legendMode,
3312
- xAxisMaxLabelParts
3485
+ xAxisMaxLabelParts,
3486
+ areaOpacityForCanvas
3313
3487
  ]);
3314
3488
  const memoizedVisualization = (0, react_exports.useMemo)(() => {
3315
3489
  return /* @__PURE__ */ react_exports.createElement(VizStyleWrapper_default, { backgroundColor: bgColor }, memoizedChart);
@@ -3337,6 +3511,37 @@ var TimeSeriesChartWrapper_default = TimeSeriesChartWrapper;
3337
3511
 
3338
3512
  // src/common/withDashboardViz.tsx
3339
3513
  var SanitizedTimeSeriesChartWrapper = (0, SanitizeProps_exports.withSanitizedProps)(TimeSeriesChartWrapper_default);
3514
+ var buildEventCallbackProps = (supportedEvents, evaluatedOptionsToUse, onEventTrigger) => {
3515
+ const result = {};
3516
+ Object.keys(supportedEvents).forEach((eventName) => {
3517
+ const { parentKeys, payloadKeys } = supportedEvents[eventName];
3518
+ const eventCallbackPropName = (0, lodash_exports.camelCase)(`on.${eventName}`);
3519
+ let payload = {};
3520
+ if (Array.isArray(payloadKeys) && payloadKeys.length) {
3521
+ payloadKeys.forEach((p) => {
3522
+ payload[p] = evaluatedOptionsToUse[p];
3523
+ });
3524
+ }
3525
+ result[eventCallbackPropName] = (ev) => {
3526
+ if (ev == null ? void 0 : ev.payload) {
3527
+ payload = __spreadValues({}, ev.payload);
3528
+ }
3529
+ return onEventTrigger({
3530
+ originalEvent: ev,
3531
+ payload,
3532
+ type: eventName
3533
+ });
3534
+ };
3535
+ if (parentKeys) {
3536
+ for (let i = parentKeys.length - 1; i >= 0; i -= 1) {
3537
+ const newObject = {};
3538
+ newObject[parentKeys[i]] = result[eventCallbackPropName];
3539
+ result[eventCallbackPropName] = newObject;
3540
+ }
3541
+ }
3542
+ });
3543
+ return result;
3544
+ };
3340
3545
  var withDashboardViz = (opts) => {
3341
3546
  const {
3342
3547
  ReactViz,
@@ -3394,9 +3599,7 @@ var withDashboardViz = (opts) => {
3394
3599
  const isDownsamplingEnabledByFeatureFlag = Boolean(
3395
3600
  featureFlagContext == null ? void 0 : featureFlagContext.visualizations_enableDownsampling
3396
3601
  );
3397
- const isTrellisFeatureFlagOn2 = Boolean(
3398
- featureFlagContext && featureFlagContext.visualizations_enableTrellis
3399
- );
3602
+ const isTrellisFeatureFlagOn2 = Boolean(featureFlagContext == null ? void 0 : featureFlagContext.visualizations_enableTrellis);
3400
3603
  const isTrellisOn = isTrellisFeatureFlagOn2 && ((_a = vizConfig == null ? void 0 : vizConfig.supports) == null ? void 0 : _a.includes("trellis" /* TRELLIS */)) && (options == null ? void 0 : options.splitByLayout) === "trellis" /* TRELLIS */;
3401
3604
  const isAcceleratedRenderFeatureFlagOn = Boolean(
3402
3605
  featureFlagContext == null ? void 0 : featureFlagContext.visualizations_enableAcceleratedRender
@@ -3561,38 +3764,12 @@ var withDashboardViz = (opts) => {
3561
3764
  }
3562
3765
  );
3563
3766
  }
3564
- const eventCallbackProps = {};
3565
- if (hasEventHandlers && mode === "view" && vizConfig.supports.indexOf("events" /* EVENTS */) > -1) {
3566
- const supportedEvents = vizConfig.events;
3567
- Object.keys(supportedEvents).forEach((eventName) => {
3568
- const { parentKeys, payloadKeys } = supportedEvents[eventName];
3569
- const eventCallbackPropName = (0, lodash_exports.camelCase)(`on.${eventName}`);
3570
- let payload = {};
3571
- if (Array.isArray(payloadKeys) && payloadKeys.length) {
3572
- payloadKeys.forEach((p) => {
3573
- payload[p] = evaluatedOptionsToUse[p];
3574
- });
3575
- }
3576
- eventCallbackProps[eventCallbackPropName] = (ev) => {
3577
- if (ev == null ? void 0 : ev.payload) {
3578
- payload = __spreadValues({}, ev.payload);
3579
- }
3580
- return onEventTrigger({
3581
- originalEvent: ev,
3582
- payload,
3583
- type: eventName
3584
- });
3585
- };
3586
- if (parentKeys) {
3587
- for (let i = parentKeys.length - 1; i >= 0; i -= 1) {
3588
- const newObject = {};
3589
- newObject[parentKeys[i]] = eventCallbackProps[eventCallbackPropName];
3590
- eventCallbackProps[eventCallbackPropName] = newObject;
3591
- }
3592
- }
3593
- });
3594
- }
3595
- const computedVizProps = computeVizProps2(__spreadProps(__spreadValues(__spreadValues(__spreadValues({}, props), evaluatedOptionsToUse), eventCallbackProps), {
3767
+ const eventCallbackProps = hasEventHandlers && mode === "view" && vizConfig.supports.includes("events" /* EVENTS */) ? buildEventCallbackProps(vizConfig.events, evaluatedOptionsToUse, onEventTrigger) : {};
3768
+ const computedVizProps = computeVizProps2(__spreadProps(__spreadValues(__spreadProps(__spreadValues(__spreadValues({}, props), evaluatedOptionsToUse), {
3769
+ // Align option transformation with the actual renderer selected below.
3770
+ // This prevents canvas-only option preservation from leaking into Highcharts mode.
3771
+ isAcceleratedRenderOn
3772
+ }), eventCallbackProps), {
3596
3773
  themeFunc
3597
3774
  }));
3598
3775
  if (useAsyncEvaluatedOptions && Object.keys(evaluatedOptionsToUse).length === 0) {
@@ -3621,15 +3798,6 @@ var withDashboardViz = (opts) => {
3621
3798
  };
3622
3799
  var withDashboardViz_default = withDashboardViz;
3623
3800
 
3624
- // esm-externals:@splunk/visualizations-shared/propUtils
3625
- var propUtils_exports = {};
3626
- __export(propUtils_exports, {
3627
- default: () => propUtils_default
3628
- });
3629
- var defaultImport38 = __toESM(require("@splunk/visualizations-shared/propUtils"));
3630
- __reExport(propUtils_exports, require("@splunk/visualizations-shared/propUtils"));
3631
- var propUtils_default = "default" in defaultImport38 ? defaultImport38.default : defaultImport38;
3632
-
3633
3801
  // esm-externals:@splunk/visualization-encoding/utils/dsl
3634
3802
  var dsl_exports = {};
3635
3803
  __export(dsl_exports, {
@@ -3747,6 +3915,53 @@ __reExport(Paginator_exports, require("@splunk/react-ui/Paginator"));
3747
3915
  var Paginator_default = "default" in defaultImport40 ? defaultImport40.default : defaultImport40;
3748
3916
 
3749
3917
  // src/common/hocs/withTrellis.tsx
3918
+ var evaluatePanelOption = (panelDataSources, allOptions, optionKey, vizContext) => {
3919
+ try {
3920
+ const evaluated = Options_exports.Options.evaluate({ context: vizContext, options: allOptions }, panelDataSources);
3921
+ const num = Number(evaluated == null ? void 0 : evaluated[optionKey]);
3922
+ return Number.isNaN(num) ? Number.NaN : num;
3923
+ } catch (e) {
3924
+ return Number.NaN;
3925
+ }
3926
+ };
3927
+ var sortTrellisKeys = (keys, trellisSortBy, trellisSortOrder, modifiedDataSourceBySplitBy, mergedOptions, vizContext) => {
3928
+ if (trellisSortBy === "name") {
3929
+ keys.sort((a, b) => {
3930
+ const cmp = a.localeCompare(b, void 0, { numeric: true, sensitivity: "base" });
3931
+ return trellisSortOrder === "descending" ? -cmp : cmp;
3932
+ });
3933
+ } else if (trellisSortBy === "value" || trellisSortBy === "trend") {
3934
+ let optionKey;
3935
+ if (trellisSortBy === "trend") {
3936
+ optionKey = "trendValue";
3937
+ } else {
3938
+ optionKey = mergedOptions.value !== void 0 ? "value" : "majorValue";
3939
+ }
3940
+ keys.sort((a, b) => {
3941
+ const valA = evaluatePanelOption(
3942
+ modifiedDataSourceBySplitBy[a],
3943
+ mergedOptions,
3944
+ optionKey,
3945
+ vizContext
3946
+ );
3947
+ const valB = evaluatePanelOption(
3948
+ modifiedDataSourceBySplitBy[b],
3949
+ mergedOptions,
3950
+ optionKey,
3951
+ vizContext
3952
+ );
3953
+ const nanA = Number.isNaN(valA);
3954
+ const nanB = Number.isNaN(valB);
3955
+ if (nanA && nanB) return 0;
3956
+ if (nanA) return 1;
3957
+ if (nanB) return -1;
3958
+ const cmp = valA - valB;
3959
+ return trellisSortOrder === "descending" ? -cmp : cmp;
3960
+ });
3961
+ } else if (trellisSortOrder === "descending") {
3962
+ keys.reverse();
3963
+ }
3964
+ };
3750
3965
  var TrellisContainer = styled_components_default.div`
3751
3966
  overflow: hidden;
3752
3967
  display: flex;
@@ -3791,6 +4006,14 @@ var showErrorMessage = (errorCode, width, height) => {
3791
4006
  }
3792
4007
  return /* @__PURE__ */ react_exports.createElement(Message_default, { width, height, message: (0, i18n_exports._)("Error render in trellis"), level: "info" });
3793
4008
  };
4009
+ var resolveTrellisSplitBy = (trellisSplitBy, fields) => {
4010
+ var _a;
4011
+ if (trellisSplitBy && trellisSplitBy.length > 0) {
4012
+ return trellisSplitBy;
4013
+ }
4014
+ const splitByPossibleFields = (0, trellisUtils_exports.getAllPossibleSplitByFields)(fields);
4015
+ return ((_a = splitByPossibleFields.fields) == null ? void 0 : _a.length) ? splitByPossibleFields.fields[0] : AGGREGATIONS;
4016
+ };
3794
4017
  var withTrellis = (Viz) => {
3795
4018
  const VizWithTrellis = (opts) => {
3796
4019
  const cachedHandleResize = react_exports.useCallback((w, h) => {
@@ -3799,7 +4022,7 @@ var withTrellis = (Viz) => {
3799
4022
  }, []);
3800
4023
  const [containerWidth, setContainerWidth] = react_exports.useState(Number(opts.width));
3801
4024
  const [containerHeight, setContainerHeight] = react_exports.useState(Number(opts.height));
3802
- const _a = opts, { options = {}, height, width } = _a, otherProps = __objRest(_a, ["options", "height", "width"]);
4025
+ const _a = opts, { options = {}, context = {}, height, width } = _a, otherProps = __objRest(_a, ["options", "context", "height", "width"]);
3803
4026
  const defaultOptions = (0, JSONSchemaUtils_exports.pickFieldFromJSONSchema)(Viz.config.optionsSchema, "default");
3804
4027
  const mergedOptions = (0, hocUtils_exports.deepMergeWithArrayPrimitiveOverrides)({}, options, defaultOptions);
3805
4028
  const {
@@ -3809,6 +4032,8 @@ var withTrellis = (Viz) => {
3809
4032
  trellisRowHeight,
3810
4033
  splitByLayout,
3811
4034
  trellisSplitBy,
4035
+ trellisSortBy,
4036
+ trellisSortOrder,
3812
4037
  trellisSharedScale,
3813
4038
  stackMode,
3814
4039
  yAxisMin,
@@ -3877,7 +4102,7 @@ var withTrellis = (Viz) => {
3877
4102
  }, [pageCount, trellisSplitBy]);
3878
4103
  (0, react_exports.useEffect)(() => {
3879
4104
  updateDataDisplay(pageNum);
3880
- }, [columns, fields, trellisSplitBy, pageNum, splitByLayout]);
4105
+ }, [columns, fields, trellisSplitBy, trellisSortBy, trellisSortOrder, pageNum, splitByLayout]);
3881
4106
  const handlePageChange = (0, react_exports.useCallback)(
3882
4107
  (event, { page }) => {
3883
4108
  setPageNum(page);
@@ -3885,9 +4110,7 @@ var withTrellis = (Viz) => {
3885
4110
  [pageNum, pagedData]
3886
4111
  );
3887
4112
  const featureFlagContext = react_exports.useContext(FeatureFlagContext_default);
3888
- const isTrellisFeatureFlagOn2 = Boolean(
3889
- featureFlagContext && featureFlagContext.visualizations_enableTrellis
3890
- );
4113
+ const isTrellisFeatureFlagOn2 = Boolean(featureFlagContext == null ? void 0 : featureFlagContext.visualizations_enableTrellis);
3891
4114
  if (!isTrellisFeatureFlagOn2 || !splitByLayout || splitByLayout !== visualization_schemas_exports.LAYOUT_TYPE.Trellis) {
3892
4115
  return /* @__PURE__ */ react_exports.createElement(Viz, __spreadValues({}, opts));
3893
4116
  }
@@ -3895,14 +4118,9 @@ var withTrellis = (Viz) => {
3895
4118
  if (noColumns || noFields) {
3896
4119
  return /* @__PURE__ */ react_exports.createElement(Message_default, { width, height, message: (0, i18n_exports._)("Loading"), level: "info" });
3897
4120
  }
3898
- let currTrellisSplitBy = trellisSplitBy;
3899
- if (!trellisSplitBy || trellisSplitBy.length === 0) {
3900
- const splitByPossibleFields = (0, trellisUtils_exports.getAllPossibleSplitByFields)(fields);
3901
- currTrellisSplitBy = splitByPossibleFields.fields && splitByPossibleFields.fields.length ? splitByPossibleFields.fields[0] : AGGREGATIONS;
3902
- }
3903
- const splitMode = (0, trellisUtils_exports.getTrellisDataSplitterMode)(fields);
4121
+ const currTrellisSplitBy = resolveTrellisSplitBy(trellisSplitBy, fields);
3904
4122
  const dataSplitResult = getTrellisDataSourcesBySplitMode(
3905
- splitMode,
4123
+ (0, trellisUtils_exports.getTrellisDataSplitterMode)(fields),
3906
4124
  dataSources,
3907
4125
  currTrellisSplitBy
3908
4126
  );
@@ -3911,12 +4129,19 @@ var withTrellis = (Viz) => {
3911
4129
  if (!modifiedDataSourceBySplitBy || Object.keys(modifiedDataSourceBySplitBy).length === 0 || dataSplitErrorCode) {
3912
4130
  return showErrorMessage(dataSplitErrorCode, width, height);
3913
4131
  }
3914
- const splitByKeysModified = modifiedDataSourceBySplitBy ? Object.keys(modifiedDataSourceBySplitBy) : [];
3915
- if (splitByKeysModified) {
3916
- showPaginator = splitByKeysModified.length > pageCount;
3917
- splitByKeys = splitByKeysModified;
3918
- totalPages = splitByKeysModified ? Math.ceil(splitByKeysModified.length / pageCount) : 0;
3919
- }
4132
+ const splitByKeysModified = Object.keys(modifiedDataSourceBySplitBy);
4133
+ const vizContext = (0, lodash_exports.defaultsDeep)({}, context, Viz.config.defaultContext);
4134
+ sortTrellisKeys(
4135
+ splitByKeysModified,
4136
+ trellisSortBy,
4137
+ trellisSortOrder,
4138
+ modifiedDataSourceBySplitBy,
4139
+ mergedOptions,
4140
+ vizContext
4141
+ );
4142
+ showPaginator = splitByKeysModified.length > pageCount;
4143
+ splitByKeys = splitByKeysModified;
4144
+ totalPages = Math.ceil(splitByKeysModified.length / pageCount);
3920
4145
  const [calculatedMin, calculatedMax] = determineMinMax(
3921
4146
  modifiedDataSourceBySplitBy,
3922
4147
  trellisSharedScale,
@@ -3950,6 +4175,7 @@ var withTrellis = (Viz) => {
3950
4175
  /* @__PURE__ */ react_exports.createElement(
3951
4176
  Viz,
3952
4177
  __spreadProps(__spreadValues({}, otherProps), {
4178
+ context,
3953
4179
  trellisKey: splitByKey,
3954
4180
  trellisSplitBy: currTrellisSplitBy,
3955
4181
  dataSources: modifiedDataSourceBySplitBy[splitByKey],
@@ -4049,7 +4275,7 @@ var computeVizProps = (_a) => {
4049
4275
  computedProps.chartData.seriesList
4050
4276
  );
4051
4277
  }
4052
- if (computedProps.options.percentagePrecision) {
4278
+ if (computedProps.options.percentagePrecision != null && computedProps.options["chart.showPercent"]) {
4053
4279
  computedProps.options["chart.precision"] = computedProps.options.percentagePrecision;
4054
4280
  }
4055
4281
  return computedProps;