{"version":3,"file":"js/chunk.c8e1b9deff38188e.js","mappings":"uNA6CA,EAtCsB,WACpB,OAAmBA,EAAAA,EAAAA,UAAS,KAArBC,EAAyB,SAAjB,GAEPC,GAASC,EAAAA,EAAAA,GAAWC,EAAAA,GAAgB,CAC1CC,cAAe,CAACJ,KADVC,KAGR,OAAOA,SAAAA,EAAMI,QACX,SAAC,IAAQ,CAACC,UAAQ,EAACC,UAAU,mBAAkB,SAC5CN,EAAKI,OAAOG,KAAI,SAACC,GAChB,OAAOA,EAAMC,YAAYF,KAAI,SAACG,GAC5B,OACE,gBAEEC,QAAS,WACHD,EAAKE,KACPC,OAAOC,KAAKJ,EAAKE,IAErB,EACAN,UAAU,gBAAe,UAEzB,gBACES,MAAO,CACLC,MAAO,OACPC,OAAQ,OACRC,OAAQR,EAAKE,IAAM,UAAY,QAEjCO,IAAKT,EAAKU,aAdPV,EAAKW,IAkBhB,GACF,OAGF,uBAEJ,C,qhBCxCO,SAAeC,EAAW,GAAD,+BAMhC,aAFC,OAED,kBANO,WAA0BvB,GAAgB,6FACxCwB,EAAAA,EAAAA,GAAO,+BAA4CxB,GAAY,CACpEyB,kBAAkB,KAClB,4CACH,sBAGM,SAAeC,IAAY,+BAMlC,aAFC,OAED,kBANO,0GACEF,EAAAA,EAAAA,GAAO,qBAAyC,CACrDC,kBAAkB,KAClB,4CACH,sBAGM,SAAeE,EAAe,GAAD,+BAQpC,aAFC,OAED,kBARO,WACLC,GAA0C,6FAEnCJ,EAAAA,EAAAA,GAAO,2BAA6D,CACzEI,OAAAA,KACA,4CACH,sBAGM,SAAeC,EAAmB,GAAD,+BASxC,aAFC,OAED,kBATO,WACLD,GAAsC,6FAE/BJ,EAAAA,EAAAA,GACL,2BACA,CAAEI,OAAAA,KACH,4CACF,sBAmBM,SAAeE,IAAiB,+BAMvC,aAFC,OAED,kBANO,0GACEN,EAAAA,EAAAA,GACL,4CACD,4CACF,sBAMM,SAAeO,IAAY,+BAMlC,aAFC,OAED,kBANO,0GACEP,EAAAA,EAAAA,GACL,sBACD,4CACF,sBAOM,SAAeQ,EAAmB,GAAD,+BAMxC,aAFC,OAED,kBANO,WAAkCC,GAAoB,6FACpDT,EAAAA,EAAAA,GAAQ,yBAAD,OAA0BS,EAAY,SAAS,CAC3DC,OAAQ,UACR,4CACH,sBAOM,SAAeC,EAAqB,GAAD,+BAM1C,aAFC,OAED,kBANO,WAAoCF,GAAoB,6FACtDT,EAAAA,EAAAA,GAAQ,yBAAD,OAA0BS,EAAY,WAAW,CAC7DC,OAAQ,UACR,4CACH,sBAMM,SAAeE,IAAQ,+BAI9B,aAFC,OAED,kBAJO,0GACEZ,EAAAA,EAAAA,GAAkC,6BAA2B,4CACrE,sBAGM,SAAea,EAAU,GAAD,+BAS/B,aAFC,OAED,kBATO,WAAyBT,GAAqC,6FAC5DJ,EAAAA,EAAAA,GAAoC,kBAAmB,CAG5DC,kBAAkB,EAClBG,OAAAA,KACA,4CACH,sBAUM,SAAeU,EAAU,GAAD,+BAM/B,aADC,OACD,kBANO,WAAyBrC,GAAgC,6FACvDuB,EAAAA,EAAAA,GAAoC,kBAAmB,CAC5DU,OAAQ,OACRjC,KAAAA,KACA,4CACH,sBAEM,SAAesC,EAAa,GAAD,+BASlC,aAFC,OAED,kBATO,WAA4BX,GAA4B,6FACtDJ,EAAAA,EAAAA,GAA0C,sBAAuB,CACtEI,OAAAA,EAGAH,kBAAkB,KAClB,4CACH,sBAGM,SAAee,IAAmB,+BAMzC,aAFC,OAED,kBANO,0GACEhB,EAAAA,EAAAA,GACL,gCACD,4CACF,sBAGM,SAAeiB,EAAgB,GAAD,+BAOrC,aAFC,OAED,kBAPO,WAA+Bb,GAAgC,6FAC7DJ,EAAAA,EAAAA,GACL,+BACA,CAAEI,OAAAA,KACH,4CACF,sBAGM,SAAec,EAAa,GAAD,+BAMlC,aAFC,OAED,kBANO,WAA4BpB,GAAkB,6FAC5CE,EAAAA,EAAAA,GAAO,0BACOF,EAAG,iBACvB,4CACF,sBAGM,SAAeqB,IAAiB,+BAMvC,aAFC,OAED,kBANO,0GACEnB,EAAAA,EAAAA,GACL,mCACD,4CACF,sBAGM,SAAeoB,IAAkB,+BAMxC,aAFC,OAED,kBANO,0GACEpB,EAAAA,EAAAA,GACL,oCACD,4CACF,sBAGM,SAAeqB,EAAW,GAAD,+BAShC,aAFC,OAED,kBATO,WAA0BjB,GAAsB,6FAC9CJ,EAAAA,EAAAA,GACL,oBACA,CACEI,OAAAA,KAEH,4CACF,sB,wBChLD,IAAIkB,EAAeC,EAAQ,MAOvBC,EAAS,SAAUC,GACrB,IAAIC,EAAK,GACLC,EAAWC,OAAOC,KAAKJ,GAmB3B,OAlBAE,EAASG,SAAQ,SAAUC,EAASC,GAClC,IAAIC,EAAQR,EAAIM,IATF,SAAUA,GAE1B,MADS,kBACCG,KAAKH,EACjB,EASQI,CAFJJ,EAAUT,EAAaS,KAEsB,iBAAVE,IACjCA,GAAgB,MAGhBP,IADY,IAAVO,EACIF,GACa,IAAVE,EACH,OAASF,EAET,IAAMA,EAAU,KAAOE,EAAQ,IAEnCD,EAAQL,EAASS,OAAO,IAC1BV,GAAM,QAEV,IACOA,CACT,EAqBAW,EAAOC,QAnBO,SAAUC,GACtB,IAAIb,EAAK,GACT,MAAqB,iBAAVa,EACFA,EAGLA,aAAiBC,OACnBD,EAAMT,SAAQ,SAAUW,EAAGT,GACzBN,GAAMF,EAAOiB,GACTT,EAAQO,EAAMH,OAAO,IACvBV,GAAM,KAEV,IACOA,GAGFF,EAAOe,EAChB,C,mBCxCAF,EAAOC,QARY,SAAUI,GAC3B,OAAOA,EACEC,QAAQ,UAAU,SAAUC,GAC3B,MAAO,IAAMA,EAAMC,aACrB,IACCA,aACX,C","sources":["webpack:///./src/components/group/GroupCarousel/index.tsx","webpack:///./src/api/homepage.ts","webpack:///./node_modules/json2mq/index.js","webpack:///./node_modules/string-convert/camel2hyphen.js"],"sourcesContent":["// 圈子轮播图\nimport * as api from '@/api/homepage';\nimport { useRequest } from 'ahooks';\nimport { Carousel } from 'antd';\nimport { useState } from 'react';\nimport './index.scss';\n\nconst GroupCarousel = () => {\n  const [areaCode] = useState('1');\n  // TODO 替换圈子相关的真实的接口\n  const { data } = useRequest(api.areaDetail, {\n    defaultParams: [areaCode],\n  });\n  return data?.groups ? (\n    <Carousel autoplay className=\"mb-30px carousel\">\n      {data.groups.map((group) => {\n        return group.publicities.map((item) => {\n          return (\n            <div\n              key={item.uid}\n              onClick={() => {\n                if (item.url) {\n                  window.open(item.url);\n                }\n              }}\n              className=\"h-260px block\"\n            >\n              <img\n                style={{\n                  width: '100%',\n                  height: '100%',\n                  cursor: item.url ? 'pointer' : 'auto',\n                }}\n                src={item.cover_url}\n              />\n            </div>\n          );\n        });\n      })}\n    </Carousel>\n  ) : (\n    <></>\n  );\n};\n\nexport default GroupCarousel;\n","import request from './request';\n\n// 获取广告内容\nexport async function areaDetail(areaCode: string) {\n  return request<API.Homepage.Area>(`/api/publicity/areas/${areaCode}`, {\n    skipErrorHandler: true,\n  });\n}\n\n// 获取广告弹窗内容\nexport async function getPopDetail() {\n  return request<API.Homepage.Pop>(`/api/publicity/pop`, {\n    skipErrorHandler: true,\n  });\n}\n\n// 活动列表\nexport async function listActivities(\n  params: API.Homepage.ActivityForListParams,\n) {\n  return request<API.Homepage.ActivityForList[]>(`/api/activity/activities`, {\n    params,\n  });\n}\n\n// 获取社区表单\nexport async function listCommunityForms(\n  params: API.Homepage.FormForListParams,\n) {\n  return request<API.PageResponse<API.Homepage.FormForList>>(\n    '/api/crf/community/forms',\n    { params },\n  );\n}\n\n/**\n * 贡献排行榜\n * @param statsType\n * portal_rank: 总榜\n * portal_rank_last30d: 月榜\n */\nexport async function rankForList(params: API.Homepage.RankForListParams) {\n  return request<API.ToolPageResponse<API.Homepage.RankForList>>(\n    '/api/stats/rank/ranks',\n    { params },\n  );\n}\n\n/**\n * 科研导航-首页展示\n * @returns\n */\nexport async function navigationForList() {\n  return request<API.ToolPageResponse<API.Homepage.NavigationForList>>(\n    '/api/tools/navigation/navigations/index',\n  );\n}\n\n/**\n * 工具广场\n * @returns\n */\nexport async function toolsForList() {\n  return request<API.ToolPageResponse<API.Homepage.ToolForList>>(\n    '/api/tools/portal',\n  );\n}\n\n/**\n * 收藏\n * @param navigationId\n * @returns\n */\nexport async function navigationBookmark(navigationId: number) {\n  return request(`/api/tools/navigation/${navigationId}/like`, {\n    method: 'POST',\n  });\n}\n\n/**\n * 取消收藏\n * @param navigationId\n * @returns\n */\nexport async function navigationUnbookmark(navigationId: number) {\n  return request(`/api/tools/navigation/${navigationId}/unlike`, {\n    method: 'POST',\n  });\n}\n\n/**\n *\n * @returns\n */\nexport async function getStats() {\n  return request<API.Homepage.StatsDetail>('/api/stats/threads/count');\n}\n\n// 积分任务列表\nexport async function listTasks(params: { is_jifen_enabled?: number }) {\n  return request<API.Homepage.TaskForList[]>('/api/task/tasks', {\n    // 首页会自动调用该接口,用户未登录时屏蔽报错\n    // FIXME 注意,原则上,这里不应该设置 skipErrorHandler,而应该在业务组件中判断,若用户未登录,则不调用该接口\n    skipErrorHandler: true,\n    params,\n  });\n}\n\n// 触发任务事件通知\nexport async function taskSignals(data: API.Homepage.TaskCheckSignalsData) {\n  return request<API.Homepage.TaskForList[]>('/api/task/signals', {\n    method: 'POST',\n    data,\n  });\n}\n// 签到\nexport async function taskCheck(data: API.Homepage.TaskCheckData) {\n  return request<API.Homepage.TaskForList[]>('/api/task/check', {\n    method: 'POST',\n    data,\n  });\n}\n// 用户签到详情\nexport async function getUsercheck(params: { device_t: number }) {\n  return request<API.Homepage.TaskUsercheckDetail>('/api/task/usercheck', {\n    params,\n    // 首页会自动调用该接口,用户未登录时屏蔽报错\n    // FIXME 注意,原则上,这里不应该设置 skipErrorHandler,而应该在业务组件中判断,若用户未登录,则不调用该接口\n    skipErrorHandler: true,\n  });\n}\n\n// 共建积分概要\nexport async function getBuildingOverview() {\n  return request<API.Homepage.BuildingOverviewDetail>(\n    '/api/task/building-overview',\n  );\n}\n\n// 共建榜前10\nexport async function getBuildingRank(params: { kind: 'all' | 'week' }) {\n  return request<API.Homepage.BuildingRankForGet>(\n    '/api/task/stat/building-rank',\n    { params },\n  );\n}\n\n// 用户勋章列表\nexport async function getUserMedal(uid: string | null) {\n  return request<API.Homepage.UserMedalForList[]>(\n    `/api/task/users/${uid}/user-medal`,\n  );\n}\n\n// 获取用户完成任务的提示\nexport async function getUnreadUserTask() {\n  return request<API.Homepage.UnreadUserTaskForGet>(\n    '/api/task/get-unread-user-task',\n  );\n}\n\n// 获取用户勋章提示\nexport async function getUnreadUserMedal() {\n  return request<API.Homepage.UnreadUserMedalForGet>(\n    '/api/task/get-unread-user-medal',\n  );\n}\n\n// 最新动态\nexport async function listEvents(params: API.PageParams) {\n  return request<API.ToolPageResponse<API.Homepage.EventForList>>(\n    '/api/event/events',\n    {\n      params,\n    },\n  );\n}\n\n// 获取用户是否有机构工作台\nexport async function getHasDashboard() {\n  return request<API.Homepage.HasJoinedDashboard>(\n    '/api/system/userinfo/dashboard',\n  );\n}\n","var camel2hyphen = require('string-convert/camel2hyphen');\n\nvar isDimension = function (feature) {\n  var re = /[height|width]$/;\n  return re.test(feature);\n};\n\nvar obj2mq = function (obj) {\n  var mq = '';\n  var features = Object.keys(obj);\n  features.forEach(function (feature, index) {\n    var value = obj[feature];\n    feature = camel2hyphen(feature);\n    // Add px to dimension features\n    if (isDimension(feature) && typeof value === 'number') {\n      value = value + 'px';\n    }\n    if (value === true) {\n      mq += feature;\n    } else if (value === false) {\n      mq += 'not ' + feature;\n    } else {\n      mq += '(' + feature + ': ' + value + ')';\n    }\n    if (index < features.length-1) {\n      mq += ' and '\n    }\n  });\n  return mq;\n};\n\nvar json2mq = function (query) {\n  var mq = '';\n  if (typeof query === 'string') {\n    return query;\n  }\n  // Handling array of media queries\n  if (query instanceof Array) {\n    query.forEach(function (q, index) {\n      mq += obj2mq(q);\n      if (index < query.length-1) {\n        mq += ', '\n      }\n    });\n    return mq;\n  }\n  // Handling single media query\n  return obj2mq(query);\n};\n\nmodule.exports = json2mq;","var camel2hyphen = function (str) {\n  return str\n          .replace(/[A-Z]/g, function (match) {\n            return '-' + match.toLowerCase();\n          })\n          .toLowerCase();\n};\n\nmodule.exports = camel2hyphen;"],"names":["useState","areaCode","data","useRequest","api","defaultParams","groups","autoplay","className","map","group","publicities","item","onClick","url","window","open","style","width","height","cursor","src","cover_url","uid","areaDetail","request","skipErrorHandler","getPopDetail","listActivities","params","listCommunityForms","navigationForList","toolsForList","navigationBookmark","navigationId","method","navigationUnbookmark","getStats","listTasks","taskCheck","getUsercheck","getBuildingOverview","getBuildingRank","getUserMedal","getUnreadUserTask","getUnreadUserMedal","listEvents","camel2hyphen","require","obj2mq","obj","mq","features","Object","keys","forEach","feature","index","value","test","isDimension","length","module","exports","query","Array","q","str","replace","match","toLowerCase"],"sourceRoot":""}