{"version":3,"file":"GroupAvatar.mjs","names":[],"sources":["../../src/GroupAvatar/GroupAvatar.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport { type FC, useMemo } from 'react';\n\nimport Avatar from '@/Avatar';\nimport Block from '@/Block';\nimport Grid from '@/Grid';\n\nimport { variants } from './style';\nimport type { GroupAvatarProps } from './type';\n\nconst GroupAvatar: FC<GroupAvatarProps> = ({\n  className,\n  style,\n  avatars = [],\n  size = 32,\n  grid = 2,\n  cornerShape = 'square',\n  avatarShape = 'square',\n  ...rest\n}) => {\n  const calcSize = useMemo(() => {\n    const length = avatars.length;\n    const isAutoGrid = grid === 'auto';\n    const gridSize = isAutoGrid ? (length > 4 ? 3 : 2) : grid;\n    const isCircle = cornerShape === 'circle';\n    const avatarSize = Math.floor((size / gridSize) * (isCircle ? 0.65 : 0.75));\n    const gapSize = Math.floor((size - avatarSize * gridSize) / (isCircle ? 6 : 4));\n\n    return {\n      avatarSize,\n      gapSize,\n      gridSize,\n      gridWidth: avatarSize * gridSize + gapSize,\n      maxItemWidth: avatarSize - 1,\n    };\n  }, [avatars, grid, size, cornerShape]);\n\n  const calcAvatars = useMemo(\n    () => avatars?.slice(0, calcSize.gridSize * calcSize.gridSize),\n    [avatars, calcSize.gridSize],\n  );\n\n  const isSingle = calcAvatars?.length === 1;\n\n  return (\n    <Block\n      align={'center'}\n      className={cx(variants({ cornerShape }), className)}\n      height={size}\n      justify={'center'}\n      style={style}\n      width={size}\n      {...rest}\n    >\n      <Grid\n        gap={calcSize.gapSize}\n        maxItemWidth={0}\n        rows={calcSize.gridSize}\n        width={calcSize.gridWidth}\n      >\n        {calcAvatars.map((item, index) => {\n          if (typeof item === 'string')\n            return (\n              <Avatar\n                avatar={item}\n                key={index}\n                shape={avatarShape}\n                size={isSingle ? size * 0.8 : calcSize.avatarSize}\n              />\n            );\n          return (\n            <Avatar\n              key={index}\n              {...item}\n              shape={avatarShape}\n              size={isSingle ? size * 0.8 : calcSize.avatarSize}\n            />\n          );\n        })}\n      </Grid>\n    </Block>\n  );\n};\n\nexport default GroupAvatar;\n"],"mappings":";;;;;;;;;AAYA,MAAM,eAAqC,EACzC,WACA,OACA,UAAU,EAAE,EACZ,OAAO,IACP,OAAO,GACP,cAAc,UACd,cAAc,UACd,GAAG,WACC;CACJ,MAAM,WAAW,cAAc;EAC7B,MAAM,SAAS,QAAQ;EAEvB,MAAM,WADa,SAAS,SACG,SAAS,IAAI,IAAI,IAAK;EACrD,MAAM,WAAW,gBAAgB;EACjC,MAAM,aAAa,KAAK,MAAO,OAAO,YAAa,WAAW,MAAO,KAAM;EAC3E,MAAM,UAAU,KAAK,OAAO,OAAO,aAAa,aAAa,WAAW,IAAI,GAAG;AAE/E,SAAO;GACL;GACA;GACA;GACA,WAAW,aAAa,WAAW;GACnC,cAAc,aAAa;GAC5B;IACA;EAAC;EAAS;EAAM;EAAM;EAAY,CAAC;CAEtC,MAAM,cAAc,cACZ,SAAS,MAAM,GAAG,SAAS,WAAW,SAAS,SAAS,EAC9D,CAAC,SAAS,SAAS,SAAS,CAC7B;CAED,MAAM,WAAW,aAAa,WAAW;AAEzC,QACE,oBAAC,OAAD;EACE,OAAO;EACP,WAAW,GAAG,SAAS,EAAE,aAAa,CAAC,EAAE,UAAU;EACnD,QAAQ;EACR,SAAS;EACF;EACP,OAAO;EACP,GAAI;YAEJ,oBAAC,MAAD;GACE,KAAK,SAAS;GACd,cAAc;GACd,MAAM,SAAS;GACf,OAAO,SAAS;aAEf,YAAY,KAAK,MAAM,UAAU;AAChC,QAAI,OAAO,SAAS,SAClB,QACE,oBAAC,QAAD;KACE,QAAQ;KAER,OAAO;KACP,MAAM,WAAW,OAAO,KAAM,SAAS;KACvC,EAHK,MAGL;AAEN,WACE,oBAAC,QAAD;KAEE,GAAI;KACJ,OAAO;KACP,MAAM,WAAW,OAAO,KAAM,SAAS;KACvC,EAJK,MAIL;KAEJ;GACG,CAAA;EACD,CAAA"}