{"version":3,"sources":["webpack://_N_E/../../../next-server/lib/amp.ts","webpack://_N_E/./node_modules/swiper/esm/components/autoplay/autoplay.js","webpack://_N_E/./lib/ugc-interact.ts","webpack://_N_E/./public/static/default2.png","webpack://_N_E/./public/static/icon-all@3x.png","webpack://_N_E/./node_modules/querystring/encode.js","webpack://_N_E/./node_modules/@babel/runtime/helpers/inherits.js","webpack://_N_E/../../../next-server/lib/head.tsx","webpack://_N_E/./pages-components/live/components/live-swiper.tsx","webpack://_N_E/./constants/global-styles/avatar-style.ts","webpack://_N_E/./pages-components/live/components/followees.tsx","webpack://_N_E/./pages-components/live/components/celebrity.tsx","webpack://_N_E/./pages-components/live/components/live-show.tsx","webpack://_N_E/./pages-components/live/home.tsx","webpack://_N_E/./node_modules/@babel/runtime/helpers/nonIterableSpread.js","webpack://_N_E/./public/static/icon-kol@3x.png","webpack://_N_E/./public/static/empty-pic@3x.png","webpack://_N_E/./node_modules/@babel/runtime/helpers/iterableToArray.js","webpack://_N_E/../../../next-server/lib/head-manager-context.ts","webpack://_N_E/./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","webpack://_N_E/./node_modules/@babel/runtime/helpers/getPrototypeOf.js","webpack://_N_E/./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack://_N_E/./components/footer-statement.tsx","webpack://_N_E/./node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack://_N_E/./node_modules/core-js/modules/es.array.sort.js","webpack://_N_E/./public/static/icon-local@3x.png","webpack://_N_E/../../../next-server/lib/side-effect.tsx","webpack://_N_E/./node_modules/querystring/decode.js","webpack://_N_E/./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","webpack://_N_E/./public/static/live-black.gif","webpack://_N_E/./public/static/date@3x.png","webpack://_N_E/./node_modules/swiper/esm/components/navigation/navigation.js","webpack://_N_E/./node_modules/next/head.js","webpack://_N_E/../../../next-server/lib/amp-context.ts","webpack://_N_E/./node_modules/querystring/index.js","webpack://_N_E/./public/static/error-pic@3x.jpg"],"names":["isInAmpMode","React","AmpStateContext","ampFirst","hybrid","hasQuery","_extends","Object","target","i","arguments","source","Autoplay","run","swiper","$activeSlideEl","delay","clearTimeout","nextTick","autoplayResult","start","stop","pause","speed","onVisibilityChange","document","getDocument","onTransitionEnd","e","name","params","autoplay","enabled","waitForTransition","disableOnInteraction","stopOnLastSlide","reverseDirection","create","bindModuleMethods","running","paused","on","init","beforeTransitionStart","internal","sliderFirstMove","touchEnd","destroy","focus","user_id","to_user_id","fetch","method","headers","window","localStorage","getItem","body","serializeObject","then","res","data","message","is_following","Promise","resolve","reject","catch","err","console","log","digg","group_id","action","like_type","thread_id","digg_action","getUrl","err_no","err_tips","module","exports","stringifyPrimitive","v","isFinite","obj","sep","eq","undefined","keys","map","k","ks","encodeURIComponent","Array","isArray","join","setPrototypeOf","subClass","superClass","TypeError","prototype","constructor","value","writable","configurable","defaultHead","inAmpMode","head","charSet","content","onlyReactElement","child","list","fragmentChild","fragmentList","METATYPES","reduceComponents","headElements","headElementChildren","headElement","props","tags","metaTypes","metaCategories","h","isUnique","key","len","metatype","category","categories","unique","c","Head","ampState","useContext","headManager","HeadManagerContext","reduceComponentsToState","SwiperCore","use","Navigation","default_img","require","LiveSwiper","children","setSlideIndex","imgArray","onShowSlide","onClickSlide","length","spaceBetween","navigation","nextEl","prevEl","loop","watchOverflow","simulateTouch","onSlideChangeTransitionStart","realIndex","index","src","onClick","transit","bannerData","useMemo","img_url","frameTimes","x","sendTeaCommEvent","rank","anchor_id","user_info","room_id","gid","AvatarStyle","empty_pic","error_pic","MineCard","popularity","title","cover_url","sub_tab","user_id_str","avatar","rel","href","formatNumber","user_name","Card","fans_num","subscribed","onFollow","globalState","GlobalStoreContext","state","openLogin","LoginStoreContext","avatar_class","className","avatar_styles","styles","my_user_id","get","Number","enter_method","follow","type","getMyFollowees","setMyfollowees","setFailed","setLoading","json","error","Followees","useState","failed","isLoading","tagNow","setTagNow","recfollowees","setRecfollowees","myfollowees","globalStore","userData","isLogin","success","recFollowee","find","push","reFollowee","pop","useEffect","data-type","dateImg","avatar_url","desc","status","isSubscribing","setIsSubscribing","as","timestampToWeek","timestamp","addDays","showYear","date","Date","d","getTime","getFullYear","getMonth","slice","getDate","timestampToMonth","getAllIDs","tag","a","templated_key","stringify","rank_list","getCelebrity","setInfo","ids","user_ids","id_str","Error","user_room_data_list","item","bottom_prefix","bottom_value","Celebrity","weeklyInfo","setWeeklyInfo","monthlyInfo","setMonthlyInfo","setTimestamp","weeklyDateTags","setWeeklyDateTags","monthlyDateTags","setMonthlyDateTags","fold","setFold","ref","useRef","rank_type","JSON","period_info","w","period_list","sort","b","m","fetchData","fetchCelebrityData","wi","mi","onFocus","onBlur","tabIndex","current","blur","dateTags","dateLength","renderCards","slidesPerView","slidesPerGroup","preventClicks","all_live_img","local_img","kol_img","live_black_gif","unique_id_str","share_info","image_list","share_url","user_count","url","BrandCard","brandCard","logo","brand_id","active","onClickTag","mapShownData","info","status_icon","card_content","LiveShow","liveData","brands","setBrands","brandNow","setBrandNow","shownData","setShownData","loadMoreCount","setLoadMoreCount","lastCount","setLastCount","lastMaxTime","setLastMaxTime","first","setFirst","cityName","useCityName","filterShownData","includes","behot_time","unshift","tt_from","refer","count","impression_info","page_id","motor_feed_extra_params","new_feed","feed_type","refresh_num","loadmore_num","from_page_id","live_sub_tab","max_behot_time","version_code","channel","device_platform","aid","live_brand_id","source_from","pc_city","isNaN","defaultParams","brand","Cookies","filter","bid","loading","loadMoreHandler","concat","end","getBannerData","allInfo","forEach","test","open_url","web_id","kols","ele","renderTitle","noData","loaded","style","defaultStyle","default_style","LiveBannerWrapper","slideIndex","fontSize","fontWeight","lineHeight","color","textAlign","width","LiveHome","setBannerData","setAllInfo","setLoaded","result","backgroundColor","bd","getInitialProps","_pageType","isNewVersion","req","_isNewVersion","iter","Symbol","iterator","from","arrayLikeToArray","arr","_getPrototypeOf","o","getPrototypeOf","__proto__","self","ReferenceError","Statement","year","arrayWithoutHoles","iterableToArray","unsupportedIterableToArray","nonIterableSpread","$","aFunction","toObject","fails","arrayMethodIsStrict","nativeSort","FAILS_ON_UNDEFINED","FAILS_ON_NULL","STRICT_METHOD","proto","forced","comparefn","call","this","_hasHeadManager","emitChange","Component","hasOwnProperty","prop","qs","options","regexp","split","maxKeys","kstr","vstr","replace","idx","indexOf","substr","decodeURIComponent","_typeof","assertThisInitialized","toggleEl","$el","disabled","update","_swiper$navigation","$nextEl","$prevEl","onPrevClick","onNextClick","extend","_swiper$navigation2","hideOnClick","disabledClass","hiddenClass","lockClass","toEdge","fromEdge","click","_swiper$navigation3","targetEl","isHidden","decode","parse","encode"],"mappings":"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","file":"static/chunks/518fef22eee4624ce26c79c9d923305984e363b0.2d829add669947ebcfab.js","sourcesContent":["import React from 'react'\nimport { AmpStateContext } from './amp-context'\n\nexport function isInAmpMode({\n ampFirst = false,\n hybrid = false,\n hasQuery = false,\n} = {}): boolean {\n return ampFirst || (hybrid && hasQuery)\n}\n\nexport function useAmp(): boolean {\n // Don't assign the context value to a variable to save bytes\n return isInAmpMode(React.useContext(AmpStateContext))\n}\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n/* eslint no-underscore-dangle: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport { nextTick, bindModuleMethods } from '../../utils/utils';\nvar Autoplay = {\n run: function run() {\n var swiper = this;\n var $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n var delay = swiper.params.autoplay.delay;\n\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\n\n clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.timeout = nextTick(function () {\n var autoplayResult;\n\n if (swiper.params.autoplay.reverseDirection) {\n if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.isBeginning) {\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else {\n swiper.autoplay.stop();\n }\n } else if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.isEnd) {\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else {\n swiper.autoplay.stop();\n }\n\n if (swiper.params.cssMode && swiper.autoplay.running) swiper.autoplay.run();else if (autoplayResult === false) {\n swiper.autoplay.run();\n }\n }, delay);\n },\n start: function start() {\n var swiper = this;\n if (typeof swiper.autoplay.timeout !== 'undefined') return false;\n if (swiper.autoplay.running) return false;\n swiper.autoplay.running = true;\n swiper.emit('autoplayStart');\n swiper.autoplay.run();\n return true;\n },\n stop: function stop() {\n var swiper = this;\n if (!swiper.autoplay.running) return false;\n if (typeof swiper.autoplay.timeout === 'undefined') return false;\n\n if (swiper.autoplay.timeout) {\n clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.timeout = undefined;\n }\n\n swiper.autoplay.running = false;\n swiper.emit('autoplayStop');\n return true;\n },\n pause: function pause(speed) {\n var swiper = this;\n if (!swiper.autoplay.running) return;\n if (swiper.autoplay.paused) return;\n if (swiper.autoplay.timeout) clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.paused = true;\n\n if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n swiper.autoplay.paused = false;\n swiper.autoplay.run();\n } else {\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n }\n },\n onVisibilityChange: function onVisibilityChange() {\n var swiper = this;\n var document = getDocument();\n\n if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n swiper.autoplay.pause();\n }\n\n if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n swiper.autoplay.run();\n swiper.autoplay.paused = false;\n }\n },\n onTransitionEnd: function onTransitionEnd(e) {\n var swiper = this;\n if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n if (e.target !== swiper.$wrapperEl[0]) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n swiper.autoplay.paused = false;\n\n if (!swiper.autoplay.running) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.run();\n }\n }\n};\nexport default {\n name: 'autoplay',\n params: {\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false\n }\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n autoplay: _extends({}, Autoplay, {\n running: false,\n paused: false\n })\n });\n },\n on: {\n init: function init(swiper) {\n if (swiper.params.autoplay.enabled) {\n swiper.autoplay.start();\n var document = getDocument();\n document.addEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\n }\n },\n beforeTransitionStart: function beforeTransitionStart(swiper, speed, internal) {\n if (swiper.autoplay.running) {\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.pause(speed);\n } else {\n swiper.autoplay.stop();\n }\n }\n },\n sliderFirstMove: function sliderFirstMove(swiper) {\n if (swiper.autoplay.running) {\n if (swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.pause();\n }\n }\n },\n touchEnd: function touchEnd(swiper) {\n if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.run();\n }\n },\n destroy: function destroy(swiper) {\n if (swiper.autoplay.running) {\n swiper.autoplay.stop();\n }\n\n var document = getDocument();\n document.removeEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\n }\n }\n};","import { useContext } from 'react'\nimport fetch from 'lib/decorated-fetch'\nimport serializeObject from '@arsenal/arsenal/modules/serializeObject'\nimport getUrl from 'lib/url'\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\n to_user_id: number\n}\n\ninterface DiggParams {\n user_id: number\n group_id: string\n action: 'digg' | 'cancel_digg'\n like_type?: 'digg_thread' | 'digg_ugc_video'\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 return Promise.reject('关注失败')\n }\n })\n .catch(err => {\n console.log(err)\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 }\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","module.exports = \"https://sf6-scmcdn2-tos.pstatp.com/motor/pc/_next/static/images/default2-eaaf7b50ccde96559461d1307e899aed.png\";","module.exports = \"https://sf6-scmcdn2-tos.pstatp.com/motor/pc/_next/static/images/icon-all@3x-5cdb40da32e8582fce723f5f90a9c426.png\";","// 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","var setPrototypeOf = require(\"./setPrototypeOf\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;","import React, { useContext } from 'react'\nimport Effect from './side-effect'\nimport { AmpStateContext } from './amp-context'\nimport { HeadManagerContext } from './head-manager-context'\nimport { isInAmpMode } from './amp'\n\ntype WithInAmpMode = {\n inAmpMode?: boolean\n}\n\nexport function defaultHead(inAmpMode = false): JSX.Element[] {\n const head = []\n if (!inAmpMode) {\n head.push()\n }\n return head\n}\n\nfunction onlyReactElement(\n list: Array>,\n child: React.ReactChild\n): Array> {\n // React children can be \"string\" or \"number\" in this case we ignore them for backwards compat\n if (typeof child === 'string' || typeof child === 'number') {\n return list\n }\n // Adds support for React.Fragment\n if (child.type === React.Fragment) {\n return list.concat(\n React.Children.toArray(child.props.children).reduce(\n (\n fragmentList: Array>,\n fragmentChild: React.ReactChild\n ): Array> => {\n if (\n typeof fragmentChild === 'string' ||\n typeof fragmentChild === 'number'\n ) {\n return fragmentList\n }\n return fragmentList.concat(fragmentChild)\n },\n []\n )\n )\n }\n return list.concat(child)\n}\n\nconst METATYPES = ['name', 'httpEquiv', 'charSet', 'itemProp']\n\n/*\n returns a function for filtering head child elements\n which shouldn't be duplicated, like \n Also adds support for deduplicated `key` properties\n*/\nfunction unique() {\n const keys = new Set()\n const tags = new Set()\n const metaTypes = new Set()\n const metaCategories: { [metatype: string]: Set<string> } = {}\n\n return (h: React.ReactElement<any>) => {\n let isUnique = true\n\n if (h.key && typeof h.key !== 'number' && h.key.indexOf('$') > 0) {\n const key = h.key.slice(h.key.indexOf('$') + 1)\n if (keys.has(key)) {\n isUnique = false\n } else {\n keys.add(key)\n }\n }\n\n // eslint-disable-next-line default-case\n switch (h.type) {\n case 'title':\n case 'base':\n if (tags.has(h.type)) {\n isUnique = false\n } else {\n tags.add(h.type)\n }\n break\n case 'meta':\n for (let i = 0, len = METATYPES.length; i < len; i++) {\n const metatype = METATYPES[i]\n if (!h.props.hasOwnProperty(metatype)) continue\n\n if (metatype === 'charSet') {\n if (metaTypes.has(metatype)) {\n isUnique = false\n } else {\n metaTypes.add(metatype)\n }\n } else {\n const category = h.props[metatype]\n const categories = metaCategories[metatype] || new Set()\n if (categories.has(category)) {\n isUnique = false\n } else {\n categories.add(category)\n metaCategories[metatype] = categories\n }\n }\n }\n break\n }\n\n return isUnique\n }\n}\n\n/**\n *\n * @param headElements List of multiple <Head> instances\n */\nfunction reduceComponents(\n headElements: Array<React.ReactElement<any>>,\n props: WithInAmpMode\n) {\n return headElements\n .reduce(\n (list: React.ReactChild[], headElement: React.ReactElement<any>) => {\n const headElementChildren = React.Children.toArray(\n headElement.props.children\n )\n return list.concat(headElementChildren)\n },\n []\n )\n .reduce(onlyReactElement, [])\n .reverse()\n .concat(defaultHead(props.inAmpMode))\n .filter(unique())\n .reverse()\n .map((c: React.ReactElement<any>, i: number) => {\n const key = c.key || i\n if (process.env.__NEXT_OPTIMIZE_FONTS && !props.inAmpMode) {\n if (\n c.type === 'link' &&\n c.props['href'] &&\n // TODO(prateekbh@): Replace this with const from `constants` when the tree shaking works.\n ['https://fonts.googleapis.com/css'].some((url) =>\n c.props['href'].startsWith(url)\n )\n ) {\n const newProps = { ...(c.props || {}) }\n newProps['data-href'] = newProps['href']\n newProps['href'] = undefined\n return React.cloneElement(c, newProps)\n }\n }\n return React.cloneElement(c, { key })\n })\n}\n\n/**\n * This component injects elements to `<head>` of your page.\n * To avoid duplicated `tags` in `<head>` you can use the `key` property, which will make sure every tag is only rendered once.\n */\nfunction Head({ children }: { children: React.ReactNode }) {\n const ampState = useContext(AmpStateContext)\n const headManager = useContext(HeadManagerContext)\n return (\n <Effect\n reduceComponentsToState={reduceComponents}\n headManager={headManager}\n inAmpMode={isInAmpMode(ampState)}\n >\n {children}\n </Effect>\n )\n}\n\n// TODO: Remove in the next major release\nHead.rewind = () => {}\n\nexport default Head\n","import React, { ReactNode, useEffect, useMemo, useRef, useState } from 'react'\nimport { Swiper, SwiperSlide } from 'swiper/react'\nimport SwiperCore, { Navigation, Autoplay } from 'swiper'\n\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\nimport { IBannerList } from 'Pages/home/banner'\n\nSwiperCore.use([Navigation, Autoplay])\n\nexport interface SwiperProps {\n frameTimes: number\n imgArray?: string[]\n children?: ReactNode\n setSlideIndex?: (x: number) => void\n onShowSlide?: (x: number) => void\n onClickSlide?: (x: number) => void\n}\n\nconst default_img = require('static/default2.png')\nconst LiveSwiper = (props: SwiperProps) => {\n const {\n children,\n setSlideIndex,\n imgArray = [default_img],\n onShowSlide,\n onClickSlide,\n } = props\n\n return (\n <>\n {imgArray.length > 1 ? (\n <Swiper\n spaceBetween={16}\n navigation={{\n nextEl: '.live-swiper-next',\n prevEl: '.live-swiper-prev',\n }}\n loop={imgArray.length > 1}\n watchOverflow={true}\n simulateTouch={false}\n autoplay={{ disableOnInteraction: false, delay: 3000 }}\n onSlideChangeTransitionStart={swiper => {\n setSlideIndex && setSlideIndex(swiper.realIndex)\n onShowSlide && onShowSlide(swiper.realIndex)\n }}\n >\n {imgArray.map((e, index) => (\n <SwiperSlide key={e}>\n <img\n src={e}\n className=\"banner-img\"\n onClick={e => {\n onClickSlide && onClickSlide(index)\n }}\n />\n </SwiperSlide>\n ))}\n <span className=\"swiper-nav-pre live-swiper-prev\" />\n <span className=\"swiper-nav-next live-swiper-next\" />\n </Swiper>\n ) : (\n <img\n src={imgArray[0]}\n className=\"banner-img\"\n onClick={e => {\n onClickSlide && onClickSlide(0)\n }}\n />\n )}\n\n {children}\n\n <style jsx>\n {`\n .banner-img {\n object-fit: cover;\n object-position: top;\n width: 800px;\n height: 325px;\n background-color: rgba(0, 0, 0, 0.08);\n vertical-align: bottom;\n }\n\n :global(.noshow) {\n display: none;\n }\n :global(.swiper-button-disabled) {\n display: none;\n }\n `}\n </style>\n </>\n )\n}\n\ninterface BannerData extends IBannerList {\n user_info?: {\n user_id?: string\n }\n}\n\nconst transit = (props: {\n bannerData: BannerData[]\n setSlideIndex: (x: number) => void\n}) => {\n const { bannerData, setSlideIndex } = props\n const imgArray = useMemo(() => bannerData.map(e => e.img_url), [bannerData])\n return (\n <LiveSwiper\n imgArray={imgArray}\n frameTimes={bannerData.length || 1}\n onShowSlide={(x: number) => {\n setSlideIndex(x)\n sendTeaCommEvent('show_home_live_top_banner', {\n rank: x,\n anchor_id: bannerData[x]?.user_info?.user_id || '',\n room_id: bannerData[x]?.gid,\n })\n }}\n onClickSlide={(x: number) => {\n sendTeaCommEvent('click_home_live_top_banner', {\n rank: x,\n anchor_id: bannerData[x]?.user_info?.user_id || '',\n room_id: bannerData[x]?.gid,\n })\n }}\n />\n )\n}\n\nexport default transit\n","import css from 'styled-jsx/css'\n\nconst AvatarStyle = css.resolve`\n span::before,\n span::after {\n position: absolute;\n top: 50%;\n left: 50%;\n box-sizing: content-box;\n width: 100%;\n height: 100%;\n border-radius: 50%;\n transform: translate(-50%, -50%);\n content: '';\n }\n span::before {\n z-index: 0;\n padding: 1px;\n border: 2px solid #ffcd32;\n animation: innerScale 0.4s infinite alternate;\n animation-timing-function: cubic-bezier(0.4, 0, 0.6, 1);\n }\n\n span::after {\n padding: 7.5px;\n border: solid 1.5px #ffcd32;\n animation: outerScale 0.8s infinite normal,\n outerOpacity 0.8s infinite normal;\n animation-timing-function: cubic-bezier(0.4, 0, 0.6, 1),\n cubic-bezier(0.4, 0, 0.6, 1);\n }\n\n span {\n border-radius: 50%;\n }\n @keyframes innerScale {\n 0% {\n padding: 1px;\n }\n\n 100% {\n padding: 2px;\n }\n }\n\n @keyframes outerScale {\n 0% {\n padding: 1.5px;\n }\n\n 100% {\n padding: 7.5px;\n }\n }\n\n @keyframes outerOpacity {\n 0% {\n border-color: rgba(255, 225, 0, 1);\n }\n\n 10% {\n border-color: rgba(255, 225, 0, 1);\n }\n\n 100% {\n border-color: rgba(255, 225, 0, 0);\n }\n }\n`\n\nexport default AvatarStyle\n","/* eslint-disable react/jsx-no-target-blank */\nimport React, { useState, useEffect, SyntheticEvent, useContext } from 'react'\nimport get from 'lodash/get'\nimport { focus } from 'lib/ugc-interact'\nimport { getLoginHref } from 'lib/get-login-href'\nimport { GlobalStoreContext } from 'Components/store'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\nimport formatNumber from '@arsenal/arsenal/modules/formatNumber'\nimport getUrl from 'lib/url'\nimport Loading from 'Components/loading'\nimport AvatarStyle from 'Constants/global-styles/avatar-style'\nimport fetch from 'lib/decorated-fetch'\nimport { LoginStoreContext } from 'New/login/login-store'\nimport { ILoginCommonParams } from 'New/login/context/view-context'\nexport interface FolloweeData {\n room_id: string\n popularity: number\n title: string\n create_time: number\n finish_time: number\n cover_url: string\n user_info: {\n user_id_str: string\n user_name: string\n open_url: string\n avatar: string\n }\n fans_num: number\n subscribed?: boolean\n}\n\nconst empty_pic = require('static/empty-pic@3x.png')\nconst error_pic = require('static/error-pic@3x.jpg')\n\nfunction MineCard(props: FolloweeData) {\n const { popularity = 0, title, user_info, room_id, cover_url } = props\n return (\n <div\n className=\"mine-card\"\n onClick={e => {\n sendTeaCommEvent('click_home_live_follow_live_card', {\n sub_tab: '我的关注',\n anchor_id: user_info.user_id_str,\n room_id,\n })\n }}\n >\n <a\n target=\"_blank\"\n rel=\"unsafe-url\"\n href={`https://live.ixigua.com/room/${room_id}`}\n >\n <div className=\"cover-wrapper\">\n <div className=\"live-box\">\n <span className=\"live-box-left\">直播中</span>\n <span className=\"live-box-right\">\n <span>{formatNumber(popularity)}人在看</span>\n </span>\n </div>\n </div>\n </a>\n\n <div className=\"info\">\n <span className=\"title\">\n <a\n target=\"_blank\"\n rel=\"unsafe-url\"\n href={`https://live.ixigua.com/room/${room_id}`}\n >\n {title}\n </a>\n </span>\n\n <a\n target=\"_blank\"\n rel=\"unsafe-url\"\n href={`https://live.ixigua.com/room/${room_id}`}\n >\n <span\n className=\"author-info\"\n onClick={e => {\n sendTeaCommEvent('click_home_live_follow_profile', {\n sub_tab: '我的关注',\n user_id: user_info.user_id_str,\n })\n }}\n >\n <span className=\"avatar\" />\n <span className=\"name\">{user_info.user_name}</span>\n </span>\n </a>\n </div>\n <style jsx>\n {`\n .mine-card{\n padding: 8px;\n width: 100%;\n height: 88px;\n margin-bottom: 8px;\n border-radius: 2px;\n background-color: white;\n display: flex;\n align-items: center;\n }\n\n .cover-wrapper{\n position: relative;\n width: 126px;\n height: 72px;\n border-radius: 2px;\n background-image: url(\"${cover_url}\");\n background-position : center;\n background-size: cover;\n bakcgorund-repeat: no-repeat;\n margin-right: 8px;\n flex: 0 0 auto;\n }\n\n .live-box {\n position: absolute;\n height: 24px;\n z-index: 1;\n top: 0;\n left: 0;\n }\n\n .live-box-left {\n display: inline-block;\n padding: 4px;\n height: 24px;\n border-radius: 2px 0 0 2px;\n background-color: #ffcc32;\n font-size: 10px;\n font-weight: 500;\n line-height: 1.33;\n color: #1f2129;\n }\n\n .live-box-right {\n position: relative;\n display: inline-block;\n padding: 6px 4px;\n height: 24px;\n border-radius: 0 2px 2px 0;\n\n font-size: 10px;\n font-weight: 500;\n line-height: 1;\n color: white;\n }\n .live-box-right > span {\n position: relative;\n }\n .live-box-right::before {\n left: 0;\n top: 0;\n position: absolute;\n content: '';\n width: 100%;\n height: 100%;\n background: rgba(0, 0, 0, 0.8);\n }\n\n .info{\n display: flex;\n flex-direction: column;\n justify-content: center;\n }\n .title{\n margin-bottom: 8px;\n font-size: 16px;\n font-weight: 500;\n color: #1f2129;\n }\n\n .author-info{\n display: flex;\n align-items: center;\n }\n\n .avatar{\n display: inline-block;\n width: 16px;\n height: 16px;\n border-radius: 50%;\n background-image: url(\"${user_info.avatar}\");\n background-position : center;\n background-size: cover;\n bakcgorund-repeat: no-repeat;\n background-color: rgba(0, 0, 0, 0.08);\n margin-right: 4px;\n }\n .name{\n font-size: 12px;\n line-height: 18px;\n color: #979aa8;\n }\n `}\n </style>\n </div>\n )\n}\n\nconst follow = (\n subscribed: boolean,\n user_id_str: string,\n onFollow: (x: string, b: boolean) => void,\n globalState: { userData?: { user_id?: string } },\n openLogin: (commonParams: ILoginCommonParams) => void\n) => {\n if (subscribed) return\n sendTeaCommEvent('click_home_live_follow_user', {\n sub_tab: '推荐直播间',\n user_id: user_id_str,\n })\n const my_user_id = get(globalState, 'userData.user_id')\n if (!my_user_id) {\n openLogin({\n enter_method: 'follow',\n })\n return\n }\n // 先假设关注成功\n onFollow(user_id_str, true)\n focus({\n user_id: Number(my_user_id),\n to_user_id: Number(user_id_str),\n }).catch(() => {\n // 如果失败了,重置关注状态\n onFollow(user_id_str, false)\n })\n}\n\nfunction Card(props: {\n data: FolloweeData\n onFollow: (x: string, b: boolean) => void\n}) {\n const {\n data: { fans_num = 0, title, user_info, room_id, subscribed = false },\n onFollow,\n } = props\n const { state: globalState } = useContext(GlobalStoreContext)\n const { openLogin } = useContext(LoginStoreContext)\n const { className: avatar_class, styles: avatar_styles } = AvatarStyle\n return (\n <div className=\"card\">\n <div\n className=\"avatar\"\n onClick={e => {\n sendTeaCommEvent('click_home_live_follow_profile', {\n sub_tab: '推荐直播间',\n user_id: user_info.user_id_str,\n })\n }}\n >\n <a\n target=\"_blank\"\n rel=\"unsafe-url\"\n href={`https://live.ixigua.com/room/${room_id}`}\n >\n <span className={`inner ${avatar_class}`} />\n <span className=\"label\">\n <span className=\"for-chrome\">直播中</span>\n </span>\n </a>\n </div>\n\n <span className=\"title\">\n <a\n target=\"_blank\"\n rel=\"unsafe-url\"\n href={`https://live.ixigua.com/room/${room_id}`}\n >\n {title}\n </a>\n </span>\n <span className=\"follower-num\">\n <a\n target=\"_blank\"\n rel=\"unsafe-url\"\n href={`https://live.ixigua.com/room/${room_id}`}\n >\n {formatNumber(fans_num)}粉丝\n </a>\n </span>\n\n <button\n className={`follow-btn ${subscribed ? 'followed' : ''}`}\n onClick={() => {\n follow(\n subscribed,\n user_info.user_id_str,\n onFollow,\n globalState,\n openLogin\n )\n }}\n type=\"button\"\n >\n {subscribed ? '已关注' : '关注'}\n </button>\n {avatar_styles}\n <style jsx>\n {`\n .card {\n position: relative;\n height: 64px;\n width: 100%;\n background: white;\n margin-bottom: 8px;\n }\n .avatar {\n position: relative;\n display: inline-block;\n width: 56px;\n height: 56px;\n box-sizing: border-box;\n margin: 4px 8px 4px 16px;\n }\n .inner {\n border-radius: 50%;\n position: absolute;\n top: 10px;\n left: 10px;\n height: 36px;\n width: 36px;\n background-image: url(${user_info.avatar});\n background-repeat: no-repeat;\n background-position: center;\n background-size: cover;\n }\n\n .label {\n text-align: center;\n left: 7px;\n top: 38px;\n position: absolute;\n width: 38px;\n height: 14px;\n border-radius: 2px;\n background-color: #ffcd32;\n color: #1a1a1a;\n border: solid 2px white;\n box-sizing: content-box;\n line-height: 12px;\n }\n .for-chrome {\n display: inline-block;\n -webkit-transform: scale(0.8);\n font-size: 10px;\n font-weight: 500;\n }\n .title {\n position: absolute;\n left: 80px;\n top: 12px;\n font-size: 14px;\n font-weight: 500;\n max-width: 150px;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n .follower-num {\n position: absolute;\n left: 80px;\n top: 34px;\n font-size: 12px;\n line-height: 1.5;\n color: #979aa8;\n }\n .follow-btn {\n position: absolute;\n right: 20px;\n top: 20px;\n padding: 0;\n border: 0;\n outline: 0;\n width: 80px;\n height: 24px;\n background-color: #ffcc32;\n border-radius: 2px;\n text-align: center;\n color: #1f2129;\n font-size: 14px;\n cursor: pointer;\n }\n\n .follow-btn.followed {\n background-color: #f2f4fa;\n color: #979aa8;\n cursor: auto;\n }\n `}\n </style>\n </div>\n )\n}\n\nconst getMyFollowees = (\n setMyfollowees: (data: FolloweeData[]) => void,\n setFailed: (b: boolean) => void,\n setLoading: (b: boolean) => void\n) => {\n // 获取我的关注\n setLoading(true)\n fetch(getUrl('/motor/m_api/pc_live_my_relation_list'))\n .then(json => {\n setLoading(false)\n setFailed(false)\n if (!json.data || !(Array.isArray(json.data) && json.data.length > 0)) {\n setMyfollowees([])\n } else {\n setMyfollowees(json.data)\n }\n })\n .catch(e => {\n setLoading(false)\n console.error('获取我的关注数据失败', e)\n setFailed(true)\n })\n}\n\nexport default function Followees() {\n const [failed, setFailed] = useState<boolean>(false)\n const [isLoading, setLoading] = useState<boolean>(false)\n const [tagNow, setTagNow] = useState<'mine' | 'recommend'>('mine')\n const [recfollowees, setRecfollowees] = useState<FolloweeData[]>([])\n const [myfollowees, setMyfollowees] = useState<FolloweeData[]>([])\n\n const { state: globalStore } = useContext(GlobalStoreContext)\n const { openLogin } = useContext(LoginStoreContext)\n const { userData } = globalStore\n\n const isLogin = !!(userData && userData.user_id)\n\n const onFollow = (user_id: string, success = true) => {\n if (success) {\n const recFollowee = recfollowees.find(\n e => e.user_info.user_id_str === user_id\n )\n recFollowee && (recFollowee.fans_num += 1)\n recFollowee && (recFollowee.subscribed = true)\n setRecfollowees([...recfollowees])\n\n if (!myfollowees.find(e => e.user_info.user_id_str === user_id)) {\n recFollowee && myfollowees.push(recFollowee)\n setMyfollowees([...myfollowees])\n }\n } else {\n const reFollowee = recfollowees.find(\n e => e.user_info.user_id_str === user_id\n )\n reFollowee && (reFollowee.fans_num -= 1)\n reFollowee && (reFollowee.subscribed = false)\n setRecfollowees([...recfollowees])\n\n if (myfollowees.find(e => e.user_info.user_id_str === user_id)) {\n myfollowees.pop()\n setMyfollowees([...myfollowees])\n }\n }\n }\n\n useEffect(() => {\n // 请求推荐直播间数据\n fetch(getUrl('/motor/m_api/pc_live_recommend'))\n .then(json => {\n if (!json.data || !(Array.isArray(json.data) && json.data.length > 0)) {\n setRecfollowees([])\n } else {\n setRecfollowees(json.data)\n }\n })\n .catch(e => {\n console.error('获取推荐直播间数据失败', e)\n })\n\n getMyFollowees(setMyfollowees, setFailed, setLoading)\n }, [])\n\n useEffect(() => {\n setTagNow('recommend')\n }, [recfollowees])\n\n return (\n <>\n <div className=\"tag-line\">\n {recfollowees.length !== 0 && (\n <span\n className={`recommend ${tagNow === 'recommend' ? 'active' : ''}`}\n data-type=\"recommend\"\n onClick={e => {\n sendTeaCommEvent('click_home_live_follow_tab', {\n sub_tab: '推荐直播间',\n })\n setTagNow('recommend')\n }}\n >\n 推荐直播间\n </span>\n )}\n\n <span\n className={`mine ${tagNow === 'mine' ? 'active' : ''}`}\n data-type=\"mine\"\n onClick={e => {\n sendTeaCommEvent('click_home_live_follow_tab', {\n sub_tab: '我的关注',\n })\n setTagNow('mine')\n }}\n >\n 我的关注\n </span>\n </div>\n <div className=\"card-list\">\n {tagNow === 'recommend' ? (\n recfollowees.map(e => (\n <Card data={e} key={e.room_id} onFollow={onFollow} />\n ))\n ) : failed ? (\n <div className=\"no-data failed\">\n {isLoading ? (\n <Loading />\n ) : (\n <>\n <img src={error_pic} />\n <span>网络异常,点击重试</span>\n <button\n type=\"button\"\n className=\"retry\"\n onClick={() => {\n getMyFollowees(setMyfollowees, setFailed, setLoading)\n }}\n >\n 重试\n </button>\n </>\n )}\n </div>\n ) : isLogin ? (\n myfollowees.length > 0 ? (\n myfollowees.map(e => <MineCard {...e} key={e.room_id} />)\n ) : (\n <div className=\"no-data\">\n <img src={empty_pic} />\n <span>\n 暂时没有主播在直播哦,\n <br />\n 换个时间再来吧~\n </span>\n </div>\n )\n ) : (\n <div className=\"unlogged\">\n <img src={empty_pic} />\n <span>暂无直播</span>\n <button\n type=\"button\"\n onClick={() => {\n openLogin({\n enter_method: 'other',\n })\n }}\n >\n 登录看主播\n </button>\n </div>\n )}\n </div>\n\n <style jsx>\n {`\n .tag-line {\n width: 100%;\n height: 32px;\n display: inline-flex;\n align-items: center;\n }\n .recommend,\n .mine {\n line-height: 24px;\n text-align: center;\n font-size: 18px;\n font-weight: 500;\n color: #1f2129;\n cursor: pointer;\n }\n\n .recommend {\n margin-right: 32px;\n }\n\n .active {\n font-size: 24px;\n line-height: 36px;\n }\n .card-list {\n margin-top: 16px;\n height: 341px;\n overflow-y: scroll;\n }\n .no-data {\n background-color: white;\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: stretch;\n }\n\n .no-data img {\n width: 100px;\n height: 100px;\n margin-left: auto;\n margin-right: auto;\n margin-bottom: 8px;\n }\n .no-data span {\n text-align: center;\n color: #606370;\n font-size: 14px;\n }\n\n .unlogged {\n background-color: white;\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n }\n .unlogged img {\n width: 100px;\n height: 100px;\n margin-bottom: 10px;\n }\n .unlogged span {\n color: #606370;\n font-size: 14px;\n }\n .unlogged button {\n width: 102px;\n height: 32px;\n border-radius: 2px;\n background-color: #ffcc32;\n outline: 0;\n border: 0;\n margin-top: 12px;\n cursor: pointer;\n }\n .failed {\n align-items: center;\n }\n .failed span {\n margin-bottom: 12px;\n }\n .retry {\n text-align: center;\n width: 76px;\n height: 32px;\n border-radius: 2px;\n background-color: #ffcc32;\n font-size: 14px;\n color: #1f2129;\n outline: 0;\n border: 0;\n line-height: 32px;\n cursor: pointer;\n }\n `}\n </style>\n </>\n )\n}\n","import React, { useState, useEffect, useRef, useContext } from 'react'\nimport Link from 'next/link'\nimport get from 'lodash/get'\nimport getUrl from 'lib/url'\nimport { Swiper, SwiperSlide } from 'swiper/react'\nimport SwiperCore, { Navigation } from 'swiper'\n\nSwiperCore.use([Navigation])\n\nimport { focus } from 'lib/ugc-interact'\nimport { getLoginHref } from 'lib/get-login-href'\nimport { GlobalStoreContext } from 'Components/store'\nimport Loading from 'Components/loading'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\nimport AvatarStyle from 'Constants/global-styles/avatar-style'\nimport fetch from 'lib/decorated-fetch'\nimport groupBy from 'lib/groupBy'\nimport { stringify } from 'querystring'\nimport { LoginStoreContext } from 'New/login/login-store'\nimport { ILoginCommonParams } from 'New/login/context/view-context'\nconst dateImg = require('static/date@3x.png')\nconst SWIPER_LENGTH = 6\nconst error_pic = require('static/error-pic@3x.jpg')\n\ninterface CardProps extends CelebrityInfo {\n index: number\n onFollow: (uid: string, b: boolean) => void\n}\n\nconst follow = (\n isSubscribing: boolean,\n user_id_str: string,\n onFollow: (uid: string, b: boolean) => void,\n setIsSubscribing: (x: boolean) => void,\n globalState: { userData?: { user_id?: string } },\n openLogin: (commonParams?: ILoginCommonParams) => void\n) => {\n if (isSubscribing) return\n sendTeaCommEvent('click_home_live_top_anchor_follow', {\n anchor_id: user_id_str,\n })\n const my_user_id: number = get(globalState, 'userData.user_id')\n if (!my_user_id) {\n openLogin({\n enter_method: 'follow',\n })\n return\n }\n // 先假设关注成功\n setIsSubscribing(true)\n onFollow(user_id_str, true)\n focus({\n user_id: Number(my_user_id),\n to_user_id: Number(user_id_str),\n }).catch(() => {\n // 如果失败了,重置关注状态\n setIsSubscribing(false)\n onFollow(user_id_str, false)\n })\n}\n\nfunction Card(props: CardProps) {\n const {\n user_id_str = '',\n name,\n avatar_url = '',\n is_following = false,\n desc,\n index,\n onFollow,\n status,\n room_id,\n } = props\n\n const { state: globalState } = useContext(GlobalStoreContext)\n const { openLogin } = useContext(LoginStoreContext)\n const { className: avatar_class, styles: avatar_styles } = AvatarStyle\n const [isSubscribing, setIsSubscribing] = useState(is_following)\n\n // 更新订阅信息\n useEffect(() => {\n setIsSubscribing(is_following)\n }, [is_following])\n\n return (\n <div className=\"card\">\n <div className=\"corner-index\">\n <span>{index + 1}</span>\n </div>\n <span className=\"avatar\">\n {status === 2 ? (\n <a\n // eslint-disable-next-line react/jsx-no-target-blank\n target=\"_blank\"\n href={`https://live.ixigua.com/room/${room_id}`}\n rel=\"unsafe-url\"\n >\n <span className={`inner ${status === 2 ? avatar_class : ''}`} />\n <span className=\"label\">\n <span className=\"for-chrome\">直播中</span>\n </span>\n </a>\n ) : (\n <Link\n href={`/profile?theUserId=${user_id_str}`}\n as={`/user/ugc_profile/${user_id_str}`}\n >\n <a target=\"_blank\">\n <span className=\"inner\" />\n </a>\n </Link>\n )}\n </span>\n\n <span className=\"title\">\n <Link\n href={`/profile?theUserId=${user_id_str}`}\n as={`/user/ugc_profile/${user_id_str}`}\n >\n <a target=\"_blank\">{name}</a>\n </Link>\n </span>\n <span className=\"live-index\">{desc}</span>\n <button\n className={`follow-btn ${isSubscribing ? 'followed' : ''}`}\n type=\"button\"\n onClick={() => {\n follow(\n isSubscribing,\n user_id_str,\n onFollow,\n setIsSubscribing,\n globalState,\n openLogin\n )\n }}\n >\n {isSubscribing ? '已关注' : '关注'}\n </button>\n {avatar_styles}\n <style jsx>\n {`\n .card{\n position: relative;\n height: 232px;\n width: 186px;\n background-color: white;\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n align-items: center;\n flex: 0 0 auto;\n border-radius: 2px;\n }\n\n .card:not(:nth-child(6n)){\n margin-right: calc( ( 100% - 6 * 186px ) / 5);\n }\n\n .corner-index{\n position: absolute;\n left: 0;\n top: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n text-align: center;\n min-width: 24px;\n height: 24px;\n font-family: ByteNumber;\n font-size: 18px;\n font-weight: bold;\n color: white;\n border-radius: 2.7px 0 2.7px 0;\n background-color: ${\n index === 0\n ? '#e62021'\n : index === 1\n ? '#e65800'\n : index === 2\n ? ' #f5b330'\n : '#c9cbd6'\n };\n }\n\n .avatar{\n margin-top: 20px;\n position: relative;\n height: 94px;\n width: 94px;\n flex: 0 0 auto;\n }\n\n .inner{\n border-radius: 50%;\n position: absolute;\n background-image: url('${avatar_url}');\n background-position: center;\n background-repeat: no-repeat;\n background-size: cover;\n left: 11px;\n top: 11px;\n height: 72px; \n width: 72px;\n background-color: rgba(0, 0, 0, .04);\n border: solid 1px rgba(0, 0, 0, .06);\n box-sizing: content-box;\n background-clip: content-box;\n }\n .title{\n margin-top: 16px;\n flex: 0 0 auto;\n font-size: 16px;\n color: #1f2129;\n font-weight: 500;\n cursor: pointer;\n }\n .label {\n text-align: center;\n left: 26px;\n bottom: 5px;\n position: absolute;\n width: 38px;\n height: 14px;\n border-radius: 1px;\n background-color: #ffcd32;\n color: #1a1a1a;\n border: solid 2px white;\n box-sizing: content-box;\n line-height: 12px;\n }\n .for-chrome {\n display: inline-block;\n -webkit-transform: scale(0.8);\n font-size: 10px;\n font-weight: 500;\n }\n .live-index{\n margin-top: 4px;\n flex: 0 0 auto;\n font-size: 12px;\n line-height: 1.5;\n color: #979aa8;\n }\n .follow-btn{\n margin-top: 12px;\n flex: 0 0 auto;\n outline: 0;\n border: 0;\n border-radius: 2px;\n background-color: #ffcc32;\n font-size: 14px;\n color: #1f2129;\n text-align: center;\n width: 80px;\n height: 24px;\n cursor: pointer;\n }\n\n .follow-btn.followed{\n background-color: #f2f4fa;\n color: #979aa8;\n cursor: auto;\n }\n `}\n </style>\n </div>\n )\n}\n\nexport interface CelebrityWeek {\n anchor_id: string\n desc: string\n date_week: string\n}\n\nexport interface CelebrityMonth {\n anchor_id: string\n desc: string\n date_month: string\n}\n\ninterface CelebrityInfo {\n user_id_str: string\n name: string\n avatar_url: string\n is_following: boolean\n desc: string\n status: number\n room_id: string\n}\n\nconst timestampToWeek = (timestamp: number, addDays = 6, showYear = false) => {\n try {\n const date = new Date(timestamp)\n const d = new Date(date.getTime() + addDays * 86400000)\n return `${showYear ? `${d.getFullYear()}/` : ''}${`0${d.getMonth() +\n 1}`.slice(-2)}/${`0${d.getDate()}`.slice(-2)}`\n } catch (e) {\n console.error(e)\n return ''\n }\n}\nconst timestampToMonth = (timestamp: number) => {\n const date = new Date(timestamp)\n return `${date.getFullYear()}/${`0${date.getMonth() + 1}`.slice(-2)}`\n}\n\nconst getAllIDs = async (timestamp: number, tag: 'weekly' | 'monthly') => {\n const params = {\n templated_key: tag === 'weekly' ? 'kol_rank_week' : 'kol_rank_month',\n timestamp,\n }\n try {\n const json = await fetch(`/motor/pleasure/common_rank?${stringify(params)}`)\n return json?.data?.rank_list || []\n } catch (err) {\n return []\n }\n}\n\nconst getCelebrity = async (\n tag: 'weekly' | 'monthly',\n timestamp: number,\n setInfo: (x: CelebrityInfo[]) => void\n) => {\n const ids: any[] = await getAllIDs(timestamp, tag)\n if (ids.length === 0) {\n return\n }\n const params = {\n user_ids: ids.map(e => e.id_str).join(','),\n }\n return fetch(\n getUrl(`/motor/dlive/api/get_room_by_users?${stringify(params)}`)\n ).then(json => {\n if (json.status !== 0) {\n throw new Error(`请求达人数据失败。 error status: ${json.status}\n error message: ${json.message}`)\n }\n setInfo(\n json.data.map(\n (e: {\n user_info: {\n user_id_str?: string\n name?: string\n avatar_url?: string\n }\n is_following?: boolean\n user_room_data_list: {\n status: number\n id_str: string\n }[]\n }) => {\n const {\n user_info: { user_id_str = '', name = '', avatar_url = '' },\n is_following = false,\n user_room_data_list = [],\n } = e\n const item = ids.find(({ id_str }) => id_str === user_id_str)\n const desc =\n item?.bottom_prefix && item?.bottom_value\n ? `${item?.bottom_prefix}: ${item?.bottom_value}`\n : ''\n const { status = 0, id_str: room_id = '' } =\n user_room_data_list?.[0] || {}\n return {\n user_id_str,\n name,\n avatar_url,\n is_following,\n desc,\n status,\n room_id,\n }\n }\n )\n )\n })\n}\n\nfunction Celebrity() {\n const [tagNow, setTagNow] = useState<'weekly' | 'monthly'>('monthly')\n const [weeklyInfo, setWeeklyInfo] = useState<CelebrityInfo[]>([])\n const [monthlyInfo, setMonthlyInfo] = useState<CelebrityInfo[]>([])\n const [timestamp, setTimestamp] = useState(0)\n const [weeklyDateTags, setWeeklyDateTags] = useState<number[]>([])\n const [monthlyDateTags, setMonthlyDateTags] = useState<number[]>([])\n const [isLoading, setLoading] = useState(false)\n const [failed, setFailed] = useState(false)\n const [fold, setFold] = useState(true)\n const ref = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n setTimestamp(tagNow === 'weekly' ? weeklyDateTags[0] : monthlyDateTags[0])\n }, [tagNow, weeklyDateTags, monthlyDateTags])\n\n useEffect(() => {\n const fetchData = async () => {\n const params = {\n rank_type: JSON.stringify(['kol_rank_week', 'kol_rank_month']),\n }\n try {\n const period_info =\n (await fetch(`/motor/pleasure/period_info?${stringify(params)}`))\n ?.data?.period_info || []\n const w = period_info?.[0]?.period_list?.sort(\n (a: number, b: number) => b - a\n )\n const m = period_info?.[1]?.period_list?.sort(\n (a: number, b: number) => b - a\n )\n setWeeklyDateTags(w || [])\n setMonthlyDateTags(m || [])\n } catch (err) {\n // no-op\n }\n }\n fetchData()\n }, [])\n\n const fetchCelebrityData = () => {\n const setInfo = tagNow === 'weekly' ? setWeeklyInfo : setMonthlyInfo\n setLoading(true)\n getCelebrity(tagNow, timestamp, setInfo)\n .then(() => {\n setLoading(false)\n setFailed(false)\n })\n .catch(e => {\n setLoading(false)\n setFailed(true)\n console.error(e)\n })\n }\n\n // 请求周榜达人数据 & 请求月榜达人数据\n useEffect(() => {\n if (\n (tagNow === 'weekly' && weeklyDateTags.length > 0) ||\n (tagNow === 'monthly' && monthlyDateTags.length > 0)\n ) {\n fetchCelebrityData()\n }\n }, [timestamp])\n\n // 切换标签 从头展示\n // useEffect(() => {\n // setSelectDateIndex(0)\n // if (swiper && swiper.slideTo) {\n // swiper.slideTo(0)\n // }\n // }, [tagNow])\n\n const onFollow = (user_id: string, success: boolean) => {\n const wi = weeklyInfo.find(e => e.user_id_str === user_id)\n const mi = monthlyInfo.find(e => e.user_id_str === user_id)\n if (wi) {\n wi.is_following = success\n }\n if (mi) {\n mi.is_following = success\n }\n\n setWeeklyInfo(weeklyInfo)\n setMonthlyInfo(monthlyInfo)\n }\n\n const renderCards = () => {\n const dateTags = tagNow === 'weekly' ? weeklyDateTags : monthlyDateTags\n const dateLength = tagNow === 'weekly' ? 7 : 3\n\n return (\n <>\n {dateTags.slice(0, dateLength).map((e: number, index: number) => (\n <span\n className={`period ${timestamp === e ? 'active' : ''}`}\n key={e}\n onClick={() => {\n setTimestamp(e)\n }}\n >\n {tagNow === 'weekly'\n ? `${timestampToWeek(\n Number(e) * 1000,\n 0,\n true\n )} - ${timestampToWeek(Number(e) * 1000)}`\n : timestampToMonth(Number(e) * 1000)}\n </span>\n ))}\n <style jsx>\n {`\n .period {\n padding-top: 4px;\n padding-bottom: 4px;\n text-align: center;\n font-size: 14px;\n color: #333333;\n }\n .period:hover {\n background-color: rgba(255, 205, 50, 0.24);\n }\n\n .period.active {\n background-color: #ffcd32;\n }\n `}\n </style>\n </>\n )\n }\n return (\n <div className=\"celebrity-wrapper\">\n <div className=\"first-line\">\n <h2 className=\"title\">达人主播榜</h2>\n <div\n className=\"date-picker\"\n onFocus={() => {\n setFold(false)\n }}\n onBlur={() => {\n setFold(true)\n }}\n tabIndex={0}\n ref={ref}\n >\n {tagNow === 'weekly' ? (\n <span className=\"date\">\n {timestampToWeek(timestamp * 1000, 0, true) || ''} -{' '}\n {timestampToWeek(timestamp * 1000) || ''}\n </span>\n ) : (\n <span className=\"date\">\n {timestampToMonth(timestamp * 1000) || ''}\n </span>\n )}\n\n <div\n className={`date-list ${fold ? 'fold' : ''}`}\n onClick={() => {\n if (ref.current) {\n ref.current.blur()\n }\n }}\n >\n {renderCards()}\n </div>\n </div>\n <div className=\"tag-line\">\n <span\n className={`monthly ${tagNow === 'monthly' ? 'active' : ''}`}\n data-type=\"monthly\"\n onClick={() => {\n setTagNow('monthly')\n }}\n >\n 月榜\n </span>\n <span\n className={`weekly ${tagNow === 'weekly' ? 'active' : ''}`}\n data-type=\"weekly\"\n onClick={() => {\n setTagNow('weekly')\n }}\n >\n 周榜\n </span>\n </div>\n </div>\n <div className=\"card-list\">\n {failed ? (\n <div className=\"failed\">\n {isLoading ? (\n <Loading />\n ) : (\n <>\n <img src={error_pic} />\n <span>网络异常,点击重试</span>\n <button\n type=\"button\"\n className=\"retry\"\n onClick={() => {\n fetchCelebrityData()\n }}\n >\n 重试\n </button>\n </>\n )}\n </div>\n ) : isLoading ? (\n <Loading />\n ) : (tagNow === 'monthly' && monthlyInfo.length > 1) ||\n (tagNow === 'weekly' && weeklyInfo.length > 1) ? (\n <Swiper\n spaceBetween={16}\n watchOverflow={true}\n slidesPerView={SWIPER_LENGTH}\n slidesPerGroup={SWIPER_LENGTH}\n preventClicks={false}\n navigation={{\n nextEl: '.celebrity-nav-next',\n prevEl: '.celebrity-nav-prev',\n }}\n simulateTouch={false}\n loop\n >\n {(tagNow === 'monthly' ? monthlyInfo : weeklyInfo).map(\n (e, index) => (\n <SwiperSlide key={index + (e?.user_id_str || '')}>\n <div className=\"card-wrapper\">\n <Card {...e} index={index} onFollow={onFollow} />\n </div>\n </SwiperSlide>\n )\n )}\n <span className=\"swiper-nav-pre celebrity-nav-prev\" />\n <span className=\"swiper-nav-next celebrity-nav-next\" />\n </Swiper>\n ) : (\n <div className=\"card-wrapper\">\n <Card\n {...(tagNow === 'monthly' ? monthlyInfo : weeklyInfo)[0]}\n index={0}\n onFollow={onFollow}\n />\n </div>\n )}\n </div>\n <style jsx>\n {`\n .card-wrapper {\n height: 232px;\n width: 100%;\n display: flex;\n align-items: center;\n }\n .celebrity-wrapper {\n width: 100%;\n height: 100%;\n }\n .first-line {\n width: 100%;\n height: 36px;\n display: flex;\n align-items: center;\n position: relative;\n }\n .title {\n font-size: 24px;\n font-weight: 500;\n flex: 0 0 auto;\n }\n .date-picker {\n flex: 0 0 auto;\n position: absolute;\n right: 168px;\n display: inline-flex;\n align-items: center;\n width: 200px;\n height: 32px;\n background-color: white;\n cursor: pointer;\n border-radius: 2px;\n border: solid 1px #e6e8f2;\n }\n\n .date-picker:focus {\n outline: 0;\n }\n .date-picker::before {\n content: '';\n width: 16px;\n margin-left: 8px;\n height: 16px;\n background-image: url(${dateImg});\n background-position: center;\n background-repeat: no-repeat;\n background-size: cover;\n }\n .date {\n margin-left: 16px;\n font-size: 14px;\n line-height: 20px;\n color: #1f2129;\n }\n .date-list {\n cursor: pointer;\n position: absolute;\n top: 40px;\n z-index: 2;\n width: 240px;\n background: white;\n box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.2);\n display: flex;\n flex-direction: column;\n align-items: stretch;\n justify-content: flex-start;\n white-space: nowrap;\n flex-wrap: nowrap;\n padding: 12px 0 16px 0;\n }\n .fold {\n visibility: hidden;\n }\n .tag-line {\n width: 152px;\n height: 32px;\n position: absolute;\n right: 0;\n }\n .weekly,\n .monthly {\n display: inline-block;\n width: 50%;\n height: 100%;\n line-height: 30px;\n text-align: center;\n font-size: 14px;\n font-weight: 500;\n border: solid 1px #1f2129;\n color: #1f2129;\n background-color: white;\n cursor: pointer;\n }\n .monthly {\n border-radius: 2px 0 0 2px;\n }\n .weekly {\n border-radius: 0 2px 2px 0;\n }\n .weekly.active,\n .monthly.active {\n color: white;\n background-color: #1f2129;\n }\n\n .card-list {\n position: relative;\n margin-top: 16px;\n width: 100%;\n height: 232px;\n }\n .failed {\n background-color: white;\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n }\n\n .failed img {\n width: 100px;\n height: 100px;\n margin-left: auto;\n margin-right: auto;\n margin-bottom: 8px;\n }\n .failed span {\n text-align: center;\n color: #606370;\n font-size: 14px;\n margin-bottom: 12px;\n }\n .retry {\n text-align: center;\n width: 76px;\n height: 32px;\n border-radius: 2px;\n background-color: #ffcc32;\n font-size: 14px;\n color: #1f2129;\n outline: 0;\n border: 0;\n line-height: 32px;\n cursor: pointer;\n }\n `}\n </style>\n </div>\n )\n}\n\nexport default Celebrity\n","import React, { useState, useEffect, useMemo } from 'react'\nimport Link from 'next/link'\nimport getUrl from 'lib/url'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\nimport Loading from 'Components/loading'\nimport ScrollLoader from 'Components/scroll-loader'\nimport serializeObject from '@arsenal/arsenal/modules/serializeObject'\nimport Cookies from '@arsenal/arsenal/modules/Cookies'\nimport { useCityName } from 'Components/hooks'\nimport formatNumber from '@arsenal/arsenal/modules/formatNumber'\nimport fetch from 'lib/decorated-fetch'\nconst LIVE_TYPE = 5258\nconst all_live_img = require('static/icon-all@3x.png')\nconst local_img = require('static/icon-local@3x.png')\nconst kol_img = require('static/icon-kol@3x.png')\nconst empty_pic = require('static/empty-pic@3x.png')\ninterface BrandCard {\n brand_id?: string\n name: string\n logo: string\n brand_initial?: string\n}\n\ninterface BrandProps {\n brandCard: BrandCard\n active?: boolean\n onClickTag: (bid: string) => void\n}\n\nconst live_black_gif = require('static/live-black.gif')\nexport interface LiveData {\n user_info: {\n name: string\n avatar_url: string\n user_id: string\n }\n share_info: {\n title: string\n share_url: string\n }\n user_count: number\n image_list: [{ url: string }]\n status_icon: string\n status: number\n unique_id_str: string\n card_content?: { list: [IBannerList] }\n type: number\n popularity_display?: string\n behot_time?: number\n}\n\nexport interface IBannerList {\n open_url: string\n img_url: string\n title: string\n gid: string\n user_info?: {\n user_id: string\n }\n}\n\ninterface CardProps extends LiveData {\n onClick: (uid: string, rid: string) => void\n}\n\nfunction Card(props: CardProps) {\n const {\n unique_id_str,\n status: type,\n share_info: { title, share_url },\n image_list,\n user_info: { name, avatar_url, user_id },\n user_count,\n onClick,\n } = props\n const url = image_list[0]?.url || ''\n return (\n <div\n className=\"card\"\n onClick={e => {\n onClick(user_id, unique_id_str)\n }}\n >\n <a\n // eslint-disable-next-line react/jsx-no-target-blank\n target=\"_blank\"\n rel=\"unsafe-url\"\n href={`https://live.ixigua.com/room/${unique_id_str}`}\n >\n <div className=\"show-main\">\n <div className=\"live-box\">\n <span className=\"live-box-left\">\n {type === 2 && (\n <img src={live_black_gif} className=\"living-gif\" />\n )}\n {type === 2 ? '直播中' : '直播预告'}{' '}\n </span>\n <span className=\"live-box-right\">\n <span>{formatNumber(user_count)}人在观看</span>\n </span>\n </div>\n </div>\n </a>\n\n <div className=\"show-bottom\">\n <span className=\"title\">\n <a\n // eslint-disable-next-line react/jsx-no-target-blank\n target=\"_blank\"\n rel=\"unsafe-url\"\n href={`https://live.ixigua.com/room/${unique_id_str}`}\n >\n {title}\n </a>\n </span>\n <Link\n href={`/profile?theUserId=${user_id}`}\n as={`/user/ugc_profile/${user_id}`}\n >\n <a target=\"_blank\">\n <span className=\"avatar\" />\n <span className=\"author\">{name}</span>\n </a>\n </Link>\n </div>\n\n <style jsx>\n {`\n .card {\n width: 388px;\n height: 100%;\n flex: 0 0 auto;\n margin-bottom: 16px;\n border-radius: 2px;\n overflow: hidden;\n }\n .card:not(:nth-child(3n)) {\n margin-right: 16px;\n }\n .show-main {\n width: 100%;\n height: 218px;\n position: relative;\n background-image: url('${url}');\n background-size: cover;\n background-repeat: no-repeat;\n background-position: center;\n }\n\n .living-gif {\n width: 16px;\n height: 16px;\n object-fit: cover;\n object-position: center;\n }\n\n .live-box {\n position: absolute;\n height: 24px;\n z-index: 1;\n display: flex;\n align-items: center;\n bottom: 12px;\n left: 12px;\n }\n\n .live-box-left {\n display: inline-flex;\n align-items: center;\n padding: 4px;\n height: 24px;\n border-radius: 2px 0 0 2px;\n background-color: #ffcc32;\n font-size: 12px;\n font-weight: 500;\n line-height: 1.33;\n color: #1f2129;\n }\n\n .live-box-right {\n position: relative;\n display: inline-block;\n padding: 6px 8px;\n height: 24px;\n border-radius: 0 2px 2px 0;\n\n font-size: 12px;\n font-weight: 500;\n line-height: 1;\n color: white;\n }\n .live-box-right > span {\n position: relative;\n }\n .live-box-right::before {\n left: 0;\n top: 0;\n position: absolute;\n content: '';\n width: 100%;\n height: 100%;\n background: rgba(0, 0, 0, 0.8);\n }\n .show-bottom {\n width: 100%;\n height: 72px;\n position: relative;\n border-radius: 2px;\n background-color: white;\n }\n .avatar {\n position: absolute;\n bottom: 12px;\n left: 12px;\n width: 16px;\n height: 16px;\n background-color: rgba(255, 255, 255, 0.08);\n background-image: url('${avatar_url}');\n background-size: cover;\n background-repeat: no-repeat;\n background-position: center;\n border-radius: 50%;\n }\n .author {\n position: absolute;\n bottom: 10px;\n left: 32px;\n font-size: 12px;\n line-height: 1.5;\n color: #979aa8;\n }\n .title {\n position: absolute;\n top: 12px;\n left: 12px;\n font-size: 14px;\n font-weight: 500;\n line-height: 20px;\n color: #1f2129;\n }\n `}\n </style>\n </div>\n )\n}\n\nfunction BrandCard(props: BrandProps) {\n const {\n brandCard: { logo, name, brand_id = '' },\n active,\n onClickTag,\n } = props\n return (\n <div\n className={`brand-card ${active ? 'active' : ''}`}\n onClick={e => {\n sendTeaCommEvent('click_home_live_living_select_tab', {\n sub_tab: brand_id,\n })\n onClickTag(brand_id)\n }}\n >\n <span className=\"brand-logo\" />\n <span className=\"brand-name\">{name}</span>\n\n <style jsx>\n {`\n .brand-card {\n width: 78px;\n height: 80px;\n display: inline-flex;\n flex-direction: column;\n justify-content: flex-start;\n align-items: center;\n background-color: white;\n border-radius: 2px;\n margin-bottom: 6px;\n box-sizing: border-box;\n cursor: pointer;\n }\n\n .brand-card:hover {\n background-color: rgba(255, 205, 50, 0.24);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n }\n\n .brand-card:not(:nth-child(14n)) {\n margin-right: calc((1196px - 1092px) / 13);\n }\n\n .brand-card.active {\n box-sizing: border-box;\n border-bottom: solid 4px #ffcd32;\n }\n\n .brand-logo {\n width: 36px;\n height: 36px;\n background-image: url('${logo}');\n background-position: center;\n background-repeat: no-repeat;\n background-size: cover;\n margin: 8px auto 2px;\n }\n\n .brand-name {\n font-size: 14px;\n line-height: 22px;\n color: #1f2129;\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n padding: 0 4px;\n width: 100%;\n text-align: center;\n }\n `}\n </style>\n </div>\n )\n}\n\ninterface RawLiveData {\n info: {\n user_info?: {} | undefined\n share_info?: {\n title: string\n share_url: string\n }\n status_icon: string\n image_list?: { url: string }[]\n status: number\n user_count?: 0\n card_content?: {}\n }\n unique_id_str: string\n type: number\n}\n\nexport const mapShownData = (e: RawLiveData) => {\n const {\n user_info = {},\n share_info = { title: '', share_url: '' },\n status_icon,\n image_list = [],\n status,\n user_count = 0,\n card_content = {},\n } = e.info\n return {\n user_count,\n user_info,\n share_info,\n image_list,\n status_icon,\n status,\n unique_id_str: e.unique_id_str,\n type: e.type,\n card_content,\n }\n}\n\nexport default function LiveShow({ liveData }: { liveData: LiveData[] }) {\n const [brands, setBrands] = useState<BrandCard[]>([])\n const [brandNow, setBrandNow] = useState('all')\n const [shownData, setShownData] = useState<LiveData[]>([])\n const [isLoading, setLoading] = useState<boolean>(false)\n const [loadMoreCount, setLoadMoreCount] = useState(1)\n const [lastCount, setLastCount] = useState(0)\n const [lastMaxTime, setLastMaxTime] = useState(0)\n const [first, setFirst] = useState(true)\n const cityName = useCityName()\n const filterShownData = (e: RawLiveData) => {\n return !shownData.map(e => e.unique_id_str).includes(e.unique_id_str)\n }\n useEffect(() => {\n setShownData(liveData)\n setLastMaxTime(liveData[liveData.length - 1]?.behot_time || lastMaxTime)\n setFirst(false)\n }, [liveData])\n\n // 请求正在直播的品牌标签\n useEffect(() => {\n const url = `motor/pleasure/epidemic/get_live_tabs?device_id=undefined`\n fetch(getUrl(url))\n .then(json => {\n const { brands } = json.data\n brands.unshift({ brand_id: 'bigv', name: '大咖直播', logo: kol_img })\n brands.unshift({ brand_id: 'local', name: '本地直播', logo: local_img })\n brands.unshift({\n brand_id: 'all',\n name: '全部直播',\n logo: all_live_img,\n })\n\n setBrands(json.data.brands)\n })\n .catch(error => {\n console.error(error)\n })\n }, [])\n\n const status = useMemo(() => {\n let params\n switch (brandNow) {\n case 'all':\n params = {\n tt_from: 'pull',\n category: 'motor_car_live',\n refer: 1,\n count: 12,\n impression_info: {\n page_id: 'page_category',\n sub_tab: 'motor_car_live',\n },\n motor_feed_extra_params: {\n new_feed: true,\n feed_type: 3,\n refresh_num: 0,\n loadmore_num: 0,\n from_page_id: 'page_category',\n live_sub_tab: 'all',\n },\n max_behot_time: 0,\n version_code: 600,\n channel: 'web',\n device_platform: 'web',\n aid: 1839,\n source: 'pc',\n }\n break\n case 'local':\n params = {\n tt_from: 'pull',\n category: 'motor_car_live_complex',\n refer: 1,\n count: 12,\n impression_info: {\n page_id: 'page_category',\n sub_tab: 'motor_car_live_complex',\n },\n motor_feed_extra_params: {\n new_feed: true,\n feed_type: 0,\n refresh_num: 23,\n loadmore_num: 0,\n from_page_id: 'page_category',\n live_sub_tab: 'local',\n live_brand_id: 61,\n source_from: 'pc',\n pc_city: cityName,\n },\n channel: 'web',\n device_platform: 'web',\n aid: 1839,\n source: 'pc',\n }\n break\n case 'bigv':\n params = {\n tt_from: 'pull',\n category: 'motor_car_live_complex',\n refer: 1,\n count: 12,\n impression_info: {\n page_id: 'page_category',\n sub_tab: 'motor_car_live_complex',\n },\n motor_feed_extra_params: {\n new_feed: true,\n feed_type: 3,\n refresh_num: 1,\n loadmore_num: 0,\n from_page_id: 'page_category',\n live_sub_tab: 'kol',\n },\n channel: 'web',\n device_platform: 'web',\n aid: 1839,\n source: 'pc',\n }\n break\n }\n if (!params && !Number.isNaN(Number(brandNow))) {\n params = {\n tt_from: 'pull',\n category: 'motor_car_live_complex',\n refer: 1,\n count: 12,\n impression_info: {\n page_id: 'page_category',\n sub_tab: 'motor_car_live_complex',\n },\n motor_feed_extra_params: {\n new_feed: true,\n feed_type: 3,\n refresh_num: 4,\n loadmore_num: 0,\n from_page_id: 'page_category',\n live_sub_tab: 'brand',\n live_brand_id: Number(brandNow),\n },\n channel: 'web',\n device_platform: 'web',\n aid: 1839,\n source: 'pc',\n }\n }\n params = params || {}\n return {\n defaultParams: params,\n brand: brandNow,\n }\n }, [brandNow, cityName])\n\n // 获取正在展示的直播数据\n useEffect(() => {\n if (first) {\n return\n }\n const { defaultParams, brand } = status\n setLoading(true)\n fetch(\n getUrl(\n `/motor/stream_entrance/get_feed/v46/?${serializeObject({\n ...defaultParams,\n user_id: Cookies('tt_webid') || '',\n })}`\n )\n )\n .then(json => {\n if (!json.data || !(Array.isArray(json.data) && json.data.length > 0)) {\n setShownData([])\n setLoading(false)\n return\n }\n if (brand === 'all') {\n setLastMaxTime(\n json.data?.[json.data?.length - 1]?.info?.behot_time || lastMaxTime\n )\n setShownData(\n json.data\n .map(mapShownData)\n .filter((e: { type: number }) => e.type === LIVE_TYPE)\n )\n } else {\n setLastCount(json.data?.length || lastCount)\n setShownData(json.data.map(mapShownData))\n }\n setLoading(false)\n })\n .catch(e => {\n setLoading(false)\n })\n setLoadMoreCount(1)\n }, [status, first])\n\n /* 懒加载 */\n function loadMoreHandler() {\n setLoading(true)\n if (brandNow === 'all') {\n const defaultParams = {\n tt_from: 'pre_load_more',\n category: 'motor_car_live',\n refer: 1,\n count: 9,\n impression_info: {\n page_id: 'page_category',\n sub_tab: 'motor_car_live',\n },\n motor_feed_extra_params: {\n new_feed: true,\n feed_type: 3,\n refresh_num: 2,\n loadmore_num: loadMoreCount,\n from_page_id: 'page_category',\n live_sub_tab: 'all',\n },\n max_behot_time: lastMaxTime,\n channel: 'web',\n device_platform: 'web',\n aid: 1839,\n user_id: Cookies('tt_webid') || '',\n source: 'pc',\n }\n fetch(\n getUrl(\n `/motor/stream_entrance/get_feed/v46/?${serializeObject(\n defaultParams\n )}`\n )\n )\n .then(json => {\n setLoadMoreCount(loadMoreCount + 1)\n setLastMaxTime(\n json.data?.[json.data?.length - 1]?.info?.behot_time || lastMaxTime\n )\n setShownData(\n shownData.concat(\n json.data\n .filter(filterShownData)\n .map(mapShownData)\n .filter((e: { type: number }) => e.type === LIVE_TYPE)\n )\n )\n setLoading(false)\n })\n .catch(e => {\n setLoading(false)\n })\n } else if (brandNow === 'local') {\n const defaultParams = {\n tt_from: 'pre_load_more',\n category: 'motor_car_live_complex',\n refer: 1,\n count: 12,\n impression_info: {\n page_id: 'page_category',\n sub_tab: 'motor_car_live_complex',\n },\n motor_feed_extra_params: {\n new_feed: true,\n feed_type: 3,\n refresh_num: 7,\n loadmore_num: loadMoreCount,\n from_page_id: 'page_category',\n live_sub_tab: 'local',\n live_brand_id: 12,\n source_from: 'pc',\n pc_city: cityName,\n },\n max_behot_time: lastCount,\n channel: 'web',\n device_platform: 'web',\n aid: 1839,\n user_id: Cookies('tt_webid') || '',\n source: 'pc',\n }\n fetch(\n getUrl(\n `/motor/stream_entrance/get_feed/v46/?${serializeObject(\n defaultParams\n )}`\n )\n )\n .then(json => {\n setLoadMoreCount(loadMoreCount + 1)\n setLastCount(lastCount + (json.data?.length || 0))\n setShownData(\n shownData.concat(\n json.data.filter(filterShownData).map(mapShownData)\n )\n )\n setLoading(false)\n })\n .catch(e => {\n setLoading(false)\n })\n } else if (brandNow === 'bigv') {\n const defaultParams = {\n tt_from: 'pre_load_more',\n category: 'motor_car_live_complex',\n refer: 1,\n count: 9,\n impression_info: {\n page_id: 'page_category',\n sub_tab: 'motor_car_live_complex',\n },\n motor_feed_extra_params: {\n new_feed: true,\n feed_type: 3,\n refresh_num: 1,\n loadmore_num: loadMoreCount,\n from_page_id: 'page_category',\n live_sub_tab: 'kol',\n },\n max_behot_time: lastCount,\n channel: 'web',\n device_platform: 'web',\n aid: 1839,\n user_id: Cookies('tt_webid') || '',\n source: 'pc',\n }\n fetch(\n getUrl(\n `/motor/stream_entrance/get_feed/v46/?${serializeObject(\n defaultParams\n )}`\n )\n )\n .then(json => {\n setLastCount(lastCount + (json.data?.length || 0))\n setLoadMoreCount(loadMoreCount + 1)\n setShownData(\n shownData.concat(\n json.data.filter(filterShownData).map(mapShownData)\n )\n )\n setLoading(false)\n })\n .catch(e => {\n setLoading(false)\n })\n } else if (!Number.isNaN(Number(brandNow))) {\n const defaultParams = {\n tt_from: 'pre_load_more',\n category: 'motor_car_live_complex',\n refer: 1,\n count: 9,\n impression_info: {\n page_id: 'page_category',\n sub_tab: 'motor_car_live_complex',\n },\n motor_feed_extra_params: {\n new_feed: true,\n feed_type: 3,\n refresh_num: 5,\n loadmore_num: loadMoreCount,\n from_page_id: 'page_category',\n live_sub_tab: 'brand',\n live_brand_id: Number(brandNow),\n },\n max_behot_time: lastCount,\n channel: 'web',\n device_platform: 'web',\n aid: 1839,\n user_id: Cookies('tt_webid') || '',\n source: 'pc',\n }\n fetch(\n getUrl(\n `/motor/stream_entrance/get_feed/v46/?${serializeObject(\n defaultParams\n )}`\n )\n )\n .then(json => {\n setLoadMoreCount(loadMoreCount + 1)\n setLastCount(lastCount + (json.data?.length || 0))\n setShownData(\n shownData.concat(\n json.data.filter(filterShownData).map(mapShownData)\n )\n )\n setLoading(false)\n })\n .catch(e => {\n setLoading(false)\n })\n }\n }\n\n return (\n <div className=\"live-show-wrapper\">\n <h2 className=\"title\">正在直播</h2>\n\n <div className=\"brand-line\">\n {brands.map(e => (\n <BrandCard\n brandCard={e}\n key={e.brand_id}\n active={brandNow === e.brand_id}\n onClickTag={(bid: string) => {\n setBrandNow(bid)\n }}\n />\n ))}\n </div>\n\n <ScrollLoader\n loading={isLoading}\n loadMoreHandler={loadMoreHandler}\n end={false}\n >\n <div className=\"show-list\">\n {shownData.length !== 0 ? (\n shownData.map((e, index) => (\n <Card\n {...e}\n key={e.unique_id_str + index}\n onClick={(user_id: string, unique_id_str: string) => {\n sendTeaCommEvent('click_home_live_living_cell', {\n sub_tab: brandNow,\n anchor_id: user_id,\n room_id: unique_id_str,\n })\n }}\n />\n ))\n ) : !isLoading ? (\n <div className=\"no-data\">\n <img src={empty_pic} />\n <span>\n 当前直播已结束\n <br />\n 再去看看其他的吧~\n </span>\n </div>\n ) : null}\n </div>\n </ScrollLoader>\n {isLoading && <Loading />}\n\n <style jsx>\n {`\n .live-show-wrapper {\n width: 100%;\n height: 100%;\n }\n .title {\n font-size: 24px;\n font-weight: 500;\n line-height: 36px;\n flex: 0 0 auto;\n }\n .brand-line {\n margin-top: 14px;\n width: 100%;\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n }\n\n .show-list {\n padding-top: 18px;\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n }\n\n .no-data {\n width: 100%;\n height: 600px;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: stretch;\n }\n\n .no-data img {\n width: 240px;\n height: 240px;\n margin-left: auto;\n margin-right: auto;\n margin-bottom: 16px;\n }\n .no-data span {\n text-align: center;\n color: #333333;\n font-size: 18px;\n }\n `}\n </style>\n </div>\n )\n}\n","import React, { useState, useEffect, CSSProperties, useMemo } from 'react'\nimport LiveSwiper from './components/live-swiper'\nimport Followees from './components/followees'\nimport serializeObject from '@arsenal/arsenal/modules/serializeObject'\nimport Cookies from '@arsenal/arsenal/modules/Cookies'\nimport Footer from 'Components/footer-statement'\nimport { isNewVersion } from 'lib/version'\nimport Head from 'next/head'\n\nimport Celebrity, {\n CelebrityMonth,\n CelebrityWeek,\n} from './components/celebrity'\nimport LiveShows, {\n LiveData,\n IBannerList,\n mapShownData,\n} from './components/live-show'\nimport getUrl from 'lib/url'\nimport fetch from 'lib/decorated-fetch'\n\ninterface IBannerProps {\n bannerData: IBannerList[]\n loaded: 0 | 1 | 2\n}\n\nconst BANNER_TYPE = 5256\nconst SECOND_TYPE = 5257\nconst LIVE_TYPE = 5258\nconst LIMIT = 5\n\n// 获取banner位数据\nconst getBannerData = async (allInfo: LiveData[]) => {\n const bannerData: IBannerList[] = []\n allInfo\n .filter(e => e?.type === BANNER_TYPE)\n .forEach(e => {\n const list = e?.card_content?.list || []\n list.forEach(e => {\n if (/livechat/.test(e?.open_url || '')) {\n //const result = (e?.open_url || '').match(/room_id=(\\d+)/)\n bannerData.push({\n open_url: e?.open_url,\n img_url: e?.img_url,\n title: e?.title,\n gid: e?.gid,\n })\n }\n })\n })\n if (bannerData.length > 0) {\n return bannerData\n }\n const web_id = Cookies('tt_webid') || ''\n const defaultParams = {\n tt_from: 'pull',\n category: 'motor_car_live_complex',\n refer: 1,\n count: 12,\n impression_info: JSON.stringify({\n page_id: 'page_category',\n sub_tab: 'motor_car_live_complex',\n }),\n motor_feed_extra_params: JSON.stringify({\n new_feed: true,\n feed_type: 3,\n refresh_num: 1,\n loadmore_num: 0,\n from_page_id: 'page_category',\n live_sub_tab: 'kol',\n }),\n channel: 'web',\n device_platform: 'web',\n aid: 1839,\n user_id: web_id,\n source: 'pc',\n }\n try {\n const json = await fetch(\n getUrl(\n `/motor/stream_entrance/get_feed/v46/?${serializeObject(defaultParams)}`\n )\n )\n const kols: any[] = []\n for (let i = 0; i < (json.data?.length || 0); i++) {\n const ele = json.data[i]\n if (i > 0) {\n if (kols[0].gid !== ele.unique_id_str) {\n kols.push({\n open_url: ele?.info?.share_info?.share_url,\n img_url: ele?.info?.image_list?.[0]?.url,\n title: ele?.info?.title,\n gid: ele?.unique_id_str,\n })\n break\n }\n } else {\n kols.push({\n open_url: ele?.info?.share_info?.share_url,\n img_url: ele?.info?.image_list?.[0]?.url,\n title: ele?.info?.title,\n gid: ele?.unique_id_str,\n })\n }\n }\n return [\n ...kols,\n ...(allInfo\n ?.filter(e => e?.type === LIVE_TYPE)\n ?.slice(0, 3 - kols.length)\n ?.map(e => ({\n open_url: e?.share_info?.share_url,\n img_url: e?.image_list?.[0]?.url,\n title: e?.share_info?.title,\n gid: e?.unique_id_str,\n })) || []),\n ]\n } catch (err) {\n return (\n allInfo\n ?.filter(e => e?.type === LIVE_TYPE)\n ?.slice(0, 3)\n ?.map(e => ({\n open_url: e?.share_info?.share_url,\n img_url: e?.image_list?.[0]?.url,\n title: e?.share_info?.title,\n gid: e?.unique_id_str,\n })) || []\n )\n }\n}\n\nexport const renderTitle = (\n noData = false,\n title: string | undefined,\n loaded = 0,\n style: CSSProperties = {},\n defaultStyle: CSSProperties = {}\n) => {\n const default_style = noData ? defaultStyle : {}\n return (\n <p style={{ ...style, ...default_style }}>\n {!noData\n ? title\n : loaded === 1\n ? '本时段暂无直播,可以逛逛其他内容哦~'\n : loaded === 0\n ? '直播加载中'\n : '网络异常,建议刷新页面重试哦~'}\n </p>\n )\n}\n\nconst LiveBannerWrapper = (props: IBannerProps) => {\n const { bannerData = [], loaded = 0 } = props\n const [slideIndex, setSlideIndex] = useState(0)\n return (\n <div className=\"live-banner-wrapper\">\n <a\n // eslint-disable-next-line react/jsx-no-target-blank\n target=\"_blank\"\n href={`https://live.ixigua.com/room/${\n bannerData.length !== 0 ? bannerData[slideIndex].gid : ''\n }`}\n >\n <LiveSwiper bannerData={bannerData} setSlideIndex={setSlideIndex} />\n </a>\n\n <div className=\"banner-bottom\">\n {renderTitle(\n bannerData.length === 0,\n bannerData[slideIndex]?.title,\n loaded,\n {\n fontSize: '18px',\n fontWeight: 500,\n lineHeight: '24px',\n },\n {\n color: '#979aa8',\n textAlign: 'center',\n fontSize: '16px',\n width: '100%',\n }\n )}\n {bannerData.length !== 0 && (\n <a\n // eslint-disable-next-line react/jsx-no-target-blank\n target=\"_blank\"\n href={`https://live.ixigua.com/room/${bannerData.length !== 0 &&\n bannerData[slideIndex].gid}`}\n >\n <button className=\"enter-live-btn\" type=\"button\">\n 进入直播间\n </button>\n </a>\n )}\n </div>\n\n <style jsx>\n {`\n .live-banner-wrapper {\n position: relative;\n display: inline-block;\n width: 800px;\n height: 389px;\n border-radius: 2px;\n vertical-align: top;\n overflow: hidden;\n }\n\n .banner-bottom {\n position: absolute;\n z-index: 2;\n bottom: 0;\n display: inline-block;\n height: 64px;\n width: 100%;\n color: white;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding-left: 24px;\n padding-right: 24px;\n background-color: #1f2129;\n }\n .enter-live-btn {\n position: absolute;\n padding: 0 24px;\n right: 20px;\n top: 20px;\n border: 0;\n outline: 0;\n height: 32px;\n background-color: #ffcd32;\n border-radius: 2px;\n text-align: center;\n color: #1f2129;\n font-size: 16px;\n font-weight: bold;\n cursor: pointer;\n }\n `}\n </style>\n </div>\n )\n}\n\nfunction LiveHome() {\n const [bannerData, setBannerData] = useState<IBannerList[]>([])\n const [allInfo, setAllInfo] = useState<LiveData[]>([])\n const [loaded, setLoaded] = useState<0 | 1 | 2>(0) // 0未加载 1已加载 2加载失败\n useEffect(() => {\n const web_id = Cookies('tt_webid') || ''\n const defaultParams = {\n tt_from: 'pull',\n category: 'motor_car_live',\n refer: 1,\n count: 14,\n impression_info: JSON.stringify({\n page_id: 'page_category',\n sub_tab: 'motor_car_live',\n }),\n motor_feed_extra_params: JSON.stringify({\n new_feed: true,\n feed_type: 3,\n refresh_num: 0,\n loadmore_num: 0,\n from_page_id: 'page_category',\n live_sub_tab: 'all',\n }),\n max_behot_time: 0,\n version_code: 600,\n channel: 'web',\n device_platform: 'web',\n aid: 1839,\n user_id: web_id,\n source: 'pc',\n }\n\n fetch(\n getUrl(\n `/motor/stream_entrance/get_feed/v46/?${serializeObject(defaultParams)}`\n )\n )\n .then(json => {\n const result = json.data?.map(mapShownData) || []\n setAllInfo(result)\n setLoaded(1)\n })\n .catch(e => {\n setLoaded(2)\n console.error('初次加载全部直播失败', e)\n })\n }, [])\n\n // 当依赖变化时,更新banner位数据\n useEffect(() => {\n getBannerData(allInfo).then(setBannerData)\n }, [allInfo])\n\n // 切换直播主页背景色\n useEffect(() => {\n const color = document.body.style.backgroundColor\n document.body.style.backgroundColor = '#f7f8fc'\n return () => {\n document.body.style.backgroundColor = color\n }\n }, [])\n\n // 通过useMemo传入数据 避免浏览器页面切换时 触发组件重渲染 prop diff为true\n const liveData = useMemo(\n () =>\n allInfo.filter(\n e =>\n !bannerData?.find(bd => bd.gid === e.unique_id_str) &&\n e.type === LIVE_TYPE\n ),\n [allInfo, bannerData]\n )\n\n return (\n <div className=\"live-home\">\n <Head>\n <link rel=\"canonical\" href=\"https://www.dongchedi.com/live\" />\n </Head>\n <LiveBannerWrapper bannerData={bannerData} loaded={loaded} />\n <div className=\"followees-wrapper\">\n <Followees />\n </div>\n <div className=\"live-celebrity\">\n <Celebrity />\n </div>\n <div className=\"live-shows\">\n <LiveShows liveData={liveData} />\n </div>\n <div className=\"copyright\">\n <Footer />\n </div>\n\n <style jsx>\n {`\n .live-home {\n width: 1196px;\n margin: 16px auto 0;\n box-sizing: content-box;\n }\n\n .followees-wrapper {\n margin-left: 16px;\n display: inline-block;\n width: 380px;\n height: 389px;\n }\n .live-celebrity {\n padding-top: 42px;\n width: 100%;\n height: 284px;\n box-sizing: content-box;\n }\n .live-shows {\n padding-top: 40px;\n width: 100%;\n }\n\n .copyright {\n text-align: center;\n margin-top: 120px;\n margin-bottom: 40px;\n font-size: 12px;\n line-height: 20px;\n color: #606370;\n }\n `}\n </style>\n </div>\n )\n}\n\nLiveHome.getInitialProps = async (props: any) => {\n return {\n _pageType: isNewVersion(props?.req?._isNewVersion) ? 'full auto-nav' : '',\n }\n}\nexport default LiveHome\n","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableSpread;","module.exports = \"https://sf6-scmcdn2-tos.pstatp.com/motor/pc/_next/static/images/icon-kol@3x-1555a5cca3942e99a13452d66cd92d3c.png\";","module.exports = \"https://sf6-scmcdn2-tos.pstatp.com/motor/pc/_next/static/images/empty-pic@3x-86c44b3d900009bb58749fabe418c787.png\";","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;","import React from 'react'\n\nexport const HeadManagerContext: React.Context<{\n updateHead?: (state: any) => void\n mountedInstances?: any\n}> = React.createContext({})\n\nif (process.env.NODE_ENV !== 'production') {\n HeadManagerContext.displayName = 'HeadManagerContext'\n}\n","var arrayLikeToArray = require(\"./arrayLikeToArray\");\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;","/* 声明文件 */\nimport React from 'react'\nimport { isNewVersion } from 'lib/version'\nexport default function Statement({ className }: { className?: string }) {\n const year = new Date().getFullYear()\n return (\n <div className={`statement ${className}`}>\n <div className=\"content\">\n <p>\n © {year} 懂车帝 www.dongchedi.com{' '}\n <a\n href=\"http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=11010802026035\"\n target=\"_blank\"\n rel=\"nofollow\"\n >\n 京公网安备 11010802026035号{' '}\n </a>\n <a href=\"https://beian.miit.gov.cn/\" target=\"_blank\" rel=\"nofollow\">\n 京ICP备17027026号-3{' '}\n </a>\n <a\n href=\"http://sf1-ttcdn-tos.pstatp.com/obj/ttfe/motor/pc/ICP.pdf\"\n target=\"_blank\"\n rel=\"nofollow\"\n >\n 增值电信业务经营许可证(京B2-20180202)\n </a>\n <a\n href=\"http://sf1-ttcdn-tos.pstatp.com/obj/ttfe/motor/pc/radio-tv-License.pdf\"\n target=\"_blank\"\n rel=\"nofollow\"\n >\n 广播电视节目制作经营许可证\n </a>\n </p>\n <p>\n 公司名称:北京空间变换科技有限公司{' '}\n <a href=\"http://www.12377.cn/\" target=\"_blank\" rel=\"nofollow\">\n 中央网信办违法和不良信息举报中心{' '}\n </a>\n 违法和不良信息举报电话:400-140-2108\n </p>\n <p>\n <a\n href=\"http://www.dongchediapp.com/cloud/page/agreement.html\"\n target=\"_blank\"\n rel=\"nofollow\"\n >\n 懂车帝用户协议\n </a>{' '}\n |{' '}\n <a\n href=\"http://www.dongchediapp.com/cloud/page/privacy.html\"\n target=\"_blank\"\n rel=\"nofollow\"\n >\n 懂车帝隐私政策\n </a>{' '}\n |{' '}\n <a\n href=\"http://sf1-ttcdn-tos.pstatp.com/obj/ttfe/motor/pc/business-License.pdf\"\n target=\"_blank\"\n rel=\"nofollow\"\n >\n 营业执照\n </a>\n </p>\n <p>\n {/* <a\n className=\"strong\"\n href=\"https://www.toutiao.com/complain/\"\n target=\"_blank\"\n rel=\"nofollow\"\n >\n 侵权投诉\n </a>{' '}\n |{' '}\n <span\n className=\"strong\"\n onClick={() => {\n if (isNewVersion()) {\n PubSub.publish('OPEN_FEEDBACK')\n } else if ('dpFeedback' in window) {\n window.dpFeedback.start()\n }\n }}\n >\n 我要反馈\n </span> */}\n </p>\n </div>\n <style jsx>\n {`\n .content {\n width: 948px;\n line-height: 20px;\n margin: 0 auto;\n padding: 20px 0;\n font-size: 12px;\n color: #666;\n }\n p {\n text-align: center;\n }\n a:hover,\n span:hover {\n cursor: pointer;\n color: #406599;\n }\n a.strong {\n font-weight: bold;\n }\n span.strong {\n font-weight: bold;\n }\n `}\n </style>\n </div>\n )\n}\n","var arrayWithoutHoles = require(\"./arrayWithoutHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;","'use strict';\nvar $ = require('../internals/export');\nvar aFunction = require('../internals/a-function');\nvar toObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar test = [];\nvar nativeSort = test.sort;\n\n// IE8-\nvar FAILS_ON_UNDEFINED = fails(function () {\n test.sort(undefined);\n});\n// V8 bug\nvar FAILS_ON_NULL = fails(function () {\n test.sort(null);\n});\n// Old WebKit\nvar STRICT_METHOD = arrayMethodIsStrict('sort');\n\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD;\n\n// `Array.prototype.sort` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.sort\n$({ target: 'Array', proto: true, forced: FORCED }, {\n sort: function sort(comparefn) {\n return comparefn === undefined\n ? nativeSort.call(toObject(this))\n : nativeSort.call(toObject(this), aFunction(comparefn));\n }\n});\n","module.exports = \"https://sf6-scmcdn2-tos.pstatp.com/motor/pc/_next/static/images/icon-local@3x-d4cbc092f9df8cfaee142b00a0130bed.png\";","import React, { Component } from 'react'\n\nconst isServer = typeof window === 'undefined'\n\ntype State = JSX.Element[] | undefined\n\ntype SideEffectProps = {\n reduceComponentsToState: <T>(\n components: Array<React.ReactElement<any>>,\n props: T\n ) => State\n handleStateChange?: (state: State) => void\n headManager: any\n inAmpMode?: boolean\n}\n\nexport default class extends Component<SideEffectProps> {\n private _hasHeadManager: boolean\n\n emitChange = (): void => {\n if (this._hasHeadManager) {\n this.props.headManager.updateHead(\n this.props.reduceComponentsToState(\n [...this.props.headManager.mountedInstances],\n this.props\n )\n )\n }\n }\n\n constructor(props: any) {\n super(props)\n this._hasHeadManager =\n this.props.headManager && this.props.headManager.mountedInstances\n\n if (isServer && this._hasHeadManager) {\n this.props.headManager.mountedInstances.add(this)\n this.emitChange()\n }\n }\n componentDidMount() {\n if (this._hasHeadManager) {\n this.props.headManager.mountedInstances.add(this)\n }\n this.emitChange()\n }\n componentDidUpdate() {\n this.emitChange()\n }\n componentWillUnmount() {\n if (this._hasHeadManager) {\n this.props.headManager.mountedInstances.delete(this)\n }\n this.emitChange()\n }\n\n render() {\n return null\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\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","var _typeof = require(\"@babel/runtime/helpers/typeof\");\n\nvar assertThisInitialized = require(\"./assertThisInitialized\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;","module.exports = \"https://sf6-scmcdn2-tos.pstatp.com/motor/pc/_next/static/images/live-black-469c982b821b7124bbe7766b509cefb5.gif\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAMKADAAQAAAABAAAAMAAAAADbN2wMAAACp0lEQVRoBe1ZvW7bMBAmbTdw0Rco4C4tkLpO0NaAbGfp2qBzhj5Mt0xd+xgFsgdFunZxbANekvRn6FAEyNilQGDLvhzVECEpSieKkQQDEiDwSN733R15J8sUY/VVr4DXCvC86NnsZy+E8CPiocVbH4Lg+YULly9e2mpJwbUNYfWZAXslcCFbPcPmtQuHL17aakjBuQWInBc43MaXpeNvDeYPQPEYAHKnoqDxwccM3+Umf6L4GBcBAm2Q85nWpzrOePhjq7VYDdzlJlAu6POmQ/os3aPxga3W4imk5DZttVwNW63FAyjXJydrtlqJpZDJ2GrwgTkm+uEapup4kp6qo8pZ8aaeyiFkMoAg6FmLczw517iS9DQlpZMVb+opFJGYO4U4Z38lmSrLMapVMapM4cx5nwAOOefr/zc7NImpPjrthZf8uQMYBjuf2MN2R9yRLBkztr54aYasAaloa0e7T69s41nHfPHCTu4dyOpk0XrkDkwm52+LdiKNf502iXNkAEhwQnBUOr3xKbTxAZAphM/5r1XmCL7/pNYgGcBo0NuvMgB8lUh9r9/4FKoDqDK9hO2N3wGyiKkVns9/dBYr9gbfLrcoXXUegC22muxbv9+9VMddZa8ATue/dhfhcozOPEp9VCR4tQD2Dzn2Rv3tswQVctgvhcLlgXCetJKgEGGRI2E607BXABya1r+bmSzfKvlyeKXQcNg9Hk+/v2ewfof+PHBxHHWXjDe+DAfdY0ecpu4VgGDaG7w4wkbclVxeKVSJx4bROgBjQUrv1jtQ+pIbBsmn0Hh6oZ2BGvjiu/hrl3aRAeDnE/1DRhpbBXOxGvA5pyzaf5tvtgCiM8uinXHlTzqDjX0jE8SnZ78fN6+vO65GitRftduX93EUWaSPNXe9AlWswA3vQcpaC1YLoQAAAABJRU5ErkJggg==\"","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport $ from '../../utils/dom';\nimport { extend, bindModuleMethods } from '../../utils/utils';\nvar Navigation = {\n toggleEl: function toggleEl($el, disabled) {\n $el[disabled ? 'addClass' : 'removeClass'](this.params.navigation.disabledClass);\n if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;\n },\n update: function update() {\n // Update Navigation Buttons\n var swiper = this;\n var params = swiper.params.navigation;\n var toggleEl = swiper.navigation.toggleEl;\n if (swiper.params.loop) return;\n var _swiper$navigation = swiper.navigation,\n $nextEl = _swiper$navigation.$nextEl,\n $prevEl = _swiper$navigation.$prevEl;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n toggleEl($prevEl, true);\n } else {\n toggleEl($prevEl, false);\n }\n\n $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n toggleEl($nextEl, true);\n } else {\n toggleEl($nextEl, false);\n }\n\n $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n },\n onPrevClick: function onPrevClick(e) {\n var swiper = this;\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop) return;\n swiper.slidePrev();\n },\n onNextClick: function onNextClick(e) {\n var swiper = this;\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop) return;\n swiper.slideNext();\n },\n init: function init() {\n var swiper = this;\n var params = swiper.params.navigation;\n if (!(params.nextEl || params.prevEl)) return;\n var $nextEl;\n var $prevEl;\n\n if (params.nextEl) {\n $nextEl = $(params.nextEl);\n\n if (swiper.params.uniqueNavElements && typeof params.nextEl === 'string' && $nextEl.length > 1 && swiper.$el.find(params.nextEl).length === 1) {\n $nextEl = swiper.$el.find(params.nextEl);\n }\n }\n\n if (params.prevEl) {\n $prevEl = $(params.prevEl);\n\n if (swiper.params.uniqueNavElements && typeof params.prevEl === 'string' && $prevEl.length > 1 && swiper.$el.find(params.prevEl).length === 1) {\n $prevEl = swiper.$el.find(params.prevEl);\n }\n }\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', swiper.navigation.onNextClick);\n }\n\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', swiper.navigation.onPrevClick);\n }\n\n extend(swiper.navigation, {\n $nextEl: $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl: $prevEl,\n prevEl: $prevEl && $prevEl[0]\n });\n },\n destroy: function destroy() {\n var swiper = this;\n var _swiper$navigation2 = swiper.navigation,\n $nextEl = _swiper$navigation2.$nextEl,\n $prevEl = _swiper$navigation2.$prevEl;\n\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', swiper.navigation.onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', swiper.navigation.onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n }\n};\nexport default {\n name: 'navigation',\n params: {\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock'\n }\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n navigation: _extends({}, Navigation)\n });\n },\n on: {\n init: function init(swiper) {\n swiper.navigation.init();\n swiper.navigation.update();\n },\n toEdge: function toEdge(swiper) {\n swiper.navigation.update();\n },\n fromEdge: function fromEdge(swiper) {\n swiper.navigation.update();\n },\n destroy: function destroy(swiper) {\n swiper.navigation.destroy();\n },\n click: function click(swiper, e) {\n var _swiper$navigation3 = swiper.navigation,\n $nextEl = _swiper$navigation3.$nextEl,\n $prevEl = _swiper$navigation3.$prevEl;\n var targetEl = e.target;\n\n if (swiper.params.navigation.hideOnClick && !$(targetEl).is($prevEl) && !$(targetEl).is($nextEl)) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n var isHidden;\n\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n\n if (isHidden === true) {\n swiper.emit('navigationShow');\n } else {\n swiper.emit('navigationHide');\n }\n\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n }\n }\n};","module.exports = require('./dist/next-server/lib/head')\n","import React from 'react'\n\nexport const AmpStateContext: React.Context<any> = React.createContext({})\n\nif (process.env.NODE_ENV !== 'production') {\n AmpStateContext.displayName = 'AmpStateContext'\n}\n","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\n","module.exports = \"https://sf6-scmcdn2-tos.pstatp.com/motor/pc/_next/static/images/error-pic@3x-acb37b219b8d78197595f56ab4ba1879.jpg\";"],"sourceRoot":""}