@grafana/flamegraph
Version:
Grafana flamegraph visualization component
1 lines • 7.38 kB
Source Map (JSON)
{"version":3,"file":"FlameGraphContextMenu.cjs","sources":["../../../src/FlameGraph/FlameGraphContextMenu.tsx"],"sourcesContent":["import { type DataFrame } from '@grafana/data';\nimport { MenuItem, MenuGroup, ContextMenu, type IconName } from '@grafana/ui';\n\nimport { type ClickedItemData, type PaneView, type SelectedView, type ViewMode } from '../types';\n\nimport { type CollapseConfig, type FlameGraphDataContainer } from './dataTransform';\n\nexport type GetExtraContextMenuButtonsFunction = (\n clickedItemData: ClickedItemData,\n data: DataFrame,\n state: {\n selectedView?: SelectedView;\n viewMode?: ViewMode;\n paneView?: PaneView;\n isDiff: boolean;\n search: string;\n collapseConfig?: CollapseConfig;\n }\n) => ExtraContextMenuButton[];\n\nexport type ExtraContextMenuButton = {\n label: string;\n icon: IconName;\n onClick: () => void;\n};\n\ntype Props = {\n data: FlameGraphDataContainer;\n itemData: ClickedItemData;\n onMenuItemClick: () => void;\n onItemFocus: () => void;\n onSandwich: () => void;\n onExpandGroup: () => void;\n onCollapseGroup: () => void;\n onExpandAllGroups: () => void;\n onCollapseAllGroups: () => void;\n getExtraContextMenuButtons?: GetExtraContextMenuButtonsFunction;\n collapseConfig?: CollapseConfig;\n collapsing?: boolean;\n allGroupsCollapsed?: boolean;\n allGroupsExpanded?: boolean;\n selectedView?: SelectedView;\n viewMode?: ViewMode;\n paneView?: PaneView;\n search: string;\n};\n\nconst FlameGraphContextMenu = ({\n data,\n itemData,\n onMenuItemClick,\n onItemFocus,\n onSandwich,\n collapseConfig,\n onExpandGroup,\n onCollapseGroup,\n onExpandAllGroups,\n onCollapseAllGroups,\n getExtraContextMenuButtons,\n collapsing,\n allGroupsExpanded,\n allGroupsCollapsed,\n selectedView,\n viewMode,\n paneView,\n search,\n}: Props) => {\n function renderItems() {\n const extraButtons =\n getExtraContextMenuButtons?.(itemData, data.data, {\n selectedView,\n viewMode,\n paneView,\n isDiff: data.isDiffFlamegraph(),\n search,\n collapseConfig,\n }) || [];\n return (\n <>\n <MenuItem\n label=\"Focus block\"\n icon={'eye'}\n onClick={() => {\n onItemFocus();\n onMenuItemClick();\n }}\n />\n <MenuItem\n label=\"Copy function name\"\n icon={'copy'}\n onClick={() => {\n navigator.clipboard.writeText(itemData.label).then(() => {\n onMenuItemClick();\n });\n }}\n />\n <MenuItem\n label=\"Sandwich view\"\n icon={'gf-show-context'}\n onClick={() => {\n onSandwich();\n onMenuItemClick();\n }}\n />\n {extraButtons.map(({ label, icon, onClick }) => {\n return <MenuItem label={label} icon={icon} onClick={() => onClick()} key={label} />;\n })}\n {collapsing && (\n <MenuGroup label={'Grouping'}>\n {collapseConfig ? (\n collapseConfig.collapsed ? (\n <MenuItem\n label=\"Expand group\"\n icon={'angle-double-down'}\n onClick={() => {\n onExpandGroup();\n onMenuItemClick();\n }}\n />\n ) : (\n <MenuItem\n label=\"Collapse group\"\n icon={'angle-double-up'}\n onClick={() => {\n onCollapseGroup();\n onMenuItemClick();\n }}\n />\n )\n ) : null}\n {!allGroupsExpanded && (\n <MenuItem\n label=\"Expand all groups\"\n icon={'angle-double-down'}\n onClick={() => {\n onExpandAllGroups();\n onMenuItemClick();\n }}\n />\n )}\n {!allGroupsCollapsed && (\n <MenuItem\n label=\"Collapse all groups\"\n icon={'angle-double-up'}\n onClick={() => {\n onCollapseAllGroups();\n onMenuItemClick();\n }}\n />\n )}\n </MenuGroup>\n )}\n </>\n );\n }\n\n return (\n <div data-testid=\"contextMenu\">\n <ContextMenu\n renderMenuItems={renderItems}\n x={itemData.posX + 10}\n y={itemData.posY}\n focusOnOpen={false}\n ></ContextMenu>\n </div>\n );\n};\n\nexport default FlameGraphContextMenu;\n"],"names":["jsxs","Fragment","jsx","MenuItem","MenuGroup","ContextMenu"],"mappings":"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"}