{"version":3,"sources":["webpack://_N_E/./components/breadcrumb/index.tsx","webpack://_N_E/./components/close-icon.tsx","webpack://_N_E/./components/dialog.tsx","webpack://_N_E/./components/hooks/use-expand-auto-scroll.ts","webpack://_N_E/./components/hooks/use-toggle-collect.ts","webpack://_N_E/./components/hooks/use-toggle-digg.ts","webpack://_N_E/./components/hooks/use-view-observe.ts","webpack://_N_E/./components/links/common-link.tsx","webpack://_N_E/./components/new/community-card/answer.tsx","webpack://_N_E/./components/new/community-card/car-model.tsx","webpack://_N_E/./components/new/community-card/card-wrapper.tsx","webpack://_N_E/./components/new/community-card/forward.tsx","webpack://_N_E/./components/new/community-card/header.tsx","webpack://_N_E/./components/new/community-card/image-list.tsx","webpack://_N_E/./components/hooks/use-toggle-bury.ts","webpack://_N_E/./components/new/community-card/interact.tsx","webpack://_N_E/./components/new/community-card/publish-dropdown.tsx","webpack://_N_E/./components/new/community-card/share.tsx","webpack://_N_E/./components/new/community-card/text.tsx","webpack://_N_E/./components/new/community-card/user-detail.tsx","webpack://_N_E/./components/new/community-card/video.tsx","webpack://_N_E/./components/new/confirm/index.tsx","webpack://_N_E/./components/new/copyright/index.tsx","webpack://_N_E/./components/new/filter-background/index.tsx","webpack://_N_E/./components/new/links/hot-header-link.tsx","webpack://_N_E/./components/new/hot/hot-header.tsx","webpack://_N_E/./components/new/hot/hot-item.tsx","webpack://_N_E/./components/new/hot/hot-layout.tsx","webpack://_N_E/./components/new/hot/hot-topic.tsx","webpack://_N_E/./components/new/hot/hot-community-item.tsx","webpack://_N_E/./new/community/services/getFocusCheYouList.ts","webpack://_N_E/./components/new/hot/my-community.tsx","webpack://_N_E/./components/new/links/any-link.tsx","webpack://_N_E/./components/new/links/community-link.tsx","webpack://_N_E/./components/new/links/koubei-link.tsx","webpack://_N_E/./components/new/links/topic-link.tsx","webpack://_N_E/./components/new/links/ugc-detail-link.tsx","webpack://_N_E/./components/new/overflow-tooltip/index.tsx","webpack://_N_E/./components/new/pagination/index.tsx","webpack://_N_E/./components/new/responsive-swiper/index.tsx","webpack://_N_E/./components/bubble-navigation.tsx","webpack://_N_E/./components/publisher/TextArea.tsx","webpack://_N_E/./components/publisher/controller-card.tsx","webpack://_N_E/./components/publisher/image-uploader.tsx","webpack://_N_E/./components/publisher/video-uploader.tsx","webpack://_N_E/./lib/get-key.ts","webpack://_N_E/./lib/getBrandInfo.ts","webpack://_N_E/./lib/getCarFansOptions.ts","webpack://_N_E/./components/publisher/community-selector.tsx","webpack://_N_E/./components/publisher/time-picker.tsx","webpack://_N_E/./components/publisher/datetime-selector.tsx","webpack://_N_E/./components/publisher/topic-selector.tsx","webpack://_N_E/./lib/fetch-topic.ts","webpack://_N_E/./components/hooks/use-cache-store.ts","webpack://_N_E/./components/publisher/controller.tsx","webpack://_N_E/./components/publisher/publisher.tsx","webpack://_N_E/./components/swiper-button2.tsx","webpack://_N_E/./components/ugc/imageViewer.tsx","webpack://_N_E/./constants/articleType.ts","webpack://_N_E/./constants/community-api.ts","webpack://_N_E/./constants/emoji/index.ts","webpack://_N_E/./lib/can-use-webp.ts","webpack://_N_E/./lib/format-time.ts","webpack://_N_E/./lib/get-content-jump-url.ts","webpack://_N_E/./lib/image-upload.ts","webpack://_N_E/./lib/interaction.ts","webpack://_N_E/./lib/user-info.ts","webpack://_N_E/./new/article-detail/components/content/follow-btn.tsx","webpack://_N_E/./new/article-detail/components/content/relation-series.tsx","webpack://_N_E/./new/article-detail/components/content/relation-series-tea.ts","webpack://_N_E/./new/article-detail/components/content/index.tsx","webpack://_N_E/./new/article-detail/services/index.ts","webpack://_N_E/./new/auto/series/components/module-title.tsx","webpack://_N_E/./new/auto/series/components/more-button.tsx","webpack://_N_E/./new/community-topic/services/getTopicHot.ts","webpack://_N_E/./new/community-topic/utils.ts","webpack://_N_E/./new/community/components/empty.tsx","webpack://_N_E/./new/community/components/ugc-item.tsx","webpack://_N_E/./new/community/components/community-header/index.tsx","webpack://_N_E/./new/community/components/sort.tsx","webpack://_N_E/./new/community/components/more-table-list.tsx","webpack://_N_E/./new/community/components/content.tsx","webpack://_N_E/./new/community/components/dongche-score.tsx","webpack://_N_E/./new/community/components/hot-talk-community.tsx","webpack://_N_E/./new/community/services/getCheyouSeriesReviewCard.ts","webpack://_N_E/./new/community/services/getCheYouHotCard.ts","webpack://_N_E/./new/community/tdk.ts","webpack://_N_E/./new/community/services/getAnnouncements.ts","webpack://_N_E/./new/community/index.tsx","webpack://_N_E/./new/community/services/getCheYouList.ts","webpack://_N_E/./new/community/services/getCheyouHead.ts","webpack://_N_E/./new/community/tabMapping.ts","webpack://_N_E/./lib/tdk-title.ts","webpack://_N_E/./new/ugc/tdk.ts","webpack://_N_E/./components/breadcrumb/index.module.scss","webpack://_N_E/./components/dialog.module.scss","webpack://_N_E/./components/links/common-link.module.scss","webpack://_N_E/./components/new/filter-background/index.module.scss","webpack://_N_E/./components/swiper-button2.module.scss","webpack://_N_E/./new/article-detail/components/content/relation-series.module.scss","webpack://_N_E/./new/auto/series/components/module-title.module.scss","webpack://_N_E/./new/community/components/community-header/index.module.scss"],"names":["Breadcrumb","path","style","hideLine","className","handleCrumbClick","classnames","styles","map","text","index","length","href","as","getLinkHref","target","onClick","name","close_icon","require","close_icon_hover","CloseIcon","modalDom","modalStack","modalId","useModal","props","visible","zIndexRef","useRef","zIndex","useEffect","_modalDom","document","createElement","body","appendChild","String","current","id","push","overflow","modalIndex","findIndex","d","splice","setTimeout","parentNode","parentElement","removeChild","classList","add","headerClass","titleClass","headerVisible","onClose","closeText","title","children","destroyOnClose","onCloseBtnClick","useState","show","setShow","isInit","setIsInit","isLeave","setIsLeave","unstable_batchedUpdates","handleClose","useCallback","handleAnimationEnd","handleClickContent","stopPropagation","handleMouseOver","getContainer","display","undefined","onMouseOver","classNames","leave","onAnimationEnd","type","expanded","setExpanded","heightRef","rootRef","toggleExpand","prev","getBoundingClientRect","top","height","scrollToWithStickyObserve","getScrollTop","collect","collectParams","fetch","method","headers","window","localStorage","getItem","credentials","serializeObject","then","res","data","result","unCollect","collected","collectCount","useStatusCountUpdater","status","count","begin","rollback","curStatus","curCount","update","useOptimisticStatus","execute","useLoginCheckCallback","group_id","useMemo","enter_method","makeMap","raw","reduce","cellStyles","diggType","split","forEach","cellStyle","cellStyleDiggTypeMap","articleTypeDiggTypeMap","hasDigg","diggCount","groupId","commentId","articleType","state","useContext","GlobalStoreContext","userId","userData","user_id","actionsRef","DiggBuryContext","diggBegin","diggRollback","diggStatus","buryPrevRef","aid","app_name","appName","comment_id","item_id","action","errno","reply_id","thread_id","digg_action","like_type","metrics","buryBegin","buryStatus","buryRollback","callback","watchVisible","container","setContainer","isIntersectingRef","callbackRef","mutationObserverRef","MutationObserver","mutations","every","observe","attributes","childList","subtree","characterData","disconnect","handleResize","addEventListener","removeEventListener","intersectionObserverRef","IntersectionObserver","changes","change","isIntersecting","ECommonLinkType","NONE_HREF","createHref","query","suffix","Object","keys","SERIES","SCORE","DEALER","CONFIG","COMMUNITY","COMMUNITY_QA","BRAND","IMAGE_LIST","WG_IMAGE","NS_IMAGE","KJ_IMAGE","TEST","CommonLink","rel","disabled","computedHref","React","computedDisabled","anchor","event","preventDefault","username","avatar","userVerified","verifyType","labelUrl","linkWrapper","noopWrapper","size","ugcUserLink","dangerouslySetInnerHTML","__html","emoji","xss","size14Class","yellow_star_little","black_star_little","year","carName","score","scoreText","toFixed","width","marginRight","starIcon","starVacantIcon","maxScore","starWidth","starHeight","questionEmpty","forwardEmpty","coverUrl","errorImg","uiStyle","src","lazy","autoPixelRatio","AuthLabel","nameAppend","nameClassName","textTags","medals","medalsVisible","levelIcon","followed","followVisible","userDetail","onClickFollow","onClickUser","useToggleFollow","toggleFollow","curFollow","ugcUserLinkWrapper","handleFollow","curUserId","handleClickUser","theme","content","tag","hoverTransition","item","placement","icon","alt","imageList","moreCount","setMoreCount","responsive","useResponsive","useExpandAutoScroll","activeIndex","setActiveIndex","ref","imgList","layout","buried","buryCount","diggPrevRef","makeShareIcon","isHover","shareIcon","shareIconHover","makeReplyIcon","replyIcon","replyIconHover","makeCollectNormalIcon","fill","makeCollectActiveIcon","border","makeDiggNormalIcon","makeDiggActiveIcon","collectNormalIcon","collectNormalIconHover","collectActiveIcon","collectNormalIconBlack","collectActiveIconBlack","diggNormalIcon","diggNormalIconHover","diggActiveIcon","buryNormalIcon","buryActiveIcon","iconHeightClass","InteractButton","hoverIcon","iconSize","paddingLeft","fontSize","leading","showCount","formatNumber","hover","DiggButton","defaultIcon","useToggleDigg","toggle","handleClick","CollectButton","renderText","useToggleCollect","BuryButton","useToggleBury","createContext","DiggBuryProvider","Provider","value","VerticalButton","wrap","reportConfig","5","isCustom","isLink","1","11","articleTypeSourceMap","ReportButton","onCancel","objectId","objectType","authorId","setVisible","reportType","setReportType","inputVisible","setInputVisible","description","setDescription","reportedRef","dialogStyle","open","placeholder","onInput","e","currentTarget","report","source","Toast","catch","DelCommentButton","onSuccess","onError","confirmVisible","setConfirmVisible","handleConfirm","address","getUrl","console","log","onConfirm","isCollectable","includes","isBuryable","InteractVideo","moreContent","shareContent","comment_count","digg_count","is_digg","is_collected","onClickComment","onClickCollect","list","fn","classname","onClickDigg","showTips","isOwnerDigg","questionStatus","questionDisplay","awardText","awardIcon","time","timeAppend","timePrepend","commentVisible","commentCount","diggVisible","selfHasDigg","commentText","collectVisible","communityId","communityName","buryVisible","commentLinkWrapper","onClickCommunity","onClickBury","onShowShare","handleClickComment","handleClickCommunity","communityLink","formatTime","onTipShow","publishPicture","publishQa","publishVideo","publishLong","operations","des","url","usePublish","isShowPublish","setIsShowPublish","operation","setOperation","handlePublish","publishSuccess","gid","PublishOperation","hasScore","seriesId","seriesName","topicId","topicName","defaultCommunity","series_id","series_name","defaultTopic","onPublish","defaultTab","onCopySuccess","onShare","qrcodeVisible","setQrcodeVisible","pic","shareXLWB","pics","shareQQZone","shareQQ","input","cssText","focus","setSelectionRange","execCommand","autoCopyValue","QALabel","HotLabel","JHLabel","TopicLabel","makeTopicUrl","size20Class","size16Class","prepend","append","rows","hasBtn","setHasBtn","handleExpand","useViewObserve","el","curHasBtn","scrollHeight","Medal","desc","dynamicCount","essenceCount","followCount","authDesc","authIcon","authWidth","authHeight","onClickMore","onClickContent","verifySize","slice","margin","tab","prevSetState","Player","dynamic","ssr","loading","coverAlt","videoId","duration","showPlayer","setShowPlayer","vid","autoplay","cover","setPIP","paddingBottom","confirmText","cancelText","imgBackground","cutType","percent","background","right","left","herf","motor_name","is_doudi","color","moreButton","hotHeaderLink","titleColor","rightContent","replace","Wrapper","Bottom","texts","iconUrl","HotTopicItem","readCount","joinCount","smallLogoLoading","cusDefaultImg","hasImage","hasVideo","scoreLevel","price","location","questionInfo","bottomTexts","status_display","send_award","award_icon_url","Number","smCols","smRows","slideCount","slideClass","gap","cols","sm","md","lg","xl","prevEl","setPrevEl","nextEl","setNextEl","hasButton","buttonStyle","position","navigation","topicHot","onClickItem","hot_list","id_str","intro","user_count","total_play_count","logo","car_error_bg","fansCount","role","params","req","json","Error","prompts","message","onClickTitle","focusCheYouList","setFocusCheYouList","getFocusCheYouList","profile_user_id","motor_id","img_url","fans_count","queryParams","link","getContentJumpUrl","makeCommunityUrl","allDefaultTab","sort","allDefaultSort","page","tabSort","realPage","allCommunityLink","zt","anchorId","seoDefaultTab","Item","onChange","Tag","batchedUpdates","rootMargin","root","itemCount","renderMoreWrapper","renderMoreButton","listTag","itemTag","moreIndexes","setMoreIndexes","moreIndexesRef","isPauseRef","handleTipShow","handleTipClose","isActiveInMore","ListTag","Array","from","i","some","a","b","handleChange","isCover","arrowVisible","close","isInMore","onTipClose","calcMaxPage","total","pageSize","Math","floor","currentPage","pagerCount","showJump","renderLink","onJump","onNextPrevClick","realCurPage","maxPage","curPagerCount","min","startPage","half","max","renderItem","key","enabled","minWidth","onKeyDown","keyCode","speed","onSlideChange","isClient","setIsClient","realCols","setRealCols","realRows","setRealRows","responsiveTypes","grids","setGrids","visited","setVisited","activeIndexRef","maxOffset","setMaxOffset","needTransition","setNeedTransition","computedResponsive","screen","screens","lastCols","ceil","row","col","makeGrids","handlePrev","prevState","handleNext","disableClass","counts","WrapTag","InnerTag","transform","indexes","hidden","isHidden","Boolean","isBlock","padding","BubbleNav","onActivate","items","active","renderItems","TextArea","max_words","isFocused","setFocused","evt","onFocus","onBlur","maxLength","delete_icon","delete_icon_hover","ControllerCard","showChildren","showDelete","onDeleteAll","delete_red_icon","upload_icon","ImageUploader","onDeleteItem","handleChooseImg","eve","files","handleDrop","dataTransfer","handleInputClick","img","backgroundImage","accept","multiple","onDragStart","onDragEnter","onDragOver","onDrop","VideoUploader","videoFile","onConfirmUpload","saved","errMsg","inputRef","handleChooseVideo","handleReUpload","click","getKey","activeNow","filter","error","brand_id","offset","stringify","hits","CommunitySelector","onCommunityTypeChange","onBrandChange","onCommunityChange","communityValue","states","brandList","carFansOptions","form","brandInputValue","setBrandInputValue","communityInputValue","setCommunityInputValue","brand_value","the_brand","find","info","brand_name","bid","brandOptions","renderBrands","option","join","communityOptions","renderCommunities","Autocomplete","disableClearable","options","getOptionLabel","renderOption","renderInput","TextField","variant","inputValue","onInputChange","clock","hours","minutes","seconds","TimeColumn","collection","reverse","onSelect","filtered","collectionRef","activeLi","querySelector","scrollIntoView","TimePicker","momentIsSelected","hour","setHour","minute","setMinute","second","setSecond","fakeInputRef","setOpen","handleSelect","handleFocus","handleContainerBlur","handleContainerFocus","blur","handleIconClick","filteredHours","setFilteredHours","filteredMinutes","setFilteredMinutes","filteredSeconds","setFilteredSeconds","tenMinLater","moment","laterHour","laterMin","laterSec","date","tabIndex","format","node","weekdays","weekdaysShort","weekdaysMin","week","dow","calendar_icon","LocalizedUtils","MomentUtils","DatetimeSelector","onTimeChange","onDateChange","isOpen","setIsOpen","M","libInstance","utils","locale","m","inputVariant","disableToolbar","disablePast","allowKeyboardControl","emptyLabel","orientation","keyboardIcon","KeyboardButtonProps","PopoverProps","disableRestoreFocus","InputProps","TopicSelector","chooseTopic","topicState","topicList","loaded","debounce","keyword","setState","limit","support_type","_","Date","now","cache","CacheStoreContext","setStorage","getStorage","clearStorage","_setStorage","setSaving","set","get","del","album_icon","video_icon","community_icon","topic_icon","timer_icon","checked_icon","unchecked_icon","supportedSortedSwitches","Controller","switches","buttonDisabled","setQASwitch","publishing","activeSwitch","setActiveSwitch","fileList","setFileList","setImgList","setVideoFile","videoInfo","setVideoInfo","videoLoading","setVideoLoading","videoSaved","setVideoSaved","errorMsg","setErrorMsg","communityTypeRef","initRef","communityStates","setCommunityStates","setBrandList","setCarFansOptions","topic","setTopic","checked","setChecked","setMomentSelected","selectedDate","setSelectedDate","selectedTime","setSelectedTime","setTopicState","useCache","globalState","getBrandInfo","getCarFansOptions","savedVideoFile","savedVideoInfo","storedCommunityStates","storedTopic","readers","file","Promise","resolve","reject","fileReader","FileReader","readAsDataURL","onload","onerror","all","selectedMoment","month","day","storedMoment","fetchResult","handleCheckChange","handleImgChange","fileArray","uploadImgList","resList","getImageUrl","uri","resUrlMap","newFileList","main_url","handleDeleteItem","handleDeleteAll","handleVideoChange","handleConfirmUpload","stsToken","CurrentTime","start_time","ExpiredTime","end_time","SessionToken","auth_token","AccessKeyID","access_key","SecretAccessKey","sec_key","AccessKeyId","BytedUploader","default","bytedUploader","appId","videoConfig","spaceName","processAction","SnapshotTime","SkipBlackDetect","fileKey","addFile","start","on","infor","uploadResult","VideoMeta","PosterUri","parseInt","Duration","video_info","video_id","Vid","Wu","Height","thumb_uri","video_duration","handleBrandChange","pre","handleCommunityTypeChange","handleCommunityCancel","handleCommunityConfirm","handleCommunityChange","handleDateChange","handleTimeChange","handleTimeCancel","handleTimeConfirm","handleChooseTopic","handleTopicInputChange","shownComponents","component","htmlFor","imgs","video","async_to_toutiao","community","isTimer","go_to_detail_icon","nativeEvent","stopImmediatePropagation","LongArticleNavItem","Publisher","tabs","setActiveNow","setContent","saving","setButtonDisabled","setPublishing","clearLastStorage","handleActiveChange","handleTextAreaChange","slicedValue","qaSwitch","qaSwitches","getSwitches","getPlaceHolder","group_type","sendTeaCommEvent","submit_status","act_id","sync_to_toutiao","image_urls","source_from","source_v2","question","motor_type","task_publish_time","unix","DELAY_PUBLISH_PICTURE_API","PUBLISH_PICTURE_API","video_type","thumb_source","motor_source","DELAY_PUBLISH_VIDEO_API","PUBLISH_VIDEO_API","err_no","error_show","err_tips","item_id_str","gid_str","SwiperButton2","clkTeaParams","data-log-click","styleModule","icon_triangle_right","icon_triangle_left","SwiperCore","Navigation","ImageCandidates","isAdjacent","abs","indexNow","setIndexNow","swiper","setSwiper","loop","simulateTouch","watchOverflow","onSwiper","realIndex","initialSlide","objectFit","idx","slideTo","slideToLoop","PREFIX_ARTICLE","PREFIX_KOUBEI","PREFIX_UGC_ARTICLE","ARTICLE_CONTENT_TYPE","0","jumpPrefix","2","3","4","6","7","8","9","10","12","13","14","DELETE_FEED_API","DELETE_VIDEO_API","emojiResourceList","image","emojiOrigin","string","reUnescapedHtml","reHasUnescapedHtml","RegExp","test","chr","emojiPrivateRegex","emojiRegex","filterEmoji","canUseWebp","elem","getContext","toDataURL","indexOf","millisecondTimestamp","ONE_MINUTE","ONE_HOUR","nowTimestamp","getTime","fakeDate","getFullYear","getMonth","getDate","delta","_hm","fixNumber","getHours","getMinutes","setDate","num","secToMin","sec","gidStr","uploader","getUploader","MotorUploader","JSON","parse","cookie","user_data","imageHost","region","uploadImage","Uri","ImageWidth","ImageHeight","ImageFormat","ImageSize","allSettled","uploadImg","imgUris","img_url_map","reportUser","reportTypes","reportUserId","web_id","Cookies","formData","FormData","err_code","reported_obj_id","reported_obj_type","report_type","author_id","device_id","app_id","logger","FollowBtn","isFollow","follow","ContentRelationSeries","uriKey","brandId","cutPrice","hasPrice","hasCutPrice","hasTest","carIds","communityCount","hasUsedCar","usedCarPrice","usedCarCount","linkSource","None","commonParams","car_series_id","car_series_name","data-image","extraParams","contains","data-click","data-params","button_name","link_source","head_right_tab","eventMap","series","config","eval","usedCar","dealer","relationSeriesTeaEvent","event_id","module_id","Video","getUniqueRelatedSeries","carInfo","sequenceMap","Map","next","sequence","last","pop","delete","getRelatedSeriesComponent","clue","dealer_low_price","price_reduction","has_dealer_price","series_pic_count","has_eval","online_car_ids","dcd_score","car_friend_count_en","has_sh_info","sku_count","sh_min_price","ls","refreshRelationSeries","article","relatedSeries","motor_material_car_info","relationSeriesEvent","ReactDOM","handleContent","relatedCarInfo","injectedContent","relatedSeriesComponent","injectStr","ReactDOMServer","exec","injectRelatedSeries","re","replacer","match","remaining","rewritten","Content","isVideo","collect_curStatus","digg_curStatus","collectUpdate","diggUpdate","router","useRouter","currentClue","page_pgc_article_detail","ZT","LS","page_feed_article_mix","getPageEnterId","asPath","page_id","cityName","useCityName","allowReloadRef","renderContent","image_uri","newContent","querySelectorAll","imgELe","section","onTagAttr","fluid","getUserInfo","getArticleDetail","city_name","articleRef","parentRef","handlers","eventHandler","getAttribute","elements","addRelationSeriesListeners","media_user","to_user_id","avatar_url","screen_name","publish_time","user_action","is_follow","renderHeader","renderArticle","watch_count_en","article_type","hudong_position","content_type","operation_type","obj_text","renderBottom","getRelatedSeries","rawRes","fontStyleString","asgwFontLoader","toStyleString","getRecommendSeries","encodeURIComponent","getRelatedRecommend","query_type","query_list","Cookie","assign","fetchVideos","behot_time","category","concern_id","device_platform","channel","tt_from","motor_feed_extra_params","new_feed","series_page_sort","sub_category","impression_info","max_behot_time","getRecommendVideoList","cursor","pagges","duplicate","hasMore","has_more","paging","last_cursor","prefix","wrapper","MoreButton","activeColor","getTopicHot","sortTypeList","seoTabs","serverTabs","tabNames","seoServerMap","nameSeoMap","seoNameMap","getServerTypeBySeo","getSeoTypeByName","getTabNameBySeo","emptyImg","teaParams","displayCommunity","shareWithZT","article_sub_type","selected_level","comment_data","latest_comment_time","create_time","display_time","user_digg","user_bury","is_collect","activity_info","isAsk","isKoubei","profile_info","medal_list","user_description_list","auth_v_type","motor_auth_show_info","video_detail_info","cover_url","isLowContent","substrSingleByte","link_info","link_info_id","link_info_title","link_info_ui_style","ui_style","link_info_name","link_info_image_url","image_url","link_info_article_type","ugc_question_info","ugc_question_info_status","ugc_question_info_status_display","firstComment","hasAnswer","textLinkTitle","makeArticleLinkWrapper","isPinglun","hasTitle","koubeiLink","ugcDetailLink","mergedTeaParams","activity_id_str","activity_name","desc_content","icon_url","empathy","upgrade_time","anyLink","label_url","user_info","auth_info","community_info","motor_id_str","dongchefen","cheyouHead","cheyouSeriesReviewCard","currentTab","joined_days","isJoining","handleJoinClick","user_amount","certified_owner_count","wenda_count","kou_bei_count","community_type","background_url","master_avatar","avatar_user_id_str","avatar_user_name","sub_tab","getKeyByValue","user_avatar_list","lineHeight","backgroundColor","review_people_count","score_description","current_sort","sort_list","tab_name","isShowList","setIsShowList","onMouseEnter","onMouseLeave","chi_name","eng_name","data-name","more_tab_list","currentMoreTab","handleMoreTabClick","activeTab","bg","TopLabel","announcements","announcement_list","cheyou_list","dongche_score_bg","review","interiors_score","configuration_score","space_score","appearance_score","comfort_score","control_score","power_score","bgUrl","series_review_user_avatar_list","marginLeft","rank_info","rank","rank_type","rank_rate_info","IconHotTalk","cheyouHotCard","koubeiarr","hotArr","question_info","user_id_str","total_count","keywords","cheyouHeadCache","cheyouSeriesReviewCardCache","cheYouHotCardCache","topicHotCache","Community","cheyouList","cheyouHeadCacheKey","cheyouSeriesReviewCardCacheKey","cheYouHotCardCacheKey","topicHotCacheKey","tab_list","tab_info","tabMapping","koubeiItem","have_koubei","wenda_tab_info","qa_arr","setJoining","joinedDays","setJoinedDays","currentSort","stayParms","setStayPageBizParams","parms","setEnterPageBizParams","sendTeaEnterEvent","isConfirmRef","car_id","car_id_type","handlePublishRef","removeItem","handlePublishClick","curTDK","tdk","announcementList","isSpider","SpiderContext","media","isFixed","headerHeight","isActive","dataset","handleTabClick","paddingRight","header","curPage","getQuery","topic_id","getInitialProps","series_or_motor_id_head","series_or_motor_id_series","series_or_motor_id_hot","series_or_motor_id","cheYouHotCard","getCheyouHead","getCheyouSeriesReviewCard","getCheYouList","sort_type","getCheYouHotCard","getAnnouncements","getInnerLinkList","getOuterLinkList","_pageType","innerList","outerList","getCheyouList","targetValue","entries","halfAngleSymbolUnicode","allAngleSymbolUnicode","allSymbol","noBracketAllSymbol","removeSplitSymbol","str","hexToString","val","arr","fromCharCode","Title","this","replaceAll","replaceBookNameSymbol","fullSymbolNum","charCodeAt","halfSymbol","substring","holdArr","currentIndex","halfSymbolNum","fullSymbo","regArr","replaceString","reg","leftSymbol","rightSymbol","stack","hasLeftSymbol","removeEmoji","temp","trim","isDoubleChar","char","charLen","strIndex","curCharLen","curChar","removeLast","isLong","isWenda","userName","motor_profile_info","motor_car_info","pageDesc","car_view","buy_car_info","car_name","year_id","hasCarInfo","carInfoStr","motorTitle","motor_title","threadTitle","thread_title","articleTitle","articleContent","tempTitle","len","splitSymbolRemovedName","splitSymbolRemovedCommunityName","replacedTitle","deleteUnnecessarySpace","deleteNearSymbolSpace","replaceEndSymbolWithSpace","deleteBracketsData","replaceBrackets","replaceSingleBracket","replaceMoreAndMore","replaceAllAnglePunctuation","replaceHalfAnglePunctuation","h1","answerTdk","answer","answerContent","top28","questionAuthor","answerAuthor","module","exports"],"mappings":"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","file":"static/chunks/8576-10425fb84c2a70f78236.js","sourcesContent":["/* 当前位置路径 */\nimport React from 'react'\nimport classnames from 'classnames'\nimport Link from 'next/link'\nimport styles from './index.module.scss'\n\nimport getLinkHref from 'lib/get-link-href'\n\ninterface IProps {\n /* 当前页面路径 */\n path: {\n [prop: string]: string\n }[]\n hideLine?: boolean\n style?: React.CSSProperties\n className?: string\n handleCrumbClick?: (path: { [prop: string]: string }) => void\n}\n\nexport default function Breadcrumb({\n path,\n hideLine = false,\n style,\n className,\n handleCrumbClick,\n}: IProps) {\n return (\n
\n
\n 当前位置:\n {path.map(\n (\n text: {\n [prop: string]: string\n },\n index: number\n ) => (\n \n {text.href && text.as ? (\n \n \n typeof handleCrumbClick === 'function' &&\n handleCrumbClick(text)\n }\n >\n {/*{text.src && (\n \n )}*/}\n {text.name}\n \n \n ) : (\n text.name\n )}\n \n )\n )}\n
\n
\n )\n}\n","import React from 'react'\n\nconst close_icon = require('static/close-icon.png')\nconst close_icon_hover = require('static/close-icon-hover.png')\n\nexport interface ICloseIconProps {\n onClick: () => void\n}\n\nexport default function CloseIcon({ onClick }: ICloseIconProps) {\n return (\n \n \n \n )\n}\n","import React, {\n ReactNode,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from 'react'\nimport Portal from 'Components/portal'\nimport classNames from 'classnames'\nimport { stopPropagation } from 'Components/new/community-card/interact'\nimport { unstable_batchedUpdates } from 'react-dom'\nimport style from './dialog.module.scss'\n\nconst modalStack: {\n id: number\n zIndex: number\n}[] = []\n\nlet modalDom: HTMLDivElement | null\nlet modalId = 0\n\nconst getModal = () => {\n if (!modalDom) {\n modalDom = document.createElement('div')\n modalDom.className = `${style['dcd-modal']}`\n document.body.appendChild(modalDom)\n }\n return modalDom\n}\n\ninterface IModalProp {\n visible?: boolean\n}\n\nfunction useModal(props: IModalProp) {\n const { visible } = props\n const zIndexRef = useRef(\n modalStack[modalStack.length - 1]?.zIndex + 2 || 10001\n )\n\n useEffect(() => {\n if (!visible) return\n const _modalDom = getModal()\n _modalDom.style.zIndex = String(zIndexRef.current)\n const id = modalId++\n modalStack.push({ id, zIndex: zIndexRef.current })\n\n document.body.style.overflow = 'hidden'\n\n return () => {\n const modalIndex = modalStack.findIndex((d) => d.id === id)\n if (modalIndex > -1) {\n modalStack.splice(modalIndex, 1)\n }\n if (modalStack.length) {\n _modalDom.style.zIndex = String(\n modalStack[modalStack.length - 1].zIndex\n )\n } else {\n // _modalDom.onanimationend = () => {\n // (_modalDom.parentNode || _modalDom.parentElement)!.removeChild(_modalDom)\n // modalDom = null\n // document.body.style.overflow = ''\n // }\n setTimeout(() => {\n ;(_modalDom.parentNode || _modalDom.parentElement)?.removeChild(\n _modalDom\n )\n modalDom = null\n document.body.style.overflow = ''\n }, 300)\n _modalDom.classList.add('leave')\n }\n }\n }, [visible])\n\n useEffect(() => {\n return () => {\n if (!modalStack.length) {\n // eslint-disable-next-line no-unused-expressions\n modalDom?.parentNode?.removeChild(modalDom)\n modalDom = null\n }\n }\n }, [])\n\n return zIndexRef.current + 1\n}\n\nexport interface IDialogProps {\n className?: string\n headerClass?: string\n titleClass?: string\n headerVisible?: boolean\n visible?: boolean\n onClose?(): void\n closeText?: string\n title?: ReactNode\n destroyOnClose?: boolean\n onCloseBtnClick?(): void\n}\n\nconst Dialog: React.FC = ({\n className,\n headerClass,\n titleClass,\n headerVisible = true,\n visible,\n onClose,\n closeText,\n title,\n children,\n destroyOnClose,\n onCloseBtnClick,\n}) => {\n const [show, setShow] = useState(visible)\n const [isInit, setIsInit] = useState(!visible)\n const [isLeave, setIsLeave] = useState(false)\n\n useEffect(() => {\n unstable_batchedUpdates(() => {\n if (visible !== show) {\n setIsInit(false)\n if (visible) {\n setShow(visible)\n } else {\n setIsLeave(true)\n }\n }\n })\n }, [visible, show])\n\n const handleClose = useCallback(() => {\n setIsLeave(true)\n }, [])\n\n const handleAnimationEnd = useCallback(() => {\n if (isLeave) {\n if (onClose) onClose()\n setShow(false)\n setIsLeave(false)\n }\n }, [isLeave, onClose])\n\n const handleClickContent = stopPropagation()\n const handleMouseOver = stopPropagation()\n\n const zIndex = useModal({ visible: show })\n\n return isInit ? null : (\n \n document.body}>\n \n \n {headerVisible ? (\n
\n \n {title || ''}\n

\n {\n // eslint-disable-next-line no-unused-expressions\n onCloseBtnClick?.()\n handleClose()\n }}\n >\n \n {closeText}\n \n
\n ) : null}\n {!show && destroyOnClose ? null : children}\n \n \n
\n
\n )\n}\n\nexport default Dialog\n","import { useCallback, useRef, useState } from 'react'\nimport {\n getScrollTop,\n scrollToWithStickyObserve,\n} from 'Components/hooks/use-scroll-sticky-observe'\n\n// 展开收起场景在收起时正确设置滚动位置,避免内容塌陷\nfunction useExpandAutoScroll() {\n const [expanded, setExpanded] = useState(false)\n const heightRef = useRef(0)\n const rootRef = useRef(null)\n\n const toggleExpand = useCallback(() => {\n setExpanded((prev) => {\n if (prev) {\n const { top, height } = rootRef.current!.getBoundingClientRect()\n if (top < 0) {\n scrollToWithStickyObserve(getScrollTop() + heightRef.current - height)\n }\n } else {\n heightRef.current = rootRef.current!.getBoundingClientRect().height\n }\n return !prev\n })\n }, [])\n\n return {\n expanded,\n setExpanded,\n toggleExpand,\n rootRef,\n }\n}\n\nexport default useExpandAutoScroll\n","import fetch from 'lib/decorated-fetch'\nimport getUrl from 'lib/url'\nimport serializeObject from '@arsenal/arsenal/modules/serializeObject'\nimport useOptimisticStatus, {\n useStatusCountUpdater,\n} from 'Components/hooks/use-optimistic-status'\nimport { useCallback, useMemo } from 'react'\nimport useLoginCheckCallback from 'Components/hooks/use-login-check-callback'\n\nexport interface ICollectParams {\n group_id?: string\n}\n\nfunction collect(collectParams: ICollectParams) {\n return fetch('/motor/pc/ugc/collect/user_collect/v2', {\n method: 'POST',\n headers: {\n 'tt-anti-token': window.localStorage.getItem('tt-anti-token') || '',\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n credentials: 'include',\n body: serializeObject(collectParams),\n }).then((res) => {\n return res?.data?.result\n })\n}\n\nfunction unCollect(collectParams: ICollectParams) {\n return fetch('/motor/pc/ugc/collect/user_uncollect/v2', {\n method: 'POST',\n headers: {\n 'tt-anti-token': window.localStorage.getItem('tt-anti-token') || '',\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n credentials: 'include',\n body: serializeObject(collectParams),\n }).then((res) => {\n return res?.data?.result\n })\n}\n\nexport interface IToggleCollectParams {\n id?: string\n collected?: boolean\n collectCount?: number\n}\n\nfunction useToggleCollect({\n id,\n collected,\n collectCount,\n}: IToggleCollectParams) {\n const { begin, rollback, curStatus, curCount } = useStatusCountUpdater({\n status: collected,\n count: collectCount,\n })\n\n return {\n update: useOptimisticStatus<[boolean, number]>({\n execute: useLoginCheckCallback(\n useCallback(\n ([curStatus]) => {\n return (curStatus ? collect : unCollect)({\n group_id: id,\n })\n },\n [id]\n ),\n useMemo(\n () => ({\n enter_method: 'favorite',\n }),\n []\n )\n ),\n begin,\n rollback,\n }),\n curStatus,\n curCount,\n }\n}\n\nexport default useToggleCollect\n","import fetch from 'lib/decorated-fetch'\nimport serializeObject from '@arsenal/arsenal/modules/serializeObject'\nimport useOptimisticStatus, {\n useStatusCountUpdater,\n} from 'Components/hooks/use-optimistic-status'\nimport { useCallback, useContext, useEffect, useMemo, useRef } from 'react'\nimport { GlobalStoreContext } from 'Components/store'\nimport useLoginCheckCallback from 'Components/hooks/use-login-check-callback'\nimport { aid, appName } from 'Constants/index'\nimport { DiggBuryContext } from 'Components/new/community-card/interact'\nimport { logger, metrics } from 'lib/slardar-utils'\n\nexport interface ICollectParams {\n group_id?: string\n user_id?: string\n}\n\nexport type DiggType =\n | 'digg_thread'\n | 'digg_ugc_video'\n | 'digg_pgc_article'\n | 'digg_pgc_video'\n | 'digg_car_review'\n | 'digg_essay'\n\nexport interface IToggleDiggParams {\n type?: 'community' | 'comment' | 'reply' // 帖子 / 评论 / 回复\n id?: string // 主id\n groupId?: string // 帖子id\n commentId?: string // 评论id\n hasDigg?: boolean // 是否已点赞\n diggCount?: number // 点赞数\n cellStyle?: number // 帖子cellStyle,hooks内部根据cellStyle会自动映射点赞类型\n articleType?: number // 文章articleType,hooks内部根据articleType会自动映射点赞类型\n}\n\nexport function makeMap(raw: [string, T][]) {\n return raw.reduce((map, [cellStyles, diggType]) => {\n cellStyles.split(',').forEach((cellStyle) => {\n map[cellStyle] = diggType\n })\n return map\n }, {} as Record)\n}\n\n// cell_style 与点赞类型的映射关系\nexport const cellStyleDiggTypeMap = makeMap([\n [\n '5309,1155,5619,5620,5621,5622,5623,8999,8998,8006,8005,8004,8007,8001,8003,8002,2316,2314,2362,2318,2328,2341',\n 'digg_thread',\n ],\n ['2363,2317,2307,2313', 'digg_ugc_video'],\n ['2000,2001,2002,2003,2008,2050,2051', 'digg_pgc_article'],\n ['2101,2100,2052,2053', 'digg_pgc_video'],\n ['2061,2062', 'digg_car_review'],\n ['2330,2332,2364', 'digg_essay'],\n])\n\n// articleType:\n// 0,未知,老口碑;\n// 1,pgc 图文;\n// 2,pgc 视频(不含图文嵌视频);\n// 3,pgc 图文嵌视频;\n// 4,pgc 图集(当前合并到图文了);\n// 5,ugc 文字;\n// 6,ugc 小视频;\n// 7,ugc 图文;\n// 8,ugc 问答;\n// 9,UGC 长贴;\n// 10,ugc 投票;\n// 11,ugc 转发;\n// 12,ugc 长贴口碑;\n// 13,ugc 口碑\n// 14,懂车分\nexport const articleTypeDiggTypeMap = makeMap([\n ['1,3,4', 'digg_pgc_article'],\n ['2', 'digg_pgc_video'],\n ['6', 'digg_ugc_video'],\n ['14', 'digg_car_review'],\n ['9', 'digg_essay'],\n ['5,7,8,10,11,12,13', 'digg_thread'],\n])\n\nfunction useToggleDigg({\n id,\n type = 'community',\n hasDigg,\n diggCount,\n groupId,\n commentId,\n cellStyle,\n articleType,\n}: IToggleDiggParams) {\n const { state } = useContext(GlobalStoreContext)\n const userId = state?.userData?.user_id\n\n const { begin, rollback, curStatus, curCount } = useStatusCountUpdater({\n status: hasDigg,\n count: diggCount,\n })\n\n const { actionsRef } = useContext(DiggBuryContext)\n\n useEffect(() => {\n if (actionsRef) {\n actionsRef.current.diggBegin = begin\n }\n }, [actionsRef, begin])\n\n useEffect(() => {\n if (actionsRef) {\n actionsRef.current.diggRollback = rollback\n }\n }, [actionsRef, rollback])\n\n useEffect(() => {\n if (actionsRef) {\n actionsRef.current.diggStatus = curStatus\n }\n }, [actionsRef, curStatus])\n\n const buryPrevRef =\n useRef<\n ReturnType['begin']>['prev']\n >()\n\n return {\n update: useOptimisticStatus<[boolean, number]>({\n execute: useLoginCheckCallback(\n useCallback(\n ([curStatus]) => {\n // 评论点赞\n if (type === 'comment') {\n return fetch(\n '/motor/proxy/comment_action/browser/2/data/v2/comment_action/',\n {\n method: 'POST',\n headers: {\n 'tt-anti-token':\n window.localStorage.getItem('tt-anti-token') || '',\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n body: serializeObject({\n aid,\n app_name: appName,\n comment_id: id,\n item_id: groupId, //文章id\n group_id: groupId, //文章id\n action: curStatus ? 'digg' : 'cancel_digg',\n }),\n }\n ).then((res) => res?.errno === 0)\n } else if (type === 'reply') {\n return fetch(\n '/motor/proxy/digg_reply/browser/2/comment/v2/digg_reply/',\n {\n method: 'POST',\n headers: {\n 'tt-anti-token':\n window.localStorage.getItem('tt-anti-token') || '',\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n body: serializeObject({\n aid,\n app_name: appName,\n id: commentId, // 评论id\n reply_id: id, // 回复id\n item_id: groupId,\n group_id: groupId,\n action: curStatus ? 'digg' : 'cancel_digg',\n }),\n }\n ).then((res) => res?.errno === 0)\n } else {\n // 帖子点赞\n return fetch(`/motor/community/digg_like`, {\n method: 'POST',\n headers: {\n 'tt-anti-token':\n window.localStorage.getItem('tt-anti-token') || '',\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n body: serializeObject({\n aid,\n // user_id: userId,\n thread_id: id,\n group_id: id,\n digg_action: curStatus ? 'digg' : 'cancel_digg',\n like_type:\n articleTypeDiggTypeMap[articleType!] ||\n cellStyleDiggTypeMap[cellStyle!] ||\n 'digg_thread',\n }),\n }).then((res) => {\n if (res?.status !== 0) {\n metrics.counter('digg_like.fail')\n }\n return res?.status === 0\n })\n }\n },\n [userId, type, id, groupId, commentId, cellStyle]\n ),\n useMemo(\n () => ({\n enter_method: 'like',\n }),\n []\n )\n ),\n begin: useCallback(() => {\n if (actionsRef) {\n const { buryBegin, buryStatus } = actionsRef.current\n if (buryBegin && !curStatus && !buryStatus !== !curStatus) {\n buryPrevRef.current = buryBegin().prev\n }\n }\n return begin()\n }, [actionsRef, curStatus, begin]),\n rollback: useCallback(\n ([curStatus, curCount]) => {\n if (actionsRef) {\n const { buryRollback, buryStatus } = actionsRef.current\n if (buryRollback && !curStatus && !buryStatus !== !curStatus) {\n buryRollback(buryPrevRef.current)\n }\n }\n return rollback([curStatus, curCount])\n },\n [actionsRef, rollback]\n ),\n }),\n curStatus,\n curCount,\n }\n}\n\nexport default useToggleDigg\n","import { useEffect, useRef, useState } from 'react'\n\nexport interface IViewObserveConfig {\n getContainer: () => T | undefined | null\n watchVisible?: boolean\n}\n\nfunction useViewObserve(\n callback: () => void,\n { getContainer, watchVisible = true }: IViewObserveConfig\n) {\n const [container, setContainer] = useState()\n\n useEffect(() => {\n setContainer(getContainer())\n }, [getContainer])\n\n const isIntersectingRef = useRef(false)\n\n const callbackRef = useRef<() => void>()\n\n useEffect(() => {\n callbackRef.current = () => {\n if (isIntersectingRef.current) {\n callback()\n }\n }\n }, [callback])\n\n // 修改内容\n const mutationObserverRef = useRef()\n useEffect(() => {\n mutationObserverRef.current = new MutationObserver((mutations) => {\n if (\n mutations.every(\n (d) => d.target === container && d.type === 'attributes'\n )\n ) {\n return\n }\n callbackRef.current!()\n })\n }, [])\n useEffect(() => {\n if (!container) {\n return\n }\n const observe = mutationObserverRef.current!\n observe.observe(container, {\n attributes: true,\n childList: true,\n subtree: true,\n characterData: true,\n })\n return () => {\n observe.disconnect()\n }\n }, [container])\n\n // 缩放屏幕\n useEffect(() => {\n const handleResize = () => {\n callbackRef.current!()\n }\n window.addEventListener('resize', handleResize)\n return () => {\n window.removeEventListener('resize', handleResize)\n }\n }, [])\n\n // 显示隐藏\n const intersectionObserverRef = useRef()\n useEffect(() => {\n if (!watchVisible) {\n return\n }\n intersectionObserverRef.current = new IntersectionObserver((changes) => {\n changes.forEach((change) => {\n if (change.isIntersecting) {\n isIntersectingRef.current = true\n callbackRef.current!()\n }\n })\n })\n }, [watchVisible])\n useEffect(() => {\n if (!container || !watchVisible) {\n return\n }\n const observe = intersectionObserverRef.current!\n observe.observe(container)\n return () => {\n observe.disconnect()\n }\n }, [container, watchVisible])\n}\n\nexport default useViewObserve\n","import * as React from 'react'\nimport Link from 'next/link'\nimport serializeObject from '@arsenal/arsenal/modules/serializeObject'\nimport classNames from 'classnames'\nimport styles from './common-link.module.scss'\nexport enum ECommonLinkType {\n SERIES,\n SCORE,\n DEALER,\n CONFIG,\n COMMUNITY,\n COMMUNITY_QA,\n USED_CAR,\n BRAND,\n IMAGE_LIST,\n WG_IMAGE = 'wg',\n NS_IMAGE = 'ns',\n KJ_IMAGE = 'kj',\n TEST = 'test',\n}\nexport interface ICommonLinkProps {\n id?: number | string\n href?: string\n className?: string\n style?: React.CSSProperties\n target?: '_blank' | '_self'\n children?: React.ReactNode\n type: ECommonLinkType\n rel?: string\n query?: Record\n title?: string\n disabled?: boolean\n onClick?(e: React.MouseEvent): void\n}\n\nconst NONE_HREF = undefined\nexport const createHref = ({\n id,\n type,\n query = {},\n}: Pick): string | undefined => {\n const suffix = Object.keys(query).length ? `?${serializeObject(query)}` : ''\n switch (type) {\n case ECommonLinkType.SERIES:\n return id ? `/auto/series/${id}${suffix}` : NONE_HREF\n case ECommonLinkType.SCORE:\n return id ? `/auto/series/score/${id}${suffix}` : NONE_HREF\n case ECommonLinkType.DEALER:\n return id ? `/dealer/${id}${suffix}` : NONE_HREF\n case ECommonLinkType.CONFIG:\n return id ? `/auto/params-carIds-x-${id}${suffix}` : NONE_HREF\n case ECommonLinkType.COMMUNITY:\n return id ? `/community/${id}${suffix}` : NONE_HREF\n case ECommonLinkType.COMMUNITY_QA:\n return id ? `/community/${id}/wenda${suffix}` : NONE_HREF\n case ECommonLinkType.BRAND:\n return id\n ? `/auto/library/x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-${id}-x`\n : NONE_HREF\n case ECommonLinkType.IMAGE_LIST:\n return id ? `/auto/series/${id}/images-wg${suffix}` : NONE_HREF\n case ECommonLinkType.WG_IMAGE:\n case ECommonLinkType.NS_IMAGE:\n case ECommonLinkType.KJ_IMAGE:\n return id ? `/series-${id}/images/${type}-x-x-x` : NONE_HREF\n case ECommonLinkType.TEST:\n return id ? `/test/${id}` : NONE_HREF\n default:\n return NONE_HREF\n }\n}\nexport default function CommonLink({\n id,\n target = '_blank',\n className,\n style,\n children,\n type,\n href,\n rel,\n title,\n query,\n disabled,\n onClick,\n}: ICommonLinkProps) {\n // 根据不同类型,计算跳转链接。自定义链接优先级高于默认计算规则\n const computedHref = React.useMemo(() => {\n if (disabled) return NONE_HREF\n return href || createHref({ id, type, query })\n }, [id, type, href, query, disabled])\n\n // 链接禁用状态。自定义禁用状态优先级高于计算后无链接的禁用状态\n const computedDisabled = React.useMemo(() => {\n if (disabled !== undefined) return disabled\n return computedHref === NONE_HREF\n }, [computedHref, disabled])\n\n // 点击事件,禁用时不派发onClick\n const handleClick = (event: React.MouseEvent) => {\n event.stopPropagation()\n if (computedDisabled) {\n event.preventDefault()\n return\n }\n onClick?.(event)\n }\n const anchor = (\n \n {children}\n \n )\n // 原窗口跳转时,使用next link 包裹\n if (target === '_self' && computedHref) {\n return {anchor}\n }\n return anchor\n}\n","import React, { CSSProperties } from 'react'\nimport Avatar, {\n IProps as IAvatarProps,\n ugcUserLink,\n} from 'Components/author/avatar'\nimport xss from 'xss'\nimport { emoji } from 'Constants/emoji'\nimport noopWrapper, { Wrapper } from 'lib/noop-wrapper'\nimport classNames from 'classnames'\nimport { size14Class } from 'Components/new/community-card/text'\n\nexport interface IProps\n extends Partial<\n Pick<\n IAvatarProps,\n 'avatar' | 'userId' | 'userVerified' | 'verifyType' | 'username'\n >\n > {\n labelUrl?: string\n text?: string\n linkWrapper?: Wrapper\n className?: string\n style?: CSSProperties\n}\n\nconst Answer: React.FC = ({\n username,\n avatar,\n userId,\n userVerified,\n verifyType,\n labelUrl,\n text,\n linkWrapper = noopWrapper,\n className = 'tw-bg-common-white',\n style,\n}) => {\n return (\n \n \n
\n \n

\n {ugcUserLink({ userId })(username)}\n

\n
\n {linkWrapper(\n \n )}\n \n \n
\n )\n}\n\nexport default Answer\n","import React from 'react'\nimport Stars from 'Components/stars'\nimport FontSize10 from 'Components/font-size-10'\n\nconst yellow_star_little = require('static/yellow-star-little.png')\nconst black_star_little = require('static/black-star-little.png')\n\nexport interface IProps {\n year?: string\n carName?: string\n score?: number\n scoreText?: string\n}\n\nconst CarModel: React.FC = ({\n year,\n carName,\n score = 0,\n scoreText,\n}) => {\n return (year && carName) || score || scoreText ? (\n \n
\n {year && carName ? (\n

{`${year}款${carName}`}

\n ) : null}\n {score ? (\n \n \n {(score / 100 || 0).toFixed(2)}\n \n 分\n \n \n \n \n ) : null}\n {scoreText ? (\n “{scoreText}”\n ) : null}\n
\n \n
\n ) : null\n}\n\nexport default CarModel\n","import React, { CSSProperties } from 'react'\nimport classNames from 'classnames'\n\ninterface IProps {\n onClick?(): void\n className?: string\n style?: CSSProperties\n}\n\nconst CardWrapper: React.FC = ({\n children,\n onClick,\n style,\n className,\n}) => {\n return (\n \n \n {children}\n \n \n \n )\n}\n\nexport default CardWrapper\n","import React, { CSSProperties, ReactElement } from 'react'\nimport { Image, ImageZoom } from 'Components/view-image'\nimport { emoji } from 'Constants/emoji'\nimport xss from 'xss'\nimport classNames from 'classnames'\nimport noopWrapper, { Wrapper } from 'lib/noop-wrapper'\nimport { size14Class, size16Class } from 'Components/new/community-card/text'\n\nexport const questionEmpty = require('static/question-empty.png')\nexport const forwardEmpty = require('static/forward-empty.png')\n\nexport interface IProps {\n coverUrl?: string\n errorImg?: string\n username?: string\n title?: string\n uiStyle?: number\n linkWrapper?: Wrapper\n className?: string\n style?: CSSProperties\n}\n\nconst Forward: React.FC = ({\n coverUrl,\n errorImg,\n username,\n title,\n uiStyle,\n linkWrapper = noopWrapper,\n className = 'tw-bg-common-white',\n style,\n}) => {\n return linkWrapper(\n \n \n {coverUrl ? (\n
\n \n {uiStyle === 2 ? (\n \n \n \n ) : null}\n
\n ) : null}\n
\n \n {username ? (\n {username}:\n ) : null}\n \n

\n
\n \n \n
\n ) as ReactElement\n}\n\nexport default Forward\n","import React, { ReactNode, useCallback, useContext, useMemo } from 'react'\nimport Avatar, {\n IProps as IAvatarProps,\n ugcUserLink,\n} from 'Components/author/avatar'\nimport classNames from 'classnames'\nimport useToggleFollow from 'Components/hooks/use-toggle-follow'\nimport {\n preventDefault,\n stopPropagation,\n} from 'Components/new/community-card/interact'\nimport { GlobalStoreContext } from 'Components/store'\nimport ToolTip from 'Components/new/tool-tip'\nimport FontSize10 from 'Components/font-size-10'\nimport { size14Class } from 'Components/new/community-card/text'\nimport { IMedalProps, Medal } from 'Components/new/community-card/user-detail'\nimport { Image } from 'Components/view-image'\n\nexport const AuthLabel: React.FC = () => {\n return (\n \n 作者\n \n )\n}\n\nexport interface IProps {\n userId?: IAvatarProps['userId']\n avatar?: IAvatarProps['avatar']\n userVerified?: IAvatarProps['userVerified']\n verifyType?: IAvatarProps['verifyType']\n username?: string\n nameAppend?: ReactNode\n nameClassName?: string\n textTags?: string[] // 文字标签\n medals?: IMedalProps[] // 奖章\n medalsVisible?: boolean // 暂时控制个人页不显示徽章详情\n levelIcon?: string\n followed?: boolean\n followVisible?: boolean\n userDetail?: ReactNode\n className?: string\n onClickFollow?(curFollow: boolean): void\n onClickUser?(): void\n}\n\nconst Header: React.FC = ({\n avatar,\n userId,\n username,\n nameAppend,\n nameClassName,\n userVerified,\n verifyType,\n textTags,\n medals,\n medalsVisible = true,\n levelIcon,\n followed,\n followVisible = true,\n userDetail,\n className,\n onClickFollow,\n onClickUser,\n}) => {\n const { update: toggleFollow, curStatus: curFollow } = useToggleFollow({\n userId,\n followed,\n })\n const ugcUserLinkWrapper = ugcUserLink({ userId, username })\n\n const handleFollow = stopPropagation(\n preventDefault(\n useCallback(() => {\n if (onClickFollow) {\n onClickFollow(curFollow)\n }\n toggleFollow()\n }, [onClickFollow, toggleFollow, curFollow])\n )\n )\n\n const { state } = useContext(GlobalStoreContext)\n\n const curUserId = state.userData?.user_id\n\n const handleClickUser = stopPropagation(onClickUser)\n\n return userId ? (\n \n
\n
\n {ugcUserLinkWrapper(\n
\n \n \n \n
\n
\n \n {username}\n \n {nameAppend}\n \n

\n {medals?.map((item, index) => {\n return (\n \n : null}\n >\n \n \n \n )\n })}\n {levelIcon ? (\n \n ) : null}\n
\n {textTags?.length ? (\n
\n {textTags.map((item, index) => {\n return (\n \n {item}\n \n )\n })}\n
\n ) : null}\n
\n
\n )}\n
\n {!followVisible ||\n String(curUserId) === userId ||\n curUserId === userId ? null : (\n \n {curFollow ? null : (\n \n )}\n {curFollow ? '已关注' : '关注'}\n \n )}\n
\n
\n ) : null\n}\n\nexport default Header\n","import React, { useEffect, useMemo, useState } from 'react'\nimport { Image } from 'Components/view-image'\nimport noopWrapper, { Wrapper } from 'lib/noop-wrapper'\nimport useExpandAutoScroll from 'Components/hooks/use-expand-auto-scroll'\nimport ImageViewer from 'Components/ugc/imageViewer'\nimport classNames from 'classnames'\nimport { useResponsive } from 'Components/hooks/use-responsive'\n\nexport interface IImageItem {\n src?: string\n alt?: string\n}\n\ninterface IProps {\n imageList?: IImageItem[]\n max?: number\n linkWrapper?: Wrapper\n}\n\nconst ImageList: React.FC = ({\n imageList,\n linkWrapper = noopWrapper,\n}) => {\n const [moreCount, setMoreCount] = useState(0)\n\n const responsive = useResponsive()\n\n useEffect(() => {\n setMoreCount(imageList ? imageList.length - (responsive['2xl'] ? 6 : 5) : 0)\n }, [imageList, responsive])\n\n const { expanded, toggleExpand, rootRef } =\n useExpandAutoScroll()\n\n const [activeIndex, setActiveIndex] = useState(0)\n\n return imageList?.length ? (\n \n
\n {expanded ? (\n src || '') || []}\n activeIndex={activeIndex}\n onClick={toggleExpand}\n />\n ) : (\n
\n {imageList.map((item, index) => {\n return (\n = 5,\n '2xl:tw-block': index === 5,\n })}\n >\n {\n setActiveIndex(index)\n toggleExpand()\n }}\n />\n
\n )\n })}\n
\n )}\n \n \n
\n ) : null\n}\n\nexport default ImageList\n","import useOptimisticStatus, {\n useStatusCountUpdater,\n} from 'Components/hooks/use-optimistic-status'\nimport useLoginCheckCallback from 'Components/hooks/use-login-check-callback'\nimport { useCallback, useContext, useEffect, useMemo, useRef } from 'react'\nimport fetch from 'lib/decorated-fetch'\nimport serializeObject from '@arsenal/arsenal/modules/serializeObject'\nimport { DiggBuryContext } from 'Components/new/community-card/interact'\nimport { articleTypeDiggTypeMap } from 'Components/hooks/use-toggle-digg'\nimport { aid } from 'Constants/index'\n\nexport interface IToggleBuryParams {\n id?: string\n buried?: boolean\n buryCount?: number\n articleType?: number\n}\n\n// 反对\nfunction useToggleBury({\n id,\n buried,\n buryCount,\n articleType,\n}: IToggleBuryParams) {\n const { begin, rollback, curStatus, curCount } = useStatusCountUpdater({\n status: buried,\n count: buryCount,\n })\n\n const { actionsRef } = useContext(DiggBuryContext)\n\n useEffect(() => {\n if (actionsRef) {\n actionsRef.current.buryBegin = begin\n }\n }, [actionsRef, begin])\n\n useEffect(() => {\n if (actionsRef) {\n actionsRef.current.buryRollback = rollback\n }\n }, [actionsRef, rollback])\n\n useEffect(() => {\n if (actionsRef) {\n actionsRef.current.buryStatus = curStatus\n }\n }, [actionsRef, curStatus])\n\n const diggPrevRef =\n useRef<\n ReturnType['begin']>['prev']\n >()\n\n return {\n update: useOptimisticStatus<[boolean, number]>({\n execute: useLoginCheckCallback(\n useCallback(\n ([curStatus]) => {\n return fetch(`/motor/community/digg_like`, {\n method: 'POST',\n headers: {\n 'tt-anti-token':\n window.localStorage.getItem('tt-anti-token') || '',\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n body: serializeObject({\n aid,\n // user_id: userId,\n thread_id: id,\n group_id: id,\n digg_action: curStatus ? 'bury' : 'cancel_bury',\n like_type:\n articleTypeDiggTypeMap[articleType!] || 'digg_thread',\n }),\n }).then((res) => res?.status === 0)\n },\n [id]\n ),\n useMemo(\n () => ({\n enter_method: 'bury',\n }),\n []\n )\n ),\n begin: useCallback(() => {\n if (actionsRef) {\n const { diggBegin, diggStatus } = actionsRef.current\n if (diggBegin && !curStatus && !diggStatus !== !curStatus) {\n diggPrevRef.current = diggBegin().prev\n }\n }\n return begin()\n }, [curStatus, begin]),\n rollback: useCallback(\n ([curStatus, curCount]) => {\n if (actionsRef) {\n const { diggRollback, diggStatus } = actionsRef.current\n if (diggRollback && !curStatus && !diggStatus !== !curStatus) {\n diggRollback(diggPrevRef.current)\n }\n }\n return rollback([curStatus, curCount])\n },\n [rollback]\n ),\n }),\n curStatus,\n curCount,\n }\n}\n\nexport default useToggleBury\n","import React, {\n CSSProperties,\n MouseEventHandler,\n useCallback,\n useMemo,\n MouseEvent,\n ReactNode,\n useState,\n createContext,\n useRef,\n MutableRefObject,\n useContext,\n} from 'react'\nimport formatTime from 'lib/format-time'\nimport classNames from 'classnames'\nimport noopWrapper, { Wrapper } from 'lib/noop-wrapper'\nimport communityLink from 'Components/new/links/community-link'\nimport useToggleCollect, {\n IToggleCollectParams,\n} from 'Components/hooks/use-toggle-collect'\nimport useToggleDigg, {\n IToggleDiggParams,\n makeMap,\n} from 'Components/hooks/use-toggle-digg'\nimport formatNumber from '@arsenal/arsenal/modules/formatNumber'\nimport ToolTip, { IProps as ToolTipProps } from 'Components/new/tool-tip'\nimport ModalReport, { IReportData } from 'Components/modal-report'\nimport { IReportParams, report, reportUser } from 'lib/interaction'\nimport fetch from 'lib/decorated-fetch'\nimport getUrl from 'lib/url'\nimport serializeObject from '@arsenal/arsenal/modules/serializeObject'\nimport Toast from 'Components/toast-messager'\nimport Dialog from 'Components/dialog'\nimport Confirm from 'Components/new/confirm'\nimport useLoginCheckCallback from 'Components/hooks/use-login-check-callback'\nimport useToggleBury, {\n IToggleBuryParams,\n} from 'Components/hooks/use-toggle-bury'\nimport { useStatusCountUpdater } from 'Components/hooks/use-optimistic-status'\nimport { GlobalStoreContext } from 'Components/store'\nimport { unstable_batchedUpdates } from 'react-dom'\nimport { size14Class } from 'Components/new/community-card/text'\nimport dialogStyle from 'Components/dialog.module.scss'\n\nconst aid = 1839\nconst appName = 'auto_web_pc'\n\nfunction makeShareIcon({ isHover }: { isHover?: boolean }) {\n return (\n `${\n 'data:image/svg+xml;utf8,' +\n ' ` +\n ` ` +\n ` ` +\n ` ` +\n ` ` +\n ``\n )\n}\n\nexport const shareIcon = makeShareIcon({})\nexport const shareIconHover = makeShareIcon({ isHover: true })\n\nfunction makeReplyIcon({ isHover }: { isHover?: boolean }) {\n return (\n `${\n 'data:image/svg+xml;utf8,' +\n '' +\n ' ` +\n ``\n )\n}\n\nexport const replyIcon = makeReplyIcon({})\nexport const replyIconHover = makeReplyIcon({ isHover: true })\n\nfunction makeCollectNormalIcon({\n theme,\n isHover,\n}: {\n theme: 'light' | 'black'\n isHover?: boolean\n}) {\n const fill =\n theme === 'black' ? '%23c9cbd6' : isHover ? '%23e65800' : '%231F2129'\n return (\n `${\n 'data:image/svg+xml;utf8,' +\n '' +\n ' ' +\n ' ` +\n ` ` +\n ` ` +\n ` ` +\n ` ` +\n ` ` +\n ` ` +\n ``\n )\n}\n\nfunction makeCollectActiveIcon({ theme }: { theme: 'light' | 'black' }) {\n const border =\n theme === 'light'\n ? '' +\n '' +\n '' +\n ''\n : ''\n return (\n `${\n 'data:image/svg+xml;utf8,' +\n '' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' '\n }${border} ` +\n ` ` +\n ` ` +\n ``\n )\n}\n\nfunction makeDiggNormalIcon({\n type,\n isHover,\n}: {\n type: 'digg' | 'bury'\n isHover?: boolean\n}) {\n return (\n `data:image/svg+xml;utf8,` +\n ` ` +\n ` ` +\n ` ` +\n ` ` +\n ` ` +\n ` ` +\n ` ` +\n ` ` +\n ``\n )\n}\n\nfunction makeDiggActiveIcon({ type }: { type: 'digg' | 'bury' }) {\n return (\n `data:image/svg+xml;utf8,` +\n ` ` +\n ` ` +\n ` ` +\n ` ` +\n ` ` +\n ` ` +\n ` ` +\n ` ` +\n ` ` +\n ` ` +\n ` ` +\n ` ` +\n ` ` +\n ` ` +\n ``\n )\n}\n\nexport const collectNormalIcon = makeCollectNormalIcon({ theme: 'light' })\nexport const collectNormalIconHover = makeCollectNormalIcon({\n theme: 'light',\n isHover: true,\n})\nexport const collectActiveIcon = makeCollectActiveIcon({ theme: 'light' })\n\nexport const collectNormalIconBlack = makeCollectNormalIcon({ theme: 'black' })\nexport const collectActiveIconBlack = makeCollectActiveIcon({ theme: 'black' })\n\nexport const diggNormalIcon = makeDiggNormalIcon({ type: 'digg' })\nexport const diggNormalIconHover = makeDiggNormalIcon({\n type: 'digg',\n isHover: true,\n})\nexport const diggActiveIcon = makeDiggActiveIcon({ type: 'digg' })\n\nexport const buryNormalIcon = makeDiggNormalIcon({ type: 'bury' })\nexport const buryActiveIcon = makeDiggActiveIcon({ type: 'bury' })\n\ninterface IButtonProps {\n icon?: string\n hoverIcon?: string\n onClick?(event: MouseEvent): void\n style?: CSSProperties\n className?: string\n count?: number\n text?: string\n linkWrapper?: Wrapper\n size?: 'default' | 'small' | 'mini'\n}\n\nconst iconHeightClass = 'tw-h-16 lg:tw-h-18'\nconst iconLeadingClass = 'tw-leading-16 lg:tw-leading-18'\n\nexport const InteractButton: React.FC = ({\n icon,\n hoverIcon,\n style,\n className,\n count,\n text,\n size,\n linkWrapper = noopWrapper,\n onClick,\n}) => {\n const [iconSize, paddingLeft, fontSize, height, leading] = useMemo(() => {\n switch (size) {\n case 'mini':\n return [16, 2, 'tw-text-12', 'tw-h-18', 'tw-leading-18']\n case 'small':\n return [18, 3, 'tw-text-14', 'tw-h-20', 'tw-leading-20']\n default:\n return [20, 4, 'tw-text-16', 'tw-h-22', 'tw-leading-22']\n }\n }, [size])\n\n const showCount = useMemo(() => {\n return typeof count === 'number' && count > 0 ? formatNumber(count) : ''\n }, [count])\n\n return (\n \n \n {linkWrapper(\n \n \n {`${showCount}${text || ''}`}\n \n \n )}\n \n \n \n \n )\n}\n\ninterface IDiggButtonProps\n extends IToggleDiggParams,\n Omit {\n defaultIcon?: string\n text?: string\n onClick?(status: boolean): void\n}\n\n// 点赞按钮\nexport const DiggButton: React.FC = ({\n id,\n type,\n hasDigg,\n diggCount,\n groupId,\n commentId,\n cellStyle,\n articleType,\n defaultIcon,\n onClick,\n text = '点赞',\n ...props\n}) => {\n const {\n update: toggle,\n curStatus,\n curCount,\n } = useToggleDigg({\n id,\n type,\n hasDigg,\n diggCount,\n groupId,\n commentId,\n cellStyle,\n articleType,\n })\n\n const handleClick = stopPropagation(\n preventDefault(\n useCallback(() => {\n if (onClick) {\n onClick(curStatus)\n }\n if (toggle) {\n toggle()\n }\n }, [onClick, curStatus, toggle])\n )\n )\n\n return (\n \n )\n}\n\ninterface ICollectButtonProps\n extends IToggleCollectParams,\n Omit {\n showCount?: boolean\n theme?: 'light' | 'black'\n renderText?(status: boolean): string\n onClick?(status: boolean): void\n}\n\n// 收藏按钮\nexport const CollectButton: React.FC = ({\n theme = 'light',\n id,\n collected,\n collectCount,\n showCount = false,\n renderText,\n onClick,\n ...props\n}) => {\n const {\n update: toggle,\n curStatus,\n curCount,\n } = useToggleCollect({\n id: id || '',\n collected,\n collectCount,\n })\n\n const handleClick = stopPropagation(\n preventDefault(\n useCallback(() => {\n if (onClick) {\n onClick(curStatus)\n }\n if (toggle) {\n toggle()\n }\n }, [onClick, curStatus, toggle])\n )\n )\n\n return (\n \n )\n}\n\nexport interface IBuryButtonProps\n extends IToggleBuryParams,\n Omit {\n onClick?(status: boolean): void\n}\n\nexport const BuryButton: React.FC = ({\n id,\n buried,\n buryCount,\n articleType,\n onClick,\n ...props\n}) => {\n const {\n update: toggle,\n curStatus,\n curCount,\n } = useToggleBury({\n id,\n buried,\n buryCount,\n articleType,\n })\n\n const handleClick = stopPropagation(\n preventDefault(\n useCallback(() => {\n if (onClick) {\n onClick(curStatus)\n }\n if (toggle) {\n toggle()\n }\n }, [onClick, curStatus, toggle])\n )\n )\n\n return (\n \n )\n}\n\ninterface IDiggBuryContext {\n actionsRef: MutableRefObject<{\n diggStatus?: boolean\n diggBegin?: ReturnType['begin']\n diggRollback?: ReturnType['rollback']\n buryStatus?: boolean\n buryBegin?: ReturnType['begin']\n buryRollback?: ReturnType['rollback']\n }>\n}\n\nexport const DiggBuryContext = createContext({} as IDiggBuryContext)\n\n// 点赞 - 反对互斥\nexport const DiggBuryProvider: React.FC = ({ children }) => {\n const actionsRef: IDiggBuryContext['actionsRef'] = useRef({})\n return (\n \n {children}\n \n )\n}\n\nexport function stopPropagation(callback?: MouseEventHandler) {\n return useCallback(\n (event: React.MouseEvent) => {\n event.stopPropagation()\n if (callback) {\n callback(event)\n }\n },\n [callback]\n )\n}\n\nexport function preventDefault(callback?: MouseEventHandler) {\n return useCallback(\n (event: React.MouseEvent) => {\n event.preventDefault()\n if (callback) {\n callback(event)\n }\n },\n [callback]\n )\n}\n\ninterface IVerticalButtonProps {\n className?: string\n onClick?(): void\n icon?: string\n wrap?: boolean\n}\n\n// 举报 / 删除 - 更多操作里的按钮 垂直布局\nconst VerticalButton: React.FC = ({\n className,\n onClick,\n children,\n icon,\n wrap = true,\n}) => {\n return (\n \n \n {wrap ?
: ''}\n {children}\n \n )\n}\n\ninterface IReportButtonProps\n extends Omit {\n onClick?(): void\n onCancel?(): void\n articleType?: number\n wrap?: boolean\n}\n\nconst reportConfig: Record<\n IReportButtonProps['objectType'],\n {\n text: string\n value?: number\n isCustom?: boolean\n isLink?: boolean\n }[]\n> = {\n 5: [\n { text: '内容不真实', value: 301 },\n { text: '旧闻重复', value: 303 },\n { text: '内容质量差', value: 318 },\n { text: '软文广告', value: 302 },\n { text: '其他问题,我要吐槽', value: 315, isCustom: true },\n { text: '侵权投诉', isLink: true },\n ],\n 1: [\n { text: '内容不真实', value: 301 },\n { text: '软文广告', value: 302 },\n { text: '低俗色情', value: 304 },\n { text: '恶意对比', value: 305 },\n { text: '违法信息', value: 307 },\n { text: '没有讨论价值', value: 309 },\n { text: '恶意攻击谩骂', value: 312 },\n ],\n 11: [],\n}\n\n/*\n224:懂车帝短图文\n225:懂车帝小视频\n226:懂车帝回答转发文\n227:懂车帝口碑\n228:懂车帝长贴\n229:懂车帝提问\n230:懂车帝转发\n231:懂车帝长图文\n232:懂车帝长视频\n233:懂车帝图集\n*/\n\nconst articleTypeSourceMap = makeMap([\n ['1,3,5,7', 224],\n ['6', 225],\n ['12,13,14', 227],\n ['9', 228],\n ['8', 229],\n ['11', 230],\n ['2', 232],\n ['4', 233],\n])\n\nexport const ReportButton: React.FC = ({\n onClick,\n onCancel,\n objectId,\n objectType,\n articleType,\n authorId,\n wrap,\n}) => {\n const [visible, setVisible] = useState(false)\n const [reportType, setReportType] = useState(0)\n const [inputVisible, setInputVisible] = useState(false)\n const [description, setDescription] = useState('')\n const reportedRef = useRef(false)\n\n const handleClick = useLoginCheckCallback(\n useCallback(() => {\n setVisible((prev) => !prev)\n if (onClick) {\n onClick()\n }\n }, [onClick]),\n useMemo(\n () => ({\n enter_method: 'other',\n }),\n []\n )\n )\n\n const { state } = useContext(GlobalStoreContext)\n\n const handleSubmit = () => {\n if (!reportType) return\n report({\n objectId,\n objectType,\n authorId,\n reportType,\n source: articleTypeSourceMap[articleType!] || 224,\n description,\n userId: state.userData?.user_id,\n })\n .then(() => {\n Toast.show({\n text: '举报成功',\n })\n unstable_batchedUpdates(() => {\n setVisible(false)\n setReportType(0)\n setInputVisible(false)\n setDescription('')\n })\n })\n .catch((e) => {\n Toast.show({\n text: '举报失败',\n })\n })\n }\n\n // const handleReport = useCallback(\n // ({ type, data = [] }: IReportData) => {\n // if (type === 'confirm') {\n // if (id) {\n // const reportTypes: string[] = []\n // const description: string[] = []\n //\n // data.forEach((item) => {\n // reportTypes.push(item.value)\n // if (item.description) {\n // description.push(item.description)\n // }\n // })\n //\n // reportUser(\n // id,\n // reportTypes.join(','),\n // description.join(''),\n // userId,\n // state?.userData?.user_id\n // )\n // }\n // setVisible(false)\n // } else {\n // setVisible(false)\n // if (onCancel && visible) onCancel()\n // }\n // },\n // [id, userId, onCancel, visible]\n // )\n\n return (\n \n \n 举报\n \n {/**/}\n {\n setVisible(false)\n if (!reportedRef.current && onCancel) {\n onCancel()\n }\n }}\n className={dialogStyle['space-medium']}\n headerClass={dialogStyle['space-medium']}\n >\n
\n
\n {`举报${{ 1: '评论', 5: '内容', 11: '用户' }[objectType]}`}\n
\n
\n {reportConfig[objectType]?.map((item) => {\n return (\n {\n setInputVisible(item.isCustom!)\n if (!item.isCustom) {\n setDescription('')\n }\n if (item.isLink) {\n window.open('https://www.toutiao.com/complain/')\n } else {\n setReportType(item.value!)\n }\n }}\n >\n \n {reportType === item.value ? (\n \n ) : null}\n
\n {item.text}\n {item.isLink ? (\n \n ) : null}\n
\n )\n })}\n \n {inputVisible ? (\n {\n setDescription(e.currentTarget.value)\n }}\n />\n ) : null}\n
\n {\n setVisible(false)\n }}\n >\n 取消\n \n \n 提交\n \n
\n \n \n
\n )\n}\n\ninterface IDelCommentButtonProps {\n type?: 'comment' | 'reply' // 评论 / 回复\n id?: string\n onClick?(): void\n onSuccess?(): void // 删除成功\n onError?(): void // 删除失败\n className?: string\n}\n\n// 删除 评论 / 回复\nexport const DelCommentButton: React.FC = ({\n type,\n id,\n onClick,\n onSuccess,\n onError,\n className,\n}) => {\n const [confirmVisible, setConfirmVisible] = useState(false)\n\n const handleClick = useCallback(() => {\n if (onClick) {\n onClick()\n }\n setConfirmVisible(true)\n }, [onClick])\n\n const handleConfirm = useCallback(() => {\n const address =\n type === 'reply'\n ? '/motor/proxy/delete_comment/browser/2/comment/v1/delete_comment/'\n : '/motor/proxy/delete_reply/browser/2/comment/v1/delete_reply/'\n fetch(\n getUrl(\n `${address}?${serializeObject({\n aid,\n app_name: appName,\n id,\n reply_id: id,\n })}`\n ),\n {\n headers: {\n 'tt-anti-token': window.localStorage.getItem('tt-anti-token') || '',\n },\n }\n )\n .then((data) => {\n const { errno } = data || {}\n if (errno === 0) {\n Toast.show({\n text: '删除评论成功!',\n })\n console.log(onSuccess)\n if (onSuccess) {\n onSuccess()\n }\n } else {\n Toast.show({\n text: '删除评论失败!',\n })\n if (onError) {\n onError()\n }\n }\n })\n .catch((e) => {\n if (onError) {\n onError()\n }\n })\n setConfirmVisible(false)\n }, [type, id, onSuccess, onError])\n\n return (\n \n \n 删除\n \n setConfirmVisible(false)}\n >\n setConfirmVisible(false)}\n onConfirm={handleConfirm}\n >\n 确认删除吗?\n \n \n \n )\n}\n\n// 类型是否可收藏\nexport const isCollectable = (articleType: number) => {\n return ![12, 13, 14].includes(articleType)\n}\n\n// 类型是否可反对\nexport const isBuryable = (articleType: number) => {\n return [12, 13, 14].includes(articleType)\n}\n\nexport interface IProps {\n id?: string // 主id 组件用于评论就传评论id 用于文章就传文章id\n diggType?: IToggleDiggParams['type']\n isOwnerDigg?: boolean // 圈主点赞\n questionStatus?: number // 答案状态\n questionDisplay?: string // 答案状态显示文字\n time?: number // 时间\n timeAppend?: string // 时间描述文字\n timePrepend?: string // 时间描述文字\n awardText?: string // 悬赏文字\n awardIcon?: string // 悬赏图标\n commentVisible?: boolean // 显示评论按钮\n commentCount?: number // 评论数\n diggVisible?: boolean // 显示点赞按钮\n diggCount?: IToggleDiggParams['diggCount'] // 点赞数\n selfHasDigg?: IToggleDiggParams['hasDigg'] // 当前用户是否点赞\n groupId?: IToggleDiggParams['groupId'] // 文章id 用于对评论点赞\n commentId?: IToggleDiggParams['commentId'] // 评论id 用于对回复点赞\n cellStyle?: IToggleDiggParams['cellStyle'] // 点赞类型\n articleType?: IToggleDiggParams['articleType'] // 文章类型\n commentLinkWrapper?: Wrapper // 评论跳转链接\n commentText?: string // 评论按钮文字\n collectVisible?: boolean // 显示收藏按钮\n collected?: ICollectButtonProps['collected'] // 是否收藏\n communityId?: string // 车友圈id\n communityName?: string // 车友圈名称\n moreContent?: ReactNode\n buryVisible?: boolean\n buryCount?: IToggleBuryParams['buryCount'] // 反对数\n buried?: IToggleBuryParams['buried'] // 是否已反对\n shareContent?: ToolTipProps['content']\n className?: string\n onClickComment?(event: MouseEvent): void\n onClickCollect?(curStatus: boolean): void\n onClickCommunity?(): void\n onClickDigg?(curStatus: boolean): void\n onClickBury?(curStatus: boolean): void\n onShowShare?(): void\n}\n\nconst Interact: React.FC = ({\n id,\n diggType,\n isOwnerDigg,\n questionStatus,\n questionDisplay,\n awardText,\n awardIcon,\n time,\n timeAppend,\n timePrepend,\n commentVisible = true,\n commentCount,\n diggVisible = true,\n diggCount,\n selfHasDigg,\n groupId,\n commentId,\n cellStyle,\n articleType,\n commentText = '评论',\n collectVisible = true,\n collected,\n communityId,\n communityName,\n moreContent,\n buryVisible,\n buryCount,\n buried,\n shareContent,\n className = 'tw-mt-12',\n commentLinkWrapper = noopWrapper,\n onClickComment,\n onClickCollect,\n onClickCommunity,\n onClickDigg,\n onClickBury,\n onShowShare,\n}) => {\n const handleClickComment = stopPropagation(onClickComment)\n const handleClickCommunity = stopPropagation(onClickCommunity)\n\n return (\n \n
\n \n {communityName ? (\n \n ) : null}\n {isOwnerDigg ? (\n \n 圈主点赞\n \n ) : null}\n {time ? (\n \n {timePrepend}\n {formatTime(time * 1000)}\n {timeAppend}\n \n ) : null}\n
\n \n {questionStatus === 0 && awardText ? (\n \n ) : null}\n {commentVisible ? (\n \n ) : null}\n \n {diggVisible ? (\n \n ) : null}\n {buryVisible ? (\n \n ) : null}\n \n {collectVisible ? (\n (status ? '已收藏' : '收藏')}\n className=\"hover:tw-text-common-orange\"\n />\n ) : null}\n {shareContent ? (\n \n {(showTips) => (\n {\n e.stopPropagation()\n }}\n />\n )}\n \n ) : null}\n {questionStatus && questionDisplay ? (\n \n ) : null}\n {moreContent ? (\n \n {(showTips) => (\n \n )}\n \n ) : null}\n \n \n \n
\n )\n}\n\ninterface IInteractVideoProps {\n moreContent: ReactNode\n shareContent?: ToolTipProps['content']\n comment_count: number\n digg_count: number\n is_digg: boolean\n is_collected: boolean\n onClickComment?(): void //点击评论\n onClickCollect?(curStatus: boolean): void //点击收藏\n onClickDigg?(curStatus: boolean): void //点击点赞\n}\nexport const InteractVideo: React.FC = ({\n moreContent,\n shareContent,\n comment_count = 0,\n digg_count = 0,\n is_digg,\n is_collected,\n onClickComment, //点击评论\n onClickCollect, //点击收藏\n onClickDigg, //点击点赞\n}) => {\n const list = [\n {\n count: comment_count,\n fn: onClickComment,\n status: true,\n text: '评论',\n classname: 'icon_comment_24',\n },\n {\n count: digg_count,\n fn: onClickDigg,\n status: is_digg,\n text: '赞同',\n classname: is_digg\n ? 'icon_like_select_pc tw-text-common-yellow'\n : 'icon_like_24_normal',\n },\n {\n fn: onClickCollect,\n status: is_collected,\n text: is_collected ? '已收藏' : '收藏',\n classname: is_collected\n ? 'icon_collect_select_pc tw-text-common-yellow'\n : 'icon_collect_24_normal',\n },\n ]\n return (\n \n
\n {list.map((item: any) => {\n return (\n item?.fn(item?.status)}\n key={item?.text}\n style={{ display: 'block' }}\n >\n \n {item?.count ? formatNumber(item?.count) : ''}\n {item?.text}\n
\n )\n })}\n {shareContent ? (\n \n \n 分享\n \n ) : null}\n {moreContent ? (\n \n {(showTips) => (\n \n )}\n \n ) : null}\n \n
\n )\n}\n\nexport default Interact\n","import React, { useCallback, useMemo, useState } from 'react'\nimport Publisher, { IPB, PublishType } from 'Components/publisher/publisher'\nimport useLoginCheckCallback from 'Components/hooks/use-login-check-callback'\nimport Toast from 'Components/toast-messager'\nimport Dialog from 'Components/dialog'\nimport classNames from 'classnames'\nimport dialogStyle from 'Components/dialog.module.scss'\n\nconst publishPicture = require('static/publish-picture.svg')\nconst publishQa = require('static/publish-qa.svg')\n// const publishScore = require('static/publish-score.svg')\nconst publishVideo = require('static/publish-video.svg')\nconst publishLong = require('static/publish-long.svg')\n\ntype IOperationType = PublishType | 'score' | 'long'\n\ninterface IOperation {\n title: string\n type: IOperationType\n des: string\n src: string\n url?: string\n}\n\nconst operations: IOperation[] = [\n {\n title: '发视频',\n type: 'video',\n des: '视频分享爱车/用车体验/提车作业/自驾游',\n src: publishVideo,\n },\n {\n title: '发图文',\n type: 'picture',\n des: '图文分享爱车/用车体验/提车作业/自驾游',\n src: publishPicture,\n },\n {\n title: '提问',\n type: 'qa',\n des: '选买/用车问题,专业技师24小时在线解答',\n src: publishQa,\n },\n]\n\n// const score: IOperation = {\n// title: '懂车分',\n// type: 'score',\n// des: '发表爱车口碑,为车友提供选车参考',\n// src: publishScore,\n// url: \"https://mp.dcdapp.com/profile_v2/publish/car-score/recommend\"\n// }\nconst score: IOperation = {\n title: '发长帖',\n type: 'long',\n des: '交流买车/用车经验、分享有车生活',\n src: publishLong,\n url: 'https://mp.dcdapp.com/ugc/publish/#/post',\n}\n\nexport function usePublish() {\n const [isShowPublish, setIsShowPublish] = useState(false)\n const [operation, setOperation] = useState('picture')\n\n const handlePublish = useLoginCheckCallback(\n useCallback((operation?: IOperation) => {\n if (operation?.url) {\n window.open(operation.url)\n return\n }\n setOperation(operation?.type || 'picture')\n setIsShowPublish(true)\n }, []),\n useMemo(\n () => ({\n enter_method: 'publish',\n }),\n []\n )\n )\n\n const publishSuccess = useCallback(async (props: IPB) => {\n Toast.show({\n text: '发布成功',\n })\n setIsShowPublish(false)\n setTimeout(() => {\n window.open(`/ugc/article/${props.gid}`)\n }, 3000)\n }, [])\n\n return {\n isShowPublish,\n setIsShowPublish,\n operation,\n handlePublish,\n publishSuccess,\n }\n}\n\ninterface IProps {\n hasScore?: boolean\n seriesId?: string\n seriesName?: string\n topicId?: string\n topicName?: string\n onClick?(text: string): void\n}\n\ninterface IPublishOperationProps extends IProps {\n className?: string\n}\n\n// 平铺 + sm 相应式发布操作按钮\nexport const PublishOperation = ({\n hasScore = true,\n seriesId,\n seriesName,\n topicId,\n topicName,\n className,\n onClick,\n}: IPublishOperationProps) => {\n const {\n isShowPublish,\n setIsShowPublish,\n operation,\n handlePublish,\n publishSuccess,\n } = usePublish()\n\n return (\n <>\n \n {[...operations, ...(hasScore ? [score] : [])].map((item, index) => {\n return (\n {\n if (onClick) onClick(item.title)\n handlePublish(item)\n }}\n >\n
\n

\n {item.title}\n

\n \n {item.des}\n

\n
\n \n \n )\n })}\n \n setIsShowPublish(false)}\n >\n {isShowPublish ? (\n \n ) : null}\n \n \n \n )\n}\n\nconst PublishDropdown: React.FC = ({\n hasScore = true,\n seriesId,\n seriesName,\n topicId,\n topicName,\n onClick,\n}) => {\n const {\n isShowPublish,\n setIsShowPublish,\n operation,\n handlePublish,\n publishSuccess,\n } = usePublish()\n return (\n \n
    \n {[...operations, ...(hasScore ? [score] : [])].map((item, index) => {\n return (\n {\n if (onClick) onClick(item.title)\n handlePublish(item)\n }}\n >\n

    {item.title}

    \n

    \n {item.des}\n

    \n \n )\n })}\n
\n setIsShowPublish(false)}\n >\n {isShowPublish ? (\n \n ) : null}\n \n \n
\n )\n}\n\nexport default PublishDropdown\n","import React, { useState } from 'react'\nimport serializeObject from '@arsenal/arsenal/modules/serializeObject'\nimport QRCode from 'qrcode.react'\nimport Dialog from 'Components/dialog'\nimport Toast from 'Components/toast-messager'\nimport { stopPropagation } from 'Components/new/community-card/interact'\nimport dialogStyle from 'Components/dialog.module.scss'\n\nfunction shareQQ({ url, title, pic }: IProps) {\n window.open(\n `https://connect.qq.com/widget/shareqq/iframe_index.html?${serializeObject({\n url,\n title,\n pics: pic,\n })}`,\n '_blank'\n )\n}\n\nfunction shareQQZone({ url, title, pic }: IProps) {\n window.open(\n `http://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?${serializeObject(\n {\n url,\n title,\n pics: pic,\n }\n )}`,\n '_blank'\n )\n}\n\nfunction shareXLWB({ url, title, pic }: IProps) {\n window.open(\n `https://service.weibo.com/share/share.php?${serializeObject({\n url,\n title,\n pic,\n })}`,\n '_blank'\n )\n}\n\nfunction autoCopyValue(value = ''): boolean {\n const input = document.createElement('input')\n document.body.appendChild(input)\n input.style.cssText = 'opacity:0;position:fixed;left:0;top:0;'\n input.value = value\n input.focus()\n input.setSelectionRange(0, input.value.length)\n const res = document.execCommand('copy', false)\n document.body.removeChild(input)\n return res\n}\n\ninterface IProps {\n url?: string // 参数url设置分享的内容链接|默认当前页location\n title?: string // 参数desc设置分享的描述,可选参数\n pic?: string // 参数pics设置分享图片的路径,多张图片以"|"隔开,可选参数\n onCopySuccess?(): void\n onShare?(text: string): void\n}\n\nconst Share: React.FC = (props) => {\n const { url, onCopySuccess, onShare } = props\n\n const [qrcodeVisible, setQrcodeVisible] = useState(false)\n\n return (\n \n \n
\n {\n setQrcodeVisible(true)\n if (onShare) onShare('微信')\n }}\n >\n 微信\n \n {\n shareXLWB(props)\n if (onShare) onShare('微博')\n }}\n >\n 微博\n \n {\n shareQQZone(props)\n if (onShare) onShare('QQ空间')\n }}\n >\n QQ空间\n \n {\n shareQQ(props)\n if (onShare) onShare('QQ')\n }}\n >\n QQ\n \n
\n
\n
\n {url}\n
\n {\n if (autoCopyValue(url)) {\n Toast.show({\n text: '复制成功',\n })\n if (onCopySuccess) onCopySuccess()\n if (onShare) onShare('复制地址')\n }\n }}\n >\n 复制地址\n \n
\n \n setQrcodeVisible(false)}\n className={dialogStyle['space-small']}\n headerClass={dialogStyle['space-small']}\n closeText={'关闭'}\n >\n
\n 微信扫码分享到微信好友 或 朋友圈\n \n
\n \n \n
\n )\n}\n\nexport default Share\n","import React, {\n ReactElement,\n ReactNode,\n useCallback,\n useRef,\n useState,\n} from 'react'\nimport classNames from 'classnames'\nimport xss from 'xss'\nimport { emoji } from 'Constants/emoji'\nimport useViewObserve from 'Components/hooks/use-view-observe'\nimport noopWrapper, { Wrapper } from 'lib/noop-wrapper'\nimport useExpandAutoScroll from 'Components/hooks/use-expand-auto-scroll'\nimport {\n preventDefault,\n stopPropagation,\n} from 'Components/new/community-card/interact'\nimport { makeTopicUrl } from 'Components/new/links/topic-link'\n\nexport const QALabel: React.FC = ({ children }) => {\n return (\n \n {children}\n \n )\n}\n\nexport const HotLabel = () => {\n return (\n \n \n \n \n )\n}\n\n// 精华标签\nexport const JHLabel = ({ type = 1 }) => {\n return (\n \n \n \n \n )\n}\n\nexport const TopicLabel: React.FC<{ id?: string }> = ({ id, children }) => {\n return (\n id ? (\n \n {children}\n \n ) : null\n ) as ReactElement\n}\n\nexport const size20Class = 'tw-text-16 md:tw-text-18 xl:tw-text-20'\nexport const size18Class = 'tw-text-14 md:tw-text-16 xl:tw-text-18'\nexport const size16Class = 'tw-text-12 md:tw-text-14 xl:tw-text-16'\nexport const size14Class = 'tw-text-12 md:tw-text-14 xl:tw-text-14'\n\nexport interface IProps {\n title?: string\n content?: string\n prepend?: ReactNode\n append?: ReactNode\n linkWrapper?: Wrapper\n rows?: number\n}\n\nconst Text: React.FC = ({\n title,\n content,\n prepend,\n append,\n linkWrapper = noopWrapper,\n rows = 3,\n}) => {\n const [hasBtn, setHasBtn] = useState(false)\n\n const { expanded, setExpanded, toggleExpand, rootRef } =\n useExpandAutoScroll()\n\n const handleExpand = stopPropagation(\n preventDefault(\n useCallback(() => {\n toggleExpand()\n }, [toggleExpand])\n )\n )\n\n useViewObserve(\n useCallback(() => {\n const el = rootRef.current\n if (el) {\n const curHasBtn = el.scrollHeight - 24 * rows > 3 // 部分浏览器有误差\n setHasBtn(curHasBtn)\n if (curHasBtn !== hasBtn) {\n setExpanded(false)\n }\n }\n }, [hasBtn, rows]),\n {\n getContainer: useCallback(() => rootRef.current, [content]),\n }\n )\n\n return (\n \n {title ? (\n
\n {linkWrapper(\n \n {title}\n \n )}\n
\n ) : null}\n {content ? (\n \n \n {hasBtn ? (\n \n \n \n \n \n ) : null}\n {prepend}\n {linkWrapper(\n \n \n {append}\n \n )}\n

\n \n ) : null}\n \n \n
\n )\n}\n\nexport default Text\n","import React, { useCallback, useContext, useState } from 'react'\nimport Avatar, {\n IProps as IUserProps,\n ugcUserLink,\n} from 'Components/author/avatar'\nimport ToolTip from 'Components/new/tool-tip'\nimport { Image } from 'Components/view-image'\nimport classNames from 'classnames'\nimport formatTime from 'lib/format-time'\nimport { GlobalStoreContext } from 'Components/store'\nimport useToggleFollow from 'Components/hooks/use-toggle-follow'\nimport formatNumber from '@arsenal/arsenal/modules/formatNumber'\n\nexport interface IMedalProps {\n name?: string\n desc?: string\n icon?: string\n time?: number\n}\n\nexport const Medal: React.FC = ({ name, desc, time, icon }) => {\n return (\n
\n \n {name ? (\n

{name}

\n ) : null}\n {desc ? (\n

“{desc}”

\n ) : null}\n {time ? (\n

\n {formatTime(time * 1000)}点亮\n

\n ) : null}\n
\n )\n}\n\ninterface IProps {\n avatar?: IUserProps['avatar'] // 用户头像 url\n userId?: IUserProps['userId'] // 用户id\n username?: IUserProps['username'] // 用户名\n userVerified?: IUserProps['userVerified'] // 用户认证\n verifyType?: IUserProps['verifyType'] // 用户认证类型\n medals?: IMedalProps[] // 徽章\n dynamicCount?: number // 动态数量\n essenceCount?: number // 精华数量\n diggCount?: number // 获赞数量\n followCount?: number // 评论数量\n followed?: boolean // 评论数量\n authDesc?: string // 认证信息\n authIcon?: string // 认证图标\n authWidth?: number // 认证图标\n authHeight?: number // 认证图标\n onClickUser?(): void\n onClickMore?(): void\n onClickContent?(text: string): void\n onClickFollow?(curStatus: boolean): void\n}\n\nconst UserDetail: React.FC = ({\n avatar,\n userId,\n username,\n userVerified,\n verifyType,\n medals,\n dynamicCount,\n essenceCount,\n diggCount,\n followCount,\n followed,\n authDesc,\n authIcon,\n authWidth = 16,\n authHeight = 16,\n onClickUser,\n onClickMore,\n onClickContent,\n onClickFollow,\n}) => {\n const [expanded, setExpanded] = useState(false)\n\n const { state } = useContext(GlobalStoreContext)\n\n const { update, curStatus } = useToggleFollow({\n userId,\n followed,\n })\n\n const handleFollow = useCallback(() => {\n update()\n if (onClickFollow) onClickFollow(curStatus)\n }, [update, onClickFollow, curStatus])\n\n return (\n \n
\n \n \n {ugcUserLink({ userId, username })(username)}\n

\n {authDesc ? (\n

\n \n {authDesc}\n \n

\n ) : null}\n {medals?.length ? (\n
    \n {medals.slice(0, expanded ? undefined : 6).map((item, index) => {\n return (\n }\n >\n \n \n )\n })}\n
\n ) : null}\n {medals?.length && medals.length > 6 ? (\n {\n setExpanded((prev) => !prev)\n if (onClickMore) onClickMore()\n }}\n >\n {expanded ? '收起徽章' : '更多徽章'}\n \n \n ) : null}\n 6 ? '' : 'tw-mt-4'\n )}\n >\n {ugcUserLink({ userId })(\n
onClickContent?.('动态')}>\n

\n {dynamicCount}\n

\n

动态

\n
\n )}\n {ugcUserLink({ userId })(\n
onClickContent?.('精华')}>\n

\n {essenceCount}\n

\n

精华

\n
\n )}\n {ugcUserLink({ userId, tab: 'gzyh' })(\n
onClickContent?.('评论')}>\n

\n {followCount}\n

\n

关注

\n
\n )}\n {ugcUserLink({ userId })(\n
onClickContent?.('获赞')}>\n

\n {diggCount}\n

\n

获赞

\n
\n )}\n
\n {userId && userId !== state.userData?.user_id ? (\n \n {curStatus ? '已关注' : '关注TA'}\n \n ) : null}\n \n \n \n
\n )\n}\n\nexport default UserDetail\n","import React, { Dispatch, SetStateAction, useEffect, useState } from 'react'\nimport classNames from 'classnames'\nimport { Image } from 'Components/view-image'\nimport noopWrapper, { Wrapper } from 'lib/noop-wrapper'\nimport dynamic from 'next/dynamic'\nimport Loading from 'Components/loading'\nconst Player = dynamic(() => import('Components/player'), {\n ssr: false,\n loading: () => ,\n})\n\nexport interface IProps {\n groupId?: string\n coverUrl?: string // 封面\n coverAlt?: string // 封面\n videoId?: string // id\n duration?: number // 时长\n type?: number\n linkWrapper?: Wrapper\n}\n\nlet prevSetState: Dispatch>\n\nconst Video: React.FC = ({\n coverUrl,\n coverAlt,\n videoId,\n groupId,\n duration,\n type = 1,\n linkWrapper = noopWrapper,\n}) => {\n const [showPlayer, setShowPlayer] = useState(false)\n\n useEffect(() => {\n if (showPlayer) {\n if (prevSetState) prevSetState(false)\n prevSetState = setShowPlayer\n }\n }, [showPlayer])\n\n return videoId && coverUrl ? (\n showPlayer ? (\n
\n \n
\n ) : (\n \n \n setShowPlayer(true)}\n >\n \n \n \n \n \n \n \n \n \n )\n ) : null\n}\n\nexport default Video\n","import React, { ReactNode } from 'react'\n\ninterface IProps {\n cancelText?: ReactNode\n confirmText?: ReactNode\n onCancel?(): void\n onConfirm?(): void\n}\n\nconst Confirm: React.FC = ({\n confirmText,\n cancelText,\n children,\n onCancel,\n onConfirm,\n}) => {\n return (\n \n

{children}

\n
\n \n {cancelText || '取消'}\n \n \n {confirmText || '确认'}\n \n
\n
\n )\n}\n\nexport default Confirm\n","import React from 'react'\nimport Statement from 'Components/new/statement'\nimport classNames from 'classnames'\nimport { Image } from 'Components/view-image'\n\ninterface IProps {\n className?: string\n responsive?: boolean\n}\n\nconst Copyright: React.FC = ({ className, responsive }) => {\n return (\n \n \n

\n 扫码下载懂车帝APP\n

\n \n \n \n \n )\n}\n\nexport default Copyright\n","import React, { CSSProperties } from 'react'\nimport { Image } from 'Components/view-image'\nimport classNames from 'classnames'\nimport { GenImgAttrsData } from 'Components/view-image/utils'\nimport styles from './index.module.scss'\n\ninterface IProps {\n src: string\n alt?: string\n className?: string\n style?: CSSProperties\n imgBackground?: string\n cutType?: GenImgAttrsData['cutType']\n percent?: number\n}\n\nconst FilterBackground: React.FC = ({\n src,\n alt,\n className,\n imgBackground,\n style,\n children,\n cutType,\n percent = 50,\n}) => {\n return (\n \n
\n \n \n
\n \n \n \n
{children}
\n \n
\n )\n}\n\nexport default FilterBackground\n","import { Wrapper } from 'lib/noop-wrapper'\nimport React from 'react'\nimport Link from 'next/link'\ninterface IHotHeaderLink {\n herf?: string\n as?: string\n}\n\nfunction hotHeaderLink({ herf = '', as }: IHotHeaderLink): Wrapper {\n return (content) =>\n herf ? (\n \n \n {content}\n \n \n \n ) : (\n content\n )\n}\nexport default hotHeaderLink\n","import React from 'react'\nimport classNames from 'classnames'\nimport ModuleTitle from 'New/auto/series/components/module-title'\nimport hotHeaderLink from 'Components/new/links/hot-header-link'\nimport { MoreButton } from 'New/auto/series/components/more-button'\ninterface IHotHeaderProps {\n motor_name?: string | undefined | null\n series_id?: string | undefined | null\n group_id_str?: string | undefined\n user_id?: number | undefined\n article_sub_type?: number | undefined\n is_doudi?: boolean\n title?: string //标题名称\n src?: string //前面的小图标\n color?: string //字体颜色\n herf?: string //链接url\n as?: string //链接url\n moreButton?: boolean //更多按钮\n onClick?(): void //埋点方法\n}\nconst HotHeader: React.FC = ({\n motor_name,\n src,\n is_doudi,\n title,\n color,\n herf,\n as,\n moreButton = false,\n onClick,\n}) => {\n return (\n
\n {hotHeaderLink({ herf, as })(\n 更多\n ) : null\n }\n >\n \n {`${\n !is_doudi ? motor_name?.replace(/(车友圈)$/g, '') || '' : ''\n }${title}`}\n \n \n )}\n \n
\n )\n}\nexport default HotHeader\n","import React from 'react'\nimport classNames from 'classnames'\nimport Stars from 'Components/stars'\nimport { Image, smallLogoLoading } from 'Components/view-image'\nimport formatNumber from '@arsenal/arsenal/modules/formatNumber'\nimport xss from 'xss'\nconst yellow_star_little = require('static/yellow-star-little.png')\nconst black_star_little = require('static/black-star-little.png')\n\ninterface IWrapperProps {\n index: number\n className?: string\n onClick?(): void\n}\n\nconst Wrapper: React.FC = ({\n index,\n className,\n onClick,\n children,\n}) => {\n return (\n \n {children}\n \n )\n}\n\ninterface IBottomText {\n text: string\n icon?: string\n iconUrl?: string\n}\ninterface IBottomProps {\n texts: IBottomText[]\n}\n\nconst Bottom: React.FC = ({ texts }) => {\n return (\n
\n {texts.map(({ text, icon, iconUrl }, index) => {\n return (\n \n {iconUrl ? (\n \n {text}\n \n ) : (\n <>\n \n {text}\n \n )}\n \n

\n )\n })}\n
\n )\n}\n\ninterface IHotTopicItemProps extends IWrapperProps {\n name?: string\n desc?: string\n coverUrl?: string\n readCount?: number\n joinCount?: number\n}\n\nexport const HotTopicItem: React.FC = (props) => {\n const { index, name, desc, coverUrl, readCount, joinCount, onClick } = props\n\n return (\n \n
\n \n
\n
\n

{`# ${name}`}

\n \n \n
\n \n )\n}\n\ninterface IHotItemProps extends IWrapperProps {\n hasImage?: boolean\n hasVideo?: boolean\n content?: string\n score?: number\n scoreLevel?: string\n commentCount?: number\n commentText: string\n diggCount?: number\n carName?: string\n year?: string\n price?: string\n location?: string\n questionInfo?: {\n status: number\n status_display: string\n send_award: string\n award_icon_url: string\n }\n}\n\n// ugc 内容\nconst HotItem: React.FC = ({\n hasImage,\n hasVideo,\n index,\n content,\n year,\n carName,\n score,\n scoreLevel,\n commentCount,\n commentText,\n diggCount,\n price,\n location,\n questionInfo,\n onClick,\n}) => {\n const bottomTexts: IBottomText[] = [\n {\n text: `${commentCount || 0}${commentText}`,\n icon: 'icon_comment_24',\n },\n ]\n if (commentText === '回答') {\n const { status, status_display, send_award, award_icon_url } =\n questionInfo || {}\n if (status === 1) {\n bottomTexts[1] = { text: status_display || '已解决' }\n } else if (send_award && award_icon_url) {\n bottomTexts[1] = { text: send_award, iconUrl: award_icon_url }\n }\n } else {\n bottomTexts[1] = {\n text: `${diggCount || 0}点赞`,\n icon: 'icon_like_24_normal',\n }\n }\n return content ? (\n \n
\n {year && carName && scoreLevel ? (\n
\n \n {`${year}款 ${carName}`}\n

\n
\n 车主评分:\n \n {`${((Number(score) || 0) / 100).toFixed(2)}分`}\n \n
\n \n
\n {`“${scoreLevel}”`}\n
\n {price || location ? (\n
\n {price ? (\n

\n 裸车价:\n {price}万\n

\n ) : null}\n {location ? (\n

\n 购车地:\n {location}\n

\n ) : null}\n
\n ) : null}\n
\n ) : null}\n

\n {hasVideo ? (\n \n ) : hasImage ? (\n \n ) : null}\n {content}\n

\n
\n \n \n ) : null\n}\n\nexport default HotItem\n","import React, { ReactNode, useMemo, useState } from 'react'\nimport ResponsiveSwiper, {\n ResponsiveConfig,\n} from 'Components/new/responsive-swiper'\nimport SwiperButton from 'Components/swiper-button'\nimport classNames from 'classnames'\n\ninterface IProps {\n title: ReactNode\n smCols: number\n smRows: number\n slideCount: number\n slideClass: string\n gap?: number\n children(params: { index: number; activeIndex: number }): ReactNode\n className?: string\n}\n\nconst HotLayout = ({\n title,\n smCols,\n smRows,\n slideCount,\n slideClass,\n gap,\n children,\n className,\n}: IProps) => {\n const cols = useMemo(() => {\n return {\n sm: smCols,\n md: 1,\n lg: 1,\n xl: 1,\n '2xl': 1,\n }\n }, [smCols])\n const rows = useMemo(() => {\n return {\n sm: smRows,\n md: slideCount,\n lg: slideCount,\n xl: slideCount,\n '2xl': slideCount,\n }\n }, [smRows, slideCount])\n\n const [prevEl, setPrevEl] = useState()\n const [nextEl, setNextEl] = useState()\n\n const hasButton = slideCount > smCols * smRows\n\n return slideCount ? (\n \n
\n \n {title}\n {hasButton && (\n
\n \n \n
\n )}\n
\n \n {children}\n \n \n \n
\n ) : null\n}\n\nexport default HotLayout\n","import React from 'react'\nimport HotLayout from 'Components/new/hot/hot-layout'\nimport ModuleTitle from 'New/auto/series/components/module-title'\nimport { HotTopicItem } from 'Components/new/hot/hot-item'\n\ninterface IProps {\n topicHot?: any\n title?: string\n onClickItem?(params: { id?: string; name?: string }): void\n}\n\nconst HotTopic: React.FC = ({\n title = '热门话题',\n topicHot,\n onClickItem,\n}) => {\n return (\n \n \n {title}\n \n }\n >\n {({ index }) => {\n const item = topicHot?.hot_list[index]\n\n return (\n {\n if (onClickItem)\n onClickItem({\n id: item.id_str,\n name: item.name,\n })\n }}\n >\n \n \n )\n }}\n \n \n \n )\n}\n\nexport default HotTopic\n","import React from 'react'\nimport { Image } from 'Components/view-image'\nimport formatNumber from '@arsenal/arsenal/modules/formatNumber'\nconst car_error_bg = require('static/car-error-bg.svg')\n\ninterface IProps {\n coverUrl?: string\n name?: string\n fansCount?: number\n id?: string\n onClick?(): void\n}\n\nconst HotCommunityItem: React.FC = ({\n coverUrl,\n name,\n id,\n fansCount = 0,\n onClick,\n}) => {\n return (\n \n \n {\n e.stopPropagation()\n if (onClick) {\n onClick()\n }\n }}\n >\n
\n \n
\n\n
\n

\n {name}车友圈\n

\n

\n {formatNumber(fansCount)}车友活跃中\n

\n

\n 进入车友圈\n \n

\n
\n \n \n
\n )\n}\n\nexport default HotCommunityItem\n","import fetch from 'lib/decorated-fetch'\nimport getUrl from 'lib/url'\nimport serializeObject from '@arsenal/arsenal/modules/serializeObject'\n\ninterface IgetFocusCheYouListParams {\n profile_user_id: string\n count: number\n}\n\nconst getFocusCheYouList = async (\n params: IgetFocusCheYouListParams,\n req?: any\n) => {\n const json = await fetch(\n getUrl(\n `/motor/pc/user/focus/cheyou/list?${serializeObject(params)}`,\n 'motor.pc_user.api'\n ),\n {\n req,\n }\n )\n\n if (0 !== json?.status) {\n throw Error(json?.prompts || json.message)\n }\n return json?.data?.list\n}\n\nexport default getFocusCheYouList\n","import React, { useContext, useEffect, useState } from 'react'\nimport HotHeader from './hot-header'\nimport { GlobalStoreContext } from 'Components/store'\nimport HotLayout from 'Components/new/hot/hot-layout'\nimport HotCommunityItem from 'Components/new/hot/hot-community-item'\nimport getFocusCheYouList from 'New/community/services/getFocusCheYouList'\n\ninterface IHotCarCicleProps {\n onClickTitle?(): void\n onClickItem?(item: { id?: string; name?: string }): void\n}\n\nconst MyCommunity = ({ onClickTitle, onClickItem }: IHotCarCicleProps) => {\n const { state } = useContext(GlobalStoreContext)\n const user_id = state.userData?.user_id\n\n const [focusCheYouList, setFocusCheYouList] = useState([])\n\n useEffect(() => {\n if (!user_id) {\n return\n }\n getFocusCheYouList({ profile_user_id: user_id, count: 6 }).then((res) => {\n setFocusCheYouList(res || [])\n })\n }, [user_id])\n\n return focusCheYouList.length ? (\n <>\n \n }\n >\n {({ index }) => {\n const item = focusCheYouList[index]\n return (\n {\n if (onClickItem)\n onClickItem({\n id: item?.series_id || item?.motor_id,\n name: item?.name,\n })\n }}\n />\n )\n }}\n \n \n ) : null\n}\nexport default MyCommunity\n","import React from 'react'\nimport { Wrapper } from 'lib/noop-wrapper'\nimport getContentJumpUrl from 'lib/get-content-jump-url'\nimport serializeObject from '@arsenal/arsenal/modules/serializeObject'\n\nexport interface IAnyLinkParams {\n id: string\n articleType?: number\n title?: string\n queryParams?: { [key: string]: number | string }\n}\n\nfunction anyLink({\n id,\n articleType,\n title,\n queryParams,\n}: IAnyLinkParams): Wrapper {\n let link = getContentJumpUrl(id, articleType)\n\n if (queryParams) {\n link += `?${serializeObject(queryParams)}`\n }\n\n return (content) =>\n link ? (\n \n \n {content}\n \n \n \n ) : (\n content\n )\n}\n\nexport default anyLink\n","import { Wrapper } from 'lib/noop-wrapper'\nimport React from 'react'\nimport { allDefaultSort, allDefaultTab } from 'New/community'\n\nexport function makeCommunityUrl({\n id,\n tab = allDefaultTab,\n sort = allDefaultSort,\n page,\n}: {\n id: string\n tab?: string\n sort?: string\n page?: number\n}) {\n const tabSort =\n sort === allDefaultSort\n ? tab === allDefaultTab\n ? ''\n : tab === 'all'\n ? 'wenda'\n : tab\n : `${tab}-${sort}`\n\n const realPage = page && page > 1 ? page : ''\n\n const append = tabSort\n ? `${tabSort}${realPage ? `-${realPage}` : ''}`\n : realPage\n\n return `/community/${id}${append ? `/${append}` : ''}`\n}\n\ninterface ICommunityLink {\n id?: string\n tab?: string\n}\n\nfunction communityLink({ id, tab }: ICommunityLink): Wrapper {\n const herf =\n id && tab === 'koubei' ? `/auto/series/score/${id}-x-x-x-x-x-x` : ''\n\n // const herf = id\n // ? `/community/${id}${tab ? `/${tab}` : ''}`\n // : `/car_fans_community`\n // const as = id\n // ? `/community/${id}${tab ? `/${tab}` : ''}`\n // : `/car_fans_community`\n\n return (content) =>\n id ? (\n \n \n {content}\n \n \n \n ) : (\n content\n )\n}\n\nexport function allCommunityLink(): Wrapper {\n return (content) => (\n \n \n {content}\n \n \n \n )\n}\n\nexport default communityLink\n","import { Wrapper } from 'lib/noop-wrapper'\nimport React from 'react'\nimport Link from 'next/link'\nimport serializeObject from '@arsenal/arsenal/modules/serializeObject'\nimport { isNewVersion } from 'lib/version'\n\nexport interface IKoubeiLinkParams {\n id?: string\n anchorId?: 'comment' | ''\n zt?: string\n title?: string\n rel?: string\n}\n\nfunction koubeiLink({\n id,\n zt,\n anchorId,\n title,\n rel,\n}: IKoubeiLinkParams): Wrapper {\n return (content) =>\n id ? (\n \n \n {content}\n \n \n \n ) : (\n content\n )\n}\n\nexport default koubeiLink\n","import React from 'react'\nimport { Wrapper } from 'lib/noop-wrapper'\nimport { allDefaultSort, seoDefaultTab } from 'New/community-topic/utils'\n\nexport function makeTopicUrl({\n id,\n tab = seoDefaultTab,\n sort = allDefaultSort,\n page,\n}: {\n id: string\n tab?: string\n sort?: string\n page?: number\n}) {\n const tabSort =\n sort === allDefaultSort\n ? tab === seoDefaultTab\n ? ''\n : tab\n : `${tab}-${sort}`\n\n const realPage = page && page > 1 ? page : ''\n\n const append = tabSort\n ? `${tabSort}${realPage ? `-${realPage}` : ''}`\n : realPage\n\n return `/topic/${id}${append ? `/${append}` : ''}`\n}\n\ninterface ITopicLinkParams {\n id?: string\n}\n\nfunction topicLink({ id }: ITopicLinkParams): Wrapper {\n return (content) => {\n return id ? (\n \n {content}\n \n ) : (\n content\n )\n }\n}\n\nexport default topicLink\n","import { Wrapper } from 'lib/noop-wrapper'\nimport React from 'react'\nimport serializeObject from '@arsenal/arsenal/modules/serializeObject'\n\nexport interface IUgcDetailLinkParams {\n id?: string\n anchorId?: 'comment' | ''\n zt?: string\n rel?: string\n title?: string\n}\n\nfunction ugcDetailLink({\n id,\n zt,\n anchorId,\n rel,\n title,\n}: IUgcDetailLinkParams): Wrapper {\n return (content) =>\n id ? (\n \n \n {content}\n \n \n \n ) : (\n content\n )\n}\n\nexport default ugcDetailLink\n","import React, {\n ReactNode,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from 'react'\nimport classNames from 'classnames'\nimport ToolTip, { IProps as IToolTipProps } from 'Components/new/tool-tip'\nimport { Wrapper } from 'lib/noop-wrapper'\nimport { unstable_batchedUpdates } from 'react-dom'\nimport batchedUpdates from 'lib/batched-updates'\n\ninterface IItemProps {\n onChange(isIntersecting: boolean): void\n tag?: keyof HTMLElementTagNameMap\n}\n\nconst Item: React.FC = ({ children, onChange, tag }) => {\n const rootRef = useRef(null)\n const markRef = useRef(null)\n const isIntersectingRef = useRef(true)\n const Tag: any = tag\n useEffect(() => {\n const observe = new IntersectionObserver(\n (changes) => {\n changes.forEach((change) => {\n if (isIntersectingRef.current !== change.isIntersecting) {\n batchedUpdates(() => {\n onChange(change.isIntersecting)\n })\n }\n isIntersectingRef.current = change.isIntersecting\n })\n },\n {\n rootMargin: '-1px 0px',\n root: rootRef.current!.parentElement,\n }\n )\n observe.observe(rootRef.current!)\n return () => {\n observe.disconnect()\n }\n }, [onChange])\n\n return (\n \n {children}\n \n )\n}\n\ninterface IProps {\n itemCount: number\n children(params: {\n index: number\n isInMore?: boolean\n isCover?: boolean\n close?(): void\n }): ReactNode\n className?: string\n onTipShow?: IToolTipProps['onTipShow']\n renderMoreWrapper(contentCount: number): Wrapper\n renderMoreButton?(showTips: number): ReactNode\n activeIndex: number\n onChange?(moreIndexes: number[]): void\n listTag?: keyof HTMLElementTagNameMap\n itemTag?: keyof HTMLElementTagNameMap\n}\n\nconst OverflowTooltip = ({\n itemCount,\n children,\n className,\n renderMoreWrapper,\n renderMoreButton,\n activeIndex,\n onTipShow,\n onChange,\n listTag = 'div',\n itemTag = 'div',\n}: IProps) => {\n const [moreIndexes, setMoreIndexes] = useState([])\n const moreIndexesRef = useRef(moreIndexes)\n const isPauseRef = useRef(false)\n\n const handleChange = (index: number, isIntersecting: boolean) => {\n if (isPauseRef.current) return\n if (isIntersecting) {\n setMoreIndexes((prev) => {\n const i = prev.findIndex((d) => d === index)\n if (i !== -1) {\n prev.splice(i, 1)\n }\n return [...prev]\n })\n } else {\n setMoreIndexes((prev) => {\n if (prev.some((d) => d === index)) {\n return prev\n } else {\n return [...prev, index].sort((a, b) => a - b)\n }\n })\n }\n }\n\n const handleTipShow = useCallback(() => {\n isPauseRef.current = true\n if (onTipShow) onTipShow()\n }, [onTipShow])\n\n const handleTipClose = useCallback(() => {\n isPauseRef.current = false\n }, [])\n\n useEffect(() => {\n if (moreIndexesRef.current !== moreIndexes && onChange) {\n onChange(moreIndexes)\n }\n moreIndexesRef.current = moreIndexes\n }, [onChange, moreIndexes])\n\n const isActiveInMore = moreIndexes.includes(activeIndex)\n const ListTag: any = listTag\n return (\n \n
\n \n {Array.from({ length: itemCount }).map((item, index) => {\n return (\n \n handleChange(index, isIntersecting)\n }\n tag={itemTag}\n >\n {children({\n index,\n isCover: index === moreIndexes[0] - 1 && isActiveInMore,\n })}\n {index === moreIndexes[0] - 1 && isActiveInMore ? (\n
\n {children({ index: activeIndex })}\n
\n ) : null}\n \n )\n })}\n
\n {moreIndexes.length ? (\n \n renderMoreWrapper(moreIndexes.length)(\n \n {moreIndexes.map((item) => {\n return (\n \n {children({\n index:\n item === activeIndex ? moreIndexes[0] - 1 : item,\n isInMore: true,\n close,\n })}\n \n )\n })}\n \n )\n }\n onTipShow={handleTipShow}\n onTipClose={handleTipClose}\n >\n {renderMoreButton ||\n ((showTips) => (\n \n 更多\n \n \n ))}\n \n ) : null}\n
\n
\n )\n}\n\nexport default OverflowTooltip\n","/* eslint-disable indent */\nimport React, { CSSProperties, ReactChild, useCallback, useMemo } from 'react'\nimport noopWrapper, { Wrapper } from 'lib/noop-wrapper'\nimport classNames from 'classnames'\n\nexport const calcMaxPage = (total: number, pageSize: number) => {\n return Math.floor((total - 1) / pageSize) + 1\n}\n\ninterface IProps {\n currentPage?: number // 当前页\n pageSize?: number // 每页数量\n total?: number // 数据总数\n pagerCount?: number // 显示的页码按钮的数量\n showJump?: boolean\n renderLink?(curPage: number): Wrapper\n onJump?(curPage: number): void\n onClick?(curPage: number): void\n onNextPrevClick?(curPage: number, key?: string): void\n className?: string\n theme?: 'gray' | 'white'\n style?: CSSProperties\n}\n\nconst Pagination: React.FC = ({\n currentPage = 0,\n pageSize = 0,\n total = 0,\n pagerCount = 3,\n showJump = true,\n renderLink = () => noopWrapper,\n onJump,\n onClick,\n onNextPrevClick,\n className,\n theme,\n style,\n}) => {\n const realCurPage = useMemo(() => currentPage - 1, [currentPage])\n\n const maxPage = useMemo(\n () => calcMaxPage(total, pageSize) - 1,\n [total, pageSize]\n )\n\n const curPagerCount = useMemo(\n () => Math.min(maxPage, pagerCount),\n [maxPage, pagerCount]\n )\n\n const startPage = useMemo(() => {\n const half = Math.floor(pagerCount / 2)\n\n let result = realCurPage - half\n\n if (maxPage - realCurPage <= half) {\n result = maxPage - curPagerCount\n }\n\n return Math.max(1, result)\n }, [realCurPage, pagerCount, maxPage])\n\n const renderItem = useCallback(\n ({ page, key }: { page: number; key?: string }) => {\n const enabled = page >= 0 && page <= maxPage\n\n return (content?: ReactChild) => (\n \n \n {(enabled ? renderLink(page + 1) : noopWrapper)(\n {\n if (!enabled) return\n if (content && onNextPrevClick) onNextPrevClick(page + 1, key)\n else if (onClick) onClick(page + 1)\n }}\n >\n {content || page + 1}\n \n )}\n \n \n \n )\n },\n [renderLink, realCurPage, maxPage, onClick]\n )\n\n return total ? (\n \n \n
    \n {renderItem({ page: realCurPage - 1, key: 'prev' })(\n \n )}\n {renderItem({ page: 0 })()}\n {startPage > 1\n ? renderItem({\n page: Math.max(realCurPage - curPagerCount, 0),\n key: 'jump-prev',\n })(\n \n \n \n \n )\n : null}\n {Array.from({ length: curPagerCount }).map((item, index) => {\n return renderItem({ page: startPage + index })()\n })}\n {startPage + curPagerCount < maxPage\n ? renderItem({\n page: Math.min(realCurPage + curPagerCount, maxPage),\n key: 'jump-next',\n })(\n \n \n \n \n )\n : null}\n {maxPage >= startPage + curPagerCount\n ? renderItem({ page: maxPage })()\n : null}\n {renderItem({ page: realCurPage + 1, key: 'next' })(\n \n )}\n
\n {showJump && (\n
\n 前往\n \n e.keyCode === 13 &&\n onJump?.(\n Math.min(\n maxPage + 1,\n Number((e.target as HTMLInputElement).value) || 1\n )\n )\n }\n onInput={(e) => {\n e.currentTarget.value = e.currentTarget.value.replace(/\\D/g, '')\n }}\n />\n 页\n
\n )}\n \n \n
\n ) : null\n}\n\nexport default Pagination\n","import React, {\n ReactNode,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport classNames from 'classnames'\nimport {\n computedResponsive,\n IResponsiveType,\n responsiveTypes,\n useResponsive,\n} from 'Components/hooks/use-responsive'\nimport { unstable_batchedUpdates } from 'react-dom'\nimport { SpiderContext } from '../../../pages/_app'\n\ntype Grids = number[][]\n\nfunction makeGrids(count: number, cols: number, rows: number) {\n const screen = cols * rows\n const screens = ~~(count / screen)\n if (!screens) {\n // 数量不足的布局逻辑 优先横向填充\n const realRows = Math.ceil(count / cols)\n const grids: Grids = Array.from({ length: realRows }).map(() => [])\n for (let row = 0; row < realRows; row++) {\n for (let col = 0; col < cols; col++) {\n const current = row * cols + col\n if (current >= count) {\n break\n }\n grids[row].push(current)\n }\n }\n return grids\n }\n // 数量充足的布局逻辑 优先纵向填充\n const grids: Grids = Array.from({ length: rows }).map(() => [])\n for (let i = 0; i < screens; i++) {\n for (let row = 0; row < rows; row++) {\n for (let col = 0; col < cols; col++) {\n grids[row].push(screen * i + row * cols + col)\n }\n }\n }\n const lastCols = Math.ceil((count - screen * screens) / rows)\n for (let row = 0; row < rows; row++) {\n for (let col = 0; col < lastCols; col++) {\n const current = screen * screens + row * lastCols + col\n if (current >= count) {\n break\n }\n grids[row].push(current)\n }\n }\n return grids\n}\n\nexport type ResponsiveConfig = {\n [key in IResponsiveType]: number\n}\n\nexport interface INavigation {\n prevEl?: HTMLElement | null\n nextEl?: HTMLElement | null\n}\n\ninterface IProps {\n slideCount: number\n cols: ResponsiveConfig\n rows: ResponsiveConfig\n gap?: number\n speed?: number\n slideClass: string\n children(params: { index: number; activeIndex: number }): ReactNode\n navigation?: INavigation\n onSlideChange?(activeIndex: number): void\n className?: string\n tag?: 'ul' | 'ol' | 'div'\n}\n\nconst ResponsiveSwiper = ({\n slideCount,\n cols,\n rows,\n gap = 0,\n speed = 300,\n slideClass,\n children,\n navigation,\n onSlideChange,\n className,\n tag = 'div',\n}: IProps) => {\n const [isClient, setIsClient] = useState(false)\n const [realCols, setRealCols] = useState(0)\n const [realRows, setRealRows] = useState(0)\n // const { isSpider } = useContext(SpiderContext)\n const [grids, setGrids] = useState(() => [\n Array.from({\n length: Math.min(\n Math.max(...responsiveTypes.map((d) => cols[d] * rows[d])),\n slideCount\n ),\n }).map((item, index) => index),\n ])\n const responsive = useResponsive()\n const [activeIndex, setActiveIndex] = useState(0)\n const [visited, setVisited] = useState>({\n [activeIndex]: true,\n })\n const activeIndexRef = useRef(0)\n const [maxOffset, setMaxOffset] = useState(0)\n const [needTransition, setNeedTransition] = useState(true)\n\n useEffect(() => {\n unstable_batchedUpdates(() => {\n setRealRows(rows[computedResponsive()])\n setRealCols(cols[computedResponsive()])\n setIsClient(true)\n })\n }, [rows, cols, responsive])\n\n const screen = useMemo(() => realCols * realRows, [realCols, realRows])\n\n useEffect(() => {\n if (isClient) {\n unstable_batchedUpdates(() => {\n const screens = ~~(slideCount / screen)\n const lastCols = Math.ceil((slideCount - screen * screens) / realRows)\n setMaxOffset(screens - (realCols - lastCols) / realCols)\n setGrids(makeGrids(slideCount, realCols, realRows))\n })\n }\n }, [slideCount, screen, realCols, realRows, isClient])\n\n const { prevEl, nextEl } = navigation || {}\n useEffect(() => {\n const handlePrev = () => {\n setNeedTransition(true)\n setActiveIndex((prevState) => Math.max(prevState - 1, 0))\n }\n const handleNext = () => {\n setNeedTransition(true)\n setActiveIndex((prevState) =>\n Math.min(prevState + 1, Math.ceil(maxOffset))\n )\n }\n if (prevEl) {\n prevEl.addEventListener('click', handlePrev)\n }\n if (nextEl) {\n nextEl.addEventListener('click', handleNext)\n }\n\n return () => {\n if (prevEl) {\n prevEl.removeEventListener('click', handlePrev)\n }\n if (nextEl) {\n nextEl.removeEventListener('click', handleNext)\n }\n }\n }, [prevEl, nextEl, maxOffset])\n\n useEffect(() => {\n const disableClass = 'swiper-button-disabled'\n if (prevEl) {\n prevEl.classList[activeIndex === 0 ? 'add' : 'remove'](disableClass)\n }\n if (nextEl) {\n nextEl.classList[activeIndex === Math.ceil(maxOffset) ? 'add' : 'remove'](\n disableClass\n )\n }\n }, [activeIndex, prevEl, nextEl, maxOffset])\n\n useEffect(() => {\n if (activeIndexRef.current !== activeIndex) {\n if (onSlideChange) onSlideChange(activeIndex)\n }\n activeIndexRef.current = activeIndex\n }, [activeIndex, onSlideChange])\n\n useEffect(() => {\n setVisited((prevState) => ({ ...prevState, [activeIndex]: true }))\n }, [activeIndex])\n\n const counts = useMemo(() => {\n return responsiveTypes.map((d) => cols[d] * rows[d])\n }, [cols, rows])\n\n const WrapTag: any = tag\n\n const InnerTag: any = tag === 'div' ? 'div' : 'li'\n\n return (\n \n
\n \n {grids.map((indexes, index) => {\n return (\n \n {indexes.map((index) => {\n const hidden = responsiveTypes.map(\n (d, i) => index >= counts[i]\n )\n const isHidden = hidden.every(Boolean)\n const isBlock = !hidden.some(Boolean)\n\n const needRender = visited[~~(index / screen)]\n\n return needRender ? (\n \n {children({ index, activeIndex })}\n \n ) : null\n })}\n \n )\n })}\n
\n \n \n
\n )\n}\n\nexport default ResponsiveSwiper\n","import React from 'react'\nimport classNames from 'classnames'\n\ninterface IBubbleNavProps {\n onClick?: (e: React.MouseEvent) => void\n className?: string\n onActivate: (index: string) => void\n items: Array<{\n key: string\n value: any\n }>\n activeIndex: string\n}\n\nexport default function BubbleNav({\n className,\n onActivate,\n onClick,\n items,\n activeIndex,\n}: IBubbleNavProps) {\n const renderItems = (items: Array) =>\n items.map(({ key, value }) => {\n return (\n {\n onActivate(key)\n }}\n >\n {value}\n \n \n )\n })\n\n return (\n \n {renderItems(items)}\n \n \n )\n}\n","import React, { useState } from 'react'\n\nexport interface ITextAreaProps {\n max_words?: number\n rows?: number\n cols?: number\n onChange: (content: string) => void\n content: string\n placeholder: string\n className?: string\n}\n\nexport default function TextArea(props: ITextAreaProps) {\n const { max_words = 2000, content, onChange, placeholder, className } = props\n const [isFocused, setFocused] = useState(false)\n const handleChange = (evt: any) => {\n const { value = '' } = evt.target\n onChange(value)\n }\n\n const handleFocus = () => {\n setFocused(true)\n }\n const handleBlur = () => {\n setFocused(false)\n }\n\n return (\n
\n \n
\n 还可以输入 \n {max_words - content.length}\n  字\n
\n\n \n
\n )\n}\n","import React, { useCallback } from 'react'\nimport CloseIcon from 'Components/close-icon'\n\nconst delete_icon = require('static/delete-icon.png')\nconst delete_icon_hover = require('static/trash-bin-hover.png')\ninterface IControllerCardProps {\n text: string\n icon: string\n name: string\n title: string\n children?: React.ReactNode\n showChildren?: boolean\n onClick?: (name: string) => void\n onDeleteAll: () => void\n onClose: () => void\n showDelete: boolean\n disabled?: boolean\n}\n\nexport default function ControllerCard(props: IControllerCardProps) {\n const {\n text,\n icon,\n name,\n title,\n children,\n showChildren = false,\n onClick,\n onClose,\n showDelete,\n onDeleteAll,\n disabled = false,\n } = props\n const handleClick = useCallback(() => {\n if (!disabled && onClick) {\n onClick(name)\n }\n }, [onClick])\n return (\n
\n
\n \n {text}\n {showDelete && (\n {\n e.stopPropagation()\n e.preventDefault()\n onDeleteAll()\n }}\n />\n )}\n {name === 'video' && (\n
支持3s-60s
\n )}\n
\n {showChildren && (\n
\n \n

{title}

\n {children}\n
\n )}\n \n
\n )\n}\n","import React, { SyntheticEvent, useCallback, useEffect, useState } from 'react'\nimport classNames from 'classnames'\n\nconst delete_red_icon = require('static/delete-red.png')\nconst upload_icon = require('static/upload-icon.png')\n\ninterface IImageUploader {\n onChange: (files: FileList | null) => void\n onDeleteItem: (index: number) => void\n imgList: (string | ArrayBuffer | null)[]\n}\n\nexport default function ImageUploader(props: IImageUploader) {\n const { onChange, onDeleteItem, imgList } = props\n\n const handleChooseImg = useCallback(\n (eve: React.ChangeEvent) => {\n const { files } = eve.target\n onChange(files)\n },\n [onChange]\n )\n\n const handleDrag = (e: SyntheticEvent) => {\n e.stopPropagation()\n e.preventDefault()\n }\n const handleDragEnter = (e: SyntheticEvent) => {\n e.stopPropagation()\n e.preventDefault()\n }\n const handleDragOver = (e: SyntheticEvent) => {\n e.stopPropagation()\n e.preventDefault()\n }\n const handleDrop = useCallback(\n (e: React.DragEvent) => {\n e.stopPropagation()\n e.preventDefault()\n const dt = e.dataTransfer\n const { files } = dt\n\n onChange(files)\n },\n [onChange]\n )\n const handleInputClick = useCallback(\n (event: React.MouseEvent) => {\n const element = event.target as HTMLInputElement\n element.value = ''\n },\n []\n )\n\n return (\n
\n

\n 已上传 {imgList.length}\n  张,最多上传9张\n

\n\n
\n {imgList.map((img, index) => (\n \n onDeleteItem(index)}\n className=\"delete-red-icon\"\n />\n \n ))}\n {imgList.length < 9 && (\n
\n \n
\n )}\n
\n\n \n
\n )\n}\n","import React, { useCallback, useRef } from 'react'\nimport Button from 'Components/button'\nimport classNames from 'classnames'\n\ninterface IVideoUploader {\n onChange: (file: File | undefined) => void\n videoFile: File | undefined\n onConfirmUpload: () => void\n saved: boolean\n loading: boolean\n errMsg: string\n}\n\nexport default function VideoUploader(props: IVideoUploader) {\n const { onChange, videoFile, onConfirmUpload, saved, errMsg, loading } = props\n const inputRef = useRef(null)\n\n const handleChooseVideo = useCallback(\n (eve: React.ChangeEvent) => {\n const { files } = eve.target\n onChange(files?.[0])\n },\n [onChange]\n )\n const handleReUpload = useCallback(() => {\n if (inputRef.current) {\n inputRef.current.click()\n }\n }, [])\n\n return (\n
\n
\n {!videoFile ? (\n 视频文件\n ) : (\n

{videoFile?.name}

\n )}\n \n
\n

{errMsg}

\n
\n {saved || errMsg !== '' ? (\n \n 重新上传\n \n ) : (\n \n 确认上传\n \n )}\n
\n \n
\n )\n}\n","export const getKey = (type: string, activeNow: string) => {\n switch (activeNow) {\n case 'picture':\n return `${type}_FOR_PICTURE`\n case 'video':\n return `${type}_FOR_VIDEO`\n case 'qa':\n return `${type}_FOR_QA`\n default:\n throw new Error('unknown active index')\n }\n}\n","import getUrl from 'lib/url'\nimport fetch from 'lib/decorated-fetch'\n// 获取车品牌信息\nconst getBrandInfo = async () => {\n try {\n const json = await fetch(\n getUrl(\n '/motor/brand/v4/brand/?hot_brand=0&no_sales=1&is_config=0&version_code=476&version_name=4.7.6'\n )\n )\n return json.data?.filter((item: any) => item.type === '1001')\n } catch (error) {\n console.error(error)\n return []\n }\n}\n\nexport default getBrandInfo\n","import getUrl from 'lib/url'\nimport { stringify } from 'querystring'\nimport fetch from 'lib/decorated-fetch'\n\ninterface Params {\n type: '1' | '2'\n brand_id: string\n query: string\n series_id: string\n}\n\nconst getCarFansOptions = async ({\n type,\n brand_id = '',\n query = '',\n series_id = '',\n}: Params) => {\n const params = {\n query,\n brand_id,\n series_id,\n count: 100,\n offset: 0,\n type,\n }\n try {\n const json = await fetch(\n getUrl(\n `/motor/cheyou_community/api/get_community_by_name/?${stringify(\n params\n )}`\n ),\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json;charset=utf-8',\n },\n body: stringify(params),\n }\n )\n return json.data?.hits\n } catch (error) {\n console.error('获取车友圈失败', error)\n return []\n }\n}\n\nexport default getCarFansOptions\n","import React, { useCallback, useEffect, useMemo, useState } from 'react'\nimport TextField from '@material-ui/core/TextField'\nimport Autocomplete from '@material-ui/lab/Autocomplete'\nimport Button from 'Components/button'\nexport interface CommunitySelectorStates {\n type: '1' | '2'\n form: {\n brand_id: string\n query: string\n series_id: string\n }\n params: {\n series_id: string\n motor_id: string\n motor_name: string\n }\n}\ninterface ICommunitySelector {\n onCommunityTypeChange: (v: '1' | '2') => void\n onBrandChange: (v: string | null) => void\n onCommunityChange: (v: string | null) => void\n brandList: any[]\n carFansOptions: any[]\n onCancel: () => void\n onConfirm: () => void\n communityValue: string | undefined\n states: CommunitySelectorStates\n defaultCommunity?: {\n series_id: string\n series_name: string\n }\n}\n//const { Option } = Select\nexport default function CommunitySelector(props: ICommunitySelector) {\n const {\n onCommunityTypeChange,\n onBrandChange,\n onCommunityChange,\n communityValue,\n onCancel,\n onConfirm,\n states,\n brandList,\n carFansOptions,\n } = props\n const {\n type,\n form: { brand_id, query },\n params: { series_id, motor_id, motor_name },\n } = states\n const [brandInputValue, setBrandInputValue] = useState('')\n const [communityInputValue, setCommunityInputValue] = useState('')\n const brand_value = useMemo(() => {\n const the_brand = brandList?.find(\n e => e?.info?.brand_id === Number(brand_id)\n )\n const { brand_name, brand_id: bid } = the_brand?.info || {}\n if (brand_name && bid) {\n return `${brand_name}_${bid}`\n }\n }, [brandList, brand_id])\n\n useEffect(() => {\n if (!communityValue) {\n setCommunityInputValue('')\n return\n }\n setCommunityInputValue(communityValue.split('_')[0])\n }, [communityValue])\n useEffect(() => {\n if (!brand_value) {\n setBrandInputValue('')\n return\n }\n setBrandInputValue(brand_value.split('_')[0])\n }, [brand_value])\n\n const brandOptions = useMemo(() => {\n return brandList\n .filter(item => !!item.info?.brand_id)\n .map(item => `${item.info.brand_name}_${item.info.brand_id}`)\n }, [brandList])\n\n const renderBrands = useCallback((option: string) => {\n const name = option?.split('_')\n if (name) {\n name.splice(-1)\n }\n return name?.join('')\n }, [])\n\n const communityOptions = useMemo(() => {\n return carFansOptions.map(\n ({ motor_id, name, series_id }) => `${name}_${series_id}_${motor_id}`\n )\n }, [carFansOptions])\n\n const renderCommunities = useCallback((option: string) => {\n const name = option?.split('_')\n if (name) {\n name.splice(-2)\n }\n return name?.join('')\n }, [])\n return (\n <>\n
\n
\n
选择圈子
\n onCommunityTypeChange(value as '1' | '2')}\n options={['1', '2']}\n getOptionLabel={option => {\n switch (option) {\n case '1':\n return '车系圈子'\n\n case '2':\n return '其他圈子'\n\n default:\n return ''\n }\n }}\n renderOption={option => {\n switch (option) {\n case '1':\n return '车系圈子'\n\n case '2':\n return '其他圈子'\n\n default:\n return ''\n }\n }}\n renderInput={params => (\n \n )}\n />\n
\n {type === '1' && (\n
\n
选择品牌
\n {\n onBrandChange(value)\n }}\n onInputChange={(e, value) => {\n setBrandInputValue(value)\n }}\n options={brandOptions}\n getOptionLabel={renderBrands}\n renderOption={renderBrands}\n renderInput={params => (\n \n )}\n />\n
\n )}\n
\n
选择车友圈
\n {\n onCommunityChange(value)\n }}\n onInputChange={(e, value) => {\n setCommunityInputValue(value)\n }}\n inputValue={communityInputValue}\n options={communityOptions}\n getOptionLabel={renderCommunities}\n renderOption={renderCommunities}\n renderInput={params => (\n \n )}\n />\n
\n
\n \n \n 确认\n \n
\n
\n \n \n )\n}\n","import React, {\n SyntheticEvent,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport moment, { Moment } from 'moment'\nimport classnames from 'classnames'\nconst clock = require('static/clock@3x.png')\n\ninterface ITimeColumn {\n type: 'minute' | 'second' | 'hour'\n reverse?: boolean\n active?: number\n onSelect: (type: 'hour' | 'minute' | 'second', value: number) => void\n filtered: number[]\n}\n\nexport interface ITime {\n hour: number\n minute: number\n second: number\n}\n\ninterface ITimePicker {\n value: Moment\n onChange: (t: ITime) => void\n className?: string\n momentIsSelected: boolean\n}\n\nconst hours: number[] = []\nconst minutes: number[] = []\nconst seconds: number[] = []\nfor (let i = 0; i <= 59; i++) {\n if (i <= 23) {\n hours.push(i)\n }\n minutes.push(i)\n seconds.push(i)\n}\n\nconst TimeColumn = (props: ITimeColumn) => {\n const { type, reverse = false, active, onSelect, filtered } = props\n\n const collectionRef = useRef(null)\n let collection: number[]\n switch (type) {\n case 'hour':\n collection = hours\n break\n case 'minute':\n collection = minutes\n break\n case 'second':\n collection = seconds\n break\n default:\n collection = []\n break\n }\n if (reverse) {\n collection = collection.reverse()\n }\n useEffect(() => {\n if (collectionRef.current) {\n const activeLi = collectionRef.current.querySelector('.active')\n if (activeLi) {\n activeLi.scrollIntoView()\n }\n }\n }, [active])\n\n return (\n
\n
    \n {collection.map((item, index) => (\n {\n if (filtered.includes(item)) {\n return\n }\n onSelect(type, item)\n }}\n >\n {item < 10 ? `0${item}` : item}\n \n ))}\n
\n \n
\n )\n}\n\nexport default function TimePicker(props: ITimePicker) {\n const { value, onChange, momentIsSelected } = props\n const [hour, setHour] = useState(0)\n const [minute, setMinute] = useState(0)\n const [second, setSecond] = useState(0)\n const fakeInputRef = useRef(null)\n const [open, setOpen] = useState(false)\n useEffect(() => {\n if (value) {\n setHour(value.hour())\n setMinute(value.minute())\n setSecond(value.second())\n }\n }, [value])\n\n const handleSelect = (type: 'hour' | 'minute' | 'second', value: number) => {\n switch (type) {\n case 'hour':\n setHour(value)\n if (minute && second) {\n onChange({ hour: value, minute, second })\n }\n break\n case 'minute':\n setMinute(value)\n if (hour && second) {\n onChange({ minute: value, hour, second })\n }\n break\n case 'second':\n setSecond(value)\n if (minute && hour) {\n onChange({ second: value, minute, hour })\n }\n break\n }\n }\n const handleFocus = useCallback(e => {\n setOpen(true)\n }, [])\n const handleContainerBlur = useCallback(() => {\n setOpen(false)\n }, [])\n const handleContainerFocus = useCallback(() => {\n if (fakeInputRef.current) {\n fakeInputRef.current.blur()\n }\n }, [])\n const handleIconClick = useCallback(e => {\n setOpen(true)\n }, [])\n const containerRef = (node: HTMLDivElement | null) => {\n if (!node) {\n return\n }\n if (fakeInputRef.current) {\n fakeInputRef.current.blur()\n }\n node.focus()\n }\n\n const [filteredHours, setFilteredHours] = useState([])\n const [filteredMinutes, setFilteredMinutes] = useState([])\n const [filteredSeconds, setFilteredSeconds] = useState([])\n useEffect(() => {\n const tenMinLater = moment().add(10, 'minutes')\n const laterHour = tenMinLater.hour()\n const laterMin = tenMinLater.minute()\n const laterSec = tenMinLater.second()\n if (value.date() <= tenMinLater.date()) {\n setFilteredHours([...Array(laterHour).keys()])\n if (hour <= laterHour) {\n setFilteredMinutes([...Array(laterMin).keys()])\n if (minute <= laterMin) {\n setFilteredSeconds([...Array(laterSec).keys()])\n } else {\n setFilteredSeconds([])\n }\n } else {\n setFilteredMinutes([])\n setFilteredSeconds([])\n }\n } else {\n setFilteredHours([])\n setFilteredMinutes([])\n setFilteredSeconds([])\n }\n }, [value, hour, minute, second])\n\n return (\n
\n \n \n\n \n
\n {open && (\n \n \n \n \n \n )}\n\n \n \n )\n}\n","import React, { useState } from 'react'\nimport moment, { Moment } from 'moment'\nimport Button from 'Components/button'\nimport {\n KeyboardDatePicker,\n MuiPickersUtilsProvider,\n} from '@material-ui/pickers'\nimport MomentUtils from '@date-io/moment'\nimport TimePicker, { ITime } from './time-picker'\nmoment.locale('zh-cn', {\n weekdays: ['日', '一', '二', '三', '四', '五', '六'],\n weekdaysShort: ['日', '一', '二', '三', '四', '五', '六'],\n weekdaysMin: ['日', '一', '二', '三', '四', '五', '六'],\n week: { dow: 1 },\n})\nmoment.weekdays(true)\n\nconst calendar_icon = require('static/calendar@3x.png')\n\ninterface IProps {\n onCancel: () => void\n onConfirm: () => void\n value: Moment\n momentIsSelected: boolean\n onDateChange: (t: Moment | undefined) => void\n onTimeChange: (t: ITime) => void\n}\n\nclass LocalizedUtils extends MomentUtils {\n getCalendarHeaderText(date: Moment) {\n return date.format('YYYY年M月')\n }\n}\n\nexport default function DatetimeSelector(props: IProps) {\n const {\n onCancel,\n onConfirm,\n value,\n onTimeChange,\n onDateChange,\n momentIsSelected,\n } = props\n const [isOpen, setIsOpen] = useState(false)\n return (\n <>\n
\n \n {\n setIsOpen(false)\n onDateChange(m || undefined)\n }}\n inputVariant=\"outlined\"\n variant=\"inline\"\n disableToolbar={true}\n disablePast={true}\n allowKeyboardControl={false}\n format=\"YYYY-MM-DD\"\n emptyLabel={moment().format('YYYY-MM-DD')}\n orientation=\"landscape\"\n keyboardIcon={}\n KeyboardButtonProps={{\n onFocus: e => {\n setIsOpen(true)\n },\n }}\n PopoverProps={{\n disableRestoreFocus: true,\n onClose: () => {\n setIsOpen(false)\n },\n }}\n InputProps={{\n onFocus: () => {\n setIsOpen(true)\n },\n }}\n open={isOpen}\n />\n \n \n
\n\n
\n \n \n
\n \n \n )\n}\n","import React, { SyntheticEvent, useCallback, useEffect, useState } from 'react'\nimport Loading from 'Components/loading'\nimport Button from 'Components/button'\n\ninterface ITopicSelector {\n chooseTopic: (t: ITopic) => void\n inputValue: string\n onChange: (e: SyntheticEvent) => void\n topicState: {\n topicList: ITopic[]\n loaded: boolean\n keyword: string\n }\n}\n\nexport interface ITopic {\n name: string\n user_count: number\n intro: string\n}\nexport default function TopicSelector(props: ITopicSelector) {\n const { chooseTopic, inputValue, onChange, topicState } = props\n\n const { topicList, loaded } = topicState\n return (\n
\n
\n \n \n
\n
    \n {topicList?.map((item, index) => (\n chooseTopic(item)}\n >\n

    \n {item.name}\n {item.user_count}人参与话题\n

    \n

    {item.intro}

    \n
\n ))}\n {loaded ? (\n !topicList.length ? (\n

未找到你想要的话题

\n ) : null\n ) : (\n \n )}\n \n \n \n )\n}\n","import debounce from 'lodash/debounce'\nimport getUrl from 'lib/url'\nimport { stringify } from 'querystring'\nimport fetch from 'lib/decorated-fetch'\nconst fetchResult = debounce((keyword, setState) => {\n const params = {\n offset: 0,\n limit: 30,\n sort: 'count',\n user_id: '109005472317',\n support_type: 2,\n _: Date.now(),\n keyword: undefined,\n }\n if (keyword) {\n params.keyword = keyword\n }\n fetch(\n getUrl(\n `/motor/ugc_activity/v1/${\n keyword ? 'search_activity' : 'get_list'\n }/?${stringify(params)}`\n )\n )\n .then(json => {\n setState({\n keyword,\n topicList:\n json.data?.[keyword ? 'activity_info' : 'activity_list'] || [],\n loaded: true,\n })\n })\n .catch(() => {\n console.error('获取话题列表失败,请重试')\n })\n}, 300)\n\nexport default fetchResult\n","import React, { useContext } from 'react'\nimport debounce from 'lodash/debounce'\nimport { CacheStoreContext } from 'Components/cache-store'\nconst useCache = () => {\n const { cache } = useContext(CacheStoreContext)\n if (!cache) {\n return {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n setStorage: () => {},\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n getStorage: () => {},\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n clearStorage: () => {},\n }\n }\n const _setStorage = debounce(\n (key, value, setSaving: ((b: boolean) => void) | undefined) => {\n if (setSaving) {\n setSaving(true)\n }\n console.log('storage value to be set', value)\n // window.localStorage.setItem(key, JSON.stringify(value))\n cache.set(key, value)\n if (setSaving) {\n setSaving(false)\n }\n },\n 1000\n )\n\n const setStorage = (\n key: string,\n value: any,\n setSaving: ((b: boolean) => void) | undefined\n ) => {\n if (setSaving) {\n setSaving(true)\n }\n _setStorage(key, value, setSaving)\n }\n\n const getStorage = (key: string): any => {\n // return JSON.parse(window.localStorage.getItem(key) || 'null')\n return cache.get(key) // \"value\"\n }\n\n const clearStorage = (key: string) => {\n cache.del(key)\n }\n\n return {\n setStorage,\n getStorage,\n clearStorage,\n }\n}\n\nexport default useCache\n","import React, { useContext, useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport moment, { Moment } from 'moment'\nimport ControllerCard from './controller-card'\nimport ImageUploader from './image-uploader'\nimport VideoUploader from './video-uploader'\nimport Button from 'Components/button'\nimport { getKey } from 'lib/get-key'\nimport getBrandInfo from 'lib/getBrandInfo'\nimport getCarFansOptions from 'lib/getCarFansOptions'\nimport CommunitySelector, {\n CommunitySelectorStates,\n} from './community-selector'\nimport getUrl from 'lib/url'\nimport DatetimeSelector from './datetime-selector'\nimport TopicSelector from './topic-selector'\nimport fetchResult from 'lib/fetch-topic'\nimport { ITime } from './time-picker'\nimport useCache from 'Components/hooks/use-cache-store'\nimport { getImageUrl, uploadImgList } from 'lib/image-upload'\nimport Toast from 'Components/toast-messager'\nimport fetch from 'lib/decorated-fetch'\nimport { GlobalStoreContext } from 'Components/store'\n\nconst album_icon = require('static/album.png')\nconst video_icon = require('static/video.png')\nconst community_icon = require('static/community.png')\nconst topic_icon = require('static/topic.png')\nconst timer_icon = require('static/timer.png')\nconst checked_icon = require('static/checked.png')\nconst unchecked_icon = require('static/unchecked.png')\ninterface IControllerProps {\n switches?: string[]\n setQASwitch: (s: string) => void\n setSaving?: (b: boolean) => void\n activeNow: string\n className?: string\n onPublish?: (p: IPublishProps) => void\n buttonDisabled: boolean\n publishing: boolean\n defaultCommunity?: {\n series_id: string\n series_name: string\n }\n defaultTopic?: {\n id: number | string\n name: string\n }\n}\n\nexport interface IVideoInfo {\n video_id: string\n videoInfo: {\n width?: number\n height?: number\n thumb_uri?: string\n video_duration: number\n }\n}\n\nexport interface IPublishProps {\n imgs: {\n uri: string\n url?: string\n }[]\n video: IVideoInfo | undefined\n topic: {\n id: number | string\n name: string\n }\n async_to_toutiao: boolean\n community: {\n motor_id: string\n series_id: string\n communityName: string\n }\n time: Moment | undefined\n isTimer: boolean\n}\n\nconst supportedSortedSwitches = [\n 'image',\n 'video',\n 'community',\n 'topic',\n 'publish_date',\n]\n\nexport default function Controller(props: IControllerProps) {\n const {\n switches = supportedSortedSwitches,\n setSaving,\n onPublish,\n activeNow,\n className,\n buttonDisabled,\n setQASwitch,\n publishing,\n defaultCommunity,\n defaultTopic,\n } = props\n const [activeSwitch, setActiveSwitch] = useState('')\n const [fileList, setFileList] = useState<\n { file: File; uri: string; url?: string }[]\n >([])\n const [imgList, setImgList] = useState<(string | ArrayBuffer | null)[]>([])\n const [videoFile, setVideoFile] = useState(undefined)\n const [videoInfo, setVideoInfo] = useState(undefined)\n const [videoLoading, setVideoLoading] = useState(false)\n const [videoSaved, setVideoSaved] = useState(false)\n const [errorMsg, setErrorMsg] = useState('')\n const communityTypeRef = useRef<'1' | '2'>()\n const initRef = useRef()\n const [communityStates, setCommunityStates] =\n useState({\n type: '1',\n form: {\n brand_id: '',\n query: '',\n series_id: '',\n },\n params: {\n series_id: '',\n motor_id: '',\n motor_name: '',\n },\n })\n const [brandList, setBrandList] = useState([])\n const [carFansOptions, setCarFansOptions] = useState([])\n const [topic, setTopic] = useState<{\n id: string | number\n name: string\n }>({\n name: '',\n id: 0,\n })\n const [checked, setChecked] = useState(false)\n const [momentIsSelected, setMomentSelected] = useState(false)\n const [selectedDate, setSelectedDate] = useState(\n undefined\n )\n const [selectedTime, setSelectedTime] = useState(undefined)\n const [topicState, setTopicState] = useState({\n topicList: [],\n keyword: '',\n loaded: false,\n })\n const { getStorage, setStorage, clearStorage } = useCache()\n\n const { state: globalState } = useContext(GlobalStoreContext)\n\n const communityValue = useMemo(() => {\n const {\n params: { motor_id, motor_name, series_id },\n } = communityStates\n if (motor_id === '' && motor_name === '' && series_id === '') {\n return\n }\n return `${motor_name}_${series_id}_${motor_id}`\n }, [communityStates])\n\n useEffect(() => {\n const { type } = communityStates\n if (initRef.current === undefined) {\n // 如果此effect先于拿缓存的effect 不作为\n return\n }\n if (initRef.current) {\n // 拿到缓存中的community 不作为\n initRef.current = false\n return\n }\n if (communityTypeRef.current !== type) {\n // 切换tab 清空\n setCommunityStates({\n type,\n form: {\n brand_id: '',\n query: '',\n series_id: '',\n },\n params: {\n series_id: '',\n motor_id: '',\n motor_name: '',\n },\n })\n }\n communityTypeRef.current = communityStates.type\n }, [communityStates])\n\n useEffect(() => {\n getBrandInfo().then(setBrandList)\n }, [])\n\n useEffect(() => {\n const {\n form: { brand_id, query, series_id },\n type,\n } = communityStates\n if (type === '1' && brand_id === '' && query === '' && series_id === '') {\n return\n }\n getCarFansOptions({\n type,\n ...communityStates.form,\n }).then(setCarFansOptions)\n }, [communityStates])\n\n useEffect(() => {\n // 从本地存储拿图片\n setFileList(getStorage(getKey('IMAGES', activeNow)) || [])\n }, [activeNow])\n useEffect(() => {\n // 从本地存储拿视频\n const savedVideoFile = getStorage(getKey('VIDEO', activeNow))\n const savedVideoInfo = getStorage(getKey('VIDEO_INFO', activeNow))\n setVideoFile(savedVideoFile)\n setVideoInfo(savedVideoInfo)\n setVideoSaved(!!savedVideoFile)\n }, [activeNow])\n useEffect(() => {\n // 从本地存储拿车友圈\n const storedCommunityStates = getStorage(\n getKey('COMMUNITY_STATES', activeNow)\n )\n initRef.current = true\n communityTypeRef.current = storedCommunityStates?.type || '1'\n setCommunityStates(\n storedCommunityStates || {\n type: '1',\n form: {\n brand_id: '',\n query: '',\n series_id: '',\n },\n params: {\n series_id: '',\n motor_id: '',\n motor_name: '',\n },\n }\n )\n }, [activeNow])\n useEffect(() => {\n // 从本地存储拿话题\n const storedTopic = defaultTopic || getStorage(getKey('TOPIC', activeNow))\n setTopic(\n storedTopic || {\n id: 0,\n name: '',\n }\n )\n }, [activeNow, defaultTopic])\n\n useEffect(() => {\n const readers: Promise[] = fileList.map(\n ({ file }) => {\n return new Promise((resolve, reject) => {\n const fileReader = new FileReader()\n fileReader.readAsDataURL(file)\n fileReader.onload = () => {\n resolve(fileReader.result)\n }\n fileReader.onerror = (error) => {\n reject(error)\n }\n })\n }\n )\n\n Promise.all(readers)\n .then(setImgList)\n .catch((e) => {\n console.error(e)\n })\n }, [fileList])\n\n useEffect(() => {\n if (activeNow === 'qa') {\n if (videoInfo) {\n setQASwitch('video')\n return\n }\n if (imgList.length > 0) {\n setQASwitch('image')\n return\n }\n setQASwitch('')\n }\n }, [activeNow, videoInfo, imgList, setQASwitch])\n\n const selectedMoment = useMemo(() => {\n const tenMinLater = moment().add(10, 'minutes')\n if (!selectedDate && !selectedTime) {\n return tenMinLater\n }\n const date = selectedDate || tenMinLater\n const time = selectedTime || {\n hour: tenMinLater.hour(),\n minute: tenMinLater.minute(),\n second: tenMinLater.second(),\n }\n\n const year = date.year()\n const month = date.month()\n const day = date.date()\n const { hour, minute, second } = time\n const d = new Date(year, month, day, hour, minute, second, 0)\n return moment(d)\n }, [selectedDate, selectedTime])\n useEffect(() => {\n // 从本地存储拿日期\n const storedMoment = getStorage(getKey('PUBLISH_DATE', activeNow))\n if (storedMoment) {\n setSelectedDate(storedMoment)\n setSelectedTime({\n hour: storedMoment.hour(),\n minute: storedMoment.minute(),\n second: storedMoment.second(),\n })\n setMomentSelected(true)\n }\n }, [activeNow])\n useEffect(() => {\n // 切换publisher时, switch全部关闭。\n setActiveSwitch('')\n }, [activeNow])\n\n useEffect(() => {\n const { keyword } = topicState\n fetchResult(keyword, setTopicState)\n }, [topicState.keyword])\n\n const handleClick = useCallback(\n (name: string) => {\n // 若相同,说明是要关闭。\n setActiveSwitch(activeSwitch === name ? '' : name)\n },\n [activeSwitch]\n )\n const handleClose = useCallback(() => {\n // 若相同,说明是要关闭。\n setActiveSwitch('')\n }, [])\n const handleCheckChange = useCallback(() => {\n setChecked(!checked)\n }, [checked])\n const handleImgChange = useCallback(\n async (files: FileList | null) => {\n if (!files) {\n return\n }\n const fileArray = Array.from(files).slice(0, 9)\n try {\n const resList = await uploadImgList(fileArray)\n const resUrlMap = await getImageUrl(\n resList.filter((d) => d?.uri).map((d) => d!.uri)\n )\n const newFileList = [\n ...fileList,\n ...fileArray\n .map((file, index) => ({\n file,\n uri: resList?.[index]?.uri!,\n url: resUrlMap[resList?.[index]?.uri!]?.main_url,\n }))\n .filter((d) => d.uri),\n ].slice(0, 9)\n setStorage(getKey('IMAGES', activeNow), newFileList, setSaving)\n setFileList(newFileList)\n } catch (error) {\n console.error(error)\n Toast.show({\n text: error,\n })\n }\n },\n [fileList]\n )\n const handleDeleteItem = useCallback(\n (index: number) => {\n fileList.splice(index, 1)\n setFileList([...fileList])\n try {\n setStorage(getKey('IMAGES', activeNow), fileList, setSaving)\n } catch (error) {\n console.error(error)\n }\n },\n [fileList, activeNow, setSaving]\n )\n\n const handleDeleteAll = useCallback(\n (name: string) => {\n switch (name) {\n case 'image':\n setFileList([])\n clearStorage(getKey('IMAGES', activeNow))\n return\n case 'video':\n setVideoSaved(false)\n setVideoFile(undefined)\n clearStorage(getKey('VIDEO', activeNow))\n clearStorage(getKey('VIDEO_INFO', activeNow))\n return\n case 'community':\n setCommunityStates({\n type: '1',\n form: {\n brand_id: '',\n query: '',\n series_id: '',\n },\n params: {\n series_id: '',\n motor_id: '',\n motor_name: '',\n },\n })\n clearStorage(getKey('COMMUNITY_STATES', activeNow))\n return\n case 'topic':\n setTopic({\n id: 0,\n name: '',\n })\n setTopicState({\n topicList: [],\n keyword: '',\n loaded: false,\n })\n fetchResult('', setTopicState)\n clearStorage(getKey('TOPIC', activeNow))\n return\n case 'publish_date':\n setSelectedDate(undefined)\n setSelectedTime(undefined)\n setMomentSelected(false)\n clearStorage(getKey('PUBLISH_DATE', activeNow))\n return\n }\n },\n [fileList, activeNow, setSaving]\n )\n\n const handleVideoChange = useCallback((file: File | undefined) => {\n if (!file) {\n return\n }\n setErrorMsg('')\n setVideoFile(file)\n setVideoSaved(false)\n }, [])\n\n const handleConfirmUpload = useCallback(() => {\n if (!videoFile) {\n return\n }\n if (!['video/quicktime', 'video/mp4'].includes(videoFile.type)) {\n setErrorMsg('请选择有效的视频文件(MP4, Quicktime)')\n return\n }\n setVideoLoading(true)\n fetch(getUrl('/motor/content_publish/upload_auth_token?from_pc=1'))\n .then(async (res) => {\n const { data } = res || {}\n if (!data) {\n setErrorMsg('上传失败, 请重试!')\n return\n }\n\n const stsToken = {\n CurrentTime: data.start_time,\n ExpiredTime: data.end_time,\n SessionToken: data.auth_token,\n AccessKeyID: data.access_key,\n SecretAccessKey: data.sec_key,\n AccessKeyId: data.access_key,\n }\n const BytedUploader = (await import('@byted/uploader')).default\n const bytedUploader = new BytedUploader({\n userId: globalState?.userData?.user_id || 'pc_ugc_video',\n appId: 1839,\n videoConfig: {\n spaceName: 'motor-ugc',\n processAction: [\n { name: 'GetMeta' },\n {\n name: 'Snapshot',\n input: {\n // 截图时间\n SnapshotTime: 0,\n // 是否跳过黑帧检测,黑帧检测即SnapshotTime处要是是黑帧会往后找不是黑帧的封面。默认false的情况下会找到非黑首帧作为封面\n SkipBlackDetect: false,\n },\n },\n ],\n },\n })\n const fileKey = bytedUploader.addFile({\n file: videoFile,\n stsToken,\n type: 'video',\n })\n bytedUploader.start(fileKey)\n\n bytedUploader.on('complete', (infor: any) => {\n const { uploadResult = {} } = infor || {}\n const { VideoMeta = {}, PosterUri } = uploadResult\n const duration = parseInt(VideoMeta.Duration, 10)\n if (duration < 3) {\n setErrorMsg('上传失败,视频时长需大于3秒,请重新上传')\n } else if (duration >= 3 && duration <= 60) {\n const video_info = {\n video_id: uploadResult.Vid,\n videoInfo: {\n width: VideoMeta.Wu,\n height: VideoMeta.Height,\n thumb_uri: PosterUri,\n video_duration: VideoMeta.Duration,\n },\n }\n setStorage(getKey('VIDEO_INFO', activeNow), video_info, undefined)\n setStorage(getKey('VIDEO', activeNow), videoFile, undefined)\n setVideoInfo(video_info)\n setVideoSaved(true)\n setActiveSwitch('')\n } else {\n setErrorMsg('上传失败,视频时长需小于1分钟,请重新上传')\n }\n\n setVideoLoading(false)\n })\n bytedUploader.on('error', (info: any) => {\n setErrorMsg('上传失败 无法解析文件')\n setVideoLoading(false)\n console.error(info)\n })\n })\n .catch((error) => {\n setErrorMsg('上传失败,请检查网络是否正常')\n setVideoLoading(false)\n console.error(error)\n })\n }, [videoFile, activeNow, setSaving])\n\n // 拿到车品牌信息\n const handleBrandChange = (value: string | null) => {\n if (!value) {\n return\n }\n setCommunityStates((pre) => ({\n type: pre.type,\n params: {\n motor_id: '',\n motor_name: '',\n series_id: '',\n },\n form: {\n ...pre.form,\n brand_id: value.split('_')[1] || '',\n },\n }))\n }\n\n // 更换圈子,改变选项卡\n const handleCommunityTypeChange = useCallback((type: '1' | '2') => {\n setCommunityStates((pre) => ({\n ...pre,\n type,\n }))\n }, [])\n // 取消选择\n const handleCommunityCancel = useCallback(() => {\n setCommunityStates({\n type: '1',\n form: {\n brand_id: '',\n query: '',\n series_id: '',\n },\n params: {\n series_id: '',\n motor_id: '',\n motor_name: '',\n },\n })\n }, [])\n\n const handleCommunityConfirm = useCallback(() => {\n setStorage(\n getKey('COMMUNITY_STATES', activeNow),\n communityStates,\n setSaving\n )\n setActiveSwitch('')\n }, [activeNow, setSaving, communityStates])\n\n const handleCommunityChange = useCallback(\n (value) => {\n if (!value) {\n return\n }\n const [motor_name = '', series_id = '', motor_id = ''] = value.split('_')\n setCommunityStates({\n ...communityStates,\n params: {\n motor_name,\n series_id,\n motor_id,\n },\n })\n },\n [communityStates]\n )\n\n const handleDateChange = useCallback((time) => {\n setMomentSelected(true)\n setSelectedDate(time)\n }, [])\n const handleTimeChange = useCallback((time) => {\n setMomentSelected(true)\n setSelectedTime(time)\n }, [])\n const handleTimeCancel = useCallback(() => {\n setMomentSelected(false)\n setSelectedDate(undefined)\n setSelectedTime(undefined)\n }, [])\n const handleTimeConfirm = useCallback(() => {\n setStorage(getKey('PUBLISH_DATE', activeNow), selectedMoment, setSaving)\n setActiveSwitch('')\n }, [activeNow, selectedMoment, setSaving])\n\n const handleChooseTopic = useCallback(\n (item) => {\n setStorage(getKey('TOPIC', activeNow), item, setSaving)\n setTopic(\n item || {\n id: 0,\n name: '',\n }\n )\n setActiveSwitch('')\n },\n [activeNow, setSaving]\n )\n\n const handleTopicInputChange = useCallback(\n (e) => {\n setTopicState({\n ...topicState,\n keyword: e.target.value,\n loaded: false,\n })\n },\n [topicState]\n )\n\n const handlePublish = () => {\n const community = communityValue?.split('_')\n const [communityName, series_id, motor_id] = community || []\n\n if (onPublish) {\n onPublish({\n imgs: fileList,\n video: videoInfo,\n topic,\n async_to_toutiao: checked,\n community: { motor_id, series_id, communityName },\n time: selectedMoment,\n isTimer: momentIsSelected,\n })\n }\n }\n\n const shownComponents = useMemo(() => {\n const shownSwitches = supportedSortedSwitches.filter((value) =>\n switches.includes(value)\n )\n\n return shownSwitches.map((name, index) => {\n let icon\n let text\n let title\n let component = null\n let showDelete = false\n let disabled = false\n switch (name) {\n case 'image':\n icon = album_icon\n text = fileList.length > 0 ? `已选择 ${fileList.length} 张` : '图片'\n title = '上传图片'\n component = (\n \n )\n showDelete = fileList.length > 0\n break\n case 'video':\n icon = video_icon\n text = !videoSaved ? '视频' : videoFile?.name || ''\n title = '上传视频'\n showDelete = videoSaved\n component = (\n \n )\n break\n case 'community':\n icon = community_icon\n if (defaultCommunity) {\n text = defaultCommunity.series_name\n } else {\n text = !communityValue ? '选择车友圈' : communityValue.split('_')[0]\n }\n title = '选择车友圈'\n showDelete = !!communityValue\n disabled = !!defaultCommunity\n component = (\n \n )\n break\n case 'topic':\n icon = topic_icon\n console.log('topic', topic)\n text = topic.id === 0 ? '话题' : topic.name\n title = '选择话题'\n showDelete = topic.id !== 0\n component = (\n \n )\n break\n case 'publish_date':\n icon = timer_icon\n text = momentIsSelected\n ? selectedMoment.format('YYYY-MM-DD HH:MM')\n : '定时发布'\n title = '选择要发布的时间'\n showDelete = momentIsSelected\n component = (\n \n )\n break\n default:\n throw new Error('Unknown switch.')\n }\n return (\n {\n handleDeleteAll(name)\n }}\n disabled={disabled}\n >\n {component}\n \n )\n })\n }, [\n supportedSortedSwitches,\n switches,\n activeSwitch,\n fileList,\n imgList,\n videoFile,\n videoInfo,\n videoLoading,\n communityStates,\n brandList,\n carFansOptions,\n selectedMoment,\n momentIsSelected,\n communityValue,\n topic,\n topicState,\n errorMsg,\n ])\n\n return (\n
\n
{shownComponents}
\n
\n \n \n \n \n 确认发布\n \n
\n\n \n
\n )\n}\n","import React, {\n ReactNode,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from 'react'\nimport BubbleNav from 'Components/bubble-navigation'\nimport TextArea from './TextArea'\nimport Controller, { IPublishProps } from 'Components/publisher/controller'\nimport { getKey } from 'lib/get-key'\nimport Toast from 'Components/toast-messager'\nimport { stringify } from 'querystring'\nimport {\n DELAY_PUBLISH_PICTURE_API,\n DELAY_PUBLISH_VIDEO_API,\n PUBLISH_PICTURE_API,\n PUBLISH_VIDEO_API,\n} from 'Constants/community-api'\nimport useCache from 'Components/hooks/use-cache-store'\nimport { GlobalStoreContext } from 'Components/store'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\nimport fetch from 'lib/decorated-fetch'\nimport { aid } from 'Constants/index'\n\nconst go_to_detail_icon = require('static/go-to-detail.png')\n\nexport interface IPB extends IPublishProps {\n type: string\n content: string\n gid: string\n user_id?: string\n}\n\nexport type PublishType = 'video' | 'qa' | 'picture'\n\ninterface IPublisher {\n onPublish: (p: IPB) => void\n defaultCommunity?: {\n series_id: string\n series_name: string\n }\n defaultTopic?: {\n id: number | string\n name: string\n }\n tabs?: Array<{\n key: PublishType | 'long'\n value: ReactNode\n }>\n defaultTab?: string\n}\n\nconst handleClick = (e: React.MouseEvent) => {\n e.stopPropagation()\n e.nativeEvent.stopImmediatePropagation()\n}\n\nconst LongArticleNavItem = () => (\n \n \n 长帖\n \n \n \n)\n\nexport default function Publisher({\n onPublish,\n defaultCommunity,\n defaultTopic,\n tabs = [\n { key: 'picture', value: '图文' },\n { key: 'video', value: '小视频' },\n { key: 'qa', value: '问答' },\n { key: 'long', value: },\n ],\n defaultTab,\n}: IPublisher) {\n const [activeNow, setActiveNow] = useState(defaultTab || tabs[0]?.key)\n useEffect(() => {\n setActiveNow(defaultTab || tabs[0]?.key)\n }, [defaultTab, tabs[0]?.key])\n const [content, setContent] = useState('')\n const [saving, setSaving] = useState(false)\n const [buttonDisabled, setButtonDisabled] = useState(true)\n const { getStorage, setStorage, clearStorage } = useCache()\n const { state: globalState } = useContext(GlobalStoreContext)\n const [publishing, setPublishing] = useState(false)\n useEffect(() => {\n setButtonDisabled(content === '')\n }, [content])\n\n useEffect(() => {\n setContent(getStorage(getKey('TEXT', activeNow)) || '')\n }, [activeNow])\n\n const clearLastStorage = useCallback(() => {\n ;[\n 'TEXT',\n 'VIDEO',\n 'VIDEO_INFO',\n 'IMAGES',\n 'COMMUNITY_STATES',\n 'TOPIC',\n 'PUBLISH_DATE',\n ].forEach((type) => {\n clearStorage(getKey(type, activeNow))\n })\n }, [activeNow])\n\n const handleActiveChange = useCallback((index: string) => {\n setActiveNow(index)\n }, [])\n\n const handleTextAreaChange = useCallback(\n (value: string) => {\n const slicedValue = value.slice(0, 2000)\n try {\n setStorage(getKey('TEXT', activeNow), slicedValue, setSaving)\n } catch (error) {\n console.error(error)\n }\n\n setContent(slicedValue)\n },\n [activeNow, setSaving]\n )\n\n const [qaSwitch, setQASwitch] = useState('')\n const qaSwitches = useMemo(() => {\n if (qaSwitch === '') {\n return ['image', 'video']\n }\n return [qaSwitch]\n }, [qaSwitch])\n const getSwitches = useMemo(() => {\n switch (activeNow) {\n case 'picture':\n return ['image', 'community', 'topic', 'publish_date']\n case 'video':\n return ['video', 'community', 'topic', 'publish_date']\n case 'qa':\n return [...qaSwitches, 'community', 'topic', 'publish_date']\n default:\n throw new Error()\n }\n }, [activeNow, qaSwitches])\n\n const getPlaceHolder = useMemo(() => {\n switch (activeNow) {\n case 'picture':\n return '分享汽车生活 (2000字以内)'\n case 'video':\n return '请填写5-50字的视频描述'\n case 'qa':\n return '有问必答,快速解决汽车问题'\n case 'long':\n return ''\n default:\n throw new Error('unknown active index')\n }\n }, [activeNow])\n\n const group_type = useMemo(() => {\n switch (activeNow) {\n case 'picture':\n return '图文'\n case 'video':\n return '小视频'\n case 'qa':\n return '问答'\n default:\n return\n }\n }, [activeNow])\n\n /* eslint-disable complexity */\n const handlePublish = async (props: IPublishProps) => {\n setPublishing(true)\n if (!globalState?.userData?.user_id) {\n Toast.show({\n text: '发布前需要先登录',\n })\n sendTeaCommEvent('click_article_publish_window_submit', {\n submit_status: 'failed',\n group_type,\n })\n setPublishing(false)\n return\n }\n const { imgs, video, community, topic, time, async_to_toutiao, isTimer } =\n props\n const { video_id, videoInfo } = video || {}\n const { id: act_id = 0, name: act_name } = topic || {}\n const { motor_id, series_id, communityName } = community\n\n if (\n (activeNow === 'video' || activeNow === 'qa') &&\n video &&\n content.length < 5\n ) {\n Toast.show({\n text: '视频文案至少5字',\n })\n sendTeaCommEvent('click_article_publish_window_submit', {\n submit_status: 'failed',\n group_type,\n })\n setPublishing(false)\n return\n }\n\n if (activeNow === 'video' && !video_id) {\n Toast.show({\n text: '请确认上传视频',\n })\n sendTeaCommEvent('click_article_publish_window_submit', {\n submit_status: 'failed',\n group_type,\n })\n setPublishing(false)\n return\n }\n let params: any\n let json\n try {\n if (activeNow === 'picture' || activeNow === 'qa') {\n params = {\n aid,\n sync_to_toutiao: async_to_toutiao ? '1' : '0', // 是否同步到微头条 1 是 0 否\n content, // 文本内容\n image_urls: imgs.map((e) => e.uri).join(','), // 照片,一个以逗号连接的字符串\n act_id, // 话题id\n source_from: 8,\n source_v2: 10,\n }\n if (series_id || defaultCommunity?.series_id) {\n params.series_id = series_id || defaultCommunity?.series_id\n } else if (motor_id) {\n params.motor_id = motor_id\n }\n if (activeNow === 'qa') {\n params = {\n ...params,\n video_id,\n ...videoInfo,\n question: content,\n motor_type: 3,\n }\n }\n if (isTimer && time) {\n params.task_publish_time = time.unix()\n }\n\n json = await fetch(\n isTimer ? DELAY_PUBLISH_PICTURE_API : PUBLISH_PICTURE_API,\n {\n method: 'POST',\n body: stringify(params),\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8',\n },\n credentials: 'include',\n }\n )\n } else if (activeNow === 'video') {\n params = {\n aid,\n video_type: 2,\n thumb_source: 1,\n motor_source: 8,\n source_v2: 10,\n video_id,\n description: content,\n series_id,\n motor_id,\n async_to_toutiao: async_to_toutiao ? '1' : '0',\n act_id,\n ...videoInfo,\n }\n if (isTimer && time) {\n params.task_publish_time = time.unix()\n }\n\n json = await fetch(\n isTimer ? DELAY_PUBLISH_VIDEO_API : PUBLISH_VIDEO_API,\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8',\n },\n body: stringify(params),\n }\n )\n }\n if (\n json.status !== 'success' &&\n json.status !== 0 &&\n json.err_no !== 0 &&\n !json.data?.id\n ) {\n const errMsg = json.prompts || json.error_show || json.err_tips\n console.error(errMsg)\n Toast.show({\n text: `发布失败 ${errMsg}`,\n })\n sendTeaCommEvent('click_article_publish_window_submit', {\n submit_status: 'failed',\n group_type,\n })\n setPublishing(false)\n return\n }\n clearLastStorage()\n if (isTimer) {\n Toast.show({\n text: '定时发布成功',\n })\n } else {\n Toast.show({\n text: '发布成功',\n })\n }\n onPublish({\n ...props,\n type: activeNow,\n content,\n gid: json.data?.item_id_str || json.data?.gid_str,\n })\n sendTeaCommEvent('click_article_publish_window_submit', {\n submit_status: 'success',\n group_type,\n })\n setPublishing(false)\n } catch (error) {\n console.error(error)\n Toast.show({\n text: '发布失败 网络异常',\n })\n sendTeaCommEvent('click_article_publish_window_submit', {\n submit_status: 'failed',\n group_type,\n })\n setPublishing(false)\n }\n }\n return (\n
\n
\n \n
\n {content === '' ? (\n <>\n 3s \n 自动保存\n \n ) : saving ? (\n '保存中...'\n ) : (\n '已保存'\n )}\n
\n
\n \n \n \n
\n )\n}\n","import React from 'react'\nimport classNames from 'classnames'\nimport styleModule from './swiper-button2.module.scss'\n\ninterface IProps {\n type?: 'prev' | 'next'\n className?: string\n clkTeaParams?: string\n style?: React.CSSProperties\n onClick?: () => void\n}\n\nconst SwiperButton2 = React.forwardRef(\n ({ type, className = '', clkTeaParams, style, onClick }, ref) => {\n return (\n \n \n \n \n \n \n )\n }\n)\n\nexport default SwiperButton2\n","import React, { useEffect, useState } from 'react'\nimport { Swiper, SwiperSlide } from 'swiper/react'\nimport SwiperCore, { Navigation } from 'swiper'\nimport SwiperButton2 from 'Components/swiper-button2'\nimport { Image } from 'Components/view-image'\nimport classNames from 'classnames'\nimport {\n preventDefault,\n stopPropagation,\n} from 'Components/new/community-card/interact'\n\nSwiperCore.use([Navigation])\n\ninterface IVProps {\n imgList: string[]\n activeIndex?: number\n onClick?: () => void\n}\n\ninterface ICProps {\n imgList: string[]\n onClick?: (idx: number) => void\n activeIndex?: number\n}\n\nconst ImageCandidates = (props: ICProps) => {\n const { imgList = [], onClick, activeIndex = 0 } = props\n\n return imgList.length > 1 ? (\n
\n {imgList.map((e, index) => (\n {\n e.preventDefault()\n e.stopPropagation()\n onClick && onClick(index)\n }}\n >\n \n
\n ))}\n \n \n ) : null\n}\n\nexport function isAdjacent(\n index: number,\n target: number,\n length: number,\n offset = 1\n) {\n return (\n Math.abs(index - target) <= offset ||\n Math.abs(index + length - target) <= offset ||\n Math.abs(index - length - target) <= offset\n )\n}\n\nconst ImageViewer = (props: IVProps) => {\n const { imgList = [], activeIndex = 0, onClick } = props\n const [indexNow, setIndexNow] = useState(activeIndex)\n const [swiper, setSwiper] = useState(null)\n\n const handleSelect = (idx: number) => {\n setIndexNow(idx)\n if (swiper && swiper.slideTo) {\n swiper.slideToLoop(idx)\n }\n }\n\n useEffect(() => {\n setIndexNow(activeIndex)\n }, [activeIndex])\n\n const [prevEl, setPrevEl] = useState(null)\n const [nextEl, setNextEl] = useState(null)\n\n return imgList.length ? (\n
\n
\n 1}\n simulateTouch={false}\n watchOverflow={true}\n navigation={{\n nextEl,\n prevEl,\n }}\n onSwiper={setSwiper}\n onSlideChange={(swiper) => {\n setIndexNow(swiper.realIndex)\n }}\n initialSlide={activeIndex}\n >\n {imgList.map((e, index) => (\n \n \n \n ))}\n \n
1 ? 'tw-block' : 'tw-hidden'}>\n \n \n
\n
\n \n
\n ) : null\n}\n\nexport default ImageViewer\n","interface IArticleContent {\n [props: number]: {\n value: string\n label?: string\n schemaPath?: string\n jumpPrefix?: string\n }\n}\n\nconst PREFIX_ARTICLE = '/article'\nconst PREFIX_VIDEO = '/video'\nconst PREFIX_KOUBEI = '/koubei'\nconst PREFIX_UGC_ARTICLE = '/ugc/article'\n\nconst ARTICLE_CONTENT_TYPE: IArticleContent = {\n 0: {\n value: 'unknown',\n jumpPrefix: PREFIX_ARTICLE,\n },\n 1: {\n value: 'pgc_article',\n jumpPrefix: PREFIX_ARTICLE,\n },\n 2: {\n value: 'pgc_video',\n jumpPrefix: PREFIX_VIDEO,\n },\n 3: {\n value: 'pgc_artivideo',\n jumpPrefix: PREFIX_ARTICLE,\n },\n 4: {\n value: 'pgc_article',\n jumpPrefix: PREFIX_ARTICLE,\n },\n 5: {\n value: 'ugc_text',\n jumpPrefix: PREFIX_UGC_ARTICLE,\n },\n 6: {\n value: 'ugc_video',\n jumpPrefix: PREFIX_UGC_ARTICLE,\n },\n 7: {\n value: 'ugc_article',\n jumpPrefix: PREFIX_UGC_ARTICLE,\n },\n 8: {\n value: 'ugc_qa',\n jumpPrefix: PREFIX_UGC_ARTICLE,\n },\n 9: {\n value: 'ugc_long_article',\n jumpPrefix: PREFIX_UGC_ARTICLE,\n },\n 10: {\n value: 'ugc_vote',\n jumpPrefix: PREFIX_UGC_ARTICLE,\n },\n 11: {\n value: 'ugc_transmit',\n jumpPrefix: PREFIX_UGC_ARTICLE,\n },\n 12: {\n value: 'long_reputation',\n jumpPrefix: PREFIX_KOUBEI,\n },\n 13: {\n value: 'reputation',\n jumpPrefix: PREFIX_KOUBEI,\n },\n 14: {\n value: 'car_review',\n jumpPrefix: PREFIX_UGC_ARTICLE,\n },\n}\n\nexport default ARTICLE_CONTENT_TYPE\n","export const PUBLISH_PICTURE_API = '/motor/discuss_ugc/cheyou_publish_forum/v2/'\nexport const PUBLISH_VIDEO_API = '/motor/content_publish/publish_video/v1'\nexport const PUBLISH_POST_API = '/motor/discuss_ugc/publish_essay/v1/'\nexport const DELAY_PUBLISH_PICTURE_API =\n '/motor/discuss_ugc/timed/publish_forum'\nexport const DELAY_PUBLISH_VIDEO_API = '/motor/discuss_ugc/timed/publish_video'\nexport const DELAY_PUBLISH_POST_API = '/motor/discuss_ugc/timed/publish_essay'\nexport const CANCEL_DELAY_PUBLISH_API = '/motor/discuss_ugc/timed/finished'\n\nexport const GET_NORMAL_AUTH_API = '/motor/car_user/v1/get_normal_auth/'\nexport const GET_FEED_LIST_API = '/motor/profile/m/get_news'\nexport const GET_DELAY_LIST_API = '/motor/discuss_ugc/timed/publish_list'\n\nexport const DELETE_FEED_API = '/motor/discuss_ugc/cheyou_delete_forum/v2/'\nexport const DELETE_VIDEO_API = '/motor/discuss_ugc/delete_video/v1/'\n","/* eslint-disable */\n\nimport { replace } from 'New/article-detail/components/content'\nexport const emojiResourceList = {\n '[微笑]': {\n index: 1,\n name: '[微笑]',\n image: 'emoji_1_smile@3x.png',\n key: 'emoji_1_smile@3x.png',\n width: 96,\n height: 96,\n },\n '[爱慕]': {\n index: 2,\n name: '[爱慕]',\n image: 'emoji_2_kiss@3x.png',\n key: 'emoji_2_kiss@3x.png',\n width: 96,\n height: 96,\n },\n '[惊呆]': {\n index: 3,\n name: '[惊呆]',\n image: 'emoji_3_daze@3x.png',\n key: 'emoji_3_daze@3x.png',\n width: 96,\n height: 96,\n },\n '[酷拽]': {\n index: 4,\n name: '[酷拽]',\n image: 'emoji_4_smoke@3x.png',\n key: 'emoji_4_smoke@3x.png',\n width: 96,\n height: 96,\n },\n '[抠鼻]': {\n index: 5,\n name: '[抠鼻]',\n image: 'emoji_5_pick_nose@3x.png',\n key: 'emoji_5_pick_nose@3x.png',\n width: 96,\n height: 96,\n },\n '[流泪]': {\n index: 6,\n name: '[流泪]',\n image: 'emoji_6_cry@3x.png',\n key: 'emoji_6_cry@3x.png',\n width: 96,\n height: 96,\n },\n '[发怒]': {\n index: 7,\n name: '[发怒]',\n image: 'emoji_7_anger@3x.png',\n key: 'emoji_7_anger@3x.png',\n width: 96,\n height: 96,\n },\n '[呲牙]': {\n index: 8,\n name: '[呲牙]',\n image: 'emoji_8_laugh@3x.png',\n key: 'emoji_8_laugh@3x.png',\n width: 96,\n height: 96,\n },\n '[鼾睡]': {\n index: 9,\n name: '[鼾睡]',\n image: 'emoji_9_sleep@3x.png',\n key: 'emoji_9_sleep@3x.png',\n width: 96,\n height: 96,\n },\n '[害羞]': {\n index: 10,\n name: '[害羞]',\n image: 'emoji_10_shy@3x.png',\n key: 'emoji_10_shy@3x.png',\n width: 96,\n height: 96,\n },\n '[可爱]': {\n index: 11,\n name: '[可爱]',\n image: 'emoji_11_naughty@3x.png',\n key: 'emoji_11_naughty@3x.png',\n width: 102,\n height: 96,\n },\n '[晕]': {\n index: 12,\n name: '[晕]',\n image: 'emoji_12_dizzy@3x.png',\n key: 'emoji_12_dizzy@3x.png',\n width: 96,\n height: 96,\n },\n '[衰]': {\n index: 13,\n name: '[衰]',\n image: 'emoji_13_stunned@3x.png',\n key: 'emoji_13_stunned@3x.png',\n width: 96,\n height: 96,\n },\n '[闭嘴]': {\n index: 14,\n name: '[闭嘴]',\n image: 'emoji_14_shut_up@3x.png',\n key: 'emoji_14_shut_up@3x.png',\n width: 96,\n height: 96,\n },\n '[机智]': {\n index: 15,\n name: '[机智]',\n image: 'emoji_15_wit@3x.png',\n key: 'emoji_15_wit@3x.png',\n width: 96,\n height: 96,\n },\n '[来看我]': {\n index: 16,\n name: '[来看我]',\n image: 'emoji_16_attention@3x.png',\n key: 'emoji_16_attention@3x.png',\n width: 108,\n height: 96,\n },\n '[灵光一闪]': {\n index: 17,\n name: '[灵光一闪]',\n image: 'emoji_17_hand_sample@3x.png',\n key: 'emoji_17_hand_sample@3x.png',\n width: 102,\n height: 96,\n },\n '[耶]': {\n index: 18,\n name: '[耶]',\n image: 'emoji_18_ye@3x.png',\n key: 'emoji_18_ye@3x.png',\n width: 99,\n height: 96,\n },\n '[捂脸]': {\n index: 19,\n name: '[捂脸]',\n image: 'emoji_19_distress_situation@3x.png',\n key: 'emoji_19_distress_situation@3x.png',\n width: 96,\n height: 96,\n },\n '[打脸]': {\n index: 20,\n name: '[打脸]',\n image: 'emoji_20_play_face@3x.png',\n key: 'emoji_20_play_face@3x.png',\n width: 102,\n height: 96,\n },\n '[大笑]': {\n index: 21,\n name: '[大笑]',\n image: 'emoji_21_smile@3x.png',\n key: 'emoji_21_smile@3x.png',\n width: 96,\n height: 96,\n },\n '[哈欠]': {\n index: 22,\n name: '[哈欠]',\n image: 'emoji_22_yawn@3x.png',\n key: 'emoji_22_yawn@3x.png',\n width: 96,\n height: 96,\n },\n '[震惊]': {\n index: 23,\n name: '[震惊]',\n image: 'emoji_23_surprise@3x.png',\n key: 'emoji_23_surprise@3x.png',\n width: 96,\n height: 96,\n },\n '[送心]': {\n index: 24,\n name: '[送心]',\n image: 'emoji_24_take_heart@3x.png',\n key: 'emoji_24_take_heart@3x.png',\n width: 96,\n height: 96,\n },\n '[困]': {\n index: 25,\n name: '[困]',\n image: 'emoji_25_sleepy@3x.png',\n key: 'emoji_25_sleepy@3x.png',\n width: 96,\n height: 96,\n },\n '[what]': {\n index: 26,\n name: '[what]',\n image: 'emoji_26_what@3x.png',\n key: 'emoji_26_what@3x.png',\n width: 105,\n height: 96,\n },\n '[泣不成声]': {\n index: 27,\n name: '[泣不成声]',\n image: 'emoji_27_sobbing@3x.png',\n key: 'emoji_27_sobbing@3x.png',\n width: 96,\n height: 96,\n },\n '[小鼓掌]': {\n index: 28,\n name: '[小鼓掌]',\n image: 'emoji_28_handclap@3x.png',\n key: 'emoji_28_handclap@3x.png',\n width: 96,\n height: 96,\n },\n '[酷]': {\n index: 29,\n name: '[酷]',\n image: 'emoji_29_cool@3x.png',\n key: 'emoji_29_cool@3x.png',\n width: 96,\n height: 96,\n },\n '[大金牙]': {\n index: 29,\n name: '[大金牙]',\n image: 'emoji_29_cool@3x.png',\n key: 'emoji_29_cool@3x.png',\n width: 96,\n height: 96,\n },\n '[偷笑]': {\n index: 30,\n name: '[偷笑]',\n image: 'emoji_30_titter@3x.png',\n key: 'emoji_30_titter@3x.png',\n width: 96,\n height: 96,\n },\n '[石化]': {\n index: 31,\n name: '[石化]',\n image: 'emoji_31_lightning_strike@3x.png',\n key: 'emoji_31_lightning_strike@3x.png',\n width: 96,\n height: 96,\n },\n '[思考]': {\n index: 32,\n name: '[思考]',\n image: 'emoji_32_meditation@3x.png',\n key: 'emoji_32_meditation@3x.png',\n width: 96,\n height: 96,\n },\n '[吐血]': {\n index: 33,\n name: '[吐血]',\n image: 'emoji_33_vomiting_blood@3x.png',\n key: 'emoji_33_vomiting_blood@3x.png',\n width: 96,\n height: 96,\n },\n '[可怜]': {\n index: 34,\n name: '[可怜]',\n image: 'emoji_34_acting_cute@3x.png',\n key: 'emoji_34_acting_cute@3x.png',\n width: 96,\n height: 96,\n },\n '[嘘]': {\n index: 35,\n name: '[嘘]',\n image: 'emoji_35_quietly@3x.png',\n key: 'emoji_35_quietly@3x.png',\n width: 96,\n height: 96,\n },\n '[撇嘴]': {\n index: 36,\n name: '[撇嘴]',\n image: 'emoji_36_hum@3x.png',\n key: 'emoji_36_hum@3x.png',\n width: 96,\n height: 96,\n },\n '[黑线]': {\n index: 37,\n name: '[黑线]',\n image: 'emoji_37_khan@3x.png',\n key: 'emoji_37_khan@3x.png',\n width: 96,\n height: 96,\n },\n '[笑哭]': {\n index: 38,\n name: '[笑哭]',\n image: 'emoji_38_forced_smile@3x.png',\n key: 'emoji_38_forced_smile@3x.png',\n width: 111,\n height: 96,\n },\n '[雾霾]': {\n index: 39,\n name: '[雾霾]',\n image: 'emoji_39_haze@3x.png',\n key: 'emoji_39_haze@3x.png',\n width: 96,\n height: 96,\n },\n '[奸笑]': {\n index: 40,\n name: '[奸笑]',\n image: 'emoji_40_smirk@3x.png',\n key: 'emoji_40_smirk@3x.png',\n width: 96,\n height: 96,\n },\n '[得意]': {\n index: 41,\n name: '[得意]',\n image: 'emoji_41_cool@3x.png',\n key: 'emoji_41_cool@3x.png',\n width: 96,\n height: 96,\n },\n '[憨笑]': {\n index: 42,\n name: '[憨笑]',\n image: 'emoji_42_bad_smile@3x.png',\n key: 'emoji_42_bad_smile@3x.png',\n width: 96,\n height: 96,\n },\n '[抓狂]': {\n index: 43,\n name: '[抓狂]',\n image: 'emoji_43_crazy@3x.png',\n key: 'emoji_43_crazy@3x.png',\n width: 96,\n height: 96,\n },\n '[泪奔]': {\n index: 44,\n name: '[泪奔]',\n image: 'emoji_44_tears@3x.png',\n key: 'emoji_44_tears@3x.png',\n width: 96,\n height: 96,\n },\n '[钱]': {\n index: 45,\n name: '[钱]',\n image: 'emoji_45_money@3x.png',\n key: 'emoji_45_money@3x.png',\n width: 96,\n height: 96,\n },\n '[吻]': {\n index: 46,\n name: '[吻]',\n image: 'emoji_46_kiss@3x.png',\n key: 'emoji_46_kiss@3x.png',\n width: 96,\n height: 96,\n },\n '[恐惧]': {\n index: 47,\n name: '[恐惧]',\n image: 'emoji_47_fear@3x.png',\n key: 'emoji_47_fear@3x.png',\n width: 96,\n height: 96,\n },\n '[笑]': {\n index: 48,\n name: '[笑]',\n image: 'emoji_48_smile@3x.png',\n key: 'emoji_48_smile@3x.png',\n width: 96,\n height: 96,\n },\n '[快哭了]': {\n index: 49,\n name: '[快哭了]',\n image: 'emoji_49_injustice@3x.png',\n key: 'emoji_49_injustice@3x.png',\n width: 96,\n height: 96,\n },\n '[翻白眼]': {\n index: 50,\n name: '[翻白眼]',\n image: 'emoji_50_their@3x.png',\n key: 'emoji_50_their@3x.png',\n width: 96,\n height: 96,\n },\n '[互粉]': {\n index: 51,\n name: '[互粉]',\n image: 'emoji_51_focus@3x.png',\n key: 'emoji_51_focus@3x.png',\n width: 96,\n height: 96,\n },\n '[赞]': {\n index: 52,\n name: '[赞]',\n image: 'emoji_52_like@3x.png',\n key: 'emoji_52_like@3x.png',\n width: 96,\n height: 96,\n },\n '[鼓掌]': {\n index: 53,\n name: '[鼓掌]',\n image: 'emoji_53_handclap@3x.png',\n key: 'emoji_53_handclap@3x.png',\n width: 96,\n height: 96,\n },\n '[谢谢]': {\n index: 54,\n name: '[谢谢]',\n image: 'emoji_54_3Q@3x.png',\n key: 'emoji_54_3Q@3x.png',\n width: 96,\n height: 96,\n },\n '[祈祷]': {\n index: 54,\n name: '[祈祷]',\n image: 'emoji_54_3Q@3x.png',\n key: 'emoji_54_3Q@3x.png',\n width: 96,\n height: 96,\n },\n '[kiss]': {\n index: 55,\n name: '[kiss]',\n image: 'emoji_55_kiss@3x.png',\n key: 'emoji_55_kiss@3x.png',\n width: 96,\n height: 96,\n },\n '[去污粉]': {\n index: 56,\n name: '[去污粉]',\n image: 'emoji_56_household_cleanser@3x.png',\n key: 'emoji_56_household_cleanser@3x.png',\n width: 96,\n height: 96,\n },\n '[666]': {\n index: 57,\n name: '[666]',\n image: 'emoji_57_666@3x.png',\n key: 'emoji_57_666@3x.png',\n width: 96,\n height: 96,\n },\n '[玫瑰]': {\n index: 58,\n name: '[玫瑰]',\n image: 'emoji_58_rose@3x.png',\n key: 'emoji_58_rose@3x.png',\n width: 96,\n height: 96,\n },\n '[胡瓜]': {\n index: 59,\n name: '[胡瓜]',\n image: 'emoji_59_cucumber@3x.png',\n key: 'emoji_59_cucumber@3x.png',\n width: 96,\n height: 96,\n },\n '[啤酒]': {\n index: 60,\n name: '[啤酒]',\n image: 'emoji_60_beer@3x.png',\n key: 'emoji_60_beer@3x.png',\n width: 96,\n height: 96,\n },\n '[我想静静]': {\n index: 61,\n name: '[我想静静]',\n image: 'emoji_61_distress_situation@3x.png',\n key: 'emoji_61_distress_situation@3x.png',\n width: 105,\n height: 96,\n },\n '[委屈]': {\n index: 62,\n name: '[委屈]',\n image: 'emoji_62_injustice@3x.png',\n key: 'emoji_62_injustice@3x.png',\n width: 96,\n height: 96,\n },\n '[舔屏]': {\n index: 63,\n name: '[舔屏]',\n image: 'emoji_63_lick_screen@3x.png',\n key: 'emoji_63_lick_screen@3x.png',\n width: 96,\n height: 96,\n },\n '[鄙视]': {\n index: 64,\n name: '[鄙视]',\n image: 'emoji_64_despise@3x.png',\n key: 'emoji_64_despise@3x.png',\n width: 96,\n height: 96,\n },\n '[飞吻]': {\n index: 65,\n name: '[飞吻]',\n image: 'emoji_65_kiss@3x.png',\n key: 'emoji_65_kiss@3x.png',\n width: 96,\n height: 96,\n },\n '[再见]': {\n index: 66,\n name: '[再见]',\n image: 'emoji_66_bye@3x.png',\n key: 'emoji_66_bye@3x.png',\n width: 96,\n height: 96,\n },\n '[紫薇别走]': {\n index: 67,\n name: '[紫薇别走]',\n image: 'emoji_67_erkang@3x.png',\n key: 'emoji_67_erkang@3x.png',\n width: 108,\n height: 96,\n },\n '[求抱抱]': {\n index: 68,\n name: '[求抱抱]',\n image: 'emoji_68_hug@3x.png',\n key: 'emoji_68_hug@3x.png',\n width: 108,\n height: 96,\n },\n '[听歌]': {\n index: 69,\n name: '[听歌]',\n image: 'emoji_69_hitler@3x.png',\n key: 'emoji_69_hitler@3x.png',\n width: 96,\n height: 96,\n },\n '[周冬雨的凝视]': {\n index: 70,\n name: '[周冬雨的凝视]',\n image: 'emoji_70_zhoudongyu_gaze@3x.png',\n key: 'emoji_70_zhoudongyu_gaze@3x.png',\n width: 96,\n height: 96,\n },\n '[马思纯的微笑]': {\n index: 71,\n name: '[马思纯的微笑]',\n image: 'emoji_71_masichun_smile@3x.png',\n key: 'emoji_71_masichun_smile@3x.png',\n width: 96,\n height: 96,\n },\n '[吐舌]': {\n index: 72,\n name: '[吐舌]',\n image: 'emoji_72_dogo@3x.png',\n key: 'emoji_72_dogo@3x.png',\n width: 96,\n height: 96,\n },\n '[呆无辜]': {\n index: 73,\n name: '[呆无辜]',\n image: 'emoji_73_cat@3x.png',\n key: 'emoji_73_cat@3x.png',\n width: 96,\n height: 96,\n },\n '[看]': {\n index: 74,\n name: '[看]',\n image: 'emoji_74_2ha@3x.png',\n key: 'emoji_74_2ha@3x.png',\n width: 96,\n height: 96,\n },\n '[白眼]': {\n index: 75,\n name: '[白眼]',\n image: 'emoji_75_dogo@3x.png',\n key: 'emoji_75_dogo@3x.png',\n width: 96,\n height: 96,\n },\n '[熊吉]': {\n index: 76,\n name: '[熊吉]',\n image: 'emoji_76_bear@3x.png',\n key: 'emoji_76_bear@3x.png',\n width: 96,\n height: 96,\n },\n '[骷髅]': {\n index: 77,\n name: '[骷髅]',\n image: 'emoji_77_skeleton@3x.png',\n key: 'emoji_77_skeleton@3x.png',\n width: 96,\n height: 96,\n },\n '[黑脸]': {\n index: 78,\n name: '[黑脸]',\n image: 'emoji_78_black_face@3x.png',\n key: 'emoji_78_black_face@3x.png',\n width: 96,\n height: 96,\n },\n '[吃瓜群众]': {\n index: 79,\n name: '[吃瓜群众]',\n image: 'emoji_79_eat_melon@3x.png',\n key: 'emoji_79_eat_melon@3x.png',\n width: 96,\n height: 96,\n },\n '[绿帽子]': {\n index: 80,\n name: '[绿帽子]',\n image: 'emoji_80_green_hat@3x.png',\n key: 'emoji_80_green_hat@3x.png',\n width: 96,\n height: 96,\n },\n '[汗]': {\n index: 81,\n name: '[汗]',\n image: 'emoji_81_sweat@3x.png',\n key: 'emoji_81_sweat@3x.png',\n width: 96,\n height: 96,\n },\n '[摸头]': {\n index: 82,\n name: '[摸头]',\n image: 'emoji_82_lear_ropes@3x.png',\n key: 'emoji_82_lear_ropes@3x.png',\n width: 96,\n height: 96,\n },\n '[皱眉]': {\n index: 83,\n name: '[皱眉]',\n image: 'emoji_83_frown@3x.png',\n key: 'emoji_83_frown@3x.png',\n width: 96,\n height: 96,\n },\n '[擦汗]': {\n index: 84,\n name: '[擦汗]',\n image: 'emoji_84_wipe_sweat@3x.png',\n key: 'emoji_84_wipe_sweat@3x.png',\n width: 96,\n height: 96,\n },\n '[红脸]': {\n index: 85,\n name: '[红脸]',\n image: 'emoji_85_redface@3x.png',\n key: 'emoji_85_redface@3x.png',\n width: 96,\n height: 96,\n },\n '[尬笑]': {\n index: 86,\n name: '[尬笑]',\n image: 'emoji_86_orz@3x.png',\n key: 'emoji_86_orz@3x.png',\n width: 96,\n height: 96,\n },\n '[做鬼脸]': {\n index: 87,\n name: '[做鬼脸]',\n image: 'emoji_87_makeface@3x.png',\n key: 'emoji_87_makeface@3x.png',\n width: 96,\n height: 96,\n },\n '[强]': {\n index: 88,\n name: '[强]',\n image: 'emoji_88_intensity@3x.png',\n key: 'emoji_88_intensity@3x.png',\n width: 96,\n height: 96,\n },\n '[如花]': {\n index: 89,\n name: '[如花]',\n image: 'emoji_89_ruhua@3x.png',\n key: 'emoji_89_ruhua@3x.png',\n width: 96,\n height: 96,\n },\n '[吐]': {\n index: 90,\n name: '[吐]',\n image: 'emoji_90_spit@3x.png',\n key: 'emoji_90_spit@3x.png',\n width: 96,\n height: 96,\n },\n '[惊喜]': {\n index: 91,\n name: '[惊喜]',\n image: 'emoji_91_surprise@3x.png',\n key: 'emoji_91_surprise@3x.png',\n width: 96,\n height: 96,\n },\n '[敲打]': {\n index: 92,\n name: '[敲打]',\n image: 'emoji_92_knock@3x.png',\n key: 'emoji_92_knock@3x.png',\n width: 96,\n height: 96,\n },\n '[奋斗]': {\n index: 93,\n name: '[奋斗]',\n image: 'emoji_93_refuel@3x.png',\n key: 'emoji_93_refuel@3x.png',\n width: 96,\n height: 96,\n },\n '[吐彩虹]': {\n index: 94,\n name: '[吐彩虹]',\n image: 'emoji_94_rainbow@3x.png',\n key: 'emoji_94_rainbow@3x.png',\n width: 96,\n height: 96,\n },\n '[大哭]': {\n index: 95,\n name: '[大哭]',\n image: 'emoji_95_bigcry@3x.png',\n key: 'emoji_95_bigcry@3x.png',\n width: 96,\n height: 96,\n },\n '[比心]': {\n index: 96,\n name: '[比心]',\n image: 'emoji_96_fingerheart@3x.png',\n key: 'emoji_96_fingerheart@3x.png',\n width: 96,\n height: 96,\n },\n '[加油]': {\n index: 97,\n name: '[加油]',\n image: 'emoji_97_refuel@3x.png',\n key: 'emoji_97_refuel@3x.png',\n width: 96,\n height: 96,\n },\n '[碰拳]': {\n index: 98,\n name: '[碰拳]',\n image: 'emoji_98_fist@3x.png',\n key: 'emoji_98_fist@3x.png',\n width: 96,\n height: 96,\n },\n '[ok]': {\n index: 99,\n name: '[ok]',\n image: 'emoji_99_OK@3x.png',\n key: 'emoji_99_OK@3x.png',\n width: 96,\n height: 96,\n },\n '[击掌]': {\n index: 100,\n name: '[击掌]',\n image: 'emoji_100_highfive@3x.png',\n key: 'emoji_100_highfive@3x.png',\n width: 96,\n height: 96,\n },\n '[左上]': {\n index: 101,\n name: '[左上]',\n image: 'emoji_101_left@3x.png',\n key: 'emoji_101_left@3x.png',\n width: 96,\n height: 96,\n },\n '[握手]': {\n index: 102,\n name: '[握手]',\n image: 'emoji_102_shakehand@3x.png',\n key: 'emoji_102_shakehand@3x.png',\n width: 96,\n height: 96,\n },\n '[18禁]': {\n index: 103,\n name: '[18禁]',\n image: 'emoji_103_18@3x.png',\n key: 'emoji_103_18@3x.png',\n width: 96,\n height: 96,\n },\n '[刀]': {\n index: 104,\n name: '[刀]',\n image: 'emoji_104_knife@3x.png',\n key: 'emoji_104_knife@3x.png',\n width: 96,\n height: 96,\n },\n '[V5]': {\n index: 105,\n name: '[V5]',\n image: 'emoji_105_V5@3x.png',\n key: 'emoji_105_V5@3x.png',\n width: 96,\n height: 96,\n },\n '[给力]': {\n index: 106,\n name: '[给力]',\n image: 'emoji_106_awesome@3x.png',\n key: 'emoji_106_awesome@3x.png',\n width: 96,\n height: 96,\n },\n '[心]': {\n index: 107,\n name: '[心]',\n image: 'emoji_107_heart@3x.png',\n key: 'emoji_107_heart@3x.png',\n width: 96,\n height: 96,\n },\n '[伤心]': {\n index: 108,\n name: '[伤心]',\n image: 'emoji_108_broken_heart@3x.png',\n key: 'emoji_108_broken_heart@3x.png',\n width: 96,\n height: 96,\n },\n '[屎]': {\n index: 109,\n name: '[屎]',\n image: 'emoji_109_shit@3x.png',\n key: 'emoji_109_shit@3x.png',\n width: 96,\n height: 96,\n },\n '[礼物]': {\n index: 110,\n name: '[礼物]',\n image: 'emoji_110_gifts@3x.png',\n key: 'emoji_110_gifts@3x.png',\n width: 96,\n height: 96,\n },\n '[蛋糕]': {\n index: 111,\n name: '[蛋糕]',\n image: 'emoji_111_cake@3x.png',\n key: 'emoji_111_cake@3x.png',\n width: 96,\n height: 96,\n },\n '[撒花]': {\n index: 112,\n name: '[撒花]',\n image: 'emoji_112_flower@3x.png',\n key: 'emoji_112_flower@3x.png',\n width: 96,\n height: 96,\n },\n '[不看]': {\n index: 113,\n name: '[不看]',\n image: 'emoji_113_lookat@3x.png',\n key: 'emoji_113_lookat@3x.png',\n width: 96,\n height: 96,\n },\n '[炸弹]': {\n index: 114,\n name: '[炸弹]',\n image: 'emoji_114_bomb@3x.png',\n key: 'emoji_114_bomb@3x.png',\n width: 96,\n height: 96,\n },\n} as {\n [key: string]: {\n index: number\n name: string\n image: string\n key: string\n width: number\n height: number\n }\n}\n\nexport const emojiOrigin =\n '//lf3-cdn-tos.bytegoofy.com/goofy/toutiao/tt_tps/static/images/ttemoji_v2/'\n\nexport const emoji = (string: string) => {\n const reUnescapedHtml = /(\\[[^\\]]+[\\]])+?/g\n const reHasUnescapedHtml = RegExp(reUnescapedHtml.source)\n return string && reHasUnescapedHtml.test(string)\n ? string.replace(reUnescapedHtml, (chr) => {\n if (emojiResourceList[chr]) {\n return ``\n }\n return chr\n })\n : string\n}\n\n// 输入法 unicode 表情\nconst emojiUnicodeRegex =\n '(?:\\ud83c[\\udf00-\\udfff])|(?:\\ud83d[\\udc00-\\ude4f\\ude80-\\udeff])|[\\u2600-\\u2B55]'\n\nconst emojiPrivateRegex = Object.keys(emojiResourceList)\n .map((d) => d.replace('[', '\\\\[').replace(']', '\\\\]'))\n .join('|')\n\nconst emojiRegex = new RegExp(`(${emojiPrivateRegex}|${emojiUnicodeRegex})`)\n\nexport const filterEmoji = (string: string) => {\n if (!string) return ''\n return replace(string, emojiRegex, () => '')\n}\n","/**\n * 是否支持webp格式\n * @type {boolean}\n */\nconst canUseWebp: boolean = (() => {\n if (typeof document === 'undefined') {\n return false\n }\n const elem = document.createElement('canvas')\n if (elem && elem.getContext && elem.getContext('2d')) {\n return elem.toDataURL('image/webp').indexOf('data:image/webp') === 0\n }\n return false\n})()\n\nexport default canUseWebp\n","/**\n * 将服务端传过来的时间戳(毫秒)转为格式化的字符串\n * @param {string|number} millisecondTimestamp 毫秒级时间戳\n * @return {string} 格式化时间\n */\nexport default function formatTime(millisecondTimestamp: string | number) {\n const ONE_MINUTE = 1000 * 60\n const ONE_HOUR = ONE_MINUTE * 60\n // var ONE_DAY = ONE_HOUR * 24;\n\n const now = new Date()\n const nowTimestamp = now.getTime()\n const fakeDate = new Date(now.getFullYear(), now.getMonth(), now.getDate())\n const d = new Date(Number(millisecondTimestamp))\n if (!Number(d.getTime())) {\n return ''\n }\n\n const delta = nowTimestamp - Number(millisecondTimestamp)\n\n if (delta < 0) {\n return ''\n } else if (delta < ONE_MINUTE) {\n return '刚刚'\n } else if (delta < ONE_HOUR) {\n return `${Math.floor(delta / ONE_MINUTE)}分钟前`\n } else if (delta < 24 * ONE_HOUR) {\n return `${Math.floor(delta / ONE_HOUR)}小时前`\n } else {\n const _hm = `${fixNumber(d.getHours())}:${fixNumber(d.getMinutes())}`\n let i = 0\n while (i++ <= 8) {\n fakeDate.setDate(fakeDate.getDate() - 1)\n if (millisecondTimestamp > fakeDate.getTime()) {\n if (i === 1) {\n return `昨天 ${_hm}`\n } else if (i === 2) {\n return `前天 ${_hm}`\n } else {\n return `${i}天前`\n }\n }\n }\n\n return `${\n (d.getFullYear() < now.getFullYear() ? `${d.getFullYear()}-` : '') +\n fixNumber(d.getMonth() + 1)\n }-${fixNumber(d.getDate())}`\n }\n}\n\nfunction fixNumber(num: number): string {\n if (num < 10) {\n return `0${num}`\n }\n return `${num}`\n}\n\nexport function secToMin(seconds: number) {\n const min = Math.floor(seconds / 60)\n const sec = seconds % 60\n return `${fixNumber(min)}:${fixNumber(sec)}`\n}\n\n/**\n * 将时间戳(毫秒)转为以天为单位\n */\nexport function formatTimeByday(millisecondTimestamp: string | number) {\n const now = new Date()\n const nowTimestamp = now.getTime()\n const fakeDate = new Date(now.getFullYear(), now.getMonth(), now.getDate())\n const d = new Date(Number(millisecondTimestamp))\n if (!Number(d.getTime())) {\n return ''\n }\n const delta = nowTimestamp - Number(millisecondTimestamp)\n if (delta < 0) {\n return ''\n }\n\n const dDate = new Date(d.getFullYear(), d.getMonth(), d.getDate())\n\n const diff = (fakeDate.getTime() - dDate.getTime()) / 1000 / 60 / 60 / 24\n\n if (diff < 1) {\n return '今天'\n }\n if (diff < 2) {\n return '昨天'\n }\n if (diff < 3) {\n return '前天'\n }\n if (diff < 9) {\n return `${Math.abs(diff)}天前`\n }\n\n return `${\n (d.getFullYear() < now.getFullYear() ? `${d.getFullYear()}-` : '') +\n fixNumber(d.getMonth() + 1)\n }-${fixNumber(d.getDate())}`\n}\n","import ARTICLE_CONTENT_TYPE from 'Constants/articleType'\n\nexport default function getContentJumpUrl(\n gidStr: string,\n articleType?: number\n) {\n if (!gidStr) {\n return ''\n }\n\n if (articleType === undefined) {\n return `/article/${gidStr}`\n }\n\n const jumpPrefix = ARTICLE_CONTENT_TYPE[articleType]?.jumpPrefix\n\n if (jumpPrefix) {\n return `${jumpPrefix}/${gidStr}`\n }\n\n return `/article/${gidStr}`\n}\n","// import fetch from 'lib/decorated-fetch'\n// import { ServiceId } from '@byted-motor/upload'\nimport cookie from 'cookie'\nimport MotorUploader, {\n GetImageUrlOptions,\n GetImageUrlRes,\n} from '@byted-motor/upload/lib/uploader'\n// 上传SDK文档地址 https://code.byted.org/motor-fe/byted-motor-fe/blob/feat-uploader/packages/upload/README.md\n\nlet uploader: MotorUploader\n\nasync function getUploader() {\n if (uploader) {\n return uploader\n }\n\n const { MotorUploader } = await import('@byted-motor/upload')\n\n let userId = 'motor_user_default'\n try {\n userId = JSON.parse(cookie.parse(document.cookie)?.user_data)?.userId\n } catch (e) {\n //\n }\n\n uploader = new MotorUploader({\n // 建议设置能识别用户的唯一标识id,用于上传出错时排查问题,不要传入非 ASCII编码\n userId,\n imageHost: null as any,\n region: 'cn',\n // 视频上传配置\n // videoConfig: {\n //\n // }\n })\n\n return uploader\n}\n\nexport async function uploadImg(file: File) {\n const uploader = await getUploader()\n const res = await uploader.uploadImage(file)\n const { uploadResult } = res || {}\n return {\n uri: uploadResult?.Uri,\n width: uploadResult?.ImageWidth,\n height: uploadResult?.ImageHeight,\n format: uploadResult?.ImageFormat,\n size: uploadResult?.ImageSize,\n }\n}\n// tos-cn-i-f042mdwyw7/4f2645635a1f4f1690f2eeed2d64e466\n/**\n * 上传单张图片\n */\n// const uploadImg = async ({\n// file,\n// resolve,\n// reject,\n// }: {\n// file: File\n// resolve: any\n// reject: any\n// }) => {\n// try {\n// const json = await fetch('/motor/car_user/v1/get_normal_auth/')\n// // @ts-ignore\n// const ByteVideoUpload = (await import('byted-video-uploader')).default\n// const byteVideoUploader = new ByteVideoUpload({\n// debug: true,\n// department: json.access_key, // 业务id,需要向视频架构组申请\n// // user_id: '109005472317', // 业务方的user_id\n// vasDomain: 'https://vas.snssdk.com',\n// logDomain: 'https://log.snssdk.com',\n// coverTime: 0, // 封面截图时间\n// retryUploadTime: 5,\n// retryProcessTime: 5,\n// retryTaskTime: 5,\n// maxProcessPause: 20,\n// uploadSliceCount: 5,\n// source: 8,\n// source_v2: 10,\n// })\n// const fileKey = byteVideoUploader.addFile({\n// file,\n// name: 'dcd_upload_image',\n// auth: json.data, // 具有时效性,每次上传前通过业务获取\n// type: 'image', // 上传文件类型,两个可选值:video(视频或者音频),image(图片)\n// })\n// byteVideoUploader.start(fileKey)\n// byteVideoUploader.on('complete', (info: any) => {\n// resolve(info.image)\n// })\n// byteVideoUploader.on('error', (info: any) => {\n// reject('上传失败 无法解析文件')\n// console.error(info)\n// })\n// } catch {\n// reject('上传失败,请检查网络是否正常')\n// }\n// }\n/**\n * 获取图片Blob\n */\nexport const getImageBlob = (url: string) => {\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest()\n xhr.open('get', url, true)\n xhr.responseType = 'blob'\n xhr.onload = function () {\n if (this.status === 200) {\n resolve(this.response)\n }\n }\n xhr.onerror = function () {\n reject(new Error())\n }\n xhr.send()\n })\n}\n\n/**\n * 上传图文列表\n */\nexport function uploadImgList(imgList: File[]) {\n return Promise.allSettled(imgList.map((item) => uploadImg(item))).then(\n (result) => result.map((d) => (d.status === 'fulfilled' ? d.value : null))\n )\n}\n\n/**\n * 通过uri 获取 url\n **/\nexport async function getImageUrl(\n imgUris: string[],\n options?: GetImageUrlOptions\n): Promise {\n const uploader = await getUploader()\n\n const res = await uploader.getImageUrl(imgUris, options)\n // console.log(res.img_url_map['tos-cn-i-f042mdwyw7/4f2645635a1f4f1690f2eeed2d64e466'].main_url)\n return res.img_url_map\n}\n","import Toast from 'Components/toast-messager'\nimport Cookies from '@arsenal/arsenal/modules/Cookies'\nimport getUrl from 'lib/url'\nimport fetch from 'lib/decorated-fetch'\nimport serializeObject from '@arsenal/arsenal/modules/serializeObject'\n\n// 举报评论用户\nexport function reportUser(\n commentId: string,\n reportTypes: string,\n description = '',\n reportUserId?: number | string,\n userId?: string\n) {\n const web_id = Cookies('tt_webid') || ''\n const formData = new FormData()\n formData.append('description', description)\n formData.append('comment_id', commentId)\n formData.append('source', '204')\n formData.append('report_types', reportTypes)\n formData.append('app_key', 'auto_web_pc-web')\n formData.append('aid', '1839')\n formData.append('app_name', 'auto_web_pc')\n formData.append(\n 'device_id',\n typeof web_id === 'object' ? JSON.stringify(web_id) : web_id\n )\n if (userId) {\n formData.append('user_id', String(userId))\n }\n reportUserId && formData.append('report_user_id', String(reportUserId))\n fetch(getUrl('/api/feedback/v1/report_comment/'), {\n method: 'POST',\n body: formData,\n })\n .then((res: any) => {\n const { err_code } = res\n console.log(res, err_code)\n if (err_code !== 0) {\n Toast.show({\n text: '举报失败',\n })\n return\n }\n\n Toast.show({\n text: '举报成功',\n })\n })\n .catch((e) => {\n console.log(e)\n })\n}\n\nexport interface IReportParams {\n objectType:\n | 1 // 评论\n | 5 // 文章\n | 11 // 用户\n objectId?: string\n authorId?: string\n userId?: string\n description?: string\n reportType?: number\n source?: number\n}\n\nexport function report({\n objectId,\n objectType,\n authorId,\n reportType,\n source,\n description,\n userId,\n}: IReportParams) {\n const web_id = Cookies('tt_webid') || ''\n\n const params = {\n // biz_id: 1839,\n reported_obj_id: objectId,\n reported_obj_type: objectType,\n report_type: reportType,\n source,\n author_id: authorId,\n description,\n user_id: userId,\n device_id: typeof web_id === 'object' ? JSON.stringify(web_id) : web_id,\n app_id: 1839,\n app_name: 'auto_web_pc',\n }\n\n return fetch('/user/report/add_report', {\n method: 'POST',\n headers: {\n 'tt-anti-token': window.localStorage.getItem('tt-anti-token') || '',\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n body: serializeObject(params),\n })\n}\n","import { logger } from 'lib/slardar-utils'\nimport cookie from 'cookie'\n\n// 快速 获取 用户信息\nconst getUserInfo = (req?: any) => {\n try {\n return JSON.parse(\n cookie.parse(req?.headers?.cookie || window?.document?.cookie)[\n 'user_data'\n ]\n )\n } catch (error) {\n logger.warn('[get user info]:failed to parse cookie', error?.message)\n return {}\n }\n}\n\nexport default getUserInfo\n","import React, { useEffect, useState } from 'react'\nimport classNames from 'classnames'\nimport PubSub from 'pubsub-js'\nimport formatNumber from '@arsenal/arsenal/modules/formatNumber'\nimport useToggleFollow from 'Components/hooks/use-toggle-follow'\n\nconst EVETN_NAME = 'AUTHOR_FOLLOW_BTN'\n\ninterface IFansNumsProps {\n nums: number\n style?: React.CSSProperties\n}\n\nexport function FansNums({ nums, style = {} }: IFansNumsProps) {\n const [count, setCount] = useState(nums)\n\n useEffect(() => {\n const token = PubSub.subscribe(EVETN_NAME, (type: any, value: boolean) => {\n if (value) {\n setCount((c) => c + 1)\n } else {\n setCount((c) => c - 1)\n }\n })\n\n return () => {\n PubSub.unsubscribe(token)\n }\n }, [])\n\n useEffect(() => {\n setCount(nums)\n }, [nums])\n\n return {formatNumber(count)}\n}\n\ninterface IProps {\n authorId: string\n isFollow: boolean\n style?: React.CSSProperties\n}\n\nexport default function FollowBtn({ authorId, style = {}, isFollow }: IProps) {\n const { update, curStatus } = useToggleFollow({\n userId: authorId,\n followed: isFollow,\n })\n\n return (\n \n {curStatus ? '已关注' : '关注'}\n \n \n )\n}\n","import * as React from 'react'\nimport styles from './relation-series.module.scss'\nimport Divider from 'Components/divider'\nimport CommonLink, { ECommonLinkType } from 'Components/links/common-link'\nimport classNames from 'classnames'\nexport interface IContentRelationSeriesProps {\n uriKey?: string\n seriesId?: number | string\n seriesName?: string\n brandId?: number\n price?: string\n cutPrice?: string\n hasPrice?: boolean\n hasCutPrice?: boolean\n hasImage: boolean\n hasTest?: boolean\n carIds?: number[]\n score?: number\n communityCount?: number | string\n hasUsedCar?: boolean\n usedCarPrice?: number\n usedCarCount?: number\n zt?: string\n linkSource?: string\n onClick?(\n e: React.MouseEvent,\n type: string,\n params?: Record\n ): void\n}\n/*\n 该组件被ReactDOMServer.renderToString调用\n 通过父级组件调用此方法绑定事件\n 跳转二手车在客户端修改\n*/\nexport const addRelationSeriesListeners = (\n parentRef: React.RefObject,\n handlers?: (e: Event, type: string, params?: Record) => void\n) => {\n const eventHandler = (event: Event) => {\n const el = event.currentTarget as Element\n if (el.parentElement?.classList.contains('disabled')) return\n const type = el.getAttribute('data-click') || ''\n const params = JSON.parse(el.getAttribute('data-params') || `{}`) as Record<\n string,\n any\n >\n handlers?.(event, type, params)\n }\n React.useEffect(() => {\n if (!parentRef.current) return\n const elements = parentRef.current.querySelectorAll('[data-click]')\n elements.forEach((el) => {\n el.addEventListener('click', eventHandler)\n })\n return () => {\n elements.forEach((el) => el.removeEventListener('click', eventHandler))\n }\n }, [])\n}\nexport default function ContentRelationSeries({\n uriKey,\n seriesId,\n seriesName,\n brandId,\n price,\n cutPrice,\n hasPrice,\n hasCutPrice,\n hasImage,\n hasTest,\n carIds,\n score,\n communityCount,\n hasUsedCar,\n usedCarPrice,\n usedCarCount,\n zt,\n linkSource,\n onClick,\n}: IContentRelationSeriesProps) {\n const None = () => 暂无\n const commonParams = { car_series_id: seriesId, car_series_name: seriesName }\n // 客户端替换时,通过data-image获取根节点,通过不传uriKey获取卡片内容部分\n const Wrapper = ({ children }: { children: React.ReactNode }) =>\n uriKey ? (\n
{children}
\n ) : (\n {children}\n )\n const handleClick = (\n event: React.MouseEvent,\n type: string,\n extraParams?: Record\n ) => {\n const el = event.currentTarget as Element\n if (el.parentElement?.classList.contains('disabled')) return\n onClick?.(event, type, { ...commonParams, ...extraParams })\n }\n return (\n \n
\n
\n \n handleClick(e, 'series')}\n >\n \n {seriesName}\n \n
\n \n 最低售价:\n {price}\n \n {hasCutPrice && (\n \n \n 最高降价:\n \n \n \n {cutPrice}\n \n \n )}\n
\n
\n \n
\n \n \n handleClick(e, 'image', { button_name: '图片' })\n }\n >\n 图片\n \n \n \n \n handleClick(e, 'config', { button_name: '参数配置' })\n }\n >\n 参数配置\n \n \n \n \n handleClick(e, 'dealer', { button_name: '询底价' })\n }\n >\n {hasPrice ? '询底价' : '暂无报价'}\n \n \n
\n
\n \n
\n \n \n handleClick(e, 'score', { button_name: '懂车分' })\n }\n >\n 懂车分\n \n {score ? (score / 100).toFixed(2) : }\n \n \n \n \n \n \n handleClick(e, 'eval', { button_name: '懂车实测' })\n }\n >\n 懂车实测\n \n {hasTest ? '空间·性能等' : }\n \n \n \n \n \n \n handleClick(e, 'community', { button_name: '车友圈' })\n }\n >\n 车友圈\n \n {communityCount}车友热议\n \n \n \n \n \n \n handleClick(e, 'usedCar', { button_name: '二手车' })\n }\n >\n 二手车\n \n {hasUsedCar ? (\n \n {usedCarPrice &&\n `${(usedCarPrice / 1000000).toFixed(2)}万起 | `}\n {usedCarCount}辆\n \n ) : (\n \n )}\n \n \n \n \n
\n \n
\n )\n}\n","import { sendTeaCommEvent } from 'lib/tea-analyze'\n\ntype TParams = Record\nconst eventMap: Record = {\n series: 'picture_below_car_series_entrance',\n image: 'pgc_article_picture_entrance_clk',\n config: 'picture_below_parameter_configure_button',\n score: 'picture_below_dscore_entrance',\n eval: 'picture_below_dcd_evaluation_entrance',\n community: 'picture_below_forum_entrance',\n usedCar: 'picture_below_car_used_entrance',\n dealer: 'car_series_picture_ask_floor_price',\n}\nexport default function relationSeriesTeaEvent(type: string, params?: TParams) {\n sendTeaCommEvent('clk_event', {\n event_id: eventMap[type],\n module_id: 'picture_relation_car_series_module',\n ...params,\n })\n}\n","/* eslint-disable react/button-has-type */\nimport React, { useEffect, useReducer } from 'react'\nimport get from 'lodash/get'\nimport dynamic from 'next/dynamic'\nimport Loading from 'Components/loading'\nimport formatTime from 'lib/format-time'\nimport {\n getArticleDetail,\n IArticle,\n TArticleMotorMaterialCarInfo,\n} from '../../services/index'\nimport FollowBtn from './follow-btn'\nimport Avatar from 'Components/author/avatar'\nimport canUseWebp from 'lib/can-use-webp'\nimport {\n ReportButton,\n InteractVideo,\n} from 'Components/new/community-card/interact'\nimport Share from 'Components/new/community-card/share'\nimport xss from 'xss'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\nimport ARTICLE_CONTENT_TYPE from 'Constants/articleType'\nimport { emoji } from 'Constants/emoji'\nimport RelationSeries, { addRelationSeriesListeners } from './relation-series'\nimport relationSeriesEvent from './relation-series-tea'\nimport ReactDOMServer from 'react-dom/server'\nimport * as ZT from 'Constants/zt'\nimport * as LS from 'Constants/link-source'\nimport { useCityName } from 'Components/hooks'\nimport getUserInfo from 'lib/user-info'\nimport ReactDOM from 'react-dom'\nimport getPageEnterId from 'lib/page-enter'\nimport { useRouter } from 'next/router'\nconst Video = dynamic(() => import('Components/player'), {\n ssr: false,\n loading: () => ,\n})\n\ninterface IProps {\n article: IArticle\n isVideo: boolean\n group_id: string\n digg_count: number\n collect_curStatus: boolean\n digg_curStatus: boolean\n collectUpdate(): void\n diggUpdate(): void\n}\n// 图片关联车系过滤,相同车系仅保留首次与末次出现的关联信息\nfunction getUniqueRelatedSeries(carInfo: IArticle['motor_material_car_info']) {\n if (!carInfo) return null\n const sequenceMap = new Map()\n const map = new Map()\n const list = Object.keys(carInfo).map((key) => ({ key, info: carInfo[key] }))\n list.sort((prev, next) => (next.info.index || 0) - (prev.info.index || 0))\n list.forEach(({ key, info }) => {\n const seriesId = info.series_id || 0\n const sequence = sequenceMap.get(seriesId) || []\n if (sequence.length === 2) {\n const last = sequence.pop()\n map.delete(last as string)\n }\n sequence.push(key)\n sequenceMap.set(seriesId, sequence)\n map.set(key, info)\n })\n return map\n}\ninterface IGetRelatedSeriesComponentParams {\n carInfo: TArticleMotorMaterialCarInfo\n key?: string\n clue: Record<'zt' | 'ls', string>\n onClick?: (\n event: React.MouseEvent,\n type: string,\n params: Record\n ) => void\n}\nfunction getRelatedSeriesComponent({\n carInfo,\n key,\n onClick,\n clue,\n}: IGetRelatedSeriesComponentParams) {\n return (\n \n )\n}\n// 插入图片关联车系\nfunction injectRelatedSeries(\n content: string,\n relatedCarInfo: IArticle['motor_material_car_info'],\n clue: Record<'zt' | 'ls', string>\n) {\n let injectedContent = content\n const relatedSeries = getUniqueRelatedSeries(relatedCarInfo)\n if (!relatedSeries?.size || !content) return content\n relatedSeries.forEach((carInfo, key) => {\n const relatedSeriesComponent = getRelatedSeriesComponent({\n carInfo,\n key,\n clue,\n })\n const injectStr = ReactDOMServer.renderToString(relatedSeriesComponent)\n const result = new RegExp(`(${key})[^>]+>`).exec(injectedContent)\n if (!result) return\n injectedContent = injectedContent.replace(\n new RegExp(`(${key}[^>]+>)`),\n `$1${injectStr}`\n )\n })\n return injectedContent\n}\n\n// 刷新图片关联车系\nfunction refreshRelationSeries(\n article: IArticle,\n clue: Record<'zt' | 'ls', string>\n) {\n const relatedSeries = getUniqueRelatedSeries(article.motor_material_car_info)\n if (!relatedSeries?.size || !article.content) return\n const onClick = (\n e: React.MouseEvent,\n type: string,\n params: Record\n ) => relationSeriesEvent(type, params)\n relatedSeries?.forEach((carInfo, key) => {\n const container = document.querySelector(`[data-image=\"${key}\"]`)\n if (!container) return\n ReactDOM.render(\n getRelatedSeriesComponent({ carInfo, onClick, clue }),\n container\n )\n })\n}\nfunction handleContent(\n content: string,\n relatedCarInfo: IArticle['motor_material_car_info'],\n clue: Record<'zt' | 'ls', string>\n): string {\n const afterEmojiContent = emoji(content.replace(/\\{!--.*?--\\}/g, ''))\n return injectRelatedSeries(afterEmojiContent, relatedCarInfo, clue)\n}\n\nexport function replace(\n input: string,\n re: RegExp,\n replacer: (match: RegExpExecArray) => string\n) {\n let match: RegExpExecArray | null\n let remaining = input\n let rewritten = ''\n while ((match = re.exec(remaining))) {\n rewritten += remaining.slice(0, match.index)\n rewritten += replacer(match)\n remaining = remaining.slice(match.index + match[0].length)\n }\n rewritten += remaining\n return rewritten\n}\n\nfunction replaceOuterHTML(content: string): string {\n return replace(\n content,\n /(.+?)<\\/body><\\/html>/,\n ([, content]) => content\n )\n}\n\nconst HTML_BR_REG = /^
$/\n// 处理换行符\nconst processBr = (p: HTMLParagraphElement) => {\n // 针对编辑器最新的换行符


进行处理\n if (HTML_BR_REG.test(p.innerHTML)) {\n p.classList.add('syl-page-br')\n // if (!p.nextElementSibling) { // 行尾BR不处理\n // return\n // }\n // if (!p.previousElementSibling) { // 行首syl-page-br直接移除\n if (p.parentNode) {\n p.parentNode.removeChild(p)\n }\n // return\n // }\n // 处理段落中间的BR\n // const shoudleHideBr = (\n // // 段落和图片之间的换行隐藏\n // (p.nextElementSibling.classList.contains('pgc-img') && p.previousElementSibling.tagName === 'P') ||\n // // 连续多个换行隐藏掉后面的\n // p.previousElementSibling.classList.contains('syl-page-br') ||\n // // 图片后面的换行符隐藏\n // p.previousElementSibling.classList.contains('pgc-img')\n // )\n // if (shoudleHideBr) {\n // p.classList.add('syl-page-br-hide')\n // }\n }\n /**\n * 两个br元素之间若包含textNode,不认为是连续换行。Migrate from tt_article_detail\n */\n const originBrs = Array.from(p.querySelectorAll('br'))\n originBrs.forEach((br) => {\n const preNode = br.previousSibling\n if (preNode && preNode.nodeType === Node.TEXT_NODE) {\n br.classList.add('sysbr')\n }\n })\n}\n\nexport default function Content({\n article,\n isVideo,\n group_id,\n digg_count,\n collect_curStatus,\n digg_curStatus,\n collectUpdate,\n diggUpdate,\n}: IProps) {\n const router = useRouter()\n const clueMap: Record> = {\n page_pgc_article_detail: {\n zt: ZT.ZT_0015,\n ls: LS.LS_0007,\n },\n page_feed_article_mix: {\n zt: ZT.ZT_0045,\n ls: LS.LS_0006,\n },\n }\n const currentClue = clueMap[getPageEnterId(router.asPath).page_id]\n const cityName = useCityName()\n const allowReloadRef = React.useRef(false)\n React.useEffect(() => {\n if (!cityName) return\n if (!allowReloadRef.current) {\n allowReloadRef.current = true\n return\n }\n ;(async () => {\n try {\n const userData = getUserInfo()\n const articleData = await getArticleDetail({\n group_id,\n user_id: userData?.user_id,\n city_name: cityName,\n })\n refreshRelationSeries(articleData.article as IArticle, currentClue)\n } catch {\n // no-op\n }\n })()\n }, [cityName])\n /* 渲染标题 */\n function renderHeader() {\n return (\n
\n

{article?.title}

\n {article?.media_user && (\n \n \n \n {article?.media_user?.screen_name}\n \n \n {formatTime(article?.publish_time * 1000)}\n \n \n
\n )}\n \n \n )\n }\n\n function renderBottom() {\n return (\n
\n
\n
\n
\n {article?.watch_count_en}人阅读\n
\n \n {\n sendTeaCommEvent('rt_report', {\n group_id: article?.gid,\n author_id: String(article?.media_user?.id),\n hudong_position: '0',\n content_type:\n ARTICLE_CONTENT_TYPE[article?.article_type!]?.value,\n operation_type: '0',\n })\n }}\n onCancel={() => {\n sendTeaCommEvent('rt_report', {\n group_id: article?.gid,\n author_id: String(article?.media_user?.id),\n hudong_position: '0',\n content_type:\n ARTICLE_CONTENT_TYPE[article?.article_type!]?.value,\n operation_type: '0',\n })\n }}\n />\n
\n }\n shareContent={({ close }) => (\n {\n sendTeaCommEvent('clk_event', {\n event_id: 'ugc_fenxiang',\n author_id: String(article?.media_user?.id),\n hudong_position: '0',\n group_id: article?.gid,\n obj_text: text,\n })\n }}\n />\n )}\n onClickComment={() => {\n sendTeaCommEvent('rt_reply_comment', {\n author_id: String(article?.media_user?.id),\n hudong_position: '0',\n group_id: article?.gid,\n content_type:\n ARTICLE_CONTENT_TYPE[article?.article_type!]?.value,\n })\n }}\n onClickDigg={(curStatus) => {\n diggUpdate()\n sendTeaCommEvent(curStatus ? 'rt_unlike' : 'rt_like', {\n group_id: article?.gid,\n author_id: String(article?.media_user?.id),\n hudong_position: '0',\n content_type:\n ARTICLE_CONTENT_TYPE[article?.article_type!]?.value,\n })\n }}\n onClickCollect={(curStatus) => {\n collectUpdate()\n sendTeaCommEvent(\n curStatus ? 'rt_not_favourite' : 'rt_favourite',\n {\n group_id: article?.gid,\n author_id: String(article?.media_user?.id),\n hudong_position: '0',\n content_type:\n ARTICLE_CONTENT_TYPE[article?.article_type!]?.value,\n }\n )\n }}\n />\n
\n
\n \n \n )\n }\n\n /* 渲染文章信息 */\n function renderContent(\n type: 'mix' | 'article',\n clue: Record<'zt' | 'ls', string>\n ) {\n const imageList = get(article, 'gallery_info.image_list', [])\n if (!article.content && imageList?.length) {\n return (\n
\n {imageList.map((img: any) => {\n return (\n
\n \n

{img.desc}

\n
\n )\n })}\n \n
\n )\n }\n if (type === 'mix') {\n const newContent = article.content\n ?.replace(/{!--\\s*PGC_VIDEO:(.*)--}/, '')\n .split('

')\n return (\n {\n if (!node) {\n return\n }\n if (!canUseWebp) {\n const imgEles = node.querySelectorAll('img')\n for (const imgELe of imgEles) {\n imgELe.src = imgELe.src.replace(/\\.webp$/, '.png')\n }\n }\n }}\n >\n {newContent.map((section, index) => {\n return (\n \n {\n if (tag === 'a' && name === 'data-concern-id')\n return 'class=ttTopic'\n },\n }),\n article.motor_material_car_info,\n clue\n )\n : '',\n }}\n />\n {index === 0 ? (\n
\n \n
\n ) : null}\n
\n )\n })}\n \n \n )\n }\n if (type === 'article') {\n return (\n {\n if (!node) {\n return\n }\n if (!canUseWebp) {\n const imgEles = node.querySelectorAll('img')\n for (const imgELe of imgEles) {\n imgELe.src = imgELe.src.replace(/\\.webp$/, '.png')\n }\n }\n }}\n >\n {\n if (tag === 'a' && name === 'data-concern-id')\n return 'class=ttTopic'\n },\n }\n ),\n article.motor_material_car_info,\n clue\n )\n : `\n
\n \n 文章消失了,再去看看别的吧~\n
\n `,\n }}\n />\n \n \n )\n }\n }\n\n function renderArticle(\n isVideo: boolean,\n content: string,\n clue: Record<'zt' | 'ls', string>\n ) {\n if (isVideo) {\n return renderContent('mix', clue)\n } else {\n return renderContent('article', clue)\n }\n }\n\n const articleRef = React.useRef(null)\n addRelationSeriesListeners(articleRef, (event, type, params) => {\n relationSeriesEvent(type, params)\n })\n return (\n
\n {renderHeader()}\n
\n {renderArticle(isVideo, article.content, currentClue)}\n
\n {renderBottom()}\n \n
\n )\n}\n","import fetch from 'lib/decorated-fetch'\nimport fetchFeed, { IFeedData } from 'lib/fetch-feed'\nimport getUrl from 'lib/url'\nimport { stringify } from 'querystring'\nimport serializeObject from '@arsenal/arsenal/modules/serializeObject'\nimport asgwFontLoader from '@byted/asgw-font-loader'\n\nexport interface IRelatedSeriesItem {\n brand_id?: number\n brand_logo?: string\n brand_name?: string\n series_id: number\n series_name: string\n cover_uri: string\n cover_url: string\n dcd_score: number\n official_price: string\n dealer_price: string\n online_car_ids: string[]\n offline_car_ids: string[]\n score_description: string\n max_reduce_price?: string\n series_pic_count?: number\n sku_count?: number\n has_question?: boolean\n min_dealer_price?: string\n}\n\nexport const getRelatedSeries = async (\n req: any,\n groupId = '',\n cityName = ''\n) => {\n const res = await fetch(\n getUrl(\n `/motor/pc/content/related_series?${serializeObject({\n group_id: groupId,\n city_name: cityName,\n })}`,\n 'motor.pc_content.api'\n ),\n {\n req,\n rawRes: true,\n }\n )\n\n const json = await res.json()\n if (0 !== json?.status) {\n throw Error(json?.prompts || json.message)\n }\n const fontStyleString = asgwFontLoader\n ?.parseHeaders(res?.headers)\n ?.toStyleString()\n return {\n fontStyleString,\n data: json?.data,\n }\n}\n\nexport interface IRecommendSeriesItem {\n series_id: number\n cover_image: string\n min_price: number\n max_price: number\n dealer_price: string\n series_name: string\n online_car_ids: number[]\n offline_car_ids: number[]\n dcd_score: number\n}\n// 猜你喜欢\nexport const getRecommendSeries = async (\n req: any,\n groupId = '',\n cityName = ''\n) => {\n const json = await fetch(\n getUrl(\n `/motor/pc/car/recommend_series?city_name=${encodeURIComponent(\n cityName\n )}`,\n 'motor.pc_car.api'\n ),\n {\n req,\n }\n )\n\n if (0 !== json?.status) {\n throw Error(json?.prompts || json.message)\n }\n\n return json?.data\n}\n\nexport interface IRelatedRecommendItem {\n group_id_str: string\n title: string\n count: number\n image_url: string\n creator_uid: number\n creator_name: string\n has_video: boolean\n publish_time: number\n video_info: {\n vid: string\n video_size: string\n }\n video_duration: number\n user_info: {\n avatar_url: string\n description: '懂车帝报道'\n motor_auth_show_info: {\n auth_v_type: number\n auth_v_desc: string\n }\n name: string\n user_id: number\n user_verified: boolean\n }\n}\n\nexport interface IRelatedRecommendData {\n count: number\n has_more: boolean\n is_recommend: boolean // 是否为兜底的推荐数据\n next_offset: number\n relation_list: IRelatedRecommendItem[]\n}\n\nexport const getRelatedRecommend = async (\n req: any,\n group_id = '',\n query_type = 0,\n query_list = '',\n count = 20,\n offset = 0\n) => {\n const json = await fetch(\n getUrl(\n `/motor/pc/content/relation/list?group_id=${group_id}&query_type=${query_type}&query_list=${query_list}&count=${count}&offset=${offset}`,\n 'motor.pc_content.api'\n ),\n {\n req,\n }\n )\n\n if (0 !== json?.status) {\n throw Error(json?.prompts || json.message)\n }\n return json?.data\n}\n\ninterface IArticleDetailParams {\n group_id: string\n city_name?: string\n user_id?: number\n}\n\nexport const getArticleDetail = async (\n params: IArticleDetailParams,\n req?: any\n) => {\n const res = await fetch(\n getUrl(\n `/motor/pc/common/article/detail?${serializeObject(params)}`,\n 'motor.pc_common.api'\n ),\n {\n req,\n headers: {\n Cookie: req?.headers?.cookie || '',\n },\n rawRes: true,\n }\n )\n const json = await res.json()\n if (0 !== json?.status) {\n throw Error(json?.prompts || json.message)\n }\n const fontStyleString = asgwFontLoader\n ?.parseHeaders(res?.headers)\n ?.toStyleString()\n\n return {\n article: Object.assign({}, { gid: params.group_id }, json?.data || {}, {\n fontStyleString,\n }),\n }\n}\n\nexport type TArticleMotorMaterialCarInfo = {\n index?: number\n car_friend_count_en?: string\n dcd_score?: number\n dealer_low_price?: string\n has_dealer_price?: boolean\n has_price_reduction?: boolean\n low_price_car_id?: number\n official_low_price?: string\n offline_car_ids?: number[]\n online_car_ids?: number[]\n price_reduction?: string\n series_id?: number\n series_name?: string\n series_pic_count?: number\n has_sh_info?: boolean //是否有二手车源\n sku_count?: number // 二手车数量\n sh_min_price?: number // 二手车最低价\n has_eval?: boolean // 是否有懂车帝实测\n brand_id?: number // 品牌ID\n brand_name?: string // 品牌名称\n}\n\nexport interface IArticle {\n [x: string]: any\n gid: string\n media_user: {\n id: string\n avatar_url: string\n screen_name: string\n follow_count: number\n fans_count: number\n auth_info: {\n auth_type: number\n auth_info: string\n }\n }\n is_pgc_article: boolean\n content: string\n publish_time: number\n title: string\n article_type: 1 | 2 // 1-文本 2-视频\n user_action: {\n is_collect: boolean\n is_digg: boolean\n is_follow: boolean\n }\n digg_count: number\n comment_count: number\n topic_tag_list: {\n title: string\n }[]\n watch_count_en: any\n is_motor_article: boolean\n is_visible: boolean\n video_info: {\n cover_uri: string\n vid: string\n }\n is_koubei: number\n abstract: string\n sub_article_type: number\n gallery_info?: {\n image_list?: {}[]\n }\n fontStyleString?: string\n cover_image_info?: any\n motor_material_car_info?: Record\n}\n\nconst fetchVideos = (\n req: any,\n web_id: string,\n behot_time: number,\n category: string\n) => {\n const params = {\n concern_id: '',\n category,\n web_id,\n device_platform: 'web',\n channel: 'web',\n tt_from: 'enter_auto',\n motor_feed_extra_params: JSON.stringify({\n new_feed: true,\n series_page_sort: 1,\n }),\n sub_category: 'video',\n impression_info: JSON.stringify({\n page_id: 'page_car_series',\n //sub_tab: 'video',\n }),\n max_behot_time: behot_time || 0,\n aid: 1839,\n }\n\n return fetch(\n getUrl(`/motor/stream_entrance/get_feed_pc/v47/?${stringify(params)}`),\n {\n req,\n }\n ).then((res) => {\n return res\n })\n}\n\ninterface IRecommendVideoListProps {\n req: any\n type: 1 | 2 // 1-推荐 2-其它\n web_id: string\n count: number\n category: string\n cursor: number\n}\n\nexport const getRecommendVideoList = async ({\n req,\n type,\n web_id,\n count = 24,\n category,\n cursor,\n}: IRecommendVideoListProps) => {\n if (type === 1) {\n let pagges = Math.ceil(count / 7) - 1\n const res = (await fetchVideos(req, web_id, cursor, category)) || {}\n const data = {\n list: res?.data?.filter((item: any) => !item.duplicate) || [],\n hasMore: res?.has_more,\n }\n\n while (pagges > 0) {\n const behot_time = data?.list?.[data?.list?.length - 1]?.info?.behot_time\n // eslint-disable-next-line no-await-in-loop\n const res = await fetchVideos(req, web_id, behot_time, category)\n data.list = [\n ...data?.list,\n ...(res?.data?.filter((item: any) => !item.duplicate) || []),\n ]\n data.hasMore = res?.has_more\n pagges--\n }\n\n if (data.list.length > count) {\n data.list.length = count\n }\n\n return {\n list: data.list,\n hasMore: data.hasMore,\n cursor: data?.list?.[data?.list?.length - 1]?.behot_time,\n }\n } else {\n const json = await fetch(\n getUrl(\n `/motor/pc/content/video/topic_feed?topic_id=${category}&count=${count}&cursor=${cursor}`\n ),\n {\n req,\n }\n )\n if (0 !== json?.status) {\n throw Error(json?.prompts || json.message)\n }\n const list = json?.data?.list || []\n const paging = json?.data?.paging\n\n return {\n list,\n hasMore: paging?.has_more,\n cursor: paging?.last_cursor,\n }\n }\n}\n","import React, { ReactChild, ReactElement, ReactNode, useMemo } from 'react'\nimport { Wrapper } from 'lib/noop-wrapper'\nimport classNames from 'classnames'\nimport style from './module-title.module.scss'\n\ninterface IProps {\n rightContent?: ReactNode\n prefix?: ReactChild\n titleColor?: string\n className?: string\n}\n\nconst ModuleTitle: React.FC = ({\n rightContent,\n prefix,\n titleColor,\n children,\n className,\n}) => {\n const wrapper = useMemo(() => {\n if (!rightContent) {\n return (content) => (\n \n {content}\n \n \n )\n }\n return (content) => (\n \n
\n \n {prefix}\n {content}\n \n
{rightContent}
\n
\n \n
\n )\n }, [rightContent])\n\n return wrapper(children) as ReactElement\n}\n\nexport default ModuleTitle\n","import React, { CSSProperties } from 'react'\nimport classNames from 'classnames'\n\ninterface IMoreButtonProps {\n onClick?(): void\n style?: CSSProperties\n color?: string\n activeColor?: string\n clkTeaParams?: string\n className?: string\n}\n\nexport const MoreButton: React.FC = ({\n children,\n onClick,\n style,\n color = '#606370',\n activeColor = '#1f2129',\n clkTeaParams,\n className,\n}) => {\n return (\n \n \n {children}\n \n \n \n \n )\n}\n","import fetch from 'lib/decorated-fetch'\nimport getUrl from 'lib/url'\nimport serializeObject from '@arsenal/arsenal/modules/serializeObject'\n\ninterface ITopicHotParams {\n series_or_motor_id?: string\n group_id?: string\n}\n\nconst getTopicHot = async (params: ITopicHotParams, req?: any) => {\n const json = await fetch(\n getUrl(\n `/motor/pc/ugc/community/topic_hot?${serializeObject(params)}`,\n 'motor.pc_ugc.api'\n ),\n {\n req,\n }\n )\n\n if (0 !== json?.status) {\n throw Error(json?.prompts || json.message)\n }\n return json?.data\n}\n\nexport default getTopicHot\n","export const seoDefaultTab = 'complex'\nexport const severDefaultTab = 'all'\nexport const defaultTabName = '综合'\nexport const allDefaultSort = 'hot'\nexport const pageSize = 30 // 目前接口有限制,最大为 30\nexport const sortTypeList = [\n { name: '最热推荐', value: allDefaultSort },\n { name: '最新发布', value: 'release' },\n]\n\nexport type seoTab = 'complex' | 'video' | 'picture' | 'qa'\nexport type serverTab = 'all' | 'video' | 'post' | 'wenda'\n\nconst seoTabs: seoTab[] = [seoDefaultTab, 'video', 'picture', 'qa']\nconst serverTabs: serverTab[] = [severDefaultTab, 'video', 'post', 'wenda']\nconst tabNames = [defaultTabName, '视频', '图文', '问答']\n\nconst seoServerMap = new Map(\n seoTabs.map((item, index) => [item, serverTabs[index]])\n)\n\nconst nameSeoMap = new Map(\n tabNames.map((item, index) => [item, seoTabs[index]])\n)\n\nconst seoNameMap = new Map(\n seoTabs.map((item, index) => [item, tabNames[index]])\n)\n\nexport function getServerTypeBySeo(tab: string): serverTab {\n return seoServerMap.get(tab as seoTab) || severDefaultTab\n}\n\nexport function getSeoTypeByName(name: string): seoTab {\n return nameSeoMap.get(name) || seoDefaultTab\n}\n\nexport function getTabNameBySeo(tab: string): string {\n return seoNameMap.get(tab as seoTab) || defaultTabName\n}\n","import React from 'react'\nimport { Image } from 'Components/view-image'\nconst emptyImg = require('static/empty-envelope.png')\nconst Empty = () => {\n return (\n <>\n
\n \n

\n 暂无内容\n

\n
\n \n )\n}\nexport default Empty\n","import * as React from 'react'\nimport CardWrapper from 'Components/new/community-card/card-wrapper'\nimport Header from 'Components/new/community-card/header'\nimport CarModel from 'Components/new/community-card/car-model'\nimport Text, {\n JHLabel,\n QALabel,\n TopicLabel,\n} from 'Components/new/community-card/text'\nimport Video from 'Components/new/community-card/video'\nimport ImageList from 'Components/new/community-card/image-list'\nimport Forward, {\n forwardEmpty,\n questionEmpty,\n} from 'Components/new/community-card/forward'\nimport Answer from 'Components/new/community-card/answer'\nimport Interact, { isBuryable } from 'Components/new/community-card/interact'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\nimport ARTICLE_CONTENT_TYPE from 'Constants/articleType'\nimport koubeiLink from 'Components/new/links/koubei-link'\nimport ugcDetailLink from 'Components/new/links/ugc-detail-link'\nimport Share from 'Components/new/community-card/share'\nimport anyLink from 'Components/new/links/any-link'\nimport { filterEmoji } from 'Constants/emoji'\nimport { isLowContent, substrSingleByte } from 'New/ugc/tdk'\ninterface IUGCItemProps {\n data: any\n teaParams?: Record\n sort?: string\n displayCommunity?: boolean\n shareWithZT?: boolean\n onClickCommunity?(): void\n}\n\n// eslint-disable-next-line complexity\nconst UGCItem: React.FC = ({\n data,\n teaParams,\n sort,\n displayCommunity = false,\n shareWithZT = true,\n onClickCommunity,\n}) => {\n const {\n gid_str,\n title,\n content,\n article_sub_type,\n selected_level,\n image_urls,\n comment_data,\n comment_count,\n create_time,\n latest_comment_time,\n display_time,\n digg_count,\n user_digg,\n user_bury,\n is_collect,\n activity_info,\n } = data || {}\n\n const isAsk = article_sub_type === 8\n\n const isKoubei = [12, 13, 14].includes(article_sub_type)\n\n const {\n avatar_url,\n user_id,\n name,\n is_follow,\n medal_list,\n user_description_list,\n motor_auth_show_info,\n } = data?.profile_info || {}\n\n const { auth_v_type } = motor_auth_show_info || {}\n\n const { video_id, cover_url } = data?.video_detail_info || {}\n\n const alt = title\n ? title\n : isLowContent(content)\n ? name\n : substrSingleByte(content, 10)\n\n const {\n item_id_str: link_info_id,\n title: link_info_title,\n ui_style: link_info_ui_style,\n name: link_info_name,\n image_url: link_info_image_url,\n article_type: link_info_article_type,\n } = data?.link_info || {}\n\n const {\n status: ugc_question_info_status,\n status_display: ugc_question_info_status_display,\n send_award,\n award_icon_url,\n } = data?.ugc_question_info || {}\n\n const firstComment = comment_data?.[0]\n\n const hasAnswer = isAsk && ugc_question_info_status === 1 && firstComment\n\n const textLinkTitle = substrSingleByte(filterEmoji(content), 20)\n const makeArticleLinkWrapper = (isPinglun: boolean, hasTitle?: boolean) => {\n return isKoubei\n ? koubeiLink({\n id: gid_str,\n anchorId: isPinglun ? 'comment' : '',\n title: hasTitle ? textLinkTitle : undefined,\n })\n : ugcDetailLink({\n id: gid_str,\n anchorId: isPinglun ? 'comment' : '',\n title: hasTitle ? textLinkTitle : undefined,\n })\n }\n\n const mergedTeaParams = {\n ...teaParams,\n group_id: gid_str,\n author_id: String(user_id),\n }\n\n const { activity_id_str, name: activity_name } = activity_info || {}\n\n return (\n {\n sendTeaCommEvent('clk_event', {\n event_id: 'content_region_clk',\n module_id: 'ugc_anthor',\n content_type: ARTICLE_CONTENT_TYPE[article_sub_type]?.value,\n ...mergedTeaParams,\n })\n }}\n >\n ({\n name: d.desc_content,\n icon: d.icon_url,\n desc: d.empathy,\n time: d.upgrade_time,\n }))}\n medalsVisible\n textTags={user_description_list\n ?.slice(0, 1)\n ?.map((d: any) => d.description)}\n onClickUser={() => {\n sendTeaCommEvent('clk_event', {\n event_id: 'article_anthor_head_picture',\n module_id: 'ugc_anthor',\n content_type: ARTICLE_CONTENT_TYPE[article_sub_type]?.value,\n ...mergedTeaParams,\n })\n }}\n onClickFollow={(status) =>\n sendTeaCommEvent(status ? 'rt_unfollow' : 'rt_follow', {\n event_id: `content_${status ? 'unfollow' : 'follow'}_button_clk`,\n module_id: 'ugc_anthor',\n hudong_position: '0',\n ...mergedTeaParams,\n })\n }\n />\n \n \n {isAsk ? 提问 : null}\n {selected_level ? : null}\n {activity_name}\n \n }\n append={\n isKoubei || article_sub_type === 9 ? (\n \n ...查看全文\n \n ) : null\n }\n linkWrapper={makeArticleLinkWrapper(false, true)}\n />\n \n {!video_id || !cover_url ? (\n {\n return {\n src: image.url,\n width: image.width,\n height: image.height,\n alt: `${alt}图${image_urls.length > 1 ? index + 1 : ''}`,\n }\n }\n )}\n />\n ) : null}\n {link_info_id ? (\n \n ) : null}\n {hasAnswer ? (\n \n ) : null}\n (\n {\n sendTeaCommEvent('clk_event', {\n event_id: 'ugc_fenxiang',\n author_id: user_id,\n hudong_position: '0',\n group_id: gid_str,\n obj_text: text,\n })\n }}\n />\n )}\n onClickDigg={(status) => {\n sendTeaCommEvent(status ? 'rt_unlike' : 'rt_like', {\n hudong_position: '0',\n content_type: ARTICLE_CONTENT_TYPE[article_sub_type]?.value,\n module_id: 'ugc_anthor',\n ...mergedTeaParams,\n })\n }}\n onClickComment={() => {\n sendTeaCommEvent('rt_reply_comment', {\n hudong_position: '0',\n content_type: ARTICLE_CONTENT_TYPE[article_sub_type]?.value,\n module_id: 'ugc_anthor',\n ...mergedTeaParams,\n })\n }}\n onClickCollect={(status) => {\n sendTeaCommEvent(status ? 'rt_not_favourite' : 'rt_favourite', {\n hudong_position: '0',\n content_type: ARTICLE_CONTENT_TYPE[article_sub_type]?.value,\n module_id: 'ugc_anthor',\n ...mergedTeaParams,\n })\n }}\n />\n \n )\n}\nexport default UGCItem\n","import React from 'react'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\nimport Button from 'Components/button'\nimport Avatar from 'Components/author/avatar'\nimport Stars from 'Components/stars'\nimport formatNumber from '@arsenal/arsenal/modules/formatNumber'\nimport { getKeyByValue } from '../../tabMapping'\nimport FilterBackground from 'Components/new/filter-background'\nimport styles from './index.module.scss'\nimport classNames from 'classnames'\n\nconst dongchefen = require('static/dong-che-fen.svg')\nconst yellow_star_little = require('static/yellow-star-little.png')\nconst black_star_little = require('static/black-star-little.png')\ninterface ICommunityHeaderProps {\n cheyouHead: any\n cheyouSeriesReviewCard: any\n series_id: string\n currentTab?: string\n joined_days?: string\n isJoining?: boolean\n handleJoinClick: (e: React.MouseEvent) => void\n}\n\nconst CommunityHeader = ({\n cheyouHead,\n cheyouSeriesReviewCard,\n series_id,\n currentTab,\n joined_days,\n isJoining,\n handleJoinClick,\n}: ICommunityHeaderProps) => {\n const list = [\n {\n name: '车友',\n value: formatNumber(cheyouHead?.user_amount),\n filter: (value?: string) => !!value,\n },\n {\n name: '认证车主',\n value: formatNumber(cheyouHead?.certified_owner_count),\n filter: (value?: string) => !!value,\n },\n {\n name: '问答',\n value: formatNumber(cheyouHead?.wenda_count),\n filter: (value?: string) => !!value,\n },\n {\n name: '口碑',\n value: formatNumber(cheyouHead?.kou_bei_count),\n filter: (value?: string) => !!value && cheyouHead?.community_type === 0,\n },\n ].filter((d) => d.filter(d.value))\n\n return (\n <>\n \n \n
\n

\n {cheyouHead?.series_name\n ? `${cheyouHead?.series_name}车友圈`\n : cheyouHead?.name}\n

\n

\n {cheyouHead?.description}\n

\n
\n {cheyouHead?.master_avatar && (\n \n sendTeaCommEvent('clk_event', {\n page_id: 'page_ugc_forum_home',\n event_id: 'join_forum_home_user',\n car_series_id: String(series_id),\n car_series_name: cheyouHead?.name,\n motor_id: cheyouHead?.motor_id_str,\n sub_tab: getKeyByValue(currentTab as any),\n })\n }\n >\n \n\n

\n 圈主:{cheyouHead?.master_avatar?.avatar_user_name}\n

\n
\n \n )}\n\n {cheyouHead?.user_avatar_list?.map((item: any, index: number) => {\n return (\n \n sendTeaCommEvent('clk_event', {\n page_id: 'page_ugc_forum_home',\n event_id: 'join_forum_home_user',\n car_series_id: String(series_id),\n car_series_name: cheyouHead?.name,\n motor_id: cheyouHead?.motor_id_str,\n sub_tab: getKeyByValue(currentTab as any),\n })\n }\n >\n \n \n )\n })}\n\n

\n 共{formatNumber(cheyouHead?.user_amount)}车友等你加入\n

\n
\n
\n {list.map((item, index) => {\n return (\n
\n

{item.name}:

\n \n {item.value}\n

\n
\n )\n })}\n
\n
\n \n {joined_days ? `已加入${joined_days}天` : '加入圈子'}\n \n {cheyouHead?.community_type === 0 && (\n \n sendTeaCommEvent('clk_event', {\n page_id: 'page_ugc_forum_home',\n event_id: 'look_car_entrance',\n car_series_id: String(series_id),\n car_series_name: cheyouHead?.name,\n motor_id: cheyouHead?.motor_id_str,\n sub_tab: getKeyByValue(currentTab as any),\n obj_text: '看车',\n })\n }\n >\n 看车\n \n )}\n {/* \n 认证车主\n */}\n
\n {/*
*/}\n
\n {!!cheyouSeriesReviewCard?.review_people_count && (\n {\n sendTeaCommEvent('clk_event', {\n page_id: 'page_ugc_forum_home',\n event_id: 'top_dcd_score_card_entrance',\n car_series_id: String(cheyouSeriesReviewCard?.series_id),\n car_series_name: cheyouSeriesReviewCard?.series_name,\n module_id: 'forum_home_top_dcd_score_module',\n })\n }}\n >\n
\n \n

共{cheyouSeriesReviewCard?.review_people_count}人评价

\n
\n
\n {cheyouSeriesReviewCard?.score ? (\n \n {Number(cheyouSeriesReviewCard?.score / 100).toFixed(2)}\n

\n ) : (\n \n 暂无评分\n

\n )}\n
\n \n {cheyouSeriesReviewCard?.score_description && (\n

\n “{cheyouSeriesReviewCard?.score_description}”\n

\n )}\n
\n
\n\n \n 查看详情\n \n \n \n )}\n \n \n \n )\n}\nexport default CommunityHeader\n","import React, { useState } from 'react'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\nimport Link from 'next/link'\nimport { getKeyByValue } from '../tabMapping'\nimport { makeCommunityUrl } from 'Components/new/links/community-link'\n\ninterface SortItem {\n chi_name: string\n eng_name: string\n}\ninterface IProps {\n current_sort: string\n sort_list: SortItem[]\n tab_name: string\n series_id: string\n series_name: string\n // currentPage: number\n // handleSortClick: (e: React.MouseEvent) => void\n}\n\nconst Sort = ({\n current_sort,\n sort_list,\n tab_name,\n series_id,\n series_name,\n}: // currentPage,\n\nIProps) => {\n const [isShowList, setIsShowList] = useState(false)\n const handClick = () => {\n setIsShowList(false)\n }\n return (\n setIsShowList(true)}\n onMouseLeave={() => setIsShowList(false)}\n >\n

\n {current_sort}\n \n

\n
\n {sort_list?.map((item) => {\n const { chi_name, eng_name } = item\n return (\n \n {\n handClick()\n sendTeaCommEvent('clk_event', {\n page_id: 'page_ugc_forum_home',\n event_id:\n tab_name === 'wenda'\n ? 'select_module_button_qa_clk'\n : 'select_module_button_dynamic_clk',\n car_series_id: series_id,\n car_series_name: series_name,\n sub_tab:\n tab_name === 'wenda' ? '问答' : getKeyByValue(tab_name),\n module_id:\n tab_name === 'wenda'\n ? 'select_module_button_qa'\n : 'select_module_button_dynamic',\n obj_text: chi_name,\n })\n }}\n className=\"list-item\"\n >\n {chi_name}\n \n \n )\n })}\n
\n\n \n \n )\n}\n\nexport default Sort\n","import React from 'react'\nimport Link from 'next/link'\nimport classNames from 'classnames'\nimport { makeCommunityUrl } from 'Components/new/links/community-link'\n\nexport interface MoreTabItem {\n chi_name: string\n tab_name: string\n}\ninterface IProps {\n more_tab_list: MoreTabItem[]\n currentMoreTab: string\n series_id: string\n handleMoreTabClick: (e: React.MouseEvent) => void\n}\n\nconst MoreTabList = ({\n more_tab_list,\n currentMoreTab,\n series_id,\n\n handleMoreTabClick,\n}: IProps) => {\n const activeTab = currentMoreTab === 'wenda' ? 'all' : currentMoreTab\n return (\n
\n {more_tab_list?.map((item) => {\n const { chi_name, tab_name } = item\n return (\n \n handleMoreTabClick(e)}\n >\n

{chi_name}

\n \n \n )\n })}\n\n \n
\n )\n}\n\nexport default MoreTabList\n","import React from 'react'\nimport UGCItem from './ugc-item'\nimport classNames from 'classnames'\ninterface ITopLabelProps {\n className?: string\n}\n\nexport const TopLabel: React.FC = ({ className, children }) => {\n return (\n \n {children}\n \n )\n}\n\ninterface IProps {\n data?: any\n announcements?: any\n teaParams?: Record\n sort?: string\n}\n\nconst Content: React.FC = ({\n data,\n announcements,\n teaParams,\n sort,\n}) => {\n const announcementList = announcements?.announcement_list || []\n\n return (\n \n {/* {announcementList.length ? (\n
\n {announcementList.map((item: any, index: number) => {\n return (\n \n {anyLink({\n id: item.gid_str,\n articleType: item.article_type,\n })(\n \n \n {item.header}\n \n\n \n {item.content}\n

\n \n
\n )}\n
\n )\n })}\n \n ) : null} */}\n {data?.cheyou_list?.map((item: any) => {\n return (\n \n )\n })}\n \n )\n}\n\nexport default Content\n","import React from 'react'\nimport classNames from 'classnames'\nimport HotHeader from 'Components/new/hot/hot-header'\nimport Stars from 'Components/stars'\nimport Avatar from 'Components/author/avatar'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\n\nconst yellow_star_little = require('static/yellow-star-little.png')\nconst black_star_little = require('static/black-star-little.png')\nconst dongche_score_bg = require('static/dongche-score-bg.svg')\ninterface IDongcheScoreProps {\n cheyouSeriesReviewCard: any\n}\n\nconst DongcheScore = ({ cheyouSeriesReviewCard }: IDongcheScoreProps) => {\n const list = [\n {\n title: '综合',\n score: Number(cheyouSeriesReviewCard?.review?.score / 100).toFixed(2),\n },\n {\n title: '内饰',\n score: Number(\n cheyouSeriesReviewCard?.review?.interiors_score / 100\n ).toFixed(2),\n },\n {\n title: '配置',\n score: Number(\n cheyouSeriesReviewCard?.review?.configuration_score / 100\n ).toFixed(2),\n },\n {\n title: '空间',\n score: Number(cheyouSeriesReviewCard?.review?.space_score / 100).toFixed(\n 2\n ),\n },\n {\n title: '外观',\n score: Number(\n cheyouSeriesReviewCard?.review?.appearance_score / 100\n ).toFixed(2),\n },\n {\n title: '舒适性',\n score: Number(\n cheyouSeriesReviewCard?.review?.comfort_score / 100\n ).toFixed(2),\n },\n {\n title: '操控',\n score: Number(\n cheyouSeriesReviewCard?.review?.control_score / 100\n ).toFixed(2),\n },\n {\n title: '动力',\n score: Number(cheyouSeriesReviewCard?.review?.power_score / 100).toFixed(\n 2\n ),\n },\n ]\n\n const bgUrl = cheyouSeriesReviewCard?.img_url\n\n return (\n <>\n {\n sendTeaCommEvent('clk_event', {\n page_id: 'page_ugc_forum_home',\n event_id: 'recommend_dcd_score_module_entrance',\n car_series_id: String(cheyouSeriesReviewCard?.series_id),\n car_series_name: cheyouSeriesReviewCard?.series_name,\n module_id: 'forum_home_recommend_dcd_score_module',\n })\n }}\n >\n \n
\n
\n
\n
\n

\n {cheyouSeriesReviewCard?.score\n ? Number(cheyouSeriesReviewCard?.score / 100).toFixed(2)\n : '暂无评分'}\n

\n \n {cheyouSeriesReviewCard?.score_description && (\n

\n “{cheyouSeriesReviewCard?.score_description}”\n

\n )}\n
\n
\n {cheyouSeriesReviewCard?.series_review_user_avatar_list?.map(\n (item: any, index: number) => {\n return (\n \n )\n }\n )}\n

\n 共{cheyouSeriesReviewCard?.review_people_count}人评价\n

\n
\n {cheyouSeriesReviewCard?.rank_info?.rank !== 0 && (\n
\n

\n {cheyouSeriesReviewCard?.rank_info?.rank_type}\n

\n

\n NO.{cheyouSeriesReviewCard?.rank_info?.rank}\n

\n \n
\n )}\n

\n {cheyouSeriesReviewCard?.rank_info?.rank_rate_info}\n

\n
\n\n
\n
\n\n
\n
\n {list.slice(0, 4).map((item, index) => {\n return (\n \n \n {cheyouSeriesReviewCard?.review ? item.score : '-'}\n

\n \n {item.title}\n

\n
\n )\n })}\n
\n
\n {list.slice(4).map((item, index) => {\n return (\n \n

\n {cheyouSeriesReviewCard?.review ? item.score : '-'}\n

\n

{item.title}

\n
\n )\n })}\n
\n
\n \n \n \n\n \n \n )\n}\nexport default DongcheScore\n","import React from 'react'\nimport { filterEmoji } from 'Constants/emoji'\nimport HotHeader from 'Components/new/hot/hot-header'\nimport koubeiLink from 'Components/new/links/koubei-link'\nimport ugcDetailLink from 'Components/new/links/ugc-detail-link'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\nimport HotItem from 'Components/new/hot/hot-item'\nimport HotLayout from 'Components/new/hot/hot-layout'\n\nconst IconHotTalk = require('static/icon-hot-talk.svg')\ninterface IHotTalkCommunityProps {\n cheyouHotCard: any\n series_id: string\n series_name: string\n}\nconst HotTalkCommunity: React.FC = ({\n cheyouHotCard,\n series_id,\n series_name,\n}) => {\n const koubeiarr = [12, 13, 14]\n const hotArr =\n cheyouHotCard?.map?.((item: any) => {\n const content = filterEmoji(item?.title || item?.content)\n if (content) {\n return { ...item, content }\n }\n }) || []\n\n return (\n }\n >\n {({ index }) => {\n const item = hotArr[index]\n const id = item?.gid_str\n return (\n \n {(koubeiarr.includes(item?.article_sub_type)\n ? koubeiLink({ id })\n : ugcDetailLink({ id }))(\n {\n sendTeaCommEvent('clk_event', {\n page_id: 'page_ugc_forum_home',\n event_id: 'forum_home_hot_discussion',\n car_series_id: String(series_id),\n car_series_name: series_name,\n module_id: 'ugc_detail_tuijian',\n group_id: item?.gid_str,\n author_id: item?.user_id_str,\n })\n }}\n />\n )}\n \n )\n }}\n \n )\n}\nexport default HotTalkCommunity\n","import fetch from 'lib/decorated-fetch'\nimport getUrl from 'lib/url'\nimport serializeObject from '@arsenal/arsenal/modules/serializeObject'\n\ninterface ICheyouHeadParams {\n series_or_motor_id: string\n city_name?: string\n}\n\nconst getCheyouSeriesReviewCard = async (\n params: ICheyouHeadParams,\n req?: any\n) => {\n const json = await fetch(\n getUrl(\n `/motor/pc/car/series/get_cheyou_series_review_card?${serializeObject(\n params\n )}`,\n 'motor.pc_car.api'\n ),\n {\n req,\n }\n )\n\n if (0 !== json?.status) {\n throw Error(json?.prompts || json.message)\n }\n return json?.data\n}\nexport default getCheyouSeriesReviewCard\n","import fetch from 'lib/decorated-fetch'\nimport getUrl from 'lib/url'\nimport serializeObject from '@arsenal/arsenal/modules/serializeObject'\n\ninterface ICheYouHotCardParams {\n series_or_motor_id: string\n}\n\nconst getCheYouHotCard = async (params: ICheYouHotCardParams, req?: any) => {\n const json = await fetch(\n getUrl(\n `/motor/pc/ugc/community/cheyou_hot_card?${serializeObject(params)}`,\n 'motor.pc_ugc.api'\n ),\n {\n req,\n }\n )\n\n if (0 !== json?.status) {\n throw Error(json?.prompts || json?.message)\n }\n\n return json?.data\n}\nexport default getCheYouHotCard\n","import { getKeyByValue } from './tabMapping'\n\ninterface ITDKParams {\n series_name?: string\n page?: number\n total_count?: number\n currentTab?: string\n}\n\nfunction tdk({\n series_name = '',\n page = 1,\n total_count,\n currentTab,\n}: ITDKParams) {\n let title = ''\n let description = ''\n let keywords = ''\n if (currentTab === 'dongtai') {\n title = `${series_name}车友圈大全_${series_name}车友圈怎么样_懂车帝`\n description = `懂车帝${series_name}车友圈为您提供最全的${series_name}车友圈大全,涵盖${series_name}车友圈怎么样,${series_name}车友圈好不好,${series_name}车友圈怎么找等信息,想了解更多关于${series_name}车友圈信息就来懂车帝。`\n keywords = `${series_name}车友圈,${series_name}车友圈大全,${series_name}车友圈怎么样`\n // if (community_type === 0) {\n // title = `${series_name}车友圈大全_${series_name}车友圈怎么样_懂车帝`\n // description = `懂车帝${series_name}车友圈为您提供最全的${series_name}车友圈大全,涵盖${series_name}车友圈怎么样,${series_name}车友圈好不好,${series_name}车友圈怎么找等信息,想了解更多关于${series_name}车友圈信息就来懂车帝。`\n // keywords = `${series_name}车友圈,${series_name}车友圈大全,${series_name}车友圈怎么样`\n // } else if (community_type === 9) {\n // //官方\n // title = `${city_name}官方车友圈大全_${city_name}官方车友圈怎么样_懂车帝`\n // description = `懂车帝${city_name}官方车友圈为您提供最全的{${city_name}官方车友圈大全,涵盖${city_name}官方车友圈怎么样,${city_name}官方车友圈好不好,${city_name}官方车友圈怎么找等信息,想了解更多关于${city_name}官方车友圈信息就来懂车帝。`\n // keywords = `${city_name}官方车友圈,${city_name}官方车友圈大全,${city_name}官方车友圈怎么样样`\n // } else if (community_type === 8) {\n // //星级\n // title = `${series_name}_懂车帝`\n // description = `懂车帝${series_name}为您提供最全的${series_name}大全,涵盖${series_name}怎么样,${series_name}好不好,${series_name}怎么找等信息,想了解更多关于${series_name}信息就来懂车帝。`\n // keywords = `${series_name},${series_name}怎么样,${series_name}好不好`\n // } else if (city_name) {\n // //有地域\n // title = `${city_name}${series_name}车友圈大全_${city_name}${series_name}}车友圈怎么样_懂车帝`\n // description = `懂车帝${city_name}${series_name}车友圈为您提供最全的${city_name}${series_name}车友圈大全,涵盖${city_name}${series_name}车友圈怎么样,${city_name}${series_name}车友圈好不好,${city_name}${series_name}车友圈怎么找等信息,想了解更多关于${city_name}${series_name}车友圈信息就来懂车帝。`\n // keywords = `${city_name}${series_name}车友圈,${city_name}${series_name}车友圈大全,${city_name}${series_name}车友圈怎么样`\n // } else {\n // //其他\n // title = `${avatar_user_name}车友圈_懂车帝`\n // description = `懂车帝${avatar_user_name}车友圈为您提供最全的${avatar_user_name}车友圈大全,涵盖${avatar_user_name}车友圈怎么样,${avatar_user_name}车友圈好不好,${avatar_user_name}车友圈怎么找等信息,想了解更多关于${avatar_user_name}车友圈信息就来懂车帝。`\n // keywords = `${avatar_user_name}车友圈,${avatar_user_name}车友圈怎么样,${avatar_user_name}车友圈好不好`\n // }\n } else {\n switch (currentTab) {\n case 'selected':\n title = `${series_name}车友圈精华帖_${series_name}论坛_${series_name}车友圈_懂车帝`\n description = `${series_name}车友圈群聚千万车友,为您提供众多${series_name}车友圈精华帖的内容,以车会友,尽在懂车帝。`\n keywords = `${series_name}车友圈精华帖,${series_name}论坛,${series_name}车友圈`\n break\n case 'hot':\n title = `${series_name}车友圈热门_${series_name}论坛_${series_name}车友圈_懂车帝`\n description = `${series_name}车友圈群聚千万车友,为您提供众多${series_name}车友圈热门论坛的内容,以车会友,尽在懂车帝。`\n keywords = `${series_name}车友圈热门,${series_name}论坛,${series_name}车友圈`\n break\n case 'price_discuss':\n title = `${series_name}车友圈价格讨论_${series_name}论坛_${series_name}车友圈_懂车帝`\n description = `${series_name}车友圈群聚千万车友,为您提供众多${series_name}车友圈价格讨论的内容,以车会友,尽在懂车帝。`\n keywords = `${series_name}车友圈价格讨论,${series_name}论坛,${series_name}车友圈`\n break\n case 'quality':\n title = `${series_name}车友圈质量反馈_${series_name}论坛_${series_name}车友圈_懂车帝`\n description = `${series_name}车友圈群聚千万车友,为您提供众多${series_name}车友圈质量反馈的内容,以车会友,尽在懂车帝。`\n keywords = `${series_name}车友圈质量反馈,${series_name}论坛,${series_name}车友圈`\n break\n case 'dakareyi':\n title = `${series_name}车友圈评车_${series_name}论坛_${series_name}车友圈_懂车帝`\n description = `${series_name}车友圈群聚千万车友,为您提供众多${series_name}车友圈评车的内容,以车会友,尽在懂车帝。`\n keywords = `${series_name}车友圈评车,${series_name}论坛,${series_name}车友圈`\n break\n case 'wenda':\n title = `${series_name}车友圈问答_${series_name}论坛_${series_name}车友圈_懂车帝`\n description = `${series_name}车友圈群聚千万车友,为您提供众多${series_name}车友圈问答交流平台,帮您排忧解难。以车会友,尽在懂车帝。`\n keywords = `${series_name}车友圈问答,${series_name}论坛,${series_name}车友圈`\n break\n case 'shangjia':\n title = `${series_name}车友圈商家_${series_name}论坛_${series_name}车友圈_懂车帝`\n description = `${series_name}车友圈群聚千万车友,为您提供众多${series_name}车友圈口碑的内容,以车会友,尽在懂车帝。`\n keywords = `${series_name}车友圈商家,${series_name}论坛,${series_name}车友圈`\n break\n default:\n title = `${series_name}车友圈${getKeyByValue(\n currentTab as any\n )}_${series_name}论坛_${series_name}车友圈_懂车帝`\n description = `${series_name}车友圈群聚千万车友,为您提供众多${series_name}车友圈${getKeyByValue(\n currentTab as any\n )}的内容,以车会友,尽在懂车帝。`\n keywords = `${series_name}车友圈${getKeyByValue(\n currentTab as any\n )},${series_name}论坛,${series_name}车友圈`\n break\n }\n }\n\n if (page > 1 && total_count) {\n title = `${title}_${page}/${Math.ceil(total_count / 30)}页_懂车帝`\n description = `${description}您当前浏览的是${series_name}车友圈商家内容第${page}页内容。`\n keywords = `${keywords},${page}/${Math.ceil(total_count / 30)}页`\n }\n\n return {\n title,\n description,\n keywords,\n }\n}\n\nexport default tdk\n","import fetch from 'lib/decorated-fetch'\nimport getUrl from 'lib/url'\nimport serializeObject from '@arsenal/arsenal/modules/serializeObject'\n\ninterface ICheyouHeadParams {\n series_or_motor_id: string\n}\n\nconst getAnnouncements = async (params: ICheyouHeadParams, req?: any) => {\n const json = await fetch(\n getUrl(\n `/motor/pc/ugc/community/announcements?${serializeObject(params)}`,\n 'motor.pc_ugc.api'\n ),\n {\n req,\n }\n )\n\n if (0 !== json?.status) {\n throw Error(json?.prompts || json.message)\n }\n return json?.data\n}\nexport default getAnnouncements\n","import React, {\n useState,\n useCallback,\n useMemo,\n useEffect,\n useRef,\n useContext,\n} from 'react'\nimport getQuery from '@arsenal/arsenal/modules/getQuery'\nimport { useRouter } from 'next/router'\nimport Dialog from 'Components/dialog'\nimport serializeObject from '@arsenal/arsenal/modules/serializeObject'\nimport { ObjectInterface } from '@arsenal/arsenal/modules/interface/objectInterface'\nimport {\n sendTeaCommEvent,\n sendTeaEnterEvent,\n setEnterPageBizParams,\n setStayPageBizParams,\n} from 'lib/tea-analyze'\nimport Pagination from 'Components/new/pagination'\nimport CommunityHeader from './components/community-header'\nimport classNames from 'classnames'\nimport Button from 'Components/button'\nimport ToolTip from 'Components/new/tool-tip'\nimport PublishDropdown, {\n PublishOperation,\n usePublish,\n} from 'Components/new/community-card/publish-dropdown'\nimport Sort from './components/sort'\nimport MoreTableList from './components/more-table-list'\nimport Content, { TopLabel } from 'New/community/components/content'\nimport useLoginCheckCallback from 'Components/hooks/use-login-check-callback'\nimport StickyHeader from 'Components/new/scroll-sticky/sticky-header'\nimport Toast from 'Components/toast-messager'\nimport Publisher from 'Components/publisher/publisher'\nimport Breadcrumb from 'Components/breadcrumb'\nimport Copyright from 'Components/new/copyright'\nimport MyCommunity from 'Components/new/hot/my-community'\nimport DongcheScore from './components/dongche-score'\nimport Empty from './components/empty'\nimport HotTalkCommunity from 'New/community/components/hot-talk-community'\nimport getCheyouHead from './services/getCheyouHead'\nimport getCheyouSeriesReviewCard from './services/getCheyouSeriesReviewCard'\nimport getCheYouList from './services/getCheYouList'\nimport getCheYouHotCard from './services/getCheYouHotCard'\nimport Head from 'Components/head'\nimport tdk from './tdk'\nimport tabMapping, { getKeyByValue } from './tabMapping'\nimport getAnnouncements from 'New/community/services/getAnnouncements'\nimport anyLink from 'Components/new/links/any-link'\nimport { size14Class } from 'Components/new/community-card/text'\nimport Link from 'next/link'\nimport OverflowTooltip from 'Components/new/overflow-tooltip'\nimport { headerHeight } from 'Components/new-header'\nimport { makeCommunityUrl } from 'Components/new/links/community-link'\nimport getTopicHot from 'New/community-topic/services/getTopicHot'\nimport HotTopic from 'Components/new/hot/hot-topic'\nimport dialogStyle from 'Components/dialog.module.scss'\nimport Confirm from 'Components/new/confirm'\nimport { getInnerLinkList } from 'Components/new/inner-link'\nimport { getOuterLinkList } from 'Components/new/outer-link'\nimport formatNumber from '@arsenal/arsenal/modules/formatNumber'\nimport { SpiderContext } from '../../pages/_app'\n\nconst cheyouHeadCache = new Map()\nconst cheyouSeriesReviewCardCache = new Map()\nconst cheYouHotCardCache = new Map()\nconst topicHotCache = new Map()\n\ninterface ICommunityProps {\n tab: string\n sort: string\n series_id: string\n page: number\n total: number\n cheyouHead: any\n cheyouSeriesReviewCard: any\n cheyouList: any\n cheyouHotCard: any\n announcements: any\n topicHot: any\n cheyouHeadCacheKey: string\n cheyouSeriesReviewCardCacheKey: string\n cheYouHotCardCacheKey: string\n topicHotCacheKey: string\n}\ninterface ITab {\n chi_name: string\n tab_name: string\n}\nconst sort_list = [\n {\n chi_name: '最新回复',\n eng_name: 'reply',\n },\n {\n chi_name: '最新发布',\n eng_name: 'release',\n },\n // {\n // chi_name: '最新推荐',\n // eng_name: 'recommend',\n // },\n]\n\nexport const allDefaultTab = 'dongtai'\nexport const allDefaultSort = 'reply'\n\nconst Community = ({\n tab,\n sort,\n series_id,\n page = 1,\n cheyouHead,\n cheyouSeriesReviewCard,\n cheyouList,\n cheyouHotCard,\n announcements,\n topicHot,\n cheyouHeadCacheKey,\n cheyouSeriesReviewCardCacheKey,\n cheYouHotCardCacheKey,\n topicHotCacheKey,\n}: ICommunityProps) => {\n if (typeof window !== 'undefined') {\n cheyouHeadCache.set(cheyouHeadCacheKey, cheyouHead)\n cheyouSeriesReviewCardCache.set(\n cheyouSeriesReviewCardCacheKey,\n cheyouSeriesReviewCard\n )\n cheYouHotCardCache.set(cheYouHotCardCacheKey, cheyouHotCard)\n topicHotCache.set(topicHotCacheKey, topicHot)\n }\n const tab_list = cheyouHead?.tab_info?.map((item: ITab) => {\n return {\n chi_name: item?.chi_name,\n tab_name: tabMapping.get(item?.chi_name),\n }\n })\n\n const koubeiItem = {\n chi_name: '懂车分(口碑)',\n tab_name: 'koubei',\n as: `/auto/series/score/${cheyouHead?.series_id}-x-x-x-x-x-x`,\n href: `/auto/score?seriesId=${cheyouHead?.series_id}-x-x-x-x-x-x`,\n }\n const wendaItem = { chi_name: '问答', tab_name: 'wenda' }\n\n if (cheyouHead?.have_koubei && tab_list) {\n tab_list.splice(4, 0, koubeiItem)\n }\n const more_tab_list = cheyouHead?.wenda_tab_info?.map((item: ITab) => {\n return {\n chi_name: item?.chi_name,\n tab_name: tabMapping.get(item?.chi_name),\n }\n })\n\n if (more_tab_list && tab_list) {\n tab_list.splice(5, 0, wendaItem)\n // tab_list.push({ chi_name: '问答', tab_name: 'wenda' })\n }\n\n const qa_arr = more_tab_list?.map((item: ITab) => {\n return item.tab_name\n })\n\n const router = useRouter()\n const [isJoining, setJoining] = useState(false)\n const [joinedDays, setJoinedDays] = useState(cheyouHead?.joined_days)\n // const [isFixed, setIsFixed] = useState(false)\n // const responsive = useResponsive()\n\n // const [currentSort, setCurrentSort] = useState(initSort || '最新回复')\n const currentSort = useMemo(() => {\n switch (sort) {\n case 'recommend':\n return '最新推荐'\n case 'release':\n return '最新发布'\n default:\n return '最新回复'\n }\n }, [sort])\n\n useEffect(() => {\n const stayParms = {\n page_id: 'page_ugc_forum_home',\n car_series_id: String(cheyouHead?.series_id || cheyouHead?.motor_id),\n car_series_name: cheyouHead?.name,\n sub_tab: getKeyByValue(tab),\n }\n setStayPageBizParams(stayParms)\n const parms = {\n page_id: 'page_ugc_forum_home',\n car_series_id: String(cheyouHead?.series_id || cheyouHead?.motor_id),\n car_series_name: cheyouHead?.name,\n sub_tab: getKeyByValue(tab),\n }\n setEnterPageBizParams(parms)\n sendTeaEnterEvent(parms)\n }, [router.asPath])\n\n const handleTabClick = (e: any) => {\n const { name } = e.target.dataset\n sendTeaCommEvent('clk_event', {\n page_id: 'page_ugc_forum_home',\n event_id: 'forum_home_second_tab_clk',\n // car_series_id: String(cheyouHead?.series_id || cheyouHead?.motor_id),\n // car_series_name: cheyouHead?.name,\n sub_tab: getKeyByValue(name),\n module_id: 'forum_home_second_tab_module',\n })\n }\n const handleMoreTabClick = (e: any) => {\n const { name } = e.target.dataset\n // setCurrentMoretTab(name)\n sendTeaCommEvent('clk_event', {\n page_id: 'page_ugc_forum_home',\n event_id: 'qa_second_tab_clk',\n car_series_id: String(cheyouHead?.series_id || cheyouHead?.motor_id),\n car_series_name: cheyouHead?.name,\n sub_tab: '问答',\n obj_text: getKeyByValue(name),\n })\n }\n\n // const handleSortClick = (e: any) => {\n // const { name } = e.target.dataset\n // // setCurrentSort(name)\n // }\n\n const [confirmVisible, setConfirmVisible] = useState(false)\n const isConfirmRef = useRef(false)\n\n const handleJoinClick = useLoginCheckCallback(\n useCallback(() => {\n sendTeaCommEvent('clk_event', {\n page_id: 'page_ugc_forum_home',\n event_id: 'join_forum_home_button',\n car_series_id: String(cheyouHead?.series_id || cheyouHead?.motor_id),\n car_series_name: cheyouHead?.name,\n motor_id: String(cheyouHead?.motor_id),\n sub_tab: getKeyByValue(tab),\n })\n\n if (joinedDays && !isConfirmRef.current) {\n setConfirmVisible(true)\n return\n }\n\n setJoining(true)\n const params = {\n car_id: series_id,\n car_id_type: cheyouHead?.car_id_type,\n }\n\n const url = joinedDays\n ? '/motor/garage/relation/unfollow_car/web'\n : '/motor/garage/relation/follow_car/web'\n\n fetch(url, {\n method: 'POST',\n headers: {\n 'tt-anti-token': window.localStorage.getItem('tt-anti-token') || '',\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n body: serializeObject(params),\n credentials: 'include',\n })\n .then((res) => {\n if (res?.status === 200) {\n if (joinedDays) {\n setJoinedDays('')\n Toast.show({\n text: `你已退出${cheyouHead?.series_name}车友圈`,\n })\n isConfirmRef.current = false\n } else {\n setJoinedDays('1')\n Toast.show({\n text: '您已加入圈子,可在我的关注-关注车友圈查看已加入车友圈',\n })\n }\n }\n\n setJoining(false)\n })\n .catch(() => {\n setJoining(false)\n })\n }, [joinedDays, cheyouHead, series_id, tab]),\n useMemo(\n () => ({\n enter_method: 'other',\n }),\n []\n )\n )\n\n const handleConfirm = useCallback(() => {\n isConfirmRef.current = true\n handleJoinClick()\n setConfirmVisible(false)\n }, [handleJoinClick])\n\n const {\n isShowPublish,\n setIsShowPublish,\n operation,\n handlePublish,\n publishSuccess,\n } = usePublish()\n\n const handlePublishRef = useRef(handlePublish)\n handlePublishRef.current = handlePublish\n\n useEffect(() => {\n setTimeout(() => {\n if (localStorage.getItem('showQA') === 'yes') {\n localStorage.removeItem('showQA')\n handlePublishRef.current({\n title: '提问',\n type: 'qa',\n })\n }\n }, 200)\n }, [])\n\n const handlePublishClick = (title: string) => {\n sendTeaCommEvent('clk_event', {\n page_id: 'page_ugc_forum_home',\n event_id: 'send_module_button_clk',\n car_series_id: String(cheyouHead?.series_id || cheyouHead?.motor_id),\n car_series_name: cheyouHead?.name,\n motor_id: cheyouHead?.motor_id,\n sub_tab: getKeyByValue(tab),\n module_id: 'send_module_button',\n obj_text: title,\n })\n }\n\n const curTDK = useMemo(\n () =>\n tdk({\n series_name: cheyouHead?.name,\n page,\n total_count: cheyouList?.total_count,\n currentTab: tab,\n }),\n [cheyouHead?.name, cheyouList?.total_count, page, tab]\n )\n\n const announcementList =\n tab === allDefaultTab ? announcements?.announcement_list || [] : []\n\n const { isSpider } = useContext(SpiderContext)\n return (\n <>\n \n \n \n\n \n {/*
*/}\n \n \n {!isSpider && (\n \n )}\n
\n \n {(isFixed) => {\n return (\n \n
\n {isFixed && series_id && (\n \n {cheyouHead?.series_name || cheyouHead?.name}车友圈\n {/* */}\n \n )}\n\n \n d?.tab_name === tab\n )}\n renderMoreWrapper={() => (content) =>\n (\n \n {content}\n
\n )}\n className={classNames(\n isFixed ? headerHeight : 'tw-h-40'\n )}\n renderMoreButton={() => {\n return (\n \n 更多\n \n

\n )\n }}\n >\n {({ index, isInMore, close, isCover }) => {\n const item = tab_list[index]\n const { chi_name, tab_name, href, as } = item\n const targetTab = qa_arr?.includes(tab)\n ? 'wenda'\n : tab\n\n const isActive =\n targetTab === item?.tab_name && !isInMore\n return (\n \n \n {\n if (close) {\n close()\n }\n\n handleTabClick(e)\n }}\n >\n \n {chi_name}\n \n \n \n
\n )\n }}\n \n
\n \n\n {isFixed && (\n
\n \n {joinedDays\n ? `已加入${formatNumber(joinedDays)}天`\n : '加入圈子'}\n \n {\n handlePublishClick(text)\n }}\n />\n }\n >\n {\n handlePublish()\n handlePublishClick('发图文')\n }}\n >\n 发动态\n \n \n \n
\n )}\n \n )\n }}\n \n
\n
\n {cheyouList?.cheyou_list && (\n
\n {(qa_arr?.includes(tab) || tab === 'wenda') &&\n cheyouList?.cheyou_list && (\n
\n \n
\n )}\n
\n )}\n\n {announcementList.length ? (\n
\n {announcementList.map((item: any, index: number) => {\n return (\n \n {anyLink({\n id: item.gid_str,\n articleType: item.article_type,\n })(\n {\n sendTeaCommEvent('clk_event', {\n page_id: 'page_ugc_forum_home',\n event_id: 'top_content_card_clk',\n car_series_id: String(\n cheyouHead?.series_id || cheyouHead?.motor_id\n ),\n car_series_name: cheyouHead?.name,\n sub_tab: getKeyByValue(tab),\n module_id: 'community_notice_module',\n group_id: item?.gid_str,\n author_id: item?.user_id,\n })\n }}\n >\n \n {item.header}\n \n\n \n {item.content}\n

\n \n
\n )}\n \n )\n })}\n
\n ) : null}\n {cheyouList?.cheyou_list && (\n
\n {tab_list && !!tab_list?.length && (\n \n )}\n

\n 共{cheyouList?.total_count}条内容\n

\n
\n )}\n {cheyouList?.cheyou_list ? (\n \n ) : (\n \n )}\n
\n (content) => {\n return (\n \n {content}\n \n )\n }}\n onJump={(curPage) => {\n const query = serializeObject(getQuery() as ObjectInterface)\n router.push(\n '/new_community',\n `/community/${series_id}/${tab}${\n sort !== 'reply' ? `-${sort}` : ''\n }${curPage > 1 ? `-${curPage}` : ''}${query ? `?${query}` : ''}`\n )\n }}\n onClick={(curPage) => {\n sendTeaCommEvent('clk_event', {\n page_id: 'page_ugc_forum_home',\n event_id: 'bottom_turn_page_button_clk',\n car_series_id: String(\n cheyouHead?.series_id || cheyouHead?.motor_id\n ),\n car_series_name: cheyouHead?.name,\n // motor_id: cheyouHead?.motor_id,\n sub_tab: getKeyByValue(tab),\n module_id: 'buttom_turn_page_module',\n obj_text: String(curPage),\n })\n }}\n />\n \n
\n {!isSpider && (\n <>\n {!!cheyouSeriesReviewCard?.review_people_count && (\n \n \n \n )}\n {\n sendTeaCommEvent('clk_event', {\n event_id: 'hot_topic_talk_content_clk',\n module_id: 'hot_top_talk_module',\n sub_tab: getKeyByValue(tab),\n topic_id: id,\n obj_text: name,\n })\n }}\n />\n {cheyouHotCard && (\n \n )}\n {\n sendTeaCommEvent('clk_event', {\n page_id: 'page_ugc_forum_home',\n event_id: 'my_forum_home_more_button',\n module_id: 'my_car_circle_module',\n motor_id: String(cheyouHead?.motor_id),\n })\n }}\n onClickItem={({ id }) => {\n sendTeaCommEvent('clk_event', {\n page_id: 'page_ugc_forum_home',\n event_id: 'my_forum_home_module_clk',\n module_id: 'my_car_circle_module',\n car_series_id:\n cheyouHead?.series_id || cheyouHead?.motor_id,\n car_series_name: cheyouHead?.name,\n motor_id: id,\n })\n }}\n />\n \n )}\n \n
\n \n setIsShowPublish(false)}\n >\n {isShowPublish ? (\n \n ) : null}\n \n setConfirmVisible(false)}\n >\n setConfirmVisible(false)}\n onCancel={handleConfirm}\n >\n 退出后加圈天数将清零\n \n \n\n \n \n )\n}\nCommunity.getInitialProps = async ({ req, asPath }: any) => {\n const [, seriesId, tab = allDefaultTab, sort = allDefaultSort, page = 1] =\n asPath.match(\n /community\\/(\\d+)(?:\\/([^-0-9]+)?(?:-([^-0-9]+))?(?:-?([1-9][0-9]*))?)?/\n ) || []\n\n const curPage = Math.max(Number(page), 1)\n\n const cheyouHeadCacheKey = serializeObject({\n series_or_motor_id_head: seriesId,\n })\n const cheyouSeriesReviewCardCacheKey = serializeObject({\n series_or_motor_id_series: seriesId,\n })\n const cheYouHotCardCacheKey = serializeObject({\n series_or_motor_id_hot: seriesId,\n })\n const topicHotCacheKey = serializeObject({\n series_or_motor_id: seriesId,\n })\n\n const cheyouHead = cheyouHeadCache.get(cheyouHeadCacheKey)\n const cheyouSeriesReviewCard = cheyouSeriesReviewCardCache.get(\n cheyouSeriesReviewCardCacheKey\n )\n const cheYouHotCard = cheYouHotCardCache.get(cheYouHotCardCacheKey)\n const topicHot = topicHotCache.get(topicHotCacheKey)\n\n const data = (\n await Promise.allSettled([\n cheyouHead\n ? Promise.resolve(cheyouHead)\n : getCheyouHead({ series_or_motor_id: seriesId }, req),\n cheyouSeriesReviewCard\n ? Promise.resolve(cheyouSeriesReviewCard)\n : getCheyouSeriesReviewCard({ series_or_motor_id: seriesId }, req),\n getCheYouList(\n {\n series_or_motor_id: seriesId,\n sort_type: sort === 'reply' ? 2 : 1,\n tab_name: tab === 'reply' ? 'dongtai' : tab,\n offset: (curPage - 1) * (req?.isSpider ? 3 : 30),\n count: req?.isSpider ? 3 : 30,\n },\n req\n ),\n cheYouHotCard\n ? Promise.resolve(cheYouHotCard)\n : getCheYouHotCard({ series_or_motor_id: seriesId }, req),\n getAnnouncements({ series_or_motor_id: seriesId }, req),\n topicHot\n ? Promise.resolve(topicHot)\n : getTopicHot(\n {\n series_or_motor_id: seriesId,\n },\n req\n ),\n getInnerLinkList(asPath, req),\n getOuterLinkList(asPath, req),\n ])\n ).map((d) => (d.status === 'fulfilled' ? d.value : null))\n return {\n _pageType: 'full auto-nav',\n tab: tab === 'reply' ? 'dongtai' : tab,\n sort,\n series_id: seriesId,\n page: curPage,\n cheyouHead: data[0],\n cheyouSeriesReviewCard: data[1],\n cheyouList: data[2],\n cheyouHotCard: data[3],\n announcements: data[4],\n topicHot: data[5],\n innerList: data?.[6],\n outerList: data?.[7],\n cheyouHeadCacheKey,\n cheyouSeriesReviewCardCacheKey,\n cheYouHotCardCacheKey,\n topicHotCacheKey,\n }\n}\n\nexport default Community\n","import fetch from 'lib/decorated-fetch'\nimport getUrl from 'lib/url'\nimport serializeObject from '@arsenal/arsenal/modules/serializeObject'\n\nexport interface ICarOwnerInfo {\n car_id?: number\n car_name?: string\n desc?: string\n}\nexport interface ICheYouListInfo {\n cheyou_list?: ICheYouListItem[]\n next_offset?: number\n count?: number\n total_count?: number\n has_more?: boolean\n}\nexport interface ICheYouListItem {\n gid?: number\n gid_str?: string\n title?: string\n content?: string\n digg_count?: number\n comment_count?: number\n image_urls?: IImageUrl[]\n profile_info?: IProfileInfo\n ugc_question_info?: IUGCQuestionInfo\n article_type?: number\n article_sub_type?: number\n create_time?: number\n latest_comment_time?: number //最后回复时间\n display_time?: number\n comment_data?: ICommentData[]\n selected_level?: number\n video_detail_info?: IVideoInfo\n car_info?: IUgcCarInfo\n car_view_info?: IUgcCarViewInfo\n link_info?: IMotorLinkInfo\n bury_count?: number\n user_digg?: boolean\n user_bury?: boolean\n is_collect?: boolean\n}\nexport interface ICommentData {\n aid?: number\n comment_id?: number\n comment_id_str?: string\n group_id?: number\n group_id_str?: string\n profile_info?: IProfileInfo\n comment_count?: number\n user_digg?: boolean\n digg_count?: number\n reply_count?: number\n is_author?: boolean\n text?: string\n reply_data?: IReplyData\n image_urls?: IImageUrl[]\n create_time?: number\n user_info?: {\n auth_info?: {\n auth_v_desc?: string\n auth_v_type?: number\n }\n avatar_url?: string\n follow?: boolean\n medal_list?: any\n name?: string\n user_description?: string | null\n user_id?: string\n }\n label_url?: string\n}\nexport interface ICommunityInfo {\n open_url?: string\n motor_id?: number\n motor_name?: string\n motor_type?: number\n}\nexport interface IImageUrl {\n img_type?: number\n url?: string\n width?: number\n height?: number\n}\nexport interface IMedalInfo {\n id: number\n user_id: number\n type: number\n level: number\n desc_content: string\n status: number\n create_time: number\n modify_time: number\n expire_time: number\n upgrade_time: number\n show_start_time: number //点亮时间\n show_end_time: number\n icon_url: string\n extra: Record\n}\nexport interface IMotorAuthShowInfo {\n auth_v_type?: number //1,橙V; 2蓝V\n auth_v_desc?: string //描述信息\n}\nexport interface IMotorIdentityInfo {\n identity?: string\n identity_desc?: string\n ans_num?: number\n digg_num?: number\n invited_num?: number\n car_identity_desc?: string\n answerer_identity_desc?: string\n cheyou_master_identity_desc?: string\n answerer_medal_url?: string\n answerer_medal_pop_url?: string\n medal_desc_url?: string\n}\nexport interface IMotorLinkInfo {\n title?: string\n image_url?: string\n item_id?: number\n item_id_str?: string\n scheme?: string\n ui_style?: number\n name?: string\n community_info?: ICommunityInfo\n article_type?: number\n}\nexport interface IProfileInfo {\n standard_user_info?: string\n schema?: string\n subscribed?: number\n fans_count?: number\n user_id?: number\n user_id_str?: string\n name?: string //用户名\n media_id?: number\n ugc_publish_media_id?: number\n avatar_url?: string\n user_verified?: number\n car_owner_info?: ICarOwnerInfo //汽车信息\n motor_identity_info?: IMotorIdentityInfo //圈子信息\n motor_auth_show_info?: IMotorAuthShowInfo //验证信息\n user_circle_grade?: IUserCircleGrade //用户圈子等级信息\n is_follow?: boolean //是否关注\n user_description_list?: IUserDescription[] //用户描述信息\n medal_list?: IMedalInfo[] //用户标签信息\n dynamic_count?: number //动态数量\n essence_count?: number //精华数量\n digg_count?: number //获赞数量\n comment_count?: number //评论数量\n}\nexport interface IReplyData {\n aid?: number\n reply_id?: number\n reply_id_str?: string\n group_id?: number\n group_id_str?: string\n reply_to_reply_id?: number\n reply_to_reply_id_str?: string\n reply_to_comment_id?: number\n reply_to_comment_id_str?: string\n reply_to_reply_text?: string\n reply_to_user_info?: IReplyToUserInfo\n user_digg?: boolean\n digg_count?: number\n is_author?: boolean\n text?: string //回复文案\n image_urls?: IImageUrl[]\n create_time?: number\n profile_info?: IProfileInfo\n}\nexport interface IReplyToUserInfo {\n avatar_url?: string\n name?: string\n user_id?: number\n user_id_str?: string\n user_description_list?: IUserDescription[] //用户描述信息\n}\nexport interface IUGCQuestionInfo {\n status?: number\n status_display?: string\n participated?: string\n send_award?: string\n award_icon_url?: string\n}\nexport interface IUgcCarInfo {\n car_id?: number\n car_name?: string\n series_id?: number\n series_name?: string\n year?: number\n}\nexport interface IUgcCarViewInfo {\n score?: number\n score_level?: string\n}\nexport interface IUserCircleGrade {\n amount?: number\n level?: number\n icon?: string\n color?: string\n rank_icon?: string\n rank_desc?: string\n rank_weeks?: number\n}\nexport interface IUserDescription {\n icon: string\n description: string\n desc_type: number //1:认证用户 2:圈主 3:车主 4:运营标签 5:答主身份\n width: number\n height: number\n}\nexport interface IVideoInfo {\n cover_url?: string //封面图信息\n video_id?: string //视频vid\n video_watch_count?: number //视频观看人数\n video_type?: number\n video_duration?: number //视频时长\n video_size?: string //视频大小list, 样例:\"{\"1080p\":{\"duration\":1219.263,\"file_size\":677901428,\"h\":1080,\"w\":1920},\"4k\":{\"duration\":1219.263,\"file_size\":2560095563,\"h\":2160,\"w\":3840},\"high\":{\"duration\":1219.267,\"file_size\":61686236,\"h\":480,\"w\":854},\"normal\":{\"duration\":1219.267,\"file_size\":63017752,\"h\":360,\"w\":640},\"ultra\":{\"duration\":1219.263,\"file_size\":201829423,\"h\":720,\"w\":1280}}\"\n}\ninterface ICheyouListParams {\n series_or_motor_id?: string\n sort_type?: number\n tab_name?: string\n offset?: number\n count?: number\n}\n\nconst getCheyouList = async (params: ICheyouListParams, req?: any) => {\n const json = await fetch(\n getUrl(\n `/motor/pc/ugc/community/cheyou_list?${serializeObject(params)}`,\n 'motor.pc_ugc.api'\n ),\n {\n req,\n }\n )\n\n if (0 !== json?.status) {\n throw Error(json?.prompts || json.message)\n }\n return json?.data\n}\nexport default getCheyouList\n","import fetch from 'lib/decorated-fetch'\nimport getUrl from 'lib/url'\nimport serializeObject from '@arsenal/arsenal/modules/serializeObject'\n\ninterface ICheyouHeadParams {\n series_or_motor_id: string\n}\n\nconst getCheyouHead = async (params: ICheyouHeadParams, req?: any) => {\n const json = await fetch(\n getUrl(\n `/motor/pc/ugc/community/cheyou_head?${serializeObject(params)}`,\n 'motor.pc_ugc.api'\n ),\n {\n req,\n }\n )\n\n if (0 !== json?.status) {\n throw Error(json?.prompts || json.message)\n }\n return json?.data\n}\nexport default getCheyouHead\n","const tabMapping = new Map()\ntabMapping.set('动态', 'dongtai')\ntabMapping.set('热门', 'hot')\ntabMapping.set('精华', 'selected')\ntabMapping.set('价格讨论', 'pricediscuss')\ntabMapping.set('质量反馈', 'quality')\ntabMapping.set('评车', 'dakareyi')\ntabMapping.set('商家', 'shangjia')\ntabMapping.set('选买对比', 'xuanmai')\ntabMapping.set('价格', 'price')\ntabMapping.set('配置', 'config')\ntabMapping.set('故障维修', 'maintenance')\ntabMapping.set('用车', 'usecar')\ntabMapping.set('买车讨论', 'buycar')\ntabMapping.set('能耗分享', 'energy')\ntabMapping.set('用车感受', 'cardrive')\ntabMapping.set('提车分享', 'pickup')\ntabMapping.set('车生活', 'cheyou')\ntabMapping.set('改装', 'modification')\ntabMapping.set('二手车', 'usedcar')\ntabMapping.set('问答', 'wenda')\ntabMapping.set('口碑', 'koubei')\ntabMapping.set('懂车分(口碑)', 'koubei')\ntabMapping.set('全部', 'all')\n\nexport const getKeyByValue = (targetValue: string) => {\n for (const [key, value] of tabMapping.entries()) {\n if (value === targetValue) return key\n }\n}\nexport default tabMapping\n","// // 半角 - 16进制:\\u0021-\\u007e,10进制:33-126\n// const halfAnglePunctuation = (str: string) => {\n// return str.charCodeAt(0) <= 126 && str.charCodeAt(0) >= 33\n// }\n// // 全角 \\uff01-\\uff5e\n// const allAnglePunctuation = (str: string) => {\n// return str.charCodeAt(0) <= 65374 && str.charCodeAt(0) >= 65281\n// }\n\n// // 引号\n// const isQuotationMark = (str: string) => {\n// return str.charCodeAt(0) <= 8223 && str.charCodeAt(0) >= 8216\n// }\n\n// 半角符号:[\\u0021-\\u002f]|[\\u003a-\\u003f]|\\u0040|[\\u005b-\\u005f]|\\u0060|[\\u007b-\\u007e]\nconst halfAngleSymbolUnicode =\n '[\\u0021-\\u002f]|[\\u003a-\\u003f]|\\u0040|[\\u005b-\\u005f]|\\u0060|[\\u007b-\\u007e]'\n// 没有]符号\nconst noBracketHalfAngleSymbolUnicode =\n '[\\u0021-\\u002f]|[\\u003a-\\u003f]|\\u0040|\\u005b|\\u005c|\\u005e|\\u005f|\\u0060|[\\u007b-\\u007e]'\n// 全角符号: [\\uff01-\\uff0f]|[\\uff1a-\\uff1f]|\\uff20|[\\uff3b-\\uff3f]|\\uff40|[\\uff5b-\\uff5f]\nconst allAngleSymbolUnicode =\n '[\\uff01-\\uff0f]|[\\uff1a-\\uff1f]|\\uff20|[\\uff3b-\\uff3f]|\\uff40|[\\uff5b-\\uff5f]'\n// 中日韩标点符号和句号: \\u3001|\\u3002|[\\u3001-\\u300f]\nconst otherSymbolUnicode = '[\\u3001-\\u300f]'\n// 所有符号: [\\u0021-\\u002f]|[\\u003a-\\u003f]|\\u0040|[\\u005b-\\u005f]|\\u0060|[\\u007b-\\u007e]|[\\uff01-\\uff0f]|[\\uff1a-\\uff1f]|\\uff20|[\\uff3b-\\uff3f]|\\uff40|[\\uff5b-\\uff5f]|\\u3001|\\u3002|[\\u3001-\\u300f]\n// 没有》符号\nconst nobracketOtherSymbolUnicode = '[\\u3001-\\u300a]|[\\u300c-\\u300f]'\nconst allSymbol = `${halfAngleSymbolUnicode}|${allAngleSymbolUnicode}|${otherSymbolUnicode}`\nconst noBracketAllSymbol = `${noBracketHalfAngleSymbolUnicode}|${allAngleSymbolUnicode}|${nobracketOtherSymbolUnicode}`\n// // 句号-12290 16:3002,顿号-12289 16:3001\nexport const removeSplitSymbol = (str: string) => {\n return str.replace(/_|---|\\||——/g, '-')\n}\nfunction hexToString(str: string) {\n let val = ''\n const arr = str.split(',')\n for (let i = 0; i < arr.length; i += 1) {\n val += String.fromCharCode(parseInt(arr[i], 10))\n }\n return val\n}\n\nexport default class Title {\n constructor(title: string) {\n this.title = title\n }\n\n title: string\n\n toString() {\n return this.title\n }\n\n removeSplitSymbol() {\n this.title = removeSplitSymbol(this.title)\n return this\n }\n\n // 多个空格替换为一个空格\n deleteUnnecessarySpace() {\n this.title = this.title.replace(/\\s{2,}/g, ' ')\n return this\n }\n\n // 删除标点前后空格\n deleteNearSymbolSpace() {\n this.replaceAll(\n [\n new RegExp(`\\\\s(${allSymbol})`, 'g'),\n new RegExp(`(${allSymbol})\\\\s`, 'g'),\n ],\n '$1'\n )\n return this\n }\n\n // 异形括号内文字大于4删除括号\n deleteBracketsData() {\n this.replaceAll(\n [\n /﹛(.{5,})﹜/g,\n /『(.{5,})』/g,\n /〖(.{5,})〗/g,\n /[(.{5,})]/g,\n /【(.{5,})】/g,\n /「(.{5,})」/g,\n ],\n '$1'\n )\n return this\n }\n\n // 异形括号文字小于4个,替换异形括号\n replaceBrackets() {\n this.title = this.title\n .replace(/(﹛|『|〖|[|【|「)/g, '[')\n .replace(/(﹜|』|〗|]|】|」)/g, ']')\n return this\n }\n\n replaceSingleBracket() {\n this.replaceBookNameSymbol('《', '》')\n this.replaceBookNameSymbol('[', ']')\n this.replaceBookNameSymbol('“', '”')\n this.replaceBookNameSymbol('‘', '’')\n this.replaceBookNameSymbol('〈', '〉')\n return this\n }\n\n // 中文句号改空格\n replaceEndSymbolWithSpace() {\n this.title = this.title.replace(/。/g, ' ')\n return this\n }\n\n // 替换英文后跟的全角符号\n replaceAllAnglePunctuation() {\n const arr =\n this.title\n .match(new RegExp(`[a-zA-Z](${allAngleSymbolUnicode})`, 'g'))\n ?.map((item) => {\n const fullSymbolNum = item.charCodeAt(item.length - 1)\n const halfSymbolNum = fullSymbolNum - 65248\n const halfSymbol = hexToString(`${halfSymbolNum}`)\n return item.substring(0, item.length - 1) + halfSymbol\n }) || []\n // const holdArr = this.title.split(reg)\n const holdArr = this.title.split(\n new RegExp(`[a-zA-Z](${allAngleSymbolUnicode})`, 'g')\n )\n this.title = holdArr.reduce((pre, current, currentIndex) => {\n if (currentIndex % 2 !== 0) {\n return pre + (arr[(currentIndex - 1) / 2] || '')\n }\n return `${pre}${current}`\n })\n return this\n }\n // 替换中文后跟的半角符号\n\n replaceHalfAnglePunctuation() {\n // console.log(this.title, 'this.title')\n const arr =\n this.title\n .match(new RegExp(`[\\u4e00-\\u9fa5](${halfAngleSymbolUnicode})`, 'g'))\n ?.map((item) => {\n const halfSymbolNum = item.charCodeAt(item.length - 1)\n const fullSymboNum = halfSymbolNum + 65248\n const fullSymbo = hexToString(`${fullSymboNum}`)\n return item.substring(0, item.length - 1) + fullSymbo\n }) || []\n // console.log(arr, 'arr')\n const holdArr = this.title.split(\n new RegExp(`[\\u4e00-\\u9fa5](${halfAngleSymbolUnicode})`, 'g')\n )\n // console.log(holdArr, 'holdArr')\n this.title = holdArr.reduce((pre, current, currentIndex) => {\n if (currentIndex % 2 !== 0) {\n return pre + (arr[(currentIndex - 1) / 2] || '')\n }\n return `${pre}${current}`\n })\n return this\n }\n\n replaceAll(regArr: RegExp[], replaceString: string) {\n regArr.forEach((item) => {\n this.title = this.title.replace(item, replaceString)\n })\n return this\n }\n\n replace(reg: string | RegExp, content: string) {\n this.title = this.title.replace(reg, content)\n return this\n }\n\n replaceMoreAndMore() {\n this.replace(new RegExp(`(${noBracketAllSymbol})+……`, 'g'), '……')\n return this\n }\n\n // 替换未成对的符号号\n replaceBookNameSymbol(leftSymbol: string, rightSymbol: string) {\n const s = this.title\n let arr = s.split('')\n const stack = []\n let hasLeftSymbol = false\n for (let i = 0; i < arr.length; i += 1) {\n const item = arr[i]\n if (item === leftSymbol) {\n stack.push(i)\n hasLeftSymbol = true\n } else if (item === rightSymbol) {\n if (stack.length && arr[stack[stack.length - 1]] !== ')') {\n stack.pop()\n } else {\n stack.push(i)\n }\n }\n }\n while (stack.length) {\n const item = stack.pop()\n if (item !== undefined) {\n arr[item] = ''\n }\n }\n if (!hasLeftSymbol) {\n arr = arr.filter((item) => item !== rightSymbol)\n }\n this.title = arr.join('')\n return this\n }\n}\n","import { IUgcCommonDetail } from 'New/ugc/services/getUgcCommonDetail'\nimport { calcMaxPage } from 'Components/new/pagination'\nimport { emojiResourceList } from 'Constants/emoji'\nimport { IComment } from 'New/ugc/services/getComment'\nimport Title, { removeSplitSymbol } from 'lib/tdk-title'\n\ninterface IParams {\n article?: IUgcCommonDetail\n page?: number\n total: number\n}\n\ninterface ITDK {\n title: string\n description: string\n keywords: string\n h1?: string\n}\n\n/** 移除内容中的 emoji */\nfunction removeEmoji(string?: string) {\n if (!string) return ''\n let temp = string\n const emojiReg =\n // eslint-disable-next-line no-misleading-character-class\n /[\\uD83C|\\uD83D|\\uD83E][\\uDC00-\\uDFFF][\\u200D|\\uFE0F]|[\\uD83C|\\uD83D|\\uD83E][\\uDC00-\\uDFFF]|[0-9|*|#]\\uFE0F\\u20E3|[0-9|#]\\u20E3|[\\u203C-\\u3299]\\uFE0F\\u200D|[\\u203C-\\u3299]\\uFE0F|[\\u2122-\\u2B55]|\\u303D|[\\uA9|\\uAE]\\u3030|\\uA9|\\uAE|\\u3030/gi\n temp = temp\n .replace(emojiReg, '')\n .replace(/(\\s*$)/g, '')\n .replace(/( )+/g, '')\n .trim()\n const reUnescapedHtml = /(\\[[^\\]]+[\\]])+?/g\n const reHasUnescapedHtml = RegExp(reUnescapedHtml.source)\n return reHasUnescapedHtml.test(temp)\n ? temp.replace(reUnescapedHtml, (chr) => {\n if (emojiResourceList[chr]) {\n return ''\n }\n return chr\n })\n : temp\n}\n\n// 双字节\nfunction isDoubleChar(char: string) {\n return /^[^x00-xff]$/.test(char)\n}\n\nexport function substrSingleByte(str?: string, charLen = 0) {\n if (!str) return ''\n let strIndex = 0\n let curCharLen = 0\n while (strIndex < str.length && curCharLen < charLen) {\n const curChar = str[strIndex]\n if (isDoubleChar(curChar)) {\n curCharLen += 2\n } else {\n curCharLen += 1\n }\n strIndex++\n }\n return str.slice(0, strIndex)\n}\n\nexport function isLowContent(content?: string) {\n if (!content) return true\n return (content.match(/[\\u4e00-\\u9fa5_a-zA-Z0-9]/g)?.length || 0) < 5\n}\n\n// 移除字符串后面的符号\nfunction removeLast(content?: string) {\n if (!content) return ''\n return content.replace(/[^\\u4e00-\\u9fa5_a-zA-Z0-9]+$/, '')\n}\n\nfunction tdk({ article, page = 1, total }: IParams): ITDK {\n const isLong = [9, 12].includes(article?.article_sub_type as number) // 长贴\n const isWenda = article?.article_sub_type === 8\n const isVideo = article?.article_sub_type === 6\n const isKoubei = [12, 13, 14].includes(article?.article_sub_type as number) // 口碑\n const userName = article?.motor_profile_info?.name || ''\n const communityName = article?.motor_car_info?.motor_name || ''\n const pageDesc = page > 1 ? `${page}/${calcMaxPage(total, 20)}页` : ''\n const carInfo = {\n // 评价的车辆信息\n series_name:\n article?.car_view?.series_name || article?.buy_car_info?.series_name,\n car_name: article?.car_view?.car_name || article?.buy_car_info?.car_name,\n year: article?.car_view?.year_id || article?.buy_car_info?.year,\n }\n const hasCarInfo = carInfo.series_name && carInfo.car_name\n const carInfoStr = hasCarInfo\n ? `${carInfo?.series_name}${carInfo.year ? `${carInfo.year}款` : ''}${\n carInfo?.car_name\n }`\n : ''\n const motorTitle = removeEmoji(article?.motor_title)\n const threadTitle = removeEmoji(article?.thread_title)\n const articleTitle =\n (isLong || isWenda ? motorTitle : threadTitle) || motorTitle || threadTitle\n let articleContent =\n article?.content?.replace(/\\{!--.*?--\\}/g, '').replace(/<[^>]+>/g, '') || ''\n articleContent = removeEmoji(articleContent).replace(/ /g, '')\n const tempTitle = articleTitle || articleContent.slice(0, 100) || ''\n const len = tempTitle.length\n\n const splitSymbolRemovedName = removeSplitSymbol(userName)\n const splitSymbolRemovedCommunityName = removeSplitSymbol(communityName)\n\n const replacedTitle = new Title(tempTitle)\n .removeSplitSymbol()\n // 多个空格替换成一个空格\n .deleteUnnecessarySpace()\n // // 末尾删除中英文句号,逗号,分号,破折号 不需要了末尾都是懂车帝\n // .replace(/(\\.|。|,|,|;|;|-|——)$/, '')\n // 标点前后有空格的情况\n .deleteNearSymbolSpace()\n // 中文句号改为空格\n .replaceEndSymbolWithSpace()\n // 异形括号内文字大于4删除\n .deleteBracketsData()\n // 异形括号文字小于4个,替换异形括号\n .replaceBrackets()\n // 《》,[]如果不成双就干掉\n .replaceSingleBracket()\n // 连续标点后跟省略号\n .replaceMoreAndMore()\n .replaceAllAnglePunctuation()\n .replaceHalfAnglePunctuation().title\n\n const title = isKoubei\n ? hasCarInfo\n ? `${removeSplitSymbol(\n carInfoStr\n )}怎么样_${splitSymbolRemovedName}_懂车帝`\n : `${removeLast(replacedTitle.slice(0, 30))}_懂车帝`\n : len < 10\n ? `${removeLast(\n replacedTitle\n )}_${splitSymbolRemovedCommunityName}_${splitSymbolRemovedName}_懂车帝`\n : len < 26\n ? `${removeLast(replacedTitle)}_${splitSymbolRemovedCommunityName}_懂车帝`\n : len < 30\n ? `${removeLast(replacedTitle)}_懂车帝`\n : `${removeLast(replacedTitle.slice(0, 30))}`\n\n const keywords = isKoubei\n ? hasCarInfo\n ? `${carInfoStr}怎么样,${userName},懂车帝`\n : `${title},${userName},懂车帝`\n : `${removeLast(replacedTitle.slice(0, 30))},${communityName},懂车帝`\n\n const description = isKoubei\n ? hasCarInfo\n ? `懂车帝${userName}提供${carInfoStr}怎么样的文章,${removeLast(\n replacedTitle.slice(0, 45)\n )}`\n : `懂车帝${userName}提供文章,${removeLast(replacedTitle.slice(0, 45))}`\n : isVideo\n ? `懂车帝用户${userName}发布了一条小视频,视频内容为:${removeLast(\n replacedTitle.slice(0, 50)\n )}`\n : `懂车帝${communityName},提供${removeLast(replacedTitle.slice(0, 45))}`\n const h1 = isKoubei ? `${userName}点评${carInfoStr}怎么样` : ''\n\n return {\n title: `${title}${pageDesc ? `_${pageDesc}` : ''}`,\n description,\n keywords,\n h1,\n }\n}\n\nexport default tdk\n\ninterface IAnswerParams {\n article?: IUgcCommonDetail\n answer?: IComment\n}\n\nexport function answerTdk({ article, answer }: IAnswerParams): ITDK {\n const answerContent = answer?.text || ''\n const top28 = removeLast(answerContent.slice(0, 28))\n const questionAuthor = article?.motor_profile_info?.name || ''\n const answerAuthor = answer?.profile_info?.name || ''\n if (answerContent.length < 12) {\n return {\n title: `${top28}_${answerAuthor}_懂车帝`,\n keywords: `${top28},${answerAuthor},懂车帝`,\n description: `懂车帝${questionAuthor}提问${removeLast(\n article?.motor_title?.slice(0, 30)\n )},获得${answerAuthor}答案为${removeLast(answerContent.slice(0, 30))}`,\n }\n }\n return {\n title: `${top28}_懂车帝`,\n keywords: `${top28},懂车帝`,\n description: `懂车帝${questionAuthor}提问${removeLast(\n article?.motor_title?.slice(0, 30)\n )},获得${answerAuthor}答案为${removeLast(answerContent.slice(0, 30))}`,\n }\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"breadcrumb_root__3OyEN\",\"pos\":\"breadcrumb_pos__2nyzw\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"dcd-modal\":\"dialog_dcd-modal__2ZDe1\",\"modal-enter\":\"dialog_modal-enter__2xdgb\",\"modal-leave\":\"dialog_modal-leave__2WqZO\",\"dialog-wrapper\":\"dialog_dialog-wrapper__39KwU\",\"enter\":\"dialog_enter__1uTdD\",\"dialog-content\":\"dialog_dialog-content__fzZHd\",\"leave\":\"dialog_leave__2JTCp\",\"space-small\":\"dialog_space-small__260_E\",\"space-medium\":\"dialog_space-medium__2VVM6\",\"dialog-header\":\"dialog_dialog-header__36ZYB\",\"dialog-close-btn\":\"dialog_dialog-close-btn__GpfNj\",\"dialog-title\":\"dialog_dialog-title__1RbgU\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"common-link_root__2VBT4\",\"disabled\":\"common-link_disabled__10RPW\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"left\":\"filter-background_left__vyrJx\",\"right\":\"filter-background_right__3vtf5\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"swiper-button2\":\"swiper-button2_swiper-button2__cKw14\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"relation-series_root__136Xm\",\"info\":\"relation-series_info__2HgNY\",\"info-series\":\"relation-series_info-series__1yY0A\",\"info-series-name\":\"relation-series_info-series-name__3mhFp\",\"info-price\":\"relation-series_info-price__gPJIZ\",\"info-price-item\":\"relation-series_info-price-item__2LcLo\",\"info-price-label\":\"relation-series_info-price-label__2CSUa\",\"info-price-dealer\":\"relation-series_info-price-dealer__2zvfv\",\"info-price-cut\":\"relation-series_info-price-cut__iN5RR\",\"info-price-cut-icon\":\"relation-series_info-price-cut-icon__1sAqB\",\"info-link-wrapper\":\"relation-series_info-link-wrapper__2sAoM\",\"info-link-anchor\":\"relation-series_info-link-anchor__14e9D\",\"info-link\":\"relation-series_info-link__2612J\",\"info-link-normal\":\"relation-series_info-link-normal__3Uqv0\",\"info-link-highlight\":\"relation-series_info-link-highlight__Nmv6z\",\"footer\":\"relation-series_footer__3rjIa\",\"footer-link-anchor\":\"relation-series_footer-link-anchor__1_Y78\",\"footer-link-icon\":\"relation-series_footer-link-icon__3kPiB\",\"footer-link-subtext\":\"relation-series_footer-link-subtext__5v9Mp\",\"footer-link\":\"relation-series_footer-link__2_kXt\",\"none\":\"relation-series_none__2Pt5t\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"title-wrapper\":\"module-title_title-wrapper__BqiNI\",\"module-title\":\"module-title_module-title__20flN\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"content\":\"community-header_content__1oGaG\",\"content-right\":\"community-header_content-right__3sqnz\",\"user\":\"community-header_user__36YWC\",\"line\":\"community-header_line__1r4Bv\",\"value\":\"community-header_value__3MNnx\"};"],"sourceRoot":""}