\n
\n \n {t('saved_text').replace('%d', formatNum(favoriteCount))}\n
\n\n
\n \n {Boolean(diggCount) && {formatNum(diggCount)}}\n
\n\n
\n \n {Boolean(commentCount) && {formatNum(commentCount)}}\n
\n\n
\n
\n );\n};\n","import { useScopedAtomValue } from '@lemon8/web-app-shared/ssr';\nimport { FC, useCallback, useEffect, useRef, useState } from 'react';\nimport { ImmersivePostItemAtoms } from '@discover/body/immersive-post/immersive-post-item/atoms';\nimport { useTranslation } from 'react-i18next';\nimport useReflowClick from '~/utils/use-reflow-click';\nimport { ClickPosition } from '~/utils/click-position';\nimport { Link, useNavigate } from '@remix-run/react';\nimport { ArticleDetailUtil } from 'shared/models';\nimport { useActiveToArticle } from '~/utils/active/use-active-to-article';\nimport { useViewTracking } from '~/utils/use-view-tracking';\nimport { useAtomValue } from 'jotai';\nimport { $IsMobileUser } from '~/utils/is-mobile-user';\nimport { removeEscapedSpecialXmlCharacter } from 'shared/utils/escape-xml';\nimport { $Locale } from '@lemon8/web-app-shared/atom';\nimport { useSEOHref } from '~/utils/build-seo-url';\n\nimport './style.scss';\n\nexport const ArticleBody: FC = () => {\n const { t } = useTranslation();\n const { region } = useAtomValue($Locale);\n const article = useScopedAtomValue(ImmersivePostItemAtoms.$CurrentArticle);\n const activeToArticle = useActiveToArticle(article);\n const isMobileUser = useAtomValue($IsMobileUser);\n const [showEllipse, setShowEllipse] = useState(false);\n const shortContentRef = useRef