@splunk/dashboard-toolbar 29.5.2 → 29.7.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 (215) hide show
  1. package/CHANGELOG.md +1587 -0
  2. package/IconButton.js +18 -56
  3. package/IconButton.js.map +1 -1
  4. package/ItemGroup.js +6 -24
  5. package/ItemGroup.js.map +1 -1
  6. package/Toolbar.js +6 -14
  7. package/Toolbar.js.map +1 -1
  8. package/buttons/Charts.js +14 -47
  9. package/buttons/Charts.js.map +2 -2
  10. package/buttons/Config.js +21 -59
  11. package/buttons/Config.js.map +1 -1
  12. package/buttons/ContentExport.js +18 -56
  13. package/buttons/ContentExport.js.map +1 -1
  14. package/buttons/Data.js +21 -59
  15. package/buttons/Data.js.map +1 -1
  16. package/buttons/EmptyVisualization.js +22 -80
  17. package/buttons/EmptyVisualization.js.map +1 -1
  18. package/buttons/Fullscreen.js +22 -80
  19. package/buttons/Fullscreen.js.map +1 -1
  20. package/buttons/GridLineSwitch.js +2 -3
  21. package/buttons/GridLineSwitch.js.map +1 -1
  22. package/buttons/HelpButton.js +11 -44
  23. package/buttons/HelpButton.js.map +2 -2
  24. package/buttons/IconGallery.js +15 -68
  25. package/buttons/IconGallery.js.map +2 -2
  26. package/buttons/Image.js +22 -80
  27. package/buttons/Image.js.map +1 -1
  28. package/buttons/ImageGallery.js +15 -68
  29. package/buttons/ImageGallery.js.map +2 -2
  30. package/buttons/Inputs.js +19 -49
  31. package/buttons/Inputs.js.map +2 -2
  32. package/buttons/Markdown.js +20 -58
  33. package/buttons/Markdown.js.map +1 -1
  34. package/buttons/ModeSwitch.js +1 -1
  35. package/buttons/ModeSwitch.js.map +1 -1
  36. package/buttons/Redo.js +21 -63
  37. package/buttons/Redo.js.map +1 -1
  38. package/buttons/Shapes.js +13 -46
  39. package/buttons/Shapes.js.map +2 -2
  40. package/buttons/Source.js +18 -56
  41. package/buttons/Source.js.map +1 -1
  42. package/buttons/Undo.js +21 -63
  43. package/buttons/Undo.js.map +1 -1
  44. package/buttons/index.js +145 -170
  45. package/buttons/index.js.map +2 -2
  46. package/groups/ControlGroup.js +34 -99
  47. package/groups/ControlGroup.js.map +2 -2
  48. package/groups/EditingGroup.js +62 -78
  49. package/groups/EditingGroup.js.map +2 -2
  50. package/groups/EditorGroup.js +30 -78
  51. package/groups/EditorGroup.js.map +2 -2
  52. package/groups/EditorsControlGroup.js +39 -87
  53. package/groups/EditorsControlGroup.js.map +2 -2
  54. package/groups/HistoryGroup.js +36 -89
  55. package/groups/HistoryGroup.js.map +2 -2
  56. package/groups/SidebarControlGroup.js +39 -84
  57. package/groups/SidebarControlGroup.js.map +2 -2
  58. package/groups/VisualizationGroup.js +56 -118
  59. package/groups/VisualizationGroup.js.map +2 -2
  60. package/groups/index.js +124 -179
  61. package/groups/index.js.map +2 -2
  62. package/index.js +164 -207
  63. package/index.js.map +2 -2
  64. package/module/CollapsibleToolbar.js +11 -11
  65. package/module/IconButton.js +6 -6
  66. package/module/Item.js +3 -3
  67. package/module/ItemGroup.js +7 -7
  68. package/module/PopoverItemButton.js +4 -4
  69. package/module/Toolbar.js +6 -6
  70. package/module/buttons/Charts.js +15 -15
  71. package/module/buttons/Config.js +9 -9
  72. package/module/buttons/ContentExport.js +9 -9
  73. package/module/buttons/Data.js +10 -10
  74. package/module/buttons/EmptyVisualization.js +9 -9
  75. package/module/buttons/ExportDashboardButton.js +8 -8
  76. package/module/buttons/Fullscreen.js +9 -9
  77. package/module/buttons/GridLineSwitch.js +8 -8
  78. package/module/buttons/HelpButton.js +11 -11
  79. package/module/buttons/IconGallery.js +11 -11
  80. package/module/buttons/Image.js +9 -9
  81. package/module/buttons/ImageGallery.js +12 -12
  82. package/module/buttons/Inputs.js +11 -11
  83. package/module/buttons/Markdown.js +8 -8
  84. package/module/buttons/ModeSwitch.js +9 -9
  85. package/module/buttons/Redo.js +8 -8
  86. package/module/buttons/Shapes.js +13 -13
  87. package/module/buttons/Source.js +9 -9
  88. package/module/buttons/Undo.js +8 -8
  89. package/module/buttons/index.js +40 -40
  90. package/module/chunks/{chunk-YH3LWJKQ.js → chunk-2CIJZJRQ.js} +17 -17
  91. package/module/chunks/{chunk-YH3LWJKQ.js.map → chunk-2CIJZJRQ.js.map} +1 -1
  92. package/module/chunks/{chunk-FMSKWHRK.js → chunk-2REUP3TZ.js} +11 -14
  93. package/module/chunks/{chunk-FMSKWHRK.js.map → chunk-2REUP3TZ.js.map} +1 -1
  94. package/module/chunks/chunk-2WGGOMJE.js +34 -0
  95. package/module/chunks/{chunk-E7EUH33R.js.map → chunk-2WGGOMJE.js.map} +1 -1
  96. package/module/chunks/{chunk-KDWTCNVM.js → chunk-37TNXIHV.js} +8 -12
  97. package/module/chunks/{chunk-KDWTCNVM.js.map → chunk-37TNXIHV.js.map} +1 -1
  98. package/module/chunks/{chunk-GMMN7SOC.js → chunk-3PEWQDKC.js} +2 -2
  99. package/module/chunks/{chunk-ZV4AQ5DL.js → chunk-6C2NOEOI.js} +2 -2
  100. package/module/chunks/{chunk-VSD7VGBN.js → chunk-A4O2G7H7.js} +6 -6
  101. package/module/chunks/{chunk-RZWTF3BK.js → chunk-A4S4A2N5.js} +25 -39
  102. package/module/chunks/{chunk-RZWTF3BK.js.map → chunk-A4S4A2N5.js.map} +1 -1
  103. package/module/chunks/{chunk-6NLVLUCU.js → chunk-A6YRCP43.js} +2 -2
  104. package/module/chunks/{chunk-5IFDFRGD.js → chunk-ACVHX3RN.js} +8 -12
  105. package/module/chunks/{chunk-5IFDFRGD.js.map → chunk-ACVHX3RN.js.map} +1 -1
  106. package/module/chunks/chunk-AFH5LL74.js +26 -0
  107. package/module/chunks/{chunk-UCI2OCYF.js → chunk-B4IRCRYC.js} +12 -20
  108. package/module/chunks/{chunk-UCI2OCYF.js.map → chunk-B4IRCRYC.js.map} +1 -1
  109. package/module/chunks/{chunk-YMIK47DX.js → chunk-BNOIJ742.js} +14 -15
  110. package/module/chunks/{chunk-YMIK47DX.js.map → chunk-BNOIJ742.js.map} +1 -1
  111. package/module/chunks/{chunk-BDFUA6X7.js → chunk-CASUTGK5.js} +9 -14
  112. package/module/chunks/chunk-CASUTGK5.js.map +7 -0
  113. package/module/chunks/{chunk-DQZGTQ2Z.js → chunk-DIC6BJPJ.js} +9 -9
  114. package/module/chunks/{chunk-SJNT4MK5.js → chunk-DONX4ISJ.js} +6 -6
  115. package/module/chunks/{chunk-NTQBWCZU.js → chunk-EDGMTRPE.js} +8 -8
  116. package/module/chunks/{chunk-NTQBWCZU.js.map → chunk-EDGMTRPE.js.map} +1 -1
  117. package/module/chunks/{chunk-UNYHHA4F.js → chunk-EPMHIBVT.js} +10 -11
  118. package/module/chunks/{chunk-UNYHHA4F.js.map → chunk-EPMHIBVT.js.map} +1 -1
  119. package/module/chunks/{chunk-IHFVJPGQ.js → chunk-EVRV5ZFT.js} +2 -2
  120. package/module/chunks/{chunk-I6AJG47U.js → chunk-EZBGH5QE.js} +2 -2
  121. package/module/chunks/{chunk-DM27U6AI.js → chunk-F6RTO5OR.js} +18 -17
  122. package/module/chunks/{chunk-DM27U6AI.js.map → chunk-F6RTO5OR.js.map} +1 -1
  123. package/module/chunks/{chunk-TQIO5WSS.js → chunk-GGU3N3OR.js} +5 -5
  124. package/module/chunks/{chunk-RKJ7RKNK.js → chunk-GQJXWXKY.js} +2 -2
  125. package/module/chunks/{chunk-QH53L2XQ.js → chunk-GT7JERMF.js} +7 -10
  126. package/module/chunks/{chunk-QH53L2XQ.js.map → chunk-GT7JERMF.js.map} +1 -1
  127. package/module/chunks/{chunk-U5YCUIDK.js → chunk-HGF7R67S.js} +9 -12
  128. package/module/chunks/{chunk-U5YCUIDK.js.map → chunk-HGF7R67S.js.map} +1 -1
  129. package/module/chunks/{chunk-ZEITW5IL.js → chunk-HNLSR2U2.js} +10 -10
  130. package/module/chunks/{chunk-ZEITW5IL.js.map → chunk-HNLSR2U2.js.map} +1 -1
  131. package/module/chunks/{chunk-6RWX6HA7.js → chunk-HSIAXTEQ.js} +9 -12
  132. package/module/chunks/{chunk-6RWX6HA7.js.map → chunk-HSIAXTEQ.js.map} +1 -1
  133. package/module/chunks/{chunk-RFWUOGJ3.js → chunk-ICS6CLF6.js} +2 -2
  134. package/module/chunks/{chunk-C3GFY32L.js → chunk-KIWM3XWB.js} +2 -2
  135. package/module/chunks/{chunk-4SWPK2TU.js → chunk-KTJRF2VW.js} +3 -3
  136. package/module/chunks/{chunk-P5YTSVEV.js → chunk-L5IQTYSU.js} +9 -9
  137. package/module/chunks/{chunk-P5YTSVEV.js.map → chunk-L5IQTYSU.js.map} +1 -1
  138. package/module/chunks/{chunk-EUFLSUPO.js → chunk-LGEXZN3G.js} +14 -17
  139. package/module/chunks/{chunk-EUFLSUPO.js.map → chunk-LGEXZN3G.js.map} +1 -1
  140. package/module/chunks/{chunk-WSTQTULM.js → chunk-MDZOPP2X.js} +3 -3
  141. package/module/chunks/{chunk-VITMNUKV.js → chunk-MJ7HLEFT.js} +2 -2
  142. package/module/chunks/{chunk-HMQY5XLG.js → chunk-MTBEBUIU.js} +8 -12
  143. package/module/chunks/{chunk-HMQY5XLG.js.map → chunk-MTBEBUIU.js.map} +1 -1
  144. package/module/chunks/{chunk-RPNGCVZL.js → chunk-OBDH7GEY.js} +2 -2
  145. package/module/chunks/{chunk-2MOF5ZP7.js → chunk-OE5GQ3FG.js} +7 -7
  146. package/module/chunks/{chunk-XWRMHLAP.js → chunk-OOGFGU4X.js} +2 -2
  147. package/module/chunks/{chunk-E3IBH4RN.js → chunk-P23RJTRF.js} +10 -10
  148. package/module/chunks/{chunk-VGHYIDZA.js → chunk-P2G7HULR.js} +5 -8
  149. package/module/chunks/{chunk-VGHYIDZA.js.map → chunk-P2G7HULR.js.map} +1 -1
  150. package/module/chunks/{chunk-KMWIB6DC.js → chunk-P7X3KHUG.js} +6 -9
  151. package/module/chunks/{chunk-KMWIB6DC.js.map → chunk-P7X3KHUG.js.map} +1 -1
  152. package/module/chunks/{chunk-RJ5FWZWY.js → chunk-PKNBH4OS.js} +11 -18
  153. package/module/chunks/{chunk-RJ5FWZWY.js.map → chunk-PKNBH4OS.js.map} +1 -1
  154. package/module/chunks/{chunk-JIIPUMEA.js → chunk-PZA4F4AY.js} +2 -2
  155. package/module/chunks/{chunk-V3YGNO27.js → chunk-Q5OC2QQV.js} +2 -2
  156. package/module/chunks/{chunk-KGSEQL62.js → chunk-QQWQ2KSF.js} +2 -2
  157. package/module/chunks/{chunk-RZRB3MPG.js → chunk-RD6QZCUY.js} +90 -48
  158. package/module/chunks/chunk-RD6QZCUY.js.map +7 -0
  159. package/module/chunks/{chunk-MUXHFVOC.js → chunk-RL6UDJ3E.js} +10 -11
  160. package/module/chunks/{chunk-MUXHFVOC.js.map → chunk-RL6UDJ3E.js.map} +1 -1
  161. package/module/chunks/{chunk-SFYQQARV.js → chunk-SJBQOPBI.js} +3 -3
  162. package/module/chunks/{chunk-RS2VRN2X.js → chunk-VENUU6C7.js} +7 -7
  163. package/module/chunks/{chunk-RS2VRN2X.js.map → chunk-VENUU6C7.js.map} +1 -1
  164. package/module/chunks/chunk-X74ALD2D.js +25 -0
  165. package/module/chunks/{chunk-PUNHFOXB.js.map → chunk-X74ALD2D.js.map} +1 -1
  166. package/module/chunks/{chunk-UUMIWWJE.js → chunk-YDIFCM3E.js} +13 -13
  167. package/module/chunks/{chunk-UUMIWWJE.js.map → chunk-YDIFCM3E.js.map} +1 -1
  168. package/module/groups/ActionsGroup.js +7 -7
  169. package/module/groups/ControlGroup.js +42 -42
  170. package/module/groups/EditingGroup.js +42 -42
  171. package/module/groups/EditorGroup.js +42 -42
  172. package/module/groups/EditorsControlGroup.js +42 -42
  173. package/module/groups/HistoryGroup.js +42 -42
  174. package/module/groups/SidebarControlGroup.js +42 -42
  175. package/module/groups/VisualizationGroup.js +42 -42
  176. package/module/groups/index.js +49 -49
  177. package/module/index.js +51 -51
  178. package/package.json +29 -29
  179. package/types/buttons/Display/Display.d.ts +10 -1
  180. package/types/buttons/Display/Display.d.ts.map +1 -1
  181. package/types/buttons/Zoom/Zoom.d.ts.map +1 -1
  182. package/types/buttons/Zoom/ZoomNumber.d.ts +3 -1
  183. package/types/buttons/Zoom/ZoomNumber.d.ts.map +1 -1
  184. package/types/components/StyledButton.d.ts.map +1 -1
  185. package/module/chunks/chunk-BDFUA6X7.js.map +0 -7
  186. package/module/chunks/chunk-E7EUH33R.js +0 -40
  187. package/module/chunks/chunk-PUNHFOXB.js +0 -31
  188. package/module/chunks/chunk-RZRB3MPG.js.map +0 -7
  189. package/module/chunks/chunk-VQIRZ53C.js +0 -79
  190. package/types/groups/HistoryGroup.test.d.ts +0 -2
  191. package/types/groups/HistoryGroup.test.d.ts.map +0 -1
  192. /package/module/chunks/{chunk-GMMN7SOC.js.map → chunk-3PEWQDKC.js.map} +0 -0
  193. /package/module/chunks/{chunk-ZV4AQ5DL.js.map → chunk-6C2NOEOI.js.map} +0 -0
  194. /package/module/chunks/{chunk-VSD7VGBN.js.map → chunk-A4O2G7H7.js.map} +0 -0
  195. /package/module/chunks/{chunk-6NLVLUCU.js.map → chunk-A6YRCP43.js.map} +0 -0
  196. /package/module/chunks/{chunk-VQIRZ53C.js.map → chunk-AFH5LL74.js.map} +0 -0
  197. /package/module/chunks/{chunk-DQZGTQ2Z.js.map → chunk-DIC6BJPJ.js.map} +0 -0
  198. /package/module/chunks/{chunk-SJNT4MK5.js.map → chunk-DONX4ISJ.js.map} +0 -0
  199. /package/module/chunks/{chunk-IHFVJPGQ.js.map → chunk-EVRV5ZFT.js.map} +0 -0
  200. /package/module/chunks/{chunk-I6AJG47U.js.map → chunk-EZBGH5QE.js.map} +0 -0
  201. /package/module/chunks/{chunk-TQIO5WSS.js.map → chunk-GGU3N3OR.js.map} +0 -0
  202. /package/module/chunks/{chunk-RKJ7RKNK.js.map → chunk-GQJXWXKY.js.map} +0 -0
  203. /package/module/chunks/{chunk-RFWUOGJ3.js.map → chunk-ICS6CLF6.js.map} +0 -0
  204. /package/module/chunks/{chunk-C3GFY32L.js.map → chunk-KIWM3XWB.js.map} +0 -0
  205. /package/module/chunks/{chunk-4SWPK2TU.js.map → chunk-KTJRF2VW.js.map} +0 -0
  206. /package/module/chunks/{chunk-WSTQTULM.js.map → chunk-MDZOPP2X.js.map} +0 -0
  207. /package/module/chunks/{chunk-VITMNUKV.js.map → chunk-MJ7HLEFT.js.map} +0 -0
  208. /package/module/chunks/{chunk-RPNGCVZL.js.map → chunk-OBDH7GEY.js.map} +0 -0
  209. /package/module/chunks/{chunk-2MOF5ZP7.js.map → chunk-OE5GQ3FG.js.map} +0 -0
  210. /package/module/chunks/{chunk-XWRMHLAP.js.map → chunk-OOGFGU4X.js.map} +0 -0
  211. /package/module/chunks/{chunk-E3IBH4RN.js.map → chunk-P23RJTRF.js.map} +0 -0
  212. /package/module/chunks/{chunk-JIIPUMEA.js.map → chunk-PZA4F4AY.js.map} +0 -0
  213. /package/module/chunks/{chunk-V3YGNO27.js.map → chunk-Q5OC2QQV.js.map} +0 -0
  214. /package/module/chunks/{chunk-KGSEQL62.js.map → chunk-QQWQ2KSF.js.map} +0 -0
  215. /package/module/chunks/{chunk-SFYQQARV.js.map → chunk-SJBQOPBI.js.map} +0 -0
@@ -3,70 +3,69 @@ SPLUNK CONFIDENTIAL – Use or disclosure of this material in whole or
3
3
  in part without a valid written license from Splunk Inc. is PROHIBITED. */
4
4
  import {
5
5
  lodash_exports
6
- } from "./chunk-DM27U6AI.js";
6
+ } from "./chunk-F6RTO5OR.js";
7
7
  import {
8
8
  dashboard_utils_exports
9
- } from "./chunk-IHFVJPGQ.js";
9
+ } from "./chunk-EVRV5ZFT.js";
10
10
  import {
11
11
  ItemSeparator_default
12
- } from "./chunk-WSTQTULM.js";
12
+ } from "./chunk-MDZOPP2X.js";
13
13
  import {
14
14
  dashboard_ui_exports
15
- } from "./chunk-6NLVLUCU.js";
15
+ } from "./chunk-A6YRCP43.js";
16
16
  import {
17
17
  Menu_default,
18
18
  Menu_exports
19
- } from "./chunk-GMMN7SOC.js";
19
+ } from "./chunk-3PEWQDKC.js";
20
20
  import {
21
21
  Dropdown_default,
22
22
  Dropdown_exports,
23
23
  useDropdown_default
24
- } from "./chunk-4SWPK2TU.js";
24
+ } from "./chunk-KTJRF2VW.js";
25
25
  import {
26
26
  dashboard_context_exports
27
- } from "./chunk-VITMNUKV.js";
27
+ } from "./chunk-MJ7HLEFT.js";
28
28
  import {
29
29
  i18n_exports
30
- } from "./chunk-JIIPUMEA.js";
30
+ } from "./chunk-PZA4F4AY.js";
31
31
  import {
32
32
  IconButton_default,
33
33
  Tooltip_default,
34
34
  Tooltip_exports,
35
35
  prepareIcon
36
- } from "./chunk-RZWTF3BK.js";
36
+ } from "./chunk-A4S4A2N5.js";
37
37
  import {
38
38
  Button_default,
39
39
  Button_exports
40
- } from "./chunk-RFWUOGJ3.js";
40
+ } from "./chunk-ICS6CLF6.js";
41
41
  import {
42
42
  Item_default
43
- } from "./chunk-C3GFY32L.js";
43
+ } from "./chunk-KIWM3XWB.js";
44
44
  import {
45
45
  dashboard_state_exports
46
- } from "./chunk-ZV4AQ5DL.js";
46
+ } from "./chunk-6C2NOEOI.js";
47
47
  import {
48
48
  themes_exports
49
- } from "./chunk-RPNGCVZL.js";
49
+ } from "./chunk-OBDH7GEY.js";
50
50
  import {
51
51
  react_default,
52
52
  react_exports
53
- } from "./chunk-XWRMHLAP.js";
53
+ } from "./chunk-OOGFGU4X.js";
54
54
  import {
55
55
  styled_components_default,
56
56
  styled_components_exports
57
- } from "./chunk-V3YGNO27.js";
57
+ } from "./chunk-Q5OC2QQV.js";
58
58
  import {
59
59
  __export,
60
60
  __reExport
61
- } from "./chunk-VQIRZ53C.js";
61
+ } from "./chunk-AFH5LL74.js";
62
62
 
63
63
  // src/buttons/AIAssistant/AIAssistant.tsx
64
64
  var aiButtonStyle = { height: "100%" };
65
65
  var EmptyComponent = () => null;
66
66
  var AIAssistant = () => {
67
- var _a;
68
67
  const { allowDashboardAIAssistant } = (0, dashboard_context_exports.useFeatureFlags)();
69
- const { AIButton } = (_a = (0, dashboard_context_exports.useMicrofrontendContext)().microfrontendProxy) != null ? _a : {};
68
+ const { AIButton } = (0, dashboard_context_exports.useMicrofrontendContext)().microfrontendProxy ?? {};
70
69
  const dashboardApi = (0, dashboard_context_exports.useDashboardApi)();
71
70
  const { colorScheme, density, family } = (0, themes_exports.useSplunkTheme)();
72
71
  const handleError = (0, react_exports.useCallback)((error) => {
@@ -127,11 +126,13 @@ var CheckmarkPlaceholder = styled_components_default.span`
127
126
  `;
128
127
  var Display = ({
129
128
  appearance = "default",
130
- dashboardApi
129
+ dashboardApi,
130
+ children,
131
+ onRequestOpen,
132
+ onRequestClose
131
133
  }) => {
132
- var _a;
133
134
  const globalInputs = (0, dashboard_state_exports.useSelector)(dashboard_state_exports.selectGlobalInputs);
134
- const hasGlobalInputs = ((_a = globalInputs == null ? void 0 : globalInputs.length) != null ? _a : 0) > 0;
135
+ const hasGlobalInputs = (globalInputs?.length ?? 0) > 0;
135
136
  const areInputsCollapsed = (0, dashboard_state_exports.useSelector)(dashboard_state_exports.selectAreGlobalItemsCollapsed);
136
137
  const showInputs = !areInputsCollapsed;
137
138
  const description = (0, dashboard_state_exports.useSelector)(dashboard_state_exports.selectDescription);
@@ -142,18 +143,36 @@ var Display = ({
142
143
  const isDescriptionCollapsed = (0, dashboard_state_exports.useSelector)(dashboard_state_exports.selectIsDescriptionCollapsed);
143
144
  const showDescription = !isDescriptionCollapsed;
144
145
  const handleInputsToggle = (0, react_exports.useCallback)(() => {
145
- dashboardApi == null ? void 0 : dashboardApi.setAreGlobalInputsCollapsed({
146
+ dashboardApi?.setAreGlobalInputsCollapsed({
146
147
  collapsed: !areInputsCollapsed
147
148
  });
148
149
  }, [dashboardApi, areInputsCollapsed]);
149
150
  const handleDescriptionToggle = (0, react_exports.useCallback)(() => {
150
- dashboardApi == null ? void 0 : dashboardApi.setIsDescriptionCollapsed({
151
+ dashboardApi?.setIsDescriptionCollapsed({
151
152
  collapsed: !isDescriptionCollapsed
152
153
  });
153
154
  }, [dashboardApi, isDescriptionCollapsed]);
154
- const { handleRequestClose, handleRequestOpen, isOpen } = useDropdown_default({
155
+ const {
156
+ handleRequestClose: baseHandleRequestClose,
157
+ handleRequestOpen: baseHandleRequestOpen,
158
+ isOpen
159
+ } = useDropdown_default({
155
160
  isContentClickClose: true
156
161
  });
162
+ const handleRequestOpen = (0, react_exports.useCallback)(
163
+ (event, data) => {
164
+ onRequestOpen?.(event, data);
165
+ baseHandleRequestOpen();
166
+ },
167
+ [onRequestOpen, baseHandleRequestOpen]
168
+ );
169
+ const handleRequestClose = (0, react_exports.useCallback)(
170
+ (data) => {
171
+ onRequestClose?.(data);
172
+ baseHandleRequestClose(data);
173
+ },
174
+ [onRequestClose, baseHandleRequestClose]
175
+ );
157
176
  const buttonToggle = (0, react_exports.useMemo)(
158
177
  () => /* @__PURE__ */ react_default.createElement(
159
178
  Button_default,
@@ -213,7 +232,7 @@ var Display = ({
213
232
  descriptionCheckmarkIcon,
214
233
  inputsCheckmarkIcon
215
234
  ]);
216
- if (dropdownMenuChildren.length === 0) {
235
+ if (dropdownMenuChildren.length === 0 && react_default.Children.toArray(children).length === 0) {
217
236
  return null;
218
237
  }
219
238
  return /* @__PURE__ */ react_default.createElement(Tooltip_default, { contentRelationship: "label", content: (0, i18n_exports._)("Display") }, /* @__PURE__ */ react_default.createElement(
@@ -231,7 +250,8 @@ var Display = ({
231
250
  focusMode: "normal",
232
251
  "aria-label": (0, i18n_exports._)("Display options")
233
252
  },
234
- dropdownMenuChildren
253
+ dropdownMenuChildren,
254
+ children
235
255
  )
236
256
  ));
237
257
  };
@@ -253,11 +273,11 @@ var tokenManagerIcon = prepareIcon({
253
273
  var TokenManager = ({ dashboardApi }) => {
254
274
  const { showTokenManager } = (0, dashboard_context_exports.useFeatureFlags)();
255
275
  const handleClick = (0, react_exports.useCallback)(() => {
256
- const isOpen = (dashboardApi == null ? void 0 : dashboardApi.getOpenedPanel()) === "tokenManager";
276
+ const isOpen = dashboardApi?.getOpenedPanel() === "tokenManager";
257
277
  if (isOpen) {
258
- dashboardApi == null ? void 0 : dashboardApi.closePanel();
278
+ dashboardApi?.closePanel();
259
279
  } else {
260
- dashboardApi == null ? void 0 : dashboardApi.openPanel({
280
+ dashboardApi?.openPanel({
261
281
  activePanel: "tokenManager",
262
282
  panelProps: {
263
283
  focusOnOpen: true
@@ -308,27 +328,27 @@ var ZoomMenu = ({
308
328
  }) => {
309
329
  const handleZoomOutClick = (0, react_exports.useCallback)(() => {
310
330
  setScaleType(null);
311
- dashboardApi == null ? void 0 : dashboardApi.zoomOut();
331
+ dashboardApi?.zoomOut();
312
332
  }, [setScaleType, dashboardApi]);
313
333
  const handleZoomInClick = (0, react_exports.useCallback)(() => {
314
334
  setScaleType(null);
315
- dashboardApi == null ? void 0 : dashboardApi.zoomIn();
335
+ dashboardApi?.zoomIn();
316
336
  }, [setScaleType, dashboardApi]);
317
337
  const handleScaleChange = (0, react_exports.useCallback)(
318
338
  (scale) => () => {
319
339
  setCurrentScale(scale);
320
340
  setScaleType(null);
321
- dashboardApi == null ? void 0 : dashboardApi.setScale({ scale: scale / 100 });
341
+ dashboardApi?.setScale({ scale: scale / 100 });
322
342
  },
323
343
  [setScaleType, setCurrentScale, dashboardApi]
324
344
  );
325
345
  const handleFitToWidthClick = (0, react_exports.useCallback)(() => {
326
346
  setScaleType("fit");
327
- dashboardApi == null ? void 0 : dashboardApi.fitToWidth();
347
+ dashboardApi?.fitToWidth();
328
348
  }, [setScaleType, dashboardApi]);
329
349
  const handleAutoClick = (0, react_exports.useCallback)(() => {
330
350
  setScaleType("auto");
331
- dashboardApi == null ? void 0 : dashboardApi.fitToWidth({ maxScale: 1 });
351
+ dashboardApi?.fitToWidth({ maxScale: 1 });
332
352
  }, [setScaleType, dashboardApi]);
333
353
  const { handleRequestClose, handleRequestOpen, isOpen } = useDropdown_default({
334
354
  isContentClickClose: true
@@ -468,7 +488,8 @@ var StyledEndAdornment = styled_components_default.span`
468
488
  var percentAdornment = /* @__PURE__ */ react_default.createElement(StyledEndAdornment, null, "%");
469
489
  var ZoomNumber = ({
470
490
  currentScale,
471
- onScaleChange
491
+ onScaleChange,
492
+ ...rest
472
493
  }) => {
473
494
  const onValueChange = (0, react_exports.useCallback)(
474
495
  (_e, value = 100) => {
@@ -484,6 +505,7 @@ var ZoomNumber = ({
484
505
  return /* @__PURE__ */ react_default.createElement(
485
506
  StyledNumber,
486
507
  {
508
+ ...rest,
487
509
  value: currentScale,
488
510
  onChange: handleChange,
489
511
  onKeyDown: handleKeyPress,
@@ -514,6 +536,33 @@ var StyledTooltip = styled_components_default(Tooltip_default)`
514
536
  display: flex;
515
537
  }
516
538
  `;
539
+ var ZoomTooltipChildren = ({
540
+ currentScale,
541
+ onScaleChange,
542
+ dashboardApi,
543
+ appearance,
544
+ setCurrentScale,
545
+ scaleType,
546
+ setScaleType,
547
+ ...tooltipProps
548
+ }) => /* @__PURE__ */ react_default.createElement(react_default.Fragment, null, /* @__PURE__ */ react_default.createElement(
549
+ ZoomNumber,
550
+ {
551
+ currentScale,
552
+ onScaleChange,
553
+ ...tooltipProps
554
+ }
555
+ ), /* @__PURE__ */ react_default.createElement(
556
+ ZoomMenu,
557
+ {
558
+ dashboardApi,
559
+ appearance,
560
+ currentScale,
561
+ setCurrentScale,
562
+ scaleType,
563
+ setScaleType
564
+ }
565
+ ));
517
566
  var Zoom = ({
518
567
  showSeparator = true,
519
568
  appearance = "default",
@@ -543,10 +592,9 @@ var Zoom = ({
543
592
  }, [currentScale, scaleType, mode, debouncedDispatch]);
544
593
  const activeTabId = (0, dashboard_state_exports.useSelector)(dashboard_state_exports.selectActiveTab);
545
594
  (0, react_exports.useEffect)(() => {
546
- var _a;
547
- const subscription = (_a = dashboardApi == null ? void 0 : dashboardApi.getZoomLevel()) == null ? void 0 : _a.subscribe({ next: handleZoom });
595
+ const subscription = dashboardApi?.getZoomLevel()?.subscribe({ next: handleZoom });
548
596
  return () => {
549
- subscription == null ? void 0 : subscription.unsubscribe();
597
+ subscription?.unsubscribe();
550
598
  };
551
599
  }, [dashboardApi, activeTabId, handleZoom]);
552
600
  const separator = (0, react_exports.useMemo)(
@@ -557,7 +605,7 @@ var Zoom = ({
557
605
  (scale) => () => {
558
606
  setCurrentScale(scale);
559
607
  setScaleType(null);
560
- dashboardApi == null ? void 0 : dashboardApi.setScale({ scale: scale / 100 });
608
+ dashboardApi?.setScale({ scale: scale / 100 });
561
609
  },
562
610
  [dashboardApi]
563
611
  );
@@ -568,18 +616,12 @@ var Zoom = ({
568
616
  content: (0, i18n_exports._)("Zoom level")
569
617
  },
570
618
  /* @__PURE__ */ react_default.createElement(
571
- ZoomNumber,
619
+ ZoomTooltipChildren,
572
620
  {
573
621
  currentScale,
574
- onScaleChange: handleScaleChange
575
- }
576
- ),
577
- /* @__PURE__ */ react_default.createElement(
578
- ZoomMenu,
579
- {
622
+ onScaleChange: handleScaleChange,
580
623
  dashboardApi,
581
624
  appearance,
582
- currentScale,
583
625
  setCurrentScale,
584
626
  scaleType,
585
627
  setScaleType
@@ -594,4 +636,4 @@ export {
594
636
  TokenManager,
595
637
  Zoom
596
638
  };
597
- //# sourceMappingURL=chunk-RZRB3MPG.js.map
639
+ //# sourceMappingURL=chunk-RD6QZCUY.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/buttons/AIAssistant/AIAssistant.tsx", "esm-externals:@splunk/react-icons/Checkmark", "../../src/buttons/Display/Display.tsx", "esm-externals:@splunk/react-icons/ListToken", "../../src/buttons/tokenManager/TokenManager.tsx", "esm-externals:@splunk/ui-utils/format", "../../src/buttons/Zoom/ZoomMenu.tsx", "esm-externals:@splunk/react-ui/Number", "../../src/buttons/Zoom/ZoomNumber.tsx", "../../src/buttons/Zoom/Zoom.tsx"],
4
+ "sourcesContent": ["import React, { Suspense, useCallback } from 'react';\nimport { ErrorBoundary } from '@splunk/dashboard-ui';\nimport { console } from '@splunk/dashboard-utils';\nimport {\n useDashboardApi,\n useFeatureFlags,\n useMicrofrontendContext,\n} from '@splunk/dashboard-context';\nimport { useSplunkTheme } from '@splunk/themes';\nimport { _ } from '@splunk/ui-utils/i18n';\nimport Tooltip from '@splunk/react-ui/Tooltip';\nimport ToolbarItem from '../../Item';\n\nconst aiButtonStyle = { height: '100%' };\nconst EmptyComponent = () => null;\n\nexport const AIAssistant = () => {\n const { allowDashboardAIAssistant } = useFeatureFlags();\n const { AIButton } = useMicrofrontendContext().microfrontendProxy ?? {};\n const dashboardApi = useDashboardApi();\n\n const { colorScheme, density, family } = useSplunkTheme();\n\n const handleError = useCallback((error: string) => {\n console.error(_('Error loading AI Assistant:'), error);\n return <EmptyComponent />;\n }, []);\n\n const handleClick = useCallback(() => {\n dashboardApi.openPanel({\n activePanel: 'config',\n panelProps: {\n showAIPanel: true,\n },\n });\n }, [dashboardApi]);\n\n if (!allowDashboardAIAssistant || !AIButton) {\n return null;\n }\n\n return (\n <ErrorBoundary render={handleError}>\n <ToolbarItem>\n <Suspense key=\"ai-assistant\" fallback={null}>\n <Tooltip\n contentRelationship=\"label\"\n content={_('AI Assistant')}\n >\n <AIButton\n data-test=\"ai-button\"\n onClick={handleClick}\n colorScheme={colorScheme}\n style={aiButtonStyle}\n density={density}\n family={family}\n />\n </Tooltip>\n </Suspense>\n </ToolbarItem>\n </ErrorBoundary>\n );\n};\n", "import * as defaultImport from \"@splunk/react-icons/Checkmark\";\nexport * from \"@splunk/react-icons/Checkmark\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "import React, { useCallback, useMemo } from 'react';\nimport { _ } from '@splunk/ui-utils/i18n';\nimport Dropdown, {\n type DropdownRequestCloseHandler,\n type DropdownRequestOpenHandler,\n} from '@splunk/react-ui/Dropdown';\nimport Menu from '@splunk/react-ui/Menu';\nimport Button, { type ButtonPropsBase } from '@splunk/react-ui/Button';\nimport Tooltip from '@splunk/react-ui/Tooltip';\nimport {\n selectAreGlobalItemsCollapsed,\n selectGlobalInputs,\n selectDescription,\n selectIsDescriptionCollapsed,\n selectLayoutGlobalOptions,\n useSelector,\n} from '@splunk/dashboard-state';\nimport Checkmark from '@splunk/react-icons/Checkmark';\nimport { variables } from '@splunk/themes';\nimport styled from 'styled-components';\nimport useDropdown from '../../hooks/useDropdown';\nimport type { ToolbarButtonProps } from '../../types/common';\n\nconst menuStyle = {\n minWidth: '150px',\n};\n\nconst CheckmarkIcon = styled(Checkmark)`\n color: ${variables.contentColorActive};\n`;\n\nconst CheckmarkPlaceholder = styled.span`\n display: inline-block;\n width: 16px;\n`;\n\ninterface DisplayProps extends ToolbarButtonProps {\n appearance?: ButtonPropsBase['appearance'];\n /**\n * Must be `Menu.Item`, `Menu.Heading`, or `Menu.Divider`.\n * Interactive elements are not supported as children.\n */\n children?: React.ReactNode;\n onRequestOpen?: DropdownRequestOpenHandler;\n onRequestClose?: DropdownRequestCloseHandler;\n}\n\nexport const Display = ({\n appearance = 'default',\n dashboardApi,\n children,\n onRequestOpen,\n onRequestClose,\n}: DisplayProps): JSX.Element | null => {\n const globalInputs = useSelector(selectGlobalInputs);\n const hasGlobalInputs = (globalInputs?.length ?? 0) > 0;\n const areInputsCollapsed = useSelector(selectAreGlobalItemsCollapsed);\n const showInputs = !areInputsCollapsed;\n const description = useSelector(selectDescription);\n const { showTitleAndDescription = true } = useSelector(\n selectLayoutGlobalOptions\n );\n const hasDescription = !!description && showTitleAndDescription;\n const isDescriptionCollapsed = useSelector(selectIsDescriptionCollapsed);\n const showDescription = !isDescriptionCollapsed;\n\n const handleInputsToggle = useCallback(() => {\n dashboardApi?.setAreGlobalInputsCollapsed({\n collapsed: !areInputsCollapsed,\n });\n }, [dashboardApi, areInputsCollapsed]);\n\n const handleDescriptionToggle = useCallback(() => {\n dashboardApi?.setIsDescriptionCollapsed({\n collapsed: !isDescriptionCollapsed,\n });\n }, [dashboardApi, isDescriptionCollapsed]);\n\n const {\n handleRequestClose: baseHandleRequestClose,\n handleRequestOpen: baseHandleRequestOpen,\n isOpen,\n } = useDropdown({\n isContentClickClose: true,\n });\n\n const handleRequestOpen = useCallback<DropdownRequestOpenHandler>(\n (event, data) => {\n onRequestOpen?.(event, data);\n baseHandleRequestOpen();\n },\n [onRequestOpen, baseHandleRequestOpen]\n );\n\n const handleRequestClose = useCallback<DropdownRequestCloseHandler>(\n (data) => {\n onRequestClose?.(data);\n baseHandleRequestClose(data);\n },\n [onRequestClose, baseHandleRequestClose]\n );\n\n const buttonToggle = useMemo(\n () => (\n <Button\n data-clickable\n data-test=\"display-dropdown-button\"\n appearance={appearance}\n isMenu\n aria-label={_('Display options')}\n >\n {_('Display')}\n </Button>\n ),\n [appearance]\n );\n\n const inputsCheckmarkIcon = useMemo(() => {\n return showInputs ? <CheckmarkIcon /> : <CheckmarkPlaceholder />;\n }, [showInputs]);\n\n const descriptionCheckmarkIcon = useMemo(() => {\n return showDescription ? <CheckmarkIcon /> : <CheckmarkPlaceholder />;\n }, [showDescription]);\n\n const dropdownMenuChildren = useMemo(() => {\n const items = [];\n\n if (hasDescription) {\n items.push(\n <Menu.Item\n key=\"description-item\"\n data-test=\"description-menu-item\"\n onClick={handleDescriptionToggle}\n startAdornment={descriptionCheckmarkIcon}\n >\n {_('Dashboard description')}\n </Menu.Item>\n );\n }\n\n if (hasGlobalInputs) {\n items.push(\n <Menu.Item\n key=\"inputs-item\"\n data-test=\"inputs-menu-item\"\n onClick={handleInputsToggle}\n startAdornment={inputsCheckmarkIcon}\n >\n {_('Inputs')}\n </Menu.Item>\n );\n }\n\n return items;\n }, [\n hasDescription,\n hasGlobalInputs,\n handleDescriptionToggle,\n handleInputsToggle,\n descriptionCheckmarkIcon,\n inputsCheckmarkIcon,\n ]);\n\n if (\n dropdownMenuChildren.length === 0 &&\n React.Children.toArray(children).length === 0\n ) {\n return null;\n }\n\n return (\n <Tooltip contentRelationship=\"label\" content={_('Display')}>\n <Dropdown\n onRequestClose={handleRequestClose}\n onRequestOpen={handleRequestOpen}\n open={isOpen}\n toggle={buttonToggle}\n >\n <Menu\n style={menuStyle}\n focusMode=\"normal\"\n aria-label={_('Display options')}\n >\n {dropdownMenuChildren}\n {children}\n </Menu>\n </Dropdown>\n </Tooltip>\n );\n};\n", "import * as defaultImport from \"@splunk/react-icons/ListToken\";\nexport * from \"@splunk/react-icons/ListToken\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "import React, { useCallback } from 'react';\nimport { useFeatureFlags } from '@splunk/dashboard-context';\nimport { _ } from '@splunk/ui-utils/i18n';\nimport ListToken from '@splunk/react-icons/ListToken';\nimport IconButton, { prepareIcon } from '../../IconButton';\nimport type { ToolbarButtonProps } from '../../types/common';\n\nconst tokenManagerIcon = prepareIcon({\n Icon: ListToken,\n});\n\n/**\n * Button that toggles open token manager panel\n */\nexport const TokenManager = ({ dashboardApi }: ToolbarButtonProps) => {\n const { showTokenManager } = useFeatureFlags();\n\n const handleClick = useCallback(() => {\n const isOpen = dashboardApi?.getOpenedPanel() === 'tokenManager';\n if (isOpen) {\n dashboardApi?.closePanel();\n } else {\n // Open tokens panel\n dashboardApi?.openPanel({\n activePanel: 'tokenManager',\n panelProps: {\n focusOnOpen: true,\n },\n });\n }\n }, [dashboardApi]);\n\n if (!showTokenManager) {\n return null;\n }\n\n return (\n <IconButton\n testLabel=\"token-manager-button\"\n onClick={handleClick}\n icon={tokenManagerIcon}\n tooltipContent={_('Token manager')}\n />\n );\n};\n", "import * as defaultImport from \"@splunk/ui-utils/format\";\nexport * from \"@splunk/ui-utils/format\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "import React, { useCallback, useMemo } from 'react';\nimport { _ } from '@splunk/ui-utils/i18n';\nimport Dropdown from '@splunk/react-ui/Dropdown';\nimport Menu from '@splunk/react-ui/Menu';\nimport Button, { type ButtonPropsBase } from '@splunk/react-ui/Button';\nimport { isMac } from '@splunk/dashboard-utils';\nimport { sprintf } from '@splunk/ui-utils/format';\nimport useDropdown from '../../hooks/useDropdown';\nimport type { ToolbarButtonProps } from '../../types/common';\n\nconst zoomLevels = [25, 50, 100, 150, 200];\n\nconst buttonStyle = {\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n};\n\nconst menuStyle = {\n width: '200px',\n};\n\nexport interface ZoomMenuProps {\n appearance?: ButtonPropsBase['appearance'];\n dashboardApi: ToolbarButtonProps['dashboardApi'];\n currentScale: number;\n setCurrentScale: (scale: number) => void;\n scaleType: 'auto' | 'fit' | null;\n setScaleType: (type: 'auto' | 'fit' | null) => void;\n}\n\nexport const ZoomMenu = ({\n dashboardApi,\n appearance = 'default',\n currentScale,\n setCurrentScale,\n scaleType,\n setScaleType,\n}: ZoomMenuProps): JSX.Element => {\n const handleZoomOutClick = useCallback(() => {\n setScaleType(null);\n dashboardApi?.zoomOut();\n }, [setScaleType, dashboardApi]);\n\n const handleZoomInClick = useCallback(() => {\n setScaleType(null);\n dashboardApi?.zoomIn();\n }, [setScaleType, dashboardApi]);\n\n const handleScaleChange = useCallback(\n (scale: number) => () => {\n setCurrentScale(scale);\n setScaleType(null);\n dashboardApi?.setScale({ scale: scale / 100 });\n },\n [setScaleType, setCurrentScale, dashboardApi]\n );\n\n const handleFitToWidthClick = useCallback(() => {\n setScaleType('fit');\n dashboardApi?.fitToWidth();\n }, [setScaleType, dashboardApi]);\n\n const handleAutoClick = useCallback(() => {\n setScaleType('auto');\n dashboardApi?.fitToWidth({ maxScale: 1 });\n }, [setScaleType, dashboardApi]);\n\n const { handleRequestClose, handleRequestOpen, isOpen } = useDropdown({\n isContentClickClose: true,\n });\n\n const buttonToggle = (\n <Button\n data-clickable\n data-test=\"zoom-dropdown-button\"\n style={buttonStyle}\n appearance={appearance}\n isMenu\n aria-label={sprintf(_('Zoom level, %(currentScale)s%%'), {\n currentScale,\n })}\n />\n );\n\n const isMacOS = useMemo(() => isMac(), []);\n\n const dropdownMenuChildren = useMemo(() => {\n const zoomButtons = zoomLevels.map((percent) => {\n return (\n <Menu.Item\n data-test={`${percent}-percent`}\n onClick={handleScaleChange(percent)}\n key={percent}\n selectable\n selected={currentScale === percent && !scaleType}\n >\n {`${percent}%`}\n </Menu.Item>\n );\n });\n return [\n <Menu.Item\n data-test=\"auto\"\n onClick={handleAutoClick}\n key=\"auto\"\n selectable\n selected={scaleType === 'auto'}\n >\n {_('Auto')}\n </Menu.Item>,\n <Menu.Item\n data-test=\"fit-to-width\"\n onClick={handleFitToWidthClick}\n key=\"fit-to-width\"\n description={isMacOS ? _('Ctrl Cmd 0') : _('Ctrl Alt 0')}\n descriptionPosition=\"right\"\n selectable\n selected={scaleType === 'fit'}\n >\n {_('Fit')}\n </Menu.Item>,\n <Menu.Divider key=\"menu-divider-1\" />,\n ...zoomButtons,\n <Menu.Divider key=\"menu-divider-2\" />,\n <Menu.Item\n data-test=\"zoom-in\"\n onClick={handleZoomInClick}\n key=\"zoom-in\"\n description={isMacOS ? _('Ctrl Cmd =') : _('Ctrl Alt =')}\n descriptionPosition=\"right\"\n selectable\n >\n {_('Zoom in')}\n </Menu.Item>,\n <Menu.Item\n data-test=\"zoom-out\"\n onClick={handleZoomOutClick}\n key=\"zoom-out\"\n description={isMacOS ? _('Ctrl Cmd -') : _('Ctrl Alt -')}\n descriptionPosition=\"right\"\n selectable\n >\n {_('Zoom out')}\n </Menu.Item>,\n ];\n }, [\n currentScale,\n handleAutoClick,\n scaleType,\n handleFitToWidthClick,\n isMacOS,\n handleZoomInClick,\n handleZoomOutClick,\n handleScaleChange,\n ]);\n\n return (\n <Dropdown\n onRequestClose={handleRequestClose}\n onRequestOpen={handleRequestOpen}\n open={isOpen}\n toggle={buttonToggle}\n retainFocus\n >\n <Menu\n style={menuStyle}\n focusMode=\"normal\"\n aria-label={_('Zoom level')}\n >\n {dropdownMenuChildren}\n </Menu>\n </Dropdown>\n );\n};\n", "import * as defaultImport from \"@splunk/react-ui/Number\";\nexport * from \"@splunk/react-ui/Number\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "import React, { useCallback } from 'react';\nimport styled from 'styled-components';\nimport SUINumber from '@splunk/react-ui/Number';\nimport { variables } from '@splunk/themes';\nimport { useNumberInput, type OnValueChangeType } from '@splunk/dashboard-ui';\n\nconst StyledNumber = styled(SUINumber)`\n padding-right: ${variables.spacingSmall};\n & > input {\n text-align: right;\n }\n`;\n\nconst StyledEndAdornment = styled.span`\n color: ${variables.contentColorActive};\n`;\n\ninterface ZoomNumberProps {\n currentScale: number;\n onScaleChange: (scale: number) => () => void;\n 'aria-labelledby'?: string;\n labelledBy?: string;\n}\n\nconst percentAdornment = <StyledEndAdornment>%</StyledEndAdornment>;\n\nexport const ZoomNumber = ({\n currentScale,\n onScaleChange,\n ...rest\n}: ZoomNumberProps) => {\n const onValueChange = useCallback<OnValueChangeType>(\n (_e, value = 100) => {\n const v =\n typeof value === 'string' ? Number.parseInt(value, 10) : value;\n onScaleChange(v)();\n },\n [onScaleChange]\n );\n const { handleChange, handleBlur, handleFocus, handleKeyPress } =\n useNumberInput({\n value: currentScale,\n onValueChange,\n });\n\n return (\n <StyledNumber\n {...rest}\n value={currentScale}\n onChange={handleChange}\n onKeyDown={handleKeyPress}\n onBlur={handleBlur}\n onFocus={handleFocus}\n step={5}\n min={1}\n max={10000}\n roundTo={0}\n endAdornment={percentAdornment}\n hideStepButtons\n data-test=\"zoom-number\"\n append\n />\n );\n};\n", "import React, { useCallback, useMemo, useState, useEffect } from 'react';\nimport styled from 'styled-components';\nimport { debounce } from 'lodash';\n\nimport { _ } from '@splunk/ui-utils/i18n';\nimport { variables } from '@splunk/themes';\nimport Tooltip from '@splunk/react-ui/Tooltip';\nimport type { ButtonPropsBase } from '@splunk/react-ui/Button';\n\nimport { useDashboardApi } from '@splunk/dashboard-context';\nimport {\n selectActiveTab,\n useSelector,\n useDispatch,\n zoomLevelChanged,\n} from '@splunk/dashboard-state';\n\nimport type { ToolbarButtonProps } from '../../types/common';\nimport ItemSeparator from '../../components/ItemSeparator';\nimport { ZoomMenu, type ZoomMenuProps } from './ZoomMenu';\nimport { ZoomNumber } from './ZoomNumber';\n\nconst Container = styled.div`\n margin-inline-end: 0;\n display: flex;\n min-width: 96px;\n gap: ${variables.spacingSmall};\n`;\n\nconst StyledTooltip = styled(Tooltip)`\n width: 90px;\n & span {\n display: flex;\n }\n`;\n\ninterface ZoomTooltipChildrenProps extends ZoomMenuProps {\n currentScale: number;\n onScaleChange: (scale: number) => () => void;\n 'aria-labelledby'?: string;\n labelledBy?: string;\n}\n\n// Thin wrapper so Tooltip's cloneElement can forward aria-labelledby to ZoomNumber\nconst ZoomTooltipChildren = ({\n currentScale,\n onScaleChange,\n dashboardApi,\n appearance,\n setCurrentScale,\n scaleType,\n setScaleType,\n ...tooltipProps\n}: ZoomTooltipChildrenProps) => (\n <>\n <ZoomNumber\n currentScale={currentScale}\n onScaleChange={onScaleChange}\n {...tooltipProps}\n />\n <ZoomMenu\n dashboardApi={dashboardApi}\n appearance={appearance}\n currentScale={currentScale}\n setCurrentScale={setCurrentScale}\n scaleType={scaleType}\n setScaleType={setScaleType}\n />\n </>\n);\n\nexport interface ZoomProps extends ToolbarButtonProps {\n appearance?: ButtonPropsBase['appearance'];\n showSeparator?: boolean;\n}\n\nexport const Zoom = ({\n showSeparator = true,\n appearance = 'default',\n mode = 'view',\n}: ZoomProps): JSX.Element => {\n const [currentScale, setCurrentScale] = useState(100);\n const [scaleType, setScaleType] = useState<'auto' | 'fit' | null>(null);\n const dashboardApi = useDashboardApi();\n const dispatch = useDispatch();\n\n const handleZoom = useCallback((level?: number) => {\n if (level) {\n setCurrentScale(Math.round(level * 100));\n }\n }, []);\n\n const debouncedDispatch = useMemo(\n () => debounce(dispatch, 500),\n [dispatch]\n );\n\n useEffect(() => {\n debouncedDispatch(\n zoomLevelChanged({\n scale: currentScale,\n scaleType,\n mode,\n })\n );\n }, [currentScale, scaleType, mode, debouncedDispatch]);\n\n const activeTabId = useSelector(selectActiveTab);\n useEffect(() => {\n const subscription = dashboardApi\n ?.getZoomLevel()\n ?.subscribe({ next: handleZoom });\n\n return () => {\n subscription?.unsubscribe();\n };\n }, [dashboardApi, activeTabId, handleZoom]);\n\n const separator = useMemo(\n () => (showSeparator ? <ItemSeparator key=\"item-separator\" /> : null),\n [showSeparator]\n );\n\n const handleScaleChange = useCallback(\n (scale: number) => () => {\n setCurrentScale(scale);\n setScaleType(null);\n dashboardApi?.setScale({ scale: scale / 100 });\n },\n [dashboardApi]\n );\n\n return (\n <Container>\n <StyledTooltip\n contentRelationship=\"label\"\n content={_('Zoom level')}\n >\n <ZoomTooltipChildren\n currentScale={currentScale}\n onScaleChange={handleScaleChange}\n dashboardApi={dashboardApi}\n appearance={appearance}\n setCurrentScale={setCurrentScale}\n scaleType={scaleType}\n setScaleType={setScaleType}\n />\n </StyledTooltip>\n {separator}\n </Container>\n );\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["defaultImport", "defaultImport", "menuStyle", "defaultImport"]
7
+ }
@@ -3,28 +3,28 @@ SPLUNK CONFIDENTIAL – Use or disclosure of this material in whole or
3
3
  in part without a valid written license from Splunk Inc. is PROHIBITED. */
4
4
  import {
5
5
  ItemSeparator_default
6
- } from "./chunk-WSTQTULM.js";
6
+ } from "./chunk-MDZOPP2X.js";
7
7
  import {
8
8
  i18n_exports
9
- } from "./chunk-JIIPUMEA.js";
9
+ } from "./chunk-PZA4F4AY.js";
10
10
  import {
11
11
  dashboard_state_exports
12
- } from "./chunk-ZV4AQ5DL.js";
12
+ } from "./chunk-6C2NOEOI.js";
13
13
  import {
14
14
  themes_exports
15
- } from "./chunk-RPNGCVZL.js";
15
+ } from "./chunk-OBDH7GEY.js";
16
16
  import {
17
17
  react_default,
18
18
  react_exports
19
- } from "./chunk-XWRMHLAP.js";
19
+ } from "./chunk-OOGFGU4X.js";
20
20
  import {
21
21
  styled_components_default,
22
22
  styled_components_exports
23
- } from "./chunk-V3YGNO27.js";
23
+ } from "./chunk-Q5OC2QQV.js";
24
24
  import {
25
25
  __export,
26
26
  __reExport
27
- } from "./chunk-VQIRZ53C.js";
27
+ } from "./chunk-AFH5LL74.js";
28
28
 
29
29
  // esm-externals:@splunk/react-ui/Switch
30
30
  var Switch_exports = {};
@@ -49,10 +49,9 @@ var GridLineSwitch = ({
49
49
  showSeparator,
50
50
  layoutType
51
51
  }) => {
52
- var _a;
53
- const showGrid = (_a = (0, dashboard_state_exports.useSelector)(dashboard_state_exports.selectAreGridLinesEnabled)) != null ? _a : false;
52
+ const showGrid = (0, dashboard_state_exports.useSelector)(dashboard_state_exports.selectAreGridLinesEnabled) ?? false;
54
53
  const handleClick = (0, react_exports.useCallback)(() => {
55
- dashboardApi == null ? void 0 : dashboardApi.toggleGridLines(!showGrid);
54
+ dashboardApi?.toggleGridLines(!showGrid);
56
55
  }, [dashboardApi, showGrid]);
57
56
  const separator = (0, react_exports.useMemo)(
58
57
  () => showSeparator ? /* @__PURE__ */ react_default.createElement(ItemSeparator_default, { key: "item-separator" }) : null,
@@ -80,4 +79,4 @@ var GridLineSwitch_default = GridLineSwitch;
80
79
  export {
81
80
  GridLineSwitch_default
82
81
  };
83
- //# sourceMappingURL=chunk-MUXHFVOC.js.map
82
+ //# sourceMappingURL=chunk-RL6UDJ3E.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["esm-externals:@splunk/react-ui/Switch", "../../src/buttons/GridLineSwitch.tsx"],
4
4
  "sourcesContent": ["import * as defaultImport from \"@splunk/react-ui/Switch\";\nexport * from \"@splunk/react-ui/Switch\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "import React, { useCallback, useMemo } from 'react';\nimport styled from 'styled-components';\nimport { _ } from '@splunk/ui-utils/i18n';\nimport Switch from '@splunk/react-ui/Switch';\nimport {\n selectAreGridLinesEnabled,\n useSelector,\n} from '@splunk/dashboard-state';\nimport { variables } from '@splunk/themes';\nimport ItemSeparator from '../components/ItemSeparator';\nimport type { ToolbarButtonProps } from '../types/common';\n\nconst SwitchContainer = styled.div`\n display: flex;\n align-items: center;\n flex-direction: row;\n gap: ${variables.spacingSmall};\n`;\n\nexport interface GridLineSwitchProps extends ToolbarButtonProps {\n showSeparator?: boolean;\n}\n\nconst GridLineSwitch = ({\n dashboardApi,\n mode,\n showSeparator,\n layoutType,\n}: GridLineSwitchProps) => {\n const showGrid = useSelector(selectAreGridLinesEnabled) ?? false;\n\n const handleClick = useCallback(() => {\n dashboardApi?.toggleGridLines(!showGrid);\n }, [dashboardApi, showGrid]);\n\n const separator = useMemo(\n () => (showSeparator ? <ItemSeparator key=\"item-separator\" /> : null),\n [showSeparator]\n );\n\n if (!dashboardApi || mode !== 'edit' || layoutType === 'grid') {\n return null;\n }\n\n return (\n <SwitchContainer key=\"grid-line-switch\">\n <Switch\n onClick={handleClick}\n selected={showGrid}\n selectedLabel={_('Gridlines displayed')}\n unselectedLabel={_('Gridlines not displayed')}\n appearance=\"toggle\"\n data-test=\"gridline-toggle\"\n data-clickable\n >\n {_('Gridlines')}\n </Switch>\n {separator}\n </SwitchContainer>\n );\n};\n\nexport default GridLineSwitch;\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AACA;AADA,YAAY,mBAAmB;AAC/B,6BAAc;AACd,IAAO,iBAAS,aAAa,gBAA8B,wBAAU;;;ACUrE,IAAM,kBAAkB,0BAAO;AAAA;AAAA;AAAA;AAAA,WAIpB,yBAAU,YAAY;AAAA;AAOjC,IAAM,iBAAiB,CAAC;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,MAA2B;AA5B3B;AA6BI,QAAM,YAAW,8CAAY,iDAAyB,MAArC,YAA0C;AAE3D,QAAM,kBAAc,2BAAY,MAAM;AAClC,iDAAc,gBAAgB,CAAC;AAAA,EACnC,GAAG,CAAC,cAAc,QAAQ,CAAC;AAE3B,QAAM,gBAAY;AAAA,IACd,MAAO,gBAAgB,4CAAC,yBAAc,KAAI,kBAAiB,IAAK;AAAA,IAChE,CAAC,aAAa;AAAA,EAClB;AAEA,MAAI,CAAC,gBAAgB,SAAS,UAAU,eAAe,QAAQ;AAC3D,WAAO;AAAA,EACX;AAEA,SACI,4CAAC,mBAAgB,KAAI,sBACjB;AAAA,IAAC;AAAA;AAAA,MACG,SAAS;AAAA,MACT,UAAU;AAAA,MACV,mBAAe,gBAAE,qBAAqB;AAAA,MACtC,qBAAiB,gBAAE,yBAAyB;AAAA,MAC5C,YAAW;AAAA,MACX,aAAU;AAAA,MACV,kBAAc;AAAA;AAAA,QAEb,gBAAE,WAAW;AAAA,EAClB,GACC,SACL;AAER;AAEA,IAAO,yBAAQ;",
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AACA;AADA,YAAY,mBAAmB;AAC/B,6BAAc;AACd,IAAO,iBAAS,aAAa,gBAA8B,wBAAU;;;ACUrE,IAAM,kBAAkB,0BAAO;AAAA;AAAA;AAAA;AAAA,WAIpB,yBAAU,YAAY;AAAA;AAOjC,IAAM,iBAAiB,CAAC;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,MAA2B;AACvB,QAAM,eAAW,qCAAY,iDAAyB,KAAK;AAE3D,QAAM,kBAAc,2BAAY,MAAM;AAClC,kBAAc,gBAAgB,CAAC,QAAQ;AAAA,EAC3C,GAAG,CAAC,cAAc,QAAQ,CAAC;AAE3B,QAAM,gBAAY;AAAA,IACd,MAAO,gBAAgB,4CAAC,yBAAc,KAAI,kBAAiB,IAAK;AAAA,IAChE,CAAC,aAAa;AAAA,EAClB;AAEA,MAAI,CAAC,gBAAgB,SAAS,UAAU,eAAe,QAAQ;AAC3D,WAAO;AAAA,EACX;AAEA,SACI,4CAAC,mBAAgB,KAAI,sBACjB;AAAA,IAAC;AAAA;AAAA,MACG,SAAS;AAAA,MACT,UAAU;AAAA,MACV,mBAAe,gBAAE,qBAAqB;AAAA,MACtC,qBAAiB,gBAAE,yBAAyB;AAAA,MAC5C,YAAW;AAAA,MACX,aAAU;AAAA,MACV,kBAAc;AAAA;AAAA,QAEb,gBAAE,WAAW;AAAA,EAClB,GACC,SACL;AAER;AAEA,IAAO,yBAAQ;",
6
6
  "names": []
7
7
  }
@@ -4,11 +4,11 @@ in part without a valid written license from Splunk Inc. is PROHIBITED. */
4
4
  import {
5
5
  react_default,
6
6
  react_exports
7
- } from "./chunk-XWRMHLAP.js";
7
+ } from "./chunk-OOGFGU4X.js";
8
8
  import {
9
9
  styled_components_default,
10
10
  styled_components_exports
11
- } from "./chunk-V3YGNO27.js";
11
+ } from "./chunk-Q5OC2QQV.js";
12
12
 
13
13
  // src/PopoverItemButton.tsx
14
14
  var StyledContentWrapper = styled_components_default.span`
@@ -33,4 +33,4 @@ var PopoverItemButton_default = PopoverItemButton;
33
33
  export {
34
34
  PopoverItemButton_default
35
35
  };
36
- //# sourceMappingURL=chunk-SFYQQARV.js.map
36
+ //# sourceMappingURL=chunk-SJBQOPBI.js.map
@@ -3,19 +3,19 @@ SPLUNK CONFIDENTIAL – Use or disclosure of this material in whole or
3
3
  in part without a valid written license from Splunk Inc. is PROHIBITED. */
4
4
  import {
5
5
  i18n_exports
6
- } from "./chunk-JIIPUMEA.js";
6
+ } from "./chunk-PZA4F4AY.js";
7
7
  import {
8
8
  IconButton_default,
9
9
  prepareIcon
10
- } from "./chunk-RZWTF3BK.js";
10
+ } from "./chunk-A4S4A2N5.js";
11
11
  import {
12
12
  react_default,
13
13
  react_exports
14
- } from "./chunk-XWRMHLAP.js";
14
+ } from "./chunk-OOGFGU4X.js";
15
15
  import {
16
16
  __export,
17
17
  __reExport
18
- } from "./chunk-VQIRZ53C.js";
18
+ } from "./chunk-AFH5LL74.js";
19
19
 
20
20
  // esm-externals:@splunk/react-icons/Markdown
21
21
  var Markdown_exports = {};
@@ -33,7 +33,7 @@ var icon = prepareIcon({
33
33
  });
34
34
  var Markdown = ({ dashboardApi }) => {
35
35
  const handleClick = (0, react_exports.useCallback)(() => {
36
- dashboardApi == null ? void 0 : dashboardApi.createVisualization({
36
+ dashboardApi?.createVisualization({
37
37
  visualizationDefinition: {
38
38
  type: "splunk.markdown",
39
39
  options: {
@@ -41,7 +41,7 @@ var Markdown = ({ dashboardApi }) => {
41
41
  }
42
42
  }
43
43
  });
44
- dashboardApi == null ? void 0 : dashboardApi.openPanel({
44
+ dashboardApi?.openPanel({
45
45
  activePanel: "config"
46
46
  });
47
47
  }, [dashboardApi]);
@@ -60,4 +60,4 @@ var Markdown_default2 = Markdown;
60
60
  export {
61
61
  Markdown_default2 as Markdown_default
62
62
  };
63
- //# sourceMappingURL=chunk-RS2VRN2X.js.map
63
+ //# sourceMappingURL=chunk-VENUU6C7.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["esm-externals:@splunk/react-icons/Markdown", "../../src/buttons/Markdown.tsx"],
4
4
  "sourcesContent": ["import * as defaultImport from \"@splunk/react-icons/Markdown\";\nexport * from \"@splunk/react-icons/Markdown\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "import React, { useCallback } from 'react';\nimport { _ } from '@splunk/ui-utils/i18n';\nimport MarkdownIcon from '@splunk/react-icons/Markdown';\nimport IconButton, { prepareIcon } from '../IconButton';\nimport type { ToolbarButtonProps } from '../types/common';\n\nconst icon = prepareIcon({\n Icon: MarkdownIcon,\n});\n\n/**\n * Button that creates a empty markdown viz\n */\nconst Markdown = ({ dashboardApi }: ToolbarButtonProps): JSX.Element => {\n const handleClick = useCallback(() => {\n dashboardApi?.createVisualization({\n visualizationDefinition: {\n type: 'splunk.markdown',\n options: {\n markdown: '',\n },\n },\n });\n dashboardApi?.openPanel({\n activePanel: 'config',\n });\n }, [dashboardApi]);\n\n return (\n <IconButton\n testLabel=\"markdown-button\"\n onClick={handleClick}\n icon={icon}\n tooltipContent={_('Add markdown text')}\n />\n );\n};\n\nexport default Markdown;\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AACA;AADA,YAAY,mBAAmB;AAC/B,+BAAc;AACd,IAAO,mBAAS,aAAa,gBAA8B,wBAAU;;;ACIrE,IAAM,OAAO,YAAY;AAAA,EACrB,MAAM;AACV,CAAC;AAKD,IAAM,WAAW,CAAC,EAAE,aAAa,MAAuC;AACpE,QAAM,kBAAc,2BAAY,MAAM;AAClC,iDAAc,oBAAoB;AAAA,MAC9B,yBAAyB;AAAA,QACrB,MAAM;AAAA,QACN,SAAS;AAAA,UACL,UAAU;AAAA,QACd;AAAA,MACJ;AAAA,IACJ;AACA,iDAAc,UAAU;AAAA,MACpB,aAAa;AAAA,IACjB;AAAA,EACJ,GAAG,CAAC,YAAY,CAAC;AAEjB,SACI;AAAA,IAAC;AAAA;AAAA,MACG,WAAU;AAAA,MACV,SAAS;AAAA,MACT;AAAA,MACA,oBAAgB,gBAAE,mBAAmB;AAAA;AAAA,EACzC;AAER;AAEA,IAAOA,oBAAQ;",
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AACA;AADA,YAAY,mBAAmB;AAC/B,+BAAc;AACd,IAAO,mBAAS,aAAa,gBAA8B,wBAAU;;;ACIrE,IAAM,OAAO,YAAY;AAAA,EACrB,MAAM;AACV,CAAC;AAKD,IAAM,WAAW,CAAC,EAAE,aAAa,MAAuC;AACpE,QAAM,kBAAc,2BAAY,MAAM;AAClC,kBAAc,oBAAoB;AAAA,MAC9B,yBAAyB;AAAA,QACrB,MAAM;AAAA,QACN,SAAS;AAAA,UACL,UAAU;AAAA,QACd;AAAA,MACJ;AAAA,IACJ,CAAC;AACD,kBAAc,UAAU;AAAA,MACpB,aAAa;AAAA,IACjB,CAAC;AAAA,EACL,GAAG,CAAC,YAAY,CAAC;AAEjB,SACI;AAAA,IAAC;AAAA;AAAA,MACG,WAAU;AAAA,MACV,SAAS;AAAA,MACT;AAAA,MACA,oBAAgB,gBAAE,mBAAmB;AAAA;AAAA,EACzC;AAER;AAEA,IAAOA,oBAAQ;",
6
6
  "names": ["Markdown_default"]
7
7
  }
@@ -0,0 +1,25 @@
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
+ import {
5
+ Source_default
6
+ } from "./chunk-DONX4ISJ.js";
7
+ import {
8
+ ItemGroup_default
9
+ } from "./chunk-PKNBH4OS.js";
10
+ import {
11
+ dashboard_utils_exports
12
+ } from "./chunk-EVRV5ZFT.js";
13
+ import {
14
+ react_default,
15
+ react_exports
16
+ } from "./chunk-OOGFGU4X.js";
17
+
18
+ // src/groups/EditorGroup.tsx
19
+ var EditorGroup = (props) => /* @__PURE__ */ react_default.createElement(ItemGroup_default, { borders: false, ...props }, /* @__PURE__ */ react_default.createElement(Source_default, { onClick: props.sourceButtonOnClick ?? dashboard_utils_exports.noop }));
20
+ var EditorGroup_default = EditorGroup;
21
+
22
+ export {
23
+ EditorGroup_default
24
+ };
25
+ //# sourceMappingURL=chunk-X74ALD2D.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/groups/EditorGroup.tsx"],
4
4
  "sourcesContent": ["import React from 'react';\nimport { noop } from '@splunk/dashboard-utils';\nimport ItemGroup from '../ItemGroup';\nimport { Source } from '../buttons';\n\n/**\n * Editor button group\n */\nconst EditorGroup = (props: React.ComponentProps<typeof ItemGroup>) => (\n <ItemGroup borders={false} {...props}>\n <Source onClick={props.sourceButtonOnClick ?? noop} />\n </ItemGroup>\n);\n\nexport default EditorGroup;\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;AAQA,IAAM,cAAc,CAAC,UAA+C;AARpE;AASI,qDAAC,oCAAU,SAAS,SAAW,QAC3B,4CAAC,kBAAO,UAAS,WAAM,wBAAN,YAA6B,8BAAM,CACxD;AAAA;AAGJ,IAAO,sBAAQ;",
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAQA,IAAM,cAAc,CAAC,UACjB,4CAAC,qBAAU,SAAS,OAAQ,GAAG,SAC3B,4CAAC,kBAAO,SAAS,MAAM,uBAAuB,8BAAM,CACxD;AAGJ,IAAO,sBAAQ;",
6
6
  "names": []
7
7
  }
@@ -4,39 +4,39 @@ in part without a valid written license from Splunk Inc. is PROHIBITED. */
4
4
  import {
5
5
  Square_default,
6
6
  Square_exports
7
- } from "./chunk-RKJ7RKNK.js";
7
+ } from "./chunk-GQJXWXKY.js";
8
8
  import {
9
9
  PopoverItemButton_default
10
- } from "./chunk-SFYQQARV.js";
10
+ } from "./chunk-SJBQOPBI.js";
11
11
  import {
12
12
  Menu_default,
13
13
  Menu_exports
14
- } from "./chunk-GMMN7SOC.js";
14
+ } from "./chunk-3PEWQDKC.js";
15
15
  import {
16
16
  StyledDropdownButton
17
- } from "./chunk-BDFUA6X7.js";
17
+ } from "./chunk-CASUTGK5.js";
18
18
  import {
19
19
  Dropdown_default,
20
20
  Dropdown_exports,
21
21
  useDropdown_default
22
- } from "./chunk-4SWPK2TU.js";
22
+ } from "./chunk-KTJRF2VW.js";
23
23
  import {
24
24
  i18n_exports
25
- } from "./chunk-JIIPUMEA.js";
25
+ } from "./chunk-PZA4F4AY.js";
26
26
  import {
27
27
  prepareIcon
28
- } from "./chunk-RZWTF3BK.js";
28
+ } from "./chunk-A4S4A2N5.js";
29
29
  import {
30
30
  Item_default
31
- } from "./chunk-C3GFY32L.js";
31
+ } from "./chunk-KIWM3XWB.js";
32
32
  import {
33
33
  react_default,
34
34
  react_exports
35
- } from "./chunk-XWRMHLAP.js";
35
+ } from "./chunk-OOGFGU4X.js";
36
36
  import {
37
37
  __export,
38
38
  __reExport
39
- } from "./chunk-VQIRZ53C.js";
39
+ } from "./chunk-AFH5LL74.js";
40
40
 
41
41
  // esm-externals:@splunk/react-icons/Circle
42
42
  var Circle_exports = {};
@@ -98,11 +98,11 @@ var Shapes = ({ dashboardApi, layoutType }) => {
98
98
  const handleCreateVizButtonClick = (0, react_exports.useCallback)(
99
99
  (vizToCreate, layoutItemType) => {
100
100
  return () => {
101
- dashboardApi == null ? void 0 : dashboardApi.createVisualization({
101
+ dashboardApi?.createVisualization({
102
102
  visualizationDefinition: vizToCreate,
103
103
  layoutItemType
104
104
  });
105
- dashboardApi == null ? void 0 : dashboardApi.openPanel({ activePanel: "config" });
105
+ dashboardApi?.openPanel({ activePanel: "config" });
106
106
  };
107
107
  },
108
108
  [dashboardApi]
@@ -172,4 +172,4 @@ var Shapes_default = Shapes;
172
172
  export {
173
173
  Shapes_default
174
174
  };
175
- //# sourceMappingURL=chunk-UUMIWWJE.js.map
175
+ //# sourceMappingURL=chunk-YDIFCM3E.js.map