@grafana/flamegraph
Version:
Grafana flamegraph visualization component
1 lines • 6.72 kB
Source Map (JSON)
{"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":";;;;;;;;;;AA8BO,MAAM,WAAA,GAAcA,UAAA,CAAK,SAASC,YAAAA,CAAY;AAAA,EACnD,MAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,SAAA;AAAA,EACA,WAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,aAAA;AAAA,EACA,QAAA;AAAA,EACA,aAAA;AAAA,EACA,gBAAA;AAAA,EACA,aAAA;AAAA,EACA,gBAAA;AAAA,EACA,0BAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAA,EAAqB;AACnB,EAAA,MAAM,gBAAA,GACJ,WAAW,aAAA,IAAA,CAAkB,aAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,aAAA,CAAe,WAAW,QAAA,CAAA,KAAa,aAAA,CAAc,SAAA,CAAU,CAAC,CAAA,KAAM,KAAA;AACrG,EAAA,MAAM,qBAAqB,KAAA,KAAU,gBAAA;AACrC,EAAA,MAAM,gBAAgB,gBAAA,KAAqB,KAAA,CAAA;AAC3C,EAAA,MAAM,cAAc,aAAA,KAAkB,KAAA,CAAA;AACtC,EAAA,MAAM,UAAA,GAAa,KAAA,KAAU,CAAA,IAAK,CAAC,QAAA;AAEnC,EAAA,MAAM,sBAAsB,WAAA,IAAe,CAAC,gBAAA,IAAoB,EAAE,cAAc,CAAC,WAAA,CAAA;AACjF,EAAA,MAAM,qBAAA,GAAwB,CAAC,kBAAA,IAAsB,CAAC,UAAA;AACtD,EAAA,MAAM,oBAAA,GAAuB,YAAY,CAAC,aAAA;AAE1C,EAAA,MAAM,YAAA,GAAeC,cAAQ,MAAM;AACjC,IAAA,IAAI,CAAC,0BAAA,EAA4B;AAC/B,MAAA,OAAO,EAAC;AAAA,IACV;AACA,IAAA,MAAM,eAAA,GAAkB;AAAA,MACtB,KAAA;AAAA,MACA,IAAA,EAAM,SAAA;AAAA,MACN,IAAA,EAAM,CAAA;AAAA,MACN,IAAA,EAAM;AAAA,KACR;AACA,IAAA,OAAO,0BAAA,CAA2B,eAAA,EAAiB,IAAA,CAAK,IAAA,EAAM;AAAA,MAC5D,QAAA,EAAU,8BAAYC,cAAA,CAAS,MAAA;AAAA,MAC/B,QAAA,EAAU,8BAAYC,cAAA,CAAS,QAAA;AAAA,MAC/B,MAAA,EAAQ,KAAK,gBAAA,EAAiB;AAAA,MAC9B;AAAA,KACD,CAAA;AAAA,EACH,CAAA,EAAG,CAAC,0BAAA,EAA4B,KAAA,EAAO,WAAW,IAAA,EAAM,QAAA,EAAU,QAAA,EAAU,MAAM,CAAC,CAAA;AAEnF,EAAA,MAAM,YAAA,GAAe,mBAAA,IAAuB,qBAAA,IAAyB,oBAAA,IAAwB,aAAa,MAAA,GAAS,CAAA;AAEnH,EAAA,IAAI,CAAC,YAAA,EAAc;AACjB,IAAA,uBAAOC,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,gBAAA,EAAkB,CAAA;AAAA,EAC3C;AAEA,EAAA,MAAM,IAAA,mCACHC,OAAA,EAAA,EACE,QAAA,EAAA;AAAA,IAAA,mBAAA,oBACCD,cAAA;AAAA,MAACC,OAAA,CAAK,IAAA;AAAA,MAAL;AAAA,QACC,KAAA,EAAM,kBAAA;AAAA,QACN,IAAA,EAAK,iBAAA;AAAA,QACL,SAAS,MAAM;AACb,UAAA,IAAI,aAAA,EAAe;AACjB,YAAA,OAAA,CAAQ,KAAA,EAAO,MAAM,WAAW,CAAA;AAAA,UAClC,CAAA,MAAO;AACL,YAAA,OAAA,CAAQ,MAAA,EAAQ,OAAO,WAAW,CAAA;AAAA,UACpC;AAAA,QACF;AAAA;AAAA,KACF;AAAA,IAED,qBAAA,oBACCD,cAAA,CAACC,OAAA,CAAK,IAAA,EAAL,EAAU,KAAA,EAAM,cAAA,EAAe,IAAA,EAAK,mBAAA,EAAoB,OAAA,EAAS,MAAM,aAAA,CAAc,KAAK,CAAA,EAAG,CAAA;AAAA,IAE/F,oBAAA,oBAAwBD,cAAA,CAACC,OAAA,CAAK,IAAA,EAAL,EAAU,KAAA,EAAM,QAAA,EAAS,IAAA,EAAK,QAAA,EAAS,OAAA,EAAS,MAAM,QAAA,CAAU,KAAK,CAAA,EAAG,CAAA;AAAA,IACjG,aAAa,GAAA,CAAI,CAAC,EAAE,KAAA,EAAO,QAAA,EAAU,MAAM,OAAA,EAAQ,qBAClDD,cAAA,CAACC,OAAA,CAAK,MAAL,EAAyB,KAAA,EAAO,UAAU,IAAA,EAAY,OAAA,EAAA,EAAvC,QAAyD,CAC1E;AAAA,GAAA,EACH,CAAA;AAGF,EAAA,uBACED,cAAA,CAAC,SAAI,SAAA,EAAW,gBAAA,EACd,yCAACE,WAAA,EAAA,EAAS,OAAA,EAAS,IAAA,EACjB,QAAA,kBAAAF,cAAA,CAACG,aAAA,EAAA,EAAW,IAAA,EAAK,cAAa,YAAA,EAAW,SAAA,EAAU,IAAA,EAAK,IAAA,EAAK,OAAA,EAAS,CAAC,MAAM,CAAA,CAAE,eAAA,EAAgB,EAAG,CAAA,EACpG,CAAA,EACF,CAAA;AAEJ,CAAC;;;;"}