@tryghost/activitypub 3.0.8 → 3.1.8

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.
Files changed (62) hide show
  1. package/dist/activitypub.js +2 -2
  2. package/dist/{at-sign-Fsk3x72r.mjs → at-sign-B8iQvS42.mjs} +2 -2
  3. package/dist/{at-sign-Fsk3x72r.mjs.map → at-sign-B8iQvS42.mjs.map} +1 -1
  4. package/dist/{avatar-flipboard-C10JfFS_.mjs → avatar-flipboard-DNwig8eO.mjs} +2 -2
  5. package/dist/{avatar-flipboard-C10JfFS_.mjs.map → avatar-flipboard-DNwig8eO.mjs.map} +1 -1
  6. package/dist/{bluesky-sharing-C1xeGSL6.mjs → bluesky-sharing-Cx4y2eb_.mjs} +6 -6
  7. package/dist/{bluesky-sharing-C1xeGSL6.mjs.map → bluesky-sharing-Cx4y2eb_.mjs.map} +1 -1
  8. package/dist/{copy-C1fElSkQ.mjs → copy-Dg0Olymi.mjs} +2 -2
  9. package/dist/{copy-C1fElSkQ.mjs.map → copy-Dg0Olymi.mjs.map} +1 -1
  10. package/dist/{deleted-feed-item-Bun4tY2_.mjs → deleted-feed-item-C6ttBewp.mjs} +4 -4
  11. package/dist/{deleted-feed-item-Bun4tY2_.mjs.map → deleted-feed-item-C6ttBewp.mjs.map} +1 -1
  12. package/dist/{edit-profile-CYh00FZ7.mjs → edit-profile-D17SCzby.mjs} +6 -6
  13. package/dist/edit-profile-D17SCzby.mjs.map +1 -0
  14. package/dist/{feed-BxUqmcN9.mjs → feed-OJkCDmvZ.mjs} +7 -7
  15. package/dist/{feed-BxUqmcN9.mjs.map → feed-OJkCDmvZ.mjs.map} +1 -1
  16. package/dist/{hash-CNgwAx-U.mjs → hash-CaF6a8FN.mjs} +2 -2
  17. package/dist/{hash-CNgwAx-U.mjs.map → hash-CaF6a8FN.mjs.map} +1 -1
  18. package/dist/{inbox-DqNqII4a.mjs → inbox-DKED2HYQ.mjs} +2 -2
  19. package/dist/{inbox-DqNqII4a.mjs.map → inbox-DKED2HYQ.mjs.map} +1 -1
  20. package/dist/{index-jhjmoHwu.mjs → index-B3WQF6P6.mjs} +13 -13
  21. package/dist/{index-jhjmoHwu.mjs.map → index-B3WQF6P6.mjs.map} +1 -1
  22. package/dist/{index-C3KJXzZE.mjs → index-BTDCxNUL.mjs} +119 -119
  23. package/dist/index-BTDCxNUL.mjs.map +1 -0
  24. package/dist/{index-CONoLlDU.mjs → index-CVvjItO-.mjs} +2 -2
  25. package/dist/{index-CONoLlDU.mjs.map → index-CVvjItO-.mjs.map} +1 -1
  26. package/dist/{index-BueIufRq.mjs → index-Cjktkl_Z.mjs} +9 -9
  27. package/dist/index-Cjktkl_Z.mjs.map +1 -0
  28. package/dist/{index-Dvh9q3jy.mjs → index-Cl_bAvCu.mjs} +8 -8
  29. package/dist/{index-Dvh9q3jy.mjs.map → index-Cl_bAvCu.mjs.map} +1 -1
  30. package/dist/{index-C9pnotJK.mjs → index-Cty-No3l.mjs} +467 -376
  31. package/dist/index-Cty-No3l.mjs.map +1 -0
  32. package/dist/{index-CJJXnqq1.mjs → index-DUNT0yV6.mjs} +38 -38
  33. package/dist/index-DUNT0yV6.mjs.map +1 -0
  34. package/dist/{index--Q6orQkb.mjs → index-q4Ygdo0-.mjs} +10243 -9600
  35. package/dist/index-q4Ygdo0-.mjs.map +1 -0
  36. package/dist/{moderation-CYhwUFi2.mjs → moderation-nXSBmheF.mjs} +5 -5
  37. package/dist/{moderation-CYhwUFi2.mjs.map → moderation-nXSBmheF.mjs.map} +1 -1
  38. package/dist/{note-COVa8CMw.mjs → note-uNSHIe4G.mjs} +4 -4
  39. package/dist/{note-COVa8CMw.mjs.map → note-uNSHIe4G.mjs.map} +1 -1
  40. package/dist/{reply-BHpKVBxx.mjs → reply-BVkBkA2M.mjs} +2 -2
  41. package/dist/{reply-BHpKVBxx.mjs.map → reply-BVkBkA2M.mjs.map} +1 -1
  42. package/dist/{separator-DP7q5sFH.mjs → separator-BljDgTc9.mjs} +12 -12
  43. package/dist/{separator-DP7q5sFH.mjs.map → separator-BljDgTc9.mjs.map} +1 -1
  44. package/dist/{settings-3n7zo_3K.mjs → settings-CjuIDMTF.mjs} +3 -3
  45. package/dist/{settings-3n7zo_3K.mjs.map → settings-CjuIDMTF.mjs.map} +1 -1
  46. package/dist/{step-1-BmUukywZ.mjs → step-1-YV90JpzH.mjs} +12 -12
  47. package/dist/{step-1-BmUukywZ.mjs.map → step-1-YV90JpzH.mjs.map} +1 -1
  48. package/dist/{step-2-C--I3xxp.mjs → step-2-BO7QOUb7.mjs} +6 -6
  49. package/dist/{step-2-C--I3xxp.mjs.map → step-2-BO7QOUb7.mjs.map} +1 -1
  50. package/dist/{step-3-0Deh5N9c.mjs → step-3-qgcA50w6.mjs} +7 -7
  51. package/dist/{step-3-0Deh5N9c.mjs.map → step-3-qgcA50w6.mjs.map} +1 -1
  52. package/dist/{tabs-D_vmoLBo.mjs → tabs-DdupTuil.mjs} +15 -15
  53. package/dist/{tabs-D_vmoLBo.mjs.map → tabs-DdupTuil.mjs.map} +1 -1
  54. package/dist/{topic-filter-DJMrhH-c.mjs → topic-filter-DqTL6EKu.mjs} +2 -2
  55. package/dist/{topic-filter-DJMrhH-c.mjs.map → topic-filter-DqTL6EKu.mjs.map} +1 -1
  56. package/package.json +3 -1
  57. package/dist/edit-profile-CYh00FZ7.mjs.map +0 -1
  58. package/dist/index--Q6orQkb.mjs.map +0 -1
  59. package/dist/index-BueIufRq.mjs.map +0 -1
  60. package/dist/index-C3KJXzZE.mjs.map +0 -1
  61. package/dist/index-C9pnotJK.mjs.map +0 -1
  62. package/dist/index-CJJXnqq1.mjs.map +0 -1
@@ -1,12 +1,12 @@
1
- import { a6 as v, a7 as y, u as b, d as j, a8 as k, e as F, j as e, L as P, H as B, B as E, a9 as M, R as T, k as L, Q as A, P as C, A as H, S as u, aa as I, ab as S, ac as U } from "./index--Q6orQkb.mjs";
2
- import { T as _ } from "./topic-filter-DJMrhH-c.mjs";
1
+ import { a6 as v, a7 as y, u as b, d as j, a8 as k, e as F, j as e, L as P, H as B, B as E, a9 as M, R as T, k as H, Q as L, P as A, A as C, S as u, aa as I, ab as S, ac as z, ad as U } from "./index-q4Ygdo0-.mjs";
2
+ import { T as _ } from "./topic-filter-DqTL6EKu.mjs";
3
3
  /**
4
4
  * @license lucide-react v0.553.0 - ISC
5
5
  *
6
6
  * This source code is licensed under the ISC license.
7
7
  * See the LICENSE file in the root directory of this source tree.
8
8
  */
9
- const z = [
9
+ const Q = [
10
10
  [
11
11
  "path",
12
12
  {
@@ -16,13 +16,13 @@ const z = [
16
16
  ],
17
17
  ["path", { d: "M4 9a5 5 0 0 1 8 4 5 5 0 0 1-8-4", key: "1dlkgp" }],
18
18
  ["path", { d: "M5 21h14", key: "11awu3" }]
19
- ], Q = v("sprout", z), f = ({ profile: s, update: n, isLoading: t, onOpenChange: l }) => {
20
- const c = A("index", "me"), { data: r } = c, i = s.handle === (r == null ? void 0 : r.handle), o = () => {
21
- n(s.id, {
19
+ ], R = v("sprout", Q), f = ({ profile: a, update: n, isLoading: t, onOpenChange: l }) => {
20
+ const c = L("index", "me"), { data: r } = c, i = a.handle === (r == null ? void 0 : r.handle), o = () => {
21
+ n(a.id, {
22
22
  followedByMe: !0
23
23
  });
24
24
  }, d = () => {
25
- n(s.id, {
25
+ n(a.id, {
26
26
  followedByMe: !1
27
27
  });
28
28
  }, x = j();
@@ -31,47 +31,47 @@ const z = [
31
31
  {
32
32
  className: "flex w-full cursor-pointer items-start gap-3 pt-4 [&:last-of-type>:nth-child(2)]:border-none",
33
33
  onClick: () => {
34
- x(`/profile/${s.handle}`);
34
+ x(`/profile/${a.handle}`);
35
35
  },
36
36
  children: /* @__PURE__ */ e.jsxs("div", { className: "flex w-full flex-col gap-1 border-b border-gray-200 pb-4 dark:border-gray-950", children: [
37
37
  /* @__PURE__ */ e.jsxs("div", { className: "flex items-center justify-between gap-3", children: [
38
- /* @__PURE__ */ e.jsx(C, { actor: s, isCurrentUser: i, children: /* @__PURE__ */ e.jsxs("div", { className: "flex gap-3", children: [
39
- /* @__PURE__ */ e.jsx(H, { author: {
38
+ /* @__PURE__ */ e.jsx(A, { actor: a, isCurrentUser: i, children: /* @__PURE__ */ e.jsxs("div", { className: "flex gap-3", children: [
39
+ /* @__PURE__ */ e.jsx(C, { author: {
40
40
  icon: {
41
- url: s.avatarUrl
41
+ url: a.avatarUrl
42
42
  },
43
- name: s.name,
44
- handle: s.handle
43
+ name: a.name,
44
+ handle: a.handle
45
45
  }, onClick: () => l == null ? void 0 : l(!1) }),
46
46
  /* @__PURE__ */ e.jsxs("div", { className: "-mt-0.5 flex grow flex-col break-anywhere", children: [
47
- /* @__PURE__ */ e.jsx("span", { className: "line-clamp-1 font-semibold text-black dark:text-white", children: t ? /* @__PURE__ */ e.jsx(u, { className: "w-full max-w-48" }) : s.name }),
48
- /* @__PURE__ */ e.jsx("span", { className: "line-clamp-1 text-md text-gray-700 dark:text-gray-600", children: t ? /* @__PURE__ */ e.jsx(u, { className: "w-32" }) : s.handle })
47
+ /* @__PURE__ */ e.jsx("span", { className: "line-clamp-1 font-semibold text-black dark:text-white", children: t ? /* @__PURE__ */ e.jsx(u, { className: "w-full max-w-48" }) : a.name }),
48
+ /* @__PURE__ */ e.jsx("span", { className: "line-clamp-1 text-md text-gray-700 dark:text-gray-600", children: t ? /* @__PURE__ */ e.jsx(u, { className: "w-32" }) : a.handle })
49
49
  ] })
50
50
  ] }) }),
51
51
  t ? /* @__PURE__ */ e.jsx("div", { className: "inline-flex items-center", children: /* @__PURE__ */ e.jsx(u, { className: "w-24" }) }) : i ? null : /* @__PURE__ */ e.jsx(
52
52
  I,
53
53
  {
54
54
  className: "ml-auto",
55
- following: s.followedByMe,
56
- handle: s.handle,
55
+ following: a.followedByMe,
56
+ handle: a.handle,
57
57
  type: "primary",
58
58
  onFollow: o,
59
59
  onUnfollow: d
60
60
  }
61
61
  )
62
62
  ] }),
63
- /* @__PURE__ */ e.jsx("div", { className: "pl-[52px]", children: t ? /* @__PURE__ */ e.jsx(u, { className: "w-full max-w-96" }) : s.bio && /* @__PURE__ */ e.jsx(
63
+ /* @__PURE__ */ e.jsx("div", { className: "pl-[52px]", children: t ? /* @__PURE__ */ e.jsx(u, { className: "w-full max-w-96" }) : a.bio && /* @__PURE__ */ e.jsx(
64
64
  "div",
65
65
  {
66
- dangerouslySetInnerHTML: { __html: S(U(s.bio, ["a", "br"])) },
66
+ dangerouslySetInnerHTML: { __html: S(z(U(a.bio, ["a", "br"]))) },
67
67
  className: "ap-profile-content pointer-events-none mt-0 line-clamp-2 max-w-[460px] break-anywhere"
68
68
  }
69
69
  ) })
70
70
  ] })
71
71
  }
72
72
  );
73
- }, V = () => {
74
- const { isExplainerClosed: s, setExplainerClosed: n } = y(), t = b(), l = j(), c = t.topic || "top", { exploreProfilesQuery: r, updateExploreProfile: i } = k("index", c), { data: o, isLoading: d, fetchNextPage: x, hasNextPage: h, isFetchingNextPage: p } = r, w = Array(10).fill(null).map((a, m) => ({
73
+ }, W = () => {
74
+ const { isExplainerClosed: a, setExplainerClosed: n } = y(), t = b(), l = j(), c = t.topic || "top", { exploreProfilesQuery: r, updateExploreProfile: i } = k("index", c), { data: o, isLoading: d, fetchNextPage: x, hasNextPage: h, isFetchingNextPage: p } = r, w = Array(10).fill(null).map((s, m) => ({
75
75
  id: `skeleton-${m}`,
76
76
  name: "",
77
77
  handle: "",
@@ -79,10 +79,10 @@ const z = [
79
79
  bio: "",
80
80
  url: "",
81
81
  followedByMe: !1
82
- })), g = (o == null ? void 0 : o.pages.flatMap((a) => a.accounts)) || [];
82
+ })), g = (o == null ? void 0 : o.pages.flatMap((s) => s.accounts)) || [];
83
83
  return F(() => {
84
- const a = document.querySelector(".load-more-trigger");
85
- if (!a)
84
+ const s = document.querySelector(".load-more-trigger");
85
+ if (!s)
86
86
  return;
87
87
  const m = new IntersectionObserver(
88
88
  (N) => {
@@ -90,10 +90,10 @@ const z = [
90
90
  },
91
91
  { threshold: 0.1 }
92
92
  );
93
- return m.observe(a), () => m.disconnect();
93
+ return m.observe(s), () => m.disconnect();
94
94
  }, [h, p, x]), /* @__PURE__ */ e.jsxs(P, { children: [
95
- !s && /* @__PURE__ */ e.jsxs("div", { className: "relative mb-6 flex items-start gap-1 rounded-md bg-gradient-to-r from-[#CFB0FF66] to-[#B6E8FF66] p-4 pr-10 dark:from-[#CFB0FF20] dark:to-[#B6E8FF20]", children: [
96
- /* @__PURE__ */ e.jsx("div", { className: "min-w-[46px]", children: /* @__PURE__ */ e.jsx(Q, { className: "text-purple", size: 46, strokeWidth: 0.75 }) }),
95
+ !a && /* @__PURE__ */ e.jsxs("div", { className: "relative mb-6 flex items-start gap-1 rounded-md bg-gradient-to-r from-[#CFB0FF66] to-[#B6E8FF66] p-4 pr-10 dark:from-[#CFB0FF20] dark:to-[#B6E8FF20]", children: [
96
+ /* @__PURE__ */ e.jsx("div", { className: "min-w-[46px]", children: /* @__PURE__ */ e.jsx(R, { className: "text-purple", size: 46, strokeWidth: 0.75 }) }),
97
97
  /* @__PURE__ */ e.jsxs("div", { className: "mt-1 flex flex-col gap-[2px]", children: [
98
98
  /* @__PURE__ */ e.jsx(B, { className: "text-pretty", children: "The fastest way to grow your followers, is to follow others!" }),
99
99
  /* @__PURE__ */ e.jsx("p", { className: "2xl:text-pretty text-balance text-sm text-black/60 dark:text-white/60", children: "Here are some recommendations to get you started, from Ghost publishers and other great accounts from around the social web." })
@@ -105,34 +105,34 @@ const z = [
105
105
  {
106
106
  currentTopic: c,
107
107
  excludeTopics: ["following"],
108
- onTopicChange: (a) => {
109
- a === "top" ? l("/explore", { replace: !0 }) : l(`/explore/${a}`, { replace: !0 });
108
+ onTopicChange: (s) => {
109
+ s === "top" ? l("/explore", { replace: !0 }) : l(`/explore/${s}`, { replace: !0 });
110
110
  }
111
111
  }
112
112
  ),
113
- /* @__PURE__ */ e.jsx("div", { className: "mt-12 flex flex-col gap-12 pb-20 max-md:mt-5", children: d ? /* @__PURE__ */ e.jsx("div", { children: w.map((a) => /* @__PURE__ */ e.jsx("div", { className: "mx-auto w-full max-w-[640px]", children: /* @__PURE__ */ e.jsx(
113
+ /* @__PURE__ */ e.jsx("div", { className: "mt-12 flex flex-col gap-12 pb-20 max-md:mt-5", children: d ? /* @__PURE__ */ e.jsx("div", { children: w.map((s) => /* @__PURE__ */ e.jsx("div", { className: "mx-auto w-full max-w-[640px]", children: /* @__PURE__ */ e.jsx(
114
114
  f,
115
115
  {
116
116
  isLoading: d,
117
- profile: a,
117
+ profile: s,
118
118
  update: () => {
119
119
  }
120
120
  }
121
- ) }, a.id)) }) : /* @__PURE__ */ e.jsxs("div", { className: "mx-auto flex w-full max-w-[640px] flex-col items-center", children: [
122
- /* @__PURE__ */ e.jsx("div", { className: "w-full", children: g.map((a) => /* @__PURE__ */ e.jsx(T.Fragment, { children: /* @__PURE__ */ e.jsx(
121
+ ) }, s.id)) }) : /* @__PURE__ */ e.jsxs("div", { className: "mx-auto flex w-full max-w-[640px] flex-col items-center", children: [
122
+ /* @__PURE__ */ e.jsx("div", { className: "w-full", children: g.map((s) => /* @__PURE__ */ e.jsx(T.Fragment, { children: /* @__PURE__ */ e.jsx(
123
123
  f,
124
124
  {
125
125
  isLoading: !1,
126
- profile: a,
126
+ profile: s,
127
127
  update: i
128
128
  }
129
- ) }, a.id)) }),
129
+ ) }, s.id)) }),
130
130
  /* @__PURE__ */ e.jsx("div", { className: "load-more-trigger h-4 w-full" }),
131
- p && /* @__PURE__ */ e.jsx("div", { className: "mt-2 flex w-full justify-center", children: /* @__PURE__ */ e.jsx(L, { size: "sm" }) })
131
+ p && /* @__PURE__ */ e.jsx("div", { className: "mt-2 flex w-full justify-center", children: /* @__PURE__ */ e.jsx(H, { size: "sm" }) })
132
132
  ] }) })
133
133
  ] });
134
134
  };
135
135
  export {
136
- V as default
136
+ W as default
137
137
  };
138
- //# sourceMappingURL=index-CJJXnqq1.mjs.map
138
+ //# sourceMappingURL=index-DUNT0yV6.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-DUNT0yV6.mjs","sources":["../../../node_modules/lucide-react/dist/esm/icons/sprout.js","../src/views/explore/explore.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.553.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M14 9.536V7a4 4 0 0 1 4-4h1.5a.5.5 0 0 1 .5.5V5a4 4 0 0 1-4 4 4 4 0 0 0-4 4c0 2 1 3 1 5a5 5 0 0 1-1 3\",\n key: \"139s4v\"\n }\n ],\n [\"path\", { d: \"M4 9a5 5 0 0 1 8 4 5 5 0 0 1-8-4\", key: \"1dlkgp\" }],\n [\"path\", { d: \"M5 21h14\", key: \"11awu3\" }]\n];\nconst Sprout = createLucideIcon(\"sprout\", __iconNode);\n\nexport { __iconNode, Sprout as default };\n//# sourceMappingURL=sprout.js.map\n","import APAvatar from '@src/components/global/ap-avatar';\nimport FollowButton from '@src/components/global/follow-button';\nimport Layout from '@components/layout';\nimport ProfilePreviewHoverCard from '@components/global/profile-preview-hover-card';\nimport React, {useEffect} from 'react';\nimport TopicFilter, {type Topic} from '@src/components/topic-filter';\nimport {type Account, type ExploreAccount} from '@src/api/activitypub';\nimport {Button, H4, LoadingIndicator, LucideIcon, Skeleton} from '@tryghost/shade';\nimport {openLinksInNewTab, sanitizeHtml, stripHtml} from '@src/utils/content-formatters';\nimport {useAccountForUser, useExploreProfilesForUserByTopic} from '@hooks/use-activity-pub-queries';\nimport {useNavigateWithBasePath} from '@src/hooks/use-navigate-with-base-path';\nimport {useOnboardingStatus} from '@src/components/layout/onboarding';\nimport {useParams} from '@tryghost/admin-x-framework';\n\ninterface ExploreProfileProps {\n profile: ExploreAccount;\n update: (id: string, updated: Partial<Account>) => void;\n isLoading: boolean;\n}\n\nexport const ExploreProfile: React.FC<ExploreProfileProps & {\n onOpenChange?: (open: boolean) => void;\n}> = ({profile, update, isLoading, onOpenChange}) => {\n const currentAccountQuery = useAccountForUser('index', 'me');\n const {data: currentUser} = currentAccountQuery;\n const isCurrentUser = profile.handle === currentUser?.handle;\n\n const onFollow = () => {\n update(profile.id, {\n followedByMe: true\n });\n };\n\n const onUnfollow = () => {\n update(profile.id, {\n followedByMe: false\n });\n };\n\n const navigate = useNavigateWithBasePath();\n\n return (\n <div\n className='flex w-full cursor-pointer items-start gap-3 pt-4 [&:last-of-type>:nth-child(2)]:border-none'\n onClick={() => {\n navigate(`/profile/${profile.handle}`);\n }}\n >\n <div className='flex w-full flex-col gap-1 border-b border-gray-200 pb-4 dark:border-gray-950'>\n <div className='flex items-center justify-between gap-3'>\n <ProfilePreviewHoverCard actor={profile as Account} isCurrentUser={isCurrentUser}>\n <div className='flex gap-3'>\n <APAvatar author={\n {\n icon: {\n url: profile.avatarUrl\n },\n name: profile.name,\n handle: profile.handle\n }\n } onClick={() => onOpenChange?.(false)} />\n <div className='-mt-0.5 flex grow flex-col break-anywhere'>\n <span className='line-clamp-1 font-semibold text-black dark:text-white'>{!isLoading ? profile.name : <Skeleton className='w-full max-w-48' />}</span>\n <span className='line-clamp-1 text-md text-gray-700 dark:text-gray-600'>{!isLoading ? profile.handle : <Skeleton className='w-32' />}</span>\n </div>\n </div>\n </ProfilePreviewHoverCard>\n {!isLoading ? (\n !isCurrentUser ? (\n <FollowButton\n className='ml-auto'\n following={profile.followedByMe}\n handle={profile.handle}\n type='primary'\n onFollow={onFollow}\n onUnfollow={onUnfollow}\n />\n ) : null\n ) : (\n <div className='inline-flex items-center'>\n <Skeleton className='w-24' />\n </div>\n )}\n </div>\n <div className='pl-[52px]'>\n {isLoading ?\n <Skeleton className='w-full max-w-96' />\n :\n profile.bio &&\n <div\n dangerouslySetInnerHTML={{__html: sanitizeHtml(openLinksInNewTab(stripHtml(profile.bio, ['a', 'br'])))}}\n className='ap-profile-content pointer-events-none mt-0 line-clamp-2 max-w-[460px] break-anywhere'\n />\n }\n </div>\n </div>\n </div>\n );\n};\n\nconst Explore: React.FC = () => {\n const {isExplainerClosed, setExplainerClosed} = useOnboardingStatus();\n const params = useParams<{topic?: string}>();\n const navigate = useNavigateWithBasePath();\n\n const topic: Topic = (params.topic as Topic) || 'top';\n\n const {exploreProfilesQuery, updateExploreProfile} = useExploreProfilesForUserByTopic('index', topic);\n const {data: exploreProfilesData, isLoading: isLoadingExploreProfiles, fetchNextPage, hasNextPage, isFetchingNextPage} = exploreProfilesQuery;\n\n const emptyProfiles = Array(10).fill(null).map((_, i) => ({\n id: `skeleton-${i}`,\n name: '',\n handle: '',\n avatarUrl: '',\n bio: '',\n url: '',\n followedByMe: false\n }));\n\n const profiles = exploreProfilesData?.pages.flatMap(page => page.accounts) || [];\n\n useEffect(() => {\n const node = document.querySelector('.load-more-trigger');\n if (!node) {\n return;\n }\n\n const observer = new IntersectionObserver(\n (entries) => {\n if (entries[0].isIntersecting && hasNextPage && !isFetchingNextPage) {\n fetchNextPage();\n }\n },\n {threshold: 0.1}\n );\n\n observer.observe(node);\n return () => observer.disconnect();\n }, [hasNextPage, isFetchingNextPage, fetchNextPage]);\n\n return (\n <Layout>\n {!isExplainerClosed &&\n <div className='relative mb-6 flex items-start gap-1 rounded-md bg-gradient-to-r from-[#CFB0FF66] to-[#B6E8FF66] p-4 pr-10 dark:from-[#CFB0FF20] dark:to-[#B6E8FF20]'>\n <div className='min-w-[46px]'>\n <LucideIcon.Sprout className='text-purple' size={46} strokeWidth={0.75} />\n </div>\n <div className='mt-1 flex flex-col gap-[2px]'>\n <H4 className='text-pretty'>The fastest way to grow your followers, is to follow others!</H4>\n <p className='2xl:text-pretty text-balance text-sm text-black/60 dark:text-white/60'>Here are some recommendations to get you started, from Ghost publishers and other great accounts from around the social web.</p>\n </div>\n <Button className='absolute right-4 top-[17px] size-6 opacity-40' variant='link' onClick={() => setExplainerClosed(true)}><LucideIcon.X size={20} /></Button>\n </div>\n }\n <TopicFilter\n currentTopic={topic}\n excludeTopics={['following']}\n onTopicChange={(newTopic) => {\n if (newTopic === 'top') {\n navigate('/explore', {replace: true});\n } else {\n navigate(`/explore/${newTopic}`, {replace: true});\n }\n }}\n />\n <div className='mt-12 flex flex-col gap-12 pb-20 max-md:mt-5'>\n {isLoadingExploreProfiles ? (\n <div>\n {emptyProfiles.map(profile => (\n <div key={profile.id} className='mx-auto w-full max-w-[640px]'>\n <ExploreProfile\n isLoading={isLoadingExploreProfiles}\n profile={profile}\n update={() => {}}\n />\n </div>\n ))}\n </div>\n ) : (\n <div className='mx-auto flex w-full max-w-[640px] flex-col items-center'>\n <div className='w-full'>\n {profiles.map(profile => (\n <React.Fragment key={profile.id}>\n <ExploreProfile\n isLoading={false}\n profile={profile}\n update={updateExploreProfile}\n />\n </React.Fragment>\n ))}\n </div>\n <div className='load-more-trigger h-4 w-full' />\n {isFetchingNextPage && (\n <div className='mt-2 flex w-full justify-center'>\n <LoadingIndicator size='sm' />\n </div>\n )}\n </div>\n )}\n </div>\n </Layout>\n );\n};\n\nexport default Explore;\n"],"names":["__iconNode","Sprout","createLucideIcon","ExploreProfile","profile","update","isLoading","onOpenChange","currentAccountQuery","useAccountForUser","currentUser","isCurrentUser","onFollow","onUnfollow","navigate","useNavigateWithBasePath","jsx","jsxs","ProfilePreviewHoverCard","APAvatar","Skeleton","FollowButton","sanitizeHtml","openLinksInNewTab","stripHtml","Explore","isExplainerClosed","setExplainerClosed","useOnboardingStatus","params","useParams","topic","exploreProfilesQuery","updateExploreProfile","useExploreProfilesForUserByTopic","exploreProfilesData","isLoadingExploreProfiles","fetchNextPage","hasNextPage","isFetchingNextPage","emptyProfiles","_","i","profiles","page","useEffect","node","observer","entries","Layout","LucideIcon.Sprout","H4","Button","LucideIcon.X","TopicFilter","newTopic","React","LoadingIndicator"],"mappings":"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","x_google_ignoreList":[0]}