{"version":3,"file":"ActionsCell.cjs","sources":["../../../src/CallTree/ActionsCell.tsx"],"sourcesContent":["import { memo, useMemo } from 'react';\n\nimport { Dropdown, IconButton, Menu } from '@grafana/ui';\n\nimport { type GetExtraContextMenuButtonsFunction } from '../FlameGraph/FlameGraphContextMenu';\nimport { type FlameGraphDataContainer, type LevelItem } from '../FlameGraph/dataTransform';\nimport { PaneView, ViewMode } from '../types';\n\ntype ActionsCellProps = {\n  nodeId: string;\n  label: string;\n  itemIndexes: number[];\n  levelItem: LevelItem;\n  hasChildren: boolean;\n  depth: number;\n  parentId: string | undefined;\n  onFocus: (nodeIdOrLabel: string, isLabel: boolean, itemIndexes: number[]) => void;\n  onShowCallers: (label: string) => void;\n  onSearch?: (symbol: string) => void;\n  focusedNodeId: string | undefined;\n  callersNodeLabel: string | undefined;\n  isSearchMatch: boolean;\n  actionsCellClass: string;\n  getExtraContextMenuButtons?: GetExtraContextMenuButtonsFunction;\n  data: FlameGraphDataContainer;\n  viewMode?: ViewMode;\n  paneView?: PaneView;\n  search: string;\n};\n\nexport const ActionsCell = memo(function ActionsCell({\n  nodeId,\n  label,\n  itemIndexes,\n  levelItem,\n  hasChildren,\n  depth,\n  parentId,\n  onFocus,\n  onShowCallers,\n  onSearch,\n  focusedNodeId,\n  callersNodeLabel,\n  isSearchMatch,\n  actionsCellClass,\n  getExtraContextMenuButtons,\n  data,\n  viewMode,\n  paneView,\n  search,\n}: ActionsCellProps) {\n  const isTheFocusedNode =\n    nodeId === focusedNodeId || (focusedNodeId?.startsWith('label:') && focusedNodeId.substring(6) === label);\n  const isTheCallersTarget = label === callersNodeLabel;\n  const inCallersMode = callersNodeLabel !== undefined;\n  const inFocusMode = focusedNodeId !== undefined;\n  const isRootNode = depth === 0 && !parentId;\n\n  const shouldShowFocusItem = hasChildren && !isTheFocusedNode && !(isRootNode && !inFocusMode);\n  const shouldShowCallersItem = !isTheCallersTarget && !isRootNode;\n  const shouldShowSearchItem = onSearch && !isSearchMatch;\n\n  const extraButtons = useMemo(() => {\n    if (!getExtraContextMenuButtons) {\n      return [];\n    }\n    const clickedItemData = {\n      label,\n      item: levelItem,\n      posX: 0,\n      posY: 0,\n    };\n    return getExtraContextMenuButtons(clickedItemData, data.data, {\n      viewMode: viewMode ?? ViewMode.Single,\n      paneView: paneView ?? PaneView.CallTree,\n      isDiff: data.isDiffFlamegraph(),\n      search,\n    });\n  }, [getExtraContextMenuButtons, label, levelItem, data, viewMode, paneView, search]);\n\n  const hasAnyAction = shouldShowFocusItem || shouldShowCallersItem || shouldShowSearchItem || extraButtons.length > 0;\n\n  if (!hasAnyAction) {\n    return <div className={actionsCellClass} />;\n  }\n\n  const menu = (\n    <Menu>\n      {shouldShowFocusItem && (\n        <Menu.Item\n          label=\"Focus on callees\"\n          icon=\"compress-arrows\"\n          onClick={() => {\n            if (inCallersMode) {\n              onFocus(label, true, itemIndexes);\n            } else {\n              onFocus(nodeId, false, itemIndexes);\n            }\n          }}\n        />\n      )}\n      {shouldShowCallersItem && (\n        <Menu.Item label=\"Show callers\" icon=\"expand-arrows-alt\" onClick={() => onShowCallers(label)} />\n      )}\n      {shouldShowSearchItem && <Menu.Item label=\"Search\" icon=\"search\" onClick={() => onSearch!(label)} />}\n      {extraButtons.map(({ label: btnLabel, icon, onClick }) => (\n        <Menu.Item key={btnLabel} label={btnLabel} icon={icon} onClick={onClick} />\n      ))}\n    </Menu>\n  );\n\n  return (\n    <div className={actionsCellClass}>\n      <Dropdown overlay={menu}>\n        <IconButton name=\"ellipsis-v\" aria-label=\"Actions\" size=\"sm\" onClick={(e) => e.stopPropagation()} />\n      </Dropdown>\n    </div>\n  );\n});\n"],"names":["memo","ActionsCell","useMemo","ViewMode","PaneView","jsx","Menu","Dropdown","IconButton"],"mappings":"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"}