@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
@@ -0,0 +1,1857 @@
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/buttons/index.ts
84
+ var buttons_exports = {};
85
+ __export(buttons_exports, {
86
+ Charts: () => Charts_default,
87
+ Config: () => Config_default,
88
+ ContentExport: () => ContentExport_default,
89
+ Data: () => Data_default,
90
+ EmptyVisualization: () => EmptyVisualization_default,
91
+ ExportDashboardButton: () => ExportDashboardButton_default,
92
+ Fullscreen: () => Fullscreen_default,
93
+ GridLineSwitch: () => GridLineSwitch_default,
94
+ HelpButton: () => HelpButton_default,
95
+ IconGallery: () => IconGallery_default,
96
+ Image: () => Image_default,
97
+ ImageGallery: () => ImageGallery_default,
98
+ Inputs: () => Inputs_default,
99
+ Markdown: () => Markdown_default2,
100
+ ModeSwitch: () => ModeSwitch_default,
101
+ Redo: () => Redo_default,
102
+ Shapes: () => Shapes_default,
103
+ Source: () => Source_default,
104
+ TokenManager: () => TokenManager,
105
+ Undo: () => Undo_default,
106
+ Zoom: () => Zoom
107
+ });
108
+ module.exports = __toCommonJS(buttons_exports);
109
+
110
+ // esm-externals:react
111
+ var react_exports = {};
112
+ __export(react_exports, {
113
+ default: () => react_default
114
+ });
115
+ var defaultImport = __toESM(require("react"));
116
+ __reExport(react_exports, require("react"));
117
+ var react_default = "default" in defaultImport ? defaultImport.default : defaultImport;
118
+
119
+ // esm-externals:@splunk/ui-utils/i18n
120
+ var i18n_exports = {};
121
+ __export(i18n_exports, {
122
+ default: () => i18n_default
123
+ });
124
+ var defaultImport2 = __toESM(require("@splunk/ui-utils/i18n"));
125
+ __reExport(i18n_exports, require("@splunk/ui-utils/i18n"));
126
+ var i18n_default = "default" in defaultImport2 ? defaultImport2.default : defaultImport2;
127
+
128
+ // esm-externals:styled-components
129
+ var styled_components_exports = {};
130
+ __export(styled_components_exports, {
131
+ default: () => styled_components_default
132
+ });
133
+ var defaultImport3 = __toESM(require("styled-components"));
134
+ __reExport(styled_components_exports, require("styled-components"));
135
+ var styled_components_default = "default" in defaultImport3 ? defaultImport3.default : defaultImport3;
136
+
137
+ // esm-externals:@splunk/react-ui/Dropdown
138
+ var Dropdown_exports = {};
139
+ __export(Dropdown_exports, {
140
+ default: () => Dropdown_default
141
+ });
142
+ var defaultImport4 = __toESM(require("@splunk/react-ui/Dropdown"));
143
+ __reExport(Dropdown_exports, require("@splunk/react-ui/Dropdown"));
144
+ var Dropdown_default = "default" in defaultImport4 ? defaultImport4.default : defaultImport4;
145
+
146
+ // esm-externals:@splunk/react-ui/Menu
147
+ var Menu_exports = {};
148
+ __export(Menu_exports, {
149
+ default: () => Menu_default
150
+ });
151
+ var defaultImport5 = __toESM(require("@splunk/react-ui/Menu"));
152
+ __reExport(Menu_exports, require("@splunk/react-ui/Menu"));
153
+ var Menu_default = "default" in defaultImport5 ? defaultImport5.default : defaultImport5;
154
+
155
+ // esm-externals:@splunk/themes
156
+ var themes_exports = {};
157
+ __export(themes_exports, {
158
+ default: () => themes_default
159
+ });
160
+ var defaultImport6 = __toESM(require("@splunk/themes"));
161
+ __reExport(themes_exports, require("@splunk/themes"));
162
+ var themes_default = "default" in defaultImport6 ? defaultImport6.default : defaultImport6;
163
+
164
+ // esm-externals:@splunk/react-icons/ChartColumn
165
+ var ChartColumn_exports = {};
166
+ __export(ChartColumn_exports, {
167
+ default: () => ChartColumn_default
168
+ });
169
+ var defaultImport7 = __toESM(require("@splunk/react-icons/ChartColumn"));
170
+ __reExport(ChartColumn_exports, require("@splunk/react-icons/ChartColumn"));
171
+ var ChartColumn_default = "default" in defaultImport7 ? defaultImport7.default : defaultImport7;
172
+
173
+ // esm-externals:@splunk/dashboard-ui
174
+ var dashboard_ui_exports = {};
175
+ __export(dashboard_ui_exports, {
176
+ default: () => dashboard_ui_default
177
+ });
178
+ var defaultImport8 = __toESM(require("@splunk/dashboard-ui"));
179
+ __reExport(dashboard_ui_exports, require("@splunk/dashboard-ui"));
180
+ var dashboard_ui_default = "default" in defaultImport8 ? defaultImport8.default : defaultImport8;
181
+
182
+ // esm-externals:@splunk/dashboard-context
183
+ var dashboard_context_exports = {};
184
+ __export(dashboard_context_exports, {
185
+ default: () => dashboard_context_default
186
+ });
187
+ var defaultImport9 = __toESM(require("@splunk/dashboard-context"));
188
+ __reExport(dashboard_context_exports, require("@splunk/dashboard-context"));
189
+ var dashboard_context_default = "default" in defaultImport9 ? defaultImport9.default : defaultImport9;
190
+
191
+ // esm-externals:@splunk/dashboard-state
192
+ var dashboard_state_exports = {};
193
+ __export(dashboard_state_exports, {
194
+ default: () => dashboard_state_default
195
+ });
196
+ var defaultImport10 = __toESM(require("@splunk/dashboard-state"));
197
+ __reExport(dashboard_state_exports, require("@splunk/dashboard-state"));
198
+ var dashboard_state_default = "default" in defaultImport10 ? defaultImport10.default : defaultImport10;
199
+
200
+ // src/Item.tsx
201
+ var Item_default = styled_components_default.div``;
202
+
203
+ // src/hooks/useDropdown.ts
204
+ var useDropdown = ({
205
+ isContentClickClose = true
206
+ }) => {
207
+ const [isOpen, setIsOpen] = (0, react_exports.useState)(false);
208
+ const hasChildModal = (0, react_exports.useRef)(false);
209
+ const handleRequestClose = (0, react_exports.useCallback)(
210
+ ({ reason }) => {
211
+ if (reason === "contentClick" && !isContentClickClose) {
212
+ return;
213
+ }
214
+ if (reason === "escapeKey" && hasChildModal.current) {
215
+ return;
216
+ }
217
+ setIsOpen(false);
218
+ },
219
+ [isContentClickClose]
220
+ );
221
+ const handleRequestOpen = (0, react_exports.useCallback)(() => {
222
+ setIsOpen(true);
223
+ }, []);
224
+ const handleForceClose = (0, react_exports.useCallback)(() => {
225
+ setIsOpen(false);
226
+ }, []);
227
+ const setHasChildModal = (0, react_exports.useCallback)((value) => {
228
+ hasChildModal.current = value;
229
+ }, []);
230
+ return {
231
+ isOpen,
232
+ handleRequestOpen,
233
+ handleRequestClose,
234
+ handleForceClose,
235
+ setHasChildModal
236
+ };
237
+ };
238
+ var useDropdown_default = useDropdown;
239
+
240
+ // esm-externals:@splunk/react-icons/CaretDown
241
+ var CaretDown_exports = {};
242
+ __export(CaretDown_exports, {
243
+ default: () => CaretDown_default
244
+ });
245
+ var defaultImport11 = __toESM(require("@splunk/react-icons/CaretDown"));
246
+ __reExport(CaretDown_exports, require("@splunk/react-icons/CaretDown"));
247
+ var CaretDown_default = "default" in defaultImport11 ? defaultImport11.default : defaultImport11;
248
+
249
+ // esm-externals:@splunk/react-ui/ScreenReaderContent
250
+ var ScreenReaderContent_exports = {};
251
+ __export(ScreenReaderContent_exports, {
252
+ default: () => ScreenReaderContent_default
253
+ });
254
+ var defaultImport12 = __toESM(require("@splunk/react-ui/ScreenReaderContent"));
255
+ __reExport(ScreenReaderContent_exports, require("@splunk/react-ui/ScreenReaderContent"));
256
+ var ScreenReaderContent_default = "default" in defaultImport12 ? defaultImport12.default : defaultImport12;
257
+
258
+ // esm-externals:@splunk/react-ui/Button
259
+ var Button_exports = {};
260
+ __export(Button_exports, {
261
+ default: () => Button_default
262
+ });
263
+ var defaultImport13 = __toESM(require("@splunk/react-ui/Button"));
264
+ __reExport(Button_exports, require("@splunk/react-ui/Button"));
265
+ var Button_default = "default" in defaultImport13 ? defaultImport13.default : defaultImport13;
266
+
267
+ // src/IconButton.tsx
268
+ var StyledDropdownIcon = styled_components_default(CaretDown_default)`
269
+ margin-left: -5px;
270
+ `;
271
+ var iconSize = 24;
272
+ var menuIconSize = 20;
273
+ var prepareIcon = (_a) => {
274
+ var _b = _a, {
275
+ Icon,
276
+ screenReaderContent,
277
+ isMenu = false
278
+ } = _b, props = __objRest(_b, [
279
+ "Icon",
280
+ "screenReaderContent",
281
+ "isMenu"
282
+ ]);
283
+ const size = isMenu ? menuIconSize : iconSize;
284
+ 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));
285
+ };
286
+ var IconButton = (_a) => {
287
+ var _b = _a, {
288
+ icon: icon9,
289
+ buttonRef,
290
+ disabled = false,
291
+ onClick,
292
+ label,
293
+ testLabel
294
+ } = _b, rest = __objRest(_b, [
295
+ "icon",
296
+ "buttonRef",
297
+ "disabled",
298
+ "onClick",
299
+ "label",
300
+ "testLabel"
301
+ ]);
302
+ return /* @__PURE__ */ react_default.createElement(Item_default, __spreadValues({}, rest), /* @__PURE__ */ react_default.createElement(
303
+ Button_default,
304
+ {
305
+ elementRef: buttonRef,
306
+ onClick,
307
+ disabled,
308
+ appearance: "subtle",
309
+ icon: icon9,
310
+ label,
311
+ "data-test": testLabel,
312
+ "data-clickable": true
313
+ }
314
+ ));
315
+ };
316
+ var IconButton_default = IconButton;
317
+
318
+ // src/components/StyledButton.tsx
319
+ var StyledDropdownButton = styled_components_default(Button_default)`
320
+ max-width: '50px';
321
+ `;
322
+
323
+ // src/buttons/Charts.tsx
324
+ var ScrollableMenu = styled_components_default(Menu_default).attrs(
325
+ ({ maxHeight }) => ({
326
+ style: {
327
+ maxHeight: maxHeight != null ? maxHeight : void 0
328
+ }
329
+ })
330
+ )`
331
+ overflow-y: auto;
332
+ `;
333
+ var chartsDropdown = prepareIcon({
334
+ Icon: ChartColumn_default,
335
+ isMenu: true,
336
+ screenReaderContent: (0, i18n_exports._)("Add chart")
337
+ });
338
+ var ButtonToggle = /* @__PURE__ */ react_default.createElement(
339
+ StyledDropdownButton,
340
+ {
341
+ "data-test": "charts-button",
342
+ "data-clickable": true,
343
+ appearance: "subtle",
344
+ icon: chartsDropdown
345
+ }
346
+ );
347
+ var focusToggleReasons = [];
348
+ var getVisualizationListFromTaxonomy = ({
349
+ taxonomy,
350
+ handleCreateVisualization
351
+ }) => taxonomy.reduce(
352
+ (list, { visualizations, category }) => {
353
+ const availableVisualizations = visualizations.filter((props) => props.includeInToolbar);
354
+ if (availableVisualizations.length === 0) {
355
+ return list;
356
+ }
357
+ list.push(/* @__PURE__ */ react_default.createElement(Menu_default.Divider, { key: `menu-divider-${category}` }));
358
+ return list.concat(
359
+ availableVisualizations.map((vizProps) => {
360
+ const { label, type, initialOptions } = vizProps;
361
+ const Icon = vizProps.icon;
362
+ if (!type) {
363
+ return null;
364
+ }
365
+ const onClick = handleCreateVisualization({
366
+ type,
367
+ options: initialOptions
368
+ });
369
+ return /* @__PURE__ */ react_default.createElement(
370
+ Menu_default.Item,
371
+ {
372
+ "data-test": `add-${type}-button`,
373
+ "data-test-clickable": true,
374
+ onClick,
375
+ startAdornment: !!Icon && /* @__PURE__ */ react_default.createElement(Icon, { size: "18px" }),
376
+ key: `add-${type}-button`
377
+ },
378
+ label
379
+ );
380
+ })
381
+ );
382
+ },
383
+ []
384
+ );
385
+ var Charts = ({ dashboardApi, preset }) => {
386
+ const { showNewDataForViz = true } = (0, dashboard_context_exports.useFeatureFlags)();
387
+ const { family } = (0, themes_exports.useSplunkTheme)();
388
+ const { handleForceClose, handleRequestClose, handleRequestOpen, isOpen } = useDropdown_default({
389
+ isContentClickClose: false
390
+ });
391
+ const taxonomy = (0, react_exports.useMemo)(
392
+ () => new dashboard_ui_exports.VisualizationFilter(preset).taxonomy,
393
+ [preset]
394
+ );
395
+ const handleCreateVisualization = (0, react_exports.useCallback)(
396
+ ({
397
+ type,
398
+ options
399
+ }) => () => {
400
+ (0, dashboard_state_exports.batch)(() => {
401
+ dashboardApi == null ? void 0 : dashboardApi.createVisualization({
402
+ visualizationDefinition: { type, options }
403
+ });
404
+ if (showNewDataForViz) {
405
+ dashboardApi == null ? void 0 : dashboardApi.openPanel({
406
+ activePanel: "connectData",
407
+ panelProps: {
408
+ bindingType: "primary",
409
+ from: {
410
+ activePanel: "config"
411
+ }
412
+ }
413
+ });
414
+ }
415
+ });
416
+ handleForceClose();
417
+ },
418
+ [dashboardApi, showNewDataForViz, handleForceClose]
419
+ );
420
+ const visualizationList = (0, react_exports.useMemo)(
421
+ () => getVisualizationListFromTaxonomy({
422
+ taxonomy,
423
+ handleCreateVisualization
424
+ }),
425
+ [taxonomy, handleCreateVisualization]
426
+ );
427
+ const renderScrollableMenu = (0, react_exports.useCallback)(
428
+ ({ maxHeight }) => /* @__PURE__ */ react_default.createElement(
429
+ themes_exports.SplunkThemeProvider,
430
+ {
431
+ density: family === "enterprise" ? "comfortable" : "compact"
432
+ },
433
+ /* @__PURE__ */ react_default.createElement(
434
+ ScrollableMenu,
435
+ {
436
+ maxHeight,
437
+ "data-test": "add-chart-menu"
438
+ },
439
+ visualizationList
440
+ )
441
+ ),
442
+ [family, visualizationList]
443
+ );
444
+ return /* @__PURE__ */ react_default.createElement(Item_default, null, /* @__PURE__ */ react_default.createElement(
445
+ Dropdown_default,
446
+ {
447
+ focusToggleReasons,
448
+ onRequestClose: handleRequestClose,
449
+ onRequestOpen: handleRequestOpen,
450
+ open: isOpen,
451
+ toggle: ButtonToggle
452
+ },
453
+ renderScrollableMenu
454
+ ));
455
+ };
456
+ var Charts_default = Charts;
457
+
458
+ // esm-externals:@splunk/react-icons/Cog
459
+ var Cog_exports = {};
460
+ __export(Cog_exports, {
461
+ default: () => Cog_default
462
+ });
463
+ var defaultImport14 = __toESM(require("@splunk/react-icons/Cog"));
464
+ __reExport(Cog_exports, require("@splunk/react-icons/Cog"));
465
+ var Cog_default = "default" in defaultImport14 ? defaultImport14.default : defaultImport14;
466
+
467
+ // src/buttons/Config.tsx
468
+ var configurationIcon = prepareIcon({
469
+ Icon: Cog_default,
470
+ screenReaderContent: (0, i18n_exports._)("Configuration")
471
+ });
472
+ var Config = ({ dashboardApi }) => {
473
+ const configButtonRef = (0, dashboard_context_exports.useToolbarRef)("config");
474
+ const handleClick = (0, react_exports.useCallback)(() => {
475
+ const isOpen = (dashboardApi == null ? void 0 : dashboardApi.getOpenedPanel()) === "config";
476
+ if (isOpen) {
477
+ dashboardApi == null ? void 0 : dashboardApi.closePanel();
478
+ } else {
479
+ dashboardApi == null ? void 0 : dashboardApi.openPanel({
480
+ activePanel: "config",
481
+ panelProps: {
482
+ focusOnOpen: true
483
+ }
484
+ });
485
+ }
486
+ }, [dashboardApi]);
487
+ return /* @__PURE__ */ react_default.createElement(
488
+ IconButton_default,
489
+ {
490
+ buttonRef: configButtonRef,
491
+ testLabel: "config-button",
492
+ onClick: handleClick,
493
+ icon: configurationIcon
494
+ }
495
+ );
496
+ };
497
+ var Config_default = Config;
498
+
499
+ // esm-externals:@splunk/react-icons/ArrowBroadUnderbarDown
500
+ var ArrowBroadUnderbarDown_exports = {};
501
+ __export(ArrowBroadUnderbarDown_exports, {
502
+ default: () => ArrowBroadUnderbarDown_default
503
+ });
504
+ var defaultImport15 = __toESM(require("@splunk/react-icons/ArrowBroadUnderbarDown"));
505
+ __reExport(ArrowBroadUnderbarDown_exports, require("@splunk/react-icons/ArrowBroadUnderbarDown"));
506
+ var ArrowBroadUnderbarDown_default = "default" in defaultImport15 ? defaultImport15.default : defaultImport15;
507
+
508
+ // src/buttons/ContentExport.tsx
509
+ var icon = prepareIcon({
510
+ Icon: ArrowBroadUnderbarDown_default,
511
+ screenReaderContent: (0, i18n_exports._)("Export")
512
+ });
513
+ var ContentExport = ({ disabled, onClick }) => /* @__PURE__ */ react_default.createElement(
514
+ IconButton_default,
515
+ {
516
+ testLabel: "content-export-button",
517
+ onClick,
518
+ disabled: !!disabled,
519
+ icon
520
+ }
521
+ );
522
+ var ContentExport_default = ContentExport;
523
+
524
+ // esm-externals:@splunk/react-icons/CylinderMulti
525
+ var CylinderMulti_exports = {};
526
+ __export(CylinderMulti_exports, {
527
+ default: () => CylinderMulti_default
528
+ });
529
+ var defaultImport16 = __toESM(require("@splunk/react-icons/CylinderMulti"));
530
+ __reExport(CylinderMulti_exports, require("@splunk/react-icons/CylinderMulti"));
531
+ var CylinderMulti_default = "default" in defaultImport16 ? defaultImport16.default : defaultImport16;
532
+
533
+ // src/buttons/Data.tsx
534
+ var dataInputIcon = prepareIcon({
535
+ Icon: CylinderMulti_default,
536
+ screenReaderContent: (0, i18n_exports._)("Data source overview")
537
+ });
538
+ var Data = ({ dashboardApi }) => {
539
+ const dataButtonRef = (0, dashboard_context_exports.useToolbarRef)("dataOverview");
540
+ const handleClick = (0, react_exports.useCallback)(() => {
541
+ const isOpen = (dashboardApi == null ? void 0 : dashboardApi.getOpenedPanel()) === "dataOverview";
542
+ if (isOpen) {
543
+ dashboardApi.closePanel();
544
+ } else {
545
+ (0, dashboard_state_exports.batch)(() => {
546
+ dashboardApi == null ? void 0 : dashboardApi.selectVisualization([]);
547
+ dashboardApi == null ? void 0 : dashboardApi.openPanel({
548
+ activePanel: "dataOverview",
549
+ panelProps: {
550
+ focusOnOpen: true
551
+ }
552
+ });
553
+ });
554
+ }
555
+ }, [dashboardApi]);
556
+ return /* @__PURE__ */ react_default.createElement(
557
+ IconButton_default,
558
+ {
559
+ buttonRef: dataButtonRef,
560
+ testLabel: "data-button",
561
+ onClick: handleClick,
562
+ icon: dataInputIcon
563
+ }
564
+ );
565
+ };
566
+ var Data_default = Data;
567
+
568
+ // esm-externals:@splunk/react-icons/Square
569
+ var Square_exports = {};
570
+ __export(Square_exports, {
571
+ default: () => Square_default
572
+ });
573
+ var defaultImport17 = __toESM(require("@splunk/react-icons/Square"));
574
+ __reExport(Square_exports, require("@splunk/react-icons/Square"));
575
+ var Square_default = "default" in defaultImport17 ? defaultImport17.default : defaultImport17;
576
+
577
+ // src/buttons/EmptyVisualization.tsx
578
+ var icon2 = prepareIcon({
579
+ Icon: Square_default,
580
+ screenReaderContent: (0, i18n_exports._)("Add rectangle")
581
+ });
582
+ var EmptyVisualization = ({ dashboardApi }) => {
583
+ const handleClick = (0, react_exports.useCallback)(() => __async(void 0, null, function* () {
584
+ dashboardApi == null ? void 0 : dashboardApi.createVisualization({
585
+ visualizationDefinition: {
586
+ type: "splunk.rectangle",
587
+ options: {
588
+ fillColor: "transparent",
589
+ strokeColor: "transparent"
590
+ }
591
+ }
592
+ });
593
+ dashboardApi == null ? void 0 : dashboardApi.openPanel({
594
+ activePanel: "config"
595
+ });
596
+ }), [dashboardApi]);
597
+ return /* @__PURE__ */ react_default.createElement(
598
+ IconButton_default,
599
+ {
600
+ testLabel: "empty-viz-button",
601
+ onClick: handleClick,
602
+ icon: icon2
603
+ }
604
+ );
605
+ };
606
+ var EmptyVisualization_default = EmptyVisualization;
607
+
608
+ // esm-externals:@splunk/dashboard-utils
609
+ var dashboard_utils_exports = {};
610
+ __export(dashboard_utils_exports, {
611
+ default: () => dashboard_utils_default
612
+ });
613
+ var defaultImport18 = __toESM(require("@splunk/dashboard-utils"));
614
+ __reExport(dashboard_utils_exports, require("@splunk/dashboard-utils"));
615
+ var dashboard_utils_default = "default" in defaultImport18 ? defaultImport18.default : defaultImport18;
616
+
617
+ // src/buttons/ExportDashboardButton.tsx
618
+ var downloadIcon = /* @__PURE__ */ react_default.createElement(ArrowBroadUnderbarDown_default, null);
619
+ var ExportDashboardButton = ({
620
+ appearance = "secondary",
621
+ scale = 1
622
+ }) => {
623
+ const [open, setOpen] = (0, react_exports.useState)(false);
624
+ const handleOpen = (0, react_exports.useCallback)(() => {
625
+ setOpen(true);
626
+ }, []);
627
+ const handleClose = (0, react_exports.useCallback)(() => {
628
+ setOpen(false);
629
+ }, []);
630
+ return /* @__PURE__ */ react_default.createElement(react_default.Fragment, null, /* @__PURE__ */ react_default.createElement(
631
+ Button_default,
632
+ {
633
+ icon: downloadIcon,
634
+ key: "export-dashboard-button",
635
+ "data-clickable": true,
636
+ "data-test": "export-dashboard-button",
637
+ label: (0, i18n_exports._)("Download"),
638
+ appearance: appearance || "secondary",
639
+ onClick: handleOpen
640
+ }
641
+ ), /* @__PURE__ */ react_default.createElement(
642
+ dashboard_ui_exports.ExportDashboardModal,
643
+ {
644
+ open,
645
+ onModalClose: handleClose,
646
+ scale,
647
+ returnFocus: dashboard_utils_exports.noop
648
+ }
649
+ ));
650
+ };
651
+ var ExportDashboardButton_default = ExportDashboardButton;
652
+
653
+ // esm-externals:@splunk/react-icons/ChevronsOut
654
+ var ChevronsOut_exports = {};
655
+ __export(ChevronsOut_exports, {
656
+ default: () => ChevronsOut_default
657
+ });
658
+ var defaultImport19 = __toESM(require("@splunk/react-icons/ChevronsOut"));
659
+ __reExport(ChevronsOut_exports, require("@splunk/react-icons/ChevronsOut"));
660
+ var ChevronsOut_default = "default" in defaultImport19 ? defaultImport19.default : defaultImport19;
661
+
662
+ // src/buttons/Fullscreen.tsx
663
+ var icon3 = prepareIcon({
664
+ Icon: ChevronsOut_default,
665
+ screenReaderContent: (0, i18n_exports._)("Fullscreen")
666
+ });
667
+ var FullScreen = ({ dashboardApi }) => {
668
+ const isFullscreen = !!(0, dashboard_state_exports.useSelector)(dashboard_state_exports.selectFullscreenElement);
669
+ const handleClick = (0, react_exports.useCallback)(() => {
670
+ dashboardApi == null ? void 0 : dashboardApi.enterFullscreen();
671
+ }, [dashboardApi]);
672
+ return /* @__PURE__ */ react_default.createElement(
673
+ IconButton_default,
674
+ {
675
+ testLabel: "fullscreen-button",
676
+ onClick: handleClick,
677
+ disabled: isFullscreen,
678
+ icon: icon3
679
+ }
680
+ );
681
+ };
682
+ var Fullscreen_default = FullScreen;
683
+
684
+ // esm-externals:@splunk/react-ui/Switch
685
+ var Switch_exports = {};
686
+ __export(Switch_exports, {
687
+ default: () => Switch_default
688
+ });
689
+ var defaultImport20 = __toESM(require("@splunk/react-ui/Switch"));
690
+ __reExport(Switch_exports, require("@splunk/react-ui/Switch"));
691
+ var Switch_default = "default" in defaultImport20 ? defaultImport20.default : defaultImport20;
692
+
693
+ // src/components/ItemSeparator.tsx
694
+ var ItemSeparator = styled_components_default.div`
695
+ border-left-width: 1px;
696
+ border-left-style: solid;
697
+ border-left-color: ${themes_exports.variables.interactiveColorBorder};
698
+ width: 0px;
699
+ height: ${themes_exports.variables.inputHeight};
700
+ `;
701
+ var ItemSeparator_default = ItemSeparator;
702
+
703
+ // src/buttons/GridLineSwitch.tsx
704
+ var SwitchContainer = styled_components_default.div`
705
+ display: flex;
706
+ align-items: center;
707
+ flex-direction: row;
708
+ gap: ${themes_exports.variables.spacingSmall};
709
+ `;
710
+ var GridLineSwitch = ({
711
+ dashboardApi,
712
+ mode,
713
+ showSeparator,
714
+ layoutType
715
+ }) => {
716
+ var _a;
717
+ const showGrid = (_a = (0, dashboard_state_exports.useSelector)(dashboard_state_exports.selectAreGridLinesEnabled)) != null ? _a : false;
718
+ const handleClick = (0, react_exports.useCallback)(() => {
719
+ dashboardApi == null ? void 0 : dashboardApi.toggleGridLines(!showGrid);
720
+ }, [dashboardApi, showGrid]);
721
+ const separator = (0, react_exports.useMemo)(
722
+ () => showSeparator ? /* @__PURE__ */ react_default.createElement(ItemSeparator_default, { key: "item-separator" }) : null,
723
+ [showSeparator]
724
+ );
725
+ if (!dashboardApi || mode !== "edit" || layoutType === "grid") {
726
+ return null;
727
+ }
728
+ return /* @__PURE__ */ react_default.createElement(SwitchContainer, { key: "grid-line-switch" }, /* @__PURE__ */ react_default.createElement(
729
+ Switch_default,
730
+ {
731
+ onClick: handleClick,
732
+ selected: showGrid,
733
+ selectedLabel: (0, i18n_exports._)("Gridlines displayed"),
734
+ unselectedLabel: (0, i18n_exports._)("Gridlines not displayed"),
735
+ appearance: "toggle",
736
+ "data-test": "gridline-toggle",
737
+ "data-clickable": true
738
+ },
739
+ (0, i18n_exports._)("Gridlines")
740
+ ), separator);
741
+ };
742
+ var GridLineSwitch_default = GridLineSwitch;
743
+
744
+ // esm-externals:@splunk/react-icons/ChartSingleValueIcon
745
+ var ChartSingleValueIcon_exports = {};
746
+ __export(ChartSingleValueIcon_exports, {
747
+ default: () => ChartSingleValueIcon_default
748
+ });
749
+ var defaultImport21 = __toESM(require("@splunk/react-icons/ChartSingleValueIcon"));
750
+ __reExport(ChartSingleValueIcon_exports, require("@splunk/react-icons/ChartSingleValueIcon"));
751
+ var ChartSingleValueIcon_default = "default" in defaultImport21 ? defaultImport21.default : defaultImport21;
752
+
753
+ // src/buttons/IconGallery.tsx
754
+ var MenusContainer = styled_components_default.div`
755
+ display: flex;
756
+ padding: 5px;
757
+ `;
758
+ var iconGalleryDropdown = prepareIcon({
759
+ Icon: ChartSingleValueIcon_default,
760
+ screenReaderContent: (0, i18n_exports._)("Add icon"),
761
+ isMenu: true
762
+ });
763
+ var focusToggleReasons2 = [];
764
+ var IconGallery = ({ dashboardApi }) => {
765
+ const {
766
+ handleForceClose,
767
+ handleRequestClose,
768
+ handleRequestOpen,
769
+ setHasChildModal,
770
+ isOpen
771
+ } = useDropdown_default({
772
+ isContentClickClose: false
773
+ });
774
+ const ButtonToggle6 = (0, react_exports.useMemo)(
775
+ () => /* @__PURE__ */ react_default.createElement(
776
+ StyledDropdownButton,
777
+ {
778
+ "data-test": "icon-gallery-button",
779
+ "data-clickable": true,
780
+ appearance: "subtle",
781
+ icon: iconGalleryDropdown
782
+ }
783
+ ),
784
+ []
785
+ );
786
+ const handlePanelClick = (0, react_exports.useCallback)(
787
+ (iconURL) => __async(void 0, null, function* () {
788
+ dashboardApi == null ? void 0 : dashboardApi.createVisualization({
789
+ visualizationDefinition: {
790
+ type: "splunk.singlevalueicon",
791
+ options: {
792
+ showValue: false,
793
+ icon: iconURL
794
+ }
795
+ }
796
+ });
797
+ dashboardApi == null ? void 0 : dashboardApi.openPanel({
798
+ activePanel: "config"
799
+ });
800
+ handleForceClose();
801
+ }),
802
+ [dashboardApi, handleForceClose]
803
+ );
804
+ return /* @__PURE__ */ react_default.createElement(Item_default, null, /* @__PURE__ */ react_default.createElement(
805
+ Dropdown_default,
806
+ {
807
+ focusToggleReasons: focusToggleReasons2,
808
+ onRequestClose: handleRequestClose,
809
+ onRequestOpen: handleRequestOpen,
810
+ open: isOpen,
811
+ toggle: ButtonToggle6
812
+ },
813
+ /* @__PURE__ */ react_default.createElement(MenusContainer, { "data-test": "icon-menu", "data-open": isOpen }, /* @__PURE__ */ react_default.createElement(
814
+ dashboard_ui_exports.IconGallery,
815
+ {
816
+ onClick: handlePanelClick,
817
+ setHasChildModal
818
+ }
819
+ ))
820
+ ));
821
+ };
822
+ var IconGallery_default = IconGallery;
823
+
824
+ // esm-externals:@splunk/react-icons/QuestionCircle
825
+ var QuestionCircle_exports = {};
826
+ __export(QuestionCircle_exports, {
827
+ default: () => QuestionCircle_default
828
+ });
829
+ var defaultImport22 = __toESM(require("@splunk/react-icons/QuestionCircle"));
830
+ __reExport(QuestionCircle_exports, require("@splunk/react-icons/QuestionCircle"));
831
+ var QuestionCircle_default = "default" in defaultImport22 ? defaultImport22.default : defaultImport22;
832
+
833
+ // src/buttons/HelpButton.tsx
834
+ var focusToggleReasons3 = [];
835
+ var HelpIcon = prepareIcon({
836
+ Icon: QuestionCircle_default,
837
+ screenReaderContent: (0, i18n_exports._)("Help links"),
838
+ isMenu: true
839
+ });
840
+ var ButtonToggle2 = /* @__PURE__ */ react_default.createElement(
841
+ StyledDropdownButton,
842
+ {
843
+ appearance: "subtle",
844
+ "data-clickable": true,
845
+ "data-test": "help-button",
846
+ icon: HelpIcon
847
+ }
848
+ );
849
+ var HelpButton = ({ helpLinks = [] }) => {
850
+ const { handleRequestClose, handleRequestOpen, isOpen } = useDropdown_default({
851
+ isContentClickClose: true
852
+ });
853
+ const HelpLinks = (0, react_exports.useMemo)(() => {
854
+ if (helpLinks.length === 0) {
855
+ return [
856
+ /* @__PURE__ */ react_default.createElement(
857
+ Menu_default.Item,
858
+ {
859
+ "data-test": "no-links-provided",
860
+ key: "no-links-provided",
861
+ disabled: true
862
+ },
863
+ (0, i18n_exports._)("No Links")
864
+ )
865
+ ];
866
+ }
867
+ return helpLinks.map((link) => {
868
+ const { label = "", description = "", url } = link;
869
+ const key = label.replace(/\s/g, "");
870
+ return /* @__PURE__ */ react_default.createElement(
871
+ Menu_default.Item,
872
+ {
873
+ "data-test": "help-link",
874
+ "data-test-clickable": true,
875
+ to: url,
876
+ description,
877
+ key: `help-link-${key}`,
878
+ openInNewContext: true
879
+ },
880
+ label
881
+ );
882
+ });
883
+ }, [helpLinks]);
884
+ return /* @__PURE__ */ react_default.createElement(Item_default, null, /* @__PURE__ */ react_default.createElement(
885
+ Dropdown_default,
886
+ {
887
+ focusToggleReasons: focusToggleReasons3,
888
+ onRequestClose: handleRequestClose,
889
+ onRequestOpen: handleRequestOpen,
890
+ open: isOpen,
891
+ toggle: ButtonToggle2
892
+ },
893
+ /* @__PURE__ */ react_default.createElement(Menu_default, null, HelpLinks)
894
+ ));
895
+ };
896
+ var HelpButton_default = HelpButton;
897
+
898
+ // esm-externals:@splunk/react-icons/Picture
899
+ var Picture_exports = {};
900
+ __export(Picture_exports, {
901
+ default: () => Picture_default
902
+ });
903
+ var defaultImport23 = __toESM(require("@splunk/react-icons/Picture"));
904
+ __reExport(Picture_exports, require("@splunk/react-icons/Picture"));
905
+ var Picture_default = "default" in defaultImport23 ? defaultImport23.default : defaultImport23;
906
+
907
+ // src/buttons/Image.tsx
908
+ var icon4 = prepareIcon({
909
+ Icon: Picture_default,
910
+ screenReaderContent: (0, i18n_exports._)("Add image")
911
+ });
912
+ var Image = ({ dashboardApi }) => {
913
+ const handleClick = (0, react_exports.useCallback)(() => __async(void 0, null, function* () {
914
+ dashboardApi == null ? void 0 : dashboardApi.createVisualization({
915
+ visualizationDefinition: {
916
+ type: "splunk.image",
917
+ options: {
918
+ preserveAspectRatio: true
919
+ }
920
+ }
921
+ });
922
+ dashboardApi == null ? void 0 : dashboardApi.openPanel({
923
+ activePanel: "config"
924
+ });
925
+ }), [dashboardApi]);
926
+ return /* @__PURE__ */ react_default.createElement(
927
+ IconButton_default,
928
+ {
929
+ testLabel: "image-button",
930
+ onClick: handleClick,
931
+ icon: icon4
932
+ }
933
+ );
934
+ };
935
+ var Image_default = Image;
936
+
937
+ // src/buttons/ImageGallery.tsx
938
+ var MenusContainer2 = styled_components_default.div`
939
+ display: flex;
940
+ padding: 5px;
941
+ `;
942
+ var imageGalleryDropdown = prepareIcon({
943
+ Icon: Picture_default,
944
+ screenReaderContent: (0, i18n_exports._)("Add image"),
945
+ isMenu: true
946
+ });
947
+ var ButtonToggle3 = /* @__PURE__ */ react_default.createElement(
948
+ StyledDropdownButton,
949
+ {
950
+ "data-test": "image-gallery-button",
951
+ "data-clickable": true,
952
+ appearance: "subtle",
953
+ icon: imageGalleryDropdown
954
+ }
955
+ );
956
+ var focusToggleReasons4 = [];
957
+ var ImageGallery = ({ dashboardApi }) => {
958
+ const {
959
+ handleForceClose,
960
+ handleRequestClose,
961
+ handleRequestOpen,
962
+ setHasChildModal,
963
+ isOpen
964
+ } = useDropdown_default({
965
+ isContentClickClose: false
966
+ });
967
+ const handlePanelClick = (0, react_exports.useCallback)(
968
+ (imageUrl) => __async(void 0, null, function* () {
969
+ dashboardApi == null ? void 0 : dashboardApi.createVisualization({
970
+ visualizationDefinition: {
971
+ type: "splunk.image",
972
+ options: {
973
+ preserveAspectRatio: true,
974
+ src: imageUrl
975
+ }
976
+ }
977
+ });
978
+ dashboardApi == null ? void 0 : dashboardApi.openPanel({
979
+ activePanel: "config"
980
+ });
981
+ handleForceClose();
982
+ }),
983
+ [dashboardApi, handleForceClose]
984
+ );
985
+ return /* @__PURE__ */ react_default.createElement(Item_default, null, /* @__PURE__ */ react_default.createElement(
986
+ Dropdown_default,
987
+ {
988
+ focusToggleReasons: focusToggleReasons4,
989
+ onRequestClose: handleRequestClose,
990
+ onRequestOpen: handleRequestOpen,
991
+ open: isOpen,
992
+ toggle: ButtonToggle3
993
+ },
994
+ /* @__PURE__ */ react_default.createElement(MenusContainer2, null, /* @__PURE__ */ react_default.createElement(
995
+ dashboard_ui_exports.ImageGallery,
996
+ {
997
+ onClick: handlePanelClick,
998
+ setHasChildModal
999
+ }
1000
+ ))
1001
+ ));
1002
+ };
1003
+ var ImageGallery_default = ImageGallery;
1004
+
1005
+ // esm-externals:lodash
1006
+ var lodash_exports = {};
1007
+ __export(lodash_exports, {
1008
+ default: () => lodash_default
1009
+ });
1010
+ var defaultImport24 = __toESM(require("lodash"));
1011
+ __reExport(lodash_exports, require("lodash"));
1012
+ var lodash_default = "default" in defaultImport24 ? defaultImport24.default : defaultImport24;
1013
+
1014
+ // esm-externals:@splunk/react-icons/SlidersTripleHorizontal
1015
+ var SlidersTripleHorizontal_exports = {};
1016
+ __export(SlidersTripleHorizontal_exports, {
1017
+ default: () => SlidersTripleHorizontal_default
1018
+ });
1019
+ var defaultImport25 = __toESM(require("@splunk/react-icons/SlidersTripleHorizontal"));
1020
+ __reExport(SlidersTripleHorizontal_exports, require("@splunk/react-icons/SlidersTripleHorizontal"));
1021
+ var SlidersTripleHorizontal_default = "default" in defaultImport25 ? defaultImport25.default : defaultImport25;
1022
+
1023
+ // esm-externals:@splunk/dashboard-definition
1024
+ var dashboard_definition_exports = {};
1025
+ __export(dashboard_definition_exports, {
1026
+ default: () => dashboard_definition_default
1027
+ });
1028
+ var defaultImport26 = __toESM(require("@splunk/dashboard-definition"));
1029
+ __reExport(dashboard_definition_exports, require("@splunk/dashboard-definition"));
1030
+ var dashboard_definition_default = "default" in defaultImport26 ? defaultImport26.default : defaultImport26;
1031
+
1032
+ // src/buttons/Inputs.tsx
1033
+ var focusToggleReasons5 = [];
1034
+ var DEFAULT_PRESET_MAP = Object.freeze({});
1035
+ var addInputIcon = prepareIcon({
1036
+ Icon: SlidersTripleHorizontal_default,
1037
+ screenReaderContent: (0, i18n_exports._)("Add input"),
1038
+ isMenu: true
1039
+ });
1040
+ var ButtonToggle4 = /* @__PURE__ */ react_default.createElement(
1041
+ StyledDropdownButton,
1042
+ {
1043
+ appearance: "subtle",
1044
+ "data-clickable": true,
1045
+ "data-test": "inputs-button",
1046
+ icon: addInputIcon
1047
+ }
1048
+ );
1049
+ var onCreateInputClickFactory = ({
1050
+ type,
1051
+ defaultConfig,
1052
+ tokenPrefix,
1053
+ showToken,
1054
+ dashboardApi
1055
+ }) => () => {
1056
+ if (!dashboardApi) {
1057
+ return;
1058
+ }
1059
+ const newConfig = __spreadProps(__spreadValues({}, defaultConfig), {
1060
+ type,
1061
+ options: __spreadValues({}, defaultConfig.options)
1062
+ });
1063
+ if (showToken) {
1064
+ newConfig.options.token = dashboard_definition_exports.DashboardDefinition.fromJSON(
1065
+ dashboardApi == null ? void 0 : dashboardApi.getDefinition()
1066
+ ).nextTokenId(tokenPrefix);
1067
+ }
1068
+ dashboardApi.addInput(newConfig);
1069
+ dashboardApi.openPanel({ activePanel: "config" });
1070
+ };
1071
+ var Inputs = ({
1072
+ dashboardApi,
1073
+ preset = DEFAULT_PRESET_MAP
1074
+ }) => {
1075
+ const { handleRequestClose, handleRequestOpen, isOpen } = useDropdown_default({
1076
+ isContentClickClose: true
1077
+ });
1078
+ const InputTypeButtons = (0, react_exports.useMemo)(() => {
1079
+ const buttons = [];
1080
+ const inputs = preset == null ? void 0 : preset.inputs;
1081
+ (0, lodash_exports.each)(inputs, (InputImpl, type) => {
1082
+ const {
1083
+ baseShape = {},
1084
+ label = (0, i18n_exports._)(`${type} Input`),
1085
+ description = "",
1086
+ tokenPrefix = "token",
1087
+ includeInToolbar = true,
1088
+ icon: Icon = SlidersTripleHorizontal_default,
1089
+ // showToken flags whether or not the input has a token assigned on creation
1090
+ showToken = true
1091
+ } = InputImpl.config || {};
1092
+ if (!includeInToolbar) {
1093
+ return;
1094
+ }
1095
+ const handleClick = onCreateInputClickFactory({
1096
+ type,
1097
+ defaultConfig: baseShape,
1098
+ tokenPrefix,
1099
+ showToken,
1100
+ dashboardApi
1101
+ });
1102
+ const inputIcon = /* @__PURE__ */ react_default.createElement(Icon, { width: "24px", height: "24px" });
1103
+ buttons.push(
1104
+ /* @__PURE__ */ react_default.createElement(
1105
+ Menu_default.Item,
1106
+ {
1107
+ "data-test": `add-${type}-button`,
1108
+ "data-test-clickable": true,
1109
+ onClick: handleClick,
1110
+ startAdornment: inputIcon,
1111
+ description,
1112
+ key: `add-${type}-button`
1113
+ },
1114
+ label
1115
+ )
1116
+ );
1117
+ });
1118
+ if (buttons.length === 0) {
1119
+ buttons.push(
1120
+ /* @__PURE__ */ react_default.createElement(
1121
+ Menu_default.Item,
1122
+ {
1123
+ "data-test": "no-inputs-in-preset",
1124
+ key: "no-inputs-in-preset",
1125
+ disabled: true
1126
+ },
1127
+ (0, i18n_exports._)("No Inputs")
1128
+ )
1129
+ );
1130
+ }
1131
+ return buttons;
1132
+ }, [preset, dashboardApi]);
1133
+ return /* @__PURE__ */ react_default.createElement(Item_default, null, /* @__PURE__ */ react_default.createElement(
1134
+ Dropdown_default,
1135
+ {
1136
+ focusToggleReasons: focusToggleReasons5,
1137
+ onRequestClose: handleRequestClose,
1138
+ onRequestOpen: handleRequestOpen,
1139
+ open: isOpen,
1140
+ toggle: ButtonToggle4
1141
+ },
1142
+ /* @__PURE__ */ react_default.createElement(Menu_default, null, InputTypeButtons)
1143
+ ));
1144
+ };
1145
+ var Inputs_default = Inputs;
1146
+
1147
+ // esm-externals:@splunk/react-icons/Markdown
1148
+ var Markdown_exports = {};
1149
+ __export(Markdown_exports, {
1150
+ default: () => Markdown_default
1151
+ });
1152
+ var defaultImport27 = __toESM(require("@splunk/react-icons/Markdown"));
1153
+ __reExport(Markdown_exports, require("@splunk/react-icons/Markdown"));
1154
+ var Markdown_default = "default" in defaultImport27 ? defaultImport27.default : defaultImport27;
1155
+
1156
+ // src/buttons/Markdown.tsx
1157
+ var icon5 = prepareIcon({
1158
+ Icon: Markdown_default,
1159
+ screenReaderContent: (0, i18n_exports._)("Add markdown text")
1160
+ });
1161
+ var Markdown = ({ dashboardApi }) => {
1162
+ const handleClick = (0, react_exports.useCallback)(() => {
1163
+ dashboardApi == null ? void 0 : dashboardApi.createVisualization({
1164
+ visualizationDefinition: {
1165
+ type: "splunk.markdown",
1166
+ options: {
1167
+ markdown: ""
1168
+ }
1169
+ }
1170
+ });
1171
+ dashboardApi == null ? void 0 : dashboardApi.openPanel({
1172
+ activePanel: "config"
1173
+ });
1174
+ }, [dashboardApi]);
1175
+ return /* @__PURE__ */ react_default.createElement(
1176
+ IconButton_default,
1177
+ {
1178
+ testLabel: "markdown-button",
1179
+ onClick: handleClick,
1180
+ icon: icon5
1181
+ }
1182
+ );
1183
+ };
1184
+ var Markdown_default2 = Markdown;
1185
+
1186
+ // src/buttons/ModeSwitch.tsx
1187
+ var ModeSwitch = () => {
1188
+ const mode = (0, dashboard_state_exports.useSelector)(dashboard_state_exports.selectMode);
1189
+ const dashboardApi = (0, dashboard_context_exports.useDashboardApi)();
1190
+ const appearance = mode === "edit" ? "secondary" : "primary";
1191
+ const label = mode === "edit" ? (0, i18n_exports._)("View") : (0, i18n_exports._)("Edit");
1192
+ const handleClick = (0, react_exports.useCallback)(() => {
1193
+ dashboardApi == null ? void 0 : dashboardApi.switchMode(mode === "edit" ? "view" : "edit");
1194
+ }, [mode, dashboardApi]);
1195
+ return /* @__PURE__ */ react_default.createElement(Item_default, null, /* @__PURE__ */ react_default.createElement(
1196
+ Button_default,
1197
+ {
1198
+ key: "mode-button",
1199
+ "data-clickable": true,
1200
+ "data-test": "mode-button",
1201
+ inline: false,
1202
+ label,
1203
+ appearance,
1204
+ onClick: handleClick
1205
+ }
1206
+ ));
1207
+ };
1208
+ var ModeSwitch_default = ModeSwitch;
1209
+
1210
+ // esm-externals:@splunk/react-icons/ArrowBowRight
1211
+ var ArrowBowRight_exports = {};
1212
+ __export(ArrowBowRight_exports, {
1213
+ default: () => ArrowBowRight_default
1214
+ });
1215
+ var defaultImport28 = __toESM(require("@splunk/react-icons/ArrowBowRight"));
1216
+ __reExport(ArrowBowRight_exports, require("@splunk/react-icons/ArrowBowRight"));
1217
+ var ArrowBowRight_default = "default" in defaultImport28 ? defaultImport28.default : defaultImport28;
1218
+
1219
+ // src/buttons/Redo.tsx
1220
+ var icon6 = prepareIcon({
1221
+ Icon: ArrowBowRight_default,
1222
+ screenReaderContent: (0, i18n_exports._)("Redo")
1223
+ });
1224
+ var Redo = ({ dashboardApi }) => {
1225
+ const [canRedo, setCanRedo] = (0, react_exports.useState)(
1226
+ () => {
1227
+ var _a;
1228
+ return (_a = dashboardApi == null ? void 0 : dashboardApi.canRedo()) != null ? _a : false;
1229
+ }
1230
+ );
1231
+ const onDefinitionChange = (0, react_exports.useCallback)(() => {
1232
+ var _a;
1233
+ setCanRedo((_a = dashboardApi == null ? void 0 : dashboardApi.canRedo()) != null ? _a : false);
1234
+ }, [dashboardApi]);
1235
+ (0, react_exports.useEffect)(() => {
1236
+ if (!(dashboardApi == null ? void 0 : dashboardApi.historyManager)) {
1237
+ return () => void 0;
1238
+ }
1239
+ return dashboardApi.historyManager.subscribe({
1240
+ onAdd: onDefinitionChange,
1241
+ onUndo: onDefinitionChange,
1242
+ onRedo: onDefinitionChange
1243
+ });
1244
+ }, [dashboardApi, onDefinitionChange]);
1245
+ const handleClick = (0, react_exports.useCallback)(() => {
1246
+ if (!dashboardApi) {
1247
+ return;
1248
+ }
1249
+ dashboardApi.redo({ source: "toolbar" });
1250
+ }, [dashboardApi]);
1251
+ return /* @__PURE__ */ react_default.createElement(
1252
+ IconButton_default,
1253
+ {
1254
+ testLabel: "redo-button",
1255
+ onClick: handleClick,
1256
+ disabled: !canRedo,
1257
+ icon: icon6
1258
+ }
1259
+ );
1260
+ };
1261
+ var Redo_default = Redo;
1262
+
1263
+ // esm-externals:@splunk/react-icons/Circle
1264
+ var Circle_exports = {};
1265
+ __export(Circle_exports, {
1266
+ default: () => Circle_default
1267
+ });
1268
+ var defaultImport29 = __toESM(require("@splunk/react-icons/Circle"));
1269
+ __reExport(Circle_exports, require("@splunk/react-icons/Circle"));
1270
+ var Circle_default = "default" in defaultImport29 ? defaultImport29.default : defaultImport29;
1271
+
1272
+ // esm-externals:@splunk/react-icons/Line
1273
+ var Line_exports = {};
1274
+ __export(Line_exports, {
1275
+ default: () => Line_default
1276
+ });
1277
+ var defaultImport30 = __toESM(require("@splunk/react-icons/Line"));
1278
+ __reExport(Line_exports, require("@splunk/react-icons/Line"));
1279
+ var Line_default = "default" in defaultImport30 ? defaultImport30.default : defaultImport30;
1280
+
1281
+ // esm-externals:@splunk/react-icons/ShapesVariety
1282
+ var ShapesVariety_exports = {};
1283
+ __export(ShapesVariety_exports, {
1284
+ default: () => ShapesVariety_default
1285
+ });
1286
+ var defaultImport31 = __toESM(require("@splunk/react-icons/ShapesVariety"));
1287
+ __reExport(ShapesVariety_exports, require("@splunk/react-icons/ShapesVariety"));
1288
+ var ShapesVariety_default = "default" in defaultImport31 ? defaultImport31.default : defaultImport31;
1289
+
1290
+ // src/PopoverItemButton.tsx
1291
+ var StyledContentWrapper = styled_components_default.span`
1292
+ display: flex;
1293
+ flex-direction: row;
1294
+ justify-content: left;
1295
+ align-items: center;
1296
+ max-width: 100%;
1297
+ `;
1298
+ var StyledIcon = styled_components_default.span`
1299
+ display: inline-block;
1300
+ padding-right: 8px;
1301
+ `;
1302
+ var StyledLabel = styled_components_default.span`
1303
+ text-overflow: ellipsis;
1304
+ overflow: hidden;
1305
+ flex: 0 1 auto;
1306
+ `;
1307
+ 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));
1308
+ var PopoverItemButton_default = PopoverItemButton;
1309
+
1310
+ // src/buttons/Shapes.tsx
1311
+ var shapesDropdown = prepareIcon({
1312
+ Icon: ShapesVariety_default,
1313
+ screenReaderContent: (0, i18n_exports._)("Add shape"),
1314
+ isMenu: true
1315
+ });
1316
+ var ButtonToggle5 = /* @__PURE__ */ react_default.createElement(
1317
+ StyledDropdownButton,
1318
+ {
1319
+ appearance: "subtle",
1320
+ "data-clickable": true,
1321
+ "data-test": "shapes-button",
1322
+ icon: shapesDropdown
1323
+ }
1324
+ );
1325
+ var focusToggleReasons6 = [];
1326
+ var circleIcon = /* @__PURE__ */ react_default.createElement(Circle_default, null);
1327
+ var uncheckedBoxIcon = /* @__PURE__ */ react_default.createElement(Square_default, null);
1328
+ var lineIcon = /* @__PURE__ */ react_default.createElement(Line_default, null);
1329
+ var Shapes = ({ dashboardApi, layoutType }) => {
1330
+ const supportLine = layoutType === "absolute";
1331
+ const { handleRequestClose, handleRequestOpen, isOpen } = useDropdown_default({
1332
+ isContentClickClose: true
1333
+ });
1334
+ const handleCreateVizButtonClick = (0, react_exports.useCallback)(
1335
+ (vizToCreate, layoutItemType) => {
1336
+ return () => {
1337
+ dashboardApi == null ? void 0 : dashboardApi.createVisualization({
1338
+ visualizationDefinition: vizToCreate,
1339
+ layoutItemType
1340
+ });
1341
+ dashboardApi == null ? void 0 : dashboardApi.openPanel({ activePanel: "config" });
1342
+ };
1343
+ },
1344
+ [dashboardApi]
1345
+ );
1346
+ return /* @__PURE__ */ react_default.createElement(Item_default, null, /* @__PURE__ */ react_default.createElement(
1347
+ Dropdown_default,
1348
+ {
1349
+ focusToggleReasons: focusToggleReasons6,
1350
+ onRequestClose: handleRequestClose,
1351
+ onRequestOpen: handleRequestOpen,
1352
+ open: isOpen,
1353
+ toggle: ButtonToggle5
1354
+ },
1355
+ /* @__PURE__ */ react_default.createElement(Menu_default, { "data-test": "shapes-dropdown-children-container" }, /* @__PURE__ */ react_default.createElement(
1356
+ Menu_default.Item,
1357
+ {
1358
+ "data-test": "ellipse-button",
1359
+ onClick: handleCreateVizButtonClick({
1360
+ type: "splunk.ellipse"
1361
+ })
1362
+ },
1363
+ /* @__PURE__ */ react_default.createElement(
1364
+ PopoverItemButton_default,
1365
+ {
1366
+ icon: circleIcon,
1367
+ label: (0, i18n_exports._)("Ellipse")
1368
+ }
1369
+ )
1370
+ ), /* @__PURE__ */ react_default.createElement(
1371
+ Menu_default.Item,
1372
+ {
1373
+ "data-test": "rectangle-button",
1374
+ onClick: handleCreateVizButtonClick({
1375
+ type: "splunk.rectangle"
1376
+ })
1377
+ },
1378
+ /* @__PURE__ */ react_default.createElement(
1379
+ PopoverItemButton_default,
1380
+ {
1381
+ icon: uncheckedBoxIcon,
1382
+ label: (0, i18n_exports._)("Rectangle")
1383
+ }
1384
+ )
1385
+ ), supportLine && /* @__PURE__ */ react_default.createElement(
1386
+ Menu_default.Item,
1387
+ {
1388
+ "data-test": "line-button",
1389
+ onClick: handleCreateVizButtonClick(
1390
+ {
1391
+ type: "abslayout.line"
1392
+ },
1393
+ "line"
1394
+ )
1395
+ },
1396
+ /* @__PURE__ */ react_default.createElement(
1397
+ PopoverItemButton_default,
1398
+ {
1399
+ icon: lineIcon,
1400
+ label: (0, i18n_exports._)("Line")
1401
+ }
1402
+ )
1403
+ ))
1404
+ ));
1405
+ };
1406
+ var Shapes_default = Shapes;
1407
+
1408
+ // esm-externals:@splunk/react-icons/WindowChevronsSlash
1409
+ var WindowChevronsSlash_exports = {};
1410
+ __export(WindowChevronsSlash_exports, {
1411
+ default: () => WindowChevronsSlash_default
1412
+ });
1413
+ var defaultImport32 = __toESM(require("@splunk/react-icons/WindowChevronsSlash"));
1414
+ __reExport(WindowChevronsSlash_exports, require("@splunk/react-icons/WindowChevronsSlash"));
1415
+ var WindowChevronsSlash_default = "default" in defaultImport32 ? defaultImport32.default : defaultImport32;
1416
+
1417
+ // src/buttons/Source.tsx
1418
+ var icon7 = prepareIcon({
1419
+ Icon: WindowChevronsSlash_default,
1420
+ screenReaderContent: (0, i18n_exports._)("Source code")
1421
+ });
1422
+ var Source = ({ disabled = false, onClick }) => /* @__PURE__ */ react_default.createElement(
1423
+ IconButton_default,
1424
+ {
1425
+ testLabel: "source-button",
1426
+ onClick,
1427
+ disabled,
1428
+ icon: icon7
1429
+ }
1430
+ );
1431
+ var Source_default = Source;
1432
+
1433
+ // esm-externals:@splunk/react-icons/ListToken
1434
+ var ListToken_exports = {};
1435
+ __export(ListToken_exports, {
1436
+ default: () => ListToken_default
1437
+ });
1438
+ var defaultImport33 = __toESM(require("@splunk/react-icons/ListToken"));
1439
+ __reExport(ListToken_exports, require("@splunk/react-icons/ListToken"));
1440
+ var ListToken_default = "default" in defaultImport33 ? defaultImport33.default : defaultImport33;
1441
+
1442
+ // esm-externals:@splunk/react-ui/Tooltip
1443
+ var Tooltip_exports = {};
1444
+ __export(Tooltip_exports, {
1445
+ default: () => Tooltip_default
1446
+ });
1447
+ var defaultImport34 = __toESM(require("@splunk/react-ui/Tooltip"));
1448
+ __reExport(Tooltip_exports, require("@splunk/react-ui/Tooltip"));
1449
+ var Tooltip_default = "default" in defaultImport34 ? defaultImport34.default : defaultImport34;
1450
+
1451
+ // src/buttons/tokenManager/TokenManager.tsx
1452
+ var tokenManagerIcon = prepareIcon({
1453
+ Icon: ListToken_default,
1454
+ screenReaderContent: (0, i18n_exports._)("Token manager")
1455
+ });
1456
+ var TokenManager = ({ dashboardApi }) => {
1457
+ const handleClick = (0, react_exports.useCallback)(() => {
1458
+ const isOpen = (dashboardApi == null ? void 0 : dashboardApi.getOpenedPanel()) === "tokens";
1459
+ if (isOpen) {
1460
+ dashboardApi == null ? void 0 : dashboardApi.closePanel();
1461
+ } else {
1462
+ dashboardApi == null ? void 0 : dashboardApi.openPanel({
1463
+ activePanel: "tokens",
1464
+ panelProps: {
1465
+ focusOnOpen: true
1466
+ }
1467
+ });
1468
+ }
1469
+ }, [dashboardApi]);
1470
+ return /* @__PURE__ */ react_default.createElement(
1471
+ Tooltip_default,
1472
+ {
1473
+ contentRelationship: "label",
1474
+ content: (0, i18n_exports._)("Token manager"),
1475
+ "data-test-label": "token-manager-button"
1476
+ },
1477
+ /* @__PURE__ */ react_default.createElement(
1478
+ IconButton_default,
1479
+ {
1480
+ testLabel: "token-manager-button",
1481
+ onClick: handleClick,
1482
+ icon: tokenManagerIcon
1483
+ }
1484
+ )
1485
+ );
1486
+ };
1487
+
1488
+ // esm-externals:@splunk/react-icons/ArrowBowLeft
1489
+ var ArrowBowLeft_exports = {};
1490
+ __export(ArrowBowLeft_exports, {
1491
+ default: () => ArrowBowLeft_default
1492
+ });
1493
+ var defaultImport35 = __toESM(require("@splunk/react-icons/ArrowBowLeft"));
1494
+ __reExport(ArrowBowLeft_exports, require("@splunk/react-icons/ArrowBowLeft"));
1495
+ var ArrowBowLeft_default = "default" in defaultImport35 ? defaultImport35.default : defaultImport35;
1496
+
1497
+ // src/buttons/Undo.tsx
1498
+ var icon8 = prepareIcon({
1499
+ Icon: ArrowBowLeft_default,
1500
+ screenReaderContent: (0, i18n_exports._)("Undo")
1501
+ });
1502
+ var Undo = ({ dashboardApi }) => {
1503
+ const [canUndo, setCanUndo] = (0, react_exports.useState)(
1504
+ () => {
1505
+ var _a;
1506
+ return (_a = dashboardApi == null ? void 0 : dashboardApi.canUndo()) != null ? _a : false;
1507
+ }
1508
+ );
1509
+ const onDefinitionChange = (0, react_exports.useCallback)(() => {
1510
+ var _a;
1511
+ setCanUndo((_a = dashboardApi == null ? void 0 : dashboardApi.canUndo()) != null ? _a : false);
1512
+ }, [dashboardApi]);
1513
+ (0, react_exports.useEffect)(() => {
1514
+ if (!(dashboardApi == null ? void 0 : dashboardApi.historyManager)) {
1515
+ return () => void 0;
1516
+ }
1517
+ return dashboardApi.historyManager.subscribe({
1518
+ onAdd: onDefinitionChange,
1519
+ onUndo: onDefinitionChange,
1520
+ onRedo: onDefinitionChange
1521
+ });
1522
+ }, [dashboardApi, onDefinitionChange]);
1523
+ const handleClick = (0, react_exports.useCallback)(() => {
1524
+ if (!dashboardApi) {
1525
+ return;
1526
+ }
1527
+ dashboardApi.undo({ source: "toolbar" });
1528
+ }, [dashboardApi]);
1529
+ return /* @__PURE__ */ react_default.createElement(
1530
+ IconButton_default,
1531
+ {
1532
+ testLabel: "undo-button",
1533
+ onClick: handleClick,
1534
+ disabled: !canUndo,
1535
+ icon: icon8
1536
+ }
1537
+ );
1538
+ };
1539
+ var Undo_default = Undo;
1540
+
1541
+ // esm-externals:@splunk/dashboard-telemetry
1542
+ var dashboard_telemetry_exports = {};
1543
+ __export(dashboard_telemetry_exports, {
1544
+ default: () => dashboard_telemetry_default
1545
+ });
1546
+ var defaultImport36 = __toESM(require("@splunk/dashboard-telemetry"));
1547
+ __reExport(dashboard_telemetry_exports, require("@splunk/dashboard-telemetry"));
1548
+ var dashboard_telemetry_default = "default" in defaultImport36 ? defaultImport36.default : defaultImport36;
1549
+
1550
+ // esm-externals:@splunk/ui-utils/format
1551
+ var format_exports = {};
1552
+ __export(format_exports, {
1553
+ default: () => format_default
1554
+ });
1555
+ var defaultImport37 = __toESM(require("@splunk/ui-utils/format"));
1556
+ __reExport(format_exports, require("@splunk/ui-utils/format"));
1557
+ var format_default = "default" in defaultImport37 ? defaultImport37.default : defaultImport37;
1558
+
1559
+ // src/buttons/Zoom/ZoomMenu.tsx
1560
+ var zoomLevels = [25, 50, 100, 150, 200];
1561
+ var buttonStyle = {
1562
+ borderTopLeftRadius: 0,
1563
+ borderBottomLeftRadius: 0
1564
+ };
1565
+ var menuStyle = {
1566
+ width: "200px"
1567
+ };
1568
+ var ZoomMenu = ({
1569
+ dashboardApi,
1570
+ appearance = "default",
1571
+ currentScale,
1572
+ setCurrentScale,
1573
+ scaleType,
1574
+ setScaleType
1575
+ }) => {
1576
+ const handleZoomOutClick = (0, react_exports.useCallback)(() => {
1577
+ setScaleType(null);
1578
+ dashboardApi == null ? void 0 : dashboardApi.zoomOut();
1579
+ }, [setScaleType, dashboardApi]);
1580
+ const handleZoomInClick = (0, react_exports.useCallback)(() => {
1581
+ setScaleType(null);
1582
+ dashboardApi == null ? void 0 : dashboardApi.zoomIn();
1583
+ }, [setScaleType, dashboardApi]);
1584
+ const handleScaleChange = (0, react_exports.useCallback)(
1585
+ (scale) => () => {
1586
+ setCurrentScale(scale);
1587
+ setScaleType(null);
1588
+ dashboardApi == null ? void 0 : dashboardApi.setScale({ scale: scale / 100 });
1589
+ },
1590
+ [setScaleType, setCurrentScale, dashboardApi]
1591
+ );
1592
+ const handleFitToWidthClick = (0, react_exports.useCallback)(() => {
1593
+ setScaleType("fit");
1594
+ dashboardApi == null ? void 0 : dashboardApi.fitToWidth();
1595
+ }, [setScaleType, dashboardApi]);
1596
+ const handleAutoClick = (0, react_exports.useCallback)(() => {
1597
+ setScaleType("auto");
1598
+ dashboardApi == null ? void 0 : dashboardApi.fitToWidth({ maxScale: 1 });
1599
+ }, [setScaleType, dashboardApi]);
1600
+ const { handleRequestClose, handleRequestOpen, isOpen } = useDropdown_default({
1601
+ isContentClickClose: true
1602
+ });
1603
+ const buttonToggle = /* @__PURE__ */ react_default.createElement(
1604
+ Button_default,
1605
+ {
1606
+ "data-clickable": true,
1607
+ "data-test": "zoom-dropdown-button",
1608
+ style: buttonStyle,
1609
+ appearance,
1610
+ isMenu: true,
1611
+ "aria-label": (0, format_exports.sprintf)((0, i18n_exports._)("Zoom level, %(currentScale)s%%"), {
1612
+ currentScale
1613
+ })
1614
+ }
1615
+ );
1616
+ const isMacOS = (0, react_exports.useMemo)(() => (0, dashboard_utils_exports.isMac)(), []);
1617
+ const dropdownMenuChildren = (0, react_exports.useMemo)(() => {
1618
+ const zoomButtons = zoomLevels.map((percent) => {
1619
+ return /* @__PURE__ */ react_default.createElement(
1620
+ Menu_default.Item,
1621
+ {
1622
+ "data-test": `${percent}-percent`,
1623
+ onClick: handleScaleChange(percent),
1624
+ key: percent,
1625
+ selectable: true,
1626
+ selected: currentScale === percent && !scaleType
1627
+ },
1628
+ `${percent}%`
1629
+ );
1630
+ });
1631
+ return [
1632
+ /* @__PURE__ */ react_default.createElement(
1633
+ Menu_default.Item,
1634
+ {
1635
+ "data-test": "auto",
1636
+ onClick: handleAutoClick,
1637
+ key: "auto",
1638
+ selectable: true,
1639
+ selected: scaleType === "auto"
1640
+ },
1641
+ (0, i18n_exports._)("Auto")
1642
+ ),
1643
+ /* @__PURE__ */ react_default.createElement(
1644
+ Menu_default.Item,
1645
+ {
1646
+ "data-test": "fit-to-width",
1647
+ onClick: handleFitToWidthClick,
1648
+ key: "fit-to-width",
1649
+ description: isMacOS ? (0, i18n_exports._)("Ctrl Cmd 0") : (0, i18n_exports._)("Ctrl Alt 0"),
1650
+ descriptionPosition: "right",
1651
+ selectable: true,
1652
+ selected: scaleType === "fit"
1653
+ },
1654
+ (0, i18n_exports._)("Fit")
1655
+ ),
1656
+ /* @__PURE__ */ react_default.createElement(Menu_default.Divider, { key: "menu-divider-1" }),
1657
+ ...zoomButtons,
1658
+ /* @__PURE__ */ react_default.createElement(Menu_default.Divider, { key: "menu-divider-2" }),
1659
+ /* @__PURE__ */ react_default.createElement(
1660
+ Menu_default.Item,
1661
+ {
1662
+ "data-test": "zoom-in",
1663
+ onClick: handleZoomInClick,
1664
+ key: "zoom-in",
1665
+ description: isMacOS ? (0, i18n_exports._)("Ctrl Cmd =") : (0, i18n_exports._)("Ctrl Alt ="),
1666
+ descriptionPosition: "right",
1667
+ selectable: true
1668
+ },
1669
+ (0, i18n_exports._)("Zoom in")
1670
+ ),
1671
+ /* @__PURE__ */ react_default.createElement(
1672
+ Menu_default.Item,
1673
+ {
1674
+ "data-test": "zoom-out",
1675
+ onClick: handleZoomOutClick,
1676
+ key: "zoom-out",
1677
+ description: isMacOS ? (0, i18n_exports._)("Ctrl Cmd -") : (0, i18n_exports._)("Ctrl Alt -"),
1678
+ descriptionPosition: "right",
1679
+ selectable: true
1680
+ },
1681
+ (0, i18n_exports._)("Zoom out")
1682
+ )
1683
+ ];
1684
+ }, [
1685
+ currentScale,
1686
+ handleAutoClick,
1687
+ scaleType,
1688
+ handleFitToWidthClick,
1689
+ isMacOS,
1690
+ handleZoomInClick,
1691
+ handleZoomOutClick,
1692
+ handleScaleChange
1693
+ ]);
1694
+ return /* @__PURE__ */ react_default.createElement(
1695
+ Dropdown_default,
1696
+ {
1697
+ onRequestClose: handleRequestClose,
1698
+ onRequestOpen: handleRequestOpen,
1699
+ open: isOpen,
1700
+ toggle: buttonToggle,
1701
+ retainFocus: true
1702
+ },
1703
+ /* @__PURE__ */ react_default.createElement(
1704
+ Menu_default,
1705
+ {
1706
+ style: menuStyle,
1707
+ focusMode: "normal",
1708
+ "aria-label": (0, i18n_exports._)("Zoom level")
1709
+ },
1710
+ dropdownMenuChildren
1711
+ )
1712
+ );
1713
+ };
1714
+
1715
+ // esm-externals:@splunk/react-ui/Number
1716
+ var Number_exports = {};
1717
+ __export(Number_exports, {
1718
+ default: () => Number_default
1719
+ });
1720
+ var defaultImport38 = __toESM(require("@splunk/react-ui/Number"));
1721
+ __reExport(Number_exports, require("@splunk/react-ui/Number"));
1722
+ var Number_default = "default" in defaultImport38 ? defaultImport38.default : defaultImport38;
1723
+
1724
+ // src/buttons/Zoom/ZoomNumber.tsx
1725
+ var StyledNumber = styled_components_default(Number_default)`
1726
+ padding-right: ${themes_exports.variables.spacingSmall};
1727
+ & > input {
1728
+ text-align: right;
1729
+ }
1730
+ `;
1731
+ var StyledEndAdornment = styled_components_default.span`
1732
+ color: ${themes_exports.variables.contentColorActive};
1733
+ `;
1734
+ var ZoomNumber = ({
1735
+ currentScale,
1736
+ onScaleChange
1737
+ }) => {
1738
+ const onValueChange = (0, react_exports.useCallback)(
1739
+ (e, value = 100) => {
1740
+ onScaleChange(value)();
1741
+ },
1742
+ [onScaleChange]
1743
+ );
1744
+ const { handleChange, handleBlur, handleFocus, handleKeyPress } = (0, dashboard_ui_exports.useNumberInput)({
1745
+ value: currentScale,
1746
+ onValueChange
1747
+ });
1748
+ return /* @__PURE__ */ react_default.createElement(
1749
+ StyledNumber,
1750
+ {
1751
+ value: currentScale,
1752
+ onChange: handleChange,
1753
+ onKeyDown: handleKeyPress,
1754
+ onBlur: handleBlur,
1755
+ onFocus: handleFocus,
1756
+ step: 5,
1757
+ min: 1,
1758
+ max: 1e4,
1759
+ roundTo: 0,
1760
+ endAdornment: /* @__PURE__ */ react_default.createElement(StyledEndAdornment, null, "%"),
1761
+ hideStepButtons: true,
1762
+ "data-test": "zoom-number",
1763
+ append: true
1764
+ }
1765
+ );
1766
+ };
1767
+
1768
+ // src/buttons/Zoom/Zoom.tsx
1769
+ var Container = styled_components_default.div`
1770
+ margin-inline-end: 0;
1771
+ display: flex;
1772
+ min-width: 96px;
1773
+ gap: ${themes_exports.variables.spacingSmall};
1774
+ `;
1775
+ var StyledTooltip = styled_components_default(Tooltip_default)`
1776
+ width: 110px;
1777
+ & span {
1778
+ display: flex;
1779
+ }
1780
+ `;
1781
+ var Zoom = ({
1782
+ showSeparator = true,
1783
+ appearance = "default",
1784
+ mode = "view"
1785
+ }) => {
1786
+ const [currentScale, setCurrentScale] = (0, react_exports.useState)(100);
1787
+ const [scaleType, setScaleType] = (0, react_exports.useState)(null);
1788
+ const telemetry = (0, dashboard_telemetry_exports.useTelemetryApi)();
1789
+ const dashboardApi = (0, dashboard_context_exports.useDashboardApi)();
1790
+ const handleZoom = (0, react_exports.useCallback)((level) => {
1791
+ if (level) {
1792
+ setCurrentScale(Math.round(level * 100));
1793
+ }
1794
+ }, []);
1795
+ const emitTelemetry = (0, react_exports.useMemo)(
1796
+ () => (0, lodash_exports.debounce)(telemetry.emit.bind(telemetry), 500),
1797
+ [telemetry]
1798
+ );
1799
+ (0, react_exports.useEffect)(() => {
1800
+ emitTelemetry({
1801
+ pageAction: "dashboard.zoom",
1802
+ source: "toolbar",
1803
+ event: "dashboard.zoom_level_change",
1804
+ metadata: {
1805
+ scale: currentScale,
1806
+ scaleType,
1807
+ mode
1808
+ }
1809
+ });
1810
+ }, [currentScale, scaleType, emitTelemetry, mode]);
1811
+ const activeTabId = (0, dashboard_state_exports.useSelector)(dashboard_state_exports.selectActiveTab);
1812
+ (0, react_exports.useEffect)(() => {
1813
+ var _a;
1814
+ const subscription = (_a = dashboardApi == null ? void 0 : dashboardApi.getZoomLevel()) == null ? void 0 : _a.subscribe({ next: handleZoom });
1815
+ return () => {
1816
+ subscription == null ? void 0 : subscription.unsubscribe();
1817
+ };
1818
+ }, [dashboardApi, activeTabId, handleZoom]);
1819
+ const separator = (0, react_exports.useMemo)(
1820
+ () => showSeparator ? /* @__PURE__ */ react_default.createElement(ItemSeparator_default, { key: "item-separator" }) : null,
1821
+ [showSeparator]
1822
+ );
1823
+ const handleScaleChange = (0, react_exports.useCallback)(
1824
+ (scale) => () => {
1825
+ setCurrentScale(scale);
1826
+ setScaleType(null);
1827
+ dashboardApi == null ? void 0 : dashboardApi.setScale({ scale: scale / 100 });
1828
+ },
1829
+ [dashboardApi]
1830
+ );
1831
+ return /* @__PURE__ */ react_default.createElement(Container, null, /* @__PURE__ */ react_default.createElement(
1832
+ StyledTooltip,
1833
+ {
1834
+ contentRelationship: "label",
1835
+ content: (0, i18n_exports._)("Zoom level")
1836
+ },
1837
+ /* @__PURE__ */ react_default.createElement(
1838
+ ZoomNumber,
1839
+ {
1840
+ currentScale,
1841
+ onScaleChange: handleScaleChange
1842
+ }
1843
+ ),
1844
+ /* @__PURE__ */ react_default.createElement(
1845
+ ZoomMenu,
1846
+ {
1847
+ dashboardApi,
1848
+ appearance,
1849
+ currentScale,
1850
+ setCurrentScale,
1851
+ scaleType,
1852
+ setScaleType
1853
+ }
1854
+ )
1855
+ ), separator);
1856
+ };
1857
+ //# sourceMappingURL=index.js.map