{"version":3,"file":"js/chunk.0ddd2acbae1bbd66.js","mappings":"wPA8BA,IArBkD,SAACA,GACjD,IAAQC,EAAgCD,EAAhCC,KAAMC,EAA0BF,EAA1BE,QAAYC,EAAS,IAAKH,EAAK,GAC7C,GAA8BI,EAAAA,EAAAA,WAAS,GAAM,WAAtCC,EAAO,KAAEC,EAAU,KAC1B,OACE,SAAC,KAAM,SACLD,QAASA,EACTH,QAAO,gBAAE,gFACU,OAAjBI,GAAW,GAAM,kBAETJ,IAAS,OAEG,OAFH,SAEfI,GAAW,GAAO,wEAGlBH,GAAS,aAEZF,IAGP,C,0NCLMM,EAAsC,SAACP,GAC3C,OAAwCI,EAAAA,EAAAA,UAASJ,EAAMQ,MAAMC,gBAAe,WAArEC,EAAY,KAAEC,EAAe,KACpC,GAA8BP,EAAAA,EAAAA,YAC1BJ,EAAMQ,MAAMI,8BAAgCZ,EAAMQ,MAAMC,iBAC3D,WAFMI,EAAO,KAAEC,EAAU,KAG1B,OACE,iBACEC,UAAWC,IAAW,qBAAsBhB,EAAMe,WAClD,YAAU,4BAA2B,WAErC,kBACEA,UAAU,8BACVb,QAAS,WACHF,EAAMQ,MAAMS,WACVP,EACFQ,OAAOC,SAASC,KAAO,iBAAH,OAAoBpB,EAAMQ,MAAMa,IAAG,KAEvDC,EAAAA,GAAAA,MAAc,WAGhBJ,OAAOC,SAASC,KAAO,iBAAH,OAAoBpB,EAAMQ,MAAMa,IAAG,IAE3D,EAAE,WAEF,gBAAKN,UAAU,4BAA4BQ,IAAKvB,EAAMQ,MAAMgB,QAC5D,kBAAMT,UAAU,kCAAiC,UAC9Cf,EAAMQ,MAAMiB,MACZzB,EAAMQ,MAAMS,aACX,iBAAMF,UAAU,gEAA+D,SAAC,UAKlFf,EAAMQ,MAAMS,aACZ,kBAAMF,UAAU,SAAQ,UACrBf,EAAMQ,MAAMkB,aAAa,QAAM1B,EAAMQ,MAAMmB,kBAIlD,SAACC,EAAA,EAAY,CACX3B,KACED,EAAMQ,MAAMI,6BACR,MACAF,EACA,MACAG,EACAb,EAAMQ,MAAMS,WACV,OACA,KACF,MAENf,QAAO,gBAAE,gGACD2B,EAAAA,GAAe7B,EAAMQ,MAAMa,KAAI,OACjCrB,EAAMQ,MAAMS,YACdK,EAAAA,GAAAA,QAAgB,QAChBR,GAAW,KAEXQ,EAAAA,GAAAA,QAAgB,QAChBX,GAAgB,IACjB,2CAEHmB,UAAWjB,EACXkB,MAAO,CAAEC,MAAO,UAAWC,SAAU,QACrCC,KAAK,QACLnB,UAAU,kBAIlB,EA4DA,EApD4C,SAACf,GAAU,MACrD,OACE,iBAAKe,UAAU,0BAAyB,WACtC,iBACEA,UAAU,mDACVgB,MAAO,CAAEI,aAAc,qBAAsB,WAE7C,gBAAK,YAAU,iBAAgB,UAC7B,iBAAMpB,UAAU,qCAAoC,SACjDf,EAAMyB,WAGX,eACEL,KAAM,iBACNgB,OAAO,SACPrB,UAAU,iCACVsB,IAAI,aAAY,UACjB,QAEC,gBAAKd,IAAKe,WAGd,gBAAKvB,UAAU,4BAA2B,SAC3B,QAD2B,EACvCf,EAAMuC,cAAM,aAAZ,EAAcC,KACb,SAACC,EAAWC,GAAa,eACP,QAAhB,EAAAD,EAAKE,mBAAW,aAAhB,EAAkBC,QAAS,IACzB,iBACE7B,UAAS,kBACP0B,EAAKE,YAAYC,OAAS,IAAMF,EAC5B,GACA,4CACH,WAGH,gBAAK3B,UAAU,wDAAuD,SACnE0B,EAAKI,OAES,QADX,EACLJ,EAAKE,mBAAW,aAAhB,EAAkBH,KAAI,SAAChC,GAAgB,OACtC,SAACD,EAAS,CAERC,MAAOA,EACPO,UAAU,WAFLP,EAAMa,IAGX,MAVCoB,EAAKK,GAab,QAKb,C","sources":["webpack:///./src/components/ButtonRender/index.tsx","webpack:///./src/components/group/GroupCard/index.tsx"],"sourcesContent":["// 该函数组件主要是为了统一处理Button按钮的loading\n\nimport { Button } from 'antd';\nimport { useState } from 'react';\n\ntype ButtonRenderProps = {\n  onClick: () => void;\n  text: string;\n} & Omit<React.ComponentProps<typeof Button>, 'onClick'>;\nconst ButtonRender: React.FC<ButtonRenderProps> = (props) => {\n  const { text, onClick, ...restPorps } = props;\n  const [loading, setLoading] = useState(false);\n  return (\n    <Button\n      loading={loading}\n      onClick={async () => {\n        setLoading(true);\n        try {\n          await onClick();\n        } finally {\n          setLoading(false);\n        }\n      }}\n      {...restPorps}\n    >\n      {text}\n    </Button>\n  );\n};\n\nexport default ButtonRender;\n","import * as api from '@/api/group';\nimport ButtonRender from '@/components/ButtonRender';\nimport rightArrowSvg from '@/static/imgs/right-arrow.svg';\nimport { message } from 'antd';\nimport classNames from 'classnames';\nimport { useState } from 'react';\nimport './index.scss';\n\ntype HomeGroup = {\n  is_private: boolean;\n  is_user_joined: boolean;\n  logo: string;\n  member_count: number;\n  post_count: number;\n  title: string;\n  uid: string;\n  user_has_pending_application: boolean;\n};\n\ntype GroupItemProps = {\n  group: HomeGroup;\n  className: string;\n};\nconst GroupItem: React.FC<GroupItemProps> = (props) => {\n  const [isUserJoined, setIsUserJoined] = useState(props.group.is_user_joined);\n  const [canJoin, setCanJoin] = useState<boolean>(\n    !(props.group.user_has_pending_application || props.group.is_user_joined),\n  );\n  return (\n    <div\n      className={classNames('group-item w-356px', props.className)}\n      data-flex=\"main:justify cross:center\"\n    >\n      <span\n        className=\"text-hex-000 cursor-pointer\"\n        onClick={() => {\n          if (props.group.is_private) {\n            if (isUserJoined) {\n              window.location.href = `/group/groups/${props.group.uid}/`;\n            } else {\n              message.error('请先加入本圈子');\n            }\n          } else {\n            window.location.href = `/group/groups/${props.group.uid}/`;\n          }\n        }}\n      >\n        <img className=\"h-40px w-40px rounded-4px\" src={props.group.logo} />\n        <span className=\"ml-8px font-500 text-hex-1D2129\">\n          {props.group.title}\n          {props.group.is_private && (\n            <span className=\"ml-4px text-12px p-2px bg-hex-3598E8 text-hex-fff rounded-3px\">\n              私\n            </span>\n          )}\n        </span>\n        {!props.group.is_private && (\n          <span className=\"ml-8px\">\n            {props.group.member_count}成员·讨论{props.group.post_count}\n          </span>\n        )}\n      </span>\n      <ButtonRender\n        text={\n          props.group.user_has_pending_application\n            ? '待审核'\n            : isUserJoined\n            ? '已加入'\n            : canJoin\n            ? props.group.is_private\n              ? '申请加入'\n              : '加入'\n            : '待审核'\n        }\n        onClick={async () => {\n          await api.applyGroup(props.group.uid);\n          if (props.group.is_private) {\n            message.success('申请成功');\n            setCanJoin(false);\n          } else {\n            message.success('加入成功');\n            setIsUserJoined(true);\n          }\n        }}\n        disabled={!canJoin}\n        style={{ color: '#4E5969', fontSize: '12px' }}\n        size=\"small\"\n        className=\"join-button\"\n      />\n    </div>\n  );\n};\n\ntype GroupCardProps = {\n  title: string;\n  subhead?: string;\n  url: string; // 点击查看更多跳转地址\n  groups: any;\n};\nconst GroupCard: React.FC<GroupCardProps> = (props) => {\n  return (\n    <div className=\"group-bar block h-308px\">\n      <div\n        className=\"px-20px h-60px flex justify-between items-center\"\n        style={{ borderBottom: '1px solid #f2f3f5' }}\n      >\n        <div data-flex=\"cross:baseline\">\n          <span className=\"text-20px font-500 text-hex-1d2129\">\n            {props.title}\n          </span>\n        </div>\n        <a\n          href={'/group/groups/'}\n          target=\"_blank\"\n          className=\"text-hex-3598E8 cursor-pointer\"\n          rel=\"noreferrer\"\n        >\n          查看更多\n          <img src={rightArrowSvg} />\n        </a>\n      </div>\n      <div className=\"grid grid-cols-3 p-y-20px\">\n        {props.groups?.map(\n          (item: any, index: number) =>\n            item.home_groups?.length > 0 && (\n              <div\n                className={`px-20px ${\n                  item.home_groups.length - 1 === index\n                    ? ''\n                    : 'border-r-1 border-r-solid border-hex-eee'\n                }`}\n                key={item.id}\n              >\n                <div className=\"group-module-title text-18px font-500 text-hex-1d2129\">\n                  {item.name}\n                </div>\n                {item.home_groups?.map((group: HomeGroup) => (\n                  <GroupItem\n                    key={group.uid}\n                    group={group}\n                    className=\"mt-20px\"\n                  />\n                ))}\n              </div>\n            ),\n        )}\n      </div>\n    </div>\n  );\n};\n\nexport default GroupCard;\n"],"names":["props","text","onClick","restPorps","useState","loading","setLoading","GroupItem","group","is_user_joined","isUserJoined","setIsUserJoined","user_has_pending_application","canJoin","setCanJoin","className","classNames","is_private","window","location","href","uid","message","src","logo","title","member_count","post_count","ButtonRender","api","disabled","style","color","fontSize","size","borderBottom","target","rel","rightArrowSvg","groups","map","item","index","home_groups","length","name","id"],"sourceRoot":""}