@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/Line.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/Line/index.ts
64
66
  var Line_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);
@@ -1225,26 +1249,59 @@ var isTrellisEnabled2 = ({ options, featureFlags }) => {
1225
1249
  const { splitByLayout = visualization_schemas_exports.LAYOUT_TYPE.Off } = options;
1226
1250
  return isTrellisFeatureFlagOn2({ featureFlags }) && splitByLayout === visualization_schemas_exports.LAYOUT_TYPE.Trellis;
1227
1251
  };
1228
- var TrellisEditorConfig = [
1229
- [
1230
- {
1231
- label: (0, i18n_exports._)("Trellis layout"),
1232
- option: "splitByLayout",
1233
- editor: "editor.toggle",
1234
- showEditor: isTrellisFeatureFlagOn2
1235
- }
1236
- ],
1237
- [
1238
- {
1239
- label: (0, i18n_exports._)("Split by"),
1240
- option: "trellisSplitBy",
1241
- editor: "editor.trellisSplitBy",
1242
- editorProps: {
1243
- dataSourceKey: "primary"
1244
- },
1245
- showEditor: isTrellisEnabled2
1246
- }
1247
- ],
1252
+ var sortByValuesBase = [
1253
+ { label: (0, i18n_exports._)("Result"), value: "result" },
1254
+ { label: (0, i18n_exports._)("Name"), value: "name" }
1255
+ ];
1256
+ var sortByValuesWithValue = [...sortByValuesBase, { label: (0, i18n_exports._)("Value"), value: "value" }];
1257
+ var sortByValuesWithValueAndTrend = [
1258
+ ...sortByValuesBase,
1259
+ { label: (0, i18n_exports._)("Value"), value: "value" },
1260
+ { label: (0, i18n_exports._)("Trend"), value: "trend" }
1261
+ ];
1262
+ var makeSortRow = (sortByValues) => [
1263
+ {
1264
+ label: (0, i18n_exports._)("Sort by"),
1265
+ option: "trellisSortBy",
1266
+ editor: "editor.select",
1267
+ editorProps: {
1268
+ values: sortByValues
1269
+ },
1270
+ showEditor: isTrellisEnabled2
1271
+ },
1272
+ {
1273
+ label: (0, i18n_exports._)("Sort order"),
1274
+ option: "trellisSortOrder",
1275
+ editor: "editor.select",
1276
+ editorProps: {
1277
+ values: [
1278
+ { label: (0, i18n_exports._)("Ascending"), value: "ascending" },
1279
+ { label: (0, i18n_exports._)("Descending"), value: "descending" }
1280
+ ]
1281
+ },
1282
+ showEditor: isTrellisEnabled2
1283
+ }
1284
+ ];
1285
+ var trellisLayoutRow = [
1286
+ {
1287
+ label: (0, i18n_exports._)("Trellis layout"),
1288
+ option: "splitByLayout",
1289
+ editor: "editor.toggle",
1290
+ showEditor: isTrellisFeatureFlagOn2
1291
+ }
1292
+ ];
1293
+ var trellisSplitByRow = [
1294
+ {
1295
+ label: (0, i18n_exports._)("Split by"),
1296
+ option: "trellisSplitBy",
1297
+ editor: "editor.trellisSplitBy",
1298
+ editorProps: {
1299
+ dataSourceKey: "primary"
1300
+ },
1301
+ showEditor: isTrellisEnabled2
1302
+ }
1303
+ ];
1304
+ var trellisLayoutRows = [
1248
1305
  [
1249
1306
  {
1250
1307
  label: (0, i18n_exports._)("Number of columns"),
@@ -1288,6 +1345,24 @@ var TrellisEditorConfig = [
1288
1345
  }
1289
1346
  ]
1290
1347
  ];
1348
+ var TrellisEditorConfig = [
1349
+ trellisLayoutRow,
1350
+ trellisSplitByRow,
1351
+ makeSortRow(sortByValuesBase),
1352
+ ...trellisLayoutRows
1353
+ ];
1354
+ var GaugeTrellisEditorConfig = [
1355
+ trellisLayoutRow,
1356
+ trellisSplitByRow,
1357
+ makeSortRow(sortByValuesWithValue),
1358
+ ...trellisLayoutRows
1359
+ ];
1360
+ var SingleValueTrellisEditorConfig = [
1361
+ trellisLayoutRow,
1362
+ trellisSplitByRow,
1363
+ makeSortRow(sortByValuesWithValueAndTrend),
1364
+ ...trellisLayoutRows
1365
+ ];
1291
1366
  var TimechartTrellisEditorConfig = [
1292
1367
  [
1293
1368
  {
@@ -1295,7 +1370,6 @@ var TimechartTrellisEditorConfig = [
1295
1370
  option: "splitByLayout",
1296
1371
  editor: "editor.toggle",
1297
1372
  showEditor: isTrellisFeatureFlagOn2,
1298
- // add help text for timecharts
1299
1373
  editorProps: {
1300
1374
  help: (0, i18n_exports._)(
1301
1375
  "Y2-axis and overlay field configurations are not supported when trellis is enabled."
@@ -1304,7 +1378,9 @@ var TimechartTrellisEditorConfig = [
1304
1378
  }
1305
1379
  }
1306
1380
  ],
1307
- ...TrellisEditorConfig.slice(1),
1381
+ trellisSplitByRow,
1382
+ makeSortRow(sortByValuesBase),
1383
+ ...trellisLayoutRows,
1308
1384
  [
1309
1385
  {
1310
1386
  label: (0, i18n_exports._)("Shared y-axis scale"),
@@ -1386,7 +1462,7 @@ var AxesChartDataDisplayBase = {
1386
1462
  editorProps: {
1387
1463
  filterByTypes: ["number"]
1388
1464
  },
1389
- isDisabled: isTrellisEnabled3
1465
+ isDisabled: ({ options, featureFlags }) => isTrellisEnabled3({ options, featureFlags }) || options.stackMode === "stacked100"
1390
1466
  }
1391
1467
  ],
1392
1468
  [
@@ -1910,6 +1986,10 @@ var AxesChartXGridAndLabelsBubbleScatter = {
1910
1986
  var AxesChartXGridAndLabels_default = AxesChartXGridAndLabels;
1911
1987
 
1912
1988
  // src/common/editorConfig/AxesChartYGridAndLabels.ts
1989
+ var isAcceleratedRenderEnabled2 = ({ options, featureFlags }) => {
1990
+ const { acceleratedRender } = options;
1991
+ return isAcceleratedRenderFeatureFlagOn({ featureFlags }) && acceleratedRender;
1992
+ };
1913
1993
  var AxesChartYGridAndLabels = {
1914
1994
  label: (0, i18n_exports._)("Y-axis grid and labels"),
1915
1995
  layout: [
@@ -1974,7 +2054,8 @@ var AxesChartYGridAndLabels = {
1974
2054
  {
1975
2055
  label: (0, i18n_exports._)("Extend to whole grid"),
1976
2056
  option: "showYAxisExtendedRange",
1977
- editor: "editor.checkbox"
2057
+ editor: "editor.checkbox",
2058
+ showEditor: ({ options, featureFlags }) => !isAcceleratedRenderEnabled2({ options, featureFlags })
1978
2059
  }
1979
2060
  ],
1980
2061
  [
@@ -2271,6 +2352,9 @@ var axesChartY2GridAndLabels = {
2271
2352
  var AxesChartY2GridAndLabels_default = axesChartY2GridAndLabels;
2272
2353
 
2273
2354
  // src/Line/config.ts
2355
+ var isTrue = (value) => value === true || value === "true";
2356
+ var hasSteppedInterpolationEnabled = ({ options }) => (options == null ? void 0 : options.stepPosition) === "before" || (options == null ? void 0 : options.stepPosition) === "after";
2357
+ var shouldHideLineSmoothingEditor = ({ options, featureFlags }) => isTrue(featureFlags == null ? void 0 : featureFlags.visualizations_enableAcceleratedRender) && isTrue(options == null ? void 0 : options.acceleratedRender) && hasSteppedInterpolationEnabled({ options });
2274
2358
  var dataContract = {
2275
2359
  requiredDataSources: [
2276
2360
  {
@@ -2341,7 +2425,8 @@ var editorConfig = [
2341
2425
  {
2342
2426
  label: (0, i18n_exports._)("Line smoothing"),
2343
2427
  option: "showLineSmoothing",
2344
- editor: "editor.toggle"
2428
+ editor: "editor.toggle",
2429
+ showEditor: ({ options, featureFlags }) => !shouldHideLineSmoothingEditor({ options, featureFlags })
2345
2430
  }
2346
2431
  ],
2347
2432
  [
@@ -2518,7 +2603,7 @@ var prop_types_default = "default" in defaultImport29 ? defaultImport29.default
2518
2603
  var INITIAL_HEIGHT = 250;
2519
2604
  var SplunkVisualization = class {
2520
2605
  };
2521
- SplunkVisualization.propTypes = {
2606
+ __publicField(SplunkVisualization, "propTypes", {
2522
2607
  /**
2523
2608
  * display mode
2524
2609
  */
@@ -2594,11 +2679,11 @@ SplunkVisualization.propTypes = {
2594
2679
  * A callback to request new data with updated request params
2595
2680
  */
2596
2681
  onRequestParamsChange: prop_types_exports.func
2597
- };
2682
+ });
2598
2683
  /**
2599
2684
  *
2600
2685
  */
2601
- SplunkVisualization.defaults = {
2686
+ __publicField(SplunkVisualization, "defaults", {
2602
2687
  // BaseVisualization in dashboard-visualizations uses 100% for width but 250 for height
2603
2688
  width: "100%",
2604
2689
  height: INITIAL_HEIGHT,
@@ -2613,7 +2698,7 @@ SplunkVisualization.defaults = {
2613
2698
  onComputedProps: () => ({}),
2614
2699
  loading: false,
2615
2700
  onRequestParamsChange: lodash_exports.noop
2616
- };
2701
+ });
2617
2702
  var SplunkVisualization_default = SplunkVisualization;
2618
2703
 
2619
2704
  // src/common/hooks/useSorting.ts
@@ -2664,9 +2749,9 @@ var usePaginationParams = ({
2664
2749
  meta,
2665
2750
  onRequestParamsChange
2666
2751
  }) => {
2667
- const totalCount = meta && meta.totalCount || 0;
2668
- const offset = requestParams && requestParams.offset || 0;
2669
- const count = requestParams && requestParams.count;
2752
+ const totalCount = (meta == null ? void 0 : meta.totalCount) || 0;
2753
+ const offset = (requestParams == null ? void 0 : requestParams.offset) || 0;
2754
+ const count = requestParams == null ? void 0 : requestParams.count;
2670
2755
  const totalPages = typeof count === "number" && count > 0 ? Math.ceil(totalCount / count) : 0;
2671
2756
  const current = typeof count === "number" && count > 0 ? Math.floor(offset / count) + 1 : 0;
2672
2757
  const isPaging = totalPages > 1 && typeof onRequestParamsChange === "function";
@@ -2765,7 +2850,7 @@ var Cover = styled_components_default.div`
2765
2850
  bottom: 0;
2766
2851
  `;
2767
2852
  var Blocker = styled_components_default.div.attrs({
2768
- "data-splunk-visualization-version": "28.5.2 - fd77ce608"
2853
+ "data-splunk-visualization-version": "28.6.0 - 92427899a"
2769
2854
  })`
2770
2855
  position: relative;
2771
2856
  width: 100%;
@@ -2846,7 +2931,7 @@ var withFixedSizeContainer = (Viz) => {
2846
2931
  FixSizeItem,
2847
2932
  {
2848
2933
  "data-test": "fix-size-item",
2849
- "data-splunk-visualization-version": "28.5.2 - fd77ce608",
2934
+ "data-splunk-visualization-version": "28.6.0 - 92427899a",
2850
2935
  width,
2851
2936
  height,
2852
2937
  backgroundColor
@@ -3126,7 +3211,7 @@ var dataSourcesSplitByAggregationsUnknown = (dataSource) => {
3126
3211
  const columns = (_d = (_c = dataSource == null ? void 0 : dataSource.primary) == null ? void 0 : _c.data) == null ? void 0 : _d.columns;
3127
3212
  let splitDataSources = null;
3128
3213
  let errorCode = null;
3129
- if (fields && fields.length) {
3214
+ if (fields == null ? void 0 : fields.length) {
3130
3215
  splitDataSources = {};
3131
3216
  for (let i = 0; i < fields.length; i += 1) {
3132
3217
  const fieldName = fields[i].name;
@@ -3177,7 +3262,7 @@ var dataSourcesSplitByAggregationsTimechartAndChart = (dataSource) => {
3177
3262
  }
3178
3263
  });
3179
3264
  });
3180
- } else if ((!splitByFields || !splitByFields.length) && fields.length > 1) {
3265
+ } else if (!(splitByFields == null ? void 0 : splitByFields.length) && fields.length > 1) {
3181
3266
  splitDataSources = {};
3182
3267
  for (let i = 1; i < fields.length; i += 1) {
3183
3268
  const fieldName = fields[i].name;
@@ -3233,7 +3318,7 @@ var dataSourcesSplitByModeTimechart = (dataSource, splitBy) => {
3233
3318
  if (fields.length > 0) {
3234
3319
  splitByFields = (0, trellisUtils_exports.extractSplitByFieldsChartFields)(fields);
3235
3320
  }
3236
- if (splitByFields && splitByFields.indexOf(splitBy) > -1) {
3321
+ if (splitByFields == null ? void 0 : splitByFields.includes(splitBy)) {
3237
3322
  splitDataSources = {};
3238
3323
  const dataSourceKeys = (0, trellisUtils_exports.extractDataSourceAggregationKeysChart)(fields);
3239
3324
  const valueKeys = [];
@@ -3264,6 +3349,68 @@ var dataSourcesSplitByModeTimechart = (dataSource, splitBy) => {
3264
3349
  }
3265
3350
  return { splitDataSources, errorCode };
3266
3351
  };
3352
+ var splitRowWise = (dataSource, columns, fields, otherSplitBy, dataSourceKeys, nonDataSourceAggregations) => {
3353
+ const splitDataSources = {};
3354
+ const valueKeys = (0, lodash_exports.cloneDeep)(columns[0]);
3355
+ valueKeys.forEach((val, idx) => {
3356
+ splitDataSources[val] = (0, lodash_exports.cloneDeep)((0, lodash_exports.omit)(dataSource, ["primary.data.fields", "primary.data.columns"]));
3357
+ splitDataSources[val].primary.data.fields = [];
3358
+ if (otherSplitBy.length) {
3359
+ splitDataSources[val].primary.data.fields = [{ name: otherSplitBy[0] }];
3360
+ }
3361
+ if (dataSourceKeys.length) {
3362
+ const columnValues = [[]];
3363
+ splitDataSources[val].primary.data.fields = [
3364
+ ...splitDataSources[val].primary.data.fields,
3365
+ ...dataSourceKeys.map((k) => ({ name: k }))
3366
+ ];
3367
+ dataSourceKeys.forEach(() => {
3368
+ columnValues.push([]);
3369
+ });
3370
+ for (let i = 1; i <= Math.ceil((fields.length - 1) / dataSourceKeys.length); i += 1) {
3371
+ columnValues[0].push(fields[i].splitby_value ? fields[i].splitby_value : fields[i].name);
3372
+ dataSourceKeys.forEach((dskey, dsIndx) => {
3373
+ const mul = (fields.length - 1) / dataSourceKeys.length;
3374
+ columnValues[dsIndx + 1].push(columns[i + dsIndx * mul][idx]);
3375
+ });
3376
+ }
3377
+ splitDataSources[val].primary.data.columns = columnValues;
3378
+ } else if (nonDataSourceAggregations.length) {
3379
+ const columnValues = [];
3380
+ fields.forEach((aggregationField, fieldIdx) => {
3381
+ if (fieldIdx > 0) {
3382
+ splitDataSources[val].primary.data.fields.push(aggregationField);
3383
+ columnValues.push([columns[fieldIdx][idx]]);
3384
+ }
3385
+ });
3386
+ splitDataSources[val].primary.data.columns = columnValues;
3387
+ }
3388
+ });
3389
+ return splitDataSources;
3390
+ };
3391
+ var splitColumnWise = (dataSource, columns, fields, otherSplitBy, dataSourceKeys) => {
3392
+ const splitDataSources = {};
3393
+ const valueKeys = [];
3394
+ for (let i = 1; i < fields.length; i += 1) {
3395
+ valueKeys.push(fields[i].splitby_value ? fields[i].splitby_value : fields[i].name);
3396
+ }
3397
+ valueKeys.forEach((val) => {
3398
+ splitDataSources[val] = (0, lodash_exports.cloneDeep)((0, lodash_exports.omit)(dataSource, ["primary.data.fields", "primary.data.columns"]));
3399
+ splitDataSources[val].primary.data.fields = [
3400
+ { name: otherSplitBy[0] },
3401
+ ...dataSourceKeys.map((k) => ({ name: k }))
3402
+ ];
3403
+ splitDataSources[val].primary.data.columns = [[...columns[0]]];
3404
+ dataSourceKeys.forEach((dsKey) => {
3405
+ fields.forEach((field, idx) => {
3406
+ if (field.data_source === dsKey && (field.splitby_value === val || field.name === val)) {
3407
+ splitDataSources[val].primary.data.columns.push([...columns[idx]]);
3408
+ }
3409
+ });
3410
+ });
3411
+ });
3412
+ return splitDataSources;
3413
+ };
3267
3414
  var dataSourcesSplitByModeChart = (dataSource, splitBy) => {
3268
3415
  var _a, _b, _c, _d;
3269
3416
  const fields = toFieldEntries((_b = (_a = dataSource == null ? void 0 : dataSource.primary) == null ? void 0 : _a.data) == null ? void 0 : _b.fields);
@@ -3274,8 +3421,7 @@ var dataSourcesSplitByModeChart = (dataSource, splitBy) => {
3274
3421
  if (fields.length > 0) {
3275
3422
  splitByFields = (0, trellisUtils_exports.extractSplitByFieldsChartFields)(fields);
3276
3423
  }
3277
- if (splitByFields && splitByFields.indexOf(splitBy) > -1) {
3278
- splitDataSources = {};
3424
+ if (splitByFields == null ? void 0 : splitByFields.includes(splitBy)) {
3279
3425
  const splitByFieldIdx = splitByFields.findIndex((f) => f === splitBy);
3280
3426
  const otherSplitBy = splitByFields.filter((f) => f !== splitBy);
3281
3427
  const dataSourceKeys = (0, trellisUtils_exports.extractDataSourceAggregationKeysChart)(fields);
@@ -3286,71 +3432,16 @@ var dataSourcesSplitByModeChart = (dataSource, splitBy) => {
3286
3432
  }
3287
3433
  }
3288
3434
  if (splitByFieldIdx === 0) {
3289
- const valueKeys = (0, lodash_exports.cloneDeep)(columns[0]);
3290
- valueKeys.forEach((val, idx) => {
3291
- splitDataSources[val] = (0, lodash_exports.cloneDeep)(
3292
- (0, lodash_exports.omit)(dataSource, ["primary.data.fields", "primary.data.columns"])
3293
- );
3294
- splitDataSources[val].primary.data.fields = [];
3295
- if (otherSplitBy.length) {
3296
- splitDataSources[val].primary.data.fields = [{ name: otherSplitBy[0] }];
3297
- }
3298
- if (dataSourceKeys.length) {
3299
- const columnValues = [[]];
3300
- splitDataSources[val].primary.data.fields = [
3301
- ...splitDataSources[val].primary.data.fields,
3302
- ...dataSourceKeys.map((k) => ({
3303
- name: k
3304
- }))
3305
- ];
3306
- dataSourceKeys.forEach(() => {
3307
- columnValues.push([]);
3308
- });
3309
- for (let i = 1; i <= Math.ceil((fields.length - 1) / dataSourceKeys.length); i += 1) {
3310
- columnValues[0].push(
3311
- fields[i].splitby_value ? fields[i].splitby_value : fields[i].name
3312
- );
3313
- dataSourceKeys.forEach((dskey, dsIndx) => {
3314
- const mul = (fields.length - 1) / dataSourceKeys.length;
3315
- columnValues[dsIndx + 1].push(columns[i + dsIndx * mul][idx]);
3316
- });
3317
- }
3318
- splitDataSources[val].primary.data.columns = columnValues;
3319
- } else if (nonDataSourceAggregations.length) {
3320
- const columnValues = [];
3321
- fields.forEach((aggregationField, fieldIdx) => {
3322
- if (fieldIdx > 0) {
3323
- splitDataSources[val].primary.data.fields.push(aggregationField);
3324
- columnValues.push([columns[fieldIdx][idx]]);
3325
- }
3326
- });
3327
- splitDataSources[val].primary.data.columns = columnValues;
3328
- }
3329
- });
3435
+ splitDataSources = splitRowWise(
3436
+ dataSource,
3437
+ columns,
3438
+ fields,
3439
+ otherSplitBy,
3440
+ dataSourceKeys,
3441
+ nonDataSourceAggregations
3442
+ );
3330
3443
  } else {
3331
- const valueKeys = [];
3332
- for (let i = 1; i < fields.length; i += 1) {
3333
- valueKeys.push(fields[i].splitby_value ? fields[i].splitby_value : fields[i].name);
3334
- }
3335
- valueKeys.forEach((val) => {
3336
- splitDataSources[val] = (0, lodash_exports.cloneDeep)(
3337
- (0, lodash_exports.omit)(dataSource, ["primary.data.fields", "primary.data.columns"])
3338
- );
3339
- splitDataSources[val].primary.data.fields = [
3340
- { name: otherSplitBy[0] },
3341
- ...dataSourceKeys.map((k) => ({
3342
- name: k
3343
- }))
3344
- ];
3345
- splitDataSources[val].primary.data.columns = [[...columns[0]]];
3346
- dataSourceKeys.forEach((dsKey) => {
3347
- fields.forEach((field, idx) => {
3348
- if (field.data_source === dsKey && (field.splitby_value === val || field.name === val)) {
3349
- splitDataSources[val].primary.data.columns.push([...columns[idx]]);
3350
- }
3351
- });
3352
- });
3353
- });
3444
+ splitDataSources = splitColumnWise(dataSource, columns, fields, otherSplitBy, dataSourceKeys);
3354
3445
  }
3355
3446
  } else {
3356
3447
  errorCode = "INVALID_SPLIT_BY_FIELD";
@@ -3368,7 +3459,7 @@ var dataSourcesSplitByModeStatsorUnknown = (dataSource, splitBy, splitMode) => {
3368
3459
  splitByFields = splitMode !== trellisUtils_exports.UNKNOWN ? (0, trellisUtils_exports.extractSplitByFieldsForStats)(fields) : (0, trellisUtils_exports.extractSplitByFieldsForUnknown)(fields);
3369
3460
  }
3370
3461
  const splitByIndex = fields.findIndex((field) => field.name === splitBy);
3371
- if (splitByFields && splitByFields.indexOf(splitBy) > -1) {
3462
+ if (splitByFields == null ? void 0 : splitByFields.includes(splitBy)) {
3372
3463
  const splitByColumn = (_f = (_e = dataSource == null ? void 0 : dataSource.primary) == null ? void 0 : _e.data) == null ? void 0 : _f.columns[splitByIndex];
3373
3464
  splitDataSources = {};
3374
3465
  splitByColumn.forEach((val, idx) => {
@@ -3490,11 +3581,78 @@ var defaultImport35 = __toESM(require("@splunk/react-icons/Triangle"));
3490
3581
  __reExport(Triangle_exports, require("@splunk/react-icons/Triangle"));
3491
3582
  var Triangle_default = "default" in defaultImport35 ? defaultImport35.default : defaultImport35;
3492
3583
 
3584
+ // esm-externals:@splunk/visualizations-shared/propUtils
3585
+ var propUtils_exports = {};
3586
+ __export(propUtils_exports, {
3587
+ default: () => propUtils_default
3588
+ });
3589
+ var defaultImport36 = __toESM(require("@splunk/visualizations-shared/propUtils"));
3590
+ __reExport(propUtils_exports, require("@splunk/visualizations-shared/propUtils"));
3591
+ var propUtils_default = "default" in defaultImport36 ? defaultImport36.default : defaultImport36;
3592
+
3593
+ // esm-externals:@splunk/visualizations-shared/simpleXMLOptions
3594
+ var simpleXMLOptions_exports = {};
3595
+ __export(simpleXMLOptions_exports, {
3596
+ default: () => simpleXMLOptions_default
3597
+ });
3598
+ var defaultImport37 = __toESM(require("@splunk/visualizations-shared/simpleXMLOptions"));
3599
+ __reExport(simpleXMLOptions_exports, require("@splunk/visualizations-shared/simpleXMLOptions"));
3600
+ var simpleXMLOptions_default = "default" in defaultImport37 ? defaultImport37.default : defaultImport37;
3601
+
3493
3602
  // src/common/chartingUtils.ts
3603
+ var SHARED_AXIS_CHART_CANVAS_SPECIFIC_PROPS = [
3604
+ "yAxisMin",
3605
+ "yAxisMax",
3606
+ "y2AxisMin",
3607
+ "y2AxisMax",
3608
+ "showXMajorGridLines",
3609
+ "showYMajorGridLines",
3610
+ "showY2MajorGridLines",
3611
+ "showYMinorGridLines",
3612
+ "showY2MinorGridLines",
3613
+ "xAxisMajorTickVisibility",
3614
+ "xAxisMajorTickSize",
3615
+ "yAxisMajorTickVisibility",
3616
+ "y2AxisMajorTickVisibility",
3617
+ "yAxisMajorTickSize",
3618
+ "y2AxisMajorTickSize",
3619
+ "yAxisMinorTickVisibility",
3620
+ "y2AxisMinorTickVisibility",
3621
+ "yAxisMinorTickSize",
3622
+ "y2AxisMinorTickSize",
3623
+ "legendMode",
3624
+ "legendTruncation"
3625
+ ];
3626
+ var transformAxisChartOptions = ({
3627
+ originalOptions,
3628
+ optionsSchema: optionsSchema2,
3629
+ chart,
3630
+ convertToSCProps,
3631
+ preservedProps
3632
+ }) => {
3633
+ const returnOptions = (0, propUtils_exports.adjustOptionsToSchema)(originalOptions, optionsSchema2);
3634
+ const convertedOptions = convertToSCProps(returnOptions);
3635
+ const transformed = __spreadProps(__spreadValues({}, (0, simpleXMLOptions_exports.getSimpleXMLOptionsForProps)(convertedOptions)), {
3636
+ chart
3637
+ });
3638
+ const preserved = preservedProps.reduce(
3639
+ (acc, prop) => {
3640
+ if (returnOptions[prop] !== void 0) {
3641
+ acc[prop] = returnOptions[prop];
3642
+ }
3643
+ return acc;
3644
+ },
3645
+ {}
3646
+ );
3647
+ if (convertedOptions.legendLabels !== void 0) {
3648
+ preserved.legendLabels = convertedOptions.legendLabels;
3649
+ }
3650
+ return __spreadValues(__spreadValues({}, transformed), preserved);
3651
+ };
3494
3652
  var DEFAULT_LINE_WIDTH = 2;
3495
- var getAnnotations = ({ annotationX, annotationColor, annotationLabel }) => annotationX && annotationX.length ? annotationX.map((timestamp, i) => ({
3496
- color: annotationColor && annotationColor[i],
3497
- label: annotationLabel && annotationLabel[i],
3653
+ var getAnnotations = ({ annotationX, annotationColor, annotationLabel }) => (annotationX == null ? void 0 : annotationX.length) ? annotationX.map((timestamp, i) => ({
3654
+ color: annotationColor == null ? void 0 : annotationColor[i],
3655
+ label: annotationLabel == null ? void 0 : annotationLabel[i],
3498
3656
  time: timestamp
3499
3657
  })) : [];
3500
3658
  var getAnnotationsForCanvas = ({
@@ -3607,6 +3765,39 @@ function extractAdditionalTooltipValues(columns, fields, additionalTooltipFields
3607
3765
  }
3608
3766
  return additionalTooltipValuesArray;
3609
3767
  }
3768
+ var areStringArraysEqual = (a, b) => {
3769
+ if (a === b) return true;
3770
+ if (!a || !b) return false;
3771
+ if (a.length !== b.length) return false;
3772
+ for (let i = 0; i < a.length; i += 1) {
3773
+ if (a[i] !== b[i]) return false;
3774
+ }
3775
+ return true;
3776
+ };
3777
+ var createAdditionalTooltipValuesMemoizer = () => {
3778
+ let cache = {
3779
+ columns: null,
3780
+ fields: null,
3781
+ additionalTooltipFields: void 0,
3782
+ result: void 0
3783
+ };
3784
+ return (columns, fields, additionalTooltipFields) => {
3785
+ if (cache.columns === columns && cache.fields === fields && areStringArraysEqual(cache.additionalTooltipFields, additionalTooltipFields)) {
3786
+ return cache.result;
3787
+ }
3788
+ let result;
3789
+ if ((additionalTooltipFields == null ? void 0 : additionalTooltipFields.length) && columns && fields) {
3790
+ result = extractAdditionalTooltipValues(columns, fields, additionalTooltipFields);
3791
+ }
3792
+ cache = {
3793
+ columns,
3794
+ fields,
3795
+ additionalTooltipFields,
3796
+ result
3797
+ };
3798
+ return result;
3799
+ };
3800
+ };
3610
3801
  var shouldEnableSearchZoom = (eventHandlers = [], xField = "") => {
3611
3802
  const rangeSelectEventHandler = eventHandlers.find(
3612
3803
  (eventHandler) => {
@@ -3617,9 +3808,9 @@ var shouldEnableSearchZoom = (eventHandlers = [], xField = "") => {
3617
3808
  const xAxisIsTime = xField === "_time";
3618
3809
  return !!rangeSelectEventHandler && xAxisIsTime;
3619
3810
  };
3620
- var canvasSupportedTimeSeriesCharts = ["splunk.line"];
3811
+ var canvasSupportedTimeSeriesCharts = ["splunk.line", "splunk.area"];
3621
3812
  var isTimeSeriesCanvasRenderSupported = (vizConfigKey) => {
3622
- return canvasSupportedTimeSeriesCharts.indexOf(vizConfigKey) > -1;
3813
+ return canvasSupportedTimeSeriesCharts.includes(vizConfigKey);
3623
3814
  };
3624
3815
  var filterChartDataFromInternalFields = (chartData) => {
3625
3816
  const { fields, columns } = chartData;
@@ -3774,46 +3965,66 @@ var getY2ScaleConfig = (label, axisAbbreviation, axisScale, roundAxisLabelsToInt
3774
3965
  }
3775
3966
  return y2Config;
3776
3967
  };
3777
- var getSeriesOverrides = (yfields, y2fields, lineWidth, overlayFields, y2Enabled, nullValueMode, markerDisplay, lineDashStyle, lineDashStylesByField, stepPosition, stepPositionsByField) => {
3968
+ var getSeriesType = (isOverlay, isAreaChart, isStacked) => {
3969
+ if (isOverlay) return "line";
3970
+ if (!isAreaChart) return void 0;
3971
+ return isStacked ? "stacked-area" : "area";
3972
+ };
3973
+ var getY2Scale = (field, y2fields, overlayFields) => {
3974
+ 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));
3975
+ return assignToY2 ? "y2" : "y";
3976
+ };
3977
+ var getSeriesOverrides = (opts) => {
3978
+ var _a;
3979
+ const {
3980
+ yfields,
3981
+ y2fields,
3982
+ lineWidth,
3983
+ overlayFields,
3984
+ y2Enabled,
3985
+ nullValueMode,
3986
+ markerDisplay,
3987
+ lineDashStyle,
3988
+ lineDashStylesByField,
3989
+ stepPosition,
3990
+ stepPositionsByField,
3991
+ type,
3992
+ stackMode,
3993
+ showLines
3994
+ } = opts;
3778
3995
  const seriesConfig = {};
3779
3996
  let spanGaps;
3780
- let replaceNullsWithZero;
3781
3997
  if (nullValueMode === "gaps") {
3782
3998
  spanGaps = false;
3783
- } else if (nullValueMode === "connect" || nullValueMode === "zero") {
3999
+ } else if (nullValueMode != null) {
3784
4000
  spanGaps = true;
3785
- if (nullValueMode === "zero") {
3786
- replaceNullsWithZero = true;
3787
- }
4001
+ } else {
4002
+ spanGaps = void 0;
3788
4003
  }
3789
- yfields.forEach((field) => {
4004
+ const replaceNullsWithZero = nullValueMode === "zero" ? true : void 0;
4005
+ const isAreaChart = type === "area";
4006
+ const isStacked = isAreaChart && (stackMode === "stacked" || stackMode === "stacked100");
4007
+ const areaFields = isAreaChart ? yfields.filter((f) => !(overlayFields == null ? void 0 : overlayFields.includes(f))) : yfields;
4008
+ const overlayFieldsInOrder = (_a = overlayFields == null ? void 0 : overlayFields.filter((f) => yfields.includes(f))) != null ? _a : [];
4009
+ const orderedFields = isAreaChart ? [...areaFields, ...overlayFieldsInOrder] : yfields;
4010
+ orderedFields.forEach((field) => {
4011
+ var _a2;
4012
+ const isOverlay = (_a2 = overlayFields == null ? void 0 : overlayFields.includes(field)) != null ? _a2 : false;
4013
+ const isPercent = isAreaChart && stackMode === "stacked100" && !isOverlay;
4014
+ const shouldHideAreaOutline = isAreaChart && showLines === false && !isOverlay;
3790
4015
  seriesConfig[field] = {
3791
- overrides: { width: lineWidth != null ? lineWidth : DEFAULT_LINE_WIDTH }
4016
+ overrides: __spreadValues({
4017
+ width: shouldHideAreaOutline ? 0 : lineWidth != null ? lineWidth : DEFAULT_LINE_WIDTH
4018
+ }, isPercent ? { stacking: { mode: "percent", group: "A" } } : {})
3792
4019
  };
3793
- if (spanGaps !== void 0) {
3794
- seriesConfig[field].overrides.spanGaps = spanGaps;
3795
- }
3796
- if (y2Enabled) {
3797
- const shouldAssignToY2 = (
3798
- // If y2Fields are present, assign all y2Fields to y2 scale
3799
- (y2fields == null ? void 0 : y2fields.length) > 0 && y2fields.includes(field) || // Else, assign all overlayFields to y2 scale
3800
- (!y2fields || y2fields.length === 0) && (overlayFields == null ? void 0 : overlayFields.includes(field))
3801
- );
3802
- if (shouldAssignToY2) {
3803
- seriesConfig[field].overrides.scale = "y2";
3804
- } else {
3805
- seriesConfig[field].overrides.scale = "y";
3806
- }
3807
- }
3808
- if (overlayFields == null ? void 0 : overlayFields.includes(field)) {
3809
- seriesConfig[field].type = "line";
3810
- }
3811
- if (markerDisplay !== void 0) {
3812
- seriesConfig[field].markerDisplay = markerDisplay;
3813
- }
3814
- const fieldDashStyle = (lineDashStylesByField == null ? void 0 : lineDashStylesByField[field]) || lineDashStyle;
3815
- if (fieldDashStyle) {
3816
- seriesConfig[field].lineDashStyle = fieldDashStyle;
4020
+ const seriesType = getSeriesType(isOverlay, isAreaChart, isStacked);
4021
+ if (seriesType !== void 0) seriesConfig[field].type = seriesType;
4022
+ if (spanGaps !== void 0) seriesConfig[field].overrides.spanGaps = spanGaps;
4023
+ if (y2Enabled) seriesConfig[field].overrides.scale = getY2Scale(field, y2fields, overlayFields);
4024
+ if (markerDisplay !== void 0) seriesConfig[field].markerDisplay = markerDisplay;
4025
+ if (!isAreaChart || isOverlay) {
4026
+ const fieldDashStyle = (lineDashStylesByField == null ? void 0 : lineDashStylesByField[field]) || lineDashStyle;
4027
+ if (fieldDashStyle) seriesConfig[field].lineDashStyle = fieldDashStyle;
3817
4028
  }
3818
4029
  const hasFieldStepPosition = Object.hasOwn(stepPositionsByField || {}, field);
3819
4030
  const fieldStepPosition = hasFieldStepPosition ? stepPositionsByField == null ? void 0 : stepPositionsByField[field] : stepPosition;
@@ -3979,6 +4190,38 @@ var parseArrayOption = (value) => {
3979
4190
  }
3980
4191
  return void 0;
3981
4192
  };
4193
+ var getAreaOpacityForCanvas = (areaOpacity) => (
4194
+ // Preserve legacy visualizations behavior where area opacity is squared to match charting output.
4195
+ areaOpacity !== void 0 && areaOpacity !== null ? __pow(areaOpacity, 2) : areaOpacity
4196
+ );
4197
+ var parseTickIntervalOption = (simpleXMLValue, canvasValue) => {
4198
+ if (simpleXMLValue) return Number(simpleXMLValue);
4199
+ if (canvasValue) return Number(canvasValue);
4200
+ return void 0;
4201
+ };
4202
+ var getYAxisTitles = ({
4203
+ y2Enabled,
4204
+ yFields,
4205
+ y2Fields,
4206
+ overlayFields,
4207
+ yAxisTitleText,
4208
+ yAxisTitleVisibility,
4209
+ y2AxisTitleText,
4210
+ y2AxisTitleVisibility,
4211
+ containerHeight
4212
+ }) => {
4213
+ const yFieldsForTitle = y2Enabled ? yFields.filter((field) => !y2Fields.includes(field)) : yFields;
4214
+ const fieldsForY2Axis = y2Fields.length > 0 ? y2Fields : overlayFields;
4215
+ const yAxisTitle = ellipsisAxisTitle(
4216
+ getComputedAxisTitles(yAxisTitleText, yFieldsForTitle, yAxisTitleVisibility),
4217
+ containerHeight
4218
+ );
4219
+ const y2AxisTitle = ellipsisAxisTitle(
4220
+ getComputedAxisTitles(y2AxisTitleText, fieldsForY2Axis, y2AxisTitleVisibility),
4221
+ containerHeight
4222
+ );
4223
+ return { yAxisTitle, y2AxisTitle };
4224
+ };
3982
4225
  var TimeSeriesChartWrapper = (props) => {
3983
4226
  var _b, _c, _d;
3984
4227
  const _a = props, {
@@ -4068,6 +4311,8 @@ var TimeSeriesChartWrapper = (props) => {
4068
4311
  "chart.overlayFields": overlayFieldsStr,
4069
4312
  "chart.nullValueMode": nullValueMode,
4070
4313
  "chart.showDataLabels": showDataLabels,
4314
+ "chart.showLines": showLines,
4315
+ "chart.stackMode": stackMode,
4071
4316
  lineWidth,
4072
4317
  lineDashStyle,
4073
4318
  fieldDashStyles: lineDashStylesByFieldStr,
@@ -4096,7 +4341,10 @@ var TimeSeriesChartWrapper = (props) => {
4096
4341
  yAxisMinorTickSize,
4097
4342
  y2AxisMinorTickSize,
4098
4343
  showYAxisWithZero: showYAxisWithZeroFromOptions,
4099
- showY2AxisWithZero: showY2AxisWithZeroFromOptions
4344
+ showY2AxisWithZero: showY2AxisWithZeroFromOptions,
4345
+ // area only props
4346
+ areaFillOpacity: areaOpacity,
4347
+ chart: chartType
4100
4348
  } = options;
4101
4349
  const dataValuesDisplay = showDataLabels === "none" ? "off" : showDataLabels;
4102
4350
  const showYAxisWithZero = showYAxisWithZeroFromProps != null ? showYAxisWithZeroFromProps : showYAxisWithZeroFromOptions;
@@ -4113,13 +4361,11 @@ var TimeSeriesChartWrapper = (props) => {
4113
4361
  const yAxisMax = parseAxisValue(yAxisMaxRaw);
4114
4362
  const y2AxisMin = parseAxisValue(y2AxisMinRaw);
4115
4363
  const y2AxisMax = parseAxisValue(y2AxisMaxRaw);
4116
- const parseTickInterval = (simpleXMLValue, canvasValue) => {
4117
- if (simpleXMLValue) return Number(simpleXMLValue);
4118
- if (canvasValue) return Number(canvasValue);
4119
- return void 0;
4120
- };
4121
- const yAxisMajorTickIntervalNum = parseTickInterval(yAxisMajorUnitFromSimpleXML, yAxisMajorTickInterval);
4122
- const y2AxisMajorTickIntervalNum = parseTickInterval(
4364
+ const yAxisMajorTickIntervalNum = parseTickIntervalOption(
4365
+ yAxisMajorUnitFromSimpleXML,
4366
+ yAxisMajorTickInterval
4367
+ );
4368
+ const y2AxisMajorTickIntervalNum = parseTickIntervalOption(
4123
4369
  y2AxisMajorUnitFromSimpleXML,
4124
4370
  y2AxisMajorTickInterval
4125
4371
  );
@@ -4128,6 +4374,7 @@ var TimeSeriesChartWrapper = (props) => {
4128
4374
  const y2AxisMajorTickSizeNum = y2AxisMajorTickSize != null ? Number(y2AxisMajorTickSize) : void 0;
4129
4375
  const yAxisMinorTickSizeNum = yAxisMinorTickSize != null ? Number(yAxisMinorTickSize) : void 0;
4130
4376
  const y2AxisMinorTickSizeNum = y2AxisMinorTickSize != null ? Number(y2AxisMinorTickSize) : void 0;
4377
+ const areaOpacityForCanvas = getAreaOpacityForCanvas(areaOpacity);
4131
4378
  const seriesColors = seriesColorsStr ? JSON.parse(seriesColorsStr) : void 0;
4132
4379
  const seriesColorsByField = fieldColors ? JSON.parse(fieldColors) : void 0;
4133
4380
  const lineDashStylesByField = lineDashStylesByFieldStr ? JSON.parse(lineDashStylesByFieldStr) : void 0;
@@ -4158,26 +4405,40 @@ var TimeSeriesChartWrapper = (props) => {
4158
4405
  );
4159
4406
  let xAxisTitle = getComputedAxisTitles(xAxisTitleText, [xField], xAxisTitleVisibility);
4160
4407
  xAxisTitle = ellipsisAxisTitle(xAxisTitle, containerWidth);
4161
- const yFieldsForTitle = y2Enabled ? yFields.filter((field) => !y2Fields.includes(field)) : yFields;
4162
- let yAxisTitle = getComputedAxisTitles(yAxisTitleText, yFieldsForTitle, yAxisTitleVisibility);
4163
- yAxisTitle = ellipsisAxisTitle(yAxisTitle, containerHeight);
4164
- const fieldsForY2Axis = y2Fields.length > 0 ? y2Fields : overlayFields;
4165
- let y2AxisTitle = getComputedAxisTitles(y2AxisTitleText, fieldsForY2Axis, y2AxisTitleVisibility);
4166
- y2AxisTitle = ellipsisAxisTitle(y2AxisTitle, containerHeight);
4408
+ const { yAxisTitle, y2AxisTitle } = getYAxisTitles({
4409
+ y2Enabled,
4410
+ yFields,
4411
+ y2Fields,
4412
+ overlayFields,
4413
+ yAxisTitleText,
4414
+ yAxisTitleVisibility,
4415
+ y2AxisTitleText,
4416
+ y2AxisTitleVisibility,
4417
+ containerHeight
4418
+ });
4167
4419
  const xScaleConfig = (0, react_exports.useMemo)(
4168
4420
  () => getXScaleConfig(xAxisTitle, xAxisLabelVisibility, xAxisLabelRotation),
4169
4421
  [xAxisTitle, xAxisLabelVisibility, xAxisLabelRotation]
4170
4422
  );
4423
+ const isStacked100 = stackMode === "stacked100";
4171
4424
  const yScaleConfig = (0, react_exports.useMemo)(
4172
- () => getYScaleConfig(
4173
- yAxisTitle,
4174
- yAxisAbbreviation,
4175
- yAxisScale,
4176
- yAxisLabelVisibility,
4177
- yAxisMin,
4178
- yAxisMax
4179
- ),
4180
- [yAxisTitle, yAxisAbbreviation, yAxisScale, yAxisLabelVisibility, yAxisMin, yAxisMax]
4425
+ () => {
4426
+ const config2 = getYScaleConfig(
4427
+ yAxisTitle,
4428
+ yAxisAbbreviation,
4429
+ yAxisScale,
4430
+ yAxisLabelVisibility,
4431
+ yAxisMin,
4432
+ yAxisMax
4433
+ );
4434
+ if (isStacked100) {
4435
+ config2.y.tickFmt = (v) => `${Math.round(v * 100)}%`;
4436
+ config2.y.range = () => [0, 1];
4437
+ }
4438
+ return config2;
4439
+ },
4440
+ // eslint-disable-next-line react-hooks/exhaustive-deps
4441
+ [yAxisTitle, yAxisAbbreviation, yAxisScale, yAxisLabelVisibility, yAxisMin, yAxisMax, isStacked100]
4181
4442
  );
4182
4443
  const y2ScaleConfig = (0, react_exports.useMemo)(() => {
4183
4444
  if (y2Enabled) {
@@ -4209,10 +4470,11 @@ var TimeSeriesChartWrapper = (props) => {
4209
4470
  ];
4210
4471
  chartData.fields = filteredChartData.fields;
4211
4472
  chartData.columns = seriesDataFormatted;
4473
+ const normalizedStackMode = stackMode === "stacked" || stackMode === "stacked100" ? stackMode : "auto";
4212
4474
  const seriesOverrides = (0, react_exports.useMemo)(
4213
- () => getSeriesOverrides(
4214
- yFields,
4215
- y2Fields,
4475
+ () => getSeriesOverrides({
4476
+ yfields: yFields,
4477
+ y2fields: y2Fields,
4216
4478
  lineWidth,
4217
4479
  overlayFields,
4218
4480
  y2Enabled,
@@ -4221,8 +4483,11 @@ var TimeSeriesChartWrapper = (props) => {
4221
4483
  lineDashStyle,
4222
4484
  lineDashStylesByField,
4223
4485
  stepPosition,
4224
- stepPositionsByField
4225
- ),
4486
+ stepPositionsByField,
4487
+ type: chartType,
4488
+ stackMode: normalizedStackMode,
4489
+ showLines
4490
+ }),
4226
4491
  [
4227
4492
  yFields,
4228
4493
  y2Fields,
@@ -4234,7 +4499,10 @@ var TimeSeriesChartWrapper = (props) => {
4234
4499
  lineDashStyle,
4235
4500
  lineDashStylesByField,
4236
4501
  stepPosition,
4237
- stepPositionsByField
4502
+ stepPositionsByField,
4503
+ chartType,
4504
+ normalizedStackMode,
4505
+ showLines
4238
4506
  ]
4239
4507
  );
4240
4508
  const chartingEventAnnotations = (0, react_exports.useMemo)(
@@ -4302,50 +4570,54 @@ var TimeSeriesChartWrapper = (props) => {
4302
4570
  react_exports.useEffect(() => {
4303
4571
  additionalTooltipValuesRef.current = additionalTooltipValues;
4304
4572
  }, [additionalTooltipValues]);
4573
+ const handleCrosshairMouseout = react_exports.useCallback(() => {
4574
+ if (onPointMouseOut && lastPayloadRef.current) {
4575
+ onPointMouseOut({
4576
+ type: "point.mouseout",
4577
+ originalEvent: lastOriginalEventRef.current,
4578
+ payload: lastPayloadRef.current
4579
+ });
4580
+ }
4581
+ previousMouseoverPayloadRef.current = null;
4582
+ }, [onPointMouseOut]);
4305
4583
  const handleChartCrosshairChange = react_exports.useCallback(
4306
4584
  (event) => {
4307
- if (onPointMouseOver || onPointMouseOut) {
4308
- if (!event) {
4309
- if (onPointMouseOut && lastPayloadRef.current) {
4310
- onPointMouseOut({
4311
- type: "point.mouseout",
4312
- originalEvent: lastOriginalEventRef.current,
4313
- payload: lastPayloadRef.current
4314
- });
4315
- }
4316
- previousMouseoverPayloadRef.current = null;
4317
- return;
4318
- }
4319
- const payload = __spreadProps(__spreadValues({}, (0, lodash_exports.pick)(event, "value", "seriesKey", "time", "index", "seriesIndex")), {
4320
- name: event.seriesKey
4585
+ if (!onPointMouseOver && !onPointMouseOut) {
4586
+ return;
4587
+ }
4588
+ if (!event) {
4589
+ handleCrosshairMouseout();
4590
+ return;
4591
+ }
4592
+ const payload = __spreadProps(__spreadValues({}, (0, lodash_exports.pick)(event, "value", "seriesKey", "time", "index", "seriesIndex")), {
4593
+ name: event.seriesKey
4594
+ });
4595
+ delete payload.seriesKey;
4596
+ if (event.rowContext) {
4597
+ Object.assign(
4598
+ payload,
4599
+ Object.keys(event.rowContext).reduce((acc, fieldName) => {
4600
+ acc[`row.${fieldName}.value`] = event.rowContext[fieldName];
4601
+ return acc;
4602
+ }, {})
4603
+ );
4604
+ }
4605
+ const updatedPayload = appendTrellisToPayload2(payload, trellisKey, trellisSplitBy);
4606
+ if (!hasMouseoverPayloadChanged(updatedPayload, previousMouseoverPayloadRef.current)) {
4607
+ return;
4608
+ }
4609
+ lastPayloadRef.current = updatedPayload;
4610
+ lastOriginalEventRef.current = event;
4611
+ previousMouseoverPayloadRef.current = __spreadValues({}, updatedPayload);
4612
+ if (onPointMouseOver) {
4613
+ onPointMouseOver({
4614
+ type: "point.mouseover",
4615
+ originalEvent: event,
4616
+ payload: updatedPayload
4321
4617
  });
4322
- delete payload.seriesKey;
4323
- if (event.rowContext) {
4324
- Object.assign(
4325
- payload,
4326
- Object.keys(event.rowContext).reduce((acc, fieldName) => {
4327
- acc[`row.${fieldName}.value`] = event.rowContext[fieldName];
4328
- return acc;
4329
- }, {})
4330
- );
4331
- }
4332
- const updatedPayload = appendTrellisToPayload2(payload, trellisKey, trellisSplitBy);
4333
- if (!hasMouseoverPayloadChanged(updatedPayload, previousMouseoverPayloadRef.current)) {
4334
- return;
4335
- }
4336
- lastPayloadRef.current = updatedPayload;
4337
- lastOriginalEventRef.current = event;
4338
- previousMouseoverPayloadRef.current = __spreadValues({}, updatedPayload);
4339
- if (onPointMouseOver) {
4340
- onPointMouseOver({
4341
- type: "point.mouseover",
4342
- originalEvent: event,
4343
- payload: updatedPayload
4344
- });
4345
- }
4346
4618
  }
4347
4619
  },
4348
- [onPointMouseOver, onPointMouseOut, trellisKey, trellisSplitBy]
4620
+ [onPointMouseOver, onPointMouseOut, trellisKey, trellisSplitBy, handleCrosshairMouseout]
4349
4621
  );
4350
4622
  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}`;
4351
4623
  const memoizedChart = (0, react_exports.useMemo)(() => {
@@ -4400,7 +4672,8 @@ var TimeSeriesChartWrapper = (props) => {
4400
4672
  showXAxisLine,
4401
4673
  showYAxisLine,
4402
4674
  showY2AxisLine,
4403
- xAxisMaxLabelParts
4675
+ xAxisMaxLabelParts,
4676
+ areaOpacity: areaOpacityForCanvas
4404
4677
  }
4405
4678
  ));
4406
4679
  }, [
@@ -4452,7 +4725,8 @@ var TimeSeriesChartWrapper = (props) => {
4452
4725
  showYAxisLine,
4453
4726
  showY2AxisLine,
4454
4727
  legendMode,
4455
- xAxisMaxLabelParts
4728
+ xAxisMaxLabelParts,
4729
+ areaOpacityForCanvas
4456
4730
  ]);
4457
4731
  const memoizedVisualization = (0, react_exports.useMemo)(() => {
4458
4732
  return /* @__PURE__ */ react_exports.createElement(VizStyleWrapper_default, { backgroundColor: bgColor }, memoizedChart);
@@ -4480,6 +4754,37 @@ var TimeSeriesChartWrapper_default = TimeSeriesChartWrapper;
4480
4754
 
4481
4755
  // src/common/withDashboardViz.tsx
4482
4756
  var SanitizedTimeSeriesChartWrapper = (0, SanitizeProps_exports.withSanitizedProps)(TimeSeriesChartWrapper_default);
4757
+ var buildEventCallbackProps = (supportedEvents, evaluatedOptionsToUse, onEventTrigger) => {
4758
+ const result = {};
4759
+ Object.keys(supportedEvents).forEach((eventName) => {
4760
+ const { parentKeys, payloadKeys } = supportedEvents[eventName];
4761
+ const eventCallbackPropName = (0, lodash_exports.camelCase)(`on.${eventName}`);
4762
+ let payload = {};
4763
+ if (Array.isArray(payloadKeys) && payloadKeys.length) {
4764
+ payloadKeys.forEach((p) => {
4765
+ payload[p] = evaluatedOptionsToUse[p];
4766
+ });
4767
+ }
4768
+ result[eventCallbackPropName] = (ev) => {
4769
+ if (ev == null ? void 0 : ev.payload) {
4770
+ payload = __spreadValues({}, ev.payload);
4771
+ }
4772
+ return onEventTrigger({
4773
+ originalEvent: ev,
4774
+ payload,
4775
+ type: eventName
4776
+ });
4777
+ };
4778
+ if (parentKeys) {
4779
+ for (let i = parentKeys.length - 1; i >= 0; i -= 1) {
4780
+ const newObject = {};
4781
+ newObject[parentKeys[i]] = result[eventCallbackPropName];
4782
+ result[eventCallbackPropName] = newObject;
4783
+ }
4784
+ }
4785
+ });
4786
+ return result;
4787
+ };
4483
4788
  var withDashboardViz = (opts) => {
4484
4789
  const {
4485
4790
  ReactViz,
@@ -4537,9 +4842,7 @@ var withDashboardViz = (opts) => {
4537
4842
  const isDownsamplingEnabledByFeatureFlag = Boolean(
4538
4843
  featureFlagContext == null ? void 0 : featureFlagContext.visualizations_enableDownsampling
4539
4844
  );
4540
- const isTrellisFeatureFlagOn5 = Boolean(
4541
- featureFlagContext && featureFlagContext.visualizations_enableTrellis
4542
- );
4845
+ const isTrellisFeatureFlagOn5 = Boolean(featureFlagContext == null ? void 0 : featureFlagContext.visualizations_enableTrellis);
4543
4846
  const isTrellisOn = isTrellisFeatureFlagOn5 && ((_a = vizConfig == null ? void 0 : vizConfig.supports) == null ? void 0 : _a.includes("trellis" /* TRELLIS */)) && (options == null ? void 0 : options.splitByLayout) === "trellis" /* TRELLIS */;
4544
4847
  const isAcceleratedRenderFeatureFlagOn2 = Boolean(
4545
4848
  featureFlagContext == null ? void 0 : featureFlagContext.visualizations_enableAcceleratedRender
@@ -4704,38 +5007,12 @@ var withDashboardViz = (opts) => {
4704
5007
  }
4705
5008
  );
4706
5009
  }
4707
- const eventCallbackProps = {};
4708
- if (hasEventHandlers && mode === "view" && vizConfig.supports.indexOf("events" /* EVENTS */) > -1) {
4709
- const supportedEvents = vizConfig.events;
4710
- Object.keys(supportedEvents).forEach((eventName) => {
4711
- const { parentKeys, payloadKeys } = supportedEvents[eventName];
4712
- const eventCallbackPropName = (0, lodash_exports.camelCase)(`on.${eventName}`);
4713
- let payload = {};
4714
- if (Array.isArray(payloadKeys) && payloadKeys.length) {
4715
- payloadKeys.forEach((p) => {
4716
- payload[p] = evaluatedOptionsToUse[p];
4717
- });
4718
- }
4719
- eventCallbackProps[eventCallbackPropName] = (ev) => {
4720
- if (ev == null ? void 0 : ev.payload) {
4721
- payload = __spreadValues({}, ev.payload);
4722
- }
4723
- return onEventTrigger({
4724
- originalEvent: ev,
4725
- payload,
4726
- type: eventName
4727
- });
4728
- };
4729
- if (parentKeys) {
4730
- for (let i = parentKeys.length - 1; i >= 0; i -= 1) {
4731
- const newObject = {};
4732
- newObject[parentKeys[i]] = eventCallbackProps[eventCallbackPropName];
4733
- eventCallbackProps[eventCallbackPropName] = newObject;
4734
- }
4735
- }
4736
- });
4737
- }
4738
- const computedVizProps = computeVizProps2(__spreadProps(__spreadValues(__spreadValues(__spreadValues({}, props), evaluatedOptionsToUse), eventCallbackProps), {
5010
+ const eventCallbackProps = hasEventHandlers && mode === "view" && vizConfig.supports.includes("events" /* EVENTS */) ? buildEventCallbackProps(vizConfig.events, evaluatedOptionsToUse, onEventTrigger) : {};
5011
+ const computedVizProps = computeVizProps2(__spreadProps(__spreadValues(__spreadProps(__spreadValues(__spreadValues({}, props), evaluatedOptionsToUse), {
5012
+ // Align option transformation with the actual renderer selected below.
5013
+ // This prevents canvas-only option preservation from leaking into Highcharts mode.
5014
+ isAcceleratedRenderOn
5015
+ }), eventCallbackProps), {
4739
5016
  themeFunc
4740
5017
  }));
4741
5018
  if (useAsyncEvaluatedOptions && Object.keys(evaluatedOptionsToUse).length === 0) {
@@ -4764,73 +5041,24 @@ var withDashboardViz = (opts) => {
4764
5041
  };
4765
5042
  var withDashboardViz_default = withDashboardViz;
4766
5043
 
4767
- // esm-externals:@splunk/visualizations-shared/propUtils
4768
- var propUtils_exports = {};
4769
- __export(propUtils_exports, {
4770
- default: () => propUtils_default
4771
- });
4772
- var defaultImport36 = __toESM(require("@splunk/visualizations-shared/propUtils"));
4773
- __reExport(propUtils_exports, require("@splunk/visualizations-shared/propUtils"));
4774
- var propUtils_default = "default" in defaultImport36 ? defaultImport36.default : defaultImport36;
4775
-
4776
- // esm-externals:@splunk/visualizations-shared/simpleXMLOptions
4777
- var simpleXMLOptions_exports = {};
4778
- __export(simpleXMLOptions_exports, {
4779
- default: () => simpleXMLOptions_default
4780
- });
4781
- var defaultImport37 = __toESM(require("@splunk/visualizations-shared/simpleXMLOptions"));
4782
- __reExport(simpleXMLOptions_exports, require("@splunk/visualizations-shared/simpleXMLOptions"));
4783
- var simpleXMLOptions_default = "default" in defaultImport37 ? defaultImport37.default : defaultImport37;
4784
-
4785
5044
  // src/Line/lineUtils.ts
4786
5045
  var transformOptions = (originalOptions) => {
4787
- const returnOptions = (0, propUtils_exports.adjustOptionsToSchema)(originalOptions, config_default.optionsSchema);
4788
- const convertedOptions = convertToLineSCProperties(returnOptions);
4789
- const transformed = __spreadProps(__spreadValues({}, (0, simpleXMLOptions_exports.getSimpleXMLOptionsForProps)(convertedOptions)), {
4790
- chart: "line"
4791
- });
4792
- const canvasSpecificProps = [
4793
- "yAxisMin",
4794
- "yAxisMax",
4795
- "y2AxisMin",
4796
- "y2AxisMax",
4797
- "showXMajorGridLines",
4798
- "showYMajorGridLines",
4799
- "showY2MajorGridLines",
4800
- "showYMinorGridLines",
4801
- "showY2MinorGridLines",
5046
+ const preservedProps = [
5047
+ ...SHARED_AXIS_CHART_CANVAS_SPECIFIC_PROPS,
4802
5048
  "showLineSmoothing",
4803
- "xAxisMajorTickVisibility",
4804
- "xAxisMajorTickSize",
4805
- "yAxisMajorTickVisibility",
4806
- "y2AxisMajorTickVisibility",
4807
- "yAxisMajorTickSize",
4808
- "y2AxisMajorTickSize",
4809
- "yAxisMinorTickVisibility",
4810
- "y2AxisMinorTickVisibility",
4811
- "yAxisMinorTickSize",
4812
- "y2AxisMinorTickSize",
4813
5049
  "xAxisLineVisibility",
4814
5050
  "yAxisLineVisibility",
4815
- "y2AxisLineVisibility",
4816
- "legendMode",
4817
- "legendTruncation"
5051
+ "y2AxisLineVisibility"
4818
5052
  // Note: yAxisMajorTickInterval, y2AxisMajorTickInterval, showYAxisWithZero, and showY2AxisWithZero
4819
5053
  // are NOT canvas-specific. They're mapped to SimpleXML props in lineOptionsSCMapping
4820
5054
  ];
4821
- const preservedProps = canvasSpecificProps.reduce(
4822
- (acc, prop) => {
4823
- if (returnOptions[prop] !== void 0) {
4824
- acc[prop] = returnOptions[prop];
4825
- }
4826
- return acc;
4827
- },
4828
- {}
4829
- );
4830
- if (convertedOptions.legendLabels !== void 0) {
4831
- preservedProps.legendLabels = convertedOptions.legendLabels;
4832
- }
4833
- return __spreadValues(__spreadValues({}, transformed), preservedProps);
5055
+ return transformAxisChartOptions({
5056
+ originalOptions,
5057
+ optionsSchema: config_default.optionsSchema,
5058
+ chart: "line",
5059
+ convertToSCProps: convertToLineSCProperties,
5060
+ preservedProps
5061
+ });
4834
5062
  };
4835
5063
  var convertMarkerOptions = (originalOptions, lineOptionValuesSCMapping) => {
4836
5064
  const originalOptionsWithAdditionalProps = originalOptions;
@@ -4938,6 +5166,53 @@ __reExport(themes_exports, require("@splunk/themes"));
4938
5166
  var themes_default = "default" in defaultImport39 ? defaultImport39.default : defaultImport39;
4939
5167
 
4940
5168
  // src/common/hocs/withTrellis.tsx
5169
+ var evaluatePanelOption = (panelDataSources, allOptions, optionKey, vizContext) => {
5170
+ try {
5171
+ const evaluated = Options_exports.Options.evaluate({ context: vizContext, options: allOptions }, panelDataSources);
5172
+ const num = Number(evaluated == null ? void 0 : evaluated[optionKey]);
5173
+ return Number.isNaN(num) ? Number.NaN : num;
5174
+ } catch (e) {
5175
+ return Number.NaN;
5176
+ }
5177
+ };
5178
+ var sortTrellisKeys = (keys, trellisSortBy, trellisSortOrder, modifiedDataSourceBySplitBy, mergedOptions, vizContext) => {
5179
+ if (trellisSortBy === "name") {
5180
+ keys.sort((a, b) => {
5181
+ const cmp = a.localeCompare(b, void 0, { numeric: true, sensitivity: "base" });
5182
+ return trellisSortOrder === "descending" ? -cmp : cmp;
5183
+ });
5184
+ } else if (trellisSortBy === "value" || trellisSortBy === "trend") {
5185
+ let optionKey;
5186
+ if (trellisSortBy === "trend") {
5187
+ optionKey = "trendValue";
5188
+ } else {
5189
+ optionKey = mergedOptions.value !== void 0 ? "value" : "majorValue";
5190
+ }
5191
+ keys.sort((a, b) => {
5192
+ const valA = evaluatePanelOption(
5193
+ modifiedDataSourceBySplitBy[a],
5194
+ mergedOptions,
5195
+ optionKey,
5196
+ vizContext
5197
+ );
5198
+ const valB = evaluatePanelOption(
5199
+ modifiedDataSourceBySplitBy[b],
5200
+ mergedOptions,
5201
+ optionKey,
5202
+ vizContext
5203
+ );
5204
+ const nanA = Number.isNaN(valA);
5205
+ const nanB = Number.isNaN(valB);
5206
+ if (nanA && nanB) return 0;
5207
+ if (nanA) return 1;
5208
+ if (nanB) return -1;
5209
+ const cmp = valA - valB;
5210
+ return trellisSortOrder === "descending" ? -cmp : cmp;
5211
+ });
5212
+ } else if (trellisSortOrder === "descending") {
5213
+ keys.reverse();
5214
+ }
5215
+ };
4941
5216
  var TrellisContainer = styled_components_default.div`
4942
5217
  overflow: hidden;
4943
5218
  display: flex;
@@ -4982,6 +5257,14 @@ var showErrorMessage = (errorCode, width, height) => {
4982
5257
  }
4983
5258
  return /* @__PURE__ */ react_exports.createElement(Message_default, { width, height, message: (0, i18n_exports._)("Error render in trellis"), level: "info" });
4984
5259
  };
5260
+ var resolveTrellisSplitBy = (trellisSplitBy, fields) => {
5261
+ var _a;
5262
+ if (trellisSplitBy && trellisSplitBy.length > 0) {
5263
+ return trellisSplitBy;
5264
+ }
5265
+ const splitByPossibleFields = (0, trellisUtils_exports.getAllPossibleSplitByFields)(fields);
5266
+ return ((_a = splitByPossibleFields.fields) == null ? void 0 : _a.length) ? splitByPossibleFields.fields[0] : AGGREGATIONS;
5267
+ };
4985
5268
  var withTrellis = (Viz) => {
4986
5269
  const VizWithTrellis = (opts) => {
4987
5270
  const cachedHandleResize = react_exports.useCallback((w, h) => {
@@ -4990,7 +5273,7 @@ var withTrellis = (Viz) => {
4990
5273
  }, []);
4991
5274
  const [containerWidth, setContainerWidth] = react_exports.useState(Number(opts.width));
4992
5275
  const [containerHeight, setContainerHeight] = react_exports.useState(Number(opts.height));
4993
- const _a = opts, { options = {}, height, width } = _a, otherProps = __objRest(_a, ["options", "height", "width"]);
5276
+ const _a = opts, { options = {}, context = {}, height, width } = _a, otherProps = __objRest(_a, ["options", "context", "height", "width"]);
4994
5277
  const defaultOptions = (0, JSONSchemaUtils_exports.pickFieldFromJSONSchema)(Viz.config.optionsSchema, "default");
4995
5278
  const mergedOptions = (0, hocUtils_exports.deepMergeWithArrayPrimitiveOverrides)({}, options, defaultOptions);
4996
5279
  const {
@@ -5000,6 +5283,8 @@ var withTrellis = (Viz) => {
5000
5283
  trellisRowHeight,
5001
5284
  splitByLayout,
5002
5285
  trellisSplitBy,
5286
+ trellisSortBy,
5287
+ trellisSortOrder,
5003
5288
  trellisSharedScale,
5004
5289
  stackMode,
5005
5290
  yAxisMin,
@@ -5068,7 +5353,7 @@ var withTrellis = (Viz) => {
5068
5353
  }, [pageCount, trellisSplitBy]);
5069
5354
  (0, react_exports.useEffect)(() => {
5070
5355
  updateDataDisplay(pageNum);
5071
- }, [columns, fields, trellisSplitBy, pageNum, splitByLayout]);
5356
+ }, [columns, fields, trellisSplitBy, trellisSortBy, trellisSortOrder, pageNum, splitByLayout]);
5072
5357
  const handlePageChange = (0, react_exports.useCallback)(
5073
5358
  (event, { page }) => {
5074
5359
  setPageNum(page);
@@ -5076,9 +5361,7 @@ var withTrellis = (Viz) => {
5076
5361
  [pageNum, pagedData]
5077
5362
  );
5078
5363
  const featureFlagContext = react_exports.useContext(FeatureFlagContext_default);
5079
- const isTrellisFeatureFlagOn5 = Boolean(
5080
- featureFlagContext && featureFlagContext.visualizations_enableTrellis
5081
- );
5364
+ const isTrellisFeatureFlagOn5 = Boolean(featureFlagContext == null ? void 0 : featureFlagContext.visualizations_enableTrellis);
5082
5365
  if (!isTrellisFeatureFlagOn5 || !splitByLayout || splitByLayout !== visualization_schemas_exports.LAYOUT_TYPE.Trellis) {
5083
5366
  return /* @__PURE__ */ react_exports.createElement(Viz, __spreadValues({}, opts));
5084
5367
  }
@@ -5086,14 +5369,9 @@ var withTrellis = (Viz) => {
5086
5369
  if (noColumns || noFields) {
5087
5370
  return /* @__PURE__ */ react_exports.createElement(Message_default, { width, height, message: (0, i18n_exports._)("Loading"), level: "info" });
5088
5371
  }
5089
- let currTrellisSplitBy = trellisSplitBy;
5090
- if (!trellisSplitBy || trellisSplitBy.length === 0) {
5091
- const splitByPossibleFields = (0, trellisUtils_exports.getAllPossibleSplitByFields)(fields);
5092
- currTrellisSplitBy = splitByPossibleFields.fields && splitByPossibleFields.fields.length ? splitByPossibleFields.fields[0] : AGGREGATIONS;
5093
- }
5094
- const splitMode = (0, trellisUtils_exports.getTrellisDataSplitterMode)(fields);
5372
+ const currTrellisSplitBy = resolveTrellisSplitBy(trellisSplitBy, fields);
5095
5373
  const dataSplitResult = getTrellisDataSourcesBySplitMode(
5096
- splitMode,
5374
+ (0, trellisUtils_exports.getTrellisDataSplitterMode)(fields),
5097
5375
  dataSources,
5098
5376
  currTrellisSplitBy
5099
5377
  );
@@ -5102,12 +5380,19 @@ var withTrellis = (Viz) => {
5102
5380
  if (!modifiedDataSourceBySplitBy || Object.keys(modifiedDataSourceBySplitBy).length === 0 || dataSplitErrorCode) {
5103
5381
  return showErrorMessage(dataSplitErrorCode, width, height);
5104
5382
  }
5105
- const splitByKeysModified = modifiedDataSourceBySplitBy ? Object.keys(modifiedDataSourceBySplitBy) : [];
5106
- if (splitByKeysModified) {
5107
- showPaginator = splitByKeysModified.length > pageCount;
5108
- splitByKeys = splitByKeysModified;
5109
- totalPages = splitByKeysModified ? Math.ceil(splitByKeysModified.length / pageCount) : 0;
5110
- }
5383
+ const splitByKeysModified = Object.keys(modifiedDataSourceBySplitBy);
5384
+ const vizContext = (0, lodash_exports.defaultsDeep)({}, context, Viz.config.defaultContext);
5385
+ sortTrellisKeys(
5386
+ splitByKeysModified,
5387
+ trellisSortBy,
5388
+ trellisSortOrder,
5389
+ modifiedDataSourceBySplitBy,
5390
+ mergedOptions,
5391
+ vizContext
5392
+ );
5393
+ showPaginator = splitByKeysModified.length > pageCount;
5394
+ splitByKeys = splitByKeysModified;
5395
+ totalPages = Math.ceil(splitByKeysModified.length / pageCount);
5111
5396
  const [calculatedMin, calculatedMax] = determineMinMax(
5112
5397
  modifiedDataSourceBySplitBy,
5113
5398
  trellisSharedScale,
@@ -5141,6 +5426,7 @@ var withTrellis = (Viz) => {
5141
5426
  /* @__PURE__ */ react_exports.createElement(
5142
5427
  Viz,
5143
5428
  __spreadProps(__spreadValues({}, otherProps), {
5429
+ context,
5144
5430
  trellisKey: splitByKey,
5145
5431
  trellisSplitBy: currTrellisSplitBy,
5146
5432
  dataSources: modifiedDataSourceBySplitBy[splitByKey],
@@ -5173,37 +5459,7 @@ var withTrellis = (Viz) => {
5173
5459
  var withTrellis_default = withTrellis;
5174
5460
 
5175
5461
  // src/Line/Line.tsx
5176
- var additionalTooltipValuesCache = {
5177
- columns: null,
5178
- fields: null,
5179
- additionalTooltipFields: void 0,
5180
- result: void 0
5181
- };
5182
- var areArraysEqual = (a, b) => {
5183
- if (a === b) return true;
5184
- if (!a || !b) return false;
5185
- if (a.length !== b.length) return false;
5186
- for (let i = 0; i < a.length; i += 1) {
5187
- if (a[i] !== b[i]) return false;
5188
- }
5189
- return true;
5190
- };
5191
- var getMemoizedAdditionalTooltipValues = (columns, fields, additionalTooltipFields) => {
5192
- if (additionalTooltipValuesCache.columns === columns && additionalTooltipValuesCache.fields === fields && areArraysEqual(additionalTooltipValuesCache.additionalTooltipFields, additionalTooltipFields)) {
5193
- return additionalTooltipValuesCache.result;
5194
- }
5195
- let result;
5196
- if ((additionalTooltipFields == null ? void 0 : additionalTooltipFields.length) && columns && fields) {
5197
- result = extractAdditionalTooltipValues(columns, fields, additionalTooltipFields);
5198
- }
5199
- additionalTooltipValuesCache = {
5200
- columns,
5201
- fields,
5202
- additionalTooltipFields,
5203
- result
5204
- };
5205
- return result;
5206
- };
5462
+ var getMemoizedAdditionalTooltipValues = createAdditionalTooltipValuesMemoizer();
5207
5463
  var computeVizProps = (_a) => {
5208
5464
  var _b = _a, {
5209
5465
  dataSources,