{"version":3,"sources":["webpack://@lemon8/web-seo/./client/utils/pending-queue.ts","webpack://@lemon8/web-seo/./client/routes/topic.$hashtag_id/shared/atoms/current-hashtag-id.ts","webpack://@lemon8/web-seo/./client/routes/topic.$hashtag_id/shared/atoms/current-hashtag-info.ts","webpack://@lemon8/web-seo/./client/routes/topic.$hashtag_id/head/json-ld.tsx","webpack://@lemon8/web-seo/./client/routes/topic.$hashtag_id/shared/use-hashtag-desc.ts","webpack://@lemon8/web-seo/./client/routes/topic.$hashtag_id/head/og.tsx","webpack://@lemon8/web-seo/./client/routes/topic.$hashtag_id/head/index.tsx","webpack://@lemon8/web-seo/./client/routes/topic.$hashtag_id/body/post/index.tsx","webpack://@lemon8/web-seo/./client/routes/topic.$hashtag_id/body/campaign/index.tsx","webpack://@lemon8/web-seo/./client/routes/topic.$hashtag_id/body/related/index.tsx","webpack://@lemon8/web-seo/./client/routes/topic.$hashtag_id/body/description/index.tsx","webpack://@lemon8/web-seo/./client/routes/topic.$hashtag_id/body/index.tsx","webpack://@lemon8/web-seo/./client/routes/topic.$hashtag_id/__remix_browser_route__route.tsx"],"names":["PendingQueue","constructor","_tasks","_doInterval","length","console","log","forEach","task","setInterval","push","pendingQueue","$CurrentHashtagId","atom","get","traffic","$PageLevelTraffic","pageType","EPageType","Promise","resolve","hashtagId","$CurrentHashtagInfo","$HashtagInfo","$CurrentAvailableHashtagInfoOrNull","hashtag","TopicUtil","$CurrentHashtagInfoAsAvailable","ItemListJsonLD","props","urlList","isCollectionPage","mainUrl","itemList","map","url","index","position","baseItemListJSONLD","itemListElement","itemListJSONLD","_objectSpread","mainEntityOfPage","numberOfItems","jsx","type","dangerouslySetInnerHTML","__html","JSON","stringify","JsonLD","enterHref","href","useAtomValue","$RootTraffic","region","$Locale","items","popularPostItems","$HashtagPopularPost","recentPostItems","$HashtagRecentPost","hostname","URL","collectionPageList","useMemo","article","res","a","concat","canonicalUri","useHashtagDesc","t","useTranslation","formatNum","useNumFormatter","views_count","description","viewsCount","viewsCountDesc","num","replace","trim","OG","defaultArticleItem","largeImage","name","ogUrl","split","firstArticle","imgUrl","jsxs","Fragment","children","property","content","HashtagHeadInner","canonicalUrl","keywords","title","fb_appid","rel","String","HashtagHead","Suspense","fallback","HashtagPostSection","recentPostData","useAtom","recentPosts","hasMore","sessionImprId","loader","useRouteLoader","session_impr_id","atomFamilies","$HashtagRecentPostLoadmore","handleSeeMore","state","load","popularObservedRef","useViewTracking","onView","useCallback","window","Tea","current_page_module","ModuleType","recentObservedRef","id","ref","ScopedProvider","atomsWithHydration","$CurrentPageModule","$CurrentPositionPrefix","ClickPositionPrefix","SectionTitle","DivisibleStack","wrapper","divider","rank","ArticleCard","groupId","SeeMore","onClickSeeMore","loading","className","EmptyPosts","HashtagCampaignSection","sendTrackingEvent","current_position","ClickPosition","page_id","ViewTracker","CampaignCarousel","FOLDED_TOPIC_COUNT","HashtagTopicSection","data","$HashtagRelated","relatedTopics","relatedSugs","sugWords","topics","fold","setFold","useState","$CurrentModuleRank","slice","Number","MAX_SAFE_INTEGER","topic","TopicCard","topicId","HashtagDescriptionSection","HashtagBody","HashtagBodySkeleton","Loading","variant","NotFound","links","HashtagPage"],"mappings":"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","file":"routes/topic.$hashtag_id-27b1f0e13cee2f5abaa9.js","sourcesContent":["export class PendingQueue {\n private _tasks: (() => void)[] = [];\n\n constructor() {\n if (__BUILD_TARGET__ === 'client') {\n setInterval(this._doInterval, 20);\n }\n }\n\n public push(task: (...args: unknown[]) => void) {\n this._tasks.push(task);\n }\n\n private _doInterval = (): void => {\n if (this._tasks.length) {\n console.log('pending tasks found, total count: %d', this._tasks.length);\n this._tasks.forEach((task) => task());\n this._tasks = [];\n }\n };\n}\n\nexport const pendingQueue = new PendingQueue();\n","import { atom } from 'jotai';\nimport { $PageLevelTraffic } from 'shared/atoms';\nimport { EPageType } from 'shared/models';\nimport { pendingQueue } from '~/utils/pending-queue';\n\nexport const $CurrentHashtagId = atom((get) => {\n const traffic = get($PageLevelTraffic);\n const { pageType } = traffic;\n\n if (pageType !== EPageType.hashtag) {\n // eslint-disable-next-line @typescript-eslint/no-throw-literal\n throw new Promise((resolve) => pendingQueue.push(resolve));\n }\n\n return traffic.hashtagId;\n});\n","import { atom } from 'jotai';\nimport { $CurrentHashtagId } from './current-hashtag-id';\nimport { $HashtagInfo } from 'shared/atoms';\nimport { HashtagInfo } from 'shared/models';\nimport { TopicUtil } from 'shared/models/topic/topic-util';\n\nexport const $CurrentHashtagInfo = atom((get) => {\n const hashtagId = get($CurrentHashtagId);\n return get($HashtagInfo(hashtagId));\n});\n\nexport const $CurrentAvailableHashtagInfoOrNull = atom((get) => {\n const hashtag = get($CurrentHashtagInfo);\n if (TopicUtil.isTopicAvailable(hashtag)) {\n return hashtag;\n }\n return null;\n});\n\nexport const $CurrentHashtagInfoAsAvailable = atom((get) => {\n return get($CurrentHashtagInfo) as HashtagInfo;\n});\n","import { useParams } from '@remix-run/react';\nimport { useAtomValue } from 'jotai';\nimport { FC, useMemo } from 'react';\nimport { $RootTraffic, $Locale } from '@lemon8/web-app-shared/atom';\nimport { $HashtagPopularPost, $HashtagRecentPost } from 'shared/atoms';\nimport { $CurrentHashtagId } from '~/routes/topic.$hashtag_id/shared/atoms';\n\nexport const ItemListJsonLD: FC<{\n urlList: string[];\n isCollectionPage?: boolean;\n mainUrl?: string;\n}> = (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