{"version":3,"sources":["webpack://@lemon8/web-seo/../common/temp/split__lemon8_web_seo/node_modules/.pnpm/@svgr+webpack@5.5.0/node_modules/@svgr/webpack/common/temp/split__lemon8_web_seo/node_modules/.pnpm/@lemon8+design@0.0.8-alpha.4_lottie-web@5.12.2_react-dom@18.2.0_react@18.2.0/node_modules/@lemon8/design/lib/icons/icon_assets/arrow_triangle_down_fill.svg","webpack://@lemon8/web-seo/../common/temp/split__lemon8_web_seo/node_modules/.pnpm/@svgr+webpack@5.5.0/node_modules/@svgr/webpack/common/temp/split__lemon8_web_seo/node_modules/.pnpm/@lemon8+design@0.0.8-alpha.4_lottie-web@5.12.2_react-dom@18.2.0_react@18.2.0/node_modules/@lemon8/design/lib/icons/icon_assets/logo_twitter.svg","webpack://@lemon8/web-seo/./client/routes/$user_link_name_.$article_id/shared/atoms/related-post-carousel-show.ts","webpack://@lemon8/web-seo/./client/components/article-card/index.tsx","webpack://@lemon8/web-seo/./client/components/avatar/index.tsx","webpack://@lemon8/web-seo/./client/components/divider-container/index.tsx","webpack://@lemon8/web-seo/./client/components/drawer/index.tsx","webpack://@lemon8/web-seo/./client/components/user-card/index.tsx","webpack://@lemon8/web-seo/./client/components/view-tracker/index.tsx","webpack://@lemon8/web-seo/./client/routes/$user_link_name/shared/atoms/current-user.ts","webpack://@lemon8/web-seo/./client/utils/fix-body.ts","webpack://@lemon8/web-seo/./client/utils/use-route-loader.ts","webpack://@lemon8/web-seo/./client/utils/json-ld/person.tsx","webpack://@lemon8/web-seo/./client/utils/json-ld/profile.tsx","webpack://@lemon8/web-seo/./client/routes/$user_link_name/head/json-ld.tsx","webpack://@lemon8/web-seo/./client/routes/$user_link_name/shared/use-user-desc.ts","webpack://@lemon8/web-seo/./client/routes/$user_link_name/head/og.tsx","webpack://@lemon8/web-seo/./client/routes/$user_link_name/head/twitter.tsx","webpack://@lemon8/web-seo/./client/routes/$user_link_name/head/index.tsx","webpack://@lemon8/web-seo/./client/routes/$user_link_name/shared/atoms/current-user-posts.ts","webpack://@lemon8/web-seo/./client/routes/$user_link_name/body/post/privacy/index.tsx","webpack://@lemon8/web-seo/./client/routes/$user_link_name/body/post/index.tsx","webpack://@lemon8/web-seo/./client/routes/$user_link_name/body/campaign/index.tsx","webpack://@lemon8/web-seo/../common/temp/split__lemon8_web_seo/node_modules/.pnpm/@svgr+webpack@5.5.0/node_modules/@svgr/webpack/common/temp/split__lemon8_web_seo/node_modules/.pnpm/@lemon8+design@0.0.8-alpha.4_lottie-web@5.12.2_react-dom@18.2.0_react@18.2.0/node_modules/@lemon8/design/lib/icons/icon_assets/link_fill.svg","webpack://@lemon8/web-seo/../common/temp/split__lemon8_web_seo/node_modules/.pnpm/@svgr+webpack@5.5.0/node_modules/@svgr/webpack/common/temp/split__lemon8_web_seo/node_modules/.pnpm/@lemon8+design@0.0.8-alpha.4_lottie-web@5.12.2_react-dom@18.2.0_react@18.2.0/node_modules/@lemon8/design/lib/icons/icon_assets/logo_instagram.svg","webpack://@lemon8/web-seo/../common/temp/split__lemon8_web_seo/node_modules/.pnpm/@svgr+webpack@5.5.0/node_modules/@svgr/webpack/common/temp/split__lemon8_web_seo/node_modules/.pnpm/@lemon8+design@0.0.8-alpha.4_lottie-web@5.12.2_react-dom@18.2.0_react@18.2.0/node_modules/@lemon8/design/lib/icons/icon_assets/logo_youtube.svg","webpack://@lemon8/web-seo/./client/components/user-description/user-link.tsx","webpack://@lemon8/web-seo/./client/components/simple-toast/index.tsx","webpack://@lemon8/web-seo/./client/components/user-description/index.tsx","webpack://@lemon8/web-seo/./client/routes/$user_link_name/body/description/index.tsx","webpack://@lemon8/web-seo/./client/routes/$user_link_name/shared/atoms/current-user-related-user.ts","webpack://@lemon8/web-seo/./client/routes/$user_link_name/body/related-user/index.tsx","webpack://@lemon8/web-seo/./client/routes/$user_link_name/body/index.tsx","webpack://@lemon8/web-seo/./client/routes/$user_link_name/__remix_browser_route__route.tsx"],"names":["_path","_extends","target","i","source","key","SvgArrowTriangleDownFill","props","SvgLogoTwitter","$RelatedPostCarouselShow","atom","RELATED_ARTICLE_CAROUSEL_HIDE_RANK","ArticleCard","article","imageList","articleClass","title","groupId","shortContent","largeImage","author","canonicalUri","articleLikes","imprId","isLCP","rank","t","useTranslation","region","useAtomValue","$Locale","formatNum","useNumFormatter","active","usePageActive","isMobileUser","$IsMobileUser","currentPageModule","useScopedAtomValue","$CurrentPageModule","prefix","$CurrentPositionPrefix","setRelatedPostCarouselShow","useSetAtom","posterImageList","useMemo","temp","length","slice","articleHref","concat","handleClickArticle","useReflowClick","clickEvent","_","bundle","_objectSpread","current_page_module","current_position","ClickPosition","page_click_id","reflowBehavior","schemaOption","pageType","ArticleClass","authorId","userId","ampExtra","enter_position","authorHref","split","handleClickAuthor","defaultBehavior","e","stopPropagation","articleCardRef","useViewTracking","onView","useCallback","window","Tea","group_id","media_id","article_class","impr_id","isVideo","jsxs","Link","ref","className","cls","multi_images","onClick","to","children","map","image","index","jsx","Image","src","url","fetchpriority","PlayIcon","dangerouslySetInnerHTML","buildInnerHtml","DivisibleStack","wrapper","divider","avatar","alt","nickName","Heart","num","replace","Avatar","DividerContainer","dividerCls","wrapperCls","content","Children","filter","Boolean","flatMap","child","Fragment","PREFIX","Drawer","React","constructor","arguments","toggleBodyFixed","isOpen","savedTop","scrollY","FixBodyUtil","onClose","componentDidMount","componentDidUpdate","prevProps","componentWillUnmount","render","direction","maskClosable","showMask","defaultProps","showBack","UserCard","_ref","user","description","fansCount","publishCount","linkName","userHref","handleUserClick","Number","ViewTracker","Component","observer","wrapperRef","trackEvent","visible","once","onChange","onHide","unobserve","options","DEFAULT_OPTIONS","ViewObserver","current","observe","CurrentUserId","get","traffic","$PageLevelTraffic","EPageType","includes","Promise","resolve","pendingQueue","$CurrentUserLinkName","userLinkName","$CurrentUser","currentUserLinkName","$UserDetailV2","$CurrentAvailableUserOrNull","UserDetailUtil","$CurrentUserAsAvailable","eventList","BODY_FIXING_CLASS","preventDefaultHandler","event","preventDefault","lastScrollY","fix","forEach","document","body","addEventListener","passive","restore","removeEventListener","partialFix","classList","contains","style","top","add","partialRestore","remove","scrollTo","getAtom","res","atomKey","args","decodeArgs","a","decodeURIComponent","atomFamily","atomFamilies","console","error","atoms","useRouteLoader","method","params","store","useStore","fetcher","useFetcher","load","searchParams","URLSearchParams","set","Object","entries","value","String","location","pathname","toString","useEffect","data","_ref2","startsWith","atomToSet","state","PersonJSONLD","name","uniqueName","desc","likeCount","followCount","postCount","type","__html","JSON","stringify","alternateName","mainEntityOfPage","identifier","propertyID","contentUrl","interactionStatistic","interactionType","userInteractionCount","ProfileJSONLD","favoriteCount","jsonLD","mainEntity","JsonLD","dugCount","favoredCount","followingCount","followerCount","useUserDesc","OG","ogUrl","property","Twitter","UserBaseHead","canonicalUrl","noIndex","privacyStatus","EPrivacyStatus","keywords","fb_appid","rel","href","UserHead","Suspense","$CurrentUserPosts","$UserPost","UserPostSection","items","hasMore","maxBeHotTime","loader","user_id","max_behot_time","count","$UserPostLoadmore","observedRef","ModuleType","handleSeeMore","UserPrivacyContent","id","ScopedProvider","atomsWithHydration","ClickPositionPrefix","SeeMore","onClickSeeMore","loading","UserCampaignSection","sendTrackingEvent","CampaignCarousel","_path2","SvgLinkFill","_path3","SvgLogoInstagram","SvgLogoYoutube","UserLinks","thirdLinks","isMultipleLink","isMobile","$UserAgent","isPC","pressIndex","setPressIndex","useState","showActionsheet","setShowActionsheet","actionSheetItemTouchStart","actionSheetItemTouchEnd","closeLinkModal","handleLinkClick","Icon","platform","InsIcon","TwitterIcon","YoutubeIcon","cs","ArrowTriangleDownFill","item","open","onTouchStart","onTouchEnd","SimpleToast","show","setShow","hydrated","setHydrated","timer","useRef","newTimer","setTimeout","clearTimeout","hide","UserDescription","gender","ageGroup","locationValue","useLocation","isRealUser","formatNumber","toast","setToast","followingHref","followerHref","activeAction","enterPosition","onClickFollowingInner","onClickFollowing","onClickFollowerInner","onClickFollower","genderValue","EUserGender","ageValue","_a","label","showLink","position","UserDescriptionSection","NotFound","$CurrentUserRelatedUser","$UserRelatedUser","UserRelatedSection","users","SectionTitle","StepScroll","UserBody","fallback","UserBodySkeleton","links","shouldRevalidate","defaultShouldRevalidate","UserPage"],"mappings":"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","file":"routes/$user_link_name-0df9594688f7355d93dd.js","sourcesContent":["var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgArrowTriangleDownFill(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M11.563 16.014a.5.5 0 00.793.002l4.409-5.71a.5.5 0 00-.396-.806H7.6a.5.5 0 00-.398.803l4.362 5.711z\",\n fill: \"currentColor\"\n })));\n}\nexport default SvgArrowTriangleDownFill;","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgLogoTwitter(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22.5 6.512a8.641 8.641 0 01-2.474.676 4.308 4.308 0 001.894-2.374 8.649 8.649 0 01-2.736 1.041A4.31 4.31 0 0016.039 4.5c-2.38 0-4.308 1.922-4.308 4.292 0 .336.038.664.111.978a12.247 12.247 0 01-8.88-4.484 4.285 4.285 0 001.333 5.73 4.304 4.304 0 01-1.951-.537v.054A4.298 4.298 0 005.8 14.74a4.33 4.33 0 01-1.946.073 4.31 4.31 0 004.024 2.98 8.666 8.666 0 01-5.35 1.838c-.348 0-.69-.02-1.028-.06A12.23 12.23 0 008.104 21.5c7.925 0 12.259-6.54 12.259-12.21 0-.187-.005-.372-.013-.556a8.736 8.736 0 002.15-2.222z\",\n fill: \"currentColor\"\n })));\n}\nexport default SvgLogoTwitter;","import { atom } from 'jotai';\n\nexport const $RelatedPostCarouselShow = atom(false);\n","import { useTranslation } from 'react-i18next';\nimport { Link } from '@remix-run/react';\nimport { useCallback, useMemo } from 'react';\nimport cls from 'classnames';\nimport { Article, ArticleClass } from 'shared/models/legacy';\nimport { Image } from '~/components/image';\nimport Heart from '@lemon8/design/lib/icons/icon_assets/heart.svg';\nimport PlayIcon from '@lemon8/design/lib/icons/icon_assets/play_fill.svg';\nimport { DivisibleStack } from '~/components/divisible-stack';\nimport { useNumFormatter } from '~/utils/format/num-formatter';\nimport { useAtomValue, useSetAtom } from 'jotai';\nimport { $Locale } from '@lemon8/web-app-shared/atom';\nimport { ClickPosition } from '~/utils/click-position';\nimport { usePageActive } from '~/utils/active/use-page-active';\nimport useReflowClick from '~/utils/use-reflow-click';\nimport { $IsMobileUser } from '~/utils/is-mobile-user';\nimport { useViewTracking } from '~/utils/use-view-tracking';\nimport { useScopedAtomValue } from '@lemon8/web-app-shared/ssr';\nimport { $CurrentPageModule } from '~/models/current-page-module';\nimport { $RelatedPostCarouselShow } from '@article/shared/atoms/related-post-carousel-show';\nimport { $CurrentPositionPrefix } from '~/models/current-position-prefix';\nimport { buildInnerHtml } from '@lemon8/web-app-shared/util';\n\nimport './style.scss';\n\ninterface ArticleCardProps {\n article: Article;\n isLCP?: boolean;\n\n /**\n * starts from 0\n */\n rank: number;\n}\n\nconst RELATED_ARTICLE_CAROUSEL_HIDE_RANK = 9;\n\nexport const ArticleCard = (props: ArticleCardProps): JSX.Element => {\n const {\n article: {\n imageList,\n articleClass,\n title,\n groupId,\n shortContent,\n largeImage,\n author,\n canonicalUri,\n articleLikes,\n imprId,\n },\n isLCP = false,\n rank,\n } = props;\n const { t } = useTranslation();\n const { region } = useAtomValue($Locale);\n const formatNum = useNumFormatter();\n const active = usePageActive();\n const isMobileUser = useAtomValue($IsMobileUser);\n const currentPageModule = useScopedAtomValue($CurrentPageModule);\n const prefix = useScopedAtomValue($CurrentPositionPrefix);\n const setRelatedPostCarouselShow = useSetAtom($RelatedPostCarouselShow);\n\n const posterImageList = useMemo(() => {\n const temp = imageList.length ? [...imageList] : [largeImage];\n return temp.slice(0, temp.length < 3 ? 1 : 3);\n }, [largeImage, imageList]);\n\n const articleHref = useMemo(() => `${canonicalUri}?region=${region}`, [region]);\n\n const handleClickArticle = useReflowClick(\n {\n clickEvent: (_, bundle) => ({\n ...bundle,\n current_page_module: currentPageModule,\n current_position: prefix + ClickPosition.related_post,\n page_click_id: groupId,\n rank,\n }),\n reflowBehavior: () => {\n active({\n schemaOption: {\n pageType: articleClass === ArticleClass.VIDEO ? 'video' : 'article',\n groupId,\n authorId: author.userId,\n },\n ampExtra: {\n enter_position: prefix + ClickPosition.related_post,\n },\n });\n },\n },\n [active, groupId, articleClass, author],\n );\n\n const authorHref = useMemo(() => `/${canonicalUri.split('/')[1]}?region=${region}`, [region]);\n\n const handleClickAuthor = useReflowClick(\n {\n clickEvent: (_, bundle) => ({\n ...bundle,\n current_page_module: currentPageModule,\n current_position: prefix + ClickPosition.related_post,\n page_click_id: groupId,\n rank,\n }),\n reflowBehavior: () => {\n active({\n schemaOption: {\n pageType: articleClass === ArticleClass.VIDEO ? 'video' : 'article',\n groupId,\n authorId: author.userId,\n },\n ampExtra: {\n enter_position: prefix + ClickPosition.related_post,\n },\n });\n },\n defaultBehavior: (e) => {\n e?.stopPropagation();\n },\n },\n [active, groupId, articleClass, author],\n );\n\n const articleCardRef = useViewTracking({\n onView: useCallback(() => {\n if (isMobileUser) {\n window.Tea('wap_cta_show', {\n current_page_module: currentPageModule,\n current_position: prefix + ClickPosition.related_post,\n rank,\n });\n }\n\n window.Tea('wap_related_post_show', {\n current_page_module: currentPageModule,\n current_position: prefix + ClickPosition.related_post,\n group_id: groupId,\n media_id: author.userId,\n article_class: articleClass,\n impr_id: imprId,\n rank,\n });\n if (rank >= RELATED_ARTICLE_CAROUSEL_HIDE_RANK) {\n setRelatedPostCarouselShow(false);\n }\n }, [isMobileUser]),\n });\n\n const isVideo = articleClass === 'Video';\n\n return (\n 1,\n })}\n onClick={handleClickArticle}\n to={articleHref}\n >\n
\n
\n {posterImageList.map((image, index) => (\n
\n {isLCP ? : }\n
\n ))}\n {isVideo && (\n
\n \n
\n )}\n
\n
\n
\n
\n
\n
\n \n \n \n {author.nickName}\n

{author.nickName}

\n \n
\n
\n \n

{t('like_count_plural', { num: articleLikes }).replace('%d', formatNum(articleLikes))}

\n
\n
\n \n );\n};\n","import React, { FC } from 'react';\nimport { Image } from '~/components/image';\nimport cls from 'classnames';\n\nimport './style.scss';\n\ntype AvatarProps = React.DetailedHTMLProps, HTMLImageElement>;\n\nexport const Avatar: FC = (props) => {\n const { className } = props;\n\n return ;\n};\n","import { ReactNode, Children } from 'react';\n\ninterface DividerContainerProps {\n wrapperCls?: string;\n dividerCls?: string;\n children: ReactNode;\n}\n\n/**\n * 以组合的形式,在列表中插入间隔\n */\nexport default function DividerContainer(props: DividerContainerProps): JSX.Element {\n const { children, dividerCls, wrapperCls } = props;\n\n const content = Children.toArray(children)\n .filter(Boolean)\n .flatMap((child, index) => {\n if (index === 0) {\n return [child];\n }\n return [dividerCls &&
, child];\n });\n\n if (wrapperCls) {\n return
{content}
;\n } else {\n return <>{content};\n }\n}\n","import * as React from 'react';\nimport './style.scss';\nimport { FixBodyUtil } from '~/utils/fix-body';\n\nconst PREFIX = 'ui-mobile-drawer';\n\nexport interface DrawerProps {\n /** 方向,默认是'bottom-top' */\n direction?: string;\n /** 组件是否可见 */\n isOpen: boolean;\n /** 关闭回调 */\n onClose?: () => void;\n /** 面板的标题,若无title则不显示header区域,可以自定义组件 */\n title?: any;\n /** 内容 */\n children: any;\n /** 遮罩层是否可以点击关闭,默认true */\n maskClosable?: boolean;\n /** 容器类名 */\n className?: string;\n /** 是否显示遮罩层 */\n showMask?: boolean;\n}\n\nexport class Drawer extends React.Component {\n static defaultProps = {\n direction: 'bottom-top',\n onClose: () => {},\n showBack: true,\n title: '',\n maskClosable: true,\n className: '',\n showMask: true,\n };\n savedTop!: number;\n componentDidMount() {\n this.savedTop = window.scrollY;\n if (this.props.isOpen) {\n this.toggleBodyFixed(true);\n }\n }\n\n componentDidUpdate(prevProps: DrawerProps) {\n if (prevProps.isOpen !== this.props.isOpen) {\n this.toggleBodyFixed(this.props.isOpen);\n }\n }\n\n componentWillUnmount() {\n // fix: spa在drawer打开时进行路由跳转,不会触发消除body上的class\n if (this.props.isOpen) {\n this.toggleBodyFixed(false);\n }\n }\n\n toggleBodyFixed = (isOpen: boolean) => {\n if (isOpen) {\n this.savedTop = window.scrollY;\n }\n if (isOpen) {\n FixBodyUtil.partialFix();\n } else {\n FixBodyUtil.partialRestore();\n }\n };\n\n onClose = () => {\n const { onClose } = this.props;\n onClose!();\n this.toggleBodyFixed(false);\n };\n render() {\n const { title, children, direction, maskClosable, isOpen, className, showMask } = this.props;\n return (\n
\n {showMask &&
{}} />}\n
\n {title && (\n
\n

{title}

\n
\n )}\n
{children}
\n
\n
\n );\n }\n}\n","import { Link } from '@remix-run/react';\nimport { FC, useMemo } from 'react';\nimport { Image } from '~/components/image';\nimport { DivisibleStack } from '~/components/divisible-stack';\nimport { useNumFormatter } from '~/utils/format/num-formatter';\nimport { useTranslation } from 'react-i18next';\nimport { User } from 'shared/models/legacy';\nimport { useAtomValue } from 'jotai';\nimport { $Locale } from '@lemon8/web-app-shared/atom';\nimport { ClickPosition } from '~/utils/click-position';\nimport { usePageActive } from '~/utils/active/use-page-active';\nimport useReflowClick from '~/utils/use-reflow-click';\n\nimport './style.scss';\n\ninterface UserCardProps {\n user: User;\n}\n\nexport const UserCard: FC = ({ user }) => {\n const formatNum = useNumFormatter();\n const { region } = useAtomValue($Locale);\n const { t } = useTranslation();\n const active = usePageActive();\n\n const { description, fansCount, publishCount, nickName, avatar, linkName, userId } = user;\n\n const userHref = useMemo(() => `/${linkName}?region=${region}`, []);\n\n const handleUserClick = useReflowClick(\n {\n clickEvent: (_, bundle) => ({\n ...bundle,\n current_position: ClickPosition.related_user,\n page_click_id: userId,\n }),\n reflowBehavior: () => {\n active({\n schemaOption: {\n pageType: 'user',\n userId,\n },\n ampExtra: {\n enter_position: ClickPosition.related_user,\n },\n });\n },\n },\n [active, userId],\n );\n\n return (\n \n
\n \n {nickName}\n

{description}

\n
\n \n
\n {formatNum(Number(fansCount) || 0)}\n {t('fans_count_number')}\n
\n
\n {formatNum(publishCount) || 0}\n {t('wap_seo_post_cnt')}\n
\n
\n \n );\n};\n","import React, { Component, PropsWithChildren } from 'react';\nimport ViewObserver, { ObserverOptionsType, DEFAULT_OPTIONS } from './view-observer';\n\ninterface ViewtrackerProps extends PropsWithChildren<{ onView: (visible: boolean) => void }> {\n once?: boolean;\n options?: ObserverOptionsType;\n onView: (visible: boolean) => void;\n onHide?: (visible: boolean) => void;\n onChange?: (visible: boolean) => void;\n}\n\nexport class ViewTracker extends Component {\n observer: ViewObserver | null = null;\n\n wrapperRef: React.RefObject = React.createRef();\n\n /**\n * Create the event listener on mount\n */\n componentDidMount(): void {\n const { options = DEFAULT_OPTIONS } = this.props;\n this.observer = ViewObserver.get(options);\n\n if (this.wrapperRef.current) {\n // Observe the container and track all child nodes\n this.observer.observe(this.wrapperRef.current, this.trackEvent);\n }\n }\n\n unobserve() {\n if (typeof this.wrapperRef.current !== 'undefined' && this.observer) {\n // Remove the observation listener\n if (this.wrapperRef.current) {\n this.observer.unobserve(this.wrapperRef.current);\n }\n }\n\n this.observer = null;\n }\n\n /**\n * Remove the observe listener on unmount\n */\n componentWillUnmount() {\n this.unobserve();\n }\n\n /**\n * Send the tracking event callback\n * @param {Boolean} visible - the visibility state of the element\n */\n trackEvent = (visible: boolean) => {\n const { once = true, onChange = () => {}, onView, onHide = () => {} } = this.props;\n onChange(visible);\n\n if (visible) {\n onView(visible);\n\n // Unobserve the element after firing\n if (once) {\n this.unobserve();\n }\n } else {\n onHide(visible);\n }\n };\n\n render() {\n const { children } = this.props;\n // Use React.Children.only to indicate that there\n // should only be a single child component\n return
{React.Children.only(children)}
;\n }\n}\n","import { atom } from 'jotai';\nimport { $PageLevelTraffic, $UserDetailV2 } from 'shared/atoms';\nimport { EPageType, IUserDetail, IUserPageTraffic, UserDetailUtil } from 'shared/models';\nimport { pendingQueue } from 'shared/utils/pending-queue';\n\nexport const CurrentUserId = atom((get) => {\n const traffic = get($PageLevelTraffic);\n const { pageType } = traffic;\n\n if (![EPageType.user, EPageType.user_follow, EPageType.user_topic].includes(pageType)) {\n // eslint-disable-next-line @typescript-eslint/no-throw-literal\n throw new Promise((resolve) => pendingQueue.push(resolve));\n }\n\n const userTraffic = traffic as IUserPageTraffic;\n\n return userTraffic.userId || null;\n});\n\nexport const $CurrentUserLinkName = atom((get) => {\n const traffic = get($PageLevelTraffic);\n const { pageType } = traffic;\n\n if (![EPageType.user, EPageType.user_follow, EPageType.user_topic].includes(pageType)) {\n // eslint-disable-next-line @typescript-eslint/no-throw-literal\n throw new Promise((resolve) => pendingQueue.push(resolve));\n }\n\n const userTraffic = traffic as IUserPageTraffic;\n\n return userTraffic.userLinkName;\n});\n\nexport const $CurrentUser = atom((get) => {\n const currentUserLinkName = get($CurrentUserLinkName);\n return get($UserDetailV2(currentUserLinkName));\n});\n\nexport const $CurrentAvailableUserOrNull = atom(async (get) => {\n const user = await get($CurrentUser);\n return UserDetailUtil.isUserAvailable(user) ? user : null;\n});\n\nexport const $CurrentUserAsAvailable = atom(async (get) => {\n const user = await get($CurrentUser);\n return user as IUserDetail;\n});\n","const eventList = ['touchmove', 'wheel'] as const;\n\nconst BODY_FIXING_CLASS = 'lemon8-body-fixing';\n\nconst preventDefaultHandler = (event: Event): void => {\n event.preventDefault();\n};\n\nexport const FixBodyUtil = {\n lastScrollY: 0,\n /** will disable scrolling for all elements of the page */\n fix: () => {\n eventList.forEach((event) => {\n document.body.addEventListener(event, preventDefaultHandler, { passive: false });\n });\n },\n restore: () => {\n eventList.forEach((event) => {\n document.body.removeEventListener(event, preventDefaultHandler);\n });\n },\n /** only fix body */\n partialFix: () => {\n if (document.body.classList.contains(BODY_FIXING_CLASS)) {\n return;\n }\n FixBodyUtil.lastScrollY = window.scrollY;\n document.body.style.top = `-${FixBodyUtil.lastScrollY}px`;\n document.body.classList.add(BODY_FIXING_CLASS);\n },\n partialRestore: () => {\n if (!document.body.classList.contains(BODY_FIXING_CLASS)) {\n return;\n }\n document.body.style.top = '';\n document.body.classList.remove(BODY_FIXING_CLASS);\n window.scrollTo({ top: FixBodyUtil.lastScrollY });\n },\n};\n","import { useFetcher } from '@remix-run/react';\nimport { Atom, useStore, WritableAtom } from 'jotai';\nimport { useCallback, useEffect } from 'react';\n\ninterface AtomConfig {\n atoms?: Record>;\n atomFamilies?: Record WritableAtom>;\n}\n\ninterface IUseRouteLoaderResult {\n state: 'idle' | 'loading' | 'submitting';\n load: () => void;\n}\n\nconst getAtom = (atom: AtomConfig, key: string): Atom => {\n let res: Atom;\n if (key.includes('+')) {\n // for atom family\n const [atomKey, ...args] = key.split('+');\n const decodeArgs = args.map((a) => decodeURIComponent(a));\n const atomFamily = (atom.atomFamilies || {})[atomKey];\n\n if (!atomFamily) {\n console.error('atomFamily not found for key: %s', key);\n }\n\n res = atomFamily(...decodeArgs);\n } else {\n // for plain atom\n res = (atom.atoms || {})[key];\n }\n\n if (process.env.NODE_ENV === 'development' && !res) {\n throw new Error(`no such atom for key: ${key}`);\n }\n\n return res;\n};\n\nexport const useRouteLoader = (\n method: string,\n params: Record,\n atom: AtomConfig,\n): IUseRouteLoaderResult => {\n const store = useStore();\n const fetcher = useFetcher();\n\n const load = useCallback(() => {\n const searchParams = new URLSearchParams();\n searchParams.set('method', method);\n Object.entries(params).forEach(([key, value]) => {\n searchParams.set(key, String(value));\n });\n fetcher.load(`${location.pathname}?${searchParams.toString()}`);\n }, [method, params]);\n\n useEffect(() => {\n const { data } = fetcher;\n\n if (!data) {\n return;\n }\n\n Object.entries(data).forEach(([key, value]) => {\n if (!key.startsWith('$')) {\n return;\n }\n const atomToSet: any = getAtom(atom, key);\n store.set(atomToSet, value);\n });\n }, [fetcher.data]);\n\n return {\n state: fetcher.state,\n load,\n };\n};\n","export const PersonJSONLD: (props: {\n name: string;\n uniqueName: string;\n url: string;\n desc: string;\n likeCount: number;\n followCount: number;\n postCount: number;\n avatar: string;\n}) => JSX.Element = (props) => {\n const { name, uniqueName, url, desc, likeCount, followCount, postCount, avatar } = props;\n return (\n \n );\n};\n","import { useTranslation } from 'react-i18next';\nimport { WithContext, ProfilePage } from 'schema-dts';\n\nexport const ProfileJSONLD: (props: {\n name: string;\n desc: string;\n avatar: string;\n likeCount: number;\n followCount: number;\n favoriteCount: number;\n postCount: number;\n uniqueName: string;\n}) => JSX.Element = (props) => {\n const { name, desc, avatar, likeCount, followCount, favoriteCount, postCount, uniqueName } = props;\n\n const { t } = useTranslation();\n\n const description = t('user_helmet_description_1')\n .replace('%1$s', name || '')\n .replace('%2$s', desc || '');\n\n const jsonLD: WithContext = {\n '@context': 'https://schema.org',\n '@type': 'ProfilePage',\n mainEntity: {\n '@type': 'Person',\n name,\n alternateName: uniqueName,\n identifier: {\n '@type': 'PropertyValue',\n propertyID: 'Username',\n value: uniqueName,\n },\n interactionStatistic: [\n {\n '@type': 'InteractionCounter',\n interactionType: {\n '@type': 'LikeAction',\n },\n userInteractionCount: likeCount,\n },\n {\n '@type': 'InteractionCounter',\n interactionType: {\n '@type': 'FollowAction',\n },\n userInteractionCount: followCount,\n },\n {\n '@type': 'InteractionCounter',\n interactionType: {\n '@type': 'BookmarkAction',\n },\n userInteractionCount: favoriteCount,\n },\n {\n '@type': 'InteractionCounter',\n interactionType: {\n '@type': 'WriteAction',\n },\n userInteractionCount: postCount,\n },\n ],\n description,\n image: avatar,\n },\n };\n\n return ;\n};\n","import { useAtomValue } from 'jotai';\nimport { PersonJSONLD } from '~/utils/json-ld/person';\nimport { ProfileJSONLD } from '~/utils/json-ld/profile';\nimport { $Locale } from '@lemon8/web-app-shared/atom';\nimport { $CurrentAvailableUserOrNull } from '@user/shared/atoms/current-user';\nimport { FC } from 'react';\n\nexport const JsonLD: FC = () => {\n const user = useAtomValue($CurrentAvailableUserOrNull);\n const { region } = useAtomValue($Locale);\n\n if (!user) {\n return null;\n }\n\n return (\n <>\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 return t('user_helmet_description_1')\n .replace('%1$s', user.nickName || '')\n .replace('%2$s', user.description || '');\n};\n","import { useAtomValue } from 'jotai';\nimport { $Locale } from '@lemon8/web-app-shared/atom';\nimport { useUserDesc } from '../shared/use-user-desc';\nimport { $CurrentAvailableUserOrNull } from '@user/shared/atoms/current-user';\nimport { FC } from 'react';\n\nexport const OG: FC = () => {\n const user = useAtomValue($CurrentAvailableUserOrNull);\n const description = useUserDesc();\n\n if (!user) {\n return null;\n }\n\n const { avatar, nickName, linkName } = user;\n const { region } = useAtomValue($Locale);\n const ogUrl = `/${linkName}?region=${region}`;\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 { FC, Suspense } 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\nconst UserBaseHead: FC = () => {\n const user = useAtomValue($CurrentAvailableUserOrNull);\n const { t } = useTranslation();\n const { canonicalUrl } = useAtomValue($PageLevelTraffic);\n const description = useUserDesc();\n\n if (!user) {\n return null;\n }\n\n const noIndex = user.privacyStatus >= EPrivacyStatus.PrivateUser;\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 const fb_appid = 426786581540674;\n\n return (\n <>\n {title}\n \n \n {noIndex && }\n \n \n \n );\n};\n\nexport const UserHead: FC = () => {\n return (\n \n \n \n \n \n \n );\n};\n","import { atom } from 'jotai';\nimport { $UserPost } from 'shared/atoms';\nimport { $CurrentUserLinkName } from '@user/shared/atoms/current-user';\n\nexport const $CurrentUserPosts = atom((get) => {\n const currentUserLinkName = get($CurrentUserLinkName);\n return get($UserPost(currentUserLinkName));\n});\n","import { FC } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport cls from 'classnames';\nimport './style.scss';\n\ninterface IPrivacyUserContent {\n className?: string;\n}\n\nconst UserPrivacyContent: FC = (props) => {\n const { className } = props;\n\n const { t } = useTranslation();\n\n return (\n
\n
\n
\n
{t('privateAccount_profile_header')}
\n
{t('privateAccount_profile_body')}
\n
\n
\n );\n};\n\nexport default UserPrivacyContent;\n","import { useCallback } from 'react';\nimport { useAtomValue } from 'jotai';\nimport { Article } from 'shared/models/legacy';\nimport { ArticleCard } from '~/components/article-card';\nimport { SeeMore } from '~/components/see-more';\nimport { DivisibleStack } from '~/components/divisible-stack';\nimport { ModuleType } from '~/utils/module-type';\nimport { ScopedProvider } from '@lemon8/web-app-shared/ssr';\nimport { $CurrentPageModule } from '~/models/current-page-module';\nimport { $CurrentUserPosts } from '@user/shared/atoms/current-user-posts';\nimport { useViewTracking } from '~/utils/use-view-tracking';\nimport { $CurrentAvailableUserOrNull, CurrentUserId } from '@user/shared/atoms/current-user';\nimport { EPrivacyStatus } from 'shared/models';\nimport UserPrivacyContent from '@user/body/post/privacy';\nimport { useRouteLoader } from '~/utils/use-route-loader';\nimport { $UserPostLoadmore } from 'shared/atoms/user/user-posts-loadmore';\nimport { $CurrentPositionPrefix } from '~/models/current-position-prefix';\nimport { ClickPositionPrefix } from '~/utils/click-position';\n\nimport './style.scss';\n\nexport default function UserPostSection(): JSX.Element | null {\n const userId = useAtomValue(CurrentUserId);\n const user = useAtomValue($CurrentAvailableUserOrNull);\n const { items, hasMore, maxBeHotTime } = useAtomValue($CurrentUserPosts);\n\n const loader = useRouteLoader(\n 'user-post-loadmore',\n {\n user_id: userId || '',\n max_behot_time: `${maxBeHotTime}`,\n count: 20,\n },\n {\n atomFamilies: {\n $UserPostLoadmore,\n },\n },\n );\n\n const observedRef = useViewTracking({\n onView: useCallback(() => {\n window.Tea('wap_module_show', {\n current_page_module: ModuleType.related_article,\n });\n }, []),\n });\n\n const handleSeeMore = () => loader.load();\n\n if (user && user.privacyStatus === EPrivacyStatus.PrivateUser) {\n return ;\n }\n\n if (!items.length) {\n return null;\n }\n\n return (\n
\n \n \n {items.map((article: Article, rank: number) => (\n \n ))}\n \n {hasMore && }\n \n
\n );\n}\n","import { useCallback } from 'react';\nimport { CampaignCarousel } from '~/components/campaign-carousel';\nimport { ViewTracker } from '~/components/view-tracker';\nimport { ClickPosition } from '~/utils/click-position';\nimport { ModuleType } from '~/utils/module-type';\n\nimport './style.scss';\n\nexport default function UserCampaignSection(): JSX.Element {\n const sendTrackingEvent = useCallback(() => {\n window.Tea('wap_cta_show', {\n current_page_module: ModuleType.activity_banner,\n current_position: ClickPosition.activity_banner,\n });\n }, []);\n\n return (\n \n
\n \n
\n
\n );\n}\n","var _path, _path2;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgLinkFill(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.873 4.127a5.13 5.13 0 010 7.254l-2.26 2.259.033-.345c.06-.654.02-1.316-.122-1.96l-.015-.067 1.125-1.126a3.378 3.378 0 10-4.776-4.776l-3.539 3.538a3.378 3.378 0 001.793 5.713l.236.042-1.438 1.439-.076-.03a5.113 5.113 0 01-1.753-1.149 5.113 5.113 0 01-1.502-3.575v-.052A5.119 5.119 0 019.08 7.666l3.538-3.539a5.129 5.129 0 017.254 0z\",\n fill: \"currentColor\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16.421 12.656a5.12 5.12 0 01-1.502 3.678l-3.538 3.539a5.13 5.13 0 01-7.254-7.254l2.26-2.259-.033.345c-.06.654-.02 1.316.122 1.96l.015.067-1.125 1.126a3.378 3.378 0 004.776 4.776l3.539-3.538a3.378 3.378 0 00-1.793-5.713l-.236-.043 1.438-1.438.076.03c.639.25 1.237.633 1.753 1.149a5.113 5.113 0 011.502 3.575z\",\n fill: \"currentColor\"\n })));\n}\nexport default SvgLinkFill;","var _path, _path2, _path3;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgLogoInstagram(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M12 6.865a5.135 5.135 0 100 10.27 5.135 5.135 0 000-10.27zm0 8.47a3.334 3.334 0 110-6.669 3.334 3.334 0 010 6.668z\",\n fill: \"currentColor\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.538 6.662a1.2 1.2 0 11-2.4 0 1.2 1.2 0 012.4 0z\",\n fill: \"currentColor\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M21.94 7.877c-.049-1.064-.218-1.792-.465-2.427a4.91 4.91 0 00-1.153-1.77 4.91 4.91 0 00-1.772-1.155c-.635-.247-1.363-.416-2.428-.465C15.058 2.012 14.716 2 12 2s-3.057.012-4.123.06c-1.067.05-1.792.218-2.427.465a4.91 4.91 0 00-1.772 1.153A4.91 4.91 0 002.525 5.45c-.247.635-.416 1.363-.465 2.428C2.012 8.942 2 9.284 2 12s.012 3.056.06 4.123c.05 1.067.218 1.792.465 2.427a4.91 4.91 0 001.153 1.77c.5.51 1.105.904 1.772 1.155.635.247 1.363.416 2.428.465 1.064.048 1.407.06 4.123.06s3.056-.012 4.123-.06c1.067-.05 1.79-.218 2.426-.465a5.113 5.113 0 002.925-2.925c.247-.635.416-1.363.465-2.428.048-1.064.06-1.407.06-4.123s-.012-3.056-.06-4.122zm-1.8 8.164c-.045.975-.207 1.504-.344 1.857a3.315 3.315 0 01-1.898 1.898c-.353.137-.882.3-1.857.344-1.054.048-1.37.058-4.041.058-2.67 0-2.987-.01-4.041-.058-.975-.045-1.504-.207-1.857-.344a3.096 3.096 0 01-1.151-.748 3.096 3.096 0 01-.748-1.152c-.137-.352-.3-.882-.344-1.857C3.81 14.985 3.8 14.67 3.8 12s.01-2.987.059-4.042c.044-.974.207-1.504.344-1.856.16-.435.416-.829.748-1.152a3.096 3.096 0 011.151-.748c.353-.137.882-.3 1.857-.344 1.055-.048 1.37-.058 4.041-.058 2.67 0 2.986.01 4.041.058.975.044 1.504.207 1.857.344.435.16.828.416 1.151.748.332.323.588.717.748 1.152.137.352.3.882.345 1.856.047 1.055.058 1.371.058 4.041 0 2.67-.012 2.988-.06 4.043z\",\n fill: \"currentColor\"\n })));\n}\nexport default SvgLogoInstagram;","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgLogoYoutube(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.5 8.125a2.476 2.476 0 00-1.75-1.75C18.25 6 11.875 6 11.875 6S5.625 6 4 6.375c-.875.25-1.5.875-1.75 1.75C2 9.75 2 13 2 13s0 3.25.375 4.875c.25.875.875 1.5 1.75 1.75C5.625 20 12 20 12 20s6.25 0 7.875-.375c.875-.25 1.5-.875 1.75-1.75C22 16.25 22 13 22 13s0-3.25-.5-4.875zM10 16v-6l5.25 3L10 16z\",\n fill: \"currentColor\"\n })));\n}\nexport default SvgLogoYoutube;","import { useMemo, useState } from 'react';\nimport cs from 'classnames';\nimport { useAtomValue } from 'jotai';\nimport { Drawer } from '../drawer';\nimport { useTranslation } from 'react-i18next';\nimport Link from 'icon/link_fill.svg';\nimport ArrowTriangleDownFill from 'icon/arrow_triangle_down_fill.svg';\nimport InsIcon from 'icon/logo_instagram.svg';\nimport TwitterIcon from 'icon/logo_twitter.svg';\nimport YoutubeIcon from 'icon/logo_youtube.svg';\nimport { $UserAgent } from '@lemon8/web-app-shared/atom';\nimport { IUserDetail } from 'shared/models';\n\nimport './user-link.scss';\n\ninterface UserLinksProps {\n user: IUserDetail;\n}\n\n// link order\n// const linkType = ['ins', 'twitter', 'youtube', 'personal'];\n\nexport function UserLinks(props: UserLinksProps): JSX.Element {\n const { user } = props;\n const { thirdLinks } = user;\n const isMultipleLink = thirdLinks.length > 1;\n\n const { isMobile } = useAtomValue($UserAgent);\n const isPC = !isMobile;\n\n const { t } = useTranslation();\n\n const [pressIndex, setPressIndex] = useState(-1);\n const [showActionsheet, setShowActionsheet] = useState(false);\n\n const actionSheetItemTouchStart = (index: number) => {\n setPressIndex(index);\n };\n const actionSheetItemTouchEnd = (_: number) => {\n setPressIndex(-1);\n };\n\n const closeLinkModal = () => {\n setShowActionsheet(false);\n };\n\n const handleLinkClick = () => {\n if (isMultipleLink) {\n setShowActionsheet(true);\n } else {\n location.href = thirdLinks[0].url;\n }\n };\n\n const Icon = useMemo(() => {\n const platform = thirdLinks[0].platform;\n if (platform === 'personal') {\n return Link;\n } else if (platform === 'ins') {\n return InsIcon;\n } else if (platform === 'twitter') {\n return TwitterIcon;\n } else {\n return YoutubeIcon;\n }\n }, [thirdLinks]);\n\n if (thirdLinks.length > 0) {\n return (\n
\n
\n \n

{thirdLinks[0].name}

\n {isMultipleLink && }\n
\n \n {\n
\n
\n
\n {thirdLinks.map((item, index) => {\n return (\n {\n window.open(item.url, '_blank');\n }}\n onTouchStart={() => {\n actionSheetItemTouchStart(index);\n }}\n onTouchEnd={() => {\n actionSheetItemTouchEnd(index);\n }}\n >\n {pressIndex === index &&
}\n {item.platform === 'personal' ? (\n \n ) : (\n
\n )}\n

{item.name}

\n
\n );\n })}\n
\n
\n {t('cancel_picture_view')}\n
\n
\n
\n }\n \n
\n );\n }\n\n return <>;\n}\n","import { useEffect, useRef, useState } from 'react';\nimport cls from 'classnames';\n\nimport './style.scss';\n\ninterface ISimpleToastProps {\n show: boolean;\n setShow: (value: boolean) => void;\n content: string;\n}\n\nexport default function SimpleToast(props: ISimpleToastProps): JSX.Element {\n const { show, setShow, content } = props;\n const [hydrated, setHydrated] = useState(false);\n\n useEffect(() => {\n setHydrated(true);\n }, []);\n\n const timer = useRef(0);\n useEffect(() => {\n if (!show) {\n return;\n }\n\n const newTimer = window.setTimeout(() => {\n setShow(false);\n }, 2150);\n timer.current = newTimer;\n\n return () => window.clearTimeout(newTimer);\n }, [show, setShow]);\n\n return (\n
\n

{content || ''}

\n
\n );\n}\n","import { Link, useLocation } from '@remix-run/react';\nimport { SyntheticEvent, useCallback, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useAtomValue } from 'jotai';\nimport DividerContainer from '~/components/divider-container';\nimport { useNumFormatter } from '~/utils/format/num-formatter';\nimport { ClickPosition } from '~/utils/click-position';\nimport { UserLinks } from './user-link';\nimport SimpleToast from '~/components/simple-toast';\nimport { $Locale } from '@lemon8/web-app-shared/atom';\nimport { usePageActive } from '~/utils/active/use-page-active';\nimport useReflowClick from '~/utils/use-reflow-click';\nimport { ViewTracker } from '../view-tracker';\nimport { ModuleType } from '~/utils/module-type';\nimport { Avatar } from '~/components/avatar';\nimport { EPrivacyStatus, EUserGender, IUserDetail } from 'shared/models';\nimport { $IsMobileUser } from '~/utils/is-mobile-user';\n\nimport './style.scss';\n\ninterface UserDescriptionProps {\n user: IUserDetail;\n}\n\nexport default function UserDescription(props: UserDescriptionProps): JSX.Element {\n const { user } = props;\n const { privacyStatus, userId, gender, ageGroup, location: locationValue } = user;\n const location = useLocation();\n const { t } = useTranslation();\n const active = usePageActive();\n const isRealUser = useAtomValue($IsMobileUser);\n\n const { region } = useAtomValue($Locale);\n\n const formatNumber = useNumFormatter();\n const [toast, setToast] = useState({ show: false, content: '' });\n\n const followingHref = `${location.pathname}/follow?tabkey=following®ion=${region}`;\n const followerHref = `${location.pathname}/follow?tabkey=follower®ion=${region}`;\n\n const activeAction = (enterPosition: ClickPosition): void => {\n active({\n schemaOption: {\n pageType: 'user',\n userId,\n },\n ampExtra: {\n enter_position: enterPosition,\n },\n });\n };\n\n const onClickFollowingInner = useReflowClick(\n {\n clickEvent: (_, bundle) => ({\n ...bundle,\n current_position: ClickPosition.user_following,\n page_click_id: userId,\n }),\n reflowBehavior: () => {\n activeAction(ClickPosition.user_following);\n },\n },\n [active, userId],\n );\n\n const onClickFollowing = useCallback(\n (e: SyntheticEvent) => {\n if (privacyStatus === EPrivacyStatus.PrivateUser) {\n e.preventDefault();\n setToast({\n show: true,\n content: t('privateAccount_profile_toast'),\n });\n return;\n }\n\n onClickFollowingInner(e);\n },\n [privacyStatus, onClickFollowingInner],\n );\n\n const onClickFollowerInner = useReflowClick(\n {\n clickEvent: (_, bundle) => ({\n ...bundle,\n current_position: ClickPosition.user_fans,\n page_click_id: userId,\n }),\n reflowBehavior: () => {\n activeAction(ClickPosition.user_fans);\n },\n },\n [active, userId],\n );\n\n const onClickFollower = useCallback(\n (e: SyntheticEvent) => {\n if (privacyStatus === EPrivacyStatus.PrivateUser) {\n e.preventDefault();\n setToast({\n show: true,\n content: t('privateAccount_profile_toast'),\n });\n return;\n }\n\n onClickFollowerInner(e);\n },\n [privacyStatus, onClickFollowerInner],\n );\n\n const genderValue = useMemo(() => {\n if (gender === EUserGender.Unknown) {\n return false;\n }\n\n return false;\n\n // TODO no such text\n return gender === EUserGender.MALE ? t('tag_male') : t('tag_female');\n }, [gender]);\n\n const ageValue = useMemo(() => {\n const AgeGroup = [\n { label: t('age_20_less'), value: 10 },\n { label: t('age_20'), value: 20 },\n { label: t('age_30'), value: 30 },\n { label: t('age_40'), value: 40 },\n { label: t('age_50'), value: 50 },\n { label: t('age_60_more'), value: 60 },\n ];\n return AgeGroup.filter((item) => item.value === ageGroup)[0]?.label;\n }, [ageGroup]);\n\n const showLink = useMemo(() => {\n const { thirdLinks } = user;\n return Boolean(thirdLinks.length);\n }, [user]);\n\n const sendTrackingEvent = (position: ClickPosition): void => {\n if (isRealUser) {\n window.Tea('wap_cta_show', {\n current_page_module: ModuleType.user_homepage_info,\n current_position: position,\n });\n }\n };\n\n return (\n
\n
\n \n \n sendTrackingEvent(ClickPosition.user_following)}\n >\n \n {formatNumber(user.followingCount)}\n {t('follow_count_number')}\n \n \n sendTrackingEvent(ClickPosition.user_fans)}>\n \n {formatNumber(user.followerCount)}\n {t('fans_count_number')}\n \n \n
\n {formatNumber(user.dugCount + user.favoredCount)}\n {t('profile_likes_favors_count')}\n
\n
\n
\n
\n

{user.nickName}

\n \n {genderValue && {genderValue}}\n {ageValue && {ageValue}}\n {locationValue && {locationValue}}\n {showLink && }\n \n {user.description &&

{user.description}

}\n
\n setToast({ show, content: '' })} content={toast.content} />\n
\n );\n}\n","import { useAtomValue } from 'jotai';\nimport UserDescription from '~/components/user-description';\nimport { $CurrentAvailableUserOrNull } from '@user/shared/atoms/current-user';\nimport { NotFound } from '~/components/not-found';\n\nexport default function UserDescriptionSection(): JSX.Element {\n const user = useAtomValue($CurrentAvailableUserOrNull);\n\n if (!user) {\n return (\n
\n \n
\n );\n }\n\n return (\n
\n \n
\n );\n}\n","import { atom } from 'jotai';\nimport { $UserRelatedUser } from 'shared/atoms';\nimport { $CurrentUserLinkName } from '@user/shared/atoms/current-user';\n\nexport const $CurrentUserRelatedUser = atom((get) => {\n const currentUserLinkName = get($CurrentUserLinkName);\n return get($UserRelatedUser(currentUserLinkName));\n});\n","import { useAtomValue } from 'jotai';\nimport { useCallback } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport SectionTitle from '~/components/section-title';\nimport { StepScroll } from '~/components/step-scroll';\nimport { UserCard } from '~/components/user-card';\nimport { ModuleType } from '~/utils/module-type';\nimport { User } from 'shared/models/legacy';\nimport { useViewTracking } from '~/utils/use-view-tracking';\nimport { $CurrentUserRelatedUser } from '@user/shared/atoms/current-user-related-user';\n\nexport default function UserRelatedSection(): JSX.Element | null {\n const { t } = useTranslation();\n const users = useAtomValue($CurrentUserRelatedUser);\n\n const observedRef = useViewTracking({\n onView: useCallback(() => {\n window.Tea('wap_module_show', {\n current_page_module: ModuleType.related_user,\n });\n }, []),\n });\n\n if (!users.length) {\n return null;\n }\n\n return (\n
\n \n \n {users.map((user: User) => (\n \n ))}\n \n
\n );\n}\n","import { FC, Suspense } from 'react';\nimport UserPostSection from './post';\nimport UserCampaignSection from './campaign';\nimport UserDescriptionSection from './description';\nimport { UserBodySkeleton } from '~/skeleton/user';\nimport UserRelatedSection from './related-user';\n\nexport const UserBody: FC = () => {\n return (\n <>\n \n }>\n \n \n \n \n \n );\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 { UserHead } from \"./head\";\nimport { UserBody } from \"./body\";\nimport { buildMasterLoader } from \"~/utils/build-master-loader\";\nvar links = () => [...cssLinks(\"routes/$user_link_name\")];\nvar loader = buildMasterLoader(\"user\");\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 UserPage = class extends RemixPage {\n constructor() {\n super(...arguments);\n this.Head = UserHead;\n this.Body = UserBody;\n }\n};\nexport { UserPage as default, links, shouldRevalidate };"],"sourceRoot":""}