@tryghost/activitypub 3.1.8 → 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-B8iQvS42.mjs → at-sign-Mjg-pZ6w.mjs} +2 -2
- package/dist/at-sign-Mjg-pZ6w.mjs.map +1 -0
- package/dist/{avatar-flipboard-DNwig8eO.mjs → avatar-flipboard-DrqqZst3.mjs} +2 -2
- package/dist/avatar-flipboard-DrqqZst3.mjs.map +1 -0
- package/dist/{bluesky-sharing-Cx4y2eb_.mjs → bluesky-sharing-Chejq-Bq.mjs} +7 -7
- package/dist/bluesky-sharing-Chejq-Bq.mjs.map +1 -0
- package/dist/{copy-Dg0Olymi.mjs → copy-Ba_lzzCd.mjs} +2 -2
- package/dist/copy-Ba_lzzCd.mjs.map +1 -0
- package/dist/{deleted-feed-item-C6ttBewp.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-OJkCDmvZ.mjs → feed-BkSec9BE.mjs} +12 -12
- package/dist/feed-BkSec9BE.mjs.map +1 -0
- package/dist/{hash-CaF6a8FN.mjs → hash-D8uyJrFB.mjs} +2 -2
- package/dist/hash-D8uyJrFB.mjs.map +1 -0
- package/dist/{inbox-DKED2HYQ.mjs → inbox-DZqNPQ3D.mjs} +2 -2
- package/dist/inbox-DZqNPQ3D.mjs.map +1 -0
- package/dist/{index-Cjktkl_Z.mjs → index-Bq0BHGkI.mjs} +24 -24
- package/dist/index-Bq0BHGkI.mjs.map +1 -0
- package/dist/{index-B3WQF6P6.mjs → index-CCW2g6Oi.mjs} +49 -49
- package/dist/index-CCW2g6Oi.mjs.map +1 -0
- package/dist/{index-BTDCxNUL.mjs → index-CQNBd3-F.mjs} +54 -54
- package/dist/index-CQNBd3-F.mjs.map +1 -0
- package/dist/{index-q4Ygdo0-.mjs → index-CSkOAA7W.mjs} +13533 -12736
- package/dist/index-CSkOAA7W.mjs.map +1 -0
- package/dist/{index-Cl_bAvCu.mjs → index-D8Ct0JF0.mjs} +19 -19
- package/dist/index-D8Ct0JF0.mjs.map +1 -0
- package/dist/{index-DUNT0yV6.mjs → index-DYjHwtl7.mjs} +7 -7
- package/dist/index-DYjHwtl7.mjs.map +1 -0
- package/dist/{index-CVvjItO-.mjs → index-nevBSPxu.mjs} +2 -2
- package/dist/index-nevBSPxu.mjs.map +1 -0
- package/dist/{index-Cty-No3l.mjs → index-psiB4m1D.mjs} +92 -92
- package/dist/index-psiB4m1D.mjs.map +1 -0
- package/dist/{moderation-nXSBmheF.mjs → moderation-DFdpfisa.mjs} +7 -7
- package/dist/moderation-DFdpfisa.mjs.map +1 -0
- package/dist/{note-uNSHIe4G.mjs → note-kWeM_V5e.mjs} +6 -6
- package/dist/note-kWeM_V5e.mjs.map +1 -0
- package/dist/{reply-BVkBkA2M.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-CjuIDMTF.mjs → settings-CEx9EwpB.mjs} +3 -3
- package/dist/settings-CEx9EwpB.mjs.map +1 -0
- package/dist/{step-1-YV90JpzH.mjs → step-1-DoxN5zA3.mjs} +8 -8
- package/dist/{step-1-YV90JpzH.mjs.map → step-1-DoxN5zA3.mjs.map} +1 -1
- package/dist/{step-2-BO7QOUb7.mjs → step-2-BWvVMlaH.mjs} +13 -13
- package/dist/step-2-BWvVMlaH.mjs.map +1 -0
- package/dist/{step-3-qgcA50w6.mjs → step-3-Dnq4l5zZ.mjs} +14 -14
- package/dist/step-3-Dnq4l5zZ.mjs.map +1 -0
- package/dist/{tabs-DdupTuil.mjs → tabs-DTWhZwdk.mjs} +224 -226
- package/dist/tabs-DTWhZwdk.mjs.map +1 -0
- package/dist/{topic-filter-DqTL6EKu.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-B8iQvS42.mjs.map +0 -1
- package/dist/avatar-flipboard-DNwig8eO.mjs.map +0 -1
- package/dist/bluesky-sharing-Cx4y2eb_.mjs.map +0 -1
- package/dist/copy-Dg0Olymi.mjs.map +0 -1
- package/dist/deleted-feed-item-C6ttBewp.mjs.map +0 -1
- package/dist/edit-profile-D17SCzby.mjs +0 -3741
- package/dist/edit-profile-D17SCzby.mjs.map +0 -1
- package/dist/feed-OJkCDmvZ.mjs.map +0 -1
- package/dist/hash-CaF6a8FN.mjs.map +0 -1
- package/dist/inbox-DKED2HYQ.mjs.map +0 -1
- package/dist/index-B3WQF6P6.mjs.map +0 -1
- package/dist/index-BTDCxNUL.mjs.map +0 -1
- package/dist/index-CVvjItO-.mjs.map +0 -1
- package/dist/index-Cjktkl_Z.mjs.map +0 -1
- package/dist/index-Cl_bAvCu.mjs.map +0 -1
- package/dist/index-Cty-No3l.mjs.map +0 -1
- package/dist/index-DUNT0yV6.mjs.map +0 -1
- package/dist/index-q4Ygdo0-.mjs.map +0 -1
- package/dist/moderation-nXSBmheF.mjs.map +0 -1
- package/dist/note-uNSHIe4G.mjs.map +0 -1
- package/dist/reply-BVkBkA2M.mjs.map +0 -1
- package/dist/separator-BljDgTc9.mjs +0 -116
- package/dist/separator-BljDgTc9.mjs.map +0 -1
- package/dist/settings-CjuIDMTF.mjs.map +0 -1
- package/dist/step-2-BO7QOUb7.mjs.map +0 -1
- package/dist/step-3-qgcA50w6.mjs.map +0 -1
- package/dist/tabs-DdupTuil.mjs.map +0 -1
- package/dist/topic-filter-DqTL6EKu.mjs.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"feed-OJkCDmvZ.mjs","sources":["../src/views/feed/components/feed-input.tsx","../src/views/feed/components/suggested-profiles.tsx","../src/views/feed/components/feed-list.tsx","../src/views/feed/feed.tsx"],"sourcesContent":["import APAvatar from '@src/components/global/ap-avatar';\nimport NewNoteModal from '@src/components/modals/new-note-modal';\nimport {ActorProperties} from '@tryghost/admin-x-framework/api/activitypub';\n\nconst FeedInput: React.FC<{user?: ActorProperties}> = ({user}) => {\n return (\n <NewNoteModal>\n <div className='relative my-5 w-full hover:cursor-pointer'>\n <div className='pointer-events-none absolute left-4 top-4'>\n <APAvatar author={user as ActorProperties} />\n </div>\n <div aria-label='New post' className='text inset-0 flex h-[72px] w-full items-center justify-start rounded-lg bg-white pl-[68px] text-left text-[1.5rem] font-normal tracking-normal text-gray-500 shadow-[0_5px_24px_0px_rgba(0,0,0,0.02),0px_2px_5px_0px_rgba(0,0,0,0.07),0px_0px_1px_0px_rgba(0,0,0,0.25)] transition-all hover:bg-white hover:shadow-[0_5px_24px_0px_rgba(0,0,0,0.05),0px_14px_12px_-9px_rgba(0,0,0,0.07),0px_0px_1px_0px_rgba(0,0,0,0.25)] dark:border dark:border-gray-925 dark:bg-black dark:shadow-none dark:hover:border-gray-800 dark:hover:bg-black dark:hover:shadow-none'>What's new?</div>\n </div>\n </NewNoteModal>\n );\n};\n\nexport default FeedInput;","import APAvatar from '@src/components/global/ap-avatar';\nimport FollowButton from '@src/components/global/follow-button';\nimport ProfilePreviewHoverCard from '@components/global/profile-preview-hover-card';\nimport {Account} from '@src/api/activitypub';\nimport {Button, H4, LucideIcon, Separator, Skeleton} from '@tryghost/shade';\nimport {useEffect, useRef, useState} from 'react';\nimport {useNavigateWithBasePath} from '@src/hooks/use-navigate-with-base-path';\nimport {useSuggestedProfilesForUser} from '@src/hooks/use-activity-pub-queries';\n\nconst SuggestedProfiles: React.FC = () => {\n const scrollContainerRef = useRef<HTMLDivElement>(null);\n const navigate = useNavigateWithBasePath();\n const [canScrollLeft, setCanScrollLeft] = useState(false);\n const [canScrollRight, setCanScrollRight] = useState(true);\n\n const {suggestedProfilesQuery, updateSuggestedProfile} = useSuggestedProfilesForUser('index', 10);\n const {data: suggestedProfilesData = [], isLoading: isLoadingSuggestedProfiles} = suggestedProfilesQuery;\n\n const updateScrollButtons = () => {\n const container = scrollContainerRef.current;\n if (!container) {\n return;\n }\n\n const canScrollL = container.scrollLeft > 0;\n const canScrollR = container.scrollLeft < container.scrollWidth - container.clientWidth;\n\n setCanScrollLeft(canScrollL);\n setCanScrollRight(canScrollR);\n };\n\n useEffect(() => {\n updateScrollButtons();\n }, [suggestedProfilesData]);\n\n if (!isLoadingSuggestedProfiles && (!suggestedProfilesData || suggestedProfilesData.length < 4)) {\n return null;\n }\n\n const handleDismiss = (profileId: string) => {\n // TODO: Implement dismiss functionality\n void profileId;\n };\n\n const handleFollow = (profile: Account) => {\n updateSuggestedProfile(profile.id, {\n followedByMe: true\n });\n };\n\n const handleUnfollow = (profile: Account) => {\n updateSuggestedProfile(profile.id, {\n followedByMe: false\n });\n };\n\n const scrollLeft = () => {\n const container = scrollContainerRef.current;\n if (!container) {\n return;\n }\n\n const cardWidth = 160 + 16; // w-40 (160px) + gap-4 (16px)\n container.scrollBy({left: -cardWidth * 2, behavior: 'smooth'});\n };\n\n const scrollRight = () => {\n const container = scrollContainerRef.current;\n if (!container) {\n return;\n }\n\n const cardWidth = 160 + 16; // w-40 (160px) + gap-4 (16px)\n container.scrollBy({left: cardWidth * 2, behavior: 'smooth'});\n };\n\n return (\n <>\n <div className='pb-7 pt-4'>\n <div className='mb-3 flex items-center justify-between'>\n <H4 className='text-lg font-semibold text-black dark:text-white'>More people to follow</H4>\n <Button className='px-0 font-medium text-gray-700 hover:text-black dark:text-gray-600 dark:hover:text-white' variant='link' onClick={() => navigate('/explore')}>\n Find more →\n </Button>\n </div>\n\n <div className='relative'>\n {canScrollLeft && (\n <Button\n className='absolute -left-10 top-1/2 z-10 size-10 -translate-y-1/2 text-gray-700 hover:bg-transparent max-lg:hidden dark:text-gray-600 dark:hover:text-white'\n variant='ghost'\n onClick={scrollLeft}\n >\n <LucideIcon.ChevronLeft className='size-6!' />\n </Button>\n )}\n\n {canScrollRight && (\n <Button\n className='absolute -right-10 top-1/2 z-10 size-10 -translate-y-1/2 text-gray-700 hover:bg-transparent max-lg:hidden dark:text-gray-600 dark:hover:text-white'\n variant='ghost'\n onClick={scrollRight}\n >\n <LucideIcon.ChevronRight className='size-6!' />\n </Button>\n )}\n\n <div\n ref={scrollContainerRef}\n className='flex snap-x snap-mandatory gap-4 overflow-x-auto'\n style={{\n scrollbarWidth: 'none',\n msOverflowStyle: 'none'\n }}\n onScroll={updateScrollButtons}\n >\n {(isLoadingSuggestedProfiles ? Array(10).fill(null) : (suggestedProfilesData || [])).map((profile, index) => (\n <div\n key={profile?.id || `loading-${index}`}\n className='relative w-40 shrink-0 snap-start rounded-lg bg-gray-75 p-4 dark:bg-gray-925/30'\n onClick={!isLoadingSuggestedProfiles && profile ? () => navigate(`/profile/${profile.handle}`) : undefined}\n >\n <Button\n className='absolute right-2 top-1 hidden p-1 text-gray-400 hover:text-gray-600 dark:hover:text-gray-300'\n variant='link'\n onClick={(e) => {\n e.stopPropagation();\n handleDismiss(profile?.id || '');\n }}\n >\n <LucideIcon.X className='size-4' />\n </Button>\n\n <div className='flex flex-col items-center text-center'>\n <div className='mb-3'>\n {isLoadingSuggestedProfiles ? (\n <Skeleton className='size-16 rounded-full' />\n ) : (\n <ProfilePreviewHoverCard actor={profile} align='center'>\n <div>\n <APAvatar\n author={{\n icon: {url: profile?.avatarUrl || ''},\n name: profile?.name || '',\n handle: profile?.handle || ''\n }}\n size='md'\n />\n </div>\n </ProfilePreviewHoverCard>\n )}\n </div>\n\n <span className='mb-6 w-full truncate font-semibold text-black dark:text-white'>\n {isLoadingSuggestedProfiles ? (\n <Skeleton className='h-5 w-32' />\n ) : (\n profile?.name || ''\n )}\n </span>\n\n {isLoadingSuggestedProfiles ? (\n <Skeleton className='h-8 w-16' />\n ) : (\n <FollowButton\n following={profile?.followedByMe || false}\n handle={profile?.handle || ''}\n type='primary'\n onFollow={() => profile && handleFollow(profile)}\n onUnfollow={() => profile && handleUnfollow(profile)}\n />\n )}\n </div>\n </div>\n ))}\n </div>\n </div>\n </div>\n <Separator />\n </>\n );\n};\n\nexport default SuggestedProfiles;\n","import FeedInput from './feed-input';\nimport FeedItem from '@src/components/feed/feed-item';\nimport Layout from '@src/components/layout';\nimport NewNoteModal from '@src/components/modals/new-note-modal';\nimport SuggestedProfiles from './suggested-profiles';\nimport {Activity} from '@src/api/activitypub';\nimport {ActorProperties} from '@tryghost/admin-x-framework/api/activitypub';\nimport {Button, LoadingIndicator, LucideIcon, Separator} from '@tryghost/shade';\nimport {EmptyViewIcon, EmptyViewIndicator} from '@src/components/global/empty-view-indicator';\nimport {isPendingActivity} from '@src/utils/pending-activity';\nimport {useEffect, useRef} from 'react';\nimport {useNavigateWithBasePath} from '@src/hooks/use-navigate-with-base-path';\n\nexport type FeedListProps = {\n isLoading: boolean,\n activities: Activity[],\n user: ActorProperties,\n fetchNextPage: () => void,\n hasNextPage: boolean,\n isFetchingNextPage: boolean\n}\n\nconst FeedList:React.FC<FeedListProps> = ({\n isLoading,\n activities,\n user,\n fetchNextPage,\n hasNextPage,\n isFetchingNextPage\n}) => {\n const navigate = useNavigateWithBasePath();\n\n const observerRef = useRef<IntersectionObserver | null>(null);\n const loadMoreRef = useRef<HTMLDivElement | null>(null);\n const endLoadMoreRef = 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 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 loadMoreIndex = Math.max(0, Math.floor(activities.length * 0.75) - 1);\n\n return (\n <Layout>\n <div className='flex w-full flex-col'>\n <div className='w-full'>\n {activities.length > 0 ? (\n <div className='my-4'>\n <div className='mx-auto flex items-start gap-11'>\n <div className='flex w-full min-w-0 flex-col items-center'>\n <div className='flex w-full min-w-0 max-w-[620px] flex-col items-start'>\n <FeedInput user={user} />\n <ul className='mx-auto flex w-full flex-col px-4 max-lg:px-0' data-testid=\"feed-list\">\n {activities.map((activity, index) => (\n <li\n // eslint-disable-next-line react/no-array-index-key\n key={`${activity.id}-${activity.type}-${index}`} // We are using index here as activity.id is cannot be guaranteed to be unique at the moment\n data-testid=\"feed-item\"\n data-test-view-article\n >\n <FeedItem\n actor={activity.actor}\n allowDelete={activity.object.authored}\n commentCount={activity.object.replyCount ?? 0}\n isLoading={isLoading}\n isPending={isPendingActivity(activity.id)}\n layout={'feed'}\n likeCount={activity.object.likeCount ?? 0}\n object={activity.object}\n repostCount={activity.object.repostCount ?? 0}\n type={activity.type}\n onClick={() => {\n navigate(`/notes/${encodeURIComponent(activity.id)}`);\n }}\n />\n {index < activities.length - 1 && (\n <Separator />\n )}\n {index === 3 && (\n <SuggestedProfiles />\n )}\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 </div>\n </div>\n </div>\n </div>\n ) : (\n <div className='flex w-full flex-col items-center gap-10'>\n <div className='mt-4 flex w-full max-w-[620px] flex-col items-center'>\n <FeedInput user={user} />\n <div className='mt-[-128px]'>\n <EmptyViewIndicator>\n <EmptyViewIcon><LucideIcon.Hash /></EmptyViewIcon>\n <div>The Feed is the stream of thoughts and <span className='text-black dark:text-white'>bite-sized updates</span> from people you follow in the Social Web. It's looking a little empty right now but once the people you follow start posting, their updates will show up here.</div>\n <NewNoteModal>\n <Button className='text-white dark:text-black'>\n <LucideIcon.FilePen />\n Write your first note\n </Button>\n </NewNoteModal>\n </EmptyViewIndicator>\n </div>\n </div>\n </div>\n )}\n </div>\n </div>\n </Layout>\n );\n};\n\nexport default FeedList;\n","import AppError from '@components/layout/error';\nimport FeedList from './components/feed-list';\nimport React from 'react';\nimport {isApiError} from '@src/api/activitypub';\nimport {\n useFeedForUser,\n useUserDataForUser\n} from '@hooks/use-activity-pub-queries';\n\nconst Feed: React.FC = () => {\n const {feedQuery} = useFeedForUser({enabled: true});\n const {data, error, fetchNextPage, hasNextPage, isFetchingNextPage, isLoading} = feedQuery;\n\n const activities = (data?.pages.flatMap(page => page.posts) ?? Array.from({length: 5}, (_, index) => ({id: `placeholder-${index}`, object: {}})));\n\n const {data: user} = useUserDataForUser('index');\n\n if (error && isApiError(error)) {\n return <AppError errorCode={error.code} statusCode={error.statusCode}/>;\n }\n\n return <FeedList\n activities={activities}\n fetchNextPage={fetchNextPage}\n hasNextPage={hasNextPage!}\n isFetchingNextPage={isFetchingNextPage}\n isLoading={isLoading}\n user={user!}\n />;\n};\n\nexport default Feed;\n"],"names":["FeedInput","user","jsx","NewNoteModal","jsxs","APAvatar","SuggestedProfiles","scrollContainerRef","useRef","navigate","useNavigateWithBasePath","canScrollLeft","setCanScrollLeft","useState","canScrollRight","setCanScrollRight","suggestedProfilesQuery","updateSuggestedProfile","useSuggestedProfilesForUser","suggestedProfilesData","isLoadingSuggestedProfiles","updateScrollButtons","container","canScrollL","canScrollR","useEffect","handleDismiss","profileId","handleFollow","profile","handleUnfollow","scrollLeft","scrollRight","Fragment","H4","Button","LucideIcon.ChevronLeft","LucideIcon.ChevronRight","index","e","LucideIcon.X","Skeleton","ProfilePreviewHoverCard","FollowButton","Separator","FeedList","isLoading","activities","fetchNextPage","hasNextPage","isFetchingNextPage","observerRef","loadMoreRef","endLoadMoreRef","entries","loadMoreIndex","Layout","activity","FeedItem","isPendingActivity","LoadingIndicator","EmptyViewIndicator","EmptyViewIcon","LucideIcon.Hash","LucideIcon.FilePen","Feed","feedQuery","useFeedForUser","data","error","page","_","useUserDataForUser","isApiError","AppError"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hash-CaF6a8FN.mjs","sources":["../../../node_modules/lucide-react/dist/esm/icons/hash.js"],"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 [\"line\", { x1: \"4\", x2: \"20\", y1: \"9\", y2: \"9\", key: \"4lhtct\" }],\n [\"line\", { x1: \"4\", x2: \"20\", y1: \"15\", y2: \"15\", key: \"vyu0kd\" }],\n [\"line\", { x1: \"10\", x2: \"8\", y1: \"3\", y2: \"21\", key: \"1ggp8o\" }],\n [\"line\", { x1: \"16\", x2: \"14\", y1: \"3\", y2: \"21\", key: \"weycgp\" }]\n];\nconst Hash = createLucideIcon(\"hash\", __iconNode);\n\nexport { __iconNode, Hash as default };\n//# sourceMappingURL=hash.js.map\n"],"names":["__iconNode","Hash","createLucideIcon"],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASA,MAAMA,IAAa;AAAA,EACjB,CAAC,QAAQ,EAAE,IAAI,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,KAAK,SAAQ,CAAE;AAAA,EAC/D,CAAC,QAAQ,EAAE,IAAI,KAAK,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,KAAK,SAAQ,CAAE;AAAA,EACjE,CAAC,QAAQ,EAAE,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,IAAI,MAAM,KAAK,SAAQ,CAAE;AAAA,EAChE,CAAC,QAAQ,EAAE,IAAI,MAAM,IAAI,MAAM,IAAI,KAAK,IAAI,MAAM,KAAK,SAAQ,CAAE;AACnE,GACMC,IAAOC,EAAiB,QAAQF,CAAU;","x_google_ignoreList":[0]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"inbox-DKED2HYQ.mjs","sources":["../../../node_modules/lucide-react/dist/esm/icons/inbox.js"],"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 [\"polyline\", { points: \"22 12 16 12 14 15 10 15 8 12 2 12\", key: \"o97t9d\" }],\n [\n \"path\",\n {\n d: \"M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z\",\n key: \"oot6mr\"\n }\n ]\n];\nconst Inbox = createLucideIcon(\"inbox\", __iconNode);\n\nexport { __iconNode, Inbox as default };\n//# sourceMappingURL=inbox.js.map\n"],"names":["__iconNode","Inbox","createLucideIcon"],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASA,MAAMA,IAAa;AAAA,EACjB,CAAC,YAAY,EAAE,QAAQ,qCAAqC,KAAK,SAAQ,CAAE;AAAA,EAC3E;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,KAAK;AAAA,IACX;AAAA,EACA;AACA,GACMC,IAAQC,EAAiB,SAASF,CAAU;","x_google_ignoreList":[0]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-B3WQF6P6.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]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-BTDCxNUL.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-CVvjItO-.mjs","sources":["../../../node_modules/@radix-ui/react-collection/dist/index.mjs","../../../node_modules/@radix-ui/react-direction/dist/index.mjs","../../../node_modules/@radix-ui/react-roving-focus/dist/index.mjs"],"sourcesContent":["\"use client\";\n\n// src/collection-legacy.tsx\nimport React from \"react\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createCollection(name) {\n const PROVIDER_NAME = name + \"CollectionProvider\";\n const [createCollectionContext, createCollectionScope] = createContextScope(PROVIDER_NAME);\n const [CollectionProviderImpl, useCollectionContext] = createCollectionContext(\n PROVIDER_NAME,\n { collectionRef: { current: null }, itemMap: /* @__PURE__ */ new Map() }\n );\n const CollectionProvider = (props) => {\n const { scope, children } = props;\n const ref = React.useRef(null);\n const itemMap = React.useRef(/* @__PURE__ */ new Map()).current;\n return /* @__PURE__ */ jsx(CollectionProviderImpl, { scope, itemMap, collectionRef: ref, children });\n };\n CollectionProvider.displayName = PROVIDER_NAME;\n const COLLECTION_SLOT_NAME = name + \"CollectionSlot\";\n const CollectionSlotImpl = createSlot(COLLECTION_SLOT_NAME);\n const CollectionSlot = React.forwardRef(\n (props, forwardedRef) => {\n const { scope, children } = props;\n const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n const composedRefs = useComposedRefs(forwardedRef, context.collectionRef);\n return /* @__PURE__ */ jsx(CollectionSlotImpl, { ref: composedRefs, children });\n }\n );\n CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n const ITEM_SLOT_NAME = name + \"CollectionItemSlot\";\n const ITEM_DATA_ATTR = \"data-radix-collection-item\";\n const CollectionItemSlotImpl = createSlot(ITEM_SLOT_NAME);\n const CollectionItemSlot = React.forwardRef(\n (props, forwardedRef) => {\n const { scope, children, ...itemData } = props;\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n React.useEffect(() => {\n context.itemMap.set(ref, { ref, ...itemData });\n return () => void context.itemMap.delete(ref);\n });\n return /* @__PURE__ */ jsx(CollectionItemSlotImpl, { ...{ [ITEM_DATA_ATTR]: \"\" }, ref: composedRefs, children });\n }\n );\n CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n function useCollection(scope) {\n const context = useCollectionContext(name + \"CollectionConsumer\", scope);\n const getItems = React.useCallback(() => {\n const collectionNode = context.collectionRef.current;\n if (!collectionNode) return [];\n const orderedNodes = Array.from(collectionNode.querySelectorAll(`[${ITEM_DATA_ATTR}]`));\n const items = Array.from(context.itemMap.values());\n const orderedItems = items.sort(\n (a, b) => orderedNodes.indexOf(a.ref.current) - orderedNodes.indexOf(b.ref.current)\n );\n return orderedItems;\n }, [context.collectionRef, context.itemMap]);\n return getItems;\n }\n return [\n { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n useCollection,\n createCollectionScope\n ];\n}\n\n// src/collection.tsx\nimport React2 from \"react\";\nimport { createContextScope as createContextScope2 } from \"@radix-ui/react-context\";\nimport { useComposedRefs as useComposedRefs2 } from \"@radix-ui/react-compose-refs\";\nimport { createSlot as createSlot2 } from \"@radix-ui/react-slot\";\n\n// src/ordered-dictionary.ts\nvar __instanciated = /* @__PURE__ */ new WeakMap();\nvar OrderedDict = class _OrderedDict extends Map {\n #keys;\n constructor(entries) {\n super(entries);\n this.#keys = [...super.keys()];\n __instanciated.set(this, true);\n }\n set(key, value) {\n if (__instanciated.get(this)) {\n if (this.has(key)) {\n this.#keys[this.#keys.indexOf(key)] = key;\n } else {\n this.#keys.push(key);\n }\n }\n super.set(key, value);\n return this;\n }\n insert(index, key, value) {\n const has = this.has(key);\n const length = this.#keys.length;\n const relativeIndex = toSafeInteger(index);\n let actualIndex = relativeIndex >= 0 ? relativeIndex : length + relativeIndex;\n const safeIndex = actualIndex < 0 || actualIndex >= length ? -1 : actualIndex;\n if (safeIndex === this.size || has && safeIndex === this.size - 1 || safeIndex === -1) {\n this.set(key, value);\n return this;\n }\n const size = this.size + (has ? 0 : 1);\n if (relativeIndex < 0) {\n actualIndex++;\n }\n const keys = [...this.#keys];\n let nextValue;\n let shouldSkip = false;\n for (let i = actualIndex; i < size; i++) {\n if (actualIndex === i) {\n let nextKey = keys[i];\n if (keys[i] === key) {\n nextKey = keys[i + 1];\n }\n if (has) {\n this.delete(key);\n }\n nextValue = this.get(nextKey);\n this.set(key, value);\n } else {\n if (!shouldSkip && keys[i - 1] === key) {\n shouldSkip = true;\n }\n const currentKey = keys[shouldSkip ? i : i - 1];\n const currentValue = nextValue;\n nextValue = this.get(currentKey);\n this.delete(currentKey);\n this.set(currentKey, currentValue);\n }\n }\n return this;\n }\n with(index, key, value) {\n const copy = new _OrderedDict(this);\n copy.insert(index, key, value);\n return copy;\n }\n before(key) {\n const index = this.#keys.indexOf(key) - 1;\n if (index < 0) {\n return void 0;\n }\n return this.entryAt(index);\n }\n /**\n * Sets a new key-value pair at the position before the given key.\n */\n setBefore(key, newKey, value) {\n const index = this.#keys.indexOf(key);\n if (index === -1) {\n return this;\n }\n return this.insert(index, newKey, value);\n }\n after(key) {\n let index = this.#keys.indexOf(key);\n index = index === -1 || index === this.size - 1 ? -1 : index + 1;\n if (index === -1) {\n return void 0;\n }\n return this.entryAt(index);\n }\n /**\n * Sets a new key-value pair at the position after the given key.\n */\n setAfter(key, newKey, value) {\n const index = this.#keys.indexOf(key);\n if (index === -1) {\n return this;\n }\n return this.insert(index + 1, newKey, value);\n }\n first() {\n return this.entryAt(0);\n }\n last() {\n return this.entryAt(-1);\n }\n clear() {\n this.#keys = [];\n return super.clear();\n }\n delete(key) {\n const deleted = super.delete(key);\n if (deleted) {\n this.#keys.splice(this.#keys.indexOf(key), 1);\n }\n return deleted;\n }\n deleteAt(index) {\n const key = this.keyAt(index);\n if (key !== void 0) {\n return this.delete(key);\n }\n return false;\n }\n at(index) {\n const key = at(this.#keys, index);\n if (key !== void 0) {\n return this.get(key);\n }\n }\n entryAt(index) {\n const key = at(this.#keys, index);\n if (key !== void 0) {\n return [key, this.get(key)];\n }\n }\n indexOf(key) {\n return this.#keys.indexOf(key);\n }\n keyAt(index) {\n return at(this.#keys, index);\n }\n from(key, offset) {\n const index = this.indexOf(key);\n if (index === -1) {\n return void 0;\n }\n let dest = index + offset;\n if (dest < 0) dest = 0;\n if (dest >= this.size) dest = this.size - 1;\n return this.at(dest);\n }\n keyFrom(key, offset) {\n const index = this.indexOf(key);\n if (index === -1) {\n return void 0;\n }\n let dest = index + offset;\n if (dest < 0) dest = 0;\n if (dest >= this.size) dest = this.size - 1;\n return this.keyAt(dest);\n }\n find(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return entry;\n }\n index++;\n }\n return void 0;\n }\n findIndex(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return index;\n }\n index++;\n }\n return -1;\n }\n filter(predicate, thisArg) {\n const entries = [];\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n entries.push(entry);\n }\n index++;\n }\n return new _OrderedDict(entries);\n }\n map(callbackfn, thisArg) {\n const entries = [];\n let index = 0;\n for (const entry of this) {\n entries.push([entry[0], Reflect.apply(callbackfn, thisArg, [entry, index, this])]);\n index++;\n }\n return new _OrderedDict(entries);\n }\n reduce(...args) {\n const [callbackfn, initialValue] = args;\n let index = 0;\n let accumulator = initialValue ?? this.at(0);\n for (const entry of this) {\n if (index === 0 && args.length === 1) {\n accumulator = entry;\n } else {\n accumulator = Reflect.apply(callbackfn, this, [accumulator, entry, index, this]);\n }\n index++;\n }\n return accumulator;\n }\n reduceRight(...args) {\n const [callbackfn, initialValue] = args;\n let accumulator = initialValue ?? this.at(-1);\n for (let index = this.size - 1; index >= 0; index--) {\n const entry = this.at(index);\n if (index === this.size - 1 && args.length === 1) {\n accumulator = entry;\n } else {\n accumulator = Reflect.apply(callbackfn, this, [accumulator, entry, index, this]);\n }\n }\n return accumulator;\n }\n toSorted(compareFn) {\n const entries = [...this.entries()].sort(compareFn);\n return new _OrderedDict(entries);\n }\n toReversed() {\n const reversed = new _OrderedDict();\n for (let index = this.size - 1; index >= 0; index--) {\n const key = this.keyAt(index);\n const element = this.get(key);\n reversed.set(key, element);\n }\n return reversed;\n }\n toSpliced(...args) {\n const entries = [...this.entries()];\n entries.splice(...args);\n return new _OrderedDict(entries);\n }\n slice(start, end) {\n const result = new _OrderedDict();\n let stop = this.size - 1;\n if (start === void 0) {\n return result;\n }\n if (start < 0) {\n start = start + this.size;\n }\n if (end !== void 0 && end > 0) {\n stop = end - 1;\n }\n for (let index = start; index <= stop; index++) {\n const key = this.keyAt(index);\n const element = this.get(key);\n result.set(key, element);\n }\n return result;\n }\n every(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (!Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return false;\n }\n index++;\n }\n return true;\n }\n some(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return true;\n }\n index++;\n }\n return false;\n }\n};\nfunction at(array, index) {\n if (\"at\" in Array.prototype) {\n return Array.prototype.at.call(array, index);\n }\n const actualIndex = toSafeIndex(array, index);\n return actualIndex === -1 ? void 0 : array[actualIndex];\n}\nfunction toSafeIndex(array, index) {\n const length = array.length;\n const relativeIndex = toSafeInteger(index);\n const actualIndex = relativeIndex >= 0 ? relativeIndex : length + relativeIndex;\n return actualIndex < 0 || actualIndex >= length ? -1 : actualIndex;\n}\nfunction toSafeInteger(number) {\n return number !== number || number === 0 ? 0 : Math.trunc(number);\n}\n\n// src/collection.tsx\nimport { jsx as jsx2 } from \"react/jsx-runtime\";\nfunction createCollection2(name) {\n const PROVIDER_NAME = name + \"CollectionProvider\";\n const [createCollectionContext, createCollectionScope] = createContextScope2(PROVIDER_NAME);\n const [CollectionContextProvider, useCollectionContext] = createCollectionContext(\n PROVIDER_NAME,\n {\n collectionElement: null,\n collectionRef: { current: null },\n collectionRefObject: { current: null },\n itemMap: new OrderedDict(),\n setItemMap: () => void 0\n }\n );\n const CollectionProvider = ({ state, ...props }) => {\n return state ? /* @__PURE__ */ jsx2(CollectionProviderImpl, { ...props, state }) : /* @__PURE__ */ jsx2(CollectionInit, { ...props });\n };\n CollectionProvider.displayName = PROVIDER_NAME;\n const CollectionInit = (props) => {\n const state = useInitCollection();\n return /* @__PURE__ */ jsx2(CollectionProviderImpl, { ...props, state });\n };\n CollectionInit.displayName = PROVIDER_NAME + \"Init\";\n const CollectionProviderImpl = (props) => {\n const { scope, children, state } = props;\n const ref = React2.useRef(null);\n const [collectionElement, setCollectionElement] = React2.useState(\n null\n );\n const composeRefs = useComposedRefs2(ref, setCollectionElement);\n const [itemMap, setItemMap] = state;\n React2.useEffect(() => {\n if (!collectionElement) return;\n const observer = getChildListObserver(() => {\n });\n observer.observe(collectionElement, {\n childList: true,\n subtree: true\n });\n return () => {\n observer.disconnect();\n };\n }, [collectionElement]);\n return /* @__PURE__ */ jsx2(\n CollectionContextProvider,\n {\n scope,\n itemMap,\n setItemMap,\n collectionRef: composeRefs,\n collectionRefObject: ref,\n collectionElement,\n children\n }\n );\n };\n CollectionProviderImpl.displayName = PROVIDER_NAME + \"Impl\";\n const COLLECTION_SLOT_NAME = name + \"CollectionSlot\";\n const CollectionSlotImpl = createSlot2(COLLECTION_SLOT_NAME);\n const CollectionSlot = React2.forwardRef(\n (props, forwardedRef) => {\n const { scope, children } = props;\n const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n const composedRefs = useComposedRefs2(forwardedRef, context.collectionRef);\n return /* @__PURE__ */ jsx2(CollectionSlotImpl, { ref: composedRefs, children });\n }\n );\n CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n const ITEM_SLOT_NAME = name + \"CollectionItemSlot\";\n const ITEM_DATA_ATTR = \"data-radix-collection-item\";\n const CollectionItemSlotImpl = createSlot2(ITEM_SLOT_NAME);\n const CollectionItemSlot = React2.forwardRef(\n (props, forwardedRef) => {\n const { scope, children, ...itemData } = props;\n const ref = React2.useRef(null);\n const [element, setElement] = React2.useState(null);\n const composedRefs = useComposedRefs2(forwardedRef, ref, setElement);\n const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n const { setItemMap } = context;\n const itemDataRef = React2.useRef(itemData);\n if (!shallowEqual(itemDataRef.current, itemData)) {\n itemDataRef.current = itemData;\n }\n const memoizedItemData = itemDataRef.current;\n React2.useEffect(() => {\n const itemData2 = memoizedItemData;\n setItemMap((map) => {\n if (!element) {\n return map;\n }\n if (!map.has(element)) {\n map.set(element, { ...itemData2, element });\n return map.toSorted(sortByDocumentPosition);\n }\n return map.set(element, { ...itemData2, element }).toSorted(sortByDocumentPosition);\n });\n return () => {\n setItemMap((map) => {\n if (!element || !map.has(element)) {\n return map;\n }\n map.delete(element);\n return new OrderedDict(map);\n });\n };\n }, [element, memoizedItemData, setItemMap]);\n return /* @__PURE__ */ jsx2(CollectionItemSlotImpl, { ...{ [ITEM_DATA_ATTR]: \"\" }, ref: composedRefs, children });\n }\n );\n CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n function useInitCollection() {\n return React2.useState(new OrderedDict());\n }\n function useCollection(scope) {\n const { itemMap } = useCollectionContext(name + \"CollectionConsumer\", scope);\n return itemMap;\n }\n const functions = {\n createCollectionScope,\n useCollection,\n useInitCollection\n };\n return [\n { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n functions\n ];\n}\nfunction shallowEqual(a, b) {\n if (a === b) return true;\n if (typeof a !== \"object\" || typeof b !== \"object\") return false;\n if (a == null || b == null) return false;\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (keysA.length !== keysB.length) return false;\n for (const key of keysA) {\n if (!Object.prototype.hasOwnProperty.call(b, key)) return false;\n if (a[key] !== b[key]) return false;\n }\n return true;\n}\nfunction isElementPreceding(a, b) {\n return !!(b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_PRECEDING);\n}\nfunction sortByDocumentPosition(a, b) {\n return !a[1].element || !b[1].element ? 0 : isElementPreceding(a[1].element, b[1].element) ? -1 : 1;\n}\nfunction getChildListObserver(callback) {\n const observer = new MutationObserver((mutationsList) => {\n for (const mutation of mutationsList) {\n if (mutation.type === \"childList\") {\n callback();\n return;\n }\n }\n });\n return observer;\n}\nexport {\n createCollection,\n createCollection2 as unstable_createCollection\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/direction/src/direction.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DirectionContext = React.createContext(void 0);\nvar DirectionProvider = (props) => {\n const { dir, children } = props;\n return /* @__PURE__ */ jsx(DirectionContext.Provider, { value: dir, children });\n};\nfunction useDirection(localDir) {\n const globalDir = React.useContext(DirectionContext);\n return localDir || globalDir || \"ltr\";\n}\nvar Provider = DirectionProvider;\nexport {\n DirectionProvider,\n Provider,\n useDirection\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/roving-focus-group.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createCollection } from \"@radix-ui/react-collection\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { jsx } from \"react/jsx-runtime\";\nvar ENTRY_FOCUS = \"rovingFocusGroup.onEntryFocus\";\nvar EVENT_OPTIONS = { bubbles: false, cancelable: true };\nvar GROUP_NAME = \"RovingFocusGroup\";\nvar [Collection, useCollection, createCollectionScope] = createCollection(GROUP_NAME);\nvar [createRovingFocusGroupContext, createRovingFocusGroupScope] = createContextScope(\n GROUP_NAME,\n [createCollectionScope]\n);\nvar [RovingFocusProvider, useRovingFocusContext] = createRovingFocusGroupContext(GROUP_NAME);\nvar RovingFocusGroup = React.forwardRef(\n (props, forwardedRef) => {\n return /* @__PURE__ */ jsx(Collection.Provider, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ jsx(RovingFocusGroupImpl, { ...props, ref: forwardedRef }) }) });\n }\n);\nRovingFocusGroup.displayName = GROUP_NAME;\nvar RovingFocusGroupImpl = React.forwardRef((props, forwardedRef) => {\n const {\n __scopeRovingFocusGroup,\n orientation,\n loop = false,\n dir,\n currentTabStopId: currentTabStopIdProp,\n defaultCurrentTabStopId,\n onCurrentTabStopIdChange,\n onEntryFocus,\n preventScrollOnEntryFocus = false,\n ...groupProps\n } = props;\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const direction = useDirection(dir);\n const [currentTabStopId, setCurrentTabStopId] = useControllableState({\n prop: currentTabStopIdProp,\n defaultProp: defaultCurrentTabStopId ?? null,\n onChange: onCurrentTabStopIdChange,\n caller: GROUP_NAME\n });\n const [isTabbingBackOut, setIsTabbingBackOut] = React.useState(false);\n const handleEntryFocus = useCallbackRef(onEntryFocus);\n const getItems = useCollection(__scopeRovingFocusGroup);\n const isClickFocusRef = React.useRef(false);\n const [focusableItemsCount, setFocusableItemsCount] = React.useState(0);\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n node.addEventListener(ENTRY_FOCUS, handleEntryFocus);\n return () => node.removeEventListener(ENTRY_FOCUS, handleEntryFocus);\n }\n }, [handleEntryFocus]);\n return /* @__PURE__ */ jsx(\n RovingFocusProvider,\n {\n scope: __scopeRovingFocusGroup,\n orientation,\n dir: direction,\n loop,\n currentTabStopId,\n onItemFocus: React.useCallback(\n (tabStopId) => setCurrentTabStopId(tabStopId),\n [setCurrentTabStopId]\n ),\n onItemShiftTab: React.useCallback(() => setIsTabbingBackOut(true), []),\n onFocusableItemAdd: React.useCallback(\n () => setFocusableItemsCount((prevCount) => prevCount + 1),\n []\n ),\n onFocusableItemRemove: React.useCallback(\n () => setFocusableItemsCount((prevCount) => prevCount - 1),\n []\n ),\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n tabIndex: isTabbingBackOut || focusableItemsCount === 0 ? -1 : 0,\n \"data-orientation\": orientation,\n ...groupProps,\n ref: composedRefs,\n style: { outline: \"none\", ...props.style },\n onMouseDown: composeEventHandlers(props.onMouseDown, () => {\n isClickFocusRef.current = true;\n }),\n onFocus: composeEventHandlers(props.onFocus, (event) => {\n const isKeyboardFocus = !isClickFocusRef.current;\n if (event.target === event.currentTarget && isKeyboardFocus && !isTabbingBackOut) {\n const entryFocusEvent = new CustomEvent(ENTRY_FOCUS, EVENT_OPTIONS);\n event.currentTarget.dispatchEvent(entryFocusEvent);\n if (!entryFocusEvent.defaultPrevented) {\n const items = getItems().filter((item) => item.focusable);\n const activeItem = items.find((item) => item.active);\n const currentItem = items.find((item) => item.id === currentTabStopId);\n const candidateItems = [activeItem, currentItem, ...items].filter(\n Boolean\n );\n const candidateNodes = candidateItems.map((item) => item.ref.current);\n focusFirst(candidateNodes, preventScrollOnEntryFocus);\n }\n }\n isClickFocusRef.current = false;\n }),\n onBlur: composeEventHandlers(props.onBlur, () => setIsTabbingBackOut(false))\n }\n )\n }\n );\n});\nvar ITEM_NAME = \"RovingFocusGroupItem\";\nvar RovingFocusGroupItem = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeRovingFocusGroup,\n focusable = true,\n active = false,\n tabStopId,\n children,\n ...itemProps\n } = props;\n const autoId = useId();\n const id = tabStopId || autoId;\n const context = useRovingFocusContext(ITEM_NAME, __scopeRovingFocusGroup);\n const isCurrentTabStop = context.currentTabStopId === id;\n const getItems = useCollection(__scopeRovingFocusGroup);\n const { onFocusableItemAdd, onFocusableItemRemove, currentTabStopId } = context;\n React.useEffect(() => {\n if (focusable) {\n onFocusableItemAdd();\n return () => onFocusableItemRemove();\n }\n }, [focusable, onFocusableItemAdd, onFocusableItemRemove]);\n return /* @__PURE__ */ jsx(\n Collection.ItemSlot,\n {\n scope: __scopeRovingFocusGroup,\n id,\n focusable,\n active,\n children: /* @__PURE__ */ jsx(\n Primitive.span,\n {\n tabIndex: isCurrentTabStop ? 0 : -1,\n \"data-orientation\": context.orientation,\n ...itemProps,\n ref: forwardedRef,\n onMouseDown: composeEventHandlers(props.onMouseDown, (event) => {\n if (!focusable) event.preventDefault();\n else context.onItemFocus(id);\n }),\n onFocus: composeEventHandlers(props.onFocus, () => context.onItemFocus(id)),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if (event.key === \"Tab\" && event.shiftKey) {\n context.onItemShiftTab();\n return;\n }\n if (event.target !== event.currentTarget) return;\n const focusIntent = getFocusIntent(event, context.orientation, context.dir);\n if (focusIntent !== void 0) {\n if (event.metaKey || event.ctrlKey || event.altKey || event.shiftKey) return;\n event.preventDefault();\n const items = getItems().filter((item) => item.focusable);\n let candidateNodes = items.map((item) => item.ref.current);\n if (focusIntent === \"last\") candidateNodes.reverse();\n else if (focusIntent === \"prev\" || focusIntent === \"next\") {\n if (focusIntent === \"prev\") candidateNodes.reverse();\n const currentIndex = candidateNodes.indexOf(event.currentTarget);\n candidateNodes = context.loop ? wrapArray(candidateNodes, currentIndex + 1) : candidateNodes.slice(currentIndex + 1);\n }\n setTimeout(() => focusFirst(candidateNodes));\n }\n }),\n children: typeof children === \"function\" ? children({ isCurrentTabStop, hasTabStop: currentTabStopId != null }) : children\n }\n )\n }\n );\n }\n);\nRovingFocusGroupItem.displayName = ITEM_NAME;\nvar MAP_KEY_TO_FOCUS_INTENT = {\n ArrowLeft: \"prev\",\n ArrowUp: \"prev\",\n ArrowRight: \"next\",\n ArrowDown: \"next\",\n PageUp: \"first\",\n Home: \"first\",\n PageDown: \"last\",\n End: \"last\"\n};\nfunction getDirectionAwareKey(key, dir) {\n if (dir !== \"rtl\") return key;\n return key === \"ArrowLeft\" ? \"ArrowRight\" : key === \"ArrowRight\" ? \"ArrowLeft\" : key;\n}\nfunction getFocusIntent(event, orientation, dir) {\n const key = getDirectionAwareKey(event.key, dir);\n if (orientation === \"vertical\" && [\"ArrowLeft\", \"ArrowRight\"].includes(key)) return void 0;\n if (orientation === \"horizontal\" && [\"ArrowUp\", \"ArrowDown\"].includes(key)) return void 0;\n return MAP_KEY_TO_FOCUS_INTENT[key];\n}\nfunction focusFirst(candidates, preventScroll = false) {\n const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n for (const candidate of candidates) {\n if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n candidate.focus({ preventScroll });\n if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n }\n}\nfunction wrapArray(array, startIndex) {\n return array.map((_, index) => array[(startIndex + index) % array.length]);\n}\nvar Root = RovingFocusGroup;\nvar Item = RovingFocusGroupItem;\nexport {\n Item,\n Root,\n RovingFocusGroup,\n RovingFocusGroupItem,\n createRovingFocusGroupScope\n};\n//# sourceMappingURL=index.mjs.map\n"],"names":["createCollection","name","PROVIDER_NAME","createCollectionContext","createCollectionScope","createContextScope","CollectionProviderImpl","useCollectionContext","CollectionProvider","props","scope","children","ref","React","itemMap","jsx","COLLECTION_SLOT_NAME","CollectionSlotImpl","createSlot","CollectionSlot","forwardedRef","context","composedRefs","useComposedRefs","ITEM_SLOT_NAME","ITEM_DATA_ATTR","CollectionItemSlotImpl","CollectionItemSlot","itemData","useCollection","collectionNode","orderedNodes","a","b","DirectionContext","React.createContext","useDirection","localDir","globalDir","React.useContext","ENTRY_FOCUS","EVENT_OPTIONS","GROUP_NAME","Collection","createRovingFocusGroupContext","createRovingFocusGroupScope","RovingFocusProvider","useRovingFocusContext","RovingFocusGroup","React.forwardRef","RovingFocusGroupImpl","__scopeRovingFocusGroup","orientation","loop","dir","currentTabStopIdProp","defaultCurrentTabStopId","onCurrentTabStopIdChange","onEntryFocus","preventScrollOnEntryFocus","groupProps","React.useRef","direction","currentTabStopId","setCurrentTabStopId","useControllableState","isTabbingBackOut","setIsTabbingBackOut","React.useState","handleEntryFocus","useCallbackRef","getItems","isClickFocusRef","focusableItemsCount","setFocusableItemsCount","React.useEffect","node","React.useCallback","tabStopId","prevCount","Primitive","composeEventHandlers","event","isKeyboardFocus","entryFocusEvent","items","item","activeItem","currentItem","candidateNodes","focusFirst","ITEM_NAME","RovingFocusGroupItem","focusable","active","itemProps","autoId","useId","id","isCurrentTabStop","onFocusableItemAdd","onFocusableItemRemove","focusIntent","getFocusIntent","currentIndex","wrapArray","MAP_KEY_TO_FOCUS_INTENT","getDirectionAwareKey","key","candidates","preventScroll","PREVIOUSLY_FOCUSED_ELEMENT","candidate","array","startIndex","_","index","Root","Item"],"mappings":"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","x_google_ignoreList":[0,1,2]}
|