{"version":3,"file":"VizLegendList.mjs","sources":["../../../../src/components/VizLegend/VizLegendList.tsx"],"sourcesContent":["import { css, cx } from '@emotion/css';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes';\nimport { InlineList } from '../List/InlineList';\nimport { List } from '../List/List';\n\nimport { VizLegendListItem } from './VizLegendListItem';\nimport { VizLegendBaseProps, VizLegendItem } from './types';\n\nexport interface Props<T> extends VizLegendBaseProps<T> {}\n\n/**\n * @internal\n */\nexport const VizLegendList = <T extends unknown>({\n  items,\n  itemRenderer,\n  onLabelMouseOver,\n  onLabelMouseOut,\n  onLabelClick,\n  placement,\n  className,\n  readonly,\n}: Props<T>) => {\n  const styles = useStyles2(getStyles);\n\n  if (!itemRenderer) {\n    /* eslint-disable-next-line react/display-name */\n    itemRenderer = (item) => (\n      <VizLegendListItem\n        item={item}\n        onLabelClick={onLabelClick}\n        onLabelMouseOver={onLabelMouseOver}\n        onLabelMouseOut={onLabelMouseOut}\n        readonly={readonly}\n      />\n    );\n  }\n\n  const getItemKey = (item: VizLegendItem<T>) => `${item.getItemKey ? item.getItemKey() : item.label}`;\n\n  switch (placement) {\n    case 'right': {\n      const renderItem = (item: VizLegendItem<T>, index: number) => {\n        return <span className={styles.itemRight}>{itemRenderer!(item, index)}</span>;\n      };\n\n      return (\n        <div className={cx(styles.rightWrapper, className)}>\n          <List items={items} renderItem={renderItem} getItemKey={getItemKey} />\n        </div>\n      );\n    }\n    case 'bottom':\n    default: {\n      const leftItems = items.filter((item) => item.yAxis === 1);\n      const rightItems = items.filter((item) => item.yAxis !== 1);\n\n      const renderItem = (item: VizLegendItem<T>, index: number) => {\n        return <span className={styles.itemBottom}>{itemRenderer!(item, index)}</span>;\n      };\n\n      return (\n        <div className={cx(styles.bottomWrapper, className)}>\n          {leftItems.length > 0 && (\n            <div className={styles.section}>\n              <InlineList items={leftItems} renderItem={renderItem} getItemKey={getItemKey} />\n            </div>\n          )}\n          {rightItems.length > 0 && (\n            <div className={cx(styles.section, styles.sectionRight)}>\n              <InlineList items={rightItems} renderItem={renderItem} getItemKey={getItemKey} />\n            </div>\n          )}\n        </div>\n      );\n    }\n  }\n};\n\nVizLegendList.displayName = 'VizLegendList';\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  const itemStyles = css({\n    paddingRight: '10px',\n    display: 'flex',\n    fontSize: theme.typography.bodySmall.fontSize,\n    whiteSpace: 'nowrap',\n  });\n\n  return {\n    itemBottom: itemStyles,\n    itemRight: cx(\n      itemStyles,\n      css({\n        marginBottom: theme.spacing(0.5),\n      })\n    ),\n    rightWrapper: css({\n      padding: theme.spacing(0.5),\n    }),\n    bottomWrapper: css({\n      display: 'flex',\n      flexWrap: 'wrap',\n      justifyContent: 'space-between',\n      width: '100%',\n      padding: theme.spacing(0.5),\n      gap: '15px 25px',\n    }),\n    section: css({\n      display: 'flex',\n    }),\n    sectionRight: css({\n      justifyContent: 'flex-end',\n      flexGrow: 1,\n      flexBasis: '50%',\n    }),\n  };\n};\n"],"names":[],"mappings":"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"}