{"version":3,"file":"js/chunk.90b9804ee2026ef3.js","mappings":"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","sources":["webpack:///./src/api/comment.tsx","webpack:///./src/components/WangEditor/index.tsx","webpack:///./src/api/oss.ts","webpack:///./src/components/Comment/useComment.ts","webpack:///./node_modules/@ant-design/icons-svg/es/asn/QuestionCircleOutlined.js","webpack:///./node_modules/dayjs/locale/zh.js","webpack:///./node_modules/dayjs/plugin/relativeTime.js"],"sourcesContent":["import request from './request';\n\n// 评论列表\nexport async function listAnswerComments(\n params: API.Comment.listCommentParams,\n) {\n return request<API.PageResponse<API.Comment.CommentForList>>(\n `/api/comment/comments`,\n {\n method: 'GET',\n params,\n },\n );\n}\n\n// 发表评论\nexport async function createAnswerComment(\n data: API.Comment.CreateAnswerCommentData,\n) {\n return request<API.Comment.CreateAnswerCommentResponseData>(\n `/api/comment/comments`,\n {\n method: 'POST',\n data,\n },\n );\n}\n\n// 删除评论\nexport async function deleteAnswerComment(commentUid: string) {\n return request(`/api/comment/comments/${commentUid}`, { method: 'DELETE' });\n}\n\n// 喜欢评论\nexport async function likeAnswerComment(commentUid: string) {\n return request(`/api/comment/comments/${commentUid}/like`, {\n method: 'POST',\n });\n}\n\n// 取消喜欢评论\nexport async function unlikeAnswerComment(commentUid: string) {\n return request(`/api/comment/comments/${commentUid}/unlike`, {\n method: 'POST',\n });\n}\n\n// 不喜欢评论\nexport async function dislikeAnswerComment(commentUid: string) {\n return request(`/api/comment/comments/${commentUid}/dislike`, {\n method: 'POST',\n });\n}\n\n// 取消不喜欢评论\nexport async function undislikeAnswerComment(commentUid: string) {\n return request(`/api/comment/comments/${commentUid}/undislike`, {\n method: 'POST',\n });\n}\n// 收藏评论\nexport async function bookmarkAnswerComment(commentUid: string) {\n return request(`/api/comment/comments/${commentUid}/bookmark`, {\n method: 'POST',\n });\n}\n// 取消收藏评论\nexport async function unbookmarkAnswerComment(commentUid: string) {\n return request(`/api/comment/comments/${commentUid}/unbookmark`, {\n method: 'POST',\n });\n}\n// 分享计数\nexport async function shareAnswerComment(commentUid: string) {\n return request(`/api/comment/comments/${commentUid}/share`, {\n method: 'POST',\n });\n}\n","/* eslint-disable @typescript-eslint/no-unused-expressions */\nimport '@wangeditor/editor/dist/css/style.css'; // 引入 css\nimport './index.scss';\n\nimport { uploadFile } from '@/api/oss';\nimport type {\n IDomEditor,\n IEditorConfig,\n IToolbarConfig,\n} from '@wangeditor/editor';\nimport { Boot } from '@wangeditor/editor';\nimport { Editor, Toolbar } from '@wangeditor/editor-for-react';\nimport attachmentModule from '@wangeditor/plugin-upload-attachment'; //\nimport React, { useEffect, useState } from 'react';\n\n// 压缩图片\nconst compressImg: (file: File, rate: number) => Promise<File> = (\n file: File,\n rate: number,\n) => {\n return new Promise((resolve) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => {\n const img = document.createElement('img');\n img.src = reader.result as string;\n img.onload = () => {\n const canvas = document.createElement('canvas');\n canvas.width = img.naturalWidth;\n canvas.height = img.naturalHeight;\n const ctx = canvas.getContext('2d');\n ctx?.drawImage(img, 0, 0, img.naturalWidth, img.naturalHeight);\n canvas.toBlob(\n async (blob) => {\n const newFile = new File([blob!], file.name, {\n type: file.type,\n });\n resolve(newFile);\n },\n file.type,\n rate,\n );\n };\n };\n });\n};\n\n// 注册。要在创建编辑器之前注册,且只能注册一次,不可重复注册。\nBoot.registerModule(attachmentModule);\n\ntype WangEditorProps = {\n uploadImageApi?: (file: File, option: any) => Promise<{ url: string }>;\n onChange?: (html: string) => void;\n value?: string;\n height?: number;\n needFocus?: boolean;\n toolbarConfig?: Partial<IToolbarConfig>;\n};\ntype InsertFnType = (url: string, poster: string) => void;\nconst WangEditor: React.FC<WangEditorProps> = (props) => {\n const [editor, setEditor] = useState<IDomEditor | null>(null); // 存储 editor 实例\n const toolbarConfig: Partial<IToolbarConfig> = props.toolbarConfig || {\n excludeKeys: ['group-video', 'todo', 'insertTable'],\n };\n\n const editorConfig: Partial<IEditorConfig> = {\n placeholder: '请输入内容...',\n autoFocus: props.needFocus ?? true,\n // 在编辑器中,点击选中“附件”节点时,要弹出的菜单\n hoverbarKeys: {\n attachment: {\n menuKeys: ['downloadAttachment'], // “下载附件”菜单\n },\n },\n MENU_CONF: {\n // “上传附件”菜单的配置\n uploadAttachment: {\n server: '/api/oss/upload-file', // 服务端地址\n // timeout: 5 * 1000, // 5s\n fieldName: 'file',\n maxFileSize: 20 * 1024 * 1024, // 20M\n // 上传成功后,用户自定义插入文件\n customInsert(res: any, file: File, insertFn: InsertFnType) {\n const { url } = res || {};\n if (!url) throw new Error(`url is empty`);\n\n // 插入附件到编辑器\n insertFn(`${file.name}`, url);\n },\n },\n uploadImage: {\n server: '/api/oss/upload-file',\n base64LimitSize: 5 * 1024, // 5kb\n // 自定义上传\n async customUpload(file: File, insertFn: InsertFnType) {\n // 超过 300kb 时压缩图片,图片质量保留 0.7, 且压缩到不小于 300kb\n let quality = 300 / (file.size / 1024);\n const newFile =\n quality > 1\n ? file\n : await compressImg(file, Math.max(quality, 0.7));\n\n const res = await uploadFile(newFile);\n insertFn(res.url, res.url);\n },\n },\n },\n };\n // 及时销毁 editor ,重要!\n useEffect(() => {\n return () => {\n if (editor === null) return;\n editor.destroy();\n setEditor(null);\n };\n }, [editor]);\n\n return (\n <>\n <div style={{ border: '1px solid #ccc', zIndex: 100 }}>\n <Toolbar\n editor={editor}\n defaultConfig={toolbarConfig}\n mode=\"default\"\n style={{ borderBottom: '1px solid #ccc' }}\n />\n <Editor\n defaultConfig={editorConfig}\n value={props.value}\n onCreated={setEditor}\n onChange={(edi) => {\n props.onChange && props.onChange(edi.getHtml());\n }}\n mode=\"default\"\n className=\"wang-editor\"\n style={{ height: props.height + 'px' }}\n />\n </div>\n </>\n );\n};\n\nexport default WangEditor;\n","import request from './request';\n\nexport async function uploadFile(\n file: File,\n options?: API.OSS.UploadFileOptions,\n) {\n const form = new FormData();\n form.append('file', file);\n\n if (options?.isAttachment) {\n form.append('is_attachment', 'true');\n }\n if (options?.filename) {\n form.append('filename', options.filename);\n }\n\n return request<API.OSS.File>('/api/oss/upload-file', {\n method: 'post',\n data: form,\n });\n}\n","import * as api from '@/api/comment';\nimport * as api2 from '@/api/homepage';\nimport { useRequest } from 'ahooks';\nimport { message } from 'antd';\nimport { useState } from 'react';\n\ntype AddCommentParams = {\n content: string;\n ancestorUid?: string;\n replyToUid?: string;\n};\n\nexport type Toolkit = {\n addComment: (params: AddCommentParams) => Promise<boolean>; // 添加评论\n delComment: (uid: string) => void; // 删除评论\n likeComment: (uid: string) => void; // 喜欢评论\n unlikeComment: (uid: string) => void; // 喜欢评论\n dislikeComment: (uid: string) => void; // 不喜欢评论\n undislikeComment: (uid: string) => void; // 取消不喜欢评论\n bookmarkComment: (uid: string) => void; // 收藏评论\n unbookmarkComment: (uid: string) => void; // 取消收藏\n};\n\nfunction useComment(uid: string): {\n data: API.Comment.CommentForList[] | undefined; // 评论列表数据\n run: (params: API.Comment.listCommentParams) => void; // 重新获取评论列表数据\n loading: boolean;\n toolkit: Toolkit;\n} {\n const [threadUid] = useState(uid);\n const [commentList, setCommentList] = useState<API.Comment.CommentForList[]>(\n [],\n ); // 评论列表\n\n const { run, loading } = useRequest(api.listAnswerComments, {\n defaultParams: [{ thread_uid: threadUid, page: 1, page_size: 10000000 }],\n onSuccess(e) {\n setCommentList(e.data);\n },\n });\n\n /**\n * 发布评论\n * @param params\n * 两种状态:\n * 1,发布一级评论\n * 2,回复评论\n */\n const addComment = async (params: AddCommentParams) => {\n // 回复评论\n if (params.ancestorUid) {\n const data = await api.createAnswerComment({\n thread_uid: threadUid,\n content: params.content,\n ancestor_uid: params.ancestorUid,\n reply_to_uid: params.replyToUid,\n });\n\n // 添加二级评论数据\n const list = commentList.map((item) => ({\n ...item,\n descendants:\n item.uid === params.ancestorUid\n ? [\n {\n uid: data.uid,\n content: data.content,\n user: data.user,\n reply_to_uid: data.reply_to_user.uid,\n reply_to_user: data.reply_to_user,\n like_status: false,\n like_count: 0,\n comment_count: 0,\n created_at: data.created_at,\n },\n ...item.descendants,\n ]\n : item.descendants,\n }));\n setCommentList([...list]);\n try {\n const usertaskRes = await api2.getUnreadUserTask();\n if (usertaskRes.jifen && usertaskRes.building_score)\n message.success(\n `积分+${usertaskRes.jifen},共建值+${usertaskRes.building_score}`,\n );\n if (usertaskRes.jifen && !usertaskRes.building_score)\n message.success(`积分+${usertaskRes.jifen}`);\n if (!usertaskRes.jifen && usertaskRes.building_score)\n message.success(`共建值+${usertaskRes.building_score}`);\n } catch (e) {}\n\n return true;\n } else {\n // 发布一级评论\n const data = await api.createAnswerComment({\n thread_uid: threadUid,\n content: params.content,\n });\n // 添加一级评论\n setCommentList([\n {\n uid: data.uid,\n content: data.content,\n user: data.user,\n descendants: [],\n like_status: false,\n like_count: 0,\n dislike_status: false,\n dislike_count: 0,\n bookmark_status: false,\n bookmark_count: 0,\n share_count: 0,\n comment_count: 0,\n created_at: data.created_at,\n },\n ...commentList,\n ]);\n\n try {\n const usertaskRes = await api2.getUnreadUserTask();\n if (usertaskRes.jifen && usertaskRes.building_score)\n message.success(\n `积分+${usertaskRes.jifen},共建值+${usertaskRes.building_score}`,\n );\n if (usertaskRes.jifen && !usertaskRes.building_score)\n message.success(`积分+${usertaskRes.jifen}`);\n if (!usertaskRes.jifen && usertaskRes.building_score)\n message.success(`共建值+${usertaskRes.building_score}`);\n } catch (e) {}\n\n return true;\n }\n };\n\n /**\n * 删除评论\n * @param uid 评论uid\n */\n function getAllReplyUid(\n items: API.Comment.DescendantsForList[],\n uid: string,\n uidArr: string[],\n ) {\n items.forEach((item) => {\n if (item.reply_to_uid === uid) {\n uidArr.push(item.uid);\n getAllReplyUid(items, item.uid, uidArr);\n }\n });\n }\n\n const delComment = async (uid: string) => {\n await api.deleteAnswerComment(uid);\n const list = [...commentList];\n\n list.forEach((item, index) => {\n if (item.uid === uid) {\n list.splice(index, 1);\n } else {\n item.descendants.forEach((childItem) => {\n if (childItem.uid === uid) {\n const uidArr: string[] = [];\n uidArr.push(childItem.uid);\n getAllReplyUid(item.descendants, childItem.uid, uidArr);\n console.log(uidArr);\n item.descendants = item.descendants.filter(\n (item) => !uidArr.includes(item.uid),\n );\n }\n });\n }\n });\n setCommentList(list);\n };\n\n /**\n * 喜欢评论\n * @param uid 评论uid\n */\n const likeComment = async (uid: string) => {\n await api.likeAnswerComment(uid);\n const list = [...commentList];\n try {\n const usertaskRes = await api2.getUnreadUserTask();\n if (usertaskRes.jifen && usertaskRes.building_score)\n message.success(\n `积分+${usertaskRes.jifen},共建值+${usertaskRes.building_score}`,\n );\n if (usertaskRes.jifen && !usertaskRes.building_score)\n message.success(`积分+${usertaskRes.jifen}`);\n if (!usertaskRes.jifen && usertaskRes.building_score)\n message.success(`共建值+${usertaskRes.building_score}`);\n } catch (e) {}\n\n setCommentList(\n list.map((item) => {\n console.log(item);\n if (item.uid === uid) {\n return {\n ...item,\n like_count: item.like_count + 1,\n like_status: true,\n };\n } else {\n item.descendants.forEach((childItem) => {\n if (childItem.uid === uid) {\n childItem.like_count += 1;\n childItem.like_status = true;\n }\n });\n return item;\n }\n }),\n );\n };\n\n /**\n * 取消喜欢评论\n * @param uid 评论uid\n */\n const unlikeComment = async (uid: string) => {\n await api.unlikeAnswerComment(uid);\n const list = [...commentList];\n setCommentList(\n list.map((item) => {\n if (item.uid === uid) {\n return {\n ...item,\n like_count: item.like_count - 1,\n like_status: false,\n };\n } else {\n item.descendants.forEach((childItem) => {\n if (childItem.uid === uid) {\n childItem.like_count -= 1;\n childItem.like_status = false;\n }\n });\n return item;\n }\n }),\n );\n };\n\n /**\n * 不喜欢评论\n * @param uid 评论uid\n */\n const dislikeComment = async (uid: string) => {\n await api.dislikeAnswerComment(uid);\n setCommentList(\n commentList.map((item) => {\n if (item.uid === uid) {\n return {\n ...item,\n dislike_count: item.dislike_count + 1,\n dislike_status: true,\n };\n }\n return item;\n }),\n );\n };\n\n /**\n * 取消不喜欢评论\n * @param uid 评论uid\n */\n const undislikeComment = async (uid: string) => {\n await api.undislikeAnswerComment(uid);\n setCommentList(\n commentList.map((item) => {\n if (item.uid === uid) {\n return {\n ...item,\n dislike_count: item.dislike_count - 1,\n dislike_status: false,\n };\n }\n return item;\n }),\n );\n };\n\n /**\n * 收藏\n * @param uid 评论uid\n */\n const bookmarkComment = async (uid: string) => {\n await api.bookmarkAnswerComment(uid);\n setCommentList(\n commentList.map((item) => {\n if (item.uid === uid) {\n return {\n ...item,\n bookmark_count: item.bookmark_count + 1,\n bookmark_status: true,\n };\n }\n return item;\n }),\n );\n };\n\n /**\n * 收藏\n * @param uid 评论uid\n */\n const unbookmarkComment = async (uid: string) => {\n await api.bookmarkAnswerComment(uid);\n setCommentList(\n commentList.map((item) => {\n if (item.uid === uid) {\n return {\n ...item,\n bookmark_count: item.bookmark_count - 1,\n bookmark_status: false,\n };\n }\n return item;\n }),\n );\n };\n\n return {\n data: commentList,\n loading,\n run,\n toolkit: {\n addComment,\n delComment,\n likeComment,\n unlikeComment,\n dislikeComment,\n undislikeComment,\n bookmarkComment,\n unbookmarkComment,\n },\n };\n}\n\nexport default useComment;\n","// This icon file is generated automatically.\nvar QuestionCircleOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\" } }, { \"tag\": \"path\", \"attrs\": { \"d\": \"M623.6 316.7C593.6 290.4 554 276 512 276s-81.6 14.5-111.6 40.7C369.2 344 352 380.7 352 420v7.6c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V420c0-44.1 43.1-80 96-80s96 35.9 96 80c0 31.1-22 59.6-56.1 72.7-21.2 8.1-39.2 22.3-52.1 40.9-13.1 19-19.9 41.8-19.9 64.9V620c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-22.7a48.3 48.3 0 0130.9-44.8c59-22.7 97.1-74.7 97.1-132.5.1-39.3-17.1-76-48.3-103.3zM472 732a40 40 0 1080 0 40 40 0 10-80 0z\" } }] }, \"name\": \"question-circle\", \"theme\": \"outlined\" };\nexport default QuestionCircleOutlined;\n","!function(e,_){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=_(require(\"dayjs\")):\"function\"==typeof define&&define.amd?define([\"dayjs\"],_):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_locale_zh=_(e.dayjs)}(this,(function(e){\"use strict\";function _(e){return e&&\"object\"==typeof e&&\"default\"in e?e:{default:e}}var t=_(e),d={name:\"zh\",weekdays:\"星期日_星期一_星期二_星期三_星期四_星期五_星期六\".split(\"_\"),weekdaysShort:\"周日_周一_周二_周三_周四_周五_周六\".split(\"_\"),weekdaysMin:\"日_一_二_三_四_五_六\".split(\"_\"),months:\"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月\".split(\"_\"),monthsShort:\"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月\".split(\"_\"),ordinal:function(e,_){return\"W\"===_?e+\"周\":e+\"日\"},weekStart:1,yearStart:4,formats:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"YYYY/MM/DD\",LL:\"YYYY年M月D日\",LLL:\"YYYY年M月D日Ah点mm分\",LLLL:\"YYYY年M月D日ddddAh点mm分\",l:\"YYYY/M/D\",ll:\"YYYY年M月D日\",lll:\"YYYY年M月D日 HH:mm\",llll:\"YYYY年M月D日dddd HH:mm\"},relativeTime:{future:\"%s后\",past:\"%s前\",s:\"几秒\",m:\"1 分钟\",mm:\"%d 分钟\",h:\"1 小时\",hh:\"%d 小时\",d:\"1 天\",dd:\"%d 天\",M:\"1 个月\",MM:\"%d 个月\",y:\"1 年\",yy:\"%d 年\"},meridiem:function(e,_){var t=100*e+_;return t<600?\"凌晨\":t<900?\"早上\":t<1100?\"上午\":t<1300?\"中午\":t<1800?\"下午\":\"晚上\"}};return t.default.locale(d,null,!0),d}));","!function(r,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(r=\"undefined\"!=typeof globalThis?globalThis:r||self).dayjs_plugin_relativeTime=e()}(this,(function(){\"use strict\";return function(r,e,t){r=r||{};var n=e.prototype,o={future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"};function i(r,e,t,o){return n.fromToBase(r,e,t,o)}t.en.relativeTime=o,n.fromToBase=function(e,n,i,d,u){for(var f,a,s,l=i.$locale().relativeTime||o,h=r.thresholds||[{l:\"s\",r:44,d:\"second\"},{l:\"m\",r:89},{l:\"mm\",r:44,d:\"minute\"},{l:\"h\",r:89},{l:\"hh\",r:21,d:\"hour\"},{l:\"d\",r:35},{l:\"dd\",r:25,d:\"day\"},{l:\"M\",r:45},{l:\"MM\",r:10,d:\"month\"},{l:\"y\",r:17},{l:\"yy\",d:\"year\"}],m=h.length,c=0;c<m;c+=1){var y=h[c];y.d&&(f=d?t(e).diff(i,y.d,!0):i.diff(e,y.d,!0));var p=(r.rounding||Math.round)(Math.abs(f));if(s=f>0,p<=y.r||!y.r){p<=1&&c>0&&(y=h[c-1]);var v=l[y.l];u&&(p=u(\"\"+p)),a=\"string\"==typeof v?v.replace(\"%d\",p):v(p,n,y.l,s);break}}if(n)return a;var M=s?l.future:l.past;return\"function\"==typeof M?M(a):M.replace(\"%s\",a)},n.to=function(r,e){return i(r,e,this,!0)},n.from=function(r,e){return i(r,e,this)};var d=function(r){return r.$u?t.utc():t()};n.toNow=function(r){return this.to(d(this),r)},n.fromNow=function(r){return this.from(d(this),r)}}}));"],"names":["listAnswerComments","params","request","method","createAnswerComment","data","deleteAnswerComment","commentUid","likeAnswerComment","unlikeAnswerComment","dislikeAnswerComment","undislikeAnswerComment","bookmarkAnswerComment","compressImg","file","rate","Promise","resolve","reader","FileReader","readAsDataURL","onload","img","document","createElement","src","result","canvas","width","naturalWidth","height","naturalHeight","ctx","getContext","drawImage","toBlob","blob","newFile","File","name","type","Boot","attachmentModule","props","useState","editor","setEditor","toolbarConfig","excludeKeys","editorConfig","placeholder","autoFocus","needFocus","hoverbarKeys","attachment","menuKeys","MENU_CONF","uploadAttachment","server","fieldName","maxFileSize","customInsert","res","insertFn","url","Error","uploadImage","base64LimitSize","customUpload","quality","size","Math","max","uploadFile","useEffect","destroy","style","border","zIndex","defaultConfig","mode","borderBottom","value","onCreated","onChange","edi","getHtml","className","options","form","FormData","append","isAttachment","filename","uid","threadUid","commentList","setCommentList","useRequest","api","defaultParams","thread_uid","page","page_size","onSuccess","e","run","loading","addComment","ancestorUid","content","ancestor_uid","reply_to_uid","replyToUid","list","map","item","descendants","user","reply_to_user","like_status","like_count","comment_count","created_at","api2","usertaskRes","jifen","building_score","message","dislike_status","dislike_count","bookmark_status","bookmark_count","share_count","getAllReplyUid","items","uidArr","forEach","push","delComment","index","splice","childItem","console","log","filter","includes","likeComment","unlikeComment","dislikeComment","undislikeComment","bookmarkComment","unbookmarkComment","toolkit","_","t","default","d","weekdays","split","weekdaysShort","weekdaysMin","months","monthsShort","ordinal","weekStart","yearStart","formats","LT","LTS","L","LL","LLL","LLLL","l","ll","lll","llll","relativeTime","future","past","s","m","mm","h","hh","dd","M","MM","y","yy","meridiem","locale","exports","module","require","define","r","n","prototype","o","i","fromToBase","en","u","f","a","$locale","thresholds","length","c","diff","p","rounding","round","abs","v","replace","to","this","from","$u","utc","toNow","fromNow"],"sourceRoot":""}