{"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/heart.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/play_fill.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/divisible-stack/index.tsx","webpack://@lemon8/web-seo/./client/components/load-more/util.ts","webpack://@lemon8/web-seo/./client/components/load-more/index.tsx","webpack://@lemon8/web-seo/./client/components/not-found/index.tsx","webpack://@lemon8/web-seo/./client/models/current-page-module.ts","webpack://@lemon8/web-seo/./client/models/current-position-prefix.ts","webpack://@lemon8/web-seo/./client/models/feed.ts","webpack://@lemon8/web-seo/./client/utils/format/num-formatter.ts","webpack://@lemon8/web-seo/./client/utils/json-ld/util.ts","webpack://@lemon8/web-seo/./client/utils/json-ld/breadcrumb.tsx","webpack://@lemon8/web-seo/./client/utils/remix-page.tsx","webpack://@lemon8/web-seo/./client/utils/use-route-loader.ts","webpack://@lemon8/web-seo/../common/temp/split__lemon8_web_seo/node_modules/.pnpm/core-js@3.23.5/node_modules/core-js/internals/new-promise-capability.js","webpack://@lemon8/web-seo/../common/temp/split__lemon8_web_seo/node_modules/.pnpm/core-js@3.23.5/node_modules/core-js/internals/promise-native-constructor.js","webpack://@lemon8/web-seo/../common/temp/split__lemon8_web_seo/node_modules/.pnpm/core-js@3.23.5/node_modules/core-js/internals/promise-resolve.js","webpack://@lemon8/web-seo/../common/temp/split__lemon8_web_seo/node_modules/.pnpm/core-js@3.23.5/node_modules/core-js/modules/es.array.flat-map.js","webpack://@lemon8/web-seo/../common/temp/split__lemon8_web_seo/node_modules/.pnpm/core-js@3.23.5/node_modules/core-js/modules/es.array.unscopables.flat-map.js","webpack://@lemon8/web-seo/../common/temp/split__lemon8_web_seo/node_modules/.pnpm/core-js@3.23.5/node_modules/core-js/modules/es.promise.finally.js","webpack://@lemon8/web-seo/./client/routes/feed.$category_name/body/stream/index.tsx","webpack://@lemon8/web-seo/./client/routes/feed.$category_name/body/index.tsx","webpack://@lemon8/web-seo/./client/utils/json-ld/item-list.tsx","webpack://@lemon8/web-seo/./client/routes/feed.$category_name/head/json-ld.tsx","webpack://@lemon8/web-seo/./client/routes/feed.$category_name/shared/use-feed-tdk.ts","webpack://@lemon8/web-seo/./client/routes/feed.$category_name/head/index.tsx","webpack://@lemon8/web-seo/./client/routes/feed.$category_name/__remix_browser_route__route.tsx"],"names":["_path","_extends","target","i","source","key","SvgHeart","props","SvgPlayFill","$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","content","Children","filter","Boolean","flatMap","child","Fragment","UI","scrollY","pageYOffset","document","body","scrollTop","documentElement","offset","el","type","getBoundingClientRect","left","top","width","height","pageXOffset","PREFIX","render","loadData","initList","showEnd","loadingText","endText","placeholder","isEnd","alwaysShowLoading","distanceToLoad","isLoading","setIsLoading","useState","dataList","setDataList","listRef","useRef","timerRef","listDom","doLoadMore","then","res","data","list","finally","scrollLoadMore","current","clearTimeout","setTimeout","innerHeight","useEffect","addEventListener","passive","capture","renderBottomText","renderPlaceholder","ENotFoundType","NotFound","hint","$CategoryData","categoryName","category","ECategoryNameIDMap","useCategoryData","category_name","useParams","NUM_INTERVAL_MAP","w","Region","k","_config","arguments","undefined","val","config","decimal","units","needDiv","toFixed","unitDigit","toString","oneDecimal","Number","String","upperLimit","upperText","s","tmpl","formatNumByRegion","includes","parseUrlBySlash","u","URL","subPath","pathname","protocol","host","p","endsWith","push","hash","splitUrlBySlashOrHash","BreadcrumbJSONLD","path","nameList","urlList","splicedUrl","crumbList","position","item","name","__html","JSON","stringify","itemListElement","RemixPage","Component","constructor","Head","Body","HeadContent","state","useNavigation","canonicalUrl","$PageLevelTraffic","useLocation","routeLoading","a","location","BodyContent","RootSkeleton","Content","for","contextFor","useOutletContext","page","Error","getAtom","atomKey","args","decodeArgs","decodeURIComponent","atomFamily","atomFamilies","console","error","atoms","useRouteLoader","method","params","store","useStore","fetcher","useFetcher","load","searchParams","URLSearchParams","set","Object","entries","forEach","_ref","value","_ref2","startsWith","atomToSet","aCallable","PromiseCapability","C","resolve","reject","$$resolve","$$reject","module","global","anObject","isObject","newPromiseCapability","x","promiseCapability","$","flattenIntoArray","toObject","lengthOfArrayLike","arraySpeciesCreate","callbackfn","O","sourceLen","A","addToUnscopables","IS_PURE","NativePromiseConstructor","fails","getBuiltIn","isCallable","speciesConstructor","promiseResolve","defineBuiltIn","NativePromisePrototype","NON_GENERIC","onFinally","isFunction","ARTICLE_TYPE","FeedStreamSection","stream","$FeedData","hasMore","items","maxBeHotTime","minBeHotTime","articles","toLowerCase","loader","max_behot_time","min_behot_time","$FeedDateLoadmore","Promise","LoadMore","Loading","variant","fitParent","ScopedProvider","atomsWithHydration","ModuleType","ClickPositionPrefix","FeedBody","ItemListJSONLD","isCollectionPage","mainUrl","itemList","baseItemListJSONLD","itemListJSONLD","mainEntityOfPage","numberOfItems","JsonLD","enterHref","$RootTraffic","feedUrlList","$CategoryList","useFeedTdk","description","keywords","FeedHead","property","rel","href","Outlet","context","links","shouldRevalidate","nextUrl","defaultShouldRevalidate","FeedPage"],"mappings":"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","file":"routes/feed.$category_name-eac7c7ac2adb52707802.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 SvgHeart(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: \"M11.998 21.598c-.23 0-.459-.06-.658-.18-3.161-1.83-8.576-5.7-9.264-11.1-.289-2.3.25-4.33 1.516-5.7 1.047-1.13 2.493-1.69 4.078-1.61 1.765.1 3.24.93 4.268 2.4.02.03.04.05.06.08.02-.03.04-.05.06-.08 1.027-1.47 2.502-2.3 4.267-2.4 1.576-.08 3.032.48 4.079 1.61 1.276 1.37 1.814 3.39 1.515 5.7-.688 5.41-6.102 9.28-9.273 11.11-.21.12-.419.17-.648.17zM7.35 4.497c-1.037 0-1.984.4-2.672 1.14-.967 1.04-1.366 2.63-1.127 4.48.618 4.88 6.033 8.54 8.436 9.94 2.403-1.4 7.827-5.07 8.446-9.94.239-1.85-.16-3.45-1.127-4.48-.738-.79-1.775-1.2-2.902-1.13-1.306.07-2.363.67-3.13 1.77a4.4 4.4 0 00-.56 1.19.746.746 0 01-1.445 0s-.17-.64-.559-1.19c-.767-1.1-1.824-1.69-3.13-1.77h-.24l.01-.01z\",\n fill: \"currentColor\"\n })));\n}\nexport default SvgHeart;","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 SvgPlayFill(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: \"M7.185 20c.385 0 .701-.138 1.106-.365l10.934-6.331c.79-.455 1.076-.78 1.076-1.304s-.286-.85-1.076-1.304L8.29 4.366C7.886 4.137 7.571 4 7.185 4 6.475 4 6 4.543 6 5.393v13.214C6 19.457 6.474 20 7.185 20z\",\n fill: \"currentColor\"\n })));\n}\nexport default SvgPlayFill;","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 { ReactNode, Children, ReactFragment, ReactElement } from 'react';\n\ninterface DivisibleStackProps {\n wrapper?: string;\n divider?: string;\n children: ReactNode;\n}\n\nexport const DivisibleStack = (props: DivisibleStackProps) => {\n const { children, divider, wrapper } = props;\n\n let content: ReturnType<(typeof Children)['toArray']> | ReactNode;\n\n if (divider) {\n content = Children.toArray(children)\n .filter(Boolean)\n .flatMap((child, index) => {\n if (index === 0) {\n return [child];\n }\n return [divider &&
, child];\n });\n } else {\n content = children;\n }\n\n if (wrapper) {\n return
{content}
;\n } else {\n return <>{content};\n }\n};\n","const UI = {\n scrollY() {\n const theScrollY =\n window.scrollY ||\n window.pageYOffset ||\n document.body.scrollTop ||\n // @ts-ignore\n document.documentElement.scrollTop;\n return theScrollY;\n },\n\n offset(el: any, type?: string) {\n if (!el || typeof el.getBoundingClientRect !== 'function') {\n return 0;\n }\n\n const { left, top, width, height } = el.getBoundingClientRect();\n\n switch (type) {\n case 'top':\n return top + window.pageYOffset;\n\n case 'left':\n return left + window.pageXOffset;\n\n case 'height':\n return height;\n\n case 'width':\n return width;\n\n default:\n return {\n height,\n width,\n top: top + window.pageYOffset,\n left: left + window.pageXOffset,\n };\n }\n },\n};\n\nexport default UI;\nexport const { scrollY, offset } = UI;\n","import { FC, useState, useEffect, useCallback, useRef } from 'react';\nimport UI from './util';\n\nimport './style.scss';\n\nconst PREFIX = 'ui-mobile-load-more';\n\ninterface IProps {\n /** 加载数据函数,返回Promise */\n loadData: () => Promise<{\n data: any[];\n }>;\n /** 渲染数据列表函数,参数为数据列表 */\n render: (param: any[]) => any;\n /** 当前列表是否已经结束 */\n isEnd?: boolean;\n /** 占位符 */\n placeholder?: any;\n /** 结束时是否展示结束文案 */\n showEnd?: boolean;\n /** 初始列表 */\n initList?: any[];\n /** 容器类名 */\n className?: string;\n /** 结束文案,或者可以自定义dom结构 */\n endText?: any;\n /** 加载文案, 或者可以自定义dom结构 */\n loadingText?: any;\n /** 在未结束的情况下是否一直显示loading样式 */\n alwaysShowLoading?: boolean;\n /** 距离底部开始加载的距离 */\n distanceToLoad?: number;\n}\n\nconst LoadMore: FC = (props) => {\n const {\n render,\n loadData,\n className = '',\n initList = [],\n showEnd = true,\n loadingText = 'loading',\n endText = 'No More Results',\n placeholder = null,\n isEnd = false,\n alwaysShowLoading = false,\n distanceToLoad = 0,\n } = props;\n\n const [isLoading, setIsLoading] = useState(false);\n const [dataList, setDataList] = useState(initList);\n\n const listRef = useRef(null);\n const timerRef = useRef(null);\n\n const listDom = render(dataList);\n\n const doLoadMore = useCallback(() => {\n setIsLoading(true);\n loadData()\n .then((res: { data: any[] }) => {\n const { data } = res;\n setDataList((list) => [...list, ...data]);\n })\n .finally(() => {\n setIsLoading(false);\n });\n }, [loadData]);\n\n const scrollLoadMore = useCallback(() => {\n if (timerRef.current) {\n clearTimeout(timerRef.current);\n }\n\n if (isEnd) {\n return;\n }\n\n const { height, top } = UI.offset(listRef.current);\n\n timerRef.current = setTimeout(() => {\n if (!isLoading && height + top <= window.innerHeight + UI.scrollY() + (distanceToLoad || 0)) {\n doLoadMore();\n }\n }, 200);\n }, [isLoading, isEnd, doLoadMore]);\n\n useEffect(() => {\n document.addEventListener('touchmove', scrollLoadMore);\n document.addEventListener('scroll', scrollLoadMore, { passive: false, capture: true });\n\n return () => {\n document.addEventListener('touchmove', scrollLoadMore);\n document.addEventListener('scroll', scrollLoadMore, { passive: false, capture: true });\n };\n }, [scrollLoadMore]);\n\n const renderBottomText = (): JSX.Element | null => {\n if (isLoading || (!isEnd && alwaysShowLoading)) {\n return
{loadingText}
;\n }\n if (isEnd && showEnd) {\n return
{endText}
;\n }\n return null;\n };\n\n const renderPlaceholder = (): JSX.Element | null => {\n if (isLoading || dataList.length > 0 || (!isEnd && alwaysShowLoading)) {\n return null;\n }\n return placeholder;\n };\n\n return (\n
\n
\n {listDom}\n
\n
{renderBottomText()}
\n
{renderPlaceholder()}
\n
\n );\n};\n\nexport default LoadMore;\n","import { useTranslation } from 'react-i18next';\nimport { FC, useMemo } from 'react';\n\nimport './style.scss';\n\nexport enum ENotFoundType {\n NOT_FOUND,\n PRIVACY_ACCOUNT,\n}\n\ninterface INotFoundProps {\n /**\n * @default ENotFoundType.NOT_FOUND\n */\n type?: ENotFoundType;\n}\n\nexport const NotFound: FC = (props) => {\n const { t } = useTranslation();\n const { type = ENotFoundType.NOT_FOUND } = props;\n\n const hint = useMemo(() => {\n switch (type) {\n case ENotFoundType.PRIVACY_ACCOUNT:\n return t('privateAccount_web_description');\n case ENotFoundType.NOT_FOUND:\n default:\n return t('article_not_found');\n }\n }, [type]);\n\n return (\n
\n
\n
{hint}
\n
\n );\n};\n","import { atom } from 'jotai';\nimport { ModuleType } from '~/utils/module-type';\n\nexport const $CurrentPageModule = atom('' as ModuleType);\n","import { atom } from 'jotai';\nimport { ClickPositionPrefix } from '~/utils/click-position';\n\nexport const $CurrentPositionPrefix = atom('' as ClickPositionPrefix);\n","import { atom } from 'jotai';\nimport { useParams } from '@remix-run/react';\nimport { ECategoryNameIDMap } from 'shared/models/legacy';\nimport { CategoryData } from 'shared/models/feed';\n\nexport const $CategoryData = atom({\n categoryName: 'foryou',\n category: ECategoryNameIDMap.foryou,\n});\n\nexport const useCategoryData = (): CategoryData => {\n const { category_name } = useParams();\n const categoryName = category_name as string;\n const category = ECategoryNameIDMap[categoryName];\n\n return {\n categoryName,\n category,\n };\n};\n","import { i18n } from 'i18next';\nimport { useTranslation } from 'react-i18next';\nimport { useCallback } from 'react';\nimport { useAtomValue } from 'jotai';\nimport { $Locale } from '@lemon8/web-app-shared/atom';\nimport { Region } from '@lemon8/web-app-shared/i18n';\n\nconst NUM_INTERVAL_MAP = {\n w: [Region.jp],\n k: [Region.id, Region.my, Region.ph, Region.sg, Region.th, Region.vn, Region.gb, Region.us],\n};\n\nexport function formatNum(num: number, _config: any = {}): string {\n let val = `${num}`;\n const config = {\n decimal: 1,\n units: ['万', '億'],\n needDiv: true,\n ..._config,\n };\n const { decimal } = config;\n\n if (config.type === 'KMB') {\n if (num >= 1e10) {\n val = `${(num / 1e9).toFixed(0)}B`;\n } else if (num >= 1e9) {\n val = `${(num / 1e9).toFixed(decimal).replace(/\\.0*$/, '')}B`;\n } else if (num >= 1e7) {\n val = `${(num / 1e6).toFixed(0)}M`;\n } else if (num >= 1e6) {\n val = `${(num / 1e6).toFixed(decimal).replace(/\\.0*$/, '')}M`;\n } else if (num >= 1e4) {\n val = `${(num / 1e3).toFixed(0)}K`;\n } else if (num >= 1e3) {\n val = `${(num / 1e3).toFixed(decimal).replace(/\\.0*$/, '')}K`;\n } else {\n val = `${num}`;\n }\n } else if (config.type === 'KM') {\n if (num >= 10e6) {\n const unitDigit = (num / 1e6).toString().split('.')[0];\n const oneDecimal = ((num - Number(unitDigit) * 1e6) / 1e5).toString().split('.')[0];\n if (Number(oneDecimal) >= 1) {\n val = `${String(unitDigit)}.${String(oneDecimal)}${config.units[0] as string}`;\n } else {\n val = `${String(unitDigit)}${config.units[1] as string}`;\n }\n } else if (num >= 1e4) {\n const unitDigit = (num / 1e3).toString().split('.')[0];\n const oneDecimal = ((num - Number(unitDigit) * 1e3) / 1e2).toString().split('.')[0];\n if (Number(oneDecimal) >= 1) {\n val = `${String(unitDigit)}.${String(oneDecimal)}${config.units[0] as string}`;\n } else {\n val = `${String(unitDigit)}${config.units[0] as string}`;\n }\n } else {\n val = `${num}`;\n }\n } else if (config.type === 'WY') {\n if (num >= 1e10) {\n val = ~~(num / 1e8) + config.units[1];\n } else if (num >= 1e8) {\n val = (num / 1e8).toFixed(decimal).replace(/\\.0*$/, '') + config.units[1];\n } else if (num >= 1e6) {\n val = ~~(num / 1e4) + config.units[0];\n } else if (num >= 1e4) {\n val = (num / 1e4).toFixed(decimal).replace(/\\.0*$/, '') + config.units[0];\n } else {\n val = `${num}`;\n }\n } else if (config.type === 'W') {\n if (num >= 1e4) {\n const unitDigit = (num / 1e4).toString().split('.')[0];\n const oneDecimal = ((num - Number(unitDigit) * 1e4) / 1e3).toString().split('.')[0];\n if (Number(oneDecimal) >= 1) {\n val = `${String(unitDigit)}.${String(oneDecimal)}${config.units[0] as string}`;\n } else {\n val = `${String(unitDigit)}${config.units[0] as string}`;\n }\n } else {\n val = `${num}`;\n }\n } else if (config.upperLimit && num >= config.upperLimit) {\n val = config.upperText;\n }\n if (config.needDiv) {\n val = val.replace(/\\d+/, function (s: string) {\n return s.replace(/(\\d)(?=(\\d{3})+$)/g, '$1,');\n });\n }\n\n if (config.tmpl) {\n return config.tmpl.replace('%s', val);\n }\n\n return val;\n}\n\nexport function formatNumByRegion(num: number, region: Region, t: i18n['t']): string {\n if (NUM_INTERVAL_MAP.w.includes(region)) {\n const type = 'W';\n const units = [t('common_ten_thousand')];\n return formatNum(num, { type, units, needDiv: false });\n }\n if (NUM_INTERVAL_MAP.k.includes(region)) {\n const type = 'KM';\n const units = [t('common_thousand'), t('common_million')];\n return formatNum(num, { type, units, needDiv: false });\n }\n return '';\n}\n\ntype NumFormatter = (num: number) => string;\n\nexport const useNumFormatter = (): NumFormatter => {\n const { region } = useAtomValue($Locale);\n const { t } = useTranslation();\n\n // TODO force cast\n return useCallback((num: number) => formatNumByRegion(num, region as any, t), []);\n};\n","/*\n * 根据URL的层次或者哈希「递进地」划分URL\n * 示例:\n * https://A.B/C#D\n * -> ['https://A.B', 'https://A.B/C', 'https://A.B/C#D']\n */\nexport function parseUrlBySlash(url: string): string[] {\n const u: URL = new URL(url);\n const subPath: string[] = u.pathname.split('/');\n let prefix = `${u.protocol}//${u.host}`;\n const res = [prefix];\n for (const p of subPath) {\n if (p.length === 0) {\n continue;\n }\n if (!prefix.endsWith('/')) {\n prefix += '/';\n }\n prefix += p;\n res.push(prefix);\n }\n if (u.hash.length) {\n res.push(prefix + u.hash);\n }\n return res;\n}\n\n/*\n * 根据层次或哈希分割url\n * 第一级保留为协议和域名的组合,会处理哈希但不会处理query\n *\n * 示例:\n * https://x/A/B#C?D\n * -> ['https://x', 'A', 'B', 'C', 'D']\n */\nexport function splitUrlBySlashOrHash(url: string): string[] {\n try {\n const u: URL = new URL(url);\n const res: string[] = u.pathname.split('/');\n res[0] = `${u.protocol}//${u.host}`;\n if (u.hash.length) {\n res.push(u.hash.replace('#', ''));\n }\n return res;\n } catch (_) {\n return [];\n }\n}\n","import { parseUrlBySlash, splitUrlBySlashOrHash } from './util';\n\ninterface BreadcrumbPropsType {\n nameList: string[];\n path: string;\n}\n\nexport const BreadcrumbJSONLD: (props: BreadcrumbPropsType) => JSX.Element | null = (props) => {\n const { path, nameList } = props;\n\n const url = path;\n const urlList = parseUrlBySlash(url);\n const splicedUrl = splitUrlBySlashOrHash(url);\n\n if (!urlList.length) {\n return null;\n }\n\n const crumbList = [];\n for (let index = 0; index < urlList.length && index < nameList.length; index++) {\n crumbList.push({\n '@type': 'ListItem',\n position: index + 1,\n item: {\n '@type': 'Thing',\n '@id': urlList[index],\n name: nameList[index] || splicedUrl[index],\n },\n });\n }\n return (\n \n );\n};\n","import { Component, FC, useMemo } from 'react';\nimport { useLocation, useNavigation, useOutletContext } from '@remix-run/react';\nimport { useAtomValue } from 'jotai';\nimport { $PageLevelTraffic } from 'shared/atoms';\nimport { RootSkeleton } from '~/skeleton';\n\nexport abstract class RemixPage extends Component {\n /**\n * @deprecated\n */\n get page(): string {\n throw new Error('page name unspecified');\n }\n\n Head: FC = () => {\n return null;\n };\n\n Body: FC = () => {\n return null;\n };\n\n protected HeadContent: FC = () => {\n const { state } = useNavigation();\n const { canonicalUrl } = useAtomValue($PageLevelTraffic);\n const { pathname } = useLocation();\n\n const routeLoading = useMemo(() => {\n if (__BUILD_TARGET__ === 'server') {\n return false;\n }\n\n const a = new URL(canonicalUrl);\n return location.pathname !== a.pathname;\n }, [pathname, canonicalUrl]);\n\n if (state === 'loading' || routeLoading) {\n return (\n <>\n Lemon8 Loading\n \n );\n }\n const { Head } = this;\n\n return ;\n };\n\n protected BodyContent: FC = () => {\n const { state } = useNavigation();\n const { canonicalUrl } = useAtomValue($PageLevelTraffic);\n const { pathname } = useLocation();\n\n const routeLoading = useMemo(() => {\n if (__BUILD_TARGET__ === 'server') {\n return false;\n }\n\n const a = new URL(canonicalUrl);\n return location.pathname !== a.pathname;\n }, [pathname, canonicalUrl]);\n\n const { Body } = this;\n\n if (state === 'loading' || routeLoading) {\n return ;\n }\n\n return ;\n };\n\n protected Content: FC = () => {\n const { HeadContent, BodyContent } = this;\n const { for: contextFor } = useOutletContext<{\n for: 'head' | 'body';\n }>();\n\n if (contextFor === 'head') {\n return ;\n } else {\n return ;\n }\n };\n\n override render(): JSX.Element {\n const { Content } = this;\n\n return ;\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","'use strict';\nvar aCallable = require('../internals/a-callable');\n\nvar PromiseCapability = function (C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aCallable(resolve);\n this.reject = aCallable(reject);\n};\n\n// `NewPromiseCapability` abstract operation\n// https://tc39.es/ecma262/#sec-newpromisecapability\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","var global = require('../internals/global');\n\nmodule.exports = global.Promise;\n","var anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar flattenIntoArray = require('../internals/flatten-into-array');\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\n// `Array.prototype.flatMap` method\n// https://tc39.es/ecma262/#sec-array.prototype.flatmap\n$({ target: 'Array', proto: true }, {\n flatMap: function flatMap(callbackfn /* , thisArg */) {\n var O = toObject(this);\n var sourceLen = lengthOfArrayLike(O);\n var A;\n aCallable(callbackfn);\n A = arraySpeciesCreate(O, 0);\n A.length = flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n return A;\n }\n});\n","// this method was added to unscopables after implementation\n// in popular engines, so it's moved to a separate module\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('flatMap');\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar fails = require('../internals/fails');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar speciesConstructor = require('../internals/species-constructor');\nvar promiseResolve = require('../internals/promise-resolve');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\n\n// Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829\nvar NON_GENERIC = !!NativePromiseConstructor && fails(function () {\n // eslint-disable-next-line unicorn/no-thenable -- required for testing\n NativePromisePrototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ });\n});\n\n// `Promise.prototype.finally` method\n// https://tc39.es/ecma262/#sec-promise.prototype.finally\n$({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, {\n 'finally': function (onFinally) {\n var C = speciesConstructor(this, getBuiltIn('Promise'));\n var isFunction = isCallable(onFinally);\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n }\n});\n\n// makes sure that native promise-based APIs `Promise#finally` properly works with patched `Promise#then`\nif (!IS_PURE && isCallable(NativePromiseConstructor)) {\n var method = getBuiltIn('Promise').prototype['finally'];\n if (NativePromisePrototype['finally'] !== method) {\n defineBuiltIn(NativePromisePrototype, 'finally', method, { unsafe: true });\n }\n}\n","import { FC, useCallback } from 'react';\nimport LoadMore from '~/components/load-more';\nimport { useAtomValue } from 'jotai';\nimport { useCategoryData } from '~/models/feed';\nimport { $FeedData, $FeedDateLoadmore } from 'shared/atoms';\nimport { ArticleCard } from '~/components/article-card';\nimport { Loading } from '~/components/loading';\nimport { useTranslation } from 'react-i18next';\nimport { DivisibleStack } from '~/components/divisible-stack';\nimport { NotFound } from '~/components/not-found';\nimport { useRouteLoader } from '~/utils/use-route-loader';\nimport { $CurrentPageModule } from '~/models/current-page-module';\nimport { ModuleType } from '~/utils/module-type';\nimport { ScopedProvider } from '@lemon8/web-app-shared/ssr';\nimport { $CurrentPositionPrefix } from '~/models/current-position-prefix';\nimport { ClickPositionPrefix } from '~/utils/click-position';\n\nimport './style.scss';\n\nconst ARTICLE_TYPE = ['video', 'gallery', 'article'];\n\nexport const FeedStreamSection: FC = () => {\n const { t } = useTranslation();\n\n const { categoryName } = useCategoryData();\n const stream = useAtomValue($FeedData(categoryName));\n const { hasMore, items = [], maxBeHotTime, minBeHotTime } = stream;\n const articles = items.filter((item) => ARTICLE_TYPE.includes(item.articleClass.toLowerCase()));\n\n const loader = useRouteLoader(\n 'stream-loadmore',\n {\n max_behot_time: maxBeHotTime,\n min_behot_time: minBeHotTime,\n },\n {\n atomFamilies: {\n $FeedDateLoadmore,\n },\n },\n );\n\n const loadData = useCallback(() => {\n if (loader.state === 'idle') {\n loader.load();\n }\n return Promise.resolve({ data: [] });\n }, [loader.state]);\n\n if (!articles.length && !hasMore) {\n return ;\n }\n\n return (\n
\n }\n distanceToLoad={1000}\n endText={t('no_more_items')}\n render={() => (\n \n \n {articles.map((article, rank) => (\n \n ))}\n \n \n )}\n />\n
\n );\n};\n","import { FC } from 'react';\nimport { FeedStreamSection } from '@feed/body/stream';\n\nexport const FeedBody: FC = () => {\n return ;\n};\n","export const ItemListJSONLD: (props: {\n urlList: string[];\n isCollectionPage?: boolean;\n mainUrl?: string;\n}) => JSX.Element = (props) => {\n const { urlList = [], isCollectionPage = false, mainUrl = '' } = props;\n const itemList = urlList.map((url: string, index: number) => {\n return {\n '@type': 'ListItem',\n position: index + 1,\n url,\n };\n });\n const baseItemListJSONLD = {\n '@context': 'https://schema.org',\n '@type': 'ItemList',\n itemListElement: itemList,\n };\n const itemListJSONLD = isCollectionPage\n ? {\n ...baseItemListJSONLD,\n mainEntityOfPage: {\n '@id': mainUrl,\n '@type': 'CollectionPage',\n },\n numberOfItems: itemList.length || 0,\n }\n : baseItemListJSONLD;\n return