@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
package/SingleValue.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 = {}))
@@ -196,8 +197,27 @@ var TrellisTitleDiv = styled_components_default.div`
196
197
  background-color: ${(props) => props.backgroundColor};
197
198
  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.
198
199
  `;
200
+ var formatTrellisKey = (value) => {
201
+ if (value === null || value === void 0) {
202
+ return "";
203
+ }
204
+ if (typeof value === "string") {
205
+ return value;
206
+ }
207
+ if (typeof value === "number" || typeof value === "boolean") {
208
+ return value.toString();
209
+ }
210
+ if (typeof value === "symbol") {
211
+ return value.toString();
212
+ }
213
+ try {
214
+ return JSON.stringify(value);
215
+ } catch (e) {
216
+ return typeof value === "bigint" ? value.toString() : "";
217
+ }
218
+ };
199
219
  var TrellisTitle = (props) => {
200
- const titleText = String(props.trellisKey).toString();
220
+ const titleText = formatTrellisKey(props.trellisKey);
201
221
  return /* @__PURE__ */ react_exports.createElement(
202
222
  TrellisTitleDiv,
203
223
  {
@@ -327,7 +347,7 @@ var computeColors = (props, defaultColors) => {
327
347
  trendDisplay: props.trendDisplay,
328
348
  defaultColors
329
349
  });
330
- const underLabelColor = majorColor;
350
+ const underLabelColor = getFormattedColor(props.underLabelColor, majorColor);
331
351
  return {
332
352
  backgroundColor,
333
353
  backgroundEnabled,
@@ -614,6 +634,15 @@ var adjustRGB = (rgb, delta) => {
614
634
  }
615
635
  return rgb;
616
636
  };
637
+ var getUnchangedColorDelta = (r, g, b, ratio) => {
638
+ if (r === 0 && g === 0 && b === 0) {
639
+ return ratio > 1 ? 80 : 40;
640
+ }
641
+ if (r === 255 && g === 255 && b === 255) {
642
+ return ratio > 1 ? 20 : 80;
643
+ }
644
+ return 20;
645
+ };
617
646
  var changeColor = (color, ratio) => {
618
647
  const hex = color.replace(/(0x|#)/, "");
619
648
  const r = parseInt(hex.substr(0, 2), 16);
@@ -623,31 +652,10 @@ var changeColor = (color, ratio) => {
623
652
  let newG = Math.max(Math.min(Math.floor(g * ratio), 255), 0);
624
653
  let newB = Math.max(Math.min(Math.floor(b * ratio), 255), 0);
625
654
  if (newR === r && newG === g && newB === b) {
626
- if (newR === 0 && newG === 0 && newB === 0) {
627
- if (ratio > 1) {
628
- newR = adjustRGB(newR, 80);
629
- newG = adjustRGB(newG, 80);
630
- newB = adjustRGB(newB, 80);
631
- } else {
632
- newR = adjustRGB(newR, 40);
633
- newG = adjustRGB(newG, 40);
634
- newB = adjustRGB(newB, 40);
635
- }
636
- } else if (newR === 255 && newG === 255 && newB === 255) {
637
- if (ratio > 1) {
638
- newR = adjustRGB(newR, 20);
639
- newG = adjustRGB(newG, 20);
640
- newB = adjustRGB(newB, 20);
641
- } else {
642
- newR = adjustRGB(newR, 80);
643
- newG = adjustRGB(newG, 80);
644
- newB = adjustRGB(newB, 80);
645
- }
646
- } else {
647
- newR = adjustRGB(newR, 20);
648
- newG = adjustRGB(newG, 20);
649
- newB = adjustRGB(newB, 20);
650
- }
655
+ const delta = getUnchangedColorDelta(newR, newG, newB, ratio);
656
+ newR = adjustRGB(newR, delta);
657
+ newG = adjustRGB(newG, delta);
658
+ newB = adjustRGB(newB, delta);
651
659
  }
652
660
  return `#${newR.toString(16).padStart(2, 0)}${newG.toString(16).padStart(2, 0)}${newB.toString(16).padStart(2, 0)}`;
653
661
  };
@@ -1679,7 +1687,7 @@ var getAvailableContentHeight = ({
1679
1687
  }
1680
1688
  return majorTextFontSize + CONTENT_SPARKLINE_SPACING + underLabelHeight;
1681
1689
  };
1682
- var isValidPosition = (sparklinePosition) => VALID_SPARKLINE_POSITIONS.indexOf(sparklinePosition) > -1;
1690
+ var isValidPosition = (sparklinePosition) => VALID_SPARKLINE_POSITIONS.includes(sparklinePosition);
1683
1691
  var parseSparklineValues = ({ sparklineValues }) => Array.isArray(sparklineValues) ? sparklineValues.map((v) => {
1684
1692
  const numV = (0, numberUtils_exports.parseNumber)(v);
1685
1693
  if (numV === 0) {
@@ -2008,15 +2016,13 @@ var SingleValue = (_a) => {
2008
2016
  }
2009
2017
  let { sparklineDisplay = "below", trendDisplay = "absolute", unit, underLabel } = props;
2010
2018
  const parsedSparklineValues = parseSparklineValues({ sparklineValues });
2019
+ if (!isValidPosition(sparklineDisplay)) {
2020
+ sparklineDisplay = "below";
2021
+ }
2011
2022
  let hasSparkline = shouldShowSparkline({
2012
- showSparkline: isValidPosition(sparklineDisplay) && sparklineDisplay !== "off",
2023
+ showSparkline: sparklineDisplay !== "off",
2013
2024
  sparklineValues: parsedSparklineValues
2014
2025
  });
2015
- if (hasSparkline) {
2016
- if (!isValidPosition(sparklineDisplay)) {
2017
- sparklineDisplay = "below";
2018
- }
2019
- }
2020
2026
  const isSparklinePositionBelow = hasSparkline && sparklineDisplay === "below";
2021
2027
  const contentWidth = getAvailableContentWidth({
2022
2028
  hasSparkline,
@@ -2050,8 +2056,11 @@ var SingleValue = (_a) => {
2050
2056
  });
2051
2057
  if (!isEmpty_default(smallVizProps)) {
2052
2058
  ({ sparklineDisplay, trendDisplay, unit, underLabel } = smallVizProps);
2059
+ if (!isValidPosition(sparklineDisplay)) {
2060
+ sparklineDisplay = "below";
2061
+ }
2053
2062
  hasSparkline = shouldShowSparkline({
2054
- showSparkline: isValidPosition(sparklineDisplay) && sparklineDisplay !== "off",
2063
+ showSparkline: sparklineDisplay !== "off",
2055
2064
  sparklineValues: parsedSparklineValues
2056
2065
  });
2057
2066
  }
@@ -2253,7 +2262,7 @@ var DefaultVizActionHandler = class {
2253
2262
  var INITIAL_HEIGHT = 250;
2254
2263
  var SplunkVisualization = class {
2255
2264
  };
2256
- SplunkVisualization.propTypes = {
2265
+ __publicField(SplunkVisualization, "propTypes", {
2257
2266
  /**
2258
2267
  * display mode
2259
2268
  */
@@ -2329,11 +2338,11 @@ SplunkVisualization.propTypes = {
2329
2338
  * A callback to request new data with updated request params
2330
2339
  */
2331
2340
  onRequestParamsChange: prop_types_exports.func
2332
- };
2341
+ });
2333
2342
  /**
2334
2343
  *
2335
2344
  */
2336
- SplunkVisualization.defaults = {
2345
+ __publicField(SplunkVisualization, "defaults", {
2337
2346
  // BaseVisualization in dashboard-visualizations uses 100% for width but 250 for height
2338
2347
  width: "100%",
2339
2348
  height: INITIAL_HEIGHT,
@@ -2348,7 +2357,7 @@ SplunkVisualization.defaults = {
2348
2357
  onComputedProps: () => ({}),
2349
2358
  loading: false,
2350
2359
  onRequestParamsChange: lodash_exports.noop
2351
- };
2360
+ });
2352
2361
  var SplunkVisualization_default = SplunkVisualization;
2353
2362
 
2354
2363
  // src/common/interfaces/DataSource.ts
@@ -2402,9 +2411,9 @@ var usePaginationParams = ({
2402
2411
  meta,
2403
2412
  onRequestParamsChange
2404
2413
  }) => {
2405
- const totalCount = meta && meta.totalCount || 0;
2406
- const offset = requestParams && requestParams.offset || 0;
2407
- const count = requestParams && requestParams.count;
2414
+ const totalCount = (meta == null ? void 0 : meta.totalCount) || 0;
2415
+ const offset = (requestParams == null ? void 0 : requestParams.offset) || 0;
2416
+ const count = requestParams == null ? void 0 : requestParams.count;
2408
2417
  const totalPages = typeof count === "number" && count > 0 ? Math.ceil(totalCount / count) : 0;
2409
2418
  const current = typeof count === "number" && count > 0 ? Math.floor(offset / count) + 1 : 0;
2410
2419
  const isPaging = totalPages > 1 && typeof onRequestParamsChange === "function";
@@ -2503,7 +2512,7 @@ var Cover = styled_components_default.div`
2503
2512
  bottom: 0;
2504
2513
  `;
2505
2514
  var Blocker = styled_components_default.div.attrs({
2506
- "data-splunk-visualization-version": "28.5.3 - 657435b86"
2515
+ "data-splunk-visualization-version": "28.6.0 - 92427899a"
2507
2516
  })`
2508
2517
  position: relative;
2509
2518
  width: 100%;
@@ -2593,7 +2602,7 @@ var withFixedSizeContainer = (Viz) => {
2593
2602
  FixSizeItem,
2594
2603
  {
2595
2604
  "data-test": "fix-size-item",
2596
- "data-splunk-visualization-version": "28.5.3 - 657435b86",
2605
+ "data-splunk-visualization-version": "28.6.0 - 92427899a",
2597
2606
  width,
2598
2607
  height,
2599
2608
  backgroundColor
@@ -3090,7 +3099,7 @@ var dataSourcesSplitByAggregationsUnknown = (dataSource) => {
3090
3099
  const columns = (_d = (_c = dataSource == null ? void 0 : dataSource.primary) == null ? void 0 : _c.data) == null ? void 0 : _d.columns;
3091
3100
  let splitDataSources = null;
3092
3101
  let errorCode = null;
3093
- if (fields && fields.length) {
3102
+ if (fields == null ? void 0 : fields.length) {
3094
3103
  splitDataSources = {};
3095
3104
  for (let i = 0; i < fields.length; i += 1) {
3096
3105
  const fieldName = fields[i].name;
@@ -3141,7 +3150,7 @@ var dataSourcesSplitByAggregationsTimechartAndChart = (dataSource) => {
3141
3150
  }
3142
3151
  });
3143
3152
  });
3144
- } else if ((!splitByFields || !splitByFields.length) && fields.length > 1) {
3153
+ } else if (!(splitByFields == null ? void 0 : splitByFields.length) && fields.length > 1) {
3145
3154
  splitDataSources = {};
3146
3155
  for (let i = 1; i < fields.length; i += 1) {
3147
3156
  const fieldName = fields[i].name;
@@ -3197,7 +3206,7 @@ var dataSourcesSplitByModeTimechart = (dataSource, splitBy) => {
3197
3206
  if (fields.length > 0) {
3198
3207
  splitByFields = (0, trellisUtils_exports.extractSplitByFieldsChartFields)(fields);
3199
3208
  }
3200
- if (splitByFields && splitByFields.indexOf(splitBy) > -1) {
3209
+ if (splitByFields == null ? void 0 : splitByFields.includes(splitBy)) {
3201
3210
  splitDataSources = {};
3202
3211
  const dataSourceKeys = (0, trellisUtils_exports.extractDataSourceAggregationKeysChart)(fields);
3203
3212
  const valueKeys = [];
@@ -3228,6 +3237,68 @@ var dataSourcesSplitByModeTimechart = (dataSource, splitBy) => {
3228
3237
  }
3229
3238
  return { splitDataSources, errorCode };
3230
3239
  };
3240
+ var splitRowWise = (dataSource, columns, fields, otherSplitBy, dataSourceKeys, nonDataSourceAggregations) => {
3241
+ const splitDataSources = {};
3242
+ const valueKeys = (0, lodash_exports.cloneDeep)(columns[0]);
3243
+ valueKeys.forEach((val, idx) => {
3244
+ splitDataSources[val] = (0, lodash_exports.cloneDeep)((0, lodash_exports.omit)(dataSource, ["primary.data.fields", "primary.data.columns"]));
3245
+ splitDataSources[val].primary.data.fields = [];
3246
+ if (otherSplitBy.length) {
3247
+ splitDataSources[val].primary.data.fields = [{ name: otherSplitBy[0] }];
3248
+ }
3249
+ if (dataSourceKeys.length) {
3250
+ const columnValues = [[]];
3251
+ splitDataSources[val].primary.data.fields = [
3252
+ ...splitDataSources[val].primary.data.fields,
3253
+ ...dataSourceKeys.map((k) => ({ name: k }))
3254
+ ];
3255
+ dataSourceKeys.forEach(() => {
3256
+ columnValues.push([]);
3257
+ });
3258
+ for (let i = 1; i <= Math.ceil((fields.length - 1) / dataSourceKeys.length); i += 1) {
3259
+ columnValues[0].push(fields[i].splitby_value ? fields[i].splitby_value : fields[i].name);
3260
+ dataSourceKeys.forEach((dskey, dsIndx) => {
3261
+ const mul = (fields.length - 1) / dataSourceKeys.length;
3262
+ columnValues[dsIndx + 1].push(columns[i + dsIndx * mul][idx]);
3263
+ });
3264
+ }
3265
+ splitDataSources[val].primary.data.columns = columnValues;
3266
+ } else if (nonDataSourceAggregations.length) {
3267
+ const columnValues = [];
3268
+ fields.forEach((aggregationField, fieldIdx) => {
3269
+ if (fieldIdx > 0) {
3270
+ splitDataSources[val].primary.data.fields.push(aggregationField);
3271
+ columnValues.push([columns[fieldIdx][idx]]);
3272
+ }
3273
+ });
3274
+ splitDataSources[val].primary.data.columns = columnValues;
3275
+ }
3276
+ });
3277
+ return splitDataSources;
3278
+ };
3279
+ var splitColumnWise = (dataSource, columns, fields, otherSplitBy, dataSourceKeys) => {
3280
+ const splitDataSources = {};
3281
+ const valueKeys = [];
3282
+ for (let i = 1; i < fields.length; i += 1) {
3283
+ valueKeys.push(fields[i].splitby_value ? fields[i].splitby_value : fields[i].name);
3284
+ }
3285
+ valueKeys.forEach((val) => {
3286
+ splitDataSources[val] = (0, lodash_exports.cloneDeep)((0, lodash_exports.omit)(dataSource, ["primary.data.fields", "primary.data.columns"]));
3287
+ splitDataSources[val].primary.data.fields = [
3288
+ { name: otherSplitBy[0] },
3289
+ ...dataSourceKeys.map((k) => ({ name: k }))
3290
+ ];
3291
+ splitDataSources[val].primary.data.columns = [[...columns[0]]];
3292
+ dataSourceKeys.forEach((dsKey) => {
3293
+ fields.forEach((field, idx) => {
3294
+ if (field.data_source === dsKey && (field.splitby_value === val || field.name === val)) {
3295
+ splitDataSources[val].primary.data.columns.push([...columns[idx]]);
3296
+ }
3297
+ });
3298
+ });
3299
+ });
3300
+ return splitDataSources;
3301
+ };
3231
3302
  var dataSourcesSplitByModeChart = (dataSource, splitBy) => {
3232
3303
  var _a, _b, _c, _d;
3233
3304
  const fields = toFieldEntries((_b = (_a = dataSource == null ? void 0 : dataSource.primary) == null ? void 0 : _a.data) == null ? void 0 : _b.fields);
@@ -3238,8 +3309,7 @@ var dataSourcesSplitByModeChart = (dataSource, splitBy) => {
3238
3309
  if (fields.length > 0) {
3239
3310
  splitByFields = (0, trellisUtils_exports.extractSplitByFieldsChartFields)(fields);
3240
3311
  }
3241
- if (splitByFields && splitByFields.indexOf(splitBy) > -1) {
3242
- splitDataSources = {};
3312
+ if (splitByFields == null ? void 0 : splitByFields.includes(splitBy)) {
3243
3313
  const splitByFieldIdx = splitByFields.findIndex((f) => f === splitBy);
3244
3314
  const otherSplitBy = splitByFields.filter((f) => f !== splitBy);
3245
3315
  const dataSourceKeys = (0, trellisUtils_exports.extractDataSourceAggregationKeysChart)(fields);
@@ -3250,71 +3320,16 @@ var dataSourcesSplitByModeChart = (dataSource, splitBy) => {
3250
3320
  }
3251
3321
  }
3252
3322
  if (splitByFieldIdx === 0) {
3253
- const valueKeys = (0, lodash_exports.cloneDeep)(columns[0]);
3254
- valueKeys.forEach((val, idx) => {
3255
- splitDataSources[val] = (0, lodash_exports.cloneDeep)(
3256
- (0, lodash_exports.omit)(dataSource, ["primary.data.fields", "primary.data.columns"])
3257
- );
3258
- splitDataSources[val].primary.data.fields = [];
3259
- if (otherSplitBy.length) {
3260
- splitDataSources[val].primary.data.fields = [{ name: otherSplitBy[0] }];
3261
- }
3262
- if (dataSourceKeys.length) {
3263
- const columnValues = [[]];
3264
- splitDataSources[val].primary.data.fields = [
3265
- ...splitDataSources[val].primary.data.fields,
3266
- ...dataSourceKeys.map((k) => ({
3267
- name: k
3268
- }))
3269
- ];
3270
- dataSourceKeys.forEach(() => {
3271
- columnValues.push([]);
3272
- });
3273
- for (let i = 1; i <= Math.ceil((fields.length - 1) / dataSourceKeys.length); i += 1) {
3274
- columnValues[0].push(
3275
- fields[i].splitby_value ? fields[i].splitby_value : fields[i].name
3276
- );
3277
- dataSourceKeys.forEach((dskey, dsIndx) => {
3278
- const mul = (fields.length - 1) / dataSourceKeys.length;
3279
- columnValues[dsIndx + 1].push(columns[i + dsIndx * mul][idx]);
3280
- });
3281
- }
3282
- splitDataSources[val].primary.data.columns = columnValues;
3283
- } else if (nonDataSourceAggregations.length) {
3284
- const columnValues = [];
3285
- fields.forEach((aggregationField, fieldIdx) => {
3286
- if (fieldIdx > 0) {
3287
- splitDataSources[val].primary.data.fields.push(aggregationField);
3288
- columnValues.push([columns[fieldIdx][idx]]);
3289
- }
3290
- });
3291
- splitDataSources[val].primary.data.columns = columnValues;
3292
- }
3293
- });
3323
+ splitDataSources = splitRowWise(
3324
+ dataSource,
3325
+ columns,
3326
+ fields,
3327
+ otherSplitBy,
3328
+ dataSourceKeys,
3329
+ nonDataSourceAggregations
3330
+ );
3294
3331
  } else {
3295
- const valueKeys = [];
3296
- for (let i = 1; i < fields.length; i += 1) {
3297
- valueKeys.push(fields[i].splitby_value ? fields[i].splitby_value : fields[i].name);
3298
- }
3299
- valueKeys.forEach((val) => {
3300
- splitDataSources[val] = (0, lodash_exports.cloneDeep)(
3301
- (0, lodash_exports.omit)(dataSource, ["primary.data.fields", "primary.data.columns"])
3302
- );
3303
- splitDataSources[val].primary.data.fields = [
3304
- { name: otherSplitBy[0] },
3305
- ...dataSourceKeys.map((k) => ({
3306
- name: k
3307
- }))
3308
- ];
3309
- splitDataSources[val].primary.data.columns = [[...columns[0]]];
3310
- dataSourceKeys.forEach((dsKey) => {
3311
- fields.forEach((field, idx) => {
3312
- if (field.data_source === dsKey && (field.splitby_value === val || field.name === val)) {
3313
- splitDataSources[val].primary.data.columns.push([...columns[idx]]);
3314
- }
3315
- });
3316
- });
3317
- });
3332
+ splitDataSources = splitColumnWise(dataSource, columns, fields, otherSplitBy, dataSourceKeys);
3318
3333
  }
3319
3334
  } else {
3320
3335
  errorCode = "INVALID_SPLIT_BY_FIELD";
@@ -3332,7 +3347,7 @@ var dataSourcesSplitByModeStatsorUnknown = (dataSource, splitBy, splitMode) => {
3332
3347
  splitByFields = splitMode !== trellisUtils_exports.UNKNOWN ? (0, trellisUtils_exports.extractSplitByFieldsForStats)(fields) : (0, trellisUtils_exports.extractSplitByFieldsForUnknown)(fields);
3333
3348
  }
3334
3349
  const splitByIndex = fields.findIndex((field) => field.name === splitBy);
3335
- if (splitByFields && splitByFields.indexOf(splitBy) > -1) {
3350
+ if (splitByFields == null ? void 0 : splitByFields.includes(splitBy)) {
3336
3351
  const splitByColumn = (_f = (_e = dataSource == null ? void 0 : dataSource.primary) == null ? void 0 : _e.data) == null ? void 0 : _f.columns[splitByIndex];
3337
3352
  splitDataSources = {};
3338
3353
  splitByColumn.forEach((val, idx) => {
@@ -3439,6 +3454,15 @@ var defaultImport35 = __toESM(require("@splunk/react-icons/Triangle"));
3439
3454
  __reExport(Triangle_exports, require("@splunk/react-icons/Triangle"));
3440
3455
  var Triangle_default = "default" in defaultImport35 ? defaultImport35.default : defaultImport35;
3441
3456
 
3457
+ // esm-externals:@splunk/visualizations-shared/simpleXMLOptions
3458
+ var simpleXMLOptions_exports = {};
3459
+ __export(simpleXMLOptions_exports, {
3460
+ default: () => simpleXMLOptions_default
3461
+ });
3462
+ var defaultImport36 = __toESM(require("@splunk/visualizations-shared/simpleXMLOptions"));
3463
+ __reExport(simpleXMLOptions_exports, require("@splunk/visualizations-shared/simpleXMLOptions"));
3464
+ var simpleXMLOptions_default = "default" in defaultImport36 ? defaultImport36.default : defaultImport36;
3465
+
3442
3466
  // src/common/chartingUtils.ts
3443
3467
  var DEFAULT_LINE_WIDTH = 2;
3444
3468
  var getAnnotationsForCanvas = ({
@@ -3476,9 +3500,9 @@ var shouldEnableSearchZoom = (eventHandlers = [], xField = "") => {
3476
3500
  const xAxisIsTime = xField === "_time";
3477
3501
  return !!rangeSelectEventHandler && xAxisIsTime;
3478
3502
  };
3479
- var canvasSupportedTimeSeriesCharts = ["splunk.line"];
3503
+ var canvasSupportedTimeSeriesCharts = ["splunk.line", "splunk.area"];
3480
3504
  var isTimeSeriesCanvasRenderSupported = (vizConfigKey) => {
3481
- return canvasSupportedTimeSeriesCharts.indexOf(vizConfigKey) > -1;
3505
+ return canvasSupportedTimeSeriesCharts.includes(vizConfigKey);
3482
3506
  };
3483
3507
  var filterChartDataFromInternalFields = (chartData) => {
3484
3508
  const { fields, columns } = chartData;
@@ -3633,46 +3657,66 @@ var getY2ScaleConfig = (label, axisAbbreviation, axisScale, roundAxisLabelsToInt
3633
3657
  }
3634
3658
  return y2Config;
3635
3659
  };
3636
- var getSeriesOverrides = (yfields, y2fields, lineWidth, overlayFields, y2Enabled, nullValueMode, markerDisplay, lineDashStyle, lineDashStylesByField, stepPosition, stepPositionsByField) => {
3660
+ var getSeriesType = (isOverlay, isAreaChart, isStacked) => {
3661
+ if (isOverlay) return "line";
3662
+ if (!isAreaChart) return void 0;
3663
+ return isStacked ? "stacked-area" : "area";
3664
+ };
3665
+ var getY2Scale = (field, y2fields, overlayFields) => {
3666
+ 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));
3667
+ return assignToY2 ? "y2" : "y";
3668
+ };
3669
+ var getSeriesOverrides = (opts) => {
3670
+ var _a;
3671
+ const {
3672
+ yfields,
3673
+ y2fields,
3674
+ lineWidth,
3675
+ overlayFields,
3676
+ y2Enabled,
3677
+ nullValueMode,
3678
+ markerDisplay,
3679
+ lineDashStyle,
3680
+ lineDashStylesByField,
3681
+ stepPosition,
3682
+ stepPositionsByField,
3683
+ type,
3684
+ stackMode,
3685
+ showLines
3686
+ } = opts;
3637
3687
  const seriesConfig = {};
3638
3688
  let spanGaps;
3639
- let replaceNullsWithZero;
3640
3689
  if (nullValueMode === "gaps") {
3641
3690
  spanGaps = false;
3642
- } else if (nullValueMode === "connect" || nullValueMode === "zero") {
3691
+ } else if (nullValueMode != null) {
3643
3692
  spanGaps = true;
3644
- if (nullValueMode === "zero") {
3645
- replaceNullsWithZero = true;
3646
- }
3647
- }
3648
- yfields.forEach((field) => {
3693
+ } else {
3694
+ spanGaps = void 0;
3695
+ }
3696
+ const replaceNullsWithZero = nullValueMode === "zero" ? true : void 0;
3697
+ const isAreaChart = type === "area";
3698
+ const isStacked = isAreaChart && (stackMode === "stacked" || stackMode === "stacked100");
3699
+ const areaFields = isAreaChart ? yfields.filter((f) => !(overlayFields == null ? void 0 : overlayFields.includes(f))) : yfields;
3700
+ const overlayFieldsInOrder = (_a = overlayFields == null ? void 0 : overlayFields.filter((f) => yfields.includes(f))) != null ? _a : [];
3701
+ const orderedFields = isAreaChart ? [...areaFields, ...overlayFieldsInOrder] : yfields;
3702
+ orderedFields.forEach((field) => {
3703
+ var _a2;
3704
+ const isOverlay = (_a2 = overlayFields == null ? void 0 : overlayFields.includes(field)) != null ? _a2 : false;
3705
+ const isPercent = isAreaChart && stackMode === "stacked100" && !isOverlay;
3706
+ const shouldHideAreaOutline = isAreaChart && showLines === false && !isOverlay;
3649
3707
  seriesConfig[field] = {
3650
- overrides: { width: lineWidth != null ? lineWidth : DEFAULT_LINE_WIDTH }
3708
+ overrides: __spreadValues({
3709
+ width: shouldHideAreaOutline ? 0 : lineWidth != null ? lineWidth : DEFAULT_LINE_WIDTH
3710
+ }, isPercent ? { stacking: { mode: "percent", group: "A" } } : {})
3651
3711
  };
3652
- if (spanGaps !== void 0) {
3653
- seriesConfig[field].overrides.spanGaps = spanGaps;
3654
- }
3655
- if (y2Enabled) {
3656
- const shouldAssignToY2 = (
3657
- // If y2Fields are present, assign all y2Fields to y2 scale
3658
- (y2fields == null ? void 0 : y2fields.length) > 0 && y2fields.includes(field) || // Else, assign all overlayFields to y2 scale
3659
- (!y2fields || y2fields.length === 0) && (overlayFields == null ? void 0 : overlayFields.includes(field))
3660
- );
3661
- if (shouldAssignToY2) {
3662
- seriesConfig[field].overrides.scale = "y2";
3663
- } else {
3664
- seriesConfig[field].overrides.scale = "y";
3665
- }
3666
- }
3667
- if (overlayFields == null ? void 0 : overlayFields.includes(field)) {
3668
- seriesConfig[field].type = "line";
3669
- }
3670
- if (markerDisplay !== void 0) {
3671
- seriesConfig[field].markerDisplay = markerDisplay;
3672
- }
3673
- const fieldDashStyle = (lineDashStylesByField == null ? void 0 : lineDashStylesByField[field]) || lineDashStyle;
3674
- if (fieldDashStyle) {
3675
- seriesConfig[field].lineDashStyle = fieldDashStyle;
3712
+ const seriesType = getSeriesType(isOverlay, isAreaChart, isStacked);
3713
+ if (seriesType !== void 0) seriesConfig[field].type = seriesType;
3714
+ if (spanGaps !== void 0) seriesConfig[field].overrides.spanGaps = spanGaps;
3715
+ if (y2Enabled) seriesConfig[field].overrides.scale = getY2Scale(field, y2fields, overlayFields);
3716
+ if (markerDisplay !== void 0) seriesConfig[field].markerDisplay = markerDisplay;
3717
+ if (!isAreaChart || isOverlay) {
3718
+ const fieldDashStyle = (lineDashStylesByField == null ? void 0 : lineDashStylesByField[field]) || lineDashStyle;
3719
+ if (fieldDashStyle) seriesConfig[field].lineDashStyle = fieldDashStyle;
3676
3720
  }
3677
3721
  const hasFieldStepPosition = Object.hasOwn(stepPositionsByField || {}, field);
3678
3722
  const fieldStepPosition = hasFieldStepPosition ? stepPositionsByField == null ? void 0 : stepPositionsByField[field] : stepPosition;
@@ -3838,6 +3882,38 @@ var parseArrayOption = (value) => {
3838
3882
  }
3839
3883
  return void 0;
3840
3884
  };
3885
+ var getAreaOpacityForCanvas = (areaOpacity) => (
3886
+ // Preserve legacy visualizations behavior where area opacity is squared to match charting output.
3887
+ areaOpacity !== void 0 && areaOpacity !== null ? __pow(areaOpacity, 2) : areaOpacity
3888
+ );
3889
+ var parseTickIntervalOption = (simpleXMLValue, canvasValue) => {
3890
+ if (simpleXMLValue) return Number(simpleXMLValue);
3891
+ if (canvasValue) return Number(canvasValue);
3892
+ return void 0;
3893
+ };
3894
+ var getYAxisTitles = ({
3895
+ y2Enabled,
3896
+ yFields,
3897
+ y2Fields,
3898
+ overlayFields,
3899
+ yAxisTitleText,
3900
+ yAxisTitleVisibility,
3901
+ y2AxisTitleText,
3902
+ y2AxisTitleVisibility,
3903
+ containerHeight
3904
+ }) => {
3905
+ const yFieldsForTitle = y2Enabled ? yFields.filter((field) => !y2Fields.includes(field)) : yFields;
3906
+ const fieldsForY2Axis = y2Fields.length > 0 ? y2Fields : overlayFields;
3907
+ const yAxisTitle = ellipsisAxisTitle(
3908
+ getComputedAxisTitles(yAxisTitleText, yFieldsForTitle, yAxisTitleVisibility),
3909
+ containerHeight
3910
+ );
3911
+ const y2AxisTitle = ellipsisAxisTitle(
3912
+ getComputedAxisTitles(y2AxisTitleText, fieldsForY2Axis, y2AxisTitleVisibility),
3913
+ containerHeight
3914
+ );
3915
+ return { yAxisTitle, y2AxisTitle };
3916
+ };
3841
3917
  var TimeSeriesChartWrapper = (props) => {
3842
3918
  var _b, _c, _d;
3843
3919
  const _a = props, {
@@ -3927,6 +4003,8 @@ var TimeSeriesChartWrapper = (props) => {
3927
4003
  "chart.overlayFields": overlayFieldsStr,
3928
4004
  "chart.nullValueMode": nullValueMode,
3929
4005
  "chart.showDataLabels": showDataLabels,
4006
+ "chart.showLines": showLines,
4007
+ "chart.stackMode": stackMode,
3930
4008
  lineWidth,
3931
4009
  lineDashStyle,
3932
4010
  fieldDashStyles: lineDashStylesByFieldStr,
@@ -3955,7 +4033,10 @@ var TimeSeriesChartWrapper = (props) => {
3955
4033
  yAxisMinorTickSize,
3956
4034
  y2AxisMinorTickSize,
3957
4035
  showYAxisWithZero: showYAxisWithZeroFromOptions,
3958
- showY2AxisWithZero: showY2AxisWithZeroFromOptions
4036
+ showY2AxisWithZero: showY2AxisWithZeroFromOptions,
4037
+ // area only props
4038
+ areaFillOpacity: areaOpacity,
4039
+ chart: chartType
3959
4040
  } = options;
3960
4041
  const dataValuesDisplay = showDataLabels === "none" ? "off" : showDataLabels;
3961
4042
  const showYAxisWithZero = showYAxisWithZeroFromProps != null ? showYAxisWithZeroFromProps : showYAxisWithZeroFromOptions;
@@ -3972,13 +4053,11 @@ var TimeSeriesChartWrapper = (props) => {
3972
4053
  const yAxisMax = parseAxisValue(yAxisMaxRaw);
3973
4054
  const y2AxisMin = parseAxisValue(y2AxisMinRaw);
3974
4055
  const y2AxisMax = parseAxisValue(y2AxisMaxRaw);
3975
- const parseTickInterval = (simpleXMLValue, canvasValue) => {
3976
- if (simpleXMLValue) return Number(simpleXMLValue);
3977
- if (canvasValue) return Number(canvasValue);
3978
- return void 0;
3979
- };
3980
- const yAxisMajorTickIntervalNum = parseTickInterval(yAxisMajorUnitFromSimpleXML, yAxisMajorTickInterval);
3981
- const y2AxisMajorTickIntervalNum = parseTickInterval(
4056
+ const yAxisMajorTickIntervalNum = parseTickIntervalOption(
4057
+ yAxisMajorUnitFromSimpleXML,
4058
+ yAxisMajorTickInterval
4059
+ );
4060
+ const y2AxisMajorTickIntervalNum = parseTickIntervalOption(
3982
4061
  y2AxisMajorUnitFromSimpleXML,
3983
4062
  y2AxisMajorTickInterval
3984
4063
  );
@@ -3987,6 +4066,7 @@ var TimeSeriesChartWrapper = (props) => {
3987
4066
  const y2AxisMajorTickSizeNum = y2AxisMajorTickSize != null ? Number(y2AxisMajorTickSize) : void 0;
3988
4067
  const yAxisMinorTickSizeNum = yAxisMinorTickSize != null ? Number(yAxisMinorTickSize) : void 0;
3989
4068
  const y2AxisMinorTickSizeNum = y2AxisMinorTickSize != null ? Number(y2AxisMinorTickSize) : void 0;
4069
+ const areaOpacityForCanvas = getAreaOpacityForCanvas(areaOpacity);
3990
4070
  const seriesColors = seriesColorsStr ? JSON.parse(seriesColorsStr) : void 0;
3991
4071
  const seriesColorsByField = fieldColors ? JSON.parse(fieldColors) : void 0;
3992
4072
  const lineDashStylesByField = lineDashStylesByFieldStr ? JSON.parse(lineDashStylesByFieldStr) : void 0;
@@ -4017,26 +4097,40 @@ var TimeSeriesChartWrapper = (props) => {
4017
4097
  );
4018
4098
  let xAxisTitle = getComputedAxisTitles(xAxisTitleText, [xField], xAxisTitleVisibility);
4019
4099
  xAxisTitle = ellipsisAxisTitle(xAxisTitle, containerWidth);
4020
- const yFieldsForTitle = y2Enabled ? yFields.filter((field) => !y2Fields.includes(field)) : yFields;
4021
- let yAxisTitle = getComputedAxisTitles(yAxisTitleText, yFieldsForTitle, yAxisTitleVisibility);
4022
- yAxisTitle = ellipsisAxisTitle(yAxisTitle, containerHeight);
4023
- const fieldsForY2Axis = y2Fields.length > 0 ? y2Fields : overlayFields;
4024
- let y2AxisTitle = getComputedAxisTitles(y2AxisTitleText, fieldsForY2Axis, y2AxisTitleVisibility);
4025
- y2AxisTitle = ellipsisAxisTitle(y2AxisTitle, containerHeight);
4100
+ const { yAxisTitle, y2AxisTitle } = getYAxisTitles({
4101
+ y2Enabled,
4102
+ yFields,
4103
+ y2Fields,
4104
+ overlayFields,
4105
+ yAxisTitleText,
4106
+ yAxisTitleVisibility,
4107
+ y2AxisTitleText,
4108
+ y2AxisTitleVisibility,
4109
+ containerHeight
4110
+ });
4026
4111
  const xScaleConfig = (0, react_exports.useMemo)(
4027
4112
  () => getXScaleConfig(xAxisTitle, xAxisLabelVisibility, xAxisLabelRotation),
4028
4113
  [xAxisTitle, xAxisLabelVisibility, xAxisLabelRotation]
4029
4114
  );
4115
+ const isStacked100 = stackMode === "stacked100";
4030
4116
  const yScaleConfig = (0, react_exports.useMemo)(
4031
- () => getYScaleConfig(
4032
- yAxisTitle,
4033
- yAxisAbbreviation,
4034
- yAxisScale,
4035
- yAxisLabelVisibility,
4036
- yAxisMin,
4037
- yAxisMax
4038
- ),
4039
- [yAxisTitle, yAxisAbbreviation, yAxisScale, yAxisLabelVisibility, yAxisMin, yAxisMax]
4117
+ () => {
4118
+ const config3 = getYScaleConfig(
4119
+ yAxisTitle,
4120
+ yAxisAbbreviation,
4121
+ yAxisScale,
4122
+ yAxisLabelVisibility,
4123
+ yAxisMin,
4124
+ yAxisMax
4125
+ );
4126
+ if (isStacked100) {
4127
+ config3.y.tickFmt = (v) => `${Math.round(v * 100)}%`;
4128
+ config3.y.range = () => [0, 1];
4129
+ }
4130
+ return config3;
4131
+ },
4132
+ // eslint-disable-next-line react-hooks/exhaustive-deps
4133
+ [yAxisTitle, yAxisAbbreviation, yAxisScale, yAxisLabelVisibility, yAxisMin, yAxisMax, isStacked100]
4040
4134
  );
4041
4135
  const y2ScaleConfig = (0, react_exports.useMemo)(() => {
4042
4136
  if (y2Enabled) {
@@ -4068,10 +4162,11 @@ var TimeSeriesChartWrapper = (props) => {
4068
4162
  ];
4069
4163
  chartData.fields = filteredChartData.fields;
4070
4164
  chartData.columns = seriesDataFormatted;
4165
+ const normalizedStackMode = stackMode === "stacked" || stackMode === "stacked100" ? stackMode : "auto";
4071
4166
  const seriesOverrides = (0, react_exports.useMemo)(
4072
- () => getSeriesOverrides(
4073
- yFields,
4074
- y2Fields,
4167
+ () => getSeriesOverrides({
4168
+ yfields: yFields,
4169
+ y2fields: y2Fields,
4075
4170
  lineWidth,
4076
4171
  overlayFields,
4077
4172
  y2Enabled,
@@ -4080,8 +4175,11 @@ var TimeSeriesChartWrapper = (props) => {
4080
4175
  lineDashStyle,
4081
4176
  lineDashStylesByField,
4082
4177
  stepPosition,
4083
- stepPositionsByField
4084
- ),
4178
+ stepPositionsByField,
4179
+ type: chartType,
4180
+ stackMode: normalizedStackMode,
4181
+ showLines
4182
+ }),
4085
4183
  [
4086
4184
  yFields,
4087
4185
  y2Fields,
@@ -4093,7 +4191,10 @@ var TimeSeriesChartWrapper = (props) => {
4093
4191
  lineDashStyle,
4094
4192
  lineDashStylesByField,
4095
4193
  stepPosition,
4096
- stepPositionsByField
4194
+ stepPositionsByField,
4195
+ chartType,
4196
+ normalizedStackMode,
4197
+ showLines
4097
4198
  ]
4098
4199
  );
4099
4200
  const chartingEventAnnotations = (0, react_exports.useMemo)(
@@ -4161,50 +4262,54 @@ var TimeSeriesChartWrapper = (props) => {
4161
4262
  react_exports.useEffect(() => {
4162
4263
  additionalTooltipValuesRef.current = additionalTooltipValues;
4163
4264
  }, [additionalTooltipValues]);
4265
+ const handleCrosshairMouseout = react_exports.useCallback(() => {
4266
+ if (onPointMouseOut && lastPayloadRef.current) {
4267
+ onPointMouseOut({
4268
+ type: "point.mouseout",
4269
+ originalEvent: lastOriginalEventRef.current,
4270
+ payload: lastPayloadRef.current
4271
+ });
4272
+ }
4273
+ previousMouseoverPayloadRef.current = null;
4274
+ }, [onPointMouseOut]);
4164
4275
  const handleChartCrosshairChange = react_exports.useCallback(
4165
4276
  (event) => {
4166
- if (onPointMouseOver || onPointMouseOut) {
4167
- if (!event) {
4168
- if (onPointMouseOut && lastPayloadRef.current) {
4169
- onPointMouseOut({
4170
- type: "point.mouseout",
4171
- originalEvent: lastOriginalEventRef.current,
4172
- payload: lastPayloadRef.current
4173
- });
4174
- }
4175
- previousMouseoverPayloadRef.current = null;
4176
- return;
4177
- }
4178
- const payload = __spreadProps(__spreadValues({}, (0, lodash_exports.pick)(event, "value", "seriesKey", "time", "index", "seriesIndex")), {
4179
- name: event.seriesKey
4277
+ if (!onPointMouseOver && !onPointMouseOut) {
4278
+ return;
4279
+ }
4280
+ if (!event) {
4281
+ handleCrosshairMouseout();
4282
+ return;
4283
+ }
4284
+ const payload = __spreadProps(__spreadValues({}, (0, lodash_exports.pick)(event, "value", "seriesKey", "time", "index", "seriesIndex")), {
4285
+ name: event.seriesKey
4286
+ });
4287
+ delete payload.seriesKey;
4288
+ if (event.rowContext) {
4289
+ Object.assign(
4290
+ payload,
4291
+ Object.keys(event.rowContext).reduce((acc, fieldName) => {
4292
+ acc[`row.${fieldName}.value`] = event.rowContext[fieldName];
4293
+ return acc;
4294
+ }, {})
4295
+ );
4296
+ }
4297
+ const updatedPayload = appendTrellisToPayload(payload, trellisKey, trellisSplitBy);
4298
+ if (!hasMouseoverPayloadChanged(updatedPayload, previousMouseoverPayloadRef.current)) {
4299
+ return;
4300
+ }
4301
+ lastPayloadRef.current = updatedPayload;
4302
+ lastOriginalEventRef.current = event;
4303
+ previousMouseoverPayloadRef.current = __spreadValues({}, updatedPayload);
4304
+ if (onPointMouseOver) {
4305
+ onPointMouseOver({
4306
+ type: "point.mouseover",
4307
+ originalEvent: event,
4308
+ payload: updatedPayload
4180
4309
  });
4181
- delete payload.seriesKey;
4182
- if (event.rowContext) {
4183
- Object.assign(
4184
- payload,
4185
- Object.keys(event.rowContext).reduce((acc, fieldName) => {
4186
- acc[`row.${fieldName}.value`] = event.rowContext[fieldName];
4187
- return acc;
4188
- }, {})
4189
- );
4190
- }
4191
- const updatedPayload = appendTrellisToPayload(payload, trellisKey, trellisSplitBy);
4192
- if (!hasMouseoverPayloadChanged(updatedPayload, previousMouseoverPayloadRef.current)) {
4193
- return;
4194
- }
4195
- lastPayloadRef.current = updatedPayload;
4196
- lastOriginalEventRef.current = event;
4197
- previousMouseoverPayloadRef.current = __spreadValues({}, updatedPayload);
4198
- if (onPointMouseOver) {
4199
- onPointMouseOver({
4200
- type: "point.mouseover",
4201
- originalEvent: event,
4202
- payload: updatedPayload
4203
- });
4204
- }
4205
4310
  }
4206
4311
  },
4207
- [onPointMouseOver, onPointMouseOut, trellisKey, trellisSplitBy]
4312
+ [onPointMouseOver, onPointMouseOut, trellisKey, trellisSplitBy, handleCrosshairMouseout]
4208
4313
  );
4209
4314
  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}`;
4210
4315
  const memoizedChart = (0, react_exports.useMemo)(() => {
@@ -4259,7 +4364,8 @@ var TimeSeriesChartWrapper = (props) => {
4259
4364
  showXAxisLine,
4260
4365
  showYAxisLine,
4261
4366
  showY2AxisLine,
4262
- xAxisMaxLabelParts
4367
+ xAxisMaxLabelParts,
4368
+ areaOpacity: areaOpacityForCanvas
4263
4369
  }
4264
4370
  ));
4265
4371
  }, [
@@ -4311,7 +4417,8 @@ var TimeSeriesChartWrapper = (props) => {
4311
4417
  showYAxisLine,
4312
4418
  showY2AxisLine,
4313
4419
  legendMode,
4314
- xAxisMaxLabelParts
4420
+ xAxisMaxLabelParts,
4421
+ areaOpacityForCanvas
4315
4422
  ]);
4316
4423
  const memoizedVisualization = (0, react_exports.useMemo)(() => {
4317
4424
  return /* @__PURE__ */ react_exports.createElement(VizStyleWrapper_default, { backgroundColor: bgColor }, memoizedChart);
@@ -4339,6 +4446,37 @@ var TimeSeriesChartWrapper_default = TimeSeriesChartWrapper;
4339
4446
 
4340
4447
  // src/common/withDashboardViz.tsx
4341
4448
  var SanitizedTimeSeriesChartWrapper = (0, SanitizeProps_exports.withSanitizedProps)(TimeSeriesChartWrapper_default);
4449
+ var buildEventCallbackProps = (supportedEvents, evaluatedOptionsToUse, onEventTrigger) => {
4450
+ const result = {};
4451
+ Object.keys(supportedEvents).forEach((eventName) => {
4452
+ const { parentKeys, payloadKeys } = supportedEvents[eventName];
4453
+ const eventCallbackPropName = (0, lodash_exports.camelCase)(`on.${eventName}`);
4454
+ let payload = {};
4455
+ if (Array.isArray(payloadKeys) && payloadKeys.length) {
4456
+ payloadKeys.forEach((p) => {
4457
+ payload[p] = evaluatedOptionsToUse[p];
4458
+ });
4459
+ }
4460
+ result[eventCallbackPropName] = (ev) => {
4461
+ if (ev == null ? void 0 : ev.payload) {
4462
+ payload = __spreadValues({}, ev.payload);
4463
+ }
4464
+ return onEventTrigger({
4465
+ originalEvent: ev,
4466
+ payload,
4467
+ type: eventName
4468
+ });
4469
+ };
4470
+ if (parentKeys) {
4471
+ for (let i = parentKeys.length - 1; i >= 0; i -= 1) {
4472
+ const newObject = {};
4473
+ newObject[parentKeys[i]] = result[eventCallbackPropName];
4474
+ result[eventCallbackPropName] = newObject;
4475
+ }
4476
+ }
4477
+ });
4478
+ return result;
4479
+ };
4342
4480
  var withDashboardViz = (opts) => {
4343
4481
  const {
4344
4482
  ReactViz,
@@ -4396,9 +4534,7 @@ var withDashboardViz = (opts) => {
4396
4534
  const isDownsamplingEnabledByFeatureFlag = Boolean(
4397
4535
  featureFlagContext == null ? void 0 : featureFlagContext.visualizations_enableDownsampling
4398
4536
  );
4399
- const isTrellisFeatureFlagOn2 = Boolean(
4400
- featureFlagContext && featureFlagContext.visualizations_enableTrellis
4401
- );
4537
+ const isTrellisFeatureFlagOn2 = Boolean(featureFlagContext == null ? void 0 : featureFlagContext.visualizations_enableTrellis);
4402
4538
  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 */;
4403
4539
  const isAcceleratedRenderFeatureFlagOn = Boolean(
4404
4540
  featureFlagContext == null ? void 0 : featureFlagContext.visualizations_enableAcceleratedRender
@@ -4563,38 +4699,12 @@ var withDashboardViz = (opts) => {
4563
4699
  }
4564
4700
  );
4565
4701
  }
4566
- const eventCallbackProps = {};
4567
- if (hasEventHandlers && mode === "view" && vizConfig.supports.indexOf("events" /* EVENTS */) > -1) {
4568
- const supportedEvents = vizConfig.events;
4569
- Object.keys(supportedEvents).forEach((eventName) => {
4570
- const { parentKeys, payloadKeys } = supportedEvents[eventName];
4571
- const eventCallbackPropName = (0, lodash_exports.camelCase)(`on.${eventName}`);
4572
- let payload = {};
4573
- if (Array.isArray(payloadKeys) && payloadKeys.length) {
4574
- payloadKeys.forEach((p) => {
4575
- payload[p] = evaluatedOptionsToUse[p];
4576
- });
4577
- }
4578
- eventCallbackProps[eventCallbackPropName] = (ev) => {
4579
- if (ev == null ? void 0 : ev.payload) {
4580
- payload = __spreadValues({}, ev.payload);
4581
- }
4582
- return onEventTrigger({
4583
- originalEvent: ev,
4584
- payload,
4585
- type: eventName
4586
- });
4587
- };
4588
- if (parentKeys) {
4589
- for (let i = parentKeys.length - 1; i >= 0; i -= 1) {
4590
- const newObject = {};
4591
- newObject[parentKeys[i]] = eventCallbackProps[eventCallbackPropName];
4592
- eventCallbackProps[eventCallbackPropName] = newObject;
4593
- }
4594
- }
4595
- });
4596
- }
4597
- const computedVizProps = computeVizProps2(__spreadProps(__spreadValues(__spreadValues(__spreadValues({}, props), evaluatedOptionsToUse), eventCallbackProps), {
4702
+ const eventCallbackProps = hasEventHandlers && mode === "view" && vizConfig.supports.includes("events" /* EVENTS */) ? buildEventCallbackProps(vizConfig.events, evaluatedOptionsToUse, onEventTrigger) : {};
4703
+ const computedVizProps = computeVizProps2(__spreadProps(__spreadValues(__spreadProps(__spreadValues(__spreadValues({}, props), evaluatedOptionsToUse), {
4704
+ // Align option transformation with the actual renderer selected below.
4705
+ // This prevents canvas-only option preservation from leaking into Highcharts mode.
4706
+ isAcceleratedRenderOn
4707
+ }), eventCallbackProps), {
4598
4708
  themeFunc
4599
4709
  }));
4600
4710
  if (useAsyncEvaluatedOptions && Object.keys(evaluatedOptionsToUse).length === 0) {
@@ -4628,45 +4738,45 @@ var PresetPalettes_exports = {};
4628
4738
  __export(PresetPalettes_exports, {
4629
4739
  default: () => PresetPalettes_default
4630
4740
  });
4631
- var defaultImport36 = __toESM(require("@splunk/visualization-color-palettes/editors/PresetPalettes"));
4741
+ var defaultImport37 = __toESM(require("@splunk/visualization-color-palettes/editors/PresetPalettes"));
4632
4742
  __reExport(PresetPalettes_exports, require("@splunk/visualization-color-palettes/editors/PresetPalettes"));
4633
- var PresetPalettes_default = "default" in defaultImport36 ? defaultImport36.default : defaultImport36;
4743
+ var PresetPalettes_default = "default" in defaultImport37 ? defaultImport37.default : defaultImport37;
4634
4744
 
4635
4745
  // esm-externals:@splunk/visualization-themes/variables
4636
4746
  var variables_exports2 = {};
4637
4747
  __export(variables_exports2, {
4638
4748
  default: () => variables_default2
4639
4749
  });
4640
- var defaultImport37 = __toESM(require("@splunk/visualization-themes/variables"));
4750
+ var defaultImport38 = __toESM(require("@splunk/visualization-themes/variables"));
4641
4751
  __reExport(variables_exports2, require("@splunk/visualization-themes/variables"));
4642
- var variables_default2 = "default" in defaultImport37 ? defaultImport37.default : defaultImport37;
4752
+ var variables_default2 = "default" in defaultImport38 ? defaultImport38.default : defaultImport38;
4643
4753
 
4644
4754
  // esm-externals:@splunk/themes/pick
4645
4755
  var pick_exports2 = {};
4646
4756
  __export(pick_exports2, {
4647
4757
  default: () => pick_default2
4648
4758
  });
4649
- var defaultImport38 = __toESM(require("@splunk/themes/pick"));
4759
+ var defaultImport39 = __toESM(require("@splunk/themes/pick"));
4650
4760
  __reExport(pick_exports2, require("@splunk/themes/pick"));
4651
- var pick_default2 = "default" in defaultImport38 ? defaultImport38.default : defaultImport38;
4761
+ var pick_default2 = "default" in defaultImport39 ? defaultImport39.default : defaultImport39;
4652
4762
 
4653
4763
  // esm-externals:@splunk/visualization-icons
4654
4764
  var visualization_icons_exports = {};
4655
4765
  __export(visualization_icons_exports, {
4656
4766
  default: () => visualization_icons_default
4657
4767
  });
4658
- var defaultImport39 = __toESM(require("@splunk/visualization-icons"));
4768
+ var defaultImport40 = __toESM(require("@splunk/visualization-icons"));
4659
4769
  __reExport(visualization_icons_exports, require("@splunk/visualization-icons"));
4660
- var visualization_icons_default = "default" in defaultImport39 ? defaultImport39.default : defaultImport39;
4770
+ var visualization_icons_default = "default" in defaultImport40 ? defaultImport40.default : defaultImport40;
4661
4771
 
4662
4772
  // esm-externals:@splunk/visualization-icons/placeholders
4663
4773
  var placeholders_exports = {};
4664
4774
  __export(placeholders_exports, {
4665
4775
  default: () => placeholders_default
4666
4776
  });
4667
- var defaultImport40 = __toESM(require("@splunk/visualization-icons/placeholders"));
4777
+ var defaultImport41 = __toESM(require("@splunk/visualization-icons/placeholders"));
4668
4778
  __reExport(placeholders_exports, require("@splunk/visualization-icons/placeholders"));
4669
- var placeholders_default = "default" in defaultImport40 ? defaultImport40.default : defaultImport40;
4779
+ var placeholders_default = "default" in defaultImport41 ? defaultImport41.default : defaultImport41;
4670
4780
 
4671
4781
  // src/common/configContext/singleValueContext.ts
4672
4782
  var defaultContext = {
@@ -4698,9 +4808,9 @@ var configUtils_exports = {};
4698
4808
  __export(configUtils_exports, {
4699
4809
  default: () => configUtils_default
4700
4810
  });
4701
- var defaultImport41 = __toESM(require("@splunk/visualizations-shared/configUtils"));
4811
+ var defaultImport42 = __toESM(require("@splunk/visualizations-shared/configUtils"));
4702
4812
  __reExport(configUtils_exports, require("@splunk/visualizations-shared/configUtils"));
4703
- var configUtils_default = "default" in defaultImport41 ? defaultImport41.default : defaultImport41;
4813
+ var configUtils_default = "default" in defaultImport42 ? defaultImport42.default : defaultImport42;
4704
4814
 
4705
4815
  // src/common/editorConfig/DynamicMajorColorEditor.js
4706
4816
  var getDynamicMajorColorEditor = ({ defaultContext: defaultContext2, defaultPalettesConfig: defaultPalettesConfig2 }) => ({
@@ -4912,26 +5022,59 @@ var isTrellisEnabled = ({ options, featureFlags }) => {
4912
5022
  const { splitByLayout = visualization_schemas_exports.LAYOUT_TYPE.Off } = options;
4913
5023
  return isTrellisFeatureFlagOn({ featureFlags }) && splitByLayout === visualization_schemas_exports.LAYOUT_TYPE.Trellis;
4914
5024
  };
4915
- var TrellisEditorConfig = [
4916
- [
4917
- {
4918
- label: (0, i18n_exports._)("Trellis layout"),
4919
- option: "splitByLayout",
4920
- editor: "editor.toggle",
4921
- showEditor: isTrellisFeatureFlagOn
4922
- }
4923
- ],
4924
- [
4925
- {
4926
- label: (0, i18n_exports._)("Split by"),
4927
- option: "trellisSplitBy",
4928
- editor: "editor.trellisSplitBy",
4929
- editorProps: {
4930
- dataSourceKey: "primary"
4931
- },
4932
- showEditor: isTrellisEnabled
4933
- }
4934
- ],
5025
+ var sortByValuesBase = [
5026
+ { label: (0, i18n_exports._)("Result"), value: "result" },
5027
+ { label: (0, i18n_exports._)("Name"), value: "name" }
5028
+ ];
5029
+ var sortByValuesWithValue = [...sortByValuesBase, { label: (0, i18n_exports._)("Value"), value: "value" }];
5030
+ var sortByValuesWithValueAndTrend = [
5031
+ ...sortByValuesBase,
5032
+ { label: (0, i18n_exports._)("Value"), value: "value" },
5033
+ { label: (0, i18n_exports._)("Trend"), value: "trend" }
5034
+ ];
5035
+ var makeSortRow = (sortByValues) => [
5036
+ {
5037
+ label: (0, i18n_exports._)("Sort by"),
5038
+ option: "trellisSortBy",
5039
+ editor: "editor.select",
5040
+ editorProps: {
5041
+ values: sortByValues
5042
+ },
5043
+ showEditor: isTrellisEnabled
5044
+ },
5045
+ {
5046
+ label: (0, i18n_exports._)("Sort order"),
5047
+ option: "trellisSortOrder",
5048
+ editor: "editor.select",
5049
+ editorProps: {
5050
+ values: [
5051
+ { label: (0, i18n_exports._)("Ascending"), value: "ascending" },
5052
+ { label: (0, i18n_exports._)("Descending"), value: "descending" }
5053
+ ]
5054
+ },
5055
+ showEditor: isTrellisEnabled
5056
+ }
5057
+ ];
5058
+ var trellisLayoutRow = [
5059
+ {
5060
+ label: (0, i18n_exports._)("Trellis layout"),
5061
+ option: "splitByLayout",
5062
+ editor: "editor.toggle",
5063
+ showEditor: isTrellisFeatureFlagOn
5064
+ }
5065
+ ];
5066
+ var trellisSplitByRow = [
5067
+ {
5068
+ label: (0, i18n_exports._)("Split by"),
5069
+ option: "trellisSplitBy",
5070
+ editor: "editor.trellisSplitBy",
5071
+ editorProps: {
5072
+ dataSourceKey: "primary"
5073
+ },
5074
+ showEditor: isTrellisEnabled
5075
+ }
5076
+ ];
5077
+ var trellisLayoutRows = [
4935
5078
  [
4936
5079
  {
4937
5080
  label: (0, i18n_exports._)("Number of columns"),
@@ -4975,6 +5118,24 @@ var TrellisEditorConfig = [
4975
5118
  }
4976
5119
  ]
4977
5120
  ];
5121
+ var TrellisEditorConfig = [
5122
+ trellisLayoutRow,
5123
+ trellisSplitByRow,
5124
+ makeSortRow(sortByValuesBase),
5125
+ ...trellisLayoutRows
5126
+ ];
5127
+ var GaugeTrellisEditorConfig = [
5128
+ trellisLayoutRow,
5129
+ trellisSplitByRow,
5130
+ makeSortRow(sortByValuesWithValue),
5131
+ ...trellisLayoutRows
5132
+ ];
5133
+ var SingleValueTrellisEditorConfig = [
5134
+ trellisLayoutRow,
5135
+ trellisSplitByRow,
5136
+ makeSortRow(sortByValuesWithValueAndTrend),
5137
+ ...trellisLayoutRows
5138
+ ];
4978
5139
  var TimechartTrellisEditorConfig = [
4979
5140
  [
4980
5141
  {
@@ -4982,7 +5143,6 @@ var TimechartTrellisEditorConfig = [
4982
5143
  option: "splitByLayout",
4983
5144
  editor: "editor.toggle",
4984
5145
  showEditor: isTrellisFeatureFlagOn,
4985
- // add help text for timecharts
4986
5146
  editorProps: {
4987
5147
  help: (0, i18n_exports._)(
4988
5148
  "Y2-axis and overlay field configurations are not supported when trellis is enabled."
@@ -4991,7 +5151,9 @@ var TimechartTrellisEditorConfig = [
4991
5151
  }
4992
5152
  }
4993
5153
  ],
4994
- ...TrellisEditorConfig.slice(1),
5154
+ trellisSplitByRow,
5155
+ makeSortRow(sortByValuesBase),
5156
+ ...trellisLayoutRows,
4995
5157
  [
4996
5158
  {
4997
5159
  label: (0, i18n_exports._)("Shared y-axis scale"),
@@ -5284,7 +5446,7 @@ var editorConfig = [
5284
5446
  showEditor: ({ options }) => options.sparklineDisplay !== "off"
5285
5447
  }
5286
5448
  ],
5287
- ...TrellisEditorConfig
5449
+ ...SingleValueTrellisEditorConfig
5288
5450
  ]
5289
5451
  },
5290
5452
  {
@@ -5299,7 +5461,7 @@ var editorConfig = [
5299
5461
  presets,
5300
5462
  value: ({ context, options }) => {
5301
5463
  const initialPreset = getInitialPreset(context, options, presets);
5302
- return initialPreset && initialPreset.label || null;
5464
+ return (initialPreset == null ? void 0 : initialPreset.label) || null;
5303
5465
  }
5304
5466
  }
5305
5467
  }
@@ -5440,29 +5602,76 @@ var Paginator_exports = {};
5440
5602
  __export(Paginator_exports, {
5441
5603
  default: () => Paginator_default
5442
5604
  });
5443
- var defaultImport42 = __toESM(require("@splunk/react-ui/Paginator"));
5605
+ var defaultImport43 = __toESM(require("@splunk/react-ui/Paginator"));
5444
5606
  __reExport(Paginator_exports, require("@splunk/react-ui/Paginator"));
5445
- var Paginator_default = "default" in defaultImport42 ? defaultImport42.default : defaultImport42;
5607
+ var Paginator_default = "default" in defaultImport43 ? defaultImport43.default : defaultImport43;
5446
5608
 
5447
5609
  // esm-externals:@splunk/themes
5448
5610
  var themes_exports = {};
5449
5611
  __export(themes_exports, {
5450
5612
  default: () => themes_default
5451
5613
  });
5452
- var defaultImport43 = __toESM(require("@splunk/themes"));
5614
+ var defaultImport44 = __toESM(require("@splunk/themes"));
5453
5615
  __reExport(themes_exports, require("@splunk/themes"));
5454
- var themes_default = "default" in defaultImport43 ? defaultImport43.default : defaultImport43;
5616
+ var themes_default = "default" in defaultImport44 ? defaultImport44.default : defaultImport44;
5455
5617
 
5456
5618
  // esm-externals:@splunk/themes/useSplunkTheme
5457
5619
  var useSplunkTheme_exports = {};
5458
5620
  __export(useSplunkTheme_exports, {
5459
5621
  default: () => useSplunkTheme_default
5460
5622
  });
5461
- var defaultImport44 = __toESM(require("@splunk/themes/useSplunkTheme"));
5623
+ var defaultImport45 = __toESM(require("@splunk/themes/useSplunkTheme"));
5462
5624
  __reExport(useSplunkTheme_exports, require("@splunk/themes/useSplunkTheme"));
5463
- var useSplunkTheme_default = "default" in defaultImport44 ? defaultImport44.default : defaultImport44;
5625
+ var useSplunkTheme_default = "default" in defaultImport45 ? defaultImport45.default : defaultImport45;
5464
5626
 
5465
5627
  // src/common/hocs/withTrellis.tsx
5628
+ var evaluatePanelOption = (panelDataSources, allOptions, optionKey, vizContext) => {
5629
+ try {
5630
+ const evaluated = Options_exports.Options.evaluate({ context: vizContext, options: allOptions }, panelDataSources);
5631
+ const num = Number(evaluated == null ? void 0 : evaluated[optionKey]);
5632
+ return Number.isNaN(num) ? Number.NaN : num;
5633
+ } catch (e) {
5634
+ return Number.NaN;
5635
+ }
5636
+ };
5637
+ var sortTrellisKeys = (keys2, trellisSortBy, trellisSortOrder, modifiedDataSourceBySplitBy, mergedOptions, vizContext) => {
5638
+ if (trellisSortBy === "name") {
5639
+ keys2.sort((a, b) => {
5640
+ const cmp = a.localeCompare(b, void 0, { numeric: true, sensitivity: "base" });
5641
+ return trellisSortOrder === "descending" ? -cmp : cmp;
5642
+ });
5643
+ } else if (trellisSortBy === "value" || trellisSortBy === "trend") {
5644
+ let optionKey;
5645
+ if (trellisSortBy === "trend") {
5646
+ optionKey = "trendValue";
5647
+ } else {
5648
+ optionKey = mergedOptions.value !== void 0 ? "value" : "majorValue";
5649
+ }
5650
+ keys2.sort((a, b) => {
5651
+ const valA = evaluatePanelOption(
5652
+ modifiedDataSourceBySplitBy[a],
5653
+ mergedOptions,
5654
+ optionKey,
5655
+ vizContext
5656
+ );
5657
+ const valB = evaluatePanelOption(
5658
+ modifiedDataSourceBySplitBy[b],
5659
+ mergedOptions,
5660
+ optionKey,
5661
+ vizContext
5662
+ );
5663
+ const nanA = Number.isNaN(valA);
5664
+ const nanB = Number.isNaN(valB);
5665
+ if (nanA && nanB) return 0;
5666
+ if (nanA) return 1;
5667
+ if (nanB) return -1;
5668
+ const cmp = valA - valB;
5669
+ return trellisSortOrder === "descending" ? -cmp : cmp;
5670
+ });
5671
+ } else if (trellisSortOrder === "descending") {
5672
+ keys2.reverse();
5673
+ }
5674
+ };
5466
5675
  var TrellisContainer = styled_components_default.div`
5467
5676
  overflow: hidden;
5468
5677
  display: flex;
@@ -5507,6 +5716,14 @@ var showErrorMessage = (errorCode, width, height) => {
5507
5716
  }
5508
5717
  return /* @__PURE__ */ react_exports.createElement(Message_default, { width, height, message: (0, i18n_exports._)("Error render in trellis"), level: "info" });
5509
5718
  };
5719
+ var resolveTrellisSplitBy = (trellisSplitBy, fields) => {
5720
+ var _a;
5721
+ if (trellisSplitBy && trellisSplitBy.length > 0) {
5722
+ return trellisSplitBy;
5723
+ }
5724
+ const splitByPossibleFields = (0, trellisUtils_exports.getAllPossibleSplitByFields)(fields);
5725
+ return ((_a = splitByPossibleFields.fields) == null ? void 0 : _a.length) ? splitByPossibleFields.fields[0] : AGGREGATIONS;
5726
+ };
5510
5727
  var withTrellis = (Viz) => {
5511
5728
  const VizWithTrellis = (opts) => {
5512
5729
  const cachedHandleResize = react_exports.useCallback((w, h) => {
@@ -5515,7 +5732,7 @@ var withTrellis = (Viz) => {
5515
5732
  }, []);
5516
5733
  const [containerWidth, setContainerWidth] = react_exports.useState(Number(opts.width));
5517
5734
  const [containerHeight, setContainerHeight] = react_exports.useState(Number(opts.height));
5518
- const _a = opts, { options = {}, height, width } = _a, otherProps = __objRest(_a, ["options", "height", "width"]);
5735
+ const _a = opts, { options = {}, context = {}, height, width } = _a, otherProps = __objRest(_a, ["options", "context", "height", "width"]);
5519
5736
  const defaultOptions = (0, JSONSchemaUtils_exports.pickFieldFromJSONSchema)(Viz.config.optionsSchema, "default");
5520
5737
  const mergedOptions = (0, hocUtils_exports.deepMergeWithArrayPrimitiveOverrides)({}, options, defaultOptions);
5521
5738
  const {
@@ -5525,6 +5742,8 @@ var withTrellis = (Viz) => {
5525
5742
  trellisRowHeight,
5526
5743
  splitByLayout,
5527
5744
  trellisSplitBy,
5745
+ trellisSortBy,
5746
+ trellisSortOrder,
5528
5747
  trellisSharedScale,
5529
5748
  stackMode,
5530
5749
  yAxisMin,
@@ -5593,7 +5812,7 @@ var withTrellis = (Viz) => {
5593
5812
  }, [pageCount, trellisSplitBy]);
5594
5813
  (0, react_exports.useEffect)(() => {
5595
5814
  updateDataDisplay(pageNum);
5596
- }, [columns, fields, trellisSplitBy, pageNum, splitByLayout]);
5815
+ }, [columns, fields, trellisSplitBy, trellisSortBy, trellisSortOrder, pageNum, splitByLayout]);
5597
5816
  const handlePageChange = (0, react_exports.useCallback)(
5598
5817
  (event, { page }) => {
5599
5818
  setPageNum(page);
@@ -5601,9 +5820,7 @@ var withTrellis = (Viz) => {
5601
5820
  [pageNum, pagedData]
5602
5821
  );
5603
5822
  const featureFlagContext = react_exports.useContext(FeatureFlagContext_default);
5604
- const isTrellisFeatureFlagOn2 = Boolean(
5605
- featureFlagContext && featureFlagContext.visualizations_enableTrellis
5606
- );
5823
+ const isTrellisFeatureFlagOn2 = Boolean(featureFlagContext == null ? void 0 : featureFlagContext.visualizations_enableTrellis);
5607
5824
  if (!isTrellisFeatureFlagOn2 || !splitByLayout || splitByLayout !== visualization_schemas_exports.LAYOUT_TYPE.Trellis) {
5608
5825
  return /* @__PURE__ */ react_exports.createElement(Viz, __spreadValues({}, opts));
5609
5826
  }
@@ -5611,14 +5828,9 @@ var withTrellis = (Viz) => {
5611
5828
  if (noColumns || noFields) {
5612
5829
  return /* @__PURE__ */ react_exports.createElement(Message_default, { width, height, message: (0, i18n_exports._)("Loading"), level: "info" });
5613
5830
  }
5614
- let currTrellisSplitBy = trellisSplitBy;
5615
- if (!trellisSplitBy || trellisSplitBy.length === 0) {
5616
- const splitByPossibleFields = (0, trellisUtils_exports.getAllPossibleSplitByFields)(fields);
5617
- currTrellisSplitBy = splitByPossibleFields.fields && splitByPossibleFields.fields.length ? splitByPossibleFields.fields[0] : AGGREGATIONS;
5618
- }
5619
- const splitMode = (0, trellisUtils_exports.getTrellisDataSplitterMode)(fields);
5831
+ const currTrellisSplitBy = resolveTrellisSplitBy(trellisSplitBy, fields);
5620
5832
  const dataSplitResult = getTrellisDataSourcesBySplitMode(
5621
- splitMode,
5833
+ (0, trellisUtils_exports.getTrellisDataSplitterMode)(fields),
5622
5834
  dataSources,
5623
5835
  currTrellisSplitBy
5624
5836
  );
@@ -5627,12 +5839,19 @@ var withTrellis = (Viz) => {
5627
5839
  if (!modifiedDataSourceBySplitBy || Object.keys(modifiedDataSourceBySplitBy).length === 0 || dataSplitErrorCode) {
5628
5840
  return showErrorMessage(dataSplitErrorCode, width, height);
5629
5841
  }
5630
- const splitByKeysModified = modifiedDataSourceBySplitBy ? Object.keys(modifiedDataSourceBySplitBy) : [];
5631
- if (splitByKeysModified) {
5632
- showPaginator = splitByKeysModified.length > pageCount;
5633
- splitByKeys = splitByKeysModified;
5634
- totalPages = splitByKeysModified ? Math.ceil(splitByKeysModified.length / pageCount) : 0;
5635
- }
5842
+ const splitByKeysModified = Object.keys(modifiedDataSourceBySplitBy);
5843
+ const vizContext = (0, lodash_exports.defaultsDeep)({}, context, Viz.config.defaultContext);
5844
+ sortTrellisKeys(
5845
+ splitByKeysModified,
5846
+ trellisSortBy,
5847
+ trellisSortOrder,
5848
+ modifiedDataSourceBySplitBy,
5849
+ mergedOptions,
5850
+ vizContext
5851
+ );
5852
+ showPaginator = splitByKeysModified.length > pageCount;
5853
+ splitByKeys = splitByKeysModified;
5854
+ totalPages = Math.ceil(splitByKeysModified.length / pageCount);
5636
5855
  const [calculatedMin, calculatedMax] = determineMinMax(
5637
5856
  modifiedDataSourceBySplitBy,
5638
5857
  trellisSharedScale,
@@ -5666,6 +5885,7 @@ var withTrellis = (Viz) => {
5666
5885
  /* @__PURE__ */ react_exports.createElement(
5667
5886
  Viz,
5668
5887
  __spreadProps(__spreadValues({}, otherProps), {
5888
+ context,
5669
5889
  trellisKey: splitByKey,
5670
5890
  trellisSplitBy: currTrellisSplitBy,
5671
5891
  dataSources: modifiedDataSourceBySplitBy[splitByKey],