@splunk/visualizations 28.1.0 → 28.2.1

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 +715 -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 +747 -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 +677 -320
  12. package/Bubble.js.map +4 -4
  13. package/CHANGELOG.external.md +49 -0
  14. package/ChoroplethSvg.js +563 -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 +762 -401
  19. package/Column.js.map +4 -4
  20. package/Ellipse.js +586 -213
  21. package/Ellipse.js.map +4 -4
  22. package/Events.js +585 -200
  23. package/Events.js.map +4 -4
  24. package/FEATUREFLAGS.md +1 -0
  25. package/FillerGauge.js +558 -190
  26. package/FillerGauge.js.map +4 -4
  27. package/Image.js +583 -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 +730 -369
  32. package/Line.js.map +4 -4
  33. package/LinkGraph.js +1087 -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 +527 -141
  38. package/Map.js.map +4 -4
  39. package/Markdown.js +607 -229
  40. package/Markdown.js.map +4 -4
  41. package/MarkerGauge.js +537 -168
  42. package/MarkerGauge.js.map +4 -4
  43. package/ParallelCoordinates.js +558 -173
  44. package/ParallelCoordinates.js.map +4 -4
  45. package/Pie.js +644 -315
  46. package/Pie.js.map +4 -4
  47. package/Punchcard.js +582 -199
  48. package/Punchcard.js.map +4 -4
  49. package/Rectangle.js +597 -223
  50. package/Rectangle.js.map +4 -4
  51. package/Sankey.js +570 -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 +681 -325
  56. package/Scatter.js.map +4 -4
  57. package/SingleValue.js +534 -165
  58. package/SingleValue.js.map +4 -4
  59. package/SingleValueIcon.js +528 -159
  60. package/SingleValueIcon.js.map +4 -4
  61. package/SingleValueRadial.js +521 -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 +925 -441
  66. package/Table.js.map +4 -4
  67. package/Timeline.js +605 -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 +545 -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.1 - b6faf8893"
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.1 - b6faf8893",
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,17 @@ 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
+ let content = /* @__PURE__ */ react_exports.createElement(Message_default, { width, height, level: "warning", message: (0, i18n_exports._)("No DataSource Connected") });
1212
1298
  if (icon) {
1213
- return react_exports.createElement(icon, {
1299
+ content = react_exports.createElement(icon, {
1214
1300
  style: {
1215
1301
  left: "50%",
1216
1302
  top: "50%",
@@ -1224,12 +1310,7 @@ var IconPlaceholder = (props) => {
1224
1310
  "data-test": "icon-placeholder"
1225
1311
  });
1226
1312
  }
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
1313
+ return /* @__PURE__ */ react_exports.createElement("div", { style: { width, height, background: backgroundColor } }, content);
1233
1314
  };
1234
1315
  var IconPlaceholder_default = FixedSizeContainer_default(IconPlaceholder);
1235
1316
 
@@ -1239,11 +1320,17 @@ var withPlaceholder = (Visualization, useIconPlaceholder = shouldShowIconPlaceho
1239
1320
  const { themes: themes3 } = config2;
1240
1321
  const Wrapper = (props) => {
1241
1322
  var _a, _b;
1242
- const { dataSources, loading, options, height, width } = props;
1323
+ const {
1324
+ dataSources,
1325
+ loading,
1326
+ options,
1327
+ height = SplunkVisualization_default.defaults.height,
1328
+ width = SplunkVisualization_default.defaults.width
1329
+ } = props;
1243
1330
  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;
1331
+ const icon = (_a = config2.placeholderIcon) != null ? _a : config2.icon;
1246
1332
  const iconColor = variables_default.contentColorActive(props);
1333
+ 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
1334
  if (config2.supports.includes("placeholder" /* PLACEHOLDER */) && showPlaceholder) {
1248
1335
  return /* @__PURE__ */ react_exports.createElement(
1249
1336
  IconPlaceholder_default,
@@ -1269,9 +1356,9 @@ var numberUtils_exports = {};
1269
1356
  __export(numberUtils_exports, {
1270
1357
  default: () => numberUtils_default
1271
1358
  });
1272
- var defaultImport30 = __toESM(require("@splunk/visualizations-shared/numberUtils"));
1359
+ var defaultImport31 = __toESM(require("@splunk/visualizations-shared/numberUtils"));
1273
1360
  __reExport(numberUtils_exports, require("@splunk/visualizations-shared/numberUtils"));
1274
- var numberUtils_default = "default" in defaultImport30 ? defaultImport30.default : defaultImport30;
1361
+ var numberUtils_default = "default" in defaultImport31 ? defaultImport31.default : defaultImport31;
1275
1362
 
1276
1363
  // src/common/utils/dataUtils.ts
1277
1364
  var largestTriangleThreeBuckets = (data, threshold, preferredDownsampleIndices) => {
@@ -1651,9 +1738,9 @@ var FeatureFlags_exports = {};
1651
1738
  __export(FeatureFlags_exports, {
1652
1739
  default: () => FeatureFlags_default
1653
1740
  });
1654
- var defaultImport31 = __toESM(require("@splunk/visualization-context/FeatureFlags"));
1741
+ var defaultImport32 = __toESM(require("@splunk/visualization-context/FeatureFlags"));
1655
1742
  __reExport(FeatureFlags_exports, require("@splunk/visualization-context/FeatureFlags"));
1656
- var FeatureFlags_default = "default" in defaultImport31 ? defaultImport31.default : defaultImport31;
1743
+ var FeatureFlags_default = "default" in defaultImport32 ? defaultImport32.default : defaultImport32;
1657
1744
 
1658
1745
  // src/common/utils/featureFlagUtils.ts
1659
1746
  var getFeatureFlag = (context, flagName) => {
@@ -1671,9 +1758,9 @@ var trellisUtils_exports = {};
1671
1758
  __export(trellisUtils_exports, {
1672
1759
  default: () => trellisUtils_default
1673
1760
  });
1674
- var defaultImport32 = __toESM(require("@splunk/visualizations-shared/trellisUtils"));
1761
+ var defaultImport33 = __toESM(require("@splunk/visualizations-shared/trellisUtils"));
1675
1762
  __reExport(trellisUtils_exports, require("@splunk/visualizations-shared/trellisUtils"));
1676
- var trellisUtils_default = "default" in defaultImport32 ? defaultImport32.default : defaultImport32;
1763
+ var trellisUtils_default = "default" in defaultImport33 ? defaultImport33.default : defaultImport33;
1677
1764
 
1678
1765
  // src/common/utils/trellisUtils.ts
1679
1766
  var turnOffLegendDisplayWhenTrellisIsOn = (isTrellisOn, options) => {
@@ -1685,6 +1772,382 @@ var turnOffLegendDisplayWhenTrellisIsOn = (isTrellisOn, options) => {
1685
1772
  return {};
1686
1773
  };
1687
1774
 
1775
+ // esm-externals:@splunk/visualization-canvas
1776
+ var visualization_canvas_exports = {};
1777
+ __export(visualization_canvas_exports, {
1778
+ default: () => visualization_canvas_default
1779
+ });
1780
+ var defaultImport34 = __toESM(require("@splunk/visualization-canvas"));
1781
+ __reExport(visualization_canvas_exports, require("@splunk/visualization-canvas"));
1782
+ var visualization_canvas_default = "default" in defaultImport34 ? defaultImport34.default : defaultImport34;
1783
+
1784
+ // src/common/components/VizStyleWrapper.jsx
1785
+ var VizStyleWrapper = styled_components_default.div.attrs(({ dataTestKey }) => ({
1786
+ "data-test": dataTestKey,
1787
+ "data-testid": dataTestKey
1788
+ }))`
1789
+ display: flex;
1790
+ justify-content: center;
1791
+ flex-direction: column;
1792
+ width: 100%;
1793
+ height: 100%;
1794
+ background-color: ${(props) => props.backgroundColor};
1795
+ `;
1796
+ VizStyleWrapper.displayName = "VizStyleWrapper";
1797
+ var VizStyleWrapper_default = VizStyleWrapper;
1798
+
1799
+ // esm-externals:@splunk/react-icons/Triangle
1800
+ var Triangle_exports = {};
1801
+ __export(Triangle_exports, {
1802
+ default: () => Triangle_default
1803
+ });
1804
+ var defaultImport35 = __toESM(require("@splunk/react-icons/Triangle"));
1805
+ __reExport(Triangle_exports, require("@splunk/react-icons/Triangle"));
1806
+ var Triangle_default = "default" in defaultImport35 ? defaultImport35.default : defaultImport35;
1807
+
1808
+ // src/common/chartingUtils.ts
1809
+ var DEFAULT_LINE_WIDTH = 2;
1810
+ var getAnnotationsForCanvas = ({
1811
+ annotationX,
1812
+ annotationColor,
1813
+ annotationLabel
1814
+ }) => (annotationX == null ? void 0 : annotationX.length) ? annotationX.map((timestamp, i) => ({
1815
+ key: annotationLabel == null ? void 0 : annotationLabel[i],
1816
+ time: timestamp,
1817
+ color: annotationColor == null ? void 0 : annotationColor[i]
1818
+ })) : [];
1819
+ var StyledTriangle = styled_components_default(Triangle_default)`
1820
+ color: ${(props) => props.eventColor || variables_default.severityColorNotice(props)};
1821
+ `;
1822
+ var triangleEventAnnotationRenderer = ({ event }) => {
1823
+ const eventWithColor = event;
1824
+ return react_default.createElement(StyledTriangle, {
1825
+ viewBox: "0 0 24 24",
1826
+ variant: "filled",
1827
+ eventColor: eventWithColor.color
1828
+ });
1829
+ };
1830
+ var canvasSupportedTimeSeriesCharts = ["splunk.line"];
1831
+ var isTimeSeriesCanvasRenderSupported = (vizConfigKey) => {
1832
+ return canvasSupportedTimeSeriesCharts.indexOf(vizConfigKey) > -1;
1833
+ };
1834
+ var filterChartDataFromInternalFields = (chartData) => {
1835
+ const { fields, columns } = chartData;
1836
+ const keepIndexes = fields.reduce((acc, field, index) => {
1837
+ const fieldName = typeof field === "object" ? field == null ? void 0 : field.name : field;
1838
+ if (!(fieldName == null ? void 0 : fieldName.startsWith("_")) || fieldName === "_time") {
1839
+ acc.push(index);
1840
+ }
1841
+ return acc;
1842
+ }, []);
1843
+ const filteredFields = keepIndexes.map((index) => fields[index]);
1844
+ const filteredColumns = keepIndexes.map((index) => columns[index]);
1845
+ return { fields: filteredFields, columns: filteredColumns };
1846
+ };
1847
+ var convert2DArrayToNumbers = (arr) => {
1848
+ return arr.map((subArray) => subArray.map((element) => parseFloat(element)));
1849
+ };
1850
+ var SideLegendWidth = 75;
1851
+ var commonLegendProps = { center: true, fontSize: 12, largerTiles: true, hideSeriesValue: true };
1852
+ var getLegend = (props) => {
1853
+ const legendPlacement = props == null ? void 0 : props.legendDisplay;
1854
+ switch (legendPlacement) {
1855
+ case "off":
1856
+ return false;
1857
+ case "left":
1858
+ return (0, visualization_canvas_exports.LeftLegendFactory)(__spreadValues({
1859
+ width: SideLegendWidth
1860
+ }, commonLegendProps));
1861
+ case "bottom":
1862
+ return (0, visualization_canvas_exports.BottomLegendFactory)(__spreadValues({
1863
+ wrap: true
1864
+ }, commonLegendProps));
1865
+ case "top":
1866
+ return (0, visualization_canvas_exports.TopLegendFactory)(__spreadValues({
1867
+ wrap: true
1868
+ }, commonLegendProps));
1869
+ default:
1870
+ return (0, visualization_canvas_exports.SideLegendFactory)(__spreadValues({
1871
+ width: SideLegendWidth
1872
+ }, commonLegendProps));
1873
+ }
1874
+ };
1875
+ var getComputedAxisTitles = (inputAxisTitle, fields, axisTitleVisibility) => {
1876
+ if (axisTitleVisibility === "collapsed") {
1877
+ return "";
1878
+ }
1879
+ let fieldTitle = fields.length > 1 ? "" : fields[0];
1880
+ if (!fieldTitle) {
1881
+ fieldTitle = "";
1882
+ }
1883
+ return (inputAxisTitle == null ? void 0 : inputAxisTitle.length) ? inputAxisTitle.trim() : fieldTitle;
1884
+ };
1885
+ var ellipsisAxisTitle = (axisTitle, containerSpacing, fontSize = 12) => {
1886
+ if (!axisTitle) {
1887
+ return "";
1888
+ }
1889
+ if (Number.isNaN(containerSpacing) || containerSpacing <= 0) {
1890
+ return axisTitle;
1891
+ }
1892
+ const availableHeight = containerSpacing * 0.6;
1893
+ const avgCharWidth = fontSize * 0.55;
1894
+ const maxChars = Math.floor(availableHeight / avgCharWidth);
1895
+ if (axisTitle.length <= maxChars) {
1896
+ return axisTitle;
1897
+ }
1898
+ if (maxChars <= 3) {
1899
+ return "...";
1900
+ }
1901
+ const availableChars = maxChars - 3;
1902
+ const halfChars = Math.floor(availableChars / 2);
1903
+ const start = axisTitle.slice(0, halfChars);
1904
+ const end = axisTitle.slice(-halfChars);
1905
+ return `${start}...${end}`;
1906
+ };
1907
+ var getFieldName = (field) => {
1908
+ const fieldName = typeof field === "object" ? field == null ? void 0 : field.name : field;
1909
+ return fieldName;
1910
+ };
1911
+ var getFieldNames = (fields) => {
1912
+ return fields.map((field) => getFieldName(field));
1913
+ };
1914
+ var getXScaleConfig = (label) => {
1915
+ const xConfig = { x: {} };
1916
+ xConfig.x.label = label;
1917
+ return xConfig;
1918
+ };
1919
+ var getYScaleConfig = (label, yAxisAbbreviation, yAxisScale) => {
1920
+ const scaleType = yAxisScale != null ? yAxisScale : "linear";
1921
+ const yConfig = { y: {} };
1922
+ yConfig.y.label = label;
1923
+ yConfig.y.type = scaleType;
1924
+ if (yAxisAbbreviation !== "none") {
1925
+ yConfig.y.tickFmt = (v) => (0, visualization_canvas_exports.shortenNumber)(v, 1);
1926
+ }
1927
+ if (yAxisAbbreviation === "none") {
1928
+ yConfig.y.width = 55;
1929
+ } else {
1930
+ yConfig.y.width = label && label.length > 0 ? 30 : 10;
1931
+ }
1932
+ return yConfig;
1933
+ };
1934
+ var getY2ScaleConfig = (label, axisAbbreviation, axisScale, roundAxisLabelsToInteger) => {
1935
+ const y2Config = { y2: {} };
1936
+ const scaleType = axisScale != null ? axisScale : "linear";
1937
+ y2Config.y2.label = label;
1938
+ y2Config.y2.side = "right";
1939
+ y2Config.y2.showGrid = false;
1940
+ y2Config.y2.type = scaleType;
1941
+ if (axisAbbreviation !== "none") {
1942
+ y2Config.y2.tickFmt = (v) => (0, visualization_canvas_exports.shortenNumber)(v, 1, roundAxisLabelsToInteger);
1943
+ } else if (roundAxisLabelsToInteger) {
1944
+ y2Config.y2.tickFmt = (v) => roundAxisLabelsToInteger ? Math.round(v).toString() : v.toString();
1945
+ }
1946
+ return y2Config;
1947
+ };
1948
+ var getSeriesOverrides = (yfields, y2fields, lineWidth, overlayFields, y2Enabled, nullValueMode) => {
1949
+ const seriesConfig = {};
1950
+ let spanGaps;
1951
+ let replaceNullsWithZero;
1952
+ if (nullValueMode === "gaps") {
1953
+ spanGaps = false;
1954
+ } else if (nullValueMode === "connect" || nullValueMode === "zero") {
1955
+ spanGaps = true;
1956
+ if (nullValueMode === "zero") {
1957
+ replaceNullsWithZero = true;
1958
+ }
1959
+ }
1960
+ yfields.forEach((field) => {
1961
+ seriesConfig[field] = {
1962
+ overrides: { width: lineWidth != null ? lineWidth : DEFAULT_LINE_WIDTH }
1963
+ };
1964
+ if (spanGaps !== void 0) {
1965
+ seriesConfig[field].overrides.spanGaps = spanGaps;
1966
+ }
1967
+ if (y2Enabled) {
1968
+ const shouldAssignToY2 = (
1969
+ // If y2Fields are present, assign all y2Fields to y2 scale
1970
+ (y2fields == null ? void 0 : y2fields.length) > 0 && y2fields.includes(field) || // Else, assign all overlayFields to y2 scale
1971
+ (!y2fields || y2fields.length === 0) && (overlayFields == null ? void 0 : overlayFields.includes(field))
1972
+ );
1973
+ if (shouldAssignToY2) {
1974
+ seriesConfig[field].overrides.scale = "y2";
1975
+ }
1976
+ }
1977
+ if (overlayFields == null ? void 0 : overlayFields.includes(field)) {
1978
+ seriesConfig[field].type = "line";
1979
+ }
1980
+ if (replaceNullsWithZero !== void 0) {
1981
+ seriesConfig[field].replaceNullsWithZero = replaceNullsWithZero;
1982
+ }
1983
+ });
1984
+ return seriesConfig;
1985
+ };
1986
+
1987
+ // src/common/TimeSeriesChartWrapper.tsx
1988
+ var TimeSeriesChartContainer = styled_components_default.div`
1989
+ overflow: hidden;
1990
+ ${(props) => (0, style_exports.toDimension)((0, lodash_exports.pick)(props, ["width", "height"]))};
1991
+
1992
+ canvas {
1993
+ position: absolute !important; // This is needed for canvas element export pdf/png to work correctly
1994
+ }
1995
+ `;
1996
+ var handleClick = (chartEvent, props) => {
1997
+ const payload = __spreadProps(__spreadValues({}, (0, lodash_exports.pick)(chartEvent, "value", "seriesKey")), {
1998
+ name: chartEvent.seriesKey
1999
+ });
2000
+ delete payload.seriesKey;
2001
+ const clickHandler = props == null ? void 0 : props.onClick;
2002
+ if (clickHandler) {
2003
+ clickHandler({
2004
+ type: "point.click",
2005
+ originalEvent: chartEvent,
2006
+ payload
2007
+ });
2008
+ }
2009
+ };
2010
+ var handleLegendClick = (chartEvent, props) => {
2011
+ const payload = {
2012
+ name: chartEvent
2013
+ };
2014
+ const clickHandler = props == null ? void 0 : props.onClick;
2015
+ if (clickHandler) {
2016
+ clickHandler({
2017
+ type: "legend.click",
2018
+ originalEvent: chartEvent,
2019
+ payload
2020
+ });
2021
+ }
2022
+ };
2023
+ var TimeSeriesChartWrapper = (props) => {
2024
+ const { width, height, chartData, options, userLocale, annotationX, annotationLabel, annotationColor } = props;
2025
+ const {
2026
+ backgroundColor,
2027
+ seriesColors: seriesColorsStr,
2028
+ fieldColors,
2029
+ "axisTitleX.text": xAxisTitleText,
2030
+ "axisTitleY.text": yAxisTitleText,
2031
+ "axisTitleY2.text": y2AxisTitleText,
2032
+ "axisTitleX.visibility": xAxisTitleVisibility,
2033
+ "axisTitleY.visibility": yAxisTitleVisibility,
2034
+ "axisTitleY2.visibility": y2AxisTitleVisibility,
2035
+ "axisY.abbreviation": yAxisAbbreviation,
2036
+ "axisY.scale": yAxisScale,
2037
+ "axisY2.abbreviation": y2AxisAbbreviation,
2038
+ "axisY2.fields": y2FieldsStr,
2039
+ "axisY2.scale": y2AxisScale,
2040
+ "axisY2.enabled": y2Enabled,
2041
+ "axisLabelsY2.integerUnits": y2IntegerUnits,
2042
+ "chart.overlayFields": overlayFieldsStr,
2043
+ "chart.nullValueMode": nullValueMode,
2044
+ lineWidth
2045
+ } = options;
2046
+ const seriesColors = seriesColorsStr ? JSON.parse(seriesColorsStr) : void 0;
2047
+ const seriesColorsByField = fieldColors ? JSON.parse(fieldColors) : void 0;
2048
+ const [containerWidth, setContainerWidth] = react_exports.useState(Number(props.width));
2049
+ const [containerHeight, setContainerHeight] = react_exports.useState(Number(props.height));
2050
+ const cachedHandleResize = react_exports.useCallback((w, h) => {
2051
+ setContainerWidth(w);
2052
+ setContainerHeight(h);
2053
+ }, []);
2054
+ const filteredChartData = filterChartDataFromInternalFields({
2055
+ fields: chartData.fields,
2056
+ columns: chartData.seriesList
2057
+ });
2058
+ const xField = getFieldName(filteredChartData.fields[0]);
2059
+ const yFields = getFieldNames(
2060
+ filteredChartData.fields.length > 1 ? filteredChartData.fields.slice(1) : []
2061
+ );
2062
+ const y2Fields = y2FieldsStr ? y2FieldsStr.split(",").map((f) => f.trim()) : [];
2063
+ const overlayFields = overlayFieldsStr ? overlayFieldsStr.split(",").map((f) => f.trim()) : [];
2064
+ let xAxisTitle = getComputedAxisTitles(xAxisTitleText, [xField], xAxisTitleVisibility);
2065
+ xAxisTitle = ellipsisAxisTitle(xAxisTitle, containerWidth);
2066
+ let yAxisTitle = getComputedAxisTitles(yAxisTitleText, yFields, yAxisTitleVisibility);
2067
+ yAxisTitle = ellipsisAxisTitle(yAxisTitle, containerHeight);
2068
+ const fieldsForY2Axis = y2Fields.length > 0 ? y2Fields : overlayFields;
2069
+ let y2AxisTitle = getComputedAxisTitles(y2AxisTitleText, fieldsForY2Axis, y2AxisTitleVisibility);
2070
+ y2AxisTitle = ellipsisAxisTitle(y2AxisTitle, containerHeight);
2071
+ const xScaleConfig = getXScaleConfig(xAxisTitle);
2072
+ const yScaleConfig = getYScaleConfig(yAxisTitle, yAxisAbbreviation, yAxisScale);
2073
+ let y2ScaleConfig = {};
2074
+ if (y2Enabled) {
2075
+ y2ScaleConfig = getY2ScaleConfig(y2AxisTitle, y2AxisAbbreviation, y2AxisScale, y2IntegerUnits);
2076
+ }
2077
+ const uplotContainerElement = (0, react_exports.useRef)(null);
2078
+ const seriesDataFormatted = [
2079
+ filteredChartData.columns[0],
2080
+ ...convert2DArrayToNumbers(filteredChartData.columns.slice(1))
2081
+ ];
2082
+ chartData.fields = filteredChartData.fields;
2083
+ chartData.columns = seriesDataFormatted;
2084
+ const seriesOverrides = getSeriesOverrides(
2085
+ yFields,
2086
+ y2Fields,
2087
+ lineWidth,
2088
+ overlayFields,
2089
+ y2Enabled,
2090
+ nullValueMode
2091
+ );
2092
+ const chartingEventAnnotations = getAnnotationsForCanvas({
2093
+ annotationX,
2094
+ annotationColor,
2095
+ annotationLabel
2096
+ });
2097
+ const MemoizedChart = react_exports.memo(visualization_canvas_exports.TimeSeriesChart);
2098
+ const scaleConfig = __spreadValues(__spreadValues(__spreadValues({}, xScaleConfig), yScaleConfig), y2ScaleConfig);
2099
+ const memoizedChart = (0, react_exports.useMemo)(
2100
+ () => /* @__PURE__ */ react_exports.createElement(
2101
+ MemoizedChart,
2102
+ {
2103
+ data: chartData,
2104
+ width: containerWidth,
2105
+ height: containerHeight,
2106
+ seriesColors,
2107
+ seriesColorsByField,
2108
+ seriesConfig: seriesOverrides,
2109
+ legend: getLegend(props),
2110
+ scaleConfig,
2111
+ timestampFormat: "expanded",
2112
+ onCrosshairClick: (event) => handleClick(event, props),
2113
+ onSeriesClick: (event) => handleLegendClick(event, props),
2114
+ userLocale,
2115
+ events: chartingEventAnnotations,
2116
+ eventsConfig: { renderer: triangleEventAnnotationRenderer }
2117
+ }
2118
+ ),
2119
+ [
2120
+ MemoizedChart,
2121
+ chartData,
2122
+ containerWidth,
2123
+ containerHeight,
2124
+ seriesColors,
2125
+ seriesColorsByField,
2126
+ seriesOverrides,
2127
+ lineWidth,
2128
+ props,
2129
+ scaleConfig,
2130
+ userLocale,
2131
+ chartingEventAnnotations
2132
+ ]
2133
+ );
2134
+ const memoizedVisualization = (0, react_exports.useMemo)(() => {
2135
+ return /* @__PURE__ */ react_exports.createElement(VizStyleWrapper_default, { backgroundColor }, memoizedChart);
2136
+ }, [backgroundColor]);
2137
+ return /* @__PURE__ */ react_exports.createElement(
2138
+ TimeSeriesChartContainer,
2139
+ {
2140
+ height,
2141
+ width,
2142
+ ref: uplotContainerElement,
2143
+ "data-test": "timeseries-chart-wrapper"
2144
+ },
2145
+ /* @__PURE__ */ react_exports.createElement(SizeAwareWrapper_default, { width, height, onResize: cachedHandleResize }),
2146
+ memoizedVisualization
2147
+ );
2148
+ };
2149
+ var TimeSeriesChartWrapper_default = TimeSeriesChartWrapper;
2150
+
1688
2151
  // src/common/withDashboardViz.tsx
1689
2152
  var withDashboardViz = (opts) => {
1690
2153
  const {
@@ -1702,30 +2165,29 @@ var withDashboardViz = (opts) => {
1702
2165
  const DashboardViz = (props) => {
1703
2166
  var _a;
1704
2167
  const {
1705
- mode,
2168
+ mode = "view",
1706
2169
  hasEventHandlers,
1707
2170
  dataSources,
1708
2171
  // type of { [key: string]: DataSource }
1709
- options,
2172
+ options = {},
1710
2173
  context = {},
1711
2174
  width,
1712
2175
  height,
1713
- onComputedProps,
1714
- onEventTrigger,
2176
+ onComputedProps = lodash_exports.noop,
2177
+ onEventTrigger = SplunkVisualization_default.defaults.onEventTrigger,
1715
2178
  theme,
1716
- onRequestParamsChange
2179
+ onRequestParamsChange = lodash_exports.noop
1717
2180
  } = props;
1718
- const { serializedTimezone } = react_exports.useContext(TimezoneContext_default);
1719
- if (serializedTimezone) {
2181
+ const localeContext = react_exports.useContext(TimezoneContext_default);
2182
+ if (localeContext.serializedTimezone) {
1720
2183
  if (!moment_default.getDefaultSplunkTimezone()) {
1721
- moment_default.setDefaultSplunkTimezone(serializedTimezone);
2184
+ moment_default.setDefaultSplunkTimezone(localeContext.serializedTimezone);
1722
2185
  }
1723
2186
  }
1724
2187
  const themeFunc = (themeVar) => {
1725
2188
  var _a2, _b;
1726
2189
  return (_b = (_a2 = vizConfig.themes)[themeVar]) == null ? void 0 : _b.call(_a2, props);
1727
2190
  };
1728
- const bgColorFromTheme = themeFunc("defaultBackgroundColor");
1729
2191
  const {
1730
2192
  family: currentThemeFamily,
1731
2193
  colorScheme: currentThemeColorScheme,
@@ -1747,6 +2209,10 @@ var withDashboardViz = (opts) => {
1747
2209
  featureFlagContext && featureFlagContext.visualizations_enableTrellis
1748
2210
  );
1749
2211
  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 */;
2212
+ const isAcceleratedRenderFeatureFlagOn = Boolean(
2213
+ featureFlagContext == null ? void 0 : featureFlagContext.visualizations_enableAcceleratedRender
2214
+ );
2215
+ const isAcceleratedRenderOn = isAcceleratedRenderFeatureFlagOn && isTimeSeriesCanvasRenderSupported(vizConfig.key) && (options == null ? void 0 : options.acceleratedRender) === true;
1750
2216
  const isMounted = react_exports.useRef(true);
1751
2217
  const optionsToEvaluate = react_exports.useMemo(() => {
1752
2218
  var _a2;
@@ -1841,10 +2307,34 @@ var withDashboardViz = (opts) => {
1841
2307
  currentThemeDensity,
1842
2308
  optionsToEvaluate,
1843
2309
  downsampledDataSources,
1844
- serializedTimezone,
2310
+ localeContext.serializedTimezone,
1845
2311
  useAsyncEvaluatedOptions
1846
2312
  ]);
1847
2313
  const evaluatedOptionsToUse = !useAsyncEvaluatedOptions ? evaluatedOptions : evaluatedOptionsAsync;
2314
+ let dataSourceMetadata = {};
2315
+ const OptionKey = "paginateDataSourceKey";
2316
+ const optsKey = (0, lodash_exports.has)(evaluatedOptionsToUse, OptionKey) && evaluatedOptionsToUse[OptionKey];
2317
+ const paginateDataSourceKey = typeof optsKey === "string" ? optsKey : "primary";
2318
+ const requestParams = (0, lodash_exports.get)(dataSources, [paginateDataSourceKey, "requestParams"], {});
2319
+ const meta = (0, lodash_exports.get)(dataSources, [paginateDataSourceKey, "meta"], {});
2320
+ const handleRequestParamsChange = (payload) => onRequestParamsChange(paginateDataSourceKey, payload);
2321
+ const sortParams = useSortingParams({
2322
+ requestParams,
2323
+ meta,
2324
+ onRequestParamsChange: handleRequestParamsChange
2325
+ });
2326
+ const paginatorParams = usePaginationParams({
2327
+ requestParams,
2328
+ meta,
2329
+ onRequestParamsChange: handleRequestParamsChange
2330
+ });
2331
+ dataSourceMetadata = {
2332
+ sortParams,
2333
+ paginatorParams
2334
+ };
2335
+ if (vizConfig.supports.indexOf("page-and-sort" /* PAGE_AND_SORT */) === -1 && !(0, lodash_exports.has)(dataSources, paginateDataSourceKey)) {
2336
+ dataSourceMetadata = {};
2337
+ }
1848
2338
  const clonedEvaluatedOptions = __spreadValues({}, evaluatedOptionsToUse);
1849
2339
  if (isTrellisOn) {
1850
2340
  clonedEvaluatedOptions.backgroundColor = clonedEvaluatedOptions == null ? void 0 : clonedEvaluatedOptions.trellisBackgroundColor;
@@ -1870,7 +2360,7 @@ var withDashboardViz = (opts) => {
1870
2360
  width,
1871
2361
  height,
1872
2362
  missingProps: missing,
1873
- backgroundColor: bgColorFromTheme
2363
+ backgroundColor: themeFunc("defaultBackgroundColor")
1874
2364
  }
1875
2365
  );
1876
2366
  }
@@ -1908,45 +2398,27 @@ var withDashboardViz = (opts) => {
1908
2398
  const computedVizProps = computeVizProps2(__spreadProps(__spreadValues(__spreadValues(__spreadValues({}, props), evaluatedOptionsToUse), eventCallbackProps), {
1909
2399
  themeFunc
1910
2400
  }));
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
2401
  if (useAsyncEvaluatedOptions && Object.keys(evaluatedOptionsToUse).length === 0) {
1935
2402
  return null;
1936
2403
  }
2404
+ let SanitizedViz = SanitizedReactViz;
2405
+ if (isAcceleratedRenderOn) {
2406
+ SanitizedViz = (0, SanitizeProps_exports.withSanitizedProps)(TimeSeriesChartWrapper_default);
2407
+ }
1937
2408
  return /* @__PURE__ */ react_exports.createElement(
1938
- SanitizedReactViz,
1939
- __spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues({
2409
+ SanitizedViz,
2410
+ __spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadProps(__spreadValues({}, SplunkVisualization_default.defaults), {
1940
2411
  mode,
1941
- width,
1942
- height
1943
- }, downsamplingProps), evaluatedOptionsToUse), computedVizProps), eventCallbackProps), dataSourceMetadata)
2412
+ width: width || SplunkVisualization_default.defaults.width,
2413
+ height: height || SplunkVisualization_default.defaults.height,
2414
+ userLocale: localeContext
2415
+ }), downsamplingProps), evaluatedOptionsToUse), computedVizProps), eventCallbackProps), dataSourceMetadata)
1944
2416
  );
1945
2417
  };
1946
2418
  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: {}
2419
+ DashboardViz.defaultProps = __spreadProps(__spreadValues({}, ReactViz.defaultProps), {
2420
+ // we still need ReactViz.defaultProps for the visualizations that still have them
2421
+ onEventTrigger: SplunkVisualization_default.defaults.onEventTrigger
1950
2422
  });
1951
2423
  DashboardViz.config = vizConfig;
1952
2424
  return (0, styled_components_exports.withTheme)(
@@ -1960,69 +2432,39 @@ var debounce_exports = {};
1960
2432
  __export(debounce_exports, {
1961
2433
  default: () => debounce_default
1962
2434
  });
1963
- var defaultImport33 = __toESM(require("lodash/debounce"));
2435
+ var defaultImport36 = __toESM(require("lodash/debounce"));
1964
2436
  __reExport(debounce_exports, require("lodash/debounce"));
1965
- var debounce_default = "default" in defaultImport33 ? defaultImport33.default : defaultImport33;
2437
+ var debounce_default = "default" in defaultImport36 ? defaultImport36.default : defaultImport36;
1966
2438
 
1967
2439
  // esm-externals:@splunk/react-ui/Table
1968
2440
  var Table_exports = {};
1969
2441
  __export(Table_exports, {
1970
2442
  default: () => Table_default
1971
2443
  });
1972
- var defaultImport34 = __toESM(require("@splunk/react-ui/Table"));
2444
+ var defaultImport37 = __toESM(require("@splunk/react-ui/Table"));
1973
2445
  __reExport(Table_exports, require("@splunk/react-ui/Table"));
1974
- var Table_default = "default" in defaultImport34 ? defaultImport34.default : defaultImport34;
2446
+ var Table_default = "default" in defaultImport37 ? defaultImport37.default : defaultImport37;
1975
2447
 
1976
2448
  // esm-externals:@splunk/react-ui/Paginator
1977
2449
  var Paginator_exports = {};
1978
2450
  __export(Paginator_exports, {
1979
2451
  default: () => Paginator_default
1980
2452
  });
1981
- var defaultImport35 = __toESM(require("@splunk/react-ui/Paginator"));
2453
+ var defaultImport38 = __toESM(require("@splunk/react-ui/Paginator"));
1982
2454
  __reExport(Paginator_exports, require("@splunk/react-ui/Paginator"));
1983
- var Paginator_default = "default" in defaultImport35 ? defaultImport35.default : defaultImport35;
2455
+ var Paginator_default = "default" in defaultImport38 ? defaultImport38.default : defaultImport38;
1984
2456
 
1985
2457
  // esm-externals:@splunk/react-ui/Message
1986
2458
  var Message_exports2 = {};
1987
2459
  __export(Message_exports2, {
1988
2460
  default: () => Message_default2
1989
2461
  });
1990
- var defaultImport36 = __toESM(require("@splunk/react-ui/Message"));
2462
+ var defaultImport39 = __toESM(require("@splunk/react-ui/Message"));
1991
2463
  __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
- };
2464
+ var Message_default2 = "default" in defaultImport39 ? defaultImport39.default : defaultImport39;
2023
2465
 
2024
2466
  // src/Table/hooks.tsx
2025
- var isArray = (v) => Array.isArray(v);
2467
+ var isArray2 = (v) => Array.isArray(v);
2026
2468
  var textOverflowStyles = {
2027
2469
  anywhere: {
2028
2470
  wordBreak: "break-all"
@@ -2075,7 +2517,7 @@ var getColumnFormatAlign = (columnFormat, currentColumn, currentRow) => {
2075
2517
  currentColumn.columnId,
2076
2518
  currentColumn.value
2077
2519
  );
2078
- if (isArray(alignOption) && (0, lodash_exports.includes)(visualization_schemas_exports.validAlignments, alignOption[currentRow])) {
2520
+ if (isArray2(alignOption) && (0, lodash_exports.includes)(visualization_schemas_exports.validAlignments, alignOption[currentRow])) {
2079
2521
  align = alignOption[currentRow];
2080
2522
  } else if (typeof alignOption === "string" && alignOption === "auto") {
2081
2523
  align = void 0;
@@ -2098,7 +2540,7 @@ var getColumnFormatCellType = (columnFormat, currentColumn, currentRow) => {
2098
2540
  currentColumn.columnId,
2099
2541
  currentColumn.value
2100
2542
  );
2101
- if (isArray(cellTypes) && (0, lodash_exports.includes)(visualization_schemas_exports.validCellRenderers, cellTypes[currentRow])) {
2543
+ if (isArray2(cellTypes) && (0, lodash_exports.includes)(visualization_schemas_exports.validCellRenderers, cellTypes[currentRow])) {
2102
2544
  cellType = cellTypes[currentRow];
2103
2545
  } else if (typeof cellTypes !== "undefined") {
2104
2546
  console.warn(
@@ -2117,7 +2559,7 @@ var getColumnFormatSparklineType = (columnFormat, currentColumn, currentRow) =>
2117
2559
  currentColumn.columnId,
2118
2560
  currentColumn.value
2119
2561
  );
2120
- if (isArray(types) && (0, lodash_exports.includes)(visualization_schemas_exports.validSparklineTypes, types[currentRow])) {
2562
+ if (isArray2(types) && (0, lodash_exports.includes)(visualization_schemas_exports.validSparklineTypes, types[currentRow])) {
2121
2563
  sparklineType = types[currentRow];
2122
2564
  } else if (typeof types !== "undefined") {
2123
2565
  console.warn(
@@ -2136,7 +2578,7 @@ var getColumnFormatData = (columnFormat, currentColumn, currentRow) => {
2136
2578
  currentColumn.columnId,
2137
2579
  currentColumn.value
2138
2580
  );
2139
- if (isArray(data)) {
2581
+ if (isArray2(data)) {
2140
2582
  datum = data[currentRow];
2141
2583
  } else if (typeof data !== "undefined") {
2142
2584
  console.warn(
@@ -2153,7 +2595,7 @@ var getColumnFormatColor = (columnFormat, currentColumn, currentRow, field) => {
2153
2595
  currentColumn.columnId,
2154
2596
  currentColumn.value
2155
2597
  );
2156
- if (isArray(colors) && (0, colorUtils_exports.isColor)(colors[currentRow])) {
2598
+ if (isArray2(colors) && (0, colorUtils_exports.isColor)(colors[currentRow])) {
2157
2599
  color = colors[currentRow];
2158
2600
  } else if (typeof colors !== "undefined") {
2159
2601
  console.warn(
@@ -2194,7 +2636,7 @@ var getColumnFormatHeaderAlign = (columnFormat, columnId, columnValue) => {
2194
2636
  var getTableFormatAlign = (tableFormat, currentColumn, currentRow) => {
2195
2637
  const alignOption = (0, lodash_exports.get)(tableFormat, "align");
2196
2638
  let align;
2197
- if (isArray(alignOption) && isArray(alignOption[currentColumn]) && (0, lodash_exports.includes)(visualization_schemas_exports.validAlignments, alignOption[currentColumn][currentRow])) {
2639
+ if (isArray2(alignOption) && isArray2(alignOption[currentColumn]) && (0, lodash_exports.includes)(visualization_schemas_exports.validAlignments, alignOption[currentColumn][currentRow])) {
2198
2640
  align = alignOption[currentColumn][currentRow];
2199
2641
  } else if (typeof alignOption === "string" && (0, lodash_exports.includes)(visualization_schemas_exports.validAlignments, alignOption)) {
2200
2642
  align = alignOption;
@@ -2210,7 +2652,7 @@ var getTableFormatAlign = (tableFormat, currentColumn, currentRow) => {
2210
2652
  var getTableFormatCellType = (tableFormat, currentColumn, currentRow) => {
2211
2653
  const cellTypes = (0, lodash_exports.get)(tableFormat, "cellTypes");
2212
2654
  let cellType;
2213
- if (isArray(cellTypes) && isArray(cellTypes[currentColumn]) && (0, lodash_exports.includes)(visualization_schemas_exports.validCellRenderers, cellTypes[currentColumn][currentRow])) {
2655
+ if (isArray2(cellTypes) && isArray2(cellTypes[currentColumn]) && (0, lodash_exports.includes)(visualization_schemas_exports.validCellRenderers, cellTypes[currentColumn][currentRow])) {
2214
2656
  cellType = cellTypes[currentColumn][currentRow];
2215
2657
  } else if (typeof cellTypes !== "undefined") {
2216
2658
  console.warn(
@@ -2224,7 +2666,7 @@ var getTableFormatCellType = (tableFormat, currentColumn, currentRow) => {
2224
2666
  var getTableFormatSparklineType = (tableFormat, currentColumn, currentRow) => {
2225
2667
  const types = (0, lodash_exports.get)(tableFormat, "sparklineTypes");
2226
2668
  let sparklineType;
2227
- if (isArray(types) && isArray(types[currentColumn]) && (0, lodash_exports.includes)(visualization_schemas_exports.validSparklineTypes, types[currentColumn][currentRow])) {
2669
+ if (isArray2(types) && isArray2(types[currentColumn]) && (0, lodash_exports.includes)(visualization_schemas_exports.validSparklineTypes, types[currentColumn][currentRow])) {
2228
2670
  sparklineType = types[currentColumn][currentRow];
2229
2671
  } else if (typeof types !== "undefined") {
2230
2672
  console.warn(
@@ -2238,11 +2680,11 @@ var getTableFormatSparklineType = (tableFormat, currentColumn, currentRow) => {
2238
2680
  var getTableFormatColor = (tableFormat, currentColumn, currentRow, field) => {
2239
2681
  const colors = (0, lodash_exports.get)(tableFormat, field);
2240
2682
  let color;
2241
- if (isArray(colors) && isArray(colors[currentColumn]) && (0, colorUtils_exports.isColor)(colors[currentColumn][currentRow])) {
2683
+ if (isArray2(colors) && isArray2(colors[currentColumn]) && (0, colorUtils_exports.isColor)(colors[currentColumn][currentRow])) {
2242
2684
  color = colors[currentColumn][currentRow];
2243
- } else if (isArray(colors) && (0, colorUtils_exports.isColor)(colors[currentRow])) {
2685
+ } else if (isArray2(colors) && (0, colorUtils_exports.isColor)(colors[currentRow])) {
2244
2686
  color = colors[currentRow];
2245
- } else if (typeof colors !== "undefined" && isArray(colors) && isArray(colors[currentColumn]) && colors[currentColumn][currentRow] !== void 0) {
2687
+ } else if (typeof colors !== "undefined" && isArray2(colors) && isArray2(colors[currentColumn]) && colors[currentColumn][currentRow] !== void 0) {
2246
2688
  console.warn(
2247
2689
  `tableFormat.${field} needs to be an array of colors, provided ${JSON.stringify(
2248
2690
  colors
@@ -2266,7 +2708,7 @@ var getTableFormatSparklineAreaColor = (tableFormat, currentCol, currentRow) =>
2266
2708
  var getTableFormatData = (tableFormat, currentCol, currentRow) => {
2267
2709
  const data = (0, lodash_exports.get)(tableFormat, "data");
2268
2710
  let datum;
2269
- if (isArray(data) && isArray(data[currentCol])) {
2711
+ if (isArray2(data) && isArray2(data[currentCol])) {
2270
2712
  datum = data[currentCol][currentRow];
2271
2713
  } else if (typeof data !== "undefined") {
2272
2714
  console.warn(
@@ -2292,20 +2734,19 @@ var getTableFormatHeaderAlign = (tableFormat) => {
2292
2734
  var getAttributeFromColumnFormat = (attribute, columnFormat, columnId, columnValue) => (0, lodash_exports.get)(columnFormat, [columnId, attribute]) || (0, lodash_exports.get)(columnFormat, [columnValue, attribute]);
2293
2735
  var validValueSelector = (v1, v2, v3, defaultValue) => {
2294
2736
  const validTypes = ["string", "number"];
2295
- if (validTypes.includes(typeof v1) || isArray(v1)) {
2737
+ if (validTypes.includes(typeof v1) || isArray2(v1)) {
2296
2738
  return v1;
2297
2739
  }
2298
- if (validTypes.includes(typeof v2) || isArray(v2)) {
2740
+ if (validTypes.includes(typeof v2) || isArray2(v2)) {
2299
2741
  return v2;
2300
2742
  }
2301
- if (validTypes.includes(typeof v3) || isArray(v3)) {
2743
+ if (validTypes.includes(typeof v3) || isArray2(v3)) {
2302
2744
  return v3;
2303
2745
  }
2304
2746
  return defaultValue;
2305
2747
  };
2306
2748
  var useTable = (tableArgs = {}) => {
2307
2749
  let { table = [], headers = [], columnIds = [] } = tableArgs;
2308
- const { headersMetadata = [] } = tableArgs;
2309
2750
  const {
2310
2751
  headerVisibility = "inline",
2311
2752
  showRowNumbers = false,
@@ -2324,50 +2765,50 @@ var useTable = (tableArgs = {}) => {
2324
2765
  Array.from({ length: longestColumnLength }, (v, i) => correctedPaginationOffset + i + 1),
2325
2766
  ...table
2326
2767
  ];
2327
- if (isArray(tableFormat.align)) {
2768
+ if (isArray2(tableFormat.align)) {
2328
2769
  tableFormat.align = [
2329
2770
  new Array(longestColumnLength).fill("left"),
2330
2771
  ...tableFormat.align
2331
2772
  ];
2332
2773
  }
2333
- if (isArray(tableFormat.cellTypes)) {
2774
+ if (isArray2(tableFormat.cellTypes)) {
2334
2775
  tableFormat.cellTypes = [
2335
2776
  new Array(longestColumnLength).fill("TextCell"),
2336
2777
  ...tableFormat.cellTypes
2337
2778
  ];
2338
2779
  }
2339
- if (isArray(tableFormat.data)) {
2780
+ if (isArray2(tableFormat.data)) {
2340
2781
  tableFormat.data = [
2341
2782
  Array.from({ length: longestColumnLength }, (v, i) => `${i + 1}`),
2342
2783
  ...tableFormat.data
2343
2784
  ];
2344
2785
  }
2345
- if (isArray(tableFormat.rowBackgroundColors)) {
2346
- if (tableFormat.rowBackgroundColors.length > 0 && isArray(tableFormat.rowBackgroundColors[0])) {
2786
+ if (isArray2(tableFormat.rowBackgroundColors)) {
2787
+ if (tableFormat.rowBackgroundColors.length > 0 && isArray2(tableFormat.rowBackgroundColors[0])) {
2347
2788
  tableFormat.rowBackgroundColors = [
2348
2789
  new Array(longestColumnLength),
2349
2790
  ...tableFormat.rowBackgroundColors
2350
2791
  ];
2351
2792
  }
2352
2793
  }
2353
- if (isArray(tableFormat.rowColors)) {
2354
- if (tableFormat.rowColors.length > 0 && isArray(tableFormat.rowColors[0])) {
2794
+ if (isArray2(tableFormat.rowColors)) {
2795
+ if (tableFormat.rowColors.length > 0 && isArray2(tableFormat.rowColors[0])) {
2355
2796
  tableFormat.rowColors = [
2356
2797
  new Array(longestColumnLength),
2357
2798
  ...tableFormat.rowColors
2358
2799
  ];
2359
2800
  }
2360
2801
  }
2361
- if (isArray(tableFormat.sparklineColors)) {
2802
+ if (isArray2(tableFormat.sparklineColors)) {
2362
2803
  tableFormat.sparklineColors = [new Array(longestColumnLength), ...tableFormat.sparklineColors];
2363
2804
  }
2364
- if (isArray(tableFormat.sparklineAreaColors)) {
2805
+ if (isArray2(tableFormat.sparklineAreaColors)) {
2365
2806
  tableFormat.sparklineAreaColors = [
2366
2807
  new Array(longestColumnLength),
2367
2808
  ...tableFormat.sparklineAreaColors
2368
2809
  ];
2369
2810
  }
2370
- if (isArray(tableFormat.sparklineTypes)) {
2811
+ if (isArray2(tableFormat.sparklineTypes)) {
2371
2812
  tableFormat.sparklineTypes = [
2372
2813
  new Array(longestColumnLength).fill("area"),
2373
2814
  ...tableFormat.sparklineTypes
@@ -2394,106 +2835,141 @@ var useTable = (tableArgs = {}) => {
2394
2835
  color: (0, lodash_exports.has)(tableFormat, "headerColor") && (0, colorUtils_exports.isColor)(tableFormat.headerColor) && tableFormat.headerColor || void 0
2395
2836
  }
2396
2837
  };
2397
- const tableBody = {
2398
- rows: []
2399
- };
2838
+ const tableBody = { rows: [] };
2400
2839
  const tableFooter = {
2401
2840
  rows: []
2402
2841
  };
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
2842
+ const computeBodyRows = (args) => {
2843
+ const rows = [];
2844
+ const {
2845
+ table: t,
2846
+ tableHeader: hdr,
2847
+ columnFormat: cfmt,
2848
+ tableFormat: tfmt,
2849
+ columnIds: cids,
2850
+ showInternalFields: showInternal,
2851
+ longestColumnLength: len
2852
+ } = args;
2853
+ for (let r = 0; r < len; r += 1) {
2854
+ const row = { key: `row-${r}`, index: r, cells: [] };
2855
+ t.forEach((column, i) => {
2856
+ const currentHeader = hdr.cells[i];
2857
+ const value = validValueSelector(
2858
+ getColumnFormatData(cfmt, currentHeader, r),
2859
+ getTableFormatData(tfmt, i, r),
2860
+ column[r],
2861
+ ""
2862
+ );
2863
+ const rawValue = column[r];
2864
+ const rowBackgroundColor = getColumnFormatRowBgColor(cfmt, currentHeader, r) || getTableFormatRowBgColor(tfmt, i, r) || void 0;
2865
+ const rowColor = getColumnFormatRowColor(cfmt, currentHeader, r) || getTableFormatRowColor(tfmt, i, r) || void 0;
2866
+ const align = getColumnFormatAlign(cfmt, currentHeader, r) || getTableFormatAlign(tfmt, i, r) || "left";
2867
+ const cellType = getColumnFormatCellType(cfmt, currentHeader, r) || getTableFormatCellType(tfmt, i, r) || "TextCell";
2868
+ const sparklineColor = getColumnFormatSparklineColor(cfmt, currentHeader, r) || getTableFormatSparklineColor(tfmt, i, r) || void 0;
2869
+ const sparklineAreaColor = getColumnFormatSparklineAreaColor(cfmt, currentHeader, r) || getTableFormatSparklineAreaColor(tfmt, i, r) || void 0;
2870
+ const sparklineType = getColumnFormatSparklineType(cfmt, currentHeader, r) || getTableFormatSparklineType(tfmt, i, r) || "area";
2871
+ const key = generateKey(value, `${r}-${i}`);
2872
+ const textOverflowType = getTextOverflowType(
2873
+ cfmt,
2874
+ cids[i],
2875
+ currentHeader.value
2876
+ );
2877
+ const textOverflowStyle = getOverflowStyles({
2878
+ textOverflow: textOverflowType
2879
+ });
2880
+ const showCell = !(!showInternal && currentHeader.value.charAt(0) === "_" && currentHeader.value !== "_time");
2881
+ row.cells.push({
2882
+ key,
2883
+ value,
2884
+ rawValue,
2885
+ align,
2886
+ cellType,
2887
+ rowIndex: r,
2888
+ columnIndex: i,
2889
+ sparklineColor,
2890
+ sparklineAreaColor,
2891
+ sparklineType,
2892
+ header: currentHeader.value,
2893
+ style: __spreadValues({
2894
+ backgroundColor: rowBackgroundColor,
2895
+ color: rowColor
2896
+ }, textOverflowStyle),
2897
+ showCell
2898
+ });
2430
2899
  });
2431
- additionalStyles = __spreadValues(__spreadValues({}, additionalStyles), textOverflowStyle);
2432
- let showCell = true;
2433
- if (!showInternalFields && currentHeader.value.charAt(0) === "_" && currentHeader.value !== "_time") {
2434
- showCell = false;
2435
- }
2900
+ rows.push(row);
2901
+ }
2902
+ return rows;
2903
+ };
2904
+ tableBody.rows = computeBodyRows({
2905
+ table,
2906
+ tableHeader,
2907
+ columnFormat,
2908
+ tableFormat,
2909
+ columnIds,
2910
+ showInternalFields,
2911
+ longestColumnLength
2912
+ });
2913
+ const {
2914
+ footers,
2915
+ showFooterTotals = false,
2916
+ showFooterPercentages = false
2917
+ } = tableArgs;
2918
+ const resolveByField = (fieldId, displayName, map) => {
2919
+ if (!map) return void 0;
2920
+ if (Object.prototype.hasOwnProperty.call(map, fieldId)) return map[fieldId];
2921
+ if (Object.prototype.hasOwnProperty.call(map, displayName)) return map[displayName];
2922
+ return void 0;
2923
+ };
2924
+ const computeDerivedAlign = (colMeta, colIdx, alignOverrides) => {
2925
+ const fieldId = colMeta.columnId;
2926
+ const label = colMeta.value;
2927
+ const alignOverride = resolveByField(fieldId, label, alignOverrides);
2928
+ return alignOverride || getColumnFormatAlign(
2929
+ columnFormat,
2930
+ colMeta,
2931
+ Math.max(0, longestColumnLength - 1)
2932
+ ) || getTableFormatAlign(tableFormat, colIdx, Math.max(0, longestColumnLength - 1)) || "right";
2933
+ };
2934
+ const buildFooterRow = (key, valuesByField, styleExtras, rowIndexBase) => {
2935
+ const idx = rowIndexBase + tableFooter.rows.length;
2936
+ const row = { key, index: idx, cells: [] };
2937
+ tableHeader.cells.forEach((colMeta, colIdx) => {
2938
+ var _a, _b, _c;
2939
+ const fieldId = colMeta.columnId;
2940
+ const label = colMeta.value;
2941
+ const val = resolveByField(fieldId, label, valuesByField);
2942
+ const derivedAlign = computeDerivedAlign(colMeta, colIdx, footers == null ? void 0 : footers.alignByField);
2943
+ const displayValue = typeof val === "undefined" ? "" : val;
2436
2944
  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
2945
+ key: `${key}-${colIdx}`,
2946
+ value: displayValue,
2947
+ align: derivedAlign,
2948
+ style: __spreadValues(__spreadValues({
2949
+ backgroundColor: ((_a = tableHeader.style) == null ? void 0 : _a.backgroundColor) || ((_b = tableHeader.style) == null ? void 0 : _b.color),
2950
+ color: (_c = tableHeader.style) == null ? void 0 : _c.color
2951
+ }, styleExtras.bold ? { fontWeight: 600 } : {}), typeof styleExtras.opacity === "number" ? { opacity: styleExtras.opacity } : {})
2453
2952
  });
2454
2953
  });
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);
2954
+ return row;
2955
+ };
2956
+ if (footers && showFooterTotals) {
2957
+ const totalsRow = buildFooterRow(
2958
+ "footer-totals",
2959
+ footers == null ? void 0 : footers.totalsByField,
2960
+ { bold: true },
2961
+ tableBody.rows.length
2962
+ );
2963
+ tableFooter.rows.push(totalsRow);
2964
+ }
2965
+ if (footers && showFooterPercentages) {
2966
+ const percentagesRow = buildFooterRow(
2967
+ "footer-percentages",
2968
+ footers == null ? void 0 : footers.percentagesByField,
2969
+ {},
2970
+ tableBody.rows.length
2971
+ );
2972
+ tableFooter.rows.push(percentagesRow);
2497
2973
  }
2498
2974
  return {
2499
2975
  tableHeader,
@@ -2506,7 +2982,7 @@ var useTable = (tableArgs = {}) => {
2506
2982
  var SwitchTableCell = ({ type, children }) => children.filter((child) => child.type.displayName === type);
2507
2983
 
2508
2984
  // src/Table/cells/TextCell.tsx
2509
- var noop3 = () => void 0;
2985
+ var noop4 = () => void 0;
2510
2986
  var TextCell = ({ cell, useMouseOverEffect }) => {
2511
2987
  const cellStyle = react_exports.useMemo(() => __spreadValues({}, cell.style), [cell.style]);
2512
2988
  return /* @__PURE__ */ react_exports.createElement(
@@ -2518,7 +2994,7 @@ var TextCell = ({ cell, useMouseOverEffect }) => {
2518
2994
  "data-test-align-value": cell.align,
2519
2995
  "data-row-index": cell.rowIndex,
2520
2996
  "data-col-index": cell.columnIndex,
2521
- onClick: useMouseOverEffect ? noop3 : void 0
2997
+ onClick: useMouseOverEffect ? noop4 : void 0
2522
2998
  },
2523
2999
  cell.value.toString()
2524
3000
  );
@@ -2526,18 +3002,23 @@ var TextCell = ({ cell, useMouseOverEffect }) => {
2526
3002
  TextCell.displayName = "TextCell";
2527
3003
 
2528
3004
  // src/Table/cells/ArrayCell.tsx
2529
- var noop4 = () => void 0;
3005
+ var StyledTableCell = styled_components_default(Table_default.Cell)`
3006
+ div {
3007
+ flex-direction: column;
3008
+ }
3009
+ `;
3010
+ var noop5 = () => void 0;
2530
3011
  var ArrayCell = ({ cell, useMouseOverEffect }) => {
2531
3012
  const value = react_exports.useMemo(() => Array.isArray(cell.value) ? cell.value : [cell.value], [cell.value]);
2532
3013
  const cellStyle = react_exports.useMemo(() => __spreadValues({}, cell.style), [cell.style]);
2533
3014
  return /* @__PURE__ */ react_exports.createElement(
2534
- Table_default.Cell,
3015
+ StyledTableCell,
2535
3016
  {
2536
3017
  style: cellStyle,
2537
3018
  align: cell.align,
2538
3019
  "data-test-align-value": cell.align,
2539
3020
  "data-test-cell-type": "ArrayCell",
2540
- onClick: useMouseOverEffect ? noop4 : void 0
3021
+ onClick: useMouseOverEffect ? noop5 : void 0
2541
3022
  },
2542
3023
  value.map(
2543
3024
  (v, i) => /* @__PURE__ */ react_exports.createElement(
@@ -2560,9 +3041,9 @@ var Popover_exports = {};
2560
3041
  __export(Popover_exports, {
2561
3042
  default: () => Popover_default
2562
3043
  });
2563
- var defaultImport37 = __toESM(require("@splunk/react-ui/Popover"));
3044
+ var defaultImport40 = __toESM(require("@splunk/react-ui/Popover"));
2564
3045
  __reExport(Popover_exports, require("@splunk/react-ui/Popover"));
2565
- var Popover_default = "default" in defaultImport37 ? defaultImport37.default : defaultImport37;
3046
+ var Popover_default = "default" in defaultImport40 ? defaultImport40.default : defaultImport40;
2566
3047
 
2567
3048
  // src/SparkLine/SparkLine.jsx
2568
3049
  var StyledSvg = styled_components_default.svg`
@@ -3090,7 +3571,7 @@ var SparkLine_default = SparkLine;
3090
3571
  var paddingLeftRight = 5;
3091
3572
  var paddingTopBottom = 3;
3092
3573
  var parseSparklineData = (data) => (Array.isArray(data) ? data : [data]).map((d) => Number(d.toString())).map((d) => isNaN(d) ? null : d);
3093
- var noop5 = () => void 0;
3574
+ var noop6 = () => void 0;
3094
3575
  var svgStyle = { height: 0 };
3095
3576
  var dummySVG = /* @__PURE__ */ react_exports.createElement("svg", { style: svgStyle });
3096
3577
  var SparklineCell = ({
@@ -3136,7 +3617,7 @@ var SparklineCell = ({
3136
3617
  "data-test-cell-type": "SparklineCell",
3137
3618
  "data-row-index": cell.rowIndex,
3138
3619
  "data-col-index": cell.columnIndex,
3139
- onClick: useMouseOverEffect ? noop5 : void 0
3620
+ onClick: useMouseOverEffect ? noop6 : void 0
3140
3621
  },
3141
3622
  height ? /* @__PURE__ */ react_exports.createElement(
3142
3623
  SparkLine_default,
@@ -3172,7 +3653,7 @@ var TableHeadCell = styled_components_default(Table_default.HeadCell)`
3172
3653
  button > span {
3173
3654
  word-break: inherit;
3174
3655
  word-wrap: inherit;
3175
- white-space: ${({ textOverflowType }) => textOverflowType === "ellipsis" ? "nowrap" : "inherit"};
3656
+ white-space: ${(props) => props.textOverflowType === "ellipsis" ? "nowrap" : "inherit"};
3176
3657
  display: inline;
3177
3658
  }
3178
3659
  `;
@@ -3241,6 +3722,14 @@ var SUITableContainer = styled_components_default.div`
3241
3722
  }
3242
3723
  `}
3243
3724
 
3725
+ /* Footer cells should match header background for both totals and percentages */
3726
+ ${({ headerStyle }) => headerStyle && (headerStyle.backgroundColor || headerStyle.color) && styled_components_exports.css`
3727
+ tr[data-test='footer-row-totals'] td[data-test='cell'],
3728
+ tr[data-test='footer-row-percentages'] td[data-test='cell'] {
3729
+ background-color: ${headerStyle.backgroundColor || headerStyle.color} !important;
3730
+ }
3731
+ `}
3732
+
3244
3733
  /* To accomodate custom logic that diverges from default resizableFillLayout behavior - allows the columns to shrink beneath Table width when columns are fixed */
3245
3734
  [data-test="main-table"] {
3246
3735
  ${({ isFullyFixed }) => isFullyFixed && styled_components_exports.css`
@@ -3282,13 +3771,21 @@ var withEmptyTableMessage = (Viz) => {
3282
3771
  showRowNumbers,
3283
3772
  showInternalFields,
3284
3773
  headersMetadata,
3285
- tableFormat: __spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues({}, tableFormat), (tableFormat == null ? void 0 : tableFormat.headerAlign) && {
3774
+ // plumb down named-map footers and toggles if present on props
3775
+ footers: props.footers,
3776
+ showFooterTotals: props.showFooterTotals,
3777
+ showFooterPercentages: props.showFooterPercentages,
3778
+ tableFormat: __spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues({}, tableFormat), (tableFormat == null ? void 0 : tableFormat.headerAlign) && {
3286
3779
  headerAlign: (0, lodash_exports.cloneDeep)(tableFormat.headerAlign)
3287
3780
  }), (tableFormat == null ? void 0 : tableFormat.align) && {
3288
3781
  align: (0, lodash_exports.cloneDeep)(tableFormat.align)
3289
3782
  }), (tableFormat == null ? void 0 : tableFormat.cellTypes) && {
3290
3783
  cellTypes: (0, lodash_exports.cloneDeep)(tableFormat.cellTypes)
3291
- }), (tableFormat == null ? void 0 : tableFormat.data) && { data: (0, lodash_exports.cloneDeep)(tableFormat.data) }),
3784
+ }), (tableFormat == null ? void 0 : tableFormat.data) && { data: (0, lodash_exports.cloneDeep)(tableFormat.data) }), (tableFormat == null ? void 0 : tableFormat.rowBackgroundColors) && {
3785
+ rowBackgroundColors: (0, lodash_exports.cloneDeep)(tableFormat.rowBackgroundColors)
3786
+ }), (tableFormat == null ? void 0 : tableFormat.rowColors) && {
3787
+ rowColors: (0, lodash_exports.cloneDeep)(tableFormat.rowColors)
3788
+ }),
3292
3789
  columnFormat,
3293
3790
  paginationOffset: paginatorParams == null ? void 0 : paginatorParams.current,
3294
3791
  count
@@ -3488,6 +3985,33 @@ var PureTable = (props) => {
3488
3985
  const isFullyFixed = visibleHeaderCells.length === numberOfFixedHeaders;
3489
3986
  const isHeaderHidden = headerVisibility === "none";
3490
3987
  const onSortToUse = isResizing ? lodash_exports.noop : onSort;
3988
+ const renderFooterRow = (key, dataAttr) => {
3989
+ const rows = ((tableFooter == null ? void 0 : tableFooter.rows) || []).filter((r) => r && r.key === key);
3990
+ if (rows.length === 0) return null;
3991
+ return rows.map((row) => /* @__PURE__ */ react_exports.createElement(
3992
+ Table_default.Row,
3993
+ {
3994
+ key: row.key,
3995
+ "data-test": dataAttr,
3996
+ "data-row-index": key === "footer-totals" ? "0" : "1"
3997
+ },
3998
+ (row.cells || []).map((c, idx) => {
3999
+ var _a2, _b2, _c2;
4000
+ return /* @__PURE__ */ react_exports.createElement(
4001
+ Table_default.Cell,
4002
+ {
4003
+ key: `${key}-cell-${c.key || idx}`,
4004
+ "data-test": "cell",
4005
+ style: __spreadProps(__spreadValues({}, c.style), {
4006
+ backgroundColor: ((_a2 = tableHeader.style) == null ? void 0 : _a2.backgroundColor) || ((_b2 = tableHeader.style) == null ? void 0 : _b2.color)
4007
+ }),
4008
+ align: c.align || "right"
4009
+ },
4010
+ (_c2 = c.value) != null ? _c2 : ""
4011
+ );
4012
+ })
4013
+ ));
4014
+ };
3491
4015
  return /* @__PURE__ */ react_exports.createElement(
3492
4016
  VizTableContainer,
3493
4017
  {
@@ -3583,46 +4107,16 @@ var PureTable = (props) => {
3583
4107
  }
3584
4108
  ));
3585
4109
  }))
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
- )))
4110
+ ), tableFooter && showFooterTotals && renderFooterRow("footer-totals", "footer-row-totals"), tableFooter && showFooterPercentages && renderFooterRow("footer-percentages", "footer-row-percentages"))
3623
4111
  )
3624
4112
  ),
3625
- isPaging ? /* @__PURE__ */ react_exports.createElement(PaginatorContainer, null, /* @__PURE__ */ react_exports.createElement(Paginator_default, __spreadValues({ onChange: paginatorOnChange }, paginatorProps))) : null
4113
+ isPaging ? /* @__PURE__ */ react_exports.createElement(PaginatorContainer, null, /* @__PURE__ */ react_exports.createElement(
4114
+ Paginator_default,
4115
+ __spreadValues({
4116
+ totalPages: paginatorProps.totalPages,
4117
+ onChange: paginatorOnChange
4118
+ }, paginatorProps)
4119
+ )) : null
3626
4120
  );
3627
4121
  };
3628
4122
  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 +4196,7 @@ var PureTable_default = withEmptyTableMessage(FixedSizeContainer_default(PureTab
3702
4196
  // src/Table/Table.tsx
3703
4197
  var computeVizProps = (_a) => {
3704
4198
  var props = __objRest(_a, []);
3705
- var _a2, _b, _c, _d, _e, _f, _g;
4199
+ var _a2, _b, _c, _d, _e, _f, _g, _h, _i, _j;
3706
4200
  const vizProps = __spreadValues({}, props);
3707
4201
  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
4202
  var _a3;
@@ -3712,6 +4206,15 @@ var computeVizProps = (_a) => {
3712
4206
  vizProps.columnIds = vizProps.headers;
3713
4207
  }
3714
4208
  vizProps.headersMetadata = (_g = (_f = (_e = vizProps.dataSources) == null ? void 0 : _e.primary) == null ? void 0 : _f.data) == null ? void 0 : _g.fields;
4209
+ const fieldsMeta = ((_j = (_i = (_h = vizProps.dataSources) == null ? void 0 : _h.primary) == null ? void 0 : _i.data) == null ? void 0 : _j.fields) || [];
4210
+ const totalsByField = buildTotalsByFieldFromFieldsMeta(fieldsMeta);
4211
+ if (Object.keys(totalsByField).length > 0) {
4212
+ vizProps.footers = __spreadProps(__spreadValues({}, vizProps.footers || {}), { totalsByField });
4213
+ const percentagesByField = buildPercentagesByFieldFromTotals(totalsByField);
4214
+ if (Object.keys(percentagesByField).length > 0) {
4215
+ vizProps.footers = __spreadProps(__spreadValues({}, vizProps.footers || {}), { percentagesByField });
4216
+ }
4217
+ }
3715
4218
  if (vizProps.columnFormat) {
3716
4219
  const columns = vizProps.columnFormat;
3717
4220
  const themeRowBackgroundColorOdd = vizProps.themeFunc("rowBackgroundColorOdd");
@@ -3761,31 +4264,12 @@ var computeVizProps = (_a) => {
3761
4264
  }
3762
4265
  return vizProps;
3763
4266
  };
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
- );
4267
+ var Table = withDashboardViz_default({
4268
+ ReactViz: PureTable_default,
4269
+ vizConfig: config_default,
4270
+ disableEditModeCover: true,
4271
+ computeVizProps
4272
+ });
3789
4273
  var { themes: themes2 } = config_default;
3790
4274
  var Table_default2 = Table;
3791
4275
  //# sourceMappingURL=Table.js.map