@splunk/visualizations 28.0.0 → 28.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (582) hide show
  1. package/Area.config.js +27 -0
  2. package/Area.config.js.map +2 -2
  3. package/Area.js +722 -355
  4. package/Area.js.map +4 -4
  5. package/Bar.config.js +27 -0
  6. package/Bar.config.js.map +2 -2
  7. package/Bar.js +754 -387
  8. package/Bar.js.map +4 -4
  9. package/Bubble.config.js +27 -0
  10. package/Bubble.config.js.map +2 -2
  11. package/Bubble.js +684 -321
  12. package/Bubble.js.map +4 -4
  13. package/CHANGELOG.external.md +63 -2
  14. package/ChoroplethSvg.js +582 -202
  15. package/ChoroplethSvg.js.map +4 -4
  16. package/Column.config.js +27 -0
  17. package/Column.config.js.map +2 -2
  18. package/Column.js +769 -402
  19. package/Column.js.map +4 -4
  20. package/Ellipse.js +593 -214
  21. package/Ellipse.js.map +4 -4
  22. package/Events.js +592 -201
  23. package/Events.js.map +4 -4
  24. package/FEATUREFLAGS.md +1 -0
  25. package/FillerGauge.config.js +124 -3
  26. package/FillerGauge.config.js.map +3 -3
  27. package/FillerGauge.js +1371 -256
  28. package/FillerGauge.js.map +4 -4
  29. package/Image.js +590 -217
  30. package/Image.js.map +4 -4
  31. package/Line.config.js +28 -1
  32. package/Line.config.js.map +2 -2
  33. package/Line.js +737 -370
  34. package/Line.js.map +4 -4
  35. package/LinkGraph.js +1095 -692
  36. package/LinkGraph.js.map +4 -4
  37. package/Map.config.js +49 -3
  38. package/Map.config.js.map +2 -2
  39. package/Map.js +581 -145
  40. package/Map.js.map +4 -4
  41. package/Markdown.js +617 -230
  42. package/Markdown.js.map +4 -4
  43. package/MarkerGauge.js +544 -169
  44. package/MarkerGauge.js.map +4 -4
  45. package/ParallelCoordinates.js +565 -174
  46. package/ParallelCoordinates.js.map +4 -4
  47. package/Pie.js +651 -316
  48. package/Pie.js.map +4 -4
  49. package/Punchcard.js +589 -200
  50. package/Punchcard.js.map +4 -4
  51. package/Rectangle.js +604 -224
  52. package/Rectangle.js.map +4 -4
  53. package/Sankey.js +577 -201
  54. package/Sankey.js.map +4 -4
  55. package/Scatter.config.js +27 -0
  56. package/Scatter.config.js.map +2 -2
  57. package/Scatter.js +688 -326
  58. package/Scatter.js.map +4 -4
  59. package/SingleValue.js +543 -166
  60. package/SingleValue.js.map +4 -4
  61. package/SingleValueIcon.js +535 -160
  62. package/SingleValueIcon.js.map +4 -4
  63. package/SingleValueRadial.js +528 -153
  64. package/SingleValueRadial.js.map +4 -4
  65. package/TRELLIS.md +2 -2
  66. package/Table.config.js +109 -33
  67. package/Table.config.js.map +4 -4
  68. package/Table.js +986 -322
  69. package/Table.js.map +4 -4
  70. package/Timeline.js +626 -247
  71. package/Timeline.js.map +4 -4
  72. package/common/Charting.js +49 -111
  73. package/common/Charting.js.map +4 -4
  74. package/common/GaugeMajorTicks.js +6 -14
  75. package/common/GaugeMajorTicks.js.map +2 -2
  76. package/common/GaugeValueMarker.js +6 -14
  77. package/common/GaugeValueMarker.js.map +2 -2
  78. package/common/OptionsDoc.js +3 -2
  79. package/common/OptionsDoc.js.map +2 -2
  80. package/common/SplunkVisualization.js +1 -1
  81. package/common/SplunkVisualization.js.map +2 -2
  82. package/common/TimeSeriesChartWrapper.js +485 -0
  83. package/common/TimeSeriesChartWrapper.js.map +7 -0
  84. package/common/chartingUtils.js +252 -1
  85. package/common/chartingUtils.js.map +4 -4
  86. package/common/shapeUtils.js.map +1 -1
  87. package/common/utils/hocUtils.js +1 -1
  88. package/common/utils/hocUtils.js.map +2 -2
  89. package/common/utils/mapUtils.js.map +1 -1
  90. package/common/utils/tableUtils.js +60 -0
  91. package/common/utils/tableUtils.js.map +7 -0
  92. package/common/withDashboardViz.js +552 -161
  93. package/common/withDashboardViz.js.map +4 -4
  94. package/dist/types/Area/Area.d.ts +13 -0
  95. package/dist/types/Area/Area.d.ts.map +1 -0
  96. package/dist/types/Area/areaUtils.d.ts +15 -0
  97. package/dist/types/Area/areaUtils.d.ts.map +1 -0
  98. package/dist/types/Area/config.d.ts +4 -0
  99. package/dist/types/Area/config.d.ts.map +1 -0
  100. package/dist/types/Area/index.d.ts +3 -0
  101. package/dist/types/Area/index.d.ts.map +1 -0
  102. package/dist/types/Bar/Bar.d.ts +13 -0
  103. package/dist/types/Bar/Bar.d.ts.map +1 -0
  104. package/dist/types/Bar/barUtils.d.ts +30 -0
  105. package/dist/types/Bar/barUtils.d.ts.map +1 -0
  106. package/dist/types/Bar/config.d.ts +4 -0
  107. package/dist/types/Bar/config.d.ts.map +1 -0
  108. package/dist/types/Bar/index.d.ts +3 -0
  109. package/dist/types/Bar/index.d.ts.map +1 -0
  110. package/dist/types/Bubble/Bubble.d.ts +9 -0
  111. package/dist/types/Bubble/Bubble.d.ts.map +1 -0
  112. package/dist/types/Bubble/bubbleUtils.d.ts +47 -0
  113. package/dist/types/Bubble/bubbleUtils.d.ts.map +1 -0
  114. package/dist/types/Bubble/config.d.ts +4 -0
  115. package/dist/types/Bubble/config.d.ts.map +1 -0
  116. package/dist/types/Bubble/index.d.ts +3 -0
  117. package/dist/types/Bubble/index.d.ts.map +1 -0
  118. package/dist/types/ChoroplethSvg/ChoroplethSvg.d.ts +24 -0
  119. package/dist/types/ChoroplethSvg/ChoroplethSvg.d.ts.map +1 -0
  120. package/dist/types/ChoroplethSvg/ErrorMessage/ErrorMessage.d.ts +6 -0
  121. package/dist/types/ChoroplethSvg/ErrorMessage/ErrorMessage.d.ts.map +1 -0
  122. package/dist/types/ChoroplethSvg/PureChoroplethSvg/PureChoroplethSvg.d.ts +29 -0
  123. package/dist/types/ChoroplethSvg/PureChoroplethSvg/PureChoroplethSvg.d.ts.map +1 -0
  124. package/dist/types/ChoroplethSvg/PureChoroplethSvg/SvgChoroplethDynamic.d.ts +34 -0
  125. package/dist/types/ChoroplethSvg/PureChoroplethSvg/SvgChoroplethDynamic.d.ts.map +1 -0
  126. package/dist/types/ChoroplethSvg/PureChoroplethSvg/SvgMutator.d.ts +144 -0
  127. package/dist/types/ChoroplethSvg/PureChoroplethSvg/SvgMutator.d.ts.map +1 -0
  128. package/dist/types/ChoroplethSvg/config.d.ts +4 -0
  129. package/dist/types/ChoroplethSvg/config.d.ts.map +1 -0
  130. package/dist/types/ChoroplethSvg/index.d.ts +3 -0
  131. package/dist/types/ChoroplethSvg/index.d.ts.map +1 -0
  132. package/dist/types/Column/Column.d.ts +11 -0
  133. package/dist/types/Column/Column.d.ts.map +1 -0
  134. package/dist/types/Column/columnUtils.d.ts +82 -0
  135. package/dist/types/Column/columnUtils.d.ts.map +1 -0
  136. package/dist/types/Column/config.d.ts +4 -0
  137. package/dist/types/Column/config.d.ts.map +1 -0
  138. package/dist/types/Column/index.d.ts +3 -0
  139. package/dist/types/Column/index.d.ts.map +1 -0
  140. package/dist/types/Ellipse/Ellipse.d.ts +7 -0
  141. package/dist/types/Ellipse/Ellipse.d.ts.map +1 -0
  142. package/dist/types/Ellipse/config.d.ts +4 -0
  143. package/dist/types/Ellipse/config.d.ts.map +1 -0
  144. package/dist/types/Ellipse/index.d.ts +3 -0
  145. package/dist/types/Ellipse/index.d.ts.map +1 -0
  146. package/dist/types/Events/EventUtils.d.ts +137 -0
  147. package/dist/types/Events/EventUtils.d.ts.map +1 -0
  148. package/dist/types/Events/Events.d.ts +19 -0
  149. package/dist/types/Events/Events.d.ts.map +1 -0
  150. package/dist/types/Events/PureEvents/FieldSummaryTooltip.d.ts +50 -0
  151. package/dist/types/Events/PureEvents/FieldSummaryTooltip.d.ts.map +1 -0
  152. package/dist/types/Events/PureEvents/PureEvents.d.ts +34 -0
  153. package/dist/types/Events/PureEvents/PureEvents.d.ts.map +1 -0
  154. package/dist/types/Events/PureEvents/TimeControlsPopover.d.ts +33 -0
  155. package/dist/types/Events/PureEvents/TimeControlsPopover.d.ts.map +1 -0
  156. package/dist/types/Events/config.d.ts +4 -0
  157. package/dist/types/Events/config.d.ts.map +1 -0
  158. package/dist/types/Events/index.d.ts +3 -0
  159. package/dist/types/Events/index.d.ts.map +1 -0
  160. package/dist/types/FillerGauge/FillerGauge.d.ts +13 -0
  161. package/dist/types/FillerGauge/FillerGauge.d.ts.map +1 -0
  162. package/dist/types/FillerGauge/PureFillerGauge/FillerGauge.d.ts +32 -0
  163. package/dist/types/FillerGauge/PureFillerGauge/FillerGauge.d.ts.map +1 -0
  164. package/dist/types/FillerGauge/config.d.ts +4 -0
  165. package/dist/types/FillerGauge/config.d.ts.map +1 -0
  166. package/dist/types/FillerGauge/index.d.ts +3 -0
  167. package/dist/types/FillerGauge/index.d.ts.map +1 -0
  168. package/dist/types/Image/Image.d.ts +13 -0
  169. package/dist/types/Image/Image.d.ts.map +1 -0
  170. package/dist/types/Image/ImageApi.d.ts +15 -0
  171. package/dist/types/Image/ImageApi.d.ts.map +1 -0
  172. package/dist/types/Image/config.d.ts +4 -0
  173. package/dist/types/Image/config.d.ts.map +1 -0
  174. package/dist/types/Image/index.d.ts +3 -0
  175. package/dist/types/Image/index.d.ts.map +1 -0
  176. package/dist/types/Line/Line.d.ts +13 -0
  177. package/dist/types/Line/Line.d.ts.map +1 -0
  178. package/dist/types/Line/config.d.ts +4 -0
  179. package/dist/types/Line/config.d.ts.map +1 -0
  180. package/dist/types/Line/index.d.ts +3 -0
  181. package/dist/types/Line/index.d.ts.map +1 -0
  182. package/dist/types/Line/lineUtils.d.ts +22 -0
  183. package/dist/types/Line/lineUtils.d.ts.map +1 -0
  184. package/dist/types/Line/mockdata/LineData.d.ts +184 -0
  185. package/dist/types/Line/mockdata/LineData.d.ts.map +1 -0
  186. package/dist/types/LinkGraph/ESTestDataSources.d.ts +32 -0
  187. package/dist/types/LinkGraph/ESTestDataSources.d.ts.map +1 -0
  188. package/dist/types/LinkGraph/ESTestTemplate.d.ts +2 -0
  189. package/dist/types/LinkGraph/ESTestTemplate.d.ts.map +1 -0
  190. package/dist/types/LinkGraph/LinkGraph.d.ts +22 -0
  191. package/dist/types/LinkGraph/LinkGraph.d.ts.map +1 -0
  192. package/dist/types/LinkGraph/PureLinkGraph/PureLinkGraph.d.ts +89 -0
  193. package/dist/types/LinkGraph/PureLinkGraph/PureLinkGraph.d.ts.map +1 -0
  194. package/dist/types/LinkGraph/PureLinkGraph/PureLinkGraphUtils.d.ts +74 -0
  195. package/dist/types/LinkGraph/PureLinkGraph/PureLinkGraphUtils.d.ts.map +1 -0
  196. package/dist/types/LinkGraph/PureLinkGraph/components/Edges.d.ts +9 -0
  197. package/dist/types/LinkGraph/PureLinkGraph/components/Edges.d.ts.map +1 -0
  198. package/dist/types/LinkGraph/PureLinkGraph/components/Field.d.ts +14 -0
  199. package/dist/types/LinkGraph/PureLinkGraph/components/Field.d.ts.map +1 -0
  200. package/dist/types/LinkGraph/PureLinkGraph/components/FieldStyles.d.ts +5 -0
  201. package/dist/types/LinkGraph/PureLinkGraph/components/FieldStyles.d.ts.map +1 -0
  202. package/dist/types/LinkGraph/PureLinkGraph/components/Graph.d.ts +49 -0
  203. package/dist/types/LinkGraph/PureLinkGraph/components/Graph.d.ts.map +1 -0
  204. package/dist/types/LinkGraph/PureLinkGraph/components/GraphStyles.d.ts +11 -0
  205. package/dist/types/LinkGraph/PureLinkGraph/components/GraphStyles.d.ts.map +1 -0
  206. package/dist/types/LinkGraph/PureLinkGraph/components/Node.d.ts +24 -0
  207. package/dist/types/LinkGraph/PureLinkGraph/components/Node.d.ts.map +1 -0
  208. package/dist/types/LinkGraph/PureLinkGraph/components/Nodes.d.ts +16 -0
  209. package/dist/types/LinkGraph/PureLinkGraph/components/Nodes.d.ts.map +1 -0
  210. package/dist/types/LinkGraph/PureLinkGraph/utils/iconLoader.d.ts +168 -0
  211. package/dist/types/LinkGraph/PureLinkGraph/utils/iconLoader.d.ts.map +1 -0
  212. package/dist/types/LinkGraph/config.d.ts +4 -0
  213. package/dist/types/LinkGraph/config.d.ts.map +1 -0
  214. package/dist/types/LinkGraph/index.d.ts +3 -0
  215. package/dist/types/LinkGraph/index.d.ts.map +1 -0
  216. package/dist/types/Map/Map.d.ts +28 -0
  217. package/dist/types/Map/Map.d.ts.map +1 -0
  218. package/dist/types/Map/MapContextDefault.d.ts +39 -0
  219. package/dist/types/Map/MapContextDefault.d.ts.map +1 -0
  220. package/dist/types/Map/PureMap/BubbleLayer.d.ts +51 -0
  221. package/dist/types/Map/PureMap/BubbleLayer.d.ts.map +1 -0
  222. package/dist/types/Map/PureMap/ChoroplethLayer.d.ts +36 -0
  223. package/dist/types/Map/PureMap/ChoroplethLayer.d.ts.map +1 -0
  224. package/dist/types/Map/PureMap/ClusterLayer.d.ts +17 -0
  225. package/dist/types/Map/PureMap/ClusterLayer.d.ts.map +1 -0
  226. package/dist/types/Map/PureMap/LocalChoroplethLayer.d.ts +18 -0
  227. package/dist/types/Map/PureMap/LocalChoroplethLayer.d.ts.map +1 -0
  228. package/dist/types/Map/PureMap/MapUtils.d.ts +141 -0
  229. package/dist/types/Map/PureMap/MapUtils.d.ts.map +1 -0
  230. package/dist/types/Map/PureMap/MarkerLayer.d.ts +34 -0
  231. package/dist/types/Map/PureMap/MarkerLayer.d.ts.map +1 -0
  232. package/dist/types/Map/PureMap/MarkerWrapper.d.ts +17 -0
  233. package/dist/types/Map/PureMap/MarkerWrapper.d.ts.map +1 -0
  234. package/dist/types/Map/PureMap/PureMap.d.ts +102 -0
  235. package/dist/types/Map/PureMap/PureMap.d.ts.map +1 -0
  236. package/dist/types/Map/PureMap/PureMapContainer.d.ts +15 -0
  237. package/dist/types/Map/PureMap/PureMapContainer.d.ts.map +1 -0
  238. package/dist/types/Map/PureMap/Tooltip.d.ts +20 -0
  239. package/dist/types/Map/PureMap/Tooltip.d.ts.map +1 -0
  240. package/dist/types/Map/PureMap/mockdata/data.d.ts +90 -0
  241. package/dist/types/Map/PureMap/mockdata/data.d.ts.map +1 -0
  242. package/dist/types/Map/config.d.ts +4 -0
  243. package/dist/types/Map/config.d.ts.map +1 -0
  244. package/dist/types/Map/index.d.ts +3 -0
  245. package/dist/types/Map/index.d.ts.map +1 -0
  246. package/dist/types/Markdown/Markdown.d.ts +31 -0
  247. package/dist/types/Markdown/Markdown.d.ts.map +1 -0
  248. package/dist/types/Markdown/config.d.ts +4 -0
  249. package/dist/types/Markdown/config.d.ts.map +1 -0
  250. package/dist/types/Markdown/index.d.ts +3 -0
  251. package/dist/types/Markdown/index.d.ts.map +1 -0
  252. package/dist/types/MarkerGauge/MarkerGauge.d.ts +55 -0
  253. package/dist/types/MarkerGauge/MarkerGauge.d.ts.map +1 -0
  254. package/dist/types/MarkerGauge/PureMarkerGauge/MarkerGauge.d.ts +72 -0
  255. package/dist/types/MarkerGauge/PureMarkerGauge/MarkerGauge.d.ts.map +1 -0
  256. package/dist/types/MarkerGauge/config.d.ts +4 -0
  257. package/dist/types/MarkerGauge/config.d.ts.map +1 -0
  258. package/dist/types/MarkerGauge/index.d.ts +3 -0
  259. package/dist/types/MarkerGauge/index.d.ts.map +1 -0
  260. package/dist/types/ParallelCoordinates/ParallelCoordinates.d.ts +58 -0
  261. package/dist/types/ParallelCoordinates/ParallelCoordinates.d.ts.map +1 -0
  262. package/dist/types/ParallelCoordinates/PureParallelCoordinates/PureParallelCoordinates.d.ts +69 -0
  263. package/dist/types/ParallelCoordinates/PureParallelCoordinates/PureParallelCoordinates.d.ts.map +1 -0
  264. package/dist/types/ParallelCoordinates/PureParallelCoordinates/src/ParallelCoordinatesCanvas.d.ts +30 -0
  265. package/dist/types/ParallelCoordinates/PureParallelCoordinates/src/ParallelCoordinatesCanvas.d.ts.map +1 -0
  266. package/dist/types/ParallelCoordinates/PureParallelCoordinates/src/ParallelCoordinatesChart.d.ts +42 -0
  267. package/dist/types/ParallelCoordinates/PureParallelCoordinates/src/ParallelCoordinatesChart.d.ts.map +1 -0
  268. package/dist/types/ParallelCoordinates/PureParallelCoordinates/src/ParallelCoordinatesPrompt.d.ts +22 -0
  269. package/dist/types/ParallelCoordinates/PureParallelCoordinates/src/ParallelCoordinatesPrompt.d.ts.map +1 -0
  270. package/dist/types/ParallelCoordinates/config.d.ts +4 -0
  271. package/dist/types/ParallelCoordinates/config.d.ts.map +1 -0
  272. package/dist/types/ParallelCoordinates/index.d.ts +3 -0
  273. package/dist/types/ParallelCoordinates/index.d.ts.map +1 -0
  274. package/dist/types/ParallelCoordinates/mockdata/arrayValueData.d.ts +6 -0
  275. package/dist/types/ParallelCoordinates/mockdata/arrayValueData.d.ts.map +1 -0
  276. package/dist/types/ParallelCoordinates/mockdata/sampleCarData.d.ts +6 -0
  277. package/dist/types/ParallelCoordinates/mockdata/sampleCarData.d.ts.map +1 -0
  278. package/dist/types/ParallelCoordinates/mockdata/sampleCarNumericalData.d.ts +6 -0
  279. package/dist/types/ParallelCoordinates/mockdata/sampleCarNumericalData.d.ts.map +1 -0
  280. package/dist/types/ParallelCoordinates/mockdata/sampleFoodData.d.ts +6 -0
  281. package/dist/types/ParallelCoordinates/mockdata/sampleFoodData.d.ts.map +1 -0
  282. package/dist/types/ParallelCoordinates/mockdata/sampleStringNumericalData.d.ts +6 -0
  283. package/dist/types/ParallelCoordinates/mockdata/sampleStringNumericalData.d.ts.map +1 -0
  284. package/dist/types/Pie/Pie.d.ts +15 -0
  285. package/dist/types/Pie/Pie.d.ts.map +1 -0
  286. package/dist/types/Pie/config.d.ts +4 -0
  287. package/dist/types/Pie/config.d.ts.map +1 -0
  288. package/dist/types/Pie/index.d.ts +3 -0
  289. package/dist/types/Pie/index.d.ts.map +1 -0
  290. package/dist/types/Pie/pieUtils.d.ts +78 -0
  291. package/dist/types/Pie/pieUtils.d.ts.map +1 -0
  292. package/dist/types/Punchcard/Punchcard.d.ts +13 -0
  293. package/dist/types/Punchcard/Punchcard.d.ts.map +1 -0
  294. package/dist/types/Punchcard/PurePunchcard/Punchcard.d.ts +40 -0
  295. package/dist/types/Punchcard/PurePunchcard/Punchcard.d.ts.map +1 -0
  296. package/dist/types/Punchcard/PurePunchcard/src/PunchcardAxis.d.ts +20 -0
  297. package/dist/types/Punchcard/PurePunchcard/src/PunchcardAxis.d.ts.map +1 -0
  298. package/dist/types/Punchcard/PurePunchcard/src/PunchcardBubble.d.ts +27 -0
  299. package/dist/types/Punchcard/PurePunchcard/src/PunchcardBubble.d.ts.map +1 -0
  300. package/dist/types/Punchcard/PurePunchcard/src/PunchcardChartArea.d.ts +40 -0
  301. package/dist/types/Punchcard/PurePunchcard/src/PunchcardChartArea.d.ts.map +1 -0
  302. package/dist/types/Punchcard/PurePunchcard/src/PunchcardGridLines.d.ts +17 -0
  303. package/dist/types/Punchcard/PurePunchcard/src/PunchcardGridLines.d.ts.map +1 -0
  304. package/dist/types/Punchcard/PurePunchcard/src/PunchcardLegend.d.ts +21 -0
  305. package/dist/types/Punchcard/PurePunchcard/src/PunchcardLegend.d.ts.map +1 -0
  306. package/dist/types/Punchcard/PurePunchcard/src/PunchcardRow.d.ts +10 -0
  307. package/dist/types/Punchcard/PurePunchcard/src/PunchcardRow.d.ts.map +1 -0
  308. package/dist/types/Punchcard/PurePunchcard/src/utils/punchcardUtils.d.ts +285 -0
  309. package/dist/types/Punchcard/PurePunchcard/src/utils/punchcardUtils.d.ts.map +1 -0
  310. package/dist/types/Punchcard/config.d.ts +4 -0
  311. package/dist/types/Punchcard/config.d.ts.map +1 -0
  312. package/dist/types/Punchcard/index.d.ts +3 -0
  313. package/dist/types/Punchcard/index.d.ts.map +1 -0
  314. package/dist/types/Punchcard/punchcardUtils.d.ts +32 -0
  315. package/dist/types/Punchcard/punchcardUtils.d.ts.map +1 -0
  316. package/dist/types/Rectangle/Rectangle.d.ts +14 -0
  317. package/dist/types/Rectangle/Rectangle.d.ts.map +1 -0
  318. package/dist/types/Rectangle/config.d.ts +4 -0
  319. package/dist/types/Rectangle/config.d.ts.map +1 -0
  320. package/dist/types/Rectangle/index.d.ts +3 -0
  321. package/dist/types/Rectangle/index.d.ts.map +1 -0
  322. package/dist/types/Sankey/PureSankey/PureSankey.d.ts +98 -0
  323. package/dist/types/Sankey/PureSankey/PureSankey.d.ts.map +1 -0
  324. package/dist/types/Sankey/PureSankey/SankeyLink.d.ts +33 -0
  325. package/dist/types/Sankey/PureSankey/SankeyLink.d.ts.map +1 -0
  326. package/dist/types/Sankey/PureSankey/SankeyModels.d.ts +48 -0
  327. package/dist/types/Sankey/PureSankey/SankeyModels.d.ts.map +1 -0
  328. package/dist/types/Sankey/PureSankey/SankeyNode.d.ts +38 -0
  329. package/dist/types/Sankey/PureSankey/SankeyNode.d.ts.map +1 -0
  330. package/dist/types/Sankey/PureSankey/SankeyTooltip.d.ts +43 -0
  331. package/dist/types/Sankey/PureSankey/SankeyTooltip.d.ts.map +1 -0
  332. package/dist/types/Sankey/PureSankey/SankeyUtils.d.ts +20 -0
  333. package/dist/types/Sankey/PureSankey/SankeyUtils.d.ts.map +1 -0
  334. package/dist/types/Sankey/PureSankey/mockdata/data.d.ts +35 -0
  335. package/dist/types/Sankey/PureSankey/mockdata/data.d.ts.map +1 -0
  336. package/dist/types/Sankey/Sankey.d.ts +31 -0
  337. package/dist/types/Sankey/Sankey.d.ts.map +1 -0
  338. package/dist/types/Sankey/config.d.ts +4 -0
  339. package/dist/types/Sankey/config.d.ts.map +1 -0
  340. package/dist/types/Sankey/index.d.ts +3 -0
  341. package/dist/types/Sankey/index.d.ts.map +1 -0
  342. package/dist/types/Scatter/Scatter.d.ts +11 -0
  343. package/dist/types/Scatter/Scatter.d.ts.map +1 -0
  344. package/dist/types/Scatter/config.d.ts +4 -0
  345. package/dist/types/Scatter/config.d.ts.map +1 -0
  346. package/dist/types/Scatter/index.d.ts +3 -0
  347. package/dist/types/Scatter/index.d.ts.map +1 -0
  348. package/dist/types/Scatter/mockdata/data.d.ts +35 -0
  349. package/dist/types/Scatter/mockdata/data.d.ts.map +1 -0
  350. package/dist/types/Scatter/scatterUtils.d.ts +47 -0
  351. package/dist/types/Scatter/scatterUtils.d.ts.map +1 -0
  352. package/dist/types/SingleValue/SingleValue.d.ts +16 -0
  353. package/dist/types/SingleValue/SingleValue.d.ts.map +1 -0
  354. package/dist/types/SingleValue/config.d.ts +4 -0
  355. package/dist/types/SingleValue/config.d.ts.map +1 -0
  356. package/dist/types/SingleValue/index.d.ts +3 -0
  357. package/dist/types/SingleValue/index.d.ts.map +1 -0
  358. package/dist/types/SingleValueBasic/index.d.ts +3 -0
  359. package/dist/types/SingleValueBasic/index.d.ts.map +1 -0
  360. package/dist/types/SingleValueIcon/SingleValueIcon.d.ts +29 -0
  361. package/dist/types/SingleValueIcon/SingleValueIcon.d.ts.map +1 -0
  362. package/dist/types/SingleValueIcon/config.d.ts +4 -0
  363. package/dist/types/SingleValueIcon/config.d.ts.map +1 -0
  364. package/dist/types/SingleValueIcon/index.d.ts +3 -0
  365. package/dist/types/SingleValueIcon/index.d.ts.map +1 -0
  366. package/dist/types/SingleValueRadial/PureSingleValueRadial/GaugeGraph.d.ts +20 -0
  367. package/dist/types/SingleValueRadial/PureSingleValueRadial/GaugeGraph.d.ts.map +1 -0
  368. package/dist/types/SingleValueRadial/PureSingleValueRadial/utils/gaugeUtils.d.ts +82 -0
  369. package/dist/types/SingleValueRadial/PureSingleValueRadial/utils/gaugeUtils.d.ts.map +1 -0
  370. package/dist/types/SingleValueRadial/SingleValueRadial.d.ts +17 -0
  371. package/dist/types/SingleValueRadial/SingleValueRadial.d.ts.map +1 -0
  372. package/dist/types/SingleValueRadial/config.d.ts +4 -0
  373. package/dist/types/SingleValueRadial/config.d.ts.map +1 -0
  374. package/dist/types/SingleValueRadial/index.d.ts +3 -0
  375. package/dist/types/SingleValueRadial/index.d.ts.map +1 -0
  376. package/dist/types/SparkLine/index.d.ts +2 -0
  377. package/dist/types/SparkLine/index.d.ts.map +1 -0
  378. package/dist/types/Table/PureTable.d.ts +50 -0
  379. package/dist/types/Table/PureTable.d.ts.map +1 -0
  380. package/dist/types/Table/Table.d.ts +10 -0
  381. package/dist/types/Table/Table.d.ts.map +1 -0
  382. package/dist/types/Table/cells/ArrayCell.d.ts +12 -0
  383. package/dist/types/Table/cells/ArrayCell.d.ts.map +1 -0
  384. package/dist/types/Table/cells/SparklineCell.d.ts +13 -0
  385. package/dist/types/Table/cells/SparklineCell.d.ts.map +1 -0
  386. package/dist/types/Table/cells/SwitchTableCell.d.ts +5 -0
  387. package/dist/types/Table/cells/SwitchTableCell.d.ts.map +1 -0
  388. package/dist/types/Table/cells/TextCell.d.ts +12 -0
  389. package/dist/types/Table/cells/TextCell.d.ts.map +1 -0
  390. package/dist/types/Table/cells/index.d.ts +5 -0
  391. package/dist/types/Table/cells/index.d.ts.map +1 -0
  392. package/dist/types/Table/config.d.ts +4 -0
  393. package/dist/types/Table/config.d.ts.map +1 -0
  394. package/dist/types/Table/hooks.d.ts +130 -0
  395. package/dist/types/Table/hooks.d.ts.map +1 -0
  396. package/dist/types/Table/index.d.ts +3 -0
  397. package/dist/types/Table/index.d.ts.map +1 -0
  398. package/dist/types/Timeline/PureTimeline/PureTimeline.d.ts +81 -0
  399. package/dist/types/Timeline/PureTimeline/PureTimeline.d.ts.map +1 -0
  400. package/dist/types/Timeline/PureTimeline/src/CursorPlugin.d.ts +8 -0
  401. package/dist/types/Timeline/PureTimeline/src/CursorPlugin.d.ts.map +1 -0
  402. package/dist/types/Timeline/PureTimeline/src/TimelineLegend.d.ts +28 -0
  403. package/dist/types/Timeline/PureTimeline/src/TimelineLegend.d.ts.map +1 -0
  404. package/dist/types/Timeline/PureTimeline/src/TimelinePlugin.d.ts +16 -0
  405. package/dist/types/Timeline/PureTimeline/src/TimelinePlugin.d.ts.map +1 -0
  406. package/dist/types/Timeline/PureTimeline/src/TimelineTooltip.d.ts +11 -0
  407. package/dist/types/Timeline/PureTimeline/src/TimelineTooltip.d.ts.map +1 -0
  408. package/dist/types/Timeline/PureTimeline/src/TimelineUplot.d.ts +22 -0
  409. package/dist/types/Timeline/PureTimeline/src/TimelineUplot.d.ts.map +1 -0
  410. package/dist/types/Timeline/PureTimeline/src/TimelineYAxis.d.ts +20 -0
  411. package/dist/types/Timeline/PureTimeline/src/TimelineYAxis.d.ts.map +1 -0
  412. package/dist/types/Timeline/PureTimeline/src/XAxisPlugin.d.ts +18 -0
  413. package/dist/types/Timeline/PureTimeline/src/XAxisPlugin.d.ts.map +1 -0
  414. package/dist/types/Timeline/PureTimeline/src/utils/timelineUtils.d.ts +34 -0
  415. package/dist/types/Timeline/PureTimeline/src/utils/timelineUtils.d.ts.map +1 -0
  416. package/dist/types/Timeline/Timeline.d.ts +22 -0
  417. package/dist/types/Timeline/Timeline.d.ts.map +1 -0
  418. package/dist/types/Timeline/config.d.ts +4 -0
  419. package/dist/types/Timeline/config.d.ts.map +1 -0
  420. package/dist/types/Timeline/index.d.ts +3 -0
  421. package/dist/types/Timeline/index.d.ts.map +1 -0
  422. package/dist/types/Timeline/mockdata/basicTimelineData.d.ts +76 -0
  423. package/dist/types/Timeline/mockdata/basicTimelineData.d.ts.map +1 -0
  424. package/dist/types/Timeline/mockdata/categoricalTimelineData.d.ts +31 -0
  425. package/dist/types/Timeline/mockdata/categoricalTimelineData.d.ts.map +1 -0
  426. package/dist/types/Timeline/mockdata/timelineDataSource.d.ts +52 -0
  427. package/dist/types/Timeline/mockdata/timelineDataSource.d.ts.map +1 -0
  428. package/dist/types/common/Charting.d.ts +46 -0
  429. package/dist/types/common/Charting.d.ts.map +1 -0
  430. package/dist/types/common/ChartingApi.d.ts +36 -0
  431. package/dist/types/common/ChartingApi.d.ts.map +1 -0
  432. package/dist/types/common/DocExampleWithVizSandbox.d.ts +22 -0
  433. package/dist/types/common/DocExampleWithVizSandbox.d.ts.map +1 -0
  434. package/dist/types/common/OverviewDoc.d.ts +20 -0
  435. package/dist/types/common/OverviewDoc.d.ts.map +1 -0
  436. package/dist/types/common/SplunkVisualization.d.ts +16 -0
  437. package/dist/types/common/SplunkVisualization.d.ts.map +1 -0
  438. package/dist/types/common/SplunkVisualizationApi.d.ts +16 -0
  439. package/dist/types/common/SplunkVisualizationApi.d.ts.map +1 -0
  440. package/dist/types/common/ThemedDefaults.d.ts +2 -0
  441. package/dist/types/common/ThemedDefaults.d.ts.map +1 -0
  442. package/dist/types/common/TimeSeriesChartWrapper.d.ts +7 -0
  443. package/dist/types/common/TimeSeriesChartWrapper.d.ts.map +1 -0
  444. package/dist/types/common/chartingUtils.d.ts +164 -0
  445. package/dist/types/common/chartingUtils.d.ts.map +1 -0
  446. package/dist/types/common/components/IconPlaceholder.d.ts +21 -0
  447. package/dist/types/common/components/IconPlaceholder.d.ts.map +1 -0
  448. package/dist/types/common/components/MissingPropsMessage.d.ts +28 -0
  449. package/dist/types/common/components/MissingPropsMessage.d.ts.map +1 -0
  450. package/dist/types/common/components/TrellisTitle.d.ts +10 -0
  451. package/dist/types/common/components/TrellisTitle.d.ts.map +1 -0
  452. package/dist/types/common/configContext/singleValueContext.d.ts +3 -0
  453. package/dist/types/common/configContext/singleValueContext.d.ts.map +1 -0
  454. package/dist/types/common/docUtils.d.ts +24 -0
  455. package/dist/types/common/docUtils.d.ts.map +1 -0
  456. package/dist/types/common/editorConfig/AxesChartColorAndStyle.d.ts +5 -0
  457. package/dist/types/common/editorConfig/AxesChartColorAndStyle.d.ts.map +1 -0
  458. package/dist/types/common/editorConfig/AxesChartDataConfig.d.ts +31 -0
  459. package/dist/types/common/editorConfig/AxesChartDataConfig.d.ts.map +1 -0
  460. package/dist/types/common/editorConfig/AxesChartDataDisplay.d.ts +14 -0
  461. package/dist/types/common/editorConfig/AxesChartDataDisplay.d.ts.map +1 -0
  462. package/dist/types/common/editorConfig/AxesChartLegend.d.ts +8 -0
  463. package/dist/types/common/editorConfig/AxesChartLegend.d.ts.map +1 -0
  464. package/dist/types/common/editorConfig/AxesChartXGridAndLabels.d.ts +6 -0
  465. package/dist/types/common/editorConfig/AxesChartXGridAndLabels.d.ts.map +1 -0
  466. package/dist/types/common/editorConfig/AxesChartY2GridAndLabels.d.ts +11 -0
  467. package/dist/types/common/editorConfig/AxesChartY2GridAndLabels.d.ts.map +1 -0
  468. package/dist/types/common/editorConfig/AxesChartYGridAndLabels.d.ts +4 -0
  469. package/dist/types/common/editorConfig/AxesChartYGridAndLabels.d.ts.map +1 -0
  470. package/dist/types/common/editorConfig/BackgroundColor.d.ts +10 -0
  471. package/dist/types/common/editorConfig/BackgroundColor.d.ts.map +1 -0
  472. package/dist/types/common/editorConfig/DynamicFillColorEditor.d.ts +29 -0
  473. package/dist/types/common/editorConfig/DynamicFillColorEditor.d.ts.map +1 -0
  474. package/dist/types/common/editorConfig/DynamicGaugeColorEditor.d.ts +29 -0
  475. package/dist/types/common/editorConfig/DynamicGaugeColorEditor.d.ts.map +1 -0
  476. package/dist/types/common/editorConfig/DynamicStrokeColorEditor.d.ts +29 -0
  477. package/dist/types/common/editorConfig/DynamicStrokeColorEditor.d.ts.map +1 -0
  478. package/dist/types/common/editorConfig/Gauge.d.ts +4 -0
  479. package/dist/types/common/editorConfig/Gauge.d.ts.map +1 -0
  480. package/dist/types/common/editorConfig/Legend.d.ts +4 -0
  481. package/dist/types/common/editorConfig/Legend.d.ts.map +1 -0
  482. package/dist/types/common/editorConfig/RadialBackgroundColor.d.ts +10 -0
  483. package/dist/types/common/editorConfig/RadialBackgroundColor.d.ts.map +1 -0
  484. package/dist/types/common/editorConfig/StaticFillColorEditor.d.ts +10 -0
  485. package/dist/types/common/editorConfig/StaticFillColorEditor.d.ts.map +1 -0
  486. package/dist/types/common/editorConfig/StaticGaugeColorEditor.d.ts +10 -0
  487. package/dist/types/common/editorConfig/StaticGaugeColorEditor.d.ts.map +1 -0
  488. package/dist/types/common/editorConfig/StaticStrokeColorEditor.d.ts +10 -0
  489. package/dist/types/common/editorConfig/StaticStrokeColorEditor.d.ts.map +1 -0
  490. package/dist/types/common/editorConfig/TrellisEditors.d.ts +66 -0
  491. package/dist/types/common/editorConfig/TrellisEditors.d.ts.map +1 -0
  492. package/dist/types/common/gaugeUtils.d.ts +387 -0
  493. package/dist/types/common/gaugeUtils.d.ts.map +1 -0
  494. package/dist/types/common/hocs/FixedSizeContainer.d.ts +9 -0
  495. package/dist/types/common/hocs/FixedSizeContainer.d.ts.map +1 -0
  496. package/dist/types/common/hocs/mockdata/trellisData.d.ts +1288 -0
  497. package/dist/types/common/hocs/mockdata/trellisData.d.ts.map +1 -0
  498. package/dist/types/common/hocs/withEditModeCover.d.ts +10 -0
  499. package/dist/types/common/hocs/withEditModeCover.d.ts.map +1 -0
  500. package/dist/types/common/hocs/withPlaceholder.d.ts +8 -0
  501. package/dist/types/common/hocs/withPlaceholder.d.ts.map +1 -0
  502. package/dist/types/common/hocs/withTrellis.d.ts +18 -0
  503. package/dist/types/common/hocs/withTrellis.d.ts.map +1 -0
  504. package/dist/types/common/hooks/useDeepMemo.d.ts +15 -0
  505. package/dist/types/common/hooks/useDeepMemo.d.ts.map +1 -0
  506. package/dist/types/common/hooks/useDownsampleDataSources.d.ts +7 -0
  507. package/dist/types/common/hooks/useDownsampleDataSources.d.ts.map +1 -0
  508. package/dist/types/common/hooks/useEventCallback.d.ts +9 -0
  509. package/dist/types/common/hooks/useEventCallback.d.ts.map +1 -0
  510. package/dist/types/common/hooks/useGetXAndYFields.d.ts +10 -0
  511. package/dist/types/common/hooks/useGetXAndYFields.d.ts.map +1 -0
  512. package/dist/types/common/hooks/usePagination.d.ts +21 -0
  513. package/dist/types/common/hooks/usePagination.d.ts.map +1 -0
  514. package/dist/types/common/hooks/usePrevious.d.ts +2 -0
  515. package/dist/types/common/hooks/usePrevious.d.ts.map +1 -0
  516. package/dist/types/common/hooks/useSorting.d.ts +17 -0
  517. package/dist/types/common/hooks/useSorting.d.ts.map +1 -0
  518. package/dist/types/common/hooks/useTrellisEnabled.d.ts +4 -0
  519. package/dist/types/common/hooks/useTrellisEnabled.d.ts.map +1 -0
  520. package/dist/types/common/interfaces/ChartEvent.d.ts +26 -0
  521. package/dist/types/common/interfaces/ChartEvent.d.ts.map +1 -0
  522. package/dist/types/common/interfaces/DashboardVizProps.d.ts +27 -0
  523. package/dist/types/common/interfaces/DashboardVizProps.d.ts.map +1 -0
  524. package/dist/types/common/interfaces/DataContract.d.ts +19 -0
  525. package/dist/types/common/interfaces/DataContract.d.ts.map +1 -0
  526. package/dist/types/common/interfaces/DataSource.d.ts +45 -0
  527. package/dist/types/common/interfaces/DataSource.d.ts.map +1 -0
  528. package/dist/types/common/interfaces/DefaultContext.d.ts +30 -0
  529. package/dist/types/common/interfaces/DefaultContext.d.ts.map +1 -0
  530. package/dist/types/common/interfaces/Editor.d.ts +23 -0
  531. package/dist/types/common/interfaces/Editor.d.ts.map +1 -0
  532. package/dist/types/common/interfaces/ExtendedDashViz.d.ts +7 -0
  533. package/dist/types/common/interfaces/ExtendedDashViz.d.ts.map +1 -0
  534. package/dist/types/common/interfaces/Object.d.ts +4 -0
  535. package/dist/types/common/interfaces/Object.d.ts.map +1 -0
  536. package/dist/types/common/interfaces/Overview.d.ts +14 -0
  537. package/dist/types/common/interfaces/Overview.d.ts.map +1 -0
  538. package/dist/types/common/interfaces/ThemedDefaults.d.ts +5 -0
  539. package/dist/types/common/interfaces/ThemedDefaults.d.ts.map +1 -0
  540. package/dist/types/common/interfaces/VizActionHandler.d.ts +15 -0
  541. package/dist/types/common/interfaces/VizActionHandler.d.ts.map +1 -0
  542. package/dist/types/common/interfaces/VizBehavior.d.ts +25 -0
  543. package/dist/types/common/interfaces/VizBehavior.d.ts.map +1 -0
  544. package/dist/types/common/interfaces/VizCategory.d.ts +16 -0
  545. package/dist/types/common/interfaces/VizCategory.d.ts.map +1 -0
  546. package/dist/types/common/interfaces/VizConfig.d.ts +34 -0
  547. package/dist/types/common/interfaces/VizConfig.d.ts.map +1 -0
  548. package/dist/types/common/interfaces/VizEvent.d.ts +13 -0
  549. package/dist/types/common/interfaces/VizEvent.d.ts.map +1 -0
  550. package/dist/types/common/interfaces/VizProps.d.ts +8 -0
  551. package/dist/types/common/interfaces/VizProps.d.ts.map +1 -0
  552. package/dist/types/common/interfaces/VizRegistry.d.ts +7 -0
  553. package/dist/types/common/interfaces/VizRegistry.d.ts.map +1 -0
  554. package/dist/types/common/interfaces/VizSize.d.ts +8 -0
  555. package/dist/types/common/interfaces/VizSize.d.ts.map +1 -0
  556. package/dist/types/common/interfaces/VizStatus.d.ts +2 -0
  557. package/dist/types/common/interfaces/VizStatus.d.ts.map +1 -0
  558. package/dist/types/common/interfaces/index.d.ts +19 -0
  559. package/dist/types/common/interfaces/index.d.ts.map +1 -0
  560. package/dist/types/common/shapeUtils.d.ts +26 -0
  561. package/dist/types/common/shapeUtils.d.ts.map +1 -0
  562. package/dist/types/common/utils/configUtils.d.ts +59 -0
  563. package/dist/types/common/utils/configUtils.d.ts.map +1 -0
  564. package/dist/types/common/utils/dataUtils.d.ts +31 -0
  565. package/dist/types/common/utils/dataUtils.d.ts.map +1 -0
  566. package/dist/types/common/utils/featureFlagUtils.d.ts +3 -0
  567. package/dist/types/common/utils/featureFlagUtils.d.ts.map +1 -0
  568. package/dist/types/common/utils/hocUtils.d.ts +12 -0
  569. package/dist/types/common/utils/hocUtils.d.ts.map +1 -0
  570. package/dist/types/common/utils/mapUtils.d.ts +2 -0
  571. package/dist/types/common/utils/mapUtils.d.ts.map +1 -0
  572. package/dist/types/common/utils/styleUtils.d.ts +2 -0
  573. package/dist/types/common/utils/styleUtils.d.ts.map +1 -0
  574. package/dist/types/common/utils/tableUtils.d.ts +3 -0
  575. package/dist/types/common/utils/tableUtils.d.ts.map +1 -0
  576. package/dist/types/common/utils/trellisUtils.d.ts +60 -0
  577. package/dist/types/common/utils/trellisUtils.d.ts.map +1 -0
  578. package/dist/types/common/utils/urlUtils.d.ts +2 -0
  579. package/dist/types/common/utils/urlUtils.d.ts.map +1 -0
  580. package/dist/types/common/withDashboardViz.d.ts +22 -0
  581. package/dist/types/common/withDashboardViz.d.ts.map +1 -0
  582. package/package.json +37 -39
package/FillerGauge.js CHANGED
@@ -306,6 +306,110 @@ var defaultBackgroundColor = (props) => pick_default({
306
306
  prisma: variables_default.backgroundColorSection(props)
307
307
  })(props);
308
308
 
309
+ // src/common/editorConfig/TrellisEditors.ts
310
+ var isTrellisFeatureFlagOn = ({ featureFlags }) => {
311
+ return Boolean(featureFlags == null ? void 0 : featureFlags.visualizations_enableTrellis);
312
+ };
313
+ var isTrellisEnabled = ({ options, featureFlags }) => {
314
+ const { splitByLayout = visualization_schemas_exports.LAYOUT_TYPE.Off } = options;
315
+ return isTrellisFeatureFlagOn({ featureFlags }) && splitByLayout === visualization_schemas_exports.LAYOUT_TYPE.Trellis;
316
+ };
317
+ var TrellisEditorConfig = [
318
+ [
319
+ {
320
+ label: (0, i18n_exports._)("Trellis layout"),
321
+ option: "splitByLayout",
322
+ editor: "editor.toggle",
323
+ showEditor: isTrellisFeatureFlagOn
324
+ }
325
+ ],
326
+ [
327
+ {
328
+ label: (0, i18n_exports._)("Split by"),
329
+ option: "trellisSplitBy",
330
+ editor: "editor.trellisSplitBy",
331
+ editorProps: {
332
+ dataSourceKey: "primary"
333
+ },
334
+ showEditor: isTrellisEnabled
335
+ }
336
+ ],
337
+ [
338
+ {
339
+ label: (0, i18n_exports._)("Number of columns"),
340
+ option: "trellisColumns",
341
+ editor: "editor.number",
342
+ editorProps: {
343
+ min: 1
344
+ },
345
+ showEditor: isTrellisEnabled
346
+ }
347
+ ],
348
+ [
349
+ {
350
+ label: (0, i18n_exports._)("Min column width"),
351
+ option: "trellisMinColumnWidth",
352
+ editor: "editor.number",
353
+ editorProps: {
354
+ min: 1
355
+ },
356
+ showEditor: isTrellisEnabled
357
+ },
358
+ {
359
+ label: (0, i18n_exports._)("Row height"),
360
+ option: "trellisRowHeight",
361
+ editor: "editor.number",
362
+ editorProps: {
363
+ min: 1
364
+ },
365
+ showEditor: isTrellisEnabled
366
+ }
367
+ ],
368
+ [
369
+ {
370
+ label: (0, i18n_exports._)("Max number of components per page"),
371
+ option: "trellisPageCount",
372
+ editor: "editor.number",
373
+ editorProps: {
374
+ min: 1
375
+ },
376
+ showEditor: isTrellisEnabled
377
+ }
378
+ ]
379
+ ];
380
+ var TimechartTrellisEditorConfig = [
381
+ [
382
+ {
383
+ label: (0, i18n_exports._)("Trellis layout"),
384
+ option: "splitByLayout",
385
+ editor: "editor.toggle",
386
+ showEditor: isTrellisFeatureFlagOn,
387
+ // add help text for timecharts
388
+ editorProps: {
389
+ help: (0, i18n_exports._)(
390
+ "Y2-axis and overlay field configurations are not supported when trellis is enabled."
391
+ ),
392
+ helpFormat: "under"
393
+ }
394
+ }
395
+ ],
396
+ ...TrellisEditorConfig.slice(1),
397
+ [
398
+ {
399
+ label: (0, i18n_exports._)("Shared y-axis scale"),
400
+ option: "trellisSharedScale",
401
+ editor: "editor.checkbox",
402
+ showEditor: isTrellisEnabled
403
+ }
404
+ ]
405
+ ];
406
+ var TrellisBackgroundColorEditor = {
407
+ label: (0, i18n_exports._)("Trellis background"),
408
+ option: "trellisBackgroundColor",
409
+ editor: "editor.color",
410
+ showEditor: isTrellisEnabled
411
+ };
412
+
309
413
  // src/FillerGauge/config.ts
310
414
  var dataContract = {
311
415
  requiredDataSources: [
@@ -356,6 +460,13 @@ var themes = {
356
460
  valueMarkerLabelFillColor: (props) => pick_default({
357
461
  light: variables_default.gray96(props),
358
462
  dark: variables_default.black(props)
463
+ })(props),
464
+ defaultFontColor: (props) => pick_default({
465
+ enterprise: {
466
+ dark: variables_default.textColor(props),
467
+ light: variables_default.textColor(props)
468
+ },
469
+ prisma: variables_default.contentColorDefault(props)
359
470
  })(props)
360
471
  };
361
472
  var basePresetContext = {
@@ -415,7 +526,10 @@ var editorConfig = [
415
526
  ]
416
527
  ]
417
528
  },
418
- Gauge_default,
529
+ {
530
+ label: Gauge_default.label,
531
+ layout: [...Gauge_default.layout, ...TrellisEditorConfig]
532
+ },
419
533
  {
420
534
  label: (0, i18n_exports._)("Color and style"),
421
535
  layout: [
@@ -446,7 +560,14 @@ var editorConfig = [
446
560
  }
447
561
  })
448
562
  ],
449
- BackgroundColor_default({ themes })
563
+ BackgroundColor_default({ themes }),
564
+ [
565
+ __spreadProps(__spreadValues({}, TrellisBackgroundColorEditor), {
566
+ editorProps: {
567
+ themes
568
+ }
569
+ })
570
+ ]
450
571
  ]
451
572
  }
452
573
  ];
@@ -470,7 +591,7 @@ var config = {
470
591
  defaultContext,
471
592
  optionsSchema: visualization_schemas_exports.fillerGaugeOptionsSchema,
472
593
  editorConfig,
473
- supports: ["dynamic-options" /* DYNAMIC_OPTIONS */, "placeholder" /* PLACEHOLDER */],
594
+ supports: ["dynamic-options" /* DYNAMIC_OPTIONS */, "placeholder" /* PLACEHOLDER */, "trellis" /* TRELLIS */],
474
595
  themes
475
596
  };
476
597
  var config_default = enhanceConfig(config);
@@ -685,7 +806,7 @@ SplunkVisualization.propTypes = {
685
806
  /**
686
807
  *
687
808
  */
688
- SplunkVisualization.defaultProps = {
809
+ SplunkVisualization.defaults = {
689
810
  // BaseVisualization in dashboard-visualizations uses 100% for width but 250 for height
690
811
  width: "100%",
691
812
  height: INITIAL_HEIGHT,
@@ -706,13 +827,13 @@ var SplunkVisualization_default = SplunkVisualization;
706
827
  // src/common/interfaces/DataSource.ts
707
828
  var validSortDirs = ["asc", "desc", "none"];
708
829
 
709
- // src/common/hooks/getSorting.ts
830
+ // src/common/hooks/useSorting.ts
710
831
  var SortParamsPropTypes = prop_types_exports.shape({
711
832
  currentSortKey: prop_types_exports.string,
712
833
  currentSortDir: prop_types_exports.oneOf(validSortDirs),
713
834
  onSort: prop_types_exports.func
714
835
  });
715
- var getSortingParams = ({ requestParams, onRequestParamsChange }) => {
836
+ var useSortingParams = ({ requestParams, onRequestParamsChange }) => {
716
837
  let currentSortKey;
717
838
  let currentSortDir;
718
839
  const nextSortDirMap = {
@@ -742,14 +863,14 @@ var getSortingParams = ({ requestParams, onRequestParamsChange }) => {
742
863
  };
743
864
  };
744
865
 
745
- // src/common/hooks/getPagination.ts
866
+ // src/common/hooks/usePagination.ts
746
867
  var PaginatorParamsPropTypes = prop_types_exports.shape({
747
868
  isPaging: prop_types_exports.bool,
748
869
  current: prop_types_exports.number,
749
870
  totalPages: prop_types_exports.number,
750
871
  onChange: prop_types_exports.func
751
872
  });
752
- var getPaginationParams = ({
873
+ var usePaginationParams = ({
753
874
  requestParams,
754
875
  meta,
755
876
  onRequestParamsChange
@@ -802,14 +923,84 @@ var defaultImport24 = __toESM(require("@splunk/visualizations-shared/Message"));
802
923
  __reExport(Message_exports, require("@splunk/visualizations-shared/Message"));
803
924
  var Message_default = "default" in defaultImport24 ? defaultImport24.default : defaultImport24;
804
925
 
805
- // esm-externals:@splunk/visualizations-shared/style
806
- var style_exports = {};
807
- __export(style_exports, {
808
- default: () => style_default
926
+ // esm-externals:@splunk/visualizations-shared/SizeAwareWrapper
927
+ var SizeAwareWrapper_exports = {};
928
+ __export(SizeAwareWrapper_exports, {
929
+ default: () => SizeAwareWrapper_default
809
930
  });
810
- var defaultImport25 = __toESM(require("@splunk/visualizations-shared/style"));
811
- __reExport(style_exports, require("@splunk/visualizations-shared/style"));
812
- var style_default = "default" in defaultImport25 ? defaultImport25.default : defaultImport25;
931
+ var defaultImport25 = __toESM(require("@splunk/visualizations-shared/SizeAwareWrapper"));
932
+ __reExport(SizeAwareWrapper_exports, require("@splunk/visualizations-shared/SizeAwareWrapper"));
933
+ var SizeAwareWrapper_default = "default" in defaultImport25 ? defaultImport25.default : defaultImport25;
934
+
935
+ // src/common/components/MissingPropsMessage.tsx
936
+ var isMissing = (v) => {
937
+ return v === null || v === void 0;
938
+ };
939
+ var missingKeys = (keys, target) => keys.filter((k) => isMissing(target[k]));
940
+ var MissingPropsMessage = (props) => {
941
+ const {
942
+ width = SplunkVisualization_default.defaults.width,
943
+ height = SplunkVisualization_default.defaults.height,
944
+ missingProps,
945
+ backgroundColor
946
+ } = props;
947
+ const cachedHandleResize = react_exports.useCallback((w, h) => {
948
+ setContainerWidth(w);
949
+ setContainerHeight(h);
950
+ }, []);
951
+ const [containerWidth, setContainerWidth] = react_exports.useState(Number(width));
952
+ const [containerHeight, setContainerHeight] = react_exports.useState(Number(height));
953
+ 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(
954
+ Message_default,
955
+ {
956
+ "data-test": "message",
957
+ width,
958
+ height,
959
+ message: (0, i18n_exports._)(`Missing property: ${missingProps.join(", ")}`),
960
+ level: "error"
961
+ }
962
+ ));
963
+ };
964
+ var MissingPropsMessage_default = MissingPropsMessage;
965
+
966
+ // src/common/utils/hocUtils.ts
967
+ var extendStaticWrapperProps = ({
968
+ Wrapper,
969
+ Visualization
970
+ }) => {
971
+ const extendProperties = ["propTypes", "config"];
972
+ extendProperties.forEach((prop) => {
973
+ if (Visualization[prop]) {
974
+ Wrapper[prop] = Visualization[prop];
975
+ }
976
+ });
977
+ };
978
+
979
+ // src/common/hocs/withEditModeCover.tsx
980
+ var Cover = styled_components_default.div`
981
+ position: absolute;
982
+ left: 0;
983
+ right: 0;
984
+ top: 0;
985
+ bottom: 0;
986
+ `;
987
+ var Blocker = styled_components_default.div.attrs({
988
+ "data-splunk-visualization-version": "28.2.0 - 7eea200d8"
989
+ })`
990
+ position: relative;
991
+ width: 100%;
992
+ height: 100%;
993
+ `;
994
+ var withEditModeCover = (Visualization, disableEditModeCover) => {
995
+ const Wrapper = (props) => {
996
+ const { mode } = props;
997
+ const showEditCover = mode === "edit" && !disableEditModeCover;
998
+ 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" }));
999
+ };
1000
+ extendStaticWrapperProps({ Wrapper, Visualization });
1001
+ return Wrapper;
1002
+ };
1003
+ var withEditModeCover_default = withEditModeCover;
813
1004
 
814
1005
  // esm-externals:@splunk/visualizations-shared/colorUtils
815
1006
  var colorUtils_exports = {};
@@ -820,14 +1011,14 @@ var defaultImport26 = __toESM(require("@splunk/visualizations-shared/colorUtils"
820
1011
  __reExport(colorUtils_exports, require("@splunk/visualizations-shared/colorUtils"));
821
1012
  var colorUtils_default = "default" in defaultImport26 ? defaultImport26.default : defaultImport26;
822
1013
 
823
- // esm-externals:@splunk/visualizations-shared/SizeAwareWrapper
824
- var SizeAwareWrapper_exports = {};
825
- __export(SizeAwareWrapper_exports, {
826
- default: () => SizeAwareWrapper_default
1014
+ // esm-externals:@splunk/visualizations-shared/style
1015
+ var style_exports = {};
1016
+ __export(style_exports, {
1017
+ default: () => style_default
827
1018
  });
828
- var defaultImport27 = __toESM(require("@splunk/visualizations-shared/SizeAwareWrapper"));
829
- __reExport(SizeAwareWrapper_exports, require("@splunk/visualizations-shared/SizeAwareWrapper"));
830
- var SizeAwareWrapper_default = "default" in defaultImport27 ? defaultImport27.default : defaultImport27;
1019
+ var defaultImport27 = __toESM(require("@splunk/visualizations-shared/style"));
1020
+ __reExport(style_exports, require("@splunk/visualizations-shared/style"));
1021
+ var style_default = "default" in defaultImport27 ? defaultImport27.default : defaultImport27;
831
1022
 
832
1023
  // src/common/hocs/FixedSizeContainer.tsx
833
1024
  var Item = styled_components_default.div.attrs(({ width }) => ({
@@ -879,7 +1070,7 @@ var withFixedSizeContainer = (Viz) => {
879
1070
  FixSizeItem,
880
1071
  {
881
1072
  "data-test": "fix-size-item",
882
- "data-splunk-visualization-version": "28.0.0 - 0c5f07712",
1073
+ "data-splunk-visualization-version": "28.2.0 - 7eea200d8",
883
1074
  width,
884
1075
  height,
885
1076
  backgroundColor
@@ -892,76 +1083,6 @@ var withFixedSizeContainer = (Viz) => {
892
1083
  };
893
1084
  var FixedSizeContainer_default = withFixedSizeContainer;
894
1085
 
895
- // src/common/components/MissingPropsMessage.tsx
896
- var isMissing = (v) => {
897
- return v === null || v === void 0;
898
- };
899
- var missingKeys = (keys, target) => keys.filter((k) => isMissing(target[k]));
900
- var propTypes = {
901
- width: prop_types_exports.oneOfType([prop_types_exports.string, prop_types_exports.number]),
902
- height: prop_types_exports.oneOfType([prop_types_exports.string, prop_types_exports.number]),
903
- // eslint-disable-next-line react/no-unused-prop-types
904
- backgroundColor: prop_types_exports.string,
905
- missingProps: prop_types_exports.arrayOf(prop_types_exports.string)
906
- };
907
- var MissingPropsMessage = (props) => {
908
- const { width, height, missingProps } = props;
909
- return /* @__PURE__ */ react_exports.createElement(
910
- Message_default,
911
- {
912
- "data-test": "message",
913
- width,
914
- height,
915
- message: (0, i18n_exports._)(`Missing property: ${missingProps.join(", ")}`)
916
- }
917
- );
918
- };
919
- MissingPropsMessage.propTypes = propTypes;
920
- MissingPropsMessage.defaultProps = {
921
- width: "100%",
922
- height: 250
923
- };
924
- var MissingPropsMessage_default = FixedSizeContainer_default(MissingPropsMessage);
925
-
926
- // src/common/utils/hocUtils.ts
927
- var extendStaticWrapperProps = ({
928
- Wrapper,
929
- Visualization
930
- }) => {
931
- const extendProperties = ["propTypes", "defaultProps", "config"];
932
- extendProperties.forEach((prop) => {
933
- if (Visualization[prop]) {
934
- Wrapper[prop] = Visualization[prop];
935
- }
936
- });
937
- };
938
-
939
- // src/common/hocs/withEditModeCover.tsx
940
- var Cover = styled_components_default.div`
941
- position: absolute;
942
- left: 0;
943
- right: 0;
944
- top: 0;
945
- bottom: 0;
946
- `;
947
- var Blocker = styled_components_default.div.attrs({
948
- "data-splunk-visualization-version": "28.0.0 - 0c5f07712"
949
- })`
950
- position: relative;
951
- width: 100%;
952
- height: 100%;
953
- `;
954
- var withEditModeCover = (Visualization, disableEditModeCover) => {
955
- const Wrapper = (props) => {
956
- const { mode } = props;
957
- const showEditCover = mode === "edit" && !disableEditModeCover;
958
- 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" }));
959
- };
960
- extendStaticWrapperProps({ Wrapper, Visualization });
961
- return Wrapper;
962
- };
963
- var withEditModeCover_default = withEditModeCover;
964
-
965
1086
  // src/common/components/IconPlaceholder.tsx
966
1087
  var shouldShowIconPlaceholder = (dataSources, loading = false) => {
967
1088
  const data = (0, lodash_exports.get)(dataSources, "primary.data.columns[0]", void 0);
@@ -970,18 +1091,23 @@ var shouldShowIconPlaceholder = (dataSources, loading = false) => {
970
1091
  const noFields = fields === void 0;
971
1092
  return loading || noData || noFields;
972
1093
  };
973
- var propTypes2 = {
974
- icon: prop_types_exports.func,
975
- width: prop_types_exports.oneOfType([prop_types_exports.string, prop_types_exports.number]),
976
- height: prop_types_exports.oneOfType([prop_types_exports.string, prop_types_exports.number]),
977
- // eslint-disable-next-line react/no-unused-prop-types
978
- backgroundColor: prop_types_exports.string,
979
- iconColor: prop_types_exports.string
980
- };
981
1094
  var IconPlaceholder = (props) => {
982
- const { width, height, icon, iconColor } = props;
1095
+ const {
1096
+ width = SplunkVisualization_default.defaults.width,
1097
+ height = SplunkVisualization_default.defaults.height,
1098
+ icon,
1099
+ iconColor,
1100
+ backgroundColor
1101
+ } = props;
1102
+ const cachedHandleResize = react_exports.useCallback((w, h) => {
1103
+ setContainerWidth(w);
1104
+ setContainerHeight(h);
1105
+ }, []);
1106
+ const [containerWidth, setContainerWidth] = react_exports.useState(Number(width));
1107
+ const [containerHeight, setContainerHeight] = react_exports.useState(Number(height));
1108
+ let content = /* @__PURE__ */ react_exports.createElement(Message_default, { width, height, level: "warning", message: (0, i18n_exports._)("No DataSource Connected") });
983
1109
  if (icon) {
984
- return react_exports.createElement(icon, {
1110
+ content = react_exports.createElement(icon, {
985
1111
  style: {
986
1112
  left: "50%",
987
1113
  top: "50%",
@@ -995,12 +1121,7 @@ var IconPlaceholder = (props) => {
995
1121
  "data-test": "icon-placeholder"
996
1122
  });
997
1123
  }
998
- return /* @__PURE__ */ react_exports.createElement(Message_default, { width, height, level: "warning", message: (0, i18n_exports._)("No DataSource Connected") });
999
- };
1000
- IconPlaceholder.propTypes = propTypes2;
1001
- IconPlaceholder.defaultProps = {
1002
- width: "100%",
1003
- height: 250
1124
+ return /* @__PURE__ */ react_exports.createElement("div", { style: { width: containerWidth, height: containerHeight, background: backgroundColor } }, /* @__PURE__ */ react_exports.createElement(SizeAwareWrapper_default, { width, height, onResize: cachedHandleResize }), content);
1004
1125
  };
1005
1126
  var IconPlaceholder_default = FixedSizeContainer_default(IconPlaceholder);
1006
1127
 
@@ -1010,11 +1131,17 @@ var withPlaceholder = (Visualization, useIconPlaceholder = shouldShowIconPlaceho
1010
1131
  const { themes: themes3 } = config3;
1011
1132
  const Wrapper = (props) => {
1012
1133
  var _a, _b;
1013
- const { dataSources, loading, options, height, width } = props;
1134
+ const {
1135
+ dataSources,
1136
+ loading,
1137
+ options,
1138
+ height = SplunkVisualization_default.defaults.height,
1139
+ width = SplunkVisualization_default.defaults.width
1140
+ } = props;
1014
1141
  const showPlaceholder = useIconPlaceholder(dataSources, loading, options);
1015
- 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);
1016
- const icon = (_b = config3.placeholderIcon) != null ? _b : config3.icon;
1142
+ const icon = (_a = config3.placeholderIcon) != null ? _a : config3.icon;
1017
1143
  const iconColor = variables_default.contentColorActive(props);
1144
+ 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);
1018
1145
  if (config3.supports.includes("placeholder" /* PLACEHOLDER */) && showPlaceholder) {
1019
1146
  return /* @__PURE__ */ react_exports.createElement(
1020
1147
  IconPlaceholder_default,
@@ -1447,6 +1574,309 @@ __reExport(trellisUtils_exports, require("@splunk/visualizations-shared/trellisU
1447
1574
  var trellisUtils_default = "default" in defaultImport30 ? defaultImport30.default : defaultImport30;
1448
1575
 
1449
1576
  // src/common/utils/trellisUtils.ts
1577
+ var AGGREGATIONS = "aggregations";
1578
+ var dataSourcesSplitByAggregationsUnknown = (dataSource) => {
1579
+ var _a, _b, _c, _d;
1580
+ const fields = (_b = (_a = dataSource == null ? void 0 : dataSource.primary) == null ? void 0 : _a.data) == null ? void 0 : _b.fields;
1581
+ const columns = (_d = (_c = dataSource == null ? void 0 : dataSource.primary) == null ? void 0 : _c.data) == null ? void 0 : _d.columns;
1582
+ let splitDataSources = null;
1583
+ let errorCode = null;
1584
+ if (fields && fields.length) {
1585
+ splitDataSources = {};
1586
+ for (let i = 0; i < fields.length; i += 1) {
1587
+ const fieldName = fields[i].name;
1588
+ if (!(fieldName == null ? void 0 : fieldName.startsWith("_"))) {
1589
+ splitDataSources[fieldName] = (0, lodash_exports.cloneDeep)(
1590
+ (0, lodash_exports.omit)(dataSource, ["primary.data.fields", "primary.data.columns"])
1591
+ );
1592
+ splitDataSources[fieldName].primary.data.fields = [fields[i]];
1593
+ splitDataSources[fieldName].primary.data.columns = [columns[i]];
1594
+ }
1595
+ }
1596
+ } else {
1597
+ errorCode = "INVALID_SPLIT_BY_FIELD";
1598
+ }
1599
+ return { splitDataSources, errorCode };
1600
+ };
1601
+ var toFieldEntries = (fields) => {
1602
+ return fields.map((field) => {
1603
+ if (typeof field === "string") {
1604
+ return { name: field };
1605
+ }
1606
+ return field;
1607
+ });
1608
+ };
1609
+ var dataSourcesSplitByAggregationsTimechartAndChart = (dataSource) => {
1610
+ var _a, _b, _c, _d;
1611
+ const fields = toFieldEntries((_b = (_a = dataSource == null ? void 0 : dataSource.primary) == null ? void 0 : _a.data) == null ? void 0 : _b.fields);
1612
+ const columns = (_d = (_c = dataSource == null ? void 0 : dataSource.primary) == null ? void 0 : _c.data) == null ? void 0 : _d.columns;
1613
+ let splitDataSources = null;
1614
+ let splitByFields = [];
1615
+ let errorCode = null;
1616
+ if (typeof fields[0] !== "string") {
1617
+ splitByFields = (0, trellisUtils_exports.extractDataSourceAggregationKeysChart)(fields);
1618
+ }
1619
+ if (splitByFields && splitByFields.length > 0) {
1620
+ splitDataSources = {};
1621
+ splitByFields.forEach((splitByField) => {
1622
+ splitDataSources[splitByField] = (0, lodash_exports.cloneDeep)(
1623
+ (0, lodash_exports.omit)(dataSource, ["primary.data.fields", "primary.data.columns"])
1624
+ );
1625
+ splitDataSources[splitByField].primary.data.fields = [fields[0]];
1626
+ splitDataSources[splitByField].primary.data.columns = [columns[0]];
1627
+ fields.forEach((field, idx) => {
1628
+ const fieldName = field == null ? void 0 : field.name;
1629
+ if (fieldName !== "_time" && !(fieldName == null ? void 0 : fieldName.startsWith("_")) && field.data_source === splitByField) {
1630
+ splitDataSources[splitByField].primary.data.fields.push(field);
1631
+ splitDataSources[splitByField].primary.data.columns.push(columns[idx]);
1632
+ }
1633
+ });
1634
+ });
1635
+ } else if ((!splitByFields || !splitByFields.length) && fields.length > 1) {
1636
+ splitDataSources = {};
1637
+ for (let i = 1; i < fields.length; i += 1) {
1638
+ const fieldName = fields[i].name;
1639
+ if (!(fieldName == null ? void 0 : fieldName.startsWith("_"))) {
1640
+ splitDataSources[fieldName] = (0, lodash_exports.cloneDeep)(
1641
+ (0, lodash_exports.omit)(dataSource, ["primary.data.fields", "primary.data.columns"])
1642
+ );
1643
+ splitDataSources[fieldName].primary.data.fields = [fields[0], fields[i]];
1644
+ splitDataSources[fieldName].primary.data.columns = [columns[0], columns[i]];
1645
+ }
1646
+ }
1647
+ } else {
1648
+ errorCode = "INVALID_SPLIT_BY_FIELD";
1649
+ }
1650
+ return { splitDataSources, errorCode };
1651
+ };
1652
+ var dataSourcesSplitByAggregationsStats = (dataSource) => {
1653
+ var _a, _b, _c, _d;
1654
+ const fields = (_b = (_a = dataSource == null ? void 0 : dataSource.primary) == null ? void 0 : _a.data) == null ? void 0 : _b.fields;
1655
+ const columns = (_d = (_c = dataSource == null ? void 0 : dataSource.primary) == null ? void 0 : _c.data) == null ? void 0 : _d.columns;
1656
+ let splitDataSources = null;
1657
+ let splitByFields = [];
1658
+ let errorCode = null;
1659
+ if (typeof fields[0] !== "string") {
1660
+ splitByFields = (0, trellisUtils_exports.extractDataSourceAggregationKeysStats)(fields);
1661
+ }
1662
+ if (splitByFields && splitByFields.length > 0) {
1663
+ splitDataSources = {};
1664
+ splitByFields.forEach((splitByField) => {
1665
+ splitDataSources[splitByField] = (0, lodash_exports.cloneDeep)(
1666
+ (0, lodash_exports.omit)(dataSource, ["primary.data.fields", "primary.data.columns"])
1667
+ );
1668
+ splitDataSources[splitByField].primary.data.fields = [fields[0]];
1669
+ splitDataSources[splitByField].primary.data.columns = [columns[0]];
1670
+ const idx = fields.findIndex((field) => field.name === splitByField);
1671
+ if (idx > 0) {
1672
+ splitDataSources[splitByField].primary.data.fields.push(fields[idx]);
1673
+ splitDataSources[splitByField].primary.data.columns.push(columns[idx]);
1674
+ }
1675
+ });
1676
+ } else {
1677
+ errorCode = "INVALID_SPLIT_BY_FIELD";
1678
+ }
1679
+ return { splitDataSources, errorCode };
1680
+ };
1681
+ var dataSourcesSplitByModeTimechart = (dataSource, splitBy) => {
1682
+ var _a, _b, _c, _d, _e;
1683
+ const fields = (_b = (_a = dataSource == null ? void 0 : dataSource.primary) == null ? void 0 : _a.data) == null ? void 0 : _b.fields;
1684
+ const columns = (_d = (_c = dataSource == null ? void 0 : dataSource.primary) == null ? void 0 : _c.data) == null ? void 0 : _d.columns;
1685
+ let splitDataSources = null;
1686
+ let splitByFields = [];
1687
+ let errorCode = null;
1688
+ if (typeof fields[0] !== "string") {
1689
+ splitByFields = (0, trellisUtils_exports.extractSplitByFieldsChartFields)(fields);
1690
+ }
1691
+ if (splitByFields && splitByFields.indexOf(splitBy) > -1) {
1692
+ splitDataSources = {};
1693
+ const dataSourceKeys = (0, trellisUtils_exports.extractDataSourceAggregationKeysChart)(fields);
1694
+ const valueKeys = [];
1695
+ for (let i = 1; i < fields.length; i += 1) {
1696
+ if (!((_e = fields[i].name) == null ? void 0 : _e.startsWith("_"))) {
1697
+ valueKeys.push(fields[i].splitby_value ? fields[i].splitby_value : fields[i].name);
1698
+ }
1699
+ }
1700
+ valueKeys.forEach((val) => {
1701
+ splitDataSources[val] = (0, lodash_exports.cloneDeep)(
1702
+ (0, lodash_exports.omit)(dataSource, ["primary.data.fields", "primary.data.columns"])
1703
+ );
1704
+ splitDataSources[val].primary.data.fields = [
1705
+ { name: fields[0].name },
1706
+ ...dataSourceKeys.map((k) => ({
1707
+ name: k
1708
+ }))
1709
+ ];
1710
+ splitDataSources[val].primary.data.columns = [[...columns[0]]];
1711
+ dataSourceKeys.forEach((dsKey) => {
1712
+ fields.forEach((field, idx) => {
1713
+ if (field.data_source === dsKey && (field.splitby_value === val || field.name === val)) {
1714
+ splitDataSources[val].primary.data.columns.push([...columns[idx]]);
1715
+ }
1716
+ });
1717
+ });
1718
+ });
1719
+ } else {
1720
+ errorCode = "INVALID_SPLIT_BY_FIELD";
1721
+ }
1722
+ return { splitDataSources, errorCode };
1723
+ };
1724
+ var dataSourcesSplitByModeChart = (dataSource, splitBy) => {
1725
+ var _a, _b, _c, _d;
1726
+ const fields = (_b = (_a = dataSource == null ? void 0 : dataSource.primary) == null ? void 0 : _a.data) == null ? void 0 : _b.fields;
1727
+ const columns = (_d = (_c = dataSource == null ? void 0 : dataSource.primary) == null ? void 0 : _c.data) == null ? void 0 : _d.columns;
1728
+ let splitDataSources = null;
1729
+ let splitByFields = [];
1730
+ let errorCode = null;
1731
+ if (typeof fields[0] !== "string") {
1732
+ splitByFields = (0, trellisUtils_exports.extractSplitByFieldsChartFields)(fields);
1733
+ }
1734
+ if (splitByFields && splitByFields.indexOf(splitBy) > -1) {
1735
+ splitDataSources = {};
1736
+ const splitByFieldIdx = splitByFields.findIndex((f) => f === splitBy);
1737
+ const otherSplitBy = splitByFields.filter((f) => f !== splitBy);
1738
+ const dataSourceKeys = (0, trellisUtils_exports.extractDataSourceAggregationKeysChart)(fields);
1739
+ const nonDataSourceAggregations = [];
1740
+ if (!dataSourceKeys.length && fields[0].groupby_rank === "0" && fields.length && !fields[1].groupby_rank) {
1741
+ for (let i = 1; i < fields.length; i += 1) {
1742
+ nonDataSourceAggregations.push(fields[i].name);
1743
+ }
1744
+ }
1745
+ if (splitByFieldIdx === 0) {
1746
+ const valueKeys = (0, lodash_exports.cloneDeep)(columns[0]);
1747
+ valueKeys.forEach((val, idx) => {
1748
+ splitDataSources[val] = (0, lodash_exports.cloneDeep)(
1749
+ (0, lodash_exports.omit)(dataSource, ["primary.data.fields", "primary.data.columns"])
1750
+ );
1751
+ splitDataSources[val].primary.data.fields = [];
1752
+ if (otherSplitBy.length) {
1753
+ splitDataSources[val].primary.data.fields = [{ name: otherSplitBy[0] }];
1754
+ }
1755
+ if (dataSourceKeys.length) {
1756
+ const columnValues = [[]];
1757
+ splitDataSources[val].primary.data.fields = [
1758
+ ...splitDataSources[val].primary.data.fields,
1759
+ ...dataSourceKeys.map((k) => ({
1760
+ name: k
1761
+ }))
1762
+ ];
1763
+ dataSourceKeys.forEach(() => {
1764
+ columnValues.push([]);
1765
+ });
1766
+ for (let i = 1; i <= Math.ceil((fields.length - 1) / dataSourceKeys.length); i += 1) {
1767
+ columnValues[0].push(
1768
+ fields[i].splitby_value ? fields[i].splitby_value : fields[i].name
1769
+ );
1770
+ dataSourceKeys.forEach((dskey, dsIndx) => {
1771
+ const mul = (fields.length - 1) / dataSourceKeys.length;
1772
+ columnValues[dsIndx + 1].push(columns[i + dsIndx * mul][idx]);
1773
+ });
1774
+ }
1775
+ splitDataSources[val].primary.data.columns = columnValues;
1776
+ } else if (nonDataSourceAggregations.length) {
1777
+ const columnValues = [];
1778
+ fields.forEach((aggregationField, fieldIdx) => {
1779
+ if (fieldIdx > 0) {
1780
+ splitDataSources[val].primary.data.fields.push(aggregationField);
1781
+ columnValues.push([columns[fieldIdx][idx]]);
1782
+ }
1783
+ });
1784
+ splitDataSources[val].primary.data.columns = columnValues;
1785
+ }
1786
+ });
1787
+ } else {
1788
+ const valueKeys = [];
1789
+ for (let i = 1; i < fields.length; i += 1) {
1790
+ valueKeys.push(fields[i].splitby_value ? fields[i].splitby_value : fields[i].name);
1791
+ }
1792
+ valueKeys.forEach((val) => {
1793
+ splitDataSources[val] = (0, lodash_exports.cloneDeep)(
1794
+ (0, lodash_exports.omit)(dataSource, ["primary.data.fields", "primary.data.columns"])
1795
+ );
1796
+ splitDataSources[val].primary.data.fields = [
1797
+ { name: otherSplitBy[0] },
1798
+ ...dataSourceKeys.map((k) => ({
1799
+ name: k
1800
+ }))
1801
+ ];
1802
+ splitDataSources[val].primary.data.columns = [[...columns[0]]];
1803
+ dataSourceKeys.forEach((dsKey) => {
1804
+ fields.forEach((field, idx) => {
1805
+ if (field.data_source === dsKey && (field.splitby_value === val || field.name === val)) {
1806
+ splitDataSources[val].primary.data.columns.push([...columns[idx]]);
1807
+ }
1808
+ });
1809
+ });
1810
+ });
1811
+ }
1812
+ } else {
1813
+ errorCode = "INVALID_SPLIT_BY_FIELD";
1814
+ }
1815
+ return { splitDataSources, errorCode };
1816
+ };
1817
+ var dataSourcesSplitByModeStatsorUnknown = (dataSource, splitBy, splitMode) => {
1818
+ var _a, _b, _c, _d, _e, _f;
1819
+ const fields = (_b = (_a = dataSource == null ? void 0 : dataSource.primary) == null ? void 0 : _a.data) == null ? void 0 : _b.fields;
1820
+ const columns = (_d = (_c = dataSource == null ? void 0 : dataSource.primary) == null ? void 0 : _c.data) == null ? void 0 : _d.columns;
1821
+ let splitDataSources = null;
1822
+ let splitByFields = [];
1823
+ let errorCode = null;
1824
+ if (typeof fields[0] !== "string") {
1825
+ splitByFields = splitMode !== trellisUtils_exports.UNKNOWN ? (0, trellisUtils_exports.extractSplitByFieldsForStats)(fields) : (0, trellisUtils_exports.extractSplitByFieldsForUnknown)(fields);
1826
+ }
1827
+ const splitByIndex = fields == null ? void 0 : fields.findIndex(
1828
+ (field) => field === splitBy || field.name === splitBy
1829
+ );
1830
+ if (splitByFields && splitByFields.indexOf(splitBy) > -1) {
1831
+ const splitByColumn = (_f = (_e = dataSource == null ? void 0 : dataSource.primary) == null ? void 0 : _e.data) == null ? void 0 : _f.columns[splitByIndex];
1832
+ splitDataSources = {};
1833
+ splitByColumn.forEach((val, idx) => {
1834
+ if (!splitDataSources[val]) {
1835
+ splitDataSources[val] = [idx];
1836
+ } else {
1837
+ splitDataSources[val].push(idx);
1838
+ }
1839
+ });
1840
+ const cloneFields = (0, lodash_exports.cloneDeep)(fields);
1841
+ cloneFields.splice(splitByIndex, 1);
1842
+ const valueKeys = Object.keys(splitDataSources);
1843
+ valueKeys.forEach((val) => {
1844
+ const valIndices = (0, lodash_exports.cloneDeep)(splitDataSources[val]);
1845
+ splitDataSources[val] = (0, lodash_exports.cloneDeep)(
1846
+ (0, lodash_exports.omit)(dataSource, ["primary.data.fields", "primary.data.columns"])
1847
+ );
1848
+ splitDataSources[val].primary.data.fields = cloneFields;
1849
+ splitDataSources[val].primary.data.columns = [];
1850
+ columns.forEach((col, idx) => {
1851
+ if (idx !== splitByIndex) {
1852
+ const newCol = valIndices.map((valIdx) => col[valIdx]);
1853
+ splitDataSources[val].primary.data.columns.push(newCol);
1854
+ }
1855
+ });
1856
+ });
1857
+ } else {
1858
+ errorCode = "INVALID_SPLIT_BY_FIELD";
1859
+ }
1860
+ return { splitDataSources, errorCode };
1861
+ };
1862
+ var getTrellisDataSourcesBySplitMode = (splitMode, dataSources, trellisSplitBy) => {
1863
+ let result = null;
1864
+ try {
1865
+ if (splitMode === trellisUtils_exports.TIMECHART) {
1866
+ result = trellisSplitBy === AGGREGATIONS ? dataSourcesSplitByAggregationsTimechartAndChart(dataSources) : dataSourcesSplitByModeTimechart(dataSources, trellisSplitBy);
1867
+ } else if (splitMode === trellisUtils_exports.STATS) {
1868
+ result = trellisSplitBy === AGGREGATIONS ? dataSourcesSplitByAggregationsStats(dataSources) : dataSourcesSplitByModeStatsorUnknown(dataSources, trellisSplitBy, trellisUtils_exports.STATS);
1869
+ } else if (splitMode === trellisUtils_exports.CHART) {
1870
+ result = trellisSplitBy === AGGREGATIONS ? dataSourcesSplitByAggregationsTimechartAndChart(dataSources) : dataSourcesSplitByModeChart(dataSources, trellisSplitBy);
1871
+ } else if (splitMode === trellisUtils_exports.UNKNOWN) {
1872
+ result = trellisSplitBy === AGGREGATIONS ? dataSourcesSplitByAggregationsUnknown(dataSources) : dataSourcesSplitByModeStatsorUnknown(dataSources, trellisSplitBy, trellisUtils_exports.UNKNOWN);
1873
+ }
1874
+ } catch (ex) {
1875
+ console.error("getTrellisDataSourcesBySplitMode ", ex);
1876
+ result = { splitDataSources: null, errorCode: "UNKNOWN" };
1877
+ }
1878
+ return result;
1879
+ };
1450
1880
  var turnOffLegendDisplayWhenTrellisIsOn = (isTrellisOn, options) => {
1451
1881
  if (isTrellisOn && !options.legendDisplay) {
1452
1882
  return {
@@ -1455,6 +1885,412 @@ var turnOffLegendDisplayWhenTrellisIsOn = (isTrellisOn, options) => {
1455
1885
  }
1456
1886
  return {};
1457
1887
  };
1888
+ var calculateSharedMinMax = (splitData) => {
1889
+ let max = -Infinity;
1890
+ let min = Infinity;
1891
+ Object.keys(splitData).forEach((splitByKey) => {
1892
+ const datasources = splitData[splitByKey];
1893
+ Object.keys(datasources).forEach((datasourceName) => {
1894
+ const dataColumns = datasources[datasourceName].data.columns;
1895
+ dataColumns.forEach((column) => {
1896
+ column.forEach((point) => {
1897
+ const pointNumber = Number(point);
1898
+ if (pointNumber > max) {
1899
+ max = pointNumber;
1900
+ }
1901
+ if (pointNumber < min) {
1902
+ min = pointNumber;
1903
+ }
1904
+ });
1905
+ });
1906
+ });
1907
+ });
1908
+ return [min, max];
1909
+ };
1910
+ var determineMinMax = (splitData, trellisSharedScale, yAxisMin, yAxisMax, stackMode) => {
1911
+ if (!trellisSharedScale || stackMode === "stacked100" || yAxisMin !== "auto" && yAxisMax !== "auto")
1912
+ return [yAxisMin, yAxisMax];
1913
+ const [sharedMin, sharedMax] = calculateSharedMinMax(splitData);
1914
+ const shouldUseSharedMax = sharedMax !== -Infinity && yAxisMax === "auto";
1915
+ const shouldUseSharedMin = sharedMin !== Infinity && yAxisMin === "auto";
1916
+ return [shouldUseSharedMin ? sharedMin : yAxisMin, shouldUseSharedMax ? sharedMax : yAxisMax];
1917
+ };
1918
+
1919
+ // esm-externals:@splunk/visualization-canvas
1920
+ var visualization_canvas_exports = {};
1921
+ __export(visualization_canvas_exports, {
1922
+ default: () => visualization_canvas_default
1923
+ });
1924
+ var defaultImport31 = __toESM(require("@splunk/visualization-canvas"));
1925
+ __reExport(visualization_canvas_exports, require("@splunk/visualization-canvas"));
1926
+ var visualization_canvas_default = "default" in defaultImport31 ? defaultImport31.default : defaultImport31;
1927
+
1928
+ // src/common/components/VizStyleWrapper.jsx
1929
+ var VizStyleWrapper = styled_components_default.div.attrs(({ dataTestKey }) => ({
1930
+ "data-test": dataTestKey,
1931
+ "data-testid": dataTestKey
1932
+ }))`
1933
+ display: flex;
1934
+ justify-content: center;
1935
+ flex-direction: column;
1936
+ width: 100%;
1937
+ height: 100%;
1938
+ background-color: ${(props) => props.backgroundColor};
1939
+ `;
1940
+ VizStyleWrapper.displayName = "VizStyleWrapper";
1941
+ var VizStyleWrapper_default = VizStyleWrapper;
1942
+
1943
+ // esm-externals:@splunk/react-icons/Triangle
1944
+ var Triangle_exports = {};
1945
+ __export(Triangle_exports, {
1946
+ default: () => Triangle_default
1947
+ });
1948
+ var defaultImport32 = __toESM(require("@splunk/react-icons/Triangle"));
1949
+ __reExport(Triangle_exports, require("@splunk/react-icons/Triangle"));
1950
+ var Triangle_default = "default" in defaultImport32 ? defaultImport32.default : defaultImport32;
1951
+
1952
+ // src/common/chartingUtils.ts
1953
+ var DEFAULT_LINE_WIDTH = 2;
1954
+ var getAnnotationsForCanvas = ({
1955
+ annotationX,
1956
+ annotationColor,
1957
+ annotationLabel
1958
+ }) => (annotationX == null ? void 0 : annotationX.length) ? annotationX.map((timestamp, i) => ({
1959
+ key: annotationLabel == null ? void 0 : annotationLabel[i],
1960
+ time: timestamp,
1961
+ color: annotationColor == null ? void 0 : annotationColor[i]
1962
+ })) : [];
1963
+ var StyledTriangle = styled_components_default(Triangle_default)`
1964
+ color: ${(props) => props.eventColor || variables_default.severityColorNotice(props)};
1965
+ `;
1966
+ var triangleEventAnnotationRenderer = ({ event }) => {
1967
+ const eventWithColor = event;
1968
+ return react_default.createElement(StyledTriangle, {
1969
+ viewBox: "0 0 24 24",
1970
+ variant: "filled",
1971
+ eventColor: eventWithColor.color
1972
+ });
1973
+ };
1974
+ var canvasSupportedTimeSeriesCharts = ["splunk.line"];
1975
+ var isTimeSeriesCanvasRenderSupported = (vizConfigKey) => {
1976
+ return canvasSupportedTimeSeriesCharts.indexOf(vizConfigKey) > -1;
1977
+ };
1978
+ var filterChartDataFromInternalFields = (chartData) => {
1979
+ const { fields, columns } = chartData;
1980
+ const keepIndexes = fields.reduce((acc, field, index) => {
1981
+ const fieldName = typeof field === "object" ? field == null ? void 0 : field.name : field;
1982
+ if (!(fieldName == null ? void 0 : fieldName.startsWith("_")) || fieldName === "_time") {
1983
+ acc.push(index);
1984
+ }
1985
+ return acc;
1986
+ }, []);
1987
+ const filteredFields = keepIndexes.map((index) => fields[index]);
1988
+ const filteredColumns = keepIndexes.map((index) => columns[index]);
1989
+ return { fields: filteredFields, columns: filteredColumns };
1990
+ };
1991
+ var convert2DArrayToNumbers = (arr) => {
1992
+ return arr.map((subArray) => subArray.map((element) => parseFloat(element)));
1993
+ };
1994
+ var SideLegendWidth = 75;
1995
+ var commonLegendProps = { center: true, fontSize: 12, largerTiles: true, hideSeriesValue: true };
1996
+ var getLegend = (props) => {
1997
+ const legendPlacement = props == null ? void 0 : props.legendDisplay;
1998
+ switch (legendPlacement) {
1999
+ case "off":
2000
+ return false;
2001
+ case "left":
2002
+ return (0, visualization_canvas_exports.LeftLegendFactory)(__spreadValues({
2003
+ width: SideLegendWidth
2004
+ }, commonLegendProps));
2005
+ case "bottom":
2006
+ return (0, visualization_canvas_exports.BottomLegendFactory)(__spreadValues({
2007
+ wrap: true
2008
+ }, commonLegendProps));
2009
+ case "top":
2010
+ return (0, visualization_canvas_exports.TopLegendFactory)(__spreadValues({
2011
+ wrap: true
2012
+ }, commonLegendProps));
2013
+ default:
2014
+ return (0, visualization_canvas_exports.SideLegendFactory)(__spreadValues({
2015
+ width: SideLegendWidth
2016
+ }, commonLegendProps));
2017
+ }
2018
+ };
2019
+ var getComputedAxisTitles = (inputAxisTitle, fields, axisTitleVisibility) => {
2020
+ if (axisTitleVisibility === "collapsed") {
2021
+ return "";
2022
+ }
2023
+ let fieldTitle = fields.length > 1 ? "" : fields[0];
2024
+ if (!fieldTitle) {
2025
+ fieldTitle = "";
2026
+ }
2027
+ return (inputAxisTitle == null ? void 0 : inputAxisTitle.length) ? inputAxisTitle.trim() : fieldTitle;
2028
+ };
2029
+ var ellipsisAxisTitle = (axisTitle, containerSpacing, fontSize = 12) => {
2030
+ if (!axisTitle) {
2031
+ return "";
2032
+ }
2033
+ if (Number.isNaN(containerSpacing) || containerSpacing <= 0) {
2034
+ return axisTitle;
2035
+ }
2036
+ const availableHeight = containerSpacing * 0.6;
2037
+ const avgCharWidth = fontSize * 0.55;
2038
+ const maxChars = Math.floor(availableHeight / avgCharWidth);
2039
+ if (axisTitle.length <= maxChars) {
2040
+ return axisTitle;
2041
+ }
2042
+ if (maxChars <= 3) {
2043
+ return "...";
2044
+ }
2045
+ const availableChars = maxChars - 3;
2046
+ const halfChars = Math.floor(availableChars / 2);
2047
+ const start = axisTitle.slice(0, halfChars);
2048
+ const end = axisTitle.slice(-halfChars);
2049
+ return `${start}...${end}`;
2050
+ };
2051
+ var getFieldName = (field) => {
2052
+ const fieldName = typeof field === "object" ? field == null ? void 0 : field.name : field;
2053
+ return fieldName;
2054
+ };
2055
+ var getFieldNames = (fields) => {
2056
+ return fields.map((field) => getFieldName(field));
2057
+ };
2058
+ var getXScaleConfig = (label) => {
2059
+ const xConfig = { x: {} };
2060
+ xConfig.x.label = label;
2061
+ return xConfig;
2062
+ };
2063
+ var getYScaleConfig = (label, yAxisAbbreviation, yAxisScale) => {
2064
+ const scaleType = yAxisScale != null ? yAxisScale : "linear";
2065
+ const yConfig = { y: {} };
2066
+ yConfig.y.label = label;
2067
+ yConfig.y.type = scaleType;
2068
+ if (yAxisAbbreviation !== "none") {
2069
+ yConfig.y.tickFmt = (v) => (0, visualization_canvas_exports.shortenNumber)(v, 1);
2070
+ }
2071
+ if (yAxisAbbreviation === "none") {
2072
+ yConfig.y.width = 55;
2073
+ } else {
2074
+ yConfig.y.width = label && label.length > 0 ? 30 : 10;
2075
+ }
2076
+ return yConfig;
2077
+ };
2078
+ var getY2ScaleConfig = (label, axisAbbreviation, axisScale, roundAxisLabelsToInteger) => {
2079
+ const y2Config = { y2: {} };
2080
+ const scaleType = axisScale != null ? axisScale : "linear";
2081
+ y2Config.y2.label = label;
2082
+ y2Config.y2.side = "right";
2083
+ y2Config.y2.showGrid = false;
2084
+ y2Config.y2.type = scaleType;
2085
+ if (axisAbbreviation !== "none") {
2086
+ y2Config.y2.tickFmt = (v) => (0, visualization_canvas_exports.shortenNumber)(v, 1, roundAxisLabelsToInteger);
2087
+ } else if (roundAxisLabelsToInteger) {
2088
+ y2Config.y2.tickFmt = (v) => roundAxisLabelsToInteger ? Math.round(v).toString() : v.toString();
2089
+ }
2090
+ return y2Config;
2091
+ };
2092
+ var getSeriesOverrides = (yfields, y2fields, lineWidth, overlayFields, y2Enabled, nullValueMode) => {
2093
+ const seriesConfig = {};
2094
+ let spanGaps;
2095
+ let replaceNullsWithZero;
2096
+ if (nullValueMode === "gaps") {
2097
+ spanGaps = false;
2098
+ } else if (nullValueMode === "connect" || nullValueMode === "zero") {
2099
+ spanGaps = true;
2100
+ if (nullValueMode === "zero") {
2101
+ replaceNullsWithZero = true;
2102
+ }
2103
+ }
2104
+ yfields.forEach((field) => {
2105
+ seriesConfig[field] = {
2106
+ overrides: { width: lineWidth != null ? lineWidth : DEFAULT_LINE_WIDTH }
2107
+ };
2108
+ if (spanGaps !== void 0) {
2109
+ seriesConfig[field].overrides.spanGaps = spanGaps;
2110
+ }
2111
+ if (y2Enabled) {
2112
+ const shouldAssignToY2 = (
2113
+ // If y2Fields are present, assign all y2Fields to y2 scale
2114
+ (y2fields == null ? void 0 : y2fields.length) > 0 && y2fields.includes(field) || // Else, assign all overlayFields to y2 scale
2115
+ (!y2fields || y2fields.length === 0) && (overlayFields == null ? void 0 : overlayFields.includes(field))
2116
+ );
2117
+ if (shouldAssignToY2) {
2118
+ seriesConfig[field].overrides.scale = "y2";
2119
+ }
2120
+ }
2121
+ if (overlayFields == null ? void 0 : overlayFields.includes(field)) {
2122
+ seriesConfig[field].type = "line";
2123
+ }
2124
+ if (replaceNullsWithZero !== void 0) {
2125
+ seriesConfig[field].replaceNullsWithZero = replaceNullsWithZero;
2126
+ }
2127
+ });
2128
+ return seriesConfig;
2129
+ };
2130
+
2131
+ // src/common/TimeSeriesChartWrapper.tsx
2132
+ var TimeSeriesChartContainer = styled_components_default.div`
2133
+ overflow: hidden;
2134
+ ${(props) => (0, style_exports.toDimension)((0, lodash_exports.pick)(props, ["width", "height"]))};
2135
+
2136
+ canvas {
2137
+ position: absolute !important; // This is needed for canvas element export pdf/png to work correctly
2138
+ }
2139
+ `;
2140
+ var handleClick = (chartEvent, props) => {
2141
+ const payload = __spreadProps(__spreadValues({}, (0, lodash_exports.pick)(chartEvent, "value", "seriesKey")), {
2142
+ name: chartEvent.seriesKey
2143
+ });
2144
+ delete payload.seriesKey;
2145
+ const clickHandler = props == null ? void 0 : props.onClick;
2146
+ if (clickHandler) {
2147
+ clickHandler({
2148
+ type: "point.click",
2149
+ originalEvent: chartEvent,
2150
+ payload
2151
+ });
2152
+ }
2153
+ };
2154
+ var handleLegendClick = (chartEvent, props) => {
2155
+ const payload = {
2156
+ name: chartEvent
2157
+ };
2158
+ const clickHandler = props == null ? void 0 : props.onClick;
2159
+ if (clickHandler) {
2160
+ clickHandler({
2161
+ type: "legend.click",
2162
+ originalEvent: chartEvent,
2163
+ payload
2164
+ });
2165
+ }
2166
+ };
2167
+ var TimeSeriesChartWrapper = (props) => {
2168
+ const { width, height, chartData, options, userLocale, annotationX, annotationLabel, annotationColor } = props;
2169
+ const {
2170
+ backgroundColor,
2171
+ seriesColors: seriesColorsStr,
2172
+ fieldColors,
2173
+ "axisTitleX.text": xAxisTitleText,
2174
+ "axisTitleY.text": yAxisTitleText,
2175
+ "axisTitleY2.text": y2AxisTitleText,
2176
+ "axisTitleX.visibility": xAxisTitleVisibility,
2177
+ "axisTitleY.visibility": yAxisTitleVisibility,
2178
+ "axisTitleY2.visibility": y2AxisTitleVisibility,
2179
+ "axisY.abbreviation": yAxisAbbreviation,
2180
+ "axisY.scale": yAxisScale,
2181
+ "axisY2.abbreviation": y2AxisAbbreviation,
2182
+ "axisY2.fields": y2FieldsStr,
2183
+ "axisY2.scale": y2AxisScale,
2184
+ "axisY2.enabled": y2Enabled,
2185
+ "axisLabelsY2.integerUnits": y2IntegerUnits,
2186
+ "chart.overlayFields": overlayFieldsStr,
2187
+ "chart.nullValueMode": nullValueMode,
2188
+ lineWidth
2189
+ } = options;
2190
+ const seriesColors = seriesColorsStr ? JSON.parse(seriesColorsStr) : void 0;
2191
+ const seriesColorsByField = fieldColors ? JSON.parse(fieldColors) : void 0;
2192
+ const [containerWidth, setContainerWidth] = react_exports.useState(Number(props.width));
2193
+ const [containerHeight, setContainerHeight] = react_exports.useState(Number(props.height));
2194
+ const cachedHandleResize = react_exports.useCallback((w, h) => {
2195
+ setContainerWidth(w);
2196
+ setContainerHeight(h);
2197
+ }, []);
2198
+ const filteredChartData = filterChartDataFromInternalFields({
2199
+ fields: chartData.fields,
2200
+ columns: chartData.seriesList
2201
+ });
2202
+ const xField = getFieldName(filteredChartData.fields[0]);
2203
+ const yFields = getFieldNames(
2204
+ filteredChartData.fields.length > 1 ? filteredChartData.fields.slice(1) : []
2205
+ );
2206
+ const y2Fields = y2FieldsStr ? y2FieldsStr.split(",").map((f) => f.trim()) : [];
2207
+ const overlayFields = overlayFieldsStr ? overlayFieldsStr.split(",").map((f) => f.trim()) : [];
2208
+ let xAxisTitle = getComputedAxisTitles(xAxisTitleText, [xField], xAxisTitleVisibility);
2209
+ xAxisTitle = ellipsisAxisTitle(xAxisTitle, containerWidth);
2210
+ let yAxisTitle = getComputedAxisTitles(yAxisTitleText, yFields, yAxisTitleVisibility);
2211
+ yAxisTitle = ellipsisAxisTitle(yAxisTitle, containerHeight);
2212
+ const fieldsForY2Axis = y2Fields.length > 0 ? y2Fields : overlayFields;
2213
+ let y2AxisTitle = getComputedAxisTitles(y2AxisTitleText, fieldsForY2Axis, y2AxisTitleVisibility);
2214
+ y2AxisTitle = ellipsisAxisTitle(y2AxisTitle, containerHeight);
2215
+ const xScaleConfig = getXScaleConfig(xAxisTitle);
2216
+ const yScaleConfig = getYScaleConfig(yAxisTitle, yAxisAbbreviation, yAxisScale);
2217
+ let y2ScaleConfig = {};
2218
+ if (y2Enabled) {
2219
+ y2ScaleConfig = getY2ScaleConfig(y2AxisTitle, y2AxisAbbreviation, y2AxisScale, y2IntegerUnits);
2220
+ }
2221
+ const uplotContainerElement = (0, react_exports.useRef)(null);
2222
+ const seriesDataFormatted = [
2223
+ filteredChartData.columns[0],
2224
+ ...convert2DArrayToNumbers(filteredChartData.columns.slice(1))
2225
+ ];
2226
+ chartData.fields = filteredChartData.fields;
2227
+ chartData.columns = seriesDataFormatted;
2228
+ const seriesOverrides = getSeriesOverrides(
2229
+ yFields,
2230
+ y2Fields,
2231
+ lineWidth,
2232
+ overlayFields,
2233
+ y2Enabled,
2234
+ nullValueMode
2235
+ );
2236
+ const chartingEventAnnotations = getAnnotationsForCanvas({
2237
+ annotationX,
2238
+ annotationColor,
2239
+ annotationLabel
2240
+ });
2241
+ const MemoizedChart = react_exports.memo(visualization_canvas_exports.TimeSeriesChart);
2242
+ const scaleConfig = __spreadValues(__spreadValues(__spreadValues({}, xScaleConfig), yScaleConfig), y2ScaleConfig);
2243
+ const memoizedChart = (0, react_exports.useMemo)(
2244
+ () => /* @__PURE__ */ react_exports.createElement(
2245
+ MemoizedChart,
2246
+ {
2247
+ data: chartData,
2248
+ width: containerWidth,
2249
+ height: containerHeight,
2250
+ seriesColors,
2251
+ seriesColorsByField,
2252
+ seriesConfig: seriesOverrides,
2253
+ legend: getLegend(props),
2254
+ scaleConfig,
2255
+ timestampFormat: "expanded",
2256
+ onCrosshairClick: (event) => handleClick(event, props),
2257
+ onSeriesClick: (event) => handleLegendClick(event, props),
2258
+ userLocale,
2259
+ events: chartingEventAnnotations,
2260
+ eventsConfig: { renderer: triangleEventAnnotationRenderer }
2261
+ }
2262
+ ),
2263
+ [
2264
+ MemoizedChart,
2265
+ chartData,
2266
+ containerWidth,
2267
+ containerHeight,
2268
+ seriesColors,
2269
+ seriesColorsByField,
2270
+ seriesOverrides,
2271
+ lineWidth,
2272
+ props,
2273
+ scaleConfig,
2274
+ userLocale,
2275
+ chartingEventAnnotations
2276
+ ]
2277
+ );
2278
+ const memoizedVisualization = (0, react_exports.useMemo)(() => {
2279
+ return /* @__PURE__ */ react_exports.createElement(VizStyleWrapper_default, { backgroundColor }, memoizedChart);
2280
+ }, [backgroundColor]);
2281
+ return /* @__PURE__ */ react_exports.createElement(
2282
+ TimeSeriesChartContainer,
2283
+ {
2284
+ height,
2285
+ width,
2286
+ ref: uplotContainerElement,
2287
+ "data-test": "timeseries-chart-wrapper"
2288
+ },
2289
+ /* @__PURE__ */ react_exports.createElement(SizeAwareWrapper_default, { width, height, onResize: cachedHandleResize }),
2290
+ memoizedVisualization
2291
+ );
2292
+ };
2293
+ var TimeSeriesChartWrapper_default = TimeSeriesChartWrapper;
1458
2294
 
1459
2295
  // src/common/withDashboardViz.tsx
1460
2296
  var withDashboardViz = (opts) => {
@@ -1473,30 +2309,29 @@ var withDashboardViz = (opts) => {
1473
2309
  const DashboardViz = (props) => {
1474
2310
  var _a;
1475
2311
  const {
1476
- mode,
2312
+ mode = "view",
1477
2313
  hasEventHandlers,
1478
2314
  dataSources,
1479
2315
  // type of { [key: string]: DataSource }
1480
- options,
2316
+ options = {},
1481
2317
  context = {},
1482
2318
  width,
1483
2319
  height,
1484
- onComputedProps,
1485
- onEventTrigger,
2320
+ onComputedProps = lodash_exports.noop,
2321
+ onEventTrigger = SplunkVisualization_default.defaults.onEventTrigger,
1486
2322
  theme,
1487
- onRequestParamsChange
2323
+ onRequestParamsChange = lodash_exports.noop
1488
2324
  } = props;
1489
- const { serializedTimezone } = react_exports.useContext(TimezoneContext_default);
1490
- if (serializedTimezone) {
2325
+ const localeContext = react_exports.useContext(TimezoneContext_default);
2326
+ if (localeContext.serializedTimezone) {
1491
2327
  if (!moment_default.getDefaultSplunkTimezone()) {
1492
- moment_default.setDefaultSplunkTimezone(serializedTimezone);
2328
+ moment_default.setDefaultSplunkTimezone(localeContext.serializedTimezone);
1493
2329
  }
1494
2330
  }
1495
2331
  const themeFunc = (themeVar) => {
1496
2332
  var _a2, _b;
1497
2333
  return (_b = (_a2 = vizConfig.themes)[themeVar]) == null ? void 0 : _b.call(_a2, props);
1498
2334
  };
1499
- const bgColorFromTheme = themeFunc("defaultBackgroundColor");
1500
2335
  const {
1501
2336
  family: currentThemeFamily,
1502
2337
  colorScheme: currentThemeColorScheme,
@@ -1514,10 +2349,14 @@ var withDashboardViz = (opts) => {
1514
2349
  const isDownsamplingEnabledByFeatureFlag = Boolean(
1515
2350
  featureFlagContext == null ? void 0 : featureFlagContext.visualizations_enableDownsampling
1516
2351
  );
1517
- const isTrellisFeatureFlagOn = Boolean(
2352
+ const isTrellisFeatureFlagOn2 = Boolean(
1518
2353
  featureFlagContext && featureFlagContext.visualizations_enableTrellis
1519
2354
  );
1520
- 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 */;
2355
+ const isTrellisOn = isTrellisFeatureFlagOn2 && ((_a = vizConfig == null ? void 0 : vizConfig.supports) == null ? void 0 : _a.includes("trellis" /* TRELLIS */)) && (options == null ? void 0 : options.splitByLayout) === "trellis" /* TRELLIS */;
2356
+ const isAcceleratedRenderFeatureFlagOn = Boolean(
2357
+ featureFlagContext == null ? void 0 : featureFlagContext.visualizations_enableAcceleratedRender
2358
+ );
2359
+ const isAcceleratedRenderOn = isAcceleratedRenderFeatureFlagOn && isTimeSeriesCanvasRenderSupported(vizConfig.key) && (options == null ? void 0 : options.acceleratedRender) === true;
1521
2360
  const isMounted = react_exports.useRef(true);
1522
2361
  const optionsToEvaluate = react_exports.useMemo(() => {
1523
2362
  var _a2;
@@ -1612,10 +2451,34 @@ var withDashboardViz = (opts) => {
1612
2451
  currentThemeDensity,
1613
2452
  optionsToEvaluate,
1614
2453
  downsampledDataSources,
1615
- serializedTimezone,
2454
+ localeContext.serializedTimezone,
1616
2455
  useAsyncEvaluatedOptions
1617
2456
  ]);
1618
2457
  const evaluatedOptionsToUse = !useAsyncEvaluatedOptions ? evaluatedOptions : evaluatedOptionsAsync;
2458
+ let dataSourceMetadata = {};
2459
+ const OptionKey = "paginateDataSourceKey";
2460
+ const optsKey = (0, lodash_exports.has)(evaluatedOptionsToUse, OptionKey) && evaluatedOptionsToUse[OptionKey];
2461
+ const paginateDataSourceKey = typeof optsKey === "string" ? optsKey : "primary";
2462
+ const requestParams = (0, lodash_exports.get)(dataSources, [paginateDataSourceKey, "requestParams"], {});
2463
+ const meta = (0, lodash_exports.get)(dataSources, [paginateDataSourceKey, "meta"], {});
2464
+ const handleRequestParamsChange = (payload) => onRequestParamsChange(paginateDataSourceKey, payload);
2465
+ const sortParams = useSortingParams({
2466
+ requestParams,
2467
+ meta,
2468
+ onRequestParamsChange: handleRequestParamsChange
2469
+ });
2470
+ const paginatorParams = usePaginationParams({
2471
+ requestParams,
2472
+ meta,
2473
+ onRequestParamsChange: handleRequestParamsChange
2474
+ });
2475
+ dataSourceMetadata = {
2476
+ sortParams,
2477
+ paginatorParams
2478
+ };
2479
+ if (vizConfig.supports.indexOf("page-and-sort" /* PAGE_AND_SORT */) === -1 && !(0, lodash_exports.has)(dataSources, paginateDataSourceKey)) {
2480
+ dataSourceMetadata = {};
2481
+ }
1619
2482
  const clonedEvaluatedOptions = __spreadValues({}, evaluatedOptionsToUse);
1620
2483
  if (isTrellisOn) {
1621
2484
  clonedEvaluatedOptions.backgroundColor = clonedEvaluatedOptions == null ? void 0 : clonedEvaluatedOptions.trellisBackgroundColor;
@@ -1641,7 +2504,7 @@ var withDashboardViz = (opts) => {
1641
2504
  width,
1642
2505
  height,
1643
2506
  missingProps: missing,
1644
- backgroundColor: bgColorFromTheme
2507
+ backgroundColor: themeFunc("defaultBackgroundColor")
1645
2508
  }
1646
2509
  );
1647
2510
  }
@@ -1659,7 +2522,7 @@ var withDashboardViz = (opts) => {
1659
2522
  }
1660
2523
  eventCallbackProps[eventCallbackPropName] = (ev) => {
1661
2524
  if (ev && ev.payload) {
1662
- payload = ev.payload;
2525
+ payload = __spreadValues({}, ev.payload);
1663
2526
  }
1664
2527
  return onEventTrigger({
1665
2528
  originalEvent: ev,
@@ -1679,45 +2542,27 @@ var withDashboardViz = (opts) => {
1679
2542
  const computedVizProps = computeVizProps2(__spreadProps(__spreadValues(__spreadValues(__spreadValues({}, props), evaluatedOptionsToUse), eventCallbackProps), {
1680
2543
  themeFunc
1681
2544
  }));
1682
- let dataSourceMetadata = {};
1683
- const OptionKey = "paginateDataSourceKey";
1684
- const optsKey = (0, lodash_exports.has)(evaluatedOptionsToUse, OptionKey) && evaluatedOptionsToUse[OptionKey];
1685
- const paginateDataSourceKey = typeof optsKey === "string" ? optsKey : "primary";
1686
- if (vizConfig.supports.indexOf("page-and-sort" /* PAGE_AND_SORT */) > -1 && (0, lodash_exports.has)(dataSources, paginateDataSourceKey)) {
1687
- const requestParams = (0, lodash_exports.get)(dataSources, [paginateDataSourceKey, "requestParams"], {});
1688
- const meta = (0, lodash_exports.get)(dataSources, [paginateDataSourceKey, "meta"], {});
1689
- const handleRequestParamsChange = (payload) => onRequestParamsChange(paginateDataSourceKey, payload);
1690
- const sortParams = getSortingParams({
1691
- requestParams,
1692
- meta,
1693
- onRequestParamsChange: handleRequestParamsChange
1694
- });
1695
- const paginatorParams = getPaginationParams({
1696
- requestParams,
1697
- meta,
1698
- onRequestParamsChange: handleRequestParamsChange
1699
- });
1700
- dataSourceMetadata = {
1701
- sortParams,
1702
- paginatorParams
1703
- };
1704
- }
1705
2545
  if (useAsyncEvaluatedOptions && Object.keys(evaluatedOptionsToUse).length === 0) {
1706
2546
  return null;
1707
2547
  }
2548
+ let SanitizedViz = SanitizedReactViz;
2549
+ if (isAcceleratedRenderOn) {
2550
+ SanitizedViz = (0, SanitizeProps_exports.withSanitizedProps)(TimeSeriesChartWrapper_default);
2551
+ }
1708
2552
  return /* @__PURE__ */ react_exports.createElement(
1709
- SanitizedReactViz,
1710
- __spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues({
2553
+ SanitizedViz,
2554
+ __spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadProps(__spreadValues({}, SplunkVisualization_default.defaults), {
1711
2555
  mode,
1712
- width,
1713
- height
1714
- }, downsamplingProps), evaluatedOptionsToUse), computedVizProps), eventCallbackProps), dataSourceMetadata)
2556
+ width: width || SplunkVisualization_default.defaults.width,
2557
+ height: height || SplunkVisualization_default.defaults.height,
2558
+ userLocale: localeContext
2559
+ }), downsamplingProps), evaluatedOptionsToUse), computedVizProps), eventCallbackProps), dataSourceMetadata)
1715
2560
  );
1716
2561
  };
1717
2562
  DashboardViz.propTypes = __spreadValues(__spreadValues({}, SplunkVisualization_default.propTypes), ReactViz.propTypes);
1718
- DashboardViz.defaultProps = __spreadProps(__spreadValues(__spreadValues({}, SplunkVisualization_default.defaultProps), ReactViz.defaultProps), {
1719
- // using withTheme requires component to receive theme prop. In case the consumer did not provide ThemeProvider, a default empty object will prevent warnings.
1720
- theme: {}
2563
+ DashboardViz.defaultProps = __spreadProps(__spreadValues({}, ReactViz.defaultProps), {
2564
+ // we still need ReactViz.defaultProps for the visualizations that still have them
2565
+ onEventTrigger: SplunkVisualization_default.defaults.onEventTrigger
1721
2566
  });
1722
2567
  DashboardViz.config = vizConfig;
1723
2568
  return (0, styled_components_exports.withTheme)(
@@ -1731,9 +2576,9 @@ var colorConstants_exports = {};
1731
2576
  __export(colorConstants_exports, {
1732
2577
  default: () => colorConstants_default
1733
2578
  });
1734
- var defaultImport31 = __toESM(require("@splunk/visualizations-shared/colorConstants"));
2579
+ var defaultImport33 = __toESM(require("@splunk/visualizations-shared/colorConstants"));
1735
2580
  __reExport(colorConstants_exports, require("@splunk/visualizations-shared/colorConstants"));
1736
- var colorConstants_default = "default" in defaultImport31 ? defaultImport31.default : defaultImport31;
2581
+ var colorConstants_default = "default" in defaultImport33 ? defaultImport33.default : defaultImport33;
1737
2582
 
1738
2583
  // src/common/gaugeUtils.ts
1739
2584
  var GAUGE_THICKNESS = 50;
@@ -1989,12 +2834,12 @@ var MajorTicks = (_a) => {
1989
2834
  height,
1990
2835
  startX,
1991
2836
  startY,
1992
- min,
1993
- max,
1994
- majorUnit,
1995
- orientation,
1996
- showLabels,
1997
- usePercentageRange,
2837
+ min = 0,
2838
+ max = 100,
2839
+ majorUnit = "auto",
2840
+ orientation = "horizontal",
2841
+ showLabels = true,
2842
+ usePercentageRange = false,
1998
2843
  majorTickFillColor,
1999
2844
  majorTickStrokeColor
2000
2845
  } = props;
@@ -2079,14 +2924,6 @@ MajorTicks.propTypes = {
2079
2924
  majorTickFillColor: prop_types_default.string,
2080
2925
  majorTickStrokeColor: prop_types_default.string
2081
2926
  };
2082
- MajorTicks.defaultProps = {
2083
- min: 0,
2084
- max: 100,
2085
- majorUnit: "auto",
2086
- orientation: "horizontal",
2087
- showLabels: true,
2088
- usePercentageRange: false
2089
- };
2090
2927
  var GaugeMajorTicks_default = MajorTicks;
2091
2928
 
2092
2929
  // esm-externals:@splunk/ui-utils/format
@@ -2094,9 +2931,9 @@ var format_exports = {};
2094
2931
  __export(format_exports, {
2095
2932
  default: () => format_default
2096
2933
  });
2097
- var defaultImport32 = __toESM(require("@splunk/ui-utils/format"));
2934
+ var defaultImport34 = __toESM(require("@splunk/ui-utils/format"));
2098
2935
  __reExport(format_exports, require("@splunk/ui-utils/format"));
2099
- var format_default = "default" in defaultImport32 ? defaultImport32.default : defaultImport32;
2936
+ var format_default = "default" in defaultImport34 ? defaultImport34.default : defaultImport34;
2100
2937
 
2101
2938
  // src/common/GaugeValueMarker.jsx
2102
2939
  var MARKER_THICKNESS = 15;
@@ -2167,15 +3004,15 @@ var ValueMarker = (_a) => {
2167
3004
  x,
2168
3005
  y,
2169
3006
  length,
2170
- min,
2171
- max,
3007
+ min = 0,
3008
+ max = 100,
2172
3009
  value,
2173
- orientation,
2174
- showValue,
2175
- usePercentageValue,
3010
+ orientation = "horizontal",
3011
+ showValue = true,
3012
+ usePercentageValue = false,
2176
3013
  valueMarkerFillColor,
2177
3014
  valueMarkerLabelFillColor,
2178
- alignCenter
3015
+ alignCenter = false
2179
3016
  } = props;
2180
3017
  const valueMarkerRectLength = length + DELTA_LENGTH;
2181
3018
  const { labelRectX, labelRectY, labelX, labelY } = positionLabel({
@@ -2239,16 +3076,50 @@ ValueMarker.propTypes = {
2239
3076
  valueMarkerLabelFillColor: prop_types_default.string,
2240
3077
  alignCenter: prop_types_default.bool
2241
3078
  };
2242
- ValueMarker.defaultProps = {
2243
- min: 0,
2244
- max: 100,
2245
- orientation: "horizontal",
2246
- showValue: true,
2247
- usePercentageValue: false,
2248
- alignCenter: false
2249
- };
2250
3079
  var GaugeValueMarker_default = ValueMarker;
2251
3080
 
3081
+ // src/common/hooks/useTrellisEnabled.ts
3082
+ var useTrellisFeatureFlagOn = () => {
3083
+ const context = (0, react_exports.useContext)(FeatureFlagContext_default);
3084
+ return Boolean(context == null ? void 0 : context.visualizations_enableTrellis);
3085
+ };
3086
+ var useTrellisEnabled = (layoutType = visualization_schemas_exports.LAYOUT_TYPE.Off) => {
3087
+ const trellisFeatureEnabled = useTrellisFeatureFlagOn();
3088
+ return trellisFeatureEnabled && layoutType === visualization_schemas_exports.LAYOUT_TYPE.Trellis;
3089
+ };
3090
+
3091
+ // src/common/components/TrellisTitle.tsx
3092
+ var TRELLIS_TITLE_HEIGHT = 28;
3093
+ var TrellisTitleText = styled_components_default.div`
3094
+ margin-left: 10px;
3095
+ margin-right: 10px;
3096
+ padding-top: 8px;
3097
+ text-overflow: ellipsis;
3098
+ white-space: nowrap;
3099
+ overflow: hidden;
3100
+ `;
3101
+ var TrellisTitleDiv = styled_components_default.div`
3102
+ height: ${TRELLIS_TITLE_HEIGHT}px;
3103
+ font-size: 14px;
3104
+ font-weight: 700;
3105
+ color: ${(props) => props.fontColor};
3106
+ background-color: ${(props) => props.backgroundColor};
3107
+ box-shadow: 0 1px ${(props) => props.backgroundColor}; // this is added to avoid a 1px gap between title and viz divs that showed up intermittently because of pixel rounding error in chrome.
3108
+ `;
3109
+ var TrellisTitle = (props) => {
3110
+ const titleText = String(props.trellisKey).toString();
3111
+ return /* @__PURE__ */ react_exports.createElement(
3112
+ TrellisTitleDiv,
3113
+ {
3114
+ fontColor: props.fontColor,
3115
+ backgroundColor: props.backgroundColor,
3116
+ "data-test": "trellis-title",
3117
+ title: titleText
3118
+ },
3119
+ /* @__PURE__ */ react_exports.createElement(TrellisTitleText, null, titleText)
3120
+ );
3121
+ };
3122
+
2252
3123
  // src/FillerGauge/PureFillerGauge/FillerGauge.tsx
2253
3124
  var Container = styled_components_default.div`
2254
3125
  overflow: hidden;
@@ -2286,25 +3157,29 @@ var MIN_HORIZONTAL_CONTAINER_HEIGHT = 100;
2286
3157
  var FillerGauge = (_a) => {
2287
3158
  var props = __objRest(_a, []);
2288
3159
  const {
2289
- width,
2290
- height,
3160
+ width = "100%",
3161
+ height = 250,
2291
3162
  value,
2292
3163
  gaugeColor,
2293
- min,
2294
- max,
2295
- orientation,
2296
- majorUnit,
2297
- showLabels,
2298
- showValue,
2299
- usePercentageRange,
2300
- usePercentageValue,
2301
- backgroundColor,
2302
- backgroundBarFillColor,
2303
- majorTickFillColor,
2304
- majorTickStrokeColor,
2305
- valueMarkerFillColor,
2306
- valueMarkerLabelFillColor
3164
+ min = 0,
3165
+ max = 100,
3166
+ orientation = "vertical",
3167
+ majorUnit = "auto",
3168
+ showLabels = true,
3169
+ showValue = true,
3170
+ usePercentageRange = false,
3171
+ usePercentageValue = false,
3172
+ backgroundColor = "transparent",
3173
+ backgroundBarFillColor = "#f2f4f5",
3174
+ majorTickFillColor = "#3c444d",
3175
+ majorTickStrokeColor = "#6b7785",
3176
+ valueMarkerFillColor = "#3c444d",
3177
+ valueMarkerLabelFillColor = "#f2f4f5",
3178
+ splitByLayout = visualization_schemas_exports.LAYOUT_TYPE.Off,
3179
+ defaultFontColor = "#000",
3180
+ trellisKey = ""
2307
3181
  } = props;
3182
+ const trellisEnabled = useTrellisEnabled(splitByLayout);
2308
3183
  const cachedHandleResize = react_exports.useCallback((w, h) => {
2309
3184
  setContainerWidth(w);
2310
3185
  setContainerHeight(h);
@@ -2420,54 +3295,291 @@ var FillerGauge = (_a) => {
2420
3295
  )
2421
3296
  ));
2422
3297
  };
3298
+ if (trellisEnabled) {
3299
+ return /* @__PURE__ */ react_exports.createElement(react_exports.Fragment, null, /* @__PURE__ */ react_exports.createElement(
3300
+ TrellisTitle,
3301
+ {
3302
+ fontColor: defaultFontColor,
3303
+ backgroundColor,
3304
+ trellisKey
3305
+ }
3306
+ ), /* @__PURE__ */ react_exports.createElement(
3307
+ Container,
3308
+ {
3309
+ width,
3310
+ height: Number(height) - TRELLIS_TITLE_HEIGHT,
3311
+ backgroundColor
3312
+ },
3313
+ /* @__PURE__ */ react_exports.createElement(SizeAwareWrapper_default, { width, height, onResize: cachedHandleResize }),
3314
+ renderVisualization()
3315
+ ));
3316
+ }
2423
3317
  return /* @__PURE__ */ react_exports.createElement(Container, { width, height, backgroundColor }, /* @__PURE__ */ react_exports.createElement(SizeAwareWrapper_default, { width, height, onResize: cachedHandleResize }), renderVisualization());
2424
3318
  };
2425
- var propTypes3 = {
2426
- width: prop_types_exports.oneOfType([prop_types_exports.string, prop_types_exports.number]),
2427
- height: prop_types_exports.oneOfType([prop_types_exports.string, prop_types_exports.number]),
2428
- value: prop_types_exports.number,
2429
- gaugeColor: prop_types_exports.string,
2430
- min: prop_types_exports.number,
2431
- max: prop_types_exports.number,
2432
- // valueFieldName: T.string, // todo: need add it back when displaying name later
2433
- // gaugeColorFieldName: T.string, // todo: may need add it back may not
2434
- orientation: prop_types_exports.oneOf(["horizontal", "vertical"]),
2435
- majorUnit: prop_types_exports.oneOfType([prop_types_exports.string, prop_types_exports.number]),
2436
- showLabels: prop_types_exports.bool,
2437
- showValue: prop_types_exports.bool,
2438
- usePercentageRange: prop_types_exports.bool,
2439
- usePercentageValue: prop_types_exports.bool,
2440
- backgroundColor: prop_types_exports.string,
2441
- backgroundBarFillColor: prop_types_exports.string,
2442
- majorTickFillColor: prop_types_exports.string,
2443
- majorTickStrokeColor: prop_types_exports.string,
2444
- valueMarkerFillColor: prop_types_exports.string,
2445
- valueMarkerLabelFillColor: prop_types_exports.string
2446
- };
2447
- var defaultProps = {
2448
- width: "100%",
2449
- height: 250,
2450
- value: void 0,
2451
- gaugeColor: void 0,
2452
- orientation: "vertical",
2453
- min: 0,
2454
- max: 100,
2455
- majorUnit: "auto",
2456
- showLabels: true,
2457
- showValue: true,
2458
- usePercentageRange: false,
2459
- usePercentageValue: false,
2460
- backgroundColor: "transparent",
2461
- backgroundBarFillColor: "#f2f4f5",
2462
- majorTickFillColor: "#3c444d",
2463
- majorTickStrokeColor: "#6b7785",
2464
- valueMarkerFillColor: "#3c444d",
2465
- valueMarkerLabelFillColor: "#f2f4f5"
2466
- };
2467
- FillerGauge.propTypes = propTypes3;
2468
- FillerGauge.defaultProps = defaultProps;
2469
3319
  var FillerGauge_default = FillerGauge;
2470
3320
 
3321
+ // esm-externals:@splunk/react-ui/Paginator
3322
+ var Paginator_exports = {};
3323
+ __export(Paginator_exports, {
3324
+ default: () => Paginator_default
3325
+ });
3326
+ var defaultImport35 = __toESM(require("@splunk/react-ui/Paginator"));
3327
+ __reExport(Paginator_exports, require("@splunk/react-ui/Paginator"));
3328
+ var Paginator_default = "default" in defaultImport35 ? defaultImport35.default : defaultImport35;
3329
+
3330
+ // esm-externals:@splunk/themes
3331
+ var themes_exports = {};
3332
+ __export(themes_exports, {
3333
+ default: () => themes_default
3334
+ });
3335
+ var defaultImport36 = __toESM(require("@splunk/themes"));
3336
+ __reExport(themes_exports, require("@splunk/themes"));
3337
+ var themes_default = "default" in defaultImport36 ? defaultImport36.default : defaultImport36;
3338
+
3339
+ // esm-externals:@splunk/themes/useSplunkTheme
3340
+ var useSplunkTheme_exports = {};
3341
+ __export(useSplunkTheme_exports, {
3342
+ default: () => useSplunkTheme_default
3343
+ });
3344
+ var defaultImport37 = __toESM(require("@splunk/themes/useSplunkTheme"));
3345
+ __reExport(useSplunkTheme_exports, require("@splunk/themes/useSplunkTheme"));
3346
+ var useSplunkTheme_default = "default" in defaultImport37 ? defaultImport37.default : defaultImport37;
3347
+
3348
+ // src/common/hocs/withTrellis.tsx
3349
+ var TrellisContainer = styled_components_default.div`
3350
+ overflow: hidden;
3351
+ display: flex;
3352
+ flex-direction: column;
3353
+ background-color: ${(props) => props.backgroundColor};
3354
+ ${(props) => (0, style_exports.toDimension)((0, lodash_exports.pick)(props, ["width", "height"]))};
3355
+ > [data-test='paginator'] {
3356
+ align-self: flex-end;
3357
+ margin-bottom: 10px;
3358
+ }
3359
+ `;
3360
+ var TrellisContainerGrid = styled_components_default.div`
3361
+ display: grid;
3362
+ height: ${(props) => {
3363
+ return `${props.height}px`;
3364
+ }};
3365
+ gap: 10px 10px;
3366
+ grid-template-columns: ${(props) => {
3367
+ return props.colCount ? `repeat(${props.colCount}, minmax(${props.colMinWidth}px, 1fr))` : `repeat(auto-fit, minmax(${props.colMinWidth}px, 1fr))`;
3368
+ }};
3369
+ overflow: auto;
3370
+ justify-items: stretch;
3371
+ grid-auto-rows: ${(props) => `${props.rowHeight}px`};
3372
+ .child {
3373
+ height: ${(props) => `${props.rowHeight}px`};
3374
+ }
3375
+ `;
3376
+ var showErrorMessage = (errorCode, width, height) => {
3377
+ if (errorCode === "INVALID_SPLIT_BY_FIELD") {
3378
+ return /* @__PURE__ */ react_exports.createElement(
3379
+ Message_default,
3380
+ {
3381
+ width,
3382
+ height,
3383
+ message: (0, i18n_exports._)("Select a valid trellis split by field"),
3384
+ level: "info"
3385
+ }
3386
+ );
3387
+ }
3388
+ if (errorCode === "UNKNOWN_DATA_SPLIT_MODE") {
3389
+ return /* @__PURE__ */ react_exports.createElement(Message_default, { width, height, message: (0, i18n_exports._)("Unknown data split mode"), level: "info" });
3390
+ }
3391
+ return /* @__PURE__ */ react_exports.createElement(Message_default, { width, height, message: (0, i18n_exports._)("Error render in trellis"), level: "info" });
3392
+ };
3393
+ var withTrellis = (Viz) => {
3394
+ const VizWithTrellis = (opts) => {
3395
+ const cachedHandleResize = react_exports.useCallback((w, h) => {
3396
+ setContainerWidth(w);
3397
+ setContainerHeight(h);
3398
+ }, []);
3399
+ const [containerWidth, setContainerWidth] = react_exports.useState(Number(opts.width));
3400
+ const [containerHeight, setContainerHeight] = react_exports.useState(Number(opts.height));
3401
+ const _a = opts, { options = {}, height, width } = _a, otherProps = __objRest(_a, ["options", "height", "width"]);
3402
+ const defaultOptions = (0, JSONSchemaUtils_exports.pickFieldFromJSONSchema)(Viz.config.optionsSchema, "default");
3403
+ const mergedOptions = (0, hocUtils_exports.deepMergeWithArrayPrimitiveOverrides)({}, options, defaultOptions);
3404
+ const {
3405
+ trellisColumns,
3406
+ trellisPageCount,
3407
+ trellisMinColumnWidth,
3408
+ trellisRowHeight,
3409
+ splitByLayout,
3410
+ trellisSplitBy,
3411
+ trellisSharedScale,
3412
+ stackMode,
3413
+ yAxisMin,
3414
+ yAxisMax
3415
+ } = mergedOptions;
3416
+ const colCount = trellisColumns > 0 ? trellisColumns : defaultOptions.trellisColumns;
3417
+ const pageCount = +trellisPageCount > 0 ? +trellisPageCount : defaultOptions.trellisPageCount;
3418
+ const colMinWidth = trellisMinColumnWidth > 0 ? trellisMinColumnWidth : defaultOptions.trellisMinColumnWidth;
3419
+ const rowHeight = trellisRowHeight > 0 ? trellisRowHeight : defaultOptions.trellisRowHeight;
3420
+ const [pageNum, setPageNum] = (0, react_exports.useState)(1);
3421
+ const [pagedData, setPagedData] = (0, react_exports.useState)(null);
3422
+ let splitByKeys = [];
3423
+ let totalPages = 0;
3424
+ let showPaginator = false;
3425
+ const { dataSources } = otherProps;
3426
+ const theme = {
3427
+ splunkThemeV1: useSplunkTheme_default()
3428
+ };
3429
+ const {
3430
+ family: currentThemeFamily,
3431
+ colorScheme: currentThemeColorScheme,
3432
+ density: currentThemeDensity
3433
+ } = (0, themes_exports.getSettingsFromThemedProps)({ theme });
3434
+ const trellisBackgroundColor = (0, react_exports.useMemo)(() => {
3435
+ const themeFunc = (themeVar) => {
3436
+ var _a2, _b;
3437
+ return (_b = (_a2 = Viz.config.themes)[themeVar]) == null ? void 0 : _b.call(_a2, {
3438
+ trellisBackgroundColor: mergedOptions.trellisBackgroundColor,
3439
+ theme
3440
+ });
3441
+ };
3442
+ const evaluated = Options_exports.Options.evaluate(
3443
+ {
3444
+ context: Viz.config.context,
3445
+ options: {
3446
+ trellisBackgroundColor: mergedOptions.trellisBackgroundColor
3447
+ }
3448
+ },
3449
+ {},
3450
+ themeFunc
3451
+ );
3452
+ return evaluated.trellisBackgroundColor;
3453
+ }, [
3454
+ mergedOptions.trellisBackgroundColor,
3455
+ currentThemeFamily,
3456
+ currentThemeColorScheme,
3457
+ currentThemeDensity
3458
+ ]);
3459
+ const columns = (0, lodash_exports.get)(dataSources, "primary.data.columns", void 0);
3460
+ const fields = (0, lodash_exports.get)(dataSources, "primary.data.fields", void 0);
3461
+ const noColumns = columns === void 0;
3462
+ const noFields = fields === void 0;
3463
+ const updateDataDisplay = (currPage) => {
3464
+ if (!showPaginator) {
3465
+ setPagedData(splitByKeys);
3466
+ setPageNum(1);
3467
+ } else {
3468
+ const startIdx = pageCount * (currPage - 1);
3469
+ const paged = splitByKeys.slice(startIdx, startIdx + pageCount);
3470
+ setPagedData(paged);
3471
+ }
3472
+ };
3473
+ (0, react_exports.useEffect)(() => {
3474
+ setPageNum(1);
3475
+ updateDataDisplay(1);
3476
+ }, [pageCount, trellisSplitBy]);
3477
+ (0, react_exports.useEffect)(() => {
3478
+ updateDataDisplay(pageNum);
3479
+ }, [columns, fields, trellisSplitBy, pageNum, splitByLayout]);
3480
+ const handlePageChange = (0, react_exports.useCallback)(
3481
+ (event, { page }) => {
3482
+ setPageNum(page);
3483
+ },
3484
+ [pageNum, pagedData]
3485
+ );
3486
+ const featureFlagContext = react_exports.useContext(FeatureFlagContext_default);
3487
+ const isTrellisFeatureFlagOn2 = Boolean(
3488
+ featureFlagContext && featureFlagContext.visualizations_enableTrellis
3489
+ );
3490
+ if (!isTrellisFeatureFlagOn2 || !splitByLayout || splitByLayout !== visualization_schemas_exports.LAYOUT_TYPE.Trellis) {
3491
+ return /* @__PURE__ */ react_exports.createElement(Viz, __spreadValues({}, opts));
3492
+ }
3493
+ if (splitByLayout === visualization_schemas_exports.LAYOUT_TYPE.Trellis) {
3494
+ if (noColumns || noFields) {
3495
+ return /* @__PURE__ */ react_exports.createElement(Message_default, { width, height, message: (0, i18n_exports._)("Loading"), level: "info" });
3496
+ }
3497
+ let currTrellisSplitBy = trellisSplitBy;
3498
+ if (!trellisSplitBy || trellisSplitBy.length === 0) {
3499
+ const splitByPossibleFields = (0, trellisUtils_exports.getAllPossibleSplitByFields)(fields);
3500
+ currTrellisSplitBy = splitByPossibleFields.fields && splitByPossibleFields.fields.length ? splitByPossibleFields.fields[0] : AGGREGATIONS;
3501
+ }
3502
+ const splitMode = (0, trellisUtils_exports.getTrellisDataSplitterMode)(fields);
3503
+ const dataSplitResult = getTrellisDataSourcesBySplitMode(
3504
+ splitMode,
3505
+ dataSources,
3506
+ currTrellisSplitBy
3507
+ );
3508
+ const modifiedDataSourceBySplitBy = dataSplitResult == null ? void 0 : dataSplitResult.splitDataSources;
3509
+ const dataSplitErrorCode = dataSplitResult == null ? void 0 : dataSplitResult.errorCode;
3510
+ if (!modifiedDataSourceBySplitBy || Object.keys(modifiedDataSourceBySplitBy).length === 0 || dataSplitErrorCode) {
3511
+ return showErrorMessage(dataSplitErrorCode, width, height);
3512
+ }
3513
+ const splitByKeysModified = modifiedDataSourceBySplitBy ? Object.keys(modifiedDataSourceBySplitBy) : [];
3514
+ if (splitByKeysModified) {
3515
+ showPaginator = splitByKeysModified.length > pageCount;
3516
+ splitByKeys = splitByKeysModified;
3517
+ totalPages = splitByKeysModified ? Math.ceil(splitByKeysModified.length / pageCount) : 0;
3518
+ }
3519
+ const [calculatedMin, calculatedMax] = determineMinMax(
3520
+ modifiedDataSourceBySplitBy,
3521
+ trellisSharedScale,
3522
+ yAxisMin,
3523
+ yAxisMax,
3524
+ stackMode
3525
+ );
3526
+ return /* @__PURE__ */ react_exports.createElement(TrellisContainer, { height, width, backgroundColor: trellisBackgroundColor }, /* @__PURE__ */ react_exports.createElement(
3527
+ TrellisContainerGrid,
3528
+ {
3529
+ height,
3530
+ colCount,
3531
+ colMinWidth,
3532
+ rowHeight
3533
+ },
3534
+ pagedData == null ? void 0 : pagedData.map((splitByKey, idx) => /* @__PURE__ */ react_exports.createElement(
3535
+ "div",
3536
+ {
3537
+ className: "child",
3538
+ "data-test": "trellis-child",
3539
+ key: `div-child-${idx.toString()}`
3540
+ },
3541
+ /* @__PURE__ */ react_exports.createElement(
3542
+ SizeAwareWrapper_default,
3543
+ {
3544
+ width,
3545
+ height,
3546
+ onResize: cachedHandleResize
3547
+ }
3548
+ ),
3549
+ /* @__PURE__ */ react_exports.createElement(
3550
+ Viz,
3551
+ __spreadProps(__spreadValues({}, otherProps), {
3552
+ trellisKey: splitByKey,
3553
+ trellisSplitBy: currTrellisSplitBy,
3554
+ dataSources: modifiedDataSourceBySplitBy[splitByKey],
3555
+ options: __spreadProps(__spreadValues({}, options), {
3556
+ yAxisMin: calculatedMin,
3557
+ yAxisMax: calculatedMax
3558
+ }),
3559
+ key: `viz-${idx.toString()}`,
3560
+ height: containerHeight,
3561
+ width: containerWidth
3562
+ })
3563
+ )
3564
+ ))
3565
+ ), showPaginator && totalPages >= pageNum && /* @__PURE__ */ react_exports.createElement(
3566
+ Paginator_default,
3567
+ {
3568
+ onChange: handlePageChange,
3569
+ current: pageNum,
3570
+ alwaysShowLastPageLink: true,
3571
+ totalPages
3572
+ }
3573
+ ));
3574
+ }
3575
+ return null;
3576
+ };
3577
+ VizWithTrellis.propTypes = Viz.proptypes;
3578
+ VizWithTrellis.config = Viz.config;
3579
+ return VizWithTrellis;
3580
+ };
3581
+ var withTrellis_default = withTrellis;
3582
+
2471
3583
  // src/FillerGauge/FillerGauge.ts
2472
3584
  var config2 = config_default;
2473
3585
  var PureFillerGauge = FillerGauge_default;
@@ -2480,15 +3592,18 @@ var computeVizProps = (_a) => {
2480
3592
  majorTickFillColor: config2.themes.majorTickFillColor(props),
2481
3593
  majorTickStrokeColor: config2.themes.majorTickStrokeColor(props),
2482
3594
  valueMarkerFillColor: config2.themes.valueMarkerFillColor(props),
2483
- valueMarkerLabelFillColor: config2.themes.valueMarkerLabelFillColor(props)
3595
+ valueMarkerLabelFillColor: config2.themes.valueMarkerLabelFillColor(props),
3596
+ defaultFontColor: props.themeFunc("defaultFontColor")
2484
3597
  };
2485
- return __spreadValues(__spreadValues({}, options), defaultColors);
3598
+ return __spreadProps(__spreadValues(__spreadValues({}, options), defaultColors), { trellisKey: props.trellisKey });
2486
3599
  };
2487
- var viz = withDashboardViz_default({
2488
- ReactViz: FillerGauge_default,
2489
- computeVizProps,
2490
- vizConfig: config_default
2491
- });
3600
+ var viz = withTrellis_default(
3601
+ withDashboardViz_default({
3602
+ ReactViz: FillerGauge_default,
3603
+ computeVizProps,
3604
+ vizConfig: config_default
3605
+ })
3606
+ );
2492
3607
  var { themes: themes2 } = config_default;
2493
3608
  var FillerGauge_default2 = viz;
2494
3609
  //# sourceMappingURL=FillerGauge.js.map