@grafana/flamegraph
Version:
Grafana flamegraph visualization component
134 lines (130 loc) • 3.52 kB
JavaScript
;
var jsxRuntime = require('react/jsx-runtime');
var ui = require('@grafana/ui');
;
const FlameGraphContextMenu = ({
data,
itemData,
onMenuItemClick,
onItemFocus,
onSandwich,
collapseConfig,
onExpandGroup,
onCollapseGroup,
onExpandAllGroups,
onCollapseAllGroups,
getExtraContextMenuButtons,
collapsing,
allGroupsExpanded,
allGroupsCollapsed,
selectedView,
viewMode,
paneView,
search
}) => {
function renderItems() {
const extraButtons = (getExtraContextMenuButtons == null ? void 0 : getExtraContextMenuButtons(itemData, data.data, {
selectedView,
viewMode,
paneView,
isDiff: data.isDiffFlamegraph(),
search,
collapseConfig
})) || [];
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
/* @__PURE__ */ jsxRuntime.jsx(
ui.MenuItem,
{
label: "Focus block",
icon: "eye",
onClick: () => {
onItemFocus();
onMenuItemClick();
}
}
),
/* @__PURE__ */ jsxRuntime.jsx(
ui.MenuItem,
{
label: "Copy function name",
icon: "copy",
onClick: () => {
navigator.clipboard.writeText(itemData.label).then(() => {
onMenuItemClick();
});
}
}
),
/* @__PURE__ */ jsxRuntime.jsx(
ui.MenuItem,
{
label: "Sandwich view",
icon: "gf-show-context",
onClick: () => {
onSandwich();
onMenuItemClick();
}
}
),
extraButtons.map(({ label, icon, onClick }) => {
return /* @__PURE__ */ jsxRuntime.jsx(ui.MenuItem, { label, icon, onClick: () => onClick() }, label);
}),
collapsing && /* @__PURE__ */ jsxRuntime.jsxs(ui.MenuGroup, { label: "Grouping", children: [
collapseConfig ? collapseConfig.collapsed ? /* @__PURE__ */ jsxRuntime.jsx(
ui.MenuItem,
{
label: "Expand group",
icon: "angle-double-down",
onClick: () => {
onExpandGroup();
onMenuItemClick();
}
}
) : /* @__PURE__ */ jsxRuntime.jsx(
ui.MenuItem,
{
label: "Collapse group",
icon: "angle-double-up",
onClick: () => {
onCollapseGroup();
onMenuItemClick();
}
}
) : null,
!allGroupsExpanded && /* @__PURE__ */ jsxRuntime.jsx(
ui.MenuItem,
{
label: "Expand all groups",
icon: "angle-double-down",
onClick: () => {
onExpandAllGroups();
onMenuItemClick();
}
}
),
!allGroupsCollapsed && /* @__PURE__ */ jsxRuntime.jsx(
ui.MenuItem,
{
label: "Collapse all groups",
icon: "angle-double-up",
onClick: () => {
onCollapseAllGroups();
onMenuItemClick();
}
}
)
] })
] });
}
return /* @__PURE__ */ jsxRuntime.jsx("div", { "data-testid": "contextMenu", children: /* @__PURE__ */ jsxRuntime.jsx(
ui.ContextMenu,
{
renderMenuItems: renderItems,
x: itemData.posX + 10,
y: itemData.posY,
focusOnOpen: false
}
) });
};
module.exports = FlameGraphContextMenu;
//# sourceMappingURL=FlameGraphContextMenu.cjs.map