@splunk/dashboard-toolbar 29.0.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 (347) hide show
  1. package/CollapsibleToolbar.js +261 -0
  2. package/CollapsibleToolbar.js.map +7 -0
  3. package/IconButton.js +168 -0
  4. package/IconButton.js.map +7 -0
  5. package/Item.js +52 -0
  6. package/Item.js.map +7 -0
  7. package/ItemGroup.js +127 -0
  8. package/ItemGroup.js.map +7 -0
  9. package/LICENSE.md +14 -0
  10. package/PopoverItemButton.js +78 -0
  11. package/PopoverItemButton.js.map +7 -0
  12. package/README.md +9 -0
  13. package/Toolbar.js +192 -0
  14. package/Toolbar.js.map +7 -0
  15. package/buttons/Charts.js +384 -0
  16. package/buttons/Charts.js.map +7 -0
  17. package/buttons/Config.js +224 -0
  18. package/buttons/Config.js.map +7 -0
  19. package/buttons/ContentExport.js +199 -0
  20. package/buttons/ContentExport.js.map +7 -0
  21. package/buttons/Data.js +236 -0
  22. package/buttons/Data.js.map +7 -0
  23. package/buttons/EmptyVisualization.js +234 -0
  24. package/buttons/EmptyVisualization.js.map +7 -0
  25. package/buttons/ExportDashboardButton.js +130 -0
  26. package/buttons/ExportDashboardButton.js.map +7 -0
  27. package/buttons/Fullscreen.js +214 -0
  28. package/buttons/Fullscreen.js.map +7 -0
  29. package/buttons/GridLineSwitch.js +145 -0
  30. package/buttons/GridLineSwitch.js.map +7 -0
  31. package/buttons/HelpButton.js +277 -0
  32. package/buttons/HelpButton.js.map +7 -0
  33. package/buttons/IconGallery.js +303 -0
  34. package/buttons/IconGallery.js.map +7 -0
  35. package/buttons/Image.js +233 -0
  36. package/buttons/Image.js.map +7 -0
  37. package/buttons/ImageGallery.js +300 -0
  38. package/buttons/ImageGallery.js.map +7 -0
  39. package/buttons/Inputs.js +348 -0
  40. package/buttons/Inputs.js.map +7 -0
  41. package/buttons/Markdown.js +213 -0
  42. package/buttons/Markdown.js.map +7 -0
  43. package/buttons/ModeSwitch.js +121 -0
  44. package/buttons/ModeSwitch.js.map +7 -0
  45. package/buttons/Redo.js +227 -0
  46. package/buttons/Redo.js.map +7 -0
  47. package/buttons/Shapes.js +357 -0
  48. package/buttons/Shapes.js.map +7 -0
  49. package/buttons/Source.js +199 -0
  50. package/buttons/Source.js.map +7 -0
  51. package/buttons/Undo.js +227 -0
  52. package/buttons/Undo.js.map +7 -0
  53. package/buttons/index.js +1857 -0
  54. package/buttons/index.js.map +7 -0
  55. package/groups/ActionsGroup.js +153 -0
  56. package/groups/ActionsGroup.js.map +7 -0
  57. package/groups/ControlGroup.js +701 -0
  58. package/groups/ControlGroup.js.map +7 -0
  59. package/groups/EditingGroup.js +1029 -0
  60. package/groups/EditingGroup.js.map +7 -0
  61. package/groups/EditorGroup.js +698 -0
  62. package/groups/EditorGroup.js.map +7 -0
  63. package/groups/EditorsControlGroup.js +753 -0
  64. package/groups/EditorsControlGroup.js.map +7 -0
  65. package/groups/HistoryGroup.js +761 -0
  66. package/groups/HistoryGroup.js.map +7 -0
  67. package/groups/SidebarControlGroup.js +740 -0
  68. package/groups/SidebarControlGroup.js.map +7 -0
  69. package/groups/VisualizationGroup.js +1218 -0
  70. package/groups/VisualizationGroup.js.map +7 -0
  71. package/groups/index.js +1778 -0
  72. package/groups/index.js.map +7 -0
  73. package/index.js +2245 -0
  74. package/index.js.map +7 -0
  75. package/module/CollapsibleToolbar.js +20 -0
  76. package/module/CollapsibleToolbar.js.map +7 -0
  77. package/module/IconButton.js +21 -0
  78. package/module/IconButton.js.map +7 -0
  79. package/module/Item.js +12 -0
  80. package/module/Item.js.map +7 -0
  81. package/module/ItemGroup.js +16 -0
  82. package/module/ItemGroup.js.map +7 -0
  83. package/module/PopoverItemButton.js +13 -0
  84. package/module/PopoverItemButton.js.map +7 -0
  85. package/module/Toolbar.js +15 -0
  86. package/module/Toolbar.js.map +7 -0
  87. package/module/buttons/Charts.js +26 -0
  88. package/module/buttons/Charts.js.map +7 -0
  89. package/module/buttons/Config.js +18 -0
  90. package/module/buttons/Config.js.map +7 -0
  91. package/module/buttons/ContentExport.js +18 -0
  92. package/module/buttons/ContentExport.js.map +7 -0
  93. package/module/buttons/Data.js +19 -0
  94. package/module/buttons/Data.js.map +7 -0
  95. package/module/buttons/EmptyVisualization.js +18 -0
  96. package/module/buttons/EmptyVisualization.js.map +7 -0
  97. package/module/buttons/ExportDashboardButton.js +17 -0
  98. package/module/buttons/ExportDashboardButton.js.map +7 -0
  99. package/module/buttons/Fullscreen.js +18 -0
  100. package/module/buttons/Fullscreen.js.map +7 -0
  101. package/module/buttons/GridLineSwitch.js +17 -0
  102. package/module/buttons/GridLineSwitch.js.map +7 -0
  103. package/module/buttons/HelpButton.js +20 -0
  104. package/module/buttons/HelpButton.js.map +7 -0
  105. package/module/buttons/IconGallery.js +20 -0
  106. package/module/buttons/IconGallery.js.map +7 -0
  107. package/module/buttons/Image.js +18 -0
  108. package/module/buttons/Image.js.map +7 -0
  109. package/module/buttons/ImageGallery.js +21 -0
  110. package/module/buttons/ImageGallery.js.map +7 -0
  111. package/module/buttons/Inputs.js +20 -0
  112. package/module/buttons/Inputs.js.map +7 -0
  113. package/module/buttons/Markdown.js +17 -0
  114. package/module/buttons/Markdown.js.map +7 -0
  115. package/module/buttons/ModeSwitch.js +18 -0
  116. package/module/buttons/ModeSwitch.js.map +7 -0
  117. package/module/buttons/Redo.js +17 -0
  118. package/module/buttons/Redo.js.map +7 -0
  119. package/module/buttons/Shapes.js +22 -0
  120. package/module/buttons/Shapes.js.map +7 -0
  121. package/module/buttons/Source.js +17 -0
  122. package/module/buttons/Source.js.map +7 -0
  123. package/module/buttons/Undo.js +17 -0
  124. package/module/buttons/Undo.js.map +7 -0
  125. package/module/buttons/index.js +108 -0
  126. package/module/buttons/index.js.map +7 -0
  127. package/module/chunks/chunk-2QMHWIV5.js +175 -0
  128. package/module/chunks/chunk-2QMHWIV5.js.map +7 -0
  129. package/module/chunks/chunk-4OLWQA6K.js +83 -0
  130. package/module/chunks/chunk-4OLWQA6K.js.map +7 -0
  131. package/module/chunks/chunk-52TYQW2Y.js +23 -0
  132. package/module/chunks/chunk-52TYQW2Y.js.map +7 -0
  133. package/module/chunks/chunk-72YLBMXL.js +199 -0
  134. package/module/chunks/chunk-72YLBMXL.js.map +7 -0
  135. package/module/chunks/chunk-734QWOYU.js +56 -0
  136. package/module/chunks/chunk-734QWOYU.js.map +7 -0
  137. package/module/chunks/chunk-A3BAVEME.js +77 -0
  138. package/module/chunks/chunk-A3BAVEME.js.map +7 -0
  139. package/module/chunks/chunk-AWNWXBE4.js +68 -0
  140. package/module/chunks/chunk-AWNWXBE4.js.map +7 -0
  141. package/module/chunks/chunk-B2LPQWLD.js +74 -0
  142. package/module/chunks/chunk-B2LPQWLD.js.map +7 -0
  143. package/module/chunks/chunk-BLXVTG4B.js +65 -0
  144. package/module/chunks/chunk-BLXVTG4B.js.map +7 -0
  145. package/module/chunks/chunk-BRGYD3MR.js +23 -0
  146. package/module/chunks/chunk-BRGYD3MR.js.map +7 -0
  147. package/module/chunks/chunk-BSMCGXVQ.js +22 -0
  148. package/module/chunks/chunk-BSMCGXVQ.js.map +7 -0
  149. package/module/chunks/chunk-CFGNNO2V.js +143 -0
  150. package/module/chunks/chunk-CFGNNO2V.js.map +7 -0
  151. package/module/chunks/chunk-E2DI77AU.js +15 -0
  152. package/module/chunks/chunk-E2DI77AU.js.map +7 -0
  153. package/module/chunks/chunk-ECEBJH6K.js +112 -0
  154. package/module/chunks/chunk-ECEBJH6K.js.map +7 -0
  155. package/module/chunks/chunk-ETJ5YPF3.js +31 -0
  156. package/module/chunks/chunk-ETJ5YPF3.js.map +7 -0
  157. package/module/chunks/chunk-FSOMEJXM.js +49 -0
  158. package/module/chunks/chunk-FSOMEJXM.js.map +7 -0
  159. package/module/chunks/chunk-FVGABOJM.js +37 -0
  160. package/module/chunks/chunk-FVGABOJM.js.map +7 -0
  161. package/module/chunks/chunk-G6N5OMKL.js +22 -0
  162. package/module/chunks/chunk-G6N5OMKL.js.map +7 -0
  163. package/module/chunks/chunk-GRIJP4FT.js +172 -0
  164. package/module/chunks/chunk-GRIJP4FT.js.map +7 -0
  165. package/module/chunks/chunk-GWAXQYWY.js +105 -0
  166. package/module/chunks/chunk-GWAXQYWY.js.map +7 -0
  167. package/module/chunks/chunk-HIICL66H.js +22 -0
  168. package/module/chunks/chunk-HIICL66H.js.map +7 -0
  169. package/module/chunks/chunk-HXY4TSUO.js +22 -0
  170. package/module/chunks/chunk-HXY4TSUO.js.map +7 -0
  171. package/module/chunks/chunk-IAEE4XLH.js +58 -0
  172. package/module/chunks/chunk-IAEE4XLH.js.map +7 -0
  173. package/module/chunks/chunk-IGGLU44N.js +22 -0
  174. package/module/chunks/chunk-IGGLU44N.js.map +7 -0
  175. package/module/chunks/chunk-IQG5GSSX.js +77 -0
  176. package/module/chunks/chunk-IQG5GSSX.js.map +7 -0
  177. package/module/chunks/chunk-J2TRUM5N.js +23 -0
  178. package/module/chunks/chunk-J2TRUM5N.js.map +7 -0
  179. package/module/chunks/chunk-J5CY2G3T.js +52 -0
  180. package/module/chunks/chunk-J5CY2G3T.js.map +7 -0
  181. package/module/chunks/chunk-JILFF3WY.js +122 -0
  182. package/module/chunks/chunk-JILFF3WY.js.map +7 -0
  183. package/module/chunks/chunk-JLYV2H24.js +21 -0
  184. package/module/chunks/chunk-JLYV2H24.js.map +7 -0
  185. package/module/chunks/chunk-JXPIKVRZ.js +48 -0
  186. package/module/chunks/chunk-JXPIKVRZ.js.map +7 -0
  187. package/module/chunks/chunk-KEARZQAT.js +57 -0
  188. package/module/chunks/chunk-KEARZQAT.js.map +7 -0
  189. package/module/chunks/chunk-KJLRQLFH.js +28 -0
  190. package/module/chunks/chunk-KJLRQLFH.js.map +7 -0
  191. package/module/chunks/chunk-L4ZPYLUY.js +25 -0
  192. package/module/chunks/chunk-L4ZPYLUY.js.map +7 -0
  193. package/module/chunks/chunk-NCPTJ5RB.js +185 -0
  194. package/module/chunks/chunk-NCPTJ5RB.js.map +7 -0
  195. package/module/chunks/chunk-NIACHGAA.js +25 -0
  196. package/module/chunks/chunk-NIACHGAA.js.map +7 -0
  197. package/module/chunks/chunk-NJF2IOVV.js +22 -0
  198. package/module/chunks/chunk-NJF2IOVV.js.map +7 -0
  199. package/module/chunks/chunk-NWVLNDCF.js +23 -0
  200. package/module/chunks/chunk-NWVLNDCF.js.map +7 -0
  201. package/module/chunks/chunk-OIQNUT2X.js +36 -0
  202. package/module/chunks/chunk-OIQNUT2X.js.map +7 -0
  203. package/module/chunks/chunk-OSDOIGWB.js +23 -0
  204. package/module/chunks/chunk-OSDOIGWB.js.map +7 -0
  205. package/module/chunks/chunk-OTGQ73VF.js +63 -0
  206. package/module/chunks/chunk-OTGQ73VF.js.map +7 -0
  207. package/module/chunks/chunk-QU7RW3YZ.js +39 -0
  208. package/module/chunks/chunk-QU7RW3YZ.js.map +7 -0
  209. package/module/chunks/chunk-RODBPKID.js +64 -0
  210. package/module/chunks/chunk-RODBPKID.js.map +7 -0
  211. package/module/chunks/chunk-SIFZZCPT.js +439 -0
  212. package/module/chunks/chunk-SIFZZCPT.js.map +7 -0
  213. package/module/chunks/chunk-UPZBDSS7.js +59 -0
  214. package/module/chunks/chunk-UPZBDSS7.js.map +7 -0
  215. package/module/chunks/chunk-UVD66GCR.js +4 -0
  216. package/module/chunks/chunk-UVD66GCR.js.map +7 -0
  217. package/module/chunks/chunk-VQIRZ53C.js +79 -0
  218. package/module/chunks/chunk-VQIRZ53C.js.map +7 -0
  219. package/module/chunks/chunk-WFAY6ABE.js +28 -0
  220. package/module/chunks/chunk-WFAY6ABE.js.map +7 -0
  221. package/module/chunks/chunk-X2HLBQUA.js +64 -0
  222. package/module/chunks/chunk-X2HLBQUA.js.map +7 -0
  223. package/module/chunks/chunk-X7ATHE2S.js +23 -0
  224. package/module/chunks/chunk-X7ATHE2S.js.map +7 -0
  225. package/module/chunks/chunk-XUK4ZKWN.js +52 -0
  226. package/module/chunks/chunk-XUK4ZKWN.js.map +7 -0
  227. package/module/chunks/chunk-YKT3CRI6.js +23 -0
  228. package/module/chunks/chunk-YKT3CRI6.js.map +7 -0
  229. package/module/chunks/chunk-YPVMTO2L.js +111 -0
  230. package/module/chunks/chunk-YPVMTO2L.js.map +7 -0
  231. package/module/groups/ActionsGroup.js +16 -0
  232. package/module/groups/ActionsGroup.js.map +7 -0
  233. package/module/groups/ControlGroup.js +51 -0
  234. package/module/groups/ControlGroup.js.map +7 -0
  235. package/module/groups/EditingGroup.js +51 -0
  236. package/module/groups/EditingGroup.js.map +7 -0
  237. package/module/groups/EditorGroup.js +51 -0
  238. package/module/groups/EditorGroup.js.map +7 -0
  239. package/module/groups/EditorsControlGroup.js +51 -0
  240. package/module/groups/EditorsControlGroup.js.map +7 -0
  241. package/module/groups/HistoryGroup.js +51 -0
  242. package/module/groups/HistoryGroup.js.map +7 -0
  243. package/module/groups/SidebarControlGroup.js +51 -0
  244. package/module/groups/SidebarControlGroup.js.map +7 -0
  245. package/module/groups/VisualizationGroup.js +51 -0
  246. package/module/groups/VisualizationGroup.js.map +7 -0
  247. package/module/groups/index.js +80 -0
  248. package/module/groups/index.js.map +7 -0
  249. package/module/index.js +163 -0
  250. package/module/index.js.map +7 -0
  251. package/module/package.json +1 -0
  252. package/package.json +68 -0
  253. package/tsconfig.json +9 -0
  254. package/types/CollapsibleToolbar.d.ts +12 -0
  255. package/types/CollapsibleToolbar.d.ts.map +1 -0
  256. package/types/IconButton.d.ts +35 -0
  257. package/types/IconButton.d.ts.map +1 -0
  258. package/types/Item.d.ts +3 -0
  259. package/types/Item.d.ts.map +1 -0
  260. package/types/ItemGroup.d.ts +14 -0
  261. package/types/ItemGroup.d.ts.map +1 -0
  262. package/types/PopoverItemButton.d.ts +12 -0
  263. package/types/PopoverItemButton.d.ts.map +1 -0
  264. package/types/Toolbar.d.ts +14 -0
  265. package/types/Toolbar.d.ts.map +1 -0
  266. package/types/buttons/Charts.d.ts +19 -0
  267. package/types/buttons/Charts.d.ts.map +1 -0
  268. package/types/buttons/Config.d.ts +8 -0
  269. package/types/buttons/Config.d.ts.map +1 -0
  270. package/types/buttons/ContentExport.d.ts +10 -0
  271. package/types/buttons/ContentExport.d.ts.map +1 -0
  272. package/types/buttons/Data.d.ts +8 -0
  273. package/types/buttons/Data.d.ts.map +1 -0
  274. package/types/buttons/EmptyVisualization.d.ts +8 -0
  275. package/types/buttons/EmptyVisualization.d.ts.map +1 -0
  276. package/types/buttons/ExportDashboardButton.d.ts +10 -0
  277. package/types/buttons/ExportDashboardButton.d.ts.map +1 -0
  278. package/types/buttons/Fullscreen.d.ts +8 -0
  279. package/types/buttons/Fullscreen.d.ts.map +1 -0
  280. package/types/buttons/GridLineSwitch.d.ts +8 -0
  281. package/types/buttons/GridLineSwitch.d.ts.map +1 -0
  282. package/types/buttons/HelpButton.d.ts +16 -0
  283. package/types/buttons/HelpButton.d.ts.map +1 -0
  284. package/types/buttons/IconGallery.d.ts +8 -0
  285. package/types/buttons/IconGallery.d.ts.map +1 -0
  286. package/types/buttons/Image.d.ts +8 -0
  287. package/types/buttons/Image.d.ts.map +1 -0
  288. package/types/buttons/ImageGallery.d.ts +8 -0
  289. package/types/buttons/ImageGallery.d.ts.map +1 -0
  290. package/types/buttons/Inputs.d.ts +8 -0
  291. package/types/buttons/Inputs.d.ts.map +1 -0
  292. package/types/buttons/Markdown.d.ts +7 -0
  293. package/types/buttons/Markdown.d.ts.map +1 -0
  294. package/types/buttons/ModeSwitch.d.ts +7 -0
  295. package/types/buttons/ModeSwitch.d.ts.map +1 -0
  296. package/types/buttons/Redo.d.ts +5 -0
  297. package/types/buttons/Redo.d.ts.map +1 -0
  298. package/types/buttons/Shapes.d.ts +8 -0
  299. package/types/buttons/Shapes.d.ts.map +1 -0
  300. package/types/buttons/Source.d.ts +13 -0
  301. package/types/buttons/Source.d.ts.map +1 -0
  302. package/types/buttons/Undo.d.ts +5 -0
  303. package/types/buttons/Undo.d.ts.map +1 -0
  304. package/types/buttons/Zoom/Zoom.d.ts +8 -0
  305. package/types/buttons/Zoom/Zoom.d.ts.map +1 -0
  306. package/types/buttons/Zoom/ZoomMenu.d.ts +12 -0
  307. package/types/buttons/Zoom/ZoomMenu.d.ts.map +1 -0
  308. package/types/buttons/Zoom/ZoomNumber.d.ts +8 -0
  309. package/types/buttons/Zoom/ZoomNumber.d.ts.map +1 -0
  310. package/types/buttons/Zoom/index.d.ts +2 -0
  311. package/types/buttons/Zoom/index.d.ts.map +1 -0
  312. package/types/buttons/index.d.ts +26 -0
  313. package/types/buttons/index.d.ts.map +1 -0
  314. package/types/buttons/tokenManager/TokenManager.d.ts +7 -0
  315. package/types/buttons/tokenManager/TokenManager.d.ts.map +1 -0
  316. package/types/buttons/tokenManager/index.d.ts +2 -0
  317. package/types/buttons/tokenManager/index.d.ts.map +1 -0
  318. package/types/components/ItemSeparator.d.ts +3 -0
  319. package/types/components/ItemSeparator.d.ts.map +1 -0
  320. package/types/components/StyledButton.d.ts +2 -0
  321. package/types/components/StyledButton.d.ts.map +1 -0
  322. package/types/groups/ActionsGroup.d.ts +10 -0
  323. package/types/groups/ActionsGroup.d.ts.map +1 -0
  324. package/types/groups/ControlGroup.d.ts +8 -0
  325. package/types/groups/ControlGroup.d.ts.map +1 -0
  326. package/types/groups/EditingGroup.d.ts +11 -0
  327. package/types/groups/EditingGroup.d.ts.map +1 -0
  328. package/types/groups/EditorGroup.d.ts +8 -0
  329. package/types/groups/EditorGroup.d.ts.map +1 -0
  330. package/types/groups/EditorsControlGroup.d.ts +8 -0
  331. package/types/groups/EditorsControlGroup.d.ts.map +1 -0
  332. package/types/groups/HistoryGroup.d.ts +8 -0
  333. package/types/groups/HistoryGroup.d.ts.map +1 -0
  334. package/types/groups/HistoryGroup.test.d.ts +2 -0
  335. package/types/groups/HistoryGroup.test.d.ts.map +1 -0
  336. package/types/groups/SidebarControlGroup.d.ts +8 -0
  337. package/types/groups/SidebarControlGroup.d.ts.map +1 -0
  338. package/types/groups/VisualizationGroup.d.ts +8 -0
  339. package/types/groups/VisualizationGroup.d.ts.map +1 -0
  340. package/types/groups/index.d.ts +11 -0
  341. package/types/groups/index.d.ts.map +1 -0
  342. package/types/hooks/useDropdown.d.ts +25 -0
  343. package/types/hooks/useDropdown.d.ts.map +1 -0
  344. package/types/index.d.ts +16 -0
  345. package/types/index.d.ts.map +1 -0
  346. package/types/types/common.d.ts +13 -0
  347. package/types/types/common.d.ts.map +1 -0
package/index.js ADDED
@@ -0,0 +1,2245 @@
1
+ /* Copyright © 2020 Splunk Inc.
2
+ SPLUNK CONFIDENTIAL – Use or disclosure of this material in whole or
3
+ in part without a valid written license from Splunk Inc. is PROHIBITED. */
4
+ "use strict";
5
+ var __create = Object.create;
6
+ var __defProp = Object.defineProperty;
7
+ var __defProps = Object.defineProperties;
8
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
9
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
10
+ var __getOwnPropNames = Object.getOwnPropertyNames;
11
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
12
+ var __getProtoOf = Object.getPrototypeOf;
13
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
14
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
15
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
16
+ var __spreadValues = (a, b) => {
17
+ for (var prop in b || (b = {}))
18
+ if (__hasOwnProp.call(b, prop))
19
+ __defNormalProp(a, prop, b[prop]);
20
+ if (__getOwnPropSymbols)
21
+ for (var prop of __getOwnPropSymbols(b)) {
22
+ if (__propIsEnum.call(b, prop))
23
+ __defNormalProp(a, prop, b[prop]);
24
+ }
25
+ return a;
26
+ };
27
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
28
+ var __objRest = (source, exclude) => {
29
+ var target = {};
30
+ for (var prop in source)
31
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
32
+ target[prop] = source[prop];
33
+ if (source != null && __getOwnPropSymbols)
34
+ for (var prop of __getOwnPropSymbols(source)) {
35
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
36
+ target[prop] = source[prop];
37
+ }
38
+ return target;
39
+ };
40
+ var __export = (target, all) => {
41
+ for (var name in all)
42
+ __defProp(target, name, { get: all[name], enumerable: true });
43
+ };
44
+ var __copyProps = (to, from, except, desc) => {
45
+ if (from && typeof from === "object" || typeof from === "function") {
46
+ for (let key of __getOwnPropNames(from))
47
+ if (!__hasOwnProp.call(to, key) && key !== except)
48
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
49
+ }
50
+ return to;
51
+ };
52
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
53
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
54
+ // If the importer is in node compatibility mode or this is not an ESM
55
+ // file that has been converted to a CommonJS file using a Babel-
56
+ // compatible transform (i.e. "__esModule" has not been set), then set
57
+ // "default" to the CommonJS "module.exports" for node compatibility.
58
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
59
+ mod
60
+ ));
61
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
62
+ var __async = (__this, __arguments, generator) => {
63
+ return new Promise((resolve, reject) => {
64
+ var fulfilled = (value) => {
65
+ try {
66
+ step(generator.next(value));
67
+ } catch (e) {
68
+ reject(e);
69
+ }
70
+ };
71
+ var rejected = (value) => {
72
+ try {
73
+ step(generator.throw(value));
74
+ } catch (e) {
75
+ reject(e);
76
+ }
77
+ };
78
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
79
+ step((generator = generator.apply(__this, __arguments)).next());
80
+ });
81
+ };
82
+
83
+ // src/index.ts
84
+ var src_exports = {};
85
+ __export(src_exports, {
86
+ ActionsGroup: () => ActionsGroup_default,
87
+ Charts: () => Charts_default,
88
+ CollapsibleToolbar: () => CollapsibleToolbar_default,
89
+ Config: () => Config_default,
90
+ ContentExport: () => ContentExport_default,
91
+ ControlGroup: () => ControlGroup_default,
92
+ Data: () => Data_default,
93
+ EditingGroup: () => EditingGroup_default,
94
+ EditorGroup: () => EditorGroup_default,
95
+ EditorsControlGroup: () => EditorsControlGroup_default,
96
+ EmptyVisualization: () => EmptyVisualization_default,
97
+ ExportDashboardButton: () => ExportDashboardButton_default,
98
+ Fullscreen: () => Fullscreen_default,
99
+ GridLineSwitch: () => GridLineSwitch_default,
100
+ HelpButton: () => HelpButton_default,
101
+ HistoryGroup: () => HistoryGroup_default,
102
+ IconButton: () => IconButton_default,
103
+ IconGallery: () => IconGallery_default,
104
+ Image: () => Image_default,
105
+ ImageGallery: () => ImageGallery_default,
106
+ Inputs: () => Inputs_default,
107
+ Item: () => Item_default,
108
+ ItemGroup: () => ItemGroup_default,
109
+ Markdown: () => Markdown_default2,
110
+ ModeSwitch: () => ModeSwitch_default,
111
+ PopoverItemButton: () => PopoverItemButton_default,
112
+ Redo: () => Redo_default,
113
+ Shapes: () => Shapes_default,
114
+ SidebarControlGroup: () => SidebarControlGroup_default,
115
+ Source: () => Source_default,
116
+ TokenManager: () => TokenManager,
117
+ Toolbar: () => Toolbar_default,
118
+ Undo: () => Undo_default,
119
+ VisualizationGroup: () => VisualizationGroup_default,
120
+ Zoom: () => Zoom,
121
+ default: () => Toolbar_default
122
+ });
123
+ module.exports = __toCommonJS(src_exports);
124
+
125
+ // esm-externals:react
126
+ var react_exports = {};
127
+ __export(react_exports, {
128
+ default: () => react_default
129
+ });
130
+ var defaultImport = __toESM(require("react"));
131
+ __reExport(react_exports, require("react"));
132
+ var react_default = "default" in defaultImport ? defaultImport.default : defaultImport;
133
+
134
+ // esm-externals:@splunk/dashboard-context
135
+ var dashboard_context_exports = {};
136
+ __export(dashboard_context_exports, {
137
+ default: () => dashboard_context_default
138
+ });
139
+ var defaultImport2 = __toESM(require("@splunk/dashboard-context"));
140
+ __reExport(dashboard_context_exports, require("@splunk/dashboard-context"));
141
+ var dashboard_context_default = "default" in defaultImport2 ? defaultImport2.default : defaultImport2;
142
+
143
+ // esm-externals:styled-components
144
+ var styled_components_exports = {};
145
+ __export(styled_components_exports, {
146
+ default: () => styled_components_default
147
+ });
148
+ var defaultImport3 = __toESM(require("styled-components"));
149
+ __reExport(styled_components_exports, require("styled-components"));
150
+ var styled_components_default = "default" in defaultImport3 ? defaultImport3.default : defaultImport3;
151
+
152
+ // esm-externals:@splunk/react-ui/Button
153
+ var Button_exports = {};
154
+ __export(Button_exports, {
155
+ default: () => Button_default
156
+ });
157
+ var defaultImport4 = __toESM(require("@splunk/react-ui/Button"));
158
+ __reExport(Button_exports, require("@splunk/react-ui/Button"));
159
+ var Button_default = "default" in defaultImport4 ? defaultImport4.default : defaultImport4;
160
+
161
+ // esm-externals:@splunk/react-ui/TransitionOpen
162
+ var TransitionOpen_exports = {};
163
+ __export(TransitionOpen_exports, {
164
+ default: () => TransitionOpen_default
165
+ });
166
+ var defaultImport5 = __toESM(require("@splunk/react-ui/TransitionOpen"));
167
+ __reExport(TransitionOpen_exports, require("@splunk/react-ui/TransitionOpen"));
168
+ var TransitionOpen_default = "default" in defaultImport5 ? defaultImport5.default : defaultImport5;
169
+
170
+ // esm-externals:@splunk/themes
171
+ var themes_exports = {};
172
+ __export(themes_exports, {
173
+ default: () => themes_default
174
+ });
175
+ var defaultImport6 = __toESM(require("@splunk/themes"));
176
+ __reExport(themes_exports, require("@splunk/themes"));
177
+ var themes_default = "default" in defaultImport6 ? defaultImport6.default : defaultImport6;
178
+
179
+ // esm-externals:@splunk/react-icons/ChevronRight
180
+ var ChevronRight_exports = {};
181
+ __export(ChevronRight_exports, {
182
+ default: () => ChevronRight_default
183
+ });
184
+ var defaultImport7 = __toESM(require("@splunk/react-icons/ChevronRight"));
185
+ __reExport(ChevronRight_exports, require("@splunk/react-icons/ChevronRight"));
186
+ var ChevronRight_default = "default" in defaultImport7 ? defaultImport7.default : defaultImport7;
187
+
188
+ // esm-externals:@splunk/react-icons/ChevronLeft
189
+ var ChevronLeft_exports = {};
190
+ __export(ChevronLeft_exports, {
191
+ default: () => ChevronLeft_default
192
+ });
193
+ var defaultImport8 = __toESM(require("@splunk/react-icons/ChevronLeft"));
194
+ __reExport(ChevronLeft_exports, require("@splunk/react-icons/ChevronLeft"));
195
+ var ChevronLeft_default = "default" in defaultImport8 ? defaultImport8.default : defaultImport8;
196
+
197
+ // esm-externals:@splunk/ui-utils/i18n
198
+ var i18n_exports = {};
199
+ __export(i18n_exports, {
200
+ default: () => i18n_default
201
+ });
202
+ var defaultImport9 = __toESM(require("@splunk/ui-utils/i18n"));
203
+ __reExport(i18n_exports, require("@splunk/ui-utils/i18n"));
204
+ var i18n_default = "default" in defaultImport9 ? defaultImport9.default : defaultImport9;
205
+
206
+ // esm-externals:@splunk/dashboard-state
207
+ var dashboard_state_exports = {};
208
+ __export(dashboard_state_exports, {
209
+ default: () => dashboard_state_default
210
+ });
211
+ var defaultImport10 = __toESM(require("@splunk/dashboard-state"));
212
+ __reExport(dashboard_state_exports, require("@splunk/dashboard-state"));
213
+ var dashboard_state_default = "default" in defaultImport10 ? defaultImport10.default : defaultImport10;
214
+
215
+ // esm-externals:@splunk/react-ui/ScreenReaderContent
216
+ var ScreenReaderContent_exports = {};
217
+ __export(ScreenReaderContent_exports, {
218
+ default: () => ScreenReaderContent_default
219
+ });
220
+ var defaultImport11 = __toESM(require("@splunk/react-ui/ScreenReaderContent"));
221
+ __reExport(ScreenReaderContent_exports, require("@splunk/react-ui/ScreenReaderContent"));
222
+ var ScreenReaderContent_default = "default" in defaultImport11 ? defaultImport11.default : defaultImport11;
223
+
224
+ // esm-externals:@splunk/react-icons/CaretDown
225
+ var CaretDown_exports = {};
226
+ __export(CaretDown_exports, {
227
+ default: () => CaretDown_default
228
+ });
229
+ var defaultImport12 = __toESM(require("@splunk/react-icons/CaretDown"));
230
+ __reExport(CaretDown_exports, require("@splunk/react-icons/CaretDown"));
231
+ var CaretDown_default = "default" in defaultImport12 ? defaultImport12.default : defaultImport12;
232
+
233
+ // src/Item.tsx
234
+ var Item_default = styled_components_default.div``;
235
+
236
+ // src/IconButton.tsx
237
+ var StyledDropdownIcon = styled_components_default(CaretDown_default)`
238
+ margin-left: -5px;
239
+ `;
240
+ var iconSize = 24;
241
+ var menuIconSize = 20;
242
+ var prepareIcon = (_a) => {
243
+ var _b = _a, {
244
+ Icon,
245
+ screenReaderContent,
246
+ isMenu = false
247
+ } = _b, props = __objRest(_b, [
248
+ "Icon",
249
+ "screenReaderContent",
250
+ "isMenu"
251
+ ]);
252
+ const size = isMenu ? menuIconSize : iconSize;
253
+ return /* @__PURE__ */ react_default.createElement(react_default.Fragment, null, /* @__PURE__ */ react_default.createElement(Icon, __spreadValues({ width: size, height: size }, props)), isMenu && /* @__PURE__ */ react_default.createElement(StyledDropdownIcon, { variant: "filled", width: 9, height: size }), screenReaderContent && /* @__PURE__ */ react_default.createElement(ScreenReaderContent_default, null, screenReaderContent));
254
+ };
255
+ var IconButton = (_a) => {
256
+ var _b = _a, {
257
+ icon: icon9,
258
+ buttonRef,
259
+ disabled = false,
260
+ onClick,
261
+ label,
262
+ testLabel
263
+ } = _b, rest = __objRest(_b, [
264
+ "icon",
265
+ "buttonRef",
266
+ "disabled",
267
+ "onClick",
268
+ "label",
269
+ "testLabel"
270
+ ]);
271
+ return /* @__PURE__ */ react_default.createElement(Item_default, __spreadValues({}, rest), /* @__PURE__ */ react_default.createElement(
272
+ Button_default,
273
+ {
274
+ elementRef: buttonRef,
275
+ onClick,
276
+ disabled,
277
+ appearance: "subtle",
278
+ icon: icon9,
279
+ label,
280
+ "data-test": testLabel,
281
+ "data-clickable": true
282
+ }
283
+ ));
284
+ };
285
+ var IconButton_default = IconButton;
286
+
287
+ // src/CollapsibleToolbar.tsx
288
+ var TOOLBAR_HEIGHT = 48;
289
+ var ToolbarWrapper = styled_components_default.div`
290
+ display: flex;
291
+ align-items: center;
292
+ position: absolute;
293
+ right: 0;
294
+ z-index: 6;
295
+ height: ${TOOLBAR_HEIGHT}px;
296
+ background-color: ${themes_exports.variables.backgroundColorNavigation};
297
+ color: ${themes_exports.variables.contentColorDefault};
298
+ box-shadow: ${themes_exports.variables.overlayShadow};
299
+ border-radius: 0 0 0 20px;
300
+ `;
301
+ var StyledTransitionOpen = styled_components_default(TransitionOpen_default)`
302
+ border-right: ${({ open }) => open ? "solid" : "none"};
303
+ border-width: 0 1px 0 0;
304
+ border-color: ${themes_exports.variables.interactiveColorBorder};
305
+ `;
306
+ var ToolbarItemsWrapper = styled_components_default.div`
307
+ display: flex;
308
+ padding: 2px 4px 2px 8px;
309
+ gap: ${themes_exports.variables.spacingSmall};
310
+ margin-inline-end: ${themes_exports.variables.spacingSmall};
311
+ `;
312
+ var transition = styled_components_exports.css`
313
+ transition-duration: 0.2s;
314
+ transition-timing-function: ease-in-out;
315
+ `;
316
+ var ExpandButton = styled_components_default(Button_default)`
317
+ // To get specific enough to override the default Button styling
318
+ && {
319
+ // We shrink the button a bit when the toolbar is expanded since it
320
+ // switches to a circle button and needs a bit more space to breath
321
+ height: ${({ expanded }) => expanded ? `${TOOLBAR_HEIGHT - 4}px` : `${TOOLBAR_HEIGHT}px`};
322
+ width: ${({ expanded }) => expanded ? `${TOOLBAR_HEIGHT - 4}px` : `${TOOLBAR_HEIGHT}px`};
323
+ margin: ${({ expanded }) => expanded ? "0 4px 0 4px" : "0"};
324
+ padding: 0;
325
+ border: none;
326
+ box-shadow: none;
327
+ background-color: ${themes_exports.variables.backgroundColorNavigation};
328
+ border-radius: ${(props) => props.expanded ? "40px" : "0 0 0 20px"};
329
+ transition-property: border-radius, height, width, margin-right;
330
+ ${transition}
331
+ }
332
+ `;
333
+ var expandedIcon = /* @__PURE__ */ react_default.createElement(react_default.Fragment, null, /* @__PURE__ */ react_default.createElement(ChevronRight_default, { width: iconSize, height: iconSize }), /* @__PURE__ */ react_default.createElement(ScreenReaderContent_default, null, (0, i18n_exports._)("Expanded")));
334
+ var collapsedIcon = /* @__PURE__ */ react_default.createElement(react_default.Fragment, null, /* @__PURE__ */ react_default.createElement(ChevronLeft_default, { width: iconSize, height: iconSize }), /* @__PURE__ */ react_default.createElement(ScreenReaderContent_default, null, (0, i18n_exports._)("Collapsed")));
335
+ var DEFAULT_PRESET_MAP = Object.freeze({});
336
+ var CollapsibleToolbar = ({
337
+ preset = DEFAULT_PRESET_MAP,
338
+ dashboardApi,
339
+ initialExpanded = true,
340
+ mode = "view",
341
+ toolbarItems = []
342
+ }) => {
343
+ const apiRegistry = (0, dashboard_context_exports.useApiRegistry)();
344
+ const [expanded, setExpanded] = (0, react_exports.useState)(initialExpanded);
345
+ const handleExpandToggle = (0, react_exports.useCallback)(
346
+ () => setExpanded((prevExpanded) => !prevExpanded),
347
+ []
348
+ );
349
+ const layoutType = (0, dashboard_state_exports.useSelector)(dashboard_state_exports.selectLayoutType);
350
+ const injectedToolbarItems = (0, react_exports.useMemo)(
351
+ () => toolbarItems.map(
352
+ (item) => (0, react_exports.cloneElement)(item, {
353
+ mode,
354
+ preset,
355
+ layoutType,
356
+ dashboardApi,
357
+ borders: false
358
+ })
359
+ ),
360
+ [toolbarItems, mode, preset, dashboardApi, layoutType]
361
+ );
362
+ const ExpandButtonIcon = (0, react_exports.useMemo)(
363
+ () => expanded ? expandedIcon : collapsedIcon,
364
+ [expanded]
365
+ );
366
+ (0, react_exports.useEffect)(() => {
367
+ const toolbarApiRef = {
368
+ toggle: () => handleExpandToggle(),
369
+ expand: () => setExpanded(true),
370
+ collapse: () => setExpanded(false)
371
+ };
372
+ apiRegistry.registerToolbarApi(toolbarApiRef);
373
+ return () => {
374
+ apiRegistry.removeToolbarApi();
375
+ };
376
+ }, [apiRegistry, handleExpandToggle]);
377
+ return /* @__PURE__ */ react_default.createElement(ToolbarWrapper, { "data-test": "dashboard-toolbar" }, /* @__PURE__ */ react_default.createElement(StyledTransitionOpen, { animation: "slideFromRight", open: expanded }, /* @__PURE__ */ react_default.createElement(ToolbarItemsWrapper, { "data-test": "toolbar-items" }, injectedToolbarItems)), /* @__PURE__ */ react_default.createElement(
378
+ ExpandButton,
379
+ {
380
+ "data-test": "expand-button",
381
+ expanded,
382
+ onClick: handleExpandToggle,
383
+ icon: ExpandButtonIcon,
384
+ "data-clickable": true
385
+ }
386
+ ));
387
+ };
388
+ CollapsibleToolbar.displayName = "CollapsibleToolbar";
389
+ var CollapsibleToolbar_default = CollapsibleToolbar;
390
+
391
+ // esm-externals:@splunk/dashboard-utils
392
+ var dashboard_utils_exports = {};
393
+ __export(dashboard_utils_exports, {
394
+ default: () => dashboard_utils_default
395
+ });
396
+ var defaultImport13 = __toESM(require("@splunk/dashboard-utils"));
397
+ __reExport(dashboard_utils_exports, require("@splunk/dashboard-utils"));
398
+ var dashboard_utils_default = "default" in defaultImport13 ? defaultImport13.default : defaultImport13;
399
+
400
+ // src/components/ItemSeparator.tsx
401
+ var ItemSeparator = styled_components_default.div`
402
+ border-left-width: 1px;
403
+ border-left-style: solid;
404
+ border-left-color: ${themes_exports.variables.interactiveColorBorder};
405
+ width: 0px;
406
+ height: ${themes_exports.variables.inputHeight};
407
+ `;
408
+ var ItemSeparator_default = ItemSeparator;
409
+
410
+ // src/ItemGroup.tsx
411
+ var Group = styled_components_default.div.attrs({
412
+ "data-test": "toolbar-item-group"
413
+ })`
414
+ display: flex;
415
+ flex-direction: row;
416
+ gap: ${(props) => props.gap};
417
+ `;
418
+ var ItemGroup = (_a) => {
419
+ var _b = _a, {
420
+ children,
421
+ borders = true,
422
+ gap
423
+ } = _b, rest = __objRest(_b, [
424
+ "children",
425
+ "borders",
426
+ "gap"
427
+ ]);
428
+ const items = react_default.Children.map(
429
+ children,
430
+ (child) => child && react_default.cloneElement(child, rest)
431
+ );
432
+ const separator = borders ? /* @__PURE__ */ react_default.createElement(ItemSeparator_default, null) : null;
433
+ return /* @__PURE__ */ react_default.createElement(react_default.Fragment, null, /* @__PURE__ */ react_default.createElement(Group, { gap: (0, dashboard_utils_exports.toPx)(gap, 2) }, items), separator);
434
+ };
435
+ var ItemGroup_default = ItemGroup;
436
+
437
+ // src/PopoverItemButton.tsx
438
+ var StyledContentWrapper = styled_components_default.span`
439
+ display: flex;
440
+ flex-direction: row;
441
+ justify-content: left;
442
+ align-items: center;
443
+ max-width: 100%;
444
+ `;
445
+ var StyledIcon = styled_components_default.span`
446
+ display: inline-block;
447
+ padding-right: 8px;
448
+ `;
449
+ var StyledLabel = styled_components_default.span`
450
+ text-overflow: ellipsis;
451
+ overflow: hidden;
452
+ flex: 0 1 auto;
453
+ `;
454
+ var PopoverItemButton = ({ icon: icon9, label }) => /* @__PURE__ */ react_default.createElement(StyledContentWrapper, null, icon9 && /* @__PURE__ */ react_default.createElement(StyledIcon, null, icon9), label && /* @__PURE__ */ react_default.createElement(StyledLabel, { "data-test": "label-title" }, label));
455
+ var PopoverItemButton_default = PopoverItemButton;
456
+
457
+ // esm-externals:@splunk/themes/mixins
458
+ var mixins_exports = {};
459
+ __export(mixins_exports, {
460
+ default: () => mixins_default
461
+ });
462
+ var defaultImport14 = __toESM(require("@splunk/themes/mixins"));
463
+ __reExport(mixins_exports, require("@splunk/themes/mixins"));
464
+ var mixins_default = "default" in defaultImport14 ? defaultImport14.default : defaultImport14;
465
+
466
+ // src/Toolbar.tsx
467
+ var ToolbarWrapper2 = styled_components_default.div`
468
+ ${(0, mixins_exports.reset)("flex")};
469
+ justify-content: space-between;
470
+ color: ${themes_exports.variables.contentColorDefault};
471
+ padding: 5px 5px 5px 8px;
472
+ border-bottom-width: 1px;
473
+ border-bottom-style: solid;
474
+ border-bottom-color: ${themes_exports.variables.borderColor};
475
+ flex-wrap: wrap;
476
+ flex-shrink: 0;
477
+ background-color: ${themes_exports.variables.backgroundColorNavigation};
478
+ `;
479
+ var LeftAlignItems = styled_components_default.div`
480
+ flex-grow: 1;
481
+ display: flex;
482
+ flex-direction: row;
483
+ gap: ${themes_exports.variables.spacingSmall};
484
+ `;
485
+ var RightAlignItems = styled_components_default.div`
486
+ flex-basis: auto;
487
+ display: flex;
488
+ flex-direction: row;
489
+ gap: ${themes_exports.variables.spacingSmall};
490
+ margin-inline-end: ${themes_exports.variables.spacingSmall};
491
+ `;
492
+ var Toolbar = ({
493
+ activePanel,
494
+ dashboardApi,
495
+ mode,
496
+ preset,
497
+ toolbarItems
498
+ }) => {
499
+ const layoutType = (0, dashboard_state_exports.useSelector)(dashboard_state_exports.selectLayoutType);
500
+ const toolbarRef = (0, react_exports.useRef)(null);
501
+ const injectDashboardProps = (0, react_exports.useCallback)(
502
+ (items) => {
503
+ const buttonProps = {
504
+ activePanel,
505
+ dashboardApi,
506
+ layoutType,
507
+ mode,
508
+ preset
509
+ };
510
+ return items.map((item) => react_default.cloneElement(item, buttonProps));
511
+ },
512
+ [activePanel, dashboardApi, layoutType, mode, preset]
513
+ );
514
+ const leftAlignItems = (0, react_exports.useMemo)(() => {
515
+ const items = toolbarItems.filter(
516
+ (item) => {
517
+ var _a;
518
+ return ((_a = item.props) == null ? void 0 : _a.align) !== "right";
519
+ }
520
+ );
521
+ return injectDashboardProps(items);
522
+ }, [toolbarItems, injectDashboardProps]);
523
+ const rightAlignItems = (0, react_exports.useMemo)(() => {
524
+ const items = toolbarItems.filter(
525
+ (item) => {
526
+ var _a;
527
+ return ((_a = item.props) == null ? void 0 : _a.align) === "right";
528
+ }
529
+ );
530
+ return injectDashboardProps(items);
531
+ }, [toolbarItems, injectDashboardProps]);
532
+ const observerRef = (0, react_exports.useRef)(null);
533
+ const isFirstRender = (0, react_exports.useRef)(true);
534
+ (0, react_exports.useEffect)(() => {
535
+ if (isFirstRender.current) {
536
+ isFirstRender.current = false;
537
+ return void 0;
538
+ }
539
+ observerRef.current = new MutationObserver(() => {
540
+ var _a, _b;
541
+ const firstFocusableButton = (_a = toolbarRef.current) == null ? void 0 : _a.querySelector(
542
+ 'button:not([disabled]):not([aria-disabled="true"]):not([tabindex="-1"])'
543
+ );
544
+ firstFocusableButton == null ? void 0 : firstFocusableButton.focus();
545
+ (_b = observerRef.current) == null ? void 0 : _b.disconnect();
546
+ });
547
+ if (toolbarRef.current) {
548
+ observerRef.current.observe(toolbarRef.current, {
549
+ childList: true,
550
+ subtree: true
551
+ });
552
+ }
553
+ return () => {
554
+ var _a;
555
+ (_a = observerRef.current) == null ? void 0 : _a.disconnect();
556
+ };
557
+ }, [mode]);
558
+ if (!toolbarItems.length) {
559
+ return null;
560
+ }
561
+ return /* @__PURE__ */ react_default.createElement(ToolbarWrapper2, { "data-test": "dashboard-toolbar", ref: toolbarRef }, /* @__PURE__ */ react_default.createElement(LeftAlignItems, { key: "left-align-items", "data-test": "left-align-items" }, leftAlignItems), /* @__PURE__ */ react_default.createElement(
562
+ RightAlignItems,
563
+ {
564
+ key: "right-align-items",
565
+ "data-test": "right-align-items"
566
+ },
567
+ rightAlignItems
568
+ ));
569
+ };
570
+ Toolbar.displayName = "Toolbar";
571
+ var Toolbar_default = Toolbar;
572
+
573
+ // esm-externals:@splunk/react-ui/Dropdown
574
+ var Dropdown_exports = {};
575
+ __export(Dropdown_exports, {
576
+ default: () => Dropdown_default
577
+ });
578
+ var defaultImport15 = __toESM(require("@splunk/react-ui/Dropdown"));
579
+ __reExport(Dropdown_exports, require("@splunk/react-ui/Dropdown"));
580
+ var Dropdown_default = "default" in defaultImport15 ? defaultImport15.default : defaultImport15;
581
+
582
+ // esm-externals:@splunk/react-ui/Menu
583
+ var Menu_exports = {};
584
+ __export(Menu_exports, {
585
+ default: () => Menu_default
586
+ });
587
+ var defaultImport16 = __toESM(require("@splunk/react-ui/Menu"));
588
+ __reExport(Menu_exports, require("@splunk/react-ui/Menu"));
589
+ var Menu_default = "default" in defaultImport16 ? defaultImport16.default : defaultImport16;
590
+
591
+ // esm-externals:@splunk/react-icons/ChartColumn
592
+ var ChartColumn_exports = {};
593
+ __export(ChartColumn_exports, {
594
+ default: () => ChartColumn_default
595
+ });
596
+ var defaultImport17 = __toESM(require("@splunk/react-icons/ChartColumn"));
597
+ __reExport(ChartColumn_exports, require("@splunk/react-icons/ChartColumn"));
598
+ var ChartColumn_default = "default" in defaultImport17 ? defaultImport17.default : defaultImport17;
599
+
600
+ // esm-externals:@splunk/dashboard-ui
601
+ var dashboard_ui_exports = {};
602
+ __export(dashboard_ui_exports, {
603
+ default: () => dashboard_ui_default
604
+ });
605
+ var defaultImport18 = __toESM(require("@splunk/dashboard-ui"));
606
+ __reExport(dashboard_ui_exports, require("@splunk/dashboard-ui"));
607
+ var dashboard_ui_default = "default" in defaultImport18 ? defaultImport18.default : defaultImport18;
608
+
609
+ // src/hooks/useDropdown.ts
610
+ var useDropdown = ({
611
+ isContentClickClose = true
612
+ }) => {
613
+ const [isOpen, setIsOpen] = (0, react_exports.useState)(false);
614
+ const hasChildModal = (0, react_exports.useRef)(false);
615
+ const handleRequestClose = (0, react_exports.useCallback)(
616
+ ({ reason }) => {
617
+ if (reason === "contentClick" && !isContentClickClose) {
618
+ return;
619
+ }
620
+ if (reason === "escapeKey" && hasChildModal.current) {
621
+ return;
622
+ }
623
+ setIsOpen(false);
624
+ },
625
+ [isContentClickClose]
626
+ );
627
+ const handleRequestOpen = (0, react_exports.useCallback)(() => {
628
+ setIsOpen(true);
629
+ }, []);
630
+ const handleForceClose = (0, react_exports.useCallback)(() => {
631
+ setIsOpen(false);
632
+ }, []);
633
+ const setHasChildModal = (0, react_exports.useCallback)((value) => {
634
+ hasChildModal.current = value;
635
+ }, []);
636
+ return {
637
+ isOpen,
638
+ handleRequestOpen,
639
+ handleRequestClose,
640
+ handleForceClose,
641
+ setHasChildModal
642
+ };
643
+ };
644
+ var useDropdown_default = useDropdown;
645
+
646
+ // src/components/StyledButton.tsx
647
+ var StyledDropdownButton = styled_components_default(Button_default)`
648
+ max-width: '50px';
649
+ `;
650
+
651
+ // src/buttons/Charts.tsx
652
+ var ScrollableMenu = styled_components_default(Menu_default).attrs(
653
+ ({ maxHeight }) => ({
654
+ style: {
655
+ maxHeight: maxHeight != null ? maxHeight : void 0
656
+ }
657
+ })
658
+ )`
659
+ overflow-y: auto;
660
+ `;
661
+ var chartsDropdown = prepareIcon({
662
+ Icon: ChartColumn_default,
663
+ isMenu: true,
664
+ screenReaderContent: (0, i18n_exports._)("Add chart")
665
+ });
666
+ var ButtonToggle = /* @__PURE__ */ react_default.createElement(
667
+ StyledDropdownButton,
668
+ {
669
+ "data-test": "charts-button",
670
+ "data-clickable": true,
671
+ appearance: "subtle",
672
+ icon: chartsDropdown
673
+ }
674
+ );
675
+ var focusToggleReasons = [];
676
+ var getVisualizationListFromTaxonomy = ({
677
+ taxonomy,
678
+ handleCreateVisualization
679
+ }) => taxonomy.reduce(
680
+ (list, { visualizations, category }) => {
681
+ const availableVisualizations = visualizations.filter((props) => props.includeInToolbar);
682
+ if (availableVisualizations.length === 0) {
683
+ return list;
684
+ }
685
+ list.push(/* @__PURE__ */ react_default.createElement(Menu_default.Divider, { key: `menu-divider-${category}` }));
686
+ return list.concat(
687
+ availableVisualizations.map((vizProps) => {
688
+ const { label, type, initialOptions } = vizProps;
689
+ const Icon = vizProps.icon;
690
+ if (!type) {
691
+ return null;
692
+ }
693
+ const onClick = handleCreateVisualization({
694
+ type,
695
+ options: initialOptions
696
+ });
697
+ return /* @__PURE__ */ react_default.createElement(
698
+ Menu_default.Item,
699
+ {
700
+ "data-test": `add-${type}-button`,
701
+ "data-test-clickable": true,
702
+ onClick,
703
+ startAdornment: !!Icon && /* @__PURE__ */ react_default.createElement(Icon, { size: "18px" }),
704
+ key: `add-${type}-button`
705
+ },
706
+ label
707
+ );
708
+ })
709
+ );
710
+ },
711
+ []
712
+ );
713
+ var Charts = ({ dashboardApi, preset }) => {
714
+ const { showNewDataForViz = true } = (0, dashboard_context_exports.useFeatureFlags)();
715
+ const { family } = (0, themes_exports.useSplunkTheme)();
716
+ const { handleForceClose, handleRequestClose, handleRequestOpen, isOpen } = useDropdown_default({
717
+ isContentClickClose: false
718
+ });
719
+ const taxonomy = (0, react_exports.useMemo)(
720
+ () => new dashboard_ui_exports.VisualizationFilter(preset).taxonomy,
721
+ [preset]
722
+ );
723
+ const handleCreateVisualization = (0, react_exports.useCallback)(
724
+ ({
725
+ type,
726
+ options
727
+ }) => () => {
728
+ (0, dashboard_state_exports.batch)(() => {
729
+ dashboardApi == null ? void 0 : dashboardApi.createVisualization({
730
+ visualizationDefinition: { type, options }
731
+ });
732
+ if (showNewDataForViz) {
733
+ dashboardApi == null ? void 0 : dashboardApi.openPanel({
734
+ activePanel: "connectData",
735
+ panelProps: {
736
+ bindingType: "primary",
737
+ from: {
738
+ activePanel: "config"
739
+ }
740
+ }
741
+ });
742
+ }
743
+ });
744
+ handleForceClose();
745
+ },
746
+ [dashboardApi, showNewDataForViz, handleForceClose]
747
+ );
748
+ const visualizationList = (0, react_exports.useMemo)(
749
+ () => getVisualizationListFromTaxonomy({
750
+ taxonomy,
751
+ handleCreateVisualization
752
+ }),
753
+ [taxonomy, handleCreateVisualization]
754
+ );
755
+ const renderScrollableMenu = (0, react_exports.useCallback)(
756
+ ({ maxHeight }) => /* @__PURE__ */ react_default.createElement(
757
+ themes_exports.SplunkThemeProvider,
758
+ {
759
+ density: family === "enterprise" ? "comfortable" : "compact"
760
+ },
761
+ /* @__PURE__ */ react_default.createElement(
762
+ ScrollableMenu,
763
+ {
764
+ maxHeight,
765
+ "data-test": "add-chart-menu"
766
+ },
767
+ visualizationList
768
+ )
769
+ ),
770
+ [family, visualizationList]
771
+ );
772
+ return /* @__PURE__ */ react_default.createElement(Item_default, null, /* @__PURE__ */ react_default.createElement(
773
+ Dropdown_default,
774
+ {
775
+ focusToggleReasons,
776
+ onRequestClose: handleRequestClose,
777
+ onRequestOpen: handleRequestOpen,
778
+ open: isOpen,
779
+ toggle: ButtonToggle
780
+ },
781
+ renderScrollableMenu
782
+ ));
783
+ };
784
+ var Charts_default = Charts;
785
+
786
+ // esm-externals:@splunk/react-icons/Cog
787
+ var Cog_exports = {};
788
+ __export(Cog_exports, {
789
+ default: () => Cog_default
790
+ });
791
+ var defaultImport19 = __toESM(require("@splunk/react-icons/Cog"));
792
+ __reExport(Cog_exports, require("@splunk/react-icons/Cog"));
793
+ var Cog_default = "default" in defaultImport19 ? defaultImport19.default : defaultImport19;
794
+
795
+ // src/buttons/Config.tsx
796
+ var configurationIcon = prepareIcon({
797
+ Icon: Cog_default,
798
+ screenReaderContent: (0, i18n_exports._)("Configuration")
799
+ });
800
+ var Config = ({ dashboardApi }) => {
801
+ const configButtonRef = (0, dashboard_context_exports.useToolbarRef)("config");
802
+ const handleClick = (0, react_exports.useCallback)(() => {
803
+ const isOpen = (dashboardApi == null ? void 0 : dashboardApi.getOpenedPanel()) === "config";
804
+ if (isOpen) {
805
+ dashboardApi == null ? void 0 : dashboardApi.closePanel();
806
+ } else {
807
+ dashboardApi == null ? void 0 : dashboardApi.openPanel({
808
+ activePanel: "config",
809
+ panelProps: {
810
+ focusOnOpen: true
811
+ }
812
+ });
813
+ }
814
+ }, [dashboardApi]);
815
+ return /* @__PURE__ */ react_default.createElement(
816
+ IconButton_default,
817
+ {
818
+ buttonRef: configButtonRef,
819
+ testLabel: "config-button",
820
+ onClick: handleClick,
821
+ icon: configurationIcon
822
+ }
823
+ );
824
+ };
825
+ var Config_default = Config;
826
+
827
+ // esm-externals:@splunk/react-icons/ArrowBroadUnderbarDown
828
+ var ArrowBroadUnderbarDown_exports = {};
829
+ __export(ArrowBroadUnderbarDown_exports, {
830
+ default: () => ArrowBroadUnderbarDown_default
831
+ });
832
+ var defaultImport20 = __toESM(require("@splunk/react-icons/ArrowBroadUnderbarDown"));
833
+ __reExport(ArrowBroadUnderbarDown_exports, require("@splunk/react-icons/ArrowBroadUnderbarDown"));
834
+ var ArrowBroadUnderbarDown_default = "default" in defaultImport20 ? defaultImport20.default : defaultImport20;
835
+
836
+ // src/buttons/ContentExport.tsx
837
+ var icon = prepareIcon({
838
+ Icon: ArrowBroadUnderbarDown_default,
839
+ screenReaderContent: (0, i18n_exports._)("Export")
840
+ });
841
+ var ContentExport = ({ disabled, onClick }) => /* @__PURE__ */ react_default.createElement(
842
+ IconButton_default,
843
+ {
844
+ testLabel: "content-export-button",
845
+ onClick,
846
+ disabled: !!disabled,
847
+ icon
848
+ }
849
+ );
850
+ var ContentExport_default = ContentExport;
851
+
852
+ // esm-externals:@splunk/react-icons/CylinderMulti
853
+ var CylinderMulti_exports = {};
854
+ __export(CylinderMulti_exports, {
855
+ default: () => CylinderMulti_default
856
+ });
857
+ var defaultImport21 = __toESM(require("@splunk/react-icons/CylinderMulti"));
858
+ __reExport(CylinderMulti_exports, require("@splunk/react-icons/CylinderMulti"));
859
+ var CylinderMulti_default = "default" in defaultImport21 ? defaultImport21.default : defaultImport21;
860
+
861
+ // src/buttons/Data.tsx
862
+ var dataInputIcon = prepareIcon({
863
+ Icon: CylinderMulti_default,
864
+ screenReaderContent: (0, i18n_exports._)("Data source overview")
865
+ });
866
+ var Data = ({ dashboardApi }) => {
867
+ const dataButtonRef = (0, dashboard_context_exports.useToolbarRef)("dataOverview");
868
+ const handleClick = (0, react_exports.useCallback)(() => {
869
+ const isOpen = (dashboardApi == null ? void 0 : dashboardApi.getOpenedPanel()) === "dataOverview";
870
+ if (isOpen) {
871
+ dashboardApi.closePanel();
872
+ } else {
873
+ (0, dashboard_state_exports.batch)(() => {
874
+ dashboardApi == null ? void 0 : dashboardApi.selectVisualization([]);
875
+ dashboardApi == null ? void 0 : dashboardApi.openPanel({
876
+ activePanel: "dataOverview",
877
+ panelProps: {
878
+ focusOnOpen: true
879
+ }
880
+ });
881
+ });
882
+ }
883
+ }, [dashboardApi]);
884
+ return /* @__PURE__ */ react_default.createElement(
885
+ IconButton_default,
886
+ {
887
+ buttonRef: dataButtonRef,
888
+ testLabel: "data-button",
889
+ onClick: handleClick,
890
+ icon: dataInputIcon
891
+ }
892
+ );
893
+ };
894
+ var Data_default = Data;
895
+
896
+ // esm-externals:@splunk/react-icons/Square
897
+ var Square_exports = {};
898
+ __export(Square_exports, {
899
+ default: () => Square_default
900
+ });
901
+ var defaultImport22 = __toESM(require("@splunk/react-icons/Square"));
902
+ __reExport(Square_exports, require("@splunk/react-icons/Square"));
903
+ var Square_default = "default" in defaultImport22 ? defaultImport22.default : defaultImport22;
904
+
905
+ // src/buttons/EmptyVisualization.tsx
906
+ var icon2 = prepareIcon({
907
+ Icon: Square_default,
908
+ screenReaderContent: (0, i18n_exports._)("Add rectangle")
909
+ });
910
+ var EmptyVisualization = ({ dashboardApi }) => {
911
+ const handleClick = (0, react_exports.useCallback)(() => __async(void 0, null, function* () {
912
+ dashboardApi == null ? void 0 : dashboardApi.createVisualization({
913
+ visualizationDefinition: {
914
+ type: "splunk.rectangle",
915
+ options: {
916
+ fillColor: "transparent",
917
+ strokeColor: "transparent"
918
+ }
919
+ }
920
+ });
921
+ dashboardApi == null ? void 0 : dashboardApi.openPanel({
922
+ activePanel: "config"
923
+ });
924
+ }), [dashboardApi]);
925
+ return /* @__PURE__ */ react_default.createElement(
926
+ IconButton_default,
927
+ {
928
+ testLabel: "empty-viz-button",
929
+ onClick: handleClick,
930
+ icon: icon2
931
+ }
932
+ );
933
+ };
934
+ var EmptyVisualization_default = EmptyVisualization;
935
+
936
+ // src/buttons/ExportDashboardButton.tsx
937
+ var downloadIcon = /* @__PURE__ */ react_default.createElement(ArrowBroadUnderbarDown_default, null);
938
+ var ExportDashboardButton = ({
939
+ appearance = "secondary",
940
+ scale = 1
941
+ }) => {
942
+ const [open, setOpen] = (0, react_exports.useState)(false);
943
+ const handleOpen = (0, react_exports.useCallback)(() => {
944
+ setOpen(true);
945
+ }, []);
946
+ const handleClose = (0, react_exports.useCallback)(() => {
947
+ setOpen(false);
948
+ }, []);
949
+ return /* @__PURE__ */ react_default.createElement(react_default.Fragment, null, /* @__PURE__ */ react_default.createElement(
950
+ Button_default,
951
+ {
952
+ icon: downloadIcon,
953
+ key: "export-dashboard-button",
954
+ "data-clickable": true,
955
+ "data-test": "export-dashboard-button",
956
+ label: (0, i18n_exports._)("Download"),
957
+ appearance: appearance || "secondary",
958
+ onClick: handleOpen
959
+ }
960
+ ), /* @__PURE__ */ react_default.createElement(
961
+ dashboard_ui_exports.ExportDashboardModal,
962
+ {
963
+ open,
964
+ onModalClose: handleClose,
965
+ scale,
966
+ returnFocus: dashboard_utils_exports.noop
967
+ }
968
+ ));
969
+ };
970
+ var ExportDashboardButton_default = ExportDashboardButton;
971
+
972
+ // esm-externals:@splunk/react-icons/ChevronsOut
973
+ var ChevronsOut_exports = {};
974
+ __export(ChevronsOut_exports, {
975
+ default: () => ChevronsOut_default
976
+ });
977
+ var defaultImport23 = __toESM(require("@splunk/react-icons/ChevronsOut"));
978
+ __reExport(ChevronsOut_exports, require("@splunk/react-icons/ChevronsOut"));
979
+ var ChevronsOut_default = "default" in defaultImport23 ? defaultImport23.default : defaultImport23;
980
+
981
+ // src/buttons/Fullscreen.tsx
982
+ var icon3 = prepareIcon({
983
+ Icon: ChevronsOut_default,
984
+ screenReaderContent: (0, i18n_exports._)("Fullscreen")
985
+ });
986
+ var FullScreen = ({ dashboardApi }) => {
987
+ const isFullscreen = !!(0, dashboard_state_exports.useSelector)(dashboard_state_exports.selectFullscreenElement);
988
+ const handleClick = (0, react_exports.useCallback)(() => {
989
+ dashboardApi == null ? void 0 : dashboardApi.enterFullscreen();
990
+ }, [dashboardApi]);
991
+ return /* @__PURE__ */ react_default.createElement(
992
+ IconButton_default,
993
+ {
994
+ testLabel: "fullscreen-button",
995
+ onClick: handleClick,
996
+ disabled: isFullscreen,
997
+ icon: icon3
998
+ }
999
+ );
1000
+ };
1001
+ var Fullscreen_default = FullScreen;
1002
+
1003
+ // esm-externals:@splunk/react-ui/Switch
1004
+ var Switch_exports = {};
1005
+ __export(Switch_exports, {
1006
+ default: () => Switch_default
1007
+ });
1008
+ var defaultImport24 = __toESM(require("@splunk/react-ui/Switch"));
1009
+ __reExport(Switch_exports, require("@splunk/react-ui/Switch"));
1010
+ var Switch_default = "default" in defaultImport24 ? defaultImport24.default : defaultImport24;
1011
+
1012
+ // src/buttons/GridLineSwitch.tsx
1013
+ var SwitchContainer = styled_components_default.div`
1014
+ display: flex;
1015
+ align-items: center;
1016
+ flex-direction: row;
1017
+ gap: ${themes_exports.variables.spacingSmall};
1018
+ `;
1019
+ var GridLineSwitch = ({
1020
+ dashboardApi,
1021
+ mode,
1022
+ showSeparator,
1023
+ layoutType
1024
+ }) => {
1025
+ var _a;
1026
+ const showGrid = (_a = (0, dashboard_state_exports.useSelector)(dashboard_state_exports.selectAreGridLinesEnabled)) != null ? _a : false;
1027
+ const handleClick = (0, react_exports.useCallback)(() => {
1028
+ dashboardApi == null ? void 0 : dashboardApi.toggleGridLines(!showGrid);
1029
+ }, [dashboardApi, showGrid]);
1030
+ const separator = (0, react_exports.useMemo)(
1031
+ () => showSeparator ? /* @__PURE__ */ react_default.createElement(ItemSeparator_default, { key: "item-separator" }) : null,
1032
+ [showSeparator]
1033
+ );
1034
+ if (!dashboardApi || mode !== "edit" || layoutType === "grid") {
1035
+ return null;
1036
+ }
1037
+ return /* @__PURE__ */ react_default.createElement(SwitchContainer, { key: "grid-line-switch" }, /* @__PURE__ */ react_default.createElement(
1038
+ Switch_default,
1039
+ {
1040
+ onClick: handleClick,
1041
+ selected: showGrid,
1042
+ selectedLabel: (0, i18n_exports._)("Gridlines displayed"),
1043
+ unselectedLabel: (0, i18n_exports._)("Gridlines not displayed"),
1044
+ appearance: "toggle",
1045
+ "data-test": "gridline-toggle",
1046
+ "data-clickable": true
1047
+ },
1048
+ (0, i18n_exports._)("Gridlines")
1049
+ ), separator);
1050
+ };
1051
+ var GridLineSwitch_default = GridLineSwitch;
1052
+
1053
+ // esm-externals:@splunk/react-icons/ChartSingleValueIcon
1054
+ var ChartSingleValueIcon_exports = {};
1055
+ __export(ChartSingleValueIcon_exports, {
1056
+ default: () => ChartSingleValueIcon_default
1057
+ });
1058
+ var defaultImport25 = __toESM(require("@splunk/react-icons/ChartSingleValueIcon"));
1059
+ __reExport(ChartSingleValueIcon_exports, require("@splunk/react-icons/ChartSingleValueIcon"));
1060
+ var ChartSingleValueIcon_default = "default" in defaultImport25 ? defaultImport25.default : defaultImport25;
1061
+
1062
+ // src/buttons/IconGallery.tsx
1063
+ var MenusContainer = styled_components_default.div`
1064
+ display: flex;
1065
+ padding: 5px;
1066
+ `;
1067
+ var iconGalleryDropdown = prepareIcon({
1068
+ Icon: ChartSingleValueIcon_default,
1069
+ screenReaderContent: (0, i18n_exports._)("Add icon"),
1070
+ isMenu: true
1071
+ });
1072
+ var focusToggleReasons2 = [];
1073
+ var IconGallery = ({ dashboardApi }) => {
1074
+ const {
1075
+ handleForceClose,
1076
+ handleRequestClose,
1077
+ handleRequestOpen,
1078
+ setHasChildModal,
1079
+ isOpen
1080
+ } = useDropdown_default({
1081
+ isContentClickClose: false
1082
+ });
1083
+ const ButtonToggle6 = (0, react_exports.useMemo)(
1084
+ () => /* @__PURE__ */ react_default.createElement(
1085
+ StyledDropdownButton,
1086
+ {
1087
+ "data-test": "icon-gallery-button",
1088
+ "data-clickable": true,
1089
+ appearance: "subtle",
1090
+ icon: iconGalleryDropdown
1091
+ }
1092
+ ),
1093
+ []
1094
+ );
1095
+ const handlePanelClick = (0, react_exports.useCallback)(
1096
+ (iconURL) => __async(void 0, null, function* () {
1097
+ dashboardApi == null ? void 0 : dashboardApi.createVisualization({
1098
+ visualizationDefinition: {
1099
+ type: "splunk.singlevalueicon",
1100
+ options: {
1101
+ showValue: false,
1102
+ icon: iconURL
1103
+ }
1104
+ }
1105
+ });
1106
+ dashboardApi == null ? void 0 : dashboardApi.openPanel({
1107
+ activePanel: "config"
1108
+ });
1109
+ handleForceClose();
1110
+ }),
1111
+ [dashboardApi, handleForceClose]
1112
+ );
1113
+ return /* @__PURE__ */ react_default.createElement(Item_default, null, /* @__PURE__ */ react_default.createElement(
1114
+ Dropdown_default,
1115
+ {
1116
+ focusToggleReasons: focusToggleReasons2,
1117
+ onRequestClose: handleRequestClose,
1118
+ onRequestOpen: handleRequestOpen,
1119
+ open: isOpen,
1120
+ toggle: ButtonToggle6
1121
+ },
1122
+ /* @__PURE__ */ react_default.createElement(MenusContainer, { "data-test": "icon-menu", "data-open": isOpen }, /* @__PURE__ */ react_default.createElement(
1123
+ dashboard_ui_exports.IconGallery,
1124
+ {
1125
+ onClick: handlePanelClick,
1126
+ setHasChildModal
1127
+ }
1128
+ ))
1129
+ ));
1130
+ };
1131
+ var IconGallery_default = IconGallery;
1132
+
1133
+ // esm-externals:@splunk/react-icons/QuestionCircle
1134
+ var QuestionCircle_exports = {};
1135
+ __export(QuestionCircle_exports, {
1136
+ default: () => QuestionCircle_default
1137
+ });
1138
+ var defaultImport26 = __toESM(require("@splunk/react-icons/QuestionCircle"));
1139
+ __reExport(QuestionCircle_exports, require("@splunk/react-icons/QuestionCircle"));
1140
+ var QuestionCircle_default = "default" in defaultImport26 ? defaultImport26.default : defaultImport26;
1141
+
1142
+ // src/buttons/HelpButton.tsx
1143
+ var focusToggleReasons3 = [];
1144
+ var HelpIcon = prepareIcon({
1145
+ Icon: QuestionCircle_default,
1146
+ screenReaderContent: (0, i18n_exports._)("Help links"),
1147
+ isMenu: true
1148
+ });
1149
+ var ButtonToggle2 = /* @__PURE__ */ react_default.createElement(
1150
+ StyledDropdownButton,
1151
+ {
1152
+ appearance: "subtle",
1153
+ "data-clickable": true,
1154
+ "data-test": "help-button",
1155
+ icon: HelpIcon
1156
+ }
1157
+ );
1158
+ var HelpButton = ({ helpLinks = [] }) => {
1159
+ const { handleRequestClose, handleRequestOpen, isOpen } = useDropdown_default({
1160
+ isContentClickClose: true
1161
+ });
1162
+ const HelpLinks = (0, react_exports.useMemo)(() => {
1163
+ if (helpLinks.length === 0) {
1164
+ return [
1165
+ /* @__PURE__ */ react_default.createElement(
1166
+ Menu_default.Item,
1167
+ {
1168
+ "data-test": "no-links-provided",
1169
+ key: "no-links-provided",
1170
+ disabled: true
1171
+ },
1172
+ (0, i18n_exports._)("No Links")
1173
+ )
1174
+ ];
1175
+ }
1176
+ return helpLinks.map((link) => {
1177
+ const { label = "", description = "", url } = link;
1178
+ const key = label.replace(/\s/g, "");
1179
+ return /* @__PURE__ */ react_default.createElement(
1180
+ Menu_default.Item,
1181
+ {
1182
+ "data-test": "help-link",
1183
+ "data-test-clickable": true,
1184
+ to: url,
1185
+ description,
1186
+ key: `help-link-${key}`,
1187
+ openInNewContext: true
1188
+ },
1189
+ label
1190
+ );
1191
+ });
1192
+ }, [helpLinks]);
1193
+ return /* @__PURE__ */ react_default.createElement(Item_default, null, /* @__PURE__ */ react_default.createElement(
1194
+ Dropdown_default,
1195
+ {
1196
+ focusToggleReasons: focusToggleReasons3,
1197
+ onRequestClose: handleRequestClose,
1198
+ onRequestOpen: handleRequestOpen,
1199
+ open: isOpen,
1200
+ toggle: ButtonToggle2
1201
+ },
1202
+ /* @__PURE__ */ react_default.createElement(Menu_default, null, HelpLinks)
1203
+ ));
1204
+ };
1205
+ var HelpButton_default = HelpButton;
1206
+
1207
+ // esm-externals:@splunk/react-icons/Picture
1208
+ var Picture_exports = {};
1209
+ __export(Picture_exports, {
1210
+ default: () => Picture_default
1211
+ });
1212
+ var defaultImport27 = __toESM(require("@splunk/react-icons/Picture"));
1213
+ __reExport(Picture_exports, require("@splunk/react-icons/Picture"));
1214
+ var Picture_default = "default" in defaultImport27 ? defaultImport27.default : defaultImport27;
1215
+
1216
+ // src/buttons/Image.tsx
1217
+ var icon4 = prepareIcon({
1218
+ Icon: Picture_default,
1219
+ screenReaderContent: (0, i18n_exports._)("Add image")
1220
+ });
1221
+ var Image = ({ dashboardApi }) => {
1222
+ const handleClick = (0, react_exports.useCallback)(() => __async(void 0, null, function* () {
1223
+ dashboardApi == null ? void 0 : dashboardApi.createVisualization({
1224
+ visualizationDefinition: {
1225
+ type: "splunk.image",
1226
+ options: {
1227
+ preserveAspectRatio: true
1228
+ }
1229
+ }
1230
+ });
1231
+ dashboardApi == null ? void 0 : dashboardApi.openPanel({
1232
+ activePanel: "config"
1233
+ });
1234
+ }), [dashboardApi]);
1235
+ return /* @__PURE__ */ react_default.createElement(
1236
+ IconButton_default,
1237
+ {
1238
+ testLabel: "image-button",
1239
+ onClick: handleClick,
1240
+ icon: icon4
1241
+ }
1242
+ );
1243
+ };
1244
+ var Image_default = Image;
1245
+
1246
+ // src/buttons/ImageGallery.tsx
1247
+ var MenusContainer2 = styled_components_default.div`
1248
+ display: flex;
1249
+ padding: 5px;
1250
+ `;
1251
+ var imageGalleryDropdown = prepareIcon({
1252
+ Icon: Picture_default,
1253
+ screenReaderContent: (0, i18n_exports._)("Add image"),
1254
+ isMenu: true
1255
+ });
1256
+ var ButtonToggle3 = /* @__PURE__ */ react_default.createElement(
1257
+ StyledDropdownButton,
1258
+ {
1259
+ "data-test": "image-gallery-button",
1260
+ "data-clickable": true,
1261
+ appearance: "subtle",
1262
+ icon: imageGalleryDropdown
1263
+ }
1264
+ );
1265
+ var focusToggleReasons4 = [];
1266
+ var ImageGallery = ({ dashboardApi }) => {
1267
+ const {
1268
+ handleForceClose,
1269
+ handleRequestClose,
1270
+ handleRequestOpen,
1271
+ setHasChildModal,
1272
+ isOpen
1273
+ } = useDropdown_default({
1274
+ isContentClickClose: false
1275
+ });
1276
+ const handlePanelClick = (0, react_exports.useCallback)(
1277
+ (imageUrl) => __async(void 0, null, function* () {
1278
+ dashboardApi == null ? void 0 : dashboardApi.createVisualization({
1279
+ visualizationDefinition: {
1280
+ type: "splunk.image",
1281
+ options: {
1282
+ preserveAspectRatio: true,
1283
+ src: imageUrl
1284
+ }
1285
+ }
1286
+ });
1287
+ dashboardApi == null ? void 0 : dashboardApi.openPanel({
1288
+ activePanel: "config"
1289
+ });
1290
+ handleForceClose();
1291
+ }),
1292
+ [dashboardApi, handleForceClose]
1293
+ );
1294
+ return /* @__PURE__ */ react_default.createElement(Item_default, null, /* @__PURE__ */ react_default.createElement(
1295
+ Dropdown_default,
1296
+ {
1297
+ focusToggleReasons: focusToggleReasons4,
1298
+ onRequestClose: handleRequestClose,
1299
+ onRequestOpen: handleRequestOpen,
1300
+ open: isOpen,
1301
+ toggle: ButtonToggle3
1302
+ },
1303
+ /* @__PURE__ */ react_default.createElement(MenusContainer2, null, /* @__PURE__ */ react_default.createElement(
1304
+ dashboard_ui_exports.ImageGallery,
1305
+ {
1306
+ onClick: handlePanelClick,
1307
+ setHasChildModal
1308
+ }
1309
+ ))
1310
+ ));
1311
+ };
1312
+ var ImageGallery_default = ImageGallery;
1313
+
1314
+ // esm-externals:lodash
1315
+ var lodash_exports = {};
1316
+ __export(lodash_exports, {
1317
+ default: () => lodash_default
1318
+ });
1319
+ var defaultImport28 = __toESM(require("lodash"));
1320
+ __reExport(lodash_exports, require("lodash"));
1321
+ var lodash_default = "default" in defaultImport28 ? defaultImport28.default : defaultImport28;
1322
+
1323
+ // esm-externals:@splunk/react-icons/SlidersTripleHorizontal
1324
+ var SlidersTripleHorizontal_exports = {};
1325
+ __export(SlidersTripleHorizontal_exports, {
1326
+ default: () => SlidersTripleHorizontal_default
1327
+ });
1328
+ var defaultImport29 = __toESM(require("@splunk/react-icons/SlidersTripleHorizontal"));
1329
+ __reExport(SlidersTripleHorizontal_exports, require("@splunk/react-icons/SlidersTripleHorizontal"));
1330
+ var SlidersTripleHorizontal_default = "default" in defaultImport29 ? defaultImport29.default : defaultImport29;
1331
+
1332
+ // esm-externals:@splunk/dashboard-definition
1333
+ var dashboard_definition_exports = {};
1334
+ __export(dashboard_definition_exports, {
1335
+ default: () => dashboard_definition_default
1336
+ });
1337
+ var defaultImport30 = __toESM(require("@splunk/dashboard-definition"));
1338
+ __reExport(dashboard_definition_exports, require("@splunk/dashboard-definition"));
1339
+ var dashboard_definition_default = "default" in defaultImport30 ? defaultImport30.default : defaultImport30;
1340
+
1341
+ // src/buttons/Inputs.tsx
1342
+ var focusToggleReasons5 = [];
1343
+ var DEFAULT_PRESET_MAP2 = Object.freeze({});
1344
+ var addInputIcon = prepareIcon({
1345
+ Icon: SlidersTripleHorizontal_default,
1346
+ screenReaderContent: (0, i18n_exports._)("Add input"),
1347
+ isMenu: true
1348
+ });
1349
+ var ButtonToggle4 = /* @__PURE__ */ react_default.createElement(
1350
+ StyledDropdownButton,
1351
+ {
1352
+ appearance: "subtle",
1353
+ "data-clickable": true,
1354
+ "data-test": "inputs-button",
1355
+ icon: addInputIcon
1356
+ }
1357
+ );
1358
+ var onCreateInputClickFactory = ({
1359
+ type,
1360
+ defaultConfig,
1361
+ tokenPrefix,
1362
+ showToken,
1363
+ dashboardApi
1364
+ }) => () => {
1365
+ if (!dashboardApi) {
1366
+ return;
1367
+ }
1368
+ const newConfig = __spreadProps(__spreadValues({}, defaultConfig), {
1369
+ type,
1370
+ options: __spreadValues({}, defaultConfig.options)
1371
+ });
1372
+ if (showToken) {
1373
+ newConfig.options.token = dashboard_definition_exports.DashboardDefinition.fromJSON(
1374
+ dashboardApi == null ? void 0 : dashboardApi.getDefinition()
1375
+ ).nextTokenId(tokenPrefix);
1376
+ }
1377
+ dashboardApi.addInput(newConfig);
1378
+ dashboardApi.openPanel({ activePanel: "config" });
1379
+ };
1380
+ var Inputs = ({
1381
+ dashboardApi,
1382
+ preset = DEFAULT_PRESET_MAP2
1383
+ }) => {
1384
+ const { handleRequestClose, handleRequestOpen, isOpen } = useDropdown_default({
1385
+ isContentClickClose: true
1386
+ });
1387
+ const InputTypeButtons = (0, react_exports.useMemo)(() => {
1388
+ const buttons = [];
1389
+ const inputs = preset == null ? void 0 : preset.inputs;
1390
+ (0, lodash_exports.each)(inputs, (InputImpl, type) => {
1391
+ const {
1392
+ baseShape = {},
1393
+ label = (0, i18n_exports._)(`${type} Input`),
1394
+ description = "",
1395
+ tokenPrefix = "token",
1396
+ includeInToolbar = true,
1397
+ icon: Icon = SlidersTripleHorizontal_default,
1398
+ // showToken flags whether or not the input has a token assigned on creation
1399
+ showToken = true
1400
+ } = InputImpl.config || {};
1401
+ if (!includeInToolbar) {
1402
+ return;
1403
+ }
1404
+ const handleClick = onCreateInputClickFactory({
1405
+ type,
1406
+ defaultConfig: baseShape,
1407
+ tokenPrefix,
1408
+ showToken,
1409
+ dashboardApi
1410
+ });
1411
+ const inputIcon = /* @__PURE__ */ react_default.createElement(Icon, { width: "24px", height: "24px" });
1412
+ buttons.push(
1413
+ /* @__PURE__ */ react_default.createElement(
1414
+ Menu_default.Item,
1415
+ {
1416
+ "data-test": `add-${type}-button`,
1417
+ "data-test-clickable": true,
1418
+ onClick: handleClick,
1419
+ startAdornment: inputIcon,
1420
+ description,
1421
+ key: `add-${type}-button`
1422
+ },
1423
+ label
1424
+ )
1425
+ );
1426
+ });
1427
+ if (buttons.length === 0) {
1428
+ buttons.push(
1429
+ /* @__PURE__ */ react_default.createElement(
1430
+ Menu_default.Item,
1431
+ {
1432
+ "data-test": "no-inputs-in-preset",
1433
+ key: "no-inputs-in-preset",
1434
+ disabled: true
1435
+ },
1436
+ (0, i18n_exports._)("No Inputs")
1437
+ )
1438
+ );
1439
+ }
1440
+ return buttons;
1441
+ }, [preset, dashboardApi]);
1442
+ return /* @__PURE__ */ react_default.createElement(Item_default, null, /* @__PURE__ */ react_default.createElement(
1443
+ Dropdown_default,
1444
+ {
1445
+ focusToggleReasons: focusToggleReasons5,
1446
+ onRequestClose: handleRequestClose,
1447
+ onRequestOpen: handleRequestOpen,
1448
+ open: isOpen,
1449
+ toggle: ButtonToggle4
1450
+ },
1451
+ /* @__PURE__ */ react_default.createElement(Menu_default, null, InputTypeButtons)
1452
+ ));
1453
+ };
1454
+ var Inputs_default = Inputs;
1455
+
1456
+ // esm-externals:@splunk/react-icons/Markdown
1457
+ var Markdown_exports = {};
1458
+ __export(Markdown_exports, {
1459
+ default: () => Markdown_default
1460
+ });
1461
+ var defaultImport31 = __toESM(require("@splunk/react-icons/Markdown"));
1462
+ __reExport(Markdown_exports, require("@splunk/react-icons/Markdown"));
1463
+ var Markdown_default = "default" in defaultImport31 ? defaultImport31.default : defaultImport31;
1464
+
1465
+ // src/buttons/Markdown.tsx
1466
+ var icon5 = prepareIcon({
1467
+ Icon: Markdown_default,
1468
+ screenReaderContent: (0, i18n_exports._)("Add markdown text")
1469
+ });
1470
+ var Markdown = ({ dashboardApi }) => {
1471
+ const handleClick = (0, react_exports.useCallback)(() => {
1472
+ dashboardApi == null ? void 0 : dashboardApi.createVisualization({
1473
+ visualizationDefinition: {
1474
+ type: "splunk.markdown",
1475
+ options: {
1476
+ markdown: ""
1477
+ }
1478
+ }
1479
+ });
1480
+ dashboardApi == null ? void 0 : dashboardApi.openPanel({
1481
+ activePanel: "config"
1482
+ });
1483
+ }, [dashboardApi]);
1484
+ return /* @__PURE__ */ react_default.createElement(
1485
+ IconButton_default,
1486
+ {
1487
+ testLabel: "markdown-button",
1488
+ onClick: handleClick,
1489
+ icon: icon5
1490
+ }
1491
+ );
1492
+ };
1493
+ var Markdown_default2 = Markdown;
1494
+
1495
+ // src/buttons/ModeSwitch.tsx
1496
+ var ModeSwitch = () => {
1497
+ const mode = (0, dashboard_state_exports.useSelector)(dashboard_state_exports.selectMode);
1498
+ const dashboardApi = (0, dashboard_context_exports.useDashboardApi)();
1499
+ const appearance = mode === "edit" ? "secondary" : "primary";
1500
+ const label = mode === "edit" ? (0, i18n_exports._)("View") : (0, i18n_exports._)("Edit");
1501
+ const handleClick = (0, react_exports.useCallback)(() => {
1502
+ dashboardApi == null ? void 0 : dashboardApi.switchMode(mode === "edit" ? "view" : "edit");
1503
+ }, [mode, dashboardApi]);
1504
+ return /* @__PURE__ */ react_default.createElement(Item_default, null, /* @__PURE__ */ react_default.createElement(
1505
+ Button_default,
1506
+ {
1507
+ key: "mode-button",
1508
+ "data-clickable": true,
1509
+ "data-test": "mode-button",
1510
+ inline: false,
1511
+ label,
1512
+ appearance,
1513
+ onClick: handleClick
1514
+ }
1515
+ ));
1516
+ };
1517
+ var ModeSwitch_default = ModeSwitch;
1518
+
1519
+ // esm-externals:@splunk/react-icons/ArrowBowRight
1520
+ var ArrowBowRight_exports = {};
1521
+ __export(ArrowBowRight_exports, {
1522
+ default: () => ArrowBowRight_default
1523
+ });
1524
+ var defaultImport32 = __toESM(require("@splunk/react-icons/ArrowBowRight"));
1525
+ __reExport(ArrowBowRight_exports, require("@splunk/react-icons/ArrowBowRight"));
1526
+ var ArrowBowRight_default = "default" in defaultImport32 ? defaultImport32.default : defaultImport32;
1527
+
1528
+ // src/buttons/Redo.tsx
1529
+ var icon6 = prepareIcon({
1530
+ Icon: ArrowBowRight_default,
1531
+ screenReaderContent: (0, i18n_exports._)("Redo")
1532
+ });
1533
+ var Redo = ({ dashboardApi }) => {
1534
+ const [canRedo, setCanRedo] = (0, react_exports.useState)(
1535
+ () => {
1536
+ var _a;
1537
+ return (_a = dashboardApi == null ? void 0 : dashboardApi.canRedo()) != null ? _a : false;
1538
+ }
1539
+ );
1540
+ const onDefinitionChange = (0, react_exports.useCallback)(() => {
1541
+ var _a;
1542
+ setCanRedo((_a = dashboardApi == null ? void 0 : dashboardApi.canRedo()) != null ? _a : false);
1543
+ }, [dashboardApi]);
1544
+ (0, react_exports.useEffect)(() => {
1545
+ if (!(dashboardApi == null ? void 0 : dashboardApi.historyManager)) {
1546
+ return () => void 0;
1547
+ }
1548
+ return dashboardApi.historyManager.subscribe({
1549
+ onAdd: onDefinitionChange,
1550
+ onUndo: onDefinitionChange,
1551
+ onRedo: onDefinitionChange
1552
+ });
1553
+ }, [dashboardApi, onDefinitionChange]);
1554
+ const handleClick = (0, react_exports.useCallback)(() => {
1555
+ if (!dashboardApi) {
1556
+ return;
1557
+ }
1558
+ dashboardApi.redo({ source: "toolbar" });
1559
+ }, [dashboardApi]);
1560
+ return /* @__PURE__ */ react_default.createElement(
1561
+ IconButton_default,
1562
+ {
1563
+ testLabel: "redo-button",
1564
+ onClick: handleClick,
1565
+ disabled: !canRedo,
1566
+ icon: icon6
1567
+ }
1568
+ );
1569
+ };
1570
+ var Redo_default = Redo;
1571
+
1572
+ // esm-externals:@splunk/react-icons/Circle
1573
+ var Circle_exports = {};
1574
+ __export(Circle_exports, {
1575
+ default: () => Circle_default
1576
+ });
1577
+ var defaultImport33 = __toESM(require("@splunk/react-icons/Circle"));
1578
+ __reExport(Circle_exports, require("@splunk/react-icons/Circle"));
1579
+ var Circle_default = "default" in defaultImport33 ? defaultImport33.default : defaultImport33;
1580
+
1581
+ // esm-externals:@splunk/react-icons/Line
1582
+ var Line_exports = {};
1583
+ __export(Line_exports, {
1584
+ default: () => Line_default
1585
+ });
1586
+ var defaultImport34 = __toESM(require("@splunk/react-icons/Line"));
1587
+ __reExport(Line_exports, require("@splunk/react-icons/Line"));
1588
+ var Line_default = "default" in defaultImport34 ? defaultImport34.default : defaultImport34;
1589
+
1590
+ // esm-externals:@splunk/react-icons/ShapesVariety
1591
+ var ShapesVariety_exports = {};
1592
+ __export(ShapesVariety_exports, {
1593
+ default: () => ShapesVariety_default
1594
+ });
1595
+ var defaultImport35 = __toESM(require("@splunk/react-icons/ShapesVariety"));
1596
+ __reExport(ShapesVariety_exports, require("@splunk/react-icons/ShapesVariety"));
1597
+ var ShapesVariety_default = "default" in defaultImport35 ? defaultImport35.default : defaultImport35;
1598
+
1599
+ // src/buttons/Shapes.tsx
1600
+ var shapesDropdown = prepareIcon({
1601
+ Icon: ShapesVariety_default,
1602
+ screenReaderContent: (0, i18n_exports._)("Add shape"),
1603
+ isMenu: true
1604
+ });
1605
+ var ButtonToggle5 = /* @__PURE__ */ react_default.createElement(
1606
+ StyledDropdownButton,
1607
+ {
1608
+ appearance: "subtle",
1609
+ "data-clickable": true,
1610
+ "data-test": "shapes-button",
1611
+ icon: shapesDropdown
1612
+ }
1613
+ );
1614
+ var focusToggleReasons6 = [];
1615
+ var circleIcon = /* @__PURE__ */ react_default.createElement(Circle_default, null);
1616
+ var uncheckedBoxIcon = /* @__PURE__ */ react_default.createElement(Square_default, null);
1617
+ var lineIcon = /* @__PURE__ */ react_default.createElement(Line_default, null);
1618
+ var Shapes = ({ dashboardApi, layoutType }) => {
1619
+ const supportLine = layoutType === "absolute";
1620
+ const { handleRequestClose, handleRequestOpen, isOpen } = useDropdown_default({
1621
+ isContentClickClose: true
1622
+ });
1623
+ const handleCreateVizButtonClick = (0, react_exports.useCallback)(
1624
+ (vizToCreate, layoutItemType) => {
1625
+ return () => {
1626
+ dashboardApi == null ? void 0 : dashboardApi.createVisualization({
1627
+ visualizationDefinition: vizToCreate,
1628
+ layoutItemType
1629
+ });
1630
+ dashboardApi == null ? void 0 : dashboardApi.openPanel({ activePanel: "config" });
1631
+ };
1632
+ },
1633
+ [dashboardApi]
1634
+ );
1635
+ return /* @__PURE__ */ react_default.createElement(Item_default, null, /* @__PURE__ */ react_default.createElement(
1636
+ Dropdown_default,
1637
+ {
1638
+ focusToggleReasons: focusToggleReasons6,
1639
+ onRequestClose: handleRequestClose,
1640
+ onRequestOpen: handleRequestOpen,
1641
+ open: isOpen,
1642
+ toggle: ButtonToggle5
1643
+ },
1644
+ /* @__PURE__ */ react_default.createElement(Menu_default, { "data-test": "shapes-dropdown-children-container" }, /* @__PURE__ */ react_default.createElement(
1645
+ Menu_default.Item,
1646
+ {
1647
+ "data-test": "ellipse-button",
1648
+ onClick: handleCreateVizButtonClick({
1649
+ type: "splunk.ellipse"
1650
+ })
1651
+ },
1652
+ /* @__PURE__ */ react_default.createElement(
1653
+ PopoverItemButton_default,
1654
+ {
1655
+ icon: circleIcon,
1656
+ label: (0, i18n_exports._)("Ellipse")
1657
+ }
1658
+ )
1659
+ ), /* @__PURE__ */ react_default.createElement(
1660
+ Menu_default.Item,
1661
+ {
1662
+ "data-test": "rectangle-button",
1663
+ onClick: handleCreateVizButtonClick({
1664
+ type: "splunk.rectangle"
1665
+ })
1666
+ },
1667
+ /* @__PURE__ */ react_default.createElement(
1668
+ PopoverItemButton_default,
1669
+ {
1670
+ icon: uncheckedBoxIcon,
1671
+ label: (0, i18n_exports._)("Rectangle")
1672
+ }
1673
+ )
1674
+ ), supportLine && /* @__PURE__ */ react_default.createElement(
1675
+ Menu_default.Item,
1676
+ {
1677
+ "data-test": "line-button",
1678
+ onClick: handleCreateVizButtonClick(
1679
+ {
1680
+ type: "abslayout.line"
1681
+ },
1682
+ "line"
1683
+ )
1684
+ },
1685
+ /* @__PURE__ */ react_default.createElement(
1686
+ PopoverItemButton_default,
1687
+ {
1688
+ icon: lineIcon,
1689
+ label: (0, i18n_exports._)("Line")
1690
+ }
1691
+ )
1692
+ ))
1693
+ ));
1694
+ };
1695
+ var Shapes_default = Shapes;
1696
+
1697
+ // esm-externals:@splunk/react-icons/WindowChevronsSlash
1698
+ var WindowChevronsSlash_exports = {};
1699
+ __export(WindowChevronsSlash_exports, {
1700
+ default: () => WindowChevronsSlash_default
1701
+ });
1702
+ var defaultImport36 = __toESM(require("@splunk/react-icons/WindowChevronsSlash"));
1703
+ __reExport(WindowChevronsSlash_exports, require("@splunk/react-icons/WindowChevronsSlash"));
1704
+ var WindowChevronsSlash_default = "default" in defaultImport36 ? defaultImport36.default : defaultImport36;
1705
+
1706
+ // src/buttons/Source.tsx
1707
+ var icon7 = prepareIcon({
1708
+ Icon: WindowChevronsSlash_default,
1709
+ screenReaderContent: (0, i18n_exports._)("Source code")
1710
+ });
1711
+ var Source = ({ disabled = false, onClick }) => /* @__PURE__ */ react_default.createElement(
1712
+ IconButton_default,
1713
+ {
1714
+ testLabel: "source-button",
1715
+ onClick,
1716
+ disabled,
1717
+ icon: icon7
1718
+ }
1719
+ );
1720
+ var Source_default = Source;
1721
+
1722
+ // esm-externals:@splunk/react-icons/ListToken
1723
+ var ListToken_exports = {};
1724
+ __export(ListToken_exports, {
1725
+ default: () => ListToken_default
1726
+ });
1727
+ var defaultImport37 = __toESM(require("@splunk/react-icons/ListToken"));
1728
+ __reExport(ListToken_exports, require("@splunk/react-icons/ListToken"));
1729
+ var ListToken_default = "default" in defaultImport37 ? defaultImport37.default : defaultImport37;
1730
+
1731
+ // esm-externals:@splunk/react-ui/Tooltip
1732
+ var Tooltip_exports = {};
1733
+ __export(Tooltip_exports, {
1734
+ default: () => Tooltip_default
1735
+ });
1736
+ var defaultImport38 = __toESM(require("@splunk/react-ui/Tooltip"));
1737
+ __reExport(Tooltip_exports, require("@splunk/react-ui/Tooltip"));
1738
+ var Tooltip_default = "default" in defaultImport38 ? defaultImport38.default : defaultImport38;
1739
+
1740
+ // src/buttons/tokenManager/TokenManager.tsx
1741
+ var tokenManagerIcon = prepareIcon({
1742
+ Icon: ListToken_default,
1743
+ screenReaderContent: (0, i18n_exports._)("Token manager")
1744
+ });
1745
+ var TokenManager = ({ dashboardApi }) => {
1746
+ const handleClick = (0, react_exports.useCallback)(() => {
1747
+ const isOpen = (dashboardApi == null ? void 0 : dashboardApi.getOpenedPanel()) === "tokens";
1748
+ if (isOpen) {
1749
+ dashboardApi == null ? void 0 : dashboardApi.closePanel();
1750
+ } else {
1751
+ dashboardApi == null ? void 0 : dashboardApi.openPanel({
1752
+ activePanel: "tokens",
1753
+ panelProps: {
1754
+ focusOnOpen: true
1755
+ }
1756
+ });
1757
+ }
1758
+ }, [dashboardApi]);
1759
+ return /* @__PURE__ */ react_default.createElement(
1760
+ Tooltip_default,
1761
+ {
1762
+ contentRelationship: "label",
1763
+ content: (0, i18n_exports._)("Token manager"),
1764
+ "data-test-label": "token-manager-button"
1765
+ },
1766
+ /* @__PURE__ */ react_default.createElement(
1767
+ IconButton_default,
1768
+ {
1769
+ testLabel: "token-manager-button",
1770
+ onClick: handleClick,
1771
+ icon: tokenManagerIcon
1772
+ }
1773
+ )
1774
+ );
1775
+ };
1776
+
1777
+ // esm-externals:@splunk/react-icons/ArrowBowLeft
1778
+ var ArrowBowLeft_exports = {};
1779
+ __export(ArrowBowLeft_exports, {
1780
+ default: () => ArrowBowLeft_default
1781
+ });
1782
+ var defaultImport39 = __toESM(require("@splunk/react-icons/ArrowBowLeft"));
1783
+ __reExport(ArrowBowLeft_exports, require("@splunk/react-icons/ArrowBowLeft"));
1784
+ var ArrowBowLeft_default = "default" in defaultImport39 ? defaultImport39.default : defaultImport39;
1785
+
1786
+ // src/buttons/Undo.tsx
1787
+ var icon8 = prepareIcon({
1788
+ Icon: ArrowBowLeft_default,
1789
+ screenReaderContent: (0, i18n_exports._)("Undo")
1790
+ });
1791
+ var Undo = ({ dashboardApi }) => {
1792
+ const [canUndo, setCanUndo] = (0, react_exports.useState)(
1793
+ () => {
1794
+ var _a;
1795
+ return (_a = dashboardApi == null ? void 0 : dashboardApi.canUndo()) != null ? _a : false;
1796
+ }
1797
+ );
1798
+ const onDefinitionChange = (0, react_exports.useCallback)(() => {
1799
+ var _a;
1800
+ setCanUndo((_a = dashboardApi == null ? void 0 : dashboardApi.canUndo()) != null ? _a : false);
1801
+ }, [dashboardApi]);
1802
+ (0, react_exports.useEffect)(() => {
1803
+ if (!(dashboardApi == null ? void 0 : dashboardApi.historyManager)) {
1804
+ return () => void 0;
1805
+ }
1806
+ return dashboardApi.historyManager.subscribe({
1807
+ onAdd: onDefinitionChange,
1808
+ onUndo: onDefinitionChange,
1809
+ onRedo: onDefinitionChange
1810
+ });
1811
+ }, [dashboardApi, onDefinitionChange]);
1812
+ const handleClick = (0, react_exports.useCallback)(() => {
1813
+ if (!dashboardApi) {
1814
+ return;
1815
+ }
1816
+ dashboardApi.undo({ source: "toolbar" });
1817
+ }, [dashboardApi]);
1818
+ return /* @__PURE__ */ react_default.createElement(
1819
+ IconButton_default,
1820
+ {
1821
+ testLabel: "undo-button",
1822
+ onClick: handleClick,
1823
+ disabled: !canUndo,
1824
+ icon: icon8
1825
+ }
1826
+ );
1827
+ };
1828
+ var Undo_default = Undo;
1829
+
1830
+ // esm-externals:@splunk/dashboard-telemetry
1831
+ var dashboard_telemetry_exports = {};
1832
+ __export(dashboard_telemetry_exports, {
1833
+ default: () => dashboard_telemetry_default
1834
+ });
1835
+ var defaultImport40 = __toESM(require("@splunk/dashboard-telemetry"));
1836
+ __reExport(dashboard_telemetry_exports, require("@splunk/dashboard-telemetry"));
1837
+ var dashboard_telemetry_default = "default" in defaultImport40 ? defaultImport40.default : defaultImport40;
1838
+
1839
+ // esm-externals:@splunk/ui-utils/format
1840
+ var format_exports = {};
1841
+ __export(format_exports, {
1842
+ default: () => format_default
1843
+ });
1844
+ var defaultImport41 = __toESM(require("@splunk/ui-utils/format"));
1845
+ __reExport(format_exports, require("@splunk/ui-utils/format"));
1846
+ var format_default = "default" in defaultImport41 ? defaultImport41.default : defaultImport41;
1847
+
1848
+ // src/buttons/Zoom/ZoomMenu.tsx
1849
+ var zoomLevels = [25, 50, 100, 150, 200];
1850
+ var buttonStyle = {
1851
+ borderTopLeftRadius: 0,
1852
+ borderBottomLeftRadius: 0
1853
+ };
1854
+ var menuStyle = {
1855
+ width: "200px"
1856
+ };
1857
+ var ZoomMenu = ({
1858
+ dashboardApi,
1859
+ appearance = "default",
1860
+ currentScale,
1861
+ setCurrentScale,
1862
+ scaleType,
1863
+ setScaleType
1864
+ }) => {
1865
+ const handleZoomOutClick = (0, react_exports.useCallback)(() => {
1866
+ setScaleType(null);
1867
+ dashboardApi == null ? void 0 : dashboardApi.zoomOut();
1868
+ }, [setScaleType, dashboardApi]);
1869
+ const handleZoomInClick = (0, react_exports.useCallback)(() => {
1870
+ setScaleType(null);
1871
+ dashboardApi == null ? void 0 : dashboardApi.zoomIn();
1872
+ }, [setScaleType, dashboardApi]);
1873
+ const handleScaleChange = (0, react_exports.useCallback)(
1874
+ (scale) => () => {
1875
+ setCurrentScale(scale);
1876
+ setScaleType(null);
1877
+ dashboardApi == null ? void 0 : dashboardApi.setScale({ scale: scale / 100 });
1878
+ },
1879
+ [setScaleType, setCurrentScale, dashboardApi]
1880
+ );
1881
+ const handleFitToWidthClick = (0, react_exports.useCallback)(() => {
1882
+ setScaleType("fit");
1883
+ dashboardApi == null ? void 0 : dashboardApi.fitToWidth();
1884
+ }, [setScaleType, dashboardApi]);
1885
+ const handleAutoClick = (0, react_exports.useCallback)(() => {
1886
+ setScaleType("auto");
1887
+ dashboardApi == null ? void 0 : dashboardApi.fitToWidth({ maxScale: 1 });
1888
+ }, [setScaleType, dashboardApi]);
1889
+ const { handleRequestClose, handleRequestOpen, isOpen } = useDropdown_default({
1890
+ isContentClickClose: true
1891
+ });
1892
+ const buttonToggle2 = /* @__PURE__ */ react_default.createElement(
1893
+ Button_default,
1894
+ {
1895
+ "data-clickable": true,
1896
+ "data-test": "zoom-dropdown-button",
1897
+ style: buttonStyle,
1898
+ appearance,
1899
+ isMenu: true,
1900
+ "aria-label": (0, format_exports.sprintf)((0, i18n_exports._)("Zoom level, %(currentScale)s%%"), {
1901
+ currentScale
1902
+ })
1903
+ }
1904
+ );
1905
+ const isMacOS = (0, react_exports.useMemo)(() => (0, dashboard_utils_exports.isMac)(), []);
1906
+ const dropdownMenuChildren = (0, react_exports.useMemo)(() => {
1907
+ const zoomButtons = zoomLevels.map((percent) => {
1908
+ return /* @__PURE__ */ react_default.createElement(
1909
+ Menu_default.Item,
1910
+ {
1911
+ "data-test": `${percent}-percent`,
1912
+ onClick: handleScaleChange(percent),
1913
+ key: percent,
1914
+ selectable: true,
1915
+ selected: currentScale === percent && !scaleType
1916
+ },
1917
+ `${percent}%`
1918
+ );
1919
+ });
1920
+ return [
1921
+ /* @__PURE__ */ react_default.createElement(
1922
+ Menu_default.Item,
1923
+ {
1924
+ "data-test": "auto",
1925
+ onClick: handleAutoClick,
1926
+ key: "auto",
1927
+ selectable: true,
1928
+ selected: scaleType === "auto"
1929
+ },
1930
+ (0, i18n_exports._)("Auto")
1931
+ ),
1932
+ /* @__PURE__ */ react_default.createElement(
1933
+ Menu_default.Item,
1934
+ {
1935
+ "data-test": "fit-to-width",
1936
+ onClick: handleFitToWidthClick,
1937
+ key: "fit-to-width",
1938
+ description: isMacOS ? (0, i18n_exports._)("Ctrl Cmd 0") : (0, i18n_exports._)("Ctrl Alt 0"),
1939
+ descriptionPosition: "right",
1940
+ selectable: true,
1941
+ selected: scaleType === "fit"
1942
+ },
1943
+ (0, i18n_exports._)("Fit")
1944
+ ),
1945
+ /* @__PURE__ */ react_default.createElement(Menu_default.Divider, { key: "menu-divider-1" }),
1946
+ ...zoomButtons,
1947
+ /* @__PURE__ */ react_default.createElement(Menu_default.Divider, { key: "menu-divider-2" }),
1948
+ /* @__PURE__ */ react_default.createElement(
1949
+ Menu_default.Item,
1950
+ {
1951
+ "data-test": "zoom-in",
1952
+ onClick: handleZoomInClick,
1953
+ key: "zoom-in",
1954
+ description: isMacOS ? (0, i18n_exports._)("Ctrl Cmd =") : (0, i18n_exports._)("Ctrl Alt ="),
1955
+ descriptionPosition: "right",
1956
+ selectable: true
1957
+ },
1958
+ (0, i18n_exports._)("Zoom in")
1959
+ ),
1960
+ /* @__PURE__ */ react_default.createElement(
1961
+ Menu_default.Item,
1962
+ {
1963
+ "data-test": "zoom-out",
1964
+ onClick: handleZoomOutClick,
1965
+ key: "zoom-out",
1966
+ description: isMacOS ? (0, i18n_exports._)("Ctrl Cmd -") : (0, i18n_exports._)("Ctrl Alt -"),
1967
+ descriptionPosition: "right",
1968
+ selectable: true
1969
+ },
1970
+ (0, i18n_exports._)("Zoom out")
1971
+ )
1972
+ ];
1973
+ }, [
1974
+ currentScale,
1975
+ handleAutoClick,
1976
+ scaleType,
1977
+ handleFitToWidthClick,
1978
+ isMacOS,
1979
+ handleZoomInClick,
1980
+ handleZoomOutClick,
1981
+ handleScaleChange
1982
+ ]);
1983
+ return /* @__PURE__ */ react_default.createElement(
1984
+ Dropdown_default,
1985
+ {
1986
+ onRequestClose: handleRequestClose,
1987
+ onRequestOpen: handleRequestOpen,
1988
+ open: isOpen,
1989
+ toggle: buttonToggle2,
1990
+ retainFocus: true
1991
+ },
1992
+ /* @__PURE__ */ react_default.createElement(
1993
+ Menu_default,
1994
+ {
1995
+ style: menuStyle,
1996
+ focusMode: "normal",
1997
+ "aria-label": (0, i18n_exports._)("Zoom level")
1998
+ },
1999
+ dropdownMenuChildren
2000
+ )
2001
+ );
2002
+ };
2003
+
2004
+ // esm-externals:@splunk/react-ui/Number
2005
+ var Number_exports = {};
2006
+ __export(Number_exports, {
2007
+ default: () => Number_default
2008
+ });
2009
+ var defaultImport42 = __toESM(require("@splunk/react-ui/Number"));
2010
+ __reExport(Number_exports, require("@splunk/react-ui/Number"));
2011
+ var Number_default = "default" in defaultImport42 ? defaultImport42.default : defaultImport42;
2012
+
2013
+ // src/buttons/Zoom/ZoomNumber.tsx
2014
+ var StyledNumber = styled_components_default(Number_default)`
2015
+ padding-right: ${themes_exports.variables.spacingSmall};
2016
+ & > input {
2017
+ text-align: right;
2018
+ }
2019
+ `;
2020
+ var StyledEndAdornment = styled_components_default.span`
2021
+ color: ${themes_exports.variables.contentColorActive};
2022
+ `;
2023
+ var ZoomNumber = ({
2024
+ currentScale,
2025
+ onScaleChange
2026
+ }) => {
2027
+ const onValueChange = (0, react_exports.useCallback)(
2028
+ (e, value = 100) => {
2029
+ onScaleChange(value)();
2030
+ },
2031
+ [onScaleChange]
2032
+ );
2033
+ const { handleChange, handleBlur, handleFocus, handleKeyPress } = (0, dashboard_ui_exports.useNumberInput)({
2034
+ value: currentScale,
2035
+ onValueChange
2036
+ });
2037
+ return /* @__PURE__ */ react_default.createElement(
2038
+ StyledNumber,
2039
+ {
2040
+ value: currentScale,
2041
+ onChange: handleChange,
2042
+ onKeyDown: handleKeyPress,
2043
+ onBlur: handleBlur,
2044
+ onFocus: handleFocus,
2045
+ step: 5,
2046
+ min: 1,
2047
+ max: 1e4,
2048
+ roundTo: 0,
2049
+ endAdornment: /* @__PURE__ */ react_default.createElement(StyledEndAdornment, null, "%"),
2050
+ hideStepButtons: true,
2051
+ "data-test": "zoom-number",
2052
+ append: true
2053
+ }
2054
+ );
2055
+ };
2056
+
2057
+ // src/buttons/Zoom/Zoom.tsx
2058
+ var Container = styled_components_default.div`
2059
+ margin-inline-end: 0;
2060
+ display: flex;
2061
+ min-width: 96px;
2062
+ gap: ${themes_exports.variables.spacingSmall};
2063
+ `;
2064
+ var StyledTooltip = styled_components_default(Tooltip_default)`
2065
+ width: 110px;
2066
+ & span {
2067
+ display: flex;
2068
+ }
2069
+ `;
2070
+ var Zoom = ({
2071
+ showSeparator = true,
2072
+ appearance = "default",
2073
+ mode = "view"
2074
+ }) => {
2075
+ const [currentScale, setCurrentScale] = (0, react_exports.useState)(100);
2076
+ const [scaleType, setScaleType] = (0, react_exports.useState)(null);
2077
+ const telemetry = (0, dashboard_telemetry_exports.useTelemetryApi)();
2078
+ const dashboardApi = (0, dashboard_context_exports.useDashboardApi)();
2079
+ const handleZoom = (0, react_exports.useCallback)((level) => {
2080
+ if (level) {
2081
+ setCurrentScale(Math.round(level * 100));
2082
+ }
2083
+ }, []);
2084
+ const emitTelemetry = (0, react_exports.useMemo)(
2085
+ () => (0, lodash_exports.debounce)(telemetry.emit.bind(telemetry), 500),
2086
+ [telemetry]
2087
+ );
2088
+ (0, react_exports.useEffect)(() => {
2089
+ emitTelemetry({
2090
+ pageAction: "dashboard.zoom",
2091
+ source: "toolbar",
2092
+ event: "dashboard.zoom_level_change",
2093
+ metadata: {
2094
+ scale: currentScale,
2095
+ scaleType,
2096
+ mode
2097
+ }
2098
+ });
2099
+ }, [currentScale, scaleType, emitTelemetry, mode]);
2100
+ const activeTabId = (0, dashboard_state_exports.useSelector)(dashboard_state_exports.selectActiveTab);
2101
+ (0, react_exports.useEffect)(() => {
2102
+ var _a;
2103
+ const subscription = (_a = dashboardApi == null ? void 0 : dashboardApi.getZoomLevel()) == null ? void 0 : _a.subscribe({ next: handleZoom });
2104
+ return () => {
2105
+ subscription == null ? void 0 : subscription.unsubscribe();
2106
+ };
2107
+ }, [dashboardApi, activeTabId, handleZoom]);
2108
+ const separator = (0, react_exports.useMemo)(
2109
+ () => showSeparator ? /* @__PURE__ */ react_default.createElement(ItemSeparator_default, { key: "item-separator" }) : null,
2110
+ [showSeparator]
2111
+ );
2112
+ const handleScaleChange = (0, react_exports.useCallback)(
2113
+ (scale) => () => {
2114
+ setCurrentScale(scale);
2115
+ setScaleType(null);
2116
+ dashboardApi == null ? void 0 : dashboardApi.setScale({ scale: scale / 100 });
2117
+ },
2118
+ [dashboardApi]
2119
+ );
2120
+ return /* @__PURE__ */ react_default.createElement(Container, null, /* @__PURE__ */ react_default.createElement(
2121
+ StyledTooltip,
2122
+ {
2123
+ contentRelationship: "label",
2124
+ content: (0, i18n_exports._)("Zoom level")
2125
+ },
2126
+ /* @__PURE__ */ react_default.createElement(
2127
+ ZoomNumber,
2128
+ {
2129
+ currentScale,
2130
+ onScaleChange: handleScaleChange
2131
+ }
2132
+ ),
2133
+ /* @__PURE__ */ react_default.createElement(
2134
+ ZoomMenu,
2135
+ {
2136
+ dashboardApi,
2137
+ appearance,
2138
+ currentScale,
2139
+ setCurrentScale,
2140
+ scaleType,
2141
+ setScaleType
2142
+ }
2143
+ )
2144
+ ), separator);
2145
+ };
2146
+
2147
+ // src/groups/ActionsGroup.tsx
2148
+ var menuStyle2 = {
2149
+ width: "180px"
2150
+ };
2151
+ var buttonToggle = /* @__PURE__ */ react_default.createElement(
2152
+ Button_default,
2153
+ {
2154
+ "data-clickable": true,
2155
+ label: (0, i18n_exports._)("Actions"),
2156
+ "data-test": "actions-dropdown-button",
2157
+ isMenu: true,
2158
+ appearance: "subtle"
2159
+ }
2160
+ );
2161
+ var ActionsGroup = ({ children }) => {
2162
+ const { handleRequestClose, handleRequestOpen, isOpen } = useDropdown_default({
2163
+ isContentClickClose: true
2164
+ });
2165
+ return /* @__PURE__ */ react_default.createElement(
2166
+ Dropdown_default,
2167
+ {
2168
+ onRequestClose: handleRequestClose,
2169
+ onRequestOpen: handleRequestOpen,
2170
+ open: isOpen,
2171
+ toggle: buttonToggle
2172
+ },
2173
+ /* @__PURE__ */ react_default.createElement(Menu_default, { style: menuStyle2 }, children)
2174
+ );
2175
+ };
2176
+ var ActionsGroup_default = ActionsGroup;
2177
+
2178
+ // src/groups/ControlGroup.tsx
2179
+ var ControlGroup = (props) => /* @__PURE__ */ react_default.createElement(ItemGroup_default, __spreadValues({}, props), /* @__PURE__ */ react_default.createElement(Fullscreen_default, null));
2180
+ var ControlGroup_default = ControlGroup;
2181
+
2182
+ // src/groups/EditingGroup.tsx
2183
+ var EditingGroup = (props) => {
2184
+ const { enableModeSwitch = true, borders = true, layoutType } = props;
2185
+ const { spacingSmall } = (0, themes_exports.useSplunkTheme)();
2186
+ const modeSwitch = (0, react_exports.useMemo)(() => {
2187
+ if (!enableModeSwitch) {
2188
+ return null;
2189
+ }
2190
+ return /* @__PURE__ */ react_default.createElement(ModeSwitch_default, null);
2191
+ }, [enableModeSwitch]);
2192
+ const zoomControl = (0, react_exports.useMemo)(() => {
2193
+ return layoutType === "absolute" ? [/* @__PURE__ */ react_default.createElement(Zoom, { key: "zoom", showSeparator: borders })] : null;
2194
+ }, [layoutType, borders]);
2195
+ return /* @__PURE__ */ react_default.createElement(ItemGroup_default, __spreadProps(__spreadValues({}, props), { borders: false, gap: spacingSmall }), /* @__PURE__ */ react_default.createElement(GridLineSwitch_default, { showSeparator: enableModeSwitch && borders }), zoomControl, modeSwitch);
2196
+ };
2197
+ var EditingGroup_default = EditingGroup;
2198
+
2199
+ // src/groups/EditorGroup.tsx
2200
+ var EditorGroup = (props) => {
2201
+ var _a;
2202
+ return /* @__PURE__ */ react_default.createElement(ItemGroup_default, __spreadValues({ borders: false }, props), /* @__PURE__ */ react_default.createElement(Source_default, { onClick: (_a = props.sourceButtonOnClick) != null ? _a : dashboard_utils_exports.noop }));
2203
+ };
2204
+ var EditorGroup_default = EditorGroup;
2205
+
2206
+ // src/groups/EditorsControlGroup.tsx
2207
+ var EditorsControlGroup = (props) => {
2208
+ var _a;
2209
+ return /* @__PURE__ */ react_default.createElement(ItemGroup_default, __spreadValues({ borders: false }, props), /* @__PURE__ */ react_default.createElement(Config_default, null), /* @__PURE__ */ react_default.createElement(Data_default, null), /* @__PURE__ */ react_default.createElement(Source_default, { onClick: (_a = props.sourceButtonOnClick) != null ? _a : dashboard_utils_exports.noop }));
2210
+ };
2211
+ var EditorsControlGroup_default = EditorsControlGroup;
2212
+
2213
+ // src/groups/HistoryGroup.tsx
2214
+ var HistoryGroup = (props) => /* @__PURE__ */ react_default.createElement(ItemGroup_default, __spreadValues({}, props), /* @__PURE__ */ react_default.createElement(Undo_default, null), /* @__PURE__ */ react_default.createElement(Redo_default, null));
2215
+ var HistoryGroup_default = HistoryGroup;
2216
+
2217
+ // src/groups/SidebarControlGroup.tsx
2218
+ var SidebarControlGroup = (props) => /* @__PURE__ */ react_default.createElement(ItemGroup_default, __spreadValues({}, props), /* @__PURE__ */ react_default.createElement(Config_default, null), /* @__PURE__ */ react_default.createElement(Data_default, null));
2219
+ var SidebarControlGroup_default = SidebarControlGroup;
2220
+
2221
+ // src/groups/VisualizationGroup.tsx
2222
+ var VisualizationGroup = (props) => {
2223
+ const buttons = (0, react_exports.useMemo)(() => {
2224
+ if (props.layoutType === "grid") {
2225
+ return [
2226
+ /* @__PURE__ */ react_default.createElement(Charts_default, { key: "charts" }),
2227
+ /* @__PURE__ */ react_default.createElement(Inputs_default, { key: "inputs" }),
2228
+ /* @__PURE__ */ react_default.createElement(EmptyVisualization_default, { key: "empty-viz" }),
2229
+ /* @__PURE__ */ react_default.createElement(Image_default, { key: "images" }),
2230
+ /* @__PURE__ */ react_default.createElement(Markdown_default2, { key: "markdown" })
2231
+ ];
2232
+ }
2233
+ return [
2234
+ /* @__PURE__ */ react_default.createElement(Charts_default, { key: "charts" }),
2235
+ /* @__PURE__ */ react_default.createElement(Inputs_default, { key: "inputs" }),
2236
+ /* @__PURE__ */ react_default.createElement(IconGallery_default, { key: "icon-gallery" }),
2237
+ /* @__PURE__ */ react_default.createElement(Shapes_default, { key: "shapes" }),
2238
+ /* @__PURE__ */ react_default.createElement(Image_default, { key: "images" }),
2239
+ /* @__PURE__ */ react_default.createElement(Markdown_default2, { key: "markdown" })
2240
+ ];
2241
+ }, [props.layoutType]);
2242
+ return /* @__PURE__ */ react_default.createElement(ItemGroup_default, __spreadValues({}, props), buttons);
2243
+ };
2244
+ var VisualizationGroup_default = VisualizationGroup;
2245
+ //# sourceMappingURL=index.js.map