{"version":3,"sources":["webpack://_N_E/./new/home/services/home.ts","webpack://_N_E/./lib/format-time.ts","webpack://_N_E/./components/toastModal.tsx","webpack://_N_E/./pages-components/home/QRcode.tsx","webpack://_N_E/./pages-components/home/article-leaderboard.tsx","webpack://_N_E/./pages-components/home/common/header.tsx","webpack://_N_E/./lib/apply-https-img.ts","webpack://_N_E/./node_modules/invariant/browser.js","webpack://_N_E/./pages-components/home/feed.tsx","webpack://_N_E/./pages-components/home/ad/label.tsx","webpack://_N_E/(webpack)/buildin/module.js","webpack://_N_E/./node_modules/core-js/internals/create-html.js","webpack://_N_E/./lib/format-duration.ts","webpack://_N_E/./components/hooks/use-login-check-callback.ts","webpack://_N_E/./node_modules/core-js/modules/es.string.link.js","webpack://_N_E/./node_modules/react-intersection-observer/node_modules/@babel/runtime/helpers/esm/extends.js","webpack://_N_E/./node_modules/react-intersection-observer/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://_N_E/./node_modules/react-intersection-observer/node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://_N_E/./node_modules/react-intersection-observer/react-intersection-observer.esm.js","webpack://_N_E/./node_modules/react-intersection-observer/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://_N_E/./node_modules/react-intersection-observer/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://_N_E/./pages-components/home/friendship-link.tsx","webpack://_N_E/./node_modules/core-js/internals/string-html-forced.js"],"names":["PGC_CAGETORY_SROUCE","getHomeOriginal","req","a","fetch","getUrl","json","status","Error","prompts","message","data","getHomeVideo","friendshipLinkData","console","error","getPGCVideoRank","list","getPGCArticleRank","getPGCCategoryList","source","VIDEO","getLiveRoomList","cityName","live_list","getLiveTabsList","getTodayNews","Array","isArray","getFocusPic","formatTime","millisecondTimestamp","now","Date","nowTimestamp","getTime","fakeDate","getFullYear","getMonth","getDate","d","Number","delta","ONE_MINUTE","Math","floor","_hm","fixNumber","getHours","getMinutes","i","setDate","num","secToMin","seconds","min","sec","Modal","getContainer","props","container","document","createElement","body","appendChild","e","maskClosable","target","currentTarget","onClose","close","this","visible","className","children","title","closable","footer","width","height","clientX","clientY","price","type","dest","undefined","timeout","in","onEntered","onExited","unmountOnExit","onClick","handleMaskClick","classNames","style","src","getComponent","PureComponent","DeclareText","show","onHide","alt","memo","ArticleBoard","article","fromPage","useState","showModal","setShowModal","useEffect","sendTeaCommEvent","list_type","item_type","key_name","leftContent","rightContent","href","as","getLinkHref","icon","marginTop","slice","map","item","index","key","gid_str","gid","group_id","classnames","count","QRcode","Header","applyHttpsImage","url","replace","module","exports","condition","format","b","c","f","args","argIndex","name","framesToPop","HomeFeed","tabData","useRef","current","setCurrent","feedAd","useFeedAd","length","param","ref","titles","text","category","stopPropagation","sub_tab","rank","obj_text","element","scrollingElement","documentElement","offsetTop","scrollTop","active","renderTitles","page","from","content_type","Label","webpackPolyfill","deprecate","paths","Object","defineProperty","enumerable","get","l","requireObjectCoercible","quot","string","tag","attribute","value","S","String","p1","formatDuration","second","join","useLoginCheckCallback","callback","commonParams","globalState","useContext","GlobalStoreContext","state","openLogin","LoginStoreContext","useCallback","userData","user_id","$","createHTML","proto","forced","forcedStringHTMLMethod","link","_extends","assign","arguments","prototype","hasOwnProperty","call","apply","_assertThisInitialized","self","ReferenceError","_defineProperty","obj","configurable","writable","INSTANCE_MAP","Map","OBSERVER_MAP","ROOT_IDS","consecutiveRootId","observe","options","threshold","_options","root","rootMargin","has","observerId","set","toString","getRootId","observerInstance","IntersectionObserver","onChange","instance","inView","observer","thresholds","unobserve","itemsLeft","rootObserved","forEach","disconnect","changes","intersection","isIntersecting","intersectionRatio","some","_React$Component","subClass","superClass","InView","_this","_len","_key","concat","entry","node","observeNode","setState","create","constructor","__proto__","_proto","componentDidMount","componentDidUpdate","prevProps","prevState","triggerOnce","componentWillUnmount","_this$props","handleChange","render","_this$state","isPlainChildren","handleNode","_this$props2","excluded","sourceKeys","keys","indexOf","_objectWithoutPropertiesLoose","useInView","_React$useState","setRef","FriendshipLink","setFriendshipLinkData","getFriendshipLinkData","init","friendshipLink","rel","fails","METHOD_NAME","test","toLowerCase","split"],"mappings":"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","file":"static/chunks/1e616dae65cf978ae3b0d97d14adc5357b4e6076.67b14aab155cf63f2f16.js","sourcesContent":["import fetch from 'lib/decorated-fetch'\nimport getUrl from 'lib/url'\n\nexport interface ICommonVideoInfo {\n cover_url: string\n video_id: string\n video_watch_count: number\n video_type: number\n video_duration: number\n video_size: string\n}\n\nexport interface ICommonUserInfo {\n avatar_url: string\n name: string\n description: string\n user_id: 4661945771\n user_verified: boolean\n verified_content: string\n motor_auth_show_info: {\n auth_v_type: number\n auth_v_desc: string\n }\n}\n\nexport interface ICommonColumn {\n id: 225\n uid: number\n mid: number\n logo: string\n name: string\n description: string\n modify_time: number\n create_time: number\n episode: number\n introduction: string\n}\n\nexport interface ICommonVideoData {\n unique_id_str: string\n title: string\n publish_time: number\n video_info: ICommonVideoInfo\n column: ICommonColumn\n}\n\nexport const getHomeOriginal = async (req: any) => {\n const json = await fetch(\n getUrl(`/motor/pc/content/home_original?count=30`, 'motor.pc_content.api'),\n {\n req,\n }\n )\n\n if (0 !== json?.status) {\n throw Error(json?.prompts || json.message)\n }\n\n return json?.data\n}\n\nexport enum PGC_CAGETORY_SROUCE {\n VIDEO = 1,\n VIDEO_HOME = 2,\n}\n\nexport interface IHomeVideoData {\n unique_id_str: string\n video_info: ICommonVideoInfo\n user_info: ICommonUserInfo\n column: ICommonColumn\n}\n\nexport const getHomeVideo = async (req: any) => {\n const json = await fetch(\n getUrl(\n `/motor/pc/content/home_video?count=48&source=1`,\n 'motor.pc_content.api'\n ),\n {\n req,\n }\n )\n\n if (0 !== json?.status) {\n throw Error(json?.prompts || json.message)\n }\n\n return json?.data\n}\n\nexport const friendshipLinkData = async (req: any) => {\n try {\n const json = await fetch(\n getUrl('/cloud/api/invoke/get_pc_friendship_link'),\n { req }\n )\n return json || []\n } catch (err) {\n console.error(err)\n return []\n }\n}\n\nexport interface ICommonContentRankItem {\n title: string\n count: number\n format_count: string\n group_id: string\n}\n\nexport const getPGCVideoRank = async (req: any) => {\n const json = await fetch(\n getUrl(\n '/motor/pc/content/pgc_content_rank?rank_type=pgc_video_total_rank',\n 'motor.pc_content.api'\n ),\n { req }\n )\n if (0 !== json?.status) {\n throw Error(json?.prompts || json.message)\n }\n return json?.data?.list\n}\n\nexport const getPGCArticleRank = async (req: any) => {\n const json = await fetch(\n getUrl(\n '/motor/pc/content/pgc_content_rank?rank_type=pgc_article_total_rank',\n 'motor.pc_content.api'\n ),\n { req }\n )\n if (0 !== json?.status) {\n throw Error(json?.prompts || json.message)\n }\n return json?.data?.list\n}\n\nexport const getPGCCategoryList = async (\n req: any,\n source: number = PGC_CAGETORY_SROUCE.VIDEO\n) => {\n const json = await fetch(\n getUrl(\n `/motor/pc/content/all_category_list?source=${source}`,\n 'motor.pc_content.api'\n ),\n { req }\n )\n if (0 !== json?.status) {\n throw Error(json?.prompts || json.message)\n }\n return json?.data\n}\n\nexport interface ILiveRoomItem {\n type: string\n room_id: string\n popularity: number\n title: string\n cover_url: string\n user_id: string\n user_name: string\n avatar: string\n rtmp_pull_url: string\n user_verified: boolean\n city_name: string\n}\nexport const getLiveRoomList = async (\n req: any,\n cityName = '',\n selectedCityName = ''\n) => {\n const json = await fetch(\n getUrl(\n `/motor/pc/common/home_live_rooms?count=48&city_name=${cityName}&selected_city_name=${cityName}`,\n 'motor.pc_common.api'\n ),\n { req }\n )\n if (0 !== json?.status) {\n throw Error(json?.prompts || json.message)\n }\n return json?.data?.live_list\n}\n\nexport interface ILiveBrandItem {\n brand_id: string\n brand_name: string\n logo: string\n}\nexport const getLiveTabsList = async (req: any) => {\n const json = await fetch(\n getUrl('/motor/pc/common/live_tabs', 'motor.pc_common.api'),\n { req }\n )\n if (0 !== json?.status) {\n throw Error(json?.prompts || json.message)\n }\n return json?.data\n}\n\nexport const getTodayNews = async (req: any) => {\n try {\n const json = await fetch(\n getUrl('/motor/pc/common/rcm_articles', 'motor.pc_common.api'),\n {\n req,\n }\n )\n let data = json?.data || []\n if (!Array.isArray(data)) {\n data = []\n }\n return data\n } catch (err) {\n console.error(err)\n return []\n }\n}\n\nexport const getFocusPic = async (req: any) => {\n try {\n const json = await fetch(\n getUrl('/motor/pc/common/home/focus_pic', 'motor.pc_common.api'),\n {\n req,\n }\n )\n return json?.data || []\n } catch (err) {\n return []\n }\n}\n\nexport const getFeedData = async (req: any) => {\n const json = await fetch(\n getUrl(\n '/motor/stream_entrance/get_feed/v47/?tt_from=enter_auto&category=motor_car_use&sub_category=&impression_info=%7B\"page_id\"%3A\"page_car_series\"%2C\"sub_tab\"%3A\"motor_car_use\"%2C\"product_name\"%3A\"web\"%7D&aid=1839&refer=1&channel=web&device_platform=web&web_id=5999794205218462&motor_feed_extra_params=%7B\"new_feed\"%3A%20true%2C%20\"feed_type\"%3A%201%7D&source=pc',\n 'motor.stream.entrance'\n ),\n { req }\n )\n return json?.data\n}\n","/**\n * 将服务端传过来的时间戳(毫秒)转为格式化的字符串\n * @param {string|number} millisecondTimestamp 毫秒级时间戳\n * @return {string} 格式化时间\n */\nexport default function formatTime(millisecondTimestamp: string | number) {\n const ONE_MINUTE = 1000 * 60\n const ONE_HOUR = ONE_MINUTE * 60\n // var ONE_DAY = ONE_HOUR * 24;\n\n const now = new Date()\n const nowTimestamp = now.getTime()\n const fakeDate = new Date(now.getFullYear(), now.getMonth(), now.getDate())\n const d = new Date(Number(millisecondTimestamp))\n if (!Number(d.getTime())) {\n return ''\n }\n\n const delta = nowTimestamp - Number(millisecondTimestamp)\n\n if (delta < 0) {\n return ''\n } else if (delta < ONE_MINUTE) {\n return '刚刚'\n } else if (delta < ONE_HOUR) {\n return `${Math.floor(delta / ONE_MINUTE)}分钟前`\n } else if (delta < 24 * ONE_HOUR) {\n return `${Math.floor(delta / ONE_HOUR)}小时前`\n } else {\n const _hm = `${fixNumber(d.getHours())}:${fixNumber(d.getMinutes())}`\n let i = 0\n while (i++ <= 8) {\n fakeDate.setDate(fakeDate.getDate() - 1)\n if (millisecondTimestamp > fakeDate.getTime()) {\n if (i === 1) {\n return `昨天 ${_hm}`\n } else if (i === 2) {\n return `前天 ${_hm}`\n } else {\n return `${i}天前`\n }\n }\n }\n\n return `${\n (d.getFullYear() < now.getFullYear() ? `${d.getFullYear()}-` : '') +\n fixNumber(d.getMonth() + 1)\n }-${fixNumber(d.getDate())}`\n }\n}\n\nfunction fixNumber(num: number): string {\n if (num < 10) {\n return `0${num}`\n }\n return `${num}`\n}\n\nexport function secToMin(seconds: number) {\n const min = Math.floor(seconds / 60)\n const sec = seconds % 60\n return `${fixNumber(min)}:${fixNumber(sec)}`\n}\n\n/**\n * 将时间戳(毫秒)转为以天为单位\n */\nexport function formatTimeByday(millisecondTimestamp: string | number) {\n const now = new Date()\n const nowTimestamp = now.getTime()\n const fakeDate = new Date(now.getFullYear(), now.getMonth(), now.getDate())\n const d = new Date(Number(millisecondTimestamp))\n if (!Number(d.getTime())) {\n return ''\n }\n const delta = nowTimestamp - Number(millisecondTimestamp)\n if (delta < 0) {\n return ''\n }\n\n const dDate = new Date(d.getFullYear(), d.getMonth(), d.getDate())\n\n const diff = (fakeDate.getTime() - dDate.getTime()) / 1000 / 60 / 60 / 24\n\n if (diff < 1) {\n return '今天'\n }\n if (diff < 2) {\n return '昨天'\n }\n if (diff < 3) {\n return '前天'\n }\n if (diff < 9) {\n return `${Math.abs(diff)}天前`\n }\n\n return `${\n (d.getFullYear() < now.getFullYear() ? `${d.getFullYear()}-` : '') +\n fixNumber(d.getMonth() + 1)\n }-${fixNumber(d.getDate())}`\n}\n","import React, { PureComponent } from 'react'\nimport classNames from 'classnames'\nimport { Fade } from './animation'\nimport Portal from './portal'\n\nexport interface IModalProps {\n /** 样式类名 */\n className?: string\n title?: React.ReactNode\n children: React.ReactNode\n maskClosable: boolean\n /** 关闭后回调 */\n onClose?: (e: React.MouseEvent) => void\n /** 是否可见 */\n visible: boolean\n /** 获取挂载容器 */\n getContainer?: () => HTMLElement\n /** 底部配置 */\n footer?: React.ReactNode\n /** 是否展示关闭按钮 */\n closable: boolean\n /** 关闭函数 */\n close: () => void\n /** 内容宽度 */\n width?: number | string\n /** 内容高度 */\n height?: number | string\n clientX: number\n clientY: number\n type?: number\n price?: string\n}\n\nexport default class Modal extends PureComponent {\n static defaultProps: Partial = {\n closable: false,\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n close: () => {},\n maskClosable: true,\n visible: false,\n }\n\n getContainer = () => {\n const { getContainer } = this.props\n if (getContainer) {\n return getContainer()\n }\n const container = document.createElement('div')\n document.body.appendChild(container)\n return container\n }\n\n handleMaskClick = (e: React.MouseEvent) => {\n const { maskClosable } = this.props\n if (maskClosable && e.target === e.currentTarget) {\n this.onClose(e)\n }\n }\n\n onClose = (e: React.MouseEvent) => {\n const { onClose, close } = this.props\n onClose && onClose(e)\n close()\n }\n\n onEntered = () => {\n // const clientWidthBefore = document.body.clientWidth\n // document.body.style.overflow = 'hidden'\n // const clientWidthAfter = document.body.clientWidth\n // const scrollBarWidth = clientWidthAfter - clientWidthBefore\n // document.body.style.paddingRight = `${scrollBarWidth}px`\n }\n\n onExited = () => {\n // document.body.style.overflow = ''\n // document.body.style.paddingRight = '0'\n }\n\n getComponent() {\n const {\n visible,\n className,\n children,\n title,\n closable,\n footer,\n width,\n height,\n clientX,\n clientY,\n onClose,\n price,\n type,\n } = this.props\n\n const dest: any = {}\n if (width !== undefined) {\n dest.width = width\n }\n if (height !== undefined) {\n dest.height = height\n }\n\n return (\n \n \n
\n {\n onClose && onClose(e)\n }}\n >\n \n \n \n
\n {!!title && (\n
\n
{title}
\n {type === 1 ? (\n
1元
\n ) : (\n
{price}
\n )}\n {closable && (\n \n )}\n
\n )}\n
{children}
\n {!!footer &&
{footer}
}\n \n \n \n \n )\n }\n\n render() {\n return (\n {this.getComponent()}\n )\n }\n}\n","import React, { memo } from 'react'\nimport Modal from 'Components/toastModal'\n\nexport interface IDeclareTextProps {\n show: boolean\n onHide: () => void\n clientX: number\n clientY: number\n type?: number\n price?: string\n}\nfunction DeclareText({\n show,\n onHide,\n clientX,\n clientY,\n type = 1,\n price,\n}: IDeclareTextProps) {\n return (\n <>\n \n
\n
\n \n
\n
\n \n \n \n )\n}\n\nexport default memo(DeclareText)\n","import React, { useEffect, useState } from 'react'\nimport classnames from 'classnames'\nimport ArticleLink from 'Components/links/article-link'\n\nimport Header from 'Pages/home/common/header'\nimport getLinkHref from 'lib/get-link-href'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\nimport QRcode from './QRcode'\ninterface IProps {\n article: ArticleData[]\n fromPage?: string\n}\n\nexport interface ArticleData {\n gid: number\n gid_str: string\n title: string\n count: number\n type: number\n}\n\nexport default function ArticleBoard({\n article = [],\n fromPage = 'home',\n}: IProps) {\n const [showModal, setShowModal] = useState(false)\n const [clientX, setClientX] = useState(0)\n const [clientY, setClientY] = useState(0)\n useEffect(() => {\n sendTeaCommEvent('web_client_show', {\n list_type: 1,\n item_type: 1,\n key_name: 'home_hot_article_card',\n })\n }, [])\n\n return (\n <>\n
\n {\n sendTeaCommEvent('click_new_series_rank_list_more')\n }}\n />\n
    \n {Array.isArray(article) &&\n article.slice(0, 10).map((item, index) => {\n return (\n
  • \n {\n if (fromPage === 'feed') {\n sendTeaCommEvent('click_news_top_article', {\n group_id: item?.gid_str || 'undefined',\n })\n }\n sendTeaCommEvent('click_home_top_article', {\n group_id: item.gid_str,\n })\n }}\n className=\"line-1\"\n >\n \n {index + 1}\n {index < 3 ? null : '.'}\n \n \n {item.title}\n \n \n {item.count}万次阅读\n
  • \n )\n })}\n
\n\n {\n setShowModal(!showModal)\n }}\n />\n
\n \n \n )\n}\n","import React from 'react'\nimport Link from 'next/link'\n\nimport getLinkHref from 'lib/get-link-href'\n\ninterface IProps {\n /* icon图片路径 */\n icon?: string\n /* 左边的文本内容 */\n leftContent: string\n /* 右边的文本内容 */\n rightContent: string\n /* link前端路径 */\n href?: string\n /* link后端路径 */\n as?: string\n onClick?(): void\n}\n\nexport default function Header({\n icon,\n leftContent,\n rightContent,\n href,\n as,\n onClick,\n}: IProps) {\n return (\n
\n {leftContent === '热门排行榜' ? (\n

{leftContent}

\n ) : (\n {leftContent}\n )}\n {href && as ? (\n \n \n {\n onClick && onClick()\n }}\n >\n {rightContent}\n \n \n \n \n ) : (\n {rightContent}\n )}\n \n
\n )\n}\n","export default function applyHttpsImage(url?: string) {\n return (url || '').replace('http://', '//')\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","/* 渲染feed流 */\n\nimport React, { useState, useRef, useEffect } from 'react'\nimport classnames from 'classnames'\n\nimport Feed from 'Components/feed'\nimport { useFeedAd } from 'Components/hooks'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\n\nexport interface TabData {\n text: string\n param: string\n}\n\nfunction HomeFeed({\n fromPage = 'home',\n tabData = [],\n}: {\n fromPage?: string\n tabData?: TabData[]\n}) {\n const container = useRef(null)\n /* 当前所在文章的栏目 */\n const [current, setCurrent] = useState('motor_car')\n const feedAd = useFeedAd(current, fromPage) || []\n\n useEffect(() => {\n if (tabData.length > 0) {\n setCurrent(tabData?.[0]?.param || 'motor_car')\n }\n }, [tabData])\n\n /* 渲染feed流都有哪些文章栏目 */\n function renderTitles() {\n let titles: { text: string; category: string }[]\n\n if (fromPage === 'feed') {\n titles = tabData.map(e => ({ text: e.text, category: e.param }))\n } else {\n titles = [\n { text: '推荐', category: 'motor_car' },\n { text: '新车', category: 'motor_car_new_arrival' },\n { text: '用车', category: 'motor_car_use' },\n { text: '导购', category: 'motor_car_new_guide' },\n { text: 'SUV', category: 'motor_car_suv' },\n { text: '自驾游', category: 'motor_car_travel' },\n { text: '新能源', category: 'motor_car_new_energy' },\n { text: '提车作业', category: 'motor_car_trail_diary' },\n { text: '试驾评测', category: 'motor_car_evaluating' },\n ]\n }\n\n return (\n \n {titles.map(\n (item: { text: string; category: string }, index: number) => (\n ) => {\n e.stopPropagation()\n setCurrent(item.category)\n if (fromPage !== 'feed') {\n sendTeaCommEvent('click_home_news_tab', {\n sub_tab: item.text,\n })\n } else {\n sendTeaCommEvent('click_news_top_tab', {\n rank: index,\n obj_text: titles[index].text,\n })\n }\n\n const element =\n document.scrollingElement || document.documentElement\n if (element && container.current) {\n const top = container.current.offsetTop\n if (top <= element.scrollTop) {\n element.scrollTop = container.current.offsetTop\n }\n }\n }}\n >\n {item.text}\n \n )\n )}\n \n \n )\n }\n\n return (\n
\n {renderTitles()}\n {\n if (fromPage === 'feed') {\n sendTeaCommEvent('click_news_feed_item', {\n rank,\n group_id,\n content_type,\n })\n }\n }}\n />\n
\n )\n}\nexport default HomeFeed\n","import React from 'react'\nexport default function Label({\n text = '广告',\n className,\n}: {\ntext: string\nclassName?: string\n}) {\n return (\n \n {text}\n \n \n )\n}\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar quot = /\"/g;\n\n// B.2.3.2.1 CreateHTML(string, tag, attribute, value)\n// https://tc39.github.io/ecma262/#sec-createhtml\nmodule.exports = function (string, tag, attribute, value) {\n var S = String(requireObjectCoercible(string));\n var p1 = '<' + tag;\n if (attribute !== '') p1 += ' ' + attribute + '=\"' + String(value).replace(quot, '"') + '\"';\n return p1 + '>' + S + '';\n};\n","/**\n * 将服务端传过来的时长(秒)格式化为时分秒\n * @param {number} 秒级\n * @return {string} 格式化为时分秒\n */\nexport default function formatDuration(second: number) {\n if (second < 3600) {\n return [Math.floor((second / 60) % 60), Math.floor(second % 60)]\n .join(':')\n .replace(/\\b(\\d)\\b/g, '0$1')\n } else {\n return [\n Math.floor(second / 60 / 60),\n Math.floor((second / 60) % 60),\n Math.floor(second % 60),\n ]\n .join(':')\n .replace(/\\b(\\d)\\b/g, '0$1')\n }\n}\n","import { useCallback, useContext } from 'react'\nimport { GlobalStoreContext } from 'Components/store'\nimport { LoginStoreContext } from 'New/login/login-store'\nimport { ILoginCommonParams } from 'New/login/context/view-context'\n\nfunction useLoginCheckCallback any>(\n callback: T,\n commonParams?: ILoginCommonParams\n) {\n const { state: globalState } = useContext(GlobalStoreContext)\n const { openLogin } = useContext(LoginStoreContext)\n\n return useCallback(\n (...args) => {\n if (globalState?.userData?.user_id) {\n return callback(...args)\n } else {\n openLogin(commonParams)\n }\n },\n [globalState?.userData?.user_id, callback, commonParams, openLogin]\n )\n}\n\nexport default useLoginCheckCallback\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.link` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.link\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('link') }, {\n link: function link(url) {\n return createHTML(this, 'a', 'href', url);\n }\n});\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","export default 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}","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport { createElement, Component, useRef, useState, useCallback, useDebugValue } from 'react';\nimport invariant from 'invariant';\n\nvar INSTANCE_MAP = new Map();\nvar OBSERVER_MAP = new Map();\nvar ROOT_IDS = new Map();\nvar consecutiveRootId = 0;\n/**\n * Generate a unique ID for the root element\n * @param root\n */\n\nfunction getRootId(root) {\n if (!root) return '';\n if (ROOT_IDS.has(root)) return ROOT_IDS.get(root);\n consecutiveRootId += 1;\n ROOT_IDS.set(root, consecutiveRootId.toString());\n return ROOT_IDS.get(root) + '_';\n}\n/**\n * Monitor element, and trigger callback when element becomes inView\n * @param element {HTMLElement}\n * @param callback {Function} Called with inView\n * @param options {Object} InterSection observer options\n * @param options.threshold {Number} Number between 0 and 1, indicating how much of the element should be inView before triggering\n * @param options.root {HTMLElement}\n * @param options.rootMargin {String} The CSS margin to apply to the root element.\n */\n\n\nfunction observe(element, callback, options) {\n if (options === void 0) {\n options = {};\n }\n\n // IntersectionObserver needs a threshold to trigger, so set it to 0 if it's not defined.\n // Modify the options object, since it's used in the onChange handler.\n if (!options.threshold) options.threshold = 0;\n var _options = options,\n root = _options.root,\n rootMargin = _options.rootMargin,\n threshold = _options.threshold; // Validate that the element is not being used in another \n\n invariant(!INSTANCE_MAP.has(element), \"react-intersection-observer: Trying to observe %s, but it's already being observed by another instance.\\nMake sure the `ref` is only used by a single instance.\\n\\n%s\", element);\n /* istanbul ignore if */\n\n if (!element) return; // Create a unique ID for this observer instance, based on the root, root margin and threshold.\n // An observer with the same options can be reused, so lets use this fact\n\n var observerId = getRootId(root) + (rootMargin ? threshold.toString() + \"_\" + rootMargin : threshold.toString());\n var observerInstance = OBSERVER_MAP.get(observerId);\n\n if (!observerInstance) {\n observerInstance = new IntersectionObserver(onChange, options);\n /* istanbul ignore else */\n\n if (observerId) OBSERVER_MAP.set(observerId, observerInstance);\n }\n\n var instance = {\n callback: callback,\n element: element,\n inView: false,\n observerId: observerId,\n observer: observerInstance,\n // Make sure we have the thresholds value. It's undefined on a browser like Chrome 51.\n thresholds: observerInstance.thresholds || (Array.isArray(threshold) ? threshold : [threshold])\n };\n INSTANCE_MAP.set(element, instance);\n observerInstance.observe(element);\n return instance;\n}\n/**\n * Stop observing an element. If an element is removed from the DOM or otherwise destroyed,\n * make sure to call this method.\n * @param element {Element}\n */\n\nfunction unobserve(element) {\n if (!element) return;\n var instance = INSTANCE_MAP.get(element);\n\n if (instance) {\n var observerId = instance.observerId,\n observer = instance.observer;\n var root = observer.root;\n observer.unobserve(element); // Check if we are still observing any elements with the same threshold.\n\n var itemsLeft = false; // Check if we still have observers configured with the same root.\n\n var rootObserved = false;\n /* istanbul ignore else */\n\n if (observerId) {\n INSTANCE_MAP.forEach(function (item, key) {\n if (key !== element) {\n if (item.observerId === observerId) {\n itemsLeft = true;\n rootObserved = true;\n }\n\n if (item.observer.root === root) {\n rootObserved = true;\n }\n }\n });\n }\n\n if (!rootObserved && root) ROOT_IDS[\"delete\"](root);\n\n if (observer && !itemsLeft) {\n // No more elements to observe for threshold, disconnect observer\n observer.disconnect();\n } // Remove reference to element\n\n\n INSTANCE_MAP[\"delete\"](element);\n }\n}\n\nfunction onChange(changes) {\n changes.forEach(function (intersection) {\n var isIntersecting = intersection.isIntersecting,\n intersectionRatio = intersection.intersectionRatio,\n target = intersection.target;\n var instance = INSTANCE_MAP.get(target); // Firefox can report a negative intersectionRatio when scrolling.\n\n /* istanbul ignore else */\n\n if (instance && intersectionRatio >= 0) {\n // If threshold is an array, check if any of them intersects. This just triggers the onChange event multiple times.\n var inView = instance.thresholds.some(function (threshold) {\n return instance.inView ? intersectionRatio > threshold : intersectionRatio >= threshold;\n });\n\n if (isIntersecting !== undefined) {\n // If isIntersecting is defined, ensure that the element is actually intersecting.\n // Otherwise it reports a threshold of 0\n inView = inView && isIntersecting;\n }\n\n instance.inView = inView;\n instance.callback(inView, intersection);\n }\n });\n}\n\nfunction isPlainChildren(props) {\n return typeof props.children !== 'function';\n}\n/**\n * Monitors scroll, and triggers the children function with updated props\n *\n \n {({inView, ref}) => (\n

{`${inView}`}

\n )}\n
\n */\n\n\nvar InView =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(InView, _React$Component);\n\n function InView() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n inView: false,\n entry: undefined\n });\n\n _defineProperty(_assertThisInitialized(_this), \"node\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"handleNode\", function (node) {\n if (_this.node) unobserve(_this.node);\n _this.node = node ? node : null;\n\n _this.observeNode();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleChange\", function (inView, entry) {\n // Only trigger a state update if inView has changed.\n // This prevents an unnecessary extra state update during mount, when the element stats outside the viewport\n if (inView !== _this.state.inView || inView) {\n _this.setState({\n inView: inView,\n entry: entry\n });\n }\n\n if (_this.props.onChange) {\n // If the user is actively listening for onChange, always trigger it\n _this.props.onChange(inView, entry);\n }\n });\n\n return _this;\n }\n\n var _proto = InView.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n invariant(this.node, \"react-intersection-observer: No DOM node found. Make sure you forward \\\"ref\\\" to the root DOM element you want to observe.\");\n }\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n // If a IntersectionObserver option changed, reinit the observer\n if (prevProps.rootMargin !== this.props.rootMargin || prevProps.root !== this.props.root || prevProps.threshold !== this.props.threshold) {\n unobserve(this.node);\n this.observeNode();\n }\n\n if (prevState.inView !== this.state.inView) {\n if (this.state.inView && this.props.triggerOnce) {\n unobserve(this.node);\n this.node = null;\n }\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this.node) {\n unobserve(this.node);\n this.node = null;\n }\n };\n\n _proto.observeNode = function observeNode() {\n if (!this.node) return;\n var _this$props = this.props,\n threshold = _this$props.threshold,\n root = _this$props.root,\n rootMargin = _this$props.rootMargin;\n observe(this.node, this.handleChange, {\n threshold: threshold,\n root: root,\n rootMargin: rootMargin\n });\n };\n\n _proto.render = function render() {\n var _this$state = this.state,\n inView = _this$state.inView,\n entry = _this$state.entry;\n\n if (!isPlainChildren(this.props)) {\n return this.props.children({\n inView: inView,\n entry: entry,\n ref: this.handleNode\n });\n }\n\n var _this$props2 = this.props,\n children = _this$props2.children,\n as = _this$props2.as,\n tag = _this$props2.tag,\n triggerOnce = _this$props2.triggerOnce,\n threshold = _this$props2.threshold,\n root = _this$props2.root,\n rootMargin = _this$props2.rootMargin,\n props = _objectWithoutPropertiesLoose(_this$props2, [\"children\", \"as\", \"tag\", \"triggerOnce\", \"threshold\", \"root\", \"rootMargin\"]);\n\n return createElement(as || tag || 'div', _extends({\n ref: this.handleNode\n }, props), children);\n };\n\n return InView;\n}(Component);\n\n_defineProperty(InView, \"displayName\", 'InView');\n\n_defineProperty(InView, \"defaultProps\", {\n threshold: 0,\n triggerOnce: false\n});\n\n/* eslint-disable react-hooks/exhaustive-deps */\nfunction useInView(options) {\n if (options === void 0) {\n options = {};\n }\n\n var ref = useRef();\n\n var _React$useState = useState({\n inView: false,\n entry: undefined\n }),\n state = _React$useState[0],\n setState = _React$useState[1];\n\n var setRef = useCallback(function (node) {\n if (ref.current) {\n unobserve(ref.current);\n }\n\n if (node) {\n observe(node, function (inView, intersection) {\n setState({\n inView: inView,\n entry: intersection\n });\n\n if (inView && options.triggerOnce) {\n // If it should only trigger once, unobserve the element after it's inView\n unobserve(node);\n }\n }, options);\n } // Store a reference to the node\n\n\n ref.current = node;\n }, [options.threshold, options.root, options.rootMargin, options.triggerOnce]);\n useDebugValue(state.inView);\n return [setRef, state.inView, state.entry];\n}\n\nexport default InView;\nexport { InView, useInView };\n","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","import React, { useEffect, useState } from 'react'\nimport { friendshipLinkData as getFriendshipLinkData } from '../../new/home/services/home'\n\ninterface IFriendshipLink {\n friendshipLinkData: IFriendshipLinkData[]\n}\n\nexport interface IFriendshipLinkData {\n name: string\n link: string\n}\n\nfunction FriendshipLink() {\n const [friendshipLinkData, setFriendshipLinkData] = useState<\n IFriendshipLinkData[]\n >([]!)\n\n useEffect(() => {\n const init = async () => {\n try {\n const list = await getFriendshipLinkData(null)\n setFriendshipLinkData(list)\n } catch (e) {}\n }\n init()\n }, [])\n\n if (!friendshipLinkData || !friendshipLinkData.length) return null\n\n return (\n
\n
友情链接
\n
\n {friendshipLinkData?.map((friendshipLink: IFriendshipLinkData) => {\n return (\n \n {friendshipLink.name}\n \n )\n })}\n
\n \n
\n )\n}\n\nexport default FriendshipLink\n","var fails = require('../internals/fails');\n\n// check the existence of a method, lowercase\n// of a tag and escaping quotes in arguments\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n var test = ''[METHOD_NAME]('\"');\n return test !== test.toLowerCase() || test.split('\"').length > 3;\n });\n};\n"],"sourceRoot":""}