{"version":3,"sources":["webpack://_N_E/./node_modules/core-js/modules/es.symbol.iterator.js","webpack://_N_E/./lib/ugc-interact.ts","webpack://_N_E/./node_modules/querystring/encode.js","webpack://_N_E/./components/button.tsx","webpack://_N_E/./public/static/close-icon.png","webpack://_N_E/./constants/index.ts","webpack://_N_E/./node_modules/core-js/internals/string-repeat.js","webpack://_N_E/./node_modules/core-js/internals/this-number-value.js","webpack://_N_E/./public/static/close-icon-hover.png","webpack://_N_E/./node_modules/querystring/decode.js","webpack://_N_E/./components/hooks/use-fetch-collected.ts","webpack://_N_E/./node_modules/core-js/modules/es.array.splice.js","webpack://_N_E/./node_modules/querystring/index.js","webpack://_N_E/./node_modules/core-js/modules/es.number.to-fixed.js","webpack://_N_E/./components/usePortal.tsx","webpack://_N_E/./components/modal-report.tsx"],"names":["defineWellKnownSymbol","focus","params","user_id","to_user_id","fetch","method","headers","window","localStorage","getItem","body","serializeObject","then","res","data","message","is_following","Promise","resolve","ToastMessager","show","text","reject","catch","err","digg","group_id","action","like_type","thread_id","digg_action","aid","getUrl","err_no","err_tips","console","log","stringifyPrimitive","v","isFinite","module","exports","obj","sep","eq","name","undefined","Object","keys","map","k","ks","encodeURIComponent","Array","isArray","join","Button","event","props","loading","disabled","onClick","preventDefault","stopPropagation","this","type","style","children","className","role","classnames","React","DEFAULT_VIDEO_KEYWORDS","DEFAULT_VIDEO_DESCRIPTION","DEFAULT_ARTICLE_KEYWORDS","DEFAULT_ARTICLE_DESCRIPTION","ICON_VIDEO_PLAYER_LOADING","appName","toInteger","requireObjectCoercible","repeat","count","str","String","result","n","Infinity","RangeError","classof","value","TypeError","hasOwnProperty","prop","prototype","call","qs","options","length","regexp","split","maxKeys","len","i","kstr","vstr","x","replace","idx","indexOf","substr","decodeURIComponent","push","useFetchCollected","id","collected","useState","curCollected","setCurCollected","userId","useContext","GlobalStoreContext","state","userData","useEffect","status","is_collect","$","toAbsoluteIndex","toLength","toObject","arraySpeciesCreate","createProperty","arrayMethodHasSpeciesSupport","arrayMethodUsesToLength","HAS_SPECIES_SUPPORT","USES_TO_LENGTH","ACCESSORS","0","1","max","Math","min","target","proto","forced","splice","start","deleteCount","insertCount","actualDeleteCount","A","from","to","O","actualStart","argumentsLength","arguments","decode","parse","encode","stringify","thisNumberValue","fails","nativeToFixed","toFixed","floor","pow","acc","fractionDigits","e","z","j","number","fractDigits","sign","multiply","c","index","c2","divide","dataToString","s","t","x2","slice","usePortal","parentElemRef","useRef","rootElem","oldElem","document","getElementById","parentElem","container","createElement","setAttribute","createRootElement","appendChild","current","childNodes","remove","ModalReport","visible","onButtonClick","config","reportConfig","checkedValue","setCheckedValue","description","setDescription","handleConfirmClick","handleCancelClick","handleResultChange","currentTarget","handleResultExtraChange","createPortal","in","timeout","unmountOnExit","reportItem","reportIndex","key","checked","onChange","htmlFor"],"mappings":"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","file":"static/chunks/143e3ab58b446892eb5ffa16cea290bee8fb9f64.68f218bfb6d8d7c937d1.js","sourcesContent":["var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n","import fetch from 'lib/decorated-fetch'\nimport serializeObject from '@arsenal/arsenal/modules/serializeObject'\nimport getUrl from 'lib/url'\nimport ToastMessager from 'Components/toast-messager'\nimport { DiggType } from 'Components/hooks/use-toggle-digg'\nconst apiMap = {\n 1: '/ugc/video/v1/digg/digg/',\n 4: '/motor/discuss_ugc/digg/digg/',\n}\n\nconst methodMap = {\n 1: 'POST',\n 4: 'POST',\n}\n\ninterface FocusParams {\n user_id: number | string\n to_user_id: number | string\n}\n\ninterface DiggParams {\n user_id: number\n group_id: string\n action: 'digg' | 'cancel_digg'\n like_type?: DiggType\n}\n\ninterface DiggCommentParams {\n comment_id: string\n group_id: string\n}\n\nexport const focus = ({ user_id, to_user_id }: FocusParams) => {\n const params = {\n user_id,\n to_user_id,\n }\n return fetch('/motor/user/relation/like', {\n method: 'POST',\n headers: {\n 'tt-anti-token': window.localStorage.getItem('tt-anti-token') || '',\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n body: serializeObject(params),\n })\n .then((res) => {\n const { message, is_following } = res.data\n if (message === 'success' && is_following) {\n return Promise.resolve()\n } else {\n ToastMessager.show({\n text: '关注失败',\n })\n return Promise.reject('关注失败')\n }\n })\n .catch((err) => {\n ToastMessager.show({\n text: '关注失败',\n })\n return Promise.reject('关注失败')\n })\n}\n\nexport const digg = ({\n user_id,\n group_id,\n action,\n like_type = 'digg_thread',\n}: DiggParams) => {\n const params = {\n user_id,\n thread_id: group_id,\n digg_action: action,\n like_type,\n group_id,\n aid: 1839,\n }\n let request = null\n request = fetch(getUrl(`/motor/community/digg_like`), {\n method: 'POST',\n headers: {\n 'tt-anti-token': window.localStorage.getItem('tt-anti-token') || '',\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n body: serializeObject(params),\n })\n return request\n .then((res) => {\n const { err_no, err_tips } = res\n if (err_no) {\n return Promise.reject(err_tips)\n } else {\n return Promise.resolve()\n }\n })\n .catch((err) => {\n console.log(err)\n return Promise.reject('点赞失败')\n })\n}\n\nexport const diggComment = ({ comment_id, group_id }: DiggCommentParams) => {\n const params = {\n aid: 36,\n user_id: 64194007718,\n comment_id,\n group_id,\n device_id: 69983831301,\n aggr_type: 0,\n action: 'digg',\n }\n return fetch('/browser/2/data/comment_action/', {\n method: 'POST',\n headers: {\n 'tt-anti-token': window.localStorage.getItem('tt-anti-token') || '',\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n body: serializeObject(params),\n })\n .then((res) => {\n const { digg_count } = res.data\n if (digg_count === 1) {\n return Promise.resolve()\n } else {\n return Promise.reject('点赞失败')\n }\n })\n .catch((err) => {\n console.log(err)\n return Promise.reject('点赞失败')\n })\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return Object.keys(obj).map(function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (Array.isArray(obj[k])) {\n return obj[k].map(function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n","import * as React from 'react'\nimport classnames from 'classnames'\n\ninterface Props {\n /**\n * primary: 黄色底部,常用语询底价\n * default: 带边框\n * highlight: 带边框,颜色为橘色\n */\n type?: 'primary' | 'default' | 'highlight' | 'new_primary'\n style?: React.CSSProperties\n loading?: boolean\n disabled?: boolean\n className?: string\n onClick?: React.MouseEventHandler\n}\n\nexport default class Button extends React.PureComponent {\n static defaultProps = {\n type: 'default',\n loading: false,\n disabled: false,\n }\n\n onClick = (event: React.MouseEvent) => {\n // event.preventDefault()\n // event.stopPropagation()\n const { loading, disabled, onClick } = this.props\n if (loading || disabled) {\n event.preventDefault()\n event.stopPropagation()\n return\n }\n if (typeof onClick === 'function') {\n onClick(event)\n }\n }\n\n render() {\n const { type, style, loading, disabled, children, className } = this.props\n return (\n \n {loading ? : children}\n \n \n )\n }\n}\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAMKADAAQAAAABAAAAMAAAAADbN2wMAAACN0lEQVRoBe2ZQU7DMBBFPWFZIcQRuAgnQF1SRLZAy40KdEkk2iVCHICLcASEUHfQIRPXyATHtTPjSEjOJqGO5/83444ro1S+cgZyBnIGcgaGyEBVPR0OoUMaMVpFiKn5Ynn8sV6/zu9Wk5D3Oe+QRqNVa4bE2QlA5hXiMyo8UAqrlBA6NlaNVq3ZaO+gAN84lZKyoc3rNwHgSykoZ5enS9/c2LHbxcPZBuEeEffMXFDwvj8aHZXlyZv5rH33VqCZCDDVpvVULSBbCcr8H/N1oooCZz7z5MhbAUP7U1o7O0KV4MYOAiAQrpBJhn2XiBkMIA0hYZ48RQFIQUiZ7wXAhZA0T168XYhecF26hUIZ252oVdJe8qtVMptB9BKygWKy6ezzTPPkhQVAAUIgUpkXAdgFUcAGXJuU1G7OrgAB0NVdiXrVJ9gAtarAEjKBuiDs8RS/o8QqYIy6KkFjKcxT3F5tlCZ2XbTmu8ZSfC4q5uo2tukUVRCrgNs8fMZudjZwyLMIgMv81nhJ7TIlBHsJdZlHVOfXV5MVZdH1xZZaTiyAEPNmGaSC6A3QZd63w6aA6AXAMcKZa6pp36MBJAxIxDAQUQCSwlKxggGkBE3m6C4RMwhAQsg2bj9zY+8E4ArYZrueORpegCGPFp0QIkeLhRoDqDVlT2r3dFWifVDQaNbaMkeLdEK9UY81wVT6ULcN01QC8ab+oT+eXUxe2uO9/475p0Nvke3EIbW4XvP8nIGcgZyBf56Bb9zeSD3n641kAAAAAElFTkSuQmCC\"","export const DEFAULT_VIDEO_KEYWORDS =\n '懂车帝,汽车,汽车网站,评测,视频,试驾,试乘,汽车视频,新车试驾视频,新车评测,汽车视频车评视频,帝造计划,懂车帝出品'\nexport const DEFAULT_VIDEO_DESCRIPTION =\n '懂车帝为您提供最新最全的汽车视频信息,包括汽车评测、新车试驾、热点事件评测、汽车保养、车展视频、美女车模视频、汽车碰撞视频、维修视频、漂移视频等精彩内容,看车选车买车就上懂车帝'\nexport const DEFAULT_ARTICLE_KEYWORDS =\n '最新汽车资讯,最新汽车,汽车资讯,汽车文章,文章,图文,试驾,试乘,帝造计划,懂车帝出品'\nexport const DEFAULT_ARTICLE_DESCRIPTION =\n '懂车帝是一个汽车资讯平台,懂车更懂你。它会聪明地分析你的兴趣爱好,自动为你推荐喜欢的内容,看车选车买车就上懂车帝。懂车帝为您提供最新汽车视频,汽车碰撞视频,汽车评测视频,车展视频,美女车模视频,车祸视频,维修视频,漂移视频等'\n\n// 视频播放器loading 懂车帝logo\nexport const ICON_VIDEO_PLAYER_LOADING =\n 'https://sf1-ttcdn-tos.pstatp.com/obj/motor-img/f18f575471aab5f997767e7a9292405c'\n\n// 侧边栏资讯阅读器的id\nexport const NAV_FEED_ID = 'nav-feed-reader'\n\nexport const aid = 1839\nexport const appName = 'auto_web_pc'\n","'use strict';\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.repeat` method implementation\n// https://tc39.github.io/ecma262/#sec-string.prototype.repeat\nmodule.exports = ''.repeat || function repeat(count) {\n var str = String(requireObjectCoercible(this));\n var result = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity) throw RangeError('Wrong number of repetitions');\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;\n return result;\n};\n","var classof = require('../internals/classof-raw');\n\n// `thisNumberValue` abstract operation\n// https://tc39.github.io/ecma262/#sec-thisnumbervalue\nmodule.exports = function (value) {\n if (typeof value != 'number' && classof(value) != 'Number') {\n throw TypeError('Incorrect invocation');\n }\n return +value;\n};\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAMKADAAQAAAABAAAAMAAAAADbN2wMAAACfElEQVRoBe2Zv07DMBDG7ZQNISiIvYAYKtRX4AEYkJhAsPFsMMAD8ADMbIXyX2WukAChSgylxp8SlxTFzsU5d8GWqqTJ5e77nV3buQoRW8xAzEDMQMzALDLQ6XSas4iDGFViJRRRa5vt7c/hqN/aaO9T7OvYIAZiISbFjywzgqPxSF4Ioea17bdMxNHL8+1Z2XM+9yFejcWpfrYhhBwmc2qn/3h76fLlBEBXIhtKicWckyAQrY2tAzUen6Ti02hSio+F+bm1brf7los/dapJ7W0wGHwtLa/2hRJ72soMtwTfmyur9+9vrzf2p+l30syrLPOT53SikuOHu+uryZWCEycA7CESYkNBTA+bicKsl3ulQ7UUICSEWzztd0YCCAHBIR66yACcEFziKwNwQHCK9wKoA5FOlUWzjf/aUmkIQbxpVWenonle+6q9pngDAIQKEUo8NDhXYhhQmmtc6/VP/l1htc/amTe6WADgzAaRBcr3NJt4+M47zmL5HazD6XcLAses4uGQDQDOLBC4hcYuHk7NBg3nTC1hG5YUQaw9YJltjA72XSwcswEUipdypGMo/TE9zQ5hHAPGuxWK12M+0W9veIPTjr9zzht468KslbvmfVq7B6ziG/Kw/9Q7t/yw2XqiFkCZeJPWkBDeADbx2Uv/uRFvjqEgvADSVbf6rjIERGUA25aBWm7hhqgEUFd8iOFEBuASzw1BAuAWzwlRChBKPBeEc+M129Jivi6a4lFKi86tBGqSsiF2UWjNMhZkSwzfKBhPbzvkELFdddFMU/kBFerWevsdw6ncup4FYiAWtbxOjlblTweyU4vhLGNZJMTLMQMxAzED/yUDP/tcG7+bCcI9AAAAAElFTkSuQmCC\"","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (Array.isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n","import { useContext, useEffect, useState } from 'react'\nimport fetch from 'lib/decorated-fetch'\nimport getUrl from 'lib/url'\nimport serializeObject from '@arsenal/arsenal/modules/serializeObject'\nimport { GlobalStoreContext } from 'Components/store'\n\nfunction useFetchCollected({\n id,\n collected,\n}: {\n id?: number | string\n collected?: boolean\n}) {\n const [curCollected, setCurCollected] = useState(collected)\n\n const { state } = useContext(GlobalStoreContext)\n\n const userId = state.userData?.user_id\n\n useEffect(() => {\n if (!userId) {\n return\n }\n fetch(\n getUrl(\n `/motor/pc/common/article/is_collect?${serializeObject({\n user_id: userId,\n group_id: id,\n })}`\n )\n ).then((res) => {\n if (res?.status === 0) {\n setCurCollected(res.data?.is_collect)\n }\n })\n }, [id, userId])\n\n return curCollected\n}\n\nexport default useFetchCollected\n","'use strict';\nvar $ = require('../internals/export');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar toObject = require('../internals/to-object');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('splice', { ACCESSORS: true, 0: 0, 1: 2 });\n\nvar max = Math.max;\nvar min = Math.min;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';\n\n// `Array.prototype.splice` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n splice: function splice(start, deleteCount /* , ...items */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var actualStart = toAbsoluteIndex(start, len);\n var argumentsLength = arguments.length;\n var insertCount, actualDeleteCount, A, k, from, to;\n if (argumentsLength === 0) {\n insertCount = actualDeleteCount = 0;\n } else if (argumentsLength === 1) {\n insertCount = 0;\n actualDeleteCount = len - actualStart;\n } else {\n insertCount = argumentsLength - 2;\n actualDeleteCount = min(max(toInteger(deleteCount), 0), len - actualStart);\n }\n if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {\n throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n }\n A = arraySpeciesCreate(O, actualDeleteCount);\n for (k = 0; k < actualDeleteCount; k++) {\n from = actualStart + k;\n if (from in O) createProperty(A, k, O[from]);\n }\n A.length = actualDeleteCount;\n if (insertCount < actualDeleteCount) {\n for (k = actualStart; k < len - actualDeleteCount; k++) {\n from = k + actualDeleteCount;\n to = k + insertCount;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];\n } else if (insertCount > actualDeleteCount) {\n for (k = len - actualDeleteCount; k > actualStart; k--) {\n from = k + actualDeleteCount - 1;\n to = k + insertCount - 1;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n }\n for (k = 0; k < insertCount; k++) {\n O[k + actualStart] = arguments[k + 2];\n }\n O.length = len - actualDeleteCount + insertCount;\n return A;\n }\n});\n","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\n","'use strict';\nvar $ = require('../internals/export');\nvar toInteger = require('../internals/to-integer');\nvar thisNumberValue = require('../internals/this-number-value');\nvar repeat = require('../internals/string-repeat');\nvar fails = require('../internals/fails');\n\nvar nativeToFixed = 1.0.toFixed;\nvar floor = Math.floor;\n\nvar pow = function (x, n, acc) {\n return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\n\nvar log = function (x) {\n var n = 0;\n var x2 = x;\n while (x2 >= 4096) {\n n += 12;\n x2 /= 4096;\n }\n while (x2 >= 2) {\n n += 1;\n x2 /= 2;\n } return n;\n};\n\nvar FORCED = nativeToFixed && (\n 0.00008.toFixed(3) !== '0.000' ||\n 0.9.toFixed(0) !== '1' ||\n 1.255.toFixed(2) !== '1.25' ||\n 1000000000000000128.0.toFixed(0) !== '1000000000000000128'\n) || !fails(function () {\n // V8 ~ Android 4.3-\n nativeToFixed.call({});\n});\n\n// `Number.prototype.toFixed` method\n// https://tc39.github.io/ecma262/#sec-number.prototype.tofixed\n$({ target: 'Number', proto: true, forced: FORCED }, {\n // eslint-disable-next-line max-statements\n toFixed: function toFixed(fractionDigits) {\n var number = thisNumberValue(this);\n var fractDigits = toInteger(fractionDigits);\n var data = [0, 0, 0, 0, 0, 0];\n var sign = '';\n var result = '0';\n var e, z, j, k;\n\n var multiply = function (n, c) {\n var index = -1;\n var c2 = c;\n while (++index < 6) {\n c2 += n * data[index];\n data[index] = c2 % 1e7;\n c2 = floor(c2 / 1e7);\n }\n };\n\n var divide = function (n) {\n var index = 6;\n var c = 0;\n while (--index >= 0) {\n c += data[index];\n data[index] = floor(c / n);\n c = (c % n) * 1e7;\n }\n };\n\n var dataToString = function () {\n var index = 6;\n var s = '';\n while (--index >= 0) {\n if (s !== '' || index === 0 || data[index] !== 0) {\n var t = String(data[index]);\n s = s === '' ? t : s + repeat.call('0', 7 - t.length) + t;\n }\n } return s;\n };\n\n if (fractDigits < 0 || fractDigits > 20) throw RangeError('Incorrect fraction digits');\n // eslint-disable-next-line no-self-compare\n if (number != number) return 'NaN';\n if (number <= -1e21 || number >= 1e21) return String(number);\n if (number < 0) {\n sign = '-';\n number = -number;\n }\n if (number > 1e-21) {\n e = log(number * pow(2, 69, 1)) - 69;\n z = e < 0 ? number * pow(2, -e, 1) : number / pow(2, e, 1);\n z *= 0x10000000000000;\n e = 52 - e;\n if (e > 0) {\n multiply(0, z);\n j = fractDigits;\n while (j >= 7) {\n multiply(1e7, 0);\n j -= 7;\n }\n multiply(pow(10, j, 1), 0);\n j = e - 1;\n while (j >= 23) {\n divide(1 << 23);\n j -= 23;\n }\n divide(1 << j);\n multiply(1, 1);\n divide(2);\n result = dataToString();\n } else {\n multiply(0, z);\n multiply(1 << -e, 0);\n result = dataToString() + repeat.call('0', fractDigits);\n }\n }\n if (fractDigits > 0) {\n k = result.length;\n result = sign + (k <= fractDigits\n ? '0.' + repeat.call('0', fractDigits - k) + result\n : result.slice(0, k - fractDigits) + '.' + result.slice(k - fractDigits));\n } else {\n result = sign + result;\n } return result;\n }\n});\n","import React, { useRef, useEffect } from 'react'\n\nconst createRootElement = (id: string) => {\n const container = document.createElement('div')\n container.setAttribute('id', id)\n return container\n}\n\nconst addRootElement = (rootElem: HTMLElement) => {\n document.body.appendChild(rootElem)\n}\n\nconst usePortal = (id: string) => {\n const parentElemRef = useRef(null)\n\n useEffect(() => {\n const oldElem = document.getElementById(id)\n const parentElem = oldElem || createRootElement(id)\n\n if (!oldElem) {\n addRootElement(parentElem)\n }\n\n parentElemRef.current = parentElem\n\n return () => {\n if (parentElem.childNodes.length === -1) {\n parentElem.remove()\n }\n }\n }, [])\n\n const getParentElem = () => {\n if (!parentElemRef.current) {\n parentElemRef.current = document.createElement('div')\n }\n\n return parentElemRef.current\n }\n\n return getParentElem()\n}\n\nexport default usePortal\n","import React, { ReactNode, useState } from 'react'\nimport usePortal from './usePortal'\nimport { createPortal } from 'react-dom'\nimport { Fade } from './animation'\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface IModalConfirmConfig {}\n\ninterface IResult {\n name: string\n value: string\n description?: string\n}\n\nexport interface IReportData {\n type: 'confirm' | 'cancel'\n data: IResult[]\n}\n\ninterface IProps {\n visible: boolean\n config?: IModalConfirmConfig\n onButtonClick?: (data: IReportData) => void\n}\n\n/**\n * 评论举报弹框\n */\nconst ModalReport = ({ visible, config, onButtonClick }: IProps) => {\n const target = usePortal('__modal-report')\n const reportConfig = [\n {\n name: '淫秽色情',\n value: '304',\n },\n {\n name: '营销广告',\n value: '302',\n },\n {\n name: '恶意谩骂攻击',\n value: '312',\n },\n {\n name: '我有话说',\n value: '315',\n },\n ]\n\n const [checkedValue, setCheckedValue] = useState({\n name: '淫秽色情',\n value: '304',\n })\n const [description, setDescription] = useState('')\n\n const handleConfirmClick = () => {\n onButtonClick &&\n onButtonClick({\n type: 'confirm',\n data: [\n {\n name: checkedValue.name,\n value: checkedValue.value,\n description,\n },\n ],\n })\n }\n\n const handleCancelClick = () => {\n onButtonClick &&\n onButtonClick({\n type: 'cancel',\n data: [],\n })\n }\n\n const handleResultChange = (e: any) => {\n setCheckedValue({\n name: e.currentTarget.id,\n value: e.currentTarget.value,\n })\n }\n\n const handleResultExtraChange = (e: any) => {\n setDescription(e.currentTarget.value)\n }\n\n const stopPropagation = (e: any) => {\n e.stopPropagation()\n }\n\n const render = (): ReactNode => {\n return (\n <>\n \n
\n
\n
举报此人
\n
\n {reportConfig.map((reportItem, reportIndex) => {\n return (\n \n \n \n
\n )\n })}\n
\n\n {checkedValue.value === '315' ? (\n
\n \n
\n ) : null}\n\n
\n
\n {'取消'}\n
\n
\n {'确认'}\n
\n
\n
\n \n
\n \n \n )\n }\n\n if (!visible) {\n return null\n }\n\n return createPortal(render(), target)\n}\n\nexport default ModalReport\n"],"sourceRoot":""}