{"version":3,"file":"SummaryBlock.mjs","names":["React","makeStyles","Typography","Box","useTheme","PropTypes","useSplitDecimal","grey","clsx","FluentIcon","getEllipseColor","useStyles","theme","rootContainer","backgroundColor","props","palette","background","paper","borderLeft","noLeftBorder","borderRight","noRightBorder","height","width","labelOverflow","whiteSpace","overflow","textOverflow","fontWeight","labelValue","fontSize","labelText","display","flexDirection","alignItems","padding","color","labelVariant","iconWrapper","marginLeft","spacing","SummaryBlock","$","_c","value","startLabel","label","icon","style","primary","secondary","textVariant","t0","children","valueIsDecimal","t1","iconColor","undefined","textValue","classes","t2","gap","t3","mainLabel","decimalLabel","t4","t5","t6","propTypes","string","isRequired","elementType","object"],"sources":["../../../src/UI/dataDisplay/SummaryBlock.jsx"],"sourcesContent":["import React from 'react';\nimport { makeStyles, Typography, Box, useTheme } from '@material-ui/core';\nimport { PropTypes } from 'prop-types';\nimport { useSplitDecimal } from '../../hooks/useSplitDecimal';\nimport { grey } from '@material-ui/core/colors';\nimport clsx from 'clsx';\nimport { FluentIcon } from '../../utilities/iconLibrary/FluentIcon';\nimport { getEllipseColor } from '../../utilities/style/colorConverter';\n\nconst useStyles = makeStyles(theme => ({\n  rootContainer: {\n    backgroundColor: props =>\n      props?.backgroundColor || theme.palette.background.paper,\n    borderLeft: props => (props?.noLeftBorder ? '0px' : 'solid 1px'),\n    borderRight: props => (props?.noRightBorder ? '0px' : 'solid 1px'),\n    height: props => props?.height,\n    width: props => props?.width\n  },\n  labelOverflow: {\n    whiteSpace: 'nowrap',\n    overflow: 'hidden',\n    textOverflow: 'ellipsis',\n    fontWeight: '400',\n  },\n  labelValue: {\n    fontWeight: '400',\n    fontSize: '16px',\n  },\n  labelText: {\n    display: 'flex',\n    flexDirection: 'column',\n    alignItems: 'flex-start',\n    padding: '0px 10px',\n    color: grey[500],\n    fontSize: props => props?.labelVariant === 'caption' && '12px',\n    fontWeight: props => (props?.labelVariant === 'caption' ? '400' : '500'),\n  },\n  iconWrapper: {\n    marginLeft: theme.spacing(1),\n  },\n}));\n\n/**\n * `SummaryBlock` component\n */\nexport const SummaryBlock = props => {\n  const {\n    value,\n    startLabel,\n    label,\n    icon,\n    style,\n    primary,\n    secondary,\n    textVariant,\n    labelVariant = 'caption',\n    children,\n    valueIsDecimal = true,\n    iconColor,\n  } = props;\n\n  const { textValue } = useSplitDecimal(value);\n  const theme = useTheme();\n  const classes = useStyles(props);\n\n  return (\n    <Box\n      display=\"flex\"\n      flexDirection=\"column\"\n      justifyContent=\"center\"\n      alignItems=\"center\"\n      className={classes.rootContainer}\n      style={{ gap: '2px', ...style }}\n    >\n      <Box\n        display=\"flex\"\n        justifyContent=\"center\"\n        alignItems=\"center\"\n        alignSelf=\"stretch\"\n      >\n        {primary ? (\n          primary\n        ) : (\n          <>\n            {startLabel && (\n              <Typography\n                variant=\"caption\"\n                className={clsx(classes.labelOverflow)}\n              >\n                {startLabel}\n              </Typography>\n            )}\n            <Typography\n              variant={textVariant}\n              className={clsx(\n                textVariant ? {} : classes.labelValue,\n                classes.labelOverflow\n              )}\n              style={style?.mainLabel}\n            >\n              {textValue.mainLabel}\n            </Typography>\n            {valueIsDecimal && textValue.decimalLabel && (\n              <Typography\n                variant=\"caption\"\n                className={clsx(classes.labelOverflow)}\n              >\n                .{textValue.decimalLabel}\n              </Typography>\n            )}\n            {icon && (\n              <div className={classes.iconWrapper}>\n                <FluentIcon\n                  component={icon}\n                  color={iconColor ? getEllipseColor(theme, iconColor) : null}\n                />\n              </div>\n            )}\n          </>\n        )}\n      </Box>\n      {secondary ? (\n        secondary\n      ) : (\n        <Typography\n          variant={labelVariant}\n          className={clsx(classes.labelText, classes.labelOverflow)}\n          style={style?.label}\n        >\n          {label}\n        </Typography>\n      )}\n      {children}\n    </Box>\n  );\n};\n\nSummaryBlock.propTypes = {\n  /** @type {?string} main label, if you pass a number with decimals the card will show the decimals in the left side */\n  value: PropTypes.string.isRequired,\n\n  /** @type {?string} label showed in the bottom part of the block summary */\n  label: PropTypes.string,\n\n  /** @type {?string} optional symbol to put at the right side of the value */\n  startLabel: PropTypes.string,\n\n  /** @type {?elementType} optional icon to display in the left side of the value */\n  icon: PropTypes.elementType,\n\n  /** @type {?object} optional additional css properties */\n  style: PropTypes.object,\n\n  /** @type {?object}  render prop if you want to pass a custom react element instead of the predefined value */\n  primary: PropTypes.elementType,\n\n  /** @type {?object} render prop if you want to pass a custom react element instead of the predefined label*/\n  secondary: PropTypes.elementType,\n\n  /** @type {?string} optional variant for the main text e.g ['caption', 'subtitle'] */\n  textVariant: PropTypes.string,\n\n  /** @type {?string} optional variant for the label e.g ['caption', 'subtitle'] */\n  labelVariant: PropTypes.string,\n\n  /** @type {?string} optional background color for the full content */\n  backgroundColor: PropTypes.string,\n\n  /** @type {?elementType} optional children element */\n  children: PropTypes.elementType,\n};\n"],"mappings":"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"}