@splunk/visualizations 28.5.3 → 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 (356) 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 +56 -10
  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.config.js.map +1 -1
  92. package/NetworkGraph.js +544 -417
  93. package/NetworkGraph.js.map +4 -4
  94. package/ParallelCoordinates.config.js.map +1 -1
  95. package/ParallelCoordinates.js +288 -172
  96. package/ParallelCoordinates.js.map +4 -4
  97. package/Pie/Pie.d.ts.map +1 -1
  98. package/Pie/pieUtils.d.ts +2 -2
  99. package/Pie.config.js +74 -22
  100. package/Pie.config.js.map +2 -2
  101. package/Pie.js +522 -296
  102. package/Pie.js.map +4 -4
  103. package/ProcessTree/ProcessTree.d.ts +21 -0
  104. package/ProcessTree/ProcessTree.d.ts.map +1 -0
  105. package/ProcessTree/PureProcessTree/PureProcessTree.d.ts +32 -0
  106. package/ProcessTree/PureProcessTree/PureProcessTree.d.ts.map +1 -0
  107. package/ProcessTree/PureProcessTree/components/DirectionalBytes.d.ts +8 -0
  108. package/ProcessTree/PureProcessTree/components/DirectionalBytes.d.ts.map +1 -0
  109. package/ProcessTree/PureProcessTree/components/ProcessTreeLeftPanel.d.ts +44 -0
  110. package/ProcessTree/PureProcessTree/components/ProcessTreeLeftPanel.d.ts.map +1 -0
  111. package/ProcessTree/PureProcessTree/components/ProcessTreeRightPanel.d.ts +20 -0
  112. package/ProcessTree/PureProcessTree/components/ProcessTreeRightPanel.d.ts.map +1 -0
  113. package/ProcessTree/PureProcessTree/hooks/useProcessTreeExpansionState.d.ts +20 -0
  114. package/ProcessTree/PureProcessTree/hooks/useProcessTreeExpansionState.d.ts.map +1 -0
  115. package/ProcessTree/PureProcessTree/hooks/useProcessTreeGraphData.d.ts +44 -0
  116. package/ProcessTree/PureProcessTree/hooks/useProcessTreeGraphData.d.ts.map +1 -0
  117. package/ProcessTree/PureProcessTree/hooks/useProcessTreeLinkOverlay.d.ts +23 -0
  118. package/ProcessTree/PureProcessTree/hooks/useProcessTreeLinkOverlay.d.ts.map +1 -0
  119. package/ProcessTree/PureProcessTree/mockdata/data.d.ts +235 -0
  120. package/ProcessTree/PureProcessTree/mockdata/data.d.ts.map +1 -0
  121. package/ProcessTree/PureProcessTree/utils/iconLoader.d.ts +9 -0
  122. package/ProcessTree/PureProcessTree/utils/iconLoader.d.ts.map +1 -0
  123. package/ProcessTree/PureProcessTree/utils/processTreeLinkOverlayUtils.d.ts +36 -0
  124. package/ProcessTree/PureProcessTree/utils/processTreeLinkOverlayUtils.d.ts.map +1 -0
  125. package/ProcessTree/PureProcessTree/utils/processTreeUtils.d.ts +80 -0
  126. package/ProcessTree/PureProcessTree/utils/processTreeUtils.d.ts.map +1 -0
  127. package/ProcessTree/config.d.ts +4 -0
  128. package/ProcessTree/config.d.ts.map +1 -0
  129. package/ProcessTree/index.d.ts +3 -0
  130. package/ProcessTree/index.d.ts.map +1 -0
  131. package/ProcessTree.config.js +192 -0
  132. package/ProcessTree.config.js.map +7 -0
  133. package/ProcessTree.js +5058 -0
  134. package/ProcessTree.js.map +7 -0
  135. package/Punchcard/Punchcard.d.ts +1 -5
  136. package/Punchcard/Punchcard.d.ts.map +1 -1
  137. package/Punchcard/PurePunchcard/Punchcard.d.ts +28 -32
  138. package/Punchcard/PurePunchcard/Punchcard.d.ts.map +1 -1
  139. package/Punchcard/PurePunchcard/src/PunchcardAxis.d.ts +7 -12
  140. package/Punchcard/PurePunchcard/src/PunchcardAxis.d.ts.map +1 -1
  141. package/Punchcard/PurePunchcard/src/PunchcardBubble.d.ts +14 -19
  142. package/Punchcard/PurePunchcard/src/PunchcardBubble.d.ts.map +1 -1
  143. package/Punchcard/PurePunchcard/src/PunchcardChartArea.d.ts +22 -27
  144. package/Punchcard/PurePunchcard/src/PunchcardChartArea.d.ts.map +1 -1
  145. package/Punchcard/PurePunchcard/src/PunchcardGridLines.d.ts +3 -8
  146. package/Punchcard/PurePunchcard/src/PunchcardGridLines.d.ts.map +1 -1
  147. package/Punchcard/PurePunchcard/src/PunchcardLegend.d.ts +9 -14
  148. package/Punchcard/PurePunchcard/src/PunchcardLegend.d.ts.map +1 -1
  149. package/Punchcard/PurePunchcard/src/PunchcardRow.d.ts.map +1 -1
  150. package/Punchcard.config.js.map +1 -1
  151. package/Punchcard.js +444 -631
  152. package/Punchcard.js.map +4 -4
  153. package/Rectangle.config.js +1 -1
  154. package/Rectangle.config.js.map +2 -2
  155. package/Rectangle.js +289 -173
  156. package/Rectangle.js.map +4 -4
  157. package/RichText/PureRichText/Editor/EditorPanel.d.ts +20 -0
  158. package/RichText/PureRichText/Editor/EditorPanel.d.ts.map +1 -0
  159. package/RichText/PureRichText/Editor/EditorPanelStyles.d.ts +17 -0
  160. package/RichText/PureRichText/Editor/EditorPanelStyles.d.ts.map +1 -0
  161. package/RichText/PureRichText/Editor/FontSelector.d.ts +15 -0
  162. package/RichText/PureRichText/Editor/FontSelector.d.ts.map +1 -0
  163. package/RichText/PureRichText/Editor/FormatButton.d.ts +23 -0
  164. package/RichText/PureRichText/Editor/FormatButton.d.ts.map +1 -0
  165. package/RichText/PureRichText/Editor/editorPanelUtils.d.ts +19 -0
  166. package/RichText/PureRichText/Editor/editorPanelUtils.d.ts.map +1 -0
  167. package/RichText/PureRichText/Editor/hooks/useLineSpacing.d.ts +11 -0
  168. package/RichText/PureRichText/Editor/hooks/useLineSpacing.d.ts.map +1 -0
  169. package/RichText/PureRichText/Editor/hooks/useLinkHandlers.d.ts +26 -0
  170. package/RichText/PureRichText/Editor/hooks/useLinkHandlers.d.ts.map +1 -0
  171. package/RichText/PureRichText/Editor/index.d.ts +9 -0
  172. package/RichText/PureRichText/Editor/index.d.ts.map +1 -0
  173. package/RichText/PureRichText/InnerEditor.d.ts +41 -0
  174. package/RichText/PureRichText/InnerEditor.d.ts.map +1 -0
  175. package/RichText/PureRichText/PureRichText.d.ts +19 -0
  176. package/RichText/PureRichText/PureRichText.d.ts.map +1 -0
  177. package/RichText/PureRichText/PureRichTextContext.d.ts +64 -0
  178. package/RichText/PureRichText/PureRichTextContext.d.ts.map +1 -0
  179. package/RichText/PureRichText/RichTextStyles.d.ts +25 -0
  180. package/RichText/PureRichText/RichTextStyles.d.ts.map +1 -0
  181. package/RichText/PureRichText/activeInstance.d.ts +23 -0
  182. package/RichText/PureRichText/activeInstance.d.ts.map +1 -0
  183. package/RichText/PureRichText/config.d.ts +17 -0
  184. package/RichText/PureRichText/config.d.ts.map +1 -0
  185. package/RichText/PureRichText/hooks/index.d.ts +12 -0
  186. package/RichText/PureRichText/hooks/index.d.ts.map +1 -0
  187. package/RichText/PureRichText/hooks/useContentSave.d.ts +25 -0
  188. package/RichText/PureRichText/hooks/useContentSave.d.ts.map +1 -0
  189. package/RichText/PureRichText/hooks/useContentSync.d.ts +28 -0
  190. package/RichText/PureRichText/hooks/useContentSync.d.ts.map +1 -0
  191. package/RichText/PureRichText/hooks/useDashboardKeyboardNav.d.ts +33 -0
  192. package/RichText/PureRichText/hooks/useDashboardKeyboardNav.d.ts.map +1 -0
  193. package/RichText/PureRichText/hooks/useEditModeEffect.d.ts +10 -0
  194. package/RichText/PureRichText/hooks/useEditModeEffect.d.ts.map +1 -0
  195. package/RichText/PureRichText/hooks/useEditorSetup.d.ts +36 -0
  196. package/RichText/PureRichText/hooks/useEditorSetup.d.ts.map +1 -0
  197. package/RichText/PureRichText/hooks/useFakeHighlight.d.ts +33 -0
  198. package/RichText/PureRichText/hooks/useFakeHighlight.d.ts.map +1 -0
  199. package/RichText/PureRichText/hooks/useFocusHandlers.d.ts +35 -0
  200. package/RichText/PureRichText/hooks/useFocusHandlers.d.ts.map +1 -0
  201. package/RichText/PureRichText/hooks/useKeyboardShortcuts.d.ts +18 -0
  202. package/RichText/PureRichText/hooks/useKeyboardShortcuts.d.ts.map +1 -0
  203. package/RichText/PureRichText/hooks/useMouseHandlers.d.ts +24 -0
  204. package/RichText/PureRichText/hooks/useMouseHandlers.d.ts.map +1 -0
  205. package/RichText/PureRichText/hooks/useRichTextState.d.ts +38 -0
  206. package/RichText/PureRichText/hooks/useRichTextState.d.ts.map +1 -0
  207. package/RichText/PureRichText/hooks/useStepFontSize.d.ts +17 -0
  208. package/RichText/PureRichText/hooks/useStepFontSize.d.ts.map +1 -0
  209. package/RichText/PureRichText/hooks/useStepLineSpacing.d.ts +18 -0
  210. package/RichText/PureRichText/hooks/useStepLineSpacing.d.ts.map +1 -0
  211. package/RichText/PureRichText/hooks/useTokenMap.d.ts +45 -0
  212. package/RichText/PureRichText/hooks/useTokenMap.d.ts.map +1 -0
  213. package/RichText/PureRichText/index.d.ts +16 -0
  214. package/RichText/PureRichText/index.d.ts.map +1 -0
  215. package/RichText/PureRichText/renderers/ElementRenderer.d.ts +8 -0
  216. package/RichText/PureRichText/renderers/ElementRenderer.d.ts.map +1 -0
  217. package/RichText/PureRichText/renderers/LeafRenderer.d.ts +8 -0
  218. package/RichText/PureRichText/renderers/LeafRenderer.d.ts.map +1 -0
  219. package/RichText/PureRichText/types.d.ts +111 -0
  220. package/RichText/PureRichText/types.d.ts.map +1 -0
  221. package/RichText/PureRichText/utils/a11yUtils.d.ts +9 -0
  222. package/RichText/PureRichText/utils/a11yUtils.d.ts.map +1 -0
  223. package/RichText/PureRichText/utils/fontSize.d.ts +6 -0
  224. package/RichText/PureRichText/utils/fontSize.d.ts.map +1 -0
  225. package/RichText/PureRichText/utils/slateUtils.d.ts +99 -0
  226. package/RichText/PureRichText/utils/slateUtils.d.ts.map +1 -0
  227. package/RichText/RichText.d.ts +17 -0
  228. package/RichText/RichText.d.ts.map +1 -0
  229. package/RichText/config.d.ts +4 -0
  230. package/RichText/config.d.ts.map +1 -0
  231. package/RichText/index.d.ts +7 -0
  232. package/RichText/index.d.ts.map +1 -0
  233. package/RichText.config.js +268 -0
  234. package/RichText.config.js.map +7 -0
  235. package/RichText.js +7674 -0
  236. package/RichText.js.map +7 -0
  237. package/Sankey/PureSankey/PureSankey.d.ts.map +1 -1
  238. package/Sankey/PureSankey/SankeyLink.d.ts.map +1 -1
  239. package/Sankey/PureSankey/SankeyNode.d.ts +10 -3
  240. package/Sankey/PureSankey/SankeyNode.d.ts.map +1 -1
  241. package/Sankey/PureSankey/SankeyTooltip.d.ts.map +1 -1
  242. package/Sankey/PureSankey/SankeyUtils.d.ts +10 -0
  243. package/Sankey/PureSankey/SankeyUtils.d.ts.map +1 -1
  244. package/Sankey.config.js.map +1 -1
  245. package/Sankey.js +562 -290
  246. package/Sankey.js.map +4 -4
  247. package/Scatter/Scatter.d.ts.map +1 -1
  248. package/Scatter.config.js +81 -24
  249. package/Scatter.config.js.map +3 -3
  250. package/Scatter.js +528 -297
  251. package/Scatter.js.map +4 -4
  252. package/SingleValue/SingleValue.d.ts.map +1 -1
  253. package/SingleValue/config.d.ts.map +1 -1
  254. package/SingleValue.config.js +76 -24
  255. package/SingleValue.config.js.map +2 -2
  256. package/SingleValue.js +534 -314
  257. package/SingleValue.js.map +4 -4
  258. package/SingleValueBasic.js.map +1 -1
  259. package/SingleValueIcon/SingleValueIcon.d.ts.map +1 -1
  260. package/SingleValueIcon/config.d.ts.map +1 -1
  261. package/SingleValueIcon.config.js +76 -24
  262. package/SingleValueIcon.config.js.map +2 -2
  263. package/SingleValueIcon.js +512 -287
  264. package/SingleValueIcon.js.map +4 -4
  265. package/SingleValueRadial/PureSingleValueRadial/utils/gaugeUtils.d.ts +0 -8
  266. package/SingleValueRadial/PureSingleValueRadial/utils/gaugeUtils.d.ts.map +1 -1
  267. package/SingleValueRadial/SingleValueRadial.d.ts.map +1 -1
  268. package/SingleValueRadial/config.d.ts.map +1 -1
  269. package/SingleValueRadial.config.js +76 -24
  270. package/SingleValueRadial.config.js.map +2 -2
  271. package/SingleValueRadial.js +543 -326
  272. package/SingleValueRadial.js.map +4 -4
  273. package/TRELLIS.md +48 -0
  274. package/Table/PureTable.d.ts +1 -0
  275. package/Table/PureTable.d.ts.map +1 -1
  276. package/Table/Table.d.ts.map +1 -1
  277. package/Table/cells/ArrayCell.d.ts.map +1 -1
  278. package/Table/config.d.ts.map +1 -1
  279. package/Table/hooks.d.ts.map +1 -1
  280. package/Table/tableUtils.d.ts +14 -0
  281. package/Table/tableUtils.d.ts.map +1 -0
  282. package/Table.config.js +4 -10
  283. package/Table.config.js.map +2 -2
  284. package/Table.js +769 -355
  285. package/Table.js.map +4 -4
  286. package/Timeline/PureTimeline/src/TimelineYAxis.d.ts.map +1 -1
  287. package/Timeline/PureTimeline/src/utils/timelineUtils.d.ts +5 -0
  288. package/Timeline/PureTimeline/src/utils/timelineUtils.d.ts.map +1 -1
  289. package/Timeline/Timeline.d.ts +2 -0
  290. package/Timeline/Timeline.d.ts.map +1 -1
  291. package/Timeline/config.d.ts.map +1 -1
  292. package/Timeline/mockdata/timelineDataSource.d.ts +34 -0
  293. package/Timeline/mockdata/timelineDataSource.d.ts.map +1 -1
  294. package/Timeline.config.js +15 -0
  295. package/Timeline.config.js.map +2 -2
  296. package/Timeline.js +348 -186
  297. package/Timeline.js.map +4 -4
  298. package/common/Charting.d.ts.map +1 -1
  299. package/common/Charting.js +50 -28
  300. package/common/Charting.js.map +2 -2
  301. package/common/ChartingApi.d.ts +1 -1
  302. package/common/ChartingApi.d.ts.map +1 -1
  303. package/common/ChartingApi.js.map +2 -2
  304. package/common/DocExampleWithVizSandbox.js.map +1 -1
  305. package/common/OptionsDoc.js.map +1 -1
  306. package/common/OverviewDoc.js.map +1 -1
  307. package/common/SplunkVisualization.d.ts +1 -1
  308. package/common/SplunkVisualization.d.ts.map +1 -1
  309. package/common/SplunkVisualization.js +6 -4
  310. package/common/SplunkVisualization.js.map +2 -2
  311. package/common/StyledSkipLink.d.ts +2 -0
  312. package/common/StyledSkipLink.d.ts.map +1 -0
  313. package/common/StyledSkipLink.js +81 -0
  314. package/common/StyledSkipLink.js.map +7 -0
  315. package/common/TimeSeriesChartWrapper.d.ts.map +1 -1
  316. package/common/TimeSeriesChartWrapper.js +228 -107
  317. package/common/TimeSeriesChartWrapper.js.map +4 -4
  318. package/common/chartingUtils.d.ts +32 -6
  319. package/common/chartingUtils.d.ts.map +1 -1
  320. package/common/chartingUtils.js +166 -39
  321. package/common/chartingUtils.js.map +4 -4
  322. package/common/components/TrellisTitle.d.ts.map +1 -1
  323. package/common/docUtils.js +1 -1
  324. package/common/docUtils.js.map +2 -2
  325. package/common/editorConfig/AxesChartDataDisplay.d.ts.map +1 -1
  326. package/common/editorConfig/AxesChartYGridAndLabels.d.ts.map +1 -1
  327. package/common/editorConfig/BackgroundColor.d.ts +2 -2
  328. package/common/editorConfig/TrellisEditors.d.ts +33 -5
  329. package/common/editorConfig/TrellisEditors.d.ts.map +1 -1
  330. package/common/hocs/mockdata/trellisData.d.ts +54 -0
  331. package/common/hocs/mockdata/trellisData.d.ts.map +1 -1
  332. package/common/hocs/withTrellis.d.ts +9 -0
  333. package/common/hocs/withTrellis.d.ts.map +1 -1
  334. package/common/hooks/useSorting.d.ts +2 -2
  335. package/common/hooks/useSorting.d.ts.map +1 -1
  336. package/common/shapeUtils.d.ts +1 -1
  337. package/common/shapeUtils.d.ts.map +1 -1
  338. package/common/shapeUtils.js.map +2 -2
  339. package/common/utils/dataUtils.js +2 -1
  340. package/common/utils/dataUtils.js.map +2 -2
  341. package/common/utils/focusUtils.d.ts +4 -0
  342. package/common/utils/focusUtils.d.ts.map +1 -0
  343. package/common/utils/focusUtils.js +101 -0
  344. package/common/utils/focusUtils.js.map +7 -0
  345. package/common/utils/mapUtils.js +2 -6
  346. package/common/utils/mapUtils.js.map +2 -2
  347. package/common/utils/singleValueUtils.js +14 -26
  348. package/common/utils/singleValueUtils.js.map +2 -2
  349. package/common/utils/trellisUtils.d.ts.map +1 -1
  350. package/common/utils/trellisUtils.js +76 -70
  351. package/common/utils/trellisUtils.js.map +2 -2
  352. package/common/withDashboardViz.d.ts.map +1 -1
  353. package/common/withDashboardViz.js +276 -151
  354. package/common/withDashboardViz.js.map +4 -4
  355. package/package.json +32 -27
  356. package/LICENSE.md +0 -449
@@ -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/SingleValueIcon/index.ts
64
66
  var SingleValueIcon_exports = {};
@@ -203,8 +205,27 @@ var TrellisTitleDiv = styled_components_default.div`
203
205
  background-color: ${(props) => props.backgroundColor};
204
206
  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.
205
207
  `;
208
+ var formatTrellisKey = (value) => {
209
+ if (value === null || value === void 0) {
210
+ return "";
211
+ }
212
+ if (typeof value === "string") {
213
+ return value;
214
+ }
215
+ if (typeof value === "number" || typeof value === "boolean") {
216
+ return value.toString();
217
+ }
218
+ if (typeof value === "symbol") {
219
+ return value.toString();
220
+ }
221
+ try {
222
+ return JSON.stringify(value);
223
+ } catch (e) {
224
+ return typeof value === "bigint" ? value.toString() : "";
225
+ }
226
+ };
206
227
  var TrellisTitle = (props) => {
207
- const titleText = String(props.trellisKey).toString();
228
+ const titleText = formatTrellisKey(props.trellisKey);
208
229
  return /* @__PURE__ */ react_exports.createElement(
209
230
  TrellisTitleDiv,
210
231
  {
@@ -329,7 +350,7 @@ var computeColors = (props, defaultColors) => {
329
350
  trendDisplay: props.trendDisplay,
330
351
  defaultColors
331
352
  });
332
- const underLabelColor = majorColor;
353
+ const underLabelColor = getFormattedColor(props.underLabelColor, majorColor);
333
354
  return {
334
355
  backgroundColor,
335
356
  backgroundEnabled,
@@ -947,7 +968,7 @@ var iconMap = {
947
968
  default: Question_default
948
969
  };
949
970
  var getIcon = (key) => iconMap[key.toLowerCase()] || iconMap.default;
950
- var isValidPosition = (iconPosition) => ICON_POSITIONS.indexOf(iconPosition) > -1;
971
+ var isValidPosition = (iconPosition) => ICON_POSITIONS.includes(iconPosition);
951
972
  var isHorizontal = (iconPosition) => iconPosition === "before" || iconPosition === "after";
952
973
  var getIconWidth = ({ showHorizontal, width }) => showHorizontal ? width * ICON_HORIZONTAL_RATIO : width * ICON_VERTICAL_RATIO;
953
974
  var getIconHeight = ({ showHorizontal, height }) => showHorizontal ? height : height * 0.25;
@@ -1227,16 +1248,9 @@ var SingleValueIcon = (_a) => {
1227
1248
  opacity: iconOpacity
1228
1249
  });
1229
1250
  } else {
1230
- let {
1231
- showValue = true,
1232
- trendDisplay = "absolute",
1233
- unit,
1234
- underLabel,
1235
- iconPosition = "before"
1236
- } = props;
1237
- if (!isValidPosition(iconPosition)) {
1238
- iconPosition = "before";
1239
- }
1251
+ const { iconPosition: rawIconPosition = "before" } = props;
1252
+ const iconPosition = isValidPosition(rawIconPosition) ? rawIconPosition : "before";
1253
+ let { showValue = true, trendDisplay = "absolute", unit, underLabel } = props;
1240
1254
  const showHorizontal = isHorizontal(iconPosition);
1241
1255
  const iconWidth = getIconWidth({
1242
1256
  showHorizontal,
@@ -1508,7 +1522,7 @@ var DefaultVizActionHandler = class {
1508
1522
  var INITIAL_HEIGHT = 250;
1509
1523
  var SplunkVisualization = class {
1510
1524
  };
1511
- SplunkVisualization.propTypes = {
1525
+ __publicField(SplunkVisualization, "propTypes", {
1512
1526
  /**
1513
1527
  * display mode
1514
1528
  */
@@ -1584,11 +1598,11 @@ SplunkVisualization.propTypes = {
1584
1598
  * A callback to request new data with updated request params
1585
1599
  */
1586
1600
  onRequestParamsChange: prop_types_exports.func
1587
- };
1601
+ });
1588
1602
  /**
1589
1603
  *
1590
1604
  */
1591
- SplunkVisualization.defaults = {
1605
+ __publicField(SplunkVisualization, "defaults", {
1592
1606
  // BaseVisualization in dashboard-visualizations uses 100% for width but 250 for height
1593
1607
  width: "100%",
1594
1608
  height: INITIAL_HEIGHT,
@@ -1603,7 +1617,7 @@ SplunkVisualization.defaults = {
1603
1617
  onComputedProps: () => ({}),
1604
1618
  loading: false,
1605
1619
  onRequestParamsChange: lodash_exports.noop
1606
- };
1620
+ });
1607
1621
  var SplunkVisualization_default = SplunkVisualization;
1608
1622
 
1609
1623
  // src/common/interfaces/DataSource.ts
@@ -1657,9 +1671,9 @@ var usePaginationParams = ({
1657
1671
  meta,
1658
1672
  onRequestParamsChange
1659
1673
  }) => {
1660
- const totalCount = meta && meta.totalCount || 0;
1661
- const offset = requestParams && requestParams.offset || 0;
1662
- const count = requestParams && requestParams.count;
1674
+ const totalCount = (meta == null ? void 0 : meta.totalCount) || 0;
1675
+ const offset = (requestParams == null ? void 0 : requestParams.offset) || 0;
1676
+ const count = requestParams == null ? void 0 : requestParams.count;
1663
1677
  const totalPages = typeof count === "number" && count > 0 ? Math.ceil(totalCount / count) : 0;
1664
1678
  const current = typeof count === "number" && count > 0 ? Math.floor(offset / count) + 1 : 0;
1665
1679
  const isPaging = totalPages > 1 && typeof onRequestParamsChange === "function";
@@ -1749,7 +1763,7 @@ var Cover = styled_components_default.div`
1749
1763
  bottom: 0;
1750
1764
  `;
1751
1765
  var Blocker = styled_components_default.div.attrs({
1752
- "data-splunk-visualization-version": "28.5.3 - 657435b86"
1766
+ "data-splunk-visualization-version": "28.6.0 - 92427899a"
1753
1767
  })`
1754
1768
  position: relative;
1755
1769
  width: 100%;
@@ -1839,7 +1853,7 @@ var withFixedSizeContainer = (Viz) => {
1839
1853
  FixSizeItem,
1840
1854
  {
1841
1855
  "data-test": "fix-size-item",
1842
- "data-splunk-visualization-version": "28.5.3 - 657435b86",
1856
+ "data-splunk-visualization-version": "28.6.0 - 92427899a",
1843
1857
  width,
1844
1858
  height,
1845
1859
  backgroundColor
@@ -2336,7 +2350,7 @@ var dataSourcesSplitByAggregationsUnknown = (dataSource) => {
2336
2350
  const columns = (_d = (_c = dataSource == null ? void 0 : dataSource.primary) == null ? void 0 : _c.data) == null ? void 0 : _d.columns;
2337
2351
  let splitDataSources = null;
2338
2352
  let errorCode = null;
2339
- if (fields && fields.length) {
2353
+ if (fields == null ? void 0 : fields.length) {
2340
2354
  splitDataSources = {};
2341
2355
  for (let i = 0; i < fields.length; i += 1) {
2342
2356
  const fieldName = fields[i].name;
@@ -2387,7 +2401,7 @@ var dataSourcesSplitByAggregationsTimechartAndChart = (dataSource) => {
2387
2401
  }
2388
2402
  });
2389
2403
  });
2390
- } else if ((!splitByFields || !splitByFields.length) && fields.length > 1) {
2404
+ } else if (!(splitByFields == null ? void 0 : splitByFields.length) && fields.length > 1) {
2391
2405
  splitDataSources = {};
2392
2406
  for (let i = 1; i < fields.length; i += 1) {
2393
2407
  const fieldName = fields[i].name;
@@ -2443,7 +2457,7 @@ var dataSourcesSplitByModeTimechart = (dataSource, splitBy) => {
2443
2457
  if (fields.length > 0) {
2444
2458
  splitByFields = (0, trellisUtils_exports.extractSplitByFieldsChartFields)(fields);
2445
2459
  }
2446
- if (splitByFields && splitByFields.indexOf(splitBy) > -1) {
2460
+ if (splitByFields == null ? void 0 : splitByFields.includes(splitBy)) {
2447
2461
  splitDataSources = {};
2448
2462
  const dataSourceKeys = (0, trellisUtils_exports.extractDataSourceAggregationKeysChart)(fields);
2449
2463
  const valueKeys = [];
@@ -2474,6 +2488,68 @@ var dataSourcesSplitByModeTimechart = (dataSource, splitBy) => {
2474
2488
  }
2475
2489
  return { splitDataSources, errorCode };
2476
2490
  };
2491
+ var splitRowWise = (dataSource, columns, fields, otherSplitBy, dataSourceKeys, nonDataSourceAggregations) => {
2492
+ const splitDataSources = {};
2493
+ const valueKeys = (0, lodash_exports.cloneDeep)(columns[0]);
2494
+ valueKeys.forEach((val, idx) => {
2495
+ splitDataSources[val] = (0, lodash_exports.cloneDeep)((0, lodash_exports.omit)(dataSource, ["primary.data.fields", "primary.data.columns"]));
2496
+ splitDataSources[val].primary.data.fields = [];
2497
+ if (otherSplitBy.length) {
2498
+ splitDataSources[val].primary.data.fields = [{ name: otherSplitBy[0] }];
2499
+ }
2500
+ if (dataSourceKeys.length) {
2501
+ const columnValues = [[]];
2502
+ splitDataSources[val].primary.data.fields = [
2503
+ ...splitDataSources[val].primary.data.fields,
2504
+ ...dataSourceKeys.map((k) => ({ name: k }))
2505
+ ];
2506
+ dataSourceKeys.forEach(() => {
2507
+ columnValues.push([]);
2508
+ });
2509
+ for (let i = 1; i <= Math.ceil((fields.length - 1) / dataSourceKeys.length); i += 1) {
2510
+ columnValues[0].push(fields[i].splitby_value ? fields[i].splitby_value : fields[i].name);
2511
+ dataSourceKeys.forEach((dskey, dsIndx) => {
2512
+ const mul = (fields.length - 1) / dataSourceKeys.length;
2513
+ columnValues[dsIndx + 1].push(columns[i + dsIndx * mul][idx]);
2514
+ });
2515
+ }
2516
+ splitDataSources[val].primary.data.columns = columnValues;
2517
+ } else if (nonDataSourceAggregations.length) {
2518
+ const columnValues = [];
2519
+ fields.forEach((aggregationField, fieldIdx) => {
2520
+ if (fieldIdx > 0) {
2521
+ splitDataSources[val].primary.data.fields.push(aggregationField);
2522
+ columnValues.push([columns[fieldIdx][idx]]);
2523
+ }
2524
+ });
2525
+ splitDataSources[val].primary.data.columns = columnValues;
2526
+ }
2527
+ });
2528
+ return splitDataSources;
2529
+ };
2530
+ var splitColumnWise = (dataSource, columns, fields, otherSplitBy, dataSourceKeys) => {
2531
+ const splitDataSources = {};
2532
+ const valueKeys = [];
2533
+ for (let i = 1; i < fields.length; i += 1) {
2534
+ valueKeys.push(fields[i].splitby_value ? fields[i].splitby_value : fields[i].name);
2535
+ }
2536
+ valueKeys.forEach((val) => {
2537
+ splitDataSources[val] = (0, lodash_exports.cloneDeep)((0, lodash_exports.omit)(dataSource, ["primary.data.fields", "primary.data.columns"]));
2538
+ splitDataSources[val].primary.data.fields = [
2539
+ { name: otherSplitBy[0] },
2540
+ ...dataSourceKeys.map((k) => ({ name: k }))
2541
+ ];
2542
+ splitDataSources[val].primary.data.columns = [[...columns[0]]];
2543
+ dataSourceKeys.forEach((dsKey) => {
2544
+ fields.forEach((field, idx) => {
2545
+ if (field.data_source === dsKey && (field.splitby_value === val || field.name === val)) {
2546
+ splitDataSources[val].primary.data.columns.push([...columns[idx]]);
2547
+ }
2548
+ });
2549
+ });
2550
+ });
2551
+ return splitDataSources;
2552
+ };
2477
2553
  var dataSourcesSplitByModeChart = (dataSource, splitBy) => {
2478
2554
  var _a, _b, _c, _d;
2479
2555
  const fields = toFieldEntries((_b = (_a = dataSource == null ? void 0 : dataSource.primary) == null ? void 0 : _a.data) == null ? void 0 : _b.fields);
@@ -2484,8 +2560,7 @@ var dataSourcesSplitByModeChart = (dataSource, splitBy) => {
2484
2560
  if (fields.length > 0) {
2485
2561
  splitByFields = (0, trellisUtils_exports.extractSplitByFieldsChartFields)(fields);
2486
2562
  }
2487
- if (splitByFields && splitByFields.indexOf(splitBy) > -1) {
2488
- splitDataSources = {};
2563
+ if (splitByFields == null ? void 0 : splitByFields.includes(splitBy)) {
2489
2564
  const splitByFieldIdx = splitByFields.findIndex((f) => f === splitBy);
2490
2565
  const otherSplitBy = splitByFields.filter((f) => f !== splitBy);
2491
2566
  const dataSourceKeys = (0, trellisUtils_exports.extractDataSourceAggregationKeysChart)(fields);
@@ -2496,71 +2571,16 @@ var dataSourcesSplitByModeChart = (dataSource, splitBy) => {
2496
2571
  }
2497
2572
  }
2498
2573
  if (splitByFieldIdx === 0) {
2499
- const valueKeys = (0, lodash_exports.cloneDeep)(columns[0]);
2500
- valueKeys.forEach((val, idx) => {
2501
- splitDataSources[val] = (0, lodash_exports.cloneDeep)(
2502
- (0, lodash_exports.omit)(dataSource, ["primary.data.fields", "primary.data.columns"])
2503
- );
2504
- splitDataSources[val].primary.data.fields = [];
2505
- if (otherSplitBy.length) {
2506
- splitDataSources[val].primary.data.fields = [{ name: otherSplitBy[0] }];
2507
- }
2508
- if (dataSourceKeys.length) {
2509
- const columnValues = [[]];
2510
- splitDataSources[val].primary.data.fields = [
2511
- ...splitDataSources[val].primary.data.fields,
2512
- ...dataSourceKeys.map((k) => ({
2513
- name: k
2514
- }))
2515
- ];
2516
- dataSourceKeys.forEach(() => {
2517
- columnValues.push([]);
2518
- });
2519
- for (let i = 1; i <= Math.ceil((fields.length - 1) / dataSourceKeys.length); i += 1) {
2520
- columnValues[0].push(
2521
- fields[i].splitby_value ? fields[i].splitby_value : fields[i].name
2522
- );
2523
- dataSourceKeys.forEach((dskey, dsIndx) => {
2524
- const mul = (fields.length - 1) / dataSourceKeys.length;
2525
- columnValues[dsIndx + 1].push(columns[i + dsIndx * mul][idx]);
2526
- });
2527
- }
2528
- splitDataSources[val].primary.data.columns = columnValues;
2529
- } else if (nonDataSourceAggregations.length) {
2530
- const columnValues = [];
2531
- fields.forEach((aggregationField, fieldIdx) => {
2532
- if (fieldIdx > 0) {
2533
- splitDataSources[val].primary.data.fields.push(aggregationField);
2534
- columnValues.push([columns[fieldIdx][idx]]);
2535
- }
2536
- });
2537
- splitDataSources[val].primary.data.columns = columnValues;
2538
- }
2539
- });
2574
+ splitDataSources = splitRowWise(
2575
+ dataSource,
2576
+ columns,
2577
+ fields,
2578
+ otherSplitBy,
2579
+ dataSourceKeys,
2580
+ nonDataSourceAggregations
2581
+ );
2540
2582
  } else {
2541
- const valueKeys = [];
2542
- for (let i = 1; i < fields.length; i += 1) {
2543
- valueKeys.push(fields[i].splitby_value ? fields[i].splitby_value : fields[i].name);
2544
- }
2545
- valueKeys.forEach((val) => {
2546
- splitDataSources[val] = (0, lodash_exports.cloneDeep)(
2547
- (0, lodash_exports.omit)(dataSource, ["primary.data.fields", "primary.data.columns"])
2548
- );
2549
- splitDataSources[val].primary.data.fields = [
2550
- { name: otherSplitBy[0] },
2551
- ...dataSourceKeys.map((k) => ({
2552
- name: k
2553
- }))
2554
- ];
2555
- splitDataSources[val].primary.data.columns = [[...columns[0]]];
2556
- dataSourceKeys.forEach((dsKey) => {
2557
- fields.forEach((field, idx) => {
2558
- if (field.data_source === dsKey && (field.splitby_value === val || field.name === val)) {
2559
- splitDataSources[val].primary.data.columns.push([...columns[idx]]);
2560
- }
2561
- });
2562
- });
2563
- });
2583
+ splitDataSources = splitColumnWise(dataSource, columns, fields, otherSplitBy, dataSourceKeys);
2564
2584
  }
2565
2585
  } else {
2566
2586
  errorCode = "INVALID_SPLIT_BY_FIELD";
@@ -2578,7 +2598,7 @@ var dataSourcesSplitByModeStatsorUnknown = (dataSource, splitBy, splitMode) => {
2578
2598
  splitByFields = splitMode !== trellisUtils_exports.UNKNOWN ? (0, trellisUtils_exports.extractSplitByFieldsForStats)(fields) : (0, trellisUtils_exports.extractSplitByFieldsForUnknown)(fields);
2579
2599
  }
2580
2600
  const splitByIndex = fields.findIndex((field) => field.name === splitBy);
2581
- if (splitByFields && splitByFields.indexOf(splitBy) > -1) {
2601
+ if (splitByFields == null ? void 0 : splitByFields.includes(splitBy)) {
2582
2602
  const splitByColumn = (_f = (_e = dataSource == null ? void 0 : dataSource.primary) == null ? void 0 : _e.data) == null ? void 0 : _f.columns[splitByIndex];
2583
2603
  splitDataSources = {};
2584
2604
  splitByColumn.forEach((val, idx) => {
@@ -2685,6 +2705,15 @@ var defaultImport41 = __toESM(require("@splunk/react-icons/Triangle"));
2685
2705
  __reExport(Triangle_exports, require("@splunk/react-icons/Triangle"));
2686
2706
  var Triangle_default = "default" in defaultImport41 ? defaultImport41.default : defaultImport41;
2687
2707
 
2708
+ // esm-externals:@splunk/visualizations-shared/simpleXMLOptions
2709
+ var simpleXMLOptions_exports = {};
2710
+ __export(simpleXMLOptions_exports, {
2711
+ default: () => simpleXMLOptions_default
2712
+ });
2713
+ var defaultImport42 = __toESM(require("@splunk/visualizations-shared/simpleXMLOptions"));
2714
+ __reExport(simpleXMLOptions_exports, require("@splunk/visualizations-shared/simpleXMLOptions"));
2715
+ var simpleXMLOptions_default = "default" in defaultImport42 ? defaultImport42.default : defaultImport42;
2716
+
2688
2717
  // src/common/chartingUtils.ts
2689
2718
  var DEFAULT_LINE_WIDTH = 2;
2690
2719
  var getAnnotationsForCanvas = ({
@@ -2722,9 +2751,9 @@ var shouldEnableSearchZoom = (eventHandlers = [], xField = "") => {
2722
2751
  const xAxisIsTime = xField === "_time";
2723
2752
  return !!rangeSelectEventHandler && xAxisIsTime;
2724
2753
  };
2725
- var canvasSupportedTimeSeriesCharts = ["splunk.line"];
2754
+ var canvasSupportedTimeSeriesCharts = ["splunk.line", "splunk.area"];
2726
2755
  var isTimeSeriesCanvasRenderSupported = (vizConfigKey) => {
2727
- return canvasSupportedTimeSeriesCharts.indexOf(vizConfigKey) > -1;
2756
+ return canvasSupportedTimeSeriesCharts.includes(vizConfigKey);
2728
2757
  };
2729
2758
  var filterChartDataFromInternalFields = (chartData) => {
2730
2759
  const { fields, columns } = chartData;
@@ -2879,46 +2908,66 @@ var getY2ScaleConfig = (label, axisAbbreviation, axisScale, roundAxisLabelsToInt
2879
2908
  }
2880
2909
  return y2Config;
2881
2910
  };
2882
- var getSeriesOverrides = (yfields, y2fields, lineWidth, overlayFields, y2Enabled, nullValueMode, markerDisplay, lineDashStyle, lineDashStylesByField, stepPosition, stepPositionsByField) => {
2911
+ var getSeriesType = (isOverlay, isAreaChart, isStacked) => {
2912
+ if (isOverlay) return "line";
2913
+ if (!isAreaChart) return void 0;
2914
+ return isStacked ? "stacked-area" : "area";
2915
+ };
2916
+ var getY2Scale = (field, y2fields, overlayFields) => {
2917
+ 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));
2918
+ return assignToY2 ? "y2" : "y";
2919
+ };
2920
+ var getSeriesOverrides = (opts) => {
2921
+ var _a;
2922
+ const {
2923
+ yfields,
2924
+ y2fields,
2925
+ lineWidth,
2926
+ overlayFields,
2927
+ y2Enabled,
2928
+ nullValueMode,
2929
+ markerDisplay,
2930
+ lineDashStyle,
2931
+ lineDashStylesByField,
2932
+ stepPosition,
2933
+ stepPositionsByField,
2934
+ type,
2935
+ stackMode,
2936
+ showLines
2937
+ } = opts;
2883
2938
  const seriesConfig = {};
2884
2939
  let spanGaps;
2885
- let replaceNullsWithZero;
2886
2940
  if (nullValueMode === "gaps") {
2887
2941
  spanGaps = false;
2888
- } else if (nullValueMode === "connect" || nullValueMode === "zero") {
2942
+ } else if (nullValueMode != null) {
2889
2943
  spanGaps = true;
2890
- if (nullValueMode === "zero") {
2891
- replaceNullsWithZero = true;
2892
- }
2944
+ } else {
2945
+ spanGaps = void 0;
2893
2946
  }
2894
- yfields.forEach((field) => {
2947
+ const replaceNullsWithZero = nullValueMode === "zero" ? true : void 0;
2948
+ const isAreaChart = type === "area";
2949
+ const isStacked = isAreaChart && (stackMode === "stacked" || stackMode === "stacked100");
2950
+ const areaFields = isAreaChart ? yfields.filter((f) => !(overlayFields == null ? void 0 : overlayFields.includes(f))) : yfields;
2951
+ const overlayFieldsInOrder = (_a = overlayFields == null ? void 0 : overlayFields.filter((f) => yfields.includes(f))) != null ? _a : [];
2952
+ const orderedFields = isAreaChart ? [...areaFields, ...overlayFieldsInOrder] : yfields;
2953
+ orderedFields.forEach((field) => {
2954
+ var _a2;
2955
+ const isOverlay = (_a2 = overlayFields == null ? void 0 : overlayFields.includes(field)) != null ? _a2 : false;
2956
+ const isPercent = isAreaChart && stackMode === "stacked100" && !isOverlay;
2957
+ const shouldHideAreaOutline = isAreaChart && showLines === false && !isOverlay;
2895
2958
  seriesConfig[field] = {
2896
- overrides: { width: lineWidth != null ? lineWidth : DEFAULT_LINE_WIDTH }
2959
+ overrides: __spreadValues({
2960
+ width: shouldHideAreaOutline ? 0 : lineWidth != null ? lineWidth : DEFAULT_LINE_WIDTH
2961
+ }, isPercent ? { stacking: { mode: "percent", group: "A" } } : {})
2897
2962
  };
2898
- if (spanGaps !== void 0) {
2899
- seriesConfig[field].overrides.spanGaps = spanGaps;
2900
- }
2901
- if (y2Enabled) {
2902
- const shouldAssignToY2 = (
2903
- // If y2Fields are present, assign all y2Fields to y2 scale
2904
- (y2fields == null ? void 0 : y2fields.length) > 0 && y2fields.includes(field) || // Else, assign all overlayFields to y2 scale
2905
- (!y2fields || y2fields.length === 0) && (overlayFields == null ? void 0 : overlayFields.includes(field))
2906
- );
2907
- if (shouldAssignToY2) {
2908
- seriesConfig[field].overrides.scale = "y2";
2909
- } else {
2910
- seriesConfig[field].overrides.scale = "y";
2911
- }
2912
- }
2913
- if (overlayFields == null ? void 0 : overlayFields.includes(field)) {
2914
- seriesConfig[field].type = "line";
2915
- }
2916
- if (markerDisplay !== void 0) {
2917
- seriesConfig[field].markerDisplay = markerDisplay;
2918
- }
2919
- const fieldDashStyle = (lineDashStylesByField == null ? void 0 : lineDashStylesByField[field]) || lineDashStyle;
2920
- if (fieldDashStyle) {
2921
- seriesConfig[field].lineDashStyle = fieldDashStyle;
2963
+ const seriesType = getSeriesType(isOverlay, isAreaChart, isStacked);
2964
+ if (seriesType !== void 0) seriesConfig[field].type = seriesType;
2965
+ if (spanGaps !== void 0) seriesConfig[field].overrides.spanGaps = spanGaps;
2966
+ if (y2Enabled) seriesConfig[field].overrides.scale = getY2Scale(field, y2fields, overlayFields);
2967
+ if (markerDisplay !== void 0) seriesConfig[field].markerDisplay = markerDisplay;
2968
+ if (!isAreaChart || isOverlay) {
2969
+ const fieldDashStyle = (lineDashStylesByField == null ? void 0 : lineDashStylesByField[field]) || lineDashStyle;
2970
+ if (fieldDashStyle) seriesConfig[field].lineDashStyle = fieldDashStyle;
2922
2971
  }
2923
2972
  const hasFieldStepPosition = Object.hasOwn(stepPositionsByField || {}, field);
2924
2973
  const fieldStepPosition = hasFieldStepPosition ? stepPositionsByField == null ? void 0 : stepPositionsByField[field] : stepPosition;
@@ -3084,6 +3133,38 @@ var parseArrayOption = (value) => {
3084
3133
  }
3085
3134
  return void 0;
3086
3135
  };
3136
+ var getAreaOpacityForCanvas = (areaOpacity) => (
3137
+ // Preserve legacy visualizations behavior where area opacity is squared to match charting output.
3138
+ areaOpacity !== void 0 && areaOpacity !== null ? __pow(areaOpacity, 2) : areaOpacity
3139
+ );
3140
+ var parseTickIntervalOption = (simpleXMLValue, canvasValue) => {
3141
+ if (simpleXMLValue) return Number(simpleXMLValue);
3142
+ if (canvasValue) return Number(canvasValue);
3143
+ return void 0;
3144
+ };
3145
+ var getYAxisTitles = ({
3146
+ y2Enabled,
3147
+ yFields,
3148
+ y2Fields,
3149
+ overlayFields,
3150
+ yAxisTitleText,
3151
+ yAxisTitleVisibility,
3152
+ y2AxisTitleText,
3153
+ y2AxisTitleVisibility,
3154
+ containerHeight
3155
+ }) => {
3156
+ const yFieldsForTitle = y2Enabled ? yFields.filter((field) => !y2Fields.includes(field)) : yFields;
3157
+ const fieldsForY2Axis = y2Fields.length > 0 ? y2Fields : overlayFields;
3158
+ const yAxisTitle = ellipsisAxisTitle(
3159
+ getComputedAxisTitles(yAxisTitleText, yFieldsForTitle, yAxisTitleVisibility),
3160
+ containerHeight
3161
+ );
3162
+ const y2AxisTitle = ellipsisAxisTitle(
3163
+ getComputedAxisTitles(y2AxisTitleText, fieldsForY2Axis, y2AxisTitleVisibility),
3164
+ containerHeight
3165
+ );
3166
+ return { yAxisTitle, y2AxisTitle };
3167
+ };
3087
3168
  var TimeSeriesChartWrapper = (props) => {
3088
3169
  var _b, _c, _d;
3089
3170
  const _a = props, {
@@ -3173,6 +3254,8 @@ var TimeSeriesChartWrapper = (props) => {
3173
3254
  "chart.overlayFields": overlayFieldsStr,
3174
3255
  "chart.nullValueMode": nullValueMode,
3175
3256
  "chart.showDataLabels": showDataLabels,
3257
+ "chart.showLines": showLines,
3258
+ "chart.stackMode": stackMode,
3176
3259
  lineWidth,
3177
3260
  lineDashStyle,
3178
3261
  fieldDashStyles: lineDashStylesByFieldStr,
@@ -3201,7 +3284,10 @@ var TimeSeriesChartWrapper = (props) => {
3201
3284
  yAxisMinorTickSize,
3202
3285
  y2AxisMinorTickSize,
3203
3286
  showYAxisWithZero: showYAxisWithZeroFromOptions,
3204
- showY2AxisWithZero: showY2AxisWithZeroFromOptions
3287
+ showY2AxisWithZero: showY2AxisWithZeroFromOptions,
3288
+ // area only props
3289
+ areaFillOpacity: areaOpacity,
3290
+ chart: chartType
3205
3291
  } = options;
3206
3292
  const dataValuesDisplay = showDataLabels === "none" ? "off" : showDataLabels;
3207
3293
  const showYAxisWithZero = showYAxisWithZeroFromProps != null ? showYAxisWithZeroFromProps : showYAxisWithZeroFromOptions;
@@ -3218,13 +3304,11 @@ var TimeSeriesChartWrapper = (props) => {
3218
3304
  const yAxisMax = parseAxisValue(yAxisMaxRaw);
3219
3305
  const y2AxisMin = parseAxisValue(y2AxisMinRaw);
3220
3306
  const y2AxisMax = parseAxisValue(y2AxisMaxRaw);
3221
- const parseTickInterval = (simpleXMLValue, canvasValue) => {
3222
- if (simpleXMLValue) return Number(simpleXMLValue);
3223
- if (canvasValue) return Number(canvasValue);
3224
- return void 0;
3225
- };
3226
- const yAxisMajorTickIntervalNum = parseTickInterval(yAxisMajorUnitFromSimpleXML, yAxisMajorTickInterval);
3227
- const y2AxisMajorTickIntervalNum = parseTickInterval(
3307
+ const yAxisMajorTickIntervalNum = parseTickIntervalOption(
3308
+ yAxisMajorUnitFromSimpleXML,
3309
+ yAxisMajorTickInterval
3310
+ );
3311
+ const y2AxisMajorTickIntervalNum = parseTickIntervalOption(
3228
3312
  y2AxisMajorUnitFromSimpleXML,
3229
3313
  y2AxisMajorTickInterval
3230
3314
  );
@@ -3233,6 +3317,7 @@ var TimeSeriesChartWrapper = (props) => {
3233
3317
  const y2AxisMajorTickSizeNum = y2AxisMajorTickSize != null ? Number(y2AxisMajorTickSize) : void 0;
3234
3318
  const yAxisMinorTickSizeNum = yAxisMinorTickSize != null ? Number(yAxisMinorTickSize) : void 0;
3235
3319
  const y2AxisMinorTickSizeNum = y2AxisMinorTickSize != null ? Number(y2AxisMinorTickSize) : void 0;
3320
+ const areaOpacityForCanvas = getAreaOpacityForCanvas(areaOpacity);
3236
3321
  const seriesColors = seriesColorsStr ? JSON.parse(seriesColorsStr) : void 0;
3237
3322
  const seriesColorsByField = fieldColors ? JSON.parse(fieldColors) : void 0;
3238
3323
  const lineDashStylesByField = lineDashStylesByFieldStr ? JSON.parse(lineDashStylesByFieldStr) : void 0;
@@ -3263,26 +3348,40 @@ var TimeSeriesChartWrapper = (props) => {
3263
3348
  );
3264
3349
  let xAxisTitle = getComputedAxisTitles(xAxisTitleText, [xField], xAxisTitleVisibility);
3265
3350
  xAxisTitle = ellipsisAxisTitle(xAxisTitle, containerWidth);
3266
- const yFieldsForTitle = y2Enabled ? yFields.filter((field) => !y2Fields.includes(field)) : yFields;
3267
- let yAxisTitle = getComputedAxisTitles(yAxisTitleText, yFieldsForTitle, yAxisTitleVisibility);
3268
- yAxisTitle = ellipsisAxisTitle(yAxisTitle, containerHeight);
3269
- const fieldsForY2Axis = y2Fields.length > 0 ? y2Fields : overlayFields;
3270
- let y2AxisTitle = getComputedAxisTitles(y2AxisTitleText, fieldsForY2Axis, y2AxisTitleVisibility);
3271
- y2AxisTitle = ellipsisAxisTitle(y2AxisTitle, containerHeight);
3351
+ const { yAxisTitle, y2AxisTitle } = getYAxisTitles({
3352
+ y2Enabled,
3353
+ yFields,
3354
+ y2Fields,
3355
+ overlayFields,
3356
+ yAxisTitleText,
3357
+ yAxisTitleVisibility,
3358
+ y2AxisTitleText,
3359
+ y2AxisTitleVisibility,
3360
+ containerHeight
3361
+ });
3272
3362
  const xScaleConfig = (0, react_exports.useMemo)(
3273
3363
  () => getXScaleConfig(xAxisTitle, xAxisLabelVisibility, xAxisLabelRotation),
3274
3364
  [xAxisTitle, xAxisLabelVisibility, xAxisLabelRotation]
3275
3365
  );
3366
+ const isStacked100 = stackMode === "stacked100";
3276
3367
  const yScaleConfig = (0, react_exports.useMemo)(
3277
- () => getYScaleConfig(
3278
- yAxisTitle,
3279
- yAxisAbbreviation,
3280
- yAxisScale,
3281
- yAxisLabelVisibility,
3282
- yAxisMin,
3283
- yAxisMax
3284
- ),
3285
- [yAxisTitle, yAxisAbbreviation, yAxisScale, yAxisLabelVisibility, yAxisMin, yAxisMax]
3368
+ () => {
3369
+ const config3 = getYScaleConfig(
3370
+ yAxisTitle,
3371
+ yAxisAbbreviation,
3372
+ yAxisScale,
3373
+ yAxisLabelVisibility,
3374
+ yAxisMin,
3375
+ yAxisMax
3376
+ );
3377
+ if (isStacked100) {
3378
+ config3.y.tickFmt = (v) => `${Math.round(v * 100)}%`;
3379
+ config3.y.range = () => [0, 1];
3380
+ }
3381
+ return config3;
3382
+ },
3383
+ // eslint-disable-next-line react-hooks/exhaustive-deps
3384
+ [yAxisTitle, yAxisAbbreviation, yAxisScale, yAxisLabelVisibility, yAxisMin, yAxisMax, isStacked100]
3286
3385
  );
3287
3386
  const y2ScaleConfig = (0, react_exports.useMemo)(() => {
3288
3387
  if (y2Enabled) {
@@ -3314,10 +3413,11 @@ var TimeSeriesChartWrapper = (props) => {
3314
3413
  ];
3315
3414
  chartData.fields = filteredChartData.fields;
3316
3415
  chartData.columns = seriesDataFormatted;
3416
+ const normalizedStackMode = stackMode === "stacked" || stackMode === "stacked100" ? stackMode : "auto";
3317
3417
  const seriesOverrides = (0, react_exports.useMemo)(
3318
- () => getSeriesOverrides(
3319
- yFields,
3320
- y2Fields,
3418
+ () => getSeriesOverrides({
3419
+ yfields: yFields,
3420
+ y2fields: y2Fields,
3321
3421
  lineWidth,
3322
3422
  overlayFields,
3323
3423
  y2Enabled,
@@ -3326,8 +3426,11 @@ var TimeSeriesChartWrapper = (props) => {
3326
3426
  lineDashStyle,
3327
3427
  lineDashStylesByField,
3328
3428
  stepPosition,
3329
- stepPositionsByField
3330
- ),
3429
+ stepPositionsByField,
3430
+ type: chartType,
3431
+ stackMode: normalizedStackMode,
3432
+ showLines
3433
+ }),
3331
3434
  [
3332
3435
  yFields,
3333
3436
  y2Fields,
@@ -3339,7 +3442,10 @@ var TimeSeriesChartWrapper = (props) => {
3339
3442
  lineDashStyle,
3340
3443
  lineDashStylesByField,
3341
3444
  stepPosition,
3342
- stepPositionsByField
3445
+ stepPositionsByField,
3446
+ chartType,
3447
+ normalizedStackMode,
3448
+ showLines
3343
3449
  ]
3344
3450
  );
3345
3451
  const chartingEventAnnotations = (0, react_exports.useMemo)(
@@ -3407,50 +3513,54 @@ var TimeSeriesChartWrapper = (props) => {
3407
3513
  react_exports.useEffect(() => {
3408
3514
  additionalTooltipValuesRef.current = additionalTooltipValues;
3409
3515
  }, [additionalTooltipValues]);
3516
+ const handleCrosshairMouseout = react_exports.useCallback(() => {
3517
+ if (onPointMouseOut && lastPayloadRef.current) {
3518
+ onPointMouseOut({
3519
+ type: "point.mouseout",
3520
+ originalEvent: lastOriginalEventRef.current,
3521
+ payload: lastPayloadRef.current
3522
+ });
3523
+ }
3524
+ previousMouseoverPayloadRef.current = null;
3525
+ }, [onPointMouseOut]);
3410
3526
  const handleChartCrosshairChange = react_exports.useCallback(
3411
3527
  (event) => {
3412
- if (onPointMouseOver || onPointMouseOut) {
3413
- if (!event) {
3414
- if (onPointMouseOut && lastPayloadRef.current) {
3415
- onPointMouseOut({
3416
- type: "point.mouseout",
3417
- originalEvent: lastOriginalEventRef.current,
3418
- payload: lastPayloadRef.current
3419
- });
3420
- }
3421
- previousMouseoverPayloadRef.current = null;
3422
- return;
3423
- }
3424
- const payload = __spreadProps(__spreadValues({}, (0, lodash_exports.pick)(event, "value", "seriesKey", "time", "index", "seriesIndex")), {
3425
- name: event.seriesKey
3528
+ if (!onPointMouseOver && !onPointMouseOut) {
3529
+ return;
3530
+ }
3531
+ if (!event) {
3532
+ handleCrosshairMouseout();
3533
+ return;
3534
+ }
3535
+ const payload = __spreadProps(__spreadValues({}, (0, lodash_exports.pick)(event, "value", "seriesKey", "time", "index", "seriesIndex")), {
3536
+ name: event.seriesKey
3537
+ });
3538
+ delete payload.seriesKey;
3539
+ if (event.rowContext) {
3540
+ Object.assign(
3541
+ payload,
3542
+ Object.keys(event.rowContext).reduce((acc, fieldName) => {
3543
+ acc[`row.${fieldName}.value`] = event.rowContext[fieldName];
3544
+ return acc;
3545
+ }, {})
3546
+ );
3547
+ }
3548
+ const updatedPayload = appendTrellisToPayload(payload, trellisKey, trellisSplitBy);
3549
+ if (!hasMouseoverPayloadChanged(updatedPayload, previousMouseoverPayloadRef.current)) {
3550
+ return;
3551
+ }
3552
+ lastPayloadRef.current = updatedPayload;
3553
+ lastOriginalEventRef.current = event;
3554
+ previousMouseoverPayloadRef.current = __spreadValues({}, updatedPayload);
3555
+ if (onPointMouseOver) {
3556
+ onPointMouseOver({
3557
+ type: "point.mouseover",
3558
+ originalEvent: event,
3559
+ payload: updatedPayload
3426
3560
  });
3427
- delete payload.seriesKey;
3428
- if (event.rowContext) {
3429
- Object.assign(
3430
- payload,
3431
- Object.keys(event.rowContext).reduce((acc, fieldName) => {
3432
- acc[`row.${fieldName}.value`] = event.rowContext[fieldName];
3433
- return acc;
3434
- }, {})
3435
- );
3436
- }
3437
- const updatedPayload = appendTrellisToPayload(payload, trellisKey, trellisSplitBy);
3438
- if (!hasMouseoverPayloadChanged(updatedPayload, previousMouseoverPayloadRef.current)) {
3439
- return;
3440
- }
3441
- lastPayloadRef.current = updatedPayload;
3442
- lastOriginalEventRef.current = event;
3443
- previousMouseoverPayloadRef.current = __spreadValues({}, updatedPayload);
3444
- if (onPointMouseOver) {
3445
- onPointMouseOver({
3446
- type: "point.mouseover",
3447
- originalEvent: event,
3448
- payload: updatedPayload
3449
- });
3450
- }
3451
3561
  }
3452
3562
  },
3453
- [onPointMouseOver, onPointMouseOut, trellisKey, trellisSplitBy]
3563
+ [onPointMouseOver, onPointMouseOut, trellisKey, trellisSplitBy, handleCrosshairMouseout]
3454
3564
  );
3455
3565
  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}`;
3456
3566
  const memoizedChart = (0, react_exports.useMemo)(() => {
@@ -3505,7 +3615,8 @@ var TimeSeriesChartWrapper = (props) => {
3505
3615
  showXAxisLine,
3506
3616
  showYAxisLine,
3507
3617
  showY2AxisLine,
3508
- xAxisMaxLabelParts
3618
+ xAxisMaxLabelParts,
3619
+ areaOpacity: areaOpacityForCanvas
3509
3620
  }
3510
3621
  ));
3511
3622
  }, [
@@ -3557,7 +3668,8 @@ var TimeSeriesChartWrapper = (props) => {
3557
3668
  showYAxisLine,
3558
3669
  showY2AxisLine,
3559
3670
  legendMode,
3560
- xAxisMaxLabelParts
3671
+ xAxisMaxLabelParts,
3672
+ areaOpacityForCanvas
3561
3673
  ]);
3562
3674
  const memoizedVisualization = (0, react_exports.useMemo)(() => {
3563
3675
  return /* @__PURE__ */ react_exports.createElement(VizStyleWrapper_default, { backgroundColor: bgColor }, memoizedChart);
@@ -3585,6 +3697,37 @@ var TimeSeriesChartWrapper_default = TimeSeriesChartWrapper;
3585
3697
 
3586
3698
  // src/common/withDashboardViz.tsx
3587
3699
  var SanitizedTimeSeriesChartWrapper = (0, SanitizeProps_exports.withSanitizedProps)(TimeSeriesChartWrapper_default);
3700
+ var buildEventCallbackProps = (supportedEvents, evaluatedOptionsToUse, onEventTrigger) => {
3701
+ const result = {};
3702
+ Object.keys(supportedEvents).forEach((eventName) => {
3703
+ const { parentKeys, payloadKeys } = supportedEvents[eventName];
3704
+ const eventCallbackPropName = (0, lodash_exports.camelCase)(`on.${eventName}`);
3705
+ let payload = {};
3706
+ if (Array.isArray(payloadKeys) && payloadKeys.length) {
3707
+ payloadKeys.forEach((p) => {
3708
+ payload[p] = evaluatedOptionsToUse[p];
3709
+ });
3710
+ }
3711
+ result[eventCallbackPropName] = (ev) => {
3712
+ if (ev == null ? void 0 : ev.payload) {
3713
+ payload = __spreadValues({}, ev.payload);
3714
+ }
3715
+ return onEventTrigger({
3716
+ originalEvent: ev,
3717
+ payload,
3718
+ type: eventName
3719
+ });
3720
+ };
3721
+ if (parentKeys) {
3722
+ for (let i = parentKeys.length - 1; i >= 0; i -= 1) {
3723
+ const newObject = {};
3724
+ newObject[parentKeys[i]] = result[eventCallbackPropName];
3725
+ result[eventCallbackPropName] = newObject;
3726
+ }
3727
+ }
3728
+ });
3729
+ return result;
3730
+ };
3588
3731
  var withDashboardViz = (opts) => {
3589
3732
  const {
3590
3733
  ReactViz,
@@ -3642,9 +3785,7 @@ var withDashboardViz = (opts) => {
3642
3785
  const isDownsamplingEnabledByFeatureFlag = Boolean(
3643
3786
  featureFlagContext == null ? void 0 : featureFlagContext.visualizations_enableDownsampling
3644
3787
  );
3645
- const isTrellisFeatureFlagOn2 = Boolean(
3646
- featureFlagContext && featureFlagContext.visualizations_enableTrellis
3647
- );
3788
+ const isTrellisFeatureFlagOn2 = Boolean(featureFlagContext == null ? void 0 : featureFlagContext.visualizations_enableTrellis);
3648
3789
  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 */;
3649
3790
  const isAcceleratedRenderFeatureFlagOn = Boolean(
3650
3791
  featureFlagContext == null ? void 0 : featureFlagContext.visualizations_enableAcceleratedRender
@@ -3809,38 +3950,12 @@ var withDashboardViz = (opts) => {
3809
3950
  }
3810
3951
  );
3811
3952
  }
3812
- const eventCallbackProps = {};
3813
- if (hasEventHandlers && mode === "view" && vizConfig.supports.indexOf("events" /* EVENTS */) > -1) {
3814
- const supportedEvents = vizConfig.events;
3815
- Object.keys(supportedEvents).forEach((eventName) => {
3816
- const { parentKeys, payloadKeys } = supportedEvents[eventName];
3817
- const eventCallbackPropName = (0, lodash_exports.camelCase)(`on.${eventName}`);
3818
- let payload = {};
3819
- if (Array.isArray(payloadKeys) && payloadKeys.length) {
3820
- payloadKeys.forEach((p) => {
3821
- payload[p] = evaluatedOptionsToUse[p];
3822
- });
3823
- }
3824
- eventCallbackProps[eventCallbackPropName] = (ev) => {
3825
- if (ev == null ? void 0 : ev.payload) {
3826
- payload = __spreadValues({}, ev.payload);
3827
- }
3828
- return onEventTrigger({
3829
- originalEvent: ev,
3830
- payload,
3831
- type: eventName
3832
- });
3833
- };
3834
- if (parentKeys) {
3835
- for (let i = parentKeys.length - 1; i >= 0; i -= 1) {
3836
- const newObject = {};
3837
- newObject[parentKeys[i]] = eventCallbackProps[eventCallbackPropName];
3838
- eventCallbackProps[eventCallbackPropName] = newObject;
3839
- }
3840
- }
3841
- });
3842
- }
3843
- const computedVizProps = computeVizProps2(__spreadProps(__spreadValues(__spreadValues(__spreadValues({}, props), evaluatedOptionsToUse), eventCallbackProps), {
3953
+ const eventCallbackProps = hasEventHandlers && mode === "view" && vizConfig.supports.includes("events" /* EVENTS */) ? buildEventCallbackProps(vizConfig.events, evaluatedOptionsToUse, onEventTrigger) : {};
3954
+ const computedVizProps = computeVizProps2(__spreadProps(__spreadValues(__spreadProps(__spreadValues(__spreadValues({}, props), evaluatedOptionsToUse), {
3955
+ // Align option transformation with the actual renderer selected below.
3956
+ // This prevents canvas-only option preservation from leaking into Highcharts mode.
3957
+ isAcceleratedRenderOn
3958
+ }), eventCallbackProps), {
3844
3959
  themeFunc
3845
3960
  }));
3846
3961
  if (useAsyncEvaluatedOptions && Object.keys(evaluatedOptionsToUse).length === 0) {
@@ -3874,36 +3989,36 @@ var PresetPalettes_exports = {};
3874
3989
  __export(PresetPalettes_exports, {
3875
3990
  default: () => PresetPalettes_default
3876
3991
  });
3877
- var defaultImport42 = __toESM(require("@splunk/visualization-color-palettes/editors/PresetPalettes"));
3992
+ var defaultImport43 = __toESM(require("@splunk/visualization-color-palettes/editors/PresetPalettes"));
3878
3993
  __reExport(PresetPalettes_exports, require("@splunk/visualization-color-palettes/editors/PresetPalettes"));
3879
- var PresetPalettes_default = "default" in defaultImport42 ? defaultImport42.default : defaultImport42;
3994
+ var PresetPalettes_default = "default" in defaultImport43 ? defaultImport43.default : defaultImport43;
3880
3995
 
3881
3996
  // esm-externals:@splunk/themes/pick
3882
3997
  var pick_exports2 = {};
3883
3998
  __export(pick_exports2, {
3884
3999
  default: () => pick_default2
3885
4000
  });
3886
- var defaultImport43 = __toESM(require("@splunk/themes/pick"));
4001
+ var defaultImport44 = __toESM(require("@splunk/themes/pick"));
3887
4002
  __reExport(pick_exports2, require("@splunk/themes/pick"));
3888
- var pick_default2 = "default" in defaultImport43 ? defaultImport43.default : defaultImport43;
4003
+ var pick_default2 = "default" in defaultImport44 ? defaultImport44.default : defaultImport44;
3889
4004
 
3890
4005
  // esm-externals:@splunk/visualizations-shared/configUtils
3891
4006
  var configUtils_exports = {};
3892
4007
  __export(configUtils_exports, {
3893
4008
  default: () => configUtils_default
3894
4009
  });
3895
- var defaultImport44 = __toESM(require("@splunk/visualizations-shared/configUtils"));
4010
+ var defaultImport45 = __toESM(require("@splunk/visualizations-shared/configUtils"));
3896
4011
  __reExport(configUtils_exports, require("@splunk/visualizations-shared/configUtils"));
3897
- var configUtils_default = "default" in defaultImport44 ? defaultImport44.default : defaultImport44;
4012
+ var configUtils_default = "default" in defaultImport45 ? defaultImport45.default : defaultImport45;
3898
4013
 
3899
4014
  // esm-externals:@splunk/visualization-icons
3900
4015
  var visualization_icons_exports = {};
3901
4016
  __export(visualization_icons_exports, {
3902
4017
  default: () => visualization_icons_default
3903
4018
  });
3904
- var defaultImport45 = __toESM(require("@splunk/visualization-icons"));
4019
+ var defaultImport46 = __toESM(require("@splunk/visualization-icons"));
3905
4020
  __reExport(visualization_icons_exports, require("@splunk/visualization-icons"));
3906
- var visualization_icons_default = "default" in defaultImport45 ? defaultImport45.default : defaultImport45;
4021
+ var visualization_icons_default = "default" in defaultImport46 ? defaultImport46.default : defaultImport46;
3907
4022
 
3908
4023
  // src/common/configContext/singleValueContext.ts
3909
4024
  var defaultContext = {
@@ -4125,26 +4240,59 @@ var isTrellisEnabled = ({ options, featureFlags }) => {
4125
4240
  const { splitByLayout = visualization_schemas_exports.LAYOUT_TYPE.Off } = options;
4126
4241
  return isTrellisFeatureFlagOn({ featureFlags }) && splitByLayout === visualization_schemas_exports.LAYOUT_TYPE.Trellis;
4127
4242
  };
4128
- var TrellisEditorConfig = [
4129
- [
4130
- {
4131
- label: (0, i18n_exports._)("Trellis layout"),
4132
- option: "splitByLayout",
4133
- editor: "editor.toggle",
4134
- showEditor: isTrellisFeatureFlagOn
4135
- }
4136
- ],
4137
- [
4138
- {
4139
- label: (0, i18n_exports._)("Split by"),
4140
- option: "trellisSplitBy",
4141
- editor: "editor.trellisSplitBy",
4142
- editorProps: {
4143
- dataSourceKey: "primary"
4144
- },
4145
- showEditor: isTrellisEnabled
4146
- }
4147
- ],
4243
+ var sortByValuesBase = [
4244
+ { label: (0, i18n_exports._)("Result"), value: "result" },
4245
+ { label: (0, i18n_exports._)("Name"), value: "name" }
4246
+ ];
4247
+ var sortByValuesWithValue = [...sortByValuesBase, { label: (0, i18n_exports._)("Value"), value: "value" }];
4248
+ var sortByValuesWithValueAndTrend = [
4249
+ ...sortByValuesBase,
4250
+ { label: (0, i18n_exports._)("Value"), value: "value" },
4251
+ { label: (0, i18n_exports._)("Trend"), value: "trend" }
4252
+ ];
4253
+ var makeSortRow = (sortByValues) => [
4254
+ {
4255
+ label: (0, i18n_exports._)("Sort by"),
4256
+ option: "trellisSortBy",
4257
+ editor: "editor.select",
4258
+ editorProps: {
4259
+ values: sortByValues
4260
+ },
4261
+ showEditor: isTrellisEnabled
4262
+ },
4263
+ {
4264
+ label: (0, i18n_exports._)("Sort order"),
4265
+ option: "trellisSortOrder",
4266
+ editor: "editor.select",
4267
+ editorProps: {
4268
+ values: [
4269
+ { label: (0, i18n_exports._)("Ascending"), value: "ascending" },
4270
+ { label: (0, i18n_exports._)("Descending"), value: "descending" }
4271
+ ]
4272
+ },
4273
+ showEditor: isTrellisEnabled
4274
+ }
4275
+ ];
4276
+ var trellisLayoutRow = [
4277
+ {
4278
+ label: (0, i18n_exports._)("Trellis layout"),
4279
+ option: "splitByLayout",
4280
+ editor: "editor.toggle",
4281
+ showEditor: isTrellisFeatureFlagOn
4282
+ }
4283
+ ];
4284
+ var trellisSplitByRow = [
4285
+ {
4286
+ label: (0, i18n_exports._)("Split by"),
4287
+ option: "trellisSplitBy",
4288
+ editor: "editor.trellisSplitBy",
4289
+ editorProps: {
4290
+ dataSourceKey: "primary"
4291
+ },
4292
+ showEditor: isTrellisEnabled
4293
+ }
4294
+ ];
4295
+ var trellisLayoutRows = [
4148
4296
  [
4149
4297
  {
4150
4298
  label: (0, i18n_exports._)("Number of columns"),
@@ -4188,6 +4336,24 @@ var TrellisEditorConfig = [
4188
4336
  }
4189
4337
  ]
4190
4338
  ];
4339
+ var TrellisEditorConfig = [
4340
+ trellisLayoutRow,
4341
+ trellisSplitByRow,
4342
+ makeSortRow(sortByValuesBase),
4343
+ ...trellisLayoutRows
4344
+ ];
4345
+ var GaugeTrellisEditorConfig = [
4346
+ trellisLayoutRow,
4347
+ trellisSplitByRow,
4348
+ makeSortRow(sortByValuesWithValue),
4349
+ ...trellisLayoutRows
4350
+ ];
4351
+ var SingleValueTrellisEditorConfig = [
4352
+ trellisLayoutRow,
4353
+ trellisSplitByRow,
4354
+ makeSortRow(sortByValuesWithValueAndTrend),
4355
+ ...trellisLayoutRows
4356
+ ];
4191
4357
  var TimechartTrellisEditorConfig = [
4192
4358
  [
4193
4359
  {
@@ -4195,7 +4361,6 @@ var TimechartTrellisEditorConfig = [
4195
4361
  option: "splitByLayout",
4196
4362
  editor: "editor.toggle",
4197
4363
  showEditor: isTrellisFeatureFlagOn,
4198
- // add help text for timecharts
4199
4364
  editorProps: {
4200
4365
  help: (0, i18n_exports._)(
4201
4366
  "Y2-axis and overlay field configurations are not supported when trellis is enabled."
@@ -4204,7 +4369,9 @@ var TimechartTrellisEditorConfig = [
4204
4369
  }
4205
4370
  }
4206
4371
  ],
4207
- ...TrellisEditorConfig.slice(1),
4372
+ trellisSplitByRow,
4373
+ makeSortRow(sortByValuesBase),
4374
+ ...trellisLayoutRows,
4208
4375
  [
4209
4376
  {
4210
4377
  label: (0, i18n_exports._)("Shared y-axis scale"),
@@ -4423,7 +4590,7 @@ var editorConfig = [
4423
4590
  showEditor: ({ options }) => options.showValue || options.showValue === void 0
4424
4591
  }
4425
4592
  ],
4426
- ...TrellisEditorConfig
4593
+ ...SingleValueTrellisEditorConfig
4427
4594
  ]
4428
4595
  },
4429
4596
  {
@@ -4438,7 +4605,7 @@ var editorConfig = [
4438
4605
  presets,
4439
4606
  value: ({ context, options }) => {
4440
4607
  const initialPreset = getInitialPreset(context, options, presets);
4441
- return initialPreset && initialPreset.label || null;
4608
+ return (initialPreset == null ? void 0 : initialPreset.label) || null;
4442
4609
  }
4443
4610
  }
4444
4611
  }
@@ -4619,29 +4786,76 @@ var Paginator_exports = {};
4619
4786
  __export(Paginator_exports, {
4620
4787
  default: () => Paginator_default
4621
4788
  });
4622
- var defaultImport46 = __toESM(require("@splunk/react-ui/Paginator"));
4789
+ var defaultImport47 = __toESM(require("@splunk/react-ui/Paginator"));
4623
4790
  __reExport(Paginator_exports, require("@splunk/react-ui/Paginator"));
4624
- var Paginator_default = "default" in defaultImport46 ? defaultImport46.default : defaultImport46;
4791
+ var Paginator_default = "default" in defaultImport47 ? defaultImport47.default : defaultImport47;
4625
4792
 
4626
4793
  // esm-externals:@splunk/themes
4627
4794
  var themes_exports = {};
4628
4795
  __export(themes_exports, {
4629
4796
  default: () => themes_default
4630
4797
  });
4631
- var defaultImport47 = __toESM(require("@splunk/themes"));
4798
+ var defaultImport48 = __toESM(require("@splunk/themes"));
4632
4799
  __reExport(themes_exports, require("@splunk/themes"));
4633
- var themes_default = "default" in defaultImport47 ? defaultImport47.default : defaultImport47;
4800
+ var themes_default = "default" in defaultImport48 ? defaultImport48.default : defaultImport48;
4634
4801
 
4635
4802
  // esm-externals:@splunk/themes/useSplunkTheme
4636
4803
  var useSplunkTheme_exports = {};
4637
4804
  __export(useSplunkTheme_exports, {
4638
4805
  default: () => useSplunkTheme_default
4639
4806
  });
4640
- var defaultImport48 = __toESM(require("@splunk/themes/useSplunkTheme"));
4807
+ var defaultImport49 = __toESM(require("@splunk/themes/useSplunkTheme"));
4641
4808
  __reExport(useSplunkTheme_exports, require("@splunk/themes/useSplunkTheme"));
4642
- var useSplunkTheme_default = "default" in defaultImport48 ? defaultImport48.default : defaultImport48;
4809
+ var useSplunkTheme_default = "default" in defaultImport49 ? defaultImport49.default : defaultImport49;
4643
4810
 
4644
4811
  // src/common/hocs/withTrellis.tsx
4812
+ var evaluatePanelOption = (panelDataSources, allOptions, optionKey, vizContext) => {
4813
+ try {
4814
+ const evaluated = Options_exports.Options.evaluate({ context: vizContext, options: allOptions }, panelDataSources);
4815
+ const num = Number(evaluated == null ? void 0 : evaluated[optionKey]);
4816
+ return Number.isNaN(num) ? Number.NaN : num;
4817
+ } catch (e) {
4818
+ return Number.NaN;
4819
+ }
4820
+ };
4821
+ var sortTrellisKeys = (keys, trellisSortBy, trellisSortOrder, modifiedDataSourceBySplitBy, mergedOptions, vizContext) => {
4822
+ if (trellisSortBy === "name") {
4823
+ keys.sort((a, b) => {
4824
+ const cmp = a.localeCompare(b, void 0, { numeric: true, sensitivity: "base" });
4825
+ return trellisSortOrder === "descending" ? -cmp : cmp;
4826
+ });
4827
+ } else if (trellisSortBy === "value" || trellisSortBy === "trend") {
4828
+ let optionKey;
4829
+ if (trellisSortBy === "trend") {
4830
+ optionKey = "trendValue";
4831
+ } else {
4832
+ optionKey = mergedOptions.value !== void 0 ? "value" : "majorValue";
4833
+ }
4834
+ keys.sort((a, b) => {
4835
+ const valA = evaluatePanelOption(
4836
+ modifiedDataSourceBySplitBy[a],
4837
+ mergedOptions,
4838
+ optionKey,
4839
+ vizContext
4840
+ );
4841
+ const valB = evaluatePanelOption(
4842
+ modifiedDataSourceBySplitBy[b],
4843
+ mergedOptions,
4844
+ optionKey,
4845
+ vizContext
4846
+ );
4847
+ const nanA = Number.isNaN(valA);
4848
+ const nanB = Number.isNaN(valB);
4849
+ if (nanA && nanB) return 0;
4850
+ if (nanA) return 1;
4851
+ if (nanB) return -1;
4852
+ const cmp = valA - valB;
4853
+ return trellisSortOrder === "descending" ? -cmp : cmp;
4854
+ });
4855
+ } else if (trellisSortOrder === "descending") {
4856
+ keys.reverse();
4857
+ }
4858
+ };
4645
4859
  var TrellisContainer = styled_components_default.div`
4646
4860
  overflow: hidden;
4647
4861
  display: flex;
@@ -4686,6 +4900,14 @@ var showErrorMessage = (errorCode, width, height) => {
4686
4900
  }
4687
4901
  return /* @__PURE__ */ react_exports.createElement(Message_default, { width, height, message: (0, i18n_exports._)("Error render in trellis"), level: "info" });
4688
4902
  };
4903
+ var resolveTrellisSplitBy = (trellisSplitBy, fields) => {
4904
+ var _a;
4905
+ if (trellisSplitBy && trellisSplitBy.length > 0) {
4906
+ return trellisSplitBy;
4907
+ }
4908
+ const splitByPossibleFields = (0, trellisUtils_exports.getAllPossibleSplitByFields)(fields);
4909
+ return ((_a = splitByPossibleFields.fields) == null ? void 0 : _a.length) ? splitByPossibleFields.fields[0] : AGGREGATIONS;
4910
+ };
4689
4911
  var withTrellis = (Viz) => {
4690
4912
  const VizWithTrellis = (opts) => {
4691
4913
  const cachedHandleResize = react_exports.useCallback((w, h) => {
@@ -4694,7 +4916,7 @@ var withTrellis = (Viz) => {
4694
4916
  }, []);
4695
4917
  const [containerWidth, setContainerWidth] = react_exports.useState(Number(opts.width));
4696
4918
  const [containerHeight, setContainerHeight] = react_exports.useState(Number(opts.height));
4697
- const _a = opts, { options = {}, height, width } = _a, otherProps = __objRest(_a, ["options", "height", "width"]);
4919
+ const _a = opts, { options = {}, context = {}, height, width } = _a, otherProps = __objRest(_a, ["options", "context", "height", "width"]);
4698
4920
  const defaultOptions = (0, JSONSchemaUtils_exports.pickFieldFromJSONSchema)(Viz.config.optionsSchema, "default");
4699
4921
  const mergedOptions = (0, hocUtils_exports.deepMergeWithArrayPrimitiveOverrides)({}, options, defaultOptions);
4700
4922
  const {
@@ -4704,6 +4926,8 @@ var withTrellis = (Viz) => {
4704
4926
  trellisRowHeight,
4705
4927
  splitByLayout,
4706
4928
  trellisSplitBy,
4929
+ trellisSortBy,
4930
+ trellisSortOrder,
4707
4931
  trellisSharedScale,
4708
4932
  stackMode,
4709
4933
  yAxisMin,
@@ -4772,7 +4996,7 @@ var withTrellis = (Viz) => {
4772
4996
  }, [pageCount, trellisSplitBy]);
4773
4997
  (0, react_exports.useEffect)(() => {
4774
4998
  updateDataDisplay(pageNum);
4775
- }, [columns, fields, trellisSplitBy, pageNum, splitByLayout]);
4999
+ }, [columns, fields, trellisSplitBy, trellisSortBy, trellisSortOrder, pageNum, splitByLayout]);
4776
5000
  const handlePageChange = (0, react_exports.useCallback)(
4777
5001
  (event, { page }) => {
4778
5002
  setPageNum(page);
@@ -4780,9 +5004,7 @@ var withTrellis = (Viz) => {
4780
5004
  [pageNum, pagedData]
4781
5005
  );
4782
5006
  const featureFlagContext = react_exports.useContext(FeatureFlagContext_default);
4783
- const isTrellisFeatureFlagOn2 = Boolean(
4784
- featureFlagContext && featureFlagContext.visualizations_enableTrellis
4785
- );
5007
+ const isTrellisFeatureFlagOn2 = Boolean(featureFlagContext == null ? void 0 : featureFlagContext.visualizations_enableTrellis);
4786
5008
  if (!isTrellisFeatureFlagOn2 || !splitByLayout || splitByLayout !== visualization_schemas_exports.LAYOUT_TYPE.Trellis) {
4787
5009
  return /* @__PURE__ */ react_exports.createElement(Viz, __spreadValues({}, opts));
4788
5010
  }
@@ -4790,14 +5012,9 @@ var withTrellis = (Viz) => {
4790
5012
  if (noColumns || noFields) {
4791
5013
  return /* @__PURE__ */ react_exports.createElement(Message_default, { width, height, message: (0, i18n_exports._)("Loading"), level: "info" });
4792
5014
  }
4793
- let currTrellisSplitBy = trellisSplitBy;
4794
- if (!trellisSplitBy || trellisSplitBy.length === 0) {
4795
- const splitByPossibleFields = (0, trellisUtils_exports.getAllPossibleSplitByFields)(fields);
4796
- currTrellisSplitBy = splitByPossibleFields.fields && splitByPossibleFields.fields.length ? splitByPossibleFields.fields[0] : AGGREGATIONS;
4797
- }
4798
- const splitMode = (0, trellisUtils_exports.getTrellisDataSplitterMode)(fields);
5015
+ const currTrellisSplitBy = resolveTrellisSplitBy(trellisSplitBy, fields);
4799
5016
  const dataSplitResult = getTrellisDataSourcesBySplitMode(
4800
- splitMode,
5017
+ (0, trellisUtils_exports.getTrellisDataSplitterMode)(fields),
4801
5018
  dataSources,
4802
5019
  currTrellisSplitBy
4803
5020
  );
@@ -4806,12 +5023,19 @@ var withTrellis = (Viz) => {
4806
5023
  if (!modifiedDataSourceBySplitBy || Object.keys(modifiedDataSourceBySplitBy).length === 0 || dataSplitErrorCode) {
4807
5024
  return showErrorMessage(dataSplitErrorCode, width, height);
4808
5025
  }
4809
- const splitByKeysModified = modifiedDataSourceBySplitBy ? Object.keys(modifiedDataSourceBySplitBy) : [];
4810
- if (splitByKeysModified) {
4811
- showPaginator = splitByKeysModified.length > pageCount;
4812
- splitByKeys = splitByKeysModified;
4813
- totalPages = splitByKeysModified ? Math.ceil(splitByKeysModified.length / pageCount) : 0;
4814
- }
5026
+ const splitByKeysModified = Object.keys(modifiedDataSourceBySplitBy);
5027
+ const vizContext = (0, lodash_exports.defaultsDeep)({}, context, Viz.config.defaultContext);
5028
+ sortTrellisKeys(
5029
+ splitByKeysModified,
5030
+ trellisSortBy,
5031
+ trellisSortOrder,
5032
+ modifiedDataSourceBySplitBy,
5033
+ mergedOptions,
5034
+ vizContext
5035
+ );
5036
+ showPaginator = splitByKeysModified.length > pageCount;
5037
+ splitByKeys = splitByKeysModified;
5038
+ totalPages = Math.ceil(splitByKeysModified.length / pageCount);
4815
5039
  const [calculatedMin, calculatedMax] = determineMinMax(
4816
5040
  modifiedDataSourceBySplitBy,
4817
5041
  trellisSharedScale,
@@ -4845,6 +5069,7 @@ var withTrellis = (Viz) => {
4845
5069
  /* @__PURE__ */ react_exports.createElement(
4846
5070
  Viz,
4847
5071
  __spreadProps(__spreadValues({}, otherProps), {
5072
+ context,
4848
5073
  trellisKey: splitByKey,
4849
5074
  trellisSplitBy: currTrellisSplitBy,
4850
5075
  dataSources: modifiedDataSourceBySplitBy[splitByKey],