{"version":3,"sources":["webpack://@lemon8/web-seo/./client/utils/px-to-rem.ts","webpack://@lemon8/web-seo/./client/components/user-auth-icon/index.tsx","webpack://@lemon8/web-seo/./client/routes/$user_link_name_.follow/head/json-ld.tsx","webpack://@lemon8/web-seo/./client/routes/$user_link_name_.follow/shared/use-user-desc.ts","webpack://@lemon8/web-seo/./client/routes/$user_link_name_.follow/head/og.tsx","webpack://@lemon8/web-seo/./client/routes/$user_link_name_.follow/head/twitter.tsx","webpack://@lemon8/web-seo/./client/routes/$user_link_name_.follow/head/index.tsx","webpack://@lemon8/web-seo/./client/components/tabs/index.tsx","webpack://@lemon8/web-seo/./client/components/user-line-card/index.tsx","webpack://@lemon8/web-seo/./client/routes/$user_link_name_.follow/constant/method.ts","webpack://@lemon8/web-seo/./client/routes/$user_link_name_.follow/shared/atoms/current-user-following.ts","webpack://@lemon8/web-seo/./client/routes/$user_link_name_.follow/shared/atoms/current-user-follower.ts","webpack://@lemon8/web-seo/./client/routes/$user_link_name_.follow/shared/atoms/current-user-following-topic.ts","webpack://@lemon8/web-seo/./client/routes/$user_link_name_.follow/body/follow-tabs/index.tsx","webpack://@lemon8/web-seo/./client/routes/$user_link_name_.follow/body/index.tsx","webpack://@lemon8/web-seo/./client/routes/$user_link_name_.follow/__remix_browser_route__route.tsx"],"names":["pxToRem","px","concat","DEFAULT_WIDTH","DEFAULT_HEIGHT","DEFAULT_MARGIN_LEFT","UserAuthIcon","props","width","height","marginLeft","light","authInfo","style","useMemo","showAuthSymbol","jsx","className","cls","JsonLD","user","useAtomValue","$CurrentAvailableUserOrNull","canonicalUrl","$PageLevelTraffic","Fragment","children","BreadcrumbJSONLD","nameList","nickName","path","useUserDesc","t","useTranslation","description","replace","OG","jsxs","property","content","avatar","endsWith","Twitter","name","UserFollowHeadInner","keywords","title","fb_appid","Suspense","privacyStatus","EPrivacyStatus","rel","href","String","UserFollowHead","fallback","Tabs","autoFixed","tabs","page","onChange","initialPage","curPage","setCurPage","useState","swiperRef","setSwiperRef","onSlideChange","index","slideTo","cs","fixed","map","tab","active","onClick","value","length","toFixed","transform","WebkitTransform","OTransform","Swiper","initialSlide","onSwiper","swiper","activeIndex","child","SwiperSlide","userAuthInfo","desc","icon_url","aHref","showNumber","followerCount","formatNum","useNumFormatter","Image","src","alt","_get","authType","Methods","$CurrentUserFollowing","atom","get","userLinkName","$CurrentUserLinkName","$UserFollowing","$CurrentUserFollower","$UserFollower","$CurrentUserFollowingTopic","$UserFollowingTopic","FollowLoadMore","_ref","data","data_list","has_more","isLoading","cursor","key","forumList","linkName","userId","$CurrentUserAsAvailable","region","$Locale","navigate","useNavigate","followerLoader","useRouteLoader","user_id","count","atomFamilies","$UserFollowerLoadmore","followingLoader","$UserFollowingLoadmore","loadData","load","forumName","forumNameList","forEach","el","push","join","LoadMore","isEnd","alwaysShowLoading","distanceToLoad","loadingText","Loading","variant","endText","render","Boolean","HashtagCard","isDefault","event","preventDefault","item","i","share_url","userName","pathName","userPathName","userCanonicalUrl","addRegionToSemanticUrl","UserLineCard","user_auth_info","state","EPageType","UserFollowTabs","isMobile","$UserAgent","isPC","searchParams","useSearchParams","tabKey","setTabKey","followingData","followerData","followingTopicData","window","scrollTo","UserFollowBody","NotFound","links","loader","shouldRevalidate","args","currentUserLinkName","defaultShouldRevalidate","UserFollowPage"],"mappings":"oHAAO,MAAMA,EAAWC,GACf,GAAPC,OAAWD,EAAK,GAAM,WCelBE,EAAgBH,EAAQ,EAAE,EAC1BI,EAAiBJ,EAAQ,EAAE,EAC3BK,EAAsBL,EAAQ,CAAC,EAExBM,EAAuCC,GAAU,CAC5D,KAAM,CACJC,QAAQL,EACRM,SAASL,EACTM,aAAaL,EACbM,QAAQ,GACRC,UACF,EAAIL,EAEEM,G,EAAuBC,WAC3B,KAAO,CACLN,MAAO,OAAOA,GAAU,SAAWR,EAAQQ,CAAK,EAAIA,EACpDC,OAAQ,OAAOA,GAAW,SAAWT,EAAQS,CAAM,EAAIA,EACvDC,WAAY,OAAOA,GAAe,SAAWV,EAAQU,CAAU,EAAIA,CACrE,GACA,CAACF,EAAOC,EAAQC,CAAU,CAC5B,EAEA,OAAKE,EAASG,gB,EAKZC,OAAC,OACCC,UAAWC,IAAI,iBAAkB,CAC/BP,OACF,CAAC,EACDE,OAAA,CACF,EATO,IAWX,C,iMC5CO,MAAMM,EAAaA,IAAM,CAC9B,MAAMC,G,EAAOC,gBAAaC,IAA2B,EAC/C,CAAEC,cAAa,G,EAAIF,gBAAaG,IAAiB,EAEvD,OAAKJ,G,EAKHJ,OAAAS,WAAA,CACEC,U,EAAAV,OAACW,IAAA,CAAiBC,SAAU,CAAC,SAAUR,EAAKS,SAAU,QAAQ,EAAGC,KAAMP,CAAA,CAAc,EACvF,EANO,IAQX,E,eCfO,MAAMQ,EAAcA,IAAc,CACvC,KAAM,CAAEC,CAAE,G,EAAIC,KAAe,EACvBb,G,EAAOC,gBAAaC,IAA2B,EAErD,GAAI,CAACF,EACH,MAAO,GAGT,KAAM,CAAES,WAAUK,aAAY,EAAId,EAElC,OAAOY,EAAE,2BAA2B,EACjCG,QAAQ,OAAQN,GAAY,EAAE,EAC9BM,QAAQ,OAAQD,GAAe,EAAE,CACtC,ECXaE,EAASA,IAAM,CAC1B,MAAMhB,G,EAAOC,gBAAaC,IAA2B,EAC/CY,EAAcH,EAAY,EAC1B,CAAER,cAAa,G,EAAIF,gBAAaG,IAAiB,EAEvD,OAAKJ,G,EAKHiB,QAAAZ,WAAA,CACEC,SAAA,E,EAAAV,OAAC,QAAKsB,SAAS,SAASC,QAAShB,CAAA,CAAc,G,EAC/CP,OAAC,QAAKsB,SAAS,UAAUC,QAAQ,UAAU,G,EAC3CvB,OAAC,QAAKsB,SAAS,WAAWC,QAASnB,EAAKS,QAAA,CAAU,G,EAClDb,OAAC,QAAKsB,SAAS,iBAAiBC,QAASL,CAAA,CAAa,G,EACtDlB,OAAC,QAAKsB,SAAS,gBAAgBC,QAASnB,EAAKoB,OAAOC,SAAS,OAAO,EAAI,aAAe,aAAc,G,EACrGzB,OAAC,QAAKsB,SAAS,WAAWC,QAASnB,EAAKoB,MAAA,CAAQ,GAClD,EAXO,IAaX,ECpBaE,EAAcA,IAAM,CAC/B,MAAMtB,G,EAAOC,gBAAaC,IAA2B,EAC/CY,EAAcH,EAAY,EAEhC,OAAKX,G,EAKHiB,QAAAZ,WAAA,CACEC,SAAA,E,EAAAV,OAAC,QAAK2B,KAAK,eAAeJ,QAAQ,sBAAsB,G,EACxDvB,OAAC,QAAK2B,KAAK,eAAeJ,QAAQ,UAAU,G,EAC5CvB,OAAC,QAAK2B,KAAK,qBAAqBJ,QAASnB,EAAKS,QAAA,CAAU,G,EACxDb,OAAC,QAAK2B,KAAK,sBAAsBJ,QAASL,CAAA,CAAa,G,EACvDlB,OAAC,QAAK2B,KAAK,gBAAgBJ,QAASnB,EAAKoB,MAAA,CAAQ,GACnD,EAVO,IAYX,E,aCXO,MAAMI,EAA0BA,IAAM,CAC3C,MAAMV,EAAcH,EAAY,EAC1BX,G,EAAOC,gBAAaC,IAA2B,EAC/C,CAAEC,cAAa,G,EAAIF,gBAAaG,IAAiB,EAEjD,CAAEQ,GAAE,G,EAAIC,KAAe,EAE7B,GAAI,CAACb,EACH,OAAO,KAGT,MAAMyB,EAAWb,EAAE,iBAAiB,EAC9Bc,EAAA,GAAA5C,OAAW8B,EAAE,mBAAmB,EACnCG,QAAQ,OAAQf,EAAKS,UAAY,EAAE,EACnCM,QAAQ,OAAQH,EAAE,YAAY,CAAC,aAE5Be,EAAW,gBAEjB,O,EACEV,QAACW,WAAA,CACCtB,SAAA,E,EAAAV,OAAC,SAAOU,SAAAoB,CAAA,CAAM,G,EACd9B,OAAC,QAAoB2B,KAAK,WAAWJ,QAASM,CAAA,EAApC,UAA8C,G,EACxD7B,OAAC,QAAuB2B,KAAK,cAAcJ,QAASL,CAAA,EAA1C,aAAuD,EAChEd,EAAK6B,eAAiBC,+B,EAA8BlC,OAAC,QAAK2B,KAAK,SAASJ,QAAQ,UAAU,G,EAC3FvB,OAAC,QAAKmC,IAAI,YAAYC,KAAM7B,CAAA,CAAc,G,EAC1CP,OAACG,EAAA,EAAO,G,EACRH,OAACoB,EAAA,EAAG,G,EACJpB,OAAC0B,EAAA,EAAQ,G,EACT1B,OAAC,QAAKsB,SAAS,YAAYC,QAASc,OAAON,CAAQ,EAAG,GACxD,CAEJ,EAEaO,EAAqBA,K,EAE9BtC,OAACgC,WAAA,CAASO,U,EAAUvC,OAAAS,WAAA,EAAE,EACpBC,U,EAAAV,OAAC4B,EAAA,EAAoB,EACvB,E,gFCnBG,MAAMY,EAA0BjD,GAAU,CAC/C,KAAM,CAAEU,YAAWS,WAAU+B,YAAY,GAAOC,OAAMC,OAAMC,WAAUC,cAAc,CAAE,EAAItD,EACpF,CAACuD,EAASC,CAAU,G,EAAIC,YAAiBH,GAAeF,CAAI,EAE5D,CAACM,EAAWC,CAAY,G,EAAIF,YAAc,IAAI,EAE9CG,EAAiBC,GAAqB,CAC1CL,EAAWK,CAAK,EAEZH,GACFA,EAAUI,QAAQD,CAAK,EAGzBR,EAASF,EAAKU,GAAQA,CAAK,CAC7B,EAEA,O,EACE/B,QAAC,OAAIpB,UAAU,uBACbS,SAAA,E,EAAAW,QAAC,OACCpB,UAAWqD,IAAGrD,EAAW,gBAAiB,CACxCsD,MAAOd,CACT,CAAC,EAED/B,SAAA,E,EAAAV,OAAC,MAAGC,UAAU,WACXS,SAAAgC,EAAKc,IAAI,CAACC,EAAKL,K,EACdpD,OAAC,MACCC,UAAWqD,IAAG,WAAY,CACxBI,OAAQZ,IAAYM,CACtB,CAAC,EAEDO,QAASA,IAAMR,EAAcC,CAAK,EAElC1C,U,EAAAV,OAAC,QAAMU,SAAA+C,EAAIG,KAAA,CAAM,GAHZR,CAIP,CACD,EACH,G,EACApD,OAAC,OACCC,UAAWqD,IAAG,8BAA8B,EAC5CzD,MAAO,CACLL,MAAA,GAAAN,QAAW,IAAMwD,EAAKmB,QAAQC,QAAQ,CAAC,OACvCC,UAAA,eAAA7E,OAA0B4D,EAAU,oBACpCkB,gBAAA,eAAA9E,OAAgCyD,EAAO,oBACvCsB,WAAA,eAAA/E,OAA2B4D,EAAU,mBACvC,EAEApC,U,EAAAV,OAAC,QAAKC,UAAU,gBAAgB,EAClC,GACF,G,EACAD,OAACkE,KAAA,CACCC,aAActB,GAAeF,EAC7B1C,UAAU,SACVmE,SAAUlB,EACVC,cAAgBkB,GAAWlB,EAAckB,EAAOC,WAAW,EAE1D5D,WAAS8C,IAAI,CAACe,EAAOnB,K,EACpBpD,OAACwE,KAAA,CAAyB9D,SAAA6D,CAAA,EAARnB,CAAc,CACjC,EACH,GACF,CAEJ,E,iGCpBA,SAjDM7D,GAAU,CACd,KAAM,CACJkF,eAAe,GACf9C,OAAO,GACP+C,OAAO,GACPC,WAAW,GACX1E,YAAY,GACZJ,QAAQ,CAAC,EACT+E,QACAjB,UAAUA,IAAM,CAEhB,EACAkB,aAAa,GACbC,eACF,EAAIvF,EAEE,CAAEyB,GAAE,G,EAAIC,KAAe,EAEvB8D,G,EAAYC,OAAgB,EAElC,O,EACE3D,QAAC,KAAEe,KAAMwC,EAAO3E,UAAA,aAAAf,OAAwBe,CAAA,EAAaJ,QAAc8D,UACjEjD,SAAA,E,EAAAV,OAACiF,KAAA,CAAMhF,UAAU,mBAAmBiF,IAAKP,EAAUQ,IAAKnE,EAAE,aAAa,EAAEG,QAAQ,KAAMQ,CAAI,EAAG,G,EAE9FN,QAAC,OAAIpB,UAAU,oBACbS,SAAA,E,EAAAW,QAAC,OAAIpB,UAAU,yBACbS,SAAA,E,EAAAV,OAAC,MAAGC,UAAU,8BAA+BS,SAAAiB,CAAA,CAAK,G,EAClD3B,OAACV,KAAA,CACCM,SAAU,CACRG,eAAgBqF,IAAKX,EAAc,mBAAoB,EAAK,EAC5DY,SAAUD,IAAKX,EAAc,YAAa,CAAC,CAC7C,EACAjF,MAAM,OACNC,OAAO,OACPC,WAAW,MACb,GACF,G,EACAM,OAAC,OAAIC,UAAU,yBAA0BS,SAAAgE,CAAA,CAAK,EAC7CG,GAAcC,IAAkB,S,EAC/BzD,QAAC,OAAIpB,UAAU,2BACbS,SAAA,E,EAAAV,OAAC,QAAKC,UAAU,uBAAwBS,SAAAqE,EAAUD,CAAa,EAAE,G,EACjE9E,OAAC,QAAKC,UAAU,uBAAwBS,SAAAM,EAAE,mBAAmB,EAAE,GACjE,GAEJ,GACF,CAEJ,E,2BC/DYsE,OACVA,EAAA,qBAAuB,0BACvBA,EAAA,sBAAwB,2BAFdA,OAAA,ICAL,MAAMC,I,EAAwBC,QAAMC,GAAQ,CACjD,MAAMC,EAAeD,EAAIE,IAAoB,EAC7C,OAAOF,G,EAAIG,MAAeF,CAAY,CAAC,CACzC,CAAC,ECHYG,I,EAAuBL,QAAMC,GAAQ,CAChD,MAAMC,EAAeD,EAAIE,IAAoB,EAC7C,OAAOF,G,EAAIK,MAAcJ,CAAY,CAAC,CACxC,CAAC,ECHYK,I,EAA6BP,QAAMC,GAAQ,CACtD,MAAMC,EAAeD,EAAIE,IAAoB,EAC7C,OAAOF,G,EAAIO,MAAoBN,CAAY,CAAC,CAC9C,CAAC,E,eC0BD,MAAMO,GAA+DC,GAAyB,IAAxB,CAAEC,OAAMlG,WAAU,EAAAiG,EACtF,KAAM,CAAEE,YAAY,CAAC,EAAGC,WAAW,GAAOC,YAAWC,SAAQC,MAAKC,YAAY,CAAC,CAAE,EAAIN,EAE/E,CAAEO,WAAUC,QAAO,G,EAAItG,gBAAauG,IAAuB,EAC3D,CAAEC,QAAO,G,EAAIxG,gBAAayG,SAAO,EAEjC,CAAE9F,GAAE,G,EAAIC,KAAe,EACvB8F,G,EAAWC,eAAY,EAEvBC,G,EAAiBC,KACrB5B,EAAQ,qBACR,CACE6B,QAASR,EACTS,MAAO,GACPb,QACF,EACA,CACEc,aAAc,CACZC,sBAAqBA,IACvB,CACF,CACF,EAEMC,I,EAAkBL,KACtB5B,EAAQ,sBACR,CACE6B,QAASR,EACTS,MAAO,GACPb,QACF,EACA,CACEc,aAAc,CACZG,uBAAsBA,IACxB,CACF,CACF,EAEMC,GAAW,UAGXtB,EAAKK,MAAQ,WACfS,EAAeS,KAAK,EAEpBH,GAAgBG,KAAK,EAGhB,CAAEvB,KAAM,CAAC,CAAE,GAGpB,IAAIwB,EACJ,GAAIlB,EAAU5C,OAAQ,CAEpB,MAAM+D,EAA0B,CAAC,EACjCnB,EAAUoB,QAASC,GAAY,CAC7BF,EAAcG,KAAKD,EAAGnG,IAAI,CAC5B,CAAC,EACDgG,EAAYC,EAAcI,KAAK,QAAG,CACpC,CAEA,O,EACEhI,OAAC,OAAIC,UAAWqD,IAAG,cAAerD,CAAS,EACxCS,SAAA0F,EAAUvC,Q,EACT7D,OAACiI,KAAA,CACCR,YACAS,MAAO,CAAC7B,EACR8B,kBAAmB,GACnBC,eAAgB,IAChBC,a,EAAarI,OAACsI,KAAA,CAAQC,QAAQ,OAAO,EACrCC,QAASxH,EAAE,eAAe,EAC1ByH,OAAQA,K,EACNpH,QAAC,OACEX,SAAA,CAAAgI,QAAQjC,EAAU5C,MAAM,GAAK2C,IAAQ,c,EACpCxG,OAAC2I,KAAA,CACC/D,MAAA,IAAA1F,OAAWwH,EAAA,kBAAAxH,OAAyB2H,CAAA,EACpC+B,UAAW,GACXjH,KAAMX,EAAE,WAAW,EACnBf,UAAU,wBACVyE,KAAMiD,EACNhE,QAAUkF,GAAe,CACvBA,EAAMC,eAAe,EACrB/B,EAAA,IAAA7H,OAAawH,EAAA,kBAAAxH,OAAyB2H,CAAA,CAAQ,CAChD,EACF,EAEDT,EAAU5C,IAAI,CAACuF,EAAMC,IAAM,CAC1B,KAAM,CAAEC,YAAU,EAAIF,EAChBG,GAAW,GACX,CAAEC,SAAUC,GAAc7I,aAAc8I,EAAiB,G,EAAIC,MACjEL,GACAC,GACArC,CACF,EAEA,O,EACE7G,OAACuJ,GAAA,CACC9E,aAAcsE,EAAKS,eAEnB5E,MAAOyE,GACP1H,KAAMoH,EAAKpH,KACX+C,KAAMqE,EAAK7H,YACXyD,SAAUoE,EAAKpE,SACfhB,QAAUkF,IAAe,CACvBA,GAAMC,eAAe,EACrB/B,EAAA,GAAA7H,OAAYkK,GAAA,YAAAlK,OAAuB2H,EAAA,yBAA+B,CAChE4C,MAAO,CACL9G,KAAM+G,UACNvD,KAAM4C,CACR,CACF,CAAC,CACH,GAbKC,CAcP,CAEJ,CAAC,CAAC,CAAD,CACH,EAEJ,G,EAEAhJ,OAAC,OAAIC,UAAU,QACZS,SAAA4F,GAAaK,IAAW,I,EAAK3G,OAACsI,KAAA,CAAQC,QAAQ,OAAO,G,EAAKvI,OAAC,OAAKU,SAAAM,EAAE,YAAY,EAAE,EACnF,EAEJ,CAEJ,EAEa2I,GAAqBA,IAAM,CACtC,KAAM,CAAEC,UAAS,G,EAAIvJ,gBAAawJ,YAAU,EACtCC,EAAO,CAACF,EACRnH,EAAY,GACZ,CAAEzB,GAAE,G,EAAIC,KAAe,EAEvB,CAAC8I,CAAY,G,EAAIC,mBAAgB,EACjC,CAACC,EAAQC,CAAS,G,EAAIlH,YAAS+G,EAAatE,IAAI,QAAQ,CAAC,EAEzD0E,G,EAAgB9J,gBAAakF,EAAqB,EAClD6E,G,EAAe/J,gBAAawF,EAAoB,EAChDwE,G,EAAqBhK,gBAAa0F,EAA0B,EAE5DrD,EAAO,CACX,CACE8D,IAAK,YACL5C,O,EAAO5D,OAAC,MAAIU,SAAAM,EAAE,WAAW,EAAE,EAC3BsF,UAAW,GACXF,UAAW6D,IAAW,YAAcE,EAAchE,KAAO,CAAC,EAC1DI,OAAQ4D,EAAc5D,OACtBF,SAAU8D,EAAc9D,SACxBI,UAAW4D,EAAmBlE,IAChC,EACA,CACEK,IAAK,WACL5C,O,EAAO5D,OAAC,MAAIU,SAAAM,EAAE,MAAM,EAAE,EACtBsF,UAAW,GACXF,UAAW6D,IAAW,WAAaG,EAAajE,KAAO,CAAC,EACxDI,OAAQ6D,EAAa7D,OACrBF,SAAU+D,EAAa/D,SACvBI,UAAW,CAAC,CACd,CAAC,EAGG7D,EAAYa,GAA4B,CAC5C6G,OAAOC,SAAS,EAAG,CAAC,EACpBL,EAAUzG,EAAI+C,GAAG,CACnB,EAEA,O,EACExG,OAAC,OAAIC,UAAWqD,IAAG,SAAU,CAAEwG,MAAK,CAAC,EACnCpJ,U,EAAAV,OAACwC,EAAA,CACCvC,UAAU,aACV4C,YAAaoH,IAAW,YAAc,EAAI,EAC1CvH,OACAE,WACAD,KAAMsH,IAAW,YAAc,EAAI,EACnCxH,YAEC/B,SAAAgC,EAAKc,IAAI,CAACuF,EAAMC,K,EACfhJ,OAACiG,GAAA,CACChG,UAAWqD,IAAG,CACX,MAAUb,CACb,CAAC,EACD0D,KAAM4C,CAAA,EACDC,CACN,CACF,EACH,EACF,CAEJ,E,gBCrNO,MAAMwB,GAAqBA,K,EACnBnK,gBAAaC,IAA2B,G,EAM9CN,OAAC2J,GAAA,EAAe,G,EAHd3J,OAACyK,KAAA,EAAS,E,gBCFjBC,GAAQ,IAAM,CAAC,I,EAAG,KAAS,gCAAgC,CAAC,EAC5DC,I,EAAS,MAAkB,YAAY,EACvCC,GAAmBC,GAAQ,CAC7B,KAAM,CACJ,cAAe,CACb,eAAgBC,CAClB,EACA,WAAY,CACV,eAAgBpF,CAClB,EACA,wBAAAqF,CACF,EAAIF,EACJ,OAAIC,IAAwBpF,GAC1B,QAAQ,IAAI,gDAAgD,EACrD,IAEFqF,CACT,EACIC,GAAiB,cAAc,GAAU,CAC3C,aAAc,CACZ,MAAM,GAAG,SAAS,EAClB,KAAK,KAAO1I,EACZ,KAAK,KAAOkI,EACd,CACF,C","file":"routes/$user_link_name_.follow-f35f7dfb51da086f1da1.js","sourcesContent":["export const pxToRem = (px: number): string => {\n return `${(px * 16) / 375}rem`;\n};\n","import { CSSProperties, FC, useMemo } from 'react';\nimport cls from 'classnames';\nimport { pxToRem } from '~/utils/px-to-rem';\nimport { IUserAuthInfo } from 'shared/models/user-auth-info';\n\nimport './index.rem.scss';\n\ninterface UserAuthIconProps {\n authInfo: IUserAuthInfo;\n width?: number | string | undefined;\n height?: number | string | undefined;\n marginLeft?: number | string | undefined;\n /** 用户认证icon显示为白色,视频详情页icon颜色为白色 */\n light?: boolean;\n}\n\nconst DEFAULT_WIDTH = pxToRem(20);\nconst DEFAULT_HEIGHT = pxToRem(20);\nconst DEFAULT_MARGIN_LEFT = pxToRem(4);\n\nexport const UserAuthIcon: FC = (props) => {\n const {\n width = DEFAULT_WIDTH,\n height = DEFAULT_HEIGHT,\n marginLeft = DEFAULT_MARGIN_LEFT,\n light = false,\n authInfo,\n } = props;\n\n const style: CSSProperties = useMemo(\n () => ({\n width: typeof width === 'number' ? pxToRem(width) : width,\n height: typeof height === 'number' ? pxToRem(height) : height,\n marginLeft: typeof marginLeft === 'number' ? pxToRem(marginLeft) : marginLeft,\n }),\n [width, height, marginLeft],\n );\n\n if (!authInfo.showAuthSymbol) {\n return null;\n }\n\n return (\n \n );\n};\n","import { BreadcrumbJSONLD } from '~/utils/json-ld/breadcrumb';\nimport { useAtomValue } from 'jotai';\nimport { $CurrentAvailableUserOrNull } from '@user/shared/atoms/current-user';\nimport { FC } from 'react';\nimport { $PageLevelTraffic } from 'shared/atoms';\n\nexport const JsonLD: FC = () => {\n const user = useAtomValue($CurrentAvailableUserOrNull);\n const { canonicalUrl } = useAtomValue($PageLevelTraffic);\n\n if (!user) {\n return null;\n }\n\n return (\n <>\n \n \n );\n};\n","import { useTranslation } from 'react-i18next';\nimport { useAtomValue } from 'jotai';\nimport { $CurrentAvailableUserOrNull } from '@user/shared/atoms/current-user';\n\nexport const useUserDesc = (): string => {\n const { t } = useTranslation();\n const user = useAtomValue($CurrentAvailableUserOrNull);\n\n if (!user) {\n return '';\n }\n\n const { nickName, description } = user;\n\n return t('user_helmet_description_1')\n .replace('%1$s', nickName || '')\n .replace('%2$s', description || '');\n};\n","import { useAtomValue } from 'jotai';\nimport { useUserDesc } from '../shared/use-user-desc';\nimport { $CurrentAvailableUserOrNull } from '@user/shared/atoms/current-user';\nimport { $PageLevelTraffic } from 'shared/atoms';\nimport { FC } from 'react';\n\nexport const OG: FC = () => {\n const user = useAtomValue($CurrentAvailableUserOrNull);\n const description = useUserDesc();\n const { canonicalUrl } = useAtomValue($PageLevelTraffic);\n\n if (!user) {\n return null;\n }\n\n return (\n <>\n \n \n \n \n \n \n \n );\n};\n","import { useAtomValue } from 'jotai';\nimport { useUserDesc } from '../shared/use-user-desc';\nimport { $CurrentAvailableUserOrNull } from '@user/shared/atoms/current-user';\nimport { FC } from 'react';\n\nexport const Twitter: FC = () => {\n const user = useAtomValue($CurrentAvailableUserOrNull);\n const description = useUserDesc();\n\n if (!user) {\n return null;\n }\n\n return (\n <>\n \n \n \n \n \n \n );\n};\n","import { Suspense, FC } from 'react';\nimport { useAtomValue } from 'jotai';\nimport { useTranslation } from 'react-i18next';\nimport { JsonLD } from './json-ld';\nimport { OG } from './og';\nimport { useUserDesc } from '../shared/use-user-desc';\nimport { Twitter } from './twitter';\nimport { $PageLevelTraffic } from 'shared/atoms';\nimport { $CurrentAvailableUserOrNull } from '@user/shared/atoms/current-user';\nimport { EPrivacyStatus } from 'shared/models';\n\nexport const UserFollowHeadInner: FC = () => {\n const description = useUserDesc();\n const user = useAtomValue($CurrentAvailableUserOrNull);\n const { canonicalUrl } = useAtomValue($PageLevelTraffic);\n\n const { t } = useTranslation();\n\n if (!user) {\n return null;\n }\n\n const keywords = t('keyword_default');\n const title = `${t('user_helmet_title')\n .replace('%1$s', user.nickName || '')\n .replace('%2$s', t('contribute'))}|Lemon8`;\n\n const fb_appid = 426786581540674;\n\n return (\n \n {title}\n \n \n {user.privacyStatus >= EPrivacyStatus.PrivateUser && }\n \n \n \n \n \n \n );\n};\n\nexport const UserFollowHead: FC = () => {\n return (\n }>\n \n \n );\n};\n","import { useState } from 'react';\nimport cs from 'classnames';\nimport { Swiper, SwiperSlide } from 'swiper/react';\n\nimport 'swiper/css';\nimport './style.scss';\n\nexport interface TabItemProps {\n key: string;\n value: any;\n}\n\ninterface IProps {\n /** 初始展示的页面 */\n initialPage?: number;\n /** 当前展示的页面 */\n page: number;\n /** tabs */\n tabs: TabItemProps[];\n /** 子元素 */\n children: React.ReactElement[];\n /** 容器类名 */\n className?: string;\n /** 是否固定在顶部 */\n autoFixed?: boolean;\n /** 切换tab的回调函数 */\n onChange: (tab: TabItemProps, index: number) => void;\n}\n\nexport const Tabs: React.FC = (props) => {\n const { className, children, autoFixed = false, tabs, page, onChange, initialPage = 0 } = props;\n const [curPage, setCurPage] = useState(initialPage || page);\n\n const [swiperRef, setSwiperRef] = useState(null);\n\n const onSlideChange = (index: any): void => {\n setCurPage(index);\n\n if (swiperRef) {\n swiperRef.slideTo(index);\n }\n\n onChange(tabs[index], index);\n };\n\n return (\n
\n \n
    \n {tabs.map((tab, index: number) => (\n onSlideChange(index)}\n >\n {tab.value}\n \n ))}\n
\n \n \n
\n \n onSlideChange(swiper.activeIndex)}\n >\n {children.map((child, index) => (\n {child}\n ))}\n \n \n );\n};\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { UserAuthIcon } from '~/components/user-auth-icon';\nimport { useNumFormatter } from '~/utils/format/num-formatter';\nimport { Image } from '~/components/image';\nimport _get from 'lodash/get';\n\nimport './style.scss';\n\nconst UserLineCard: React.FC<{\n userAuthInfo?: string;\n name: string;\n desc: string;\n icon_url: string;\n aHref: string;\n className?: string;\n style?: any;\n onClick?: any;\n showNumber?: boolean;\n followerCount?: number;\n}> = (props) => {\n const {\n userAuthInfo = '',\n name = '',\n desc = '',\n icon_url = '',\n className = '',\n style = {},\n aHref,\n onClick = () => {\n //\n },\n showNumber = false,\n followerCount,\n } = props;\n\n const { t } = useTranslation();\n\n const formatNum = useNumFormatter();\n\n return (\n \n {t('own_picture').replace('%s',\n\n
\n
\n

{name}

\n \n
\n
{desc}
\n {showNumber && followerCount !== undefined && (\n
\n {formatNum(followerCount)}\n {t('fans_count_number')}\n
\n )}\n
\n
\n );\n};\n\nexport default UserLineCard;\n","/**\n * 该路由下所有可能用到的方法\n */\n\nexport enum Methods {\n UserFollowerLoadMore = 'user-follower-load-more',\n UserFollowingLoadMore = 'user-following-load-more',\n}\n","import { atom } from 'jotai';\nimport { $CurrentUserLinkName } from '@user/shared/atoms/current-user';\nimport { $UserFollowing } from 'shared/atoms';\n\nexport const $CurrentUserFollowing = atom((get) => {\n const userLinkName = get($CurrentUserLinkName);\n return get($UserFollowing(userLinkName));\n});\n","import { atom } from 'jotai';\nimport { $CurrentUserLinkName } from '@user/shared/atoms/current-user';\nimport { $UserFollower } from 'shared/atoms';\n\nexport const $CurrentUserFollower = atom((get) => {\n const userLinkName = get($CurrentUserLinkName);\n return get($UserFollower(userLinkName));\n});\n","import { atom } from 'jotai';\nimport { $CurrentUserLinkName } from '@user/shared/atoms/current-user';\nimport { $UserFollowingTopic } from 'shared/atoms';\n\nexport const $CurrentUserFollowingTopic = atom((get) => {\n const userLinkName = get($CurrentUserLinkName);\n return get($UserFollowingTopic(userLinkName));\n});\n","import { FC, useState } from 'react';\nimport { useNavigate, useSearchParams } from '@remix-run/react';\nimport cs from 'classnames';\nimport { useTranslation } from 'react-i18next';\nimport { useAtomValue } from 'jotai';\nimport { $Locale, $UserAgent } from '@lemon8/web-app-shared/atom';\nimport { TabItemProps, Tabs } from '~/components/tabs';\nimport LoadMore from '~/components/load-more';\nimport HashtagCard from '~/components/simple-topic-card';\nimport { Loading } from '~/components/loading';\nimport UserLineCard from '~/components/user-line-card';\nimport { EPageType } from 'shared/models/page-type';\nimport { addRegionToSemanticUrl } from '~/utils/add-region-to-semantic-url';\nimport { Methods } from '../../constant';\nimport { $CurrentUserAsAvailable } from '@user/shared/atoms/current-user';\nimport { $CurrentUserFollowing } from '@user-follow/shared/atoms/current-user-following';\nimport { $CurrentUserFollower } from '@user-follow/shared/atoms/current-user-follower';\nimport { $CurrentUserFollowingTopic } from '@user-follow/shared/atoms/current-user-following-topic';\nimport { useRouteLoader } from '~/utils/use-route-loader';\nimport { $UserFollowerLoadmore, $UserFollowingLoadmore } from 'shared/atoms';\n\nimport './style.scss';\n\ninterface TabItemData {\n key: 'following' | 'follower';\n value: JSX.Element;\n isLoading: boolean;\n data_list: any[];\n cursor: number;\n has_more: boolean;\n forumList: any[]; // TODO 类型\n}\n\nconst FollowLoadMore: FC<{ data: TabItemData; className: string }> = ({ data, className }) => {\n const { data_list = [], has_more = false, isLoading, cursor, key, forumList = [] } = data;\n\n const { linkName, userId } = useAtomValue($CurrentUserAsAvailable);\n const { region } = useAtomValue($Locale);\n\n const { t } = useTranslation();\n const navigate = useNavigate();\n\n const followerLoader = useRouteLoader(\n Methods.UserFollowerLoadMore,\n {\n user_id: userId,\n count: 10,\n cursor,\n },\n {\n atomFamilies: {\n $UserFollowerLoadmore,\n },\n },\n );\n\n const followingLoader = useRouteLoader(\n Methods.UserFollowingLoadMore,\n {\n user_id: userId,\n count: 10,\n cursor,\n },\n {\n atomFamilies: {\n $UserFollowingLoadmore,\n },\n },\n );\n\n const loadData = async (): Promise<{\n data: any[];\n }> => {\n if (data.key === 'follower') {\n followerLoader.load();\n } else {\n followingLoader.load();\n }\n\n return { data: [] };\n };\n\n let forumName: string;\n if (forumList.length) {\n // 拼接话题名\n const forumNameList: string[] = [];\n forumList.forEach((el: any) => {\n forumNameList.push(el.name);\n });\n forumName = forumNameList.join('、');\n }\n\n return (\n
\n {data_list.length ? (\n }\n endText={t('no_more_items')}\n render={() => (\n
\n {Boolean(forumList.length) && key === 'following' && (\n {\n event.preventDefault();\n navigate(`/${linkName}/topic?region=${region}`);\n }}\n />\n )}\n {data_list.map((item, i) => {\n const { share_url } = item;\n const userName = '';\n const { pathName: userPathName, canonicalUrl: userCanonicalUrl } = addRegionToSemanticUrl(\n share_url,\n userName,\n region,\n );\n\n return (\n {\n event.preventDefault();\n navigate(`${userPathName}?region=${region}&position=follow_list`, {\n state: {\n page: EPageType.user,\n data: item,\n },\n });\n }}\n />\n );\n })}\n
\n )}\n />\n ) : (\n
\n {isLoading || userId === '' ? :
{t('no_content')}
}\n
\n )}\n
\n );\n};\n\nexport const UserFollowTabs: FC = () => {\n const { isMobile } = useAtomValue($UserAgent);\n const isPC = !isMobile;\n const autoFixed = true;\n const { t } = useTranslation();\n\n const [searchParams] = useSearchParams();\n const [tabKey, setTabKey] = useState(searchParams.get('tabkey'));\n\n const followingData = useAtomValue($CurrentUserFollowing);\n const followerData = useAtomValue($CurrentUserFollower);\n const followingTopicData = useAtomValue($CurrentUserFollowingTopic);\n\n const tabs = [\n {\n key: 'following' as const,\n value:

{t('following')}

,\n isLoading: false,\n data_list: tabKey === 'following' ? followingData.data : [],\n cursor: followingData.cursor,\n has_more: followingData.has_more,\n forumList: followingTopicData.data,\n },\n {\n key: 'follower' as const,\n value:

{t('fans')}

,\n isLoading: false,\n data_list: tabKey === 'follower' ? followerData.data : [],\n cursor: followerData.cursor,\n has_more: followerData.has_more,\n forumList: [],\n },\n ];\n\n const onChange = (tab: TabItemProps): void => {\n window.scrollTo(0, 0);\n setTabKey(tab.key);\n };\n\n return (\n
\n \n {tabs.map((item, i) => (\n \n ))}\n \n
\n );\n};\n","import React, { FC } from 'react';\nimport { UserFollowTabs } from './follow-tabs';\nimport { useAtomValue } from 'jotai';\nimport { $CurrentAvailableUserOrNull } from '@user/shared/atoms/current-user';\nimport { NotFound } from '~/components/not-found';\n\nexport const UserFollowBody: FC = () => {\n const user = useAtomValue($CurrentAvailableUserOrNull);\n\n if (!user) {\n return ;\n }\n\n return ;\n};\n","\"use strict\";\n\nimport \"core-js/modules/web.dom-collections.iterator.js\";\nimport { RemixPage } from \"~/utils/remix-page\";\nimport { cssLinks } from \"@ttark/css-links\";\nimport { UserFollowHead } from \"./head\";\nimport { UserFollowBody } from \"./body\";\nimport { buildMasterLoader } from \"~/utils/build-master-loader\";\nvar links = () => [...cssLinks(\"routes/$user_link_name_.follow\")];\nvar loader = buildMasterLoader(\"userFollow\");\nvar shouldRevalidate = args => {\n const {\n currentParams: {\n user_link_name: currentUserLinkName\n },\n nextParams: {\n user_link_name: userLinkName\n },\n defaultShouldRevalidate\n } = args;\n if (currentUserLinkName === userLinkName) {\n console.log(\"[shouldRevalidate] same route, skip revalidate\");\n return false;\n }\n return defaultShouldRevalidate;\n};\nvar UserFollowPage = class extends RemixPage {\n constructor() {\n super(...arguments);\n this.Head = UserFollowHead;\n this.Body = UserFollowBody;\n }\n};\nexport { UserFollowPage as default, links, shouldRevalidate };"],"sourceRoot":""}