{"version":3,"sources":["webpack://_N_E/./public/static/code-ic@3x.png","webpack://_N_E/./public/static/new_search_icon.png","webpack://_N_E/./public/static/hover-black-code-icon.png","webpack://_N_E/./new/side-nav/components/feedback-modal/static/img.png","webpack://_N_E/./public/static/new-logo-3.png","webpack://_N_E/./public/static/jiantou.gif","webpack://_N_E/./public/static/newLogo.png","webpack://_N_E/./public/static/dcd-code@3x.png","webpack://_N_E/./node_modules/next/dist/build/webpack/loaders/next-client-pages-loader.js?7ae7","webpack://_N_E/./node_modules/@byted/acrawler/dist/runtime.js","webpack://_N_E/./node_modules/next/app.js","webpack://_N_E/./new/side-nav/static/feedback.png","webpack://_N_E/./public/static/star-black.png","webpack://_N_E/./new/side-nav/components/feedback-modal/static/remove.png","webpack://_N_E/../../pages/_app.tsx","webpack://_N_E/./public/static/dcdm-bg.png","webpack://_N_E/./public/static/right-arrow-gray.svg","webpack://_N_E/./public/static/jiantou-hover.gif","webpack://_N_E/./public/static/icon-switch-btn.png","webpack://_N_E/./public/static/dcar-score.png","webpack://_N_E/./new/side-nav/static/tool.png","webpack://_N_E/./new/side-nav/static/me.png","webpack://_N_E/./new/home/components/dong-che-fen/stars.tsx","webpack://_N_E/./new/side-nav/static/select-car.png","webpack://_N_E/./public/static/hot-star.svg","webpack://_N_E/./public/static/star.png","webpack://_N_E/./public/static/black-code-icon.png","webpack://_N_E/./public/static/new_logo.png","webpack://_N_E/./node_modules/nprogress/nprogress.js","webpack://_N_E/./public/static/live-yellow.gif","webpack://_N_E/./new/side-nav/components/select-car/static/bg.png","webpack://_N_E/./node_modules/core-js/modules/es.string.trim.js","webpack://_N_E/./public/static/right-arrow-black.svg","webpack://_N_E/./node_modules/core-js/modules/es.regexp.constructor.js","webpack://_N_E/./new/side-nav/static/feed.png","webpack://_N_E/./public/static/black-dcdm.png","webpack://_N_E/./public/static/search-local-clear.png","webpack://_N_E/./public/static/black-logo.png","webpack://_N_E/./public/static/search-local-clear-hover.png","webpack://_N_E/./public/static/live-white.gif","webpack://_N_E/./public/static/black-icon-switch-btn.png","webpack://_N_E/./lib/get-link-href.ts","webpack://_N_E/./new/side-nav/static/home.png","webpack://_N_E/./lib/get-location.ts","webpack://_N_E/./components/search.tsx","webpack://_N_E/./components/top-tops-dynamic.tsx","webpack://_N_E/./lib/ie-version.ts","webpack://_N_E/./components/hooks/use-top-tips.ts","webpack://_N_E/./components/header2.tsx","webpack://_N_E/./components/search2.tsx","webpack://_N_E/./components/header3.tsx","webpack://_N_E/./new/side-nav/config.ts","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/child-wrap/index.tsx","webpack://_N_E/./new/side-nav/index.tsx","webpack://_N_E/./new/side-nav/fix-nav.tsx","webpack://_N_E/./components/new-city.tsx","webpack://_N_E/./components/new-search.tsx","webpack://_N_E/./components/new-user.tsx","webpack://_N_E/./components/new-header-switch.tsx","webpack://_N_E/./components/hooks/use-firefox.ts","webpack://_N_E/./components/new-header.tsx","webpack://_N_E/./components/back-to-top.tsx","webpack://_N_E/./components/hooks/use-should-show-entrance.ts","webpack://_N_E/./components/new-switch-button.tsx","webpack://_N_E/./components/right-side-navigation.tsx","webpack://_N_E/./lib/is-real-user.ts","webpack://_N_E/./lib/routeChangeScroll.ts","webpack://_N_E/./lib/cusPageEnter.ts","webpack://_N_E/./new/feed/center-image-wrap.tsx","webpack://_N_E/./new/feed/nav-item.tsx","webpack://_N_E/./new/feed/nav.tsx","webpack://_N_E/../../../src/EventTaget/index.ts","webpack://_N_E/../../../src/mutationObserver/index.ts","webpack://_N_E/../../../src/utils/index.ts","webpack://_N_E/../../../src/intersectionObserver/helper.ts","webpack://_N_E/../../../src/intersectionObserver/index.ts","webpack://_N_E/../../../src/eventCatch/index.ts","webpack://_N_E/../../../src/heatmap/index.ts","webpack://_N_E/../../../src/main/index.ts","webpack://_N_E/../../../src/main/click.ts","webpack://_N_E/../../src/index.ts","webpack://_N_E/./new/side-nav/components/feedback-modal/services/index.ts","webpack://_N_E/./new/side-nav/components/feedback-modal/index.tsx","webpack://_N_E/./new/side-nav/components/protal-modal/index.tsx","webpack://_N_E/./lib/set-visited-series.ts","webpack://_N_E/./pages/_app.tsx","webpack://_N_E/./public/static/menu-bottom@3x.png","webpack://_N_E/./new/side-nav/components/feedback-modal/static/loading.gif","webpack://_N_E/./public/static/search-ic@3x.png","webpack://_N_E/./public/static/code-icon-bg-active.png","webpack://_N_E/./public/static/refresh-new.png","webpack://_N_E/./node_modules/core-js/internals/number-parse-float.js","webpack://_N_E/./public/static/jump-top.png","webpack://_N_E/./new/side-nav/static/picture.png","webpack://_N_E/./new/side-nav/static/fans.png","webpack://_N_E/./public/static/hover-black-dcdm.png","webpack://_N_E/./public/static/dcdm-bg-active.png","webpack://_N_E/./public/static/menu-top@3x.png","webpack://_N_E/./public/static/switch-to-new-white.png","webpack://_N_E/./node_modules/pubsub-js/src/pubsub.js","webpack://_N_E/./public/static/location-ic@3x.png","webpack://_N_E/./components/city.tsx","webpack://_N_E/./new/side-nav/static/live.png","webpack://_N_E/./node_modules/core-js/modules/es.parse-float.js","webpack://_N_E/./new/side-nav/static/video.png","webpack://_N_E/./public/static/location-ic-red.png","webpack://_N_E/./public/static/code-ic-red.png","webpack://_N_E/./new/side-nav/static/rank.png","webpack://_N_E/./node_modules/next/dist/build/polyfills/fetch/index.js","webpack://_N_E/./node_modules/core-js/internals/string-trim-forced.js","webpack://_N_E/./components/user.tsx","webpack://_N_E/./public/static/code-icon-bg.png","webpack://_N_E/./node_modules/isomorphic-unfetch/browser.js"],"names":["module","exports","window","__NEXT_P","push","t","Function","split","replace","m","charCodeAt","Object","defineProperty","value","p","loadGetInitialProps","pageProps","this","__N_SSG","url","createUrl","React","Component","router","back","pushTo","pushRoute","as","href","pushUrl","replaceTo","replaceRoute","replaceUrl","App","origGetInitialProps","appGetInitialProps","getInitialProps","Stars","props","starIcon","starVacantIcon","score","maxScore","className","starWidth","starHeight","stars","i","intersection","Math","ceil","key","classNames","map","ele","index","NProgress","Settings","settings","minimum","easing","positionUsing","speed","trickle","trickleRate","trickleSpeed","showSpinner","barSelector","spinnerSelector","parent","template","clamp","n","min","max","toBarPerc","barPositionCSS","ease","barCSS","transform","transition","configure","options","undefined","hasOwnProperty","status","set","started","isStarted","progress","render","bar","querySelector","offsetWidth","queue","next","getPositioningCSS","css","opacity","setTimeout","remove","start","work","done","force","inc","random","amount","initial","current","promise","$promise","state","always","fromStart","isRendered","document","getElementById","addClass","documentElement","createElement","id","innerHTML","spinner","perc","removeElement","body","appendChild","removeClass","bodyStyle","style","vendorPrefix","pending","fn","shift","length","cssPrefixes","cssProps","camelCase","string","match","letter","toUpperCase","getVendorProp","name","vendorName","capName","charAt","slice","getStyleProp","applyCss","element","prop","properties","args","arguments","hasClass","classList","indexOf","oldList","newList","substring","parentNode","removeChild","$","$trim","trim","target","proto","forced","forcedStringTrimMethod","DESCRIPTORS","global","isForced","inheritIfRequired","f","getOwnPropertyNames","isRegExp","getFlags","stickyHelpers","redefine","fails","setInternalState","setSpecies","MATCH","wellKnownSymbol","NativeRegExp","RegExp","RegExpPrototype","prototype","re1","re2","CORRECT_NEW","UNSUPPORTED_Y","RegExpWrapper","pattern","flags","sticky","thisIsRegExp","patternIsRegExp","flagsAreUndefined","constructor","source","call","result","proxy","configurable","get","it","keys","path","setLocation2storage","location","cityName","localStorage","setItem","JSON","stringify","setSelectedCity2storage","getTeaParam","selectedCity","a","sCity","str","getItem","parse","e","locationCity","city","location_city","is_city_normal","selected_city","sendTeaLocationEvent","event","params","teaConfig","sendTeaCommEvent","mapKey","getLocation","Promise","all","getGPSCityName","getIPCityName","gpsLocation","ipLocation","gpsCityName","console","log","getDatabaseCity","dataBaseResult","latitude","longitude","gpsLatitude","gpsLongitude","ipLatitude","ipLongitude","ipCityName","warn","getCityByPos","coordinate","fetch","then","json","province","cityResult","provinceResult","currentCity","data","resolve","error","encodeURIComponent","dbCityName","catch","defaultResult","timeout","getCurrentPosition","navigator","geolocation","res","coords","maximumAge","err","race","getGPSLocation","handler","keyword","searchMode","search_content","search_mode","sessionStorage","Router","isNewVersion","ResultList","curIndex","item","onClick","stopPropagation","classnames","active","Search","setFocus","setValue","setCurIndex","show","list","setList","searchDivRef","buttonRef","searchDivDom","searchButtonDom","onMouseEnter","add","onMouseLeave","addEventListener","removeEventListener","getUrl","ref","require","type","placeholder","onChange","onBlur","onFocus","onKeyDownCapture","keyCode","TopTips","dynamic","ssr","isHasTips","ieVersion","userAgent","isIE","isEdge","isIE11","test","fIEVersion","parseFloat","getIEVersion","useHasTips","useState","useEffect","live_white","live_yellow","routes","getLinkHref","newVersionLink","text","icon","Header","updateActive","showCity","setCityPopup","useContext","GlobalStoreContext","dispatch","hideSearch","setSearch","asPath","pathname","includes","payload","getLink","useCallback","link","rel","src","alt","nativeEvent","stopImmediatePropagation","obj_text","hasicon","timer","config","hoverComponent","isActive","PubSub","publish","event_id","clearTimeout","children","isNeedLogin","user_id","loginMethod","ConditionList","query","TypeList","button_name","hot_star","Brand","letters","brands","selectBrandId","selectBrandName","brandId","divRef","useRef","letterRef","setCurrent","offsetMap","Map","letterMap","scrollView","size","Array","from","forEach","getAttribute","offsetTop","scrollTop","requestAnimationFrame","scrollHeight","clientHeight","scale","observer","IntersectionObserver","changes","change","findIndex","rootBounds","top","boundingClientRect","bottom","isIntersecting","intersectionRatio","root","rootMargin","threshold","observe","disconnect","preventDefault","backgroundImage","brand","info","pinyin","data-letter","brand_name","brand_id","selected","image_url","applyHttpsImage","FollowStatus","globalState","openLogin","LoginStoreContext","userData","followedCars","visitedCars","hotCars","star","star_black","carBg","rehandleList","loop","j","CarList","setType","categoryList","setCatgoryList","loading","setLoading","setTypeProxy","Car","dcd_score","toFixed","series_id","car_series_name","series_name","car_series_id","official_price","width","height","lazy","cusDefaultImg","category_name","emptyHint","getEmptyHint","useCityName","getRehandleList","getFollowedCars","city_name","count","serializeObject","getVisitedCars","visitedSeries","metrics","counter","logger","message","series_ids","reverse","join","getHotCars","car_count","suv_count","other_count","flag","isShowHistory","isShowFollow","catgoryList","category_code","jump","hide","getCarList","category_list","defaultType","fetchData","find","getText","unique_id_str","supplementList","tmpObj","car","series_id_list","BRAND_ID_KEY","SelectCar","useInView","triggerOnce","inView","selectedId","setSelectedId","setSelectBrandName","setHide","brandData","setBrandData","selectName","time","moment","unix","getBrandList","realId","format","removeItem","init","token","subscribe","unsubscribe","reHandleData","ProtalModal","fixType","setFixType","handleType","setHandleType","setShow","showHandler","fixHandler","showToken","fixToken","useMemo","getClassName","childClickHandler","child","userId","enter_method","ChildWrap","setUrl","routeChangeComplete","VERSION_COOKIE_KEY","events","on","off","setId","wrapTop","setWrapTop","navItemDOM","rect","getBoundingClientRect","childClick","FixNav","pageType","isAutoNav","realUrl","widthClassName","Fragment","hasChildren","isFixType","visible","setVisible","overflow","getContainer","City","globalStore","cities","useScrollSpy","node","querySelectorAll","currIndex","setCurrIndex","cityRef","fetchCities","unshift","initials","handleDocumentClick","contains","toLocaleUpperCase","spanKeyword","query_input_text","query_content","saveLocalSearch","getSearchLink","api_param","decodeURIComponent","search","open","inputeValue","clearLocalSearch","cpl_type","dangerouslySetInnerHTML","__html","buried_point_info","tag_name","motor_id","fetchRollInfo","hot_search_roll_info","default","focus","isShowListRef","inputRef","rollIndex","rollList","setRollInfo","rollTimer","setInterval","clearInterval","getQuery","preValue","fetchComlete","filter","searchBtnHandler","searchType","searchValue","getLocalSearch","currentTarget","blur","storageList","splice","maxList","User","isLogin","screenName","screen_name","logout","avatar_url","ugcUserLink","HeaderSwitch","responsive","useResponsive","responsiveType","setResponsiveType","isHandel","computedResponsive","handleClick","shrink_type","useFireFox","isFirefox","cusHeadType","isFireFox","cusType","setCusType","typeHandler","typeToken","isEnter","setIsEnter","isLeave","setIsLeave","isLeaveRef","inputHandler","handleAnimationEnd","inputToken","title","onAnimationEnd","jumpTopIcon","BackToTop","updateShow","handleScroll","scrollingElement","handleButtonClick","scrollElement","dis","moved","initTop","scroll","abs","scrollSmoothly","bottomSize","pathConfig","SwitchButton","new_home","useRouter","route","useShouldShowEntrance","switchToNewClick","isNew","NEW_VERSION","versionKey","OLD_VERSION","param","origin","switchNewOrOld","menu_top_img","menu_bottom_img","RightSideNavigation","activeNow","setActiveNow","withinView","domID","dom","start_dom","pageYOffset","handleItemClick","dataset","textContent","to","scrollTo","behavior","data-type","isRealUser","realUser","getRealUserFromStorage","clk","scr","setRealUser2Storage","assign","NOT_SCROLL_TO_LIST","isScroll","len","NOT_AUTO_TO_LIST","cusPageEnter","CenterImageWrap","wrapClassName","duration","Item","order","category","uniqueIdStr","imageList","commentCount","isVideo","isSiglePic","xl","isNonePic","imageIndexClass","formatDuration","author_id","group_id","tabsMap","tabs","label","withRouter","videoList","setVideoList","wrapClass","scrollRef","tempStorage","gidRef","setKey","setUniqueIdStr","gid","handleChange","getChannelId","channelId","action_extra","dislike_info","channel_id","beforeRef","setUniqueIdStrProxy","isUpdate","channel_name","tab_name","content_type","video_duration","star_time","pre_page_id","stay_time","Date","getTime","setHandleTypeProxy","twoXl","setTwoXl","shadowStatus","setShowStatus","lg","conditionRef","timerRef","handleMouseOver","refresh","has","fetchId","loadCount","playLoad","tt_from","motor_feed_extra_params","fetchFeed","duplicate","history","replaceState","loadMoreHandler","max_behot_time","behot_time","concat","handleGoDetail","sendTeaStayEvent","feedParams","page_id","sub_tab","sendTeaEnterEvent","end","onMouseOver","image_list","user_info","comment_count","listenersMap","listener","TypeError","listeners","Error","stacks","eventName","callBacks","MutationObserver","mutationRecords","mutationRecord","attributes","childList","subtree","findBaselog","logs","attributeValue","baseAttribute","obj","performance","nodes","ix","siblings","l","sibling","getPathByEle","tgt","isHtmlOrSvg","y","ele_x","x","ele_y","ele_path","dw","dh","innerHeight","error_type","tags","Sentry","scope","innerErr","last","later","wait","func","context","timestamp","callNow","immediate","range","handleIntersect","entrys","entry","currentY","currentRatio","previousY","previousRatio","currentT","stay","currentStayRangeMap","isUndefined","currInterest","IntersectionHelper","now","currentTick","previousT","elapsedTime","previousIndex","timeInPerSlot","cb","interests","k1","stayWeakMap","r","idx","point","Number","currentTriggerPoint","rangeMap","rangeStayTime","times","totalTime","collected","SCROLL_UP_LEAVE","stayMap","direction","k","v","threshHold","prev","intersectionObserverEntrys","intersectionObserverEntry","SCROLL_DOWN_ENTER","SCROLL_DOWN_LEAVE","SCROLL_UP_ENTER","fns","eventHandle","DEFAULT_OPTIONS","version","click_name","catchSyncErrors","errType","cusEvent","sendLog","detail","getClickPositionParams","area","CustomEvent","logPath","module_name","findShowArea","deepFindLog","onMessage","page_origin","page_version","page_pathname","page_search","adaptConfig","logAttributeMap","option","focusCallBack","blurCallBack","intersectionOptions","intersectionObserverCallbacks","intersectionObserverDebounced","debounce","eventCatch","viewWeakSet","dispatchViewLog","getAttrFrom","attributeName","attributeExtraName","startTime","logJson","endTime","outViewWeakSet","viewOutWeakSet","fixIosClick","eles","intersectionObserver","extraAttribute","addedNodes","currentNode","items","targetElement","Wil","findExtraLog","extraLog","uploadImg","img","form","FormData","append","method","success","submitFeedback","tel","content","URLSearchParams","tea_cache","web_id","cookie","mode","headers","sendBtnTea","FeedbackModal","onClose","uploading","setUploading","setContent","setTel","empty","tel_valid","waringVisible","setWarnVisible","isSubmit","setSubmit","imgList","createRef","contentLength","telLength","isOutRange","closeHandler","xss","filterXSS","err_code","Toast","isModal","files","url_list","image_height","image_width","image_uri","footer","border","appear","enter","exit","closable","rows","autoFocus","spellCheck","maxLength","click","display","accept","imgChoose","memo","feedbackVisible","seriesIds","cardIds","handleAsPath","carIds","getSeriesIdFromCardsId","storedSeries","seriesId","Set","String","values","acrawler","LiveStreamWindow","MyApp","safeGet","unicodeToChar","fetchAcrawlerCaptchaCheck","nonce","encodeURI","sig","sign","_pageType","_cusHeadType","routerPath","getPageEnterId","maxWidth","minWidth","margin","_pageClassName","mainRef","paddingStyle","unbindRealUser","fetchAcrawlerCaptchaToken","cookies","extraArr","pageId","toLocaleLowerCase","Slardar","sampleRate","bid","pid","ignoreAjax","hookFetch","ignoreStatic","tt_web_version","domain","host","extra","scrollRestoration","initSlardar","teaInit","appId","zt","getZT","enable_stay_duration","maxDuration","evtParams","pc_real_user","media_user","is_dev","is_boe","user_data","user_unique_id","user_is_login","_staging_flag","teaStart","isCusPageEnter","setPageId","setVisitedSeries","logEvent","teaEvent","teaParams","Tea","resetStayDuration","beforePopState","pushState","scrollBarWidth","innerWidth","clientWidth","paddingRight","signal","padding","isValidUser","hasScroll","hasClick","registRealUser","renderHeader","renderContent","_pageBackToTopBtnBottom","whitespaces","$parseFloat","FORCED","Infinity","trimmedString","factory","messages","lastUid","ALL_SUBSCRIBING_MSG","hasKeys","throwException","ex","callSubscriberWithDelayedExceptions","subscriber","callSubscriberWithImmediateExceptions","deliverMessage","originalMessage","matchedMessage","immediateExceptions","s","subscribers","callSubscriber","createDeliveryFunction","topic","position","lastIndexOf","substr","hasDirectSubscribersFor","Boolean","messageHasSubscribers","found","sync","deliver","toString","publishSync","subscribeAll","subscribeOnce","apply","clearAllSubscriptions","clearSubscriptions","countSubscriptions","getSubscriptions","descendantTopicExists","isTopic","isToken","isFunction","parseFloatImplementation","self","bind","METHOD_NAME"],"mappings":"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","file":"static/chunks/pages/_app-1cef9a53522e1ab087c4.js","sourcesContent":["module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAMKADAAQAAAABAAAAMAAAAADbN2wMAAABxklEQVRoBe1ZO3LEIAyFTKpcwpPtnDa5Tk6X66Reus34EtsSvNvog4UwsLO2cWUheEhCFm9kY/rTI3DsCFjq/nD6+DHGj3Q8T7Zuupy/4ZpWuK9wk/t7MN6bTz6eMWJ9ZHIb3JfITpsaipwAtN9ejfUOjiy+exvSzr8t6pGiHq7sQDB+urgvtPeCMJzGX3XqVcTdfApt3gE5hUi6DO8jKi/Tn2NlmCxRiSW4mz+B7oAqRxpOyvoGauU89acEt6cQjeajZTmFAj243bAaq+5UQjMzMI56uLIDM7dRM1N0RSQcqYe7+W8gcgLWBQaaiGBKHTDY0wqXbdQHegQOFQFGh1t1D/S4uKOB12HdfFKRKtSme3Br1WjuFFYBgT1MZ8we7wH4CdXrHkBUYwhuVkcDI0VSCEyo2D0AqMF+3O3I6mggoP2nEHH3ESJlqgmWK6cQMbike0CgBJEyVZmX7b0KCYGqqtIyVc5ys1Koqs0AjP5LAKrka5YDJd2DpCUrJ2Q5sHKP5DKJ70i6GfgpHEA8ifEdmQvJDtCaLMUyUa+lpSU62YFmXYkSk/HaPd4D2pqMI4ElXq8DgwPdDqpfq8O7dqlH4IgR+AdDXbqZyQzh/QAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAIKADAAQAAAABAAAAIAAAAACshmLzAAADaklEQVRYCe1Wz2sTQRSeNxsRQqVNQ6ko2iYRShtBEDyJYAsVL16EHvxBBS2C4EHBoyKKR0FBDyJ68UcV+h94sEIpHsRCa7e5mKQiLdIKqaKFtmaf700zSzbZ2d1ooQcdWGbnzfd98/bNzHsrxL/eoJEAZLPZpuVlSKPEHcwDB+bjcSzYtv2jEZ1qbKgDAwMD1ruJmdPCcU4KgF5E3OIRAFgTiKNCyuED+3uejYyMlKvnw94DHchksn1lB++jwO4wIZ4HATlLwsV83n4dBb/OMSA709lLiM5tmrYUBOAXeTsGAKMO4hzbJMBOikgvCnGIohBTOCHKAPLKbMG+WxkHdr4RqCx+RzMJ9MSS1tV8fvqztlX3mczeXWWnfIscGdR2cuJyFCfqHOCw/3KcVyRkAYgVFPLsp4I9rIWD+nS655Qj8DGi2Eq4ckzKI2HbIasF+cDxnpNNhV0KOBd1cdYpFGaeM6eiqbRYszL27TyTyytwhvZ0iJEc9mIxd9OXFWAslRY/JBJtaYLso6dt/svXwlJpcdJE8USArtoJBaQDx3tuIoXZFZc0FI6vb0BzHeAkw/ecsfT1Y6YDF6DlTjGXNZSBNJW2O+t9cR1QGa6SZPiqeWGNj7QGJy7WNim4Duj0ykB9z02kKPZqjWrtWq7rQO3ERo4poRnXcSe4sOhFOcPp9z/tqzUsYS2YdFwHuKrRvq0xkNOriRDVrjVYs6lJ5kw81wFVUrmqUePczunVRAqzM5c1FA7F26mpqZ8mjuuAAkj5Yp2EMc7tJlKYXXErxQksfBSE9zhA9fwpl1Qm0BcMdqSzgUnET5jrAXPVHEC+tTn+0g+nbZQvvK22GHFu5xzvRfmPaooRgmX1zX6cfuOPXrd6agGbKJcXE63t3ykGR2kYo685zrk9mdz+vlRaIHt94z1vbknec4S4wRyNkAjjS0uLE3rs19dFQIP+4oeEfFaNtVEKeb5YtI3nwOgASzT6S0a1JA9SDkEZ9zjCeUgSoU7UbQEvrBtvR3//4QdUUouAGKc7vZvmPBy+53Rwx6UlriVb4hdy9mSBw96aaJ+jf8ljhAfueey3HYER0I7ovqvr4LbV1W8pzu2cXjnDcZIx3fNUKjsUNRJ6jQ3v2YmOVLdDD3ame65v+AJRBNmJTVs8ioP/MZsagd+c23STPjMQEAAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAMKADAAQAAAABAAAAMAAAAADbN2wMAAABr0lEQVRoBe1ZQXLCMAwkTE/8hDN8p6/rd7jzk15TeRpm1oqQ5FiGOjUXZMleS/LGEeJwGJ+Rgf+dgYmHP8/zF+nOXF84vk/T9IlrWuF+4CaLnJy/CPpaVRPcY61X714vnQD69E2DOyoUOWX4pNjRFIZrBZC4fMWdn8nE8RvZvNQLw+2eQt0HYFEoYwzRZEYF0Wt1DaPdK9fgdn8CIwAvTVrNK3oGojjPg6nBHRTi2Xz12KLQeXnDevwqqWDDcK0AUm3jLQ88QT7mhOF2/wxIJ+CtPh/ZlL4lDEknrdV0ERga/rCNDHSXgVU5TPf+u7sSWUeD+ZPZUralW6hJ94D22oqrrtvlewCfg7DuAYKSzHFTlr0djQxKohBOCOseICjJGe5Sb20qWXZPIZa4lwx5pZro9fRjUShbSEfdpCuRbfL7LLjpNCjEsrd16K0yV/OKKLTVO2sd/ajP/kuw5qO9KICa7gFuGikXBRC5MWJp9Y5mSxh/IgDyQ6t3NJsZAL+TMXFcVu9rPjlqbJ1AWPcgymGOs8v3wOqu5VE7xhIG6lBOcDhG2bI5XBlTRgb2nYEf/udrq6D00N8AAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAACUElEQVRYR+2Xv2vUYBjHv0+uR09cdFDhJkVwc1DEycGCg+APEOGas1OgSUgU0UGwICLaUhClULlLk+ttauIpDg66af0DRHFwE1wc/IEUp4LmfSTFSHLcNbk0B0EuU/Lmeb/P5/k+L8n7Egp2UcF4MAJK6kixHXIcb58P2ElV5PlewL98Xpt6F2rGHGo63lcCduSZMIXWJ0OT9/QEshyPUwjkHmJo8j9jYg7FgHyeyD1zVLBEr8LHVEDRoGGARYsfAfVyOBeHLMcL+n50PYHPE4ZRX8nazhFQknP/p0MN270RVi4JrPRbQ5blrq+zcrn0fnq69mNoizqxDcudwyzEHAHH/sZ+YKJ5U5283z03l5b1A7Ltzn5BPAvw6d4x7FbKFVNRzqwmFdX315HmS23b3l5BfAugenIiWmXCrKFO3t0oNhPQvbZbHftN10AwusUZdOfL550z1eq3rYK4DfDZeAy/rpTXjiuKstYLbCCgZvPBdoxJVwAyCNgWE2QsSxAzun7ue3S8absnJKI2A7ui40x8wVTrjW6oVECLi8/Hx7f8vCgETBB2x4SZH5ZA13Vd/rhRK6yWNw/G1XgR/NbQ6wejY4lAluOdBOEmGAe6rO8widumOvUmaf2E75faTw4J/9cCgY5E5jw2NLkWPicCBYFLrUfPmPlUcE+EpwypYai1l2lBuuPslndJMBbC8YG3H4FLzNBAsExNfpEVJDpvqN+hLIADAwXbiyyJUs8ZdAubWjiHwL5rqHDHoMIdFHNwf9MSxT7bb7q8HARGDiWZ+Aezbkc0UbiKpgAAAABJRU5ErkJggg==\"","module.exports = \"https://sf6-scmcdn2-tos.pstatp.com/motor/pc/_next/static/images/new-logo-3-7c041f503962ff8907b1bb1b65c25db4.png\";","module.exports = \"https://sf6-scmcdn2-tos.pstatp.com/motor/pc/_next/static/images/jiantou-68cce4751425e1b9478fc569686ff06e.gif\";","module.exports = \"https://sf6-scmcdn2-tos.pstatp.com/motor/pc/_next/static/images/newLogo-8c7aebe79e84eec350e29ac0b830bfea.png\";","module.exports = \"https://sf6-scmcdn2-tos.pstatp.com/motor/pc/_next/static/images/dcd-code@3x-7798dc19b4c261272684645a11a3b1dd.png\";","\n (window.__NEXT_P = window.__NEXT_P || []).push([\n \"/_app\",\n function () {\n return require(\"private-next-pages/_app.tsx\");\n }\n ]);\n ","Function(function(t){return'\u0013e(e,a,r){\u0014(b[e]||(b[e]=t(\"x,y\",\"\u0014x \"+e+\" y\"\u0015)(r,a)}\u0013a(e,a,r){\u0014(k[r]||(k[r]=t(\"x,y\",\"\u0014new x[y](\"+Array(r+1).join(\",x[\u0016y]\")\u0017(1)+\")\"\u0015)(e,a)}\u0013r(e,a,r){\u0018n,t,s={},b=s.d=r?r.d+1:0;for(s[\"$\"+b]=s,t=0;t>>0\u001c65:h=\u0011,y=\u0011,\u0011[y]=h\u001c66:u(e(t[b\u0016],\u0011,\u0011\u0015\u001c67:y=\u0011,d=\u0011,u((g=\u0011).x===c?r(g.y,y,g.z):g.apply(d,y\u0015\u001c68:u(e((g=t[b\u0016])<\"<\"?(b--,f\u001a):g+g,\u0011,\u0011\u0015\u001c70:u(!1)\u001c71:\u0010n\u001c72:\u0010+f\u001a\u001c73:u(parseInt(f\u001a,36\u0015\u001c75:if(\u0011){b\u0016\u001dcase 74:g=\u0012<<16>>16\u001bg\u001c76:u(k[\u0012])\u001c77:y=\u0011,u(\u0011[y])\u001c78:g=\u0012,u(a(v,x-=g+1,g\u0015\u001c79:g=\u0012,u(k[\"$\"+g])\u001c81:h=\u0011,\u0011[f\u001a]=h\u001c82:u(\u0011[f\u001a])\u001c83:h=\u0011,k[\u0012]=h\u001c84:\u0010!0\u001c85:\u0010void 0\u001c86:u(v[x-1])\u001c88:h=\u0011,y=\u0011,\u0010h,\u0010y\u001c89:u(\u0013\u001a{\u0013e\u001a{\u0014r(e.y,arguments,k)}\u0014e.y=f\u001a,e.x=c,e.z=k,e}\u001a)\u001c90:\u0010null\u001c91:\u0010h\u001c93:h=\u0011\u001c0:\u0014\u0011;default:u((g<<16>>16)-16)}}\u0018n=this,t=n.Function,s=Object.keys||\u0013(e){\u0018a={},r=0;for(\u0018c in e)a[r\u0016]=c;\u0014a\u0019=r,a},b={},k={};\u0014r'.replace(/[\u0010-\u001f]/g,function(m){return t[m.charCodeAt(0)&15]})}(\"v[x++]=\u0010v[--x]\u0010t.charCodeAt(b++)-32\u0010function \u0010return \u0010))\u0010++\u0010.substr\u0010var \u0010.length\u0010()\u0010,b+=\u0010;break;case \u0010;break}\".split(\"\u0010\")))()('g,$@drbms!l!n Иb/s\"g,&Usz`dlms#g,.}jcb{|zFbxjx}~ms$g,(lfi~ah`{ms%g,)gk}ejo{cms&g,&qnfme|ms\\',!^s(,)|doikgauus),,jabSysaWzrrs*,(|fY~d`hs+,&jbfn~cs,,\\'nfmosCks-,*icmM`ttSgs.,&eoi{Ks/,)ziy|f~vs0l#l*ms10s2yWl ._b&s o ]1l l Jb&l!l Bd>&+l!l &+l!l 6d>&+l!l &+ s4y=o o ]7q\"21o l q\"18o ]4l 2d>& s6{s5yMo o ]8q\"21o ]2Ld>>b|s!o l q\"18o ]4l!& s7yIo o ]6q\"21o ]4o ]2Jd>>b|&o ]3l &+ s8yǽ,`\u0004*&3#-r\u001d\u0003:\u001b\tt}a\u00026\\'%`b\\r\u001ff\\nkop\u000b\b\u001f3%\bU-(\u0007\t\u00161=%;\u0019\u0017\u0003)\u001a;\u001c\u0001\\r\\rO?.>\u0019\u001a/\t=\u001as!$ s\"0s$l o ],ml$3+d\">=kÝl vo ].mxl$v1+s$[!cįb&@d[!c+s\"l\"l!vo ]/mxl#i$5j40b&[!c+s\"l\"l!vo ]/mxl#࿰b&6d>[!c+s\"l\"l!vo ]/mxl#._b&[!c+s\"jrl o ],ml$b-0b>kÑl vo ].mxl$v1+s$[!cįb&@dk6l vo ].mxl$[!cįb&8d[!c+s\"l\"l!vo ]/mxl#i$5j40b&[!c+s\"l\"l o ],ml$b>k6l!vo ]/mxl#࿰b&6d>[!cj#$!=+s\"l\"$!=+s\"l\" s9yĶo ]%v,-n|jqewVxp{rvmmx,&effkx[!cs\"l\",%roc|a.Pal\",&nbanb@al\"v,*mnxNaadtjg[!mx$\"2d[!cs#l#,$bjhs,*;?|u.|uc{ual#v,(n`fgXhv{mx$$龘ฑภ경2<[#c}l#,*ycmiaxR}ga2al#,+xdby@vwav`M1al#,)zbd{Nacc,$hlkbal#v,#bvfmx88802[%c}l#v,&uszfanmx[ c}l\"v,)}eOmyoZB]mx[ cs!0s$l$Pb0s\"l\"l!o ],mbyĩ[ s o ]&,\\'wd|mbb~ms!l!v!k#}[ s\"0s#l#l\"o ],mbJNHAL@@,4Y|uewju}h=M~NR\u0002pAWOA,&Khfhid,0]~||`lfr8Zuioth~,)DY+Kbzgyr,*GX,B{{|~}x,*GX,]I`dy{p,7ZK9H~zxlzNBG\u0003wDHT\bzOYEK,-@]/Cp|`4Fseq,(EZ*Xigi,&K^Z@KO,*GR^DOK0A@\\\\,(Xhfjxd``,1Asuayw9VrrrjfPD,+Xijaj0A`zza,,_hi`u1Apf|fc,([lmdi-[F,.]jw~w3A\\\\6[q~ro,1Bwt{p6BQ9I~qt|pLE,/\\\\uv}v4@_7K`wysq,&Rf`fgj,%Qojmz,/[y|w`4[s`8Kuv}s,2Fzype7V|m;Nrs~N\u0001rp,,Xkmerzv`5[D,\\'Qm{njbl,)^cekigawb,+\\\\ecikyu`4\\',+\\\\ecikyu`4&,8Y{{u=SK\\0bMM@@HTMM\\ngEJF[,4Uvws}tc;YsymAWGG\u0004ics,0QU]QQ5UVKUUUYb\u0001fFIL,4Vpdyyk~;QI>\\\\OOFFJVCC,2Pvf{~vj}\\\\zouwpN\u0001`w,.Ljbzrfq[x|9XO,*Hbk-Mnc}}},\\'Eagdn~I,.Lcqryrpqse8PNX,-Obnyc_w]AU7LM,)Keoccg/\\'#,2P|pzx~8.(;SqzlTXNF,3Q{qyyq9-)]D\u0001`w,&Ehzkog,*Id~ign0_wd,)JeyhdoZ@R,+Hc`jbbf|zp,\\'Dg{eeiy,&Erkbed,(K|xgv-C[,(Lhe\\\\h`g,\\'Ci|zcec,%Agqam,+ON-BLT1Fvye,)MOGENG@EB,\\'Cmggj~f,(LOAje ]M,%Aocg},+Oeabj~xsFDV,#GMK,)Me`Oeob`p,%Ais}d,(Lf~~aNfj,&Cez`gj,4Qqavj}szr=M|RHRW\u0004lrd,(Meo{dl`{,5Pxptpis<,/.\\0wKUEFC\u0007j},,Ici}qgwag5[C,2W}sgwa}ki\\\\sivvC\u0001`w,-H|nc1P|xq6^LZ,-H|nc1Vvy|6^LZ,.K}qb2_}r~c8PNX,/Jbpa3Ypr~mt:RH^,+Nyn|`cxsFDV,(M|zci`gn,-H{xtzu5CTYJ,)L_YC^ZF\\\\T,.Kweq !%6U|9XO,(Nhdl_b`h,-Kkcyi2G}az~v~,(N`rnh~w|,&@HF]CE,2T|{az~qn;QI>SIFJW,%Ciu|l,*Lymce]etz,*Lymc}fcrs},1W`vqsdz/++;^qu?bu,*Lyih}fqDBP,0Vcwvgao{}9Ixntnk,0Vcw}w}6D{kskh=SK,1W`}RycpPNX<_u?bu,(N{bxjk},(N[__EJK],&@r||xj,,Jxzzbp2Q5TC,,Jxzzbp2_`5TC,,Jxzzbp2^p5TC,.Hzdd`r4OT{s9XO,.Hzdd`rVywts9XO,(Ohhyebbn,+Lmabfqcv3VA,\\'@i|~jad,)Nonvl._b~,-Jk`}tfa&&\\'7ZM,0Wt}~qad%+(:Sj=\\\\K,0Wt}~qad%+(:Wh=\\\\K,1Vw|Gywu8.*(YvLM\u0002pEKU\u0007}E^YM\\rl@\\\\U\u0012p[[RRVJ__,%Bot`h,=ZrpUBGPP@T\u0007e}\\nnTY\\\\N\u0010r]]PPXD]],&AH\\\\AKF,+LCYFN]1P\\\\XQ,/Hdvj4Zzs8Jnbpx,+Lcxjv0Bf|aa,2U|aqo_yw~osrrzD\u0001`w,,Kb{ki^^@`5TC,2Uf~tdvlp:H}sy~M\u0001om,%Bskad,(O|fbaNfj,\\'@}gmxye,*M~bj}zxRzv,+Lycz{y{3Y[,0Xpwg`pxd{qm~uq{m,3[ugzxo9Itptz?iUCOMF,*Bj~gawe}},\\'Omh~ci,(@lce-]L,(@lce-ZL,$L@JQ,&Nbzhfo,/Gyvz3@zarj9N~di,9Qsi}zwqO\u0001iBOP\u0006`G]BBO\\r~]_,4\\\\|dvpttQEV\u0002wEL\u0006k]L,1\\\\{pfzex~m:Kt|ylp@,0]xqa{fyql9Nzu=Rz,0]xqa{fyql9Or{ukm,/Byr`|gzpc8@{Syt,2_zwgydwn;Et>]AHVJ,\\'JagmGeX,-@gaw]{FK]]D[J,2_zzrZ~MFRPO^M2eYVa,,Ad`h\\\\xG>QmbU,&Knf`ee,*Gbbdaa0A`|,&Knz`kf,,Ad|fq|2U}mss,\\'Jaz~yma,&Khllxe,-@akuc|3Zz87*),6[xvx:Wun?sNNJ@\u0005osk\t~,/Bu|x|wy8[{rht,$IJHH,)Ded`Oa}q,)Dxx,Hoyub,+F_-Bf~tVaub,)DY+Ad`lx~,*GX,]Cf~rz|,6[D8K}yo{qCD\u0002pT@ENIE^R,,A^.ZY1U|`}t,(E]*Nty|n,%HSTMF,\\'J^)Hd`d,&Hfllof,(Fhx`e~gb,%KCQAZ,+Eiz}/W~f{}v,-Ckxc1U|`}tUM,+Eiz}Hez3VA,0^xstugw7]w}i}k{{,-Cgnwp`r4Fy{q},*Ddxhy`bezj,\\'I[`gXyc,%Kfdh,.ALB1S3Qmbrv},+D`i.Lufffl,3\\\\xq6Rv~vrou>KEYV\u0003iq,$Kk,\\'Hfpr+NY,&IW\\\\@GJ,/@bxkr4Fwyxw;QS,%JUFCH,/@jYs}p|ueyn;^I,0@p~rwp6D{kskh=SK,\\'Wiysyy~,)Ykyoecj~e,)Ykyxt.CUE,\\'Wmnkxy~,(Xlx{iy{n,3Cqgfrll{;HtjsIOE\u0003iq,*ZnxdznR~~w,(X`i`{dmd,4Dywylx}~rxj?cIGQKNCB,(Xekrndbc,(XDcekAgZ,-]Cf~v^zA8Sol[,,\\\\ba}0C{p|tds,&Vh{}oy,/_bfvfWyswws;^I,.^]Y_QV@ZAY8U_O,(X{cxxd`n,+[XOo}~d3VA,*Zrxeohcs`,%Wgf~`,+Ymjk/Yes}v,%Wgqal,/]ysp|z$%&8[~;^I,(Zfi`{hbc,2@|w~artu:XsszzNRGG,3A{v}`}uv;YejmA\u0001`LHA,#Qka,%Wijig,.]n{zs4Xw}yuvz,,_l`{q1Tv4YSC,*Yjzbwj0]WG,\\'Tklz~h,&Udz`z,.]lbxbg4XB7Zvv,)ZIYE]ZF^P,&Ubz`lj,)Zoyeko/RE,,_h|fvp2G|5TC,1BzvxysnNvvzri{?bu,([aoy{bak,-^f`~p`3Vtxptx,/\\\\x~epugr7_vnsu~,&Uoz|~b,)Zclboanbu,*YB@F]LBTW],&UneAob,1B{~dyqq|~;]o}IB,7Dqtjwu{wzD\u0001cQEGOD\boCSII,&UneZe,+Xe`]z~Jh\\0bGM\u0004hr\u0007kFDOIC]JT\u0011wK@GW\u0017zVV_,.Zv`~Gcf|ql9XO,\\'Rf`id~c,\\'Rf`|n~~,4A{a}ki;_X>*\u0015\u0001oF@LSJ,1D|zbpdd8ZuuxxplEE,&Ss{hkc,(^hmjnb`k,$Rdhn,&Pnbhsj,.Xf~t`3\\\\txs8PNX,(^`y~ma[F,\\'Qakghd,/Y|pvzy|d7Kzhrli,&Puagnj,+\\\\i~zbyagqg,\\'P@@^EIT,*]bhh.Cqe{},-WovT~}eb7ZM,-WovYg~zfb7ZM,0Jpbu\\\\`{ykm:_q=\\\\K,\\']iylbbb,/Uec{p|5T{s\\\\b;^I,,Vx|fsy2Vl5TC,(R^KocokI[Ȇs#[ s$l#%s%l%u&kŊs&l %s\\'l\\'u&kĻs(o ]%v,-n|jqewVxp{rvmmx,$wugi[!cs)l),)`deiF[]],-`cb}|~yx{{tpal),%vr~dlm,(nfd_dtj,$37val),%vr~dlm,*ldbyHn}x~jl&$!,+l(+ao ]%,$fjb~mv,+j|}katRzzxqmxl)[!c}l)r+offsetWidthl!l(md#!==v!k;}l)r,offsetHeightl\"l(md#!==s*o ]%,$fjb~mv,+yi`ayuRzzxqmxl)[!c}l*k>l$vr$pushxl#vo ]-mxl&[!c[!c}j\"jjﻰl$vr$joinx$!,[!c s@ysul d\\',typeofo ])d#===v!k)}l zd#===k#$ ul d\\',typeof,\\'egffnmcd#===k-l k%$!1j#$!0 l sAyC(:o ]\\',.}jcb{|zFbxjx}~m!! ) %{s t sByA(8o ]\\',,`bmn|Bf|ftqrm!! ) %{s t sCy>(5o ]\\',)`doiukkTSm!! ) %{s t sDy6o ]!n v,\\'`m}^bahmx[ c sEyJo ]Ao ]Dz[ c&o ]Ao ]Cz[ c&+o ]Ao ]Bz[ c&+ sFy`o ]\\',&udzloems l ,%roc|amo ](+l ,&nbanbm+o ](+l ,*id`b|Kuaf{m+ sGyUo ]\\',&udzloems l ,*k}mdbXyuf{mo ](+l ,+jzlgcXt{t|am+ sHyÇgr\\'Promisey¸,*mnxOo{dt`jo ]&d\"ink›o ]&v,*mnxOo{dt`jmx[ cvr$thenxyuo\"] l ,(kakykd`hmo ](+l ,,oeo}wx|t@|{rm+o ](+l ,/kybq{ugq~v~Nrqxm+o ](+l ,%icqmem+&} [!c}j&l $ &} n! sIyÛ,.cnhE}fw}Fxqwnhs 0s!uo ]&l md\\',typeofo ])d#!==k+o ]&l ms!jEuo ]&l md\\',typeofo ])d#!==k)o ]&l ms!(Ho ]%vr+createEventx,*^dynfJft|g[!c}ts\") &{s#fs\",,ccz`erz``tdco ]\\'d\"ins#l!$!_+l\"+$!_+l#+ sJyåul!d\\',typeof,&usz`dld#!==k! l $!=+s\"l!vr%splitxgr&RegExp$$[;&]$ n\"[!cs#0s&l&l#o ],mb13\f\u0004\u0001\u0017\\r\\n\bXs&l&,\"s>gr2encodeURIComponentl\"&+$!&++s&o ]Tzl&yngr$lcspvk+}l ,%rceammkVo ]\\',,`bmn|Bf|ftqrmv,\\'tm}Ci`mx,\\'XW~oieil ,%rceamm[\"c} [\"c} sVl yٶo ]&vk%}o ]\\'vk%}o ]%!k! gr&Objectn v,)z~j~yZf}tq!nv3q!fvo ]Eq!tgr&Objectn v,)hhb`dzfubq!nv3q!fvo ]Fq!tgr&Objectn v,&effkxq!nv3q!fvo ];q!tgr&Objectn v,*~bah}{q|b\"q!nv3q!fvo ]Eq!tgr&Objectn v,(xekjb|bq!nv0q!fgr&Objectn v,3{ugr`ykXss}jRSGMG\\\\q!nv0q!fgr&Objectn v,,hhxfst_vyzdnq!nv0q!fgr&Objectn v,(dhdlylijq!nv0q!fgr&Objectn v,)ekekxohubq!nv0q!fgr&Objectn v,*xnbbzdx}}q!nv3q!fvo ]Gq!tgr&Objectn v,/nfp{Fpextlnrssq!nv3q!fvo ]Hq!tgr&Objectn v,)ziyih`[aq!nv1q!fgr&Objectn v,*yh~hka\\\\ttgq!nv1q!fgr&Objectn v,0ttdzwpF~`|vI}iwpq!nv1q!fgr&Objectn v,*zyci{ldBgqq!nv0q!fgr&Objectn v,\\'ei}~n~tq!nv3q!fvo ]Iq!tv1q!pgr&Objectn v,)}e~oeGav~q!nv3q!fvo ]Jq!tgr&Objectn v,(|`gnvb`jq!nv3q!fvo ]=q!tgr&Objectn v,*~bah}{q|b!q!nv3q!fvo ]Eq!tgr&Objectn v,\\'`x|Cejbq!nv3q!fvo ]>q!tgr&Objectn v,+aKaadb^zgaq!nv3q!fvo ]@q!tgr&Objectn v,+{`xif~b^zgaq!nv3q!fvo ]?q!tgr&Objectn v,*~bah}{q|b q!nv3q!fvo ]Eq!tgr&Objectn v,)|yn~Lij~eq!nv0q!fgr&Objectn v,*o}iM`z{vq!nv3q!fvo ]Lq!tv,(|}U|iogkq!mgr&Objectn v,+xucznhT`a{gq!nv3q!fvo ]Nq!tgr&Objectn v,,blzfft^vzrbq!nv3q!fvo ]Oq!tgr&Objectn v,%wrdAYq!nv3q!fvo ]Pq!tv1q!pgr&Objectn v,(dfijxdaaq!nv1q!fgr&Objectn v,)oz]i}fq!nv4q!fv,%4(1&9q!rgr&Objectn v,(kecnbyGkq!nv3q!fvo ]Sq!tgr&Objectn v,*~bah}{q|b\\'q!nv3q!fvo ]Eq!tgr&Objectn v,+ntykatW{vxqq!nv4q!f[As [ s!l *%s\"l\"u&kĖs#l l#mr!f0d#===k>>q!1o!o ]>>&+o ]5l.l!b^&+o ]5l#zl(o ]&,)|yn~Lij~em[\"cl$b%@d\n\nexport type AppProps

= AppPropsType\n\n/**\n * `App` component is used for initialize of pages. It allows for overwriting and full control of the `page` initialization.\n * This allows for keeping state between navigation, custom error handling, injecting additional data.\n */\nasync function appGetInitialProps({\n Component,\n ctx,\n}: AppContext): Promise {\n const pageProps = await loadGetInitialProps(Component, ctx)\n return { pageProps }\n}\n\nexport default class App

extends React.Component<\n P & AppProps,\n S\n> {\n static origGetInitialProps = appGetInitialProps\n static getInitialProps = appGetInitialProps\n\n // Kept here for backwards compatibility.\n // When someone ended App they could call `super.componentDidCatch`.\n // @deprecated This method is no longer needed. Errors are caught at the top level\n componentDidCatch(error: Error, _errorInfo: ErrorInfo): void {\n throw error\n }\n\n render() {\n const { router, Component, pageProps, __N_SSG, __N_SSP } = this\n .props as AppProps\n\n return (\n \n )\n }\n}\n\nlet warnContainer: () => void\nlet warnUrl: () => void\n\nif (process.env.NODE_ENV !== 'production') {\n warnContainer = execOnce(() => {\n console.warn(\n `Warning: the \\`Container\\` in \\`_app\\` has been deprecated and should be removed. https://err.sh/vercel/next.js/app-container-deprecated`\n )\n })\n\n warnUrl = execOnce(() => {\n console.error(\n `Warning: the 'url' property is deprecated. https://err.sh/vercel/next.js/url-deprecated`\n )\n })\n}\n\n// @deprecated noop for now until removal\nexport function Container(p: any) {\n if (process.env.NODE_ENV !== 'production') warnContainer()\n return p.children\n}\n\nexport function createUrl(router: Router) {\n // This is to make sure we don't references the router object at call time\n const { pathname, asPath, query } = router\n return {\n get query() {\n if (process.env.NODE_ENV !== 'production') warnUrl()\n return query\n },\n get pathname() {\n if (process.env.NODE_ENV !== 'production') warnUrl()\n return pathname\n },\n get asPath() {\n if (process.env.NODE_ENV !== 'production') warnUrl()\n return asPath\n },\n back: () => {\n if (process.env.NODE_ENV !== 'production') warnUrl()\n router.back()\n },\n push: (url: string, as?: string) => {\n if (process.env.NODE_ENV !== 'production') warnUrl()\n return router.push(url, as)\n },\n pushTo: (href: string, as?: string) => {\n if (process.env.NODE_ENV !== 'production') warnUrl()\n const pushRoute = as ? href : ''\n const pushUrl = as || href\n\n return router.push(pushRoute, pushUrl)\n },\n replace: (url: string, as?: string) => {\n if (process.env.NODE_ENV !== 'production') warnUrl()\n return router.replace(url, as)\n },\n replaceTo: (href: string, as?: string) => {\n if (process.env.NODE_ENV !== 'production') warnUrl()\n const replaceRoute = as ? href : ''\n const replaceUrl = as || href\n\n return router.replace(replaceRoute, replaceUrl)\n },\n }\n}\n","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMTZweCIgaGVpZ2h0PSIxNnB4IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+57yW57uEIDQwPC90aXRsZT4KICAgIDxnIGlkPSLovablnovlupPlop7liqDmjqjojZAiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSJob3ZlcuivtOaYjiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTEwODAuMDAwMDAwLCAtMzU1LjAwMDAwMCkiPgogICAgICAgICAgICA8ZyBpZD0i57yW57uELTQwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMDIyLjAwMDAwMCwgMzUzLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgPGcgaWQ9IjEt5Zu+5qCHL0ljb25Gb2505bqTL+S4ieinkueureWktC3lj7MiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDU4LjAwMDAwMCwgMi4wMDAwMDApIj4KICAgICAgICAgICAgICAgICAgICA8ZyBpZD0i5LiJ6KeS5Y+z566t5aS0IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2LjAwMDAwMCwgMy45ODUyMjcpIiBmaWxsPSIjNjA2MzcwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTUuNjI1ODQwMzYsMy43NDQ1NDYxIEwwLjUyODQ5Njg1MSwwLjA2MzEzMTM1MDcgQzAuMzc5MjU0OTI2LC0wLjA0NDY1NDQ4NCAwLjE3MDg5Mjc1OSwtMC4wMTEwNDc2ODI4IDAuMDYzMTA2OTIzOSwwLjEzODE5NDI0MiBDMC4wMjIwODEzNzIsMC4xOTQ5OTg4NTIgMCwwLjI2MzI4NzM2OSAwLDAuMzMzMzU3NzYgTDAsNy42OTYxODcyNyBDMCw3Ljg4MDI4MjE4IDAuMTQ5MjM4NDE3LDguMDI5NTIwNiAwLjMzMzMzMzMzMyw4LjAyOTUyMDYgQzAuNDAzNDAzNzI0LDguMDI5NTIwNiAwLjQ3MTY5MjI0MSw4LjAwNzQzOTIzIDAuNTI4NDk2ODUxLDcuOTY2NDEzNjggTDUuNjI1ODQwMzYsNC4yODQ5OTg5MiBDNS43NzUwODIyOCw0LjE3NzIxMzA5IDUuODA4Njg5MDgsMy45Njg4NTA5MiA1LjcwMDkwMzI1LDMuODE5NjA5IEM1LjY4MDA1MjY2LDMuNzkwNzM4OTUgNS42NTQ3MTA0LDMuNzY1Mzk2NjkgNS42MjU4NDAzNiwzLjc0NDU0NjEgWiIgaWQ9IuS4ieinkuW9ouWkh+S7vSI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICA8cmVjdCBpZD0i55+p5b2iIiBvcGFjaXR5PSIwIiB4PSIwIiB5PSIwIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiPjwvcmVjdD4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+\"","module.exports = \"https://sf6-scmcdn2-tos.pstatp.com/motor/pc/_next/static/images/jiantou-hover-21c83aa9650c36acbc794fd52a831c4d.gif\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAANoAAADaCAYAAADAHVzbAAACuUlEQVR4nO3VsW3DQBBFQdNQIYRC9V8LQ4GdrFMXcH4HyDMFfGzysMfMzBfwp753HwD/gdAgIDQICA0CQoOA0CAgNAgIDQJCg4DQICA0CAgNAkKDgNAgIDQICA0CQoOA0CAgNAgIDQJCg4DQICA0CAgNAkKDgNAgIDQICA0CQoPAY9XQ+XytmoLt7ve1dM9Hg4DQICA0CAgNAkKDgNAgIDQICA0CQoOA0CAgNAgIDQJCg4DQICA0CAgNAkKDgNAgIDQIHDMzu4+AT+ejQUBoEBAaBIQGAaFBQGgQEBoEhAYBoUFAaBAQGgSEBgGhQUBoEBAaBIQGAaFBQGgQEBoEhAYBoUFAaBAQGgSEBgGhQUBoEBAaBIQGAaFBQGgQEBoEhAYBoUFAaBAQGgSEBgGhQUBoEBAaBIQGAaFBQGgQEBoEhAYBoUFAaBAQGgSEBgGhQeCxauh8vlZNwXb3+1q656NBQGgQEBoEhAYBoUFAaBAQGgSEBgGhQUBoEBAaBIQGAaFBQGgQEBoEhAYBoUFAaBAQGgSOmZndR8Cn89EgIDQICA0CQoOA0CAgNAgIDQJCg4DQICA0CAgNAkKDgNAgIDQICA0CQoOA0CAgNAgIDQJCg4DQICA0CAgNAkKDgNAgIDQICA0CQoOA0CAgNAgIDQJCg4DQICA0CAgNAkKDgNAgIDQICA0CQoOA0CAgNAgIDQJCg4DQICA0CAgNAkKDgNAg8Fg1dD5fq6ZY4H5fu0/gFx8NAkKDgNAgIDQICA0CQoOA0CAgNAgIDQJCg4DQICA0CAgNAkKDgNAgIDQICA0CQoOA0CBwzMzsPgI+nY8GAaFBQGgQEBoEhAYBoUFAaBAQGgSEBgGhQUBoEBAaBIQGAaFBQGgQEBoEhAYBoUFAaBAQGgSEBgGhQUBoEBAaBIQGAaFBQGgQ+AEQMxqnMNdy7wAAAABJRU5ErkJggg==\"","module.exports = \"https://sf6-scmcdn2-tos.pstatp.com/motor/pc/_next/static/images/dcar-score-cd1674c77c03f1c9feee12721e0930f5.png\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAJKADAAQAAAABAAAAJAAAAAAqDuP8AAABnElEQVRYCe1X0U3DMBD1pVElEDvUKfw0sANlk+zAAATxzQ7dBLMDan8QSWcAqVLV2NiRHGzXxkFNoiDZUuXzu8v5/O58aRAKIzAQGOiXAVDdz5L0HiH2xLEzFe9NBvhCDOXbYv0s99ADmqefiLELqRxo3m2LzbncK5JCPQ8fjNhWy0asBaQseNQae4qqE3GWLJjNkc6QzWJgbHQBOVMmicHJgnBub+VapBLP05wx9iAxmEzuhMyq6kViYjZxXgOvZbFZqjamPDqGRheQN2U2isuPdc6pFj9zHN1MfHWzNI1+W3sDwpfXGW+W+MjJdLqqsf0+a3RRRMr3NyJqrMGqCjdyC8EbEKI0U4ta+oTDgQhZK25KBURUTAB/Gf+vhlAUrYAxcnTKOC4FBpQ+NjqeshoD+MEaJRcASnVpk7UiVNv5kK8OdS9vDZmN0Xaqthg/fWiMbcly2nlTZmuMTm8dKEZ37UcXkDNlagvoIBO1C/V6u3yaAe24ofYf1/XgqTg4mqfRGPlnEKCcv6B6+fJow9CpBw3PBwYCAz4GvgF+n3PK3GWaLAAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAJKADAAQAAAABAAAAJAAAAAAqDuP8AAADmElEQVRYCe1XTWgTQRSeN0n6E20xaW2h9Ceb1tImxUu0vQQMglQQ8RSUIuhFj1J60pPUgyBIQW/aiwgqnjyIgheNSkFDCyJN05+wTfUQMJpKaxuIzY5vkmx2N9kkm5KDaBfCvN9vvnkzb3ZDyN6zV4F/rAKw2/X4/X5TcG5+lDA4SYAJwEiTHhajZKXBbJ9YWprZ1PMX2nZFyOl0e9OE3SOMuQoB9XQAMh4Vw3f0fIU2c6Ghki4ILr9E2CMkY6kUq/jBpsjlpaoICcLQYUbSDxkjMpkkEJgmAB8IhZhmqnT6IiPkgsZmQKmKEIP0bSTTwHFxr5cokNOiuLCiN4/D6fJhFfVcZW20rFflxHPTjfgnMiaAHQqm86IY1iWjSqtaNEyIAfHJ6MDYjCjOz8p6LUfjhBjpyE8M9FNeLi2oO9jw3hkmhPfML2VuqU2RS0nskOwBBj9kudJonBBIiwoYeN1ud52ia6WsD7yyFTS5slV/NEzIZrO+xd5KcBjGWNdWkk3qQxLCfTwm64dENrdUtNZu0qqltVgsJtlbWnGeXKcR4j3QcrCzs6N9Jh6PJ3kmVsZubW69Sxi5IiNRSq4vhD6/l/VKo/rgVYolPp/PvPrl2yss0XFVMMNXQ6b9kSw/NwomwGuhu200EAjsqOLLikpy2TDF2dc30vxb2niMVTilWHUkIC8stHksEvm4oeMtaaqaEEfCfQOhb+gsChMoH0GTjIPVgll8lUytRuafomy43WWGMpCsVz3293ta0+lUD080merWlpfnvlcN8jcnVKyQx+OxrK9vH8O9GMRDa8fFVMwpWDDjFyO/ixob6btQKJQq8GvUkuCcSOLn9rgkwVU8NZxIDR5IAGW3HF3tU6U6T5dQtpM2nxW0dw0IZSHwsL+pt9jO6H3WFhHiHeTodT1XtzUCfEUofrlF8Fd152BCL+b5cIGdOGYexHwZFReKro4iQo5e9zkmSU/kRErhprUBJivtvRxfauRH4Md68gYuGI9A9gGgY1ExlJ+LW4sJOV1BTDqay5leWw1fzsk1GXqEwfsIdImDYZWCWKURNbDm5crvlNxFx2NYY33TNXVwLeT9VsorlNl2nGt4YGC4RY2rIZS74LJVAwgvLgYNf8eoQcvJuPUJ+d3H41KpLac6XksIWP7PHn6mxtWBNZUZyf9DkSjsU2Nr/3WYzVGQpMlMAEBUHVhTmdIHuOBABhPnrCn2Hth/X4E/z70qpNySkzoAAAAASUVORK5CYII=\"","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\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","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAJKADAAQAAAABAAAAJAAAAAAqDuP8AAAEMklEQVRYCe1WTYhbVRS+574kSqwdLJ0WqU5+5ik0bzq1zqKIaONaUQRBN1p0pVhcVKQLwY0Li2JxMaI7qXShG1e6NhUVXIzYad8UpplkfqzC/FRaSqZO3run59zkvtykeTGZ6UryIDnnnvOd75x37j2XJ8TwGXbgf9YB6Od9isViYmVl43AAItUPvhMDoDazB0YvlUqloNPXuf7PgjLjEy8Chl8hipHO4EHWAOIGCuf1pcql73rF9SzIdb1CPVSzROD0IhnAFyYdOVku+3NxMYk4B9sDhadJ6GIAYEUg/tkLH+sDeAgRH2auJufzcdjYDuUeOfi0CsT5ZiC9GRwul+f8OKJedtctePUQLxBGv5xMiGPVK5d/6hYjuxnZhgF8bHzUnbPbLYY5OJY5DJ/NbWxGdi0ol/NeQoFHm6DNVCL5gQnYrmxybHI8c3OOblwxZ0iN0Bt9pAMAZufnL1ztFjyIjTmy494bdA4ndRyqHU3tILl3hAXXPbq7LmqezZIU4Y2dnBmbK07XB104u21/UqR9yLoTRQzDH20H6yDgD3DwzJ6R9DczMzP1Tv921lNTU8lr12uvYAgn6Rw91skBjvNMbEEW+G8qb3pXGr70ff+aZe9b9Txvz80avknH+QQFPRgXqAvKuIUjEOLnCLCPDtx4HJiKqunRlfJbFGIrHtfy0CWXEkq9TJficSom3fJ0aABlQFxDB96mmMaTG/deU0o17goQ34OQv6BQJ2hGDxjMXZEgrhL3NHE/SdzPMaeU8nh1wf9a61ESJf4xOp0fuVjxT+99IJ2TAl6lA/W78W1bEgdzMSdzc46Iy8od3UPKkesiVAazl5XmYT5H6rmse+gY+d8SQo0ZUH9SLgtHfrFYvnie8dVqFKVz8AodZ81Yo4ISqNbMxwp9akRgA2wSalJj24m0czgYrhuuqG3h/cnICIB3FGQC7pa0c7TlNgloEoCu9i2aNN21XWl5D435HdOULRbvhaW1Sdrint9IjlKBGhu9uFgq3TI5jKRrIHWzpv7Va4BgccFP0QTT8AoRbRkbsvnCBln3syMIUtylv1g3Tz4/NRIur/5Kl1rBOm/G3SZDWsHS6mWKeaJSmbluOxvcjTppzDdMMYyJtowXlCg6XFtb9bZt4w4q3DxLHSwwtp+H+A5yDMfaeJvbzsmYqEO8oKat677xQuBTGffQfVqlv7w78SwFv2DWNLa/ESYaS2NvSJCE1Z8vHEOxHxLXDxEmVI8bnXManWVbQXRbr1MHtF8JNW1vi51ZApypVubetYk69Vy+8KlCPMl2unDfp3/6NR6bS+c0DpJtW0Z9LVu+7irAz5mxfae6O1tWjSFsy9JdkyDmbU/b3rrukdEgvPUJAR61QS1dLtNwvbOwMLvassVrudzEfoTwMzqcmRjUFUcm3+uXL4ZjaB52YNiBgTpwGzxfjSb4gpurAAAAAElFTkSuQmCC\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiIgdmlld0JveD0iMCAwIDEyIDEyIj4KICAgIDxnIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgZmlsbD0iIzExMTIxNyI+CiAgICAgICAgICAgIDxnPgogICAgICAgICAgICAgICAgPGc+CiAgICAgICAgICAgICAgICAgICAgPGc+CiAgICAgICAgICAgICAgICAgICAgICAgIDxnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTUuMTEgOC45MjdsLTIuNjE2IDEuMTUyYy0uMjMzLjEwMy0uNTA2LS4wMDMtLjYwOC0uMjM2LS4wMzItLjA3My0uMDQ1LS4xNTMtLjAzNy0uMjMzbC4yODgtMi44NDNjLjAxMy0uMTMtLjAyOS0uMjU4LS4xMTUtLjM1NEwuMTE3IDQuMjhjLS4xNy0uMTktLjE1My0uNDgxLjAzNy0uNjUxLjA2LS4wNTMuMTMyLS4wOS4yMS0uMTA3bDIuNzkzLS42MDVjLjEyNy0uMDI4LjIzNi0uMTA3LjMwMS0uMjE5TDQuODk3LjIzYy4xMjgtLjIyLjQxLS4yOTQuNjMxLS4xNjYuMDY5LjA0LjEyNi4wOTcuMTY3LjE2Nkw3LjEzMyAyLjdjLjA2NS4xMTIuMTc1LjE5MS4zMDEuMjE5bDIuNzk0LjYwNWMuMjQ5LjA1NC40MDcuMy4zNTMuNTQ5LS4wMTcuMDc4LS4wNTQuMTUtLjEwNy4yMUw4LjU3IDYuNDExYy0uMDg3LjA5Ny0uMTI4LjIyNi0uMTE1LjM1NWwuMjg4IDIuODQzYy4wMjUuMjU0LS4xNi40OC0uNDEzLjUwNi0uMDguMDA4LS4xNi0uMDA1LS4yMzMtLjAzN0w1LjQ4MiA4LjkyN2MtLjExOS0uMDUzLS4yNTQtLjA1My0uMzcyIDB6IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTkzIC0xOTApIHRyYW5zbGF0ZSgxNjggOTIpIHRyYW5zbGF0ZSgyMCA4MykgdHJhbnNsYXRlKDUpIHRyYW5zbGF0ZSgwIDEwKSB0cmFuc2xhdGUoMCAxKSB0cmFuc2xhdGUoMCA0KSB0cmFuc2xhdGUoLjcwNCAuOTU1KSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4K\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAADKADAAQAAAABAAAADAAAAAATDPpdAAAA6UlEQVQoFa2PsUoDQRiE5789ME1If7WNHAmYCCmE1L6A/b1FijRC3sDgGwkSSGJhYZXKzsIUFgGFG2eXO271vC4LP7c3883sLnCKxc3kntvx6r8u+ysKHkp7rvRLu9q+xEwS/wgewPAA0IXRPmgRZNxdZ+BxCdoUxgsQv0pUUMp7lbdGzy1SpHbEN2ZqPBfcXqGAuYwzIP1KbPR4UMONmt7bdKV4T4zlTx/heD1sD0uK7kBSBEZAc9+Sn52ByGsCxqwJ6F3wU63IawLAQNCbrjaH62dh/N5rwavT1ZekkXdxQXDIW+e9Gv8BFtRK17L1Y08AAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAMKADAAQAAAABAAAAMAAAAADbN2wMAAAByklEQVRoBe1YMXbCMAy1+zr1JsztXWDpSB+ciL4ydoG7dOcmXd0oPB7qd6JItU1J4ixYlvwtybIs5Fz9qgfm7QGP5r/vj5/BuQXOW+gG9LRZL1/5mlK4j3wTGrfKh/CM8xY6+MgvxXAfLIrdo2x0AlxJ7/x38O7E5/rGPrhFcOGpj8/nc+KKBpDy2/XyhW/eN97tj19NnKhCLyfu6ENo9AaIIYThsvs4NEnq+m3fVnG6ubLVoxTc0Z9ANUAdJ4UETXcgV8yjLSm4NYTQm7emxRCi8qB9YRVanUsJhWAjkhNXNKCtbbTlgU73Vion7ujvQHQC9Gekq543ONgRBsqXwsV9Kl09MDcPROVwqe6BFpcuO+9o8HXIo8OKstB/dyUwA3J9kEcGTO8dIKsuX87uwQWTfhHX0tHgODSOQogL5OweSLiWjgbHofG0QwitvQWNlepQlSuGECqc0j1ArD4aK9VfbZCORTWEOpxintJWqiSH4KYQwsW5aP7yWjFNBqR0D6yKaeVNBmhBrXJSvSPxaJ+7MECqdyTeoAGYkyXPDuVraW0KTzwBzMnSRkP5WlqbwpveO6DNyZLXuvI1x0X+X3mSDpVXPTAXD/wAmgfJn/kTAVoAAAAASUVORK5CYII=\"","module.exports = \"https://sf6-scmcdn2-tos.pstatp.com/motor/pc/_next/static/images/new_logo-8e956cade7786eec155d7d4f64759273.png\";","/* NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress\n * @license MIT */\n\n;(function(root, factory) {\n\n if (typeof define === 'function' && define.amd) {\n define(factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n root.NProgress = factory();\n }\n\n})(this, function() {\n var NProgress = {};\n\n NProgress.version = '0.2.0';\n\n var Settings = NProgress.settings = {\n minimum: 0.08,\n easing: 'ease',\n positionUsing: '',\n speed: 200,\n trickle: true,\n trickleRate: 0.02,\n trickleSpeed: 800,\n showSpinner: true,\n barSelector: '[role=\"bar\"]',\n spinnerSelector: '[role=\"spinner\"]',\n parent: 'body',\n template: '
'\n };\n\n /**\n * Updates configuration.\n *\n * NProgress.configure({\n * minimum: 0.1\n * });\n */\n NProgress.configure = function(options) {\n var key, value;\n for (key in options) {\n value = options[key];\n if (value !== undefined && options.hasOwnProperty(key)) Settings[key] = value;\n }\n\n return this;\n };\n\n /**\n * Last number.\n */\n\n NProgress.status = null;\n\n /**\n * Sets the progress bar status, where `n` is a number from `0.0` to `1.0`.\n *\n * NProgress.set(0.4);\n * NProgress.set(1.0);\n */\n\n NProgress.set = function(n) {\n var started = NProgress.isStarted();\n\n n = clamp(n, Settings.minimum, 1);\n NProgress.status = (n === 1 ? null : n);\n\n var progress = NProgress.render(!started),\n bar = progress.querySelector(Settings.barSelector),\n speed = Settings.speed,\n ease = Settings.easing;\n\n progress.offsetWidth; /* Repaint */\n\n queue(function(next) {\n // Set positionUsing if it hasn't already been set\n if (Settings.positionUsing === '') Settings.positionUsing = NProgress.getPositioningCSS();\n\n // Add transition\n css(bar, barPositionCSS(n, speed, ease));\n\n if (n === 1) {\n // Fade out\n css(progress, { \n transition: 'none', \n opacity: 1 \n });\n progress.offsetWidth; /* Repaint */\n\n setTimeout(function() {\n css(progress, { \n transition: 'all ' + speed + 'ms linear', \n opacity: 0 \n });\n setTimeout(function() {\n NProgress.remove();\n next();\n }, speed);\n }, speed);\n } else {\n setTimeout(next, speed);\n }\n });\n\n return this;\n };\n\n NProgress.isStarted = function() {\n return typeof NProgress.status === 'number';\n };\n\n /**\n * Shows the progress bar.\n * This is the same as setting the status to 0%, except that it doesn't go backwards.\n *\n * NProgress.start();\n *\n */\n NProgress.start = function() {\n if (!NProgress.status) NProgress.set(0);\n\n var work = function() {\n setTimeout(function() {\n if (!NProgress.status) return;\n NProgress.trickle();\n work();\n }, Settings.trickleSpeed);\n };\n\n if (Settings.trickle) work();\n\n return this;\n };\n\n /**\n * Hides the progress bar.\n * This is the *sort of* the same as setting the status to 100%, with the\n * difference being `done()` makes some placebo effect of some realistic motion.\n *\n * NProgress.done();\n *\n * If `true` is passed, it will show the progress bar even if its hidden.\n *\n * NProgress.done(true);\n */\n\n NProgress.done = function(force) {\n if (!force && !NProgress.status) return this;\n\n return NProgress.inc(0.3 + 0.5 * Math.random()).set(1);\n };\n\n /**\n * Increments by a random amount.\n */\n\n NProgress.inc = function(amount) {\n var n = NProgress.status;\n\n if (!n) {\n return NProgress.start();\n } else {\n if (typeof amount !== 'number') {\n amount = (1 - n) * clamp(Math.random() * n, 0.1, 0.95);\n }\n\n n = clamp(n + amount, 0, 0.994);\n return NProgress.set(n);\n }\n };\n\n NProgress.trickle = function() {\n return NProgress.inc(Math.random() * Settings.trickleRate);\n };\n\n /**\n * Waits for all supplied jQuery promises and\n * increases the progress as the promises resolve.\n *\n * @param $promise jQUery Promise\n */\n (function() {\n var initial = 0, current = 0;\n\n NProgress.promise = function($promise) {\n if (!$promise || $promise.state() === \"resolved\") {\n return this;\n }\n\n if (current === 0) {\n NProgress.start();\n }\n\n initial++;\n current++;\n\n $promise.always(function() {\n current--;\n if (current === 0) {\n initial = 0;\n NProgress.done();\n } else {\n NProgress.set((initial - current) / initial);\n }\n });\n\n return this;\n };\n\n })();\n\n /**\n * (Internal) renders the progress bar markup based on the `template`\n * setting.\n */\n\n NProgress.render = function(fromStart) {\n if (NProgress.isRendered()) return document.getElementById('nprogress');\n\n addClass(document.documentElement, 'nprogress-busy');\n \n var progress = document.createElement('div');\n progress.id = 'nprogress';\n progress.innerHTML = Settings.template;\n\n var bar = progress.querySelector(Settings.barSelector),\n perc = fromStart ? '-100' : toBarPerc(NProgress.status || 0),\n parent = document.querySelector(Settings.parent),\n spinner;\n \n css(bar, {\n transition: 'all 0 linear',\n transform: 'translate3d(' + perc + '%,0,0)'\n });\n\n if (!Settings.showSpinner) {\n spinner = progress.querySelector(Settings.spinnerSelector);\n spinner && removeElement(spinner);\n }\n\n if (parent != document.body) {\n addClass(parent, 'nprogress-custom-parent');\n }\n\n parent.appendChild(progress);\n return progress;\n };\n\n /**\n * Removes the element. Opposite of render().\n */\n\n NProgress.remove = function() {\n removeClass(document.documentElement, 'nprogress-busy');\n removeClass(document.querySelector(Settings.parent), 'nprogress-custom-parent');\n var progress = document.getElementById('nprogress');\n progress && removeElement(progress);\n };\n\n /**\n * Checks if the progress bar is rendered.\n */\n\n NProgress.isRendered = function() {\n return !!document.getElementById('nprogress');\n };\n\n /**\n * Determine which positioning CSS rule to use.\n */\n\n NProgress.getPositioningCSS = function() {\n // Sniff on document.body.style\n var bodyStyle = document.body.style;\n\n // Sniff prefixes\n var vendorPrefix = ('WebkitTransform' in bodyStyle) ? 'Webkit' :\n ('MozTransform' in bodyStyle) ? 'Moz' :\n ('msTransform' in bodyStyle) ? 'ms' :\n ('OTransform' in bodyStyle) ? 'O' : '';\n\n if (vendorPrefix + 'Perspective' in bodyStyle) {\n // Modern browsers with 3D support, e.g. Webkit, IE10\n return 'translate3d';\n } else if (vendorPrefix + 'Transform' in bodyStyle) {\n // Browsers without 3D support, e.g. IE9\n return 'translate';\n } else {\n // Browsers without translate() support, e.g. IE7-8\n return 'margin';\n }\n };\n\n /**\n * Helpers\n */\n\n function clamp(n, min, max) {\n if (n < min) return min;\n if (n > max) return max;\n return n;\n }\n\n /**\n * (Internal) converts a percentage (`0..1`) to a bar translateX\n * percentage (`-100%..0%`).\n */\n\n function toBarPerc(n) {\n return (-1 + n) * 100;\n }\n\n\n /**\n * (Internal) returns the correct CSS for changing the bar's\n * position given an n percentage, and speed and ease from Settings\n */\n\n function barPositionCSS(n, speed, ease) {\n var barCSS;\n\n if (Settings.positionUsing === 'translate3d') {\n barCSS = { transform: 'translate3d('+toBarPerc(n)+'%,0,0)' };\n } else if (Settings.positionUsing === 'translate') {\n barCSS = { transform: 'translate('+toBarPerc(n)+'%,0)' };\n } else {\n barCSS = { 'margin-left': toBarPerc(n)+'%' };\n }\n\n barCSS.transition = 'all '+speed+'ms '+ease;\n\n return barCSS;\n }\n\n /**\n * (Internal) Queues a function to be executed.\n */\n\n var queue = (function() {\n var pending = [];\n \n function next() {\n var fn = pending.shift();\n if (fn) {\n fn(next);\n }\n }\n\n return function(fn) {\n pending.push(fn);\n if (pending.length == 1) next();\n };\n })();\n\n /**\n * (Internal) Applies css properties to an element, similar to the jQuery \n * css method.\n *\n * While this helper does assist with vendor prefixed property names, it \n * does not perform any manipulation of values prior to setting styles.\n */\n\n var css = (function() {\n var cssPrefixes = [ 'Webkit', 'O', 'Moz', 'ms' ],\n cssProps = {};\n\n function camelCase(string) {\n return string.replace(/^-ms-/, 'ms-').replace(/-([\\da-z])/gi, function(match, letter) {\n return letter.toUpperCase();\n });\n }\n\n function getVendorProp(name) {\n var style = document.body.style;\n if (name in style) return name;\n\n var i = cssPrefixes.length,\n capName = name.charAt(0).toUpperCase() + name.slice(1),\n vendorName;\n while (i--) {\n vendorName = cssPrefixes[i] + capName;\n if (vendorName in style) return vendorName;\n }\n\n return name;\n }\n\n function getStyleProp(name) {\n name = camelCase(name);\n return cssProps[name] || (cssProps[name] = getVendorProp(name));\n }\n\n function applyCss(element, prop, value) {\n prop = getStyleProp(prop);\n element.style[prop] = value;\n }\n\n return function(element, properties) {\n var args = arguments,\n prop, \n value;\n\n if (args.length == 2) {\n for (prop in properties) {\n value = properties[prop];\n if (value !== undefined && properties.hasOwnProperty(prop)) applyCss(element, prop, value);\n }\n } else {\n applyCss(element, args[1], args[2]);\n }\n }\n })();\n\n /**\n * (Internal) Determines if an element or space separated list of class names contains a class name.\n */\n\n function hasClass(element, name) {\n var list = typeof element == 'string' ? element : classList(element);\n return list.indexOf(' ' + name + ' ') >= 0;\n }\n\n /**\n * (Internal) Adds a class to an element.\n */\n\n function addClass(element, name) {\n var oldList = classList(element),\n newList = oldList + name;\n\n if (hasClass(oldList, name)) return; \n\n // Trim the opening space.\n element.className = newList.substring(1);\n }\n\n /**\n * (Internal) Removes a class from an element.\n */\n\n function removeClass(element, name) {\n var oldList = classList(element),\n newList;\n\n if (!hasClass(element, name)) return;\n\n // Replace the class name.\n newList = oldList.replace(' ' + name + ' ', ' ');\n\n // Trim the opening and closing spaces.\n element.className = newList.substring(1, newList.length - 1);\n }\n\n /**\n * (Internal) Gets a space separated list of the class names on the element. \n * The list is wrapped with a single space on each end to facilitate finding \n * matches within the list.\n */\n\n function classList(element) {\n return (' ' + (element.className || '') + ' ').replace(/\\s+/gi, ' ');\n }\n\n /**\n * (Internal) Removes an element from the DOM.\n */\n\n function removeElement(element) {\n element && element.parentNode && element.parentNode.removeChild(element);\n }\n\n return NProgress;\n});\n\n","module.exports = \"https://sf6-scmcdn2-tos.pstatp.com/motor/pc/_next/static/images/live-yellow-4759e2696f1982351d18d263b73820b5.gif\";","module.exports = \"https://sf6-scmcdn2-tos.pstatp.com/motor/pc/_next/static/images/bg-f91a9359d0e21bc77e6e7b308f743a02.png\";","'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.trim` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n trim: function trim() {\n return $trim(this);\n }\n});\n","module.exports = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxnIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGc+CiAgICAgICAgICAgIDxnPgogICAgICAgICAgICAgICAgPGc+CiAgICAgICAgICAgICAgICAgICAgPGcgZmlsbD0iIzFGMjEyOSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik04LjQzOSA1LjYxN0wuNzkzLjA5NUMuNTY5LS4wNjcuMjU2LS4wMTcuMDk1LjIwNy4wMzMuMjkyIDAgLjM5NSAwIC41djExLjA0NGMwIC4yNzYuMjI0LjUuNS41LjEwNSAwIC4yMDgtLjAzMy4yOTMtLjA5NGw3LjY0Ni01LjUyM2MuMjI0LS4xNjEuMjc0LS40NzQuMTEyLS42OTgtLjAzLS4wNDMtLjA2OS0uMDgtLjExMi0uMTEyeiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTEwMzAgLTkwMSkgdHJhbnNsYXRlKDEwMTggODg5KSByb3RhdGUoLTE4MCAxOCAxOCkgbWF0cml4KC0xIDAgMCAxIDE1IDUuOTc4KSIvPgogICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+Cg==\"","var DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar isRegExp = require('../internals/is-regexp');\nvar getFlags = require('../internals/regexp-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar redefine = require('../internals/redefine');\nvar fails = require('../internals/fails');\nvar setInternalState = require('../internals/internal-state').set;\nvar setSpecies = require('../internals/set-species');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\nvar NativeRegExp = global.RegExp;\nvar RegExpPrototype = NativeRegExp.prototype;\nvar re1 = /a/g;\nvar re2 = /a/g;\n\n// \"new\" should create a new object, old webkit bug\nvar CORRECT_NEW = new NativeRegExp(re1) !== re1;\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\n\nvar FORCED = DESCRIPTORS && isForced('RegExp', (!CORRECT_NEW || UNSUPPORTED_Y || fails(function () {\n re2[MATCH] = false;\n // RegExp constructor can alter flags and IsRegExp works correct with @@match\n return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, 'i') != '/a/i';\n})));\n\n// `RegExp` constructor\n// https://tc39.github.io/ecma262/#sec-regexp-constructor\nif (FORCED) {\n var RegExpWrapper = function RegExp(pattern, flags) {\n var thisIsRegExp = this instanceof RegExpWrapper;\n var patternIsRegExp = isRegExp(pattern);\n var flagsAreUndefined = flags === undefined;\n var sticky;\n\n if (!thisIsRegExp && patternIsRegExp && pattern.constructor === RegExpWrapper && flagsAreUndefined) {\n return pattern;\n }\n\n if (CORRECT_NEW) {\n if (patternIsRegExp && !flagsAreUndefined) pattern = pattern.source;\n } else if (pattern instanceof RegExpWrapper) {\n if (flagsAreUndefined) flags = getFlags.call(pattern);\n pattern = pattern.source;\n }\n\n if (UNSUPPORTED_Y) {\n sticky = !!flags && flags.indexOf('y') > -1;\n if (sticky) flags = flags.replace(/y/g, '');\n }\n\n var result = inheritIfRequired(\n CORRECT_NEW ? new NativeRegExp(pattern, flags) : NativeRegExp(pattern, flags),\n thisIsRegExp ? this : RegExpPrototype,\n RegExpWrapper\n );\n\n if (UNSUPPORTED_Y && sticky) setInternalState(result, { sticky: sticky });\n\n return result;\n };\n var proxy = function (key) {\n key in RegExpWrapper || defineProperty(RegExpWrapper, key, {\n configurable: true,\n get: function () { return NativeRegExp[key]; },\n set: function (it) { NativeRegExp[key] = it; }\n });\n };\n var keys = getOwnPropertyNames(NativeRegExp);\n var index = 0;\n while (keys.length > index) proxy(keys[index++]);\n RegExpPrototype.constructor = RegExpWrapper;\n RegExpWrapper.prototype = RegExpPrototype;\n redefine(global, 'RegExp', RegExpWrapper);\n}\n\n// https://tc39.github.io/ecma262/#sec-get-regexp-@@species\nsetSpecies('RegExp');\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAJKADAAQAAAABAAAAJAAAAAAqDuP8AAACZElEQVRYCe2Xv4sTQRTH35tdco2n+KNSuMRjWc7kgohgYaVYqVgG7Kws/BOsTG8h4j9gZWOniIWF11gKB/cLjrvsXmEhKIgao9lkn2/OTG5mLsndcomzRRbCzJs38+az3/eG2QBMn6kCR1MA7eXFoHwJU7wDQML2jdMmosRD/1WjsbKixzWAwvDymXan9YknF/RJk+ojwg84PjMXLy9/U3sYKrTTP4v/C0YCEMGs+N4JFIxsfd3Q+wi4AwjP9bFx9fml73Oss//ikZGloUDMH8eNjfq4IPQ4pfnyLYbqAekeACNlpmuiFqnonDZDIVdAimdf6waIYE8h36whN0D7dNkbcATElaMe8vNdQyOOvXoFsy0Fi9eo231vjg620POux1urSwO8fYW4nPKlkE85AGKEvkK2eplT1kuBIbMd9GAbGUgx5UChUcCOjn1fHnnjG2q7AhoqkhMglkQVECuUtxrKxV2mXa527kYceyzxh1TdXiBt/hb+Gm2vP7N9lUrlVLMF9zgjJ2yfYRMUlU3WXTYUiF+iyJl+pBbqLR+MLbYNoDC8eK75K/mwu06fnLFvFDV2YYML7nfGGLCwcOV0O0neZYVBxHZBFNb0/QyFomj1M/8vuyqIbnPxGz59kUyZsjlNx5qtn28Z5oIck5twyp5w74AXw5QEvd7c/PhFxdpdrxtZ+0FwcyZJd97w2b3RW5sKwLtRtP4yayw130iZGjxMW6vVvE4av9BgQAjx4Cgwcl/vMJsPmtMimqMO1Nk3K/2I4mHcWHsq+86eMKzOF8+Xt/n32BmEvXG1Wj1pj03tSSrwF3ohuaKu4P3CAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAD4AAAA+CAYAAABzwahEAAABrElEQVRoge2avU4CQRSFPwSeQbAylhYG9iU08AgmGgQtxMba1t5GqECj8RUw8SUWtLA0Vi4+AyFrwyI/qywwguTM1+xks3NzT87N7N6ZjfkPlz77F6gR833fnzdIu/3ZH7tua95woThOBoBUat1IvDUjUVaQhIkggy6fnp2bCDlG9foKgFxu10g8WcetcDXsqq6GrHAjpb6KyDqeaLZeAKjVbpecymIolQqAsuPehwdA4/FpyakshnxuDxB23ApXQ1b4xA+Yza3tsXv5Xk9c6fXIy6Lc6/1HF+b3t9eJc2Udt8LVsMLVMLLLOkj95h4A120O3Y/yBiiH7NA6ThaA4tGBgey+kXVcVrjxUg9KfPSjohJh7m8doi11Q1jhaljhaljhaljhaljhaljhasgKN96WBsewweHcNFRDdmnSG+m5cwpD1nFZ4cZLPZvZGbpOg6nfNaMg67gVroYVrsZMq7rbfAbCj3wWSZDHLMg6Lit8YqnH4/H+uNvtAuB5bQAavet/IZlMRn7WOv4TJ8eF/rhWvwOg0+n8XUYzEFRlqXgYeY6s4/ZHfTVkhX8BZXZr4jCNMmMAAAAASUVORK5CYII=\"","module.exports = \"https://sf6-scmcdn2-tos.pstatp.com/motor/pc/_next/static/images/black-logo-17443aef3ec0b84140fa29a786efbdd6.png\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAD4AAAA+CAYAAABzwahEAAABrUlEQVRoge2asU7CUBSG/yIDKzDhVhUfAAfgFWh11MSXILo5u2t4BBcHV4FXMA66K0Y2N2AsJto61NtUarCltyD5z7f0tmlPzp//5Lb39hju1bn3fnQGNgxn+uHpCDQdj4PxZPCsI2SEYnUXAFAolVLHyqWOsKbkdQUKu/zQudAV9gd77VMAQKXeSB2L1nERzobM6mzQCtdW6usGreP5ycsgOBn2uitMZXmYlk3s+HQ0Ck7e7u9WmMryqDSavI6LcDZohcf6gOkeH0aubdabAIBa+0R/Vgl47FwCiE7M9vXN3OdoHRfhbIhwNrTtsoYZ9nsAojsxcd4AapYOo3ZezJalITsfWsdphWdS6qrEZz8qavi71OetEE1IqadGhLMhwtkQ4WyIcDZEOBsinA1a4ZksS03LBuD/nEuK6mULUyiXU+c0C63jtMIzKfXiTtUfqGMCdLRrxoHWcRHOhghnY+FZfTJ4AvD7L59lovJICq3jtMJjlbqRM4Kx5/otM853f7rzz5oCcxvxvBTH57FtHQTj1/4tAMD9dLPJaEFUVW619mPdT+u4NOqzQSv8C38Da0e9n/UMAAAAAElFTkSuQmCC\"","module.exports = \"https://sf6-scmcdn2-tos.pstatp.com/motor/pc/_next/static/images/live-white-b0bafacaa4825626d3d8cfc95dbb7fce.gif\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFoAAABaCAYAAAA4qEECAAABCUlEQVR4nO3asRGCABQFQXHsQyXT/mshdOxEO1ACOVB3UwiYm5/xhuP58tixuP3aH/AvhI4IHRE6InRE6IjQEaEjQkeEjggdEToidOQw98X7bVryO77eaby+fO6iI0JHhI4IHRE6InRE6MjgL3jDRUeEjggdEToidEToiNARoSNCR4SOCB0ROiJ0ROiI0BGhI0JHhI4IHbG9+xDbu40QOiJ0ROiI0BGhI0JHbO8iLjoidEToiNARoSNCR4SOCB0ROiJ0ROiI0BGhI0JHhI4IHRE6InRE6MjPbO/ebd/W5qIjQkeEjggdEToidEToiO1dxEVHhI4IHRE6InRE6IjQEaEjQkeEjggdeQIkqQ9Xre+XGQAAAABJRU5ErkJggg==\"","/**\n * 获取Link组件的href值,方便线上测试\n */\nexport default (path: string) => {\n const prefixer = process.env.NODE_ENV === 'production' ? '' : ''\n // const prefixer = '/test'\n return prefixer + path\n}\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAJKADAAQAAAABAAAAJAAAAAAqDuP8AAADD0lEQVRYCe1WT0gUYRT/3rRZrrvV2mIeSnZnN0VH9CCR0CHwUkGXLlaXKJL+GKJBBEHH6CBeOhT9kYQOHToX0SEh6CYqLU5C5YymQWT+ydzJdJ3X+1ZnnZ1dZ3bXJaR24ON7733v/b7f93vzj7HC9T8qEArV7uMjH2ffshGQqqpDXs8Ob5eO+lMdsWOXr8xfvqfy7dTU+GKuuJBroSjWHteZfg8Rk5QBgHGBCa2KMvQ8F+ysCQUkqZxpeAcZNtttCAyeMTe0j8ryV7s865pgDaznkxIQDFafJzLDZjKkyDcQhNPxQbZRz3NQw/e8htcacac5o0RRrK/UcfEhMnbYDEhkekqK4Zosy9M8LklSafQXdhGBc0l5jL0RoOiCorz7YI6ns20JNTQ0bP0+rV2npJtEZnsCAOCTC+DiyIjcm4iZjFBIaoohPmCIYSNMGAuEcctf6u7s7+9fMuLWed2nLLC/5qCmLb2gglM0XPFCgBip0gkVZSfVwb6PVjDDn5mZVH310iOY01wMoJHi/NbgGE3awtIJn79sYHZ68ouRb55TFCLZPfMa3mYMr1Bi4h4jIn2AQouqDkXMAE52MFhbh6B3UxsPmHJ1xuDuTq/rRiQSiZriaxsawaiGj4lMG/krZADmAVjH2TPNjdmS4Zi8htdyDFJrfnUfwsa2uZ+xnlU/MaUoFAhWq9TrAM8gVV4KDC4pivw5UbEBQxSlCp3hfVLrWByfsdFRdThohky0ZC1IZ1m9YBtezhcZDhnHKipqNfD5kdfsFSsNIWvK3/ULhJz03nQKrbzwnGhb1sPhur26Dm5LOMn1+VwT9EbWkoIZODkRii3HuunjecQOf+pH7Citv7LLSbf2b7QMASaAoe2XG5Yx63ZxxXJq2Zgit6STOx+xTdeyAiGntm46hWxvavwtXA2INbNOp3Jap98YRR2Rnzjl8XV7Qqi3ZwLilEP/V68pJyNCqS0DHHDaYCPr6vDgmMctePnYXVpcY8VKUaikWGjRNNaLgH5rcq4+b5lRSzYJxoxfWSNcmAsK5E2BP2ZJ/Bxhy538AAAAAElFTkSuQmCC\"","import get from 'lodash/get'\nimport { sendTeaCommEvent, teaConfig } from 'lib/tea-analyze'\nimport fetch from 'lib/decorated-fetch'\n\ninterface Coordinates {\n latitude: number\n longitude: number\n}\ninterface Result extends Coordinates {\n status: number\n cityName: string\n}\n\nexport const setLocation2storage = (location: {\n cityName: string\n match: boolean\n}) => {\n if (!location?.cityName) {\n return\n }\n window.localStorage.setItem(\n 'locationCity',\n JSON.stringify({\n cityName: location?.cityName,\n match: location?.match,\n })\n )\n}\n\nexport const setSelectedCity2storage = (cityName: string) => {\n if (cityName) {\n window.localStorage.setItem('selectedCity', cityName)\n }\n}\n\nexport const getTeaParam = async (selectedCity?: string) => {\n let location = null\n let sCity = selectedCity\n const str = window.localStorage.getItem('locationCity')\n if (str) {\n try {\n location = JSON.parse(str)\n } catch (e) {\n // new user, do nothing;\n }\n }\n\n const locationCity = (location as any)?.cityName ?? ''\n if (!sCity) {\n sCity = window.localStorage.getItem('selectedCity') ?? ''\n }\n\n let city = window?.localStorage?.getItem('cityName') ?? ''\n if (sCity) {\n city = sCity\n } else if (locationCity) {\n city = locationCity\n }\n\n return {\n location_city: locationCity,\n is_city_normal: location?.match ? 1 : 0,\n selected_city: sCity,\n 'custom.city': city,\n }\n}\n\nexport const sendTeaLocationEvent = async (\n event: string,\n cityName?: string\n) => {\n const params = await getTeaParam(cityName)\n if (params && event) {\n if (event === 'init_top_location') {\n return teaConfig(params)\n } else if (event === 'switch_top_location') {\n teaConfig(params)\n\n return sendTeaCommEvent(event, {\n location_city: params?.selected_city,\n })\n }\n }\n}\n\nexport interface ILocation {\n latitude: number\n longitude: number\n gpsLatitude: number\n gpsLongitude: number\n ipLatitude: number\n ipLongitude: number\n cityName: string\n gpsCityName: string\n ipCityName: string\n match: boolean\n}\n\nlet mapKey = ''\n/* eslint-disable prefer-destructuring */\nexport default async function getLocation(\n key = '88db9775ba89ac7e7afafbecd43b96e7'\n): Promise {\n try {\n mapKey = key\n const [gpsLocation, ipLocation] = await Promise.all([\n getGPSCityName(),\n getIPCityName(),\n ])\n let cityName = ''\n let gpsCityName = ''\n\n if (gpsLocation.status === 0 && gpsLocation.cityName) {\n // gps地址获取成功\n console.log('[utils/location] gps success:::', gpsLocation)\n cityName = gpsLocation.cityName\n gpsCityName = cityName\n } else if (ipLocation.status === 0 && ipLocation.cityName) {\n // ip地址获取成功\n console.log('[utils/location] ip success:::', ipLocation)\n cityName = ipLocation.cityName\n }\n const dataBaseResult = await getDatabaseCity(cityName)\n return {\n latitude: gpsLocation.latitude || ipLocation.latitude,\n longitude: gpsLocation.longitude || ipLocation.longitude,\n gpsLatitude: gpsLocation.latitude,\n gpsLongitude: gpsLocation.longitude,\n ipLatitude: ipLocation.latitude,\n ipLongitude: ipLocation.longitude,\n cityName: dataBaseResult.cityName,\n gpsCityName,\n ipCityName: ipLocation.cityName,\n match: dataBaseResult?.match,\n }\n } catch (error) {\n console.warn(error)\n return {\n latitude: 0,\n longitude: 0,\n gpsLatitude: 0,\n gpsLongitude: 0,\n ipLatitude: 0,\n ipLongitude: 0,\n cityName: '',\n gpsCityName: '',\n ipCityName: '',\n match: false,\n }\n }\n}\n\nfunction getGPSLocation(): Promise<\n {\n status: number\n } & Coordinates\n > {\n const defaultResult = {\n status: -1,\n latitude: 0,\n longitude: 0,\n }\n\n const timeout: Promise<\n {\n status: number\n } & Coordinates\n > = new Promise((resolve) => {\n setTimeout(() => {\n resolve(defaultResult)\n }, 3000)\n })\n\n const getCurrentPosition: Promise<\n {\n status: number\n } & Coordinates\n > = new Promise((resolve) => {\n try {\n const positionOptions = {\n timeout: 3000,\n maximumAge: 60 * 60 * 1000,\n }\n\n window.navigator.geolocation.getCurrentPosition(\n (res) => {\n if (res && res.coords) {\n const { latitude = 0, longitude = 0 } = res.coords\n resolve({\n status: 0,\n latitude,\n longitude,\n })\n } else {\n resolve(defaultResult)\n }\n },\n () => {\n resolve(defaultResult)\n },\n positionOptions\n )\n } catch (err) {\n resolve(defaultResult)\n }\n })\n\n return Promise.race([timeout, getCurrentPosition])\n}\n\nfunction getIPLocation(): Promise {\n return fetch('/motor/car_service/open_api/get_ip_city/')\n .then((json) => {\n return {\n status: 0,\n cityName: get(json, 'data.city_name', ''),\n latitude: get(json, 'data.Latitude', 0),\n longitude: get(json, 'data.Longitude', 0),\n }\n })\n .catch(() => {\n return {\n status: -1,\n cityName: '',\n latitude: 0,\n longitude: 0,\n }\n })\n}\n\nfunction getCityByPos(coordinate: Coordinates): Promise {\n return fetch(\n `https://restapi.amap.com/v3/geocode/regeo?key=${mapKey}&location=${coordinate.longitude},${coordinate.latitude}`\n ).then((json) => {\n try {\n // province 可能返回字符串或数组\n const { city = [], province = [] } = get(\n json,\n 'regeocode.addressComponent',\n {}\n )\n const cityResult = typeof city === 'string' ? city : city[0]\n const provinceResult =\n typeof province === 'string' ? province : province[0]\n\n let result = cityResult || provinceResult || ''\n\n result = result.replace('市', '')\n const currentCity = result || ''\n console.log('[utils/location] getCityByPos response:::', json.data)\n return Promise.resolve({\n status: 0,\n cityName: currentCity,\n ...coordinate,\n })\n } catch (error) {\n return {\n status: -1,\n cityName: '',\n ...coordinate,\n }\n }\n })\n}\n\nfunction getDatabaseCity(cityName: string): Promise<{\n status: number\n cityName: string\n match: boolean\n}> {\n return fetch(\n `/motor/car_service/open_api/get_city_name/?city_name=${encodeURIComponent(\n cityName\n )}`\n )\n .then((json) => {\n try {\n const dbCityName = get(json, 'data.city_name', '')\n const match = get(json, 'data.match', true)\n return Promise.resolve({\n status: 0,\n cityName: dbCityName,\n match,\n })\n } catch (error) {\n return {\n status: -1,\n cityName: '',\n match: false,\n }\n }\n })\n .catch((e) => {\n return {\n status: -1,\n cityName: '',\n match: false,\n }\n })\n}\n\nfunction getGPSCityName() {\n return getGPSLocation().then(getCityByPos)\n}\n\nfunction getIPCityName(): Promise {\n return fetch('/motor/car_service/open_api/get_ip_city/')\n .then((json) => ({\n status: 0,\n cityName: get(json, 'data.city_name', ''),\n latitude: get(json, 'data.Latitude', 0),\n longitude: get(json, 'data.Longitude', 0),\n }))\n .catch(() => {\n return {\n status: -1,\n cityName: '',\n latitude: 0,\n longitude: 0,\n }\n })\n}\n","import * as React from 'react'\nimport get from 'lodash/get'\nimport fetch from 'lib/decorated-fetch'\nimport Router from 'next/router'\nimport classnames from 'classnames'\nimport { isNewVersion } from 'Components/hooks/use-version'\nimport getUrl from 'lib/url'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\n\ninterface IResult {\n keyword: string\n}\ninterface IListProps {\n data: IResult[]\n curIndex: number\n}\ninterface IState {\n data: IResult[]\n show: boolean\n}\n\nconst handler = (keyword: string, searchMode = 'common') => {\n sendTeaCommEvent('click_top_search', {\n search_content: keyword,\n search_mode: searchMode,\n })\n sessionStorage.setItem('search_content', keyword)\n sessionStorage.setItem('search_mode', searchMode)\n\n Router.push(\n isNewVersion() ? '/new_search' : '`/search/home',\n `/search?keyword=${keyword}`\n )\n}\n\nfunction ResultList({ data, curIndex }: IListProps) {\n return (\n
    \n {data.map((item: IResult, index: number) => (\n ) => {\n e.stopPropagation()\n handler(item.keyword)\n // setValue(item.keyword)\n }}\n >\n {item.keyword}\n \n ))}\n \n
\n )\n}\n\nexport default function Search() {\n const [focus, setFocus] = React.useState(false)\n const [value, setValue] = React.useState('')\n /* 列表当前选中项索引 */\n const [curIndex, setCurIndex] = React.useState(0)\n /* 列表数据 */\n const [list, setList] = React.useState({ show: false, data: [] })\n\n const searchDivRef = React.useRef(null)\n const buttonRef = React.useRef(null)\n\n React.useEffect(() => {\n const searchDivDom = searchDivRef.current\n const searchButtonDom = buttonRef.current\n const onMouseEnter = () => {\n if (searchDivDom) searchDivDom.classList.add('button-hover')\n }\n const onMouseLeave = () => {\n if (searchDivDom) searchDivDom.classList.remove('button-hover')\n }\n if (searchDivDom && searchButtonDom) {\n searchButtonDom.addEventListener('mouseenter', onMouseEnter)\n searchButtonDom.addEventListener('mouseleave', onMouseLeave)\n }\n\n return () => {\n if (searchDivDom && searchButtonDom) {\n searchButtonDom.removeEventListener('mouseenter', onMouseEnter)\n searchButtonDom.removeEventListener('mouseleave', onMouseLeave)\n }\n }\n }, [searchDivRef.current, buttonRef.current])\n\n React.useEffect(() => {\n if (!value) {\n return\n }\n fetch(getUrl(`/motor/searchacl/complete?keyword=${value}`))\n .then(json => {\n setList({ show: true, data: json.data })\n })\n .catch(e => {\n // no-op\n })\n }, [value])\n\n return (\n
\n \n {\n setCurIndex(0)\n setValue(e.target.value)\n }}\n onBlur={() => {\n setFocus(false)\n setTimeout(() => {\n setList({ ...list, show: false })\n }, 200)\n }}\n onFocus={() => {\n setList({ ...list, show: true })\n setFocus(true)\n }}\n onKeyDownCapture={e => {\n if (e.keyCode === 40) {\n const index = curIndex + 1 === list.data.length ? 0 : curIndex + 1\n setCurIndex(index)\n // setValue(list.data[index].keyword)\n }\n if (e.keyCode === 38) {\n const index =\n curIndex - 1 === -1 ? list.data.length - 1 : curIndex - 1\n setCurIndex(index)\n // setValue(list.data[index].keyword)\n }\n if (e.keyCode === 13) {\n console.log(list.data, curIndex)\n handler(get(list, `data[${curIndex}].keyword`) || value, 'sug')\n }\n }}\n />\n {\n e.stopPropagation()\n handler(value)\n }}\n >\n 搜索\n \n {list.show && }\n \n
\n )\n}\n","import React from 'react'\nimport dynamic from 'next/dynamic'\n\nconst TopTips = dynamic(() => import('./top-tips'), {\n ssr: false,\n})\n\nexport default TopTips\n","export const getIEVersion = () => {\n if (typeof window === 'undefined') {\n return -1\n }\n if (!window?.navigator || !window?.navigator?.userAgent) {\n return -1\n }\n const { userAgent } = navigator //取得浏览器的userAgent字符串\n const isIE =\n userAgent.indexOf('compatible') > -1 && userAgent.indexOf('MSIE') > -1 //判断是否IE<11浏览器\n const isEdge = userAgent.indexOf('Edge') > -1 && !isIE //判断是否IE的Edge浏览器\n const isIE11 =\n userAgent.indexOf('Trident') > -1 && userAgent.indexOf('rv:11.0') > -1\n if (isIE) {\n const reIE = new RegExp('MSIE (\\\\d+\\\\.\\\\d+);')\n reIE.test(userAgent)\n const fIEVersion = parseFloat(RegExp['$1'])\n if (fIEVersion == 7) {\n return 7\n } else if (fIEVersion == 8) {\n return 8\n } else if (fIEVersion == 9) {\n return 9\n } else if (fIEVersion == 10) {\n return 10\n } else {\n return 6 //IE版本<=7\n }\n } else if (isEdge) {\n return 'edge' //edge\n } else if (isIE11) {\n return 11 //IE11\n } else {\n return -1 //不是ie浏览器\n }\n}\n\n// 是否需要全局升级提示\nexport const isHasTips = () => {\n const ieVersion = getIEVersion()\n // ie 11以下\n if (ieVersion > 0 && ieVersion <= 11) {\n return true\n }\n\n return false\n}\n\n// 是否为 Firefox\nexport const isFirefox = () => {\n if (typeof window === 'undefined') {\n return false\n }\n if (!window?.navigator || !window?.navigator?.userAgent) {\n return false\n }\n\n if (window?.navigator?.userAgent?.indexOf('Firefox') >= 0) {\n return true\n }\n\n return false\n}\n","import { useEffect, useState } from 'react'\nimport { isHasTips } from 'lib/ie-version'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\n\n// 是否需要添加顶部浏览器升级提示\nfunction useHasTips() {\n const [value, setValue] = useState(false)\n\n useEffect(() => {\n const value = isHasTips()\n setValue(value)\n }, [])\n\n return value\n}\n\nexport default useHasTips\n","import React, { useCallback } from 'react'\nimport classnames from 'classnames'\nimport Link from 'next/link'\nimport Router from 'next/router'\n\nimport getLocation, {\n setLocation2storage,\n setSelectedCity2storage,\n sendTeaLocationEvent,\n} from 'lib/get-location'\nimport getLinkHref from 'lib/get-link-href'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\nimport { GlobalStoreContext } from 'Components/store'\n\nimport { isNewVersion } from 'lib/version'\nimport City from './city'\nimport Search from './search'\nimport User from './user'\n\nimport TopTips from './top-tops-dynamic'\nimport useHasTips from 'Components/hooks/use-top-tips'\n\ninterface IProps {\n router: {\n asPath: string\n pathname: string\n }\n}\n\nconst live_white = require('static/live-white.gif')\nconst live_yellow = require('static/live-yellow.gif')\n\nconst routes = [\n {\n href: '/home',\n as: getLinkHref('/'),\n newVersionLink: '/new_home',\n text: '首页',\n },\n {\n href: '/auto/home',\n as: getLinkHref('/auto/library/x-x-x-x-x-x-x-x-x-x-x'),\n newVersionLink: '/auto/library/x-x-x-x-x-x-x-x-x-x-x',\n text: '车型库',\n },\n {\n href: '/car_fans_community/home',\n as: getLinkHref('/car_fans_community'),\n text: '车友圈',\n },\n {\n href: '/feed/home',\n as: getLinkHref('/feed'),\n newVersionLink: '/new_feed/home',\n text: '资讯',\n },\n {\n href: '/live/home',\n as: getLinkHref('/live'),\n text: '直播',\n icon: live_white,\n },\n {\n href: '/picture/home',\n as: getLinkHref('/picture'),\n text: '图片',\n },\n {\n href: '/video/home',\n as: getLinkHref('/video'),\n newVersionLink: '/new_video',\n text: '视频',\n },\n]\n\nfunction Header() {\n const isHasTips = useHasTips()\n // 当前激活的tab\n const [active, updateActive] = React.useState()\n const [showCity, setCityPopup] = React.useState(false)\n // 防止ssr与前端渲染的html不一致的问题,在服务端不渲染城市\n const { state, dispatch } = React.useContext(GlobalStoreContext)\n const { cityName } = state\n // 搜索页要隐藏搜索框\n const [hideSearch, setSearch] = React.useState(true)\n const asPath = (Router && Router.router && Router.router.asPath) || ''\n React.useEffect(() => {\n const pathname = asPath.split('?')[0]\n updateActive(pathname)\n setSearch(asPath.includes('/search'))\n }, [asPath])\n React.useEffect(() => {\n if (typeof state.cityName === 'undefined') {\n try {\n const cityName = window.localStorage.getItem('cityName')\n // 优先从本地存储中获取城市\n if (cityName) {\n dispatch({\n type: 'setCityName',\n payload: cityName || '',\n })\n sendTeaLocationEvent('init_top_location')\n } else {\n // 获取不到时,调用location获取\n getLocation().then((location) => {\n setLocation2storage(location)\n dispatch({\n type: 'setCityName',\n payload: location.cityName || '',\n })\n sendTeaLocationEvent('init_top_location')\n })\n }\n } catch (err) {}\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [state.cityName])\n const getLink = useCallback(\n (link: string | undefined, newVersionLink: string | undefined) => {\n if (isNewVersion() && newVersionLink) {\n return newVersionLink\n }\n\n return link || '#!'\n },\n []\n )\n\n return (\n <>\n {isHasTips ? : ''}\n
\n \n \n \n
\n {!hideSearch && }\n \n {\n sendTeaCommEvent('click_dcar_manage_btn')\n }}\n >\n 进入懂车号\n \n {\n sendTeaCommEvent('click_top_download_app')\n }}\n target=\"_blank\"\n rel=\"nofollow\"\n href=\"https://www.dcdapp.com/download/\"\n className=\"download\"\n >\n \n 下载APP\n
\n

扫码下载懂车帝APP

\n \n
\n \n {\n event.stopPropagation()\n event.nativeEvent.stopImmediatePropagation()\n sendTeaCommEvent('mouseenter_top_location', {\n location_city: cityName,\n })\n setCityPopup(true)\n }}\n onMouseLeave={(event) => {\n event.stopPropagation()\n event.nativeEvent.stopImmediatePropagation()\n setCityPopup(false)\n }}\n >\n \n {cityName}\n {showCity && (\n {\n setSelectedCity2storage(name!)\n sendTeaLocationEvent('switch_top_location', name)\n setCityPopup(false)\n }}\n />\n )}\n \n
\n \n
\n {routes.map((item, index) => (\n \n {\n sendTeaCommEvent('click_top_guide', {\n obj_text: item.text,\n })\n }}\n >\n {item.icon && }\n {item.text}\n \n \n ))}\n {/* \n 客户端\n */}\n
\n \n
\n \n )\n}\n\nexport default Header\n","import * as React from 'react'\nimport get from 'lodash/get'\nimport fetch from 'lib/decorated-fetch'\nimport Router from 'next/router'\nimport classnames from 'classnames'\nimport { isNewVersion } from 'Components/hooks/use-version'\nimport getUrl from 'lib/url'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\n\ninterface IResult {\n keyword: string\n}\ninterface IListProps {\n data: IResult[]\n curIndex: number\n}\ninterface IState {\n data: IResult[]\n show: boolean\n}\n\nconst handler = (keyword: string, searchMode = 'common') => {\n sendTeaCommEvent('click_top_search', {\n search_content: keyword,\n search_mode: searchMode,\n })\n sessionStorage.setItem('search_content', keyword)\n sessionStorage.setItem('search_mode', searchMode)\n\n Router.push(\n isNewVersion() ? '/new_search' : '`/search/home',\n `/search?keyword=${keyword}`\n )\n}\n\nfunction ResultList({ data, curIndex }: IListProps) {\n return (\n
    \n {data.map((item: IResult, index: number) => (\n ) => {\n e.stopPropagation()\n handler(item.keyword)\n // setValue(item.keyword)\n }}\n >\n {item.keyword}\n \n ))}\n \n
\n )\n}\n\nexport default function Search() {\n const [focus, setFocus] = React.useState(false)\n const [value, setValue] = React.useState('')\n /* 列表当前选中项索引 */\n const [curIndex, setCurIndex] = React.useState(0)\n /* 列表数据 */\n const [list, setList] = React.useState({ show: false, data: [] })\n\n const searchDivRef = React.useRef(null)\n const buttonRef = React.useRef(null)\n\n React.useEffect(() => {\n const searchDivDom = searchDivRef.current\n const searchButtonDom = buttonRef.current\n const onMouseEnter = () => {\n if (searchDivDom) searchDivDom.classList.add('button-hover')\n }\n const onMouseLeave = () => {\n if (searchDivDom) searchDivDom.classList.remove('button-hover')\n }\n if (searchDivDom && searchButtonDom) {\n searchButtonDom.addEventListener('mouseenter', onMouseEnter)\n searchButtonDom.addEventListener('mouseleave', onMouseLeave)\n }\n\n return () => {\n if (searchDivDom && searchButtonDom) {\n searchButtonDom.removeEventListener('mouseenter', onMouseEnter)\n searchButtonDom.removeEventListener('mouseleave', onMouseLeave)\n }\n }\n }, [searchDivRef.current, buttonRef.current])\n\n React.useEffect(() => {\n if (!value) {\n return\n }\n fetch(getUrl(`/motor/searchacl/complete?keyword=${value}`))\n .then(json => {\n setList({ show: true, data: json.data })\n })\n .catch(e => {\n // no-op\n })\n }, [value])\n\n return (\n
\n \n {\n setCurIndex(0)\n setValue(e.target.value)\n }}\n onBlur={() => {\n setFocus(false)\n setTimeout(() => {\n setList({ ...list, show: false })\n }, 200)\n }}\n onFocus={() => {\n setList({ ...list, show: true })\n setFocus(true)\n }}\n onKeyDownCapture={e => {\n if (e.keyCode === 40) {\n const index = curIndex + 1 === list.data.length ? 0 : curIndex + 1\n setCurIndex(index)\n // setValue(list.data[index].keyword)\n }\n if (e.keyCode === 38) {\n const index =\n curIndex - 1 === -1 ? list.data.length - 1 : curIndex - 1\n setCurIndex(index)\n // setValue(list.data[index].keyword)\n }\n if (e.keyCode === 13) {\n console.log(list.data, curIndex)\n handler(get(list, `data[${curIndex}].keyword`) || value, 'sug')\n }\n }}\n />\n {\n e.stopPropagation()\n handler(value)\n }}\n >\n 搜索\n \n {list.show && }\n \n
\n )\n}\n","import * as React from 'react'\nimport classnames from 'classnames'\n\nimport Link from 'next/link'\nimport Router from 'next/router'\n\nimport getLocation, {\n setLocation2storage,\n setSelectedCity2storage,\n sendTeaLocationEvent,\n} from 'lib/get-location'\nimport getLinkHref from 'lib/get-link-href'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\nimport { GlobalStoreContext } from 'Components/store'\n\nimport City from './city'\nimport Search from './search2'\nimport User from './user'\n\nimport TopTips from './top-tops-dynamic'\nimport useHasTips from 'Components/hooks/use-top-tips'\n\ninterface IProps {\n router: {\n asPath: string\n pathname: string\n }\n}\n\nconst live_white = require('static/live-white.gif')\nconst live_yellow = require('static/live-yellow.gif')\n\nconst routes = [\n {\n href: '/home',\n as: getLinkHref('/'),\n text: '首页',\n },\n {\n href: '/auto/library/x-x-x-x-x-x-x-x-x-x-x',\n as: getLinkHref('/auto/library/x-x-x-x-x-x-x-x-x-x-x'),\n text: '车型库',\n },\n {\n href: '/car_fans_community/home',\n as: getLinkHref('/car_fans_community'),\n text: '车友圈',\n },\n {\n href: '/feed/home',\n as: getLinkHref('/feed'),\n text: '资讯',\n },\n {\n href: '/live/home',\n as: getLinkHref('/live'),\n text: '直播',\n icon: live_white,\n },\n {\n href: '/picture/home',\n as: getLinkHref('/picture'),\n text: '图片',\n },\n {\n href: '/video/home',\n as: getLinkHref('/video'),\n text: '视频',\n },\n]\n\nfunction Header() {\n const isHasTips = useHasTips()\n // 当前激活的tab\n const [active, updateActive] = React.useState()\n const [showCity, setCityPopup] = React.useState(false)\n // 防止ssr与前端渲染的html不一致的问题,在服务端不渲染城市\n const { state, dispatch } = React.useContext(GlobalStoreContext)\n const { cityName } = state\n // 搜索页要隐藏搜索框\n const [hideSearch, setSearch] = React.useState(true)\n const asPath = (Router && Router.router && Router.router.asPath) || ''\n React.useEffect(() => {\n const pathname = asPath.split('?')[0]\n updateActive(pathname)\n setSearch(asPath.includes('/search'))\n }, [asPath])\n React.useEffect(() => {\n if (typeof state.cityName === 'undefined') {\n try {\n const cityName = window.localStorage.getItem('cityName')\n // 优先从本地存储中获取城市\n if (cityName) {\n dispatch({\n type: 'setCityName',\n payload: cityName || '',\n })\n sendTeaLocationEvent('init_top_location')\n } else {\n // 获取不到时,调用location获取\n getLocation().then((location) => {\n setLocation2storage(location)\n dispatch({\n type: 'setCityName',\n payload: location.cityName || '',\n })\n sendTeaLocationEvent('init_top_location')\n })\n }\n } catch (err) {}\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [state.cityName])\n return (\n <>\n {isHasTips ? : ''}\n
\n
\n \n \n \n
\n {!hideSearch && }\n \n {\n sendTeaCommEvent('click_dcar_manage_btn')\n }}\n >\n 进入懂车号\n \n {\n sendTeaCommEvent('click_top_download_app')\n }}\n target=\"_blank\"\n rel=\"nofollow\"\n href=\"https://www.dcdapp.com/download/\"\n className=\"download\"\n >\n \n 下载APP\n
\n

扫码下载懂车帝APP

\n \n
\n \n {\n event.stopPropagation()\n event.nativeEvent.stopImmediatePropagation()\n sendTeaCommEvent('mouseenter_top_location', {\n location_city: cityName,\n })\n setCityPopup(true)\n }}\n onMouseLeave={(event) => {\n event.stopPropagation()\n event.nativeEvent.stopImmediatePropagation()\n setCityPopup(false)\n }}\n >\n \n {cityName}\n {showCity && (\n {\n setSelectedCity2storage(name!)\n sendTeaLocationEvent('switch_top_location', name)\n setCityPopup(false)\n }}\n />\n )}\n {/* {\n {\n sendTeaCommEvent('switch_top_location', {\n location_city: name,\n });\n setCityPopup(false);\n }}\n />\n } */}\n \n
\n
\n \n\n \n
\n \n )\n}\n\nexport default Header\n","import { sendTeaCommEvent } from 'lib/tea-analyze'\nimport PubSub from 'pubsub-js'\nexport interface IChild {\n id: string // 埋点id\n name: string // 子集菜单名称\n link: string // 点击跳转链接 高亮匹配依据\n newVersionLink?: string // pc3.0 对应的page path\n as?: string //\n onClick?: () => void // 自定义点击事件\n onMouseEnter?: () => void // 自定义事件\n onMouseLeave?: () => void // 自定义事件\n isActive?: (url: string, user_id?: string) => boolean // 自定义高亮规则\n isNeedLogin?: boolean // 点击是否需要登陆\n loginMethod?: string // 登陆唤起传入的enter_method\n}\n\nexport interface IConfig {\n id: string // 唯一标示\n icon: string // icon-type\n name: string // 菜单名称\n hoverComponent?: boolean // hover情况下 右侧渲染组件\n link?: string // 点击跳转链接 高亮匹配依据\n as?: string // 浏览器url\n newVersionLink?: string // pc3.0 对应的page path\n children?: IChild[] // 如果存在children 则 link 不生效\n isActive?: (url: string, user_id?: string) => boolean // 自定义高亮规则\n onClick?: () => void // 自定义点击事件\n onMouseEnter?: () => void // 自定义事件\n onMouseLeave?: () => void // 自定义事件\n}\n\n// hover 选车 延迟展开\nlet timer: any = null\n\n// 新老版本同时存在 只能a标签跳转\nconst config: IConfig[] = [\n {\n id: 'home',\n icon: 'home',\n name: '首页',\n link: '/home',\n newVersionLink: '/new_home',\n as: '/',\n },\n {\n id: 'select-car',\n icon: 'select-car',\n name: '选车',\n hoverComponent: true,\n link: '/auto/home',\n newVersionLink: '/auto/library/x-x-x-x-x-x-x-x-x-x-x',\n as: '/auto/library/x-x-x-x-x-x-x-x-x-x-x',\n isActive: (url: string) => {\n // 选车页面\n if (url?.indexOf('/auto/library') === 0) {\n return true\n }\n return false\n },\n onClick: () => {\n PubSub.publish('HIDE_HOVER_CAR')\n },\n onMouseEnter: () => {\n timer = setTimeout(() => {\n sendTeaCommEvent('show_event', {\n event_id: 'common_select_car_menu',\n })\n PubSub.publish('HOVER_CAR_STATUS', true)\n timer = null\n }, 100)\n },\n onMouseLeave: () => {\n if (timer) {\n window.clearTimeout(timer)\n timer = null\n } else {\n // 稍微延后 用户倾斜划入也能展现弹窗\n setTimeout(() => {\n PubSub.publish('HOVER_CAR_STATUS', false)\n }, 100)\n }\n },\n },\n {\n id: 'video',\n icon: 'video',\n name: '视频',\n link: '/video/home',\n as: '/video',\n isActive: (url: string) => {\n return url?.indexOf('/video/') === 0\n },\n newVersionLink: '/new_video',\n },\n {\n id: 'feed',\n icon: 'feed',\n name: '资讯',\n link: '/feed/home',\n as: '/feed',\n newVersionLink: '/new_feed/home',\n isActive: (url: string) => {\n return url?.indexOf('/feed') === 0\n },\n },\n {\n id: 'fans',\n icon: 'fans',\n name: '车友圈',\n link: '/car_fans_community/home',\n as: '/car_fans_community',\n },\n {\n id: 'live',\n icon: 'live',\n name: '直播',\n link: '/live/home',\n as: '/live',\n },\n {\n id: 'picture',\n icon: 'picture',\n name: '精美车图',\n link: '/picture/home',\n as: '/picture',\n },\n {\n id: 'rank',\n icon: 'rank',\n name: '销量排行',\n link: '/leaderboard/sales',\n as: '/sales',\n },\n // {\n // id: 'tool',\n // icon: 'tool',\n // name: '小工具',\n // children: [\n // {\n // id: 'compare',\n // name: '车型对比',\n // link: '/compare'\n // },\n // {\n // id: 'compute',\n // name: '购车计算',\n // link: '/compute'\n // }\n // ]\n // },\n {\n id: 'me',\n icon: 'me',\n name: '我的',\n children: [\n // {\n // id: 'history',\n // name: '浏览历史',\n // link: '/me/history'\n // },\n {\n id: 'attention',\n name: '我的关注',\n link: '/profile',\n newVersionLink: '/new_profile',\n as: '/user/gzyh/{userId}',\n isNeedLogin: true,\n isActive: (url: string, user_id?: string) => {\n // 必须在我的关注下面\n const reg = new RegExp(`gz\\\\w+\\\\/${user_id}\\\\??`)\n return reg.test(url)\n },\n },\n {\n id: 'collect',\n name: '我的收藏',\n link: '/new_collect',\n as: '/user/favor',\n isNeedLogin: true,\n loginMethod: 'favorite',\n isActive: (url: string) => {\n return url?.indexOf('/user/favor') > -1\n },\n },\n ],\n onMouseEnter: () => {\n timer = setTimeout(() => {\n PubSub.publish('HOVER_NAV_CHILD', {\n status: true,\n id: 'me',\n })\n timer = null\n }, 200)\n },\n onMouseLeave: () => {\n if (timer) {\n window.clearTimeout(timer)\n timer = null\n } else {\n // 稍微延后 用户倾斜划入也能展现弹窗\n setTimeout(() => {\n PubSub.publish('HOVER_NAV_CHILD', {\n status: false,\n id: 'me',\n })\n }, 100)\n }\n },\n },\n {\n id: 'feedback',\n icon: 'feedback',\n name: '用户反馈',\n onClick: () => {\n PubSub.publish('OPEN_FEEDBACK')\n },\n },\n]\n\nexport default config\n","import React from 'react'\nimport Link from 'next/link'\nimport PubSub from 'pubsub-js'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\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 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'\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 { 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')\nconst carBg = require('static/car-bg-l.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 {categoryList?.map((item: any, index: number) => {\n if (item?.category_name) {\n return (\n {\n e.stopPropagation()\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n setTypeProxy(item?.category_name)\n }}\n key={`type-${index}`}\n >\n {item?.category_name}\n \n )\n }\n })}\n \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

{data?.info?.series_name}

\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'\n\nconst BRAND_ID_KEY = 'side-nav-select-car'\n\nexport default function SelectCar() {\n const [ref, inView] = useInView({\n threshold: 0,\n triggerOnce: true,\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 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 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'\n\nexport default function ProtalModal() {\n const [fixType, setFixType] = useState('')\n\n const [handleType, setHandleType] = useState(fixType)\n const handler = useCallback((type, value) => {\n if (fixType) {\n return\n }\n setHandleType(value)\n }, [])\n\n // TODO:\n const [show, setShow] = useState(false)\n const showHandler = useCallback((type, value) => {\n setShow(value)\n }, [])\n\n const fixHandler = useCallback((type, value) => {\n if (value) {\n setFixType('on')\n return\n }\n setFixType('')\n }, [])\n\n useEffect(() => {\n const token = PubSub.subscribe('SIDE_NAV_STATUS', handler)\n const showToken = PubSub.subscribe('HOVER_CAR_STATUS', showHandler)\n const fixToken = PubSub.subscribe('OPEN_FIX_NAV', fixHandler)\n return () => {\n PubSub.unsubscribe(token)\n PubSub.unsubscribe(showToken)\n PubSub.unsubscribe(fixToken)\n }\n }, [])\n\n const getHoverClassName: string = useMemo(() => {\n if (fixType) {\n return fixType\n }\n if (handleType) {\n return handleType\n }\n return ''\n }, [handleType, fixType, show])\n\n const getClassName: string = useMemo(() => {\n if (fixType) {\n return fixType\n }\n if (handleType) {\n return handleType\n }\n return 'tw-left-88 lg:tw-left-160'\n }, [handleType, fixType, show])\n\n return (\n <>\n
\n \n
\n \n \n \n \n \n )\n}\n","import React, {\n useCallback,\n useEffect,\n useMemo,\n useState,\n useContext,\n} from 'react'\nimport classNames from 'classnames'\nimport Router from 'next/router'\nimport PubSub from 'pubsub-js'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\nimport config, { IConfig, IChild } from '../../config'\nimport { isNewVersion, VERSION_COOKIE_KEY } from 'lib/version'\nimport { logger } from 'lib/slardar-utils'\nimport { GlobalStoreContext } from 'Components/store'\nimport { LoginStoreContext } from 'New/login/login-store'\n\nexport const getLink = (\n link: string | undefined,\n newVersionLink: string | undefined\n) => {\n // 必须每次点击的时候实时判断\n if (isNewVersion() && newVersionLink) {\n return newVersionLink\n }\n\n return link || ''\n}\n\nexport const childClickHandler = (\n child: IChild,\n userId: string,\n openLogin: (params: any) => void\n) => {\n let { as } = child\n // 登录判断\n if (child?.isNeedLogin) {\n if (!userId) {\n openLogin({\n enter_method: child?.loginMethod || 'other',\n })\n return\n }\n\n // 已经登录需要替换as中的${userId}\n as = as?.replace('{userId}', userId)\n }\n\n // eslint-disable-next-line no-unused-expressions\n child.onClick?.()\n if (getLink(child?.link, child.newVersionLink) && as) {\n Router.push(getLink(child?.link, child.newVersionLink), as)\n }\n}\n\nexport default function ChildWrap() {\n const { state: globalStore } = useContext(GlobalStoreContext)\n const { userData } = globalStore\n const { openLogin } = useContext(LoginStoreContext)\n\n const [url, setUrl] = useState('')\n\n const routeChangeComplete = useCallback((url: string) => {\n if (url === '') {\n setUrl('/')\n return\n }\n setUrl(url)\n }, [])\n\n const isActive = useCallback(\n (as: string | undefined, isActive, isNeedLogin = false) => {\n // url带有VERSION_COOKIE_KEY的参数时,返回有bug\n if (url?.indexOf(VERSION_COOKIE_KEY) > -1 && as === '/') {\n return true\n }\n if (url === as && !isNeedLogin) {\n return true\n }\n\n if (isActive && isActive(url, userData?.user_id)) {\n return true\n }\n return false\n },\n [url]\n )\n\n useEffect(() => {\n setUrl(window?.location?.pathname || '/')\n Router.events.on('routeChangeComplete', routeChangeComplete)\n return () => {\n Router.events.off('routeChangeComplete', routeChangeComplete)\n }\n }, [])\n\n const [fixType, setFixType] = useState('')\n const [handleType, setHandleType] = useState(fixType)\n const handler = useCallback((type, value) => {\n if (fixType) {\n return\n }\n setHandleType(value)\n }, [])\n\n const [show, setShow] = useState(false)\n const [id, setId] = useState('')\n const [wrapTop, setWrapTop] = useState(0)\n const showHandler = useCallback((type, params) => {\n setShow(params?.status)\n setId(params?.id)\n if (params?.id) {\n try {\n const navItemDOM = document.querySelector(\n `#sideItemWrap_${params?.id}`\n ) as HTMLElement\n const rect = navItemDOM?.getBoundingClientRect?.()\n setWrapTop(rect?.top - 84)\n } catch (err) {\n logger.warn(\n `[side item height] Error get side item height, err: ${err?.message}`\n )\n }\n }\n }, [])\n\n const fixHandler = useCallback((type, value) => {\n if (value) {\n setFixType('on')\n return\n }\n setFixType('')\n }, [])\n\n useEffect(() => {\n const token = PubSub.subscribe('SIDE_NAV_STATUS', handler)\n const showToken = PubSub.subscribe('HOVER_NAV_CHILD', showHandler)\n const fixToken = PubSub.subscribe('OPEN_FIX_NAV', fixHandler)\n return () => {\n PubSub.unsubscribe(token)\n PubSub.unsubscribe(showToken)\n PubSub.unsubscribe(fixToken)\n }\n }, [])\n\n const getClassName: string = useMemo(() => {\n if (fixType) {\n return fixType\n }\n if (handleType) {\n return handleType\n }\n return 'tw-left-88 lg:tw-left-160'\n }, [handleType, fixType, show])\n\n const childClick = useCallback(\n (child: IChild) => {\n childClickHandler(child, userData?.user_id || '', openLogin)\n },\n [userData?.user_id, openLogin]\n )\n\n return (\n <>\n
\n \n
\n \n {config?.map((item: IConfig) => {\n if (id === item?.id && item?.children?.length) {\n return (\n
    \n {item?.children?.map((child: IChild, i: number) => (\n
  • \n {\n e.stopPropagation()\n sendTeaCommEvent('clk_event', {\n event_id: 'common_menu_item',\n button_name: child.name,\n })\n childClick(child)\n }}\n >\n \n {child.name}\n \n
  • \n ))}\n
\n )\n }\n return null\n })}\n \n \n \n )\n}\n","/* eslint-disable no-unused-expressions */\nimport React, {\n useCallback,\n useEffect,\n useMemo,\n useState,\n useContext,\n} from 'react'\nimport Router from 'next/router'\nimport classNames from 'classnames'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\nimport { isNewVersion, VERSION_COOKIE_KEY } from 'lib/version'\nimport config, { IChild } from './config'\nimport PubSub from 'pubsub-js'\nimport SelectCarWrap from './components/select-car-wrap'\nimport ChildWrap, { childClickHandler, getLink } from './components/child-wrap'\nimport useHasTips from 'Components/hooks/use-top-tips'\nimport { GlobalStoreContext } from 'Components/store'\nimport { LoginStoreContext } from 'New/login/login-store'\n\ninterface IProps {\n fixType?: string\n pageType?: string\n}\n\nexport default function FixNav({ fixType = '', pageType = '' }: IProps) {\n const isHasTips = useHasTips()\n const [url, setUrl] = useState('')\n\n // 2.0的页面 固定1280宽度 小于1440的时候隐藏\n const isAutoNav = pageType?.indexOf('auto-nav') > -1\n\n const { state: globalStore } = useContext(GlobalStoreContext)\n const { userData } = globalStore\n const { openLogin } = useContext(LoginStoreContext)\n\n const routeChangeComplete = useCallback((url: string) => {\n if (url === '') {\n setUrl('/')\n return\n }\n setUrl(url)\n }, [])\n\n const isActive = useCallback(\n (as: string | undefined, isActive, isNeedLogin = false) => {\n // 需要处理 url 后面的参数\n let realUrl = url\n if (realUrl?.indexOf('?') > -1) {\n realUrl = realUrl?.split('?')?.[0]\n }\n if (realUrl === as && (!isNeedLogin || userData?.user_id)) {\n return true\n }\n\n if (isActive && isActive(realUrl, userData?.user_id)) {\n return true\n }\n return false\n },\n [url, userData?.user_id]\n )\n\n useEffect(() => {\n setUrl(window?.location?.pathname || '/')\n Router.events.on('routeChangeComplete', routeChangeComplete)\n return () => {\n Router.events.off('routeChangeComplete', routeChangeComplete)\n }\n }, [])\n\n const [handleType, setHandleType] = useState(fixType)\n const handler = useCallback((type, value) => {\n if (fixType) {\n return\n }\n setHandleType(value)\n }, [])\n\n useEffect(() => {\n const token = PubSub.subscribe('SIDE_NAV_STATUS', handler)\n return () => {\n PubSub.unsubscribe(token)\n }\n }, [])\n\n const widthClassName = useMemo(() => {\n return `side-nav-width tw-bg-white ${\n isAutoNav ? 'tw-hidden lg:tw-block' : ''\n } ${handleType ? handleType : 'tw-w-88 lg:tw-w-160'}`\n }, [handleType, isAutoNav])\n\n const childClick = useCallback(\n (child: IChild) => {\n childClickHandler(child, userData?.user_id || '', openLogin)\n },\n [userData?.user_id, openLogin]\n )\n\n return (\n
\n
\n \n
    e.stopPropagation()}>\n {config.map((item, index) => {\n return (\n \n \n {\n e.stopPropagation()\n sendTeaCommEvent('clk_event', {\n event_id: 'common_menu_item',\n button_name: item.name,\n })\n // eslint-disable-next-line no-unused-expressions\n item.onClick?.()\n if (\n getLink(item?.link, item.newVersionLink) &&\n item.as\n ) {\n Router.push(\n getLink(item?.link, item.newVersionLink),\n item.as\n )\n }\n }}\n onMouseEnter={() => {\n // eslint-disable-next-line no-unused-expressions\n item?.onMouseEnter?.()\n }}\n onMouseLeave={() => {\n // eslint-disable-next-line no-unused-expressions\n item?.onMouseLeave?.()\n }}\n >\n {item.icon && (\n \n )}\n \n {item.name}\n {(item.hoverComponent || item.children) && (\n \n )}\n \n \n {item?.children ? (\n
      \n {item?.children?.map((child: IChild, i: number) => {\n return (\n
    • \n {\n e.stopPropagation()\n sendTeaCommEvent('clk_event', {\n event_id: 'common_menu_item',\n button_name: child.name,\n })\n childClick(child)\n }}\n >\n \n \n {child.name}\n \n \n
    • \n )\n })}\n
    \n ) : null}\n \n
    \n )\n })}\n
\n
\n \n \n
\n \n \n )\n}\n","import React, { useCallback, useEffect, useState } from 'react'\nimport PubSub from 'pubsub-js'\nimport classnames from 'classnames'\nimport SideNav from './index'\nimport Protal from 'Components/portal'\nexport default function ProtalModal({\n pageType = 'new',\n}: {\n pageType?: string\n}) {\n const isFixType = pageType?.indexOf('no-nav') > -1\n\n const [visible, setVisible] = useState(false)\n function openFixNav() {\n setVisible(true)\n document.body.style.overflow = 'hidden'\n }\n function closeFixNav() {\n setVisible(false)\n document.body.style.overflow = ''\n }\n\n const handler = useCallback(\n (type, value) => {\n if (value) {\n openFixNav()\n return\n }\n closeFixNav()\n },\n [setVisible]\n )\n\n useEffect(() => {\n const token = PubSub.subscribe('OPEN_FIX_NAV', handler)\n return () => {\n PubSub.unsubscribe(token)\n }\n }, [])\n\n return (\n document.body}>\n {\n e.stopPropagation()\n PubSub.publish('OPEN_FIX_NAV', false)\n }}\n >\n
e.stopPropagation()}>\n {\n e.stopPropagation()\n PubSub.publish('OPEN_FIX_NAV', false)\n }}\n >\n \n

\n
\n \n \n \n
\n )\n}\n","import React, { useContext, useEffect, useRef, useCallback } from 'react'\nimport get from 'lodash/get'\nimport fetch from 'isomorphic-unfetch'\nimport classnames from 'classnames'\nimport { on, off } from '@arsenal/arsenal/modules/event'\n\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\nimport getUrl from 'lib/url'\nimport { useScrollSpy } from 'Components/hooks'\nimport { GlobalStoreContext } from 'Components/store'\n\nexport interface ICity {\n /* 城市首字母 */\n initials: string\n /* 城市列表 */\n city: [\n {\n city_name: string\n }\n ]\n}\n\ninterface IProps {\n onChange?(cityName?: string): void\n}\n\nexport default function City(props: IProps) {\n const { onChange } = props\n // 设置全局的城市\n const { state: globalStore, dispatch } = useContext(GlobalStoreContext)\n const { cities } = globalStore\n\n // 整体dom\n const ref = useRef(null)\n\n const [currIndex, setCurrIndex, cityRef] = useScrollSpy<\n HTMLElement,\n HTMLDivElement\n >(node => {\n return node.querySelectorAll('.cities')\n }, false)\n /* 获取城市列表 */\n const fetchCities = useCallback(() => {\n return fetch(getUrl('/motor/dealer/m/v1/get_dealer_city_list/'))\n .then(res => res.json())\n .then(json => {\n const data = get(json, 'data', [])\n if (data.length) {\n data.unshift({\n initials: '热门城市',\n city: [\n { city_name: '北京', initials: '热门城市' },\n { city_name: '上海', initials: '热门城市' },\n { city_name: '广州', initials: '热门城市' },\n { city_name: '深圳', initials: '热门城市' },\n { city_name: '重庆', initials: '热门城市' },\n { city_name: '天津', initials: '热门城市' },\n { city_name: '成都', initials: '热门城市' },\n { city_name: '杭州', initials: '热门城市' },\n { city_name: '武汉', initials: '热门城市' },\n { city_name: '苏州', initials: '热门城市' },\n { city_name: '西安', initials: '热门城市' },\n { city_name: '南京', initials: '热门城市' },\n ],\n })\n }\n dispatch({\n type: 'setCities',\n payload: data,\n })\n })\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n useEffect(() => {\n if (!cities || !cities.length) {\n fetchCities()\n }\n }, [cities, fetchCities])\n useEffect(() => {\n function handleDocumentClick(e: Event) {\n if (!ref.current || ref.current.contains(e.target as Node)) {\n return\n }\n onChange && onChange()\n // setCity(Object.assign({}, city, { show: false }))\n }\n on(window, 'click', handleDocumentClick)\n return () => {\n off(window, 'click', handleDocumentClick)\n }\n }, [onChange])\n\n /* 渲染城市首字母 */\n function renderLetter() {\n if (!cities) {\n return null\n }\n return (\n
\n {cities.map((item, index) => (\n {\n setCurrIndex(index)\n // scrollView(item.initials)\n }}\n >\n {item.initials.slice(0, 1).toLocaleUpperCase()}\n \n ))}\n \n
\n )\n }\n\n /* 渲染城市列表 */\n function renderCities() {\n if (!cities) {\n return null\n }\n return (\n
\n {cities.map(city => {\n return (\n \n

{city.initials.toLocaleUpperCase()}

\n {city.city.map((item: ICity['city'][0]) => (\n {\n // setCity({ show: false, name: item.city_name })\n sendTeaCommEvent('clk_event', {\n event_id: 'common_city_select_menu',\n })\n dispatch({\n type: 'setCityName',\n payload: item.city_name,\n })\n if (onChange) {\n onChange(item.city_name)\n }\n }}\n >\n {item.city_name}\n \n ))}\n \n )\n })}\n \n
\n )\n }\n if (!cities || !cities.length) {\n return null\n }\n return (\n ) => {\n e.stopPropagation()\n }}\n >\n {renderLetter()}\n {renderCities()}\n \n \n )\n}\n","import React, { useCallback, useEffect, useRef } from 'react'\nimport fetch from 'lib/decorated-fetch'\nimport Router from 'next/router'\nimport classnames from 'classnames'\nimport getQuery from '@arsenal/arsenal/modules/getQuery'\nimport { logger, metrics } from 'lib/slardar-utils'\nimport ImageStyles from 'Components/view-image/style'\nimport getUrl from 'lib/url'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\nimport { useCityName } from 'Components/hooks'\nimport { getSearchLink } from 'New/search/utils'\n\ninterface IBuriedPointInfo {\n motor_id?: string\n series_id?: string\n}\n\ninterface IResult {\n keyword: string\n image_url?: string\n cpl_type?: number\n buried_point_info?: IBuriedPointInfo\n}\ninterface IListProps {\n data: IResult[]\n value: string\n cityName: string | undefined\n setList: (list: any) => void\n type: string\n keyword: string\n inputeValue?: string\n}\ninterface IState {\n data: IResult[]\n show: boolean\n type: string\n}\n\nconst handler = (\n spanKeyword: string,\n searchMode = 'common',\n value: string,\n cityName: string | undefined,\n query_input_text?: string\n) => {\n // 去除高亮插入标签\n const keyword = spanKeyword?.replace(/<[^>]+>/g, '')\n if (searchMode === 'sug') {\n sendTeaCommEvent('clk_event', {\n event_id: 'common_search_recommend',\n query_content: keyword,\n query_input_text,\n })\n } else if (searchMode === 'common' || searchMode === 'preset') {\n sendTeaCommEvent('clk_event', {\n event_id: 'common_search_btn',\n query_content: keyword,\n query_input_text,\n })\n } else if (searchMode === 'history') {\n sendTeaCommEvent('clk_event', {\n event_id: 'common_search_history',\n query_content: keyword,\n query_input_text,\n })\n }\n sessionStorage.setItem('search_content', keyword)\n sessionStorage.setItem('search_mode', searchMode)\n saveLocalSearch(keyword)\n const link = getSearchLink({\n keyword,\n city_name: cityName || '',\n from: 'DELETE_KEY',\n api_param: 'DELETE_KEY',\n search_mode: searchMode,\n })\n // 非搜索页面的话新开页面跳转\n if (window?.location?.pathname?.indexOf('/search') === 0) {\n // 如果aspath 没改变的话需要强制刷新页面 不然 右侧组件 show 有问题\n if (\n decodeURIComponent(`/search${window.location.search}`) ===\n decodeURIComponent(link.as || '')\n ) {\n window.location.href = link.as\n return\n }\n Router.push(link.link, link.as)\n // window.location.href = link.as\n return\n }\n window.open(link.as, '_blank')\n}\n\nfunction ResultList({\n data,\n value,\n cityName,\n setList,\n type = '',\n inputeValue = '',\n}: IListProps) {\n //考虑高亮关键字\n if (inputeValue && data?.length) {\n /* eslint-disable no-unused-expressions */\n data?.forEach((item: any) => {\n if (item?.keyword && item?.keyword?.indexOf('') === -1) {\n item.keyword = item?.keyword?.replace(\n inputeValue,\n `${inputeValue}`\n )\n }\n })\n }\n return (\n
    \n {type && data?.length ? (\n
  • \n 历史搜索\n {\n clearLocalSearch()\n setList({ type: '', data: [], show: false })\n sendTeaCommEvent('clk_event', {\n event_id: 'common_search_clear',\n })\n }}\n >\n 清空\n \n
  • \n ) : (\n ''\n )}\n {data?.map?.((item: IResult, index: number) => {\n if (item.keyword && item.keyword?.trim()) {\n return (\n ) => {\n e.stopPropagation()\n handler(\n item.keyword,\n type || 'sug',\n value,\n cityName,\n inputeValue\n )\n }}\n >\n {item?.image_url && item?.cpl_type === 2 ? (\n \"\"\n ) : (\n ''\n )}\n \n {item?.buried_point_info?.series_id ? (\n {\n e.stopPropagation()\n sendTeaCommEvent('clk_event', {\n event_id: 'common_search_tag',\n query_content: item.keyword?.replace(/<[^>]+>/g, ''),\n query_input_text: inputeValue,\n tag_name: '车系直达',\n })\n }}\n >\n 车系直达\n \n ) : (\n ''\n )}\n {item?.buried_point_info?.motor_id ? (\n {\n e.stopPropagation()\n sendTeaCommEvent('clk_event', {\n event_id: 'common_search_tag',\n query_content: item.keyword?.replace(/<[^>]+>/g, ''),\n query_input_text: inputeValue,\n tag_name: '车友圈',\n })\n }}\n >\n 车友圈\n \n ) : (\n ''\n )}\n \n )\n }\n return ''\n })}\n \n
\n )\n}\n\nconst fetchRollInfo = async () => {\n try {\n const json = await fetch(getUrl(`/motor/searchpage/launcher/main/v1/`))\n return json?.data?.hot_search_roll_info?.map((item: any) => item.default)\n } catch (error) {\n return []\n }\n}\n\nconst DEFUALT_PLACEHOLDER = ''\n\nexport default function Search() {\n const cityName = useCityName()\n const [focus, setFocus] = React.useState(false)\n const [value, setValue] = React.useState('')\n\n /* 列表数据 */\n const [list, setList] = React.useState({\n show: true,\n data: [],\n type: '',\n })\n\n const isShowListRef = useRef(false)\n\n const searchDivRef = useRef(null)\n const buttonRef = useRef(null)\n const inputRef = useRef(null)\n\n // 搜索预置词 index 间隔3s\n const rollIndex = useRef(0)\n const rollList = useRef()\n\n const setRollInfo = useCallback(() => {\n // 用户focus时 或者 无预置词 直接返回\n if (focus || !rollList?.current?.length || !inputRef?.current) {\n return\n }\n // 搜索页面保留用户的输入\n if (window?.location?.pathname?.indexOf('/search') === 0) {\n if (inputRef?.current?.value === '') {\n inputRef.current.placeholder = rollList?.current?.[rollIndex?.current]\n rollIndex.current++\n if (rollIndex.current >= rollList?.current?.length) {\n rollIndex.current = 0\n }\n }\n return\n }\n // 非搜索页面 非focus时 用户有输入也清空\n inputRef.current.value = ''\n setValue('')\n inputRef.current.placeholder = rollList?.current?.[rollIndex?.current]\n rollIndex.current++\n if (rollIndex.current >= rollList?.current?.length) {\n rollIndex.current = 0\n }\n }, [focus])\n\n useEffect(() => {\n const init = async () => {\n const list = await fetchRollInfo()\n rollList.current = list\n setRollInfo()\n }\n init()\n }, [])\n\n useEffect(() => {\n const rollTimer = window.setInterval(() => {\n setRollInfo()\n }, 3000)\n return () => {\n window.clearInterval(rollTimer)\n }\n }, [setRollInfo])\n\n useEffect(() => {\n // 搜索页面才处理\n if (window?.location?.pathname?.indexOf('/search') === 0) {\n const keyword = getQuery('keyword') as string\n setValue(keyword)\n saveLocalSearch(keyword)\n setList(preValue => {\n return { type: '', data: preValue.data, show: false }\n })\n }\n }, [getQuery('keyword')])\n\n useEffect(() => {\n const searchDivDom = searchDivRef.current\n const searchButtonDom = buttonRef.current\n const onMouseEnter = () => {\n if (searchDivDom) searchDivDom.classList.add('button-hover')\n }\n const onMouseLeave = () => {\n if (searchDivDom) searchDivDom.classList.remove('button-hover')\n }\n if (searchDivDom && searchButtonDom) {\n searchButtonDom.addEventListener('mouseenter', onMouseEnter)\n searchButtonDom.addEventListener('mouseleave', onMouseLeave)\n }\n\n return () => {\n if (searchDivDom && searchButtonDom) {\n searchButtonDom.removeEventListener('mouseenter', onMouseEnter)\n searchButtonDom.removeEventListener('mouseleave', onMouseLeave)\n }\n }\n }, [searchDivRef.current, buttonRef.current])\n\n const fetchComlete = (value: any) => {\n fetch(\n getUrl(`/motor/searchacl/complete?motor_source=pc_new&keyword=${value}`)\n ).then(json => {\n if (inputRef?.current?.value === '') {\n return\n }\n setList({\n show: true,\n type: '',\n data: json?.data?.filter((t: any) => t?.keyword !== 'undefined'),\n })\n })\n }\n\n useEffect(() => {\n if (!value || getQuery('keyword') === value) {\n return\n }\n fetchComlete(inputRef?.current?.value)\n }, [value])\n\n const searchBtnHandler = () => {\n let searchType = 'common'\n isShowListRef.current = false\n let searchValue = inputRef?.current?.value?.trim() || ''\n if (\n inputRef?.current?.placeholder &&\n (searchValue === undefined || searchValue === '')\n ) {\n searchType = 'preset'\n searchValue = inputRef?.current?.placeholder as string\n }\n handler(\n searchValue?.trim(),\n searchType,\n searchValue?.trim(),\n cityName,\n inputRef?.current?.value || ''\n )\n }\n\n return (\n
\n {\n isShowListRef.current = true\n setValue(e?.target?.value)\n if (e?.target?.value === '') {\n setList({ data: getLocalSearch(), show: true, type: 'history' })\n } else {\n setList(preValue => {\n return { type: '', data: preValue.data, show: false }\n })\n }\n }}\n onBlur={() => {\n setFocus(false)\n setTimeout(() => {\n setList({ ...list, show: false, type: '' })\n }, 200)\n }}\n onFocus={e => {\n isShowListRef.current = true\n // focus 搜索框被点击但未输出任何内容状态\n // 页面切换 value为undefined 但是 e.target.value 有可能任会有值\n if (e?.target?.value === '') {\n setList({ data: getLocalSearch(), show: true, type: 'history' })\n } else {\n if (list?.data?.length) {\n setList({ ...list, show: true, type: '' })\n } else {\n fetchComlete(e?.target?.value)\n }\n }\n setFocus(true)\n sendTeaCommEvent('clk_event', {\n event_id: 'common_search_input',\n })\n }}\n onKeyDownCapture={e => {\n if (e.keyCode === 13) {\n e?.currentTarget?.blur()\n searchBtnHandler()\n setFocus(false)\n setTimeout(() => {\n setList({ ...list, show: false, type: '' })\n }, 200)\n }\n }}\n />\n {\n e.stopPropagation()\n searchBtnHandler()\n }}\n >\n 搜索\n \n {list.show && isShowListRef?.current ? (\n \n ) : (\n ''\n )}\n \n \n
\n )\n}\n\nfunction getLocalSearch() {\n if (typeof window === 'undefined') {\n return []\n }\n try {\n const list = window.localStorage.getItem('search_local_list') || '[]'\n return JSON.parse(list)?.map((value: string) => {\n return { keyword: value }\n })\n } catch (err) {\n metrics.counter('localStorage.getItem', { key: 'search_local_list' })\n logger.warn(\n `[search_local_list] Error get window.localStorage.getItem, err: ${err?.message}`\n )\n return []\n }\n}\n\nfunction clearLocalSearch() {\n if (typeof window === 'undefined') {\n return\n }\n try {\n window.localStorage.setItem('search_local_list', '')\n } catch (err) {\n console.error(err)\n metrics.counter('localStorage.setItem', { key: 'search_local_list' })\n logger.warn(\n `[search_local_list] Error clear window.localStorage.setItem, err: ${err?.message}`\n )\n }\n}\n\nfunction saveLocalSearch(value: string) {\n if (typeof window === 'undefined' || value === undefined) {\n return\n }\n try {\n const storageList = JSON.parse(\n window.localStorage.getItem('search_local_list') || '[]'\n )\n // 首先去重\n const index = storageList.indexOf(value)\n if (index > -1) {\n storageList.splice(index, 1)\n }\n // 最多8条记录\n const maxList = storageList.slice(0, 7)\n window.localStorage.setItem(\n 'search_local_list',\n JSON.stringify([value, ...maxList])\n )\n } catch (err) {\n console.error(err)\n metrics.counter('localStorage.setItem', { key: 'search_local_list' })\n logger.warn(\n `[search_local_list] Error set window.localStorage.setItem, err: ${err?.message}`\n )\n }\n}\n","import React, { useState, useContext, useEffect, useCallback } from 'react'\nimport fetch from 'isomorphic-unfetch'\nimport applyHttpsImage from 'lib/apply-https-img'\nimport getUrl from 'lib/url'\nimport cookie from 'cookie'\nimport { GlobalStoreContext } from 'Components/store'\nimport {\n getLoginHref,\n getRegisterHref,\n getLogoutHref,\n} from 'lib/get-login-href'\nimport { teaConfig, sendTeaCommEvent } from 'lib/tea-analyze'\nimport { LoginStoreContext } from 'New/login/login-store'\nimport { ugcUserLink } from 'Components/author/avatar'\n\nconst fetchAntiToken = () => {\n return fetch(getUrl('/tt-anti-token'))\n .then((res) => res.json())\n .then((res) => {\n window.localStorage.setItem('tt-anti-token', res?.data?.token || '')\n })\n .catch((err) => {\n console.error(err)\n })\n}\n\nexport default function User(props: any) {\n const { size } = props\n // 设置全局的城市\n const { state: globalStore } = useContext(GlobalStoreContext)\n const { userData } = globalStore\n\n useEffect(() => {\n if (!userData) {\n fetchAntiToken()\n }\n }, [userData])\n\n const isLogin = userData && userData.user_id\n const screenName = (userData && userData.screen_name) || ''\n\n useEffect(() => {\n if (userData?.user_id) {\n sessionStorage.setItem('userData', JSON.stringify(userData))\n teaConfig({\n user_id: userData.user_id,\n })\n }\n }, [userData?.user_id])\n\n const { openLogin, logout } = useContext(LoginStoreContext)\n\n return (\n ) => {\n e.stopPropagation()\n }}\n >\n {isLogin ? (\n
\n {\n sendTeaCommEvent('clk_event', {\n event_id: 'common_user_profile_icon',\n })\n }}\n />\n
\n ) : (\n
\n {/* {\n sendTeaCommEvent('clk_event', {\n event_id: 'common_login_icon',\n })\n }}\n >\n 登录\n */}\n {\n openLogin({\n enter_method: 'login',\n })\n sendTeaCommEvent('clk_event', {\n event_id: 'common_login_icon',\n })\n }}\n >\n 登录\n \n
\n )}\n
    \n
  • \n {ugcUserLink({ userId: userData?.user_id, target: '_self' })(\n
    \n
    \n {\n sendTeaCommEvent('clk_event', {\n event_id: 'common_login_menu_item',\n button_name: '个人主页',\n })\n }}\n >\n

    {screenName}

    \n
    \n
    \n )}\n
  • \n
  • \n {\n sendTeaCommEvent('clk_event', {\n event_id: 'common_login_menu_item',\n button_name: '退出登录',\n })\n logout()\n }}\n >\n \n 退出登录\n \n
  • \n
\n \n \n )\n}\n","import React, { useState, useEffect, useCallback, useRef } from 'react'\nimport Router from 'next/router'\nimport {\n useResponsive,\n IResponsiveType,\n computedResponsive,\n} from 'Components/hooks/use-responsive'\nimport PubSub from 'pubsub-js'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\n\nconst DEFAULT_TYPE = ''\n\nfunction HeaderSwitch({ pageType = 'new' }: { pageType?: string }) {\n const isFixType = pageType?.indexOf('no-nav') > -1\n // 手动强制切换\n const [handleType, setHandleType] = useState('')\n const responsive = useResponsive()\n const [responsiveType, setResponsiveType] =\n useState(DEFAULT_TYPE)\n\n // 是否手动点击触发\n const isHandel = useRef(false)\n\n useEffect(() => {\n setResponsiveType(computedResponsive(responsive))\n if (isHandel.current) {\n isHandel.current = false\n }\n }, [responsive])\n\n const handleClick = useCallback(() => {\n if (handleType) {\n // 没有侧边栏 点击 只能浮层\n if (isFixType) {\n PubSub.publish('OPEN_FIX_NAV', true)\n return\n }\n switch (handleType) {\n case 'left':\n setHandleType('right')\n break\n case 'right':\n // sm md 手动 点击 只能浮层\n if (\n (responsiveType === 'sm' || responsiveType === 'md') &&\n !!isHandel.current\n ) {\n PubSub.publish('OPEN_FIX_NAV', true)\n return\n }\n setHandleType('left')\n break\n case 'bottom':\n setHandleType('top')\n break\n case 'top':\n setHandleType('bottom')\n break\n }\n return\n }\n switch (responsiveType) {\n case 'sm':\n case 'md':\n // sm md 手动 点击 只能浮层\n if (isHandel.current) {\n PubSub.publish('OPEN_FIX_NAV', true)\n return\n }\n setHandleType('left')\n break\n case 'lg':\n case 'xl':\n case '2xl':\n setHandleType('right')\n break\n }\n }, [responsiveType, handleType])\n\n useEffect(() => {\n if (handleType) {\n // 控制左侧菜单切换\n switch (handleType) {\n case 'left':\n if (isHandel.current) {\n sendTeaCommEvent('clk_event', {\n event_id: 'common_menu_btn',\n shrink_type: 'unfold',\n })\n }\n PubSub.publish('SIDE_NAV_STATUS', 'on')\n break\n case 'right':\n if (isHandel.current) {\n sendTeaCommEvent('clk_event', {\n event_id: 'common_menu_btn',\n shrink_type: 'fold',\n })\n }\n PubSub.publish('SIDE_NAV_STATUS', 'off')\n break\n }\n return\n }\n }, [handleType, responsiveType])\n\n useEffect(() => {\n switch (responsiveType) {\n case 'sm':\n case 'md':\n setHandleType('right')\n break\n case 'lg':\n case 'xl':\n case '2xl':\n setHandleType('left')\n break\n }\n }, [responsiveType])\n\n return (\n {\n isHandel.current = true\n handleClick()\n }}\n >\n \n \n

\n )\n}\n\nexport default HeaderSwitch\n","import { useEffect, useState } from 'react'\nimport { isFirefox } from 'lib/ie-version'\n\n// 是否为 Firfox\nfunction useFireFox() {\n const [value, setValue] = useState(false)\n\n useEffect(() => {\n const value = isFirefox()\n setValue(value)\n }, [])\n\n return value\n}\n\nexport default useFireFox\n","import * as React from 'react'\nimport Link from 'next/link'\nimport Router from 'next/router'\nimport FixNavModal from 'New/side-nav/fix-nav'\nimport ProtalModal from 'New/side-nav/components/protal-modal'\nimport getLocation, {\n setLocation2storage,\n setSelectedCity2storage,\n sendTeaLocationEvent,\n} from 'lib/get-location'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\nimport { GlobalStoreContext } from 'Components/store'\nimport PubSub from 'pubsub-js'\nimport City from './new-city'\nimport Search from './new-search'\nimport User from './new-user'\nimport HeaderSwitch from './new-header-switch'\nimport TopTips from './top-tops-dynamic'\nimport useHasTips from 'Components/hooks/use-top-tips'\nimport useFireFox from 'Components/hooks/use-firefox'\nimport classNames from 'classnames'\n\nconst live_yellow = require('static/live-yellow.gif')\n\nfunction Header({\n pageType = 'new',\n cusHeadType = '',\n}: {\n pageType?: string\n cusHeadType?: string\n}) {\n const isHasTips = useHasTips()\n const isFireFox = useFireFox()\n // 当前激活的tab\n const [active, updateActive] = React.useState()\n const [showCity, setCityPopup] = React.useState(false)\n // 防止ssr与前端渲染的html不一致的问题,在服务端不渲染城市\n const { state, dispatch } = React.useContext(GlobalStoreContext)\n const { cityName } = state\n\n const [hideSearch, setSearch] = React.useState(false)\n const asPath = (Router && Router.router && Router.router.asPath) || ''\n React.useEffect(() => {\n const pathname = asPath.split('?')[0]\n updateActive(pathname)\n setSearch(false)\n }, [asPath])\n React.useEffect(() => {\n if (typeof state.cityName === 'undefined') {\n try {\n const cityName = window.localStorage.getItem('cityName')\n // 优先从本地存储中获取城市\n if (cityName) {\n dispatch({\n type: 'setCityName',\n payload: cityName || '',\n })\n sendTeaLocationEvent('init_top_location')\n } else {\n // 获取不到时,调用location获取\n getLocation().then((location) => {\n setLocation2storage(location)\n dispatch({\n type: 'setCityName',\n payload: location.cityName || '',\n })\n sendTeaLocationEvent('init_top_location')\n })\n }\n } catch (err) {}\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [state.cityName])\n\n const [handleType, setHandleType] = React.useState('')\n const handler = React.useCallback((type, value) => {\n setHandleType(value)\n }, [])\n\n // 可自定义header className 目前支持 black 影院模式\n const [cusType, setCusType] = React.useState(cusHeadType)\n const typeHandler = React.useCallback((type, value) => {\n setCusType(value)\n }, [])\n\n const routeChangeComplete = React.useCallback(() => {\n PubSub.publish('CUS_HEAD_TYPE', '')\n }, [])\n\n React.useEffect(() => {\n const token = PubSub.subscribe('SIDE_NAV_STATUS', handler)\n const typeToken = PubSub.subscribe('CUS_HEAD_TYPE', typeHandler)\n Router.events.on('routeChangeComplete', routeChangeComplete)\n return () => {\n PubSub.unsubscribe(token)\n PubSub.unsubscribe(typeToken)\n Router.events.off('routeChangeComplete', routeChangeComplete)\n }\n }, [])\n\n // 切换搜索框显示隐藏 带过渡效果\n const [isEnter, setIsEnter] = React.useState(false)\n const [isLeave, setIsLeave] = React.useState(false)\n const isLeaveRef = React.useRef(false)\n const inputHandler = React.useCallback(\n (type, value) => {\n if (value) {\n setIsLeave(true)\n isLeaveRef.current = true\n } else {\n if (hideSearch !== value) {\n setIsEnter(true)\n }\n isLeaveRef.current = false\n setSearch(false)\n }\n },\n [hideSearch]\n )\n\n const handleAnimationEnd = React.useCallback(() => {\n if (isEnter) {\n setIsEnter(false)\n }\n if (isLeave) {\n setIsLeave(false)\n }\n if (isLeaveRef.current) {\n isLeaveRef.current = false\n setSearch(true)\n }\n }, [isEnter, isLeave])\n\n React.useEffect(() => {\n const inputToken = PubSub.subscribe('SEARCH_INPUT_Hidden', inputHandler)\n return () => {\n PubSub.unsubscribe(inputToken)\n }\n }, [inputHandler])\n\n return (\n
\n \n
\n \n \n {\n sendTeaCommEvent('clk_event', {\n event_id: 'dcar_brand_icon',\n })\n }}\n />\n \n {\n event.stopPropagation()\n event.nativeEvent.stopImmediatePropagation()\n sendTeaCommEvent('hover_event', {\n event_id: 'common_city_select_btn',\n shrink_type: 'unfold',\n })\n setCityPopup(true)\n }}\n onMouseLeave={(event) => {\n event.stopPropagation()\n event.nativeEvent.stopImmediatePropagation()\n setCityPopup(false)\n sendTeaCommEvent('hover_event', {\n event_id: 'common_city_select_btn',\n shrink_type: 'fold',\n })\n }}\n onClick={(event) => {\n event.stopPropagation()\n }}\n >\n {cityName}\n {showCity && (\n {\n setSelectedCity2storage(name!)\n sendTeaLocationEvent('switch_top_location', name)\n setCityPopup(false)\n }}\n />\n )}\n \n
\n \n \n {!hideSearch && }\n \n
\n \n {\n sendTeaCommEvent('clk_event', {\n event_id: 'common_top_btn',\n })\n }}\n >\n \n 懂车号\n \n {\n sendTeaCommEvent('clk_event', {\n event_id: 'common_top_btn',\n })\n }}\n onMouseEnter={(event) => {\n sendTeaCommEvent('hover_event', {\n event_id: 'common_download_app_btn',\n button_name: '下载App',\n })\n }}\n >\n \n 下载App\n
\n

扫码下载懂车帝App

\n \n
\n \n
\n \n \n {isHasTips ? : ''}\n \n
\n )\n}\n\nexport default Header\n","import * as React from 'react'\nimport { on, off } from '@arsenal/arsenal/modules/event'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\n\nconst jumpTopIcon = require('static/jump-top.png')\n\ninterface IProps {\n bottom?: number\n}\n\nexport default function BackToTop({ bottom = 0 }: IProps) {\n const [show, updateShow] = React.useState(false)\n React.useEffect(() => {\n function handleScroll() {\n const scrollElement =\n document.scrollingElement || document.documentElement\n if (scrollElement.scrollTop > 100) {\n updateShow(true)\n } else {\n updateShow(false)\n }\n }\n on(document, 'scroll', handleScroll)\n return () => {\n off(document, 'scroll', handleScroll)\n }\n }, [])\n const handleButtonClick = () => {\n sendTeaCommEvent('clk_event', {\n event_id: 'right_float_nav',\n button_name: '返回顶部',\n })\n const scrollElement = document.scrollingElement || document.documentElement\n const top = scrollElement.scrollTop\n sendTeaCommEvent('return_to_top')\n scrollSmoothly(scrollElement, -top)()\n }\n\n let bottomSize = 29\n // 如果有自定义的优先级更高\n if (bottom) {\n bottomSize = bottom\n }\n\n function renderTopButton() {\n return (\n \n \n

返回顶部

\n \n )\n }\n\n if (!show) {\n return null\n }\n return <>{renderTopButton()}\n}\n\nfunction scrollSmoothly(scrollElement: Element, dis: number) {\n let moved = 0\n const initTop = scrollElement.scrollTop\n return function scroll() {\n if (Math.abs(moved) < Math.abs(dis)) {\n /**\n * 200ms内移动dis的距离\n * 200 / 16 得出一共要多少帧\n * dis / (200 / 16)得出每一帧移动的距离\n */\n moved = moved + dis / (200 / 16)\n if (dis > 0) {\n moved = Math.min(moved, dis)\n } else {\n moved = Math.max(moved, dis)\n }\n scrollElement.scrollTop = initTop + moved\n\n requestAnimationFrame(scroll)\n }\n }\n}\n","import { useRouter } from 'next/router'\n\n// 入口开放的route\nconst pathConfig = ['/home', '/new_home']\n\nexport default function useShouldShowEntrance() {\n const router = useRouter()\n // 只展示首页 /new_home\n return pathConfig.indexOf(router?.route) >= 0\n}\n","import * as React from 'react'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\nimport { parse, stringify } from 'querystring'\nimport { NEW_VERSION, OLD_VERSION, VERSION_COOKIE_KEY } from 'lib/version'\nimport Link from 'next/link'\nimport Cookies from '@arsenal/arsenal/modules/Cookies'\nimport { GlobalStoreContext } from 'Components/store'\nimport serializeObject from '@arsenal/arsenal/modules/serializeObject'\nimport useShouldShowEntrance from './hooks/use-should-show-entrance'\n\n// 入口开发开关\nconst onOff = true\n\n// 新老版本切换\nexport const switchNewOrOld = (version = NEW_VERSION) => {\n const isNew = version === NEW_VERSION\n const versionKey = isNew ? NEW_VERSION : OLD_VERSION\n sendTeaCommEvent('clk_event', {\n event_id: 'right_float_nav',\n button_name: isNew ? '体验新版首页' : '返回旧版',\n })\n if (window?.location?.search) {\n try {\n const param = parse(window?.location?.search?.slice(1))\n param[VERSION_COOKIE_KEY] = versionKey\n\n window.location.href = `${window.location.origin}?${stringify(param)}`\n return\n } catch (error) {\n console.error(error)\n }\n }\n\n window.location.href = `${window.location.origin}?${VERSION_COOKIE_KEY}=${versionKey}`\n}\n\nexport default function SwitchButton({ new_home = true }) {\n const shouldShowEntrance = useShouldShowEntrance()\n\n if (!onOff) {\n return null\n }\n\n if (!shouldShowEntrance) {\n return null\n }\n\n const switchToNewClick = () => {\n switchNewOrOld(new_home ? 'old' : 'new')\n }\n function renderSwith() {\n return (\n \n \n {new_home ? '返回旧版' : '体验新版首页'}\n \n \n )\n }\n return <>{renderSwith()}\n}\n","import * as React from 'react'\nimport { on, off } from '@arsenal/arsenal/modules/event'\n\nimport SwitchButton from './new-switch-button'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\nimport { useRouter } from 'next/router'\n\nconst menu_top_img = require('../public/static/menu-top@3x.png')\nconst menu_bottom_img = require('../public/static/menu-bottom@3x.png')\n\nexport default function RightSideNavigation() {\n const router = useRouter()\n const [show, updateShow] = React.useState(false)\n const [activeNow, setActiveNow] = React.useState('')\n\n const withinView = React.useCallback((domID: string) => {\n const dom = document.getElementById(domID)\n if (!dom) {\n return false\n }\n return dom.getBoundingClientRect().top + dom.clientHeight > 0\n }, [])\n const handleScroll = React.useCallback(() => {\n const scrollElement = document.documentElement\n const start_dom = document.getElementById('original_column')\n if (\n start_dom &&\n scrollElement.scrollTop >\n start_dom.getBoundingClientRect().top + window.pageYOffset\n ) {\n updateShow(true)\n } else {\n updateShow(false)\n }\n\n const domIDs = [\n // 'hot_news',\n 'original_column',\n 'dong_che_fen',\n 'friend_circle',\n 'featured_videos',\n 'featured_images',\n 'local_market',\n 'home_feed',\n ]\n const elements = domIDs.map(e => {\n return {\n id: e,\n withinView: withinView(e),\n }\n })\n\n for (const element of elements) {\n if (element.withinView) {\n setActiveNow(element.id)\n break\n }\n }\n }, [])\n React.useEffect(() => {\n handleScroll()\n on(document, 'scroll', handleScroll)\n return () => {\n off(document, 'scroll', handleScroll)\n }\n }, [])\n\n const handleItemClick = React.useCallback((e: React.SyntheticEvent) => {\n const target = e.target as HTMLElement\n const type = target.dataset.type || ''\n sendTeaCommEvent('click_home_right_nav', {\n button_name: target.textContent,\n })\n const dom = document.getElementById(type) || document.body\n if (dom) {\n const to = dom?.offsetTop\n window.scrollTo({\n top: to,\n behavior: 'smooth',\n })\n }\n }, [])\n\n if (!show) {\n return \n }\n return (\n <>\n
\n \n
\n {/* \n 直播\n */}\n \n 原创\n \n \n 懂车分\n \n {/* \n 车友圈\n */}\n \n 视频\n \n \n 图片\n \n {/* \n 本地车市\n */}\n \n 资讯\n \n 返回顶部\n
\n \n
\n \n \n )\n}\n","import teaInit, { sendTeaCommEvent, teaConfig } from 'lib/tea-analyze'\nimport { logger, metrics } from 'lib/slardar-utils'\n\ninterface IRealUser {\n scr?: number // 是否有过滚动\n clk?: number // 是否有过点击\n}\n\nexport function isRealUser() {\n const realUser = getRealUserFromStorage()\n return realUser?.clk || realUser?.scr ? true : false\n}\n\nexport function getRealUserFromStorage() {\n let realUser: IRealUser = null!\n let str = ''\n if (localStorage?.getItem) {\n str = localStorage.getItem('pc_real_user') ?? ''\n }\n try {\n realUser = JSON.parse(str ?? '')\n } catch (e) {\n // do nothing\n }\n return realUser\n}\n\nexport function setRealUser2Storage({ scr, clk }: IRealUser) {\n const realUser = getRealUserFromStorage() ?? {}\n if (typeof scr !== 'undefined') {\n Object.assign(realUser, {\n scr,\n })\n }\n if (typeof clk !== 'undefined') {\n Object.assign(realUser, {\n clk,\n })\n }\n try {\n localStorage.setItem('pc_real_user', JSON.stringify(realUser))\n } catch (e) {\n if (metrics?.counter) {\n metrics.counter('pc_real_user_localstorage')\n }\n }\n}\n\nexport default function init() {\n const isValidUser = isRealUser()\n\n let hasScroll = false\n let hasClick = false\n\n // 用户有效性,通过滚动实现\n let timer = 0\n function handleScroll() {\n if (timer) {\n window.clearTimeout(timer)\n }\n\n function winScroll() {\n sendTeaCommEvent('page_scroll', {})\n\n if (isValidUser || hasScroll) {\n return\n }\n\n hasScroll = true\n\n if (hasScroll) {\n setRealUser2Storage({ scr: 1 })\n }\n }\n\n timer = window.setTimeout(winScroll, 200)\n }\n\n function handleClick() {\n if (isValidUser || hasClick) {\n return\n }\n\n hasClick = true\n\n if (hasClick) {\n setRealUser2Storage({ clk: 1 })\n }\n }\n\n document.removeEventListener('scroll', handleScroll, false)\n document.addEventListener('scroll', handleScroll, false)\n\n if (!isValidUser) {\n document.removeEventListener('click', handleClick, false)\n document.addEventListener('click', handleClick, false)\n }\n\n return () => {\n document.removeEventListener('scroll', handleScroll, false)\n if (!isValidUser) {\n document.removeEventListener('click', handleClick, false)\n }\n }\n}\n","// 默认 页面 加载完成后会主动 window.scrollTo(0, 0) 配置一些不需要处理的url\nconst NOT_SCROLL_TO_LIST = [\n '/auto/library/', // 车型库\n]\n\nconst isScroll = (url: string) => {\n if (!url) {\n return true\n }\n const len = NOT_SCROLL_TO_LIST.length\n for (let i = 0; i < len; i++) {\n if (url?.indexOf(NOT_SCROLL_TO_LIST[i]) > -1) {\n return false\n }\n }\n return true\n}\n\nexport default isScroll\n","// 默认 页面 加载完成后会主动 发送 pageEnter 配置一些页面需要自定义处理\nconst NOT_AUTO_TO_LIST = [\n '/article/', // 资讯详情\n '/search', // 搜索\n '/user/', // 收藏页面 个人主页\n]\n\nconst cusPageEnter = (url: string) => {\n if (!url) {\n return false\n }\n const len = NOT_AUTO_TO_LIST.length\n for (let i = 0; i < len; i++) {\n if (url?.indexOf(NOT_AUTO_TO_LIST[i]) > -1) {\n return true\n }\n }\n return false\n}\n\nexport default cusPageEnter\n","import React, { useCallback, useMemo } from 'react'\nimport { Image, ImageProps } from 'Components/view-image'\n\nconst CenterImageWrap: React.FC = ({\n ...props\n}) => {\n\n return (\n
\n \n {props.duration &&

{props.duration}

}\n \n
\n )\n }\n\nexport default CenterImageWrap;\n","import React, { useCallback, useMemo } from 'react'\nimport classNames from 'classnames'\nimport CenterImageWrap from './center-image-wrap'\nimport formatDuration from 'lib/format-duration'\nimport { useResponsive } from 'Components/hooks/use-responsive'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\n\ninterface IProps {\n order?: number\n category: string\n className?: string\n uniqueIdStr: string\n title: string\n name: string\n userId: string\n imageList: any[]\n commentCount: number\n duration: number\n [key: string]: any\n}\n\nconst Item: React.FC = ({\n order,\n category,\n uniqueIdStr,\n title,\n name,\n className,\n userId,\n imageList,\n commentCount,\n duration,\n}) => {\n const responsive = useResponsive()\n\n const isVideo = useMemo(() => {\n return duration > 0\n }, [duration])\n\n const isSiglePic = useMemo(() => {\n // 1920/1680分辨率下,必须为3张\n if (responsive.xl) {\n return imageList?.length < 3 && imageList?.length > 0\n }\n return imageList?.length < 2 && imageList?.length > 0\n }, [imageList, responsive])\n\n const isNonePic = useMemo(() => {\n return imageList?.length < 1\n }, [imageList])\n\n const imageIndexClass = [\n 'tw-inline-block tw-mr-8',\n 'tw-hidden md:tw-inline-block xl:tw-inline-block xl:tw-mr-8',\n 'tw-hidden xl:tw-inline-block',\n ]\n\n const renderImageList = () => {\n return (\n <>\n {imageList?.map((item: any, index) => {\n if (index < 1 || !isSiglePic) {\n return (\n \n )\n }\n })}\n \n )\n }\n\n return (\n \n \n \n {title}\n

\n \n {!isNonePic && renderImageList()}\n \n \n \n {\n e.stopPropagation()\n sendTeaCommEvent('clk_event', {\n event_id: 'feed_user_profile',\n author_id: `${userId}`,\n group_id: uniqueIdStr,\n })\n }}\n >\n {name}\n \n {commentCount}评论\n {isVideo ? '视频' : '文章'}\n

\n \n \n )\n}\n\nexport default Item\n","/* eslint-disable @typescript-eslint/no-use-before-define */\nimport React, { useCallback, useEffect, useState, useRef } from 'react'\nimport Router, { SingletonRouter, withRouter } from 'next/router'\nimport {\n sendTeaCommEvent,\n sendTeaEnterEvent,\n sendTeaStayEvent,\n} from 'lib/tea-analyze'\nimport PubSub from 'pubsub-js'\nimport Loading from 'Components/loading'\nimport ScrollLoader from 'Components/scroll-loader'\nimport fetchFeed, { IFeedData, IParams } from 'lib/fetch-feed'\nimport { tabs } from '../home/components/home-feed'\nimport Item from './nav-item'\nimport classnames from 'classnames'\nimport { parse } from 'querystring'\nimport { useResponsive } from 'Components/hooks/use-responsive'\n\nconst MAX_LOAD_COUNT = 118\n\nconst tabsMap: {\n [key: string]: string\n} = {}\ntabs.forEach((item) => {\n tabsMap[item.id] = item.label\n})\n\ninterface INavProps {\n router: SingletonRouter\n}\n\nconst FeedNav = (props: INavProps) => {\n const responsive = useResponsive()\n\n const [loading, setLoading] = useState(true)\n const [videoList, setVideoList] = useState([])\n\n const [handleType, setHandleType] = useState('')\n const wrapClass = React.useMemo(() => {\n return `${handleType ? handleType : 'tw-w-316 md:tw-w-390 xl:tw-w-510'}`\n }, [handleType])\n\n const scrollRef = useRef(null)\n\n // 现在是hover时触发加载,使用缓存处理下\n const tempStorage = useRef(new Map())\n\n const gidRef = useRef()\n const [key, setKey] = useState('')\n useEffect(() => {\n try {\n if (props?.router?.asPath?.indexOf('?') > -1) {\n const param = parse(props?.router?.asPath?.split('?')[1])\n if (param?.['gid'] && gidRef.current !== param['gid']) {\n gidRef.current = param['gid']\n setUniqueIdStr((param['gid'] as string) || '')\n setTimeout(() => {\n PubSub.publish('FEED_NAV_UNIQUEID', {\n gid: param['gid'],\n })\n }, 0)\n }\n }\n } catch (error) {\n console.error(error)\n }\n }, [props?.router?.asPath])\n\n useEffect(() => {\n setKey(tabs?.[0]['id'])\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n handleChange(tabs?.[0]['id'], true)\n }, [])\n\n const [uniqueIdStr, setUniqueIdStr] = useState('')\n\n const getChannelId = (item: any) => {\n let channelId = ''\n try {\n const action_extra = item?.info?.dislike_info?.action_extra\n const { channel_id } = JSON.parse(action_extra)\n channelId = channel_id\n } catch (error) {\n console.error(error)\n }\n return channelId\n }\n\n const beforeRef = useRef<{\n channel_name?: string\n channel_id?: string\n group_id?: string\n tab_name?: string\n pre_page_id?: string\n content_type?: string\n star_time?: number\n }>()\n const setUniqueIdStrProxy = useCallback(\n (value: string, key: string, isUpdate: boolean, item?: any) => {\n gidRef.current = value\n setUniqueIdStr(value)\n if (isUpdate) {\n const channel_name = key\n const channel_id = `${getChannelId(item)}`\n const group_id = item?.unique_id_str\n const tab_name = tabsMap[key]\n const pre_page_id = 'page_feed_article_mix'\n const content_type =\n item?.info?.video_duration > 0 ? 'pgc_video' : 'pgc_article'\n if (!beforeRef?.current) {\n beforeRef.current = {}\n }\n if (beforeRef.current) {\n if (beforeRef.current.star_time) {\n // 拥有上一个先上报上一个stay-time\n sendTeaCommEvent('stay_page', {\n channel_name: beforeRef.current.channel_name,\n channel_id: beforeRef.current.channel_id,\n group_id: beforeRef.current.group_id,\n tab_name: beforeRef.current.tab_name,\n pre_page_id: beforeRef.current.pre_page_id,\n content_type: beforeRef.current.content_type,\n stay_time: new Date().getTime() - beforeRef.current.star_time,\n })\n }\n beforeRef.current.channel_name = channel_name\n beforeRef.current.channel_id = channel_id\n beforeRef.current.group_id = group_id\n beforeRef.current.tab_name = tab_name\n beforeRef.current.pre_page_id = pre_page_id\n beforeRef.current.content_type = content_type\n beforeRef.current.star_time = new Date().getTime()\n }\n PubSub.publish('FEED_NAV_UNIQUEID', {\n channel_id,\n channel_name,\n tab_name,\n gid: value,\n })\n }\n },\n [setUniqueIdStr]\n )\n\n const setHandleTypeProxy = useCallback(() => {\n sendTeaCommEvent('clk_event', {\n event_id: 'feed_list_shrink',\n shrink_type: handleType === 'off' ? 'unfold' : 'fold',\n })\n setHandleType((type: string) => {\n if (type === 'off') {\n return ''\n }\n return 'off'\n })\n }, [handleType])\n\n const [twoXl, setTwoXl] = useState(false)\n // xl以及以上不展示shadow\n const [shadowStatus, setShowStatus] = useState(false)\n useEffect(() => {\n if (responsive.lg === true && responsive.xl === false) {\n setTimeout(() => {\n PubSub.publish('SIDE_NAV_STATUS', 'off')\n }, 200)\n }\n if (responsive?.['2xl']) {\n setTwoXl(true)\n } else {\n setTwoXl(false)\n }\n if (responsive.xl) {\n setHandleType('')\n setShowStatus(false)\n return\n }\n setShowStatus(true)\n }, [responsive])\n\n useEffect(() => {\n PubSub.publish('FEED_NAV_STATUS', handleType ? handleType : 'on')\n }, [handleType])\n\n const [fixType, setFixType] = useState('')\n\n const handler = useCallback((type, value) => {\n if (value === 'on') {\n setFixType('nav-on')\n return\n }\n setFixType('nav-off')\n }, [])\n\n useEffect(() => {\n const token = PubSub.subscribe('SIDE_NAV_STATUS', handler)\n return () => {\n PubSub.unsubscribe(token)\n }\n }, [])\n\n const conditionRef = useRef<{\n id: string\n loadCount: number\n fetchId: number\n }>()\n const timerRef = useRef()\n\n const handleMouseOver = useCallback((item) => {\n PubSub.publish('FEED_NAV_UNIQUEID_HOVER', item?.unique_id_str)\n }, [])\n\n const handleChange = useCallback((id, refresh: boolean) => {\n // 非刷新情况直接使用缓存\n if (!refresh && tempStorage?.current?.has(id)) {\n setVideoList(tempStorage.current.get(id))\n return\n }\n if (timerRef.current) {\n window.clearTimeout(timerRef.current)\n }\n timerRef.current = setTimeout(async () => {\n const fetchId = Math.random()\n conditionRef.current = { id, loadCount: 0, fetchId }\n setLoading(true)\n setVideoList([])\n\n const playLoad: IParams = {\n tt_from: 'enter_auto',\n category: conditionRef?.current?.id,\n count: 8,\n motor_feed_extra_params: '{\"new_feed\": true, \"feed_type\": 0}',\n }\n\n const a = await fetchFeed(playLoad)\n a.data = a?.data.filter((item: IFeedData) => !item.duplicate)\n\n if (conditionRef?.current?.fetchId !== fetchId) {\n setLoading(false)\n return\n }\n\n tempStorage.current.set(id, [...a.data])\n setVideoList([...a.data])\n if (!gidRef?.current && a.data?.[0]?.['unique_id_str']) {\n // 之前没有设置的时候都会设置默认第一个\n setUniqueIdStrProxy(\n a.data?.[0]?.['unique_id_str'],\n id,\n true,\n a.data?.[0]\n )\n const url = `/feed?gid=${a.data?.[0]?.['unique_id_str']}`\n try {\n // 避免重复上报\n window.history.replaceState(\n { ...window?.history?.state, as: url, url },\n '',\n url\n )\n } catch (error) {\n Router.push('/new_feed/home', url)\n }\n }\n setLoading(false)\n }, 10)\n }, [])\n\n /* 懒加载 */\n const loadMoreHandler = useCallback(() => {\n if (\n !conditionRef?.current?.id ||\n conditionRef?.current?.loadCount > MAX_LOAD_COUNT\n ) {\n return\n }\n sendTeaCommEvent('load_refresh', {\n event_id: 'feed_refresh',\n channel_name: tabsMap[key],\n })\n setLoading(true)\n\n if (conditionRef.current) {\n conditionRef.current.loadCount++\n }\n\n fetchFeed({\n tt_from: 'load_more',\n category: conditionRef?.current?.id,\n count: 8,\n motor_feed_extra_params: '{\"new_feed\": true, \"feed_type\": 0}',\n max_behot_time: videoList?.[videoList?.length - 1]?.info?.behot_time,\n })\n .then((res) => {\n const list = res?.data?.filter((item: IFeedData) => !item.duplicate)\n setVideoList(videoList.concat(list))\n tempStorage.current.set(\n conditionRef?.current?.id,\n videoList.concat(list)\n )\n setLoading(false)\n })\n .catch(() => {\n setLoading(false)\n })\n }, [key, videoList])\n\n const renderTypes = () => {\n return (\n
\n
    \n {tabs.map((item: any, index: number) => {\n return (\n {\n setKey(item.id)\n handleChange(item.id, false)\n sendTeaCommEvent('clk_event', {\n event_id: 'left_channel_nav',\n tab_name: item.label,\n })\n // 每一次切换频道,上报page_enter\n sendTeaStayEvent()\n\n const feedParams = {\n page_id: 'page_feed_article_mix',\n sub_tab: item.label,\n }\n sendTeaEnterEvent(feedParams)\n\n // 点击每次滚动至顶部\n // eslint-disable-next-line no-unused-expressions\n scrollRef?.current?.scrollTo?.(0, 0)\n }}\n key={`side-${index}`}\n >\n {item.label}\n \n )\n })}\n
\n \n
\n )\n }\n\n const handleGoDetail = useCallback(\n (item: any) => {\n sendTeaCommEvent('clk_event', {\n event_id: 'feed_item',\n channel_name: key,\n channel_id: getChannelId(item),\n group_id: item?.unique_id_str,\n tab_name: tabsMap[key],\n content_type:\n item?.info?.video_duration > 0 ? 'pgc_video' : 'pgc_article',\n })\n setUniqueIdStrProxy(item.unique_id_str, key, true, item)\n const url = `/feed?gid=${item.unique_id_str}`\n try {\n // 避免重复上报\n window.history.replaceState(\n { ...window?.history?.state, as: url, url },\n '',\n url\n )\n } catch (error) {\n Router.push('/new_feed/home', url)\n }\n },\n [key]\n )\n\n const renderList = () => {\n return (\n <>\n
\n \n
\n {videoList?.map((item: any, index: number) => {\n return (\n handleMouseOver(item)}\n onClick={() => handleGoDetail(item)}\n >\n \n
\n )\n })}\n
\n {loading ? : null}\n \n \n \n \n )\n }\n\n const renderContent = () => {\n return (\n <>\n {renderTypes()}\n \n
\n {videoList?.length ? (\n renderList()\n ) : loading ? (\n \n ) : (\n

\n 网路顿时有些拥堵\n 请点击重新加载,刷新资讯\n handleChange(key, true)}\n >\n 重新加载\n \n

\n )}\n
\n \n \n \n )\n }\n\n const renderSwitchButton = () => {\n return (\n \n {handleType === 'off' ? '展开' : '收起'}\n \n

\n )\n }\n\n return (\n
\n \n {tabs?.length ? (\n renderContent()\n ) : (\n \n )}\n

\n \n 收起\n \n {\n handleChange(key, true)\n sendTeaCommEvent('clk_event', {\n event_id: 'feed_list_load_refresh',\n })\n }}\n >\n 换一批\n \n

\n {renderSwitchButton()}\n
\n \n \n )\n}\n\nexport default withRouter(FeedNav)\n","class EventShim {\n type: string;\n constructor(type: string) {\n this.type = `${type}`;\n }\n}\n\nconst listenersMap: WeakMap<\n EventTagerShim,\n Map>\n> = new WeakMap();\n\nclass EventTagerShim {\n constructor() {\n listenersMap.set(this, new Map());\n }\n addEventListener(eventName: string, listener: any) {\n if (listener == null) {\n return;\n }\n if (typeof listener !== \"function\") {\n throw new TypeError(\"'listener' should be a function or an object.\");\n }\n\n const listeners = listenersMap.get(this);\n if (!listeners) {\n return new Error(\"listenersMap has not this\");\n }\n let stacks = listeners.get(eventName);\n if (stacks === undefined) {\n stacks = [];\n }\n if (stacks.indexOf(listener) === -1) {\n stacks.push(listener);\n }\n listeners.set(eventName, stacks);\n return;\n }\n\n removeEventListener(eventName: string, listener: any): any {\n if (listener == null) {\n return;\n }\n\n const listeners = listenersMap.get(this);\n if (!listeners) {\n return new Error(\"listenersMap has not this\");\n }\n let stacks = listeners.get(eventName);\n if (stacks === undefined) {\n stacks = [];\n }\n const index = stacks.indexOf(listener);\n if (index !== -1) {\n stacks.splice(index, 1);\n }\n listeners.set(eventName, stacks);\n return;\n }\n\n dispatchEvent(event: EventShim) {\n if (event == null || typeof event.type !== \"string\") {\n throw new TypeError('\"event.type\" should be a string.');\n }\n\n const listeners = listenersMap.get(this);\n if (!listeners) {\n return new Error(\"listenersMap has not this\");\n }\n\n const eventName = event.type;\n let stacks = listeners.get(eventName);\n if (stacks === undefined) {\n return true;\n }\n\n stacks.forEach(fn => {\n fn(event);\n });\n return true;\n }\n}\n\nexport { EventShim, EventTagerShim };\n","type callBack = (mutationRecord: MutationRecord) => void;\n\nexport default function WilMutationObserver(fn: callBack, option?: MutationObserverInit) {\n const target = document.body || document;\n\n const defaultOption = {\n attributes: !0,\n childList: !0,\n subtree: !0\n };\n\n const callBacks: Array = [fn];\n\n const observerHandle = function(mutationRecords: MutationRecord[]) {\n mutationRecords.forEach(mutationRecord => {\n callBacks.forEach(fn => {\n fn(mutationRecord);\n });\n });\n };\n\n const observer = new MutationObserver(observerHandle);\n observer.observe(target, Object.assign({}, defaultOption, option));\n return observer;\n}\n","export function isObject(o: any): boolean {\n return Object.prototype.toString.call(o) === \"[object Object]\";\n}\n\nexport function deepFindLog(\n element: Element,\n baseAttribute: string,\n extraAttribute: string\n) {\n let findBaselog = true;\n let logs: Array = [];\n let p: Node | Element | null = element;\n while (!!p && p !== document) {\n if (!(p instanceof HTMLElement || p instanceof SVGElement)) {\n p = p.parentNode;\n continue;\n }\n const attributeValue =\n p.getAttribute(findBaselog ? baseAttribute : extraAttribute) || \"\";\n let obj: Object;\n\n try {\n obj = JSON.parse(attributeValue);\n if (isObject(obj)) {\n logs.push(obj);\n if (findBaselog) {\n findBaselog = false;\n continue;\n }\n }\n } catch (error) {}\n p = p.parentNode;\n }\n\n if (logs.length > 0) {\n return logs;\n // return Object.assign({}, ...logs.reverse());\n }\n return null;\n}\n\nexport function isIntersecting(e: IntersectionObserverEntry) {\n return e.isIntersecting || e.intersectionRatio > 0;\n}\n\nexport function now() {\n const n = window.performance && performance.now && performance.now();\n return n || Date.now();\n}\n\nexport function noop() {\n // fix ios 下 click 事件代理无效,需要给 非 body的子节点 添加一个 空 click 事件回调函数\n}\n\nexport function fixIosClick() {\n for (let i = 0, nodes = document.body.childNodes; i < nodes.length; i++) {\n const node = nodes[i];\n if (\n node instanceof Element &&\n node.nodeType === 1 &&\n !(node as HTMLElement)[\"onclick\"]\n ) {\n (node as HTMLElement)[\"onclick\"] = noop;\n }\n }\n}\n\nexport function getAttrFrom(e: IntersectionObserverEntry, key: string) {\n return e.target && e.target.getAttribute(key);\n}\n\nexport function isBrowser() {\n return (\n typeof window !== \"undefined\" && typeof window.document !== \"undefined\"\n );\n}\n\n// 直接获取element查找的Extra\nexport function findExtraLog(\n element: Element | null,\n extraAttribute: string = \"data-log-extra\"\n) {\n const logs: Record[] = [];\n let p: Node | Element | null = element;\n while (!!p && p !== document) {\n if (!(p instanceof HTMLElement || p instanceof SVGElement)) {\n p = p.parentNode;\n continue;\n }\n const attributeValue = p.getAttribute(extraAttribute) || \"\";\n\n try {\n if (attributeValue) {\n const extraLog = JSON.parse(attributeValue);\n logs.unshift(extraLog);\n }\n } catch (error) {\n console.warn(\"parse json in data-log-extra\");\n console.error(error);\n }\n p = p.parentNode;\n }\n return logs.reduce>(\n (acc, curr) => ({\n ...acc,\n ...curr,\n }),\n {}\n );\n}\n\n/**\n * 获取元素的路径\n * 如#card_26-cartoon_series_1e32d380/section[1]/div[1]/div[1]/div[1]/a[1]/div[3]/div[1]/span[2]\n */\nexport function getPathByEle(element: HTMLElement | SVGElement): string {\n if (!element) {\n return \"\";\n }\n\n if (element.id !== \"\") return `#${element.id}`;\n\n if (element === document.body) return \"body\";\n\n let ix = 0;\n\n if (!element.parentNode) {\n return \"html\";\n }\n\n const siblings = element.parentNode.childNodes as NodeListOf<\n HTMLElement | SVGElement\n >;\n\n for (let i = 0, l = siblings.length; i < l; i++) {\n let sibling = siblings[i];\n\n if (sibling === element)\n return `${getPathByEle(\n element.parentNode as HTMLElement\n )}/${element.tagName.toLowerCase()}${ix > 0 ? `[${ix + 1}]` : ``}`;\n\n if (sibling.nodeType === 1 && sibling.tagName === element.tagName) {\n ix++;\n }\n }\n\n return element.tagName.toLowerCase();\n}\n\ninterface IPlainObj {\n [propName: string]: any;\n}\n\nexport interface IScope {\n setTags: (tags: IPlainObj) => void;\n setExtras: (info: IPlainObj) => void;\n}\n// interface ISentry {\n// withScope: (cb: (scope: IScope) => void) => void;\n// captureException: (err: Error) => void;\n// }\n\ndeclare global {\n interface Window {\n Slardar: any;\n }\n}\n\nexport function isHtmlOrSvg(\n node: Node | null\n): node is HTMLElement | SVGAElement {\n if (node === null) {\n return false;\n }\n return (\n node.nodeType === 1 &&\n (node instanceof HTMLElement || node instanceof SVGAElement)\n );\n}\n\nexport function getClickPositionParams(e: MouseEvent, logs: IPlainObj[] = []) {\n const tgt = e.target as Node;\n\n if (!window || !isHtmlOrSvg(tgt) || e.type !== \"click\") {\n return;\n }\n\n try {\n const { x, y } = e;\n const { left, top } = tgt.getBoundingClientRect();\n const path = getPathByEle(tgt);\n\n return {\n ele_x: ~~(x - left), // 相对元素x位置\n ele_y: ~~(y - top), // 相对元素y位置\n ele_path: path, // 元素路径\n dw: window.innerWidth,\n dh: window.innerHeight,\n };\n } catch (err) {\n const error_type = \"get_click_position_error\";\n\n // 传入当前的log\n const info = Object.assign({}, ...[...logs].reverse());\n\n const tags = {\n error_type,\n };\n // 目前还没有传入debug选项, 此处还是暴露出去吧\n console.error(err);\n try {\n if (window.Slardar) {\n window.Slardar(\"Sentry\", (Sentry) => {\n Sentry.withScope((scope: IScope) => {\n scope.setTags(tags);\n scope.setExtras(info);\n Sentry.captureException(err);\n });\n });\n }\n } catch (innerErr) {\n console.error(\"Sentry Error!\");\n }\n }\n return null;\n}\n\nexport function isUndefined(a) {\n return typeof a === 'undefined'\n}\nexport function debounce(func, wait, immediate){\n var timeout, args, context, timestamp, result;\n if (null == wait) wait = 100;\n \n function later() {\n var last = Date.now() - timestamp;\n \n if (last < wait && last >= 0) {\n timeout = setTimeout(later, wait - last);\n } else {\n timeout = null;\n if (!immediate) {\n result = func.apply(context, args);\n context = args = null;\n }\n }\n };\n \n var debounced = function(this: any){\n context = this;\n args = arguments;\n timestamp = Date.now();\n var callNow = immediate && !timeout;\n if (!timeout) timeout = setTimeout(later, wait);\n if (callNow) {\n result = func.apply(context, args);\n context = args = null;\n }\n return result;\n };\n return debounced;\n };\n ","import { isUndefined } from \"../utils/index\";\n\nexport type Tick = {\n previousY: number,\n previousRatio: number,\n previousT: number,\n currentT: number,\n stay: ElementStayInfo\n}\ntype ElementStayInfo = Map>\nexport type Interests = number;\nexport class IntersectionHelper {\n // intersectionRatio 表示和 页面边缘切割的比率\n // 如果向下滚动,卡片离开viewport,则 intersectionRatio 逐渐减少(和页面切割比率减少)\n\n // 向下滚动进入\n static SCROLL_DOWN_ENTER = 1 << 0;\n // 向下滚动离开\n // 卡片后 xx%\n static SCROLL_DOWN_LEAVE = 1 << 1;\n // 向上滚动进入\n static SCROLL_UP_ENTER = 1 << 2;\n // 向上滚动离开\n static SCROLL_UP_LEAVE = 1 << 3;\n // rangeStayTime: ElementStayInfo\n stayWeakMap: WeakMap\n interests: { [k: number]: (e: IntersectionObserverEntry, t: Tick, a: {\n interests: number;\n range: number[];\n }) => void }\n constructor(public range: number[] = []) {\n // intersection observer 触发的范围\n // 范围对应的时间\n // this.rangeStayTime = new Map();\n // 记录DOM和intersection 信息\n this.stayWeakMap = new WeakMap();\n // 感兴趣的滚动方式\n this.interests = {}\n }\n has(k1, k2) {\n return (k1 & k2) !== 0;\n }\n cleanRangeStayTime(target: Element) {\n const info = this.stayWeakMap.get(target);\n if (isUndefined(info?.stay)) {\n return;\n }\n // const nextTick = Object.assign(info, {\n // stay: undefined\n // })\n this.stayWeakMap.delete(target);\n }\n getNow() {\n // performance.now 返回毫秒,与秒 1000 进率\n // 1000 等于 1 秒\n const n = window.performance && performance.now && performance.now();\n return n || Date.now();\n }\n\n register(interest, cb) {\n this.interests[interest] = cb\n return this;\n }\n getNextIndex(point) {\n const r = this.range;\n let idx = 0\n for (; idx < r.length; idx++) {\n if (point <= r[idx]) {\n break;\n }\n }\n return idx\n }\n toFixed(s_num) {\n return Number(s_num).toFixed(2);\n }\n /**\n * Intersection共四种情况\n * 1. 向下滚动进入,上百分比\n * 2. 向下滚动离开,下百分比\n * 3. 向上滚动进入,下百分比\n * 4. 向上滚动离开,上百分比\n * stay埋点将四种情况分为两种 https://bytedance.feishu.cn/docs/doccnprp3yqEhZIf8OsQQBwDE7e?appid=2#YGAqrD\n * 1. 向下滚动进入 + 向上滚动离开 卡片上部分\n * 2. 向下滚动离开 + 向上滚动进入 卡片下部分\n * @param {IntersectionObserverEntry} entries \n */\n handleIntersect = (entrys: IntersectionObserverEntry[]) => {\n entrys.forEach(entry => {\n const { target, isIntersecting } = entry;\n if (!isIntersecting) return;\n // 将 y 改成 top, y 有历史负担\n // Due to compatibility problems (see below), \n // it is safest to rely on only properties left, top, right, and bottom.\n const currentY = entry.boundingClientRect.top\n const currentRatio = entry.intersectionRatio\n const info = (this.stayWeakMap.get(target) || {}) as Tick\n let { previousY = -1, previousRatio = 0, currentT = this.getNow(), stay } = info;\n let currentStayRangeMap = stay\n if (isUndefined(stay)) {\n currentStayRangeMap = new Map(); \n }\n let currInterest = 0\n if (previousY === -1 || currentY < previousY) {\n if (currentRatio > previousRatio && isIntersecting) {\n currInterest = currInterest | IntersectionHelper.SCROLL_DOWN_ENTER\n } else {\n currInterest = currInterest | IntersectionHelper.SCROLL_DOWN_LEAVE\n }\n } else if (currentY > previousY && isIntersecting) {\n if (currentRatio < previousRatio) {\n currInterest = currInterest | IntersectionHelper.SCROLL_UP_ENTER\n } else {\n currInterest = currInterest | IntersectionHelper.SCROLL_UP_LEAVE;\n }\n }\n const now = this.getNow();\n const currentTick: Tick = {\n previousY: currentY,\n previousRatio: currentRatio,\n previousT: currentT,\n currentT: now,\n stay: currentStayRangeMap\n }\n const elapsedTime = now - currentT;\n const previousIndex = this.getNextIndex(previousRatio)\n const timeInPerSlot = elapsedTime\n this.addStayTimeToSlot(currentStayRangeMap, timeInPerSlot, currInterest, this.range[previousIndex])\n this.stayWeakMap.set(target, currentTick)\n for (const [key, cb] of Object.entries(this.interests)) {\n const index = +key;\n if (this.has(index, currInterest)) {\n cb && cb(entry, currentTick, {\n interests: currInterest,\n range: this.range\n })\n }\n }\n })\n }\n /**\n * 在数组的range里迭代\n * @param {Array} target 要迭代的目标数组\n * @param {number} start 开始index,included\n * @param {number} end 结束index,excluded\n * @param {Function} cb 回调函数\n */\n iteratorInRange(start, end, cb) {\n for (let idx = start; idx < end; idx++) {\n cb && cb(idx)\n }\n }\n addStayTimeToSlot(rangeStayTime, totalTime, scrollStatus, currentTriggerPoint) {\n // 存放 range triggerPoint 和 times 停留时常的映射\n // rangeMap\n if(typeof currentTriggerPoint === 'undefined') {\n // 这里说明触发的位置不是我们要收集的,比如触发了1,但最大只要0.7,这样忽略就行\n return;\n }\n const rangeMap = rangeStayTime.get(scrollStatus) || new Map();\n const { times = 0 } = rangeMap.get(currentTriggerPoint) || {}\n \n rangeMap.set(currentTriggerPoint, {\n times: totalTime + times\n })\n rangeStayTime.set(scrollStatus, rangeMap);\n }\n isNullOrUndefined(target, key) {\n return target[key] === null || typeof target[key] === 'undefined'\n }\n initEnhancedIntersectionObserver() {\n // 只关心上半部分展现\n // 可作为示例\n // const topSlice = IntersectionHelper.SCROLL_DOWN_ENTER | IntersectionHelper.SCROLL_UP_LEAVE\n // this.register(topSlice, () => {\n // // console.log(args, this.enhancedObserver);\n // })\n return args => {\n try{\n this.handleIntersect(args)\n }catch(e) {}\n };\n }\n enhancedViewStay(target: Element) {\n var collected = {}\n try{\n // 这里从 IntersectionHelper HashMap 提取数据,返回一个 {k:v}\n const { SCROLL_DOWN_ENTER, SCROLL_UP_LEAVE } = IntersectionHelper\n const stayMap = this.stayWeakMap.get(target)?.stay\n if (isUndefined(stayMap)) {\n return;\n }\n for (const [k, v] of stayMap!.entries()) {\n let direction = 'bottom';\n if (k === SCROLL_DOWN_ENTER || k === SCROLL_UP_LEAVE) {\n direction = 'top';\n }\n v.forEach(({ times }, threshHold) => {\n let prev\n collected[`${threshHold}_${direction}`] = prev = collected[`${threshHold}_${direction}`] || 0;\n collected[`${threshHold}_${direction}`] += (prev + times);\n })\n }\n // 用完数据要清空\n this.cleanRangeStayTime(target);\n return collected;\n }finally {\n return collected;\n }\n }\n}","type callBack = (intersectionObserverEntry: IntersectionObserverEntry) => void;\nexport default function WilIntersectionObserver(fn: callBack[], option?: IntersectionObserverInit) {\n // 如果IntersectionObserver不存在时需要静默失败, 而通常需要两种情况, 打包成两种版本, 一种可以抛出错误, 一种静默失败\n if (!(window as any).IntersectionObserver) {\n return undefined;\n }\n\n const defaultOption: IntersectionObserverInit = {\n root: null,\n rootMargin: \"0px\",\n threshold: [0]\n };\n let callBacks: Array = fn\n const observerHandle = function(\n intersectionObserverEntrys: IntersectionObserverEntry[]\n ) {\n intersectionObserverEntrys.forEach(intersectionObserverEntry => {\n callBacks.forEach(fn => {\n fn(intersectionObserverEntry);\n });\n });\n };\n\n const observer = new IntersectionObserver(\n observerHandle,\n Object.assign({}, defaultOption, option)\n );\n return observer;\n}\nexport * from './helper';","import { isBrowser } from \"../utils/index\";\n\nconst needHoldEvents: Array<\"click\"> = [\"click\"]; //, \"input\"\ninterface CatchEventCallBack {\n (evt: MouseEvent): void;\n}\n\nconst fns: Array = [];\n\nconst eventHandle: CatchEventCallBack = function(e: MouseEvent) {\n fns.forEach(fn => fn(e));\n};\n\nneedHoldEvents.forEach(function(eventName) {\n if (isBrowser()) {\n document.addEventListener(eventName, eventHandle, true); // the third argument must be true\n }\n});\n\nexport default function eventCatch(fn: CatchEventCallBack) {\n fns.push(fn);\n}\n","import { WilEventTaget, LogEvent } from \"../index\";\nimport {\n deepFindLog,\n getClickPositionParams,\n IScope,\n isHtmlOrSvg,\n} from \"../utils/index\";\n\nconst MESSAGE_EVENT_TYPE = \"heatmap_inner_message\"; // 内部传递message事件\nconst DEFAULT_CLICK_NAME = \"search_heatmap_click\"; // 默认点击事件名, 可自定义\nconst DEFAULT_ERROR_TYPE = \"heatmap_inner_error\";\nconst DEFAULT_ERROR_CLICK_TYPE = \"heatmap_inner_click_error\";\nconst DEFAULT_VERSION = \"-1\";\nconst DEFAULT_OPTIONS = {\n version: DEFAULT_VERSION,\n event: {\n click_name: DEFAULT_CLICK_NAME,\n },\n} as IHeatmapConfig;\n\nconst catchSyncErrors = any>(\n fn: T,\n errType = DEFAULT_ERROR_TYPE\n): ((...args: Parameters) => ReturnType) => {\n return (...args: any[]) => {\n try {\n return fn(...args);\n } catch (err) {\n const tags = {\n error_type: errType,\n };\n // 目前还没有传入debug选项, 此处还是暴露出去吧\n console.error(err);\n try {\n if (window.Slardar) {\n window.Slardar(\"Sentry\", (Sentry) => {\n Sentry.withScope((scope: IScope) => {\n scope.setTags(tags);\n // scope.setExtras(info);\n Sentry.captureException(err);\n });\n });\n }\n } catch (innerErr) {\n console.error(\"Sentry Error!\");\n }\n }\n };\n};\n\nexport interface IHeatmapConfig {\n event?: {\n click_name?: string;\n };\n version?: string;\n}\n\ninterface IMessageData {\n tgt: HTMLElement | SVGAElement;\n logPath: Array;\n info: { type: string };\n}\n\nexport class Heatmap {\n constructor(\n sendLog: (log: LogEvent) => void,\n options = DEFAULT_OPTIONS,\n wil: WilEventTaget\n ) {\n this.options = this.adaptConfig(options);\n this.init(sendLog);\n this.wil = wil;\n }\n\n cusEvent = document.createDocumentFragment();\n\n options: IHeatmapConfig;\n\n wil: WilEventTaget;\n\n init = (sendLog: (log: LogEvent) => void) => {\n // 统一接收数据, 调用sendLog\n this.cusEvent.addEventListener(\n MESSAGE_EVENT_TYPE,\n catchSyncErrors((e) => {\n const { detail } = e as CustomEvent;\n this.onMessage(detail, sendLog, this.options);\n })\n );\n\n // 进行绑定事件\n this.onClick();\n };\n\n onClick = () => {\n const { event } = this.options;\n const eventName = (event && event.click_name) || DEFAULT_CLICK_NAME;\n\n window.document.addEventListener(\n \"click\",\n catchSyncErrors((e: MouseEvent) => {\n const tgt = e.target as Node;\n if (!isHtmlOrSvg(tgt)) {\n return;\n }\n const params = getClickPositionParams(e);\n // 添加所属区域 - 设置展现埋点区域时有效\n if (params) {\n const area = this.findShowArea(tgt);\n this.cusEvent.dispatchEvent(\n new CustomEvent(MESSAGE_EVENT_TYPE, {\n detail: {\n tgt,\n logPath: [\n {\n event: eventName,\n ...params,\n ...(area && { module_name: area }),\n },\n ],\n info: {\n type: \"heatmap_click\",\n },\n },\n })\n );\n }\n }, DEFAULT_ERROR_CLICK_TYPE),\n true\n );\n };\n\n /**\n * 查找所属展现的area\n */\n findShowArea = (target: Element) => {\n if (!this.wil) {\n return undefined;\n }\n const attributeName = this.wil.config[\"data-log-view\"];\n const attributeExtraName = this.wil.config[\"data-log-extra\"];\n const log = deepFindLog(target, attributeName, attributeExtraName);\n\n if (log && log.length > 0) {\n let l = log.length;\n for (let i = 0; i < l; i++) {\n const { module_name } = (log[i] || {}) as any;\n\n // 如果存在\n if (module_name) {\n return module_name;\n }\n }\n }\n\n return undefined;\n };\n\n /**\n * 绑定统一的参数\n * @param data\n * @param sendLog\n * @param options\n */\n onMessage = (\n data: IMessageData,\n sendLog: (log: LogEvent) => void,\n options: IHeatmapConfig\n ) => {\n const { origin, pathname, search } = window.location;\n const { version = DEFAULT_VERSION } = options;\n const { tgt, logPath, info } = data;\n\n const log = {\n page_origin: origin,\n page_version: version,\n page_pathname: pathname,\n page_search: search,\n };\n logPath.push(log);\n sendLog(new LogEvent(tgt, logPath, info));\n };\n\n adaptConfig = (options: IHeatmapConfig) => {\n return {\n ...DEFAULT_OPTIONS,\n ...options,\n event: {\n ...DEFAULT_OPTIONS.event,\n ...options.event,\n },\n };\n };\n}\n","import { EventShim, EventTagerShim } from \"../EventTaget/index\";\nimport mutationObserver from \"../mutationObserver/index\";\nimport intersectionObserver, { IntersectionHelper } from \"../intersectionObserver/index\";\nimport eventCatch from \"../eventCatch/index\";\nimport { deepFindLog, isIntersecting, now, fixIosClick , getAttrFrom,findExtraLog, getClickPositionParams, debounce, isUndefined} from \"../utils/index\";\nimport { Heatmap, IHeatmapConfig } from \"../heatmap/index\";\n\ninterface wilAttrubuteOption {\n \"data-log-view\": string;\n \"data-log-outview\": string;\n \"data-log-click\": string;\n \"data-log-render\": string;\n \"data-log-extra\": string;\n \"data-log-view-stay\": string;\n [key: string]: string;\n}\ninterface wilOption {\n attribute?: wilAttrubuteOption;\n focusedCallBack?: boolean;\n disableView?: boolean;\n intersectionOptions?: IntersectionObserverInit\n heatmapConfig?: IHeatmapConfig;\n useEnhanceStay?: boolean;\n intersectionObserverDebounced?: {\n wait: number;\n immediate: boolean;\n }\n}\n\nconst logAttributeMap: wilAttrubuteOption = {\n \"data-log-view\": \"data-log-view\",\n \"data-log-click\": \"data-log-click\",\n \"data-log-extra\": \"data-log-extra\",\n \"data-log-render\": \"data-log-render\",\n \"data-log-outview\": \"data-log-outview\",\n \"data-log-view-stay\": \"data-log-view-stay\"\n};\n\ninterface sendLog {\n (log: LogEvent): void;\n}\n\ntype Info = {\n type: string;\n duration?: any;\n time?: any;\n startTime?: any;\n endTime?: any;\n};\nexport class LogEvent {\n log: Object;\n path: Array;\n target: Element;\n time: number;\n type: string;\n wil?: WilEventTaget\n constructor(target: Element, logPath: Array, info: Info, wil?: WilEventTaget) {\n this.type = info.type;\n Object.assign(this, info);\n this.log = Object.assign({}, ...[...logPath].reverse());\n this.path = logPath;\n this.target = target;\n this.time = now();\n this.wil = wil;\n }\n}\n\nclass WilIntersectionObserverEvent extends EventShim {\n from: IntersectionObserverEntry;\n constructor(type: string, event: IntersectionObserverEntry) {\n super(type);\n this.from = event;\n }\n}\n\nclass WilMutationObserverEvent extends EventShim {\n from: MutationRecord;\n constructor(type: string, event: MutationRecord) {\n super(type);\n this.from = event;\n }\n}\n\nclass WilClickEventEvent extends EventShim {\n from: MouseEvent;\n constructor(type: string, event: MouseEvent) {\n super(type);\n this.from = event;\n }\n}\n\nclass WilLogEvent extends EventShim {\n from: LogEvent;\n constructor(type: string, event: LogEvent) {\n super(type);\n this.from = event;\n }\n}\n\nclass WilEventTaget extends EventTagerShim {\n config: wilAttrubuteOption;\n observedElements: Array;\n inViewElement: Set;\n stayWeakMap: WeakMap;\n viewOutWeakSet: WeakSet;\n outViewWeakSet: WeakSet;\n intersectionObserver?: IntersectionObserver;\n mutationObserver?: MutationObserver;\n viewWeakSet: WeakSet;\n options: wilOption;\n enhancedObserver!: IntersectionHelper\n constructor(fn: sendLog, option: wilOption = {}) {\n super();\n this.options = option;\n const { intersectionOptions = {} } = option\n this.observedElements = [];\n this.inViewElement = new Set();\n this.stayWeakMap = new WeakMap();\n this.viewOutWeakSet = new WeakSet();\n this.viewWeakSet = new WeakSet();\n this.outViewWeakSet = new WeakSet();\n this.config = Object.assign({}, logAttributeMap, option.attribute);\n if (!option.disableView) {\n const prev = e => {\n this.dispatchEvent(\n new WilIntersectionObserverEvent(\"intersectionObserver\", e)\n );\n }\n const intersectionObserverCallbacks = [prev]\n // 派发 intersectionObserver\n this.intersectionObserver = intersectionObserver(intersectionObserverCallbacks, intersectionOptions);\n // 派发 mutationObserver\n this.mutationObserver = mutationObserver(e => {\n this.dispatchEvent(new WilMutationObserverEvent(\"mutationObserver\", e));\n });\n }\n const intersectionObserverDebounced = this.options.intersectionObserverDebounced;\n if(!isUndefined(intersectionObserverDebounced)) {\n const { wait = 0, immediate = false } = intersectionObserverDebounced!;\n this.intersectionObserveElements = debounce(observer => this._intersectionObserveElements(observer), wait, immediate);\n }\n this.init(fn);\n\n // 如果对heatmap进行配置, 则初始化heatmap相关的埋点\n if (option.heatmapConfig) {\n new Heatmap(fn, option.heatmapConfig, this);\n }\n }\n\n init(fn: sendLog) {\n\n // 派发 click 事件\n eventCatch(event => {\n this.dispatchEvent(new WilClickEventEvent(\"clickEvent\", event));\n });\n\n // 监听 intersectionObserver\n this.addEventListener(\n \"intersectionObserver\",\n (event: WilIntersectionObserverEvent) => {\n this.handleIntersectionObserver(event);\n }\n );\n // 监听 mutationObserver\n this.addEventListener(\n \"mutationObserver\",\n (event: WilMutationObserverEvent) => {\n this.handleMutationObserver(event);\n }\n );\n // 监听 click\n this.addEventListener(\"clickEvent\", (event: WilClickEventEvent) => {\n this.handleClickEvent(event);\n });\n\n // 监听 发出的 logEvent\n this.listenLogEvent(fn);\n\n // 初始化\n this.intersectionObserveElements(this.intersectionObserver);\n\n // ios click 在 document 上代理 不生效 bug\n this.fixIOSSafari();\n }\n\n genarateDispatchEvent(\n target: Element,\n log: Object[],\n params: { type: string; [key: string]: any }\n ) {\n this.dispatchEvent(\n new WilLogEvent(\"logEvent\", new LogEvent(target, log, params, this))\n );\n }\n\n handleIntersectionObserver(event: WilIntersectionObserverEvent) {\n const e = event.from;\n const { target } = e;\n // 进出视图事件 view outview stayview\n\n // view\n if (isIntersecting(e) && !this.viewWeakSet.has(target)) {\n if (this.dispatchViewLog(target)) {\n try {\n const config = JSON.parse(getAttrFrom(e, 'data-log-view-config') || '{}')\n if (!config['repeated']) {\n this.viewWeakSet.add(target);\n }\n }catch(e) {\n this.viewWeakSet.add(target);\n }\n }\n }\n // stay 进入保存时间\n // 离开 发出事件\n const attributeName = this.config[\"data-log-view-stay\"];\n const attributeExtraName = this.config[\"data-log-extra\"];\n if (isIntersecting(e) && target.hasAttribute(attributeName)) {\n this.stayWeakMap.set(target, now());\n this.inViewElement.add(target);\n }\n if (!isIntersecting(e) && target.hasAttribute(attributeName)) {\n const startTime = this.stayWeakMap.get(target);\n this.inViewElement.delete(target);\n if (startTime) {\n const logJson = deepFindLog(target, attributeName, attributeExtraName);\n if (logJson) {\n this.genarateDispatchEvent(target, logJson, {\n type: \"view-stay\",\n duration: now() - startTime,\n startTime,\n endTime: now()\n });\n }\n }\n }\n\n // out-view\n if (true) {\n // 块作用域\n const attributeName = this.config[\"data-log-outview\"];\n const attributeExtraName = this.config[\"data-log-extra\"];\n if (isIntersecting(e) && target.hasAttribute(attributeName)) {\n this.viewOutWeakSet.add(target);\n }\n if (\n !isIntersecting(e) &&\n !this.outViewWeakSet.has(target) &&\n this.viewOutWeakSet.has(target)\n ) {\n const log = deepFindLog(target, attributeName, attributeExtraName);\n if (log) {\n this.viewOutWeakSet.delete(target);\n this.outViewWeakSet.add(target);\n this.genarateDispatchEvent(target, log, {\n type: \"outview\"\n });\n }\n }\n }\n }\n\n fixIOSSafari() {\n if (document.body) {\n fixIosClick();\n } else {\n document.addEventListener(\"DOMContentLoaded\", () => {\n fixIosClick();\n });\n }\n }\n\n intersectionObserveElements(intersectionObserver?: IntersectionObserver) {\n this._intersectionObserveElements(intersectionObserver);\n }\n \n _intersectionObserveElements(intersectionObserver?: IntersectionObserver) {\n console.log('intersectionObserveElements!!!')\n const aboutViewAttributeName: Array = [\n \"data-log-view\",\n \"data-log-view-stay\",\n \"data-log-outview\"\n ];\n aboutViewAttributeName\n .map(key => this.config[key])\n .filter(i => !!i)\n .map(attributeName => document.querySelectorAll(`[${attributeName}]`))\n .forEach(eles => {\n for (let i = 0; i < eles.length; i++) {\n if (intersectionObserver) {\n intersectionObserver.observe(eles[i]);\n }\n }\n });\n }\n\n handleMutationObserver(event: WilMutationObserverEvent) {\n const e = event.from;\n const attributeName = this.config[\"data-log-render\"];\n const extraAttribute = this.config[\"data-log-extra\"];\n if (e.type === \"childList\" && e.addedNodes && attributeName) {\n const addedNodes = e.addedNodes;\n for (let i = 0; i < addedNodes.length; i++) {\n const currentNode = addedNodes.item\n ? addedNodes.item(i)\n : addedNodes[i];\n if (\n currentNode &&\n currentNode.nodeType === 1 &&\n currentNode instanceof Element\n ) {\n const items = currentNode.querySelectorAll(`[${attributeName}]`);\n if (currentNode.hasAttribute(attributeName)) {\n const log = deepFindLog(currentNode, attributeName, extraAttribute); //getAttributeObjectValue(currentNode, attributeName);\n if (log) {\n this.genarateDispatchEvent(currentNode, log, { type: \"render\" });\n }\n }\n for (let i = 0; i < items.length; i++) {\n const log = deepFindLog(items[i], attributeName, extraAttribute);\n if (log) {\n this.genarateDispatchEvent(items[i], log, { type: \"render\" });\n }\n }\n }\n }\n }\n this.intersectionObserveElements(this.intersectionObserver);\n this.fixIOSSafari();\n }\n\n handleClickEvent(e: WilClickEventEvent) {\n const event = e.from;\n this.handleMouseEvent(event);\n }\n\n handleMouseEvent(e: MouseEvent) {\n const targetElement = e.target;\n\n if (\n targetElement &&\n (targetElement instanceof HTMLElement ||\n targetElement instanceof SVGElement) &&\n targetElement.nodeType === 1 &&\n e.type == \"click\"\n ) {\n const attributeName = this.config[\"data-log-click\"];\n const attributeExtraName = this.config[\"data-log-extra\"];\n const log = deepFindLog(targetElement, attributeName, attributeExtraName);\n\n if (log !== null) {\n // 添加位置信息等参数\n const params = getClickPositionParams(e, log);\n params ? log.unshift({ ...params }) : log\n this.genarateDispatchEvent(targetElement, log, { type: \"click\" });\n }\n }\n }\n\n listenLogEvent(fn: sendLog) {\n this.addEventListener(\"logEvent\", (e: WilLogEvent) => {\n const event = e.from;\n fn(event);\n });\n }\n\n focusCallBack = () => {\n this.updateStayTime();\n };\n\n blurCallBack = () => {\n this.dispatchStayLog();\n };\n\n updateStayTime() {\n this.inViewElement.forEach(ele => {\n this.stayWeakMap.set(ele, now());\n });\n }\n\n dispatchViewLog(target: Element): boolean {\n const attributeName = this.config[\"data-log-view\"];\n const attributeExtraName = this.config[\"data-log-extra\"];\n const log = deepFindLog(target, attributeName, attributeExtraName);\n // view\n if (log) {\n this.genarateDispatchEvent(target, log, {\n type: \"view\",\n });\n return true;\n }\n return false;\n }\n\n dispatchStayLog() {\n this.inViewElement.forEach(ele => {\n const startTime = this.stayWeakMap.get(ele);\n if (startTime) {\n const attributeName = this.config[\"data-log-view-stay\"];\n const attributeExtraName = this.config[\"data-log-extra\"];\n const logJson = deepFindLog(ele, attributeName, attributeExtraName);\n if (logJson) {\n this.genarateDispatchEvent(ele, logJson, {\n type: \"view-stay\",\n duration: now() - startTime,\n startTime,\n endTime: now()\n });\n }\n }\n });\n }\n}\n\nexport { WilEventTaget, deepFindLog, IntersectionHelper };\nfunction Wil(fn: sendLog, option: wilOption = {}) {\n return new WilEventTaget(fn, option);\n}\nWil.utils = {\n findExtraLog\n}\nexport default Wil\n","import { EventShim, EventTagerShim } from \"../EventTaget/index\";\nimport { deepFindLog, now, noop } from \"../utils/index\";\nimport eventCatch from \"../eventCatch/index\";\n\ninterface wilAttrubuteOption {\n \"data-log-view\": string;\n \"data-log-outview\": string;\n \"data-log-click\": string;\n \"data-log-render\": string;\n \"data-log-extra\": string;\n \"data-log-view-stay\": string;\n [key: string]: string;\n}\ninterface wilClickOption {\n attribute?: wilAttrubuteOption;\n}\n\nconst logAttributeMap: wilAttrubuteOption = {\n \"data-log-view\": \"data-log-view\",\n \"data-log-click\": \"data-log-click\",\n \"data-log-extra\": \"data-log-extra\",\n \"data-log-render\": \"data-log-render\",\n \"data-log-outview\": \"data-log-outview\",\n \"data-log-view-stay\": \"data-log-view-stay\"\n};\n\ninterface sendLog {\n (log: LogEvent): void;\n}\n\ntype Info = {\n type: string;\n duration?: any;\n time?: any;\n startTime?: any;\n endTime?: any;\n};\n\nexport class LogEvent {\n log: Object;\n path: Array;\n target: Element;\n time: number;\n type: string;\n constructor(target: Element, logPath: Array, info: Info) {\n this.type = info.type;\n Object.assign(this, info);\n this.log = Object.assign({}, ...[...logPath].reverse());\n this.path = logPath;\n this.target = target;\n this.time = now();\n }\n}\n\nclass WilClickEventEvent extends EventShim {\n from: MouseEvent;\n constructor(type: string, event: MouseEvent) {\n super(type);\n this.from = event;\n }\n}\n\nclass WilLogEvent extends EventShim {\n from: LogEvent;\n constructor(type: string, event: LogEvent) {\n super(type);\n this.from = event;\n }\n}\n\nclass WilClickEventTaget extends EventTagerShim {\n config: wilAttrubuteOption;\n intersectionObserver?: IntersectionObserver;\n mutationObserver?: MutationObserver;\n constructor(fn: sendLog, option: wilClickOption = {}) {\n super();\n this.config = Object.assign({}, logAttributeMap, option.attribute);\n this.init(fn);\n }\n\n init(fn: sendLog) {\n // 派发 click 事件\n eventCatch(event => {\n this.dispatchEvent(new WilClickEventEvent(\"clickEvent\", event));\n });\n\n // 监听 click\n this.addEventListener(\"clickEvent\", (event: WilClickEventEvent) => {\n this.handleClickEvent(event);\n });\n\n // 监听 发出的 logEvent\n this.listenLogEvent(fn);\n\n // ios click 在 document 上代理 不生效 bug\n this.fixIOSSafari();\n }\n\n fixIOSSafari() {\n if (document.body) {\n for (let i = 0, nodes = document.body.childNodes; i < nodes.length; i++) {\n const node = nodes[i];\n if (node instanceof Element && node.nodeType === 1) {\n (node as HTMLElement)[\"onclick\"] = noop;\n }\n }\n } else {\n document.addEventListener(\"DOMContentLoaded\", function() {\n for (\n let i = 0, nodes = document.body.childNodes;\n i < nodes.length;\n i++\n ) {\n const node = nodes[i];\n if (node instanceof Element && node.nodeType === 1) {\n (node as HTMLElement)[\"onclick\"] = noop;\n }\n }\n });\n }\n }\n\n handleClickEvent(e: WilClickEventEvent) {\n const event = e.from;\n this.handleMouseEvent(event);\n }\n\n handleMouseEvent(e: MouseEvent) {\n const targetElement = e.target;\n\n if (\n targetElement &&\n (targetElement instanceof HTMLElement ||\n targetElement instanceof SVGElement) &&\n targetElement.nodeType === 1 &&\n e.type == \"click\"\n ) {\n const attributeName = this.config[\"data-log-click\"];\n const attributeExtraName = this.config[\"data-log-extra\"];\n const log = deepFindLog(targetElement, attributeName, attributeExtraName);\n\n if (log !== null) {\n this.dispatchEvent(\n new WilLogEvent(\n \"logEvent\",\n new LogEvent(targetElement, log, { type: \"click\" })\n )\n );\n }\n }\n }\n\n listenLogEvent(fn: sendLog) {\n this.addEventListener(\"logEvent\", (e: WilLogEvent) => {\n const event = e.from;\n fn(event);\n });\n }\n}\n\nexport default WilClickEventTaget;\n","import Wil, { LogEvent, WilEventTaget, IntersectionHelper } from \"./main/index\";\nimport WilClickEventTaget from \"./main/click\";\nexport { LogEvent, WilEventTaget, WilClickEventTaget, IntersectionHelper };\nexport default Wil;\n","import fetch from 'lib/decorated-fetch'\nimport getUrl from 'lib/url'\nimport { imageItem, resType } from '../types'\ninterface IUploadRes {\n message: string\n data: {\n format: string\n height: number\n width: number\n url_list: { url: string }[]\n }\n}\n// 配置开发url\nexport async function uploadImg(img: File): Promise> {\n const form = new FormData()\n form.append('image', img)\n form.append('aid', '1839')\n form.append('app_name', 'auto_web_pc')\n\n try {\n const data: IUploadRes = await fetch(\n 'https://i.snssdk.com/feedback/image/v1/upload/',\n {\n method: 'POST',\n body: form,\n }\n )\n return {\n success: true,\n data,\n }\n } catch (err) {\n console.log(err)\n return {\n success: false,\n err,\n }\n }\n}\ninterface ISubmitRes {\n message: string\n feddback_id: number\n err_code: number\n}\n// document.cookie = 'test=' + getCookieProp('tt_webid') + ';domain=https://i-boe.snssdk.com/';\nexport async function submitFeedback(\n tel: string,\n content: string,\n image_list: imageItem[]\n): Promise> {\n const form = new URLSearchParams()\n form.append('aid', '1839')\n form.append('app_name', 'auto_web_pc')\n form.append('appkey', 'auto-web')\n form.append('content', content)\n form.append('contact', tel)\n form.append('iid', '')\n if (image_list.length === 1) {\n form.append('multi_image', '0') //一张图片\n for (const prop in image_list[0]) {\n form.append(prop, `${image_list[0][prop]}`)\n }\n } else if (image_list.length > 1) {\n form.append('multi_image', '1') //多张图片\n form.append('image_list', JSON.stringify(image_list))\n }\n try {\n const tea_cache = localStorage.getItem('__tea_cache_tokens_1839')\n const web_id = tea_cache ? JSON.parse(tea_cache).web_id : ''\n document.cookie = `device_id=${web_id}`\n const data: ISubmitRes = await fetch('/feedback/2/post_message/', {\n // credentials: \"include\",\n mode: 'cors',\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n body: form,\n })\n document.cookie = 'device_id=; expires=Thu, 01 Jan 1970 00:00:00 GMT' //设置超时时间 自动清除cookie\n return {\n success: true,\n data,\n }\n } catch (err) {\n document.cookie = 'device_id=; expires=Thu, 01 Jan 1970 00:00:00 GMT' //设置超时时间 自动清除cookie\n console.log(err)\n return {\n success: false,\n err,\n }\n }\n}\n","import React, { memo, useState, useMemo, createRef, useEffect } from 'react'\nimport Modal from 'Components/modal'\nimport Button from 'Components/button'\nimport Toast from './custom-toast'\nimport { Image } from 'Components/view-image'\nimport { uploadImg, submitFeedback } from './services'\nimport { imageItem } from './types'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\nimport xss from 'xss'\ninterface Props {\n visible: boolean\n onClose: () => void\n}\n//发送 按钮的 埋点\nfunction sendBtnTea(button_name: string) {\n sendTeaCommEvent('clk_event', {\n event_id: 'common_feedback_window_btn',\n button_name,\n })\n}\nconst FeedbackModal: React.FC = ({ visible, onClose }) => {\n const [uploading, setUploading] = useState(false)\n const [content, setContent] = useState('')\n const [tel, setTel] = useState('')\n const [waringVisible, setWarnVisible] = useState<{\n empty: boolean\n tel_valid: boolean\n }>({\n empty: false,\n tel_valid: false,\n }) //内容为空警告是否可见\n const [isSubmit, setSubmit] = useState(false)\n\n const [imgList, setList] = useState([]) // 测试 数据\n //input 引用\n const inputRef = createRef()\n\n //内容的长度\n const contentLength = useMemo(() => content.length, [content])\n const telLength = useMemo(() => tel.length, [tel])\n //最大长度\n const maxLength = 300\n const isOutRange = useMemo(() => contentLength > 300, [contentLength])\n\n //窗口 关闭 清楚所有的数据\n function closeHandler() {\n onClose()\n setContent('')\n setTel('')\n setList([])\n setSubmit(false)\n setWarnVisible({\n empty: false,\n tel_valid: false,\n })\n sendBtnTea('取消')\n }\n //提及\n async function submit() {\n sendBtnTea('提交')\n let empty = false\n let tel_valid = false\n contentLength === 0 && (empty = true)\n tel && !/^1[34578]\\d{9}$/.test(tel) && (tel_valid = true)\n\n if (empty || tel_valid) {\n setWarnVisible({\n empty,\n tel_valid,\n })\n return\n }\n if (isOutRange) return\n const res = await submitFeedback(tel, xss.filterXSS(content), imgList) //添加 xss 防御\n if (res.success && res.data.err_code === 0) {\n closeHandler()\n setSubmit(true)\n } else {\n Toast.error(\n {\n title: '反馈失败',\n isModal: false,\n getContainer: () => document.body,\n },\n 1000\n )\n }\n }\n //保证 modal 关闭 并且成功提及 成功 才显示弹框\n useEffect(() => {\n if (!visible && isSubmit) {\n Toast.success(\n {\n title: '反馈成功',\n isModal: false,\n getContainer: () => document.body,\n },\n 1500\n )\n }\n }, [isSubmit])\n //图片选择\n async function imgChoose(files: FileList | null) {\n if (inputRef.current) {\n // 切换修改一下type 否则 不能提交同一个图片\n inputRef.current.type = 'text'\n inputRef.current.type = 'file'\n }\n if (!files || files.length === 0) {\n return\n }\n\n // 最大不能超过5M\n if (files[0]?.size > 1024 * 1024 * 5) {\n Toast.error(\n {\n title: '图片不能超过5Mb',\n isModal: false,\n getContainer: () => document.body,\n },\n 1000\n )\n return\n }\n try {\n setUploading(true)\n const res = await uploadImg(files[0])\n setUploading(false)\n if (res.success) {\n const { height, width, url_list } = res.data.data\n setList([\n ...imgList,\n {\n image_height: height,\n image_width: width,\n image_uri: url_list[0].url,\n },\n ])\n return\n }\n } catch (error) {\n console.error(error)\n }\n setUploading(false)\n Toast.error(\n {\n title: '上传图片异常请重试',\n isModal: false,\n getContainer: () => document.body,\n },\n 1000\n )\n }\n const footer = (\n
\n closeHandler()}\n >\n 取消\n \n \n
\n )\n // 模态框 展示就 出发埋点\n useEffect(() => {\n if (visible) {\n // 埋点 触发\n sendTeaCommEvent('show_event', {\n event_id: 'common_feedback_window',\n })\n }\n }, [visible])\n\n return (\n
\n {\n closeHandler()\n }}\n title=\"用户反馈\"\n height={685}\n width={528}\n getContainer={() =>\n document.querySelector('.feedback-modal-wapper') as HTMLElement\n }\n className=\"feedback-modal\"\n footer={footer}\n >\n
\n
\n
\n
\n * 问题描述\n
\n
\n \n {\n setContent(e.target.value)\n if (e.target.value.length > 0 && waringVisible) {\n setWarnVisible({\n ...waringVisible,\n empty: false,\n })\n }\n }}\n />\n {/* 字数统计和 超限提示 */}\n \n {isOutRange && 字数已超限}\n {`${contentLength}/${maxLength}`}\n
\n {/* 提交时 内容为空提示 */}\n {waringVisible.empty && (\n
还未填写问题描述
\n )}\n
\n \n
\n
\n 联系方式\n \n 请留下您的电话号码以便工作人员取得联系\n \n
\n
\n setTel(e.target.value)}\n spellCheck={false}\n maxLength={11}\n value={tel}\n placeholder=\"请输入手机号\"\n />\n {telLength > 0 && (\n {\n setTel('')\n setWarnVisible({\n ...waringVisible,\n tel_valid: false,\n })\n }}\n >\n \n
\n )}\n {waringVisible.tel_valid && (\n
电话号码格式不正确
\n )}\n
\n \n
\n
\n 相关图片\n \n 可上传 JPG/JPEG/PNG格式,单张图片不超过5Mb,最多传3张图片\n \n
\n
\n {imgList.map((item, index) => {\n return (\n
\n \n {\n imgList.splice(index, 1)\n setList([...imgList])\n }}\n >\n \n
\n
\n )\n })}\n\n {imgList.length < 3 && (\n inputRef.current?.click()}\n >\n
\n
\n
\n {uploading ? '上传中...' : '添加图片'}\n
\n
\n imgChoose(e.target.files)}\n />\n \n )}\n
\n
\n \n \n \n \n )\n}\n\nexport default memo(FeedbackModal)\n","import React, { useCallback, useEffect, useState } from 'react'\nimport PubSub from 'pubsub-js'\nimport FeedbackModal from '../feedback-modal';\nimport Protal from 'Components/portal'\nexport default function ProtalModal() {\n // 反馈 窗口 是否打开 \n const [feedbackVisible, setVisible] = useState(false);\n function openFeedback() {\n setVisible(true);\n }\n function closeFeedback() {\n setVisible(false);\n }\n\n const handler = useCallback((type, value) => {\n openFeedback()\n }, [])\n\n useEffect(() => {\n const token = PubSub.subscribe('OPEN_FEEDBACK', handler);\n return () => {\n PubSub.unsubscribe(token)\n }\n }, [])\n\n return (\n document.body}> \n )\n}\n","/* eslint-disable no-unused-expressions */\nimport { logger, metrics } from './slardar-utils'\nimport { handleAsPath } from 'lib/utils'\nimport getUrl from 'lib/url'\nimport fetch from 'lib/decorated-fetch'\n\nexport default async function (params: any) {\n let seriesIds: any[] = []\n\n switch (params.page_id) {\n case 'page_car_series_home':\n case 'page_series_home':\n case 'page_series_real_picture':\n case 'page_series_picture_detail':\n seriesIds = [params.car_series_id]\n break\n case 'page_series_configuration':\n // 获取url上的车型ids\n try {\n const cardIds = handleAsPath(window?.location?.href)?.carIds\n if (cardIds) {\n seriesIds = await getSeriesIdFromCardsId(cardIds)\n }\n } catch (error) {\n logger.warn(\n `[get seariesId from cardIds] Error, err: ${error?.message}`\n )\n }\n }\n let visitedSeries: any[] = []\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\n if (seriesIds?.length) {\n let storedSeries: any[] = []\n // eslint-disable-next-line no-unused-expressions\n seriesIds?.forEach((seriesId: any) => {\n // 以浏览时间 顺序\n storedSeries = Array.from(new Set(visitedSeries).add(String(seriesId)))\n // 如果之前已经浏览过该车系,则需要更新其浏览顺序到最新\n storedSeries.splice(\n storedSeries.findIndex((e) => String(e) === String(seriesId)),\n 1\n )\n storedSeries.push(String(seriesId))\n })\n\n try {\n // 最多保存 50条\n if (storedSeries?.length > 50) {\n storedSeries = storedSeries.slice(storedSeries?.length - 50)\n }\n localStorage.setItem('visited_series', JSON.stringify(storedSeries))\n } catch (err) {\n metrics.counter('localStorage.setItem', { key: 'visited_series' })\n logger.warn(\n `[localstorage setitem error] Error setting localstorage, err: ${err?.message}`\n )\n }\n }\n}\n\n// 通过车型id匹配对应的车系id\nasync function getSeriesIdFromCardsId(carIds: string): Promise {\n const result: any[] = []\n try {\n const json = await fetch(\n getUrl(`/cloud/api/invoke/get_info_by_carIds?car_ids=${carIds}`)\n )\n Object.values(json)?.forEach((item: any) => {\n if (item?.series_id && !result?.includes(item?.series_id)) {\n result?.push(item?.series_id)\n }\n })\n } catch (err) {\n logger.warn(`[get seriresId from cardsId] Error, err: ${err?.message}`)\n }\n console.log('result', result)\n return result\n}\n","/* eslint-disable no-unused-expressions */\nimport React, { createContext } from 'react'\nimport cookie from 'cookie'\nimport App, { Container } from 'next/app'\nimport Head from 'next/head'\nimport { withRouter } from 'next/router'\nimport NProgress from 'nprogress'\nimport 'styles/font.css'\nimport 'swiper/swiper-bundle.css'\nimport 'xgplayer/dist/xgplayer.min.css'\nimport PubSub from 'pubsub-js'\nimport 'static/iconfont/iconfont.css'\nimport 'static/din-font/iconfont.css'\nimport 'styles/emoji.css'\nimport 'styles/globals.css'\nimport Header2 from 'Components/header2'\nimport Header3 from 'Components/header3'\nimport NewHeader from 'Components/new-header'\nimport BackToTop from 'Components/back-to-top'\nimport RightSideNavigation from 'Components/right-side-navigation'\nimport { GlobalStoreProvider } from 'Components/store'\nimport { CacheStoreProvider } from 'Components/cache-store'\nimport getPageEnterId from 'lib/page-enter'\nimport getUrl from 'lib/url'\nimport registRealUser, { isRealUser } from 'lib/is-real-user'\nimport { getZT } from 'lib/zt-util'\nimport { unicodeToChar } from 'lib/utils'\nimport fetch from 'lib/decorated-fetch'\nimport teaInit, {\n sendTeaEnterEvent,\n sendTeaStayEvent,\n sendTeaCommEvent,\n teaConfig,\n teaStart,\n Tea,\n setPageId,\n} from 'lib/tea-analyze'\nimport sendTeaLocationEvent from 'lib/get-location'\nimport safeGet from '@arsenal/arsenal/modules/safeGet'\nimport dynamic from 'next/dynamic'\nimport { logger, metrics } from 'lib/slardar-utils'\nimport SideNav from 'New/side-nav'\nimport isScroll from 'lib/routeChangeScroll'\nimport isCusPageEnter from 'lib/cusPageEnter'\nimport LoginStoreProvider from 'New/login/login-store'\nimport FeedNav from 'New/feed/nav'\nimport { isNewVersion } from 'lib/version'\nimport Wil from '@fe/wil'\nimport FeadbackProtalModal from 'New/side-nav/components/protal-modal'\nimport setVisitedSeries from 'lib/set-visited-series'\n\nconst acrawler = require('@byted/acrawler')\n\nconst LiveStreamWindow = dynamic(\n () => import('Components/live-stream-window'),\n {\n ssr: false,\n }\n)\nclass MyApp extends App {\n mainRef: React.RefObject\n\n paddingStyle: string\n\n unbindRealUser: () => any\n\n UNSAFE_componentWillMount() {\n // client side need fetch acrawler captcha token\n if (\n typeof window !== 'undefined' &&\n process.env.NODE_ENV !== 'development'\n ) {\n this.fetchAcrawlerCaptchaToken()\n }\n }\n\n constructor(props: any) {\n super(props)\n this.mainRef = React.createRef()\n this.paddingStyle = '0'\n this.unbindRealUser = null!\n }\n\n initSlardar(url = '') {\n const cookies = cookie.parse(document.cookie)\n const extraArr: string[] = []\n const pageId =\n url\n ?.toLocaleLowerCase()\n ?.split('?')?.[0]\n ?.split('/')\n ?.slice(1)\n ?.filter((path) => {\n if (/^\\d+$/.test(path) || /-/.test(path)) {\n if (path) {\n extraArr.push(path)\n }\n\n return false\n }\n\n return true\n })\n ?.join('_') || 'homepage'\n window.Slardar('config', {\n sampleRate: 1,\n bid: 'motor_pc',\n pid: pageId,\n ignoreAjax: ['mcs.snssdk.com'],\n hookFetch: true,\n ignoreStatic: [],\n context: {\n tt_web_version: cookies?.tt_web_version || 'old',\n domain: window?.location?.host || 'unknow',\n extra: extraArr.join('_'),\n },\n })\n }\n\n /* eslint-disable complexity */\n componentDidMount() {\n if (window.history.scrollRestoration) {\n window.history.scrollRestoration = 'manual'\n }\n\n let pageId = ''\n const { router } = this.props\n const routerPath = router.asPath || ''\n\n /** 当打开新tab时,浏览器可能复制当前sessionStorage到新的标签\n * 更多参考https://blog.techbridge.cc/2020/09/05/session-storage-and-html-spec/\n * 而pre_page_id的更新仅在当前页面切换时触发\n * url: A->(当前窗口切换) B->(新tab)-> C.\n * pre_page_id: '' -> A ->A, (所以c页面上报了pre_page_id=A 不符合预期, 需要新开页面时清掉pre_page_id)\n **/\n sessionStorage?.setItem('pre_page_id', '')\n\n const params = getPageEnterId(routerPath)\n pageId = params?.page_id ?? ''\n if (params.page_id === '') {\n metrics.counter('empty_page_id', {\n routerPath,\n })\n }\n // 首次渲染时初始化slardar\n this.initSlardar(routerPath)\n\n teaInit({\n appId: 1839,\n zt: getZT(),\n enable_stay_duration: true,\n maxDuration: 24 * 60 * 60 * 1000,\n })\n teaConfig({\n evtParams: {\n page_id: params?.page_id,\n },\n pc_real_user: isRealUser() ? true : false,\n })\n\n // 全局城市埋点\n sendTeaLocationEvent('init_top_location')\n\n if (params.page_id === 'page_pgc_video_detail') {\n teaConfig({\n evtParams: {\n content_type: 'pgc_video',\n group_id: (this.props.pageProps as any).gid,\n author_id: (this.props.pageProps as any).info?.media_user?.id,\n },\n })\n }\n const cookies = cookie.parse(document.cookie)\n let userData\n try {\n userData = JSON.parse(cookies.user_data)\n } catch (error) {\n metrics.counter('user_data.parse.exception', {\n userData: cookies.user_data,\n })\n logger.warn(\n `[user_data parsing failed] userData = ${cookies.user_data} error = ${error.message}`\n )\n }\n let is_dev\n let is_boe\n try {\n is_dev = JSON.parse(cookies.is_dev || 'null')\n is_boe = JSON.parse(cookies.is_boe || 'null')\n } catch (error) {\n metrics.counter('env.parse.exception')\n logger.warn(`[env parsing failed] error = ${error.message}`)\n }\n if (userData) {\n teaConfig({\n user_unique_id: userData?.user_id,\n user_id: userData?.user_id,\n user_is_login: true,\n })\n } else {\n teaConfig({\n user_is_login: false,\n })\n }\n if (is_dev || is_boe) {\n teaConfig({\n _staging_flag: 1,\n })\n }\n teaConfig({\n tt_web_version: cookies?.tt_web_version || 'old',\n })\n teaStart()\n if (isNewVersion() && isCusPageEnter(routerPath)) {\n setPageId(params.page_id)\n //do nothing 页面自定义处理 sendTeaEnterEvent\n } else {\n sendTeaEnterEvent(params)\n }\n setVisitedSeries(params)\n router.events.on('routeChangeStart', (url) => {\n // 前端路由变化时初始化slardar\n this.initSlardar(url)\n requestAnimationFrame(() => {\n NProgress.start()\n NProgress.set(0.5)\n })\n\n teaConfig({\n zt: getZT(),\n })\n sendTeaStayEvent()\n // 如果左侧有唤起浮层侧边栏则跳转需要隐藏\n PubSub.publish('OPEN_FIX_NAV', false)\n })\n\n // 首页因为雷达图性能问题不加埋点\n Wil(\n function (logEvent) {\n const {\n event: teaEvent,\n params,\n ...extra\n } = logEvent.log as {\n event: string\n params: any\n }\n\n const teaParams = { ...extra, ...params }\n\n if (logEvent.type === 'view-stay') {\n teaParams.stay_time = (logEvent as any).duration\n }\n console.log('==wil tea:', teaEvent, teaParams)\n sendTeaCommEvent(teaEvent, teaParams)\n },\n {\n intersectionObserverDebounced: {\n wait: 200,\n immediate: false,\n },\n }\n )\n\n router.events.on('routeChangeComplete', (url: string) => {\n teaConfig({\n pc_real_user: isRealUser() ? true : false,\n })\n const params = getPageEnterId(url)\n setVisitedSeries(params)\n if ((Tea as any)?.resetStayDuration) {\n ;(Tea as any).resetStayDuration(router?.asPath, document?.title, url)\n }\n\n teaConfig({\n evtParams: {\n page_id: params?.page_id,\n },\n })\n\n pageId = params?.page_id ?? ''\n\n // console.log('routeChangeComplete', url)\n requestAnimationFrame(() => {\n NProgress.done()\n })\n if (isScroll(url)) {\n window.scrollTo(0, 0)\n }\n\n if (isNewVersion() && isCusPageEnter(url)) {\n //do nothing 页面自定义处理 sendTeaEnterEvent\n return\n }\n if (params.page_id === 'page_pgc_video_detail') {\n teaConfig({\n evtParams: {\n content_type: 'pgc_video',\n group_id: (this.props.pageProps as any).gid,\n author_id: (this.props.pageProps as any).info?.media_user?.id,\n },\n })\n } else {\n teaConfig({\n evtParams: {\n content_type: undefined,\n group_id: undefined,\n author_id: undefined,\n },\n })\n }\n sendTeaEnterEvent(params)\n })\n router.events.on('routeChangeError', () => {\n requestAnimationFrame(() => {\n NProgress.done()\n })\n })\n router.beforePopState(({ as }) => {\n // ie9不支持history\n if (!window.history || !window.history.pushState) {\n window.open(as)\n // window.location.href = as\n return false\n }\n return true\n })\n\n const scrollBarWidth =\n window.innerWidth -\n (document.documentElement || document.body).clientWidth\n if (scrollBarWidth > 0) {\n const node = this.mainRef.current\n if (node && !/(theater|full)/.test(this.props.pageProps?._pageType)) {\n node.style.paddingRight = `calc(4% - ${scrollBarWidth}px)`\n }\n }\n\n PubSub.subscribe('modify-padding', (eventName: string, signal: 0 | 1) => {\n if (!this.mainRef.current) {\n return\n }\n if (signal === 0) {\n this.mainRef.current.style.padding = '0'\n } else {\n this.mainRef.current.style.padding = `0 calc(4% - ${scrollBarWidth}px) 0 4%`\n }\n })\n\n this.unbindRealUser = registRealUser()\n }\n\n componentWillUnmount() {\n PubSub.unsubscribe('modify-padding')\n if (this.unbindRealUser) {\n this.unbindRealUser()\n }\n }\n\n fetchAcrawlerCaptchaToken = () => {\n fetch(getUrl('/acrawler/get_captcha_token'))\n .then((data) => {\n const token = safeGet(data, 'token') || ''\n const result = token.match(/tac='(.*)'/)\n\n if (result) {\n window['tac'] = unicodeToChar(result[1])\n }\n\n this.fetchAcrawlerCaptchaCheck()\n })\n .catch((e) => {\n console.error('token', e)\n })\n }\n\n fetchAcrawlerCaptchaCheck = () => {\n const nonce = {\n url: encodeURI(`${window.location.origin}/acrawler/check_captcha`),\n }\n\n let sig = ''\n try {\n sig = acrawler.sign(nonce)\n } catch (e) {\n console.error('token', e)\n }\n\n fetch(getUrl(`/acrawler/check_captcha?_signature=${sig}`)).catch((e) => {\n console.error(e)\n })\n }\n\n renderHeader = (_pageType: string | undefined, _cusHeadType: string) => {\n if (_pageType) {\n return \n }\n const { router } = this.props\n const routerPath = router.asPath || ''\n const params = getPageEnterId(routerPath)\n if (\n [\n 'page_series_home',\n 'page_series_video_list',\n 'page_series_article_list',\n 'page_series_qa_list',\n ].includes(params?.page_id || '')\n ) {\n return \n }\n return \n }\n\n renderContent = (props: any) => {\n const { Component, pageProps } = props\n if (!pageProps?._pageType) {\n return (\n
\n \n
\n )\n }\n\n return (\n \n {pageProps?._pageType?.indexOf('no-nav') > -1 ? null : (\n \n )}\n {pageProps?._pageType?.indexOf('feed') > -1 ? : null}\n \n \n \n \n )\n }\n\n render() {\n const { pageProps, router } = this.props\n\n if (router?.asPath?.indexOf('/404') === 0) {\n if (typeof window !== 'undefined') {\n pageProps._pageType = isNewVersion() ? 'new' : ''\n pageProps._pageClassName = 'page-404'\n } else {\n return null!\n }\n }\n\n return (\n \n \n 懂车帝 - 说真的还得懂车帝\n \n \n \n \n \n \n \n {this.renderHeader(pageProps?._pageType, pageProps?._cusHeadType)}\n {this.renderContent(this.props)}\n {pageProps?._pageType ? (\n \n ) : (\n \n )}\n \n \n \n \n \n \n \n )\n }\n}\n\nexport default withRouter(MyApp)\n","module.exports = \"https://sf6-scmcdn2-tos.pstatp.com/motor/pc/_next/static/images/menu-bottom@3x-9b2e7376a011f32d756da3d1fc09773b.png\";","module.exports = \"https://sf6-scmcdn2-tos.pstatp.com/motor/pc/_next/static/images/loading-7fc09f7a20685bfbdccd4d80c9acab59.gif\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAMKADAAQAAAABAAAAMAAAAADbN2wMAAAFLElEQVRoBe1ZXWgcVRS+ZyZNVRCRFAvxLbRWFASh+KZkH23UQNFtwYembbJdwSdtpU9Vn4z150UftkkT2rd2FaH+RIRCpD5IS0FQFLExbwYqhCCCadPsXL9zd87u3M3cmdlsdvYlA8O9c+ec851v5sy9555RavvYfgIdPQHqSBvK527e3KF/WhxWOhhRRENaqUHSalCRGlBaLWtSSwBZguifStEcPT30/Yn9++91iiv6myZQOX/5OThYxnlAK/2QGExrSdE/IDeHs1IeP3QtTT7tftsEpqY+f7JG65Nw/IU046n3SX3t677TpdLLv6bKOgQyE5ifn+/7feHvj5TWr8OWF7UHI7cQHlc8n36gQP0V3OcvPbyztrxy1x/w7tQGtaceDWr6WaX0KEJsb1QX/QD6n+zbu/tkoVBYb7mXepmJwMWLXwys3r33GUKlIBaJqAaHLijf+7h8rPibjKe1ldnqE6oWvAHCY1prX+QRWvP379zxypEjB5dlLEubSmBmprpvLQjmEDJDYhBg36g+eqsdx0VXWkNkXZ/FQxmRMXwXi77uf75UOvhHYyylk0iAn/x/a2s3Is4HHnmnT0wUP0ixm/n2uenqqUAHk1CohyVIPNDf/0zWN2HFchSVY57DRpxHyPyL88WtdJ7x2B7bZfsGH2+acRk/6o+r7yTAH2wk5gMYOFyeODTnMtTJeGj3MGwwDp6ZLpgJI4PR2BAyU6Va/xn6hiB5dApz9ocZ7HUkEobT2dBI4Ku+p9Km2Ng3YOZ5cR4fbB7Os9MmnHiCqB9e6Ed4Gd9sIBCusGaRQlzWeLaJV+3SKPAMLpvHYmn8SYDaQABK5aa8vtDJVNm0k71Xx8P6Iofljww2W4sAJ2YgcKBxG4tUo59nJ4oLf4xfDnyLAGeVmAFMYoav+1beT198ZFzG52v2x2S7crOltQiYlLghQFca3Z50IvicqjsOmwDyeZHjxEz6vWgt/Ihfrb5YBHgzIgKcVUq/F20UP+pXqy8WAbOTCiU4JW4VzvM6ih/1q9UHi4DZBoYSnM+3Cud5beHz9tRx2ASwhxU53oxIvxetja9XXD5YBHgDLoK8k5J+L9ooPr6B2y4fLAKYexsEeBvoUspjPIqPDVQ2AtjvLopz9T2sXOXfWvikf3F5YL0BRZ5kgpDXoy6lfMab+ET+dy5MiwAXnUzdht1H9cDsW12aXRxnXMavQ9Bqv7frmgvOImAqZlx0ksNUD+QixzaCS6S/PXq0cMeFbhEwQqiYNYVpLO+3UMejMfFBk/e+9OPaDQRMuQ8VMxY2dRuUPuIUuzbGpZZGvYiuvjZevJGEtYEAC3O5D41ssEd4r5pkZKvuMQ7SZ8k8A/LpTJrtWAJmI030qShz3aYyfbm50ZEbW9iy/bA+VLdKNFk+XvwxDSKWACs9vueRN7ncFxpguUvdIhHavQQM4w8W1OvAfzvETmycBLjQyrVKLvexBcTlgzi/wib7ZKLFNm+asIFdtt9QJVoYHh5G7TX9ANnkI9faqOUKzZYniuOoUGBJcB+pBFg1n+q0uo4/PAt4E6823U0nkYkAG+zm/wGP1HuP7dn9DodNZbp6HgF7LCuJzATE4Jb+oVF0lafK6GyDN0DtkGibgBDZ7D8y/NhY5fSAV1jXItUOiU0TECKJfymVXsEXeNvk80iJOavkxCwptxG7WUl0TEAAu9HGkfB9b7R0vPil4DnXARHoZctTKE+lCLtZ4wfRu1Hne+lbW9j8JqZmqi+1pbQtvP0Esj2B/wGymEoPY6Q+nQAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAMKADAAQAAAABAAAAMAAAAADbN2wMAAABvUlEQVRoBe1YsXLDIAzFvU75gl6mOlvm9Hf6df2d7t7iTrl8QccQlF7u8IOTpQBJifFiC8FDT8hCJ2Pa0zywbA90SP/Yb75OxmxxXCO/GDO8jftPf00p3Fd/E/q+GG/tDsc18qkL/FIM1zmr7ic4AaDza7pugLG4aC2F3SquDEaz4fIEnPHrcf8RbB8ZOPSbbyMNvYy41YdQ9QT4EIJQObz31h9a/4xhuvEnCL9TcKs/gUZAGCXFpqn+gVwxj2xScFsIoTfvLfMh5MqDyw0rseqvlJDMNO7GzobLE6DaRloeyEy/zsqGW/0/EJyAYzTE6vmr6yRvwsB5pXBxnyY3DyzNA0E5XKp7IMWln93vaPjrUEeHFWShR3clMAP69qCOCDhSdT/BCQCdbN0DFlfX0ZhA8QQydg8muwKuqqMxAVpACAHfO4hYqc5UuXwIgb0p3QOA4kRVpfr0WYjzVDYdXVCxHI8b0DwcU4UQLs4l+zevFlNFIKV7oDVMOl9FQAqqncfVO5yO9vkXBLh6h9PNE8CczLl2Jl9zS1N0cyegyskphty69vnuAWlO5jwWy9c+Lupv1XE2NF3zwFI8cAa8x72XrU5bIwAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAMKADAAQAAAABAAAAMAAAAADbN2wMAAAFNElEQVRoBe1Ya2hcRRSeMzdpN49GG2qT0Haz2TxwH4h0UYxgTf+opVDb4OIPjW0w9Ic/1CIoRZGAthaKFosVRGtrQLAGLLRgtYJdXw1qt6jJbkLY3ZuHj3ZjSWM2T/fe8cyauXtNs9nZZKVV7sByzpw55zuPedyZJcRqVgWsClgVsCpgVeA/XAHIV+w+n69wdHRqk8bgfgB2F2NsPSFQgfgzAGScMNYHFC4Qyj6N9Ye/AlTKh+9lJ9DY2Fh0KT7WpjPyLAaJQUs1lQB9o5Daj0QiZ2akLDIoLSsBp9O7VSf6Uaw2r3TODZ0PMApPDEbDZ4Sxy+Wr8nqd8c7OTk3IFqNLSsDv9yvfB0MvY+DPIXgaA8gvBOCkwiBQWKhc1DQloSjF08nkeLWua7disvcBAT8j7GZTUIxSun9ni//Fjo7TqzQ2eRXHNMRRB2PhepPegmza+YLD1woxaHDUejpwuTwqRnE9D2Ma+0pscCwUCs0K+UK0rm7LSk0batMJe4kQttrQAXqUKPAqSWrhlAwg8q8k4HC692MSe4VjDP70qhJlZ3d396iQydCGBt+a2eRUB2JtMfSBnCeM3M37OFNfDqjhe42xDAzNIF9Q7Kh1bTcHj16OqNHQg7kGz8H7+4O/O+xrt2EB3jWczQX/dx9+M+SLMNIJOJqabEQnhwQWHo0nWx97+MnlHIeBQCCJBWhDDGMTC3wC+q8GvwgjnQAbvPwMHtwOjoUO45QUt7a3t+uLYEsN8QLYVpS2IOjPZgMsUP5mgG9cbLuFA0xkbywWHBP95dK+vu+uUMbazTjAIH8z4Gxw34NJ2LkDXv07fZ73zM7ywZeXF3cg9nAaCwbTfGZOagkxjWwXEIyRE7IfGWEjQ4PB4J/A6ON4+lzC36lotOcbGbsCGSXCwI1ndkpVAXpWymYJSqra8xmaVXFTnA0pBLkZIKwhjab0p/nrz0klgGFWilArKopN61RIrx+VSwDIhAgxkUjYBH8jUKkE8OaeEMEmkskywd8IVG4TExjCTezgAeuzykYkUkcc18+l4SXxAbwkHkZfPXgifayqoXey2UvNAN55AgaQrm82+HwzjPnxe1OPR/UOBjqefNmbXAKUnjOggDV7PJ4VRj9PDH+SYuDG94YS5XMZaKkESlay88ZdhZF1k9Nklwx4LjpXrk4/gkunnNvgN+Cy3b7mExl7RUZpZGREW11+i4bfMnF3v33D+srj8Xh8WsY+m05NjbcCl84p1Cua0z3w4w8Xvshmx8elZoArVq296W1eGc6jsw3jCe04UrnPJTfK0DgGA+1No/oEekuL6cEM6teIpRPo6uqaooS2IULqToHv2m2OOs9hvFJLY8z33tTUVFDjdB/Dtd88N4ZvfNid7Vlqxsm5gg6n6wA65I/5VMMry0cFtKw1Evn2DyGToXgQlCam9A+wHFuFPgB9fSAWelr0ZWjO1bvD530ed9n7ApxXL6mP9+MZvov/WyHkmSh/2Tmcnj0TU3rsn8GTQ2q0Z08mu0zynGeAA/F1W1PrfsU8E1zOr8KY3AlG9LMFQPsB7MO6HrcBzJRpoG8kOmzGsYcw8HVc39ReGFR795n60uySEhDo1U5vMzD9NdwP1UKWC03d/RXylBoJf5iLnVk365SblefzY6PxXper7q2JydkZ3Nn8TyipexI/zXC9H6RQ1KJGf7o4HzeX/rJmwOwotazqb9tEdH0H3pjc+AhqIMAqcbVN4EZPYIJDKAsUUHLOZiNf53LSmP1YvFUBqwJWBawKWBX4X1XgL/X5zfB3z+tBAAAAAElFTkSuQmCC\"","var global = require('../internals/global');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar $parseFloat = global.parseFloat;\nvar FORCED = 1 / $parseFloat(whitespaces + '-0') !== -Infinity;\n\n// `parseFloat` method\n// https://tc39.github.io/ecma262/#sec-parsefloat-string\nmodule.exports = FORCED ? function parseFloat(string) {\n var trimmedString = trim(String(string));\n var result = $parseFloat(trimmedString);\n return result === 0 && trimmedString.charAt(0) == '-' ? -0 : result;\n} : $parseFloat;\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAABV7bNHAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAASKADAAQAAAABAAAASAAAAACQMUbvAAADFElEQVR4Ae3asXLTMBgAYMkNvANwEJxCfCYcHAcP0L5AD4YMvAl0KJSF8iBMbEzt1AzMDByhS5KGg2do4ya1kNLT4Sp1f0m2pED/DJXlv5Z+ffnlxr0Qgi8UQAEUQAEU+FcFqGnizThlptcs0+//PDwwWnO0TMkvYy4IBLwrCIRAgAAQxgoCgDCMAihwdQTiNG0myaN4mVZs9KnSVeJp+vTGcXb8kTG2Pp+D0i/XosbLweDbb1dz6o4bHGiOMzna588vybmkKR1ypLXQSEGBSnGkFEdq0Gh9OPz+S57y3QYDAnGkRGCkIEDaOBKJ0FEjitZCVJJ3IHMcqRQGySvQHCc76jFG2nLZZq1/JG9A1XEkpV8kL0D14fhHcg6UJE9uZtPJvv22kihq66eSnP67QweHUrqjLl32eeytPF5sWWuW573V1Ye3F2P1nXEGpIdDPoxHP16XLYfHtkMjOQHSxzl4VYYjz+sitVqdO/KaOtvagfRw6M54BOPIheognbK85wKpViB9nPJtJVHUFkYisQuk2oDOcLJLPwSKGzJfaOk9R0VR+yGQagH6i8Puq4uS/ao4chzfSJWBfOKcR4reyP4FbW3brRJQCByJMR7131HqHskaqN1+fCubinuO+20lUdTWB5IVkMA5mU3548OlOO+r3JBVjLK+ayRjoG63u5LNpnsaOJtli6r7vA5SztiuyN10bquH1fheZ4Pl7BNHuq5OyP9aicoxwin7zpHpd3nutjpbjOXbCzkRMiEr0fPxoL+nxqC+cQWJAQ8H/c80ol2OcVKcwAaneH3V44sqiVKSkSh6YYMj8rECEheqSKFxRE7iVUSa41BeOcP+7lnU/KfVFitOI7Zbfpo/49thq3je5LiuLVacsxk/2ORV/rUKjhivMlAxKdtjF0C2uajXWW8xdaD/tY9AwDuLQAgECABhrCAEAgSAMFYQAgECQBgrCIEAASCMFYRAgAAQxgpCIEAACGMFIRAgAISxghAIEADCWEEIBAgAYawgBAIEgHADiPsJUzrzMxHOggIogAIogAJXSeAPNq6aEaXaPCsAAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAJKADAAQAAAABAAAAJAAAAAAqDuP8AAAC/UlEQVRYCe1XTWgTQRR+bzeKrVZB8F9oNk0b0q0VFQT1UEQFD1IPHnpS8CQogqIHFQ/xID0JvYqHFnopoicPXhRzag5VRE02tiSbFAQRpB7U1prsjm/TzmZWd5LWJqGULIR58703733z5s1PAJpfMwNrLAMozicU6j5hA9wAxlpFvF4yQ/iuAg6ZpvGSxwhwwWktgBEis1fE6iozJyY7RDF28zgKF0ptI8mUA+8qiwCeDIkKVNXjYr/WMrOsV34+pYTymWTcb0CtsHYt6uvKu2S+Jo0FVx0h6ZL55SWoReO0MfocnVNj9VjWVZehJiG/UhCxZdUQKMoIMhYvOQgE8qIjLsdiMWV49MlZBdi2nds3jyYSiTmuW0rrucvobKCaXfimc2mPjuOVWi2s99u2fR8Y9JTsELMqwCXxruLjZbE8QWVG3ImsDYb39YFVHKTZHPGzQcThjS14M5VKzfjpRWxFRR0O9x4Mat3PmVV0jgOXDNItTgfDNx6IMXbx5xwzgh3RAY7J2v8iFApFO4OaPlawCq8ZsNPcORGZp9/Q+kBrSAElioCPuY5I7WA2jLWHos9oItIXxbIIdXXt30MZeWgBGgxsZ7Z8yS1nWVRUO/Nm+vrU1JuvuVzySz5nDBCxfkD8xIlRfZ0p2gVD0/QrzgZw8UWBOyx1ZTWk6/rWH7NwC8G+SkuzweME8SkG1Lv5qQ8fPbjQiUSOtf0qzAwSmcsEl2MijK9T1AuZTDLLzctKQvwIRSK92nyh8JYx2MIHlVrEF/Tau2OaqQkPXqHT0dFztMjsR/QI7HbNEFPTprGwKwn8J2Wu4aIwOfk+BwzfcZyWZkJFPElOTi2HjDM+m02Ob2rBA+TjHvdH5HRXJqEqIcdYVZTbVKBpulHP5U3jsN+5IjqtJNPW/00+YjKbJZ3Uzsxol+g0M/fglDlcKS6toUY+YcVbQZoh2Zt3pRmoNv7vGvpcbUDN9eIZRc49GaLdc57+J12jSmmreWA/h4izlJEHfqom1szAmsnAHzbX+TlUnZx+AAAAAElFTkSuQmCC\"","module.exports = \"https://sf6-scmcdn2-tos.pstatp.com/motor/pc/_next/static/images/fans-5a368b69fd945538f692fb29a0149f50.png\";","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"https://sf6-scmcdn2-tos.pstatp.com/motor/pc/_next/static/images/menu-top@3x-a4d250b1209f528d00a8f4c5a0318f35.png\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAABV7bNHAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAASKADAAQAAAABAAAASAAAAACQMUbvAAACgElEQVR4Ae2bO04DMRCGWQQFDYKcAwoo6bgJokScAYHEDSh4E+AkNNDwlOAg1BSEb6S1iKKsPQiyYu1/pJGdHcfr/8t4E2e9U1MyERABERABERABERABEciBwGAwmMartrRMt3WivziPwaGfS/yoTUh/MfaJ91FnzhVlsGMqrWXSxAX+5gSAsGk1DCdAOikeUg3nMhAZU5YNCSDz+PMYMMOHTnlR7nRDfA9/GiYypi5IgpS4kgPIk0lntCt6ui0C4BGPmSBBJwXpnDbKpFgaETNInVotJK4yPwsj3qbbAx6zC4KCFCNErHhIC0BIZVKfNkVnkkG6x2PWJ/gjSDOeWU+nu552/6DNLWNYxZsgbBCr0LNZVdUn9aS5vgbpcJDsqVsNDgG05RlyqYCMzSqQnlOQmlIx9b4c4kseEaUCsuvPiwA1E9hner02h78jrm8xmu99v6XTtQ9Gfwecm06r0OBFQAREQAREQAREoAUCrsVqGAeL+nXqa/hsONblkh+Mu6nxuwEBx35N76Q67FIcQEn9yQYmGDjLFLa4y2px6wHkFbySGxz0uMwL6M3VW4aNXIBIxSe0H2aoPynJ+3eHdbSNz+EbeJPZH1EH+HtTg6yPc7G2rXB9PGZ262UhaxAxcYj3QLKbeMVDstu5MTNIizHYWccQb5kkSLFPuYZkW0xiZvt4is4ku5UrSIlMMki27S1myiTopCDZVt5eDHbWMcR7MkmQAGWbumMmSNBJQbLHC+aznlIxcYi36WYPmjSZPaDiWizHztPpGACaIF0VDyd8sjUke/gtmOAEOKGEjGWSQbrGy55WAcpoWUMSnFEwei0CIiACIiACIiACItBNAl8nsogUJ3HJWwAAAABJRU5ErkJggg==\"","/**\n * Copyright (c) 2010,2011,2012,2013,2014 Morgan Roderick http://roderick.dk\n * License: MIT - http://mrgnrdrck.mit-license.org\n *\n * https://github.com/mroderick/PubSubJS\n */\n\n(function (root, factory){\n 'use strict';\n\n var PubSub = {};\n root.PubSub = PubSub;\n factory(PubSub);\n // CommonJS and Node.js module support\n if (typeof exports === 'object'){\n if (module !== undefined && module.exports) {\n exports = module.exports = PubSub; // Node.js specific `module.exports`\n }\n exports.PubSub = PubSub; // CommonJS module 1.1.1 spec\n module.exports = exports = PubSub; // CommonJS\n }\n // AMD support\n /* eslint-disable no-undef */\n else if (typeof define === 'function' && define.amd){\n define(function() { return PubSub; });\n /* eslint-enable no-undef */\n }\n\n}(( typeof window === 'object' && window ) || this, function (PubSub){\n 'use strict';\n\n var messages = {},\n lastUid = -1,\n ALL_SUBSCRIBING_MSG = '*';\n\n function hasKeys(obj){\n var key;\n\n for (key in obj){\n if ( Object.prototype.hasOwnProperty.call(obj, key) ){\n return true;\n }\n }\n return false;\n }\n\n /**\n * Returns a function that throws the passed exception, for use as argument for setTimeout\n * @alias throwException\n * @function\n * @param { Object } ex An Error object\n */\n function throwException( ex ){\n return function reThrowException(){\n throw ex;\n };\n }\n\n function callSubscriberWithDelayedExceptions( subscriber, message, data ){\n try {\n subscriber( message, data );\n } catch( ex ){\n setTimeout( throwException( ex ), 0);\n }\n }\n\n function callSubscriberWithImmediateExceptions( subscriber, message, data ){\n subscriber( message, data );\n }\n\n function deliverMessage( originalMessage, matchedMessage, data, immediateExceptions ){\n var subscribers = messages[matchedMessage],\n callSubscriber = immediateExceptions ? callSubscriberWithImmediateExceptions : callSubscriberWithDelayedExceptions,\n s;\n\n if ( !Object.prototype.hasOwnProperty.call( messages, matchedMessage ) ) {\n return;\n }\n\n for (s in subscribers){\n if ( Object.prototype.hasOwnProperty.call(subscribers, s)){\n callSubscriber( subscribers[s], originalMessage, data );\n }\n }\n }\n\n function createDeliveryFunction( message, data, immediateExceptions ){\n return function deliverNamespaced(){\n var topic = String( message ),\n position = topic.lastIndexOf( '.' );\n\n // deliver the message as it is now\n deliverMessage(message, message, data, immediateExceptions);\n\n // trim the hierarchy and deliver message to each level\n while( position !== -1 ){\n topic = topic.substr( 0, position );\n position = topic.lastIndexOf('.');\n deliverMessage( message, topic, data, immediateExceptions );\n }\n\n deliverMessage(message, ALL_SUBSCRIBING_MSG, data, immediateExceptions);\n };\n }\n\n function hasDirectSubscribersFor( message ) {\n var topic = String( message ),\n found = Boolean(Object.prototype.hasOwnProperty.call( messages, topic ) && hasKeys(messages[topic]));\n\n return found;\n }\n\n function messageHasSubscribers( message ){\n var topic = String( message ),\n found = hasDirectSubscribersFor(topic) || hasDirectSubscribersFor(ALL_SUBSCRIBING_MSG),\n position = topic.lastIndexOf( '.' );\n\n while ( !found && position !== -1 ){\n topic = topic.substr( 0, position );\n position = topic.lastIndexOf( '.' );\n found = hasDirectSubscribersFor(topic);\n }\n\n return found;\n }\n\n function publish( message, data, sync, immediateExceptions ){\n message = (typeof message === 'symbol') ? message.toString() : message;\n\n var deliver = createDeliveryFunction( message, data, immediateExceptions ),\n hasSubscribers = messageHasSubscribers( message );\n\n if ( !hasSubscribers ){\n return false;\n }\n\n if ( sync === true ){\n deliver();\n } else {\n setTimeout( deliver, 0 );\n }\n return true;\n }\n\n /**\n * Publishes the message, passing the data to it's subscribers\n * @function\n * @alias publish\n * @param { String } message The message to publish\n * @param {} data The data to pass to subscribers\n * @return { Boolean }\n */\n PubSub.publish = function( message, data ){\n return publish( message, data, false, PubSub.immediateExceptions );\n };\n\n /**\n * Publishes the message synchronously, passing the data to it's subscribers\n * @function\n * @alias publishSync\n * @param { String } message The message to publish\n * @param {} data The data to pass to subscribers\n * @return { Boolean }\n */\n PubSub.publishSync = function( message, data ){\n return publish( message, data, true, PubSub.immediateExceptions );\n };\n\n /**\n * Subscribes the passed function to the passed message. Every returned token is unique and should be stored if you need to unsubscribe\n * @function\n * @alias subscribe\n * @param { String } message The message to subscribe to\n * @param { Function } func The function to call when a new message is published\n * @return { String }\n */\n PubSub.subscribe = function( message, func ){\n if ( typeof func !== 'function'){\n return false;\n }\n\n message = (typeof message === 'symbol') ? message.toString() : message;\n\n // message is not registered yet\n if ( !Object.prototype.hasOwnProperty.call( messages, message ) ){\n messages[message] = {};\n }\n\n // forcing token as String, to allow for future expansions without breaking usage\n // and allow for easy use as key names for the 'messages' object\n var token = 'uid_' + String(++lastUid);\n messages[message][token] = func;\n\n // return token for unsubscribing\n return token;\n };\n\n PubSub.subscribeAll = function( func ){\n return PubSub.subscribe(ALL_SUBSCRIBING_MSG, func);\n };\n\n /**\n * Subscribes the passed function to the passed message once\n * @function\n * @alias subscribeOnce\n * @param { String } message The message to subscribe to\n * @param { Function } func The function to call when a new message is published\n * @return { PubSub }\n */\n PubSub.subscribeOnce = function( message, func ){\n var token = PubSub.subscribe( message, function(){\n // before func apply, unsubscribe message\n PubSub.unsubscribe( token );\n func.apply( this, arguments );\n });\n return PubSub;\n };\n\n /**\n * Clears all subscriptions\n * @function\n * @public\n * @alias clearAllSubscriptions\n */\n PubSub.clearAllSubscriptions = function clearAllSubscriptions(){\n messages = {};\n };\n\n /**\n * Clear subscriptions by the topic\n * @function\n * @public\n * @alias clearAllSubscriptions\n * @return { int }\n */\n PubSub.clearSubscriptions = function clearSubscriptions(topic){\n var m;\n for (m in messages){\n if (Object.prototype.hasOwnProperty.call(messages, m) && m.indexOf(topic) === 0){\n delete messages[m];\n }\n }\n };\n\n /**\n Count subscriptions by the topic\n * @function\n * @public\n * @alias countSubscriptions\n * @return { Array }\n */\n PubSub.countSubscriptions = function countSubscriptions(topic){\n var m;\n // eslint-disable-next-line no-unused-vars\n var token;\n var count = 0;\n for (m in messages) {\n if (Object.prototype.hasOwnProperty.call(messages, m) && m.indexOf(topic) === 0) {\n for (token in messages[m]) {\n count++;\n }\n break;\n }\n }\n return count;\n };\n\n\n /**\n Gets subscriptions by the topic\n * @function\n * @public\n * @alias getSubscriptions\n */\n PubSub.getSubscriptions = function getSubscriptions(topic){\n var m;\n var list = [];\n for (m in messages){\n if (Object.prototype.hasOwnProperty.call(messages, m) && m.indexOf(topic) === 0){\n list.push(m);\n }\n }\n return list;\n };\n\n /**\n * Removes subscriptions\n *\n * - When passed a token, removes a specific subscription.\n *\n\t * - When passed a function, removes all subscriptions for that function\n *\n\t * - When passed a topic, removes all subscriptions for that topic (hierarchy)\n * @function\n * @public\n * @alias subscribeOnce\n * @param { String | Function } value A token, function or topic to unsubscribe from\n * @example // Unsubscribing with a token\n * var token = PubSub.subscribe('mytopic', myFunc);\n * PubSub.unsubscribe(token);\n * @example // Unsubscribing with a function\n * PubSub.unsubscribe(myFunc);\n * @example // Unsubscribing from a topic\n * PubSub.unsubscribe('mytopic');\n */\n PubSub.unsubscribe = function(value){\n var descendantTopicExists = function(topic) {\n var m;\n for ( m in messages ){\n if ( Object.prototype.hasOwnProperty.call(messages, m) && m.indexOf(topic) === 0 ){\n // a descendant of the topic exists:\n return true;\n }\n }\n\n return false;\n },\n isTopic = typeof value === 'string' && ( Object.prototype.hasOwnProperty.call(messages, value) || descendantTopicExists(value) ),\n isToken = !isTopic && typeof value === 'string',\n isFunction = typeof value === 'function',\n result = false,\n m, message, t;\n\n if (isTopic){\n PubSub.clearSubscriptions(value);\n return;\n }\n\n for ( m in messages ){\n if ( Object.prototype.hasOwnProperty.call( messages, m ) ){\n message = messages[m];\n\n if ( isToken && message[value] ){\n delete message[value];\n result = value;\n // tokens are unique, so we can just stop here\n break;\n }\n\n if (isFunction) {\n for ( t in message ){\n if (Object.prototype.hasOwnProperty.call(message, t) && message[t] === value){\n delete message[t];\n result = true;\n }\n }\n }\n }\n }\n\n return result;\n };\n}));\n","module.exports = \"data:image/png;base64,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\"","import React, {\n useState,\n useContext,\n useEffect,\n useRef,\n useCallback,\n} from 'react'\nimport get from 'lodash/get'\nimport fetch from 'lib/decorated-fetch'\nimport classnames from 'classnames'\nimport { on, off } from '@arsenal/arsenal/modules/event'\n\nimport getUrl from 'lib/url'\nimport { useScrollSpy } from 'Components/hooks'\nimport { GlobalStoreContext } from 'Components/store'\n\nexport interface ICity {\n /* 城市首字母 */\n initials: string\n /* 城市列表 */\n city: [\n {\n city_name: string\n }\n ]\n}\n\ninterface IProps {\n onChange?(cityName?: string): void\n}\n\nexport default function City(props: IProps) {\n const { onChange } = props\n // 设置全局的城市\n const { state: globalStore, dispatch } = useContext(GlobalStoreContext)\n const { cities } = globalStore\n\n // 整体dom\n const ref = useRef(null)\n\n const [currIndex, setCurrIndex, cityRef] = useScrollSpy<\n HTMLElement,\n HTMLDivElement\n >(node => {\n return node.querySelectorAll('.cities')\n }, false)\n /* 获取城市列表 */\n const fetchCities = useCallback(() => {\n return fetch(getUrl('/motor/dealer/m/v1/get_dealer_city_list/'))\n .then(json => {\n const data = get(json, 'data', [])\n if (data.length) {\n data.unshift({\n initials: '热门城市',\n city: [\n { city_name: '北京', initials: '热门城市' },\n { city_name: '上海', initials: '热门城市' },\n { city_name: '广州', initials: '热门城市' },\n { city_name: '深圳', initials: '热门城市' },\n { city_name: '重庆', initials: '热门城市' },\n { city_name: '天津', initials: '热门城市' },\n { city_name: '成都', initials: '热门城市' },\n { city_name: '杭州', initials: '热门城市' },\n { city_name: '武汉', initials: '热门城市' },\n { city_name: '苏州', initials: '热门城市' },\n { city_name: '西安', initials: '热门城市' },\n { city_name: '南京', initials: '热门城市' },\n ],\n })\n }\n dispatch({\n type: 'setCities',\n payload: data,\n })\n })\n .catch(e => {\n // no-op\n })\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n useEffect(() => {\n if (!cities || !cities.length) {\n fetchCities()\n }\n }, [cities, fetchCities])\n useEffect(() => {\n function handleDocumentClick(e: Event) {\n if (!ref.current || ref.current.contains(e.target as Node)) {\n return\n }\n onChange && onChange()\n // setCity(Object.assign({}, city, { show: false }))\n }\n on(window, 'click', handleDocumentClick)\n return () => {\n off(window, 'click', handleDocumentClick)\n }\n }, [onChange])\n\n /* 渲染城市首字母 */\n function renderLetter() {\n if (!cities) {\n return null\n }\n return (\n
\n {cities.map((item, index) => (\n {\n setCurrIndex(index)\n // scrollView(item.initials)\n }}\n >\n {item.initials.slice(0, 1).toLocaleUpperCase()}\n \n ))}\n \n
\n )\n }\n\n /* 渲染城市列表 */\n function renderCities() {\n if (!cities) {\n return null\n }\n return (\n
\n {cities.map(city => {\n return (\n \n

{city.initials.toLocaleUpperCase()}

\n {city.city.map((item: ICity['city'][0]) => (\n {\n // setCity({ show: false, name: item.city_name })\n dispatch({\n type: 'setCityName',\n payload: item.city_name,\n })\n if (onChange) {\n onChange(item.city_name)\n }\n }}\n >\n {item.city_name}\n \n ))}\n \n )\n })}\n \n
\n )\n }\n if (!cities || !cities.length) {\n return null\n }\n return (\n ) => {\n e.stopPropagation()\n }}\n >\n {renderLetter()}\n {renderCities()}\n \n \n )\n}\n","module.exports = \"data:image/png;base64,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\"","var $ = require('../internals/export');\nvar parseFloatImplementation = require('../internals/number-parse-float');\n\n// `parseFloat` method\n// https://tc39.github.io/ecma262/#sec-parsefloat-string\n$({ global: true, forced: parseFloat != parseFloatImplementation }, {\n parseFloat: parseFloatImplementation\n});\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAJKADAAQAAAABAAAAJAAAAAAqDuP8AAAEQ0lEQVRYCe1YWWtTQRSec9NoBX2oDxWL2tykWpsUxO1FBfMuWEVaEaQq+iaIoii4YMUFFEXxDxSL4FIEK/jiUwT1pXUpdlFsmrSViH1QQcEl6R3PmWaSmbskt6JSwQtltu9858vMnXPOLWP/n39sB2Cqetva2oyOjs41HPgmbvGVDFgNZ1BDPMB4hnGWAQOeAoe7ra3NTxBvTcWHb0GheLySjb3fxzgc5JxX+3ECAOMM+CW2cN7VdCLxzZeNH1A4HNtiMX4ZhSz0g7djUNiYweDA8HD/HfuafVxyh1AAhOtiZyyLH9UMAd4yxrsYwP0ADyZnzcplaP3r14qaCchGGOcb8ACbsF2g2hkGnBse6j+OArk6r/Y9BZEYM9x4gzNrq2KQMZhxctWqaHtnZ+eEMu/oNjc3B3p6BnZZzDqFi+IdIxAw41ZquG+blyhPQWYkelbdGWBwb+aMqu2vXz/+7PBeYqK+fu2c7z8+XueMb5Qw2qlUcuCYHKutoQ5kX7wzyjGhmKs7d7RsnqoY4iMbsiUOyU8/lHzIccmWblMoHB2tNRs4/YXMaBdd9ZJGPhaJg7gKvOhD3FybrePIQpGGw9xi5/O4TOWMuUt/ZWdsfsSQju/bjw+vcDAZtwx2JJ0cvKBitV8udgLjjATQC+wlJlQXbcJf/MxcElsm8eVa4iLOAg592XdfEyQisAx6eLXpNhWM7R0OVfiiLuc53m1GGo7H4/EKO8RtLDhF2MDAgb7Ip4rTBFE6KC7yrnJXm7BIGrQsdjo9Ov6kdnFjQ9HevTfJiTEs/+g+GdMFUW6SDwY92fXTorDVkJt4VmtGHcfgsFe4RT5UAJogSpRyjSKw7PttMfxW4p5dbO+4/bCurjHiZadxKz4JrwmSWZsWZDqg/pQfztdlJ6zeUDi2zc02GJz9Ts6rPmlOEyRBv63FeqQcF0I0jCZI1DN5BkqU5cg81wEeBQPGsnSy/6YbJpv9Ml+ZL+wWzWmCqLiSQJG15cBni1EWax44tKu1Zf3QUJ/nO6hxKz7JjSaIKr2Cb1FCFEZlO5i9u3lFYMVIauASBrvSVaLCje9Qj0quC8Kys7gITVRCFMfuPRSSNQx2IrSoes3Im75Bd1RxdpITa6X8EwAoxCSa0gRRDYwOxgUWiyuqZ/J2jgaAfcAM/gIqYHUqOXgmkUjkHCCXCcGZL9zIF/lUYdM7uQqlWJCj8rG86hoqruwJUP1FfvvEQVyIn8z05AN92e0d78indDo3t6p6FBNnSx5c39s7ULV//94HeCxazLCTeY1JTPu121cwirdKTACM3ann3S/lWLaOI5ML06qEJVHi6wALcimQamIqrkwztsfP7SMMYclGraepyCduyWtvPXeIgPTlMW0+g1Tlf/NDUYtDqgi1L744F1UvAayBC3FKBXj0CUs2DG39fLUSTckjc/NDN+ZP/rPBzef/uWm9Az8BeRv/bbmceXUAAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAMKADAAQAAAABAAAAMAAAAADbN2wMAAABtklEQVRoBe1YQY7CMAw0aE99wYofcN59DBz2dRzgMdz7A8QLOJZNukJKJ5FrNy5LaHIBx8nE4ziuZaI6qgeW7YEV0r/u6dARbXFeI6+J2s8j/YR75sL9CA/x/3vj7/SF8xq5i9wyH65zVtkjugGgc6MVtTCXFu992DVpZTRrhssTcMZvjvQdHZ+YuOzpTNLQM8QtPoSKJ8CHEITKZeeCJBibk3shBiMHt/gbqAQMIigLQvUGrGIeLc7BrSGE3ny2zIeQKw/6L6zEqr9SQrKSXDI2w+UJEDXi8kBm+mOVGW7xbyC6AceoTdXzD9dJfj0GrpsLF8+pcvXA0jwQlcNzdQ+kuP6xhx2NcB/q/GVFWei/uxKYAUN7UOcJOFJlj+gGgI5Z94DF1XU0BlA8AcPuweBUwFV1NAZACwgh4PsEESvVkSqXDyGwN6d7AFCcqKpU3z4LcZ4y0/kPVCrH4wF+Hc6pQgg3W8nhl1eLqSKQ0z3QGiZdryIgBdWu4+odTufPeQkCXL3D6cYJYE7mXDuSr7mtObqxG1Dl5BxDpu59v++ANCdzHkvl6xAX9VN1nA1VVz2wFA/8ApkEkJnGmCtUAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAJKADAAQAAAABAAAAJAAAAAAqDuP8AAADeklEQVRYCe1XTUwTQRSemRYhoCY1BA4k2qUEpNVGrehFkx496EETogfFeJajJ/xpjeHmTU6e/DuoJCSeNF7cRBMSkcSUUgIRWjTRKBCJIIrSGd/b7pB1s1O329Zowibt+5n3vvft/O4QsvH8Zz1AVXy1ULhfCHJBCLFJFePFTyn9QSm5np3OXHTKVxIKtoZXK01GEkBSuZlMrbStklkNq14tMlijGLbfSkKlz2YnlD2pynHy79A6hZPf6jMIBdt2xQnncaOBMT33Jq1bg6qlO9Ut9BCQgW5MYGHKOQod/6r+ONRVzqGqk1EUKJtQMplkra2RQ9DDFZlnZRGKxWL1t24/HMoL/jwYioyFQtEmxYu7drtaZU5o0Wi0Yf7zig5t+412ISK8hgRA/2TYHv8891AqlfpKCR31WFeZ5pkQInbFIucJ851QontoKIvQ4OBgntaJYQ91lSmFOQSbobn/EAK6GY0bkkG4u7vbh8WVKC4aEOPlq7SMNDY7rGWvaxAyd2ZdRqOEA3AOlnIz6un0DK6eD6h7fUwMIx2xUXGqq15lgryHHIPQt5+rHaA7EmogZHmFsX4sUCNqFlA6PSZGoamA7RRGlITgFHwBGXsxiwp+FISOuv0ZHx9fBt8lu99uw9AckyeriW0PMWz1pGbksczgQpxtazu4VdqlSszlRPSs51mw132moiR0YF/kKXzZTRlxgjTmxdIVe7JbO8+XEgQwMB4xEVuVW/T80bTwaXizuzKZMnIqNz3xQNpuZDDUeVJwcl/GMkLPZLOZe9K2S5/dYbUXF+dSgUATzqOdhl+Q49sCzQvgH7HGqXRNi/TCfLkJ7cZIwM7+KJfN9Kni0a8cMpm0ZbPvHABNmLaPEz4Q1DqfqU54PPWxDWMg9gZ8rxYWDqUZxJK4Kll0yGRSe3uscXVt5QnMg5j0oYT95B34hgWhs4wJBmRaoEcOg6/FGkcoGa311x+Zmhqd/83vYLgihHnBeLyOvP2YxKsRmEWH2lInj1cesr05mdP17xa/UnVNSCJoHdEOvrbWS4XoAXKOWwGQ+CIovcP8/oHsZGpS5rqRJROSoHg2jbzO7CZ5fhmIGSc+EBkiPnata094rNyzT9YpWcKFMoHXG/yBniwZwJbguoewGEzahC3flQmT/yrcVJNugv+47N2AVDLmnyNUyZfbwPorPfALdqEvKvSeeIsAAAAASUVORK5CYII=\"","\"use strict\";/* globals self */var fetch=self.fetch.bind(self);module.exports=fetch;module.exports.default=module.exports;\n//# sourceMappingURL=index.js.map","var fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME;\n });\n};\n","import React, { useState, useContext, useEffect, useCallback } from 'react'\nimport fetch from 'lib/decorated-fetch'\nimport applyHttpsImage from 'lib/apply-https-img'\nimport getUrl from 'lib/url'\nimport cookie from 'cookie'\nimport { GlobalStoreContext } from 'Components/store'\nimport {\n getLoginHref,\n getRegisterHref,\n getLogoutHref,\n} from 'lib/get-login-href'\nimport { teaConfig } from 'lib/tea-analyze'\nimport { LoginStoreContext } from 'New/login/login-store'\nimport { ugcUserLink } from 'Components/author/avatar'\n\nconst fetchAntiToken = () => {\n return fetch(getUrl('/tt-anti-token'))\n .then((res) => {\n window.localStorage.setItem('tt-anti-token', res?.data?.token || '')\n })\n .catch((err) => {\n console.error(err)\n })\n}\n\nexport default function User(props: any) {\n const { size } = props\n // 设置全局的城市\n const { state: globalStore, dispatch } = useContext(GlobalStoreContext)\n const { userData } = globalStore\n\n useEffect(() => {\n if (!userData) {\n fetchAntiToken()\n }\n }, [userData])\n\n const isLogin = userData && userData.user_id\n const screenName = (userData && userData.screen_name) || ''\n\n useEffect(() => {\n if (userData?.user_id) {\n sessionStorage.setItem('userData', JSON.stringify(userData))\n teaConfig({\n user_id: userData.user_id,\n })\n }\n }, [userData?.user_id])\n\n const { openLogin, logout } = useContext(LoginStoreContext)\n\n return (\n ) => {\n e.stopPropagation()\n }}\n >\n {isLogin ? (\n
\n
\n
\n ) : (\n
\n {/**/}\n {/* 登录*/}\n {/**/}\n \n openLogin({\n enter_method: 'login',\n })\n }\n >\n 登录\n \n \n {/**/}\n {/* 注册*/}\n {/**/}\n \n openLogin({\n enter_method: 'login',\n })\n }\n >\n 注册\n \n
\n )}\n
    \n
  • \n {ugcUserLink({ userId: userData?.user_id, target: '_self' })(\n
    \n
    \n
    \n

    {screenName}

    \n
    \n
    \n )}\n
  • \n
  • \n \n \n 退出登录\n \n
  • \n
\n \n
\n )\n}\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAMKADAAQAAAABAAAAMAAAAADbN2wMAAABxklEQVRoBe1ZO3LEIAyFTKpcwpPtnDa5Tk6X66Reus34EtsSvNvog4UwsLO2cWUheEhCFm9kY/rTI3DsCFjq/nD6+DHGj3Q8T7Zuupy/4ZpWuK9wk/t7MN6bTz6eMWJ9ZHIb3JfITpsaipwAtN9ejfUOjiy+exvSzr8t6pGiHq7sQDB+urgvtPeCMJzGX3XqVcTdfApt3gE5hUi6DO8jKi/Tn2NlmCxRiSW4mz+B7oAqRxpOyvoGauU89acEt6cQjeajZTmFAj243bAaq+5UQjMzMI56uLIDM7dRM1N0RSQcqYe7+W8gcgLWBQaaiGBKHTDY0wqXbdQHegQOFQFGh1t1D/S4uKOB12HdfFKRKtSme3Br1WjuFFYBgT1MZ8we7wH4CdXrHkBUYwhuVkcDI0VSCEyo2D0AqMF+3O3I6mggoP2nEHH3ESJlqgmWK6cQMbike0CgBJEyVZmX7b0KCYGqqtIyVc5ys1Koqs0AjP5LAKrka5YDJd2DpCUrJ2Q5sHKP5DKJ70i6GfgpHEA8ifEdmQvJDtCaLMUyUa+lpSU62YFmXYkSk/HaPd4D2pqMI4ElXq8DgwPdDqpfq8O7dqlH4IgR+AdDXbqZyQzh/QAAAABJRU5ErkJggg==\"","module.exports = window.fetch || (window.fetch = require('unfetch').default || require('unfetch'));\n"],"sourceRoot":""}