@splunk/visualizations 28.0.0 → 28.2.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 (582) hide show
  1. package/Area.config.js +27 -0
  2. package/Area.config.js.map +2 -2
  3. package/Area.js +722 -355
  4. package/Area.js.map +4 -4
  5. package/Bar.config.js +27 -0
  6. package/Bar.config.js.map +2 -2
  7. package/Bar.js +754 -387
  8. package/Bar.js.map +4 -4
  9. package/Bubble.config.js +27 -0
  10. package/Bubble.config.js.map +2 -2
  11. package/Bubble.js +684 -321
  12. package/Bubble.js.map +4 -4
  13. package/CHANGELOG.external.md +63 -2
  14. package/ChoroplethSvg.js +582 -202
  15. package/ChoroplethSvg.js.map +4 -4
  16. package/Column.config.js +27 -0
  17. package/Column.config.js.map +2 -2
  18. package/Column.js +769 -402
  19. package/Column.js.map +4 -4
  20. package/Ellipse.js +593 -214
  21. package/Ellipse.js.map +4 -4
  22. package/Events.js +592 -201
  23. package/Events.js.map +4 -4
  24. package/FEATUREFLAGS.md +1 -0
  25. package/FillerGauge.config.js +124 -3
  26. package/FillerGauge.config.js.map +3 -3
  27. package/FillerGauge.js +1371 -256
  28. package/FillerGauge.js.map +4 -4
  29. package/Image.js +590 -217
  30. package/Image.js.map +4 -4
  31. package/Line.config.js +28 -1
  32. package/Line.config.js.map +2 -2
  33. package/Line.js +737 -370
  34. package/Line.js.map +4 -4
  35. package/LinkGraph.js +1095 -692
  36. package/LinkGraph.js.map +4 -4
  37. package/Map.config.js +49 -3
  38. package/Map.config.js.map +2 -2
  39. package/Map.js +581 -145
  40. package/Map.js.map +4 -4
  41. package/Markdown.js +617 -230
  42. package/Markdown.js.map +4 -4
  43. package/MarkerGauge.js +544 -169
  44. package/MarkerGauge.js.map +4 -4
  45. package/ParallelCoordinates.js +565 -174
  46. package/ParallelCoordinates.js.map +4 -4
  47. package/Pie.js +651 -316
  48. package/Pie.js.map +4 -4
  49. package/Punchcard.js +589 -200
  50. package/Punchcard.js.map +4 -4
  51. package/Rectangle.js +604 -224
  52. package/Rectangle.js.map +4 -4
  53. package/Sankey.js +577 -201
  54. package/Sankey.js.map +4 -4
  55. package/Scatter.config.js +27 -0
  56. package/Scatter.config.js.map +2 -2
  57. package/Scatter.js +688 -326
  58. package/Scatter.js.map +4 -4
  59. package/SingleValue.js +543 -166
  60. package/SingleValue.js.map +4 -4
  61. package/SingleValueIcon.js +535 -160
  62. package/SingleValueIcon.js.map +4 -4
  63. package/SingleValueRadial.js +528 -153
  64. package/SingleValueRadial.js.map +4 -4
  65. package/TRELLIS.md +2 -2
  66. package/Table.config.js +109 -33
  67. package/Table.config.js.map +4 -4
  68. package/Table.js +986 -322
  69. package/Table.js.map +4 -4
  70. package/Timeline.js +626 -247
  71. package/Timeline.js.map +4 -4
  72. package/common/Charting.js +49 -111
  73. package/common/Charting.js.map +4 -4
  74. package/common/GaugeMajorTicks.js +6 -14
  75. package/common/GaugeMajorTicks.js.map +2 -2
  76. package/common/GaugeValueMarker.js +6 -14
  77. package/common/GaugeValueMarker.js.map +2 -2
  78. package/common/OptionsDoc.js +3 -2
  79. package/common/OptionsDoc.js.map +2 -2
  80. package/common/SplunkVisualization.js +1 -1
  81. package/common/SplunkVisualization.js.map +2 -2
  82. package/common/TimeSeriesChartWrapper.js +485 -0
  83. package/common/TimeSeriesChartWrapper.js.map +7 -0
  84. package/common/chartingUtils.js +252 -1
  85. package/common/chartingUtils.js.map +4 -4
  86. package/common/shapeUtils.js.map +1 -1
  87. package/common/utils/hocUtils.js +1 -1
  88. package/common/utils/hocUtils.js.map +2 -2
  89. package/common/utils/mapUtils.js.map +1 -1
  90. package/common/utils/tableUtils.js +60 -0
  91. package/common/utils/tableUtils.js.map +7 -0
  92. package/common/withDashboardViz.js +552 -161
  93. package/common/withDashboardViz.js.map +4 -4
  94. package/dist/types/Area/Area.d.ts +13 -0
  95. package/dist/types/Area/Area.d.ts.map +1 -0
  96. package/dist/types/Area/areaUtils.d.ts +15 -0
  97. package/dist/types/Area/areaUtils.d.ts.map +1 -0
  98. package/dist/types/Area/config.d.ts +4 -0
  99. package/dist/types/Area/config.d.ts.map +1 -0
  100. package/dist/types/Area/index.d.ts +3 -0
  101. package/dist/types/Area/index.d.ts.map +1 -0
  102. package/dist/types/Bar/Bar.d.ts +13 -0
  103. package/dist/types/Bar/Bar.d.ts.map +1 -0
  104. package/dist/types/Bar/barUtils.d.ts +30 -0
  105. package/dist/types/Bar/barUtils.d.ts.map +1 -0
  106. package/dist/types/Bar/config.d.ts +4 -0
  107. package/dist/types/Bar/config.d.ts.map +1 -0
  108. package/dist/types/Bar/index.d.ts +3 -0
  109. package/dist/types/Bar/index.d.ts.map +1 -0
  110. package/dist/types/Bubble/Bubble.d.ts +9 -0
  111. package/dist/types/Bubble/Bubble.d.ts.map +1 -0
  112. package/dist/types/Bubble/bubbleUtils.d.ts +47 -0
  113. package/dist/types/Bubble/bubbleUtils.d.ts.map +1 -0
  114. package/dist/types/Bubble/config.d.ts +4 -0
  115. package/dist/types/Bubble/config.d.ts.map +1 -0
  116. package/dist/types/Bubble/index.d.ts +3 -0
  117. package/dist/types/Bubble/index.d.ts.map +1 -0
  118. package/dist/types/ChoroplethSvg/ChoroplethSvg.d.ts +24 -0
  119. package/dist/types/ChoroplethSvg/ChoroplethSvg.d.ts.map +1 -0
  120. package/dist/types/ChoroplethSvg/ErrorMessage/ErrorMessage.d.ts +6 -0
  121. package/dist/types/ChoroplethSvg/ErrorMessage/ErrorMessage.d.ts.map +1 -0
  122. package/dist/types/ChoroplethSvg/PureChoroplethSvg/PureChoroplethSvg.d.ts +29 -0
  123. package/dist/types/ChoroplethSvg/PureChoroplethSvg/PureChoroplethSvg.d.ts.map +1 -0
  124. package/dist/types/ChoroplethSvg/PureChoroplethSvg/SvgChoroplethDynamic.d.ts +34 -0
  125. package/dist/types/ChoroplethSvg/PureChoroplethSvg/SvgChoroplethDynamic.d.ts.map +1 -0
  126. package/dist/types/ChoroplethSvg/PureChoroplethSvg/SvgMutator.d.ts +144 -0
  127. package/dist/types/ChoroplethSvg/PureChoroplethSvg/SvgMutator.d.ts.map +1 -0
  128. package/dist/types/ChoroplethSvg/config.d.ts +4 -0
  129. package/dist/types/ChoroplethSvg/config.d.ts.map +1 -0
  130. package/dist/types/ChoroplethSvg/index.d.ts +3 -0
  131. package/dist/types/ChoroplethSvg/index.d.ts.map +1 -0
  132. package/dist/types/Column/Column.d.ts +11 -0
  133. package/dist/types/Column/Column.d.ts.map +1 -0
  134. package/dist/types/Column/columnUtils.d.ts +82 -0
  135. package/dist/types/Column/columnUtils.d.ts.map +1 -0
  136. package/dist/types/Column/config.d.ts +4 -0
  137. package/dist/types/Column/config.d.ts.map +1 -0
  138. package/dist/types/Column/index.d.ts +3 -0
  139. package/dist/types/Column/index.d.ts.map +1 -0
  140. package/dist/types/Ellipse/Ellipse.d.ts +7 -0
  141. package/dist/types/Ellipse/Ellipse.d.ts.map +1 -0
  142. package/dist/types/Ellipse/config.d.ts +4 -0
  143. package/dist/types/Ellipse/config.d.ts.map +1 -0
  144. package/dist/types/Ellipse/index.d.ts +3 -0
  145. package/dist/types/Ellipse/index.d.ts.map +1 -0
  146. package/dist/types/Events/EventUtils.d.ts +137 -0
  147. package/dist/types/Events/EventUtils.d.ts.map +1 -0
  148. package/dist/types/Events/Events.d.ts +19 -0
  149. package/dist/types/Events/Events.d.ts.map +1 -0
  150. package/dist/types/Events/PureEvents/FieldSummaryTooltip.d.ts +50 -0
  151. package/dist/types/Events/PureEvents/FieldSummaryTooltip.d.ts.map +1 -0
  152. package/dist/types/Events/PureEvents/PureEvents.d.ts +34 -0
  153. package/dist/types/Events/PureEvents/PureEvents.d.ts.map +1 -0
  154. package/dist/types/Events/PureEvents/TimeControlsPopover.d.ts +33 -0
  155. package/dist/types/Events/PureEvents/TimeControlsPopover.d.ts.map +1 -0
  156. package/dist/types/Events/config.d.ts +4 -0
  157. package/dist/types/Events/config.d.ts.map +1 -0
  158. package/dist/types/Events/index.d.ts +3 -0
  159. package/dist/types/Events/index.d.ts.map +1 -0
  160. package/dist/types/FillerGauge/FillerGauge.d.ts +13 -0
  161. package/dist/types/FillerGauge/FillerGauge.d.ts.map +1 -0
  162. package/dist/types/FillerGauge/PureFillerGauge/FillerGauge.d.ts +32 -0
  163. package/dist/types/FillerGauge/PureFillerGauge/FillerGauge.d.ts.map +1 -0
  164. package/dist/types/FillerGauge/config.d.ts +4 -0
  165. package/dist/types/FillerGauge/config.d.ts.map +1 -0
  166. package/dist/types/FillerGauge/index.d.ts +3 -0
  167. package/dist/types/FillerGauge/index.d.ts.map +1 -0
  168. package/dist/types/Image/Image.d.ts +13 -0
  169. package/dist/types/Image/Image.d.ts.map +1 -0
  170. package/dist/types/Image/ImageApi.d.ts +15 -0
  171. package/dist/types/Image/ImageApi.d.ts.map +1 -0
  172. package/dist/types/Image/config.d.ts +4 -0
  173. package/dist/types/Image/config.d.ts.map +1 -0
  174. package/dist/types/Image/index.d.ts +3 -0
  175. package/dist/types/Image/index.d.ts.map +1 -0
  176. package/dist/types/Line/Line.d.ts +13 -0
  177. package/dist/types/Line/Line.d.ts.map +1 -0
  178. package/dist/types/Line/config.d.ts +4 -0
  179. package/dist/types/Line/config.d.ts.map +1 -0
  180. package/dist/types/Line/index.d.ts +3 -0
  181. package/dist/types/Line/index.d.ts.map +1 -0
  182. package/dist/types/Line/lineUtils.d.ts +22 -0
  183. package/dist/types/Line/lineUtils.d.ts.map +1 -0
  184. package/dist/types/Line/mockdata/LineData.d.ts +184 -0
  185. package/dist/types/Line/mockdata/LineData.d.ts.map +1 -0
  186. package/dist/types/LinkGraph/ESTestDataSources.d.ts +32 -0
  187. package/dist/types/LinkGraph/ESTestDataSources.d.ts.map +1 -0
  188. package/dist/types/LinkGraph/ESTestTemplate.d.ts +2 -0
  189. package/dist/types/LinkGraph/ESTestTemplate.d.ts.map +1 -0
  190. package/dist/types/LinkGraph/LinkGraph.d.ts +22 -0
  191. package/dist/types/LinkGraph/LinkGraph.d.ts.map +1 -0
  192. package/dist/types/LinkGraph/PureLinkGraph/PureLinkGraph.d.ts +89 -0
  193. package/dist/types/LinkGraph/PureLinkGraph/PureLinkGraph.d.ts.map +1 -0
  194. package/dist/types/LinkGraph/PureLinkGraph/PureLinkGraphUtils.d.ts +74 -0
  195. package/dist/types/LinkGraph/PureLinkGraph/PureLinkGraphUtils.d.ts.map +1 -0
  196. package/dist/types/LinkGraph/PureLinkGraph/components/Edges.d.ts +9 -0
  197. package/dist/types/LinkGraph/PureLinkGraph/components/Edges.d.ts.map +1 -0
  198. package/dist/types/LinkGraph/PureLinkGraph/components/Field.d.ts +14 -0
  199. package/dist/types/LinkGraph/PureLinkGraph/components/Field.d.ts.map +1 -0
  200. package/dist/types/LinkGraph/PureLinkGraph/components/FieldStyles.d.ts +5 -0
  201. package/dist/types/LinkGraph/PureLinkGraph/components/FieldStyles.d.ts.map +1 -0
  202. package/dist/types/LinkGraph/PureLinkGraph/components/Graph.d.ts +49 -0
  203. package/dist/types/LinkGraph/PureLinkGraph/components/Graph.d.ts.map +1 -0
  204. package/dist/types/LinkGraph/PureLinkGraph/components/GraphStyles.d.ts +11 -0
  205. package/dist/types/LinkGraph/PureLinkGraph/components/GraphStyles.d.ts.map +1 -0
  206. package/dist/types/LinkGraph/PureLinkGraph/components/Node.d.ts +24 -0
  207. package/dist/types/LinkGraph/PureLinkGraph/components/Node.d.ts.map +1 -0
  208. package/dist/types/LinkGraph/PureLinkGraph/components/Nodes.d.ts +16 -0
  209. package/dist/types/LinkGraph/PureLinkGraph/components/Nodes.d.ts.map +1 -0
  210. package/dist/types/LinkGraph/PureLinkGraph/utils/iconLoader.d.ts +168 -0
  211. package/dist/types/LinkGraph/PureLinkGraph/utils/iconLoader.d.ts.map +1 -0
  212. package/dist/types/LinkGraph/config.d.ts +4 -0
  213. package/dist/types/LinkGraph/config.d.ts.map +1 -0
  214. package/dist/types/LinkGraph/index.d.ts +3 -0
  215. package/dist/types/LinkGraph/index.d.ts.map +1 -0
  216. package/dist/types/Map/Map.d.ts +28 -0
  217. package/dist/types/Map/Map.d.ts.map +1 -0
  218. package/dist/types/Map/MapContextDefault.d.ts +39 -0
  219. package/dist/types/Map/MapContextDefault.d.ts.map +1 -0
  220. package/dist/types/Map/PureMap/BubbleLayer.d.ts +51 -0
  221. package/dist/types/Map/PureMap/BubbleLayer.d.ts.map +1 -0
  222. package/dist/types/Map/PureMap/ChoroplethLayer.d.ts +36 -0
  223. package/dist/types/Map/PureMap/ChoroplethLayer.d.ts.map +1 -0
  224. package/dist/types/Map/PureMap/ClusterLayer.d.ts +17 -0
  225. package/dist/types/Map/PureMap/ClusterLayer.d.ts.map +1 -0
  226. package/dist/types/Map/PureMap/LocalChoroplethLayer.d.ts +18 -0
  227. package/dist/types/Map/PureMap/LocalChoroplethLayer.d.ts.map +1 -0
  228. package/dist/types/Map/PureMap/MapUtils.d.ts +141 -0
  229. package/dist/types/Map/PureMap/MapUtils.d.ts.map +1 -0
  230. package/dist/types/Map/PureMap/MarkerLayer.d.ts +34 -0
  231. package/dist/types/Map/PureMap/MarkerLayer.d.ts.map +1 -0
  232. package/dist/types/Map/PureMap/MarkerWrapper.d.ts +17 -0
  233. package/dist/types/Map/PureMap/MarkerWrapper.d.ts.map +1 -0
  234. package/dist/types/Map/PureMap/PureMap.d.ts +102 -0
  235. package/dist/types/Map/PureMap/PureMap.d.ts.map +1 -0
  236. package/dist/types/Map/PureMap/PureMapContainer.d.ts +15 -0
  237. package/dist/types/Map/PureMap/PureMapContainer.d.ts.map +1 -0
  238. package/dist/types/Map/PureMap/Tooltip.d.ts +20 -0
  239. package/dist/types/Map/PureMap/Tooltip.d.ts.map +1 -0
  240. package/dist/types/Map/PureMap/mockdata/data.d.ts +90 -0
  241. package/dist/types/Map/PureMap/mockdata/data.d.ts.map +1 -0
  242. package/dist/types/Map/config.d.ts +4 -0
  243. package/dist/types/Map/config.d.ts.map +1 -0
  244. package/dist/types/Map/index.d.ts +3 -0
  245. package/dist/types/Map/index.d.ts.map +1 -0
  246. package/dist/types/Markdown/Markdown.d.ts +31 -0
  247. package/dist/types/Markdown/Markdown.d.ts.map +1 -0
  248. package/dist/types/Markdown/config.d.ts +4 -0
  249. package/dist/types/Markdown/config.d.ts.map +1 -0
  250. package/dist/types/Markdown/index.d.ts +3 -0
  251. package/dist/types/Markdown/index.d.ts.map +1 -0
  252. package/dist/types/MarkerGauge/MarkerGauge.d.ts +55 -0
  253. package/dist/types/MarkerGauge/MarkerGauge.d.ts.map +1 -0
  254. package/dist/types/MarkerGauge/PureMarkerGauge/MarkerGauge.d.ts +72 -0
  255. package/dist/types/MarkerGauge/PureMarkerGauge/MarkerGauge.d.ts.map +1 -0
  256. package/dist/types/MarkerGauge/config.d.ts +4 -0
  257. package/dist/types/MarkerGauge/config.d.ts.map +1 -0
  258. package/dist/types/MarkerGauge/index.d.ts +3 -0
  259. package/dist/types/MarkerGauge/index.d.ts.map +1 -0
  260. package/dist/types/ParallelCoordinates/ParallelCoordinates.d.ts +58 -0
  261. package/dist/types/ParallelCoordinates/ParallelCoordinates.d.ts.map +1 -0
  262. package/dist/types/ParallelCoordinates/PureParallelCoordinates/PureParallelCoordinates.d.ts +69 -0
  263. package/dist/types/ParallelCoordinates/PureParallelCoordinates/PureParallelCoordinates.d.ts.map +1 -0
  264. package/dist/types/ParallelCoordinates/PureParallelCoordinates/src/ParallelCoordinatesCanvas.d.ts +30 -0
  265. package/dist/types/ParallelCoordinates/PureParallelCoordinates/src/ParallelCoordinatesCanvas.d.ts.map +1 -0
  266. package/dist/types/ParallelCoordinates/PureParallelCoordinates/src/ParallelCoordinatesChart.d.ts +42 -0
  267. package/dist/types/ParallelCoordinates/PureParallelCoordinates/src/ParallelCoordinatesChart.d.ts.map +1 -0
  268. package/dist/types/ParallelCoordinates/PureParallelCoordinates/src/ParallelCoordinatesPrompt.d.ts +22 -0
  269. package/dist/types/ParallelCoordinates/PureParallelCoordinates/src/ParallelCoordinatesPrompt.d.ts.map +1 -0
  270. package/dist/types/ParallelCoordinates/config.d.ts +4 -0
  271. package/dist/types/ParallelCoordinates/config.d.ts.map +1 -0
  272. package/dist/types/ParallelCoordinates/index.d.ts +3 -0
  273. package/dist/types/ParallelCoordinates/index.d.ts.map +1 -0
  274. package/dist/types/ParallelCoordinates/mockdata/arrayValueData.d.ts +6 -0
  275. package/dist/types/ParallelCoordinates/mockdata/arrayValueData.d.ts.map +1 -0
  276. package/dist/types/ParallelCoordinates/mockdata/sampleCarData.d.ts +6 -0
  277. package/dist/types/ParallelCoordinates/mockdata/sampleCarData.d.ts.map +1 -0
  278. package/dist/types/ParallelCoordinates/mockdata/sampleCarNumericalData.d.ts +6 -0
  279. package/dist/types/ParallelCoordinates/mockdata/sampleCarNumericalData.d.ts.map +1 -0
  280. package/dist/types/ParallelCoordinates/mockdata/sampleFoodData.d.ts +6 -0
  281. package/dist/types/ParallelCoordinates/mockdata/sampleFoodData.d.ts.map +1 -0
  282. package/dist/types/ParallelCoordinates/mockdata/sampleStringNumericalData.d.ts +6 -0
  283. package/dist/types/ParallelCoordinates/mockdata/sampleStringNumericalData.d.ts.map +1 -0
  284. package/dist/types/Pie/Pie.d.ts +15 -0
  285. package/dist/types/Pie/Pie.d.ts.map +1 -0
  286. package/dist/types/Pie/config.d.ts +4 -0
  287. package/dist/types/Pie/config.d.ts.map +1 -0
  288. package/dist/types/Pie/index.d.ts +3 -0
  289. package/dist/types/Pie/index.d.ts.map +1 -0
  290. package/dist/types/Pie/pieUtils.d.ts +78 -0
  291. package/dist/types/Pie/pieUtils.d.ts.map +1 -0
  292. package/dist/types/Punchcard/Punchcard.d.ts +13 -0
  293. package/dist/types/Punchcard/Punchcard.d.ts.map +1 -0
  294. package/dist/types/Punchcard/PurePunchcard/Punchcard.d.ts +40 -0
  295. package/dist/types/Punchcard/PurePunchcard/Punchcard.d.ts.map +1 -0
  296. package/dist/types/Punchcard/PurePunchcard/src/PunchcardAxis.d.ts +20 -0
  297. package/dist/types/Punchcard/PurePunchcard/src/PunchcardAxis.d.ts.map +1 -0
  298. package/dist/types/Punchcard/PurePunchcard/src/PunchcardBubble.d.ts +27 -0
  299. package/dist/types/Punchcard/PurePunchcard/src/PunchcardBubble.d.ts.map +1 -0
  300. package/dist/types/Punchcard/PurePunchcard/src/PunchcardChartArea.d.ts +40 -0
  301. package/dist/types/Punchcard/PurePunchcard/src/PunchcardChartArea.d.ts.map +1 -0
  302. package/dist/types/Punchcard/PurePunchcard/src/PunchcardGridLines.d.ts +17 -0
  303. package/dist/types/Punchcard/PurePunchcard/src/PunchcardGridLines.d.ts.map +1 -0
  304. package/dist/types/Punchcard/PurePunchcard/src/PunchcardLegend.d.ts +21 -0
  305. package/dist/types/Punchcard/PurePunchcard/src/PunchcardLegend.d.ts.map +1 -0
  306. package/dist/types/Punchcard/PurePunchcard/src/PunchcardRow.d.ts +10 -0
  307. package/dist/types/Punchcard/PurePunchcard/src/PunchcardRow.d.ts.map +1 -0
  308. package/dist/types/Punchcard/PurePunchcard/src/utils/punchcardUtils.d.ts +285 -0
  309. package/dist/types/Punchcard/PurePunchcard/src/utils/punchcardUtils.d.ts.map +1 -0
  310. package/dist/types/Punchcard/config.d.ts +4 -0
  311. package/dist/types/Punchcard/config.d.ts.map +1 -0
  312. package/dist/types/Punchcard/index.d.ts +3 -0
  313. package/dist/types/Punchcard/index.d.ts.map +1 -0
  314. package/dist/types/Punchcard/punchcardUtils.d.ts +32 -0
  315. package/dist/types/Punchcard/punchcardUtils.d.ts.map +1 -0
  316. package/dist/types/Rectangle/Rectangle.d.ts +14 -0
  317. package/dist/types/Rectangle/Rectangle.d.ts.map +1 -0
  318. package/dist/types/Rectangle/config.d.ts +4 -0
  319. package/dist/types/Rectangle/config.d.ts.map +1 -0
  320. package/dist/types/Rectangle/index.d.ts +3 -0
  321. package/dist/types/Rectangle/index.d.ts.map +1 -0
  322. package/dist/types/Sankey/PureSankey/PureSankey.d.ts +98 -0
  323. package/dist/types/Sankey/PureSankey/PureSankey.d.ts.map +1 -0
  324. package/dist/types/Sankey/PureSankey/SankeyLink.d.ts +33 -0
  325. package/dist/types/Sankey/PureSankey/SankeyLink.d.ts.map +1 -0
  326. package/dist/types/Sankey/PureSankey/SankeyModels.d.ts +48 -0
  327. package/dist/types/Sankey/PureSankey/SankeyModels.d.ts.map +1 -0
  328. package/dist/types/Sankey/PureSankey/SankeyNode.d.ts +38 -0
  329. package/dist/types/Sankey/PureSankey/SankeyNode.d.ts.map +1 -0
  330. package/dist/types/Sankey/PureSankey/SankeyTooltip.d.ts +43 -0
  331. package/dist/types/Sankey/PureSankey/SankeyTooltip.d.ts.map +1 -0
  332. package/dist/types/Sankey/PureSankey/SankeyUtils.d.ts +20 -0
  333. package/dist/types/Sankey/PureSankey/SankeyUtils.d.ts.map +1 -0
  334. package/dist/types/Sankey/PureSankey/mockdata/data.d.ts +35 -0
  335. package/dist/types/Sankey/PureSankey/mockdata/data.d.ts.map +1 -0
  336. package/dist/types/Sankey/Sankey.d.ts +31 -0
  337. package/dist/types/Sankey/Sankey.d.ts.map +1 -0
  338. package/dist/types/Sankey/config.d.ts +4 -0
  339. package/dist/types/Sankey/config.d.ts.map +1 -0
  340. package/dist/types/Sankey/index.d.ts +3 -0
  341. package/dist/types/Sankey/index.d.ts.map +1 -0
  342. package/dist/types/Scatter/Scatter.d.ts +11 -0
  343. package/dist/types/Scatter/Scatter.d.ts.map +1 -0
  344. package/dist/types/Scatter/config.d.ts +4 -0
  345. package/dist/types/Scatter/config.d.ts.map +1 -0
  346. package/dist/types/Scatter/index.d.ts +3 -0
  347. package/dist/types/Scatter/index.d.ts.map +1 -0
  348. package/dist/types/Scatter/mockdata/data.d.ts +35 -0
  349. package/dist/types/Scatter/mockdata/data.d.ts.map +1 -0
  350. package/dist/types/Scatter/scatterUtils.d.ts +47 -0
  351. package/dist/types/Scatter/scatterUtils.d.ts.map +1 -0
  352. package/dist/types/SingleValue/SingleValue.d.ts +16 -0
  353. package/dist/types/SingleValue/SingleValue.d.ts.map +1 -0
  354. package/dist/types/SingleValue/config.d.ts +4 -0
  355. package/dist/types/SingleValue/config.d.ts.map +1 -0
  356. package/dist/types/SingleValue/index.d.ts +3 -0
  357. package/dist/types/SingleValue/index.d.ts.map +1 -0
  358. package/dist/types/SingleValueBasic/index.d.ts +3 -0
  359. package/dist/types/SingleValueBasic/index.d.ts.map +1 -0
  360. package/dist/types/SingleValueIcon/SingleValueIcon.d.ts +29 -0
  361. package/dist/types/SingleValueIcon/SingleValueIcon.d.ts.map +1 -0
  362. package/dist/types/SingleValueIcon/config.d.ts +4 -0
  363. package/dist/types/SingleValueIcon/config.d.ts.map +1 -0
  364. package/dist/types/SingleValueIcon/index.d.ts +3 -0
  365. package/dist/types/SingleValueIcon/index.d.ts.map +1 -0
  366. package/dist/types/SingleValueRadial/PureSingleValueRadial/GaugeGraph.d.ts +20 -0
  367. package/dist/types/SingleValueRadial/PureSingleValueRadial/GaugeGraph.d.ts.map +1 -0
  368. package/dist/types/SingleValueRadial/PureSingleValueRadial/utils/gaugeUtils.d.ts +82 -0
  369. package/dist/types/SingleValueRadial/PureSingleValueRadial/utils/gaugeUtils.d.ts.map +1 -0
  370. package/dist/types/SingleValueRadial/SingleValueRadial.d.ts +17 -0
  371. package/dist/types/SingleValueRadial/SingleValueRadial.d.ts.map +1 -0
  372. package/dist/types/SingleValueRadial/config.d.ts +4 -0
  373. package/dist/types/SingleValueRadial/config.d.ts.map +1 -0
  374. package/dist/types/SingleValueRadial/index.d.ts +3 -0
  375. package/dist/types/SingleValueRadial/index.d.ts.map +1 -0
  376. package/dist/types/SparkLine/index.d.ts +2 -0
  377. package/dist/types/SparkLine/index.d.ts.map +1 -0
  378. package/dist/types/Table/PureTable.d.ts +50 -0
  379. package/dist/types/Table/PureTable.d.ts.map +1 -0
  380. package/dist/types/Table/Table.d.ts +10 -0
  381. package/dist/types/Table/Table.d.ts.map +1 -0
  382. package/dist/types/Table/cells/ArrayCell.d.ts +12 -0
  383. package/dist/types/Table/cells/ArrayCell.d.ts.map +1 -0
  384. package/dist/types/Table/cells/SparklineCell.d.ts +13 -0
  385. package/dist/types/Table/cells/SparklineCell.d.ts.map +1 -0
  386. package/dist/types/Table/cells/SwitchTableCell.d.ts +5 -0
  387. package/dist/types/Table/cells/SwitchTableCell.d.ts.map +1 -0
  388. package/dist/types/Table/cells/TextCell.d.ts +12 -0
  389. package/dist/types/Table/cells/TextCell.d.ts.map +1 -0
  390. package/dist/types/Table/cells/index.d.ts +5 -0
  391. package/dist/types/Table/cells/index.d.ts.map +1 -0
  392. package/dist/types/Table/config.d.ts +4 -0
  393. package/dist/types/Table/config.d.ts.map +1 -0
  394. package/dist/types/Table/hooks.d.ts +130 -0
  395. package/dist/types/Table/hooks.d.ts.map +1 -0
  396. package/dist/types/Table/index.d.ts +3 -0
  397. package/dist/types/Table/index.d.ts.map +1 -0
  398. package/dist/types/Timeline/PureTimeline/PureTimeline.d.ts +81 -0
  399. package/dist/types/Timeline/PureTimeline/PureTimeline.d.ts.map +1 -0
  400. package/dist/types/Timeline/PureTimeline/src/CursorPlugin.d.ts +8 -0
  401. package/dist/types/Timeline/PureTimeline/src/CursorPlugin.d.ts.map +1 -0
  402. package/dist/types/Timeline/PureTimeline/src/TimelineLegend.d.ts +28 -0
  403. package/dist/types/Timeline/PureTimeline/src/TimelineLegend.d.ts.map +1 -0
  404. package/dist/types/Timeline/PureTimeline/src/TimelinePlugin.d.ts +16 -0
  405. package/dist/types/Timeline/PureTimeline/src/TimelinePlugin.d.ts.map +1 -0
  406. package/dist/types/Timeline/PureTimeline/src/TimelineTooltip.d.ts +11 -0
  407. package/dist/types/Timeline/PureTimeline/src/TimelineTooltip.d.ts.map +1 -0
  408. package/dist/types/Timeline/PureTimeline/src/TimelineUplot.d.ts +22 -0
  409. package/dist/types/Timeline/PureTimeline/src/TimelineUplot.d.ts.map +1 -0
  410. package/dist/types/Timeline/PureTimeline/src/TimelineYAxis.d.ts +20 -0
  411. package/dist/types/Timeline/PureTimeline/src/TimelineYAxis.d.ts.map +1 -0
  412. package/dist/types/Timeline/PureTimeline/src/XAxisPlugin.d.ts +18 -0
  413. package/dist/types/Timeline/PureTimeline/src/XAxisPlugin.d.ts.map +1 -0
  414. package/dist/types/Timeline/PureTimeline/src/utils/timelineUtils.d.ts +34 -0
  415. package/dist/types/Timeline/PureTimeline/src/utils/timelineUtils.d.ts.map +1 -0
  416. package/dist/types/Timeline/Timeline.d.ts +22 -0
  417. package/dist/types/Timeline/Timeline.d.ts.map +1 -0
  418. package/dist/types/Timeline/config.d.ts +4 -0
  419. package/dist/types/Timeline/config.d.ts.map +1 -0
  420. package/dist/types/Timeline/index.d.ts +3 -0
  421. package/dist/types/Timeline/index.d.ts.map +1 -0
  422. package/dist/types/Timeline/mockdata/basicTimelineData.d.ts +76 -0
  423. package/dist/types/Timeline/mockdata/basicTimelineData.d.ts.map +1 -0
  424. package/dist/types/Timeline/mockdata/categoricalTimelineData.d.ts +31 -0
  425. package/dist/types/Timeline/mockdata/categoricalTimelineData.d.ts.map +1 -0
  426. package/dist/types/Timeline/mockdata/timelineDataSource.d.ts +52 -0
  427. package/dist/types/Timeline/mockdata/timelineDataSource.d.ts.map +1 -0
  428. package/dist/types/common/Charting.d.ts +46 -0
  429. package/dist/types/common/Charting.d.ts.map +1 -0
  430. package/dist/types/common/ChartingApi.d.ts +36 -0
  431. package/dist/types/common/ChartingApi.d.ts.map +1 -0
  432. package/dist/types/common/DocExampleWithVizSandbox.d.ts +22 -0
  433. package/dist/types/common/DocExampleWithVizSandbox.d.ts.map +1 -0
  434. package/dist/types/common/OverviewDoc.d.ts +20 -0
  435. package/dist/types/common/OverviewDoc.d.ts.map +1 -0
  436. package/dist/types/common/SplunkVisualization.d.ts +16 -0
  437. package/dist/types/common/SplunkVisualization.d.ts.map +1 -0
  438. package/dist/types/common/SplunkVisualizationApi.d.ts +16 -0
  439. package/dist/types/common/SplunkVisualizationApi.d.ts.map +1 -0
  440. package/dist/types/common/ThemedDefaults.d.ts +2 -0
  441. package/dist/types/common/ThemedDefaults.d.ts.map +1 -0
  442. package/dist/types/common/TimeSeriesChartWrapper.d.ts +7 -0
  443. package/dist/types/common/TimeSeriesChartWrapper.d.ts.map +1 -0
  444. package/dist/types/common/chartingUtils.d.ts +164 -0
  445. package/dist/types/common/chartingUtils.d.ts.map +1 -0
  446. package/dist/types/common/components/IconPlaceholder.d.ts +21 -0
  447. package/dist/types/common/components/IconPlaceholder.d.ts.map +1 -0
  448. package/dist/types/common/components/MissingPropsMessage.d.ts +28 -0
  449. package/dist/types/common/components/MissingPropsMessage.d.ts.map +1 -0
  450. package/dist/types/common/components/TrellisTitle.d.ts +10 -0
  451. package/dist/types/common/components/TrellisTitle.d.ts.map +1 -0
  452. package/dist/types/common/configContext/singleValueContext.d.ts +3 -0
  453. package/dist/types/common/configContext/singleValueContext.d.ts.map +1 -0
  454. package/dist/types/common/docUtils.d.ts +24 -0
  455. package/dist/types/common/docUtils.d.ts.map +1 -0
  456. package/dist/types/common/editorConfig/AxesChartColorAndStyle.d.ts +5 -0
  457. package/dist/types/common/editorConfig/AxesChartColorAndStyle.d.ts.map +1 -0
  458. package/dist/types/common/editorConfig/AxesChartDataConfig.d.ts +31 -0
  459. package/dist/types/common/editorConfig/AxesChartDataConfig.d.ts.map +1 -0
  460. package/dist/types/common/editorConfig/AxesChartDataDisplay.d.ts +14 -0
  461. package/dist/types/common/editorConfig/AxesChartDataDisplay.d.ts.map +1 -0
  462. package/dist/types/common/editorConfig/AxesChartLegend.d.ts +8 -0
  463. package/dist/types/common/editorConfig/AxesChartLegend.d.ts.map +1 -0
  464. package/dist/types/common/editorConfig/AxesChartXGridAndLabels.d.ts +6 -0
  465. package/dist/types/common/editorConfig/AxesChartXGridAndLabels.d.ts.map +1 -0
  466. package/dist/types/common/editorConfig/AxesChartY2GridAndLabels.d.ts +11 -0
  467. package/dist/types/common/editorConfig/AxesChartY2GridAndLabels.d.ts.map +1 -0
  468. package/dist/types/common/editorConfig/AxesChartYGridAndLabels.d.ts +4 -0
  469. package/dist/types/common/editorConfig/AxesChartYGridAndLabels.d.ts.map +1 -0
  470. package/dist/types/common/editorConfig/BackgroundColor.d.ts +10 -0
  471. package/dist/types/common/editorConfig/BackgroundColor.d.ts.map +1 -0
  472. package/dist/types/common/editorConfig/DynamicFillColorEditor.d.ts +29 -0
  473. package/dist/types/common/editorConfig/DynamicFillColorEditor.d.ts.map +1 -0
  474. package/dist/types/common/editorConfig/DynamicGaugeColorEditor.d.ts +29 -0
  475. package/dist/types/common/editorConfig/DynamicGaugeColorEditor.d.ts.map +1 -0
  476. package/dist/types/common/editorConfig/DynamicStrokeColorEditor.d.ts +29 -0
  477. package/dist/types/common/editorConfig/DynamicStrokeColorEditor.d.ts.map +1 -0
  478. package/dist/types/common/editorConfig/Gauge.d.ts +4 -0
  479. package/dist/types/common/editorConfig/Gauge.d.ts.map +1 -0
  480. package/dist/types/common/editorConfig/Legend.d.ts +4 -0
  481. package/dist/types/common/editorConfig/Legend.d.ts.map +1 -0
  482. package/dist/types/common/editorConfig/RadialBackgroundColor.d.ts +10 -0
  483. package/dist/types/common/editorConfig/RadialBackgroundColor.d.ts.map +1 -0
  484. package/dist/types/common/editorConfig/StaticFillColorEditor.d.ts +10 -0
  485. package/dist/types/common/editorConfig/StaticFillColorEditor.d.ts.map +1 -0
  486. package/dist/types/common/editorConfig/StaticGaugeColorEditor.d.ts +10 -0
  487. package/dist/types/common/editorConfig/StaticGaugeColorEditor.d.ts.map +1 -0
  488. package/dist/types/common/editorConfig/StaticStrokeColorEditor.d.ts +10 -0
  489. package/dist/types/common/editorConfig/StaticStrokeColorEditor.d.ts.map +1 -0
  490. package/dist/types/common/editorConfig/TrellisEditors.d.ts +66 -0
  491. package/dist/types/common/editorConfig/TrellisEditors.d.ts.map +1 -0
  492. package/dist/types/common/gaugeUtils.d.ts +387 -0
  493. package/dist/types/common/gaugeUtils.d.ts.map +1 -0
  494. package/dist/types/common/hocs/FixedSizeContainer.d.ts +9 -0
  495. package/dist/types/common/hocs/FixedSizeContainer.d.ts.map +1 -0
  496. package/dist/types/common/hocs/mockdata/trellisData.d.ts +1288 -0
  497. package/dist/types/common/hocs/mockdata/trellisData.d.ts.map +1 -0
  498. package/dist/types/common/hocs/withEditModeCover.d.ts +10 -0
  499. package/dist/types/common/hocs/withEditModeCover.d.ts.map +1 -0
  500. package/dist/types/common/hocs/withPlaceholder.d.ts +8 -0
  501. package/dist/types/common/hocs/withPlaceholder.d.ts.map +1 -0
  502. package/dist/types/common/hocs/withTrellis.d.ts +18 -0
  503. package/dist/types/common/hocs/withTrellis.d.ts.map +1 -0
  504. package/dist/types/common/hooks/useDeepMemo.d.ts +15 -0
  505. package/dist/types/common/hooks/useDeepMemo.d.ts.map +1 -0
  506. package/dist/types/common/hooks/useDownsampleDataSources.d.ts +7 -0
  507. package/dist/types/common/hooks/useDownsampleDataSources.d.ts.map +1 -0
  508. package/dist/types/common/hooks/useEventCallback.d.ts +9 -0
  509. package/dist/types/common/hooks/useEventCallback.d.ts.map +1 -0
  510. package/dist/types/common/hooks/useGetXAndYFields.d.ts +10 -0
  511. package/dist/types/common/hooks/useGetXAndYFields.d.ts.map +1 -0
  512. package/dist/types/common/hooks/usePagination.d.ts +21 -0
  513. package/dist/types/common/hooks/usePagination.d.ts.map +1 -0
  514. package/dist/types/common/hooks/usePrevious.d.ts +2 -0
  515. package/dist/types/common/hooks/usePrevious.d.ts.map +1 -0
  516. package/dist/types/common/hooks/useSorting.d.ts +17 -0
  517. package/dist/types/common/hooks/useSorting.d.ts.map +1 -0
  518. package/dist/types/common/hooks/useTrellisEnabled.d.ts +4 -0
  519. package/dist/types/common/hooks/useTrellisEnabled.d.ts.map +1 -0
  520. package/dist/types/common/interfaces/ChartEvent.d.ts +26 -0
  521. package/dist/types/common/interfaces/ChartEvent.d.ts.map +1 -0
  522. package/dist/types/common/interfaces/DashboardVizProps.d.ts +27 -0
  523. package/dist/types/common/interfaces/DashboardVizProps.d.ts.map +1 -0
  524. package/dist/types/common/interfaces/DataContract.d.ts +19 -0
  525. package/dist/types/common/interfaces/DataContract.d.ts.map +1 -0
  526. package/dist/types/common/interfaces/DataSource.d.ts +45 -0
  527. package/dist/types/common/interfaces/DataSource.d.ts.map +1 -0
  528. package/dist/types/common/interfaces/DefaultContext.d.ts +30 -0
  529. package/dist/types/common/interfaces/DefaultContext.d.ts.map +1 -0
  530. package/dist/types/common/interfaces/Editor.d.ts +23 -0
  531. package/dist/types/common/interfaces/Editor.d.ts.map +1 -0
  532. package/dist/types/common/interfaces/ExtendedDashViz.d.ts +7 -0
  533. package/dist/types/common/interfaces/ExtendedDashViz.d.ts.map +1 -0
  534. package/dist/types/common/interfaces/Object.d.ts +4 -0
  535. package/dist/types/common/interfaces/Object.d.ts.map +1 -0
  536. package/dist/types/common/interfaces/Overview.d.ts +14 -0
  537. package/dist/types/common/interfaces/Overview.d.ts.map +1 -0
  538. package/dist/types/common/interfaces/ThemedDefaults.d.ts +5 -0
  539. package/dist/types/common/interfaces/ThemedDefaults.d.ts.map +1 -0
  540. package/dist/types/common/interfaces/VizActionHandler.d.ts +15 -0
  541. package/dist/types/common/interfaces/VizActionHandler.d.ts.map +1 -0
  542. package/dist/types/common/interfaces/VizBehavior.d.ts +25 -0
  543. package/dist/types/common/interfaces/VizBehavior.d.ts.map +1 -0
  544. package/dist/types/common/interfaces/VizCategory.d.ts +16 -0
  545. package/dist/types/common/interfaces/VizCategory.d.ts.map +1 -0
  546. package/dist/types/common/interfaces/VizConfig.d.ts +34 -0
  547. package/dist/types/common/interfaces/VizConfig.d.ts.map +1 -0
  548. package/dist/types/common/interfaces/VizEvent.d.ts +13 -0
  549. package/dist/types/common/interfaces/VizEvent.d.ts.map +1 -0
  550. package/dist/types/common/interfaces/VizProps.d.ts +8 -0
  551. package/dist/types/common/interfaces/VizProps.d.ts.map +1 -0
  552. package/dist/types/common/interfaces/VizRegistry.d.ts +7 -0
  553. package/dist/types/common/interfaces/VizRegistry.d.ts.map +1 -0
  554. package/dist/types/common/interfaces/VizSize.d.ts +8 -0
  555. package/dist/types/common/interfaces/VizSize.d.ts.map +1 -0
  556. package/dist/types/common/interfaces/VizStatus.d.ts +2 -0
  557. package/dist/types/common/interfaces/VizStatus.d.ts.map +1 -0
  558. package/dist/types/common/interfaces/index.d.ts +19 -0
  559. package/dist/types/common/interfaces/index.d.ts.map +1 -0
  560. package/dist/types/common/shapeUtils.d.ts +26 -0
  561. package/dist/types/common/shapeUtils.d.ts.map +1 -0
  562. package/dist/types/common/utils/configUtils.d.ts +59 -0
  563. package/dist/types/common/utils/configUtils.d.ts.map +1 -0
  564. package/dist/types/common/utils/dataUtils.d.ts +31 -0
  565. package/dist/types/common/utils/dataUtils.d.ts.map +1 -0
  566. package/dist/types/common/utils/featureFlagUtils.d.ts +3 -0
  567. package/dist/types/common/utils/featureFlagUtils.d.ts.map +1 -0
  568. package/dist/types/common/utils/hocUtils.d.ts +12 -0
  569. package/dist/types/common/utils/hocUtils.d.ts.map +1 -0
  570. package/dist/types/common/utils/mapUtils.d.ts +2 -0
  571. package/dist/types/common/utils/mapUtils.d.ts.map +1 -0
  572. package/dist/types/common/utils/styleUtils.d.ts +2 -0
  573. package/dist/types/common/utils/styleUtils.d.ts.map +1 -0
  574. package/dist/types/common/utils/tableUtils.d.ts +3 -0
  575. package/dist/types/common/utils/tableUtils.d.ts.map +1 -0
  576. package/dist/types/common/utils/trellisUtils.d.ts +60 -0
  577. package/dist/types/common/utils/trellisUtils.d.ts.map +1 -0
  578. package/dist/types/common/utils/urlUtils.d.ts +2 -0
  579. package/dist/types/common/utils/urlUtils.d.ts.map +1 -0
  580. package/dist/types/common/withDashboardViz.d.ts +22 -0
  581. package/dist/types/common/withDashboardViz.d.ts.map +1 -0
  582. package/package.json +37 -39
package/Table.js CHANGED
@@ -108,86 +108,95 @@ var defaultImport4 = __toESM(require("@splunk/visualization-schemas"));
108
108
  __reExport(visualization_schemas_exports, require("@splunk/visualization-schemas"));
109
109
  var visualization_schemas_default = "default" in defaultImport4 ? defaultImport4.default : defaultImport4;
110
110
 
111
+ // esm-externals:@splunk/visualization-color-palettes/editors/PresetPalettes
112
+ var PresetPalettes_exports = {};
113
+ __export(PresetPalettes_exports, {
114
+ default: () => PresetPalettes_default
115
+ });
116
+ var defaultImport5 = __toESM(require("@splunk/visualization-color-palettes/editors/PresetPalettes"));
117
+ __reExport(PresetPalettes_exports, require("@splunk/visualization-color-palettes/editors/PresetPalettes"));
118
+ var PresetPalettes_default = "default" in defaultImport5 ? defaultImport5.default : defaultImport5;
119
+
111
120
  // esm-externals:@splunk/visualizations-shared/colorConstants
112
121
  var colorConstants_exports = {};
113
122
  __export(colorConstants_exports, {
114
123
  default: () => colorConstants_default
115
124
  });
116
- var defaultImport5 = __toESM(require("@splunk/visualizations-shared/colorConstants"));
125
+ var defaultImport6 = __toESM(require("@splunk/visualizations-shared/colorConstants"));
117
126
  __reExport(colorConstants_exports, require("@splunk/visualizations-shared/colorConstants"));
118
- var colorConstants_default = "default" in defaultImport5 ? defaultImport5.default : defaultImport5;
127
+ var colorConstants_default = "default" in defaultImport6 ? defaultImport6.default : defaultImport6;
119
128
 
120
129
  // esm-externals:@splunk/visualization-icons
121
130
  var visualization_icons_exports = {};
122
131
  __export(visualization_icons_exports, {
123
132
  default: () => visualization_icons_default
124
133
  });
125
- var defaultImport6 = __toESM(require("@splunk/visualization-icons"));
134
+ var defaultImport7 = __toESM(require("@splunk/visualization-icons"));
126
135
  __reExport(visualization_icons_exports, require("@splunk/visualization-icons"));
127
- var visualization_icons_default = "default" in defaultImport6 ? defaultImport6.default : defaultImport6;
136
+ var visualization_icons_default = "default" in defaultImport7 ? defaultImport7.default : defaultImport7;
128
137
 
129
138
  // esm-externals:@splunk/visualization-icons/placeholders
130
139
  var placeholders_exports = {};
131
140
  __export(placeholders_exports, {
132
141
  default: () => placeholders_default
133
142
  });
134
- var defaultImport7 = __toESM(require("@splunk/visualization-icons/placeholders"));
143
+ var defaultImport8 = __toESM(require("@splunk/visualization-icons/placeholders"));
135
144
  __reExport(placeholders_exports, require("@splunk/visualization-icons/placeholders"));
136
- var placeholders_default = "default" in defaultImport7 ? defaultImport7.default : defaultImport7;
145
+ var placeholders_default = "default" in defaultImport8 ? defaultImport8.default : defaultImport8;
137
146
 
138
147
  // esm-externals:@splunk/themes/variables
139
148
  var variables_exports = {};
140
149
  __export(variables_exports, {
141
150
  default: () => variables_default
142
151
  });
143
- var defaultImport8 = __toESM(require("@splunk/themes/variables"));
152
+ var defaultImport9 = __toESM(require("@splunk/themes/variables"));
144
153
  __reExport(variables_exports, require("@splunk/themes/variables"));
145
- var variables_default = "default" in defaultImport8 ? defaultImport8.default : defaultImport8;
154
+ var variables_default = "default" in defaultImport9 ? defaultImport9.default : defaultImport9;
146
155
 
147
156
  // esm-externals:@splunk/themes/pick
148
157
  var pick_exports = {};
149
158
  __export(pick_exports, {
150
159
  default: () => pick_default
151
160
  });
152
- var defaultImport9 = __toESM(require("@splunk/themes/pick"));
161
+ var defaultImport10 = __toESM(require("@splunk/themes/pick"));
153
162
  __reExport(pick_exports, require("@splunk/themes/pick"));
154
- var pick_default = "default" in defaultImport9 ? defaultImport9.default : defaultImport9;
163
+ var pick_default = "default" in defaultImport10 ? defaultImport10.default : defaultImport10;
155
164
 
156
165
  // esm-externals:@splunk/react-icons/TextAlignCenter
157
166
  var TextAlignCenter_exports = {};
158
167
  __export(TextAlignCenter_exports, {
159
168
  default: () => TextAlignCenter_default
160
169
  });
161
- var defaultImport10 = __toESM(require("@splunk/react-icons/TextAlignCenter"));
170
+ var defaultImport11 = __toESM(require("@splunk/react-icons/TextAlignCenter"));
162
171
  __reExport(TextAlignCenter_exports, require("@splunk/react-icons/TextAlignCenter"));
163
- var TextAlignCenter_default = "default" in defaultImport10 ? defaultImport10.default : defaultImport10;
172
+ var TextAlignCenter_default = "default" in defaultImport11 ? defaultImport11.default : defaultImport11;
164
173
 
165
174
  // esm-externals:@splunk/react-icons/TextAlignLeft
166
175
  var TextAlignLeft_exports = {};
167
176
  __export(TextAlignLeft_exports, {
168
177
  default: () => TextAlignLeft_default
169
178
  });
170
- var defaultImport11 = __toESM(require("@splunk/react-icons/TextAlignLeft"));
179
+ var defaultImport12 = __toESM(require("@splunk/react-icons/TextAlignLeft"));
171
180
  __reExport(TextAlignLeft_exports, require("@splunk/react-icons/TextAlignLeft"));
172
- var TextAlignLeft_default = "default" in defaultImport11 ? defaultImport11.default : defaultImport11;
181
+ var TextAlignLeft_default = "default" in defaultImport12 ? defaultImport12.default : defaultImport12;
173
182
 
174
183
  // esm-externals:@splunk/react-icons/TextAlignRight
175
184
  var TextAlignRight_exports = {};
176
185
  __export(TextAlignRight_exports, {
177
186
  default: () => TextAlignRight_default
178
187
  });
179
- var defaultImport12 = __toESM(require("@splunk/react-icons/TextAlignRight"));
188
+ var defaultImport13 = __toESM(require("@splunk/react-icons/TextAlignRight"));
180
189
  __reExport(TextAlignRight_exports, require("@splunk/react-icons/TextAlignRight"));
181
- var TextAlignRight_default = "default" in defaultImport12 ? defaultImport12.default : defaultImport12;
190
+ var TextAlignRight_default = "default" in defaultImport13 ? defaultImport13.default : defaultImport13;
182
191
 
183
192
  // esm-externals:@splunk/visualizations-shared/configUtils
184
193
  var configUtils_exports = {};
185
194
  __export(configUtils_exports, {
186
195
  default: () => configUtils_default
187
196
  });
188
- var defaultImport13 = __toESM(require("@splunk/visualizations-shared/configUtils"));
197
+ var defaultImport14 = __toESM(require("@splunk/visualizations-shared/configUtils"));
189
198
  __reExport(configUtils_exports, require("@splunk/visualizations-shared/configUtils"));
190
- var configUtils_default = "default" in defaultImport13 ? defaultImport13.default : defaultImport13;
199
+ var configUtils_default = "default" in defaultImport14 ? defaultImport14.default : defaultImport14;
191
200
 
192
201
  // src/common/utils/configUtils.ts
193
202
  function enhanceConfig(vizConfig) {
@@ -229,7 +238,8 @@ var dataContract = {
229
238
  primary: (options = {}) => ({
230
239
  offset: 0,
231
240
  count: options.count ? options.count : 10,
232
- requestTotalCount: true
241
+ requestTotalCount: true,
242
+ add_summary_to_metadata: true
233
243
  })
234
244
  }
235
245
  };
@@ -238,6 +248,16 @@ var size = {
238
248
  initialHeight: 300
239
249
  };
240
250
  var defaultContext = {
251
+ // color context configs
252
+ colorRangeConfig: [
253
+ { to: 20, value: "#D41F1F" },
254
+ { from: 20, to: 40, value: "#D94E17" },
255
+ { from: 40, to: 60, value: "#CBA700" },
256
+ { from: 60, to: 80, value: "#669922" },
257
+ { from: 80, value: "#118832" }
258
+ ],
259
+ colorMatchConfig: [{ match: "", value: "#5C33FF" }],
260
+ colorGradientConfig: { colors: ["#252214", "#B846BB"] },
241
261
  tableAlignByType: [
242
262
  { match: "string", value: "left" },
243
263
  { match: "number", value: "right" },
@@ -367,14 +387,6 @@ var timeFormattingConfig = {
367
387
  tooltip: (0, i18n_exports._)("For example: DD-MM-YYYY")
368
388
  }
369
389
  };
370
- var sequentialColorConfig = [
371
- { to: 20, value: "#D41F1F" },
372
- { from: 20, to: 40, value: "#D94E17" },
373
- { from: 40, to: 60, value: "#CBA700" },
374
- { from: 60, to: 80, value: "#669922" },
375
- { from: 80, value: "#118832" }
376
- ];
377
- var matchColorConfig = [{ match: "", value: "#5C33FF" }];
378
390
  var themes = {
379
391
  defaultBackgroundColor,
380
392
  defaultHeaderBackgroundColor: (props) => pick_default({
@@ -463,6 +475,26 @@ var editorConfig = [
463
475
  labelWidth: EDITOR_LABEL_WIDTH
464
476
  }
465
477
  }
478
+ ],
479
+ [
480
+ {
481
+ label: (0, i18n_exports._)("Footer totals row"),
482
+ option: "showFooterTotals",
483
+ editor: "editor.checkbox",
484
+ editorProps: {
485
+ labelWidth: EDITOR_LABEL_WIDTH
486
+ }
487
+ }
488
+ ],
489
+ [
490
+ {
491
+ label: (0, i18n_exports._)("Footer percentages row"),
492
+ option: "showFooterPercentages",
493
+ editor: "editor.checkbox",
494
+ editorProps: {
495
+ labelWidth: EDITOR_LABEL_WIDTH
496
+ }
497
+ }
466
498
  ]
467
499
  ]
468
500
  },
@@ -534,6 +566,50 @@ var editorConfig = [
534
566
  [
535
567
  __spreadValues({}, textAlignConfigTable)
536
568
  ],
569
+ [
570
+ {
571
+ key: "tableDynamicColor",
572
+ editor: "editor.tableDynamicColor",
573
+ context: "colorGradientConfig",
574
+ option: "tableFormat",
575
+ label: (0, i18n_exports._)("Data colors"),
576
+ filterKeywords: ["range", "match", "gradient", "dynamic coloring"],
577
+ editorProps: {
578
+ labelPosition: "top",
579
+ formatters: [
580
+ {
581
+ label: (0, i18n_exports._)("Gradient"),
582
+ value: "gradient",
583
+ isDefault: true,
584
+ defaults: {
585
+ table: defaultContext.colorGradientConfig
586
+ }
587
+ },
588
+ {
589
+ label: (0, i18n_exports._)("Ranges"),
590
+ value: "rangeValue",
591
+ defaults: {
592
+ table: defaultContext.colorRangeConfig
593
+ }
594
+ },
595
+ {
596
+ label: (0, i18n_exports._)("Matches"),
597
+ value: "matchValue",
598
+ defaults: {
599
+ table: defaultContext.colorMatchConfig
600
+ }
601
+ }
602
+ ],
603
+ dataSelectors: [
604
+ {
605
+ label: (0, i18n_exports._)("Table"),
606
+ value: "table"
607
+ }
608
+ ],
609
+ defaultPalettesConfig: PresetPalettes_exports.defaultPalettesConfig
610
+ }
611
+ }
612
+ ],
537
613
  [
538
614
  {
539
615
  label: (0, i18n_exports._)("Column-specific formatting"),
@@ -558,16 +634,16 @@ var editorConfig = [
558
634
  label: (0, i18n_exports._)("Ranges"),
559
635
  value: "rangeValue",
560
636
  defaults: {
561
- rowBackgroundColors: sequentialColorConfig,
562
- rowColors: sequentialColorConfig
637
+ rowBackgroundColors: defaultContext.colorRangeConfig,
638
+ rowColors: defaultContext.colorRangeConfig
563
639
  }
564
640
  },
565
641
  {
566
642
  label: (0, i18n_exports._)("Matches"),
567
643
  value: "matchValue",
568
644
  defaults: {
569
- rowBackgroundColors: matchColorConfig,
570
- rowColors: matchColorConfig
645
+ rowBackgroundColors: defaultContext.colorMatchConfig,
646
+ rowColors: defaultContext.colorMatchConfig
571
647
  }
572
648
  }
573
649
  ],
@@ -692,122 +768,154 @@ var config = {
692
768
  };
693
769
  var config_default = enhanceConfig(config);
694
770
 
771
+ // src/common/utils/tableUtils.ts
772
+ var buildTotalsByFieldFromFieldsMeta = (fieldsMeta) => {
773
+ const totalsByField = {};
774
+ const fields = Array.isArray(fieldsMeta) ? fieldsMeta : [];
775
+ fields.forEach((f) => {
776
+ var _a;
777
+ if (f && typeof f === "object" && Object.prototype.hasOwnProperty.call(f, "summary.sum")) {
778
+ const name = (_a = f.name) != null ? _a : "";
779
+ if (name) {
780
+ const raw = f["summary.sum"];
781
+ const isEmptyString = typeof raw === "string" && raw.trim() === "";
782
+ if (raw !== null && raw !== void 0 && !isEmptyString) {
783
+ const n = Number(raw);
784
+ if (Number.isFinite(n)) totalsByField[name] = n;
785
+ }
786
+ }
787
+ }
788
+ });
789
+ return totalsByField;
790
+ };
791
+ var buildPercentagesByFieldFromTotals = (totalsByField) => {
792
+ const entries = Object.entries(totalsByField).filter(([, v]) => Number.isFinite(v));
793
+ const grandTotal = entries.reduce((acc, [, v]) => acc + Number(v), 0);
794
+ if (grandTotal <= 0) return {};
795
+ const percentages = {};
796
+ entries.forEach(([k, v]) => {
797
+ const pct = (Number(v) / grandTotal * 100).toFixed(2);
798
+ percentages[k] = `${pct}%`;
799
+ });
800
+ return percentages;
801
+ };
802
+
695
803
  // esm-externals:react
696
804
  var react_exports = {};
697
805
  __export(react_exports, {
698
806
  default: () => react_default
699
807
  });
700
- var defaultImport14 = __toESM(require("react"));
808
+ var defaultImport15 = __toESM(require("react"));
701
809
  __reExport(react_exports, require("react"));
702
- var react_default = "default" in defaultImport14 ? defaultImport14.default : defaultImport14;
810
+ var react_default = "default" in defaultImport15 ? defaultImport15.default : defaultImport15;
703
811
 
704
812
  // esm-externals:@splunk/themes/getSettingsFromThemedProps
705
813
  var getSettingsFromThemedProps_exports = {};
706
814
  __export(getSettingsFromThemedProps_exports, {
707
815
  default: () => getSettingsFromThemedProps_default
708
816
  });
709
- var defaultImport15 = __toESM(require("@splunk/themes/getSettingsFromThemedProps"));
817
+ var defaultImport16 = __toESM(require("@splunk/themes/getSettingsFromThemedProps"));
710
818
  __reExport(getSettingsFromThemedProps_exports, require("@splunk/themes/getSettingsFromThemedProps"));
711
- var getSettingsFromThemedProps_default = "default" in defaultImport15 ? defaultImport15.default : defaultImport15;
819
+ var getSettingsFromThemedProps_default = "default" in defaultImport16 ? defaultImport16.default : defaultImport16;
712
820
 
713
821
  // esm-externals:@splunk/visualization-encoding/Options
714
822
  var Options_exports = {};
715
823
  __export(Options_exports, {
716
824
  default: () => Options_default
717
825
  });
718
- var defaultImport16 = __toESM(require("@splunk/visualization-encoding/Options"));
826
+ var defaultImport17 = __toESM(require("@splunk/visualization-encoding/Options"));
719
827
  __reExport(Options_exports, require("@splunk/visualization-encoding/Options"));
720
- var Options_default = "default" in defaultImport16 ? defaultImport16.default : defaultImport16;
828
+ var Options_default = "default" in defaultImport17 ? defaultImport17.default : defaultImport17;
721
829
 
722
830
  // esm-externals:@splunk/visualizations-shared/SanitizeProps
723
831
  var SanitizeProps_exports = {};
724
832
  __export(SanitizeProps_exports, {
725
833
  default: () => SanitizeProps_default
726
834
  });
727
- var defaultImport17 = __toESM(require("@splunk/visualizations-shared/SanitizeProps"));
835
+ var defaultImport18 = __toESM(require("@splunk/visualizations-shared/SanitizeProps"));
728
836
  __reExport(SanitizeProps_exports, require("@splunk/visualizations-shared/SanitizeProps"));
729
- var SanitizeProps_default = "default" in defaultImport17 ? defaultImport17.default : defaultImport17;
837
+ var SanitizeProps_default = "default" in defaultImport18 ? defaultImport18.default : defaultImport18;
730
838
 
731
839
  // esm-externals:@splunk/visualization-context/TimezoneContext
732
840
  var TimezoneContext_exports = {};
733
841
  __export(TimezoneContext_exports, {
734
842
  default: () => TimezoneContext_default
735
843
  });
736
- var defaultImport18 = __toESM(require("@splunk/visualization-context/TimezoneContext"));
844
+ var defaultImport19 = __toESM(require("@splunk/visualization-context/TimezoneContext"));
737
845
  __reExport(TimezoneContext_exports, require("@splunk/visualization-context/TimezoneContext"));
738
- var TimezoneContext_default = "default" in defaultImport18 ? defaultImport18.default : defaultImport18;
846
+ var TimezoneContext_default = "default" in defaultImport19 ? defaultImport19.default : defaultImport19;
739
847
 
740
848
  // esm-externals:@splunk/moment
741
849
  var moment_exports = {};
742
850
  __export(moment_exports, {
743
851
  default: () => moment_default
744
852
  });
745
- var defaultImport19 = __toESM(require("@splunk/moment"));
853
+ var defaultImport20 = __toESM(require("@splunk/moment"));
746
854
  __reExport(moment_exports, require("@splunk/moment"));
747
- var moment_default = "default" in defaultImport19 ? defaultImport19.default : defaultImport19;
855
+ var moment_default = "default" in defaultImport20 ? defaultImport20.default : defaultImport20;
748
856
 
749
857
  // esm-externals:@splunk/visualization-context/FeatureFlagContext
750
858
  var FeatureFlagContext_exports = {};
751
859
  __export(FeatureFlagContext_exports, {
752
860
  default: () => FeatureFlagContext_default
753
861
  });
754
- var defaultImport20 = __toESM(require("@splunk/visualization-context/FeatureFlagContext"));
862
+ var defaultImport21 = __toESM(require("@splunk/visualization-context/FeatureFlagContext"));
755
863
  __reExport(FeatureFlagContext_exports, require("@splunk/visualization-context/FeatureFlagContext"));
756
- var FeatureFlagContext_default = "default" in defaultImport20 ? defaultImport20.default : defaultImport20;
864
+ var FeatureFlagContext_default = "default" in defaultImport21 ? defaultImport21.default : defaultImport21;
757
865
 
758
866
  // esm-externals:styled-components
759
867
  var styled_components_exports = {};
760
868
  __export(styled_components_exports, {
761
869
  default: () => styled_components_default
762
870
  });
763
- var defaultImport21 = __toESM(require("styled-components"));
871
+ var defaultImport22 = __toESM(require("styled-components"));
764
872
  __reExport(styled_components_exports, require("styled-components"));
765
- var styled_components_default = "default" in defaultImport21 ? defaultImport21.default : defaultImport21;
873
+ var styled_components_default = "default" in defaultImport22 ? defaultImport22.default : defaultImport22;
766
874
 
767
875
  // esm-externals:@splunk/visualizations-shared/hocUtils
768
876
  var hocUtils_exports = {};
769
877
  __export(hocUtils_exports, {
770
878
  default: () => hocUtils_default
771
879
  });
772
- var defaultImport22 = __toESM(require("@splunk/visualizations-shared/hocUtils"));
880
+ var defaultImport23 = __toESM(require("@splunk/visualizations-shared/hocUtils"));
773
881
  __reExport(hocUtils_exports, require("@splunk/visualizations-shared/hocUtils"));
774
- var hocUtils_default = "default" in defaultImport22 ? defaultImport22.default : defaultImport22;
882
+ var hocUtils_default = "default" in defaultImport23 ? defaultImport23.default : defaultImport23;
775
883
 
776
884
  // esm-externals:@splunk/visualizations-shared/JSONSchemaUtils
777
885
  var JSONSchemaUtils_exports = {};
778
886
  __export(JSONSchemaUtils_exports, {
779
887
  default: () => JSONSchemaUtils_default
780
888
  });
781
- var defaultImport23 = __toESM(require("@splunk/visualizations-shared/JSONSchemaUtils"));
889
+ var defaultImport24 = __toESM(require("@splunk/visualizations-shared/JSONSchemaUtils"));
782
890
  __reExport(JSONSchemaUtils_exports, require("@splunk/visualizations-shared/JSONSchemaUtils"));
783
- var JSONSchemaUtils_default = "default" in defaultImport23 ? defaultImport23.default : defaultImport23;
891
+ var JSONSchemaUtils_default = "default" in defaultImport24 ? defaultImport24.default : defaultImport24;
784
892
 
785
893
  // esm-externals:@splunk/async-dynamic-options-evaluator
786
894
  var async_dynamic_options_evaluator_exports = {};
787
895
  __export(async_dynamic_options_evaluator_exports, {
788
896
  default: () => async_dynamic_options_evaluator_default
789
897
  });
790
- var defaultImport24 = __toESM(require("@splunk/async-dynamic-options-evaluator"));
898
+ var defaultImport25 = __toESM(require("@splunk/async-dynamic-options-evaluator"));
791
899
  __reExport(async_dynamic_options_evaluator_exports, require("@splunk/async-dynamic-options-evaluator"));
792
- var async_dynamic_options_evaluator_default = "default" in defaultImport24 ? defaultImport24.default : defaultImport24;
900
+ var async_dynamic_options_evaluator_default = "default" in defaultImport25 ? defaultImport25.default : defaultImport25;
793
901
 
794
902
  // esm-externals:@splunk/ui-utils/id
795
903
  var id_exports = {};
796
904
  __export(id_exports, {
797
905
  default: () => id_default
798
906
  });
799
- var defaultImport25 = __toESM(require("@splunk/ui-utils/id"));
907
+ var defaultImport26 = __toESM(require("@splunk/ui-utils/id"));
800
908
  __reExport(id_exports, require("@splunk/ui-utils/id"));
801
- var id_default = "default" in defaultImport25 ? defaultImport25.default : defaultImport25;
909
+ var id_default = "default" in defaultImport26 ? defaultImport26.default : defaultImport26;
802
910
 
803
911
  // esm-externals:prop-types
804
912
  var prop_types_exports = {};
805
913
  __export(prop_types_exports, {
806
914
  default: () => prop_types_default
807
915
  });
808
- var defaultImport26 = __toESM(require("prop-types"));
916
+ var defaultImport27 = __toESM(require("prop-types"));
809
917
  __reExport(prop_types_exports, require("prop-types"));
810
- var prop_types_default = "default" in defaultImport26 ? defaultImport26.default : defaultImport26;
918
+ var prop_types_default = "default" in defaultImport27 ? defaultImport27.default : defaultImport27;
811
919
 
812
920
  // src/common/interfaces/VizActionHandler.ts
813
921
  var DefaultVizActionHandler = class {
@@ -902,7 +1010,7 @@ SplunkVisualization.propTypes = {
902
1010
  /**
903
1011
  *
904
1012
  */
905
- SplunkVisualization.defaultProps = {
1013
+ SplunkVisualization.defaults = {
906
1014
  // BaseVisualization in dashboard-visualizations uses 100% for width but 250 for height
907
1015
  width: "100%",
908
1016
  height: INITIAL_HEIGHT,
@@ -923,13 +1031,13 @@ var SplunkVisualization_default = SplunkVisualization;
923
1031
  // src/common/interfaces/DataSource.ts
924
1032
  var validSortDirs = ["asc", "desc", "none"];
925
1033
 
926
- // src/common/hooks/getSorting.ts
1034
+ // src/common/hooks/useSorting.ts
927
1035
  var SortParamsPropTypes = prop_types_exports.shape({
928
1036
  currentSortKey: prop_types_exports.string,
929
1037
  currentSortDir: prop_types_exports.oneOf(validSortDirs),
930
1038
  onSort: prop_types_exports.func
931
1039
  });
932
- var getSortingParams = ({ requestParams, onRequestParamsChange }) => {
1040
+ var useSortingParams = ({ requestParams, onRequestParamsChange }) => {
933
1041
  let currentSortKey;
934
1042
  let currentSortDir;
935
1043
  const nextSortDirMap = {
@@ -959,14 +1067,14 @@ var getSortingParams = ({ requestParams, onRequestParamsChange }) => {
959
1067
  };
960
1068
  };
961
1069
 
962
- // src/common/hooks/getPagination.ts
1070
+ // src/common/hooks/usePagination.ts
963
1071
  var PaginatorParamsPropTypes = prop_types_exports.shape({
964
1072
  isPaging: prop_types_exports.bool,
965
1073
  current: prop_types_exports.number,
966
1074
  totalPages: prop_types_exports.number,
967
1075
  onChange: prop_types_exports.func
968
1076
  });
969
- var getPaginationParams = ({
1077
+ var usePaginationParams = ({
970
1078
  requestParams,
971
1079
  meta,
972
1080
  onRequestParamsChange
@@ -1015,18 +1123,9 @@ var Message_exports = {};
1015
1123
  __export(Message_exports, {
1016
1124
  default: () => Message_default
1017
1125
  });
1018
- var defaultImport27 = __toESM(require("@splunk/visualizations-shared/Message"));
1126
+ var defaultImport28 = __toESM(require("@splunk/visualizations-shared/Message"));
1019
1127
  __reExport(Message_exports, require("@splunk/visualizations-shared/Message"));
1020
- var Message_default = "default" in defaultImport27 ? defaultImport27.default : defaultImport27;
1021
-
1022
- // esm-externals:@splunk/visualizations-shared/style
1023
- var style_exports = {};
1024
- __export(style_exports, {
1025
- default: () => style_default
1026
- });
1027
- var defaultImport28 = __toESM(require("@splunk/visualizations-shared/style"));
1028
- __reExport(style_exports, require("@splunk/visualizations-shared/style"));
1029
- var style_default = "default" in defaultImport28 ? defaultImport28.default : defaultImport28;
1128
+ var Message_default = "default" in defaultImport28 ? defaultImport28.default : defaultImport28;
1030
1129
 
1031
1130
  // esm-externals:@splunk/visualizations-shared/SizeAwareWrapper
1032
1131
  var SizeAwareWrapper_exports = {};
@@ -1037,6 +1136,85 @@ var defaultImport29 = __toESM(require("@splunk/visualizations-shared/SizeAwareWr
1037
1136
  __reExport(SizeAwareWrapper_exports, require("@splunk/visualizations-shared/SizeAwareWrapper"));
1038
1137
  var SizeAwareWrapper_default = "default" in defaultImport29 ? defaultImport29.default : defaultImport29;
1039
1138
 
1139
+ // src/common/components/MissingPropsMessage.tsx
1140
+ var isMissing = (v) => {
1141
+ return v === null || v === void 0;
1142
+ };
1143
+ var missingKeys = (keys2, target) => keys2.filter((k) => isMissing(target[k]));
1144
+ var MissingPropsMessage = (props) => {
1145
+ const {
1146
+ width = SplunkVisualization_default.defaults.width,
1147
+ height = SplunkVisualization_default.defaults.height,
1148
+ missingProps,
1149
+ backgroundColor
1150
+ } = props;
1151
+ const cachedHandleResize = react_exports.useCallback((w, h) => {
1152
+ setContainerWidth(w);
1153
+ setContainerHeight(h);
1154
+ }, []);
1155
+ const [containerWidth, setContainerWidth] = react_exports.useState(Number(width));
1156
+ const [containerHeight, setContainerHeight] = react_exports.useState(Number(height));
1157
+ return /* @__PURE__ */ react_exports.createElement("div", { style: { width: containerWidth, height: containerHeight, background: backgroundColor } }, /* @__PURE__ */ react_exports.createElement(SizeAwareWrapper_default, { width, height, onResize: cachedHandleResize }), /* @__PURE__ */ react_exports.createElement(
1158
+ Message_default,
1159
+ {
1160
+ "data-test": "message",
1161
+ width,
1162
+ height,
1163
+ message: (0, i18n_exports._)(`Missing property: ${missingProps.join(", ")}`),
1164
+ level: "error"
1165
+ }
1166
+ ));
1167
+ };
1168
+ var MissingPropsMessage_default = MissingPropsMessage;
1169
+
1170
+ // src/common/utils/hocUtils.ts
1171
+ var extendStaticWrapperProps = ({
1172
+ Wrapper,
1173
+ Visualization
1174
+ }) => {
1175
+ const extendProperties = ["propTypes", "config"];
1176
+ extendProperties.forEach((prop) => {
1177
+ if (Visualization[prop]) {
1178
+ Wrapper[prop] = Visualization[prop];
1179
+ }
1180
+ });
1181
+ };
1182
+
1183
+ // src/common/hocs/withEditModeCover.tsx
1184
+ var Cover = styled_components_default.div`
1185
+ position: absolute;
1186
+ left: 0;
1187
+ right: 0;
1188
+ top: 0;
1189
+ bottom: 0;
1190
+ `;
1191
+ var Blocker = styled_components_default.div.attrs({
1192
+ "data-splunk-visualization-version": "28.2.0 - 7eea200d8"
1193
+ })`
1194
+ position: relative;
1195
+ width: 100%;
1196
+ height: 100%;
1197
+ `;
1198
+ var withEditModeCover = (Visualization, disableEditModeCover) => {
1199
+ const Wrapper = (props) => {
1200
+ const { mode } = props;
1201
+ const showEditCover = mode === "edit" && !disableEditModeCover;
1202
+ return /* @__PURE__ */ react_exports.createElement(Blocker, null, /* @__PURE__ */ react_exports.createElement(Visualization, __spreadValues({}, props)), showEditCover && /* @__PURE__ */ react_exports.createElement(Cover, { "data-test": "edit-mode-cover" }));
1203
+ };
1204
+ extendStaticWrapperProps({ Wrapper, Visualization });
1205
+ return Wrapper;
1206
+ };
1207
+ var withEditModeCover_default = withEditModeCover;
1208
+
1209
+ // esm-externals:@splunk/visualizations-shared/style
1210
+ var style_exports = {};
1211
+ __export(style_exports, {
1212
+ default: () => style_default
1213
+ });
1214
+ var defaultImport30 = __toESM(require("@splunk/visualizations-shared/style"));
1215
+ __reExport(style_exports, require("@splunk/visualizations-shared/style"));
1216
+ var style_default = "default" in defaultImport30 ? defaultImport30.default : defaultImport30;
1217
+
1040
1218
  // src/common/hocs/FixedSizeContainer.tsx
1041
1219
  var Item = styled_components_default.div.attrs(({ width }) => ({
1042
1220
  style: {
@@ -1087,7 +1265,7 @@ var withFixedSizeContainer = (Viz) => {
1087
1265
  FixSizeItem,
1088
1266
  {
1089
1267
  "data-test": "fix-size-item",
1090
- "data-splunk-visualization-version": "28.0.0 - 0c5f07712",
1268
+ "data-splunk-visualization-version": "28.2.0 - 7eea200d8",
1091
1269
  width,
1092
1270
  height,
1093
1271
  backgroundColor
@@ -1100,76 +1278,6 @@ var withFixedSizeContainer = (Viz) => {
1100
1278
  };
1101
1279
  var FixedSizeContainer_default = withFixedSizeContainer;
1102
1280
 
1103
- // src/common/components/MissingPropsMessage.tsx
1104
- var isMissing = (v) => {
1105
- return v === null || v === void 0;
1106
- };
1107
- var missingKeys = (keys2, target) => keys2.filter((k) => isMissing(target[k]));
1108
- var propTypes = {
1109
- width: prop_types_exports.oneOfType([prop_types_exports.string, prop_types_exports.number]),
1110
- height: prop_types_exports.oneOfType([prop_types_exports.string, prop_types_exports.number]),
1111
- // eslint-disable-next-line react/no-unused-prop-types
1112
- backgroundColor: prop_types_exports.string,
1113
- missingProps: prop_types_exports.arrayOf(prop_types_exports.string)
1114
- };
1115
- var MissingPropsMessage = (props) => {
1116
- const { width, height, missingProps } = props;
1117
- return /* @__PURE__ */ react_exports.createElement(
1118
- Message_default,
1119
- {
1120
- "data-test": "message",
1121
- width,
1122
- height,
1123
- message: (0, i18n_exports._)(`Missing property: ${missingProps.join(", ")}`)
1124
- }
1125
- );
1126
- };
1127
- MissingPropsMessage.propTypes = propTypes;
1128
- MissingPropsMessage.defaultProps = {
1129
- width: "100%",
1130
- height: 250
1131
- };
1132
- var MissingPropsMessage_default = FixedSizeContainer_default(MissingPropsMessage);
1133
-
1134
- // src/common/utils/hocUtils.ts
1135
- var extendStaticWrapperProps = ({
1136
- Wrapper,
1137
- Visualization
1138
- }) => {
1139
- const extendProperties = ["propTypes", "defaultProps", "config"];
1140
- extendProperties.forEach((prop) => {
1141
- if (Visualization[prop]) {
1142
- Wrapper[prop] = Visualization[prop];
1143
- }
1144
- });
1145
- };
1146
-
1147
- // src/common/hocs/withEditModeCover.tsx
1148
- var Cover = styled_components_default.div`
1149
- position: absolute;
1150
- left: 0;
1151
- right: 0;
1152
- top: 0;
1153
- bottom: 0;
1154
- `;
1155
- var Blocker = styled_components_default.div.attrs({
1156
- "data-splunk-visualization-version": "28.0.0 - 0c5f07712"
1157
- })`
1158
- position: relative;
1159
- width: 100%;
1160
- height: 100%;
1161
- `;
1162
- var withEditModeCover = (Visualization, disableEditModeCover) => {
1163
- const Wrapper = (props) => {
1164
- const { mode } = props;
1165
- const showEditCover = mode === "edit" && !disableEditModeCover;
1166
- return /* @__PURE__ */ react_exports.createElement(Blocker, null, /* @__PURE__ */ react_exports.createElement(Visualization, __spreadValues({}, props)), showEditCover && /* @__PURE__ */ react_exports.createElement(Cover, { "data-test": "edit-mode-cover" }));
1167
- };
1168
- extendStaticWrapperProps({ Wrapper, Visualization });
1169
- return Wrapper;
1170
- };
1171
- var withEditModeCover_default = withEditModeCover;
1172
-
1173
1281
  // src/common/components/IconPlaceholder.tsx
1174
1282
  var shouldShowIconPlaceholder = (dataSources, loading = false) => {
1175
1283
  const data = (0, lodash_exports.get)(dataSources, "primary.data.columns[0]", void 0);
@@ -1178,18 +1286,23 @@ var shouldShowIconPlaceholder = (dataSources, loading = false) => {
1178
1286
  const noFields = fields === void 0;
1179
1287
  return loading || noData || noFields;
1180
1288
  };
1181
- var propTypes2 = {
1182
- icon: prop_types_exports.func,
1183
- width: prop_types_exports.oneOfType([prop_types_exports.string, prop_types_exports.number]),
1184
- height: prop_types_exports.oneOfType([prop_types_exports.string, prop_types_exports.number]),
1185
- // eslint-disable-next-line react/no-unused-prop-types
1186
- backgroundColor: prop_types_exports.string,
1187
- iconColor: prop_types_exports.string
1188
- };
1189
1289
  var IconPlaceholder = (props) => {
1190
- const { width, height, icon, iconColor } = props;
1290
+ const {
1291
+ width = SplunkVisualization_default.defaults.width,
1292
+ height = SplunkVisualization_default.defaults.height,
1293
+ icon,
1294
+ iconColor,
1295
+ backgroundColor
1296
+ } = props;
1297
+ const cachedHandleResize = react_exports.useCallback((w, h) => {
1298
+ setContainerWidth(w);
1299
+ setContainerHeight(h);
1300
+ }, []);
1301
+ const [containerWidth, setContainerWidth] = react_exports.useState(Number(width));
1302
+ const [containerHeight, setContainerHeight] = react_exports.useState(Number(height));
1303
+ let content = /* @__PURE__ */ react_exports.createElement(Message_default, { width, height, level: "warning", message: (0, i18n_exports._)("No DataSource Connected") });
1191
1304
  if (icon) {
1192
- return react_exports.createElement(icon, {
1305
+ content = react_exports.createElement(icon, {
1193
1306
  style: {
1194
1307
  left: "50%",
1195
1308
  top: "50%",
@@ -1203,12 +1316,7 @@ var IconPlaceholder = (props) => {
1203
1316
  "data-test": "icon-placeholder"
1204
1317
  });
1205
1318
  }
1206
- return /* @__PURE__ */ react_exports.createElement(Message_default, { width, height, level: "warning", message: (0, i18n_exports._)("No DataSource Connected") });
1207
- };
1208
- IconPlaceholder.propTypes = propTypes2;
1209
- IconPlaceholder.defaultProps = {
1210
- width: "100%",
1211
- height: 250
1319
+ return /* @__PURE__ */ react_exports.createElement("div", { style: { width: containerWidth, height: containerHeight, background: backgroundColor } }, /* @__PURE__ */ react_exports.createElement(SizeAwareWrapper_default, { width, height, onResize: cachedHandleResize }), content);
1212
1320
  };
1213
1321
  var IconPlaceholder_default = FixedSizeContainer_default(IconPlaceholder);
1214
1322
 
@@ -1218,11 +1326,17 @@ var withPlaceholder = (Visualization, useIconPlaceholder = shouldShowIconPlaceho
1218
1326
  const { themes: themes3 } = config2;
1219
1327
  const Wrapper = (props) => {
1220
1328
  var _a, _b;
1221
- const { dataSources, loading, options, height, width } = props;
1329
+ const {
1330
+ dataSources,
1331
+ loading,
1332
+ options,
1333
+ height = SplunkVisualization_default.defaults.height,
1334
+ width = SplunkVisualization_default.defaults.width
1335
+ } = props;
1222
1336
  const showPlaceholder = useIconPlaceholder(dataSources, loading, options);
1223
- const bgColorFromTheme = (0, colorUtils_exports.isColor)(options == null ? void 0 : options.backgroundColor) ? options == null ? void 0 : options.backgroundColor : (_a = themes3 == null ? void 0 : themes3.defaultBackgroundColor) == null ? void 0 : _a.call(themes3, props);
1224
- const icon = (_b = config2.placeholderIcon) != null ? _b : config2.icon;
1337
+ const icon = (_a = config2.placeholderIcon) != null ? _a : config2.icon;
1225
1338
  const iconColor = variables_default.contentColorActive(props);
1339
+ const bgColorFromTheme = (0, colorUtils_exports.isColor)(options == null ? void 0 : options.backgroundColor) ? options == null ? void 0 : options.backgroundColor : (_b = themes3 == null ? void 0 : themes3.defaultBackgroundColor) == null ? void 0 : _b.call(themes3, props);
1226
1340
  if (config2.supports.includes("placeholder" /* PLACEHOLDER */) && showPlaceholder) {
1227
1341
  return /* @__PURE__ */ react_exports.createElement(
1228
1342
  IconPlaceholder_default,
@@ -1248,9 +1362,9 @@ var numberUtils_exports = {};
1248
1362
  __export(numberUtils_exports, {
1249
1363
  default: () => numberUtils_default
1250
1364
  });
1251
- var defaultImport30 = __toESM(require("@splunk/visualizations-shared/numberUtils"));
1365
+ var defaultImport31 = __toESM(require("@splunk/visualizations-shared/numberUtils"));
1252
1366
  __reExport(numberUtils_exports, require("@splunk/visualizations-shared/numberUtils"));
1253
- var numberUtils_default = "default" in defaultImport30 ? defaultImport30.default : defaultImport30;
1367
+ var numberUtils_default = "default" in defaultImport31 ? defaultImport31.default : defaultImport31;
1254
1368
 
1255
1369
  // src/common/utils/dataUtils.ts
1256
1370
  var largestTriangleThreeBuckets = (data, threshold, preferredDownsampleIndices) => {
@@ -1630,9 +1744,9 @@ var FeatureFlags_exports = {};
1630
1744
  __export(FeatureFlags_exports, {
1631
1745
  default: () => FeatureFlags_default
1632
1746
  });
1633
- var defaultImport31 = __toESM(require("@splunk/visualization-context/FeatureFlags"));
1747
+ var defaultImport32 = __toESM(require("@splunk/visualization-context/FeatureFlags"));
1634
1748
  __reExport(FeatureFlags_exports, require("@splunk/visualization-context/FeatureFlags"));
1635
- var FeatureFlags_default = "default" in defaultImport31 ? defaultImport31.default : defaultImport31;
1749
+ var FeatureFlags_default = "default" in defaultImport32 ? defaultImport32.default : defaultImport32;
1636
1750
 
1637
1751
  // src/common/utils/featureFlagUtils.ts
1638
1752
  var getFeatureFlag = (context, flagName) => {
@@ -1650,9 +1764,9 @@ var trellisUtils_exports = {};
1650
1764
  __export(trellisUtils_exports, {
1651
1765
  default: () => trellisUtils_default
1652
1766
  });
1653
- var defaultImport32 = __toESM(require("@splunk/visualizations-shared/trellisUtils"));
1767
+ var defaultImport33 = __toESM(require("@splunk/visualizations-shared/trellisUtils"));
1654
1768
  __reExport(trellisUtils_exports, require("@splunk/visualizations-shared/trellisUtils"));
1655
- var trellisUtils_default = "default" in defaultImport32 ? defaultImport32.default : defaultImport32;
1769
+ var trellisUtils_default = "default" in defaultImport33 ? defaultImport33.default : defaultImport33;
1656
1770
 
1657
1771
  // src/common/utils/trellisUtils.ts
1658
1772
  var turnOffLegendDisplayWhenTrellisIsOn = (isTrellisOn, options) => {
@@ -1664,6 +1778,382 @@ var turnOffLegendDisplayWhenTrellisIsOn = (isTrellisOn, options) => {
1664
1778
  return {};
1665
1779
  };
1666
1780
 
1781
+ // esm-externals:@splunk/visualization-canvas
1782
+ var visualization_canvas_exports = {};
1783
+ __export(visualization_canvas_exports, {
1784
+ default: () => visualization_canvas_default
1785
+ });
1786
+ var defaultImport34 = __toESM(require("@splunk/visualization-canvas"));
1787
+ __reExport(visualization_canvas_exports, require("@splunk/visualization-canvas"));
1788
+ var visualization_canvas_default = "default" in defaultImport34 ? defaultImport34.default : defaultImport34;
1789
+
1790
+ // src/common/components/VizStyleWrapper.jsx
1791
+ var VizStyleWrapper = styled_components_default.div.attrs(({ dataTestKey }) => ({
1792
+ "data-test": dataTestKey,
1793
+ "data-testid": dataTestKey
1794
+ }))`
1795
+ display: flex;
1796
+ justify-content: center;
1797
+ flex-direction: column;
1798
+ width: 100%;
1799
+ height: 100%;
1800
+ background-color: ${(props) => props.backgroundColor};
1801
+ `;
1802
+ VizStyleWrapper.displayName = "VizStyleWrapper";
1803
+ var VizStyleWrapper_default = VizStyleWrapper;
1804
+
1805
+ // esm-externals:@splunk/react-icons/Triangle
1806
+ var Triangle_exports = {};
1807
+ __export(Triangle_exports, {
1808
+ default: () => Triangle_default
1809
+ });
1810
+ var defaultImport35 = __toESM(require("@splunk/react-icons/Triangle"));
1811
+ __reExport(Triangle_exports, require("@splunk/react-icons/Triangle"));
1812
+ var Triangle_default = "default" in defaultImport35 ? defaultImport35.default : defaultImport35;
1813
+
1814
+ // src/common/chartingUtils.ts
1815
+ var DEFAULT_LINE_WIDTH = 2;
1816
+ var getAnnotationsForCanvas = ({
1817
+ annotationX,
1818
+ annotationColor,
1819
+ annotationLabel
1820
+ }) => (annotationX == null ? void 0 : annotationX.length) ? annotationX.map((timestamp, i) => ({
1821
+ key: annotationLabel == null ? void 0 : annotationLabel[i],
1822
+ time: timestamp,
1823
+ color: annotationColor == null ? void 0 : annotationColor[i]
1824
+ })) : [];
1825
+ var StyledTriangle = styled_components_default(Triangle_default)`
1826
+ color: ${(props) => props.eventColor || variables_default.severityColorNotice(props)};
1827
+ `;
1828
+ var triangleEventAnnotationRenderer = ({ event }) => {
1829
+ const eventWithColor = event;
1830
+ return react_default.createElement(StyledTriangle, {
1831
+ viewBox: "0 0 24 24",
1832
+ variant: "filled",
1833
+ eventColor: eventWithColor.color
1834
+ });
1835
+ };
1836
+ var canvasSupportedTimeSeriesCharts = ["splunk.line"];
1837
+ var isTimeSeriesCanvasRenderSupported = (vizConfigKey) => {
1838
+ return canvasSupportedTimeSeriesCharts.indexOf(vizConfigKey) > -1;
1839
+ };
1840
+ var filterChartDataFromInternalFields = (chartData) => {
1841
+ const { fields, columns } = chartData;
1842
+ const keepIndexes = fields.reduce((acc, field, index) => {
1843
+ const fieldName = typeof field === "object" ? field == null ? void 0 : field.name : field;
1844
+ if (!(fieldName == null ? void 0 : fieldName.startsWith("_")) || fieldName === "_time") {
1845
+ acc.push(index);
1846
+ }
1847
+ return acc;
1848
+ }, []);
1849
+ const filteredFields = keepIndexes.map((index) => fields[index]);
1850
+ const filteredColumns = keepIndexes.map((index) => columns[index]);
1851
+ return { fields: filteredFields, columns: filteredColumns };
1852
+ };
1853
+ var convert2DArrayToNumbers = (arr) => {
1854
+ return arr.map((subArray) => subArray.map((element) => parseFloat(element)));
1855
+ };
1856
+ var SideLegendWidth = 75;
1857
+ var commonLegendProps = { center: true, fontSize: 12, largerTiles: true, hideSeriesValue: true };
1858
+ var getLegend = (props) => {
1859
+ const legendPlacement = props == null ? void 0 : props.legendDisplay;
1860
+ switch (legendPlacement) {
1861
+ case "off":
1862
+ return false;
1863
+ case "left":
1864
+ return (0, visualization_canvas_exports.LeftLegendFactory)(__spreadValues({
1865
+ width: SideLegendWidth
1866
+ }, commonLegendProps));
1867
+ case "bottom":
1868
+ return (0, visualization_canvas_exports.BottomLegendFactory)(__spreadValues({
1869
+ wrap: true
1870
+ }, commonLegendProps));
1871
+ case "top":
1872
+ return (0, visualization_canvas_exports.TopLegendFactory)(__spreadValues({
1873
+ wrap: true
1874
+ }, commonLegendProps));
1875
+ default:
1876
+ return (0, visualization_canvas_exports.SideLegendFactory)(__spreadValues({
1877
+ width: SideLegendWidth
1878
+ }, commonLegendProps));
1879
+ }
1880
+ };
1881
+ var getComputedAxisTitles = (inputAxisTitle, fields, axisTitleVisibility) => {
1882
+ if (axisTitleVisibility === "collapsed") {
1883
+ return "";
1884
+ }
1885
+ let fieldTitle = fields.length > 1 ? "" : fields[0];
1886
+ if (!fieldTitle) {
1887
+ fieldTitle = "";
1888
+ }
1889
+ return (inputAxisTitle == null ? void 0 : inputAxisTitle.length) ? inputAxisTitle.trim() : fieldTitle;
1890
+ };
1891
+ var ellipsisAxisTitle = (axisTitle, containerSpacing, fontSize = 12) => {
1892
+ if (!axisTitle) {
1893
+ return "";
1894
+ }
1895
+ if (Number.isNaN(containerSpacing) || containerSpacing <= 0) {
1896
+ return axisTitle;
1897
+ }
1898
+ const availableHeight = containerSpacing * 0.6;
1899
+ const avgCharWidth = fontSize * 0.55;
1900
+ const maxChars = Math.floor(availableHeight / avgCharWidth);
1901
+ if (axisTitle.length <= maxChars) {
1902
+ return axisTitle;
1903
+ }
1904
+ if (maxChars <= 3) {
1905
+ return "...";
1906
+ }
1907
+ const availableChars = maxChars - 3;
1908
+ const halfChars = Math.floor(availableChars / 2);
1909
+ const start = axisTitle.slice(0, halfChars);
1910
+ const end = axisTitle.slice(-halfChars);
1911
+ return `${start}...${end}`;
1912
+ };
1913
+ var getFieldName = (field) => {
1914
+ const fieldName = typeof field === "object" ? field == null ? void 0 : field.name : field;
1915
+ return fieldName;
1916
+ };
1917
+ var getFieldNames = (fields) => {
1918
+ return fields.map((field) => getFieldName(field));
1919
+ };
1920
+ var getXScaleConfig = (label) => {
1921
+ const xConfig = { x: {} };
1922
+ xConfig.x.label = label;
1923
+ return xConfig;
1924
+ };
1925
+ var getYScaleConfig = (label, yAxisAbbreviation, yAxisScale) => {
1926
+ const scaleType = yAxisScale != null ? yAxisScale : "linear";
1927
+ const yConfig = { y: {} };
1928
+ yConfig.y.label = label;
1929
+ yConfig.y.type = scaleType;
1930
+ if (yAxisAbbreviation !== "none") {
1931
+ yConfig.y.tickFmt = (v) => (0, visualization_canvas_exports.shortenNumber)(v, 1);
1932
+ }
1933
+ if (yAxisAbbreviation === "none") {
1934
+ yConfig.y.width = 55;
1935
+ } else {
1936
+ yConfig.y.width = label && label.length > 0 ? 30 : 10;
1937
+ }
1938
+ return yConfig;
1939
+ };
1940
+ var getY2ScaleConfig = (label, axisAbbreviation, axisScale, roundAxisLabelsToInteger) => {
1941
+ const y2Config = { y2: {} };
1942
+ const scaleType = axisScale != null ? axisScale : "linear";
1943
+ y2Config.y2.label = label;
1944
+ y2Config.y2.side = "right";
1945
+ y2Config.y2.showGrid = false;
1946
+ y2Config.y2.type = scaleType;
1947
+ if (axisAbbreviation !== "none") {
1948
+ y2Config.y2.tickFmt = (v) => (0, visualization_canvas_exports.shortenNumber)(v, 1, roundAxisLabelsToInteger);
1949
+ } else if (roundAxisLabelsToInteger) {
1950
+ y2Config.y2.tickFmt = (v) => roundAxisLabelsToInteger ? Math.round(v).toString() : v.toString();
1951
+ }
1952
+ return y2Config;
1953
+ };
1954
+ var getSeriesOverrides = (yfields, y2fields, lineWidth, overlayFields, y2Enabled, nullValueMode) => {
1955
+ const seriesConfig = {};
1956
+ let spanGaps;
1957
+ let replaceNullsWithZero;
1958
+ if (nullValueMode === "gaps") {
1959
+ spanGaps = false;
1960
+ } else if (nullValueMode === "connect" || nullValueMode === "zero") {
1961
+ spanGaps = true;
1962
+ if (nullValueMode === "zero") {
1963
+ replaceNullsWithZero = true;
1964
+ }
1965
+ }
1966
+ yfields.forEach((field) => {
1967
+ seriesConfig[field] = {
1968
+ overrides: { width: lineWidth != null ? lineWidth : DEFAULT_LINE_WIDTH }
1969
+ };
1970
+ if (spanGaps !== void 0) {
1971
+ seriesConfig[field].overrides.spanGaps = spanGaps;
1972
+ }
1973
+ if (y2Enabled) {
1974
+ const shouldAssignToY2 = (
1975
+ // If y2Fields are present, assign all y2Fields to y2 scale
1976
+ (y2fields == null ? void 0 : y2fields.length) > 0 && y2fields.includes(field) || // Else, assign all overlayFields to y2 scale
1977
+ (!y2fields || y2fields.length === 0) && (overlayFields == null ? void 0 : overlayFields.includes(field))
1978
+ );
1979
+ if (shouldAssignToY2) {
1980
+ seriesConfig[field].overrides.scale = "y2";
1981
+ }
1982
+ }
1983
+ if (overlayFields == null ? void 0 : overlayFields.includes(field)) {
1984
+ seriesConfig[field].type = "line";
1985
+ }
1986
+ if (replaceNullsWithZero !== void 0) {
1987
+ seriesConfig[field].replaceNullsWithZero = replaceNullsWithZero;
1988
+ }
1989
+ });
1990
+ return seriesConfig;
1991
+ };
1992
+
1993
+ // src/common/TimeSeriesChartWrapper.tsx
1994
+ var TimeSeriesChartContainer = styled_components_default.div`
1995
+ overflow: hidden;
1996
+ ${(props) => (0, style_exports.toDimension)((0, lodash_exports.pick)(props, ["width", "height"]))};
1997
+
1998
+ canvas {
1999
+ position: absolute !important; // This is needed for canvas element export pdf/png to work correctly
2000
+ }
2001
+ `;
2002
+ var handleClick = (chartEvent, props) => {
2003
+ const payload = __spreadProps(__spreadValues({}, (0, lodash_exports.pick)(chartEvent, "value", "seriesKey")), {
2004
+ name: chartEvent.seriesKey
2005
+ });
2006
+ delete payload.seriesKey;
2007
+ const clickHandler = props == null ? void 0 : props.onClick;
2008
+ if (clickHandler) {
2009
+ clickHandler({
2010
+ type: "point.click",
2011
+ originalEvent: chartEvent,
2012
+ payload
2013
+ });
2014
+ }
2015
+ };
2016
+ var handleLegendClick = (chartEvent, props) => {
2017
+ const payload = {
2018
+ name: chartEvent
2019
+ };
2020
+ const clickHandler = props == null ? void 0 : props.onClick;
2021
+ if (clickHandler) {
2022
+ clickHandler({
2023
+ type: "legend.click",
2024
+ originalEvent: chartEvent,
2025
+ payload
2026
+ });
2027
+ }
2028
+ };
2029
+ var TimeSeriesChartWrapper = (props) => {
2030
+ const { width, height, chartData, options, userLocale, annotationX, annotationLabel, annotationColor } = props;
2031
+ const {
2032
+ backgroundColor,
2033
+ seriesColors: seriesColorsStr,
2034
+ fieldColors,
2035
+ "axisTitleX.text": xAxisTitleText,
2036
+ "axisTitleY.text": yAxisTitleText,
2037
+ "axisTitleY2.text": y2AxisTitleText,
2038
+ "axisTitleX.visibility": xAxisTitleVisibility,
2039
+ "axisTitleY.visibility": yAxisTitleVisibility,
2040
+ "axisTitleY2.visibility": y2AxisTitleVisibility,
2041
+ "axisY.abbreviation": yAxisAbbreviation,
2042
+ "axisY.scale": yAxisScale,
2043
+ "axisY2.abbreviation": y2AxisAbbreviation,
2044
+ "axisY2.fields": y2FieldsStr,
2045
+ "axisY2.scale": y2AxisScale,
2046
+ "axisY2.enabled": y2Enabled,
2047
+ "axisLabelsY2.integerUnits": y2IntegerUnits,
2048
+ "chart.overlayFields": overlayFieldsStr,
2049
+ "chart.nullValueMode": nullValueMode,
2050
+ lineWidth
2051
+ } = options;
2052
+ const seriesColors = seriesColorsStr ? JSON.parse(seriesColorsStr) : void 0;
2053
+ const seriesColorsByField = fieldColors ? JSON.parse(fieldColors) : void 0;
2054
+ const [containerWidth, setContainerWidth] = react_exports.useState(Number(props.width));
2055
+ const [containerHeight, setContainerHeight] = react_exports.useState(Number(props.height));
2056
+ const cachedHandleResize = react_exports.useCallback((w, h) => {
2057
+ setContainerWidth(w);
2058
+ setContainerHeight(h);
2059
+ }, []);
2060
+ const filteredChartData = filterChartDataFromInternalFields({
2061
+ fields: chartData.fields,
2062
+ columns: chartData.seriesList
2063
+ });
2064
+ const xField = getFieldName(filteredChartData.fields[0]);
2065
+ const yFields = getFieldNames(
2066
+ filteredChartData.fields.length > 1 ? filteredChartData.fields.slice(1) : []
2067
+ );
2068
+ const y2Fields = y2FieldsStr ? y2FieldsStr.split(",").map((f) => f.trim()) : [];
2069
+ const overlayFields = overlayFieldsStr ? overlayFieldsStr.split(",").map((f) => f.trim()) : [];
2070
+ let xAxisTitle = getComputedAxisTitles(xAxisTitleText, [xField], xAxisTitleVisibility);
2071
+ xAxisTitle = ellipsisAxisTitle(xAxisTitle, containerWidth);
2072
+ let yAxisTitle = getComputedAxisTitles(yAxisTitleText, yFields, yAxisTitleVisibility);
2073
+ yAxisTitle = ellipsisAxisTitle(yAxisTitle, containerHeight);
2074
+ const fieldsForY2Axis = y2Fields.length > 0 ? y2Fields : overlayFields;
2075
+ let y2AxisTitle = getComputedAxisTitles(y2AxisTitleText, fieldsForY2Axis, y2AxisTitleVisibility);
2076
+ y2AxisTitle = ellipsisAxisTitle(y2AxisTitle, containerHeight);
2077
+ const xScaleConfig = getXScaleConfig(xAxisTitle);
2078
+ const yScaleConfig = getYScaleConfig(yAxisTitle, yAxisAbbreviation, yAxisScale);
2079
+ let y2ScaleConfig = {};
2080
+ if (y2Enabled) {
2081
+ y2ScaleConfig = getY2ScaleConfig(y2AxisTitle, y2AxisAbbreviation, y2AxisScale, y2IntegerUnits);
2082
+ }
2083
+ const uplotContainerElement = (0, react_exports.useRef)(null);
2084
+ const seriesDataFormatted = [
2085
+ filteredChartData.columns[0],
2086
+ ...convert2DArrayToNumbers(filteredChartData.columns.slice(1))
2087
+ ];
2088
+ chartData.fields = filteredChartData.fields;
2089
+ chartData.columns = seriesDataFormatted;
2090
+ const seriesOverrides = getSeriesOverrides(
2091
+ yFields,
2092
+ y2Fields,
2093
+ lineWidth,
2094
+ overlayFields,
2095
+ y2Enabled,
2096
+ nullValueMode
2097
+ );
2098
+ const chartingEventAnnotations = getAnnotationsForCanvas({
2099
+ annotationX,
2100
+ annotationColor,
2101
+ annotationLabel
2102
+ });
2103
+ const MemoizedChart = react_exports.memo(visualization_canvas_exports.TimeSeriesChart);
2104
+ const scaleConfig = __spreadValues(__spreadValues(__spreadValues({}, xScaleConfig), yScaleConfig), y2ScaleConfig);
2105
+ const memoizedChart = (0, react_exports.useMemo)(
2106
+ () => /* @__PURE__ */ react_exports.createElement(
2107
+ MemoizedChart,
2108
+ {
2109
+ data: chartData,
2110
+ width: containerWidth,
2111
+ height: containerHeight,
2112
+ seriesColors,
2113
+ seriesColorsByField,
2114
+ seriesConfig: seriesOverrides,
2115
+ legend: getLegend(props),
2116
+ scaleConfig,
2117
+ timestampFormat: "expanded",
2118
+ onCrosshairClick: (event) => handleClick(event, props),
2119
+ onSeriesClick: (event) => handleLegendClick(event, props),
2120
+ userLocale,
2121
+ events: chartingEventAnnotations,
2122
+ eventsConfig: { renderer: triangleEventAnnotationRenderer }
2123
+ }
2124
+ ),
2125
+ [
2126
+ MemoizedChart,
2127
+ chartData,
2128
+ containerWidth,
2129
+ containerHeight,
2130
+ seriesColors,
2131
+ seriesColorsByField,
2132
+ seriesOverrides,
2133
+ lineWidth,
2134
+ props,
2135
+ scaleConfig,
2136
+ userLocale,
2137
+ chartingEventAnnotations
2138
+ ]
2139
+ );
2140
+ const memoizedVisualization = (0, react_exports.useMemo)(() => {
2141
+ return /* @__PURE__ */ react_exports.createElement(VizStyleWrapper_default, { backgroundColor }, memoizedChart);
2142
+ }, [backgroundColor]);
2143
+ return /* @__PURE__ */ react_exports.createElement(
2144
+ TimeSeriesChartContainer,
2145
+ {
2146
+ height,
2147
+ width,
2148
+ ref: uplotContainerElement,
2149
+ "data-test": "timeseries-chart-wrapper"
2150
+ },
2151
+ /* @__PURE__ */ react_exports.createElement(SizeAwareWrapper_default, { width, height, onResize: cachedHandleResize }),
2152
+ memoizedVisualization
2153
+ );
2154
+ };
2155
+ var TimeSeriesChartWrapper_default = TimeSeriesChartWrapper;
2156
+
1667
2157
  // src/common/withDashboardViz.tsx
1668
2158
  var withDashboardViz = (opts) => {
1669
2159
  const {
@@ -1681,30 +2171,29 @@ var withDashboardViz = (opts) => {
1681
2171
  const DashboardViz = (props) => {
1682
2172
  var _a;
1683
2173
  const {
1684
- mode,
2174
+ mode = "view",
1685
2175
  hasEventHandlers,
1686
2176
  dataSources,
1687
2177
  // type of { [key: string]: DataSource }
1688
- options,
2178
+ options = {},
1689
2179
  context = {},
1690
2180
  width,
1691
2181
  height,
1692
- onComputedProps,
1693
- onEventTrigger,
2182
+ onComputedProps = lodash_exports.noop,
2183
+ onEventTrigger = SplunkVisualization_default.defaults.onEventTrigger,
1694
2184
  theme,
1695
- onRequestParamsChange
2185
+ onRequestParamsChange = lodash_exports.noop
1696
2186
  } = props;
1697
- const { serializedTimezone } = react_exports.useContext(TimezoneContext_default);
1698
- if (serializedTimezone) {
2187
+ const localeContext = react_exports.useContext(TimezoneContext_default);
2188
+ if (localeContext.serializedTimezone) {
1699
2189
  if (!moment_default.getDefaultSplunkTimezone()) {
1700
- moment_default.setDefaultSplunkTimezone(serializedTimezone);
2190
+ moment_default.setDefaultSplunkTimezone(localeContext.serializedTimezone);
1701
2191
  }
1702
2192
  }
1703
2193
  const themeFunc = (themeVar) => {
1704
2194
  var _a2, _b;
1705
2195
  return (_b = (_a2 = vizConfig.themes)[themeVar]) == null ? void 0 : _b.call(_a2, props);
1706
2196
  };
1707
- const bgColorFromTheme = themeFunc("defaultBackgroundColor");
1708
2197
  const {
1709
2198
  family: currentThemeFamily,
1710
2199
  colorScheme: currentThemeColorScheme,
@@ -1726,6 +2215,10 @@ var withDashboardViz = (opts) => {
1726
2215
  featureFlagContext && featureFlagContext.visualizations_enableTrellis
1727
2216
  );
1728
2217
  const isTrellisOn = isTrellisFeatureFlagOn && ((_a = vizConfig == null ? void 0 : vizConfig.supports) == null ? void 0 : _a.includes("trellis" /* TRELLIS */)) && (options == null ? void 0 : options.splitByLayout) === "trellis" /* TRELLIS */;
2218
+ const isAcceleratedRenderFeatureFlagOn = Boolean(
2219
+ featureFlagContext == null ? void 0 : featureFlagContext.visualizations_enableAcceleratedRender
2220
+ );
2221
+ const isAcceleratedRenderOn = isAcceleratedRenderFeatureFlagOn && isTimeSeriesCanvasRenderSupported(vizConfig.key) && (options == null ? void 0 : options.acceleratedRender) === true;
1729
2222
  const isMounted = react_exports.useRef(true);
1730
2223
  const optionsToEvaluate = react_exports.useMemo(() => {
1731
2224
  var _a2;
@@ -1820,10 +2313,34 @@ var withDashboardViz = (opts) => {
1820
2313
  currentThemeDensity,
1821
2314
  optionsToEvaluate,
1822
2315
  downsampledDataSources,
1823
- serializedTimezone,
2316
+ localeContext.serializedTimezone,
1824
2317
  useAsyncEvaluatedOptions
1825
2318
  ]);
1826
2319
  const evaluatedOptionsToUse = !useAsyncEvaluatedOptions ? evaluatedOptions : evaluatedOptionsAsync;
2320
+ let dataSourceMetadata = {};
2321
+ const OptionKey = "paginateDataSourceKey";
2322
+ const optsKey = (0, lodash_exports.has)(evaluatedOptionsToUse, OptionKey) && evaluatedOptionsToUse[OptionKey];
2323
+ const paginateDataSourceKey = typeof optsKey === "string" ? optsKey : "primary";
2324
+ const requestParams = (0, lodash_exports.get)(dataSources, [paginateDataSourceKey, "requestParams"], {});
2325
+ const meta = (0, lodash_exports.get)(dataSources, [paginateDataSourceKey, "meta"], {});
2326
+ const handleRequestParamsChange = (payload) => onRequestParamsChange(paginateDataSourceKey, payload);
2327
+ const sortParams = useSortingParams({
2328
+ requestParams,
2329
+ meta,
2330
+ onRequestParamsChange: handleRequestParamsChange
2331
+ });
2332
+ const paginatorParams = usePaginationParams({
2333
+ requestParams,
2334
+ meta,
2335
+ onRequestParamsChange: handleRequestParamsChange
2336
+ });
2337
+ dataSourceMetadata = {
2338
+ sortParams,
2339
+ paginatorParams
2340
+ };
2341
+ if (vizConfig.supports.indexOf("page-and-sort" /* PAGE_AND_SORT */) === -1 && !(0, lodash_exports.has)(dataSources, paginateDataSourceKey)) {
2342
+ dataSourceMetadata = {};
2343
+ }
1827
2344
  const clonedEvaluatedOptions = __spreadValues({}, evaluatedOptionsToUse);
1828
2345
  if (isTrellisOn) {
1829
2346
  clonedEvaluatedOptions.backgroundColor = clonedEvaluatedOptions == null ? void 0 : clonedEvaluatedOptions.trellisBackgroundColor;
@@ -1849,7 +2366,7 @@ var withDashboardViz = (opts) => {
1849
2366
  width,
1850
2367
  height,
1851
2368
  missingProps: missing,
1852
- backgroundColor: bgColorFromTheme
2369
+ backgroundColor: themeFunc("defaultBackgroundColor")
1853
2370
  }
1854
2371
  );
1855
2372
  }
@@ -1867,7 +2384,7 @@ var withDashboardViz = (opts) => {
1867
2384
  }
1868
2385
  eventCallbackProps[eventCallbackPropName] = (ev) => {
1869
2386
  if (ev && ev.payload) {
1870
- payload = ev.payload;
2387
+ payload = __spreadValues({}, ev.payload);
1871
2388
  }
1872
2389
  return onEventTrigger({
1873
2390
  originalEvent: ev,
@@ -1887,45 +2404,27 @@ var withDashboardViz = (opts) => {
1887
2404
  const computedVizProps = computeVizProps2(__spreadProps(__spreadValues(__spreadValues(__spreadValues({}, props), evaluatedOptionsToUse), eventCallbackProps), {
1888
2405
  themeFunc
1889
2406
  }));
1890
- let dataSourceMetadata = {};
1891
- const OptionKey = "paginateDataSourceKey";
1892
- const optsKey = (0, lodash_exports.has)(evaluatedOptionsToUse, OptionKey) && evaluatedOptionsToUse[OptionKey];
1893
- const paginateDataSourceKey = typeof optsKey === "string" ? optsKey : "primary";
1894
- if (vizConfig.supports.indexOf("page-and-sort" /* PAGE_AND_SORT */) > -1 && (0, lodash_exports.has)(dataSources, paginateDataSourceKey)) {
1895
- const requestParams = (0, lodash_exports.get)(dataSources, [paginateDataSourceKey, "requestParams"], {});
1896
- const meta = (0, lodash_exports.get)(dataSources, [paginateDataSourceKey, "meta"], {});
1897
- const handleRequestParamsChange = (payload) => onRequestParamsChange(paginateDataSourceKey, payload);
1898
- const sortParams = getSortingParams({
1899
- requestParams,
1900
- meta,
1901
- onRequestParamsChange: handleRequestParamsChange
1902
- });
1903
- const paginatorParams = getPaginationParams({
1904
- requestParams,
1905
- meta,
1906
- onRequestParamsChange: handleRequestParamsChange
1907
- });
1908
- dataSourceMetadata = {
1909
- sortParams,
1910
- paginatorParams
1911
- };
1912
- }
1913
2407
  if (useAsyncEvaluatedOptions && Object.keys(evaluatedOptionsToUse).length === 0) {
1914
2408
  return null;
1915
2409
  }
2410
+ let SanitizedViz = SanitizedReactViz;
2411
+ if (isAcceleratedRenderOn) {
2412
+ SanitizedViz = (0, SanitizeProps_exports.withSanitizedProps)(TimeSeriesChartWrapper_default);
2413
+ }
1916
2414
  return /* @__PURE__ */ react_exports.createElement(
1917
- SanitizedReactViz,
1918
- __spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues({
2415
+ SanitizedViz,
2416
+ __spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadProps(__spreadValues({}, SplunkVisualization_default.defaults), {
1919
2417
  mode,
1920
- width,
1921
- height
1922
- }, downsamplingProps), evaluatedOptionsToUse), computedVizProps), eventCallbackProps), dataSourceMetadata)
2418
+ width: width || SplunkVisualization_default.defaults.width,
2419
+ height: height || SplunkVisualization_default.defaults.height,
2420
+ userLocale: localeContext
2421
+ }), downsamplingProps), evaluatedOptionsToUse), computedVizProps), eventCallbackProps), dataSourceMetadata)
1923
2422
  );
1924
2423
  };
1925
2424
  DashboardViz.propTypes = __spreadValues(__spreadValues({}, SplunkVisualization_default.propTypes), ReactViz.propTypes);
1926
- DashboardViz.defaultProps = __spreadProps(__spreadValues(__spreadValues({}, SplunkVisualization_default.defaultProps), ReactViz.defaultProps), {
1927
- // using withTheme requires component to receive theme prop. In case the consumer did not provide ThemeProvider, a default empty object will prevent warnings.
1928
- theme: {}
2425
+ DashboardViz.defaultProps = __spreadProps(__spreadValues({}, ReactViz.defaultProps), {
2426
+ // we still need ReactViz.defaultProps for the visualizations that still have them
2427
+ onEventTrigger: SplunkVisualization_default.defaults.onEventTrigger
1929
2428
  });
1930
2429
  DashboardViz.config = vizConfig;
1931
2430
  return (0, styled_components_exports.withTheme)(
@@ -1939,39 +2438,39 @@ var debounce_exports = {};
1939
2438
  __export(debounce_exports, {
1940
2439
  default: () => debounce_default
1941
2440
  });
1942
- var defaultImport33 = __toESM(require("lodash/debounce"));
2441
+ var defaultImport36 = __toESM(require("lodash/debounce"));
1943
2442
  __reExport(debounce_exports, require("lodash/debounce"));
1944
- var debounce_default = "default" in defaultImport33 ? defaultImport33.default : defaultImport33;
2443
+ var debounce_default = "default" in defaultImport36 ? defaultImport36.default : defaultImport36;
1945
2444
 
1946
2445
  // esm-externals:@splunk/react-ui/Table
1947
2446
  var Table_exports = {};
1948
2447
  __export(Table_exports, {
1949
2448
  default: () => Table_default
1950
2449
  });
1951
- var defaultImport34 = __toESM(require("@splunk/react-ui/Table"));
2450
+ var defaultImport37 = __toESM(require("@splunk/react-ui/Table"));
1952
2451
  __reExport(Table_exports, require("@splunk/react-ui/Table"));
1953
- var Table_default = "default" in defaultImport34 ? defaultImport34.default : defaultImport34;
2452
+ var Table_default = "default" in defaultImport37 ? defaultImport37.default : defaultImport37;
1954
2453
 
1955
2454
  // esm-externals:@splunk/react-ui/Paginator
1956
2455
  var Paginator_exports = {};
1957
2456
  __export(Paginator_exports, {
1958
2457
  default: () => Paginator_default
1959
2458
  });
1960
- var defaultImport35 = __toESM(require("@splunk/react-ui/Paginator"));
2459
+ var defaultImport38 = __toESM(require("@splunk/react-ui/Paginator"));
1961
2460
  __reExport(Paginator_exports, require("@splunk/react-ui/Paginator"));
1962
- var Paginator_default = "default" in defaultImport35 ? defaultImport35.default : defaultImport35;
2461
+ var Paginator_default = "default" in defaultImport38 ? defaultImport38.default : defaultImport38;
1963
2462
 
1964
2463
  // esm-externals:@splunk/react-ui/Message
1965
2464
  var Message_exports2 = {};
1966
2465
  __export(Message_exports2, {
1967
2466
  default: () => Message_default2
1968
2467
  });
1969
- var defaultImport36 = __toESM(require("@splunk/react-ui/Message"));
2468
+ var defaultImport39 = __toESM(require("@splunk/react-ui/Message"));
1970
2469
  __reExport(Message_exports2, require("@splunk/react-ui/Message"));
1971
- var Message_default2 = "default" in defaultImport36 ? defaultImport36.default : defaultImport36;
2470
+ var Message_default2 = "default" in defaultImport39 ? defaultImport39.default : defaultImport39;
1972
2471
 
1973
2472
  // src/Table/hooks.tsx
1974
- var isArray = (v) => Array.isArray(v);
2473
+ var isArray2 = (v) => Array.isArray(v);
1975
2474
  var textOverflowStyles = {
1976
2475
  anywhere: {
1977
2476
  wordBreak: "break-all"
@@ -2024,7 +2523,7 @@ var getColumnFormatAlign = (columnFormat, currentColumn, currentRow) => {
2024
2523
  currentColumn.columnId,
2025
2524
  currentColumn.value
2026
2525
  );
2027
- if (isArray(alignOption) && (0, lodash_exports.includes)(visualization_schemas_exports.validAlignments, alignOption[currentRow])) {
2526
+ if (isArray2(alignOption) && (0, lodash_exports.includes)(visualization_schemas_exports.validAlignments, alignOption[currentRow])) {
2028
2527
  align = alignOption[currentRow];
2029
2528
  } else if (typeof alignOption === "string" && alignOption === "auto") {
2030
2529
  align = void 0;
@@ -2047,7 +2546,7 @@ var getColumnFormatCellType = (columnFormat, currentColumn, currentRow) => {
2047
2546
  currentColumn.columnId,
2048
2547
  currentColumn.value
2049
2548
  );
2050
- if (isArray(cellTypes) && (0, lodash_exports.includes)(visualization_schemas_exports.validCellRenderers, cellTypes[currentRow])) {
2549
+ if (isArray2(cellTypes) && (0, lodash_exports.includes)(visualization_schemas_exports.validCellRenderers, cellTypes[currentRow])) {
2051
2550
  cellType = cellTypes[currentRow];
2052
2551
  } else if (typeof cellTypes !== "undefined") {
2053
2552
  console.warn(
@@ -2066,7 +2565,7 @@ var getColumnFormatSparklineType = (columnFormat, currentColumn, currentRow) =>
2066
2565
  currentColumn.columnId,
2067
2566
  currentColumn.value
2068
2567
  );
2069
- if (isArray(types) && (0, lodash_exports.includes)(visualization_schemas_exports.validSparklineTypes, types[currentRow])) {
2568
+ if (isArray2(types) && (0, lodash_exports.includes)(visualization_schemas_exports.validSparklineTypes, types[currentRow])) {
2070
2569
  sparklineType = types[currentRow];
2071
2570
  } else if (typeof types !== "undefined") {
2072
2571
  console.warn(
@@ -2085,7 +2584,7 @@ var getColumnFormatData = (columnFormat, currentColumn, currentRow) => {
2085
2584
  currentColumn.columnId,
2086
2585
  currentColumn.value
2087
2586
  );
2088
- if (isArray(data)) {
2587
+ if (isArray2(data)) {
2089
2588
  datum = data[currentRow];
2090
2589
  } else if (typeof data !== "undefined") {
2091
2590
  console.warn(
@@ -2102,7 +2601,7 @@ var getColumnFormatColor = (columnFormat, currentColumn, currentRow, field) => {
2102
2601
  currentColumn.columnId,
2103
2602
  currentColumn.value
2104
2603
  );
2105
- if (isArray(colors) && (0, colorUtils_exports.isColor)(colors[currentRow])) {
2604
+ if (isArray2(colors) && (0, colorUtils_exports.isColor)(colors[currentRow])) {
2106
2605
  color = colors[currentRow];
2107
2606
  } else if (typeof colors !== "undefined") {
2108
2607
  console.warn(
@@ -2143,7 +2642,7 @@ var getColumnFormatHeaderAlign = (columnFormat, columnId, columnValue) => {
2143
2642
  var getTableFormatAlign = (tableFormat, currentColumn, currentRow) => {
2144
2643
  const alignOption = (0, lodash_exports.get)(tableFormat, "align");
2145
2644
  let align;
2146
- if (isArray(alignOption) && isArray(alignOption[currentColumn]) && (0, lodash_exports.includes)(visualization_schemas_exports.validAlignments, alignOption[currentColumn][currentRow])) {
2645
+ if (isArray2(alignOption) && isArray2(alignOption[currentColumn]) && (0, lodash_exports.includes)(visualization_schemas_exports.validAlignments, alignOption[currentColumn][currentRow])) {
2147
2646
  align = alignOption[currentColumn][currentRow];
2148
2647
  } else if (typeof alignOption === "string" && (0, lodash_exports.includes)(visualization_schemas_exports.validAlignments, alignOption)) {
2149
2648
  align = alignOption;
@@ -2159,7 +2658,7 @@ var getTableFormatAlign = (tableFormat, currentColumn, currentRow) => {
2159
2658
  var getTableFormatCellType = (tableFormat, currentColumn, currentRow) => {
2160
2659
  const cellTypes = (0, lodash_exports.get)(tableFormat, "cellTypes");
2161
2660
  let cellType;
2162
- if (isArray(cellTypes) && isArray(cellTypes[currentColumn]) && (0, lodash_exports.includes)(visualization_schemas_exports.validCellRenderers, cellTypes[currentColumn][currentRow])) {
2661
+ if (isArray2(cellTypes) && isArray2(cellTypes[currentColumn]) && (0, lodash_exports.includes)(visualization_schemas_exports.validCellRenderers, cellTypes[currentColumn][currentRow])) {
2163
2662
  cellType = cellTypes[currentColumn][currentRow];
2164
2663
  } else if (typeof cellTypes !== "undefined") {
2165
2664
  console.warn(
@@ -2173,7 +2672,7 @@ var getTableFormatCellType = (tableFormat, currentColumn, currentRow) => {
2173
2672
  var getTableFormatSparklineType = (tableFormat, currentColumn, currentRow) => {
2174
2673
  const types = (0, lodash_exports.get)(tableFormat, "sparklineTypes");
2175
2674
  let sparklineType;
2176
- if (isArray(types) && isArray(types[currentColumn]) && (0, lodash_exports.includes)(visualization_schemas_exports.validSparklineTypes, types[currentColumn][currentRow])) {
2675
+ if (isArray2(types) && isArray2(types[currentColumn]) && (0, lodash_exports.includes)(visualization_schemas_exports.validSparklineTypes, types[currentColumn][currentRow])) {
2177
2676
  sparklineType = types[currentColumn][currentRow];
2178
2677
  } else if (typeof types !== "undefined") {
2179
2678
  console.warn(
@@ -2187,11 +2686,11 @@ var getTableFormatSparklineType = (tableFormat, currentColumn, currentRow) => {
2187
2686
  var getTableFormatColor = (tableFormat, currentColumn, currentRow, field) => {
2188
2687
  const colors = (0, lodash_exports.get)(tableFormat, field);
2189
2688
  let color;
2190
- if (isArray(colors) && isArray(colors[currentColumn]) && (0, colorUtils_exports.isColor)(colors[currentColumn][currentRow])) {
2689
+ if (isArray2(colors) && isArray2(colors[currentColumn]) && (0, colorUtils_exports.isColor)(colors[currentColumn][currentRow])) {
2191
2690
  color = colors[currentColumn][currentRow];
2192
- } else if (isArray(colors) && (0, colorUtils_exports.isColor)(colors[currentRow])) {
2691
+ } else if (isArray2(colors) && (0, colorUtils_exports.isColor)(colors[currentRow])) {
2193
2692
  color = colors[currentRow];
2194
- } else if (typeof colors !== "undefined" && isArray(colors) && isArray(colors[currentColumn]) && colors[currentColumn][currentRow] !== void 0) {
2693
+ } else if (typeof colors !== "undefined" && isArray2(colors) && isArray2(colors[currentColumn]) && colors[currentColumn][currentRow] !== void 0) {
2195
2694
  console.warn(
2196
2695
  `tableFormat.${field} needs to be an array of colors, provided ${JSON.stringify(
2197
2696
  colors
@@ -2215,7 +2714,7 @@ var getTableFormatSparklineAreaColor = (tableFormat, currentCol, currentRow) =>
2215
2714
  var getTableFormatData = (tableFormat, currentCol, currentRow) => {
2216
2715
  const data = (0, lodash_exports.get)(tableFormat, "data");
2217
2716
  let datum;
2218
- if (isArray(data) && isArray(data[currentCol])) {
2717
+ if (isArray2(data) && isArray2(data[currentCol])) {
2219
2718
  datum = data[currentCol][currentRow];
2220
2719
  } else if (typeof data !== "undefined") {
2221
2720
  console.warn(
@@ -2241,13 +2740,13 @@ var getTableFormatHeaderAlign = (tableFormat) => {
2241
2740
  var getAttributeFromColumnFormat = (attribute, columnFormat, columnId, columnValue) => (0, lodash_exports.get)(columnFormat, [columnId, attribute]) || (0, lodash_exports.get)(columnFormat, [columnValue, attribute]);
2242
2741
  var validValueSelector = (v1, v2, v3, defaultValue) => {
2243
2742
  const validTypes = ["string", "number"];
2244
- if (validTypes.includes(typeof v1) || isArray(v1)) {
2743
+ if (validTypes.includes(typeof v1) || isArray2(v1)) {
2245
2744
  return v1;
2246
2745
  }
2247
- if (validTypes.includes(typeof v2) || isArray(v2)) {
2746
+ if (validTypes.includes(typeof v2) || isArray2(v2)) {
2248
2747
  return v2;
2249
2748
  }
2250
- if (validTypes.includes(typeof v3) || isArray(v3)) {
2749
+ if (validTypes.includes(typeof v3) || isArray2(v3)) {
2251
2750
  return v3;
2252
2751
  }
2253
2752
  return defaultValue;
@@ -2272,50 +2771,50 @@ var useTable = (tableArgs = {}) => {
2272
2771
  Array.from({ length: longestColumnLength }, (v, i) => correctedPaginationOffset + i + 1),
2273
2772
  ...table
2274
2773
  ];
2275
- if (isArray(tableFormat.align)) {
2774
+ if (isArray2(tableFormat.align)) {
2276
2775
  tableFormat.align = [
2277
2776
  new Array(longestColumnLength).fill("left"),
2278
2777
  ...tableFormat.align
2279
2778
  ];
2280
2779
  }
2281
- if (isArray(tableFormat.cellTypes)) {
2780
+ if (isArray2(tableFormat.cellTypes)) {
2282
2781
  tableFormat.cellTypes = [
2283
2782
  new Array(longestColumnLength).fill("TextCell"),
2284
2783
  ...tableFormat.cellTypes
2285
2784
  ];
2286
2785
  }
2287
- if (isArray(tableFormat.data)) {
2786
+ if (isArray2(tableFormat.data)) {
2288
2787
  tableFormat.data = [
2289
2788
  Array.from({ length: longestColumnLength }, (v, i) => `${i + 1}`),
2290
2789
  ...tableFormat.data
2291
2790
  ];
2292
2791
  }
2293
- if (isArray(tableFormat.rowBackgroundColors)) {
2294
- if (tableFormat.rowBackgroundColors.length > 0 && isArray(tableFormat.rowBackgroundColors[0])) {
2792
+ if (isArray2(tableFormat.rowBackgroundColors)) {
2793
+ if (tableFormat.rowBackgroundColors.length > 0 && isArray2(tableFormat.rowBackgroundColors[0])) {
2295
2794
  tableFormat.rowBackgroundColors = [
2296
2795
  new Array(longestColumnLength),
2297
2796
  ...tableFormat.rowBackgroundColors
2298
2797
  ];
2299
2798
  }
2300
2799
  }
2301
- if (isArray(tableFormat.rowColors)) {
2302
- if (tableFormat.rowColors.length > 0 && isArray(tableFormat.rowColors[0])) {
2800
+ if (isArray2(tableFormat.rowColors)) {
2801
+ if (tableFormat.rowColors.length > 0 && isArray2(tableFormat.rowColors[0])) {
2303
2802
  tableFormat.rowColors = [
2304
2803
  new Array(longestColumnLength),
2305
2804
  ...tableFormat.rowColors
2306
2805
  ];
2307
2806
  }
2308
2807
  }
2309
- if (isArray(tableFormat.sparklineColors)) {
2808
+ if (isArray2(tableFormat.sparklineColors)) {
2310
2809
  tableFormat.sparklineColors = [new Array(longestColumnLength), ...tableFormat.sparklineColors];
2311
2810
  }
2312
- if (isArray(tableFormat.sparklineAreaColors)) {
2811
+ if (isArray2(tableFormat.sparklineAreaColors)) {
2313
2812
  tableFormat.sparklineAreaColors = [
2314
2813
  new Array(longestColumnLength),
2315
2814
  ...tableFormat.sparklineAreaColors
2316
2815
  ];
2317
2816
  }
2318
- if (isArray(tableFormat.sparklineTypes)) {
2817
+ if (isArray2(tableFormat.sparklineTypes)) {
2319
2818
  tableFormat.sparklineTypes = [
2320
2819
  new Array(longestColumnLength).fill("area"),
2321
2820
  ...tableFormat.sparklineTypes
@@ -2342,66 +2841,146 @@ var useTable = (tableArgs = {}) => {
2342
2841
  color: (0, lodash_exports.has)(tableFormat, "headerColor") && (0, colorUtils_exports.isColor)(tableFormat.headerColor) && tableFormat.headerColor || void 0
2343
2842
  }
2344
2843
  };
2345
- const tableBody = {
2844
+ const tableBody = { rows: [] };
2845
+ const tableFooter = {
2346
2846
  rows: []
2347
2847
  };
2348
- for (let currentRow = 0; currentRow < longestColumnLength; currentRow += 1) {
2349
- const row = {
2350
- key: `row-${currentRow}`,
2351
- index: currentRow,
2352
- cells: []
2353
- };
2354
- table.forEach((column, i) => {
2355
- const currentHeader = tableHeader.cells[i];
2356
- const value = validValueSelector(
2357
- getColumnFormatData(columnFormat, currentHeader, currentRow),
2358
- getTableFormatData(tableFormat, i, currentRow),
2359
- column[currentRow],
2360
- ""
2361
- );
2362
- const rawValue = column[currentRow];
2363
- const rowBackgroundColor = getColumnFormatRowBgColor(columnFormat, currentHeader, currentRow) || getTableFormatRowBgColor(tableFormat, i, currentRow) || void 0;
2364
- const rowColor = getColumnFormatRowColor(columnFormat, currentHeader, currentRow) || getTableFormatRowColor(tableFormat, i, currentRow) || void 0;
2365
- const align = getColumnFormatAlign(columnFormat, currentHeader, currentRow) || getTableFormatAlign(tableFormat, i, currentRow) || "left";
2366
- const cellType = getColumnFormatCellType(columnFormat, currentHeader, currentRow) || getTableFormatCellType(tableFormat, i, currentRow) || "TextCell";
2367
- const sparklineColor = getColumnFormatSparklineColor(columnFormat, currentHeader, currentRow) || getTableFormatSparklineColor(tableFormat, i, currentRow) || void 0;
2368
- const sparklineAreaColor = getColumnFormatSparklineAreaColor(columnFormat, currentHeader, currentRow) || getTableFormatSparklineAreaColor(tableFormat, i, currentRow) || void 0;
2369
- const sparklineType = getColumnFormatSparklineType(columnFormat, currentHeader, currentRow) || getTableFormatSparklineType(tableFormat, i, currentRow) || "area";
2370
- const key = generateKey(value, `${currentRow}-${i}`);
2371
- let additionalStyles = {};
2372
- const textOverflowType = getTextOverflowType(columnFormat, columnIds[i], currentHeader.value);
2373
- const textOverflowStyle = getOverflowStyles({
2374
- textOverflow: textOverflowType
2848
+ const computeBodyRows = (args) => {
2849
+ const rows = [];
2850
+ const {
2851
+ table: t,
2852
+ tableHeader: hdr,
2853
+ columnFormat: cfmt,
2854
+ tableFormat: tfmt,
2855
+ columnIds: cids,
2856
+ showInternalFields: showInternal,
2857
+ longestColumnLength: len
2858
+ } = args;
2859
+ for (let r = 0; r < len; r += 1) {
2860
+ const row = { key: `row-${r}`, index: r, cells: [] };
2861
+ t.forEach((column, i) => {
2862
+ const currentHeader = hdr.cells[i];
2863
+ const value = validValueSelector(
2864
+ getColumnFormatData(cfmt, currentHeader, r),
2865
+ getTableFormatData(tfmt, i, r),
2866
+ column[r],
2867
+ ""
2868
+ );
2869
+ const rawValue = column[r];
2870
+ const rowBackgroundColor = getColumnFormatRowBgColor(cfmt, currentHeader, r) || getTableFormatRowBgColor(tfmt, i, r) || void 0;
2871
+ const rowColor = getColumnFormatRowColor(cfmt, currentHeader, r) || getTableFormatRowColor(tfmt, i, r) || void 0;
2872
+ const align = getColumnFormatAlign(cfmt, currentHeader, r) || getTableFormatAlign(tfmt, i, r) || "left";
2873
+ const cellType = getColumnFormatCellType(cfmt, currentHeader, r) || getTableFormatCellType(tfmt, i, r) || "TextCell";
2874
+ const sparklineColor = getColumnFormatSparklineColor(cfmt, currentHeader, r) || getTableFormatSparklineColor(tfmt, i, r) || void 0;
2875
+ const sparklineAreaColor = getColumnFormatSparklineAreaColor(cfmt, currentHeader, r) || getTableFormatSparklineAreaColor(tfmt, i, r) || void 0;
2876
+ const sparklineType = getColumnFormatSparklineType(cfmt, currentHeader, r) || getTableFormatSparklineType(tfmt, i, r) || "area";
2877
+ const key = generateKey(value, `${r}-${i}`);
2878
+ const textOverflowType = getTextOverflowType(
2879
+ cfmt,
2880
+ cids[i],
2881
+ currentHeader.value
2882
+ );
2883
+ const textOverflowStyle = getOverflowStyles({
2884
+ textOverflow: textOverflowType
2885
+ });
2886
+ const showCell = !(!showInternal && currentHeader.value.charAt(0) === "_" && currentHeader.value !== "_time");
2887
+ row.cells.push({
2888
+ key,
2889
+ value,
2890
+ rawValue,
2891
+ align,
2892
+ cellType,
2893
+ rowIndex: r,
2894
+ columnIndex: i,
2895
+ sparklineColor,
2896
+ sparklineAreaColor,
2897
+ sparklineType,
2898
+ header: currentHeader.value,
2899
+ style: __spreadValues({
2900
+ backgroundColor: rowBackgroundColor,
2901
+ color: rowColor
2902
+ }, textOverflowStyle),
2903
+ showCell
2904
+ });
2375
2905
  });
2376
- additionalStyles = __spreadValues(__spreadValues({}, additionalStyles), textOverflowStyle);
2377
- let showCell = true;
2378
- if (!showInternalFields && currentHeader.value.charAt(0) === "_" && currentHeader.value !== "_time") {
2379
- showCell = false;
2380
- }
2906
+ rows.push(row);
2907
+ }
2908
+ return rows;
2909
+ };
2910
+ tableBody.rows = computeBodyRows({
2911
+ table,
2912
+ tableHeader,
2913
+ columnFormat,
2914
+ tableFormat,
2915
+ columnIds,
2916
+ showInternalFields,
2917
+ longestColumnLength
2918
+ });
2919
+ const {
2920
+ footers,
2921
+ showFooterTotals = false,
2922
+ showFooterPercentages = false
2923
+ } = tableArgs;
2924
+ const resolveByField = (fieldId, displayName, map) => {
2925
+ if (!map) return void 0;
2926
+ if (Object.prototype.hasOwnProperty.call(map, fieldId)) return map[fieldId];
2927
+ if (Object.prototype.hasOwnProperty.call(map, displayName)) return map[displayName];
2928
+ return void 0;
2929
+ };
2930
+ const computeDerivedAlign = (colMeta, colIdx, alignOverrides) => {
2931
+ const fieldId = colMeta.columnId;
2932
+ const label = colMeta.value;
2933
+ const alignOverride = resolveByField(fieldId, label, alignOverrides);
2934
+ return alignOverride || getColumnFormatAlign(
2935
+ columnFormat,
2936
+ colMeta,
2937
+ Math.max(0, longestColumnLength - 1)
2938
+ ) || getTableFormatAlign(tableFormat, colIdx, Math.max(0, longestColumnLength - 1)) || "right";
2939
+ };
2940
+ const buildFooterRow = (key, valuesByField, styleExtras, rowIndexBase) => {
2941
+ const idx = rowIndexBase + tableFooter.rows.length;
2942
+ const row = { key, index: idx, cells: [] };
2943
+ tableHeader.cells.forEach((colMeta, colIdx) => {
2944
+ var _a, _b, _c;
2945
+ const fieldId = colMeta.columnId;
2946
+ const label = colMeta.value;
2947
+ const val = resolveByField(fieldId, label, valuesByField);
2948
+ const derivedAlign = computeDerivedAlign(colMeta, colIdx, footers == null ? void 0 : footers.alignByField);
2949
+ const displayValue = typeof val === "undefined" ? "" : val;
2381
2950
  row.cells.push({
2382
- key,
2383
- value,
2384
- rawValue,
2385
- align,
2386
- cellType,
2387
- rowIndex: currentRow,
2388
- columnIndex: i,
2389
- sparklineColor,
2390
- sparklineAreaColor,
2391
- sparklineType,
2392
- header: currentHeader.value,
2393
- style: __spreadValues({
2394
- backgroundColor: rowBackgroundColor,
2395
- color: rowColor
2396
- }, additionalStyles),
2397
- showCell
2951
+ key: `${key}-${colIdx}`,
2952
+ value: displayValue,
2953
+ align: derivedAlign,
2954
+ style: __spreadValues(__spreadValues({
2955
+ backgroundColor: ((_a = tableHeader.style) == null ? void 0 : _a.backgroundColor) || ((_b = tableHeader.style) == null ? void 0 : _b.color),
2956
+ color: (_c = tableHeader.style) == null ? void 0 : _c.color
2957
+ }, styleExtras.bold ? { fontWeight: 600 } : {}), typeof styleExtras.opacity === "number" ? { opacity: styleExtras.opacity } : {})
2398
2958
  });
2399
2959
  });
2400
- tableBody.rows.push(row);
2960
+ return row;
2961
+ };
2962
+ if (footers && showFooterTotals) {
2963
+ const totalsRow = buildFooterRow(
2964
+ "footer-totals",
2965
+ footers == null ? void 0 : footers.totalsByField,
2966
+ { bold: true },
2967
+ tableBody.rows.length
2968
+ );
2969
+ tableFooter.rows.push(totalsRow);
2970
+ }
2971
+ if (footers && showFooterPercentages) {
2972
+ const percentagesRow = buildFooterRow(
2973
+ "footer-percentages",
2974
+ footers == null ? void 0 : footers.percentagesByField,
2975
+ {},
2976
+ tableBody.rows.length
2977
+ );
2978
+ tableFooter.rows.push(percentagesRow);
2401
2979
  }
2402
2980
  return {
2403
2981
  tableHeader,
2404
- tableBody
2982
+ tableBody,
2983
+ tableFooter
2405
2984
  };
2406
2985
  };
2407
2986
 
@@ -2409,7 +2988,7 @@ var useTable = (tableArgs = {}) => {
2409
2988
  var SwitchTableCell = ({ type, children }) => children.filter((child) => child.type.displayName === type);
2410
2989
 
2411
2990
  // src/Table/cells/TextCell.tsx
2412
- var noop3 = () => void 0;
2991
+ var noop4 = () => void 0;
2413
2992
  var TextCell = ({ cell, useMouseOverEffect }) => {
2414
2993
  const cellStyle = react_exports.useMemo(() => __spreadValues({}, cell.style), [cell.style]);
2415
2994
  return /* @__PURE__ */ react_exports.createElement(
@@ -2421,7 +3000,7 @@ var TextCell = ({ cell, useMouseOverEffect }) => {
2421
3000
  "data-test-align-value": cell.align,
2422
3001
  "data-row-index": cell.rowIndex,
2423
3002
  "data-col-index": cell.columnIndex,
2424
- onClick: useMouseOverEffect ? noop3 : void 0
3003
+ onClick: useMouseOverEffect ? noop4 : void 0
2425
3004
  },
2426
3005
  cell.value.toString()
2427
3006
  );
@@ -2429,18 +3008,23 @@ var TextCell = ({ cell, useMouseOverEffect }) => {
2429
3008
  TextCell.displayName = "TextCell";
2430
3009
 
2431
3010
  // src/Table/cells/ArrayCell.tsx
2432
- var noop4 = () => void 0;
3011
+ var StyledTableCell = styled_components_default(Table_default.Cell)`
3012
+ div {
3013
+ flex-direction: column;
3014
+ }
3015
+ `;
3016
+ var noop5 = () => void 0;
2433
3017
  var ArrayCell = ({ cell, useMouseOverEffect }) => {
2434
3018
  const value = react_exports.useMemo(() => Array.isArray(cell.value) ? cell.value : [cell.value], [cell.value]);
2435
3019
  const cellStyle = react_exports.useMemo(() => __spreadValues({}, cell.style), [cell.style]);
2436
3020
  return /* @__PURE__ */ react_exports.createElement(
2437
- Table_default.Cell,
3021
+ StyledTableCell,
2438
3022
  {
2439
3023
  style: cellStyle,
2440
3024
  align: cell.align,
2441
3025
  "data-test-align-value": cell.align,
2442
3026
  "data-test-cell-type": "ArrayCell",
2443
- onClick: useMouseOverEffect ? noop4 : void 0
3027
+ onClick: useMouseOverEffect ? noop5 : void 0
2444
3028
  },
2445
3029
  value.map(
2446
3030
  (v, i) => /* @__PURE__ */ react_exports.createElement(
@@ -2463,9 +3047,9 @@ var Popover_exports = {};
2463
3047
  __export(Popover_exports, {
2464
3048
  default: () => Popover_default
2465
3049
  });
2466
- var defaultImport37 = __toESM(require("@splunk/react-ui/Popover"));
3050
+ var defaultImport40 = __toESM(require("@splunk/react-ui/Popover"));
2467
3051
  __reExport(Popover_exports, require("@splunk/react-ui/Popover"));
2468
- var Popover_default = "default" in defaultImport37 ? defaultImport37.default : defaultImport37;
3052
+ var Popover_default = "default" in defaultImport40 ? defaultImport40.default : defaultImport40;
2469
3053
 
2470
3054
  // src/SparkLine/SparkLine.jsx
2471
3055
  var StyledSvg = styled_components_default.svg`
@@ -2993,7 +3577,7 @@ var SparkLine_default = SparkLine;
2993
3577
  var paddingLeftRight = 5;
2994
3578
  var paddingTopBottom = 3;
2995
3579
  var parseSparklineData = (data) => (Array.isArray(data) ? data : [data]).map((d) => Number(d.toString())).map((d) => isNaN(d) ? null : d);
2996
- var noop5 = () => void 0;
3580
+ var noop6 = () => void 0;
2997
3581
  var svgStyle = { height: 0 };
2998
3582
  var dummySVG = /* @__PURE__ */ react_exports.createElement("svg", { style: svgStyle });
2999
3583
  var SparklineCell = ({
@@ -3039,7 +3623,7 @@ var SparklineCell = ({
3039
3623
  "data-test-cell-type": "SparklineCell",
3040
3624
  "data-row-index": cell.rowIndex,
3041
3625
  "data-col-index": cell.columnIndex,
3042
- onClick: useMouseOverEffect ? noop5 : void 0
3626
+ onClick: useMouseOverEffect ? noop6 : void 0
3043
3627
  },
3044
3628
  height ? /* @__PURE__ */ react_exports.createElement(
3045
3629
  SparkLine_default,
@@ -3075,7 +3659,7 @@ var TableHeadCell = styled_components_default(Table_default.HeadCell)`
3075
3659
  button > span {
3076
3660
  word-break: inherit;
3077
3661
  word-wrap: inherit;
3078
- white-space: ${({ textOverflowType }) => textOverflowType === "ellipsis" ? "nowrap" : "inherit"};
3662
+ white-space: ${(props) => props.textOverflowType === "ellipsis" ? "nowrap" : "inherit"};
3079
3663
  display: inline;
3080
3664
  }
3081
3665
  `;
@@ -3091,6 +3675,19 @@ var VizTableContainer = styled_components_default.div`
3091
3675
  * > td:hover {
3092
3676
  color: ${({ isCellClickable }) => isCellClickable ? variables_default.linkColor : variables_default.textColor};
3093
3677
  }
3678
+
3679
+ /* footer totals row styling */
3680
+ tr[data-test='footer-row-totals'] td[data-test='cell'] {
3681
+ color: ${variables_default.contentColorActive} !important;
3682
+ cursor: default;
3683
+ font-weight: bold;
3684
+ }
3685
+
3686
+ /* footer percentage row styling */
3687
+ tr[data-test='footer-row-percentages'] td[data-test='cell'] {
3688
+ color: ${variables_default.contentColorDefault} !important;
3689
+ cursor: default;
3690
+ }
3094
3691
  `;
3095
3692
  VizTableContainer.displayName = "VizTableContainer";
3096
3693
  var PAGINATOR_CONTAINER_HEIGHT = 38;
@@ -3131,6 +3728,14 @@ var SUITableContainer = styled_components_default.div`
3131
3728
  }
3132
3729
  `}
3133
3730
 
3731
+ /* Footer cells should match header background for both totals and percentages */
3732
+ ${({ headerStyle }) => headerStyle && (headerStyle.backgroundColor || headerStyle.color) && styled_components_exports.css`
3733
+ tr[data-test='footer-row-totals'] td[data-test='cell'],
3734
+ tr[data-test='footer-row-percentages'] td[data-test='cell'] {
3735
+ background-color: ${headerStyle.backgroundColor || headerStyle.color} !important;
3736
+ }
3737
+ `}
3738
+
3134
3739
  /* To accomodate custom logic that diverges from default resizableFillLayout behavior - allows the columns to shrink beneath Table width when columns are fixed */
3135
3740
  [data-test="main-table"] {
3136
3741
  ${({ isFullyFixed }) => isFullyFixed && styled_components_exports.css`
@@ -3161,22 +3766,32 @@ var withEmptyTableMessage = (Viz) => {
3161
3766
  tableFormat,
3162
3767
  columnFormat,
3163
3768
  paginatorParams,
3164
- count
3769
+ count,
3770
+ headersMetadata
3165
3771
  } = props;
3166
- const { tableHeader, tableBody } = useTable({
3772
+ const { tableHeader, tableBody, tableFooter } = useTable({
3167
3773
  headers,
3168
3774
  columnIds,
3169
3775
  table,
3170
3776
  headerVisibility,
3171
3777
  showRowNumbers,
3172
3778
  showInternalFields,
3173
- tableFormat: __spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues({}, tableFormat), (tableFormat == null ? void 0 : tableFormat.headerAlign) && {
3779
+ headersMetadata,
3780
+ // plumb down named-map footers and toggles if present on props
3781
+ footers: props.footers,
3782
+ showFooterTotals: props.showFooterTotals,
3783
+ showFooterPercentages: props.showFooterPercentages,
3784
+ tableFormat: __spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues({}, tableFormat), (tableFormat == null ? void 0 : tableFormat.headerAlign) && {
3174
3785
  headerAlign: (0, lodash_exports.cloneDeep)(tableFormat.headerAlign)
3175
3786
  }), (tableFormat == null ? void 0 : tableFormat.align) && {
3176
3787
  align: (0, lodash_exports.cloneDeep)(tableFormat.align)
3177
3788
  }), (tableFormat == null ? void 0 : tableFormat.cellTypes) && {
3178
3789
  cellTypes: (0, lodash_exports.cloneDeep)(tableFormat.cellTypes)
3179
- }), (tableFormat == null ? void 0 : tableFormat.data) && { data: (0, lodash_exports.cloneDeep)(tableFormat.data) }),
3790
+ }), (tableFormat == null ? void 0 : tableFormat.data) && { data: (0, lodash_exports.cloneDeep)(tableFormat.data) }), (tableFormat == null ? void 0 : tableFormat.rowBackgroundColors) && {
3791
+ rowBackgroundColors: (0, lodash_exports.cloneDeep)(tableFormat.rowBackgroundColors)
3792
+ }), (tableFormat == null ? void 0 : tableFormat.rowColors) && {
3793
+ rowColors: (0, lodash_exports.cloneDeep)(tableFormat.rowColors)
3794
+ }),
3180
3795
  columnFormat,
3181
3796
  paginationOffset: paginatorParams == null ? void 0 : paginatorParams.current,
3182
3797
  count
@@ -3184,7 +3799,7 @@ var withEmptyTableMessage = (Viz) => {
3184
3799
  if (tableBody.rows.length === 0) {
3185
3800
  return /* @__PURE__ */ react_exports.createElement(Message_default2, { type: "warning" }, (0, i18n_exports._)("No data!"));
3186
3801
  }
3187
- return /* @__PURE__ */ react_exports.createElement(Viz, __spreadProps(__spreadValues({}, props), { tableHeader, tableBody }));
3802
+ return /* @__PURE__ */ react_exports.createElement(Viz, __spreadProps(__spreadValues({}, props), { tableHeader, tableBody, tableFooter }));
3188
3803
  };
3189
3804
  Wrapper.displayName = "PureTableWrapper";
3190
3805
  return Wrapper;
@@ -3228,7 +3843,10 @@ var PureTable = (props) => {
3228
3843
  backgroundColor,
3229
3844
  tableHeader,
3230
3845
  tableBody,
3846
+ tableFooter,
3231
3847
  showRowNumbers,
3848
+ showFooterTotals,
3849
+ showFooterPercentages,
3232
3850
  sortParams: { currentSortKey, currentSortDir, onSort },
3233
3851
  paginatorParams: _b
3234
3852
  } = _a, _c = _b, { isPaging, onChange: paginatorOnChange } = _c, paginatorProps = __objRest(_c, ["isPaging", "onChange"]), {
@@ -3373,6 +3991,33 @@ var PureTable = (props) => {
3373
3991
  const isFullyFixed = visibleHeaderCells.length === numberOfFixedHeaders;
3374
3992
  const isHeaderHidden = headerVisibility === "none";
3375
3993
  const onSortToUse = isResizing ? lodash_exports.noop : onSort;
3994
+ const renderFooterRow = (key, dataAttr) => {
3995
+ const rows = ((tableFooter == null ? void 0 : tableFooter.rows) || []).filter((r) => r && r.key === key);
3996
+ if (rows.length === 0) return null;
3997
+ return rows.map((row) => /* @__PURE__ */ react_exports.createElement(
3998
+ Table_default.Row,
3999
+ {
4000
+ key: row.key,
4001
+ "data-test": dataAttr,
4002
+ "data-row-index": key === "footer-totals" ? "0" : "1"
4003
+ },
4004
+ (row.cells || []).map((c, idx) => {
4005
+ var _a2, _b2, _c2;
4006
+ return /* @__PURE__ */ react_exports.createElement(
4007
+ Table_default.Cell,
4008
+ {
4009
+ key: `${key}-cell-${c.key || idx}`,
4010
+ "data-test": "cell",
4011
+ style: __spreadProps(__spreadValues({}, c.style), {
4012
+ backgroundColor: ((_a2 = tableHeader.style) == null ? void 0 : _a2.backgroundColor) || ((_b2 = tableHeader.style) == null ? void 0 : _b2.color)
4013
+ }),
4014
+ align: c.align || "right"
4015
+ },
4016
+ (_c2 = c.value) != null ? _c2 : ""
4017
+ );
4018
+ })
4019
+ ));
4020
+ };
3376
4021
  return /* @__PURE__ */ react_exports.createElement(
3377
4022
  VizTableContainer,
3378
4023
  {
@@ -3468,10 +4113,16 @@ var PureTable = (props) => {
3468
4113
  }
3469
4114
  ));
3470
4115
  }))
3471
- ))
4116
+ ), tableFooter && showFooterTotals && renderFooterRow("footer-totals", "footer-row-totals"), tableFooter && showFooterPercentages && renderFooterRow("footer-percentages", "footer-row-percentages"))
3472
4117
  )
3473
4118
  ),
3474
- isPaging ? /* @__PURE__ */ react_exports.createElement(PaginatorContainer, null, /* @__PURE__ */ react_exports.createElement(Paginator_default, __spreadValues({ onChange: paginatorOnChange }, paginatorProps))) : null
4119
+ isPaging ? /* @__PURE__ */ react_exports.createElement(PaginatorContainer, null, /* @__PURE__ */ react_exports.createElement(
4120
+ Paginator_default,
4121
+ __spreadValues({
4122
+ totalPages: paginatorProps.totalPages,
4123
+ onChange: paginatorOnChange
4124
+ }, paginatorProps)
4125
+ )) : null
3475
4126
  );
3476
4127
  };
3477
4128
  var cellDataType = prop_types_exports.oneOfType([prop_types_exports.string, prop_types_exports.number, prop_types_exports.arrayOf(prop_types_exports.oneOfType([prop_types_exports.string, prop_types_exports.number]))]);
@@ -3498,6 +4149,7 @@ PureTable.propTypes = {
3498
4149
  onCellClick: prop_types_exports.func,
3499
4150
  paginatorParams: PaginatorParamsPropTypes,
3500
4151
  showRowNumbers: prop_types_exports.bool,
4152
+ showFooterTotals: prop_types_exports.bool,
3501
4153
  sortParams: SortParamsPropTypes,
3502
4154
  table: prop_types_exports.arrayOf(prop_types_exports.arrayOf(cellDataType)),
3503
4155
  tableFormat: prop_types_exports.shape({
@@ -3531,6 +4183,8 @@ PureTable.defaultProps = {
3531
4183
  onChange: lodash_exports.noop
3532
4184
  },
3533
4185
  showRowNumbers: false,
4186
+ showFooterTotals: false,
4187
+ showFooterPercentages: false,
3534
4188
  sortParams: {
3535
4189
  onSort: lodash_exports.noop
3536
4190
  },
@@ -3548,8 +4202,25 @@ var PureTable_default = withEmptyTableMessage(FixedSizeContainer_default(PureTab
3548
4202
  // src/Table/Table.tsx
3549
4203
  var computeVizProps = (_a) => {
3550
4204
  var props = __objRest(_a, []);
3551
- var _a2, _b, _c, _d;
4205
+ var _a2, _b, _c, _d, _e, _f, _g, _h, _i, _j;
3552
4206
  const vizProps = __spreadValues({}, props);
4207
+ vizProps.columnIds = (_d = (_c = (_b = (_a2 = vizProps.dataSources) == null ? void 0 : _a2.primary) == null ? void 0 : _b.data) == null ? void 0 : _c.fields.map((field) => {
4208
+ var _a3;
4209
+ return (_a3 = field.name) != null ? _a3 : field;
4210
+ })) != null ? _d : [];
4211
+ if (vizProps.columnIds.length === 0) {
4212
+ vizProps.columnIds = vizProps.headers;
4213
+ }
4214
+ vizProps.headersMetadata = (_g = (_f = (_e = vizProps.dataSources) == null ? void 0 : _e.primary) == null ? void 0 : _f.data) == null ? void 0 : _g.fields;
4215
+ const fieldsMeta = ((_j = (_i = (_h = vizProps.dataSources) == null ? void 0 : _h.primary) == null ? void 0 : _i.data) == null ? void 0 : _j.fields) || [];
4216
+ const totalsByField = buildTotalsByFieldFromFieldsMeta(fieldsMeta);
4217
+ if (Object.keys(totalsByField).length > 0) {
4218
+ vizProps.footers = __spreadProps(__spreadValues({}, vizProps.footers || {}), { totalsByField });
4219
+ const percentagesByField = buildPercentagesByFieldFromTotals(totalsByField);
4220
+ if (Object.keys(percentagesByField).length > 0) {
4221
+ vizProps.footers = __spreadProps(__spreadValues({}, vizProps.footers || {}), { percentagesByField });
4222
+ }
4223
+ }
3553
4224
  if (vizProps.columnFormat) {
3554
4225
  const columns = vizProps.columnFormat;
3555
4226
  const themeRowBackgroundColorOdd = vizProps.themeFunc("rowBackgroundColorOdd");
@@ -3575,13 +4246,6 @@ var computeVizProps = (_a) => {
3575
4246
  rowBackgroundColors
3576
4247
  }), columnProperties.rowColors && { rowColors });
3577
4248
  });
3578
- vizProps.columnIds = (_d = (_c = (_b = (_a2 = vizProps.dataSources) == null ? void 0 : _a2.primary) == null ? void 0 : _b.data) == null ? void 0 : _c.fields.map((field) => {
3579
- var _a3;
3580
- return (_a3 = field.name) != null ? _a3 : field;
3581
- })) != null ? _d : [];
3582
- if (vizProps.columnIds.length === 0) {
3583
- vizProps.columnIds = vizProps.headers;
3584
- }
3585
4249
  }
3586
4250
  if (vizProps.onOptionsChange) {
3587
4251
  const handleColumnFormatChange = (updatedColumnFormat) => {