@splunk/dashboard-toolbar 29.3.4 → 29.4.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 (249) hide show
  1. package/.storybook/index.ts +2 -0
  2. package/.storybook/withDashboardApiContext.tsx +18 -0
  3. package/.storybook/withDashboardContext.tsx +34 -0
  4. package/CollapsibleToolbar.js +22 -6
  5. package/CollapsibleToolbar.js.map +2 -2
  6. package/IconButton.js +1 -1
  7. package/IconButton.js.map +2 -2
  8. package/Item.js +1 -1
  9. package/Item.js.map +2 -2
  10. package/ItemGroup.js +1 -1
  11. package/ItemGroup.js.map +2 -2
  12. package/PopoverItemButton.js +1 -1
  13. package/PopoverItemButton.js.map +2 -2
  14. package/Toolbar.js +1 -1
  15. package/Toolbar.js.map +2 -2
  16. package/buttons/Charts.js +1 -1
  17. package/buttons/Charts.js.map +2 -2
  18. package/buttons/Config.js +1 -1
  19. package/buttons/Config.js.map +2 -2
  20. package/buttons/ContentExport.js +1 -1
  21. package/buttons/ContentExport.js.map +2 -2
  22. package/buttons/Data.js +1 -1
  23. package/buttons/Data.js.map +2 -2
  24. package/buttons/EmptyVisualization.js +1 -1
  25. package/buttons/EmptyVisualization.js.map +2 -2
  26. package/buttons/ExportDashboardButton.js +22 -9
  27. package/buttons/ExportDashboardButton.js.map +4 -4
  28. package/buttons/Fullscreen.js +43 -4
  29. package/buttons/Fullscreen.js.map +3 -3
  30. package/buttons/GridLineSwitch.js +1 -1
  31. package/buttons/GridLineSwitch.js.map +2 -2
  32. package/buttons/HelpButton.js +2 -2
  33. package/buttons/HelpButton.js.map +2 -2
  34. package/buttons/IconGallery.js +1 -1
  35. package/buttons/IconGallery.js.map +2 -2
  36. package/buttons/Image.js +1 -1
  37. package/buttons/Image.js.map +2 -2
  38. package/buttons/ImageGallery.js +1 -1
  39. package/buttons/ImageGallery.js.map +2 -2
  40. package/buttons/Inputs.js +1 -1
  41. package/buttons/Inputs.js.map +2 -2
  42. package/buttons/Markdown.js +1 -1
  43. package/buttons/Markdown.js.map +2 -2
  44. package/buttons/ModeSwitch.js +1 -1
  45. package/buttons/ModeSwitch.js.map +2 -2
  46. package/buttons/Redo.js +1 -1
  47. package/buttons/Redo.js.map +2 -2
  48. package/buttons/Shapes.js +1 -1
  49. package/buttons/Shapes.js.map +2 -2
  50. package/buttons/Source.js +1 -1
  51. package/buttons/Source.js.map +2 -2
  52. package/buttons/Undo.js +1 -1
  53. package/buttons/Undo.js.map +2 -2
  54. package/buttons/index.js +74 -11
  55. package/buttons/index.js.map +3 -3
  56. package/groups/ActionsGroup.js.map +2 -2
  57. package/groups/ControlGroup.js +52 -4
  58. package/groups/ControlGroup.js.map +3 -3
  59. package/groups/EditingGroup.js +12 -2
  60. package/groups/EditingGroup.js.map +3 -3
  61. package/groups/EditorGroup.js +10 -1
  62. package/groups/EditorGroup.js.map +3 -3
  63. package/groups/EditorsControlGroup.js +10 -1
  64. package/groups/EditorsControlGroup.js.map +3 -3
  65. package/groups/HistoryGroup.js +10 -1
  66. package/groups/HistoryGroup.js.map +3 -3
  67. package/groups/SidebarControlGroup.js +10 -1
  68. package/groups/SidebarControlGroup.js.map +3 -3
  69. package/groups/VisualizationGroup.js +10 -1
  70. package/groups/VisualizationGroup.js.map +3 -3
  71. package/groups/index.js +34 -5
  72. package/groups/index.js.map +3 -3
  73. package/index.js +95 -16
  74. package/index.js.map +3 -3
  75. package/module/CollapsibleToolbar.js +10 -10
  76. package/module/IconButton.js +5 -5
  77. package/module/Item.js +2 -2
  78. package/module/ItemGroup.js +6 -6
  79. package/module/PopoverItemButton.js +3 -3
  80. package/module/Toolbar.js +5 -5
  81. package/module/buttons/Charts.js +14 -14
  82. package/module/buttons/Config.js +8 -8
  83. package/module/buttons/ContentExport.js +8 -8
  84. package/module/buttons/Data.js +9 -9
  85. package/module/buttons/EmptyVisualization.js +8 -8
  86. package/module/buttons/ExportDashboardButton.js +7 -6
  87. package/module/buttons/Fullscreen.js +8 -8
  88. package/module/buttons/GridLineSwitch.js +7 -7
  89. package/module/buttons/HelpButton.js +10 -10
  90. package/module/buttons/IconGallery.js +10 -10
  91. package/module/buttons/Image.js +8 -8
  92. package/module/buttons/ImageGallery.js +11 -11
  93. package/module/buttons/Inputs.js +10 -10
  94. package/module/buttons/Markdown.js +7 -7
  95. package/module/buttons/ModeSwitch.js +8 -8
  96. package/module/buttons/Redo.js +7 -7
  97. package/module/buttons/Shapes.js +12 -12
  98. package/module/buttons/Source.js +8 -8
  99. package/module/buttons/Undo.js +7 -7
  100. package/module/buttons/index.js +39 -39
  101. package/module/chunks/{chunk-ODHRJQTV.js → chunk-2MOF5ZP7.js} +15 -7
  102. package/module/chunks/chunk-2MOF5ZP7.js.map +7 -0
  103. package/module/chunks/{chunk-VCWH2JHM.js → chunk-4SWPK2TU.js} +2 -2
  104. package/module/chunks/chunk-4SWPK2TU.js.map +7 -0
  105. package/module/chunks/{chunk-ZSBWP6MR.js → chunk-53UCFOI6.js} +13 -13
  106. package/module/chunks/chunk-53UCFOI6.js.map +7 -0
  107. package/module/chunks/{chunk-K4QITIOD.js → chunk-5DYPICGQ.js} +5 -5
  108. package/module/chunks/chunk-5DYPICGQ.js.map +7 -0
  109. package/module/chunks/{chunk-RQY6BB7F.js → chunk-6NLVLUCU.js} +1 -1
  110. package/module/chunks/chunk-6NLVLUCU.js.map +7 -0
  111. package/module/chunks/{chunk-QSKQE2FQ.js → chunk-AYEBOQ6B.js} +61 -21
  112. package/module/chunks/chunk-AYEBOQ6B.js.map +7 -0
  113. package/module/chunks/{chunk-XIZP3DYZ.js → chunk-C3GFY32L.js} +2 -2
  114. package/module/chunks/{chunk-JOFJS4UX.js → chunk-C7TXRFKI.js} +8 -8
  115. package/module/chunks/chunk-C7TXRFKI.js.map +7 -0
  116. package/module/chunks/{chunk-5FZAZ2XU.js → chunk-CMTNN2GG.js} +5 -5
  117. package/module/chunks/{chunk-3MBRWVZS.js → chunk-DQPRUHAE.js} +9 -9
  118. package/module/chunks/chunk-DQPRUHAE.js.map +7 -0
  119. package/module/chunks/{chunk-FREEN2T3.js → chunk-EZJSIK72.js} +3 -3
  120. package/module/chunks/{chunk-C3NA7YCT.js → chunk-EZS4433X.js} +5 -5
  121. package/module/chunks/{chunk-PVT2JFAW.js → chunk-F3BPX66Z.js} +4 -4
  122. package/module/chunks/{chunk-4NRVBOUP.js → chunk-GD75KGSO.js} +5 -5
  123. package/module/chunks/{chunk-GFSNM45K.js → chunk-GMMN7SOC.js} +1 -1
  124. package/module/chunks/chunk-GMMN7SOC.js.map +7 -0
  125. package/module/chunks/{chunk-MWYPBMHI.js → chunk-GPLJNXKE.js} +10 -10
  126. package/module/chunks/chunk-GPLJNXKE.js.map +7 -0
  127. package/module/chunks/{chunk-KUPEYUWA.js → chunk-I6AJG47U.js} +1 -1
  128. package/module/chunks/chunk-I6AJG47U.js.map +7 -0
  129. package/module/chunks/{chunk-OSX3RDKV.js → chunk-IHFVJPGQ.js} +1 -1
  130. package/module/chunks/chunk-IHFVJPGQ.js.map +7 -0
  131. package/module/chunks/{chunk-MTPPRK4H.js → chunk-IWFH2PBS.js} +10 -10
  132. package/module/chunks/{chunk-56627Y63.js → chunk-J7M7QRC7.js} +9 -9
  133. package/module/chunks/chunk-J7M7QRC7.js.map +7 -0
  134. package/module/chunks/{chunk-GAXH7J77.js → chunk-JIIPUMEA.js} +1 -1
  135. package/module/chunks/chunk-JIIPUMEA.js.map +7 -0
  136. package/module/chunks/{chunk-6SUOFSGJ.js → chunk-JW4TMLMZ.js} +5 -5
  137. package/module/chunks/{chunk-VE4HUG27.js → chunk-KGSEQL62.js} +1 -1
  138. package/module/chunks/chunk-KGSEQL62.js.map +7 -0
  139. package/module/chunks/{chunk-WADWICSE.js → chunk-LEEGJTZT.js} +5 -5
  140. package/module/chunks/{chunk-X4VCE6GS.js → chunk-MUXHFVOC.js} +7 -7
  141. package/module/chunks/chunk-MUXHFVOC.js.map +7 -0
  142. package/module/chunks/{chunk-Q67T3UVN.js → chunk-NGEW5KQQ.js} +28 -8
  143. package/module/chunks/chunk-NGEW5KQQ.js.map +7 -0
  144. package/module/chunks/{chunk-ACSHFRXI.js → chunk-NNGZB36V.js} +4 -4
  145. package/module/chunks/{chunk-NKC5QFQ5.js.map → chunk-NNGZB36V.js.map} +3 -3
  146. package/module/chunks/{chunk-BSXRAEA2.js → chunk-NSCDFVBR.js} +6 -6
  147. package/module/chunks/chunk-NSCDFVBR.js.map +7 -0
  148. package/module/chunks/{chunk-6MLJBCIJ.js → chunk-NTQBWCZU.js} +7 -7
  149. package/module/chunks/{chunk-47MSCQAS.js → chunk-OC4QIR2D.js} +5 -5
  150. package/module/chunks/chunk-OC4QIR2D.js.map +7 -0
  151. package/module/chunks/{chunk-NKC5QFQ5.js → chunk-PFHSMP6M.js} +4 -4
  152. package/module/chunks/chunk-PFHSMP6M.js.map +7 -0
  153. package/module/chunks/{chunk-L3N7HHJU.js → chunk-QEDHGXUU.js} +7 -7
  154. package/module/chunks/{chunk-5D7CUYUH.js → chunk-RFWUOGJ3.js} +1 -1
  155. package/module/chunks/chunk-RFWUOGJ3.js.map +7 -0
  156. package/module/chunks/{chunk-JGTSF7O4.js → chunk-RJ5FWZWY.js} +5 -5
  157. package/module/chunks/{chunk-2KBENXG3.js → chunk-RKJ7RKNK.js} +1 -1
  158. package/module/chunks/chunk-RKJ7RKNK.js.map +7 -0
  159. package/module/chunks/{chunk-MFIWFQAS.js → chunk-RP26L2VP.js} +6 -6
  160. package/module/chunks/{chunk-IIPBKMJD.js → chunk-RPNGCVZL.js} +1 -1
  161. package/module/chunks/chunk-RPNGCVZL.js.map +7 -0
  162. package/module/chunks/{chunk-4Y6PRJOC.js → chunk-S6LWLEQ4.js} +4 -4
  163. package/module/chunks/chunk-S6LWLEQ4.js.map +7 -0
  164. package/module/chunks/{chunk-D27CPPHI.js → chunk-SFYQQARV.js} +3 -3
  165. package/module/chunks/{chunk-YMZGQ7CB.js → chunk-UCI2OCYF.js} +5 -5
  166. package/module/chunks/chunk-UCI2OCYF.js.map +7 -0
  167. package/module/chunks/{chunk-PMZ2AWNS.js → chunk-UDFZF6TG.js} +8 -8
  168. package/module/chunks/{chunk-O74T4JNL.js → chunk-V3YGNO27.js} +2 -2
  169. package/module/chunks/chunk-V3YGNO27.js.map +7 -0
  170. package/module/chunks/{chunk-HOKI2CUB.js → chunk-VITMNUKV.js} +1 -1
  171. package/module/chunks/chunk-VITMNUKV.js.map +7 -0
  172. package/module/chunks/{chunk-UOT4CE2C.js → chunk-VSD7VGBN.js} +6 -6
  173. package/module/chunks/{chunk-RIR6YMJC.js → chunk-WLLGLYOO.js} +30 -14
  174. package/module/chunks/chunk-WLLGLYOO.js.map +7 -0
  175. package/module/chunks/{chunk-MRXRYL4Y.js → chunk-WSTQTULM.js} +3 -3
  176. package/module/chunks/{chunk-IITJ2NKO.js → chunk-XIT2UXG2.js} +5 -5
  177. package/module/chunks/chunk-XIT2UXG2.js.map +7 -0
  178. package/module/chunks/{chunk-2QBSLWJJ.js → chunk-XWRMHLAP.js} +1 -1
  179. package/module/chunks/chunk-XWRMHLAP.js.map +7 -0
  180. package/module/chunks/{chunk-LGNNSZ2O.js → chunk-YDVHOHRE.js} +10 -10
  181. package/module/chunks/{chunk-RZJ2PCV4.js → chunk-ZV4AQ5DL.js} +1 -1
  182. package/module/chunks/chunk-ZV4AQ5DL.js.map +7 -0
  183. package/module/groups/ActionsGroup.js +6 -6
  184. package/module/groups/ControlGroup.js +41 -41
  185. package/module/groups/EditingGroup.js +41 -41
  186. package/module/groups/EditorGroup.js +41 -41
  187. package/module/groups/EditorsControlGroup.js +41 -41
  188. package/module/groups/HistoryGroup.js +41 -41
  189. package/module/groups/SidebarControlGroup.js +41 -41
  190. package/module/groups/VisualizationGroup.js +41 -41
  191. package/module/groups/index.js +48 -48
  192. package/module/index.js +50 -50
  193. package/package.json +29 -29
  194. package/types/CollapsibleToolbar.d.ts.map +1 -1
  195. package/types/buttons/Display/Display.d.ts.map +1 -1
  196. package/types/buttons/ExportDashboardButton.d.ts.map +1 -1
  197. package/types/buttons/Fullscreen.d.ts.map +1 -1
  198. package/types/buttons/Zoom/ZoomNumber.d.ts.map +1 -1
  199. package/types/hooks/useToolbarButtonClick.d.ts +2 -0
  200. package/types/hooks/useToolbarButtonClick.d.ts.map +1 -0
  201. package/module/chunks/chunk-2KBENXG3.js.map +0 -7
  202. package/module/chunks/chunk-2QBSLWJJ.js.map +0 -7
  203. package/module/chunks/chunk-3MBRWVZS.js.map +0 -7
  204. package/module/chunks/chunk-47MSCQAS.js.map +0 -7
  205. package/module/chunks/chunk-4Y6PRJOC.js.map +0 -7
  206. package/module/chunks/chunk-56627Y63.js.map +0 -7
  207. package/module/chunks/chunk-5D7CUYUH.js.map +0 -7
  208. package/module/chunks/chunk-ACSHFRXI.js.map +0 -7
  209. package/module/chunks/chunk-BSXRAEA2.js.map +0 -7
  210. package/module/chunks/chunk-GAXH7J77.js.map +0 -7
  211. package/module/chunks/chunk-GFSNM45K.js.map +0 -7
  212. package/module/chunks/chunk-HOKI2CUB.js.map +0 -7
  213. package/module/chunks/chunk-IIPBKMJD.js.map +0 -7
  214. package/module/chunks/chunk-IITJ2NKO.js.map +0 -7
  215. package/module/chunks/chunk-JOFJS4UX.js.map +0 -7
  216. package/module/chunks/chunk-K4QITIOD.js.map +0 -7
  217. package/module/chunks/chunk-KUPEYUWA.js.map +0 -7
  218. package/module/chunks/chunk-MWYPBMHI.js.map +0 -7
  219. package/module/chunks/chunk-O74T4JNL.js.map +0 -7
  220. package/module/chunks/chunk-ODHRJQTV.js.map +0 -7
  221. package/module/chunks/chunk-OSX3RDKV.js.map +0 -7
  222. package/module/chunks/chunk-Q67T3UVN.js.map +0 -7
  223. package/module/chunks/chunk-QSKQE2FQ.js.map +0 -7
  224. package/module/chunks/chunk-RIR6YMJC.js.map +0 -7
  225. package/module/chunks/chunk-RQY6BB7F.js.map +0 -7
  226. package/module/chunks/chunk-RZJ2PCV4.js.map +0 -7
  227. package/module/chunks/chunk-VCWH2JHM.js.map +0 -7
  228. package/module/chunks/chunk-VE4HUG27.js.map +0 -7
  229. package/module/chunks/chunk-X4VCE6GS.js.map +0 -7
  230. package/module/chunks/chunk-YMZGQ7CB.js.map +0 -7
  231. package/module/chunks/chunk-ZSBWP6MR.js.map +0 -7
  232. /package/module/chunks/{chunk-XIZP3DYZ.js.map → chunk-C3GFY32L.js.map} +0 -0
  233. /package/module/chunks/{chunk-5FZAZ2XU.js.map → chunk-CMTNN2GG.js.map} +0 -0
  234. /package/module/chunks/{chunk-FREEN2T3.js.map → chunk-EZJSIK72.js.map} +0 -0
  235. /package/module/chunks/{chunk-C3NA7YCT.js.map → chunk-EZS4433X.js.map} +0 -0
  236. /package/module/chunks/{chunk-PVT2JFAW.js.map → chunk-F3BPX66Z.js.map} +0 -0
  237. /package/module/chunks/{chunk-4NRVBOUP.js.map → chunk-GD75KGSO.js.map} +0 -0
  238. /package/module/chunks/{chunk-MTPPRK4H.js.map → chunk-IWFH2PBS.js.map} +0 -0
  239. /package/module/chunks/{chunk-6SUOFSGJ.js.map → chunk-JW4TMLMZ.js.map} +0 -0
  240. /package/module/chunks/{chunk-WADWICSE.js.map → chunk-LEEGJTZT.js.map} +0 -0
  241. /package/module/chunks/{chunk-6MLJBCIJ.js.map → chunk-NTQBWCZU.js.map} +0 -0
  242. /package/module/chunks/{chunk-L3N7HHJU.js.map → chunk-QEDHGXUU.js.map} +0 -0
  243. /package/module/chunks/{chunk-JGTSF7O4.js.map → chunk-RJ5FWZWY.js.map} +0 -0
  244. /package/module/chunks/{chunk-MFIWFQAS.js.map → chunk-RP26L2VP.js.map} +0 -0
  245. /package/module/chunks/{chunk-D27CPPHI.js.map → chunk-SFYQQARV.js.map} +0 -0
  246. /package/module/chunks/{chunk-PMZ2AWNS.js.map → chunk-UDFZF6TG.js.map} +0 -0
  247. /package/module/chunks/{chunk-UOT4CE2C.js.map → chunk-VSD7VGBN.js.map} +0 -0
  248. /package/module/chunks/{chunk-MRXRYL4Y.js.map → chunk-WSTQTULM.js.map} +0 -0
  249. /package/module/chunks/{chunk-LGNNSZ2O.js.map → chunk-YDVHOHRE.js.map} +0 -0
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["esm-externals:@splunk/react-ui/Tooltip", "../../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": ["\nimport * as defaultImport from \"@splunk/react-ui/Tooltip\";\nexport * from \"@splunk/react-ui/Tooltip\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "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", "\nimport * 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 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 useSelector,\n} from '@splunk/dashboard-state';\nimport Checkmark from '@splunk/react-icons/Checkmark';\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 CheckmarkPlaceholder = styled.span`\n display: inline-block;\n width: 16px;\n`;\n\ninterface DisplayProps extends ToolbarButtonProps {\n appearance?: ButtonPropsBase['appearance'];\n}\n\nexport const Display = ({\n appearance = 'default',\n dashboardApi,\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\n const handleInputsToggle = useCallback(() => {\n dashboardApi?.setAreGlobalInputsCollapsed({\n collapsed: !areInputsCollapsed,\n });\n }, [dashboardApi, areInputsCollapsed]);\n\n const { handleRequestClose, handleRequestOpen, isOpen } = useDropdown({\n isContentClickClose: true,\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 checkmarkIcon = useMemo(() => {\n return showInputs ? <Checkmark /> : <CheckmarkPlaceholder />;\n }, [showInputs]);\n\n const dropdownMenuChildren = useMemo(() => {\n const items = [];\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={checkmarkIcon}\n >\n {_('Inputs')}\n </Menu.Item>\n );\n }\n\n return items;\n }, [hasGlobalInputs, handleInputsToggle, checkmarkIcon]);\n\n if (dropdownMenuChildren.length === 0) {\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 </Menu>\n </Dropdown>\n </Tooltip>\n );\n};\n", "\nimport * 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 Tooltip from '@splunk/react-ui/Tooltip';\nimport IconButton, { prepareIcon } from '../../IconButton';\nimport type { ToolbarButtonProps } from '../../types/common';\n\nconst tokenManagerIcon = prepareIcon({\n Icon: ListToken,\n screenReaderContent: _('Token manager'),\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 <Tooltip\n contentRelationship=\"label\"\n content={_('Token manager')}\n data-test-label=\"token-manager-button\"\n >\n <IconButton\n testLabel=\"token-manager-button\"\n onClick={handleClick}\n icon={tokenManagerIcon}\n />\n </Tooltip>\n );\n};\n", "\nimport * 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", "\nimport * 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 Number from '@splunk/react-ui/Number';\nimport { variables } from '@splunk/themes';\nimport { useNumberInput, type OnValueChangeType } from '@splunk/dashboard-ui';\n\nconst StyledNumber = styled(Number)`\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}\n\nexport const ZoomNumber = ({\n currentScale,\n onScaleChange,\n}: ZoomNumberProps) => {\n const onValueChange = useCallback<OnValueChangeType>(\n (e, value = 100) => {\n onScaleChange(value as number)();\n },\n [onScaleChange]\n );\n const { handleChange, handleBlur, handleFocus, handleKeyPress } =\n useNumberInput({\n value: currentScale,\n onValueChange,\n });\n\n return (\n <StyledNumber\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={<StyledEndAdornment>%</StyledEndAdornment>}\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 } 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\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 <ZoomNumber\n currentScale={currentScale}\n onScaleChange={handleScaleChange}\n />\n <ZoomMenu\n dashboardApi={dashboardApi}\n appearance={appearance}\n currentScale={currentScale}\n setCurrentScale={setCurrentScale}\n scaleType={scaleType}\n setScaleType={setScaleType}\n />\n </StyledTooltip>\n {separator}\n </Container>\n );\n};\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAEA;AADA,YAAY,mBAAmB;AAC/B,8BAAc;AACd,IAAO,kBAAS,aAAa,gBAA8B,wBAAU;;;ACUrE,IAAM,gBAAgB,EAAE,QAAQ,OAAO;AACvC,IAAM,iBAAiB,MAAM;AAEtB,IAAM,cAAc,MAAM;AAhBjC;AAiBI,QAAM,EAAE,0BAA0B,QAAI,2CAAgB;AACtD,QAAM,EAAE,SAAS,KAAI,4DAAwB,EAAE,uBAA1B,YAAgD,CAAC;AACtE,QAAM,mBAAe,2CAAgB;AAErC,QAAM,EAAE,aAAa,SAAS,OAAO,QAAI,+BAAe;AAExD,QAAM,kBAAc,2BAAY,CAAC,UAAkB;AAC/C,oCAAQ,UAAM,gBAAE,6BAA6B,GAAG,KAAK;AACrD,WAAO,4CAAC,oBAAe;AAAA,EAC3B,GAAG,CAAC,CAAC;AAEL,QAAM,kBAAc,2BAAY,MAAM;AAClC,iBAAa,UAAU;AAAA,MACnB,aAAa;AAAA,MACb,YAAY;AAAA,QACR,aAAa;AAAA,MACjB;AAAA,IACJ,CAAC;AAAA,EACL,GAAG,CAAC,YAAY,CAAC;AAEjB,MAAI,CAAC,6BAA6B,CAAC,UAAU;AACzC,WAAO;AAAA,EACX;AAEA,SACI,4CAAC,sCAAc,QAAQ,eACnB,4CAAC,oBACG,4CAAC,0BAAS,KAAI,gBAAe,UAAU,QACnC;AAAA,IAAC;AAAA;AAAA,MACG,qBAAoB;AAAA,MACpB,aAAS,gBAAE,cAAc;AAAA;AAAA,IAEzB;AAAA,MAAC;AAAA;AAAA,QACG,aAAU;AAAA,QACV,SAAS;AAAA,QACT;AAAA,QACA,OAAO;AAAA,QACP;AAAA,QACA;AAAA;AAAA,IACJ;AAAA,EACJ,CACJ,CACJ,CACJ;AAER;;;AC9DA;AAAA;AAAA;AAAA;AAEA;AADA,YAAYA,oBAAmB;AAC/B,gCAAc;AACd,IAAO,oBAAS,aAAaA,iBAA8B,yBAAUA;;;ACarE,IAAM,YAAY;AAAA,EACd,UAAU;AACd;AAEA,IAAM,uBAAuB,0BAAO;AAAA;AAAA;AAAA;AAS7B,IAAM,UAAU,CAAC;AAAA,EACpB,aAAa;AAAA,EACb;AACJ,MAAwC;AAhCxC;AAiCI,QAAM,mBAAe,qCAAY,0CAAkB;AACnD,QAAM,oBAAmB,kDAAc,WAAd,YAAwB,KAAK;AACtD,QAAM,yBAAqB,qCAAY,qDAA6B;AACpE,QAAM,aAAa,CAAC;AAEpB,QAAM,yBAAqB,2BAAY,MAAM;AACzC,iDAAc,4BAA4B;AAAA,MACtC,WAAW,CAAC;AAAA,IAChB;AAAA,EACJ,GAAG,CAAC,cAAc,kBAAkB,CAAC;AAErC,QAAM,EAAE,oBAAoB,mBAAmB,OAAO,IAAI,oBAAY;AAAA,IAClE,qBAAqB;AAAA,EACzB,CAAC;AAED,QAAM,mBAAe;AAAA,IACjB,MACI;AAAA,MAAC;AAAA;AAAA,QACG,kBAAc;AAAA,QACd,aAAU;AAAA,QACV;AAAA,QACA,QAAM;AAAA,QACN,kBAAY,gBAAE,iBAAiB;AAAA;AAAA,UAE9B,gBAAE,SAAS;AAAA,IAChB;AAAA,IAEJ,CAAC,UAAU;AAAA,EACf;AAEA,QAAM,oBAAgB,uBAAQ,MAAM;AAChC,WAAO,aAAa,4CAAC,uBAAU,IAAK,4CAAC,0BAAqB;AAAA,EAC9D,GAAG,CAAC,UAAU,CAAC;AAEf,QAAM,2BAAuB,uBAAQ,MAAM;AACvC,UAAM,QAAQ,CAAC;AAEf,QAAI,iBAAiB;AACjB,YAAM;AAAA,QACF;AAAA,UAAC,aAAK;AAAA,UAAL;AAAA,YACG,KAAI;AAAA,YACJ,aAAU;AAAA,YACV,SAAS;AAAA,YACT,gBAAgB;AAAA;AAAA,cAEf,gBAAE,QAAQ;AAAA,QACf;AAAA,MACJ;AAAA,IACJ;AAEA,WAAO;AAAA,EACX,GAAG,CAAC,iBAAiB,oBAAoB,aAAa,CAAC;AAEvD,MAAI,qBAAqB,WAAW,GAAG;AACnC,WAAO;AAAA,EACX;AAEA,SACI,4CAAC,mBAAQ,qBAAoB,SAAQ,aAAS,gBAAE,SAAS,KACrD;AAAA,IAAC;AAAA;AAAA,MACG,gBAAgB;AAAA,MAChB,eAAe;AAAA,MACf,MAAM;AAAA,MACN,QAAQ;AAAA;AAAA,IAER;AAAA,MAAC;AAAA;AAAA,QACG,OAAO;AAAA,QACP,WAAU;AAAA,QACV,kBAAY,gBAAE,iBAAiB;AAAA;AAAA,MAE9B;AAAA,IACL;AAAA,EACJ,CACJ;AAER;;;AC5GA;AAAA;AAAA;AAAA;AAEA;AADA,YAAYC,oBAAmB;AAC/B,gCAAc;AACd,IAAO,oBAAS,aAAaA,iBAA8B,yBAAUA;;;ACKrE,IAAM,mBAAmB,YAAY;AAAA,EACjC,MAAM;AAAA,EACN,yBAAqB,gBAAE,eAAe;AAC1C,CAAC;AAKM,IAAM,eAAe,CAAC,EAAE,aAAa,MAA0B;AAClE,QAAM,EAAE,iBAAiB,QAAI,2CAAgB;AAE7C,QAAM,kBAAc,2BAAY,MAAM;AAClC,UAAM,UAAS,6CAAc,sBAAqB;AAClD,QAAI,QAAQ;AACR,mDAAc;AAAA,IAClB,OAAO;AAEH,mDAAc,UAAU;AAAA,QACpB,aAAa;AAAA,QACb,YAAY;AAAA,UACR,aAAa;AAAA,QACjB;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ,GAAG,CAAC,YAAY,CAAC;AAEjB,MAAI,CAAC,kBAAkB;AACnB,WAAO;AAAA,EACX;AAEA,SACI;AAAA,IAAC;AAAA;AAAA,MACG,qBAAoB;AAAA,MACpB,aAAS,gBAAE,eAAe;AAAA,MAC1B,mBAAgB;AAAA;AAAA,IAEhB;AAAA,MAAC;AAAA;AAAA,QACG,WAAU;AAAA,QACV,SAAS;AAAA,QACT,MAAM;AAAA;AAAA,IACV;AAAA,EACJ;AAER;;;ACnDA;AAAA;AAAA;AAAA;AAEA;AADA,YAAYC,oBAAmB;AAC/B,6BAAc;AACd,IAAO,iBAAS,aAAaA,iBAA8B,yBAAUA;;;ACOrE,IAAM,aAAa,CAAC,IAAI,IAAI,KAAK,KAAK,GAAG;AAEzC,IAAM,cAAc;AAAA,EAChB,qBAAqB;AAAA,EACrB,wBAAwB;AAC5B;AAEA,IAAMC,aAAY;AAAA,EACd,OAAO;AACX;AAWO,IAAM,WAAW,CAAC;AAAA,EACrB;AAAA,EACA,aAAa;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,MAAkC;AAC9B,QAAM,yBAAqB,2BAAY,MAAM;AACzC,iBAAa,IAAI;AACjB,iDAAc;AAAA,EAClB,GAAG,CAAC,cAAc,YAAY,CAAC;AAE/B,QAAM,wBAAoB,2BAAY,MAAM;AACxC,iBAAa,IAAI;AACjB,iDAAc;AAAA,EAClB,GAAG,CAAC,cAAc,YAAY,CAAC;AAE/B,QAAM,wBAAoB;AAAA,IACtB,CAAC,UAAkB,MAAM;AACrB,sBAAgB,KAAK;AACrB,mBAAa,IAAI;AACjB,mDAAc,SAAS,EAAE,OAAO,QAAQ,IAAI;AAAA,IAChD;AAAA,IACA,CAAC,cAAc,iBAAiB,YAAY;AAAA,EAChD;AAEA,QAAM,4BAAwB,2BAAY,MAAM;AAC5C,iBAAa,KAAK;AAClB,iDAAc;AAAA,EAClB,GAAG,CAAC,cAAc,YAAY,CAAC;AAE/B,QAAM,sBAAkB,2BAAY,MAAM;AACtC,iBAAa,MAAM;AACnB,iDAAc,WAAW,EAAE,UAAU,EAAE;AAAA,EAC3C,GAAG,CAAC,cAAc,YAAY,CAAC;AAE/B,QAAM,EAAE,oBAAoB,mBAAmB,OAAO,IAAI,oBAAY;AAAA,IAClE,qBAAqB;AAAA,EACzB,CAAC;AAED,QAAM,eACF;AAAA,IAAC;AAAA;AAAA,MACG,kBAAc;AAAA,MACd,aAAU;AAAA,MACV,OAAO;AAAA,MACP;AAAA,MACA,QAAM;AAAA,MACN,kBAAY,4BAAQ,gBAAE,gCAAgC,GAAG;AAAA,QACrD;AAAA,MACJ,CAAC;AAAA;AAAA,EACL;AAGJ,QAAM,cAAU,uBAAQ,UAAM,+BAAM,GAAG,CAAC,CAAC;AAEzC,QAAM,2BAAuB,uBAAQ,MAAM;AACvC,UAAM,cAAc,WAAW,IAAI,CAAC,YAAY;AAC5C,aACI;AAAA,QAAC,aAAK;AAAA,QAAL;AAAA,UACG,aAAW,GAAG,OAAO;AAAA,UACrB,SAAS,kBAAkB,OAAO;AAAA,UAClC,KAAK;AAAA,UACL,YAAU;AAAA,UACV,UAAU,iBAAiB,WAAW,CAAC;AAAA;AAAA,QAEtC,GAAG,OAAO;AAAA,MACf;AAAA,IAER,CAAC;AACD,WAAO;AAAA,MACH;AAAA,QAAC,aAAK;AAAA,QAAL;AAAA,UACG,aAAU;AAAA,UACV,SAAS;AAAA,UACT,KAAI;AAAA,UACJ,YAAU;AAAA,UACV,UAAU,cAAc;AAAA;AAAA,YAEvB,gBAAE,MAAM;AAAA,MACb;AAAA,MACA;AAAA,QAAC,aAAK;AAAA,QAAL;AAAA,UACG,aAAU;AAAA,UACV,SAAS;AAAA,UACT,KAAI;AAAA,UACJ,aAAa,cAAU,gBAAE,YAAY,QAAI,gBAAE,YAAY;AAAA,UACvD,qBAAoB;AAAA,UACpB,YAAU;AAAA,UACV,UAAU,cAAc;AAAA;AAAA,YAEvB,gBAAE,KAAK;AAAA,MACZ;AAAA,MACA,4CAAC,aAAK,SAAL,EAAa,KAAI,kBAAiB;AAAA,MACnC,GAAG;AAAA,MACH,4CAAC,aAAK,SAAL,EAAa,KAAI,kBAAiB;AAAA,MACnC;AAAA,QAAC,aAAK;AAAA,QAAL;AAAA,UACG,aAAU;AAAA,UACV,SAAS;AAAA,UACT,KAAI;AAAA,UACJ,aAAa,cAAU,gBAAE,YAAY,QAAI,gBAAE,YAAY;AAAA,UACvD,qBAAoB;AAAA,UACpB,YAAU;AAAA;AAAA,YAET,gBAAE,SAAS;AAAA,MAChB;AAAA,MACA;AAAA,QAAC,aAAK;AAAA,QAAL;AAAA,UACG,aAAU;AAAA,UACV,SAAS;AAAA,UACT,KAAI;AAAA,UACJ,aAAa,cAAU,gBAAE,YAAY,QAAI,gBAAE,YAAY;AAAA,UACvD,qBAAoB;AAAA,UACpB,YAAU;AAAA;AAAA,YAET,gBAAE,UAAU;AAAA,MACjB;AAAA,IACJ;AAAA,EACJ,GAAG;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,CAAC;AAED,SACI;AAAA,IAAC;AAAA;AAAA,MACG,gBAAgB;AAAA,MAChB,eAAe;AAAA,MACf,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,aAAW;AAAA;AAAA,IAEX;AAAA,MAAC;AAAA;AAAA,QACG,OAAOA;AAAA,QACP,WAAU;AAAA,QACV,kBAAY,gBAAE,YAAY;AAAA;AAAA,MAEzB;AAAA,IACL;AAAA,EACJ;AAER;;;AC7KA;AAAA;AAAA;AAAA;AAEA;AADA,YAAYC,oBAAmB;AAC/B,6BAAc;AACd,IAAO,iBAAS,aAAaA,iBAA8B,yBAAUA;;;ACGrE,IAAM,eAAe,0BAAO,cAAM;AAAA,qBACb,yBAAU,YAAY;AAAA;AAAA;AAAA;AAAA;AAM3C,IAAM,qBAAqB,0BAAO;AAAA,aACrB,yBAAU,kBAAkB;AAAA;AAQlC,IAAM,aAAa,CAAC;AAAA,EACvB;AAAA,EACA;AACJ,MAAuB;AACnB,QAAM,oBAAgB;AAAA,IAClB,CAAC,GAAG,QAAQ,QAAQ;AAChB,oBAAc,KAAe,EAAE;AAAA,IACnC;AAAA,IACA,CAAC,aAAa;AAAA,EAClB;AACA,QAAM,EAAE,cAAc,YAAY,aAAa,eAAe,QAC1D,qCAAe;AAAA,IACX,OAAO;AAAA,IACP;AAAA,EACJ,CAAC;AAEL,SACI;AAAA,IAAC;AAAA;AAAA,MACG,OAAO;AAAA,MACP,UAAU;AAAA,MACV,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,MAAM;AAAA,MACN,KAAK;AAAA,MACL,KAAK;AAAA,MACL,SAAS;AAAA,MACT,cAAc,4CAAC,0BAAmB,GAAC;AAAA,MACnC,iBAAe;AAAA,MACf,aAAU;AAAA,MACV,QAAM;AAAA;AAAA,EACV;AAER;;;ACjCA,IAAM,YAAY,0BAAO;AAAA;AAAA;AAAA;AAAA,WAId,yBAAU,YAAY;AAAA;AAGjC,IAAM,gBAAgB,0BAAO,eAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAY7B,IAAM,OAAO,CAAC;AAAA,EACjB,gBAAgB;AAAA,EAChB,aAAa;AAAA,EACb,OAAO;AACX,MAA8B;AAC1B,QAAM,CAAC,cAAc,eAAe,QAAI,wBAAS,GAAG;AACpD,QAAM,CAAC,WAAW,YAAY,QAAI,wBAAgC,IAAI;AACtE,QAAM,mBAAe,2CAAgB;AACrC,QAAM,eAAW,qCAAY;AAE7B,QAAM,iBAAa,2BAAY,CAAC,UAAmB;AAC/C,QAAI,OAAO;AACP,sBAAgB,KAAK,MAAM,QAAQ,GAAG,CAAC;AAAA,IAC3C;AAAA,EACJ,GAAG,CAAC,CAAC;AAEL,QAAM,wBAAoB;AAAA,IACtB,UAAM,yBAAS,UAAU,GAAG;AAAA,IAC5B,CAAC,QAAQ;AAAA,EACb;AAEA,+BAAU,MAAM;AACZ;AAAA,UACI,0CAAiB;AAAA,QACb,OAAO;AAAA,QACP;AAAA,QACA;AAAA,MACJ,CAAC;AAAA,IACL;AAAA,EACJ,GAAG,CAAC,cAAc,WAAW,MAAM,iBAAiB,CAAC;AAErD,QAAM,kBAAc,qCAAY,uCAAe;AAC/C,+BAAU,MAAM;AAzEpB;AA0EQ,UAAM,gBAAe,kDACf,mBADe,mBAEf,UAAU,EAAE,MAAM,WAAW;AAEnC,WAAO,MAAM;AACT,mDAAc;AAAA,IAClB;AAAA,EACJ,GAAG,CAAC,cAAc,aAAa,UAAU,CAAC;AAE1C,QAAM,gBAAY;AAAA,IACd,MAAO,gBAAgB,4CAAC,yBAAc,KAAI,kBAAiB,IAAK;AAAA,IAChE,CAAC,aAAa;AAAA,EAClB;AAEA,QAAM,wBAAoB;AAAA,IACtB,CAAC,UAAkB,MAAM;AACrB,sBAAgB,KAAK;AACrB,mBAAa,IAAI;AACjB,mDAAc,SAAS,EAAE,OAAO,QAAQ,IAAI;AAAA,IAChD;AAAA,IACA,CAAC,YAAY;AAAA,EACjB;AAEA,SACI,4CAAC,iBACG;AAAA,IAAC;AAAA;AAAA,MACG,qBAAoB;AAAA,MACpB,aAAS,gBAAE,YAAY;AAAA;AAAA,IAEvB;AAAA,MAAC;AAAA;AAAA,QACG;AAAA,QACA,eAAe;AAAA;AAAA,IACnB;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACG;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,IACJ;AAAA,EACJ,GACC,SACL;AAER;",
6
- "names": ["defaultImport", "defaultImport", "defaultImport", "menuStyle", "defaultImport"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["esm-externals:@splunk/react-ui/TransitionOpen", "esm-externals:@splunk/react-icons/ChevronRight", "esm-externals:@splunk/react-icons/ChevronLeft", "../../src/CollapsibleToolbar.tsx"],
4
- "sourcesContent": ["\nimport * as defaultImport from \"@splunk/react-ui/TransitionOpen\";\nexport * from \"@splunk/react-ui/TransitionOpen\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/react-icons/ChevronRight\";\nexport * from \"@splunk/react-icons/ChevronRight\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/react-icons/ChevronLeft\";\nexport * from \"@splunk/react-icons/ChevronLeft\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "import React, {\n useState,\n useCallback,\n cloneElement,\n useMemo,\n useEffect,\n} from 'react';\nimport { useApiRegistry } from '@splunk/dashboard-context';\nimport styled, { css } from 'styled-components';\nimport Button from '@splunk/react-ui/Button';\nimport TransitionOpen from '@splunk/react-ui/TransitionOpen';\nimport { variables } from '@splunk/themes';\nimport ChevronRight from '@splunk/react-icons/ChevronRight';\nimport ChevronLeft from '@splunk/react-icons/ChevronLeft';\nimport { _ } from '@splunk/ui-utils/i18n';\nimport { selectLayoutType, useSelector } from '@splunk/dashboard-state';\nimport type { PresetMap } from '@splunk/dashboard-types';\nimport ScreenReaderContent from '@splunk/react-ui/ScreenReaderContent';\nimport type { CommonToolbarBaseProps } from './types/common';\nimport { iconSize } from './IconButton';\n\nconst TOOLBAR_HEIGHT = 48;\n\nconst ToolbarWrapper = styled.div`\n display: flex;\n align-items: center;\n position: absolute;\n right: 0;\n z-index: 6;\n height: ${TOOLBAR_HEIGHT}px;\n background-color: ${variables.backgroundColorNavigation};\n color: ${variables.contentColorDefault};\n box-shadow: ${variables.overlayShadow};\n border-radius: 0 0 0 20px;\n`;\n\nconst StyledTransitionOpen = styled(TransitionOpen)`\n border-right: ${({ open }) => (open ? 'solid' : 'none')};\n border-width: 0 1px 0 0;\n border-color: ${variables.interactiveColorBorder};\n`;\n\nconst ToolbarItemsWrapper = styled.div`\n display: flex;\n padding: 2px 4px 2px 8px;\n gap: ${variables.spacingSmall};\n margin-inline-end: ${variables.spacingSmall};\n`;\n\n// Keep the button and toolbar container animating at the same speed\nconst transition = css`\n transition-duration: 0.2s;\n transition-timing-function: ease-in-out;\n`;\nconst ExpandButton = styled(Button)<{\n expanded: boolean;\n}>`\n // To get specific enough to override the default Button styling\n && {\n height: ${({ expanded }) =>\n expanded ? `${TOOLBAR_HEIGHT - 4}px` : `${TOOLBAR_HEIGHT}px`};\n width: ${({ expanded }) =>\n expanded ? `${TOOLBAR_HEIGHT - 4}px` : `${TOOLBAR_HEIGHT}px`};\n margin: ${({ expanded }) => (expanded ? '0 4px 0 4px' : '0')};\n border-radius: ${(props) => (props.expanded ? '' : '0 0 0 20px')};\n transition-property: border-radius, height, width, margin-right;\n ${transition}\n }\n`;\n\nconst expandedIcon = (\n <>\n <ChevronRight width={iconSize} height={iconSize} />\n <ScreenReaderContent>{_('Expanded')}</ScreenReaderContent>\n </>\n);\n\nconst collapsedIcon = (\n <>\n <ChevronLeft width={iconSize} height={iconSize} />\n <ScreenReaderContent>{_('Collapsed')}</ScreenReaderContent>\n </>\n);\n\nexport type CollapsibleToolbarProps = CommonToolbarBaseProps & {\n initialExpanded?: boolean;\n toolbarItems?: React.ReactElement[];\n};\n\nconst DEFAULT_PRESET_MAP = Object.freeze({} as PresetMap);\n\nconst CollapsibleToolbar = ({\n preset = DEFAULT_PRESET_MAP,\n dashboardApi,\n initialExpanded = true,\n mode = 'view',\n toolbarItems = [],\n}: CollapsibleToolbarProps): React.ReactElement | null => {\n const apiRegistry = useApiRegistry();\n const [expanded, setExpanded] = useState(initialExpanded);\n const handleExpandToggle = useCallback(\n () => setExpanded((prevExpanded) => !prevExpanded),\n []\n );\n\n const layoutType = useSelector(selectLayoutType);\n\n const injectedToolbarItems = useMemo(\n () =>\n toolbarItems.map((item) =>\n cloneElement(item, {\n mode,\n preset,\n layoutType,\n dashboardApi,\n borders: false,\n })\n ),\n [toolbarItems, mode, preset, dashboardApi, layoutType]\n );\n\n const ExpandButtonIcon = useMemo(\n () => (expanded ? expandedIcon : collapsedIcon),\n [expanded]\n );\n\n useEffect(() => {\n const toolbarApiRef = {\n toggle: () => handleExpandToggle(),\n expand: () => setExpanded(true),\n collapse: () => setExpanded(false),\n };\n\n apiRegistry.registerToolbarApi(toolbarApiRef);\n\n return () => {\n apiRegistry.removeToolbarApi();\n };\n }, [apiRegistry, handleExpandToggle]);\n\n return (\n <ToolbarWrapper data-test=\"dashboard-toolbar\">\n <StyledTransitionOpen animation=\"slideFromRight\" open={expanded}>\n <ToolbarItemsWrapper data-test=\"toolbar-items\">\n {injectedToolbarItems}\n </ToolbarItemsWrapper>\n </StyledTransitionOpen>\n <ExpandButton\n appearance=\"subtle\"\n data-test=\"expand-button\"\n expanded={expanded}\n onClick={handleExpandToggle}\n icon={ExpandButtonIcon}\n data-clickable\n />\n </ToolbarWrapper>\n );\n};\n\nCollapsibleToolbar.displayName = 'CollapsibleToolbar';\n\nexport default CollapsibleToolbar;\n"],
5
- "mappings": "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",
6
- "names": ["defaultImport", "defaultImport"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["esm-externals:@splunk/dashboard-ui"],
4
- "sourcesContent": ["\nimport * as defaultImport from \"@splunk/dashboard-ui\";\nexport * from \"@splunk/dashboard-ui\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n"],
5
- "mappings": ";;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAEA;AADA,YAAY,mBAAmB;AAC/B,mCAAc;AACd,IAAO,uBAAS,aAAa,gBAA8B,wBAAU;",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["esm-externals:@splunk/dashboard-state"],
4
- "sourcesContent": ["\nimport * as defaultImport from \"@splunk/dashboard-state\";\nexport * from \"@splunk/dashboard-state\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n"],
5
- "mappings": ";;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAEA;AADA,YAAY,mBAAmB;AAC/B,sCAAc;AACd,IAAO,0BAAS,aAAa,gBAA8B,wBAAU;",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["esm-externals:@splunk/react-ui/Dropdown", "../../src/hooks/useDropdown.ts"],
4
- "sourcesContent": ["\nimport * as defaultImport from \"@splunk/react-ui/Dropdown\";\nexport * from \"@splunk/react-ui/Dropdown\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "import type { DropdownRequestCloseHandler } from '@splunk/react-ui/Dropdown';\nimport { useCallback, useRef, useState } from 'react';\n\ninterface UseDropdownArgs {\n isContentClickClose?: boolean;\n}\n\ninterface UseDropdownReturn {\n isOpen: boolean;\n handleRequestClose: DropdownRequestCloseHandler;\n handleRequestOpen: () => void;\n handleForceClose: () => void;\n setHasChildModal: (value: boolean) => void;\n}\n\n/**\n * Custom React Hook for the controlled SUI Dropdown component.\n *\n * @param {Object} config\n * @param {Boolean} config.isContentClickClose Control if dropdown children onClick's will close the dropdown automatically\n * @returns {Object} value\n * @returns {Boolean} value.isOpen The only state of this hook\n * @returns {Function} value.handleRequestOpen Event handler to open the dropdown\n * @returns {Function} value.handleRequestClose Event handler that SUI Dropdown calls when requested to close\n * @returns {Function} value.handleForceClose Event handler to forcefully close the dropdown\n */\nconst useDropdown = ({\n isContentClickClose = true,\n}: UseDropdownArgs): UseDropdownReturn => {\n const [isOpen, setIsOpen] = useState(false);\n const hasChildModal = useRef(false);\n\n const handleRequestClose = useCallback<DropdownRequestCloseHandler>(\n ({ reason }) => {\n if (reason === 'contentClick' && !isContentClickClose) {\n // This return results in the dropdown not closing.\n return;\n }\n\n // If there is a child modal then don't close the root on ESC press\n if (reason === 'escapeKey' && hasChildModal.current) {\n return;\n }\n\n setIsOpen(false);\n },\n [isContentClickClose]\n );\n\n const handleRequestOpen = useCallback(() => {\n setIsOpen(true);\n }, []);\n\n const handleForceClose = useCallback(() => {\n setIsOpen(false);\n }, []);\n\n const setHasChildModal = useCallback((value: boolean) => {\n hasChildModal.current = value;\n }, []);\n\n return {\n isOpen,\n handleRequestOpen,\n handleRequestClose,\n handleForceClose,\n setHasChildModal,\n };\n};\n\nexport default useDropdown;\n"],
5
- "mappings": ";;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAEA;AADA,YAAY,mBAAmB;AAC/B,+BAAc;AACd,IAAO,mBAAS,aAAa,gBAA8B,wBAAU;;;ACuBrE,IAAM,cAAc,CAAC;AAAA,EACjB,sBAAsB;AAC1B,MAA0C;AACtC,QAAM,CAAC,QAAQ,SAAS,QAAI,wBAAS,KAAK;AAC1C,QAAM,oBAAgB,sBAAO,KAAK;AAElC,QAAM,yBAAqB;AAAA,IACvB,CAAC,EAAE,OAAO,MAAM;AACZ,UAAI,WAAW,kBAAkB,CAAC,qBAAqB;AAEnD;AAAA,MACJ;AAGA,UAAI,WAAW,eAAe,cAAc,SAAS;AACjD;AAAA,MACJ;AAEA,gBAAU,KAAK;AAAA,IACnB;AAAA,IACA,CAAC,mBAAmB;AAAA,EACxB;AAEA,QAAM,wBAAoB,2BAAY,MAAM;AACxC,cAAU,IAAI;AAAA,EAClB,GAAG,CAAC,CAAC;AAEL,QAAM,uBAAmB,2BAAY,MAAM;AACvC,cAAU,KAAK;AAAA,EACnB,GAAG,CAAC,CAAC;AAEL,QAAM,uBAAmB,2BAAY,CAAC,UAAmB;AACrD,kBAAc,UAAU;AAAA,EAC5B,GAAG,CAAC,CAAC;AAEL,SAAO;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AACJ;AAEA,IAAO,sBAAQ;",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["esm-externals:@splunk/react-icons/ArrowBroadUnderbarDown"],
4
- "sourcesContent": ["\nimport * as defaultImport from \"@splunk/react-icons/ArrowBroadUnderbarDown\";\nexport * from \"@splunk/react-icons/ArrowBroadUnderbarDown\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n"],
5
- "mappings": ";;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAEA;AADA,YAAY,mBAAmB;AAC/B,6CAAc;AACd,IAAO,iCAAS,aAAa,gBAA8B,wBAAU;",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["esm-externals:@splunk/react-ui/Switch", "../../src/buttons/GridLineSwitch.tsx"],
4
- "sourcesContent": ["\nimport * 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;AAEA;AADA,YAAY,mBAAmB;AAC/B,6BAAc;AACd,IAAO,iBAAS,aAAa,gBAA8B,wBAAU;;;ACSrE,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;",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["esm-externals:@splunk/themes/mixins", "../../src/Toolbar.tsx"],
4
- "sourcesContent": ["\nimport * as defaultImport from \"@splunk/themes/mixins\";\nexport * from \"@splunk/themes/mixins\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "import React, { useCallback, useEffect, useMemo, useRef } from 'react';\nimport styled from 'styled-components';\nimport { variables } from '@splunk/themes';\nimport { reset } from '@splunk/themes/mixins';\nimport { selectLayoutType, useSelector } from '@splunk/dashboard-state';\nimport type { ToolbarButtonProps } from './types/common';\n\nconst ToolbarWrapper = styled.div`\n ${reset('flex')};\n justify-content: space-between;\n color: ${variables.contentColorDefault};\n padding: 5px 5px 5px 8px;\n border-bottom-width: 1px;\n border-bottom-style: solid;\n border-bottom-color: ${variables.borderColor};\n flex-wrap: wrap;\n flex-shrink: 0;\n background-color: ${variables.backgroundColorNavigation};\n`;\n\nconst LeftAlignItems = styled.div`\n flex-grow: 1;\n display: flex;\n flex-direction: row;\n gap: ${variables.spacingSmall};\n`;\n\nconst RightAlignItems = styled.div`\n flex-basis: auto;\n display: flex;\n flex-direction: row;\n gap: ${variables.spacingSmall};\n margin-inline-end: ${variables.spacingSmall};\n`;\n\nexport type ToolbarProps = ToolbarButtonProps & {\n toolbarItems: React.ReactElement[];\n};\n\n/**\n * Dashboard Toolbar\n */\nconst Toolbar = ({\n activePanel,\n dashboardApi,\n mode,\n preset,\n toolbarItems,\n}: ToolbarProps) => {\n const layoutType = useSelector(selectLayoutType);\n const toolbarRef = useRef<HTMLDivElement | null>(null);\n\n /**\n * merge dashboard props with current item props\n * so that item have access to dashboard api and other stuff\n */\n const injectDashboardProps = useCallback(\n (items: React.ReactElement[]): React.ReactElement[] => {\n const buttonProps: ToolbarButtonProps = {\n activePanel,\n dashboardApi,\n layoutType,\n mode,\n preset,\n };\n\n return items.map((item) => React.cloneElement(item, buttonProps));\n },\n [activePanel, dashboardApi, layoutType, mode, preset]\n );\n\n const leftAlignItems = useMemo(() => {\n const items = toolbarItems.filter(\n (item) => item.props?.align !== 'right'\n );\n return injectDashboardProps(items);\n }, [toolbarItems, injectDashboardProps]);\n\n const rightAlignItems = useMemo(() => {\n const items = toolbarItems.filter(\n (item) => item.props?.align === 'right'\n );\n return injectDashboardProps(items);\n }, [toolbarItems, injectDashboardProps]);\n\n const observerRef = useRef<MutationObserver | null>(null);\n const isFirstRender = useRef(true);\n\n useEffect(() => {\n if (isFirstRender.current) {\n isFirstRender.current = false;\n return undefined;\n }\n\n observerRef.current = new MutationObserver(() => {\n const firstFocusableButton = toolbarRef.current?.querySelector(\n 'button:not([disabled]):not([aria-disabled=\"true\"]):not([tabindex=\"-1\"])'\n ) as HTMLButtonElement;\n\n firstFocusableButton?.focus();\n observerRef.current?.disconnect();\n });\n\n if (toolbarRef.current) {\n observerRef.current.observe(toolbarRef.current, {\n childList: true,\n subtree: true,\n });\n }\n\n return () => {\n observerRef.current?.disconnect();\n };\n }, [mode]);\n\n if (!toolbarItems.length) {\n return null;\n }\n\n return (\n <ToolbarWrapper data-test=\"dashboard-toolbar\" ref={toolbarRef}>\n <LeftAlignItems key=\"left-align-items\" data-test=\"left-align-items\">\n {leftAlignItems}\n </LeftAlignItems>\n <RightAlignItems\n key=\"right-align-items\"\n data-test=\"right-align-items\"\n >\n {rightAlignItems}\n </RightAlignItems>\n </ToolbarWrapper>\n );\n};\n\nToolbar.displayName = 'Toolbar';\nexport default Toolbar;\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAEA;AADA,YAAY,mBAAmB;AAC/B,6BAAc;AACd,IAAO,iBAAS,aAAa,gBAA8B,wBAAU;;;ACIrE,IAAM,iBAAiB,0BAAO;AAAA,UACxB,sBAAM,MAAM,CAAC;AAAA;AAAA,aAEN,yBAAU,mBAAmB;AAAA;AAAA;AAAA;AAAA,2BAIf,yBAAU,WAAW;AAAA;AAAA;AAAA,wBAGxB,yBAAU,yBAAyB;AAAA;AAG3D,IAAM,iBAAiB,0BAAO;AAAA;AAAA;AAAA;AAAA,WAInB,yBAAU,YAAY;AAAA;AAGjC,IAAM,kBAAkB,0BAAO;AAAA;AAAA;AAAA;AAAA,WAIpB,yBAAU,YAAY;AAAA,yBACR,yBAAU,YAAY;AAAA;AAU/C,IAAM,UAAU,CAAC;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,MAAoB;AAChB,QAAM,iBAAa,qCAAY,wCAAgB;AAC/C,QAAM,iBAAa,sBAA8B,IAAI;AAMrD,QAAM,2BAAuB;AAAA,IACzB,CAAC,UAAsD;AACnD,YAAM,cAAkC;AAAA,QACpC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAEA,aAAO,MAAM,IAAI,CAAC,SAAS,cAAM,aAAa,MAAM,WAAW,CAAC;AAAA,IACpE;AAAA,IACA,CAAC,aAAa,cAAc,YAAY,MAAM,MAAM;AAAA,EACxD;AAEA,QAAM,qBAAiB,uBAAQ,MAAM;AACjC,UAAM,QAAQ,aAAa;AAAA,MACvB,CAAC,SAAM;AAzEnB;AAyEsB,2BAAK,UAAL,mBAAY,WAAU;AAAA;AAAA,IACpC;AACA,WAAO,qBAAqB,KAAK;AAAA,EACrC,GAAG,CAAC,cAAc,oBAAoB,CAAC;AAEvC,QAAM,sBAAkB,uBAAQ,MAAM;AAClC,UAAM,QAAQ,aAAa;AAAA,MACvB,CAAC,SAAM;AAhFnB;AAgFsB,2BAAK,UAAL,mBAAY,WAAU;AAAA;AAAA,IACpC;AACA,WAAO,qBAAqB,KAAK;AAAA,EACrC,GAAG,CAAC,cAAc,oBAAoB,CAAC;AAEvC,QAAM,kBAAc,sBAAgC,IAAI;AACxD,QAAM,oBAAgB,sBAAO,IAAI;AAEjC,+BAAU,MAAM;AACZ,QAAI,cAAc,SAAS;AACvB,oBAAc,UAAU;AACxB,aAAO;AAAA,IACX;AAEA,gBAAY,UAAU,IAAI,iBAAiB,MAAM;AA9FzD;AA+FY,YAAM,wBAAuB,gBAAW,YAAX,mBAAoB;AAAA,QAC7C;AAAA;AAGJ,mEAAsB;AACtB,wBAAY,YAAZ,mBAAqB;AAAA,IACzB,CAAC;AAED,QAAI,WAAW,SAAS;AACpB,kBAAY,QAAQ,QAAQ,WAAW,SAAS;AAAA,QAC5C,WAAW;AAAA,QACX,SAAS;AAAA,MACb,CAAC;AAAA,IACL;AAEA,WAAO,MAAM;AA9GrB;AA+GY,wBAAY,YAAZ,mBAAqB;AAAA,IACzB;AAAA,EACJ,GAAG,CAAC,IAAI,CAAC;AAET,MAAI,CAAC,aAAa,QAAQ;AACtB,WAAO;AAAA,EACX;AAEA,SACI,4CAAC,kBAAe,aAAU,qBAAoB,KAAK,cAC/C,4CAAC,kBAAe,KAAI,oBAAmB,aAAU,sBAC5C,cACL,GACA;AAAA,IAAC;AAAA;AAAA,MACG,KAAI;AAAA,MACJ,aAAU;AAAA;AAAA,IAET;AAAA,EACL,CACJ;AAER;AAEA,QAAQ,cAAc;AACtB,IAAO,kBAAQ;",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["esm-externals:@splunk/react-icons/ChartColumn", "../../src/buttons/Charts.tsx"],
4
- "sourcesContent": ["\nimport * as defaultImport from \"@splunk/react-icons/ChartColumn\";\nexport * from \"@splunk/react-icons/ChartColumn\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "import React, { useCallback, useMemo } from 'react';\nimport { _ } from '@splunk/ui-utils/i18n';\nimport styled from 'styled-components';\nimport Dropdown, {\n type DropdownChildrenRenderer,\n type DropdownPossibleCloseReason,\n} from '@splunk/react-ui/Dropdown';\nimport Menu from '@splunk/react-ui/Menu';\nimport { SplunkThemeProvider, useSplunkTheme } from '@splunk/themes';\n\nimport AddChartDropdown from '@splunk/react-icons/ChartColumn';\n\nimport { VisualizationFilter, type Taxonomy } from '@splunk/dashboard-ui';\nimport { useFeatureFlags } from '@splunk/dashboard-context';\nimport { batch } from '@splunk/dashboard-state';\nimport ToolbarItem from '../Item';\nimport useDropdown from '../hooks/useDropdown';\nimport type { ToolbarButtonProps } from '../types/common';\nimport { prepareIcon } from '../IconButton';\nimport { StyledDropdownButton } from '../components/StyledButton';\n\ninterface ScrollableMenuProps {\n maxHeight?: number | null;\n}\n\nconst ScrollableMenu = styled(Menu).attrs<ScrollableMenuProps>(\n ({ maxHeight }) => ({\n style: {\n maxHeight: maxHeight ?? undefined,\n },\n })\n)<ScrollableMenuProps>`\n overflow-y: auto;\n`;\n\nconst chartsDropdown = prepareIcon({\n Icon: AddChartDropdown,\n isMenu: true,\n screenReaderContent: _('Add chart'),\n});\n\nconst ButtonToggle = (\n <StyledDropdownButton\n data-test=\"charts-button\"\n data-clickable\n appearance=\"subtle\"\n icon={chartsDropdown}\n />\n);\n\nconst focusToggleReasons: DropdownPossibleCloseReason[] = [\n 'escapeKey',\n 'tabKey',\n];\n\ntype Visualizations = Taxonomy[number]['visualizations'];\n\n/**\n * export for unit testing\n * @private\n */\nexport const getVisualizationListFromTaxonomy = ({\n taxonomy,\n handleCreateVisualization,\n}: {\n taxonomy: Taxonomy;\n handleCreateVisualization: (opt: {\n type: string;\n options: Record<string, unknown>;\n }) => () => void;\n}): JSX.Element[] =>\n taxonomy.reduce(\n (list: React.ReactElement[], { visualizations, category }) => {\n const availableVisualizations: Visualizations =\n visualizations.filter((props) => props.includeInToolbar);\n\n if (availableVisualizations.length === 0) {\n return list;\n }\n\n list.push(<Menu.Divider key={`menu-divider-${category}`} />);\n\n return list.concat(\n availableVisualizations.map((vizProps) => {\n const { label, type, initialOptions } = vizProps;\n const Icon = vizProps.icon as React.JSXElementConstructor<\n Record<string, unknown>\n > | null;\n\n if (!type) {\n return null;\n }\n\n const onClick = handleCreateVisualization({\n type,\n options: initialOptions as Record<string, unknown>,\n });\n\n return (\n <Menu.Item\n data-test={`add-${type}-button`}\n data-test-clickable\n onClick={onClick}\n startAdornment={!!Icon && <Icon size=\"18px\" />}\n key={`add-${type}-button`}\n >\n {label}\n </Menu.Item>\n );\n }) as JSX.Element[]\n );\n },\n []\n );\n\n/**\n * Charts button that has a dropdown menu.\n */\nconst Charts = ({ dashboardApi, preset }: ToolbarButtonProps): JSX.Element => {\n const { showNewDataForViz = true } = useFeatureFlags();\n\n const { family } = useSplunkTheme();\n const { handleForceClose, handleRequestClose, handleRequestOpen, isOpen } =\n useDropdown({\n isContentClickClose: false,\n });\n\n const taxonomy: Taxonomy = useMemo(\n () => new VisualizationFilter(preset).taxonomy,\n [preset]\n );\n\n const handleCreateVisualization = useCallback(\n ({\n type,\n options,\n }: {\n type: string;\n options: Record<string, unknown>;\n }) =>\n () => {\n batch(() => {\n dashboardApi?.createVisualization({\n visualizationDefinition: { type, options },\n });\n\n if (showNewDataForViz) {\n dashboardApi?.openPanel({\n activePanel: 'connectData',\n panelProps: {\n bindingType: 'primary',\n from: {\n activePanel: 'config',\n },\n },\n });\n }\n });\n\n handleForceClose();\n },\n [dashboardApi, showNewDataForViz, handleForceClose]\n );\n\n const visualizationList = useMemo(\n () =>\n getVisualizationListFromTaxonomy({\n taxonomy,\n handleCreateVisualization,\n }),\n [taxonomy, handleCreateVisualization]\n );\n\n const renderScrollableMenu = useCallback<DropdownChildrenRenderer>(\n ({ maxHeight }) => (\n <SplunkThemeProvider\n density={family === 'enterprise' ? 'comfortable' : 'compact'}\n >\n <ScrollableMenu\n maxHeight={maxHeight}\n data-test=\"add-chart-menu\"\n >\n {visualizationList}\n </ScrollableMenu>\n </SplunkThemeProvider>\n ),\n [family, visualizationList]\n );\n\n return (\n <ToolbarItem>\n <Dropdown\n focusToggleReasons={focusToggleReasons}\n onRequestClose={handleRequestClose}\n onRequestOpen={handleRequestOpen}\n open={isOpen}\n toggle={ButtonToggle}\n >\n {renderScrollableMenu}\n </Dropdown>\n </ToolbarItem>\n );\n};\n\nexport default Charts;\n"],
5
- "mappings": "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",
6
- "names": []
7
- }