{"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/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/logo.svg","webpack://_N_E/./public/static/live-yellow.gif","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/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/./lib/ie-version.ts","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/./components/header2.tsx","webpack://_N_E/./components/search2.tsx","webpack://_N_E/./components/header3.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/./components/hooks/use-top-tips.ts","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","timer","config","icon","link","newVersionLink","hoverComponent","isActive","onClick","PubSub","publish","onMouseEnter","sendTeaCommEvent","event_id","onMouseLeave","clearTimeout","children","isNeedLogin","user_id","RegExp","test","loginMethod","ConditionList","query","TypeList","item","button_name","hot_star","require","Brand","letters","brands","selectBrandId","selectBrandName","brandId","divRef","useRef","letterRef","useState","setCurrent","offsetMap","Map","letterMap","scrollView","size","Array","from","forEach","getAttribute","offsetTop","get","scrollTop","requestAnimationFrame","useEffect","scrollHeight","clientHeight","scale","error","console","observer","IntersectionObserver","changes","change","target","findIndex","rootBounds","top","boundingClientRect","bottom","isIntersecting","intersectionRatio","root","rootMargin","threshold","observe","disconnect","ref","e","preventDefault","stopPropagation","active","backgroundImage","brand","info","pinyin","data-letter","type","brand_name","brand_id","selected","image_url","src","applyHttpsImage","alt","FollowStatus","globalState","useContext","GlobalStoreContext","openLogin","LoginStoreContext","userData","followedCars","visitedCars","hotCars","star","star_black","carBg","rehandleList","list","loop","result","j","CarList","setType","categoryList","setCatgoryList","loading","setLoading","setTypeProxy","useCallback","Car","data","dcd_score","toFixed","series_id","car_series_name","series_name","car_series_id","official_price","width","height","lazy","cusDefaultImg","category_name","emptyHint","getEmptyHint","city","useCityName","getRehandleList","getFollowedCars","a","city_name","count","fetch","serializeObject","json","getVisitedCars","visitedSeries","JSON","parse","localStorage","getItem","err","metrics","counter","logger","warn","message","series_ids","reverse","join","getHotCars","car_count","suv_count","other_count","flag","isShowHistory","isShowFollow","catgoryList","category_code","text","show","jump","hide","getCarList","category_list","defaultType","fetchData","classnames","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","setItem","stringify","time","moment","unix","handler","getBrandList","realId","format","removeItem","init","token","subscribe","unsubscribe","reHandleData","res","ProtalModal","fixType","setFixType","handleType","setHandleType","setShow","showHandler","fixHandler","showToken","fixToken","useMemo","getClassName","getLink","isNewVersion","childClickHandler","child","userId","enter_method","Router","ChildWrap","setUrl","routeChangeComplete","VERSION_COOKIE_KEY","location","pathname","events","on","off","setId","wrapTop","setWrapTop","params","navItemDOM","rect","getBoundingClientRect","childClick","FixNav","pageType","isHasTips","useHasTips","isAutoNav","realUrl","widthClassName","Fragment","hasChildren","$","$trim","trim","proto","forced","forcedStringTrimMethod","DESCRIPTORS","global","isForced","inheritIfRequired","f","getOwnPropertyNames","isRegExp","getFlags","stickyHelpers","redefine","fails","setInternalState","setSpecies","MATCH","wellKnownSymbol","NativeRegExp","RegExpPrototype","prototype","re1","re2","CORRECT_NEW","UNSUPPORTED_Y","RegExpWrapper","pattern","flags","sticky","thisIsRegExp","patternIsRegExp","flagsAreUndefined","constructor","source","call","proxy","configurable","it","keys","ieVersion","navigator","userAgent","isIE","isEdge","isIE11","fIEVersion","parseFloat","getIEVersion","isFirefox","path","setLocation2storage","cityName","setSelectedCity2storage","getTeaParam","selectedCity","sCity","str","locationCity","location_city","is_city_normal","selected_city","sendTeaLocationEvent","event","teaConfig","mapKey","getLocation","Promise","all","getGPSCityName","getIPCityName","gpsLocation","ipLocation","gpsCityName","log","getDatabaseCity","dataBaseResult","latitude","longitude","gpsLatitude","gpsLongitude","ipLatitude","ipLongitude","ipCityName","getCityByPos","coordinate","then","province","cityResult","provinceResult","currentCity","resolve","encodeURIComponent","dbCityName","catch","defaultResult","timeout","getCurrentPosition","geolocation","coords","maximumAge","race","getGPSLocation","keyword","searchMode","search_content","search_mode","sessionStorage","ResultList","curIndex","Search","setFocus","setValue","setCurIndex","setList","searchDivRef","buttonRef","searchDivDom","searchButtonDom","add","addEventListener","removeEventListener","getUrl","placeholder","onChange","onBlur","onFocus","onKeyDownCapture","keyCode","TopTips","dynamic","ssr","live_white","live_yellow","routes","getLinkHref","Header","updateActive","showCity","setCityPopup","dispatch","hideSearch","setSearch","asPath","includes","payload","rel","nativeEvent","stopImmediatePropagation","obj_text","hasicon","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","handleAsPath","preValue","fetchComlete","filter","searchBtnHandler","searchType","searchValue","getLocalSearch","currentTarget","blur","storageList","splice","maxList","User","isLogin","screenName","screen_name","logout","avatar_url","ugcUserLink","HeaderSwitch","isFixType","responsive","useResponsive","responsiveType","setResponsiveType","isHandel","computedResponsive","handleClick","shrink_type","useFireFox","FixNavModal","cusHeadType","isFireFox","StickyHeaderContext","isFixed","duration","setState","cusType","setCusType","typeHandler","typeToken","title","leave","enter","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","pageId","CenterImageWrap","wrapClassName","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","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","visible","onClose","uploading","setUploading","setContent","setTel","empty","tel_valid","waringVisible","setWarnVisible","isSubmit","setSubmit","imgList","createRef","contentLength","telLength","isOutRange","closeHandler","xss","filterXSS","err_code","Toast","isModal","getContainer","files","url_list","image_height","image_width","image_uri","footer","border","appear","exit","closable","rows","autoFocus","spellCheck","maxLength","click","display","accept","imgChoose","memo","feedbackVisible","setVisible","seriesIds","cardIds","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","toLocaleLowerCase","Slardar","sampleRate","bid","pid","ignoreAjax","hookFetch","ignoreStatic","tt_web_version","domain","host","extra","history","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-a99cd162dda2e3ca6d80.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/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/logo-c90d6664d5f8779dfb80a5fa6d4d0fa8.svg\";","module.exports = \"https://sf6-scmcdn2-tos.pstatp.com/motor/pc/_next/static/images/live-yellow-4759e2696f1982351d18d263b73820b5.gif\";","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","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,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAMKADAAQAAAABAAAAMAAAAADbN2wMAAAGFklEQVRoBe1YW2xURRj+/9mz23KxtxdTaNIEUYQCD0hMjPFB8BJquATqlhgQafdSHow+GLwFxMRLFB98g7JL15aQyHJtQSIxpT6YYHwgwQutAg9cisFY3DUqsHv2/P5TWJlz9pyzly6xDzvJycz8/zff/P9c/pk5AJVUGYHKCFRG4P8cASxX59Ho5/MzhCsMoBYmnUGAjTIHAg8gXQHCUUAYZfmI0GAgvNH/Qzn6npADO3vi8yhDHUi0igAeKMogxPMIdFiQ1hsKtf1UVFsFXJIDO3rjMzFlvAuALxGRR+ErpWgwz2c+T/WWzs6VV4slKMqBoaEhbeT8b1t5WbwGQFOK7cwNj4D/MOcnuGj2e+HFi9NuWFVXsAPRaLwhTbQfiJaoBOUusyNDmsC2QMB/vRDughyIRA7N1SE9wMbPLoR0whjeH0LzLA9vbBvJx5XXge7YgYdJz5zitV6Xj6ycekRMgAcf7+rwn3XjFW7KvXuP1Rt65mgpxrMBKf6ucOi8LMtu/djpZJ8c4fqlDXb6rMxxBuLxuGcsQV/yxnoqC3bPUUeEQ4z/gnxicNMG/6iKvxO5lnLEeY4IVjNOU/VOZXb+q4ZaXOb3+zN2GEeSsSRtKcR47oCQYJdHaB8GAmsu2nUiZXcc6uNiXzR6sDlj6G8SQohH2nEQZTvWPz2WBLYFtsm6Ndk27t5zsJFups/xSE2zNlDrHDFGQYgNXYHnB1V5oeWd0f1LwTB6CWimWxsZYnGKNju8fs2vVpz9Hrihv5PfeLjg06oeK9V4aYhsKzl4FC9YDVPr7OBUYJtUWbacMwO7d8fnpDL0o+saRbgKPvGodZ1nSYvN5f6AlPEdH5AznNui7gFvSyi0+hcVkzMDOt9tXI0HMDQQ68tlvDRGcklOLvK1wimRZmAqYNXmOGAgrLSC1LoAjASD/pOqrBxlySm583Dl2GZyQB5avO3nOJHIeO7Vqt530k9YXo0fuJ0ZvC8fkktc7cfkAKUzOR6qYCY41NGx6rIqcyrHYkPVkUj//fI7fvx4lRNOlYdf9F/i5XtYlVnLKSKTjeZzAGE+byTHJAQelcq+vhPT/k4lWwQYCw3CBdxmHkeDBu68ltW1gFhzM33NlyW6eOUG7Ni17xbXk3xsJDj0cw5j/NA5yyHyezTwTFPT9OHW1tZbiGKAyGjPtrXmfOYsVGWmKLQjsm/Q7bbJnQ7yi6qZMbOYxDR7KmlpZXmS0888yzwLsMyRA/HkpmA7n+i3k2kG+GXFT0HnxOTc0A3h3Da/hjTmb2Gc/ByTtFFVmkaRTTMpVeDkKWOjaovJAV4iHlU5Scte1S6TA7y+c+4aKngylPnqZ3o3mxzg9T3pHeCo4+wAh7SyOjB+ixx/rJdv7nijmxwwRSEOj3nfoHdNwRv82jrDcfk0x/3TLL8kNCNhgJbwkZFIL5yVyP5d4MeRL5msqje0dL3Q9ToSnnojYzTzcniE2y9invl87//v3Ljbh00J4ZwqNTkgvHAsk4atKiCnLMTLXjC+rqnBYadXkrUN41Isu3bns6rhtoO4IIP0JBm0PQegChCPmapqRb6OuiNx/v1HplClYvjC9XE41P66KitXuXvXvo/41+RmRz7ewF2B9ib5CsxiTJt4XIE0fl3IAqw533df2Rk78KBVPtG65JTceXj6VeMl1uSAFPBBEJO5c6Iq0vX+7nhc3nvKkmKxw3WSk6Og66UPhdhj7TDHgWBw7bd8oDGZSyKYaySNN1wQRalu6qlP+YYy170RDnR1+k9ZMTkOjAM84i3OeUbtE4fHI80za7bZa0uQ+vBtju+OEZCXTUZDr+2A2Tog/4bxLDgsJexpqMM2efUtwVTbJvJJidOnPcEDI8NxbkLoCQZXD+cqbPZAFtRQK15lJ0z/7bm+fVOovbPQ8JnlKiQPv7D8d6zDJezENyqe62enV9/Hf8Ptk+0MSCgb+Rd6q+Tr5w9ZFyg2dwXXOoc4CZpgCvv9SWyc+iwfjCckFS+d6+jzrVi3rvVPJ2rTg8YO1L17/zNIRlMo0N5jp78XMnmw8W/NXo460Yn8d7oXtlU4KyNQGYHKCJhH4F9lIRPXeyWLywAAAABJRU5ErkJggg==\"","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\";","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","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","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 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 { 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'\nimport { handleAsPath } from 'lib/utils'\nimport decodeUriComponent from 'decode-uri-component'\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 const href = typeof window === 'undefined' ? '' : window?.location?.href\n const keyword = handleAsPath(href)?.keyword\n useEffect(() => {\n // 搜索页面才处理\n if (window?.location?.pathname?.indexOf('/search') === 0) {\n setValue(keyword)\n saveLocalSearch(keyword)\n setList((preValue) => {\n return { type: '', data: preValue.data, show: false }\n })\n }\n }, [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 || handleAsPath(window?.location?.href)?.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 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'\nimport dynamic from 'next/dynamic'\nconst FixNavModal = dynamic(() => import('New/side-nav/fix-nav'), {\n ssr: false,\n})\nimport { StickyHeaderContext } from 'Components/new/sticky-header/sticky-header-provider'\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\n const [showCity, setCityPopup] = React.useState(false)\n // 防止ssr与前端渲染的html不一致的问题,在服务端不渲染城市\n const { state, dispatch } = React.useContext(GlobalStoreContext)\n const { cityName } = state\n\n const {\n state: { isFixed, duration },\n setState: setHeaderState,\n } = React.useContext(StickyHeaderContext)\n\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 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 \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
\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 '/series-', // 图片详情\n '/news', // 资讯静态化\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 'page_pgc_article_detail', // 资讯详情\n 'page_search_result_new', // 搜索\n 'page_my_collection', // 收藏页面\n 'page_personal_homepage', // 个人主页\n 'page_feed_article_mix_static', // 资讯静态化\n]\n\nconst cusPageEnter = (pageId: string) => {\n if (!pageId) {\n return false\n }\n return NOT_AUTO_TO_LIST?.includes(pageId)\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'\nimport { MoreButton } from 'New/search/components/title-bar'\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 Router.push('/new_feed/home', url)\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 {\n sendTeaCommEvent('clk_event', {\n event_id: 'all_news_btn',\n })\n }}\n >\n 全部资讯\n \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 Router.push('/new_feed/home', url)\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'\nimport StickyHeaderProvider from 'Components/new/sticky-header/sticky-header-provider'\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 (this.props?.pageProps?._pageType === 'error') {\n return\n }\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(params?.page_id)) {\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(params?.page_id)) {\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, Component } = this.props\n if (\n router?.asPath?.indexOf('/404') === 0 ||\n router?.route?.indexOf('/404') === 0\n ) {\n if (typeof window !== 'undefined') {\n pageProps._pageType = isNewVersion() ? 'new' : ''\n pageProps._pageClassName = 'page-404'\n } else {\n return null!\n }\n }\n\n // 如果是错误页,什么额外组件都不要,避免进入死循环\n if (pageProps?._pageType === 'error') {\n return \n }\n\n return (\n \n \n 懂车帝 - 说真的还得懂车帝\n \n \n \n \n \n \n \n \n {this.renderHeader(\n pageProps?._pageType,\n pageProps?._cusHeadType\n )}\n {this.renderContent(this.props)}\n {pageProps?._pageType ? (\n \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,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAMKADAAQAAAABAAAAMAAAAADbN2wMAAAFyUlEQVRoBe1Ze1CUVRT/8Vheya6NsCBO8pCXRX81joKaDrrRNNmkIWVTGVMwiU4SU9NYM05/NJn5CAswUavpD0UQUP4C5RFZaP2RaYQiuyDNCCzQhGA+eEj3fLU7393v++4+XFFn+M3c2fvde86559zHueee9YmOnT+JBxi+D7DukurTBtzrFZxegXu9Av7eUiAxMR6mlelISIhHRIQRRmM4IoxG+Pn5orfXij6rFdY+KyydXThZ34j29g6vDO1zJ240Pn4estauQcZTKxAdPdcthS5f7kbdiXocrTyOjg6zW7xyYo8MoBkuyN+EzMzVbIb95PLcrt++fRsVR6uxa/cX6O8fcJvfLQNI2c1v5yE3JxtBQUFuDyZiuHHjBkr3f4Mvi77C+Pi4iJTrc9kAg8GAvcWfIy1tESfA2x8tp3/Ghrx8XL161SXRLrnR+HlxOF5ddteVJ43TUhdKY82Li/WOASSosvIQYmKiXRLoDSIaq6rqMMhJOINwBfR6PQ4eKIGB/bqL0dFR5j770NPTC6q7CxrzQGkRSAcRNM+Ar68vvvu2FEuWpIn47X108GrrTqKxsRk/tZyB1dpv76MKea7F7Pykpy/D0xkm+Pu7dgWdOtWC9dm5IG+lBk0D8jdvBBVnmJycxKHD5Sgp2Y8rPT3OyKX+OVFRyMvLwcvrsuDj4+OUp3BPMaioQdWA8PAwNDfVIiQkRI3H3tbHbtaCd7eghc24JyCPtnvnNkRGRgjZycU+uTwDAwODCjrVM0Az70z57u4/sfqFdR4rT5qQ4SSDZIkQHBysuRsUKxAXG4MTdTXCPUr7+7nnsxT7XKSEqI/OR82xcumcaNHRGTNlrEJXVzdHoliBrKw1QuXpMOUXvO815UkbmhCSqXVQiYYO/UsvZlKVg8IAk2kFR+D4cbisAqfZbeltkEySLYJppVI3zgC6tEQ3IPnzouJ9ojHuqK+4pFR4Z8TFxYC2uBycASZTurxPUa+tq5cuJ0WHSkNgQADCwmZJJSBAp0KhbKJLj0JsERx3CHebJCUmiHjR0NAk9ZNXoAdMcnIikpMSkcCu/JkzZyI0dAYroZgx4yEEMAPkuHVrFCMjIxgeHpF+/x4aYu8ACy5ebMeFC+0wWyxs9sdQX9+EVc8+I2fl6vPZmHJwBpA3EIEeL++wd8DcuY+Abmp3EBgYgMDA/1bExrd82VJbVQqhO9lr7QpbBRHopScHZ4DRiQGLF6fKeb1aJy+TyHYAFREcdeSmkd6w9zuM4fwKcAbQA/x+h07HbRpwGnvyJp1qgx2j3AfPgH4+TOcNGHA/KyBaAYoiqXgTViuvI7ehLJYul8e6efMm2pj/bm1tQ+sfbezl1SP5ePLzw8PDUt2WXdDpdDAY9NLLTq8PZXUD5syJwuMpjyEl5VHpTnG8N7QUoXySHJwBDY3fS2kTOYFjfetHH+PMmV9gNncKgy8539jYGAYH/5KKvN1WJwOTkhKQumghPvzgPVuz6i/pKAe3hc6fb3WaXIqaHYlLl8wuKy8fTKtOBtJKzpr1sBaJ1E4H+Ny53zkazgDqqf8/XOCoZB/Zr792VzIUlIkg2SKcONmg6FYYUFFRpSCSN1BIsJ9lCyju8Rb0LH4imSRbhOrqGkW3woCzv52HmqVyTgreNryVI2+6o/rWrVukgFAkhDLav549pyBRGEAUn+0oFO5xCnkL9xQphHnasGNnIYtGOzXZJyYmsH37btV+VQPMZgu0ttKR8kopd0mhr7dAh3Nt1ivSQVaTWc62tZaBike9TQBlJY6x9J48OtxXehDbPt1lI/H6L52rrw/sxYIFT9hl038HlLm4du0fe5u8oroCRHD9+nW8mbvJniX+ZNvOu6o8jTkycg2vrs9B8w8/0ieG2KPnjZyNmsoTjeYKUCdhKUstzma+n5ZxqkAX2y6W8Co7ctRp3smpAVOltKfjaG4hTwVONd+0AVM9447jTa+A44xM9fe/Oj0Jdgov8EQAAAAASUVORK5CYII=\"","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","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","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":""}