{"version":3,"file":"AmbientList.mjs","names":["React","makeStyles","useTheme","Typography","Box","List","MuiList","ListItem","ListItemText","Divider","ListItemAvatar","Avatar","ListItemIcon","ErrorIcon","StatusChip","FluentIcon","LayoutUnit","clsx","EmptyStateDisplay","PropTypes","useStyles","theme","avatar","backgroundColor","palette","secondary","light","color","getContrastText","denseAvatar","width","spacing","height","margin","list","background","paper","padding","maxHeight","props","overflow","listHeight","listItem","status","marginLeft","noDataMessage","noDataHeight","display","flexDirection","alignItems","justifyContent","gap","DefaultFieldConfig","primaryText","secondaryText","AmbientList","$","_c","classes","data","useAvatar","t0","getItemIcon","t1","getItemStatus","t2","onItemClick","t3","fieldConfig","t4","t5","undefined","_temp","_temp2","_temp3","length","t6","Symbol","for","t7","t8","t9","subText","map","item","index","icon","main","variant","label","propTypes","arrayOf","object","bool","func","shape","string","number"],"sources":["../../../src/UI/dataDisplay/AmbientList.jsx"],"sourcesContent":["import React from 'react';\nimport {\n  makeStyles,\n  useTheme,\n  Typography,\n  Box,\n  List as MuiList,\n  ListItem,\n  ListItemText,\n  Divider,\n  ListItemAvatar,\n  Avatar,\n  ListItemIcon\n} from '@material-ui/core';\nimport { ErrorIcon } from '@fluentui/react-icons';\nimport { StatusChip } from './status/StatusChip';\nimport { FluentIcon } from '../../utilities/iconLibrary/FluentIcon';\nimport { LayoutUnit } from '../../layout/LayoutUnit';\nimport clsx from 'clsx';\nimport { EmptyStateDisplay } from './EmptyStateDisplay';\nimport PropTypes from 'prop-types';\n\nconst useStyles = makeStyles((theme) => ({\n  avatar: {\n    backgroundColor: theme.palette.secondary.light,\n    color: theme.palette.getContrastText(theme.palette.secondary.light)\n  },\n  denseAvatar: {\n    width: theme.spacing(3.75),\n    height: theme.spacing(3.75),\n    margin: '4px 0px'\n  },\n  list: {\n    width: '100%',\n    backgroundColor: theme.palette.background.paper,\n    padding: '0px',\n    maxHeight: (props) => props?.maxHeight || 343,\n    overflow: 'auto',\n    height: (props) => props?.listHeight\n  },\n  listItem: {\n    padding: '0px 15px'\n  },\n  status: {\n    marginLeft: theme.spacing(1)\n  },\n  noDataMessage: {\n    height: (props) => props?.noDataHeight,\n    display: 'flex',\n    flexDirection: 'column',\n    alignItems: 'center',\n    justifyContent: 'center',\n    gap: '10px'\n  }\n}));\n\nconst DefaultFieldConfig = {\n  primaryText: 'primaryText',\n  secondaryText: 'secondaryText'\n};\n\nexport const AmbientList = (props) => {\n  const theme = useTheme();\n  const classes = useStyles(props);\n\n  const {\n    data,\n    useAvatar = true,\n    getItemIcon = () => {},\n    getItemStatus = () => {},\n    onItemClick = () => {},\n    fieldConfig = DefaultFieldConfig,\n    noDataMessage = 'No data available'\n  } = props;\n\n  if (!data || data.length === 0) {\n    return (\n      <>\n        <LayoutUnit unit='xxs' />\n        <EmptyStateDisplay icon={ErrorIcon} primaryText={noDataMessage} />\n        <LayoutUnit unit='xxs' />\n      </>\n    );\n  }\n\n  return (\n    <MuiList className={classes?.list}>\n      {data?.map((item, index) => {\n        const status = getItemStatus(item);\n        const icon = getItemIcon(item);\n\n        return (\n          <>\n            <ListItem\n              button\n              className={classes.listItem}\n              onClick={() => onItemClick(item)}\n            >\n              {useAvatar && icon ? (\n                <ListItemAvatar>\n                  <Avatar\n                    className={clsx(classes.avatar, {\n                      [classes.denseAvatar]:\n                        !item?.[fieldConfig?.primaryText] ||\n                        !item?.[fieldConfig?.secondaryText]\n                    })}\n                    sizes='large'\n                  >\n                    <FluentIcon component={icon} size='small' />\n                  </Avatar>\n                </ListItemAvatar>\n              ) : (\n                <div>\n                  {icon && (\n                    <ListItemIcon>\n                      <FluentIcon\n                        component={icon}\n                        size={\n                          !item?.[fieldConfig?.primaryText] ||\n                          !item?.[fieldConfig?.secondaryText]\n                            ? 'medium'\n                            : 'large'\n                        }\n                        color={theme.palette.secondary.main}\n                      />\n                    </ListItemIcon>\n                  )}\n                </div>\n              )}\n              {/*\n              Note: The primary and secondary typography variant is flipped because\n              it is in incorrect in our theme. Temporary fix until we fix the theme.\n              */}\n              <ListItemText\n                primary={item?.[fieldConfig?.primaryText]}\n                secondary={item?.[fieldConfig?.secondaryText]}\n                primaryTypographyProps={{\n                  variant: 'body2',\n                  color: 'textPrimary'\n                }}\n                secondaryTypographyProps={{\n                  variant: 'body1',\n                  color: 'textSecondary'\n                }}\n              />\n              <ListItemText disableTypography>\n                <Typography align='right'>\n                  {item?.[fieldConfig?.subText]}\n                </Typography>\n              </ListItemText>\n\n              {status?.label && (\n                <Box\n                  display='flex'\n                  flexDirection='column'\n                  justifyContent='center'\n                  alignItems='flex-end'\n                  className={classes.status}\n                >\n                  <StatusChip\n                    status={status?.status ?? 'info'}\n                    label={status?.label}\n                  />\n                </Box>\n              )}\n            </ListItem>\n            <Divider />\n          </>\n        );\n      })}\n    </MuiList>\n  );\n};\n\nAmbientList.propTypes = {\n  data: PropTypes.arrayOf(PropTypes.object),\n  useAvatar: PropTypes.bool,\n  getItemIcon: PropTypes.func,\n  getItemStatus: PropTypes.func,\n  onItemClick: PropTypes.func,\n  fieldConfig: PropTypes.shape({\n    primaryText: PropTypes.string,\n    secondaryText: PropTypes.string,\n    subText: PropTypes.string\n  }),\n  noDataMessage: PropTypes.string,\n  maxHeight: PropTypes.number,\n  listHeight: PropTypes.string,\n  noDataHeight: PropTypes.string\n};\n"],"mappings":"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"}