@tryghost/activitypub 3.1.9 → 3.1.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/activitypub.js +1 -1
- package/dist/{at-sign-HA7s9_yo.mjs → at-sign-Mjg-pZ6w.mjs} +2 -2
- package/dist/at-sign-Mjg-pZ6w.mjs.map +1 -0
- package/dist/{avatar-flipboard-swo-37SU.mjs → avatar-flipboard-DrqqZst3.mjs} +2 -2
- package/dist/avatar-flipboard-DrqqZst3.mjs.map +1 -0
- package/dist/{bluesky-sharing-CLCMkEbr.mjs → bluesky-sharing-Chejq-Bq.mjs} +7 -7
- package/dist/bluesky-sharing-Chejq-Bq.mjs.map +1 -0
- package/dist/{copy-DpM3ttP6.mjs → copy-Ba_lzzCd.mjs} +2 -2
- package/dist/copy-Ba_lzzCd.mjs.map +1 -0
- package/dist/{deleted-feed-item-Dpgdv7Am.mjs → deleted-feed-item-BfpxKMlB.mjs} +8 -8
- package/dist/deleted-feed-item-BfpxKMlB.mjs.map +1 -0
- package/dist/edit-profile-jtzZtWG8.mjs +3810 -0
- package/dist/edit-profile-jtzZtWG8.mjs.map +1 -0
- package/dist/{feed-CUigsjj5.mjs → feed-BkSec9BE.mjs} +12 -12
- package/dist/feed-BkSec9BE.mjs.map +1 -0
- package/dist/{hash-cJ8IUw77.mjs → hash-D8uyJrFB.mjs} +2 -2
- package/dist/hash-D8uyJrFB.mjs.map +1 -0
- package/dist/{inbox-gnZvtbNZ.mjs → inbox-DZqNPQ3D.mjs} +2 -2
- package/dist/inbox-DZqNPQ3D.mjs.map +1 -0
- package/dist/{index-BC1Q-I5Z.mjs → index-Bq0BHGkI.mjs} +24 -24
- package/dist/index-Bq0BHGkI.mjs.map +1 -0
- package/dist/{index-Dc5IUcEt.mjs → index-CCW2g6Oi.mjs} +49 -49
- package/dist/index-CCW2g6Oi.mjs.map +1 -0
- package/dist/{index-DOW1_Ph3.mjs → index-CQNBd3-F.mjs} +54 -54
- package/dist/index-CQNBd3-F.mjs.map +1 -0
- package/dist/{index-DJ5p5ESW.mjs → index-CSkOAA7W.mjs} +13531 -12734
- package/dist/index-CSkOAA7W.mjs.map +1 -0
- package/dist/{index-BHjT-eBh.mjs → index-D8Ct0JF0.mjs} +19 -19
- package/dist/index-D8Ct0JF0.mjs.map +1 -0
- package/dist/{index-DRdHe0Xx.mjs → index-DYjHwtl7.mjs} +7 -7
- package/dist/index-DYjHwtl7.mjs.map +1 -0
- package/dist/{index-DBDE7Pwv.mjs → index-nevBSPxu.mjs} +2 -2
- package/dist/index-nevBSPxu.mjs.map +1 -0
- package/dist/{index-VTkGUYnZ.mjs → index-psiB4m1D.mjs} +92 -92
- package/dist/index-psiB4m1D.mjs.map +1 -0
- package/dist/{moderation-CF26LtsR.mjs → moderation-DFdpfisa.mjs} +7 -7
- package/dist/moderation-DFdpfisa.mjs.map +1 -0
- package/dist/{note-C7a3fpfu.mjs → note-kWeM_V5e.mjs} +6 -6
- package/dist/note-kWeM_V5e.mjs.map +1 -0
- package/dist/{reply-DNHDDszZ.mjs → reply-1lPjfeAY.mjs} +2 -2
- package/dist/reply-1lPjfeAY.mjs.map +1 -0
- package/dist/separator-COhI8ngj.mjs +39 -0
- package/dist/separator-COhI8ngj.mjs.map +1 -0
- package/dist/{settings-CK06at6A.mjs → settings-CEx9EwpB.mjs} +3 -3
- package/dist/settings-CEx9EwpB.mjs.map +1 -0
- package/dist/{step-1-CWOu7-_P.mjs → step-1-DoxN5zA3.mjs} +8 -8
- package/dist/{step-1-CWOu7-_P.mjs.map → step-1-DoxN5zA3.mjs.map} +1 -1
- package/dist/{step-2-Dcy43H6c.mjs → step-2-BWvVMlaH.mjs} +13 -13
- package/dist/step-2-BWvVMlaH.mjs.map +1 -0
- package/dist/{step-3-Dav_Yy5B.mjs → step-3-Dnq4l5zZ.mjs} +14 -14
- package/dist/step-3-Dnq4l5zZ.mjs.map +1 -0
- package/dist/{tabs-B7coKvuk.mjs → tabs-DTWhZwdk.mjs} +224 -226
- package/dist/tabs-DTWhZwdk.mjs.map +1 -0
- package/dist/{topic-filter-BIhCARLH.mjs → topic-filter-4W4f_LiH.mjs} +4 -4
- package/dist/topic-filter-4W4f_LiH.mjs.map +1 -0
- package/package.json +11 -11
- package/dist/at-sign-HA7s9_yo.mjs.map +0 -1
- package/dist/avatar-flipboard-swo-37SU.mjs.map +0 -1
- package/dist/bluesky-sharing-CLCMkEbr.mjs.map +0 -1
- package/dist/copy-DpM3ttP6.mjs.map +0 -1
- package/dist/deleted-feed-item-Dpgdv7Am.mjs.map +0 -1
- package/dist/edit-profile-C4Z2TwUh.mjs +0 -3741
- package/dist/edit-profile-C4Z2TwUh.mjs.map +0 -1
- package/dist/feed-CUigsjj5.mjs.map +0 -1
- package/dist/hash-cJ8IUw77.mjs.map +0 -1
- package/dist/inbox-gnZvtbNZ.mjs.map +0 -1
- package/dist/index-BC1Q-I5Z.mjs.map +0 -1
- package/dist/index-BHjT-eBh.mjs.map +0 -1
- package/dist/index-DBDE7Pwv.mjs.map +0 -1
- package/dist/index-DJ5p5ESW.mjs.map +0 -1
- package/dist/index-DOW1_Ph3.mjs.map +0 -1
- package/dist/index-DRdHe0Xx.mjs.map +0 -1
- package/dist/index-Dc5IUcEt.mjs.map +0 -1
- package/dist/index-VTkGUYnZ.mjs.map +0 -1
- package/dist/moderation-CF26LtsR.mjs.map +0 -1
- package/dist/note-C7a3fpfu.mjs.map +0 -1
- package/dist/reply-DNHDDszZ.mjs.map +0 -1
- package/dist/separator-D4W12X08.mjs +0 -116
- package/dist/separator-D4W12X08.mjs.map +0 -1
- package/dist/settings-CK06at6A.mjs.map +0 -1
- package/dist/step-2-Dcy43H6c.mjs.map +0 -1
- package/dist/step-3-Dav_Yy5B.mjs.map +0 -1
- package/dist/tabs-B7coKvuk.mjs.map +0 -1
- package/dist/topic-filter-BIhCARLH.mjs.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-DOW1_Ph3.mjs","sources":["../../../node_modules/lucide-react/dist/esm/icons/pencil.js","../../../node_modules/lucide-react/dist/esm/icons/user-round-x.js","../src/utils/get-name.ts","../src/views/profile/components/actor-list.tsx","../src/views/profile/components/likes.tsx","../src/views/profile/components/posts.tsx","../src/views/profile/components/unblock-dialog.tsx","../src/views/profile/components/profile-menu.tsx","../src/views/profile/components/unblock-button.tsx","../src/views/profile/components/profile-page.tsx","../src/views/profile/profile.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.553.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z\",\n key: \"1a8usu\"\n }\n ],\n [\"path\", { d: \"m15 5 4 4\", key: \"1mk7zo\" }]\n];\nconst Pencil = createLucideIcon(\"pencil\", __iconNode);\n\nexport { __iconNode, Pencil as default };\n//# sourceMappingURL=pencil.js.map\n","/**\n * @license lucide-react v0.553.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M2 21a8 8 0 0 1 11.873-7\", key: \"74fkxq\" }],\n [\"circle\", { cx: \"10\", cy: \"8\", r: \"5\", key: \"o932ke\" }],\n [\"path\", { d: \"m17 17 5 5\", key: \"p7ous7\" }],\n [\"path\", { d: \"m22 17-5 5\", key: \"gqnmv0\" }]\n];\nconst UserRoundX = createLucideIcon(\"user-round-x\", __iconNode);\n\nexport { __iconNode, UserRoundX as default };\n//# sourceMappingURL=user-round-x.js.map\n","export default function getName(actor: {name: unknown, preferredUsername: unknown}): string {\n if (typeof actor.name === 'string') {\n return actor.name;\n }\n if (typeof actor.preferredUsername === 'string') {\n return actor.preferredUsername;\n }\n if (typeof actor.preferredUsername === 'object' && actor.preferredUsername !== null) {\n if ('@value' in actor.preferredUsername) {\n if (typeof actor.preferredUsername['@value'] === 'string') {\n return actor.preferredUsername['@value'];\n }\n }\n }\n return 'Unknown';\n}\n","import APAvatar from '@src/components/global/ap-avatar';\nimport ActivityItem from '@src/components/activities/activity-item';\nimport FollowButton from '@src/components/global/follow-button';\nimport ProfilePreviewHoverCard from '@components/global/profile-preview-hover-card';\nimport React, {useEffect, useRef} from 'react';\nimport getName from '@src/utils/get-name';\nimport getUsername from '@src/utils/get-username';\nimport {Actor} from '@src/api/activitypub';\nimport {Button, LoadingIndicator, LucideIcon, NoValueLabel, NoValueLabelIcon} from '@tryghost/shade';\nimport {handleProfileClick} from '@src/utils/handle-profile-click';\nimport {useAccountForUser} from '@src/hooks/use-activity-pub-queries';\nimport {useNavigateWithBasePath} from '@src/hooks/use-navigate-with-base-path';\n\ntype ActorListProps = {\n noResultsMessage: string,\n actors: Actor[],\n isLoading: boolean,\n fetchNextPage: () => void,\n hasNextPage: boolean,\n isFetchingNextPage: boolean\n};\n\nconst ActorList: React.FC<ActorListProps> = ({\n noResultsMessage,\n actors,\n isLoading,\n fetchNextPage,\n hasNextPage,\n isFetchingNextPage\n}) => {\n const currentAccountQuery = useAccountForUser('index', 'me');\n const {data: currentUser} = currentAccountQuery;\n\n const observerRef = useRef<IntersectionObserver | null>(null);\n const loadMoreRef = useRef<HTMLDivElement | null>(null);\n\n useEffect(() => {\n if (observerRef.current) {\n observerRef.current.disconnect();\n }\n\n observerRef.current = new IntersectionObserver((entries) => {\n if (entries[0].isIntersecting && hasNextPage && !isFetchingNextPage) {\n fetchNextPage();\n }\n });\n\n if (loadMoreRef.current) {\n observerRef.current.observe(loadMoreRef.current);\n }\n\n return () => {\n if (observerRef.current) {\n observerRef.current.disconnect();\n }\n };\n }, [hasNextPage, isFetchingNextPage, fetchNextPage]);\n\n const navigate = useNavigateWithBasePath();\n\n return (\n <div className='pt-3' data-testid=\"actor-list\">\n {\n hasNextPage === false && actors.length === 0 ? (\n <NoValueLabel>\n <NoValueLabelIcon><LucideIcon.UserRoundPlus /></NoValueLabelIcon>\n {noResultsMessage}\n </NoValueLabel>\n ) : (\n <div className='flex flex-col'>\n {actors.map(({actor, isFollowing, blockedByMe, domainBlockedByMe}) => {\n const actorHandle = actor.handle || getUsername(actor);\n const isCurrentUser = actorHandle === currentUser?.handle;\n\n return (\n <React.Fragment key={actor.id}>\n <ProfilePreviewHoverCard actor={actor} align='center' isCurrentUser={isCurrentUser} side='left'>\n <div>\n <ActivityItem key={actor.id}\n data-testid=\"actor-item\"\n onClick={() => {\n handleProfileClick(actor, navigate);\n }}\n >\n <APAvatar author={actor} />\n <div>\n <div className='text-gray-600 break-anywhere'>\n <span className='mr-1 line-clamp-1 font-bold text-black dark:text-white'>{getName(actor)}</span>\n <div className='line-clamp-1 text-sm'>{actorHandle}</div>\n </div>\n </div>\n {blockedByMe || domainBlockedByMe ?\n <Button className='pointer-events-none ml-auto min-w-[90px]' variant='destructive'>Blocked</Button> :\n !isCurrentUser ? (\n <FollowButton\n className='ml-auto'\n data-testid=\"follow-button\"\n following={isFollowing}\n handle={actorHandle}\n type='secondary'\n />\n ) : null\n }\n </ActivityItem>\n </div>\n </ProfilePreviewHoverCard>\n </React.Fragment>\n );\n })}\n </div>\n )\n }\n <div ref={loadMoreRef} className='h-1'></div>\n {\n (isFetchingNextPage || isLoading) && (\n <div className='mt-6 flex flex-col items-center justify-center gap-4 text-center'>\n <LoadingIndicator size='md' />\n </div>\n )\n }\n </div>\n );\n};\n\nexport default ActorList;\n","import FeedItem from '@src/components/feed/feed-item';\nimport {Activity} from '@src/api/activitypub';\nimport {LoadingIndicator, LucideIcon, NoValueLabel, NoValueLabelIcon, Separator} from '@tryghost/shade';\nimport {useEffect, useRef} from 'react';\nimport {useNavigateWithBasePath} from '@src/hooks/use-navigate-with-base-path';\n\nexport type LikesProps = {\n isLoading: boolean,\n posts: Activity[],\n fetchNextPage: () => void,\n hasNextPage: boolean,\n isFetchingNextPage: boolean\n}\n\nconst Likes: React.FC<LikesProps> = ({\n posts,\n fetchNextPage,\n hasNextPage,\n isFetchingNextPage,\n isLoading\n}) => {\n const observerRef = useRef<IntersectionObserver | null>(null);\n const loadMoreRef = useRef<HTMLDivElement | null>(null);\n const endLoadMoreRef = useRef<HTMLDivElement | null>(null);\n\n // Calculate the index at which to place the loadMoreRef - This will place it ~75% through the list\n const loadMoreIndex = Math.max(0, Math.floor(posts.length * 0.75) - 1);\n\n useEffect(() => {\n if (observerRef.current) {\n observerRef.current.disconnect();\n }\n\n observerRef.current = new IntersectionObserver((entries) => {\n if (entries[0].isIntersecting && hasNextPage && !isFetchingNextPage) {\n fetchNextPage();\n }\n });\n\n if (loadMoreRef.current) {\n observerRef.current.observe(loadMoreRef.current);\n }\n if (endLoadMoreRef.current) {\n observerRef.current.observe(endLoadMoreRef.current);\n }\n\n return () => {\n if (observerRef.current) {\n observerRef.current.disconnect();\n }\n };\n }, [hasNextPage, isFetchingNextPage, fetchNextPage]);\n\n const navigate = useNavigateWithBasePath();\n\n return (\n <>\n {hasNextPage === false && posts.length === 0 && (\n <NoValueLabel>\n <NoValueLabelIcon><LucideIcon.Heart /></NoValueLabelIcon>\n You haven't liked anything yet.\n </NoValueLabel>\n )}\n <ul className='mx-auto flex max-w-[640px] flex-col' data-testid=\"profile-likes-list\">\n {posts.map((activity, index) => (\n <li\n key={`likes-${activity.id}`}\n data-testid=\"profile-like-item\"\n data-test-view-article\n >\n <FeedItem\n actor={activity.actor}\n allowDelete={activity.object.authored}\n commentCount={activity.object.replyCount}\n isLoading={isLoading}\n layout='feed'\n likeCount={activity.object.likeCount}\n object={activity.object}\n repostCount={activity.object.repostCount}\n type={activity.type}\n onClick={() => {\n if (activity.object.type === 'Note') {\n navigate(`/notes/${encodeURIComponent(activity.object.id)}`);\n } else if (activity.object.type === 'Article') {\n navigate(`/reader/${encodeURIComponent(activity.object.id)}`);\n }\n }}\n />\n {index < posts.length - 1 && <Separator />}\n {index === loadMoreIndex && (\n <div ref={loadMoreRef} className='h-1'></div>\n )}\n </li>\n ))}\n {isFetchingNextPage && (\n <li className='flex flex-col items-center justify-center gap-4 text-center'>\n <LoadingIndicator size='md' />\n </li>\n )}\n </ul>\n <div ref={endLoadMoreRef} className='h-1'></div>\n </>\n );\n};\n\nexport default Likes;\n","import FeedItem from '@src/components/feed/feed-item';\nimport {Activity} from '@src/api/activitypub';\nimport {LoadingIndicator, LucideIcon, NoValueLabel, NoValueLabelIcon, Separator} from '@tryghost/shade';\nimport {useEffect, useRef} from 'react';\nimport {useNavigateWithBasePath} from '@src/hooks/use-navigate-with-base-path';\n\nexport type PostsProps = {\n posts: Activity[],\n isLoading: boolean,\n fetchNextPage: () => void,\n hasNextPage: boolean,\n isFetchingNextPage: boolean,\n noResultsMessage: string\n}\n\nconst Posts: React.FC<PostsProps> = ({\n posts,\n fetchNextPage,\n hasNextPage,\n isFetchingNextPage,\n isLoading,\n noResultsMessage\n}) => {\n const observerRef = useRef<IntersectionObserver | null>(null);\n const loadMoreRef = useRef<HTMLDivElement | null>(null);\n const endLoadMoreRef = useRef<HTMLDivElement | null>(null);\n\n // Calculate the index at which to place the loadMoreRef - This will place it ~75% through the list\n const loadMoreIndex = Math.max(0, Math.floor(posts.length * 0.75) - 1);\n\n useEffect(() => {\n if (observerRef.current) {\n observerRef.current.disconnect();\n }\n\n observerRef.current = new IntersectionObserver((entries) => {\n if (entries[0].isIntersecting && hasNextPage && !isFetchingNextPage) {\n fetchNextPage();\n }\n });\n\n if (loadMoreRef.current) {\n observerRef.current.observe(loadMoreRef.current);\n }\n if (endLoadMoreRef.current) {\n observerRef.current.observe(endLoadMoreRef.current);\n }\n\n return () => {\n if (observerRef.current) {\n observerRef.current.disconnect();\n }\n };\n }, [hasNextPage, isFetchingNextPage, fetchNextPage]);\n\n const navigate = useNavigateWithBasePath();\n\n return (\n <>\n {hasNextPage === false && posts.length === 0 && (\n <NoValueLabel>\n <NoValueLabelIcon><LucideIcon.Pencil /></NoValueLabelIcon>\n {noResultsMessage}\n </NoValueLabel>\n )}\n <ul className='mx-auto flex max-w-[640px] flex-col' data-testid=\"profile-posts-list\">\n {posts.map((activity, index) => (\n <li\n key={`posts-${activity.id}`}\n data-testid=\"profile-post-item\"\n data-test-view-article\n >\n <FeedItem\n actor={activity.actor}\n allowDelete={activity.object.authored}\n commentCount={activity.object.replyCount}\n isLoading={isLoading}\n layout='feed'\n likeCount={activity.object.likeCount}\n object={activity.object}\n repostCount={activity.object.repostCount}\n type={activity.type}\n onClick={() => {\n if (activity.object.type === 'Note') {\n navigate(`/notes/${encodeURIComponent(activity.object.id)}`);\n } else if (activity.object.type === 'Article') {\n navigate(`/reader/${encodeURIComponent(activity.object.id)}`);\n }\n }}\n />\n {index < posts.length - 1 && <Separator />}\n {index === loadMoreIndex && (\n <div ref={loadMoreRef} className='h-1'></div>\n )}\n </li>\n ))}\n {isFetchingNextPage && (\n <li className='flex flex-col items-center justify-center gap-4 text-center'>\n <LoadingIndicator size='md' />\n </li>\n )}\n </ul>\n <div ref={endLoadMoreRef} className='h-1'></div>\n </>\n );\n};\n\nexport default Posts;\n","import React, {useCallback, useEffect, useState} from 'react';\nimport {\n AlertDialog,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n AlertDialogTrigger,\n Button,\n H4,\n LucideIcon\n} from '@tryghost/shade';\nimport {toast} from 'sonner';\n\ntype DialogMode = 'idle' | 'dual' | 'userOnly' | 'domainOnly';\n\ninterface UnblockDialogProps {\n handle: string;\n isUserBlocked: boolean;\n isDomainBlocked: boolean;\n onUnblockUser: () => Promise<void> | void;\n onUnblockDomain: () => Promise<void> | void;\n trigger?: React.ReactNode;\n onUnblockComplete?: () => void;\n isOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n}\n\nconst UnblockDialog: React.FC<UnblockDialogProps> = ({\n handle,\n isUserBlocked,\n isDomainBlocked,\n onUnblockUser,\n onUnblockDomain,\n trigger,\n onUnblockComplete,\n isOpen: externalIsOpen,\n onOpenChange: externalOnOpenChange\n}) => {\n const [internalDialogOpen, setInternalDialogOpen] = useState(false);\n const [dialogState, setDialogState] = useState(() => {\n const bothBlocked = isUserBlocked && isDomainBlocked;\n const userOnlyBlocked = isUserBlocked && !isDomainBlocked;\n const domainOnlyBlocked = !isUserBlocked && isDomainBlocked;\n\n let mode: DialogMode = 'idle';\n if (bothBlocked) {\n mode = 'dual';\n } else if (userOnlyBlocked) {\n mode = 'userOnly';\n } else if (domainOnlyBlocked) {\n mode = 'domainOnly';\n }\n\n return {\n mode,\n userUnblocked: false,\n domainUnblocked: false\n };\n });\n\n const isControlled = externalIsOpen !== undefined;\n const dialogOpen = isControlled ? externalIsOpen : internalDialogOpen;\n\n const [wasOpened, setWasOpened] = useState(false);\n\n const initializeDialogState = useCallback(() => {\n const bothBlocked = isUserBlocked && isDomainBlocked;\n const userOnlyBlocked = isUserBlocked && !isDomainBlocked;\n const domainOnlyBlocked = !isUserBlocked && isDomainBlocked;\n\n let mode: DialogMode = 'idle';\n if (bothBlocked) {\n mode = 'dual';\n } else if (userOnlyBlocked) {\n mode = 'userOnly';\n } else if (domainOnlyBlocked) {\n mode = 'domainOnly';\n }\n\n setDialogState(prev => ({\n ...prev,\n mode,\n userUnblocked: false,\n domainUnblocked: false\n }));\n }, [isUserBlocked, isDomainBlocked]);\n\n useEffect(() => {\n if (dialogOpen && !wasOpened) {\n initializeDialogState();\n setWasOpened(true);\n } else if (!dialogOpen) {\n setWasOpened(false);\n }\n }, [dialogOpen, wasOpened, initializeDialogState]);\n\n const handleDialogOpen = () => {\n if (isControlled) {\n externalOnOpenChange?.(true);\n } else {\n setInternalDialogOpen(true);\n }\n };\n\n const handleDialogClose = (open: boolean) => {\n if (!open) {\n if (isControlled) {\n externalOnOpenChange?.(false);\n } else {\n setInternalDialogOpen(false);\n }\n }\n };\n\n const handleUnblock = async () => {\n await onUnblockUser();\n\n setDialogState(prev => ({\n ...prev,\n userUnblocked: true\n }));\n\n if (dialogState.mode !== 'dual' || dialogState.domainUnblocked) {\n handleDialogClose(false);\n onUnblockComplete?.();\n }\n\n toast.success('User unblocked');\n };\n\n const handleDomainUnblock = async () => {\n await onUnblockDomain();\n\n setDialogState(prev => ({\n ...prev,\n domainUnblocked: true\n }));\n\n if (dialogState.mode !== 'dual' || dialogState.userUnblocked) {\n handleDialogClose(false);\n onUnblockComplete?.();\n }\n\n toast.success('Domain unblocked');\n };\n\n const domain = handle.split('@').filter(Boolean)[1];\n\n const renderDualView = () => (\n <>\n <AlertDialogHeader>\n <AlertDialogTitle className='mb-1 flex flex-col gap-1'>\n Unblock\n </AlertDialogTitle>\n <AlertDialogDescription className='mt-4!' asChild>\n <div className='flex flex-col rounded-md border'>\n <div className='flex justify-between gap-6 p-5'>\n <div className='flex flex-col gap-1'>\n <H4>Unblock user</H4>\n <p><span className='font-semibold text-black'>{handle}</span> will be able to follow you and engage with your public posts.</p>\n </div>\n <Button className={`gap-1 ${dialogState.userUnblocked ? 'pointer-events-none border-green bg-green text-white hover:bg-green hover:text-white' : 'text-red hover:text-red-400'}`} variant='outline' onClick={handleUnblock}>\n <LucideIcon.User />\n {dialogState.userUnblocked ? 'User unblocked' : 'Unblock user'}\n </Button>\n </div>\n <div className='border-t' />\n <div className='flex justify-between gap-6 p-5'>\n <div className='flex flex-col gap-1'>\n <H4>Unblock domain</H4>\n <p>Users from <span className='font-semibold text-black'>{domain}</span> will be able to follow you and engage with your public posts.</p>\n </div>\n <Button className={`gap-1 ${dialogState.domainUnblocked ? 'pointer-events-none border-green bg-green text-white hover:bg-green hover:text-white' : 'text-red hover:text-red-400'}`} variant='outline' onClick={handleDomainUnblock}>\n <LucideIcon.Globe />\n {dialogState.domainUnblocked ? 'Domain unblocked' : 'Unblock domain'}\n </Button>\n </div>\n </div>\n </AlertDialogDescription>\n </AlertDialogHeader>\n <AlertDialogFooter>\n <Button onClick={() => handleDialogClose(false)}>OK</Button>\n </AlertDialogFooter>\n </>\n );\n\n const renderSingleView = () => {\n const isUserBlock = dialogState.mode === 'userOnly';\n\n return (\n <>\n <AlertDialogHeader>\n <AlertDialogTitle className='mb-1 flex flex-col gap-1'>\n {isUserBlock ? 'Unblock this user?' : 'Unblock this domain?'}\n </AlertDialogTitle>\n <AlertDialogDescription>\n {isUserBlock\n ? <><span className='font-semibold text-black'>{handle}</span> will be able to follow you and engage with your public posts.</>\n : <>Users from <span className='font-semibold text-black'>{domain}</span> will be able to follow you and engage with your public posts.</>\n }\n </AlertDialogDescription>\n </AlertDialogHeader>\n <AlertDialogFooter>\n <AlertDialogCancel>Cancel</AlertDialogCancel>\n <Button onClick={isUserBlock ? handleUnblock : handleDomainUnblock}>\n Unblock\n </Button>\n </AlertDialogFooter>\n </>\n );\n };\n\n return (\n <AlertDialog open={dialogOpen} onOpenChange={handleDialogClose}>\n {trigger && (\n <AlertDialogTrigger asChild onClick={handleDialogOpen}>\n {trigger}\n </AlertDialogTrigger>\n )}\n <AlertDialogContent className={`${dialogState.mode === 'dual' && 'max-w-[600px]'}`}>\n {dialogState.mode === 'dual' ? renderDualView() : renderSingleView()}\n </AlertDialogContent>\n </AlertDialog>\n );\n};\n\nexport default UnblockDialog;\n","import React, {useState} from 'react';\nimport UnblockDialog from './unblock-dialog';\nimport {Account} from '@src/api/activitypub';\nimport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n Button,\n Popover,\n PopoverClose,\n PopoverContent,\n PopoverTrigger,\n buttonVariants\n} from '@tryghost/shade';\n\ninterface ProfileMenuProps {\n account?: Account,\n children: React.ReactNode;\n onCopyHandle: () => void;\n onBlockAccount: () => void;\n onBlockDomain: () => void;\n disabled?: boolean;\n isBlocked?: boolean;\n isDomainBlocked?: boolean;\n}\n\nconst ProfileMenu: React.FC<ProfileMenuProps> = ({\n account,\n children,\n onCopyHandle,\n onBlockAccount,\n onBlockDomain,\n disabled = false,\n isBlocked = false,\n isDomainBlocked = false\n}) => {\n const [dialogType, setDialogType] = useState<'user' | 'domain' | null>(null);\n const [dialogOpen, setDialogOpen] = useState(false);\n\n const handleCopyHandleClick = (e: React.MouseEvent<HTMLElement>) => {\n e.stopPropagation();\n onCopyHandle();\n };\n\n const handleBlockAccountClick = (e: React.MouseEvent<HTMLElement>) => {\n e.stopPropagation();\n onBlockAccount();\n };\n\n const handleBlockDomainClick = (e: React.MouseEvent<HTMLElement>) => {\n e.stopPropagation();\n onBlockDomain();\n };\n\n const handle = account?.handle;\n const domain = handle?.split('@').filter(Boolean)[1];\n\n const renderBlockView = () => (\n <AlertDialog open={dialogOpen} onOpenChange={setDialogOpen}>\n <AlertDialogContent onClick={e => e.stopPropagation()}>\n <AlertDialogHeader>\n <AlertDialogTitle className='mb-1 flex flex-col gap-1'>\n {dialogType === 'user' ? 'Block this user?' : 'Block this domain?'}\n </AlertDialogTitle>\n <AlertDialogDescription>\n {dialogType === 'user'\n ? <><span className='font-semibold text-black'>{handle}</span> will be able to see your public posts, but will no longer be able follow you or interact with your content on the social web.</>\n : <>All users from <span className='font-semibold text-black'>{domain}</span> will be able to see your public posts, but won't be able to follow you or interact with your content.</>\n }\n </AlertDialogDescription>\n </AlertDialogHeader>\n <AlertDialogFooter>\n {dialogType !== 'domain' &&\n <Button className='-ml-3 mr-auto hover:bg-transparent hover:opacity-80' variant='ghost' onClick={(e) => {\n e.stopPropagation();\n setDialogType('domain');\n }}>Block domain instead</Button>\n }\n <AlertDialogCancel onClick={e => e.stopPropagation()}>\n Cancel\n </AlertDialogCancel>\n <AlertDialogAction\n className={buttonVariants({variant: 'destructive'})}\n onClick={dialogType === 'user' ? handleBlockAccountClick : handleBlockDomainClick}\n >\n Block\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n );\n\n const renderUnblockView = () => (\n account && <UnblockDialog\n handle={account.handle}\n isDomainBlocked={account.domainBlockedByMe}\n isOpen={dialogOpen}\n isUserBlocked={account.blockedByMe}\n onOpenChange={setDialogOpen}\n onUnblockDomain={onBlockDomain}\n onUnblockUser={onBlockAccount}\n />\n );\n\n return (\n <>\n <Popover>\n <PopoverTrigger disabled={disabled} asChild onClick={e => e.stopPropagation()}>\n {children}\n </PopoverTrigger>\n <PopoverContent align=\"end\" className='p-2'>\n <div className='flex w-48 flex-col'>\n <PopoverClose asChild>\n <Button className='justify-start' variant='ghost' onClick={handleCopyHandleClick}>\n Copy handle\n </Button>\n </PopoverClose>\n <PopoverClose asChild>\n <Button className='justify-start text-red hover:bg-red/5 hover:text-red' variant='ghost' onClick={(e) => {\n e.stopPropagation();\n if (!isBlocked && !isDomainBlocked) {\n setDialogType('user');\n }\n setDialogOpen(true);\n }}>\n {isBlocked ? 'Unblock user' : isDomainBlocked ? 'Unblock domain' : 'Block user'}\n </Button>\n </PopoverClose>\n </div>\n </PopoverContent>\n </Popover>\n {isBlocked || isDomainBlocked ? renderUnblockView() : renderBlockView()}\n </>\n );\n};\n\nexport default ProfileMenu;\n","import React, {useState} from 'react';\nimport UnblockDialog from './unblock-dialog';\nimport {Account} from '@src/api/activitypub';\nimport {Button} from '@tryghost/shade';\n\ninterface UnblockButtonProps {\n account: Account,\n onUnblock: () => void;\n onDomainUnblock: () => void;\n className?: string;\n}\n\nconst UnblockButton: React.FC<UnblockButtonProps> = ({\n account,\n onUnblock,\n onDomainUnblock,\n className = ''\n}) => {\n const [isHovered, setIsHovered] = useState(false);\n\n const trigger = (\n <Button\n className={`min-w-[90px] ${className}`}\n variant='destructive'\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n >\n {isHovered ? 'Unblock' : 'Blocked'}\n </Button>\n );\n\n return (\n <UnblockDialog\n handle={account.handle}\n isDomainBlocked={account.domainBlockedByMe}\n isUserBlocked={account.blockedByMe}\n trigger={trigger}\n onUnblockDomain={onDomainUnblock}\n onUnblockUser={onUnblock}\n />\n );\n};\n\nexport default UnblockButton;\n","import APAvatar from '@src/components/global/ap-avatar';\nimport EditProfile from '@src/views/preferences/components/edit-profile';\nimport FollowButton from '@src/components/global/follow-button';\nimport Layout from '@src/components/layout';\nimport ProfileMenu from './profile-menu';\nimport UnblockButton from './unblock-button';\nimport {Account} from '@src/api/activitypub';\nimport {Badge, Button, Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger, H2, H4, LucideIcon, NoValueLabel, NoValueLabelIcon, Skeleton, Tabs, TabsContent, TabsList, TabsTrigger, TabsTriggerCount, abbreviateNumber} from '@tryghost/shade';\nimport {EmptyViewIcon, EmptyViewIndicator} from '@src/components/global/empty-view-indicator';\nimport {SettingAction} from '@src/views/preferences/components/settings';\nimport {openLinksInNewTab, sanitizeHtml, stripHtml} from '@src/utils/content-formatters';\nimport {toast} from 'sonner';\nimport {useAccountForUser, useBlockDomainMutationForUser, useBlockMutationForUser, useUnblockDomainMutationForUser, useUnblockMutationForUser} from '@src/hooks/use-activity-pub-queries';\nimport {useEffect, useMemo, useRef, useState} from 'react';\nimport {useLocation, useNavigationStack, useParams} from '@tryghost/admin-x-framework';\nimport {useNavigateWithBasePath} from '@src/hooks/use-navigate-with-base-path';\nimport type {ProfileTab} from '../profile';\n\nconst noop = () => {};\n\ntype ProfilePageProps = {\n account: Account,\n customFields: Array<{\n name: string;\n value: string;\n }>,\n postsTab: React.ReactNode,\n likesTab: React.ReactNode,\n followingTab: React.ReactNode,\n followersTab: React.ReactNode,\n isLoadingAccount: boolean\n}\n\nconst ProfilePage:React.FC<ProfilePageProps> = ({\n account,\n customFields,\n isLoadingAccount,\n postsTab,\n likesTab,\n followingTab,\n followersTab\n}) => {\n const params = useParams<{handle?: string; tab?: string}>();\n const location = useLocation();\n const navigate = useNavigateWithBasePath();\n const {canGoBack} = useNavigationStack();\n\n const profilePath = params.handle ? `/profile/${params.handle}` : '/profile';\n const likesEnabled = !params.handle;\n\n const tabSlug = params.handle\n ? (params.tab || '')\n : (location.pathname.split('/').pop() || '');\n\n const allowedTabs = useMemo<ProfileTab[]>(() => (\n likesEnabled ? ['likes', 'following', 'followers'] : ['following', 'followers']\n ), [likesEnabled]);\n const activeTab: ProfileTab = allowedTabs.includes(tabSlug as ProfileTab) ? tabSlug as ProfileTab : 'posts';\n\n const blockMutation = useBlockMutationForUser('index');\n const unblockMutation = useUnblockMutationForUser('index');\n const blockDomainMutation = useBlockDomainMutationForUser('index');\n const unblockDomainMutation = useUnblockDomainMutationForUser('index');\n\n const currentAccountQuery = useAccountForUser('index', 'me');\n const {data: currentUser} = params.handle ? currentAccountQuery : {data: undefined};\n const isCurrentUser = params.handle === currentUser?.handle || !params.handle;\n\n const isBlocked = account?.blockedByMe;\n const isDomainBlocked = account?.domainBlockedByMe;\n const [viewBlockedPosts, setViewBlockedPosts] = useState(false);\n const [copied, setCopied] = useState(false);\n const copyTimeoutRef = useRef<number | null>(null);\n\n useEffect(() => () => {\n if (copyTimeoutRef.current) {\n window.clearTimeout(copyTimeoutRef.current);\n }\n }, []);\n\n const handleBlock = () => {\n if (isBlocked) {\n unblockMutation.mutate(account);\n } else {\n blockMutation.mutate(account);\n toast.success('User blocked');\n }\n setViewBlockedPosts(false);\n };\n\n const handleDomainBlock = () => {\n if (isDomainBlocked) {\n unblockDomainMutation.mutate({url: account.apId, handle: account.handle});\n } else {\n blockDomainMutation.mutate({url: account.apId, handle: account.handle});\n toast.success('Domain blocked');\n }\n setViewBlockedPosts(false);\n };\n\n const handleCopy = async () => {\n if (!account?.handle || !navigator?.clipboard?.writeText) {\n toast.error('Unable to copy handle');\n return;\n }\n try {\n await navigator.clipboard.writeText(account.handle);\n setCopied(true);\n toast.success('Handle copied');\n if (copyTimeoutRef.current) {\n window.clearTimeout(copyTimeoutRef.current);\n }\n copyTimeoutRef.current = window.setTimeout(() => setCopied(false), 2000);\n } catch {\n toast.error('Failed to copy handle');\n setCopied(false);\n }\n };\n\n const [isExpanded, setisExpanded] = useState(false);\n const [isEditingProfile, setIsEditingProfile] = useState(false);\n\n const toggleExpand = () => {\n setisExpanded(!isExpanded);\n };\n\n const contentRef = useRef<HTMLDivElement | null>(null);\n const [isOverflowing, setIsOverflowing] = useState(false);\n\n useEffect(() => {\n if (contentRef.current) {\n setIsOverflowing(contentRef.current.scrollHeight > 160); // Compare content height to max height\n }\n }, [isExpanded, account?.bio, customFields, isLoadingAccount]);\n\n useEffect(() => {\n if (!tabSlug) {\n return;\n }\n\n if (!allowedTabs.includes(tabSlug as ProfileTab)) {\n navigate(profilePath, {replace: true});\n }\n }, [allowedTabs, profilePath, navigate, tabSlug]);\n\n const createTabPath = (tab: ProfileTab) => {\n if (tab === 'posts') {\n return profilePath;\n }\n\n return `${profilePath}/${tab}`;\n };\n\n const handleTabChange = (tab: ProfileTab) => {\n if (tab === activeTab) {\n return;\n }\n\n navigate(createTabPath(tab), {replace: true});\n };\n\n if (!isLoadingAccount && !account) {\n return (\n <Layout>\n <div className='mx-auto mt-4 flex w-full max-w-[620px] flex-col items-center [&_svg]:translate-x-px'>\n <EmptyViewIndicator>\n <EmptyViewIcon><LucideIcon.UserRoundX /></EmptyViewIcon>\n <div>Profile not found</div>\n </EmptyViewIndicator>\n </div>\n </Layout>\n );\n }\n\n return (\n <Layout>\n <div className='z-0 mx-[max(-4vw,-32px)] -mt-9 flex flex-col items-center pb-16'>\n <div className='mx-auto w-full'>\n <>\n {account?.bannerImageUrl ?\n <div className='h-[15vw] min-h-[200px] w-full overflow-hidden bg-gradient-to-tr from-gray-200 to-gray-100'>\n <img\n alt={account?.name}\n className='size-full object-cover'\n referrerPolicy='no-referrer'\n src={account?.bannerImageUrl}\n />\n </div>\n :\n <div className='h-[max(8vw,132px)] w-full overflow-hidden bg-gradient-to-tr from-white to-white dark:from-black dark:to-black'></div>\n }\n <div className={`mx-auto max-w-[620px] px-6 ${(!account?.bannerImageUrl && !canGoBack) ? '-mt-8' : '-mt-12'}`}>\n <div className='flex items-end justify-between'>\n <div className='-ml-2 rounded-full bg-white p-1 dark:bg-black'>\n {isLoadingAccount ?\n <Skeleton className='size-[92px] rounded-full' />\n :\n <APAvatar\n author={\n {\n icon: {\n url: account?.avatarUrl\n },\n name: account?.name,\n handle: account?.handle\n }\n }\n size='lg'\n />\n }\n </div>\n {!isCurrentUser && !isLoadingAccount &&\n <div className='flex gap-2'>\n {!(isBlocked || isDomainBlocked) ?\n <FollowButton\n following={account?.followedByMe}\n handle={account?.handle}\n type='primary'\n onFollow={noop}\n onUnfollow={noop}\n /> :\n <UnblockButton\n account={account}\n onDomainUnblock={handleDomainBlock}\n onUnblock={handleBlock}\n />\n }\n <ProfileMenu\n account={account}\n isBlocked={isBlocked}\n isDomainBlocked={isDomainBlocked}\n onBlockAccount={handleBlock}\n onBlockDomain={handleDomainBlock}\n onCopyHandle={handleCopy}\n >\n <Button aria-label='Open profile menu' variant='outline'><LucideIcon.Ellipsis /></Button>\n </ProfileMenu>\n </div>\n }\n {isCurrentUser && !isLoadingAccount &&\n <Dialog open={isEditingProfile} onOpenChange={setIsEditingProfile}>\n <DialogTrigger>\n <SettingAction><Button variant='secondary'>Edit profile</Button></SettingAction>\n </DialogTrigger>\n <DialogContent className='w-full max-w-[520px]' onOpenAutoFocus={e => e.preventDefault()}>\n <DialogHeader>\n <DialogTitle>Profile settings</DialogTitle>\n </DialogHeader>\n {account && <EditProfile account={account} setIsEditingProfile={setIsEditingProfile} />}\n </DialogContent>\n </Dialog>\n }\n </div>\n <H2 className='mt-4 truncate break-anywhere'>{!isLoadingAccount ? account?.name : <Skeleton className='w-32' />}</H2>\n <div className='mb-4 flex items-center gap-2'>\n <a className='inline-flex max-w-full truncate text-[1.5rem] text-gray-800 hover:text-gray-900 dark:text-gray-600 dark:hover:text-gray-500' href={account?.url} rel='noopener noreferrer' target='_blank'>\n <span className='truncate'>{!isLoadingAccount ? account?.handle : <Skeleton className='w-full max-w-56' />}</span>\n </a>\n {!isLoadingAccount && (\n <Button className='-ml-1.5 size-6 p-0 text-gray-800 hover:text-gray-900 dark:text-gray-700 dark:hover:text-gray-600' title='Copy handle' variant='link' onClick={handleCopy}>\n {!copied ?\n <LucideIcon.Copy size={16} /> :\n <LucideIcon.Check size={16} />\n }\n </Button>\n )}\n {account?.followsMe && !isLoadingAccount && (\n <Badge className='mt-px whitespace-nowrap' variant='secondary'>Follows you</Badge>\n )}\n </div>\n {(account?.bio || customFields?.length > 0) && (<div ref={contentRef} className={`ap-profile-content relative text-[1.5rem] break-anywhere [&>p]:mb-3 ${isExpanded ? 'max-h-none pb-7' : 'max-h-[160px] overflow-hidden'} relative`}>\n {!isLoadingAccount ?\n <div dangerouslySetInnerHTML={{__html: sanitizeHtml(openLinksInNewTab(stripHtml(account?.bio ?? '', ['a', 'br'])))}} /> :\n <>\n <Skeleton />\n <Skeleton className='w-full max-w-48' />\n </>\n }\n {customFields?.map((attachment: {name: string, value: string}) => (\n <span className='mt-3 line-clamp-1 flex flex-col text-[1.5rem]'>\n <span className={`text-xs font-semibold`}>{attachment.name}</span>\n <span dangerouslySetInnerHTML={{__html: sanitizeHtml(attachment.value)}} className='ap-profile-content truncate'/>\n </span>\n ))}\n {!isExpanded && isOverflowing && (\n <div className='absolute inset-x-0 bottom-0 h-16 bg-gradient-to-t from-white via-white/100 via-60% to-transparent dark:from-black dark:via-black/100' />\n )}\n {isOverflowing && <Button\n className='absolute bottom-0 h-auto p-0 text-md'\n variant='link'\n onClick={toggleExpand}\n >{isExpanded ? 'Show less' : 'Show all'}</Button>}\n </div>)}\n <Tabs\n key={params.handle || account?.handle || 'current-user'}\n className='mt-5'\n value={activeTab}\n variant='underline'\n onValueChange={value => handleTabChange(value as ProfileTab)}\n >\n <TabsList>\n <TabsTrigger value=\"posts\">Posts</TabsTrigger>\n {likesEnabled && <TabsTrigger value=\"likes\">\n Likes\n <TabsTriggerCount>{abbreviateNumber(account?.likedCount || 0)}</TabsTriggerCount>\n </TabsTrigger>}\n <TabsTrigger value=\"following\">\n Following\n <TabsTriggerCount>{abbreviateNumber(account?.followingCount || 0)}</TabsTriggerCount>\n </TabsTrigger>\n <TabsTrigger value=\"followers\">\n Followers\n <TabsTriggerCount>{abbreviateNumber(account?.followerCount || 0)}</TabsTriggerCount>\n </TabsTrigger>\n </TabsList>\n <TabsContent value='posts'>\n {((isBlocked || isDomainBlocked) && !viewBlockedPosts) ?\n <NoValueLabel>\n <NoValueLabelIcon><LucideIcon.Ban /></NoValueLabelIcon>\n <div className='mt-2 flex flex-col items-center gap-0.5'>\n <H4>{account.name} is blocked</H4>\n <p>You can view the posts, but it won't unblock the user.</p>\n <Button className='mt-4' variant='secondary' onClick={() => setViewBlockedPosts(true)}>View posts</Button>\n </div>\n </NoValueLabel> :\n postsTab\n }\n </TabsContent>\n {likesEnabled && <TabsContent value='likes'>\n {likesTab}\n </TabsContent>}\n <TabsContent value='following'>\n {followingTab}\n </TabsContent>\n <TabsContent value='followers'>\n {followersTab}\n </TabsContent>\n </Tabs>\n </div>\n </>\n </div>\n </div>\n </Layout>\n );\n};\n\nexport default ProfilePage;\n","import ActorList from './components/actor-list';\nimport AppError from '@components/layout/error';\nimport Likes from './components/likes';\nimport Posts from './components/posts';\nimport ProfilePage from './components/profile-page';\nimport React, {useEffect} from 'react';\nimport {Activity, isApiError} from '@src/api/activitypub';\nimport {useAccountFollowsForUser, useAccountForUser, usePostsByAccount, usePostsLikedByAccount} from '@hooks/use-activity-pub-queries';\nimport {useParams} from '@tryghost/admin-x-framework';\n\nexport type ProfileTab = 'posts' | 'likes' | 'following' | 'followers';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\ninterface ProfileProps {}\n\nconst PostsTab:React.FC<{handle: string}> = ({handle}) => {\n const {postsByAccountQuery} = usePostsByAccount(handle ? handle : 'me', {enabled: true});\n\n const {\n data,\n fetchNextPage,\n hasNextPage,\n isFetchingNextPage,\n isLoading\n } = postsByAccountQuery;\n\n const posts = data?.pages.flatMap((page: {posts: Activity[]}) => page.posts) ?? Array.from({length: 5}, (_, index) => ({id: `placeholder-${index}`, object: {}}));\n\n return <Posts\n fetchNextPage={fetchNextPage}\n hasNextPage={hasNextPage!}\n isFetchingNextPage={isFetchingNextPage}\n isLoading={isLoading}\n noResultsMessage={handle ? `${handle} hasn't posted anything yet` : `You haven't posted anything yet.`}\n posts={posts}\n />;\n};\n\nconst LikesTab: React.FC = () => {\n const {postsLikedByAccountQuery} = usePostsLikedByAccount({enabled: true});\n const {data, fetchNextPage, hasNextPage, isFetchingNextPage, isLoading} = postsLikedByAccountQuery;\n\n const posts = data?.pages.flatMap(page => page.posts) ?? Array.from({length: 5}, (_, index) => ({id: `placeholder-${index}`, object: {}}));\n\n return <Likes\n fetchNextPage={fetchNextPage}\n hasNextPage={hasNextPage!}\n isFetchingNextPage={isFetchingNextPage}\n isLoading={isLoading}\n posts={posts}\n />;\n};\n\nconst FollowingTab: React.FC<{handle: string}> = ({handle}) => {\n const accountQuery = useAccountFollowsForUser(handle === '' ? 'me' : handle, 'following');\n\n const {\n data,\n fetchNextPage,\n hasNextPage,\n isFetchingNextPage,\n isLoading\n } = accountQuery;\n\n const actors = data?.pages.flatMap((page) => {\n if ('following' in page) {\n return page.following;\n } else if ('accounts' in page) {\n return page.accounts.map(account => ({\n actor: {\n id: account.id,\n name: account.name,\n handle: account.handle,\n icon: {\n url: account.avatarUrl\n }\n },\n isFollowing: account.isFollowing,\n blockedByMe: account.blockedByMe,\n domainBlockedByMe: account.domainBlockedByMe\n }));\n }\n return [];\n }) ?? [];\n\n return (\n <ActorList\n actors={actors}\n fetchNextPage={fetchNextPage}\n hasNextPage={hasNextPage!}\n isFetchingNextPage={isFetchingNextPage}\n isLoading={isLoading}\n noResultsMessage={`${handle || 'You'} have no following`}\n />\n );\n};\n\nconst FollowersTab: React.FC<{handle: string}> = ({handle}) => {\n const accountQuery = useAccountFollowsForUser(handle === '' ? 'me' : handle, 'followers');\n\n const {\n data,\n fetchNextPage,\n hasNextPage,\n isFetchingNextPage,\n isLoading\n } = accountQuery;\n\n const actors = data?.pages.flatMap((page) => {\n if ('followers' in page) {\n return page.followers;\n } else if ('accounts' in page) {\n return page.accounts.map(account => ({\n actor: {\n id: account.id,\n name: account.name,\n handle: account.handle,\n icon: {\n url: account.avatarUrl\n }\n },\n isFollowing: account.isFollowing\n }));\n }\n return [];\n }) ?? [];\n\n return (\n <ActorList\n actors={actors}\n fetchNextPage={fetchNextPage}\n hasNextPage={hasNextPage!}\n isFetchingNextPage={isFetchingNextPage}\n isLoading={isLoading}\n noResultsMessage={`${handle || 'You'} have no followers yet`}\n />\n );\n};\n\nconst Profile: React.FC<ProfileProps> = ({}) => {\n const params = useParams();\n\n const {data: account, isLoading: isLoadingAccount, error: accountError, refetch} = useAccountForUser('index', (params.handle || 'me'));\n\n useEffect(() => {\n refetch();\n }, [params.handle, refetch]);\n\n if (accountError && isApiError(accountError) && accountError.statusCode !== 404) {\n return <AppError errorCode={accountError.code} statusCode={accountError.statusCode} />;\n }\n\n const customFields = Object.keys(account?.customFields || {}).map((key) => {\n return {\n name: key,\n value: account!.customFields[key]\n };\n }) || [];\n\n const postsTab = <PostsTab handle={params.handle || ''} />;\n const likesTab = <LikesTab />;\n const followingTab = <FollowingTab handle={params.handle || ''} />;\n const followersTab = <FollowersTab handle={params.handle || ''} />;\n\n return <ProfilePage\n account={account!}\n customFields={customFields}\n followersTab={followersTab}\n followingTab={followingTab}\n isLoadingAccount={isLoadingAccount}\n likesTab={likesTab}\n postsTab={postsTab}\n />;\n};\n\nexport default Profile;\n"],"names":["__iconNode","Pencil","createLucideIcon","UserRoundX","getName","actor","ActorList","noResultsMessage","actors","isLoading","fetchNextPage","hasNextPage","isFetchingNextPage","currentAccountQuery","useAccountForUser","currentUser","observerRef","useRef","loadMoreRef","useEffect","entries","navigate","useNavigateWithBasePath","jsxs","NoValueLabel","jsx","NoValueLabelIcon","LucideIcon.UserRoundPlus","isFollowing","blockedByMe","domainBlockedByMe","actorHandle","getUsername","isCurrentUser","React","ProfilePreviewHoverCard","ActivityItem","handleProfileClick","APAvatar","Button","FollowButton","LoadingIndicator","Likes","posts","endLoadMoreRef","loadMoreIndex","Fragment","LucideIcon.Heart","activity","index","FeedItem","Separator","Posts","LucideIcon.Pencil","UnblockDialog","handle","isUserBlocked","isDomainBlocked","onUnblockUser","onUnblockDomain","trigger","onUnblockComplete","externalIsOpen","externalOnOpenChange","internalDialogOpen","setInternalDialogOpen","useState","dialogState","setDialogState","bothBlocked","userOnlyBlocked","domainOnlyBlocked","mode","isControlled","dialogOpen","wasOpened","setWasOpened","initializeDialogState","useCallback","prev","handleDialogOpen","handleDialogClose","open","handleUnblock","toast","handleDomainUnblock","domain","renderDualView","AlertDialogHeader","AlertDialogTitle","AlertDialogDescription","H4","LucideIcon.User","LucideIcon.Globe","AlertDialogFooter","renderSingleView","isUserBlock","AlertDialogCancel","AlertDialog","AlertDialogTrigger","AlertDialogContent","ProfileMenu","account","children","onCopyHandle","onBlockAccount","onBlockDomain","disabled","isBlocked","dialogType","setDialogType","setDialogOpen","handleCopyHandleClick","e","handleBlockAccountClick","handleBlockDomainClick","renderBlockView","AlertDialogAction","buttonVariants","renderUnblockView","Popover","PopoverTrigger","PopoverContent","PopoverClose","UnblockButton","onUnblock","onDomainUnblock","className","isHovered","setIsHovered","noop","ProfilePage","customFields","isLoadingAccount","postsTab","likesTab","followingTab","followersTab","params","useParams","location","useLocation","canGoBack","useNavigationStack","profilePath","likesEnabled","tabSlug","allowedTabs","useMemo","activeTab","blockMutation","useBlockMutationForUser","unblockMutation","useUnblockMutationForUser","blockDomainMutation","useBlockDomainMutationForUser","unblockDomainMutation","useUnblockDomainMutationForUser","viewBlockedPosts","setViewBlockedPosts","copied","setCopied","copyTimeoutRef","handleBlock","handleDomainBlock","handleCopy","_a","isExpanded","setisExpanded","isEditingProfile","setIsEditingProfile","toggleExpand","contentRef","isOverflowing","setIsOverflowing","createTabPath","tab","handleTabChange","Layout","EmptyViewIndicator","EmptyViewIcon","LucideIcon.UserRoundX","Skeleton","LucideIcon.Ellipsis","Dialog","DialogTrigger","SettingAction","DialogContent","DialogHeader","DialogTitle","EditProfile","H2","LucideIcon.Check","LucideIcon.Copy","Badge","sanitizeHtml","openLinksInNewTab","stripHtml","attachment","Tabs","value","TabsList","TabsTrigger","TabsTriggerCount","abbreviateNumber","TabsContent","LucideIcon.Ban","PostsTab","postsByAccountQuery","usePostsByAccount","data","page","_","LikesTab","postsLikedByAccountQuery","usePostsLikedByAccount","FollowingTab","accountQuery","useAccountFollowsForUser","FollowersTab","Profile","accountError","refetch","isApiError","AppError","key"],"mappings":"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","x_google_ignoreList":[0,1]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-DRdHe0Xx.mjs","sources":["../../../node_modules/lucide-react/dist/esm/icons/sprout.js","../src/views/explore/explore.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.553.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M14 9.536V7a4 4 0 0 1 4-4h1.5a.5.5 0 0 1 .5.5V5a4 4 0 0 1-4 4 4 4 0 0 0-4 4c0 2 1 3 1 5a5 5 0 0 1-1 3\",\n key: \"139s4v\"\n }\n ],\n [\"path\", { d: \"M4 9a5 5 0 0 1 8 4 5 5 0 0 1-8-4\", key: \"1dlkgp\" }],\n [\"path\", { d: \"M5 21h14\", key: \"11awu3\" }]\n];\nconst Sprout = createLucideIcon(\"sprout\", __iconNode);\n\nexport { __iconNode, Sprout as default };\n//# sourceMappingURL=sprout.js.map\n","import APAvatar from '@src/components/global/ap-avatar';\nimport FollowButton from '@src/components/global/follow-button';\nimport Layout from '@components/layout';\nimport ProfilePreviewHoverCard from '@components/global/profile-preview-hover-card';\nimport React, {useEffect} from 'react';\nimport TopicFilter, {type Topic} from '@src/components/topic-filter';\nimport {type Account, type ExploreAccount} from '@src/api/activitypub';\nimport {Button, H4, LoadingIndicator, LucideIcon, Skeleton} from '@tryghost/shade';\nimport {openLinksInNewTab, sanitizeHtml, stripHtml} from '@src/utils/content-formatters';\nimport {useAccountForUser, useExploreProfilesForUserByTopic} from '@hooks/use-activity-pub-queries';\nimport {useNavigateWithBasePath} from '@src/hooks/use-navigate-with-base-path';\nimport {useOnboardingStatus} from '@src/components/layout/onboarding';\nimport {useParams} from '@tryghost/admin-x-framework';\n\ninterface ExploreProfileProps {\n profile: ExploreAccount;\n update: (id: string, updated: Partial<Account>) => void;\n isLoading: boolean;\n}\n\nexport const ExploreProfile: React.FC<ExploreProfileProps & {\n onOpenChange?: (open: boolean) => void;\n}> = ({profile, update, isLoading, onOpenChange}) => {\n const currentAccountQuery = useAccountForUser('index', 'me');\n const {data: currentUser} = currentAccountQuery;\n const isCurrentUser = profile.handle === currentUser?.handle;\n\n const onFollow = () => {\n update(profile.id, {\n followedByMe: true\n });\n };\n\n const onUnfollow = () => {\n update(profile.id, {\n followedByMe: false\n });\n };\n\n const navigate = useNavigateWithBasePath();\n\n return (\n <div\n className='flex w-full cursor-pointer items-start gap-3 pt-4 [&:last-of-type>:nth-child(2)]:border-none'\n onClick={() => {\n navigate(`/profile/${profile.handle}`);\n }}\n >\n <div className='flex w-full flex-col gap-1 border-b border-gray-200 pb-4 dark:border-gray-950'>\n <div className='flex items-center justify-between gap-3'>\n <ProfilePreviewHoverCard actor={profile as Account} isCurrentUser={isCurrentUser}>\n <div className='flex gap-3'>\n <APAvatar author={\n {\n icon: {\n url: profile.avatarUrl\n },\n name: profile.name,\n handle: profile.handle\n }\n } onClick={() => onOpenChange?.(false)} />\n <div className='-mt-0.5 flex grow flex-col break-anywhere'>\n <span className='line-clamp-1 font-semibold text-black dark:text-white'>{!isLoading ? profile.name : <Skeleton className='w-full max-w-48' />}</span>\n <span className='line-clamp-1 text-md text-gray-700 dark:text-gray-600'>{!isLoading ? profile.handle : <Skeleton className='w-32' />}</span>\n </div>\n </div>\n </ProfilePreviewHoverCard>\n {!isLoading ? (\n !isCurrentUser ? (\n <FollowButton\n className='ml-auto'\n following={profile.followedByMe}\n handle={profile.handle}\n type='primary'\n onFollow={onFollow}\n onUnfollow={onUnfollow}\n />\n ) : null\n ) : (\n <div className='inline-flex items-center'>\n <Skeleton className='w-24' />\n </div>\n )}\n </div>\n <div className='pl-[52px]'>\n {isLoading ?\n <Skeleton className='w-full max-w-96' />\n :\n profile.bio &&\n <div\n dangerouslySetInnerHTML={{__html: sanitizeHtml(openLinksInNewTab(stripHtml(profile.bio, ['a', 'br'])))}}\n className='ap-profile-content pointer-events-none mt-0 line-clamp-2 max-w-[460px] break-anywhere'\n />\n }\n </div>\n </div>\n </div>\n );\n};\n\nconst Explore: React.FC = () => {\n const {isExplainerClosed, setExplainerClosed} = useOnboardingStatus();\n const params = useParams<{topic?: string}>();\n const navigate = useNavigateWithBasePath();\n\n const topic: Topic = (params.topic as Topic) || 'top';\n\n const {exploreProfilesQuery, updateExploreProfile} = useExploreProfilesForUserByTopic('index', topic);\n const {data: exploreProfilesData, isLoading: isLoadingExploreProfiles, fetchNextPage, hasNextPage, isFetchingNextPage} = exploreProfilesQuery;\n\n const emptyProfiles = Array(10).fill(null).map((_, i) => ({\n id: `skeleton-${i}`,\n name: '',\n handle: '',\n avatarUrl: '',\n bio: '',\n url: '',\n followedByMe: false\n }));\n\n const profiles = exploreProfilesData?.pages.flatMap(page => page.accounts) || [];\n\n useEffect(() => {\n const node = document.querySelector('.load-more-trigger');\n if (!node) {\n return;\n }\n\n const observer = new IntersectionObserver(\n (entries) => {\n if (entries[0].isIntersecting && hasNextPage && !isFetchingNextPage) {\n fetchNextPage();\n }\n },\n {threshold: 0.1}\n );\n\n observer.observe(node);\n return () => observer.disconnect();\n }, [hasNextPage, isFetchingNextPage, fetchNextPage]);\n\n return (\n <Layout>\n {!isExplainerClosed &&\n <div className='relative mb-6 flex items-start gap-1 rounded-md bg-gradient-to-r from-[#CFB0FF66] to-[#B6E8FF66] p-4 pr-10 dark:from-[#CFB0FF20] dark:to-[#B6E8FF20]'>\n <div className='min-w-[46px]'>\n <LucideIcon.Sprout className='text-purple' size={46} strokeWidth={0.75} />\n </div>\n <div className='mt-1 flex flex-col gap-[2px]'>\n <H4 className='text-pretty'>The fastest way to grow your followers, is to follow others!</H4>\n <p className='2xl:text-pretty text-balance text-sm text-black/60 dark:text-white/60'>Here are some recommendations to get you started, from Ghost publishers and other great accounts from around the social web.</p>\n </div>\n <Button className='absolute right-4 top-[17px] size-6 opacity-40' variant='link' onClick={() => setExplainerClosed(true)}><LucideIcon.X size={20} /></Button>\n </div>\n }\n <TopicFilter\n currentTopic={topic}\n excludeTopics={['following']}\n onTopicChange={(newTopic) => {\n if (newTopic === 'top') {\n navigate('/explore', {replace: true});\n } else {\n navigate(`/explore/${newTopic}`, {replace: true});\n }\n }}\n />\n <div className='mt-12 flex flex-col gap-12 pb-20 max-md:mt-5'>\n {isLoadingExploreProfiles ? (\n <div>\n {emptyProfiles.map(profile => (\n <div key={profile.id} className='mx-auto w-full max-w-[640px]'>\n <ExploreProfile\n isLoading={isLoadingExploreProfiles}\n profile={profile}\n update={() => {}}\n />\n </div>\n ))}\n </div>\n ) : (\n <div className='mx-auto flex w-full max-w-[640px] flex-col items-center'>\n <div className='w-full'>\n {profiles.map(profile => (\n <React.Fragment key={profile.id}>\n <ExploreProfile\n isLoading={false}\n profile={profile}\n update={updateExploreProfile}\n />\n </React.Fragment>\n ))}\n </div>\n <div className='load-more-trigger h-4 w-full' />\n {isFetchingNextPage && (\n <div className='mt-2 flex w-full justify-center'>\n <LoadingIndicator size='sm' />\n </div>\n )}\n </div>\n )}\n </div>\n </Layout>\n );\n};\n\nexport default Explore;\n"],"names":["__iconNode","Sprout","createLucideIcon","ExploreProfile","profile","update","isLoading","onOpenChange","currentAccountQuery","useAccountForUser","currentUser","isCurrentUser","onFollow","onUnfollow","navigate","useNavigateWithBasePath","jsx","jsxs","ProfilePreviewHoverCard","APAvatar","Skeleton","FollowButton","sanitizeHtml","openLinksInNewTab","stripHtml","Explore","isExplainerClosed","setExplainerClosed","useOnboardingStatus","params","useParams","topic","exploreProfilesQuery","updateExploreProfile","useExploreProfilesForUserByTopic","exploreProfilesData","isLoadingExploreProfiles","fetchNextPage","hasNextPage","isFetchingNextPage","emptyProfiles","_","i","profiles","page","useEffect","node","observer","entries","Layout","LucideIcon.Sprout","H4","Button","LucideIcon.X","TopicFilter","newTopic","React","LoadingIndicator"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-Dc5IUcEt.mjs","sources":["../../../node_modules/number-flow/dist/plugins.mjs","../../../node_modules/number-flow/dist/lite-BTIaQdTe.mjs","../../../node_modules/@number-flow/react/dist/NumberFlow-client-48rw3j0J.mjs","../../../node_modules/@number-flow/react/dist/index.mjs"],"sourcesContent":["const f = (e, n) => e == null ? n : n == null ? e : Math.max(e, n), i = /* @__PURE__ */ new WeakMap(), l = {\n onUpdate(e, n, o) {\n if (i.set(o, void 0), !o.computedTrend)\n return;\n const s = n.integer.concat(n.fraction).filter((t) => t.type === \"integer\" || t.type === \"fraction\"), r = e.integer.concat(e.fraction).filter((t) => t.type === \"integer\" || t.type === \"fraction\"), u = s.find((t) => !r.find((c) => c.pos === t.pos && c.value === t.value)), a = r.find((t) => !s.find((c) => t.pos === c.pos && t.value === c.value));\n i.set(o, f(u == null ? void 0 : u.pos, a == null ? void 0 : a.pos));\n },\n getDelta(e, n, o) {\n const s = e - n, r = i.get(o.flow);\n if (!s && r != null && r >= o.pos)\n return o.length * o.flow.computedTrend;\n }\n};\nexport {\n l as continuous\n};\n","import { BROWSER as _ } from \"esm-env\";\nimport \"./plugins.mjs\";\nconst u = (n, t, e) => {\n const i = document.createElement(n), [s, a] = Array.isArray(t) ? [void 0, t] : [t, e];\n return s && Object.assign(i, s), a == null || a.forEach((r) => i.appendChild(r)), i;\n}, F = (n, t) => {\n var e;\n return t === \"left\" ? n.offsetLeft : (((e = n.offsetParent instanceof HTMLElement ? n.offsetParent : null) == null ? void 0 : e.offsetWidth) ?? 0) - n.offsetWidth - n.offsetLeft;\n}, H = (n) => n.offsetWidth > 0 && n.offsetHeight > 0, st = (n, t) => {\n _ && !customElements.get(n) && customElements.define(n, t);\n};\nfunction X(n, t, { reverse: e = !1 } = {}) {\n const i = n.length;\n for (let s = e ? i - 1 : 0; e ? s >= 0 : s < i; e ? s-- : s++)\n t(n[s], s);\n}\nfunction nt(n, t, e, i) {\n const s = t.formatToParts(n);\n e && s.unshift({ type: \"prefix\", value: e }), i && s.push({ type: \"suffix\", value: i });\n const a = [], r = [], o = [], c = [], d = {}, p = (h) => `${h}:${d[h] = (d[h] ?? -1) + 1}`;\n let x = \"\", g = !1, y = !1;\n for (const h of s) {\n x += h.value;\n const l = h.type === \"minusSign\" || h.type === \"plusSign\" ? \"sign\" : h.type;\n l === \"integer\" ? (g = !0, r.push(...h.value.split(\"\").map((C) => ({ type: l, value: parseInt(C) })))) : l === \"group\" ? r.push({ type: l, value: h.value }) : l === \"decimal\" ? (y = !0, o.push({ type: l, value: h.value, key: p(l) })) : l === \"fraction\" ? o.push(...h.value.split(\"\").map((C) => ({\n type: l,\n value: parseInt(C),\n key: p(l),\n pos: -1 - d[l]\n }))) : (g || y ? c : a).push({\n type: l,\n value: h.value,\n key: p(l)\n });\n }\n const T = [];\n for (let h = r.length - 1; h >= 0; h--) {\n const l = r[h];\n T.unshift(l.type === \"integer\" ? {\n ...l,\n key: p(l.type),\n pos: d[l.type]\n } : {\n ...l,\n key: p(l.type)\n });\n }\n return {\n pre: a,\n integer: T,\n fraction: o,\n post: c,\n valueAsString: x,\n value: typeof n == \"string\" ? parseFloat(n) : n\n };\n}\nconst I = String.raw, V = String.raw, O = _ && (() => {\n try {\n document.createElement(\"div\").animate({ opacity: 0 }, { easing: \"linear(0, 1)\" });\n } catch {\n return !1;\n }\n return !0;\n})(), z = _ && typeof CSS < \"u\" && CSS.supports && CSS.supports(\"line-height\", \"mod(1,1)\"), A = _ && typeof matchMedia < \"u\" ? matchMedia(\"(prefers-reduced-motion: reduce)\") : null, $ = \"--_number-flow-d-opacity\", U = \"--_number-flow-d-width\", S = \"--_number-flow-dx\", j = \"--_number-flow-d\", Y = (() => {\n try {\n return CSS.registerProperty({\n name: $,\n syntax: \"<number>\",\n inherits: !1,\n initialValue: \"0\"\n }), CSS.registerProperty({\n name: S,\n syntax: \"<length>\",\n inherits: !0,\n initialValue: \"0px\"\n }), CSS.registerProperty({\n name: U,\n syntax: \"<number>\",\n inherits: !1,\n initialValue: \"0\"\n }), CSS.registerProperty({\n name: j,\n syntax: \"<number>\",\n inherits: !0,\n initialValue: \"0\"\n }), !0;\n } catch {\n return !1;\n }\n})(), P = \"var(--number-flow-char-height, 1em)\", f = \"var(--number-flow-mask-height, 0.25em)\", k = `calc(${f} / 2)`, E = \"var(--number-flow-mask-width, 0.5em)\", m = `calc(${E} / var(--scale-x))`, w = \"#000 0, transparent 71%\", M = V`:host{display:inline-block;direction:ltr;white-space:nowrap;isolation:isolate;line-height:${P} !important}.number,.number__inner{display:inline-block;transform-origin:left top}:host([data-will-change]) :is(.number,.number__inner,.section,.digit,.digit__num,.symbol){will-change:transform}.number{--scale-x:calc(1 + var(${U}) / var(--width));transform:translateX(var(${S})) scaleX(var(--scale-x));margin:0 calc(-1 * ${E});position:relative;-webkit-mask-image:linear-gradient(to right,transparent 0,#000 ${m},#000 calc(100% - ${m}),transparent ),linear-gradient(to bottom,transparent 0,#000 ${f},#000 calc(100% - ${f}),transparent 100% ),radial-gradient(at bottom right,${w}),radial-gradient(at bottom left,${w}),radial-gradient(at top left,${w}),radial-gradient(at top right,${w});-webkit-mask-size:100% calc(100% - ${f} * 2),calc(100% - ${m} * 2) 100%,${m} ${f},${m} ${f},${m} ${f},${m} ${f};-webkit-mask-position:center,center,top left,top right,bottom right,bottom left;-webkit-mask-repeat:no-repeat}.number__inner{padding:${k} ${E};transform:scaleX(calc(1 / var(--scale-x))) translateX(calc(-1 * var(${S})))}:host > :not(.number){z-index:5}.section,.symbol{display:inline-block;position:relative;isolation:isolate}.section::after{content:'\\200b';display:inline-block}.section--justify-left{transform-origin:center left}.section--justify-right{transform-origin:center right}.section > [inert],.symbol > [inert]{margin:0 !important;position:absolute !important;z-index:-1}.digit{display:inline-block;position:relative;--c:var(--current) + var(${j})}.digit__num,.number .section::after{padding:${k} 0}.digit__num{display:inline-block;--offset-raw:mod(var(--length) + var(--n) - mod(var(--c),var(--length)),var(--length));--offset:calc( var(--offset-raw) - var(--length) * round(down,var(--offset-raw) / (var(--length) / 2),1) );--y:clamp(-100%,var(--offset) * 100%,100%);transform:translateY(var(--y))}.digit__num[inert]{position:absolute;top:0;left:50%;transform:translateX(-50%) translateY(var(--y))}.digit:not(.is-spinning) .digit__num[inert]{display:none}.symbol__value{display:inline-block;mix-blend-mode:plus-lighter;white-space:pre}.section--justify-left .symbol > [inert]{left:0}.section--justify-right .symbol > [inert]{right:0}.animate-presence{opacity:calc(1 + var(${$}))}`, G = _ ? HTMLElement : class {\n}, K = V`:host{display:inline-block;direction:ltr;white-space:nowrap;line-height:${P} !important}span{display:inline-block}:host([data-will-change]) span{will-change:transform}.number,.digit{padding:${k} 0}.symbol{white-space:pre}`, Z = (n) => `<span class=\"${n.type === \"integer\" || n.type === \"fraction\" ? \"digit\" : \"symbol\"}\" part=\"${n.type === \"integer\" || n.type === \"fraction\" ? `digit ${n.type}-digit` : `symbol ${n.type}`}\">${n.value}</span>`, v = (n, t) => `<span part=\"${t}\">${n.reduce((e, i) => e + Z(i), \"\")}</span>`, at = (n) => (\n // shadowroot=\"open\" non-standard attribute for old Chrome:\n I`<template shadowroot=\"open\" shadowrootmode=\"open\"\n\t\t\t><style>\n\t\t\t\t${K}</style\n\t\t\t><span role=\"img\" aria-label=\"${n.valueAsString}\"\n\t\t\t\t>${v(n.pre, \"left\")}<span part=\"number\" class=\"number\"\n\t\t\t\t\t>${v(n.integer, \"integer\")}${v(n.fraction, \"fraction\")}</span\n\t\t\t\t>${v(n.post, \"right\")}</span\n\t\t\t></template\n\t\t><span\n\t\t\tstyle=\"font-kerning: none; display: inline-block; line-height: ${P} !important; padding: ${f} 0;\"\n\t\t\t>${n.valueAsString}</span\n\t\t>`\n), q = z && O && Y;\nlet b;\nclass J extends G {\n constructor() {\n super(), this.created = !1, this.batched = !1;\n const { animated: t, ...e } = this.constructor.defaultProps;\n this._animated = this.computedAnimated = t, Object.assign(this, e);\n }\n get animated() {\n return this._animated;\n }\n set animated(t) {\n var e;\n this.animated !== t && (this._animated = t, (e = this.shadowRoot) == null || e.getAnimations().forEach((i) => i.finish()));\n }\n /**\n * @internal\n */\n set data(t) {\n var o;\n if (t == null)\n return;\n const { pre: e, integer: i, fraction: s, post: a, value: r } = t;\n if (this.created) {\n const c = this._data;\n this._data = t, this.computedTrend = typeof this.trend == \"function\" ? this.trend(c.value, r) : this.trend, this.computedAnimated = q && this._animated && (!this.respectMotionPreference || !(A != null && A.matches)) && // https://github.com/barvian/number-flow/issues/9\n H(this), (o = this.plugins) == null || o.forEach((d) => {\n var p;\n return (p = d.onUpdate) == null ? void 0 : p.call(d, t, c, this);\n }), this.batched || this.willUpdate(), this._pre.update(e), this._num.update({ integer: i, fraction: s }), this._post.update(a), this.batched || this.didUpdate();\n } else {\n this._data = t, this.attachShadow({ mode: \"open\" });\n try {\n this._internals ?? (this._internals = this.attachInternals()), this._internals.role = \"img\";\n } catch {\n }\n if (typeof CSSStyleSheet < \"u\" && this.shadowRoot.adoptedStyleSheets)\n b || (b = new CSSStyleSheet(), b.replaceSync(M)), this.shadowRoot.adoptedStyleSheets = [b];\n else {\n const c = document.createElement(\"style\");\n c.textContent = M, this.shadowRoot.appendChild(c);\n }\n this._pre = new N(this, e, {\n justify: \"right\",\n part: \"left\"\n }), this.shadowRoot.appendChild(this._pre.el), this._num = new Q(this, i, s), this.shadowRoot.appendChild(this._num.el), this._post = new N(this, a, {\n justify: \"left\",\n part: \"right\"\n }), this.shadowRoot.appendChild(this._post.el), this.created = !0;\n }\n try {\n this._internals.ariaLabel = t.valueAsString;\n } catch {\n }\n }\n /**\n * @internal\n */\n willUpdate() {\n this._pre.willUpdate(), this._num.willUpdate(), this._post.willUpdate();\n }\n /**\n * @internal\n */\n didUpdate() {\n if (!this.computedAnimated)\n return;\n this._abortAnimationsFinish ? this._abortAnimationsFinish.abort() : this.dispatchEvent(new Event(\"animationsstart\")), this._pre.didUpdate(), this._num.didUpdate(), this._post.didUpdate();\n const t = new AbortController();\n Promise.all(this.shadowRoot.getAnimations().map((e) => e.finished)).then(() => {\n t.signal.aborted || (this.dispatchEvent(new Event(\"animationsfinish\")), this._abortAnimationsFinish = void 0);\n }), this._abortAnimationsFinish = t;\n }\n}\nJ.defaultProps = {\n transformTiming: {\n duration: 900,\n // Make sure to keep this minified:\n easing: \"linear(0,.005,.019,.039,.066,.096,.129,.165,.202,.24,.278,.316,.354,.39,.426,.461,.494,.526,.557,.586,.614,.64,.665,.689,.711,.731,.751,.769,.786,.802,.817,.831,.844,.856,.867,.877,.887,.896,.904,.912,.919,.925,.931,.937,.942,.947,.951,.955,.959,.962,.965,.968,.971,.973,.976,.978,.98,.981,.983,.984,.986,.987,.988,.989,.99,.991,.992,.992,.993,.994,.994,.995,.995,.996,.996,.9963,.9967,.9969,.9972,.9975,.9977,.9979,.9981,.9982,.9984,.9985,.9987,.9988,.9989,1)\"\n },\n spinTiming: void 0,\n opacityTiming: { duration: 450, easing: \"ease-out\" },\n animated: !0,\n trend: (n, t) => Math.sign(t - n),\n respectMotionPreference: !0,\n plugins: void 0,\n digits: void 0\n};\nclass Q {\n constructor(t, e, i, { className: s, ...a } = {}) {\n this.flow = t, this._integer = new L(t, e, {\n justify: \"right\",\n part: \"integer\"\n }), this._fraction = new L(t, i, {\n justify: \"left\",\n part: \"fraction\"\n }), this._inner = u(\"span\", {\n className: \"number__inner\"\n }, [this._integer.el, this._fraction.el]), this.el = u(\"span\", {\n ...a,\n part: \"number\",\n className: `number ${s ?? \"\"}`\n }, [this._inner]);\n }\n willUpdate() {\n this._prevWidth = this.el.offsetWidth, this._prevLeft = this.el.getBoundingClientRect().left, this._integer.willUpdate(), this._fraction.willUpdate();\n }\n update({ integer: t, fraction: e }) {\n this._integer.update(t), this._fraction.update(e);\n }\n didUpdate() {\n const t = this.el.getBoundingClientRect();\n this._integer.didUpdate(), this._fraction.didUpdate();\n const e = this._prevLeft - t.left, i = this.el.offsetWidth, s = this._prevWidth - i;\n this.el.style.setProperty(\"--width\", String(i)), this.el.animate({\n [S]: [`${e}px`, \"0px\"],\n [U]: [s, 0]\n }, {\n ...this.flow.transformTiming,\n composite: \"accumulate\"\n });\n }\n}\nclass W {\n constructor(t, e, { justify: i, className: s, ...a }, r) {\n this.flow = t, this.children = /* @__PURE__ */ new Map(), this.onCharRemove = (c) => () => {\n this.children.delete(c);\n }, this.justify = i;\n const o = e.map((c) => this.addChar(c).el);\n this.el = u(\"span\", {\n ...a,\n className: `section section--justify-${i} ${s ?? \"\"}`\n }, r ? r(o) : o);\n }\n addChar(t, { startDigitsAtZero: e = !1, ...i } = {}) {\n const s = t.type === \"integer\" || t.type === \"fraction\" ? new D(this, t.type, e ? 0 : t.value, t.pos, {\n ...i,\n onRemove: this.onCharRemove(t.key)\n }) : new tt(this, t.type, t.value, {\n ...i,\n onRemove: this.onCharRemove(t.key)\n });\n return this.children.set(t.key, s), s;\n }\n unpop(t) {\n t.el.removeAttribute(\"inert\"), t.el.style.top = \"\", t.el.style[this.justify] = \"\";\n }\n pop(t) {\n t.forEach((e) => {\n e.el.style.top = `${e.el.offsetTop}px`, e.el.style[this.justify] = `${F(e.el, this.justify)}px`;\n }), t.forEach((e) => {\n e.el.setAttribute(\"inert\", \"\"), e.present = !1;\n });\n }\n addNewAndUpdateExisting(t) {\n const e = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Map(), s = this.justify === \"left\", a = s ? \"prepend\" : \"append\";\n if (X(t, (r) => {\n let o;\n this.children.has(r.key) ? (o = this.children.get(r.key), i.set(r, o), this.unpop(o), o.present = !0) : (o = this.addChar(r, { startDigitsAtZero: !0, animateIn: !0 }), e.set(r, o)), this.el[a](o.el);\n }, { reverse: s }), this.flow.computedAnimated) {\n const r = this.el.getBoundingClientRect();\n e.forEach((o) => {\n o.willUpdate(r);\n });\n }\n e.forEach((r, o) => {\n r.update(o.value);\n }), i.forEach((r, o) => {\n r.update(o.value);\n });\n }\n willUpdate() {\n const t = this.el.getBoundingClientRect();\n this._prevOffset = t[this.justify], this.children.forEach((e) => e.willUpdate(t));\n }\n didUpdate() {\n const t = this.el.getBoundingClientRect();\n this.children.forEach((s) => s.didUpdate(t));\n const e = t[this.justify], i = this._prevOffset - e;\n i && this.children.size && this.el.animate({\n transform: [`translateX(${i}px)`, \"none\"]\n }, {\n ...this.flow.transformTiming,\n composite: \"accumulate\"\n });\n }\n}\nclass L extends W {\n update(t) {\n const e = /* @__PURE__ */ new Map();\n this.children.forEach((i, s) => {\n t.find((a) => a.key === s) || e.set(s, i), this.unpop(i);\n }), this.addNewAndUpdateExisting(t), e.forEach((i) => {\n i instanceof D && i.update(0);\n }), this.pop(e);\n }\n}\nclass N extends W {\n update(t) {\n const e = /* @__PURE__ */ new Map();\n this.children.forEach((i, s) => {\n t.find((a) => a.key === s) || e.set(s, i);\n }), this.pop(e), this.addNewAndUpdateExisting(t);\n }\n}\nclass R {\n constructor(t, e, { onRemove: i, animateIn: s = !1 } = {}) {\n this.flow = t, this.el = e, this._present = !0, this._remove = () => {\n var a;\n this.el.remove(), (a = this._onRemove) == null || a.call(this);\n }, this.el.classList.add(\"animate-presence\"), this.flow.computedAnimated && s && this.el.animate({\n [$]: [-0.9999, 0]\n }, {\n ...this.flow.opacityTiming,\n composite: \"accumulate\"\n }), this._onRemove = i;\n }\n get present() {\n return this._present;\n }\n set present(t) {\n if (this._present !== t) {\n if (this._present = t, t ? this.el.removeAttribute(\"inert\") : this.el.setAttribute(\"inert\", \"\"), !this.flow.computedAnimated) {\n t || this._remove();\n return;\n }\n this.el.style.setProperty(\"--_number-flow-d-opacity\", t ? \"0\" : \"-.999\"), this.el.animate({\n [$]: t ? [-0.9999, 0] : [0.999, 0]\n }, {\n ...this.flow.opacityTiming,\n composite: \"accumulate\"\n }), t ? this.flow.removeEventListener(\"animationsfinish\", this._remove) : this.flow.addEventListener(\"animationsfinish\", this._remove, {\n once: !0\n });\n }\n }\n}\nclass B extends R {\n constructor(t, e, i, s) {\n super(t.flow, i, s), this.section = t, this.value = e, this.el = i;\n }\n}\nclass D extends B {\n constructor(t, e, i, s, a) {\n var d, p;\n const r = (((p = (d = t.flow.digits) == null ? void 0 : d[s]) == null ? void 0 : p.max) ?? 9) + 1, o = Array.from({ length: r }).map((x, g) => {\n const y = u(\"span\", { className: \"digit__num\" }, [\n document.createTextNode(String(g))\n ]);\n return g !== i && y.setAttribute(\"inert\", \"\"), y.style.setProperty(\"--n\", String(g)), y;\n }), c = u(\"span\", {\n part: `digit ${e}-digit`,\n className: \"digit\"\n }, o);\n c.style.setProperty(\"--current\", String(i)), c.style.setProperty(\"--length\", String(r)), super(t, i, c, a), this.pos = s, this._onAnimationsFinish = () => {\n this.el.classList.remove(\"is-spinning\");\n }, this._numbers = o, this.length = r;\n }\n willUpdate(t) {\n const e = this.el.getBoundingClientRect();\n this._prevValue = this.value;\n const i = e[this.section.justify] - t[this.section.justify], s = e.width / 2;\n this._prevCenter = this.section.justify === \"left\" ? i + s : i - s;\n }\n update(t) {\n this.el.style.setProperty(\"--current\", String(t)), this._numbers.forEach((e, i) => i === t ? e.removeAttribute(\"inert\") : e.setAttribute(\"inert\", \"\")), this.value = t;\n }\n didUpdate(t) {\n const e = this.el.getBoundingClientRect(), i = e[this.section.justify] - t[this.section.justify], s = e.width / 2, a = this.section.justify === \"left\" ? i + s : i - s, r = this._prevCenter - a;\n r && this.el.animate({\n transform: [`translateX(${r}px)`, \"none\"]\n }, {\n ...this.flow.transformTiming,\n composite: \"accumulate\"\n });\n const o = this.getDelta();\n o && (this.el.classList.add(\"is-spinning\"), this.el.animate({\n [j]: [-o, 0]\n }, {\n ...this.flow.spinTiming ?? this.flow.transformTiming,\n composite: \"accumulate\"\n }), this.flow.addEventListener(\"animationsfinish\", this._onAnimationsFinish, { once: !0 }));\n }\n getDelta() {\n var i;\n if (this.flow.plugins)\n for (const s of this.flow.plugins) {\n const a = (i = s.getDelta) == null ? void 0 : i.call(s, this.value, this._prevValue, this);\n if (a != null)\n return a;\n }\n const t = this.value - this._prevValue, e = this.flow.computedTrend || Math.sign(t);\n return e < 0 && this.value > this._prevValue ? this.value - this.length - this._prevValue : e > 0 && this.value < this._prevValue ? this.length - this._prevValue + this.value : t;\n }\n}\nclass tt extends B {\n constructor(t, e, i, s) {\n const a = u(\"span\", {\n className: \"symbol__value\",\n textContent: i\n });\n super(t, i, u(\"span\", {\n part: `symbol ${e}`,\n className: \"symbol\"\n }, [a]), s), this.type = e, this._children = /* @__PURE__ */ new Map(), this._onChildRemove = (r) => () => {\n this._children.delete(r);\n }, this._children.set(i, new R(this.flow, a, {\n onRemove: this._onChildRemove(i)\n }));\n }\n willUpdate(t) {\n if (this.type === \"decimal\")\n return;\n const e = this.el.getBoundingClientRect();\n this._prevOffset = e[this.section.justify] - t[this.section.justify];\n }\n update(t) {\n if (this.value !== t) {\n const e = this._children.get(this.value);\n e && (e.present = !1);\n const i = this._children.get(t);\n if (i)\n i.present = !0;\n else {\n const s = u(\"span\", {\n className: \"symbol__value\",\n textContent: t\n });\n this.el.appendChild(s), this._children.set(t, new R(this.flow, s, {\n animateIn: !0,\n onRemove: this._onChildRemove(t)\n }));\n }\n }\n this.value = t;\n }\n didUpdate(t) {\n if (this.type === \"decimal\")\n return;\n const i = this.el.getBoundingClientRect()[this.section.justify] - t[this.section.justify], s = this._prevOffset - i;\n s && this.el.animate({\n transform: [`translateX(${s}px)`, \"none\"]\n }, { ...this.flow.transformTiming, composite: \"accumulate\" });\n }\n}\nexport {\n D,\n J as N,\n G as S,\n q as c,\n st as d,\n nt as f,\n A as p,\n at as r\n};\n","'use client';\nimport * as React from 'react';\nimport NumberFlowLite, { define, formatToData, renderInnerHTML } from 'number-flow/lite';\nimport { BROWSER } from 'esm-env';\n\nconst REACT_MAJOR = parseInt(React.version.match(/^(\\d+)\\./)?.[1]);\nconst isReact19 = REACT_MAJOR >= 19;\n// Can't wait to not have to do this in React 19:\nconst OBSERVED_ATTRIBUTES = [\n 'data',\n 'digits'\n];\nclass NumberFlowElement extends NumberFlowLite {\n attributeChangedCallback(attr, _oldValue, newValue) {\n this[attr] = JSON.parse(newValue);\n }\n}\nNumberFlowElement.observedAttributes = isReact19 ? [] : OBSERVED_ATTRIBUTES;\ndefine('number-flow-react', NumberFlowElement);\n// You're supposed to cache these between uses:\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString\n// Serialize to strings b/c React:\nconst formatters = {};\n// Tiny workaround to support React 19 until it's released:\nconst serialize = isReact19 ? (p)=>p : JSON.stringify;\nfunction splitProps(props) {\n const { transformTiming, spinTiming, opacityTiming, animated, respectMotionPreference, trend, plugins, ...rest } = props;\n return [\n {\n transformTiming,\n spinTiming,\n opacityTiming,\n animated,\n respectMotionPreference,\n trend,\n plugins\n },\n rest\n ];\n}\n// We need a class component to use getSnapshotBeforeUpdate:\nclass NumberFlowImpl extends React.Component {\n // Update the non-`data` props to avoid JSON serialization\n // Data needs to be set in render still:\n updateProperties(prevProps) {\n if (!this.el) return;\n this.el.batched = !this.props.isolate;\n const [nonData] = splitProps(this.props);\n Object.entries(nonData).forEach(([k, v])=>{\n // @ts-ignore\n this.el[k] = v ?? NumberFlowElement.defaultProps[k];\n });\n if (prevProps?.onAnimationsStart) this.el.removeEventListener('animationsstart', prevProps.onAnimationsStart);\n if (this.props.onAnimationsStart) this.el.addEventListener('animationsstart', this.props.onAnimationsStart);\n if (prevProps?.onAnimationsFinish) this.el.removeEventListener('animationsfinish', prevProps.onAnimationsFinish);\n if (this.props.onAnimationsFinish) this.el.addEventListener('animationsfinish', this.props.onAnimationsFinish);\n }\n componentDidMount() {\n this.updateProperties();\n if (isReact19 && this.el) {\n // React 19 needs this because the attributeChangedCallback isn't called:\n this.el.digits = this.props.digits;\n this.el.data = this.props.data;\n }\n }\n getSnapshotBeforeUpdate(prevProps) {\n this.updateProperties(prevProps);\n if (prevProps.data !== this.props.data) {\n if (this.props.group) {\n this.props.group.willUpdate();\n return ()=>this.props.group?.didUpdate();\n }\n if (!this.props.isolate) {\n this.el?.willUpdate();\n return ()=>this.el?.didUpdate();\n }\n }\n return null;\n }\n componentDidUpdate(_, __, didUpdate) {\n didUpdate?.();\n }\n handleRef(el) {\n if (this.props.innerRef) this.props.innerRef.current = el;\n this.el = el;\n }\n render() {\n const [_, { innerRef, className, data, willChange, isolate, group, digits, onAnimationsStart, onAnimationsFinish, ...rest }] = splitProps(this.props);\n return(// @ts-expect-error missing types\n /*#__PURE__*/ React.createElement(\"number-flow-react\", {\n ref: this.handleRef,\n \"data-will-change\": willChange ? '' : undefined,\n // Have to rename this:\n class: className,\n ...rest,\n dangerouslySetInnerHTML: {\n __html: BROWSER ? '' : renderInnerHTML(data)\n },\n suppressHydrationWarning: true,\n digits: serialize(digits),\n // Make sure data is set last, everything else is updated:\n data: serialize(data)\n }));\n }\n constructor(props){\n super(props);\n this.handleRef = this.handleRef.bind(this);\n }\n}\nconst NumberFlow = /*#__PURE__*/ React.forwardRef(function NumberFlow({ value, locales, format, prefix, suffix, ...props }, _ref) {\n React.useImperativeHandle(_ref, ()=>ref.current, []);\n const ref = React.useRef();\n const group = React.useContext(NumberFlowGroupContext);\n group?.useRegister(ref);\n const localesString = React.useMemo(()=>locales ? JSON.stringify(locales) : '', [\n locales\n ]);\n const formatString = React.useMemo(()=>format ? JSON.stringify(format) : '', [\n format\n ]);\n const data = React.useMemo(()=>{\n const formatter = formatters[`${localesString}:${formatString}`] ??= new Intl.NumberFormat(locales, format);\n return formatToData(value, formatter, prefix, suffix);\n }, [\n value,\n localesString,\n formatString,\n prefix,\n suffix\n ]);\n return /*#__PURE__*/ React.createElement(NumberFlowImpl, {\n ...props,\n group: group,\n data: data,\n innerRef: ref\n });\n});\nconst NumberFlowGroupContext = /*#__PURE__*/ React.createContext(undefined);\nfunction NumberFlowGroup({ children }) {\n const flows = React.useRef(new Set());\n const updating = React.useRef(false);\n const pending = React.useRef(new WeakMap());\n const value = React.useMemo(()=>({\n useRegister (ref) {\n React.useEffect(()=>{\n flows.current.add(ref);\n return ()=>{\n flows.current.delete(ref);\n };\n }, []);\n },\n willUpdate () {\n if (updating.current) return;\n updating.current = true;\n flows.current.forEach((ref)=>{\n const f = ref.current;\n if (!f || !f.created) return;\n f.willUpdate();\n pending.current.set(f, true);\n });\n },\n didUpdate () {\n flows.current.forEach((ref)=>{\n const f = ref.current;\n if (!f || !pending.current.get(f)) return;\n f.didUpdate();\n pending.current.delete(f);\n });\n updating.current = false;\n }\n }), []);\n return /*#__PURE__*/ React.createElement(NumberFlowGroupContext.Provider, {\n value: value\n }, children);\n}\n\nexport { NumberFlow as N, NumberFlowElement as a, NumberFlowGroup as b };\n","import * as React from 'react';\nimport { canAnimate, prefersReducedMotion } from 'number-flow/lite';\nexport * from 'number-flow/plugins';\nexport { a as NumberFlowElement, b as NumberFlowGroup, N as default } from './NumberFlow-client-48rw3j0J.mjs';\n\nconst useIsSupported = ()=>React.useSyncExternalStore(()=>()=>{}, ()=>canAnimate, ()=>false);\nconst usePrefersReducedMotion = ()=>React.useSyncExternalStore((cb)=>{\n prefersReducedMotion?.addEventListener('change', cb);\n return ()=>prefersReducedMotion?.removeEventListener('change', cb);\n }, ()=>prefersReducedMotion.matches, ()=>false);\nfunction useCanAnimate({ respectMotionPreference = true } = {}) {\n const isSupported = useIsSupported();\n const reducedMotion = usePrefersReducedMotion();\n return isSupported && (!respectMotionPreference || !reducedMotion);\n}\n\nexport { useCanAnimate, useIsSupported, usePrefersReducedMotion };\n"],"names":["f","e","n","i","l","o","s","t","r","u","c","a","F","H","st","X","nt","p","h","x","g","y","C","T","V","O","z","A","$","U","S","j","Y","P","k","E","m","w","M","G","q","b","N","Q","L","W","D","tt","R","B","d","REACT_MAJOR","React.version","isReact19","OBSERVED_ATTRIBUTES","NumberFlowElement","NumberFlowLite","attr","_oldValue","newValue","define","formatters","serialize","splitProps","props","transformTiming","spinTiming","opacityTiming","animated","respectMotionPreference","trend","plugins","rest","NumberFlowImpl","React.Component","prevProps","nonData","v","_a","_","__","didUpdate","el","innerRef","className","data","willChange","isolate","group","digits","onAnimationsStart","onAnimationsFinish","React.createElement","NumberFlow","React.forwardRef","value","locales","format","prefix","suffix","_ref","React.useImperativeHandle","ref","React.useRef","React.useContext","NumberFlowGroupContext","localesString","React.useMemo","formatString","formatter","formatToData","React.createContext","NumberFlowGroup","children","flows","updating","pending","React.useEffect","useIsSupported","React.useSyncExternalStore","canAnimate","usePrefersReducedMotion","cb","prefersReducedMotion","useCanAnimate","isSupported","reducedMotion"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}
|