@grafana/flamegraph 12.1.0-241686 → 12.1.0-241830
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.
@@ -1,8 +1,7 @@
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
2
2
|
import { cx, css } from '@emotion/css';
|
3
3
|
import { useState, useEffect } from 'react';
|
4
|
-
import useDebounce from 'react-use
|
5
|
-
import usePrevious from 'react-use/lib/usePrevious';
|
4
|
+
import { usePrevious, useDebounce } from 'react-use';
|
6
5
|
import { useStyles2, Input, Button, ButtonGroup, RadioButtonGroup, Menu, Dropdown } from '@grafana/ui';
|
7
6
|
import { byValueGradient, byPackageGradient, diffDefaultGradient, diffColorBlindGradient } from './FlameGraph/colors.mjs';
|
8
7
|
import { MIN_WIDTH_TO_SHOW_BOTH_TOPTABLE_AND_FLAMEGRAPH } from './constants.mjs';
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"FlameGraphHeader.mjs","sources":["../../src/FlameGraphHeader.tsx"],"sourcesContent":["import { css, cx } from '@emotion/css';\nimport { useEffect, useState } from 'react';\nimport * as React from 'react';\nimport useDebounce from 'react-use/lib/useDebounce';\nimport usePrevious from 'react-use/lib/usePrevious';\n\nimport { GrafanaTheme2, SelectableValue } from '@grafana/data';\nimport { Button, ButtonGroup, Dropdown, Input, Menu, RadioButtonGroup, useStyles2 } from '@grafana/ui';\n\nimport { byPackageGradient, byValueGradient, diffColorBlindGradient, diffDefaultGradient } from './FlameGraph/colors';\nimport { CollapsedMap } from './FlameGraph/dataTransform';\nimport { MIN_WIDTH_TO_SHOW_BOTH_TOPTABLE_AND_FLAMEGRAPH } from './constants';\nimport { ColorScheme, ColorSchemeDiff, SelectedView, TextAlign } from './types';\n\ntype Props = {\n search: string;\n setSearch: (search: string) => void;\n selectedView: SelectedView;\n setSelectedView: (view: SelectedView) => void;\n containerWidth: number;\n onReset: () => void;\n textAlign: TextAlign;\n onTextAlignChange: (align: TextAlign) => void;\n showResetButton: boolean;\n colorScheme: ColorScheme | ColorSchemeDiff;\n onColorSchemeChange: (colorScheme: ColorScheme | ColorSchemeDiff) => void;\n stickyHeader: boolean;\n vertical?: boolean;\n isDiffMode: boolean;\n setCollapsedMap: (collapsedMap: CollapsedMap) => void;\n collapsedMap: CollapsedMap;\n\n extraHeaderElements?: React.ReactNode;\n};\n\nconst FlameGraphHeader = ({\n search,\n setSearch,\n selectedView,\n setSelectedView,\n containerWidth,\n onReset,\n textAlign,\n onTextAlignChange,\n showResetButton,\n colorScheme,\n onColorSchemeChange,\n stickyHeader,\n extraHeaderElements,\n vertical,\n isDiffMode,\n setCollapsedMap,\n collapsedMap,\n}: Props) => {\n const styles = useStyles2(getStyles);\n const [localSearch, setLocalSearch] = useSearchInput(search, setSearch);\n\n const suffix =\n localSearch !== '' ? (\n <Button\n icon=\"times\"\n fill=\"text\"\n size=\"sm\"\n onClick={() => {\n // We could set only one and wait them to sync but there is no need to debounce this.\n setSearch('');\n setLocalSearch('');\n }}\n >\n Clear\n </Button>\n ) : null;\n\n return (\n <div className={cx(styles.header, { [styles.stickyHeader]: stickyHeader })}>\n <div className={styles.inputContainer}>\n <Input\n value={localSearch || ''}\n onChange={(v) => {\n setLocalSearch(v.currentTarget.value);\n }}\n placeholder={'Search...'}\n suffix={suffix}\n />\n </div>\n\n <div className={styles.rightContainer}>\n {showResetButton && (\n <Button\n variant={'secondary'}\n fill={'outline'}\n size={'sm'}\n icon={'history-alt'}\n tooltip={'Reset focus and sandwich state'}\n onClick={() => {\n onReset();\n }}\n className={styles.buttonSpacing}\n aria-label={'Reset focus and sandwich state'}\n />\n )}\n <ColorSchemeButton value={colorScheme} onChange={onColorSchemeChange} isDiffMode={isDiffMode} />\n <ButtonGroup className={styles.buttonSpacing}>\n <Button\n variant={'secondary'}\n fill={'outline'}\n size={'sm'}\n tooltip={'Expand all groups'}\n onClick={() => {\n setCollapsedMap(collapsedMap.setAllCollapsedStatus(false));\n }}\n aria-label={'Expand all groups'}\n icon={'angle-double-down'}\n disabled={selectedView === SelectedView.TopTable}\n />\n <Button\n variant={'secondary'}\n fill={'outline'}\n size={'sm'}\n tooltip={'Collapse all groups'}\n onClick={() => {\n setCollapsedMap(collapsedMap.setAllCollapsedStatus(true));\n }}\n aria-label={'Collapse all groups'}\n icon={'angle-double-up'}\n disabled={selectedView === SelectedView.TopTable}\n />\n </ButtonGroup>\n <RadioButtonGroup<TextAlign>\n size=\"sm\"\n disabled={selectedView === SelectedView.TopTable}\n options={alignOptions}\n value={textAlign}\n onChange={onTextAlignChange}\n className={styles.buttonSpacing}\n />\n <RadioButtonGroup<SelectedView>\n size=\"sm\"\n options={getViewOptions(containerWidth, vertical)}\n value={selectedView}\n onChange={setSelectedView}\n />\n {extraHeaderElements && <div className={styles.extraElements}>{extraHeaderElements}</div>}\n </div>\n </div>\n );\n};\n\ntype ColorSchemeButtonProps = {\n value: ColorScheme | ColorSchemeDiff;\n onChange: (colorScheme: ColorScheme | ColorSchemeDiff) => void;\n isDiffMode: boolean;\n};\nfunction ColorSchemeButton(props: ColorSchemeButtonProps) {\n // TODO: probably create separate getStyles\n const styles = useStyles2(getStyles);\n let menu = (\n <Menu>\n <Menu.Item label=\"By package name\" onClick={() => props.onChange(ColorScheme.PackageBased)} />\n <Menu.Item label=\"By value\" onClick={() => props.onChange(ColorScheme.ValueBased)} />\n </Menu>\n );\n\n // Show a bit different gradient as a way to indicate selected value\n const colorDotStyle =\n {\n [ColorScheme.ValueBased]: styles.colorDotByValue,\n [ColorScheme.PackageBased]: styles.colorDotByPackage,\n [ColorSchemeDiff.DiffColorBlind]: styles.colorDotDiffColorBlind,\n [ColorSchemeDiff.Default]: styles.colorDotDiffDefault,\n }[props.value] || styles.colorDotByValue;\n\n let contents = <span className={cx(styles.colorDot, colorDotStyle)} />;\n\n if (props.isDiffMode) {\n menu = (\n <Menu>\n <Menu.Item label=\"Default (green to red)\" onClick={() => props.onChange(ColorSchemeDiff.Default)} />\n <Menu.Item label=\"Color blind (blue to red)\" onClick={() => props.onChange(ColorSchemeDiff.DiffColorBlind)} />\n </Menu>\n );\n\n contents = (\n <div className={cx(styles.colorDotDiff, colorDotStyle)}>\n <div>-100% (removed)</div>\n <div>0%</div>\n <div>+100% (added)</div>\n </div>\n );\n }\n\n return (\n <Dropdown overlay={menu}>\n <Button\n variant={'secondary'}\n fill={'outline'}\n size={'sm'}\n tooltip={'Change color scheme'}\n onClick={() => {}}\n className={styles.buttonSpacing}\n aria-label={'Change color scheme'}\n >\n {contents}\n </Button>\n </Dropdown>\n );\n}\n\nconst alignOptions: Array<SelectableValue<TextAlign>> = [\n { value: 'left', description: 'Align text left', icon: 'align-left' },\n { value: 'right', description: 'Align text right', icon: 'align-right' },\n];\n\nfunction getViewOptions(width: number, vertical?: boolean): Array<SelectableValue<SelectedView>> {\n let viewOptions: Array<{ value: SelectedView; label: string; description: string }> = [\n { value: SelectedView.TopTable, label: 'Top Table', description: 'Only show top table' },\n { value: SelectedView.FlameGraph, label: 'Flame Graph', description: 'Only show flame graph' },\n ];\n\n if (width >= MIN_WIDTH_TO_SHOW_BOTH_TOPTABLE_AND_FLAMEGRAPH || vertical) {\n viewOptions.push({\n value: SelectedView.Both,\n label: 'Both',\n description: 'Show both the top table and flame graph',\n });\n }\n\n return viewOptions;\n}\n\nfunction useSearchInput(\n search: string,\n setSearch: (search: string) => void\n): [string | undefined, (search: string) => void] {\n const [localSearchState, setLocalSearchState] = useState(search);\n const prevSearch = usePrevious(search);\n\n // Debouncing cause changing parent search triggers rerender on both the flamegraph and table\n useDebounce(\n () => {\n setSearch(localSearchState);\n },\n 250,\n [localSearchState]\n );\n\n // Make sure we still handle updates from parent (from clicking on a table item for example). We check if the parent\n // search value changed to something that isn't our local value.\n useEffect(() => {\n if (prevSearch !== search && search !== localSearchState) {\n setLocalSearchState(search);\n }\n }, [search, prevSearch, localSearchState]);\n\n return [localSearchState, setLocalSearchState];\n}\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n header: css({\n label: 'header',\n display: 'flex',\n flexWrap: 'wrap',\n justifyContent: 'space-between',\n width: '100%',\n top: 0,\n gap: theme.spacing(1),\n marginTop: theme.spacing(1),\n }),\n stickyHeader: css({\n zIndex: theme.zIndex.navbarFixed,\n position: 'sticky',\n background: theme.colors.background.primary,\n }),\n inputContainer: css({\n label: 'inputContainer',\n flexGrow: 1,\n minWidth: '150px',\n maxWidth: '350px',\n }),\n rightContainer: css({\n label: 'rightContainer',\n display: 'flex',\n alignItems: 'flex-start',\n flexWrap: 'wrap',\n }),\n buttonSpacing: css({\n label: 'buttonSpacing',\n marginRight: theme.spacing(1),\n }),\n resetButton: css({\n label: 'resetButton',\n display: 'flex',\n marginRight: theme.spacing(2),\n }),\n resetButtonIconWrapper: css({\n label: 'resetButtonIcon',\n padding: '0 5px',\n color: theme.colors.text.disabled,\n }),\n colorDot: css({\n label: 'colorDot',\n display: 'inline-block',\n width: '10px',\n height: '10px',\n borderRadius: theme.shape.radius.circle,\n }),\n colorDotDiff: css({\n label: 'colorDotDiff',\n display: 'flex',\n width: '200px',\n height: '12px',\n color: 'white',\n fontSize: 9,\n lineHeight: 1.3,\n fontWeight: 300,\n justifyContent: 'space-between',\n padding: '0 2px',\n // We have a specific sizing for this so probably makes sense to use hardcoded value here\n // eslint-disable-next-line @grafana/no-border-radius-literal\n borderRadius: '2px',\n }),\n colorDotByValue: css({\n label: 'colorDotByValue',\n background: byValueGradient,\n }),\n colorDotByPackage: css({\n label: 'colorDotByPackage',\n background: byPackageGradient,\n }),\n colorDotDiffDefault: css({\n label: 'colorDotDiffDefault',\n background: diffDefaultGradient,\n }),\n colorDotDiffColorBlind: css({\n label: 'colorDotDiffColorBlind',\n background: diffColorBlindGradient,\n }),\n extraElements: css({\n label: 'extraElements',\n marginLeft: theme.spacing(1),\n }),\n});\n\nexport default FlameGraphHeader;\n"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"FlameGraphHeader.mjs","sources":["../../src/FlameGraphHeader.tsx"],"sourcesContent":["import { css, cx } from '@emotion/css';\nimport { useEffect, useState } from 'react';\nimport * as React from 'react';\nimport { useDebounce, usePrevious } from 'react-use';\n\nimport { GrafanaTheme2, SelectableValue } from '@grafana/data';\nimport { Button, ButtonGroup, Dropdown, Input, Menu, RadioButtonGroup, useStyles2 } from '@grafana/ui';\n\nimport { byPackageGradient, byValueGradient, diffColorBlindGradient, diffDefaultGradient } from './FlameGraph/colors';\nimport { CollapsedMap } from './FlameGraph/dataTransform';\nimport { MIN_WIDTH_TO_SHOW_BOTH_TOPTABLE_AND_FLAMEGRAPH } from './constants';\nimport { ColorScheme, ColorSchemeDiff, SelectedView, TextAlign } from './types';\n\ntype Props = {\n search: string;\n setSearch: (search: string) => void;\n selectedView: SelectedView;\n setSelectedView: (view: SelectedView) => void;\n containerWidth: number;\n onReset: () => void;\n textAlign: TextAlign;\n onTextAlignChange: (align: TextAlign) => void;\n showResetButton: boolean;\n colorScheme: ColorScheme | ColorSchemeDiff;\n onColorSchemeChange: (colorScheme: ColorScheme | ColorSchemeDiff) => void;\n stickyHeader: boolean;\n vertical?: boolean;\n isDiffMode: boolean;\n setCollapsedMap: (collapsedMap: CollapsedMap) => void;\n collapsedMap: CollapsedMap;\n\n extraHeaderElements?: React.ReactNode;\n};\n\nconst FlameGraphHeader = ({\n search,\n setSearch,\n selectedView,\n setSelectedView,\n containerWidth,\n onReset,\n textAlign,\n onTextAlignChange,\n showResetButton,\n colorScheme,\n onColorSchemeChange,\n stickyHeader,\n extraHeaderElements,\n vertical,\n isDiffMode,\n setCollapsedMap,\n collapsedMap,\n}: Props) => {\n const styles = useStyles2(getStyles);\n const [localSearch, setLocalSearch] = useSearchInput(search, setSearch);\n\n const suffix =\n localSearch !== '' ? (\n <Button\n icon=\"times\"\n fill=\"text\"\n size=\"sm\"\n onClick={() => {\n // We could set only one and wait them to sync but there is no need to debounce this.\n setSearch('');\n setLocalSearch('');\n }}\n >\n Clear\n </Button>\n ) : null;\n\n return (\n <div className={cx(styles.header, { [styles.stickyHeader]: stickyHeader })}>\n <div className={styles.inputContainer}>\n <Input\n value={localSearch || ''}\n onChange={(v) => {\n setLocalSearch(v.currentTarget.value);\n }}\n placeholder={'Search...'}\n suffix={suffix}\n />\n </div>\n\n <div className={styles.rightContainer}>\n {showResetButton && (\n <Button\n variant={'secondary'}\n fill={'outline'}\n size={'sm'}\n icon={'history-alt'}\n tooltip={'Reset focus and sandwich state'}\n onClick={() => {\n onReset();\n }}\n className={styles.buttonSpacing}\n aria-label={'Reset focus and sandwich state'}\n />\n )}\n <ColorSchemeButton value={colorScheme} onChange={onColorSchemeChange} isDiffMode={isDiffMode} />\n <ButtonGroup className={styles.buttonSpacing}>\n <Button\n variant={'secondary'}\n fill={'outline'}\n size={'sm'}\n tooltip={'Expand all groups'}\n onClick={() => {\n setCollapsedMap(collapsedMap.setAllCollapsedStatus(false));\n }}\n aria-label={'Expand all groups'}\n icon={'angle-double-down'}\n disabled={selectedView === SelectedView.TopTable}\n />\n <Button\n variant={'secondary'}\n fill={'outline'}\n size={'sm'}\n tooltip={'Collapse all groups'}\n onClick={() => {\n setCollapsedMap(collapsedMap.setAllCollapsedStatus(true));\n }}\n aria-label={'Collapse all groups'}\n icon={'angle-double-up'}\n disabled={selectedView === SelectedView.TopTable}\n />\n </ButtonGroup>\n <RadioButtonGroup<TextAlign>\n size=\"sm\"\n disabled={selectedView === SelectedView.TopTable}\n options={alignOptions}\n value={textAlign}\n onChange={onTextAlignChange}\n className={styles.buttonSpacing}\n />\n <RadioButtonGroup<SelectedView>\n size=\"sm\"\n options={getViewOptions(containerWidth, vertical)}\n value={selectedView}\n onChange={setSelectedView}\n />\n {extraHeaderElements && <div className={styles.extraElements}>{extraHeaderElements}</div>}\n </div>\n </div>\n );\n};\n\ntype ColorSchemeButtonProps = {\n value: ColorScheme | ColorSchemeDiff;\n onChange: (colorScheme: ColorScheme | ColorSchemeDiff) => void;\n isDiffMode: boolean;\n};\nfunction ColorSchemeButton(props: ColorSchemeButtonProps) {\n // TODO: probably create separate getStyles\n const styles = useStyles2(getStyles);\n let menu = (\n <Menu>\n <Menu.Item label=\"By package name\" onClick={() => props.onChange(ColorScheme.PackageBased)} />\n <Menu.Item label=\"By value\" onClick={() => props.onChange(ColorScheme.ValueBased)} />\n </Menu>\n );\n\n // Show a bit different gradient as a way to indicate selected value\n const colorDotStyle =\n {\n [ColorScheme.ValueBased]: styles.colorDotByValue,\n [ColorScheme.PackageBased]: styles.colorDotByPackage,\n [ColorSchemeDiff.DiffColorBlind]: styles.colorDotDiffColorBlind,\n [ColorSchemeDiff.Default]: styles.colorDotDiffDefault,\n }[props.value] || styles.colorDotByValue;\n\n let contents = <span className={cx(styles.colorDot, colorDotStyle)} />;\n\n if (props.isDiffMode) {\n menu = (\n <Menu>\n <Menu.Item label=\"Default (green to red)\" onClick={() => props.onChange(ColorSchemeDiff.Default)} />\n <Menu.Item label=\"Color blind (blue to red)\" onClick={() => props.onChange(ColorSchemeDiff.DiffColorBlind)} />\n </Menu>\n );\n\n contents = (\n <div className={cx(styles.colorDotDiff, colorDotStyle)}>\n <div>-100% (removed)</div>\n <div>0%</div>\n <div>+100% (added)</div>\n </div>\n );\n }\n\n return (\n <Dropdown overlay={menu}>\n <Button\n variant={'secondary'}\n fill={'outline'}\n size={'sm'}\n tooltip={'Change color scheme'}\n onClick={() => {}}\n className={styles.buttonSpacing}\n aria-label={'Change color scheme'}\n >\n {contents}\n </Button>\n </Dropdown>\n );\n}\n\nconst alignOptions: Array<SelectableValue<TextAlign>> = [\n { value: 'left', description: 'Align text left', icon: 'align-left' },\n { value: 'right', description: 'Align text right', icon: 'align-right' },\n];\n\nfunction getViewOptions(width: number, vertical?: boolean): Array<SelectableValue<SelectedView>> {\n let viewOptions: Array<{ value: SelectedView; label: string; description: string }> = [\n { value: SelectedView.TopTable, label: 'Top Table', description: 'Only show top table' },\n { value: SelectedView.FlameGraph, label: 'Flame Graph', description: 'Only show flame graph' },\n ];\n\n if (width >= MIN_WIDTH_TO_SHOW_BOTH_TOPTABLE_AND_FLAMEGRAPH || vertical) {\n viewOptions.push({\n value: SelectedView.Both,\n label: 'Both',\n description: 'Show both the top table and flame graph',\n });\n }\n\n return viewOptions;\n}\n\nfunction useSearchInput(\n search: string,\n setSearch: (search: string) => void\n): [string | undefined, (search: string) => void] {\n const [localSearchState, setLocalSearchState] = useState(search);\n const prevSearch = usePrevious(search);\n\n // Debouncing cause changing parent search triggers rerender on both the flamegraph and table\n useDebounce(\n () => {\n setSearch(localSearchState);\n },\n 250,\n [localSearchState]\n );\n\n // Make sure we still handle updates from parent (from clicking on a table item for example). We check if the parent\n // search value changed to something that isn't our local value.\n useEffect(() => {\n if (prevSearch !== search && search !== localSearchState) {\n setLocalSearchState(search);\n }\n }, [search, prevSearch, localSearchState]);\n\n return [localSearchState, setLocalSearchState];\n}\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n header: css({\n label: 'header',\n display: 'flex',\n flexWrap: 'wrap',\n justifyContent: 'space-between',\n width: '100%',\n top: 0,\n gap: theme.spacing(1),\n marginTop: theme.spacing(1),\n }),\n stickyHeader: css({\n zIndex: theme.zIndex.navbarFixed,\n position: 'sticky',\n background: theme.colors.background.primary,\n }),\n inputContainer: css({\n label: 'inputContainer',\n flexGrow: 1,\n minWidth: '150px',\n maxWidth: '350px',\n }),\n rightContainer: css({\n label: 'rightContainer',\n display: 'flex',\n alignItems: 'flex-start',\n flexWrap: 'wrap',\n }),\n buttonSpacing: css({\n label: 'buttonSpacing',\n marginRight: theme.spacing(1),\n }),\n resetButton: css({\n label: 'resetButton',\n display: 'flex',\n marginRight: theme.spacing(2),\n }),\n resetButtonIconWrapper: css({\n label: 'resetButtonIcon',\n padding: '0 5px',\n color: theme.colors.text.disabled,\n }),\n colorDot: css({\n label: 'colorDot',\n display: 'inline-block',\n width: '10px',\n height: '10px',\n borderRadius: theme.shape.radius.circle,\n }),\n colorDotDiff: css({\n label: 'colorDotDiff',\n display: 'flex',\n width: '200px',\n height: '12px',\n color: 'white',\n fontSize: 9,\n lineHeight: 1.3,\n fontWeight: 300,\n justifyContent: 'space-between',\n padding: '0 2px',\n // We have a specific sizing for this so probably makes sense to use hardcoded value here\n // eslint-disable-next-line @grafana/no-border-radius-literal\n borderRadius: '2px',\n }),\n colorDotByValue: css({\n label: 'colorDotByValue',\n background: byValueGradient,\n }),\n colorDotByPackage: css({\n label: 'colorDotByPackage',\n background: byPackageGradient,\n }),\n colorDotDiffDefault: css({\n label: 'colorDotDiffDefault',\n background: diffDefaultGradient,\n }),\n colorDotDiffColorBlind: css({\n label: 'colorDotDiffColorBlind',\n background: diffColorBlindGradient,\n }),\n extraElements: css({\n label: 'extraElements',\n marginLeft: theme.spacing(1),\n }),\n});\n\nexport default FlameGraphHeader;\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
"author": "Grafana Labs",
|
3
3
|
"license": "Apache-2.0",
|
4
4
|
"name": "@grafana/flamegraph",
|
5
|
-
"version": "12.1.0-
|
5
|
+
"version": "12.1.0-241830",
|
6
6
|
"description": "Grafana flamegraph visualization component",
|
7
7
|
"keywords": [
|
8
8
|
"grafana",
|
@@ -44,8 +44,8 @@
|
|
44
44
|
],
|
45
45
|
"dependencies": {
|
46
46
|
"@emotion/css": "11.13.5",
|
47
|
-
"@grafana/data": "12.1.0-
|
48
|
-
"@grafana/ui": "12.1.0-
|
47
|
+
"@grafana/data": "12.1.0-241830",
|
48
|
+
"@grafana/ui": "12.1.0-241830",
|
49
49
|
"@leeoniya/ufuzzy": "1.0.18",
|
50
50
|
"d3": "^7.8.5",
|
51
51
|
"lodash": "4.17.21",
|