@splunk/visualizations 28.1.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 (579) hide show
  1. package/Area.config.js +27 -0
  2. package/Area.config.js.map +2 -2
  3. package/Area.js +721 -354
  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 +753 -386
  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 +683 -320
  12. package/Bubble.js.map +4 -4
  13. package/CHANGELOG.external.md +33 -0
  14. package/ChoroplethSvg.js +569 -193
  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 +768 -401
  19. package/Column.js.map +4 -4
  20. package/Ellipse.js +592 -213
  21. package/Ellipse.js.map +4 -4
  22. package/Events.js +591 -200
  23. package/Events.js.map +4 -4
  24. package/FEATUREFLAGS.md +1 -0
  25. package/FillerGauge.js +564 -190
  26. package/FillerGauge.js.map +4 -4
  27. package/Image.js +589 -216
  28. package/Image.js.map +4 -4
  29. package/Line.config.js +28 -1
  30. package/Line.config.js.map +2 -2
  31. package/Line.js +736 -369
  32. package/Line.js.map +4 -4
  33. package/LinkGraph.js +1093 -690
  34. package/LinkGraph.js.map +4 -4
  35. package/Map.config.js +2 -0
  36. package/Map.config.js.map +2 -2
  37. package/Map.js +533 -141
  38. package/Map.js.map +4 -4
  39. package/Markdown.js +613 -229
  40. package/Markdown.js.map +4 -4
  41. package/MarkerGauge.js +543 -168
  42. package/MarkerGauge.js.map +4 -4
  43. package/ParallelCoordinates.js +564 -173
  44. package/ParallelCoordinates.js.map +4 -4
  45. package/Pie.js +650 -315
  46. package/Pie.js.map +4 -4
  47. package/Punchcard.js +588 -199
  48. package/Punchcard.js.map +4 -4
  49. package/Rectangle.js +603 -223
  50. package/Rectangle.js.map +4 -4
  51. package/Sankey.js +576 -200
  52. package/Sankey.js.map +4 -4
  53. package/Scatter.config.js +27 -0
  54. package/Scatter.config.js.map +2 -2
  55. package/Scatter.js +687 -325
  56. package/Scatter.js.map +4 -4
  57. package/SingleValue.js +540 -165
  58. package/SingleValue.js.map +4 -4
  59. package/SingleValueIcon.js +534 -159
  60. package/SingleValueIcon.js.map +4 -4
  61. package/SingleValueRadial.js +527 -152
  62. package/SingleValueRadial.js.map +4 -4
  63. package/Table.config.js +87 -32
  64. package/Table.config.js.map +4 -4
  65. package/Table.js +931 -441
  66. package/Table.js.map +4 -4
  67. package/Timeline.js +611 -272
  68. package/Timeline.js.map +4 -4
  69. package/common/Charting.js +49 -111
  70. package/common/Charting.js.map +4 -4
  71. package/common/GaugeMajorTicks.js +6 -14
  72. package/common/GaugeMajorTicks.js.map +2 -2
  73. package/common/GaugeValueMarker.js +6 -14
  74. package/common/GaugeValueMarker.js.map +2 -2
  75. package/common/OptionsDoc.js +3 -2
  76. package/common/OptionsDoc.js.map +2 -2
  77. package/common/SplunkVisualization.js +1 -1
  78. package/common/SplunkVisualization.js.map +2 -2
  79. package/common/TimeSeriesChartWrapper.js +485 -0
  80. package/common/TimeSeriesChartWrapper.js.map +7 -0
  81. package/common/chartingUtils.js +252 -1
  82. package/common/chartingUtils.js.map +4 -4
  83. package/common/shapeUtils.js.map +1 -1
  84. package/common/utils/hocUtils.js +1 -1
  85. package/common/utils/hocUtils.js.map +2 -2
  86. package/common/utils/mapUtils.js.map +1 -1
  87. package/common/utils/tableUtils.js +29 -28
  88. package/common/utils/tableUtils.js.map +2 -2
  89. package/common/withDashboardViz.js +551 -160
  90. package/common/withDashboardViz.js.map +4 -4
  91. package/dist/types/Area/Area.d.ts +13 -0
  92. package/dist/types/Area/Area.d.ts.map +1 -0
  93. package/dist/types/Area/areaUtils.d.ts +15 -0
  94. package/dist/types/Area/areaUtils.d.ts.map +1 -0
  95. package/dist/types/Area/config.d.ts +4 -0
  96. package/dist/types/Area/config.d.ts.map +1 -0
  97. package/dist/types/Area/index.d.ts +3 -0
  98. package/dist/types/Area/index.d.ts.map +1 -0
  99. package/dist/types/Bar/Bar.d.ts +13 -0
  100. package/dist/types/Bar/Bar.d.ts.map +1 -0
  101. package/dist/types/Bar/barUtils.d.ts +30 -0
  102. package/dist/types/Bar/barUtils.d.ts.map +1 -0
  103. package/dist/types/Bar/config.d.ts +4 -0
  104. package/dist/types/Bar/config.d.ts.map +1 -0
  105. package/dist/types/Bar/index.d.ts +3 -0
  106. package/dist/types/Bar/index.d.ts.map +1 -0
  107. package/dist/types/Bubble/Bubble.d.ts +9 -0
  108. package/dist/types/Bubble/Bubble.d.ts.map +1 -0
  109. package/dist/types/Bubble/bubbleUtils.d.ts +47 -0
  110. package/dist/types/Bubble/bubbleUtils.d.ts.map +1 -0
  111. package/dist/types/Bubble/config.d.ts +4 -0
  112. package/dist/types/Bubble/config.d.ts.map +1 -0
  113. package/dist/types/Bubble/index.d.ts +3 -0
  114. package/dist/types/Bubble/index.d.ts.map +1 -0
  115. package/dist/types/ChoroplethSvg/ChoroplethSvg.d.ts +24 -0
  116. package/dist/types/ChoroplethSvg/ChoroplethSvg.d.ts.map +1 -0
  117. package/dist/types/ChoroplethSvg/ErrorMessage/ErrorMessage.d.ts +6 -0
  118. package/dist/types/ChoroplethSvg/ErrorMessage/ErrorMessage.d.ts.map +1 -0
  119. package/dist/types/ChoroplethSvg/PureChoroplethSvg/PureChoroplethSvg.d.ts +29 -0
  120. package/dist/types/ChoroplethSvg/PureChoroplethSvg/PureChoroplethSvg.d.ts.map +1 -0
  121. package/dist/types/ChoroplethSvg/PureChoroplethSvg/SvgChoroplethDynamic.d.ts +34 -0
  122. package/dist/types/ChoroplethSvg/PureChoroplethSvg/SvgChoroplethDynamic.d.ts.map +1 -0
  123. package/dist/types/ChoroplethSvg/PureChoroplethSvg/SvgMutator.d.ts +144 -0
  124. package/dist/types/ChoroplethSvg/PureChoroplethSvg/SvgMutator.d.ts.map +1 -0
  125. package/dist/types/ChoroplethSvg/config.d.ts +4 -0
  126. package/dist/types/ChoroplethSvg/config.d.ts.map +1 -0
  127. package/dist/types/ChoroplethSvg/index.d.ts +3 -0
  128. package/dist/types/ChoroplethSvg/index.d.ts.map +1 -0
  129. package/dist/types/Column/Column.d.ts +11 -0
  130. package/dist/types/Column/Column.d.ts.map +1 -0
  131. package/dist/types/Column/columnUtils.d.ts +82 -0
  132. package/dist/types/Column/columnUtils.d.ts.map +1 -0
  133. package/dist/types/Column/config.d.ts +4 -0
  134. package/dist/types/Column/config.d.ts.map +1 -0
  135. package/dist/types/Column/index.d.ts +3 -0
  136. package/dist/types/Column/index.d.ts.map +1 -0
  137. package/dist/types/Ellipse/Ellipse.d.ts +7 -0
  138. package/dist/types/Ellipse/Ellipse.d.ts.map +1 -0
  139. package/dist/types/Ellipse/config.d.ts +4 -0
  140. package/dist/types/Ellipse/config.d.ts.map +1 -0
  141. package/dist/types/Ellipse/index.d.ts +3 -0
  142. package/dist/types/Ellipse/index.d.ts.map +1 -0
  143. package/dist/types/Events/EventUtils.d.ts +137 -0
  144. package/dist/types/Events/EventUtils.d.ts.map +1 -0
  145. package/dist/types/Events/Events.d.ts +19 -0
  146. package/dist/types/Events/Events.d.ts.map +1 -0
  147. package/dist/types/Events/PureEvents/FieldSummaryTooltip.d.ts +50 -0
  148. package/dist/types/Events/PureEvents/FieldSummaryTooltip.d.ts.map +1 -0
  149. package/dist/types/Events/PureEvents/PureEvents.d.ts +34 -0
  150. package/dist/types/Events/PureEvents/PureEvents.d.ts.map +1 -0
  151. package/dist/types/Events/PureEvents/TimeControlsPopover.d.ts +33 -0
  152. package/dist/types/Events/PureEvents/TimeControlsPopover.d.ts.map +1 -0
  153. package/dist/types/Events/config.d.ts +4 -0
  154. package/dist/types/Events/config.d.ts.map +1 -0
  155. package/dist/types/Events/index.d.ts +3 -0
  156. package/dist/types/Events/index.d.ts.map +1 -0
  157. package/dist/types/FillerGauge/FillerGauge.d.ts +13 -0
  158. package/dist/types/FillerGauge/FillerGauge.d.ts.map +1 -0
  159. package/dist/types/FillerGauge/PureFillerGauge/FillerGauge.d.ts +32 -0
  160. package/dist/types/FillerGauge/PureFillerGauge/FillerGauge.d.ts.map +1 -0
  161. package/dist/types/FillerGauge/config.d.ts +4 -0
  162. package/dist/types/FillerGauge/config.d.ts.map +1 -0
  163. package/dist/types/FillerGauge/index.d.ts +3 -0
  164. package/dist/types/FillerGauge/index.d.ts.map +1 -0
  165. package/dist/types/Image/Image.d.ts +13 -0
  166. package/dist/types/Image/Image.d.ts.map +1 -0
  167. package/dist/types/Image/ImageApi.d.ts +15 -0
  168. package/dist/types/Image/ImageApi.d.ts.map +1 -0
  169. package/dist/types/Image/config.d.ts +4 -0
  170. package/dist/types/Image/config.d.ts.map +1 -0
  171. package/dist/types/Image/index.d.ts +3 -0
  172. package/dist/types/Image/index.d.ts.map +1 -0
  173. package/dist/types/Line/Line.d.ts +13 -0
  174. package/dist/types/Line/Line.d.ts.map +1 -0
  175. package/dist/types/Line/config.d.ts +4 -0
  176. package/dist/types/Line/config.d.ts.map +1 -0
  177. package/dist/types/Line/index.d.ts +3 -0
  178. package/dist/types/Line/index.d.ts.map +1 -0
  179. package/dist/types/Line/lineUtils.d.ts +22 -0
  180. package/dist/types/Line/lineUtils.d.ts.map +1 -0
  181. package/dist/types/Line/mockdata/LineData.d.ts +184 -0
  182. package/dist/types/Line/mockdata/LineData.d.ts.map +1 -0
  183. package/dist/types/LinkGraph/ESTestDataSources.d.ts +32 -0
  184. package/dist/types/LinkGraph/ESTestDataSources.d.ts.map +1 -0
  185. package/dist/types/LinkGraph/ESTestTemplate.d.ts +2 -0
  186. package/dist/types/LinkGraph/ESTestTemplate.d.ts.map +1 -0
  187. package/dist/types/LinkGraph/LinkGraph.d.ts +22 -0
  188. package/dist/types/LinkGraph/LinkGraph.d.ts.map +1 -0
  189. package/dist/types/LinkGraph/PureLinkGraph/PureLinkGraph.d.ts +89 -0
  190. package/dist/types/LinkGraph/PureLinkGraph/PureLinkGraph.d.ts.map +1 -0
  191. package/dist/types/LinkGraph/PureLinkGraph/PureLinkGraphUtils.d.ts +74 -0
  192. package/dist/types/LinkGraph/PureLinkGraph/PureLinkGraphUtils.d.ts.map +1 -0
  193. package/dist/types/LinkGraph/PureLinkGraph/components/Edges.d.ts +9 -0
  194. package/dist/types/LinkGraph/PureLinkGraph/components/Edges.d.ts.map +1 -0
  195. package/dist/types/LinkGraph/PureLinkGraph/components/Field.d.ts +14 -0
  196. package/dist/types/LinkGraph/PureLinkGraph/components/Field.d.ts.map +1 -0
  197. package/dist/types/LinkGraph/PureLinkGraph/components/FieldStyles.d.ts +5 -0
  198. package/dist/types/LinkGraph/PureLinkGraph/components/FieldStyles.d.ts.map +1 -0
  199. package/dist/types/LinkGraph/PureLinkGraph/components/Graph.d.ts +49 -0
  200. package/dist/types/LinkGraph/PureLinkGraph/components/Graph.d.ts.map +1 -0
  201. package/dist/types/LinkGraph/PureLinkGraph/components/GraphStyles.d.ts +11 -0
  202. package/dist/types/LinkGraph/PureLinkGraph/components/GraphStyles.d.ts.map +1 -0
  203. package/dist/types/LinkGraph/PureLinkGraph/components/Node.d.ts +24 -0
  204. package/dist/types/LinkGraph/PureLinkGraph/components/Node.d.ts.map +1 -0
  205. package/dist/types/LinkGraph/PureLinkGraph/components/Nodes.d.ts +16 -0
  206. package/dist/types/LinkGraph/PureLinkGraph/components/Nodes.d.ts.map +1 -0
  207. package/dist/types/LinkGraph/PureLinkGraph/utils/iconLoader.d.ts +168 -0
  208. package/dist/types/LinkGraph/PureLinkGraph/utils/iconLoader.d.ts.map +1 -0
  209. package/dist/types/LinkGraph/config.d.ts +4 -0
  210. package/dist/types/LinkGraph/config.d.ts.map +1 -0
  211. package/dist/types/LinkGraph/index.d.ts +3 -0
  212. package/dist/types/LinkGraph/index.d.ts.map +1 -0
  213. package/dist/types/Map/Map.d.ts +28 -0
  214. package/dist/types/Map/Map.d.ts.map +1 -0
  215. package/dist/types/Map/MapContextDefault.d.ts +39 -0
  216. package/dist/types/Map/MapContextDefault.d.ts.map +1 -0
  217. package/dist/types/Map/PureMap/BubbleLayer.d.ts +51 -0
  218. package/dist/types/Map/PureMap/BubbleLayer.d.ts.map +1 -0
  219. package/dist/types/Map/PureMap/ChoroplethLayer.d.ts +36 -0
  220. package/dist/types/Map/PureMap/ChoroplethLayer.d.ts.map +1 -0
  221. package/dist/types/Map/PureMap/ClusterLayer.d.ts +17 -0
  222. package/dist/types/Map/PureMap/ClusterLayer.d.ts.map +1 -0
  223. package/dist/types/Map/PureMap/LocalChoroplethLayer.d.ts +18 -0
  224. package/dist/types/Map/PureMap/LocalChoroplethLayer.d.ts.map +1 -0
  225. package/dist/types/Map/PureMap/MapUtils.d.ts +141 -0
  226. package/dist/types/Map/PureMap/MapUtils.d.ts.map +1 -0
  227. package/dist/types/Map/PureMap/MarkerLayer.d.ts +34 -0
  228. package/dist/types/Map/PureMap/MarkerLayer.d.ts.map +1 -0
  229. package/dist/types/Map/PureMap/MarkerWrapper.d.ts +17 -0
  230. package/dist/types/Map/PureMap/MarkerWrapper.d.ts.map +1 -0
  231. package/dist/types/Map/PureMap/PureMap.d.ts +102 -0
  232. package/dist/types/Map/PureMap/PureMap.d.ts.map +1 -0
  233. package/dist/types/Map/PureMap/PureMapContainer.d.ts +15 -0
  234. package/dist/types/Map/PureMap/PureMapContainer.d.ts.map +1 -0
  235. package/dist/types/Map/PureMap/Tooltip.d.ts +20 -0
  236. package/dist/types/Map/PureMap/Tooltip.d.ts.map +1 -0
  237. package/dist/types/Map/PureMap/mockdata/data.d.ts +90 -0
  238. package/dist/types/Map/PureMap/mockdata/data.d.ts.map +1 -0
  239. package/dist/types/Map/config.d.ts +4 -0
  240. package/dist/types/Map/config.d.ts.map +1 -0
  241. package/dist/types/Map/index.d.ts +3 -0
  242. package/dist/types/Map/index.d.ts.map +1 -0
  243. package/dist/types/Markdown/Markdown.d.ts +31 -0
  244. package/dist/types/Markdown/Markdown.d.ts.map +1 -0
  245. package/dist/types/Markdown/config.d.ts +4 -0
  246. package/dist/types/Markdown/config.d.ts.map +1 -0
  247. package/dist/types/Markdown/index.d.ts +3 -0
  248. package/dist/types/Markdown/index.d.ts.map +1 -0
  249. package/dist/types/MarkerGauge/MarkerGauge.d.ts +55 -0
  250. package/dist/types/MarkerGauge/MarkerGauge.d.ts.map +1 -0
  251. package/dist/types/MarkerGauge/PureMarkerGauge/MarkerGauge.d.ts +72 -0
  252. package/dist/types/MarkerGauge/PureMarkerGauge/MarkerGauge.d.ts.map +1 -0
  253. package/dist/types/MarkerGauge/config.d.ts +4 -0
  254. package/dist/types/MarkerGauge/config.d.ts.map +1 -0
  255. package/dist/types/MarkerGauge/index.d.ts +3 -0
  256. package/dist/types/MarkerGauge/index.d.ts.map +1 -0
  257. package/dist/types/ParallelCoordinates/ParallelCoordinates.d.ts +58 -0
  258. package/dist/types/ParallelCoordinates/ParallelCoordinates.d.ts.map +1 -0
  259. package/dist/types/ParallelCoordinates/PureParallelCoordinates/PureParallelCoordinates.d.ts +69 -0
  260. package/dist/types/ParallelCoordinates/PureParallelCoordinates/PureParallelCoordinates.d.ts.map +1 -0
  261. package/dist/types/ParallelCoordinates/PureParallelCoordinates/src/ParallelCoordinatesCanvas.d.ts +30 -0
  262. package/dist/types/ParallelCoordinates/PureParallelCoordinates/src/ParallelCoordinatesCanvas.d.ts.map +1 -0
  263. package/dist/types/ParallelCoordinates/PureParallelCoordinates/src/ParallelCoordinatesChart.d.ts +42 -0
  264. package/dist/types/ParallelCoordinates/PureParallelCoordinates/src/ParallelCoordinatesChart.d.ts.map +1 -0
  265. package/dist/types/ParallelCoordinates/PureParallelCoordinates/src/ParallelCoordinatesPrompt.d.ts +22 -0
  266. package/dist/types/ParallelCoordinates/PureParallelCoordinates/src/ParallelCoordinatesPrompt.d.ts.map +1 -0
  267. package/dist/types/ParallelCoordinates/config.d.ts +4 -0
  268. package/dist/types/ParallelCoordinates/config.d.ts.map +1 -0
  269. package/dist/types/ParallelCoordinates/index.d.ts +3 -0
  270. package/dist/types/ParallelCoordinates/index.d.ts.map +1 -0
  271. package/dist/types/ParallelCoordinates/mockdata/arrayValueData.d.ts +6 -0
  272. package/dist/types/ParallelCoordinates/mockdata/arrayValueData.d.ts.map +1 -0
  273. package/dist/types/ParallelCoordinates/mockdata/sampleCarData.d.ts +6 -0
  274. package/dist/types/ParallelCoordinates/mockdata/sampleCarData.d.ts.map +1 -0
  275. package/dist/types/ParallelCoordinates/mockdata/sampleCarNumericalData.d.ts +6 -0
  276. package/dist/types/ParallelCoordinates/mockdata/sampleCarNumericalData.d.ts.map +1 -0
  277. package/dist/types/ParallelCoordinates/mockdata/sampleFoodData.d.ts +6 -0
  278. package/dist/types/ParallelCoordinates/mockdata/sampleFoodData.d.ts.map +1 -0
  279. package/dist/types/ParallelCoordinates/mockdata/sampleStringNumericalData.d.ts +6 -0
  280. package/dist/types/ParallelCoordinates/mockdata/sampleStringNumericalData.d.ts.map +1 -0
  281. package/dist/types/Pie/Pie.d.ts +15 -0
  282. package/dist/types/Pie/Pie.d.ts.map +1 -0
  283. package/dist/types/Pie/config.d.ts +4 -0
  284. package/dist/types/Pie/config.d.ts.map +1 -0
  285. package/dist/types/Pie/index.d.ts +3 -0
  286. package/dist/types/Pie/index.d.ts.map +1 -0
  287. package/dist/types/Pie/pieUtils.d.ts +78 -0
  288. package/dist/types/Pie/pieUtils.d.ts.map +1 -0
  289. package/dist/types/Punchcard/Punchcard.d.ts +13 -0
  290. package/dist/types/Punchcard/Punchcard.d.ts.map +1 -0
  291. package/dist/types/Punchcard/PurePunchcard/Punchcard.d.ts +40 -0
  292. package/dist/types/Punchcard/PurePunchcard/Punchcard.d.ts.map +1 -0
  293. package/dist/types/Punchcard/PurePunchcard/src/PunchcardAxis.d.ts +20 -0
  294. package/dist/types/Punchcard/PurePunchcard/src/PunchcardAxis.d.ts.map +1 -0
  295. package/dist/types/Punchcard/PurePunchcard/src/PunchcardBubble.d.ts +27 -0
  296. package/dist/types/Punchcard/PurePunchcard/src/PunchcardBubble.d.ts.map +1 -0
  297. package/dist/types/Punchcard/PurePunchcard/src/PunchcardChartArea.d.ts +40 -0
  298. package/dist/types/Punchcard/PurePunchcard/src/PunchcardChartArea.d.ts.map +1 -0
  299. package/dist/types/Punchcard/PurePunchcard/src/PunchcardGridLines.d.ts +17 -0
  300. package/dist/types/Punchcard/PurePunchcard/src/PunchcardGridLines.d.ts.map +1 -0
  301. package/dist/types/Punchcard/PurePunchcard/src/PunchcardLegend.d.ts +21 -0
  302. package/dist/types/Punchcard/PurePunchcard/src/PunchcardLegend.d.ts.map +1 -0
  303. package/dist/types/Punchcard/PurePunchcard/src/PunchcardRow.d.ts +10 -0
  304. package/dist/types/Punchcard/PurePunchcard/src/PunchcardRow.d.ts.map +1 -0
  305. package/dist/types/Punchcard/PurePunchcard/src/utils/punchcardUtils.d.ts +285 -0
  306. package/dist/types/Punchcard/PurePunchcard/src/utils/punchcardUtils.d.ts.map +1 -0
  307. package/dist/types/Punchcard/config.d.ts +4 -0
  308. package/dist/types/Punchcard/config.d.ts.map +1 -0
  309. package/dist/types/Punchcard/index.d.ts +3 -0
  310. package/dist/types/Punchcard/index.d.ts.map +1 -0
  311. package/dist/types/Punchcard/punchcardUtils.d.ts +32 -0
  312. package/dist/types/Punchcard/punchcardUtils.d.ts.map +1 -0
  313. package/dist/types/Rectangle/Rectangle.d.ts +14 -0
  314. package/dist/types/Rectangle/Rectangle.d.ts.map +1 -0
  315. package/dist/types/Rectangle/config.d.ts +4 -0
  316. package/dist/types/Rectangle/config.d.ts.map +1 -0
  317. package/dist/types/Rectangle/index.d.ts +3 -0
  318. package/dist/types/Rectangle/index.d.ts.map +1 -0
  319. package/dist/types/Sankey/PureSankey/PureSankey.d.ts +98 -0
  320. package/dist/types/Sankey/PureSankey/PureSankey.d.ts.map +1 -0
  321. package/dist/types/Sankey/PureSankey/SankeyLink.d.ts +33 -0
  322. package/dist/types/Sankey/PureSankey/SankeyLink.d.ts.map +1 -0
  323. package/dist/types/Sankey/PureSankey/SankeyModels.d.ts +48 -0
  324. package/dist/types/Sankey/PureSankey/SankeyModels.d.ts.map +1 -0
  325. package/dist/types/Sankey/PureSankey/SankeyNode.d.ts +38 -0
  326. package/dist/types/Sankey/PureSankey/SankeyNode.d.ts.map +1 -0
  327. package/dist/types/Sankey/PureSankey/SankeyTooltip.d.ts +43 -0
  328. package/dist/types/Sankey/PureSankey/SankeyTooltip.d.ts.map +1 -0
  329. package/dist/types/Sankey/PureSankey/SankeyUtils.d.ts +20 -0
  330. package/dist/types/Sankey/PureSankey/SankeyUtils.d.ts.map +1 -0
  331. package/dist/types/Sankey/PureSankey/mockdata/data.d.ts +35 -0
  332. package/dist/types/Sankey/PureSankey/mockdata/data.d.ts.map +1 -0
  333. package/dist/types/Sankey/Sankey.d.ts +31 -0
  334. package/dist/types/Sankey/Sankey.d.ts.map +1 -0
  335. package/dist/types/Sankey/config.d.ts +4 -0
  336. package/dist/types/Sankey/config.d.ts.map +1 -0
  337. package/dist/types/Sankey/index.d.ts +3 -0
  338. package/dist/types/Sankey/index.d.ts.map +1 -0
  339. package/dist/types/Scatter/Scatter.d.ts +11 -0
  340. package/dist/types/Scatter/Scatter.d.ts.map +1 -0
  341. package/dist/types/Scatter/config.d.ts +4 -0
  342. package/dist/types/Scatter/config.d.ts.map +1 -0
  343. package/dist/types/Scatter/index.d.ts +3 -0
  344. package/dist/types/Scatter/index.d.ts.map +1 -0
  345. package/dist/types/Scatter/mockdata/data.d.ts +35 -0
  346. package/dist/types/Scatter/mockdata/data.d.ts.map +1 -0
  347. package/dist/types/Scatter/scatterUtils.d.ts +47 -0
  348. package/dist/types/Scatter/scatterUtils.d.ts.map +1 -0
  349. package/dist/types/SingleValue/SingleValue.d.ts +16 -0
  350. package/dist/types/SingleValue/SingleValue.d.ts.map +1 -0
  351. package/dist/types/SingleValue/config.d.ts +4 -0
  352. package/dist/types/SingleValue/config.d.ts.map +1 -0
  353. package/dist/types/SingleValue/index.d.ts +3 -0
  354. package/dist/types/SingleValue/index.d.ts.map +1 -0
  355. package/dist/types/SingleValueBasic/index.d.ts +3 -0
  356. package/dist/types/SingleValueBasic/index.d.ts.map +1 -0
  357. package/dist/types/SingleValueIcon/SingleValueIcon.d.ts +29 -0
  358. package/dist/types/SingleValueIcon/SingleValueIcon.d.ts.map +1 -0
  359. package/dist/types/SingleValueIcon/config.d.ts +4 -0
  360. package/dist/types/SingleValueIcon/config.d.ts.map +1 -0
  361. package/dist/types/SingleValueIcon/index.d.ts +3 -0
  362. package/dist/types/SingleValueIcon/index.d.ts.map +1 -0
  363. package/dist/types/SingleValueRadial/PureSingleValueRadial/GaugeGraph.d.ts +20 -0
  364. package/dist/types/SingleValueRadial/PureSingleValueRadial/GaugeGraph.d.ts.map +1 -0
  365. package/dist/types/SingleValueRadial/PureSingleValueRadial/utils/gaugeUtils.d.ts +82 -0
  366. package/dist/types/SingleValueRadial/PureSingleValueRadial/utils/gaugeUtils.d.ts.map +1 -0
  367. package/dist/types/SingleValueRadial/SingleValueRadial.d.ts +17 -0
  368. package/dist/types/SingleValueRadial/SingleValueRadial.d.ts.map +1 -0
  369. package/dist/types/SingleValueRadial/config.d.ts +4 -0
  370. package/dist/types/SingleValueRadial/config.d.ts.map +1 -0
  371. package/dist/types/SingleValueRadial/index.d.ts +3 -0
  372. package/dist/types/SingleValueRadial/index.d.ts.map +1 -0
  373. package/dist/types/SparkLine/index.d.ts +2 -0
  374. package/dist/types/SparkLine/index.d.ts.map +1 -0
  375. package/dist/types/Table/PureTable.d.ts +50 -0
  376. package/dist/types/Table/PureTable.d.ts.map +1 -0
  377. package/dist/types/Table/Table.d.ts +10 -0
  378. package/dist/types/Table/Table.d.ts.map +1 -0
  379. package/dist/types/Table/cells/ArrayCell.d.ts +12 -0
  380. package/dist/types/Table/cells/ArrayCell.d.ts.map +1 -0
  381. package/dist/types/Table/cells/SparklineCell.d.ts +13 -0
  382. package/dist/types/Table/cells/SparklineCell.d.ts.map +1 -0
  383. package/dist/types/Table/cells/SwitchTableCell.d.ts +5 -0
  384. package/dist/types/Table/cells/SwitchTableCell.d.ts.map +1 -0
  385. package/dist/types/Table/cells/TextCell.d.ts +12 -0
  386. package/dist/types/Table/cells/TextCell.d.ts.map +1 -0
  387. package/dist/types/Table/cells/index.d.ts +5 -0
  388. package/dist/types/Table/cells/index.d.ts.map +1 -0
  389. package/dist/types/Table/config.d.ts +4 -0
  390. package/dist/types/Table/config.d.ts.map +1 -0
  391. package/dist/types/Table/hooks.d.ts +130 -0
  392. package/dist/types/Table/hooks.d.ts.map +1 -0
  393. package/dist/types/Table/index.d.ts +3 -0
  394. package/dist/types/Table/index.d.ts.map +1 -0
  395. package/dist/types/Timeline/PureTimeline/PureTimeline.d.ts +81 -0
  396. package/dist/types/Timeline/PureTimeline/PureTimeline.d.ts.map +1 -0
  397. package/dist/types/Timeline/PureTimeline/src/CursorPlugin.d.ts +8 -0
  398. package/dist/types/Timeline/PureTimeline/src/CursorPlugin.d.ts.map +1 -0
  399. package/dist/types/Timeline/PureTimeline/src/TimelineLegend.d.ts +28 -0
  400. package/dist/types/Timeline/PureTimeline/src/TimelineLegend.d.ts.map +1 -0
  401. package/dist/types/Timeline/PureTimeline/src/TimelinePlugin.d.ts +16 -0
  402. package/dist/types/Timeline/PureTimeline/src/TimelinePlugin.d.ts.map +1 -0
  403. package/dist/types/Timeline/PureTimeline/src/TimelineTooltip.d.ts +11 -0
  404. package/dist/types/Timeline/PureTimeline/src/TimelineTooltip.d.ts.map +1 -0
  405. package/dist/types/Timeline/PureTimeline/src/TimelineUplot.d.ts +22 -0
  406. package/dist/types/Timeline/PureTimeline/src/TimelineUplot.d.ts.map +1 -0
  407. package/dist/types/Timeline/PureTimeline/src/TimelineYAxis.d.ts +20 -0
  408. package/dist/types/Timeline/PureTimeline/src/TimelineYAxis.d.ts.map +1 -0
  409. package/dist/types/Timeline/PureTimeline/src/XAxisPlugin.d.ts +18 -0
  410. package/dist/types/Timeline/PureTimeline/src/XAxisPlugin.d.ts.map +1 -0
  411. package/dist/types/Timeline/PureTimeline/src/utils/timelineUtils.d.ts +34 -0
  412. package/dist/types/Timeline/PureTimeline/src/utils/timelineUtils.d.ts.map +1 -0
  413. package/dist/types/Timeline/Timeline.d.ts +22 -0
  414. package/dist/types/Timeline/Timeline.d.ts.map +1 -0
  415. package/dist/types/Timeline/config.d.ts +4 -0
  416. package/dist/types/Timeline/config.d.ts.map +1 -0
  417. package/dist/types/Timeline/index.d.ts +3 -0
  418. package/dist/types/Timeline/index.d.ts.map +1 -0
  419. package/dist/types/Timeline/mockdata/basicTimelineData.d.ts +76 -0
  420. package/dist/types/Timeline/mockdata/basicTimelineData.d.ts.map +1 -0
  421. package/dist/types/Timeline/mockdata/categoricalTimelineData.d.ts +31 -0
  422. package/dist/types/Timeline/mockdata/categoricalTimelineData.d.ts.map +1 -0
  423. package/dist/types/Timeline/mockdata/timelineDataSource.d.ts +52 -0
  424. package/dist/types/Timeline/mockdata/timelineDataSource.d.ts.map +1 -0
  425. package/dist/types/common/Charting.d.ts +46 -0
  426. package/dist/types/common/Charting.d.ts.map +1 -0
  427. package/dist/types/common/ChartingApi.d.ts +36 -0
  428. package/dist/types/common/ChartingApi.d.ts.map +1 -0
  429. package/dist/types/common/DocExampleWithVizSandbox.d.ts +22 -0
  430. package/dist/types/common/DocExampleWithVizSandbox.d.ts.map +1 -0
  431. package/dist/types/common/OverviewDoc.d.ts +20 -0
  432. package/dist/types/common/OverviewDoc.d.ts.map +1 -0
  433. package/dist/types/common/SplunkVisualization.d.ts +16 -0
  434. package/dist/types/common/SplunkVisualization.d.ts.map +1 -0
  435. package/dist/types/common/SplunkVisualizationApi.d.ts +16 -0
  436. package/dist/types/common/SplunkVisualizationApi.d.ts.map +1 -0
  437. package/dist/types/common/ThemedDefaults.d.ts +2 -0
  438. package/dist/types/common/ThemedDefaults.d.ts.map +1 -0
  439. package/dist/types/common/TimeSeriesChartWrapper.d.ts +7 -0
  440. package/dist/types/common/TimeSeriesChartWrapper.d.ts.map +1 -0
  441. package/dist/types/common/chartingUtils.d.ts +164 -0
  442. package/dist/types/common/chartingUtils.d.ts.map +1 -0
  443. package/dist/types/common/components/IconPlaceholder.d.ts +21 -0
  444. package/dist/types/common/components/IconPlaceholder.d.ts.map +1 -0
  445. package/dist/types/common/components/MissingPropsMessage.d.ts +28 -0
  446. package/dist/types/common/components/MissingPropsMessage.d.ts.map +1 -0
  447. package/dist/types/common/components/TrellisTitle.d.ts +10 -0
  448. package/dist/types/common/components/TrellisTitle.d.ts.map +1 -0
  449. package/dist/types/common/configContext/singleValueContext.d.ts +3 -0
  450. package/dist/types/common/configContext/singleValueContext.d.ts.map +1 -0
  451. package/dist/types/common/docUtils.d.ts +24 -0
  452. package/dist/types/common/docUtils.d.ts.map +1 -0
  453. package/dist/types/common/editorConfig/AxesChartColorAndStyle.d.ts +5 -0
  454. package/dist/types/common/editorConfig/AxesChartColorAndStyle.d.ts.map +1 -0
  455. package/dist/types/common/editorConfig/AxesChartDataConfig.d.ts +31 -0
  456. package/dist/types/common/editorConfig/AxesChartDataConfig.d.ts.map +1 -0
  457. package/dist/types/common/editorConfig/AxesChartDataDisplay.d.ts +14 -0
  458. package/dist/types/common/editorConfig/AxesChartDataDisplay.d.ts.map +1 -0
  459. package/dist/types/common/editorConfig/AxesChartLegend.d.ts +8 -0
  460. package/dist/types/common/editorConfig/AxesChartLegend.d.ts.map +1 -0
  461. package/dist/types/common/editorConfig/AxesChartXGridAndLabels.d.ts +6 -0
  462. package/dist/types/common/editorConfig/AxesChartXGridAndLabels.d.ts.map +1 -0
  463. package/dist/types/common/editorConfig/AxesChartY2GridAndLabels.d.ts +11 -0
  464. package/dist/types/common/editorConfig/AxesChartY2GridAndLabels.d.ts.map +1 -0
  465. package/dist/types/common/editorConfig/AxesChartYGridAndLabels.d.ts +4 -0
  466. package/dist/types/common/editorConfig/AxesChartYGridAndLabels.d.ts.map +1 -0
  467. package/dist/types/common/editorConfig/BackgroundColor.d.ts +10 -0
  468. package/dist/types/common/editorConfig/BackgroundColor.d.ts.map +1 -0
  469. package/dist/types/common/editorConfig/DynamicFillColorEditor.d.ts +29 -0
  470. package/dist/types/common/editorConfig/DynamicFillColorEditor.d.ts.map +1 -0
  471. package/dist/types/common/editorConfig/DynamicGaugeColorEditor.d.ts +29 -0
  472. package/dist/types/common/editorConfig/DynamicGaugeColorEditor.d.ts.map +1 -0
  473. package/dist/types/common/editorConfig/DynamicStrokeColorEditor.d.ts +29 -0
  474. package/dist/types/common/editorConfig/DynamicStrokeColorEditor.d.ts.map +1 -0
  475. package/dist/types/common/editorConfig/Gauge.d.ts +4 -0
  476. package/dist/types/common/editorConfig/Gauge.d.ts.map +1 -0
  477. package/dist/types/common/editorConfig/Legend.d.ts +4 -0
  478. package/dist/types/common/editorConfig/Legend.d.ts.map +1 -0
  479. package/dist/types/common/editorConfig/RadialBackgroundColor.d.ts +10 -0
  480. package/dist/types/common/editorConfig/RadialBackgroundColor.d.ts.map +1 -0
  481. package/dist/types/common/editorConfig/StaticFillColorEditor.d.ts +10 -0
  482. package/dist/types/common/editorConfig/StaticFillColorEditor.d.ts.map +1 -0
  483. package/dist/types/common/editorConfig/StaticGaugeColorEditor.d.ts +10 -0
  484. package/dist/types/common/editorConfig/StaticGaugeColorEditor.d.ts.map +1 -0
  485. package/dist/types/common/editorConfig/StaticStrokeColorEditor.d.ts +10 -0
  486. package/dist/types/common/editorConfig/StaticStrokeColorEditor.d.ts.map +1 -0
  487. package/dist/types/common/editorConfig/TrellisEditors.d.ts +66 -0
  488. package/dist/types/common/editorConfig/TrellisEditors.d.ts.map +1 -0
  489. package/dist/types/common/gaugeUtils.d.ts +387 -0
  490. package/dist/types/common/gaugeUtils.d.ts.map +1 -0
  491. package/dist/types/common/hocs/FixedSizeContainer.d.ts +9 -0
  492. package/dist/types/common/hocs/FixedSizeContainer.d.ts.map +1 -0
  493. package/dist/types/common/hocs/mockdata/trellisData.d.ts +1288 -0
  494. package/dist/types/common/hocs/mockdata/trellisData.d.ts.map +1 -0
  495. package/dist/types/common/hocs/withEditModeCover.d.ts +10 -0
  496. package/dist/types/common/hocs/withEditModeCover.d.ts.map +1 -0
  497. package/dist/types/common/hocs/withPlaceholder.d.ts +8 -0
  498. package/dist/types/common/hocs/withPlaceholder.d.ts.map +1 -0
  499. package/dist/types/common/hocs/withTrellis.d.ts +18 -0
  500. package/dist/types/common/hocs/withTrellis.d.ts.map +1 -0
  501. package/dist/types/common/hooks/useDeepMemo.d.ts +15 -0
  502. package/dist/types/common/hooks/useDeepMemo.d.ts.map +1 -0
  503. package/dist/types/common/hooks/useDownsampleDataSources.d.ts +7 -0
  504. package/dist/types/common/hooks/useDownsampleDataSources.d.ts.map +1 -0
  505. package/dist/types/common/hooks/useEventCallback.d.ts +9 -0
  506. package/dist/types/common/hooks/useEventCallback.d.ts.map +1 -0
  507. package/dist/types/common/hooks/useGetXAndYFields.d.ts +10 -0
  508. package/dist/types/common/hooks/useGetXAndYFields.d.ts.map +1 -0
  509. package/dist/types/common/hooks/usePagination.d.ts +21 -0
  510. package/dist/types/common/hooks/usePagination.d.ts.map +1 -0
  511. package/dist/types/common/hooks/usePrevious.d.ts +2 -0
  512. package/dist/types/common/hooks/usePrevious.d.ts.map +1 -0
  513. package/dist/types/common/hooks/useSorting.d.ts +17 -0
  514. package/dist/types/common/hooks/useSorting.d.ts.map +1 -0
  515. package/dist/types/common/hooks/useTrellisEnabled.d.ts +4 -0
  516. package/dist/types/common/hooks/useTrellisEnabled.d.ts.map +1 -0
  517. package/dist/types/common/interfaces/ChartEvent.d.ts +26 -0
  518. package/dist/types/common/interfaces/ChartEvent.d.ts.map +1 -0
  519. package/dist/types/common/interfaces/DashboardVizProps.d.ts +27 -0
  520. package/dist/types/common/interfaces/DashboardVizProps.d.ts.map +1 -0
  521. package/dist/types/common/interfaces/DataContract.d.ts +19 -0
  522. package/dist/types/common/interfaces/DataContract.d.ts.map +1 -0
  523. package/dist/types/common/interfaces/DataSource.d.ts +45 -0
  524. package/dist/types/common/interfaces/DataSource.d.ts.map +1 -0
  525. package/dist/types/common/interfaces/DefaultContext.d.ts +30 -0
  526. package/dist/types/common/interfaces/DefaultContext.d.ts.map +1 -0
  527. package/dist/types/common/interfaces/Editor.d.ts +23 -0
  528. package/dist/types/common/interfaces/Editor.d.ts.map +1 -0
  529. package/dist/types/common/interfaces/ExtendedDashViz.d.ts +7 -0
  530. package/dist/types/common/interfaces/ExtendedDashViz.d.ts.map +1 -0
  531. package/dist/types/common/interfaces/Object.d.ts +4 -0
  532. package/dist/types/common/interfaces/Object.d.ts.map +1 -0
  533. package/dist/types/common/interfaces/Overview.d.ts +14 -0
  534. package/dist/types/common/interfaces/Overview.d.ts.map +1 -0
  535. package/dist/types/common/interfaces/ThemedDefaults.d.ts +5 -0
  536. package/dist/types/common/interfaces/ThemedDefaults.d.ts.map +1 -0
  537. package/dist/types/common/interfaces/VizActionHandler.d.ts +15 -0
  538. package/dist/types/common/interfaces/VizActionHandler.d.ts.map +1 -0
  539. package/dist/types/common/interfaces/VizBehavior.d.ts +25 -0
  540. package/dist/types/common/interfaces/VizBehavior.d.ts.map +1 -0
  541. package/dist/types/common/interfaces/VizCategory.d.ts +16 -0
  542. package/dist/types/common/interfaces/VizCategory.d.ts.map +1 -0
  543. package/dist/types/common/interfaces/VizConfig.d.ts +34 -0
  544. package/dist/types/common/interfaces/VizConfig.d.ts.map +1 -0
  545. package/dist/types/common/interfaces/VizEvent.d.ts +13 -0
  546. package/dist/types/common/interfaces/VizEvent.d.ts.map +1 -0
  547. package/dist/types/common/interfaces/VizProps.d.ts +8 -0
  548. package/dist/types/common/interfaces/VizProps.d.ts.map +1 -0
  549. package/dist/types/common/interfaces/VizRegistry.d.ts +7 -0
  550. package/dist/types/common/interfaces/VizRegistry.d.ts.map +1 -0
  551. package/dist/types/common/interfaces/VizSize.d.ts +8 -0
  552. package/dist/types/common/interfaces/VizSize.d.ts.map +1 -0
  553. package/dist/types/common/interfaces/VizStatus.d.ts +2 -0
  554. package/dist/types/common/interfaces/VizStatus.d.ts.map +1 -0
  555. package/dist/types/common/interfaces/index.d.ts +19 -0
  556. package/dist/types/common/interfaces/index.d.ts.map +1 -0
  557. package/dist/types/common/shapeUtils.d.ts +26 -0
  558. package/dist/types/common/shapeUtils.d.ts.map +1 -0
  559. package/dist/types/common/utils/configUtils.d.ts +59 -0
  560. package/dist/types/common/utils/configUtils.d.ts.map +1 -0
  561. package/dist/types/common/utils/dataUtils.d.ts +31 -0
  562. package/dist/types/common/utils/dataUtils.d.ts.map +1 -0
  563. package/dist/types/common/utils/featureFlagUtils.d.ts +3 -0
  564. package/dist/types/common/utils/featureFlagUtils.d.ts.map +1 -0
  565. package/dist/types/common/utils/hocUtils.d.ts +12 -0
  566. package/dist/types/common/utils/hocUtils.d.ts.map +1 -0
  567. package/dist/types/common/utils/mapUtils.d.ts +2 -0
  568. package/dist/types/common/utils/mapUtils.d.ts.map +1 -0
  569. package/dist/types/common/utils/styleUtils.d.ts +2 -0
  570. package/dist/types/common/utils/styleUtils.d.ts.map +1 -0
  571. package/dist/types/common/utils/tableUtils.d.ts +3 -0
  572. package/dist/types/common/utils/tableUtils.d.ts.map +1 -0
  573. package/dist/types/common/utils/trellisUtils.d.ts +60 -0
  574. package/dist/types/common/utils/trellisUtils.d.ts.map +1 -0
  575. package/dist/types/common/utils/urlUtils.d.ts +2 -0
  576. package/dist/types/common/utils/urlUtils.d.ts.map +1 -0
  577. package/dist/types/common/withDashboardViz.d.ts +22 -0
  578. package/dist/types/common/withDashboardViz.d.ts.map +1 -0
  579. package/package.json +32 -34
package/Table.js CHANGED
@@ -72,50 +72,50 @@ __export(Table_exports2, {
72
72
  });
73
73
  module.exports = __toCommonJS(Table_exports2);
74
74
 
75
- // esm-externals:react
76
- var react_exports = {};
77
- __export(react_exports, {
78
- default: () => react_default
79
- });
80
- var defaultImport = __toESM(require("react"));
81
- __reExport(react_exports, require("react"));
82
- var react_default = "default" in defaultImport ? defaultImport.default : defaultImport;
83
-
84
75
  // esm-externals:lodash
85
76
  var lodash_exports = {};
86
77
  __export(lodash_exports, {
87
78
  default: () => lodash_default
88
79
  });
89
- var defaultImport2 = __toESM(require("lodash"));
80
+ var defaultImport = __toESM(require("lodash"));
90
81
  __reExport(lodash_exports, require("lodash"));
91
- var lodash_default = "default" in defaultImport2 ? defaultImport2.default : defaultImport2;
82
+ var lodash_default = "default" in defaultImport ? defaultImport.default : defaultImport;
92
83
 
93
84
  // esm-externals:@splunk/visualizations-shared/colorUtils
94
85
  var colorUtils_exports = {};
95
86
  __export(colorUtils_exports, {
96
87
  default: () => colorUtils_default
97
88
  });
98
- var defaultImport3 = __toESM(require("@splunk/visualizations-shared/colorUtils"));
89
+ var defaultImport2 = __toESM(require("@splunk/visualizations-shared/colorUtils"));
99
90
  __reExport(colorUtils_exports, require("@splunk/visualizations-shared/colorUtils"));
100
- var colorUtils_default = "default" in defaultImport3 ? defaultImport3.default : defaultImport3;
91
+ var colorUtils_default = "default" in defaultImport2 ? defaultImport2.default : defaultImport2;
101
92
 
102
93
  // esm-externals:@splunk/ui-utils/i18n
103
94
  var i18n_exports = {};
104
95
  __export(i18n_exports, {
105
96
  default: () => i18n_default
106
97
  });
107
- var defaultImport4 = __toESM(require("@splunk/ui-utils/i18n"));
98
+ var defaultImport3 = __toESM(require("@splunk/ui-utils/i18n"));
108
99
  __reExport(i18n_exports, require("@splunk/ui-utils/i18n"));
109
- var i18n_default = "default" in defaultImport4 ? defaultImport4.default : defaultImport4;
100
+ var i18n_default = "default" in defaultImport3 ? defaultImport3.default : defaultImport3;
110
101
 
111
102
  // esm-externals:@splunk/visualization-schemas
112
103
  var visualization_schemas_exports = {};
113
104
  __export(visualization_schemas_exports, {
114
105
  default: () => visualization_schemas_default
115
106
  });
116
- var defaultImport5 = __toESM(require("@splunk/visualization-schemas"));
107
+ var defaultImport4 = __toESM(require("@splunk/visualization-schemas"));
117
108
  __reExport(visualization_schemas_exports, require("@splunk/visualization-schemas"));
118
- var visualization_schemas_default = "default" in defaultImport5 ? defaultImport5.default : defaultImport5;
109
+ var visualization_schemas_default = "default" in defaultImport4 ? defaultImport4.default : defaultImport4;
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
119
 
120
120
  // esm-externals:@splunk/visualizations-shared/colorConstants
121
121
  var colorConstants_exports = {};
@@ -248,6 +248,16 @@ var size = {
248
248
  initialHeight: 300
249
249
  };
250
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"] },
251
261
  tableAlignByType: [
252
262
  { match: "string", value: "left" },
253
263
  { match: "number", value: "right" },
@@ -377,14 +387,6 @@ var timeFormattingConfig = {
377
387
  tooltip: (0, i18n_exports._)("For example: DD-MM-YYYY")
378
388
  }
379
389
  };
380
- var sequentialColorConfig = [
381
- { to: 20, value: "#D41F1F" },
382
- { from: 20, to: 40, value: "#D94E17" },
383
- { from: 40, to: 60, value: "#CBA700" },
384
- { from: 60, to: 80, value: "#669922" },
385
- { from: 80, value: "#118832" }
386
- ];
387
- var matchColorConfig = [{ match: "", value: "#5C33FF" }];
388
390
  var themes = {
389
391
  defaultBackgroundColor,
390
392
  defaultHeaderBackgroundColor: (props) => pick_default({
@@ -564,6 +566,50 @@ var editorConfig = [
564
566
  [
565
567
  __spreadValues({}, textAlignConfigTable)
566
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
+ ],
567
613
  [
568
614
  {
569
615
  label: (0, i18n_exports._)("Column-specific formatting"),
@@ -588,16 +634,16 @@ var editorConfig = [
588
634
  label: (0, i18n_exports._)("Ranges"),
589
635
  value: "rangeValue",
590
636
  defaults: {
591
- rowBackgroundColors: sequentialColorConfig,
592
- rowColors: sequentialColorConfig
637
+ rowBackgroundColors: defaultContext.colorRangeConfig,
638
+ rowColors: defaultContext.colorRangeConfig
593
639
  }
594
640
  },
595
641
  {
596
642
  label: (0, i18n_exports._)("Matches"),
597
643
  value: "matchValue",
598
644
  defaults: {
599
- rowBackgroundColors: matchColorConfig,
600
- rowColors: matchColorConfig
645
+ rowBackgroundColors: defaultContext.colorMatchConfig,
646
+ rowColors: defaultContext.colorMatchConfig
601
647
  }
602
648
  }
603
649
  ],
@@ -722,113 +768,154 @@ var config = {
722
768
  };
723
769
  var config_default = enhanceConfig(config);
724
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
+
803
+ // esm-externals:react
804
+ var react_exports = {};
805
+ __export(react_exports, {
806
+ default: () => react_default
807
+ });
808
+ var defaultImport15 = __toESM(require("react"));
809
+ __reExport(react_exports, require("react"));
810
+ var react_default = "default" in defaultImport15 ? defaultImport15.default : defaultImport15;
811
+
725
812
  // esm-externals:@splunk/themes/getSettingsFromThemedProps
726
813
  var getSettingsFromThemedProps_exports = {};
727
814
  __export(getSettingsFromThemedProps_exports, {
728
815
  default: () => getSettingsFromThemedProps_default
729
816
  });
730
- var defaultImport15 = __toESM(require("@splunk/themes/getSettingsFromThemedProps"));
817
+ var defaultImport16 = __toESM(require("@splunk/themes/getSettingsFromThemedProps"));
731
818
  __reExport(getSettingsFromThemedProps_exports, require("@splunk/themes/getSettingsFromThemedProps"));
732
- var getSettingsFromThemedProps_default = "default" in defaultImport15 ? defaultImport15.default : defaultImport15;
819
+ var getSettingsFromThemedProps_default = "default" in defaultImport16 ? defaultImport16.default : defaultImport16;
733
820
 
734
821
  // esm-externals:@splunk/visualization-encoding/Options
735
822
  var Options_exports = {};
736
823
  __export(Options_exports, {
737
824
  default: () => Options_default
738
825
  });
739
- var defaultImport16 = __toESM(require("@splunk/visualization-encoding/Options"));
826
+ var defaultImport17 = __toESM(require("@splunk/visualization-encoding/Options"));
740
827
  __reExport(Options_exports, require("@splunk/visualization-encoding/Options"));
741
- var Options_default = "default" in defaultImport16 ? defaultImport16.default : defaultImport16;
828
+ var Options_default = "default" in defaultImport17 ? defaultImport17.default : defaultImport17;
742
829
 
743
830
  // esm-externals:@splunk/visualizations-shared/SanitizeProps
744
831
  var SanitizeProps_exports = {};
745
832
  __export(SanitizeProps_exports, {
746
833
  default: () => SanitizeProps_default
747
834
  });
748
- var defaultImport17 = __toESM(require("@splunk/visualizations-shared/SanitizeProps"));
835
+ var defaultImport18 = __toESM(require("@splunk/visualizations-shared/SanitizeProps"));
749
836
  __reExport(SanitizeProps_exports, require("@splunk/visualizations-shared/SanitizeProps"));
750
- var SanitizeProps_default = "default" in defaultImport17 ? defaultImport17.default : defaultImport17;
837
+ var SanitizeProps_default = "default" in defaultImport18 ? defaultImport18.default : defaultImport18;
751
838
 
752
839
  // esm-externals:@splunk/visualization-context/TimezoneContext
753
840
  var TimezoneContext_exports = {};
754
841
  __export(TimezoneContext_exports, {
755
842
  default: () => TimezoneContext_default
756
843
  });
757
- var defaultImport18 = __toESM(require("@splunk/visualization-context/TimezoneContext"));
844
+ var defaultImport19 = __toESM(require("@splunk/visualization-context/TimezoneContext"));
758
845
  __reExport(TimezoneContext_exports, require("@splunk/visualization-context/TimezoneContext"));
759
- var TimezoneContext_default = "default" in defaultImport18 ? defaultImport18.default : defaultImport18;
846
+ var TimezoneContext_default = "default" in defaultImport19 ? defaultImport19.default : defaultImport19;
760
847
 
761
848
  // esm-externals:@splunk/moment
762
849
  var moment_exports = {};
763
850
  __export(moment_exports, {
764
851
  default: () => moment_default
765
852
  });
766
- var defaultImport19 = __toESM(require("@splunk/moment"));
853
+ var defaultImport20 = __toESM(require("@splunk/moment"));
767
854
  __reExport(moment_exports, require("@splunk/moment"));
768
- var moment_default = "default" in defaultImport19 ? defaultImport19.default : defaultImport19;
855
+ var moment_default = "default" in defaultImport20 ? defaultImport20.default : defaultImport20;
769
856
 
770
857
  // esm-externals:@splunk/visualization-context/FeatureFlagContext
771
858
  var FeatureFlagContext_exports = {};
772
859
  __export(FeatureFlagContext_exports, {
773
860
  default: () => FeatureFlagContext_default
774
861
  });
775
- var defaultImport20 = __toESM(require("@splunk/visualization-context/FeatureFlagContext"));
862
+ var defaultImport21 = __toESM(require("@splunk/visualization-context/FeatureFlagContext"));
776
863
  __reExport(FeatureFlagContext_exports, require("@splunk/visualization-context/FeatureFlagContext"));
777
- var FeatureFlagContext_default = "default" in defaultImport20 ? defaultImport20.default : defaultImport20;
864
+ var FeatureFlagContext_default = "default" in defaultImport21 ? defaultImport21.default : defaultImport21;
778
865
 
779
866
  // esm-externals:styled-components
780
867
  var styled_components_exports = {};
781
868
  __export(styled_components_exports, {
782
869
  default: () => styled_components_default
783
870
  });
784
- var defaultImport21 = __toESM(require("styled-components"));
871
+ var defaultImport22 = __toESM(require("styled-components"));
785
872
  __reExport(styled_components_exports, require("styled-components"));
786
- var styled_components_default = "default" in defaultImport21 ? defaultImport21.default : defaultImport21;
873
+ var styled_components_default = "default" in defaultImport22 ? defaultImport22.default : defaultImport22;
787
874
 
788
875
  // esm-externals:@splunk/visualizations-shared/hocUtils
789
876
  var hocUtils_exports = {};
790
877
  __export(hocUtils_exports, {
791
878
  default: () => hocUtils_default
792
879
  });
793
- var defaultImport22 = __toESM(require("@splunk/visualizations-shared/hocUtils"));
880
+ var defaultImport23 = __toESM(require("@splunk/visualizations-shared/hocUtils"));
794
881
  __reExport(hocUtils_exports, require("@splunk/visualizations-shared/hocUtils"));
795
- var hocUtils_default = "default" in defaultImport22 ? defaultImport22.default : defaultImport22;
882
+ var hocUtils_default = "default" in defaultImport23 ? defaultImport23.default : defaultImport23;
796
883
 
797
884
  // esm-externals:@splunk/visualizations-shared/JSONSchemaUtils
798
885
  var JSONSchemaUtils_exports = {};
799
886
  __export(JSONSchemaUtils_exports, {
800
887
  default: () => JSONSchemaUtils_default
801
888
  });
802
- var defaultImport23 = __toESM(require("@splunk/visualizations-shared/JSONSchemaUtils"));
889
+ var defaultImport24 = __toESM(require("@splunk/visualizations-shared/JSONSchemaUtils"));
803
890
  __reExport(JSONSchemaUtils_exports, require("@splunk/visualizations-shared/JSONSchemaUtils"));
804
- var JSONSchemaUtils_default = "default" in defaultImport23 ? defaultImport23.default : defaultImport23;
891
+ var JSONSchemaUtils_default = "default" in defaultImport24 ? defaultImport24.default : defaultImport24;
805
892
 
806
893
  // esm-externals:@splunk/async-dynamic-options-evaluator
807
894
  var async_dynamic_options_evaluator_exports = {};
808
895
  __export(async_dynamic_options_evaluator_exports, {
809
896
  default: () => async_dynamic_options_evaluator_default
810
897
  });
811
- var defaultImport24 = __toESM(require("@splunk/async-dynamic-options-evaluator"));
898
+ var defaultImport25 = __toESM(require("@splunk/async-dynamic-options-evaluator"));
812
899
  __reExport(async_dynamic_options_evaluator_exports, require("@splunk/async-dynamic-options-evaluator"));
813
- 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;
814
901
 
815
902
  // esm-externals:@splunk/ui-utils/id
816
903
  var id_exports = {};
817
904
  __export(id_exports, {
818
905
  default: () => id_default
819
906
  });
820
- var defaultImport25 = __toESM(require("@splunk/ui-utils/id"));
907
+ var defaultImport26 = __toESM(require("@splunk/ui-utils/id"));
821
908
  __reExport(id_exports, require("@splunk/ui-utils/id"));
822
- var id_default = "default" in defaultImport25 ? defaultImport25.default : defaultImport25;
909
+ var id_default = "default" in defaultImport26 ? defaultImport26.default : defaultImport26;
823
910
 
824
911
  // esm-externals:prop-types
825
912
  var prop_types_exports = {};
826
913
  __export(prop_types_exports, {
827
914
  default: () => prop_types_default
828
915
  });
829
- var defaultImport26 = __toESM(require("prop-types"));
916
+ var defaultImport27 = __toESM(require("prop-types"));
830
917
  __reExport(prop_types_exports, require("prop-types"));
831
- var prop_types_default = "default" in defaultImport26 ? defaultImport26.default : defaultImport26;
918
+ var prop_types_default = "default" in defaultImport27 ? defaultImport27.default : defaultImport27;
832
919
 
833
920
  // src/common/interfaces/VizActionHandler.ts
834
921
  var DefaultVizActionHandler = class {
@@ -923,7 +1010,7 @@ SplunkVisualization.propTypes = {
923
1010
  /**
924
1011
  *
925
1012
  */
926
- SplunkVisualization.defaultProps = {
1013
+ SplunkVisualization.defaults = {
927
1014
  // BaseVisualization in dashboard-visualizations uses 100% for width but 250 for height
928
1015
  width: "100%",
929
1016
  height: INITIAL_HEIGHT,
@@ -944,13 +1031,13 @@ var SplunkVisualization_default = SplunkVisualization;
944
1031
  // src/common/interfaces/DataSource.ts
945
1032
  var validSortDirs = ["asc", "desc", "none"];
946
1033
 
947
- // src/common/hooks/getSorting.ts
1034
+ // src/common/hooks/useSorting.ts
948
1035
  var SortParamsPropTypes = prop_types_exports.shape({
949
1036
  currentSortKey: prop_types_exports.string,
950
1037
  currentSortDir: prop_types_exports.oneOf(validSortDirs),
951
1038
  onSort: prop_types_exports.func
952
1039
  });
953
- var getSortingParams = ({ requestParams, onRequestParamsChange }) => {
1040
+ var useSortingParams = ({ requestParams, onRequestParamsChange }) => {
954
1041
  let currentSortKey;
955
1042
  let currentSortDir;
956
1043
  const nextSortDirMap = {
@@ -980,14 +1067,14 @@ var getSortingParams = ({ requestParams, onRequestParamsChange }) => {
980
1067
  };
981
1068
  };
982
1069
 
983
- // src/common/hooks/getPagination.ts
1070
+ // src/common/hooks/usePagination.ts
984
1071
  var PaginatorParamsPropTypes = prop_types_exports.shape({
985
1072
  isPaging: prop_types_exports.bool,
986
1073
  current: prop_types_exports.number,
987
1074
  totalPages: prop_types_exports.number,
988
1075
  onChange: prop_types_exports.func
989
1076
  });
990
- var getPaginationParams = ({
1077
+ var usePaginationParams = ({
991
1078
  requestParams,
992
1079
  meta,
993
1080
  onRequestParamsChange
@@ -1036,18 +1123,9 @@ var Message_exports = {};
1036
1123
  __export(Message_exports, {
1037
1124
  default: () => Message_default
1038
1125
  });
1039
- var defaultImport27 = __toESM(require("@splunk/visualizations-shared/Message"));
1126
+ var defaultImport28 = __toESM(require("@splunk/visualizations-shared/Message"));
1040
1127
  __reExport(Message_exports, require("@splunk/visualizations-shared/Message"));
1041
- var Message_default = "default" in defaultImport27 ? defaultImport27.default : defaultImport27;
1042
-
1043
- // esm-externals:@splunk/visualizations-shared/style
1044
- var style_exports = {};
1045
- __export(style_exports, {
1046
- default: () => style_default
1047
- });
1048
- var defaultImport28 = __toESM(require("@splunk/visualizations-shared/style"));
1049
- __reExport(style_exports, require("@splunk/visualizations-shared/style"));
1050
- var style_default = "default" in defaultImport28 ? defaultImport28.default : defaultImport28;
1128
+ var Message_default = "default" in defaultImport28 ? defaultImport28.default : defaultImport28;
1051
1129
 
1052
1130
  // esm-externals:@splunk/visualizations-shared/SizeAwareWrapper
1053
1131
  var SizeAwareWrapper_exports = {};
@@ -1058,6 +1136,85 @@ var defaultImport29 = __toESM(require("@splunk/visualizations-shared/SizeAwareWr
1058
1136
  __reExport(SizeAwareWrapper_exports, require("@splunk/visualizations-shared/SizeAwareWrapper"));
1059
1137
  var SizeAwareWrapper_default = "default" in defaultImport29 ? defaultImport29.default : defaultImport29;
1060
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
+
1061
1218
  // src/common/hocs/FixedSizeContainer.tsx
1062
1219
  var Item = styled_components_default.div.attrs(({ width }) => ({
1063
1220
  style: {
@@ -1108,7 +1265,7 @@ var withFixedSizeContainer = (Viz) => {
1108
1265
  FixSizeItem,
1109
1266
  {
1110
1267
  "data-test": "fix-size-item",
1111
- "data-splunk-visualization-version": "28.1.0 - 4a1bff08b",
1268
+ "data-splunk-visualization-version": "28.2.0 - 7eea200d8",
1112
1269
  width,
1113
1270
  height,
1114
1271
  backgroundColor
@@ -1121,76 +1278,6 @@ var withFixedSizeContainer = (Viz) => {
1121
1278
  };
1122
1279
  var FixedSizeContainer_default = withFixedSizeContainer;
1123
1280
 
1124
- // src/common/components/MissingPropsMessage.tsx
1125
- var isMissing = (v) => {
1126
- return v === null || v === void 0;
1127
- };
1128
- var missingKeys = (keys2, target) => keys2.filter((k) => isMissing(target[k]));
1129
- var propTypes = {
1130
- width: prop_types_exports.oneOfType([prop_types_exports.string, prop_types_exports.number]),
1131
- height: prop_types_exports.oneOfType([prop_types_exports.string, prop_types_exports.number]),
1132
- // eslint-disable-next-line react/no-unused-prop-types
1133
- backgroundColor: prop_types_exports.string,
1134
- missingProps: prop_types_exports.arrayOf(prop_types_exports.string)
1135
- };
1136
- var MissingPropsMessage = (props) => {
1137
- const { width, height, missingProps } = props;
1138
- return /* @__PURE__ */ react_exports.createElement(
1139
- Message_default,
1140
- {
1141
- "data-test": "message",
1142
- width,
1143
- height,
1144
- message: (0, i18n_exports._)(`Missing property: ${missingProps.join(", ")}`)
1145
- }
1146
- );
1147
- };
1148
- MissingPropsMessage.propTypes = propTypes;
1149
- MissingPropsMessage.defaultProps = {
1150
- width: "100%",
1151
- height: 250
1152
- };
1153
- var MissingPropsMessage_default = FixedSizeContainer_default(MissingPropsMessage);
1154
-
1155
- // src/common/utils/hocUtils.ts
1156
- var extendStaticWrapperProps = ({
1157
- Wrapper,
1158
- Visualization
1159
- }) => {
1160
- const extendProperties = ["propTypes", "defaultProps", "config"];
1161
- extendProperties.forEach((prop) => {
1162
- if (Visualization[prop]) {
1163
- Wrapper[prop] = Visualization[prop];
1164
- }
1165
- });
1166
- };
1167
-
1168
- // src/common/hocs/withEditModeCover.tsx
1169
- var Cover = styled_components_default.div`
1170
- position: absolute;
1171
- left: 0;
1172
- right: 0;
1173
- top: 0;
1174
- bottom: 0;
1175
- `;
1176
- var Blocker = styled_components_default.div.attrs({
1177
- "data-splunk-visualization-version": "28.1.0 - 4a1bff08b"
1178
- })`
1179
- position: relative;
1180
- width: 100%;
1181
- height: 100%;
1182
- `;
1183
- var withEditModeCover = (Visualization, disableEditModeCover) => {
1184
- const Wrapper = (props) => {
1185
- const { mode } = props;
1186
- const showEditCover = mode === "edit" && !disableEditModeCover;
1187
- 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" }));
1188
- };
1189
- extendStaticWrapperProps({ Wrapper, Visualization });
1190
- return Wrapper;
1191
- };
1192
- var withEditModeCover_default = withEditModeCover;
1193
-
1194
1281
  // src/common/components/IconPlaceholder.tsx
1195
1282
  var shouldShowIconPlaceholder = (dataSources, loading = false) => {
1196
1283
  const data = (0, lodash_exports.get)(dataSources, "primary.data.columns[0]", void 0);
@@ -1199,18 +1286,23 @@ var shouldShowIconPlaceholder = (dataSources, loading = false) => {
1199
1286
  const noFields = fields === void 0;
1200
1287
  return loading || noData || noFields;
1201
1288
  };
1202
- var propTypes2 = {
1203
- icon: prop_types_exports.func,
1204
- width: prop_types_exports.oneOfType([prop_types_exports.string, prop_types_exports.number]),
1205
- height: prop_types_exports.oneOfType([prop_types_exports.string, prop_types_exports.number]),
1206
- // eslint-disable-next-line react/no-unused-prop-types
1207
- backgroundColor: prop_types_exports.string,
1208
- iconColor: prop_types_exports.string
1209
- };
1210
1289
  var IconPlaceholder = (props) => {
1211
- 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") });
1212
1304
  if (icon) {
1213
- return react_exports.createElement(icon, {
1305
+ content = react_exports.createElement(icon, {
1214
1306
  style: {
1215
1307
  left: "50%",
1216
1308
  top: "50%",
@@ -1224,12 +1316,7 @@ var IconPlaceholder = (props) => {
1224
1316
  "data-test": "icon-placeholder"
1225
1317
  });
1226
1318
  }
1227
- return /* @__PURE__ */ react_exports.createElement(Message_default, { width, height, level: "warning", message: (0, i18n_exports._)("No DataSource Connected") });
1228
- };
1229
- IconPlaceholder.propTypes = propTypes2;
1230
- IconPlaceholder.defaultProps = {
1231
- width: "100%",
1232
- 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);
1233
1320
  };
1234
1321
  var IconPlaceholder_default = FixedSizeContainer_default(IconPlaceholder);
1235
1322
 
@@ -1239,11 +1326,17 @@ var withPlaceholder = (Visualization, useIconPlaceholder = shouldShowIconPlaceho
1239
1326
  const { themes: themes3 } = config2;
1240
1327
  const Wrapper = (props) => {
1241
1328
  var _a, _b;
1242
- 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;
1243
1336
  const showPlaceholder = useIconPlaceholder(dataSources, loading, options);
1244
- 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);
1245
- const icon = (_b = config2.placeholderIcon) != null ? _b : config2.icon;
1337
+ const icon = (_a = config2.placeholderIcon) != null ? _a : config2.icon;
1246
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);
1247
1340
  if (config2.supports.includes("placeholder" /* PLACEHOLDER */) && showPlaceholder) {
1248
1341
  return /* @__PURE__ */ react_exports.createElement(
1249
1342
  IconPlaceholder_default,
@@ -1269,9 +1362,9 @@ var numberUtils_exports = {};
1269
1362
  __export(numberUtils_exports, {
1270
1363
  default: () => numberUtils_default
1271
1364
  });
1272
- var defaultImport30 = __toESM(require("@splunk/visualizations-shared/numberUtils"));
1365
+ var defaultImport31 = __toESM(require("@splunk/visualizations-shared/numberUtils"));
1273
1366
  __reExport(numberUtils_exports, require("@splunk/visualizations-shared/numberUtils"));
1274
- var numberUtils_default = "default" in defaultImport30 ? defaultImport30.default : defaultImport30;
1367
+ var numberUtils_default = "default" in defaultImport31 ? defaultImport31.default : defaultImport31;
1275
1368
 
1276
1369
  // src/common/utils/dataUtils.ts
1277
1370
  var largestTriangleThreeBuckets = (data, threshold, preferredDownsampleIndices) => {
@@ -1651,9 +1744,9 @@ var FeatureFlags_exports = {};
1651
1744
  __export(FeatureFlags_exports, {
1652
1745
  default: () => FeatureFlags_default
1653
1746
  });
1654
- var defaultImport31 = __toESM(require("@splunk/visualization-context/FeatureFlags"));
1747
+ var defaultImport32 = __toESM(require("@splunk/visualization-context/FeatureFlags"));
1655
1748
  __reExport(FeatureFlags_exports, require("@splunk/visualization-context/FeatureFlags"));
1656
- var FeatureFlags_default = "default" in defaultImport31 ? defaultImport31.default : defaultImport31;
1749
+ var FeatureFlags_default = "default" in defaultImport32 ? defaultImport32.default : defaultImport32;
1657
1750
 
1658
1751
  // src/common/utils/featureFlagUtils.ts
1659
1752
  var getFeatureFlag = (context, flagName) => {
@@ -1671,9 +1764,9 @@ var trellisUtils_exports = {};
1671
1764
  __export(trellisUtils_exports, {
1672
1765
  default: () => trellisUtils_default
1673
1766
  });
1674
- var defaultImport32 = __toESM(require("@splunk/visualizations-shared/trellisUtils"));
1767
+ var defaultImport33 = __toESM(require("@splunk/visualizations-shared/trellisUtils"));
1675
1768
  __reExport(trellisUtils_exports, require("@splunk/visualizations-shared/trellisUtils"));
1676
- var trellisUtils_default = "default" in defaultImport32 ? defaultImport32.default : defaultImport32;
1769
+ var trellisUtils_default = "default" in defaultImport33 ? defaultImport33.default : defaultImport33;
1677
1770
 
1678
1771
  // src/common/utils/trellisUtils.ts
1679
1772
  var turnOffLegendDisplayWhenTrellisIsOn = (isTrellisOn, options) => {
@@ -1685,6 +1778,382 @@ var turnOffLegendDisplayWhenTrellisIsOn = (isTrellisOn, options) => {
1685
1778
  return {};
1686
1779
  };
1687
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
+
1688
2157
  // src/common/withDashboardViz.tsx
1689
2158
  var withDashboardViz = (opts) => {
1690
2159
  const {
@@ -1702,30 +2171,29 @@ var withDashboardViz = (opts) => {
1702
2171
  const DashboardViz = (props) => {
1703
2172
  var _a;
1704
2173
  const {
1705
- mode,
2174
+ mode = "view",
1706
2175
  hasEventHandlers,
1707
2176
  dataSources,
1708
2177
  // type of { [key: string]: DataSource }
1709
- options,
2178
+ options = {},
1710
2179
  context = {},
1711
2180
  width,
1712
2181
  height,
1713
- onComputedProps,
1714
- onEventTrigger,
2182
+ onComputedProps = lodash_exports.noop,
2183
+ onEventTrigger = SplunkVisualization_default.defaults.onEventTrigger,
1715
2184
  theme,
1716
- onRequestParamsChange
2185
+ onRequestParamsChange = lodash_exports.noop
1717
2186
  } = props;
1718
- const { serializedTimezone } = react_exports.useContext(TimezoneContext_default);
1719
- if (serializedTimezone) {
2187
+ const localeContext = react_exports.useContext(TimezoneContext_default);
2188
+ if (localeContext.serializedTimezone) {
1720
2189
  if (!moment_default.getDefaultSplunkTimezone()) {
1721
- moment_default.setDefaultSplunkTimezone(serializedTimezone);
2190
+ moment_default.setDefaultSplunkTimezone(localeContext.serializedTimezone);
1722
2191
  }
1723
2192
  }
1724
2193
  const themeFunc = (themeVar) => {
1725
2194
  var _a2, _b;
1726
2195
  return (_b = (_a2 = vizConfig.themes)[themeVar]) == null ? void 0 : _b.call(_a2, props);
1727
2196
  };
1728
- const bgColorFromTheme = themeFunc("defaultBackgroundColor");
1729
2197
  const {
1730
2198
  family: currentThemeFamily,
1731
2199
  colorScheme: currentThemeColorScheme,
@@ -1747,6 +2215,10 @@ var withDashboardViz = (opts) => {
1747
2215
  featureFlagContext && featureFlagContext.visualizations_enableTrellis
1748
2216
  );
1749
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;
1750
2222
  const isMounted = react_exports.useRef(true);
1751
2223
  const optionsToEvaluate = react_exports.useMemo(() => {
1752
2224
  var _a2;
@@ -1841,10 +2313,34 @@ var withDashboardViz = (opts) => {
1841
2313
  currentThemeDensity,
1842
2314
  optionsToEvaluate,
1843
2315
  downsampledDataSources,
1844
- serializedTimezone,
2316
+ localeContext.serializedTimezone,
1845
2317
  useAsyncEvaluatedOptions
1846
2318
  ]);
1847
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
+ }
1848
2344
  const clonedEvaluatedOptions = __spreadValues({}, evaluatedOptionsToUse);
1849
2345
  if (isTrellisOn) {
1850
2346
  clonedEvaluatedOptions.backgroundColor = clonedEvaluatedOptions == null ? void 0 : clonedEvaluatedOptions.trellisBackgroundColor;
@@ -1870,7 +2366,7 @@ var withDashboardViz = (opts) => {
1870
2366
  width,
1871
2367
  height,
1872
2368
  missingProps: missing,
1873
- backgroundColor: bgColorFromTheme
2369
+ backgroundColor: themeFunc("defaultBackgroundColor")
1874
2370
  }
1875
2371
  );
1876
2372
  }
@@ -1908,45 +2404,27 @@ var withDashboardViz = (opts) => {
1908
2404
  const computedVizProps = computeVizProps2(__spreadProps(__spreadValues(__spreadValues(__spreadValues({}, props), evaluatedOptionsToUse), eventCallbackProps), {
1909
2405
  themeFunc
1910
2406
  }));
1911
- let dataSourceMetadata = {};
1912
- const OptionKey = "paginateDataSourceKey";
1913
- const optsKey = (0, lodash_exports.has)(evaluatedOptionsToUse, OptionKey) && evaluatedOptionsToUse[OptionKey];
1914
- const paginateDataSourceKey = typeof optsKey === "string" ? optsKey : "primary";
1915
- if (vizConfig.supports.indexOf("page-and-sort" /* PAGE_AND_SORT */) > -1 && (0, lodash_exports.has)(dataSources, paginateDataSourceKey)) {
1916
- const requestParams = (0, lodash_exports.get)(dataSources, [paginateDataSourceKey, "requestParams"], {});
1917
- const meta = (0, lodash_exports.get)(dataSources, [paginateDataSourceKey, "meta"], {});
1918
- const handleRequestParamsChange = (payload) => onRequestParamsChange(paginateDataSourceKey, payload);
1919
- const sortParams = getSortingParams({
1920
- requestParams,
1921
- meta,
1922
- onRequestParamsChange: handleRequestParamsChange
1923
- });
1924
- const paginatorParams = getPaginationParams({
1925
- requestParams,
1926
- meta,
1927
- onRequestParamsChange: handleRequestParamsChange
1928
- });
1929
- dataSourceMetadata = {
1930
- sortParams,
1931
- paginatorParams
1932
- };
1933
- }
1934
2407
  if (useAsyncEvaluatedOptions && Object.keys(evaluatedOptionsToUse).length === 0) {
1935
2408
  return null;
1936
2409
  }
2410
+ let SanitizedViz = SanitizedReactViz;
2411
+ if (isAcceleratedRenderOn) {
2412
+ SanitizedViz = (0, SanitizeProps_exports.withSanitizedProps)(TimeSeriesChartWrapper_default);
2413
+ }
1937
2414
  return /* @__PURE__ */ react_exports.createElement(
1938
- SanitizedReactViz,
1939
- __spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues({
2415
+ SanitizedViz,
2416
+ __spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadProps(__spreadValues({}, SplunkVisualization_default.defaults), {
1940
2417
  mode,
1941
- width,
1942
- height
1943
- }, 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)
1944
2422
  );
1945
2423
  };
1946
2424
  DashboardViz.propTypes = __spreadValues(__spreadValues({}, SplunkVisualization_default.propTypes), ReactViz.propTypes);
1947
- DashboardViz.defaultProps = __spreadProps(__spreadValues(__spreadValues({}, SplunkVisualization_default.defaultProps), ReactViz.defaultProps), {
1948
- // using withTheme requires component to receive theme prop. In case the consumer did not provide ThemeProvider, a default empty object will prevent warnings.
1949
- 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
1950
2428
  });
1951
2429
  DashboardViz.config = vizConfig;
1952
2430
  return (0, styled_components_exports.withTheme)(
@@ -1960,69 +2438,39 @@ var debounce_exports = {};
1960
2438
  __export(debounce_exports, {
1961
2439
  default: () => debounce_default
1962
2440
  });
1963
- var defaultImport33 = __toESM(require("lodash/debounce"));
2441
+ var defaultImport36 = __toESM(require("lodash/debounce"));
1964
2442
  __reExport(debounce_exports, require("lodash/debounce"));
1965
- var debounce_default = "default" in defaultImport33 ? defaultImport33.default : defaultImport33;
2443
+ var debounce_default = "default" in defaultImport36 ? defaultImport36.default : defaultImport36;
1966
2444
 
1967
2445
  // esm-externals:@splunk/react-ui/Table
1968
2446
  var Table_exports = {};
1969
2447
  __export(Table_exports, {
1970
2448
  default: () => Table_default
1971
2449
  });
1972
- var defaultImport34 = __toESM(require("@splunk/react-ui/Table"));
2450
+ var defaultImport37 = __toESM(require("@splunk/react-ui/Table"));
1973
2451
  __reExport(Table_exports, require("@splunk/react-ui/Table"));
1974
- var Table_default = "default" in defaultImport34 ? defaultImport34.default : defaultImport34;
2452
+ var Table_default = "default" in defaultImport37 ? defaultImport37.default : defaultImport37;
1975
2453
 
1976
2454
  // esm-externals:@splunk/react-ui/Paginator
1977
2455
  var Paginator_exports = {};
1978
2456
  __export(Paginator_exports, {
1979
2457
  default: () => Paginator_default
1980
2458
  });
1981
- var defaultImport35 = __toESM(require("@splunk/react-ui/Paginator"));
2459
+ var defaultImport38 = __toESM(require("@splunk/react-ui/Paginator"));
1982
2460
  __reExport(Paginator_exports, require("@splunk/react-ui/Paginator"));
1983
- var Paginator_default = "default" in defaultImport35 ? defaultImport35.default : defaultImport35;
2461
+ var Paginator_default = "default" in defaultImport38 ? defaultImport38.default : defaultImport38;
1984
2462
 
1985
2463
  // esm-externals:@splunk/react-ui/Message
1986
2464
  var Message_exports2 = {};
1987
2465
  __export(Message_exports2, {
1988
2466
  default: () => Message_default2
1989
2467
  });
1990
- var defaultImport36 = __toESM(require("@splunk/react-ui/Message"));
2468
+ var defaultImport39 = __toESM(require("@splunk/react-ui/Message"));
1991
2469
  __reExport(Message_exports2, require("@splunk/react-ui/Message"));
1992
- var Message_default2 = "default" in defaultImport36 ? defaultImport36.default : defaultImport36;
1993
-
1994
- // src/common/utils/tableUtils.ts
1995
- var hasSummarySum = (fields) => {
1996
- return fields.some((field) => typeof field === "object" && field["summary.sum"] !== void 0);
1997
- };
1998
- var updateSumTotalValues = (primaryDataSource) => {
1999
- const { data } = primaryDataSource;
2000
- const { columns, fields } = data;
2001
- if (!data || !columns || !fields) {
2002
- return primaryDataSource;
2003
- }
2004
- if (hasSummarySum(fields)) {
2005
- fields.forEach((field, idx) => {
2006
- let footerTotal = "";
2007
- if (typeof field === "object" && field["summary.sum"] !== void 0) {
2008
- footerTotal = field["summary.sum"];
2009
- }
2010
- if (columns[idx]) {
2011
- columns[idx] = [...columns[idx], footerTotal];
2012
- }
2013
- });
2014
- }
2015
- return primaryDataSource;
2016
- };
2017
- var findFooterTotal = (headersMetadata) => {
2018
- return headersMetadata.reduce((total, field) => {
2019
- const value = field["summary.sum"] ? +field["summary.sum"] : 0;
2020
- return total + value;
2021
- }, 0);
2022
- };
2470
+ var Message_default2 = "default" in defaultImport39 ? defaultImport39.default : defaultImport39;
2023
2471
 
2024
2472
  // src/Table/hooks.tsx
2025
- var isArray = (v) => Array.isArray(v);
2473
+ var isArray2 = (v) => Array.isArray(v);
2026
2474
  var textOverflowStyles = {
2027
2475
  anywhere: {
2028
2476
  wordBreak: "break-all"
@@ -2075,7 +2523,7 @@ var getColumnFormatAlign = (columnFormat, currentColumn, currentRow) => {
2075
2523
  currentColumn.columnId,
2076
2524
  currentColumn.value
2077
2525
  );
2078
- 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])) {
2079
2527
  align = alignOption[currentRow];
2080
2528
  } else if (typeof alignOption === "string" && alignOption === "auto") {
2081
2529
  align = void 0;
@@ -2098,7 +2546,7 @@ var getColumnFormatCellType = (columnFormat, currentColumn, currentRow) => {
2098
2546
  currentColumn.columnId,
2099
2547
  currentColumn.value
2100
2548
  );
2101
- 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])) {
2102
2550
  cellType = cellTypes[currentRow];
2103
2551
  } else if (typeof cellTypes !== "undefined") {
2104
2552
  console.warn(
@@ -2117,7 +2565,7 @@ var getColumnFormatSparklineType = (columnFormat, currentColumn, currentRow) =>
2117
2565
  currentColumn.columnId,
2118
2566
  currentColumn.value
2119
2567
  );
2120
- 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])) {
2121
2569
  sparklineType = types[currentRow];
2122
2570
  } else if (typeof types !== "undefined") {
2123
2571
  console.warn(
@@ -2136,7 +2584,7 @@ var getColumnFormatData = (columnFormat, currentColumn, currentRow) => {
2136
2584
  currentColumn.columnId,
2137
2585
  currentColumn.value
2138
2586
  );
2139
- if (isArray(data)) {
2587
+ if (isArray2(data)) {
2140
2588
  datum = data[currentRow];
2141
2589
  } else if (typeof data !== "undefined") {
2142
2590
  console.warn(
@@ -2153,7 +2601,7 @@ var getColumnFormatColor = (columnFormat, currentColumn, currentRow, field) => {
2153
2601
  currentColumn.columnId,
2154
2602
  currentColumn.value
2155
2603
  );
2156
- if (isArray(colors) && (0, colorUtils_exports.isColor)(colors[currentRow])) {
2604
+ if (isArray2(colors) && (0, colorUtils_exports.isColor)(colors[currentRow])) {
2157
2605
  color = colors[currentRow];
2158
2606
  } else if (typeof colors !== "undefined") {
2159
2607
  console.warn(
@@ -2194,7 +2642,7 @@ var getColumnFormatHeaderAlign = (columnFormat, columnId, columnValue) => {
2194
2642
  var getTableFormatAlign = (tableFormat, currentColumn, currentRow) => {
2195
2643
  const alignOption = (0, lodash_exports.get)(tableFormat, "align");
2196
2644
  let align;
2197
- 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])) {
2198
2646
  align = alignOption[currentColumn][currentRow];
2199
2647
  } else if (typeof alignOption === "string" && (0, lodash_exports.includes)(visualization_schemas_exports.validAlignments, alignOption)) {
2200
2648
  align = alignOption;
@@ -2210,7 +2658,7 @@ var getTableFormatAlign = (tableFormat, currentColumn, currentRow) => {
2210
2658
  var getTableFormatCellType = (tableFormat, currentColumn, currentRow) => {
2211
2659
  const cellTypes = (0, lodash_exports.get)(tableFormat, "cellTypes");
2212
2660
  let cellType;
2213
- 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])) {
2214
2662
  cellType = cellTypes[currentColumn][currentRow];
2215
2663
  } else if (typeof cellTypes !== "undefined") {
2216
2664
  console.warn(
@@ -2224,7 +2672,7 @@ var getTableFormatCellType = (tableFormat, currentColumn, currentRow) => {
2224
2672
  var getTableFormatSparklineType = (tableFormat, currentColumn, currentRow) => {
2225
2673
  const types = (0, lodash_exports.get)(tableFormat, "sparklineTypes");
2226
2674
  let sparklineType;
2227
- 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])) {
2228
2676
  sparklineType = types[currentColumn][currentRow];
2229
2677
  } else if (typeof types !== "undefined") {
2230
2678
  console.warn(
@@ -2238,11 +2686,11 @@ var getTableFormatSparklineType = (tableFormat, currentColumn, currentRow) => {
2238
2686
  var getTableFormatColor = (tableFormat, currentColumn, currentRow, field) => {
2239
2687
  const colors = (0, lodash_exports.get)(tableFormat, field);
2240
2688
  let color;
2241
- 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])) {
2242
2690
  color = colors[currentColumn][currentRow];
2243
- } else if (isArray(colors) && (0, colorUtils_exports.isColor)(colors[currentRow])) {
2691
+ } else if (isArray2(colors) && (0, colorUtils_exports.isColor)(colors[currentRow])) {
2244
2692
  color = colors[currentRow];
2245
- } 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) {
2246
2694
  console.warn(
2247
2695
  `tableFormat.${field} needs to be an array of colors, provided ${JSON.stringify(
2248
2696
  colors
@@ -2266,7 +2714,7 @@ var getTableFormatSparklineAreaColor = (tableFormat, currentCol, currentRow) =>
2266
2714
  var getTableFormatData = (tableFormat, currentCol, currentRow) => {
2267
2715
  const data = (0, lodash_exports.get)(tableFormat, "data");
2268
2716
  let datum;
2269
- if (isArray(data) && isArray(data[currentCol])) {
2717
+ if (isArray2(data) && isArray2(data[currentCol])) {
2270
2718
  datum = data[currentCol][currentRow];
2271
2719
  } else if (typeof data !== "undefined") {
2272
2720
  console.warn(
@@ -2292,20 +2740,19 @@ var getTableFormatHeaderAlign = (tableFormat) => {
2292
2740
  var getAttributeFromColumnFormat = (attribute, columnFormat, columnId, columnValue) => (0, lodash_exports.get)(columnFormat, [columnId, attribute]) || (0, lodash_exports.get)(columnFormat, [columnValue, attribute]);
2293
2741
  var validValueSelector = (v1, v2, v3, defaultValue) => {
2294
2742
  const validTypes = ["string", "number"];
2295
- if (validTypes.includes(typeof v1) || isArray(v1)) {
2743
+ if (validTypes.includes(typeof v1) || isArray2(v1)) {
2296
2744
  return v1;
2297
2745
  }
2298
- if (validTypes.includes(typeof v2) || isArray(v2)) {
2746
+ if (validTypes.includes(typeof v2) || isArray2(v2)) {
2299
2747
  return v2;
2300
2748
  }
2301
- if (validTypes.includes(typeof v3) || isArray(v3)) {
2749
+ if (validTypes.includes(typeof v3) || isArray2(v3)) {
2302
2750
  return v3;
2303
2751
  }
2304
2752
  return defaultValue;
2305
2753
  };
2306
2754
  var useTable = (tableArgs = {}) => {
2307
2755
  let { table = [], headers = [], columnIds = [] } = tableArgs;
2308
- const { headersMetadata = [] } = tableArgs;
2309
2756
  const {
2310
2757
  headerVisibility = "inline",
2311
2758
  showRowNumbers = false,
@@ -2324,50 +2771,50 @@ var useTable = (tableArgs = {}) => {
2324
2771
  Array.from({ length: longestColumnLength }, (v, i) => correctedPaginationOffset + i + 1),
2325
2772
  ...table
2326
2773
  ];
2327
- if (isArray(tableFormat.align)) {
2774
+ if (isArray2(tableFormat.align)) {
2328
2775
  tableFormat.align = [
2329
2776
  new Array(longestColumnLength).fill("left"),
2330
2777
  ...tableFormat.align
2331
2778
  ];
2332
2779
  }
2333
- if (isArray(tableFormat.cellTypes)) {
2780
+ if (isArray2(tableFormat.cellTypes)) {
2334
2781
  tableFormat.cellTypes = [
2335
2782
  new Array(longestColumnLength).fill("TextCell"),
2336
2783
  ...tableFormat.cellTypes
2337
2784
  ];
2338
2785
  }
2339
- if (isArray(tableFormat.data)) {
2786
+ if (isArray2(tableFormat.data)) {
2340
2787
  tableFormat.data = [
2341
2788
  Array.from({ length: longestColumnLength }, (v, i) => `${i + 1}`),
2342
2789
  ...tableFormat.data
2343
2790
  ];
2344
2791
  }
2345
- if (isArray(tableFormat.rowBackgroundColors)) {
2346
- if (tableFormat.rowBackgroundColors.length > 0 && isArray(tableFormat.rowBackgroundColors[0])) {
2792
+ if (isArray2(tableFormat.rowBackgroundColors)) {
2793
+ if (tableFormat.rowBackgroundColors.length > 0 && isArray2(tableFormat.rowBackgroundColors[0])) {
2347
2794
  tableFormat.rowBackgroundColors = [
2348
2795
  new Array(longestColumnLength),
2349
2796
  ...tableFormat.rowBackgroundColors
2350
2797
  ];
2351
2798
  }
2352
2799
  }
2353
- if (isArray(tableFormat.rowColors)) {
2354
- if (tableFormat.rowColors.length > 0 && isArray(tableFormat.rowColors[0])) {
2800
+ if (isArray2(tableFormat.rowColors)) {
2801
+ if (tableFormat.rowColors.length > 0 && isArray2(tableFormat.rowColors[0])) {
2355
2802
  tableFormat.rowColors = [
2356
2803
  new Array(longestColumnLength),
2357
2804
  ...tableFormat.rowColors
2358
2805
  ];
2359
2806
  }
2360
2807
  }
2361
- if (isArray(tableFormat.sparklineColors)) {
2808
+ if (isArray2(tableFormat.sparklineColors)) {
2362
2809
  tableFormat.sparklineColors = [new Array(longestColumnLength), ...tableFormat.sparklineColors];
2363
2810
  }
2364
- if (isArray(tableFormat.sparklineAreaColors)) {
2811
+ if (isArray2(tableFormat.sparklineAreaColors)) {
2365
2812
  tableFormat.sparklineAreaColors = [
2366
2813
  new Array(longestColumnLength),
2367
2814
  ...tableFormat.sparklineAreaColors
2368
2815
  ];
2369
2816
  }
2370
- if (isArray(tableFormat.sparklineTypes)) {
2817
+ if (isArray2(tableFormat.sparklineTypes)) {
2371
2818
  tableFormat.sparklineTypes = [
2372
2819
  new Array(longestColumnLength).fill("area"),
2373
2820
  ...tableFormat.sparklineTypes
@@ -2394,106 +2841,141 @@ var useTable = (tableArgs = {}) => {
2394
2841
  color: (0, lodash_exports.has)(tableFormat, "headerColor") && (0, colorUtils_exports.isColor)(tableFormat.headerColor) && tableFormat.headerColor || void 0
2395
2842
  }
2396
2843
  };
2397
- const tableBody = {
2398
- rows: []
2399
- };
2844
+ const tableBody = { rows: [] };
2400
2845
  const tableFooter = {
2401
2846
  rows: []
2402
2847
  };
2403
- for (let currentRow = 0; currentRow < longestColumnLength; currentRow += 1) {
2404
- const row = {
2405
- key: `row-${currentRow}`,
2406
- index: currentRow,
2407
- cells: []
2408
- };
2409
- table.forEach((column, i) => {
2410
- const currentHeader = tableHeader.cells[i];
2411
- const value = validValueSelector(
2412
- getColumnFormatData(columnFormat, currentHeader, currentRow),
2413
- getTableFormatData(tableFormat, i, currentRow),
2414
- column[currentRow],
2415
- ""
2416
- );
2417
- const rawValue = column[currentRow];
2418
- const rowBackgroundColor = getColumnFormatRowBgColor(columnFormat, currentHeader, currentRow) || getTableFormatRowBgColor(tableFormat, i, currentRow) || void 0;
2419
- const rowColor = getColumnFormatRowColor(columnFormat, currentHeader, currentRow) || getTableFormatRowColor(tableFormat, i, currentRow) || void 0;
2420
- const align = getColumnFormatAlign(columnFormat, currentHeader, currentRow) || getTableFormatAlign(tableFormat, i, currentRow) || "left";
2421
- const cellType = getColumnFormatCellType(columnFormat, currentHeader, currentRow) || getTableFormatCellType(tableFormat, i, currentRow) || "TextCell";
2422
- const sparklineColor = getColumnFormatSparklineColor(columnFormat, currentHeader, currentRow) || getTableFormatSparklineColor(tableFormat, i, currentRow) || void 0;
2423
- const sparklineAreaColor = getColumnFormatSparklineAreaColor(columnFormat, currentHeader, currentRow) || getTableFormatSparklineAreaColor(tableFormat, i, currentRow) || void 0;
2424
- const sparklineType = getColumnFormatSparklineType(columnFormat, currentHeader, currentRow) || getTableFormatSparklineType(tableFormat, i, currentRow) || "area";
2425
- const key = generateKey(value, `${currentRow}-${i}`);
2426
- let additionalStyles = {};
2427
- const textOverflowType = getTextOverflowType(columnFormat, columnIds[i], currentHeader.value);
2428
- const textOverflowStyle = getOverflowStyles({
2429
- 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
+ });
2430
2905
  });
2431
- additionalStyles = __spreadValues(__spreadValues({}, additionalStyles), textOverflowStyle);
2432
- let showCell = true;
2433
- if (!showInternalFields && currentHeader.value.charAt(0) === "_" && currentHeader.value !== "_time") {
2434
- showCell = false;
2435
- }
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;
2436
2950
  row.cells.push({
2437
- key,
2438
- value,
2439
- rawValue,
2440
- align,
2441
- cellType,
2442
- rowIndex: currentRow,
2443
- columnIndex: i,
2444
- sparklineColor,
2445
- sparklineAreaColor,
2446
- sparklineType,
2447
- header: currentHeader.value,
2448
- style: __spreadValues({
2449
- backgroundColor: rowBackgroundColor,
2450
- color: rowColor
2451
- }, additionalStyles),
2452
- 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 } : {})
2453
2958
  });
2454
2959
  });
2455
- if (hasSummarySum(headersMetadata) && currentRow === longestColumnLength - 1) {
2456
- row.key = "footer-totals";
2457
- tableFooter.rows.push(row);
2458
- row.cells = row.cells.map((cell, i) => {
2459
- const headerCell = tableHeader.cells[i];
2460
- let newCell = __spreadValues({}, cell);
2461
- if (headerCell) {
2462
- newCell = __spreadProps(__spreadValues({}, newCell), {
2463
- style: __spreadProps(__spreadValues({}, newCell.style), {
2464
- backgroundColor: tableFormat.headerBackgroundColor
2465
- })
2466
- });
2467
- }
2468
- if (i === 0 && showRowNumbers) {
2469
- newCell = __spreadProps(__spreadValues({}, newCell), {
2470
- value: "",
2471
- rawValue: ""
2472
- });
2473
- }
2474
- return newCell;
2475
- });
2476
- } else {
2477
- tableBody.rows.push(row);
2478
- }
2479
- }
2480
- if (tableFooter.rows.length === 1 && hasSummarySum(headersMetadata)) {
2481
- const totalRowIndex = tableFooter.rows[0].index;
2482
- const footerTotal = findFooterTotal(headersMetadata);
2483
- const percentageRow = {
2484
- key: "footer-percentage",
2485
- index: totalRowIndex + 1,
2486
- cells: tableFooter.rows[0].cells.map((cell) => {
2487
- let percentageValue = "";
2488
- if (cell.rawValue !== "") {
2489
- percentageValue = footerTotal ? `${(0, numberUtils_exports.formatNumber)(+cell.rawValue / footerTotal * 100, 2)}%` : "";
2490
- }
2491
- return __spreadProps(__spreadValues({}, cell), {
2492
- value: percentageValue
2493
- });
2494
- })
2495
- };
2496
- tableFooter.rows.push(percentageRow);
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);
2497
2979
  }
2498
2980
  return {
2499
2981
  tableHeader,
@@ -2506,7 +2988,7 @@ var useTable = (tableArgs = {}) => {
2506
2988
  var SwitchTableCell = ({ type, children }) => children.filter((child) => child.type.displayName === type);
2507
2989
 
2508
2990
  // src/Table/cells/TextCell.tsx
2509
- var noop3 = () => void 0;
2991
+ var noop4 = () => void 0;
2510
2992
  var TextCell = ({ cell, useMouseOverEffect }) => {
2511
2993
  const cellStyle = react_exports.useMemo(() => __spreadValues({}, cell.style), [cell.style]);
2512
2994
  return /* @__PURE__ */ react_exports.createElement(
@@ -2518,7 +3000,7 @@ var TextCell = ({ cell, useMouseOverEffect }) => {
2518
3000
  "data-test-align-value": cell.align,
2519
3001
  "data-row-index": cell.rowIndex,
2520
3002
  "data-col-index": cell.columnIndex,
2521
- onClick: useMouseOverEffect ? noop3 : void 0
3003
+ onClick: useMouseOverEffect ? noop4 : void 0
2522
3004
  },
2523
3005
  cell.value.toString()
2524
3006
  );
@@ -2526,18 +3008,23 @@ var TextCell = ({ cell, useMouseOverEffect }) => {
2526
3008
  TextCell.displayName = "TextCell";
2527
3009
 
2528
3010
  // src/Table/cells/ArrayCell.tsx
2529
- 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;
2530
3017
  var ArrayCell = ({ cell, useMouseOverEffect }) => {
2531
3018
  const value = react_exports.useMemo(() => Array.isArray(cell.value) ? cell.value : [cell.value], [cell.value]);
2532
3019
  const cellStyle = react_exports.useMemo(() => __spreadValues({}, cell.style), [cell.style]);
2533
3020
  return /* @__PURE__ */ react_exports.createElement(
2534
- Table_default.Cell,
3021
+ StyledTableCell,
2535
3022
  {
2536
3023
  style: cellStyle,
2537
3024
  align: cell.align,
2538
3025
  "data-test-align-value": cell.align,
2539
3026
  "data-test-cell-type": "ArrayCell",
2540
- onClick: useMouseOverEffect ? noop4 : void 0
3027
+ onClick: useMouseOverEffect ? noop5 : void 0
2541
3028
  },
2542
3029
  value.map(
2543
3030
  (v, i) => /* @__PURE__ */ react_exports.createElement(
@@ -2560,9 +3047,9 @@ var Popover_exports = {};
2560
3047
  __export(Popover_exports, {
2561
3048
  default: () => Popover_default
2562
3049
  });
2563
- var defaultImport37 = __toESM(require("@splunk/react-ui/Popover"));
3050
+ var defaultImport40 = __toESM(require("@splunk/react-ui/Popover"));
2564
3051
  __reExport(Popover_exports, require("@splunk/react-ui/Popover"));
2565
- var Popover_default = "default" in defaultImport37 ? defaultImport37.default : defaultImport37;
3052
+ var Popover_default = "default" in defaultImport40 ? defaultImport40.default : defaultImport40;
2566
3053
 
2567
3054
  // src/SparkLine/SparkLine.jsx
2568
3055
  var StyledSvg = styled_components_default.svg`
@@ -3090,7 +3577,7 @@ var SparkLine_default = SparkLine;
3090
3577
  var paddingLeftRight = 5;
3091
3578
  var paddingTopBottom = 3;
3092
3579
  var parseSparklineData = (data) => (Array.isArray(data) ? data : [data]).map((d) => Number(d.toString())).map((d) => isNaN(d) ? null : d);
3093
- var noop5 = () => void 0;
3580
+ var noop6 = () => void 0;
3094
3581
  var svgStyle = { height: 0 };
3095
3582
  var dummySVG = /* @__PURE__ */ react_exports.createElement("svg", { style: svgStyle });
3096
3583
  var SparklineCell = ({
@@ -3136,7 +3623,7 @@ var SparklineCell = ({
3136
3623
  "data-test-cell-type": "SparklineCell",
3137
3624
  "data-row-index": cell.rowIndex,
3138
3625
  "data-col-index": cell.columnIndex,
3139
- onClick: useMouseOverEffect ? noop5 : void 0
3626
+ onClick: useMouseOverEffect ? noop6 : void 0
3140
3627
  },
3141
3628
  height ? /* @__PURE__ */ react_exports.createElement(
3142
3629
  SparkLine_default,
@@ -3172,7 +3659,7 @@ var TableHeadCell = styled_components_default(Table_default.HeadCell)`
3172
3659
  button > span {
3173
3660
  word-break: inherit;
3174
3661
  word-wrap: inherit;
3175
- white-space: ${({ textOverflowType }) => textOverflowType === "ellipsis" ? "nowrap" : "inherit"};
3662
+ white-space: ${(props) => props.textOverflowType === "ellipsis" ? "nowrap" : "inherit"};
3176
3663
  display: inline;
3177
3664
  }
3178
3665
  `;
@@ -3241,6 +3728,14 @@ var SUITableContainer = styled_components_default.div`
3241
3728
  }
3242
3729
  `}
3243
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
+
3244
3739
  /* To accomodate custom logic that diverges from default resizableFillLayout behavior - allows the columns to shrink beneath Table width when columns are fixed */
3245
3740
  [data-test="main-table"] {
3246
3741
  ${({ isFullyFixed }) => isFullyFixed && styled_components_exports.css`
@@ -3282,13 +3777,21 @@ var withEmptyTableMessage = (Viz) => {
3282
3777
  showRowNumbers,
3283
3778
  showInternalFields,
3284
3779
  headersMetadata,
3285
- tableFormat: __spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues({}, tableFormat), (tableFormat == null ? void 0 : tableFormat.headerAlign) && {
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) && {
3286
3785
  headerAlign: (0, lodash_exports.cloneDeep)(tableFormat.headerAlign)
3287
3786
  }), (tableFormat == null ? void 0 : tableFormat.align) && {
3288
3787
  align: (0, lodash_exports.cloneDeep)(tableFormat.align)
3289
3788
  }), (tableFormat == null ? void 0 : tableFormat.cellTypes) && {
3290
3789
  cellTypes: (0, lodash_exports.cloneDeep)(tableFormat.cellTypes)
3291
- }), (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
+ }),
3292
3795
  columnFormat,
3293
3796
  paginationOffset: paginatorParams == null ? void 0 : paginatorParams.current,
3294
3797
  count
@@ -3488,6 +3991,33 @@ var PureTable = (props) => {
3488
3991
  const isFullyFixed = visibleHeaderCells.length === numberOfFixedHeaders;
3489
3992
  const isHeaderHidden = headerVisibility === "none";
3490
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
+ };
3491
4021
  return /* @__PURE__ */ react_exports.createElement(
3492
4022
  VizTableContainer,
3493
4023
  {
@@ -3583,46 +4113,16 @@ var PureTable = (props) => {
3583
4113
  }
3584
4114
  ));
3585
4115
  }))
3586
- ), tableFooter && /* @__PURE__ */ react_exports.createElement(react_exports.Fragment, null, showFooterTotals && tableFooter.rows[0] && /* @__PURE__ */ react_exports.createElement(
3587
- Table_default.Row,
3588
- {
3589
- key: tableFooter.rows[0].key,
3590
- "data-test": "footer-row-totals",
3591
- "data-row-index": "0"
3592
- },
3593
- tableFooter.rows[0].cells.filter((c) => c.showCell).map(
3594
- (c) => /* @__PURE__ */ react_exports.createElement(
3595
- TextCell,
3596
- {
3597
- key: `footer-total-cell-${c.key}`,
3598
- cell: c,
3599
- useMouseOverEffect: false,
3600
- "data-test": "footer-total-cell"
3601
- }
3602
- )
3603
- )
3604
- ), showFooterPercentages && tableFooter.rows[1] && /* @__PURE__ */ react_exports.createElement(
3605
- Table_default.Row,
3606
- {
3607
- key: tableFooter.rows[1].key,
3608
- "data-test": "footer-row-percentages",
3609
- "data-row-index": "1"
3610
- },
3611
- tableFooter.rows[1].cells.filter((c) => c.showCell).map(
3612
- (c) => /* @__PURE__ */ react_exports.createElement(
3613
- TextCell,
3614
- {
3615
- key: `footer-percent-cell-${c.key}`,
3616
- cell: c,
3617
- useMouseOverEffect: false,
3618
- "data-test": "footer-percent-cell"
3619
- }
3620
- )
3621
- )
3622
- )))
4116
+ ), tableFooter && showFooterTotals && renderFooterRow("footer-totals", "footer-row-totals"), tableFooter && showFooterPercentages && renderFooterRow("footer-percentages", "footer-row-percentages"))
3623
4117
  )
3624
4118
  ),
3625
- 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
3626
4126
  );
3627
4127
  };
3628
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]))]);
@@ -3702,7 +4202,7 @@ var PureTable_default = withEmptyTableMessage(FixedSizeContainer_default(PureTab
3702
4202
  // src/Table/Table.tsx
3703
4203
  var computeVizProps = (_a) => {
3704
4204
  var props = __objRest(_a, []);
3705
- var _a2, _b, _c, _d, _e, _f, _g;
4205
+ var _a2, _b, _c, _d, _e, _f, _g, _h, _i, _j;
3706
4206
  const vizProps = __spreadValues({}, props);
3707
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) => {
3708
4208
  var _a3;
@@ -3712,6 +4212,15 @@ var computeVizProps = (_a) => {
3712
4212
  vizProps.columnIds = vizProps.headers;
3713
4213
  }
3714
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
+ }
3715
4224
  if (vizProps.columnFormat) {
3716
4225
  const columns = vizProps.columnFormat;
3717
4226
  const themeRowBackgroundColorOdd = vizProps.themeFunc("rowBackgroundColorOdd");
@@ -3761,31 +4270,12 @@ var computeVizProps = (_a) => {
3761
4270
  }
3762
4271
  return vizProps;
3763
4272
  };
3764
- var withTableFooter = (Viz) => {
3765
- const VizWithTableFooter = (_a) => {
3766
- var _b = _a, { dataSources } = _b, otherProps = __objRest(_b, ["dataSources"]);
3767
- var _a2;
3768
- if (!((_a2 = dataSources == null ? void 0 : dataSources.primary) == null ? void 0 : _a2.data)) {
3769
- return /* @__PURE__ */ react_exports.createElement(Viz, __spreadValues({}, otherProps));
3770
- }
3771
- const clonedDataSources = (0, lodash_exports.cloneDeep)(dataSources);
3772
- const { primary } = clonedDataSources;
3773
- clonedDataSources.primary = updateSumTotalValues(primary);
3774
- return /* @__PURE__ */ react_exports.createElement(Viz, __spreadValues({ dataSources: clonedDataSources }, otherProps));
3775
- };
3776
- VizWithTableFooter.propTypes = Viz.propTypes;
3777
- VizWithTableFooter.defaultProps = Viz.defaultProps;
3778
- VizWithTableFooter.config = Viz.config;
3779
- return VizWithTableFooter;
3780
- };
3781
- var Table = withTableFooter(
3782
- withDashboardViz_default({
3783
- ReactViz: PureTable_default,
3784
- vizConfig: config_default,
3785
- disableEditModeCover: true,
3786
- computeVizProps
3787
- })
3788
- );
4273
+ var Table = withDashboardViz_default({
4274
+ ReactViz: PureTable_default,
4275
+ vizConfig: config_default,
4276
+ disableEditModeCover: true,
4277
+ computeVizProps
4278
+ });
3789
4279
  var { themes: themes2 } = config_default;
3790
4280
  var Table_default2 = Table;
3791
4281
  //# sourceMappingURL=Table.js.map