{"version":3,"sources":["webpack://@lemon8/web-seo/../common/temp/split__lemon8_web_seo/node_modules/.pnpm/@lemon8+web-app-shared@1.3.0_@types+react@18.2.79/node_modules/@lemon8/web-app-shared/dist/esm/i18n/europe.js","webpack://@lemon8/web-seo/../common/temp/split__lemon8_web_seo/node_modules/.pnpm/@lemon8+web-app-shared@1.3.0_@types+react@18.2.79/node_modules/@lemon8/web-app-shared/dist/esm/i18n/index.js","webpack://@lemon8/web-seo/../common/temp/split__lemon8_web_seo/node_modules/.pnpm/@lemon8+web-app-shared@1.3.0_@types+react@18.2.79/node_modules/@lemon8/web-app-shared/dist/esm/i18n/language.js","webpack://@lemon8/web-seo/../common/temp/split__lemon8_web_seo/node_modules/.pnpm/@lemon8+web-app-shared@1.3.0_@types+react@18.2.79/node_modules/@lemon8/web-app-shared/dist/esm/i18n/region.js","webpack://@lemon8/web-seo/./client/components/image/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/../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/number.svg","webpack://@lemon8/web-seo/./client/components/simple-topic-card/index.tsx","webpack://@lemon8/web-seo/./client/routes/$user_link_name/shared/atoms/current-user.ts","webpack://@lemon8/web-seo/./client/utils/add-region-to-semantic-url.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/a-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/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/internals/species-constructor.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/../common/temp/split__lemon8_web_seo/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/debounce.js","webpack://@lemon8/web-seo/../common/temp/split__lemon8_web_seo/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/now.js","webpack://@lemon8/web-seo/../common/temp/split__lemon8_web_seo/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/throttle.js"],"names":["exports","isEuropeRegion","region","__createBinding","o","m","k","k2","desc","__exportStar","p","region_1","Language","language","l","r","Region","VGeo","IDCRegion","getRegionIDC","Image","props","jsx","_objectSpread","onContextMenu","e","preventDefault","UI","scrollY","window","pageYOffset","document","body","scrollTop","documentElement","offset","el","type","getBoundingClientRect","left","top","width","height","pageXOffset","PREFIX","render","loadData","className","initList","showEnd","loadingText","endText","placeholder","isEnd","alwaysShowLoading","distanceToLoad","isLoading","setIsLoading","useState","dataList","setDataList","listRef","useRef","timerRef","listDom","doLoadMore","useCallback","then","res","data","list","finally","scrollLoadMore","current","clearTimeout","setTimeout","innerHeight","useEffect","addEventListener","passive","capture","renderBottomText","children","renderPlaceholder","length","jsxs","concat","ref","ENotFoundType","NotFound","t","useTranslation","hint","useMemo","_path","_extends","target","i","source","key","SvgNumber","aHref","name","icon_url","style","isBOT","isDefault","onClick","size","followerCount","viewsCount","onImpression","showNumber","activity_icon_style","useAtomValue","$Locale","hashRef","offsetTop","isLarge","isSmall","throttleHandleScroll","throttle","removeEventListener","y","Link","to","cs","default","Number","src","alt","num","replace","formatNumByRegion","CurrentUserId","atom","get","traffic","$PageLevelTraffic","pageType","EPageType","includes","Promise","resolve","pendingQueue","userId","$CurrentUserLinkName","userLinkName","$CurrentUser","currentUserLinkName","$UserDetailV2","$CurrentAvailableUserOrNull","user","UserDetailUtil","$CurrentUserAsAvailable","addRegionToSemanticUrl","semanticUrl","backupUrl","queryString","fullUrl","pathName","otherQuery","split","canonicalUrl","startsWith","NUM_INTERVAL_MAP","w","formatNum","_config","arguments","undefined","val","config","decimal","units","needDiv","toFixed","unitDigit","toString","oneDecimal","String","upperLimit","upperText","s","tmpl","useNumFormatter","parseUrlBySlash","url","u","URL","subPath","pathname","prefix","protocol","host","endsWith","push","hash","splitUrlBySlashOrHash","_","BreadcrumbJSONLD","path","nameList","urlList","splicedUrl","crumbList","index","position","item","dangerouslySetInnerHTML","__html","JSON","stringify","itemListElement","RemixPage","Component","constructor","Head","Body","HeadContent","state","useNavigation","useLocation","routeLoading","a","location","Fragment","BodyContent","RootSkeleton","Content","for","contextFor","useOutletContext","page","Error","getAtom","atomKey","args","decodeArgs","map","decodeURIComponent","atomFamily","atomFamilies","console","error","atoms","useRouteLoader","method","params","store","useStore","fetcher","useFetcher","load","searchParams","URLSearchParams","set","Object","entries","forEach","_ref","value","_ref2","atomToSet","isConstructor","tryToString","$TypeError","module","argument","aCallable","PromiseCapability","C","reject","$$resolve","$$reject","global","anObject","isObject","newPromiseCapability","x","promiseCapability","aConstructor","wellKnownSymbol","SPECIES","O","defaultConstructor","S","$","IS_PURE","NativePromiseConstructor","fails","getBuiltIn","isCallable","speciesConstructor","promiseResolve","defineBuiltIn","NativePromisePrototype","NON_GENERIC","onFinally","isFunction","now","toNumber","FUNC_ERROR_TEXT","nativeMax","nativeMin","debounce","func","wait","options","lastArgs","lastThis","maxWait","result","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","time","thisArg","leadingEdge","timerExpired","remainingWait","timeSinceLastCall","timeSinceLastInvoke","timeWaiting","shouldInvoke","trailingEdge","cancel","flush","debounced","isInvoking","root"],"mappings":"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","file":"304-b1a70adeeb7e2ecd25cd.js","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isEuropeRegion = exports.EURO_COUNTRY_SET = exports.EURO_COUNTRY_LIST = void 0;\nexports.EURO_COUNTRY_LIST = [\n 'at',\n 'be',\n 'bg',\n 'hr',\n 'ch',\n 'cy',\n 'cz',\n 'de',\n 'dk',\n 'ee',\n 'el',\n 'fi',\n 'fr',\n 'gb',\n 'gr',\n 'hu',\n 'ie',\n 'it',\n 'lv',\n 'lt',\n 'lu',\n 'mt',\n 'nl',\n 'pl',\n 'pt',\n 'ro',\n 'sk',\n 'si',\n 'es',\n 'se',\n 'no',\n 'is',\n 'li',\n];\nexports.EURO_COUNTRY_SET = new Set(exports.EURO_COUNTRY_LIST);\nconst isEuropeRegion = (region) => exports.EURO_COUNTRY_SET.has(region);\nexports.isEuropeRegion = isEuropeRegion;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./region\"), exports);\n__exportStar(require(\"./language\"), exports);\n__exportStar(require(\"./europe\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RegionHrefLangMap = exports.RegionFallbackLanguageMap = exports.SupportedLanguageMetas = exports.SupportedLanguages = exports.LanguageDisplayNameMap = exports.Language = void 0;\nconst region_1 = require(\"./region\");\nvar Language;\n(function (Language) {\n Language[\"en\"] = \"en\";\n Language[\"id\"] = \"id\";\n Language[\"ja\"] = \"ja\";\n Language[\"ms\"] = \"ms\";\n Language[\"th\"] = \"th\";\n Language[\"vi\"] = \"vi\";\n Language[\"fil\"] = \"fil\";\n})(Language = exports.Language || (exports.Language = {}));\nexports.LanguageDisplayNameMap = {\n en: 'English',\n id: 'Bahasa Indonesia',\n ja: '日本語',\n ms: 'Bahasa Melayu',\n th: 'ไทย',\n vi: 'Tiếng Việt',\n fil: 'Pilipino',\n};\nexports.SupportedLanguages = [\n Language.en,\n Language.id,\n Language.ja,\n Language.ms,\n Language.th,\n Language.vi,\n];\nexports.SupportedLanguageMetas = exports.SupportedLanguages.map((language) => ({\n language,\n displayName: exports.LanguageDisplayNameMap[language],\n})).sort((l, r) => (l.displayName > r.displayName ? 1 : -1));\nexports.RegionFallbackLanguageMap = {\n [region_1.Region.jp]: Language.ja,\n [region_1.Region.th]: Language.th,\n [region_1.Region.my]: Language.ms,\n [region_1.Region.id]: Language.id,\n [region_1.Region.vn]: Language.vi,\n [region_1.Region.us]: Language.en,\n [region_1.Region.gb]: Language.en,\n [region_1.Region.sg]: Language.en,\n [region_1.Region.ph]: Language.en,\n};\nexports.RegionHrefLangMap = {\n [region_1.Region.jp]: 'ja-jp',\n [region_1.Region.th]: 'th-th',\n [region_1.Region.my]: 'ms-my',\n [region_1.Region.id]: 'id-id',\n [region_1.Region.vn]: 'vi-vn',\n [region_1.Region.us]: 'en-us',\n [region_1.Region.gb]: 'en-gb',\n [region_1.Region.sg]: 'en-sg',\n [region_1.Region.ph]: 'en-ph',\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRegionIDC = exports.IDCRegion = exports.VGeo = exports.RegionDisplayMap = exports.Region = void 0;\n/**\n * ISO 639-1 Language Code\n *\n * lower case\n */\nvar Region;\n(function (Region) {\n Region[\"jp\"] = \"jp\";\n Region[\"th\"] = \"th\";\n Region[\"my\"] = \"my\";\n Region[\"id\"] = \"id\";\n Region[\"ph\"] = \"ph\";\n Region[\"vn\"] = \"vn\";\n Region[\"us\"] = \"us\";\n Region[\"gb\"] = \"gb\";\n Region[\"sg\"] = \"sg\";\n})(Region = exports.Region || (exports.Region = {}));\nexports.RegionDisplayMap = {\n [Region.jp]: '日本',\n [Region.th]: 'ไทย',\n [Region.my]: 'Malaysia',\n [Region.id]: 'Indonesia',\n [Region.vn]: 'Việt Nam',\n [Region.us]: 'US',\n [Region.gb]: 'UK',\n [Region.sg]: 'Singapore',\n [Region.ph]: 'Philippines',\n};\nvar VGeo;\n(function (VGeo) {\n VGeo[\"US\"] = \"US\";\n VGeo[\"ROW\"] = \"ROW\";\n})(VGeo = exports.VGeo || (exports.VGeo = {}));\n/**\n * @deprecated not compatible with TTP\n */\nvar IDCRegion;\n(function (IDCRegion) {\n IDCRegion[\"VA\"] = \"va\";\n IDCRegion[\"SG\"] = \"sg\";\n})(IDCRegion = exports.IDCRegion || (exports.IDCRegion = {}));\n/**\n * @deprecated not compatible with TTP\n */\nconst getRegionIDC = (region) => {\n return [Region.jp, Region.us, Region.gb].includes(region) ? IDCRegion.VA : IDCRegion.SG;\n};\nexports.getRegionIDC = getRegionIDC;\n","import React from 'react';\n\nexport const Image = (\n props: React.DetailedHTMLProps<\n React.ImgHTMLAttributes & { fetchpriority?: 'high' | 'low' | 'auto' },\n HTMLImageElement\n >,\n) => {\n return e.preventDefault()} />;\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","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 SvgNumber(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: \"M9.204 2.007a.75.75 0 01.639.847L9.4 6h6.886l.471-3.354a.75.75 0 111.486.208L17.8 6h2.949a.75.75 0 010 1.5h-3.16l-1.265 9h1.925a.75.75 0 010 1.5h-2.136l-.471 3.353a.75.75 0 01-1.486-.21L16.075 7.5H9.19l-1.265 9H13.3l-.21 1.5H7.714l-.471 3.353a.75.75 0 01-1.486-.21L6.2 18H3.25a.75.75 0 010-1.5h3.16l1.265-9H5.75a.75.75 0 110-1.5h2.136l.471-3.354a.75.75 0 01.847-.639z\",\n fill: \"currentColor\"\n })));\n}\nexport default SvgNumber;","import React, { useEffect, useRef } from 'react';\nimport throttle from 'lodash/throttle';\nimport cs from 'classnames';\nimport { Link } from '@remix-run/react';\nimport Number from 'icon/number.svg';\nimport { useAtomValue } from 'jotai';\nimport { $Locale } from '@lemon8/web-app-shared/atom';\nimport { Image } from '../image';\nimport { RegionType, formatNumByRegion } from '~/utils/format/num-formatter';\nimport { useTranslation } from 'react-i18next';\n\nimport './style.scss';\n\nconst HashtagCard: React.FC<{\n aHref: string;\n name: string;\n desc?: string;\n icon_url?: string;\n className?: string;\n style?: any;\n isDefault?: boolean;\n onClick?: any;\n isBOT?: boolean;\n size?: 'default' | 'large' | 'small';\n /** 关注数 */\n followerCount?: number;\n /** 查看数 */\n viewsCount?: number;\n onImpression?: () => void;\n activity_icon_style?: number;\n showNumber?: boolean;\n}> = (props) => {\n const {\n aHref = '',\n name = '',\n desc = '',\n icon_url = '',\n className = '',\n style = {},\n isBOT = false,\n isDefault = false,\n onClick = () => {\n //\n },\n size = 'default',\n followerCount = 0,\n viewsCount = 0,\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onImpression = () => {},\n showNumber = false,\n activity_icon_style,\n } = props;\n const { region } = useAtomValue($Locale);\n\n const { t } = useTranslation();\n\n const hashRef = useRef(null);\n let offsetTop = 0;\n\n const isLarge = size === 'large';\n const isSmall = size === 'small';\n\n const throttleHandleScroll = throttle(() => {\n // 这里的计算都是基于window滚动实现的,如果之后转移虚拟化了这里计算要想办法重新算\n if (window.scrollY + window.innerHeight > offsetTop) {\n onImpression();\n window.removeEventListener('scroll', throttleHandleScroll);\n }\n }, 300);\n useEffect(() => {\n if (hashRef.current) {\n offsetTop = window.scrollY + hashRef.current.getBoundingClientRect().y;\n }\n window.addEventListener('scroll', throttleHandleScroll);\n return () => {\n window.removeEventListener('scroll', throttleHandleScroll);\n };\n }, []);\n return (\n \n {!isSmall &&\n (isDefault ? (\n \n \n
\n ) : (\n {name}\n ))}\n\n
\n
\n {isDefault ? (\n

\n {name}\n {activity_icon_style === 1 ? : ''}\n

\n ) : (\n

\n {name}\n {activity_icon_style === 1 ? : ''}\n

\n )}\n {!isSmall &&
{desc}
}\n
\n {isLarge ? (\n
\n {(viewsCount > 0 || showNumber) && (\n \n {t('view_count_plural', { num: viewsCount }).replace(\n '%d',\n formatNumByRegion(viewsCount, region as unknown as RegionType, t),\n )}\n \n )}\n {showNumber && ·}\n {showNumber && (\n \n {t('follower_count_plural', { num: followerCount }).replace(\n '%d',\n formatNumByRegion(followerCount, region as unknown as RegionType, t),\n )}\n \n )}\n
\n ) : null}\n
\n \n );\n};\n\nexport default HashtagCard;\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","export function addRegionToSemanticUrl(semanticUrl: string, backupUrl: string, region: string, queryString?: string) {\n let fullUrl = backupUrl;\n let pathName = backupUrl;\n let otherQuery = queryString || '';\n if (semanticUrl) {\n const trimUrl = semanticUrl.split('?')[0];\n pathName = trimUrl.replace(/^https:\\/\\/(m.|www.)?(lemon8-app|sharee).com/, '');\n }\n fullUrl = `${pathName}?region=${region}`;\n const canonicalUrl = `${pathName}?region=${region}`;\n if (queryString) {\n if (queryString.startsWith('?')) {\n // eslint-disable-next-line prefer-destructuring\n otherQuery = queryString.split('?')[1];\n }\n fullUrl += `&${otherQuery}`;\n }\n return {\n fullUrl,\n pathName,\n canonicalUrl,\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","var isConstructor = require('../internals/is-constructor');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsConstructor(argument) is true`\nmodule.exports = function (argument) {\n if (isConstructor(argument)) return argument;\n throw $TypeError(tryToString(argument) + ' is not a constructor');\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","var anObject = require('../internals/an-object');\nvar aConstructor = require('../internals/a-constructor');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aConstructor(S);\n};\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","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","var debounce = require('./debounce'),\n isObject = require('./isObject');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nmodule.exports = throttle;\n"],"sourceRoot":""}