{"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/number_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/empty-posts/index.tsx","webpack://@lemon8/web-seo/./client/components/topic-card/topic-article-card/index.tsx","webpack://@lemon8/web-seo/./client/components/topic-card/index.tsx","webpack://@lemon8/web-seo/./client/components/view-tracker/index.tsx","webpack://@lemon8/web-seo/./client/models/current-module-rank.ts","webpack://@lemon8/web-seo/./shared/utils/format/kep-formatter.ts","webpack://@lemon8/web-seo/../common/temp/split__lemon8_web_seo/node_modules/.pnpm/core-js@3.23.5/node_modules/core-js/internals/string-trim-forced.js","webpack://@lemon8/web-seo/../common/temp/split__lemon8_web_seo/node_modules/.pnpm/core-js@3.23.5/node_modules/core-js/internals/string-trim.js","webpack://@lemon8/web-seo/../common/temp/split__lemon8_web_seo/node_modules/.pnpm/core-js@3.23.5/node_modules/core-js/internals/whitespaces.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.string.trim.js"],"names":["_path","_extends","target","i","source","key","SvgNumberFill","props","$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","EmptyPosts","TopicArticleCard","_ref","topic","topicId","handleArticleClick","event","hashtagArticleCardRef","draggable","HeartIcon","VideoIcon","MIN_HASHTAG_ARTICLE_COUNT","MAX_HASHTAG_ARTICLE_COUNT","TopicCard","$PageLevelTraffic","isKEPPage","EPageType","isOnlyWord","topicHref","kepQueryFormat","topicName","isHashtagWithArticleCard","articles","currentPosition","handleHashtagClick","query","hashtagId","description","viewCount","hashtagRef","NumberIcon","StepScroll","ViewTracker","Component","constructor","arguments","observer","wrapperRef","React","trackEvent","visible","once","onChange","onHide","unobserve","componentDidMount","options","DEFAULT_OPTIONS","ViewObserver","current","observe","componentWillUnmount","render","MODULE_NOT_RANK","$CurrentModuleRank","specialRegex","emojiRegex","char","toLowerCase","trim","PROPER_FUNCTION_NAME","fails","whitespaces","non","module","METHOD_NAME","uncurryThis","requireObjectCoercible","toString","whitespace","ltrim","rtrim","createMethod","TYPE","$this","string","$","$trim","forcedStringTrimMethod"],"mappings":"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","file":"933-b0512ce895bb22632fc0.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 SvgNumberFill(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: \"M8.212 16.25h4.368l-.29 2H7.931l-.44 3.137a1 1 0 01-1.981-.278l.402-2.859H3.25a1 1 0 110-2h2.943l1.194-8.5H5.75a1 1 0 110-2h1.918l.442-3.14a1 1 0 111.98.28l-.402 2.86h6.38l.442-3.14a1 1 0 011.98.28l-.402 2.86h2.662a1 1 0 010 2h-2.943l-1.195 8.5h1.638a1 1 0 110 2h-1.919l-.44 3.137a1 1 0 01-1.981-.278L15.787 7.75h-6.38l-1.195 8.5z\",\n fill: \"currentColor\"\n })));\n}\nexport default SvgNumberFill;","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 { useTranslation } from 'react-i18next';\n\nimport './style.scss';\n\nexport const EmptyPosts = (): JSX.Element => {\n const { t } = useTranslation();\n return (\n
\n
\n {t('no_content')}\n
\n );\n};\n","import { ArticleClass, Topic, TopicArticle } from 'shared/models/legacy';\nimport { Link } from '@remix-run/react';\nimport { useCallback, FC, useMemo, SyntheticEvent } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Image } from '~/components/image';\nimport { useNumFormatter } from '~/utils/format/num-formatter';\nimport VideoIcon from 'icon/play_fill.svg';\nimport HeartIcon from 'icon/heart.svg';\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';\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';\n\nimport './style.scss';\n\ninterface TopicArticleCardProps {\n topic: Topic;\n article: TopicArticle;\n}\n\nexport const TopicArticleCard: FC = ({ topic, article }) => {\n const { topicId } = topic;\n const { canonicalUri, articleClass, articleLikes, shortContent, title, largeImage, groupId } = article;\n const { region } = useAtomValue($Locale);\n const { t } = useTranslation();\n const formatNum = useNumFormatter();\n const active = usePageActive();\n\n const isMobileUser = useAtomValue($IsMobileUser);\n const currentPageModule = useScopedAtomValue($CurrentPageModule);\n\n const articleHref = useMemo(() => `${canonicalUri}?region=${region}`, [region]);\n\n const handleArticleClick = useReflowClick(\n {\n clickEvent: (_, bundle) => ({\n ...bundle,\n current_position: ClickPosition.related_hashtag_article_card,\n page_click_id: groupId,\n }),\n reflowBehavior: () => {\n active({\n schemaOption: {\n pageType: articleClass === ArticleClass.VIDEO ? 'video' : 'article',\n groupId,\n },\n ampExtra: {\n enter_position: ClickPosition.related_hashtag_article_card,\n },\n });\n },\n defaultBehavior: (event?: SyntheticEvent) => {\n event?.stopPropagation();\n },\n },\n [active, topicId, groupId],\n );\n\n const hashtagArticleCardRef = useViewTracking({\n onView: useCallback(() => {\n if (isMobileUser) {\n window.Tea('wap_cta_show', {\n current_page_module: currentPageModule,\n current_position: ClickPosition.related_hashtag_article_card,\n });\n }\n }, [isMobileUser]),\n });\n\n return (\n \n \n
\n
\n {t('own_picture').replace('%s',\n
\n
\n
\n \n {formatNum(articleLikes)}\n
\n {articleClass === ArticleClass.VIDEO && (\n
\n \n
\n )}\n
\n
\n

{title}

\n

{shortContent}

\n
\n \n
\n );\n};\n","import { Topic } from 'shared/models/legacy';\nimport { Link } from '@remix-run/react';\nimport { FC, useMemo, useCallback } from 'react';\nimport { StepScroll } from '../step-scroll';\nimport { TopicArticleCard } from './topic-article-card';\nimport NumberIcon from '@lemon8/design/lib/icons/icon_assets/number_fill.svg';\nimport { useAtomValue } from 'jotai';\nimport { $Locale } from '@lemon8/web-app-shared/atom';\nimport { useTranslation } from 'react-i18next';\nimport { useNumFormatter } from '~/utils/format/num-formatter';\nimport { ClickPosition } from '~/utils/click-position';\nimport { usePageActive } from '~/utils/active/use-page-active';\nimport useReflowClick from '~/utils/use-reflow-click';\nimport { $PageLevelTraffic } from 'shared/atoms';\nimport { EPageType } from 'shared/models';\nimport { $IsMobileUser } from '~/utils/is-mobile-user';\nimport { useScopedAtomValue } from '@lemon8/web-app-shared/ssr';\nimport { $CurrentPageModule } from '~/models/current-page-module';\nimport { useViewTracking } from '~/utils/use-view-tracking';\nimport { kepQueryFormat } from 'shared/utils/format/kep-formatter';\n\nimport './style.scss';\n\nexport const MIN_HASHTAG_ARTICLE_COUNT = 3;\nconst MAX_HASHTAG_ARTICLE_COUNT = 10;\n\ninterface TopicCardProps {\n topic: Topic | string;\n}\n\nexport const TopicCard: FC = ({ topic }) => {\n const { pageType } = useAtomValue($PageLevelTraffic);\n const isKEPPage = pageType === EPageType.discover;\n\n const isOnlyWord = typeof topic === 'string';\n const { t } = useTranslation();\n const { region } = useAtomValue($Locale);\n const formatNum = useNumFormatter();\n const active = usePageActive();\n\n const isMobileUser = useAtomValue($IsMobileUser);\n const currentPageModule = useScopedAtomValue($CurrentPageModule);\n\n const topicHref = useMemo(() => {\n if (!isKEPPage || isOnlyWord) {\n return `/discover/${kepQueryFormat(isOnlyWord ? topic : topic.topicName)}?region=${region}`;\n }\n return `/topic/${topic.topicId}?region=${region}`;\n }, [topic, region, isKEPPage]);\n\n const isHashtagWithArticleCard = useMemo(() => {\n return !isOnlyWord && topic.articles && topic.articles.length >= MIN_HASHTAG_ARTICLE_COUNT;\n }, []);\n\n const currentPosition = useMemo(() => {\n return isHashtagWithArticleCard ? ClickPosition.related_hashtag_with_article_card : ClickPosition.related_hashtag;\n }, []);\n\n const handleHashtagClick = useReflowClick(\n {\n clickEvent: (_, bundle) => ({\n ...bundle,\n current_position: currentPosition,\n page_click_id: isOnlyWord ? kepQueryFormat(topic) : topic.topicId,\n }),\n reflowBehavior: () => {\n if (isOnlyWord) {\n active({\n schemaOption: {\n pageType: 'search',\n query: kepQueryFormat(topic),\n },\n ampExtra: {\n enter_position: currentPosition,\n },\n });\n } else {\n active({\n schemaOption: {\n pageType: 'hashtag',\n hashtagId: topic.topicId,\n },\n ampExtra: {\n enter_position: currentPosition,\n },\n });\n }\n },\n },\n [active, topic, isOnlyWord],\n );\n\n const description = useMemo(() => {\n return (\n isKEPPage &&\n !isOnlyWord &&\n t('view_count_plural', { num: topic.viewCount }).replace('%d', formatNum(topic.viewCount))\n );\n }, []);\n\n const hashtagRef = useViewTracking({\n onView: useCallback(() => {\n if (isMobileUser) {\n window.Tea('wap_cta_show', {\n current_page_module: currentPageModule,\n current_position: isHashtagWithArticleCard\n ? ClickPosition.related_hashtag_with_article_card\n : ClickPosition.related_hashtag,\n });\n }\n }, [isMobileUser]),\n });\n\n return (\n \n
\n
\n \n
\n
\n

{isOnlyWord ? topic : topic.topicName}

\n {description &&

{description}

}\n
\n
\n {!isOnlyWord && topic.articles && topic.articles.length >= MIN_HASHTAG_ARTICLE_COUNT && (\n \n {topic.articles.slice(0, MAX_HASHTAG_ARTICLE_COUNT).map((article) => (\n \n ))}\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';\n\nexport const MODULE_NOT_RANK = -1;\n\nexport const $CurrentModuleRank = atom(MODULE_NOT_RANK);\n","const specialRegex = /[!@&/\\\\#,+()$~%.'\":*?<>{}]/g;\nconst emojiRegex = /[\\u{1F000}-\\u{1F9FF}]/gu;\n\n/** format to url word */\nexport const kepQueryFormat = (query: string) => {\n if (!query) {\n return '';\n }\n\n const filterCharWord = query.replace(specialRegex, '');\n const filterEmojiWord = filterCharWord.replace(emojiRegex, '');\n const filterSpaceWord = filterEmojiWord.replace(/\\s+/g, ' ');\n const lowerCaseWord = filterSpaceWord.replace(/[A-Z]/g, (char) => char.toLowerCase());\n\n return lowerCaseWord.trim();\n};\n","var PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;\nvar fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n return !!whitespaces[METHOD_NAME]()\n || non[METHOD_NAME]() !== non\n || (PROPER_FUNCTION_NAME && whitespaces[METHOD_NAME].name !== METHOD_NAME);\n });\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar whitespaces = require('../internals/whitespaces');\n\nvar replace = uncurryThis(''.replace);\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = toString(requireObjectCoercible($this));\n if (TYPE & 1) string = replace(string, ltrim, '');\n if (TYPE & 2) string = replace(string, rtrim, '');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.es/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n","// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.trim` method\n// https://tc39.es/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n trim: function trim() {\n return $trim(this);\n }\n});\n"],"sourceRoot":""}