{"version":3,"sources":["webpack://_N_E/./node_modules/invariant/browser.js","webpack://_N_E/./components/loading.tsx","webpack://_N_E/./new/home/components/dong-che-fen/stars.tsx","webpack://_N_E/./new/side-nav/components/select-car/type-list.tsx","webpack://_N_E/./new/side-nav/components/select-car/brand.tsx","webpack://_N_E/./new/side-nav/components/select-car/follow-status.tsx","webpack://_N_E/./new/side-nav/components/select-car/car-list.tsx","webpack://_N_E/./new/side-nav/components/select-car/index.tsx","webpack://_N_E/./new/side-nav/components/select-car-wrap/index.tsx","webpack://_N_E/./new/side-nav/components/select-car-wrap/index.module.scss","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"],"names":["module","exports","condition","format","a","b","c","d","e","f","error","undefined","Error","args","argIndex","replace","name","framesToPop","className","Stars","props","starIcon","starVacantIcon","score","maxScore","starWidth","starHeight","stars","i","push","intersection","Math","ceil","classNames","map","ele","index","ConditionList","query","TypeList","item","href","prefetch","onClick","PubSub","resetSideNavStatus","sendTeaCommEvent","event_id","button_name","hot_star","require","Brand","letters","brands","selectBrandId","selectBrandName","brandId","divRef","useRef","letterRef","useState","current","setCurrent","offsetMap","Map","letterMap","scrollView","letter","size","Array","from","children","forEach","set","getAttribute","offsetTop","get","scrollTop","requestAnimationFrame","useEffect","scrollHeight","clientHeight","scale","length","console","observer","IntersectionObserver","changes","change","target","findIndex","rootBounds","top","boundingClientRect","bottom","isIntersecting","intersectionRatio","root","rootMargin","threshold","observe","querySelector","disconnect","ref","preventDefault","stopPropagation","active","style","backgroundImage","brand","data-letter","info","pinyin","type","brand_id","brand_name","selected","image_url","src","alt","width","height","lazy","FollowStatus","globalState","useContext","GlobalStoreContext","state","openLogin","LoginStoreContext","userData","user_id","followedCars","visitedCars","hotCars","star","star_black","FOLLOW_TYPE","VIEW_MORE_TYPE","rehandleList","list","n","m","loop","result","j","CarList","id","setType","categoryList","setCatgoryList","loading","setLoading","category_name","setTypeProxy","classnames","useCallback","Car","data","dcd_score","toFixed","series_id","car_series_name","series_name","car_series_id","title","official_price","cusDefaultImg","carLoading","emptyHint","getEmptyHint","city","useCityName","getRehandleList","getFollowedCars","city_name","count","fetch","serializeObject","json","getVisitedCars","visitedSeries","JSON","parse","localStorage","getItem","err","metrics","key","logger","message","series_ids","reverse","join","getHotCars","car_count","suv_count","other_count","flag","React","isShowHistory","isShowFollow","catgoryList","category_code","text","slice","show","jump","hide","getCarList","category_list","defaultType","fetchData","getText","find","unique_id_str","supplementList","tmpObj","car","series_id_list","BRAND_ID_KEY","useInView","triggerOnce","inView","selectedId","setSelectedId","setSelectBrandName","setHide","brandData","setBrandData","selectName","window","setItem","stringify","time","moment","unix","handler","value","setTimeout","getBrandList","unstable_batchedUpdates","realId","removeItem","init","token","subscribe","unsubscribe","reHandleData","shift","res","ProtalModal","setShow","navStatus","useSideNavStatus","responsive","useResponsive","isNavRealOff","useMemo","lg","xl","showHandler","showToken","visited","setVisited","styles","_extends","Object","assign","arguments","source","prototype","hasOwnProperty","call","apply","this","_assertThisInitialized","self","ReferenceError","_defineProperty","obj","defineProperty","enumerable","configurable","writable","INSTANCE_MAP","OBSERVER_MAP","ROOT_IDS","consecutiveRootId","element","callback","options","_options","has","observerId","toString","getRootId","observerInstance","onChange","instance","thresholds","isArray","unobserve","itemsLeft","rootObserved","some","InView","_React$Component","subClass","superClass","_this","_len","_key","concat","entry","node","observeNode","setState","create","constructor","__proto__","_proto","componentDidMount","componentDidUpdate","prevProps","prevState","componentWillUnmount","_this$props","handleChange","render","_this$state","isPlainChildren","handleNode","_this$props2","as","tag","excluded","sourceKeys","keys","indexOf","_objectWithoutPropertiesLoose","createElement","Component","_React$useState","setRef","useDebugValue"],"mappings":"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","file":"static/chunks/4179.b4651708b197237367ec.js","sourcesContent":["/**\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","import * as React from 'react'\n\nconst Loading = ({ className }: { className?: string }) => (\n
\n
\n
\n
\n
\n 加载中…\n
\n \n
\n)\n\nexport default Loading\n","import classNames from 'classnames'\nimport React from 'react'\n\ninterface IStars {\n starIcon: string\n starVacantIcon?: string\n maxScore?: number\n score: number\n className?: string\n starWidth?: number\n starHeight?: number\n}\n\nexport default function Stars(props: IStars) {\n const {\n starIcon,\n starVacantIcon,\n score,\n maxScore,\n className,\n starWidth = 13,\n starHeight = 12,\n } = props\n const stars = []\n for (let i = 1; i <= score; i++) {\n stars.push(0)\n }\n const intersection = score % 1\n if (intersection !== 0) {\n stars.push(1)\n }\n\n if (starVacantIcon && maxScore) {\n for (let i = Math.ceil(score); i < maxScore; i++) {\n stars.push(2)\n }\n }\n return (\n \n {stars.map((ele, index) => {\n switch (ele) {\n case 0:\n return \n case 1:\n return \n case 2:\n return \n default:\n return null\n }\n })}\n \n \n

\n )\n}\n","import React from 'react'\nimport Link from 'next/link'\nimport PubSub from 'pubsub-js'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\nimport { resetSideNavStatus } from 'Components/hooks/use-side-nav-status'\n\ninterface INavList {\n name: string\n query: string\n}\n\nconst ConditionList: INavList[] = [\n {\n name: '10-15万',\n query: '10,15-x-x-x-x-x-x-x-x-x-x',\n },\n {\n name: '15-20万',\n query: '15,20-x-x-x-x-x-x-x-x-x-x',\n },\n {\n name: '20-25万',\n query: '20,25-x-x-x-x-x-x-x-x-x-x',\n },\n {\n name: '25-30万',\n query: '25,30-x-x-x-x-x-x-x-x-x-x',\n },\n {\n name: '新能源',\n query: 'x-x-x-x-x-x-4,5,6-x-x-x-x-x-x-x-x',\n },\n {\n name: '轿车',\n query: 'x-0-x-x-x-x-x-x-x-x-x-x-x-x-x',\n },\n {\n name: 'SUV',\n query: 'x-1-x-x-x-x-x-x-x-x-x-x-x-x-x',\n },\n {\n name: '更多条件',\n query: 'x-x-x-x-x-x-x-x-x-x-x',\n },\n]\n\nexport default function TypeList() {\n return (\n
    \n {ConditionList.map((item, index) => {\n return (\n
  • \n \n {\n PubSub.publish('HIDE_HOVER_CAR')\n // PubSub.publish('OPEN_FIX_NAV', false)\n resetSideNavStatus()\n sendTeaCommEvent('clk_event', {\n event_id: 'common_select_car_menu_top_filter',\n button_name: item.name,\n })\n }}\n >\n {item.name}\n \n \n
  • \n )\n })}\n \n
\n )\n}\n","/* 左边的品牌列表 */\nimport React, { useRef, useState, useEffect } from 'react'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\nimport classNames from 'classnames'\nimport { IInfoProps } from './interface'\nimport applyHttpsImage from 'lib/apply-https-img'\nimport { Image } from 'Components/view-image'\n\ninterface IProps {\n letters: string[]\n brands: IInfoProps[][]\n brandId: number\n selectBrandId?: (id: number) => void\n selectBrandName?: (name: string) => void\n}\n\nconst hot_star = require('static/hot-star.svg')\n\nexport default function Brand({\n letters,\n brands,\n selectBrandId,\n selectBrandName,\n brandId = 0,\n}: IProps) {\n // 获取需要监听的dom\n const divRef = useRef(null)\n // 获取需要滚动的字母dom\n const letterRef = useRef(null)\n // 当前所在的字母\n const [current, setCurrent] = useState('*')\n // 重新定位的位置集合\n const offsetMap = new Map()\n\n const letterMap = new Map()\n useEffect(() => {\n // 左侧字母始终呈现到可视区域\n try {\n if (\n divRef.current &&\n letterRef.current &&\n letterRef.current?.scrollHeight > letterRef.current?.clientHeight\n ) {\n if (letterMap.size === 0) {\n letters.forEach((letter: string, index: number) => {\n letterMap.set(letter, index)\n })\n }\n\n const scale = letterMap.get(current) / letters.length\n // 顶部预留大概一个字母的空间\n letterRef.current.scrollTop =\n letterRef.current?.scrollHeight * scale - 32\n }\n } catch (error) {\n console.error(error)\n }\n }, [current])\n\n useEffect(() => {\n if (!divRef.current) {\n return\n }\n const observer: IntersectionObserver = addObserver()\n divRef.current &&\n [...divRef.current.children].forEach((ele: Element) => {\n observer.observe(ele)\n })\n if (brandId) {\n // 滚动品牌列表到指定位置\n requestAnimationFrame(() => {\n if (divRef.current) {\n const target = divRef.current.querySelector(`.brand-${brandId}`)\n if (!target) {\n return\n }\n // 避免字母遮挡\n divRef.current.scrollTop = (target as HTMLElement).offsetTop - 32\n }\n })\n }\n return () => {\n observer.disconnect()\n }\n // eslint-disable-next-line\n }, [brandId])\n\n // 监听品牌位置\n function addObserver(): IntersectionObserver {\n return new IntersectionObserver(\n (changes) => {\n changes.forEach((change: any) => {\n const letter = change.target.getAttribute('data-letter') as string\n const index = letters.findIndex((ele) => ele === letter)\n if (\n change.rootBounds.top >= change.boundingClientRect.top &&\n change.rootBounds.top <= change.boundingClientRect.bottom &&\n change.isIntersecting\n ) {\n setCurrent(letter)\n } else if (\n change.boundingClientRect.bottom <= change.rootBounds.bottom &&\n !change.isIntersecting &&\n change.intersectionRatio <= 0\n ) {\n setCurrent(letters[index + 1])\n }\n })\n },\n {\n root: divRef.current as unknown as Element,\n rootMargin: '0px 0px 0px 0px',\n threshold: 0.0,\n }\n )\n }\n\n // 得到每个字母点击要定的位置\n function getOffsetTop() {\n divRef.current &&\n Array.from(divRef.current.children).forEach((item: Element) => {\n offsetMap.set(\n item.getAttribute('data-letter'),\n (item as HTMLElement).offsetTop\n )\n })\n }\n\n // 点击以后将右边滚动到对应的字母位置\n function scrollView(letter: string) {\n if (offsetMap.size === 0) {\n getOffsetTop()\n }\n if (offsetMap.get(letter) !== undefined) {\n if (divRef.current) {\n divRef.current.scrollTop = offsetMap.get(letter)\n }\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n setCurrent(letter)\n })\n })\n }\n }\n\n function renderLetters() {\n return (\n
    \n {letters.map((letter: string) => (\n ) => {\n e.preventDefault()\n e.stopPropagation()\n scrollView(letter)\n if (letter === '*') {\n selectBrandId && selectBrandId(-1)\n }\n sendTeaCommEvent('clk_event', {\n event_id: 'common_select_car_menu_character',\n button_name: letter,\n })\n }}\n >\n {letter === '*' ? (\n \n ) : (\n letter\n )}\n \n ))}\n \n
\n )\n }\n\n function renderBrands() {\n return (\n
\n {brands.map((brand: IInfoProps[]) => (\n
\n {brand.map((item: IInfoProps) => {\n if (item.type === 1001 || item.type === -1) {\n return (\n {\n e.stopPropagation()\n selectBrandId && selectBrandId(item.info.brand_id)\n selectBrandName && selectBrandName(item.info.brand_name)\n sendTeaCommEvent('clk_event', {\n event_id: 'common_select_car_menu_brand',\n brand_id: `${item.info.brand_id}`,\n brand_name: item.info.brand_name,\n })\n }}\n >\n {!!item.info.image_url && (\n \n )}\n {item.info.brand_name}\n
\n )\n }\n return (\n \n {item.info.pinyin}\n \n )\n })}\n
\n ))}\n \n
\n )\n }\n\n return (\n \n )\n}\n","import Button from 'Components/button'\nimport { GlobalStoreContext } from 'Components/store'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\nimport { LoginStoreContext } from 'New/login/login-store'\nimport React, { useContext } from 'react'\n\nexport default function FollowStatus({\n className = '',\n}: {\n className?: string\n}) {\n const { state: globalState } = useContext(GlobalStoreContext)\n const { openLogin } = useContext(LoginStoreContext)\n const user_id = globalState?.userData?.user_id\n if (!user_id) {\n return (\n \n \n 登录后,可查看您关注的车型\n

\n {\n /* eslint-disable no-unused-expressions */\n openLogin?.()\n sendTeaCommEvent('clk_event', {\n event_id: 'common_select_car_menu_login',\n })\n }}\n >\n 快速登录\n \n \n
\n )\n } else {\n return (\n \n \n 您还未关注任何车型\n

\n
\n )\n }\n}\n","import React, { useCallback, useEffect, useState, useContext } from 'react'\nimport Link from 'next/link'\nimport Loading from 'Components/loading'\nimport classnames from 'classnames'\nimport { carLoading, Image } from 'Components/view-image'\nimport Stars from 'New/home/components/dong-che-fen/stars'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\nimport FollowStatus from './follow-status'\nimport { useCityName } from 'Components/hooks'\nimport fetch from 'lib/decorated-fetch'\nimport serializeObject from '@arsenal/arsenal/modules/serializeObject'\nimport { logger, metrics } from 'lib/slardar-utils'\nimport { GlobalStoreContext } from 'Components/store'\n\nconst star = require('static/star.png')\nconst star_black = require('static/star-black.png')\n\ninterface IProps {\n id: number\n name: string\n}\n\nconst BRAND_TYPE_KEY = 'side-nav-select-car_type'\n\nlet followedCars: any[]\nlet visitedCars: any[]\nlet hotCars: any[]\n\nconst FOLLOW_TYPE = -1\nconst HISTORY_TYPE = -2\nconst VIEW_MORE_TYPE = -3\n\nconst rehandleList = (list: any[], n: number, m: number) => {\n if (m >= n) {\n return list\n }\n const loop = list.length / n\n const result = []\n for (let i = 0; i < loop; i++) {\n for (let j = 0; j < m; j++) {\n result.push(list[i * n + j])\n }\n }\n return result\n}\n\nexport default function CarList({ id, name }: IProps) {\n const [type, setType] = useState('全部')\n const [categoryList, setCatgoryList] = useState([])\n const [loading, setLoading] = useState(false)\n\n const { state: globalStore } = useContext(GlobalStoreContext)\n const { userData } = globalStore\n\n function TypeList() {\n return (\n \n )\n }\n\n const setTypeProxy = useCallback((type: string) => {\n setType(type)\n sendTeaCommEvent('clk_event', {\n event_id: 'common_select_car_menu_sub_filter',\n button_name: type,\n })\n }, [])\n\n function Car({ data }: any) {\n let score: any = data?.info?.dcd_score / 100\n score = score > 0 ? score?.toFixed(2) : score\n return (\n \n \n {\n e.stopPropagation()\n sendTeaCommEvent('clk_event', {\n event_id: 'common_select_car_menu_series',\n car_series_name: data?.info?.series_name,\n car_series_id: `${data?.info?.series_id}`,\n brand_id: `${id}`,\n brand_name: name,\n })\n }}\n >\n

\n {data?.info?.series_name}\n

\n
\n \n {score > 0 ? (\n <>\n {score}\n
\n \n
\n \n ) : (\n 暂无评分\n )}\n
\n

指导价: {data?.info?.official_price}

\n
\n \n
\n \n \n \n \n )\n }\n\n function CarList({ data }: any) {\n if (!data?.category_name) {\n return null\n }\n const getEmptyHint = (type: number) => {\n let emptyHint = null\n if (type === FOLLOW_TYPE) {\n // 我的关注\n emptyHint = \n } else if (type === HISTORY_TYPE) {\n // 历史浏览\n emptyHint = (\n \n 暂无浏览历史\n

\n )\n }\n return emptyHint\n }\n\n const list = data?.list || []\n\n return (\n \n
{data?.category_name}
\n {list?.map((item: any, index: number) => {\n if (item?.type !== 1002) {\n return getEmptyHint(item?.type)\n }\n return \n })}\n \n \n )\n }\n\n const city = useCityName()\n\n const getRehandleList = (list: any) => {\n return list?.map((e: any) => {\n return {\n info: e,\n type: 1002,\n }\n })\n }\n\n const getFollowedCars = async () => {\n if (userData?.user_id) {\n try {\n const query = {\n city_name: city,\n count: 50,\n user_id: userData?.user_id,\n }\n const json = await fetch(\n `/motor/pc/car/series/focus_series?${serializeObject(query)}`\n )\n return (\n getRehandleList(json?.data?.list) || [\n {\n type: FOLLOW_TYPE,\n },\n ]\n )\n } catch (err) {\n // no-op\n }\n }\n\n return [\n {\n type: FOLLOW_TYPE,\n },\n ]\n }\n const getVisitedCars = async () => {\n let visitedSeries = []\n try {\n visitedSeries = JSON.parse(localStorage.getItem('visited_series') || '[]')\n } catch (err) {\n metrics.counter('json.parse.fail', { key: 'visited_series' })\n logger.warn(`[json parse fail] Error parsing json, err: ${err?.message}`)\n }\n if (visitedSeries.length) {\n const query = {\n city_name: city,\n series_ids: visitedSeries.reverse().join(','),\n }\n const json = await fetch(\n `/motor/pc/car/series/selected_series?${serializeObject(query)}`\n )\n return getRehandleList(json.data?.list || [])\n }\n return [\n {\n type: HISTORY_TYPE,\n },\n ]\n }\n const getHotCars = async () => {\n try {\n const query = {\n city_name: city,\n car_count: 6,\n suv_count: 6,\n other_count: 6,\n }\n const json = await fetch(\n `/motor/pc/car/series/hot_series?${serializeObject(query)}`\n )\n return getRehandleList(json?.data?.list || [])\n } catch (err) {\n // no-op\n }\n return []\n }\n\n const flag = React.useRef(-1)\n\n useEffect(() => {\n async function fetchData() {\n setLoading(true)\n try {\n if (id === -1) {\n flag.current = -1\n !followedCars && (followedCars = await getFollowedCars())\n !visitedCars && (visitedCars = await getVisitedCars())\n !hotCars && (hotCars = await getHotCars())\n if (flag.current !== -1) {\n return\n }\n let isShowHistory = false\n if (\n visitedCars?.length > 0 &&\n visitedCars?.[0]?.type !== HISTORY_TYPE\n ) {\n isShowHistory = true\n }\n let isShowFollow = false\n if (\n followedCars?.length > 0 &&\n followedCars?.[0]?.type !== FOLLOW_TYPE\n ) {\n isShowFollow = true\n }\n const catgoryList = [\n {\n category_code: 'all',\n category_name: '全部',\n list: [\n {\n type: 1075,\n info: {\n text: '我的关注',\n },\n },\n ...followedCars.slice(0, 6),\n {\n type: VIEW_MORE_TYPE,\n show: followedCars.length > 6,\n jump: '我的关注',\n },\n {\n type: 1075,\n info: {\n text: '浏览历史',\n },\n },\n ...visitedCars.slice(0, 6),\n {\n type: VIEW_MORE_TYPE,\n show: visitedCars.length > 6,\n jump: '浏览历史',\n },\n {\n type: 1075,\n hide: hotCars.length === 0,\n info: {\n text: '热门车系',\n },\n },\n ...rehandleList(hotCars, 6, 2),\n {\n type: VIEW_MORE_TYPE,\n show: hotCars.length > 6,\n jump: '热门车系',\n },\n ],\n },\n isShowFollow\n ? {\n category_code: '',\n category_name: '我的关注',\n list: followedCars,\n }\n : {},\n isShowHistory\n ? {\n category_code: '',\n category_name: '浏览历史',\n list: visitedCars,\n }\n : {},\n hotCars.length > 0\n ? {\n category_code: '',\n category_name: '热门车系',\n list: hotCars,\n }\n : {},\n ]\n setCatgoryList(catgoryList)\n setType('全部')\n setLoading(false)\n } else {\n flag.current = id\n const data = await getCarList(id)\n if (flag.current !== id) {\n return\n }\n setCatgoryList(data?.category_list)\n const defaultType = data?.category_list?.[0]?.['category_name']\n // const type = window?.localStorage?.getItem(BRAND_TYPE_KEY) || ''\n // if (type) {\n // // 看用户上次缓存的type 这次请求的是否存在\n // const allTypes = data?.category_list.map((item: any) => item?.category_name)\n // if (allTypes?.indexOf(type) > -1) {\n // setType(type)\n // } else {\n // setType(defaultType)\n // }\n // } else {\n // setType(defaultType)\n // }\n setType(defaultType)\n setLoading(false)\n }\n } catch (error) {\n setLoading(false)\n setCatgoryList([])\n }\n }\n fetchData()\n }, [id])\n\n const getText = (type: string) => {\n switch (type) {\n case '我的关注':\n return '查看更多关注'\n case '浏览历史':\n return '查看更多历史'\n case '热门车系':\n return '查看更多热门'\n }\n }\n\n const renderAllCars = (list: any) => (\n
\n {list?.map((e: any, index: number) => {\n if (e?.type === 1075 && !e?.hide) {\n return (\n \n {e?.info?.text}\n
\n )\n } else if (e?.type === 1002) {\n return \n } else if (e?.type === FOLLOW_TYPE) {\n // 我的关注\n return (\n \n )\n } else if (e?.type === HISTORY_TYPE) {\n // 浏览历史\n return (\n \n 暂无浏览历史\n

\n )\n } else if (e?.type === VIEW_MORE_TYPE && e?.show) {\n return (\n {\n setType(e?.jump)\n sendTeaCommEvent('clk_event', {\n event_id: 'common_select_car_menu_btn',\n button_name:\n e?.jump === '我的关注'\n ? 'all_follow'\n : e?.jump === '浏览历史'\n ? 'all_history'\n : 'more_pop_cars',\n brand_name: '热门推荐',\n })\n }}\n >\n \n {getText(e?.jump)}\n \n \n \n \n )\n }\n })}\n \n )\n\n return (\n
\n {id && categoryList.length && !loading ? (\n <>\n \n
\n {type === '全部' ? (\n <>\n {renderAllCars(\n categoryList?.find((e: any) => e?.category_code === 'all')\n ?.list || []\n )}\n \n ) : (\n categoryList?.map((item: any, index: number) => {\n if (item?.category_name === type) {\n return \n }\n })\n )}\n
\n \n ) : loading ? (\n
\n \n
\n ) : (\n
请选择左侧品牌
\n )}\n \n
\n )\n}\n\n// 只有全部分类里面有具体数据,其他类型只有id,需要补充\nfunction supplementList(data: any) {\n const tmpObj: {\n [key: string]: string\n } = {} // id\n // eslint-disable-next-line no-unused-expressions\n data?.category_list.forEach((item: any) => {\n if (item?.category_code === 'all') {\n // eslint-disable-next-line no-unused-expressions\n item?.list?.forEach((car: any) => {\n if (car?.info?.series_id) {\n tmpObj[car?.info?.series_id as string] = car\n }\n })\n } else {\n if (item?.series_id_list?.length) {\n // eslint-disable-next-line no-unused-expressions\n item?.series_id_list.forEach((id: number) => {\n if (tmpObj[id]) {\n if (!item?.list) {\n item.list = []\n } else {\n item.list.push(tmpObj[id])\n }\n }\n })\n }\n }\n })\n}\n\nasync function getCarList(id: number) {\n const json = await fetch(\n `/motor/pc/car/brand/get_brand_series_list?brand_id=${id}&no_sales=0&show_historical_series=1&category_group_optimize=true`\n )\n supplementList(json.data)\n return json.data\n}\n","/* eslint-disable no-unused-expressions */\nimport React, { useCallback, useEffect, useState } from 'react'\nimport { useInView } from 'react-intersection-observer'\nimport Loading from 'Components/loading'\nimport TypeList from './type-list'\nimport Brand from './brand'\nimport CarList from './car-list'\nimport { IInfoProps, ISortProps } from './interface'\nimport moment from 'moment'\nimport { unstable_batchedUpdates } from 'react-dom'\n\nconst BRAND_ID_KEY = 'side-nav-select-car'\n\nexport default React.memo(function SelectCar() {\n const [ref, inView] = useInView({\n threshold: 0,\n triggerOnce: true,\n rootMargin: '0px -88px',\n })\n\n const [selectedId, setSelectedId] = useState(-1)\n const [selectBrandName, setSelectBrandName] = useState('热门推荐')\n const [hide, setHide] = useState(false)\n const [brandData, setBrandData] = useState<{\n letters?: any\n brands?: any\n [key: string]: any\n }>({})\n\n const selectName = useCallback((name) => {\n setSelectBrandName(name)\n }, [])\n\n const selectBrandId = useCallback(\n (id) => {\n setSelectedId(id)\n // eslint-disable-next-line no-unused-expressions\n window?.localStorage?.setItem(\n BRAND_ID_KEY,\n JSON.stringify({\n id,\n time: moment().unix(),\n })\n )\n },\n [setSelectedId]\n )\n\n const handler = React.useCallback((type, value) => {\n setHide(true)\n setTimeout(() => {\n setHide(false)\n }, 3000)\n }, [])\n\n useEffect(() => {\n async function init() {\n const data = await getBrandList()\n unstable_batchedUpdates(() => {\n setBrandData(data)\n const { id, time } = JSON.parse(\n localStorage.getItem(BRAND_ID_KEY) || '{}'\n )\n let realId = -1\n if (time) {\n // 自然日不再同一天就舍弃\n if (\n moment(time * 1000).format('MM-DD-YYYY') ===\n moment().format('MM-DD-YYYY')\n ) {\n // less than 1 day\n realId = id\n } else {\n // over 1 day . invalid.\n localStorage.removeItem(BRAND_ID_KEY)\n }\n }\n setSelectedId(realId)\n })\n }\n if (inView) {\n init()\n }\n }, [inView])\n\n useEffect(() => {\n const token = PubSub.subscribe('HIDE_HOVER_CAR', handler)\n return () => {\n PubSub.unsubscribe(token)\n }\n }, [])\n\n return (\n e.stopPropagation()}\n >\n \n
\n {brandData?.letters?.length && brandData?.brands?.length ? (\n <>\n
\n \n
\n
\n \n
\n \n ) : (\n
\n \n
\n )}\n
\n \n \n )\n})\n\n// 重新处理数据\nfunction reHandleData(data: any) {\n // 处理品牌\n let list: IInfoProps[] = []\n const brands: IInfoProps[][] = []\n const letters: string[] = []\n // eslint-disable-next-line no-unused-expressions\n data?.brand?.forEach((item: IInfoProps) => {\n if (item.type === 1000) {\n letters.push(item.info.pinyin)\n brands.push(list)\n list = []\n }\n if (item.type === 1000 || item.type === 1001) {\n list.push(item)\n }\n })\n brands.push(list)\n brands.shift()\n return {\n letters: ['*', ...letters],\n brands: [\n [\n {\n info: {\n pinyin: '*',\n brand_name: '热门推荐',\n image_url: '',\n brand_id: -1,\n },\n type: -1,\n },\n ],\n ...brands,\n ],\n }\n}\n\nasync function getBrandList() {\n const res = await fetch('/motor/pc/car/brand/all_brand')\n const json = await res.json()\n return reHandleData(json.data) || {}\n}\n","import React, { useCallback, useEffect, useMemo, useState } from 'react'\nimport classNames from 'classnames'\nimport PubSub from 'pubsub-js'\n\nimport SelectCar from '../select-car'\nimport { useResponsive } from 'Components/hooks/use-responsive'\nimport useSideNavStatus from 'Components/hooks/use-side-nav-status'\nimport styles from './index.module.scss'\n\nexport default function ProtalModal() {\n const [show, setShow] = useState(false)\n const navStatus = useSideNavStatus()\n const responsive = useResponsive()\n const isNavRealOff = useMemo(() => {\n return (\n navStatus === 'off' ||\n (navStatus === 'md-off' && !responsive.lg) ||\n (navStatus === 'lg-off' && !responsive.xl)\n )\n }, [navStatus, responsive])\n\n const showHandler = useCallback((type, value) => {\n setShow(value)\n }, [])\n useEffect(() => {\n const showToken = PubSub.subscribe('HOVER_CAR_STATUS', showHandler)\n return () => {\n PubSub.unsubscribe(showToken)\n }\n }, [])\n\n const [visited, setVisited] = useState(false)\n\n useEffect(() => {\n if (show && !visited) {\n setVisited(true)\n }\n }, [show, visited])\n return (\n <>\n \n \n {visited && }\n \n \n )\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"car-modal-mask\":\"select-car-wrap_car-modal-mask__3DWuK\",\"side-hover-item\":\"select-car-wrap_side-hover-item__3corc\",\"active\":\"select-car-wrap_active__lcx3H\",\"lg-off\":\"select-car-wrap_lg-off__3D0F1\",\"md-off\":\"select-car-wrap_md-off__wLsu1\",\"is-off\":\"select-car-wrap_is-off__2MEEm\"};","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}"],"sourceRoot":""}