@tryghost/activitypub 3.0.6 → 3.0.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.
- package/dist/activitypub.js +6 -3
- package/dist/at-sign-Fsk3x72r.mjs +15 -0
- package/dist/at-sign-Fsk3x72r.mjs.map +1 -0
- package/dist/avatar-flipboard-C10JfFS_.mjs +19 -0
- package/dist/avatar-flipboard-C10JfFS_.mjs.map +1 -0
- package/dist/bluesky-sharing-C1xeGSL6.mjs +150 -0
- package/dist/bluesky-sharing-C1xeGSL6.mjs.map +1 -0
- package/dist/copy-C1fElSkQ.mjs +15 -0
- package/dist/copy-C1fElSkQ.mjs.map +1 -0
- package/dist/deleted-feed-item-Bun4tY2_.mjs +133 -0
- package/dist/deleted-feed-item-Bun4tY2_.mjs.map +1 -0
- package/dist/edit-profile-CYh00FZ7.mjs +3741 -0
- package/dist/edit-profile-CYh00FZ7.mjs.map +1 -0
- package/dist/feed-BxUqmcN9.mjs +207 -0
- package/dist/feed-BxUqmcN9.mjs.map +1 -0
- package/dist/hash-CNgwAx-U.mjs +17 -0
- package/dist/hash-CNgwAx-U.mjs.map +1 -0
- package/dist/inbox-DqNqII4a.mjs +21 -0
- package/dist/inbox-DqNqII4a.mjs.map +1 -0
- package/dist/index--Q6orQkb.mjs +26429 -0
- package/dist/index--Q6orQkb.mjs.map +1 -0
- package/dist/index-BueIufRq.mjs +6120 -0
- package/dist/index-BueIufRq.mjs.map +1 -0
- package/dist/index-C3KJXzZE.mjs +688 -0
- package/dist/index-C3KJXzZE.mjs.map +1 -0
- package/dist/index-C9pnotJK.mjs +4994 -0
- package/dist/index-C9pnotJK.mjs.map +1 -0
- package/dist/index-CJJXnqq1.mjs +138 -0
- package/dist/index-CJJXnqq1.mjs.map +1 -0
- package/dist/index-CONoLlDU.mjs +219 -0
- package/dist/index-CONoLlDU.mjs.map +1 -0
- package/dist/index-Dvh9q3jy.mjs +367 -0
- package/dist/index-Dvh9q3jy.mjs.map +1 -0
- package/dist/{index-CFmbpqlr.mjs → index-jhjmoHwu.mjs} +34 -34
- package/dist/{index-CFmbpqlr.mjs.map → index-jhjmoHwu.mjs.map} +1 -1
- package/dist/moderation-CYhwUFi2.mjs +113 -0
- package/dist/moderation-CYhwUFi2.mjs.map +1 -0
- package/dist/note-COVa8CMw.mjs +249 -0
- package/dist/note-COVa8CMw.mjs.map +1 -0
- package/dist/reply-BHpKVBxx.mjs +15 -0
- package/dist/reply-BHpKVBxx.mjs.map +1 -0
- package/dist/separator-DP7q5sFH.mjs +116 -0
- package/dist/separator-DP7q5sFH.mjs.map +1 -0
- package/dist/settings-3n7zo_3K.mjs +79 -0
- package/dist/settings-3n7zo_3K.mjs.map +1 -0
- package/dist/step-1-BmUukywZ.mjs +73 -0
- package/dist/step-1-BmUukywZ.mjs.map +1 -0
- package/dist/step-2-C--I3xxp.mjs +143 -0
- package/dist/step-2-C--I3xxp.mjs.map +1 -0
- package/dist/step-3-0Deh5N9c.mjs +345 -0
- package/dist/step-3-0Deh5N9c.mjs.map +1 -0
- package/dist/tabs-D_vmoLBo.mjs +1096 -0
- package/dist/tabs-D_vmoLBo.mjs.map +1 -0
- package/dist/topic-filter-DJMrhH-c.mjs +39 -0
- package/dist/topic-filter-DJMrhH-c.mjs.map +1 -0
- package/package.json +2 -2
- package/dist/index-BJKUA7bK.mjs +0 -46030
- package/dist/index-BJKUA7bK.mjs.map +0 -1
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
import { u as G, a as ee, b as m, c as C, d as te, e as $, j as e, L as y, S as c, E as se, f as ne, P as ae, A as oe, g as le, r as ie, h as ce, F as j, R as re, i as R, k as de } from "./index--Q6orQkb.mjs";
|
|
2
|
+
import { u as xe, D as he, A as ue, S as U } from "./deleted-feed-item-Bun4tY2_.mjs";
|
|
3
|
+
import { H as me } from "./hash-CNgwAx-U.mjs";
|
|
4
|
+
const p = () => /* @__PURE__ */ e.jsx("div", { className: "h-px w-full bg-gray-200 dark:bg-gray-950" }), pe = () => {
|
|
5
|
+
const { postId: z } = G(), { canGoBack: k } = ee(), [B, T] = m(/* @__PURE__ */ new Set()), [H, I] = m(/* @__PURE__ */ new Set()), [S, P] = m(/* @__PURE__ */ new Set()), [w, D] = m(!1), V = C(null), v = C(null), r = C(null), g = C(null), u = te(), {
|
|
6
|
+
threadParents: d,
|
|
7
|
+
post: n,
|
|
8
|
+
processedReplies: E,
|
|
9
|
+
isLoading: q,
|
|
10
|
+
loadMoreChildren: F,
|
|
11
|
+
loadMoreChildReplies: L,
|
|
12
|
+
hasMoreChildren: b,
|
|
13
|
+
hasMoreChildReplies: f
|
|
14
|
+
} = xe(decodeURIComponent(z ?? ""), { includeAncestors: !0 }), a = n == null ? void 0 : n.object, O = (a == null ? void 0 : a.replyCount) ?? 0, [M, W] = m(!1);
|
|
15
|
+
if ($(() => {
|
|
16
|
+
v.current && d.length > 0 && !M && (v.current.scrollIntoView({
|
|
17
|
+
behavior: "instant",
|
|
18
|
+
block: "start"
|
|
19
|
+
}), W(!0));
|
|
20
|
+
}, [d, M]), $(() => {
|
|
21
|
+
r.current && r.current.disconnect();
|
|
22
|
+
const t = document.querySelector("[data-scrollable-container]");
|
|
23
|
+
if (t)
|
|
24
|
+
return r.current = new IntersectionObserver(async (o) => {
|
|
25
|
+
if (o[0].isIntersecting && b && !w) {
|
|
26
|
+
D(!0);
|
|
27
|
+
try {
|
|
28
|
+
await F();
|
|
29
|
+
} catch (s) {
|
|
30
|
+
console.error("Failed to load more top-level replies:", s);
|
|
31
|
+
} finally {
|
|
32
|
+
D(!1);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}, {
|
|
36
|
+
root: t,
|
|
37
|
+
rootMargin: "200px"
|
|
38
|
+
}), g.current && r.current.observe(g.current), () => {
|
|
39
|
+
r.current && r.current.disconnect();
|
|
40
|
+
};
|
|
41
|
+
}, [b, w, F]), q)
|
|
42
|
+
return /* @__PURE__ */ e.jsx(y, { children: /* @__PURE__ */ e.jsxs("div", { className: "mx-auto flex max-w-[620px] flex-col items-center gap-3 pt-9 lg:px-8", children: [
|
|
43
|
+
/* @__PURE__ */ e.jsxs("div", { className: "flex w-full items-center gap-3", children: [
|
|
44
|
+
/* @__PURE__ */ e.jsx(c, { className: "size-10 rounded-full" }),
|
|
45
|
+
/* @__PURE__ */ e.jsxs("div", { className: "grow pt-1", children: [
|
|
46
|
+
/* @__PURE__ */ e.jsx(c, { className: "w-24" }),
|
|
47
|
+
/* @__PURE__ */ e.jsx(c, { className: "w-3/5" })
|
|
48
|
+
] })
|
|
49
|
+
] }),
|
|
50
|
+
/* @__PURE__ */ e.jsxs("div", { className: "mb-7 w-full", children: [
|
|
51
|
+
/* @__PURE__ */ e.jsx(c, {}),
|
|
52
|
+
/* @__PURE__ */ e.jsx(c, { className: "w-4/5" }),
|
|
53
|
+
/* @__PURE__ */ e.jsx(c, {})
|
|
54
|
+
] }),
|
|
55
|
+
/* @__PURE__ */ e.jsx(p, {}),
|
|
56
|
+
/* @__PURE__ */ e.jsxs("div", { className: "flex w-full items-center gap-3 py-3", children: [
|
|
57
|
+
/* @__PURE__ */ e.jsx(c, { className: "block size-full", containerClassName: "size-10 rounded-full overflow-hidden" }),
|
|
58
|
+
/* @__PURE__ */ e.jsxs("div", { children: [
|
|
59
|
+
/* @__PURE__ */ e.jsx(c, { className: "w-52" }),
|
|
60
|
+
/* @__PURE__ */ e.jsx(c, { className: "w-28" })
|
|
61
|
+
] })
|
|
62
|
+
] }),
|
|
63
|
+
/* @__PURE__ */ e.jsx(p, {})
|
|
64
|
+
] }) });
|
|
65
|
+
if (!n)
|
|
66
|
+
return /* @__PURE__ */ e.jsx(y, { children: /* @__PURE__ */ e.jsx("div", { className: "mx-auto mt-4 flex w-full max-w-[620px] flex-col items-center", children: /* @__PURE__ */ e.jsxs(se, { children: [
|
|
67
|
+
/* @__PURE__ */ e.jsx(ne, { children: /* @__PURE__ */ e.jsx(me, {}) }),
|
|
68
|
+
/* @__PURE__ */ e.jsx("div", { children: "Error loading note." })
|
|
69
|
+
] }) }) });
|
|
70
|
+
function N() {
|
|
71
|
+
}
|
|
72
|
+
function J(t) {
|
|
73
|
+
T((o) => {
|
|
74
|
+
const s = new Set(o);
|
|
75
|
+
return s.has(t) ? s.delete(t) : (s.add(t), I((l) => {
|
|
76
|
+
const x = new Set(l);
|
|
77
|
+
return x.add(t), x;
|
|
78
|
+
})), s;
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
async function K(t, o) {
|
|
82
|
+
if (!S.has(t)) {
|
|
83
|
+
P((s) => new Set(s).add(t));
|
|
84
|
+
try {
|
|
85
|
+
L && await L(o);
|
|
86
|
+
} catch (s) {
|
|
87
|
+
console.error("Failed to load more replies for chain:", s);
|
|
88
|
+
} finally {
|
|
89
|
+
P((s) => {
|
|
90
|
+
const l = new Set(s);
|
|
91
|
+
return l.delete(t), l;
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return /* @__PURE__ */ e.jsx(y, { children: /* @__PURE__ */ e.jsx("div", { className: "mx-auto flex h-full max-w-[620px] flex-col", children: /* @__PURE__ */ e.jsx("div", { className: "relative flex-1", children: /* @__PURE__ */ e.jsx("div", { className: "grow overflow-y-auto", children: /* @__PURE__ */ e.jsxs("div", { className: "mx-auto px-8 pb-10 pt-5 max-lg:px-0", children: [
|
|
97
|
+
!d.length && /* @__PURE__ */ e.jsx(ae, { actor: n.actor, isCurrentUser: n.object.authored, children: /* @__PURE__ */ e.jsxs("div", { className: `col-[2/3] mx-auto flex w-full cursor-pointer items-center gap-3 ${k ? "pt-10 max-md:pt-5" : "pt-5"}`, children: [
|
|
98
|
+
/* @__PURE__ */ e.jsx("div", { className: "relative z-10", children: /* @__PURE__ */ e.jsx(oe, { author: n.actor, showFollowButton: !n.object.authored && !n.actor.followedByMe }) }),
|
|
99
|
+
/* @__PURE__ */ e.jsxs("div", { className: "relative z-10 flex w-full min-w-0 cursor-pointer flex-col overflow-visible text-[1.5rem]", onClick: (t) => {
|
|
100
|
+
ce(n.actor, u, t);
|
|
101
|
+
}, children: [
|
|
102
|
+
/* @__PURE__ */ e.jsx("div", { className: "flex w-full", children: /* @__PURE__ */ e.jsx("span", { className: "min-w-0 truncate whitespace-nowrap font-semibold hover:underline", children: n.actor.name }) }),
|
|
103
|
+
/* @__PURE__ */ e.jsxs("div", { className: "flex w-full", children: [
|
|
104
|
+
/* @__PURE__ */ e.jsx("span", { className: 'truncate text-gray-700 after:mx-1 after:font-normal after:text-gray-700 after:content-["·"]', children: le(n.actor) }),
|
|
105
|
+
/* @__PURE__ */ e.jsx("span", { className: "text-gray-700", children: ie(a, !a.authored) })
|
|
106
|
+
] })
|
|
107
|
+
] })
|
|
108
|
+
] }) }),
|
|
109
|
+
d.map((t) => t.object.type === "Tombstone" ? /* @__PURE__ */ e.jsx(he, { last: !1 }) : /* @__PURE__ */ e.jsx(
|
|
110
|
+
j,
|
|
111
|
+
{
|
|
112
|
+
actor: t.actor,
|
|
113
|
+
allowDelete: !1,
|
|
114
|
+
commentCount: t.object.replyCount ?? 0,
|
|
115
|
+
last: !1,
|
|
116
|
+
layout: "reply",
|
|
117
|
+
likeCount: t.object.likeCount ?? 0,
|
|
118
|
+
object: t.object,
|
|
119
|
+
repostCount: t.object.repostCount ?? 0,
|
|
120
|
+
type: "Note",
|
|
121
|
+
onClick: () => {
|
|
122
|
+
u(`/${t.object.type === "Article" ? "reader" : "notes"}/${encodeURIComponent(t.object.id)}`);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
)),
|
|
126
|
+
/* @__PURE__ */ e.jsx("div", { ref: v, className: `${k ? "scroll-mt-[12px]" : "scroll-mt-[124px]"}`, children: /* @__PURE__ */ e.jsxs("div", { className: `${d.length > 0 && "min-h-[calc(100vh-52px)]"}`, children: [
|
|
127
|
+
/* @__PURE__ */ e.jsx(
|
|
128
|
+
j,
|
|
129
|
+
{
|
|
130
|
+
actor: n.actor,
|
|
131
|
+
allowDelete: !1,
|
|
132
|
+
commentCount: O,
|
|
133
|
+
last: !0,
|
|
134
|
+
layout: "modal",
|
|
135
|
+
likeCount: a.likeCount ?? 0,
|
|
136
|
+
object: a,
|
|
137
|
+
repostCount: a.repostCount,
|
|
138
|
+
showHeader: d.length > 0,
|
|
139
|
+
showStats: !0,
|
|
140
|
+
type: "Note"
|
|
141
|
+
}
|
|
142
|
+
),
|
|
143
|
+
/* @__PURE__ */ e.jsx(
|
|
144
|
+
ue,
|
|
145
|
+
{
|
|
146
|
+
object: a
|
|
147
|
+
}
|
|
148
|
+
),
|
|
149
|
+
/* @__PURE__ */ e.jsx(p, {}),
|
|
150
|
+
/* @__PURE__ */ e.jsxs("div", { ref: V, children: [
|
|
151
|
+
E.map((t, o) => {
|
|
152
|
+
const s = o === E.length - 1, l = t.mainReply.id, x = B.has(l), Q = H.has(l), X = S.has(l), h = t.chain.length > 0;
|
|
153
|
+
return /* @__PURE__ */ e.jsxs(re.Fragment, { children: [
|
|
154
|
+
/* @__PURE__ */ e.jsx(
|
|
155
|
+
j,
|
|
156
|
+
{
|
|
157
|
+
actor: t.mainReply.actor,
|
|
158
|
+
allowDelete: t.mainReply.object.authored,
|
|
159
|
+
commentCount: t.mainReply.object.replyCount ?? 0,
|
|
160
|
+
isChainParent: h,
|
|
161
|
+
isPending: R(t.mainReply.id),
|
|
162
|
+
last: !h,
|
|
163
|
+
layout: "reply",
|
|
164
|
+
likeCount: t.mainReply.object.likeCount ?? 0,
|
|
165
|
+
object: t.mainReply.object,
|
|
166
|
+
parentId: a.id,
|
|
167
|
+
repostCount: t.mainReply.object.repostCount ?? 0,
|
|
168
|
+
type: "Note",
|
|
169
|
+
onClick: () => {
|
|
170
|
+
u(`/notes/${encodeURIComponent(t.mainReply.id)}`);
|
|
171
|
+
},
|
|
172
|
+
onDelete: N
|
|
173
|
+
}
|
|
174
|
+
),
|
|
175
|
+
h && t.chain[0] && /* @__PURE__ */ e.jsx(
|
|
176
|
+
j,
|
|
177
|
+
{
|
|
178
|
+
actor: t.chain[0].actor,
|
|
179
|
+
allowDelete: t.chain[0].object.authored,
|
|
180
|
+
commentCount: t.chain[0].object.replyCount ?? 0,
|
|
181
|
+
isChainContinuation: !0,
|
|
182
|
+
isPending: R(t.chain[0].id),
|
|
183
|
+
last: t.chain.length === 1,
|
|
184
|
+
layout: "reply",
|
|
185
|
+
likeCount: t.chain[0].object.likeCount ?? 0,
|
|
186
|
+
object: t.chain[0].object,
|
|
187
|
+
parentId: a.id,
|
|
188
|
+
repostCount: t.chain[0].object.repostCount ?? 0,
|
|
189
|
+
type: "Note",
|
|
190
|
+
onClick: () => {
|
|
191
|
+
u(`/notes/${encodeURIComponent(t.chain[0].id)}`);
|
|
192
|
+
},
|
|
193
|
+
onDelete: N
|
|
194
|
+
},
|
|
195
|
+
t.chain[0].id
|
|
196
|
+
),
|
|
197
|
+
h && x && t.chain.slice(1).map((i, Y) => {
|
|
198
|
+
const A = Y === t.chain.slice(1).length - 1, Z = f && f(o), _ = A && Z;
|
|
199
|
+
return /* @__PURE__ */ e.jsx(
|
|
200
|
+
j,
|
|
201
|
+
{
|
|
202
|
+
actor: i.actor,
|
|
203
|
+
allowDelete: i.object.authored,
|
|
204
|
+
commentCount: i.object.replyCount ?? 0,
|
|
205
|
+
isChainContinuation: !0,
|
|
206
|
+
isPending: R(i.id),
|
|
207
|
+
last: A && !_,
|
|
208
|
+
layout: "reply",
|
|
209
|
+
likeCount: i.object.likeCount ?? 0,
|
|
210
|
+
object: i.object,
|
|
211
|
+
parentId: a.id,
|
|
212
|
+
repostCount: i.object.repostCount ?? 0,
|
|
213
|
+
type: "Note",
|
|
214
|
+
onClick: () => {
|
|
215
|
+
u(`/notes/${encodeURIComponent(i.id)}`);
|
|
216
|
+
},
|
|
217
|
+
onDelete: N
|
|
218
|
+
},
|
|
219
|
+
i.id
|
|
220
|
+
);
|
|
221
|
+
}),
|
|
222
|
+
h && t.chain.length > 1 && !x && /* @__PURE__ */ e.jsx(
|
|
223
|
+
U,
|
|
224
|
+
{
|
|
225
|
+
variant: "expand",
|
|
226
|
+
onClick: () => J(l)
|
|
227
|
+
}
|
|
228
|
+
),
|
|
229
|
+
h && x && Q && f && f(o) && /* @__PURE__ */ e.jsx(
|
|
230
|
+
U,
|
|
231
|
+
{
|
|
232
|
+
loading: X,
|
|
233
|
+
variant: "loadMore",
|
|
234
|
+
onClick: () => K(l, o)
|
|
235
|
+
}
|
|
236
|
+
),
|
|
237
|
+
!s && /* @__PURE__ */ e.jsx(p, {})
|
|
238
|
+
] }, t.mainReply.id);
|
|
239
|
+
}),
|
|
240
|
+
w && /* @__PURE__ */ e.jsx("div", { className: "flex flex-col items-center justify-center text-center", children: /* @__PURE__ */ e.jsx(de, { size: "md" }) })
|
|
241
|
+
] }),
|
|
242
|
+
b && /* @__PURE__ */ e.jsx("div", { ref: g, className: "h-1" })
|
|
243
|
+
] }) })
|
|
244
|
+
] }) }) }) }) });
|
|
245
|
+
};
|
|
246
|
+
export {
|
|
247
|
+
pe as default
|
|
248
|
+
};
|
|
249
|
+
//# sourceMappingURL=note-COVa8CMw.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"note-COVa8CMw.mjs","sources":["../src/views/feed/note.tsx"],"sourcesContent":["import APAvatar from '@src/components/global/ap-avatar';\nimport APReplyBox from '@src/components/global/ap-reply-box';\nimport DeletedFeedItem from '@src/components/feed/deleted-feed-item';\nimport FeedItem from '@components/feed/feed-item';\nimport Layout from '@src/components/layout/layout';\nimport ProfilePreviewHoverCard from '@components/global/profile-preview-hover-card';\nimport React, {useEffect, useRef, useState} from 'react';\nimport ShowRepliesButton from '@src/components/global/show-replies-button';\nimport getUsername from '@src/utils/get-username';\nimport {Activity} from '@tryghost/admin-x-framework/api/activitypub';\nimport {EmptyViewIcon, EmptyViewIndicator} from '@src/components/global/empty-view-indicator';\nimport {LoadingIndicator, LucideIcon, Skeleton} from '@tryghost/shade';\nimport {handleProfileClick} from '@src/utils/handle-profile-click';\nimport {isPendingActivity} from '@src/utils/pending-activity';\nimport {renderTimestamp} from '@src/utils/render-timestamp';\nimport {useNavigateWithBasePath} from '@src/hooks/use-navigate-with-base-path';\nimport {useNavigationStack, useParams} from '@tryghost/admin-x-framework';\nimport {useReplyChainData} from '@hooks/use-reply-chain-data';\n\nconst FeedItemDivider: React.FC = () => (\n <div className=\"h-px w-full bg-gray-200 dark:bg-gray-950\"></div>\n);\n\nconst Note = () => {\n const {postId} = useParams();\n const {canGoBack} = useNavigationStack();\n\n const [expandedChains, setExpandedChains] = useState<Set<string>>(new Set());\n const [fullyExpandedChains, setFullyExpandedChains] = useState<Set<string>>(new Set());\n const [loadingChains, setLoadingChains] = useState<Set<string>>(new Set());\n const [isLoadingMoreTopLevelReplies, setIsLoadingMoreTopLevelReplies] = useState(false);\n const repliesRef = useRef<HTMLDivElement>(null);\n const postRef = useRef<HTMLDivElement>(null);\n const observerRef = useRef<IntersectionObserver | null>(null);\n const loadMoreRef = useRef<HTMLDivElement | null>(null);\n const navigate = useNavigateWithBasePath();\n\n const {\n threadParents,\n post: currentPost,\n processedReplies,\n isLoading,\n loadMoreChildren,\n loadMoreChildReplies,\n hasMoreChildren,\n hasMoreChildReplies\n } = useReplyChainData(decodeURIComponent(postId ?? ''), {includeAncestors: true});\n\n const object = currentPost?.object;\n\n const replyCount = object?.replyCount ?? 0;\n const [hasScrolledToPost, setHasScrolledToPost] = useState(false);\n\n useEffect(() => {\n if (postRef.current && threadParents.length > 0 && !hasScrolledToPost) {\n postRef.current.scrollIntoView({\n behavior: 'instant',\n block: 'start'\n });\n setHasScrolledToPost(true);\n }\n }, [threadParents, hasScrolledToPost]);\n\n useEffect(() => {\n if (observerRef.current) {\n observerRef.current.disconnect();\n }\n\n const container = document.querySelector('[data-scrollable-container]') as HTMLElement;\n if (!container) {\n return;\n }\n\n observerRef.current = new IntersectionObserver(async (entries) => {\n if (entries[0].isIntersecting && hasMoreChildren && !isLoadingMoreTopLevelReplies) {\n setIsLoadingMoreTopLevelReplies(true);\n try {\n await loadMoreChildren();\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Failed to load more top-level replies:', error);\n } finally {\n setIsLoadingMoreTopLevelReplies(false);\n }\n }\n }, {\n root: container,\n rootMargin: '200px'\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 }, [hasMoreChildren, isLoadingMoreTopLevelReplies, loadMoreChildren]);\n\n if (isLoading) {\n return (\n <Layout>\n <div className='mx-auto flex max-w-[620px] flex-col items-center gap-3 pt-9 lg:px-8'>\n <div className='flex w-full items-center gap-3'>\n <Skeleton className='size-10 rounded-full' />\n <div className='grow pt-1'>\n <Skeleton className='w-24' />\n <Skeleton className='w-3/5' />\n </div>\n </div>\n <div className='mb-7 w-full'>\n <Skeleton />\n <Skeleton className='w-4/5' />\n <Skeleton />\n </div>\n <FeedItemDivider />\n <div className='flex w-full items-center gap-3 py-3'>\n <Skeleton className='block size-full' containerClassName='size-10 rounded-full overflow-hidden' />\n <div>\n <Skeleton className='w-52' />\n <Skeleton className='w-28' />\n </div>\n </div>\n <FeedItemDivider />\n </div>\n </Layout>\n );\n }\n\n if (!currentPost) {\n return (\n <Layout>\n <div className='mx-auto mt-4 flex w-full max-w-[620px] flex-col items-center'>\n <EmptyViewIndicator>\n <EmptyViewIcon><LucideIcon.Hash /></EmptyViewIcon>\n <div>Error loading note.</div>\n </EmptyViewIndicator>\n </div>\n </Layout>\n );\n }\n\n function handleDelete() {\n // Reply count will be updated via cache invalidation\n }\n\n function toggleChain(chainId: string) {\n setExpandedChains((prev) => {\n const newSet = new Set(prev);\n if (newSet.has(chainId)) {\n newSet.delete(chainId);\n } else {\n newSet.add(chainId);\n setFullyExpandedChains((fullyExpanded) => {\n const newFullyExpanded = new Set(fullyExpanded);\n newFullyExpanded.add(chainId);\n return newFullyExpanded;\n });\n }\n return newSet;\n });\n }\n\n async function loadMoreForChain(chainId: string, childIndex: number) {\n if (loadingChains.has(chainId)) {\n return;\n }\n\n setLoadingChains(prev => new Set(prev).add(chainId));\n\n try {\n if (loadMoreChildReplies) {\n await loadMoreChildReplies(childIndex);\n }\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Failed to load more replies for chain:', error);\n } finally {\n setLoadingChains((prev) => {\n const newSet = new Set(prev);\n newSet.delete(chainId);\n return newSet;\n });\n }\n }\n\n return (\n <Layout>\n <div className='mx-auto flex h-full max-w-[620px] flex-col'>\n <div className='relative flex-1'>\n <div className='grow overflow-y-auto'>\n <div className={`mx-auto px-8 pb-10 pt-5 max-lg:px-0`}>\n {!threadParents.length &&\n <ProfilePreviewHoverCard actor={currentPost.actor} isCurrentUser={currentPost.object.authored}>\n <div className={`col-[2/3] mx-auto flex w-full cursor-pointer items-center gap-3 ${canGoBack ? 'pt-10 max-md:pt-5' : 'pt-5'}`}>\n <div className='relative z-10'>\n <APAvatar author={currentPost.actor} showFollowButton={!currentPost.object.authored && !currentPost.actor.followedByMe}/>\n </div>\n <div className='relative z-10 flex w-full min-w-0 cursor-pointer flex-col overflow-visible text-[1.5rem]' onClick={(e) => {\n handleProfileClick(currentPost.actor, navigate, e);\n }}>\n <div className='flex w-full'>\n <span className='min-w-0 truncate whitespace-nowrap font-semibold hover:underline'>{currentPost.actor.name}</span>\n </div>\n <div className='flex w-full'>\n <span className='truncate text-gray-700 after:mx-1 after:font-normal after:text-gray-700 after:content-[\"·\"]'>{getUsername(currentPost.actor)}</span>\n <span className='text-gray-700'>{renderTimestamp(object, !object.authored)}</span>\n </div>\n </div>\n </div>\n </ProfilePreviewHoverCard>\n }\n\n {threadParents.map((item) => {\n return (\n item.object.type === 'Tombstone' ? (\n <DeletedFeedItem last={false} />\n ) : (\n <FeedItem\n actor={item.actor}\n allowDelete={false}\n commentCount={item.object.replyCount ?? 0}\n last={false}\n layout='reply'\n likeCount={item.object.likeCount ?? 0}\n object={item.object}\n repostCount={item.object.repostCount ?? 0}\n type='Note'\n onClick={() => {\n navigate(`/${item.object.type === 'Article' ? 'reader' : 'notes'}/${encodeURIComponent(item.object.id)}`);\n }}\n />\n )\n );\n })}\n <div ref={postRef} className={`${canGoBack ? 'scroll-mt-[12px]' : 'scroll-mt-[124px]'}`}>\n <div className={`${threadParents.length > 0 && 'min-h-[calc(100vh-52px)]'}`}>\n <FeedItem\n actor={currentPost.actor}\n allowDelete={false}\n commentCount={replyCount}\n last={true}\n layout={'modal'}\n likeCount={object.likeCount ?? 0}\n object={object}\n repostCount={object.repostCount}\n showHeader={threadParents.length > 0}\n showStats={true}\n type='Note'\n />\n <APReplyBox\n object={object}\n />\n <FeedItemDivider />\n <div ref={repliesRef}>\n {\n processedReplies.map((replyGroup, groupIndex) => {\n const isLastGroup = groupIndex === processedReplies.length - 1;\n const chainId = replyGroup.mainReply.id;\n const isExpanded = expandedChains.has(chainId);\n const isFullyExpanded = fullyExpandedChains.has(chainId);\n const isChainLoading = loadingChains.has(chainId);\n const hasChain = replyGroup.chain.length > 0;\n\n return (\n <React.Fragment key={replyGroup.mainReply.id}>\n <FeedItem\n actor={replyGroup.mainReply.actor}\n allowDelete={replyGroup.mainReply.object.authored}\n commentCount={replyGroup.mainReply.object.replyCount ?? 0}\n isChainParent={hasChain}\n isPending={isPendingActivity(replyGroup.mainReply.id)}\n last={!hasChain}\n layout='reply'\n likeCount={replyGroup.mainReply.object.likeCount ?? 0}\n object={replyGroup.mainReply.object}\n parentId={object.id}\n repostCount={replyGroup.mainReply.object.repostCount ?? 0}\n type='Note'\n onClick={() => {\n navigate(`/notes/${encodeURIComponent(replyGroup.mainReply.id)}`);\n }}\n onDelete={handleDelete}\n />\n\n {hasChain && replyGroup.chain[0] && (\n <FeedItem\n key={replyGroup.chain[0].id}\n actor={replyGroup.chain[0].actor}\n allowDelete={replyGroup.chain[0].object.authored}\n commentCount={replyGroup.chain[0].object.replyCount ?? 0}\n isChainContinuation={true}\n isPending={isPendingActivity(replyGroup.chain[0].id)}\n last={replyGroup.chain.length === 1}\n layout='reply'\n likeCount={replyGroup.chain[0].object.likeCount ?? 0}\n object={replyGroup.chain[0].object}\n parentId={object.id}\n repostCount={replyGroup.chain[0].object.repostCount ?? 0}\n type='Note'\n onClick={() => {\n navigate(`/notes/${encodeURIComponent(replyGroup.chain[0].id)}`);\n }}\n onDelete={handleDelete}\n />\n )}\n\n {hasChain && isExpanded && replyGroup.chain.slice(1).map((chainItem: Activity, chainIndex: number) => {\n const isLastChainItem = chainIndex === replyGroup.chain.slice(1).length - 1;\n const hasMoreReplies = hasMoreChildReplies && hasMoreChildReplies(groupIndex);\n const shouldShowConnector = isLastChainItem && hasMoreReplies;\n\n return (\n <FeedItem\n key={chainItem.id}\n actor={chainItem.actor}\n allowDelete={chainItem.object.authored}\n commentCount={chainItem.object.replyCount ?? 0}\n isChainContinuation={true}\n isPending={isPendingActivity(chainItem.id)}\n last={isLastChainItem && !shouldShowConnector}\n layout='reply'\n likeCount={chainItem.object.likeCount ?? 0}\n object={chainItem.object}\n parentId={object.id}\n repostCount={chainItem.object.repostCount ?? 0}\n type='Note'\n onClick={() => {\n navigate(`/notes/${encodeURIComponent(chainItem.id)}`);\n }}\n onDelete={handleDelete}\n />\n );\n })}\n\n {hasChain && replyGroup.chain.length > 1 && !isExpanded && (\n <ShowRepliesButton\n variant='expand'\n onClick={() => toggleChain(chainId)}\n />\n )}\n\n {hasChain && isExpanded && isFullyExpanded && hasMoreChildReplies && hasMoreChildReplies(groupIndex) && (\n <ShowRepliesButton\n loading={isChainLoading}\n variant='loadMore'\n onClick={() => loadMoreForChain(chainId, groupIndex)}\n />\n )}\n\n {!isLastGroup && <FeedItemDivider />}\n </React.Fragment>\n );\n })\n }\n\n {isLoadingMoreTopLevelReplies && (\n <div className='flex flex-col items-center justify-center text-center'>\n <LoadingIndicator size='md' />\n </div>\n )}\n </div>\n\n {hasMoreChildren && <div ref={loadMoreRef} className='h-1'></div>}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </Layout>\n );\n};\n\nexport default Note;\n"],"names":["FeedItemDivider","jsx","Note","postId","useParams","canGoBack","useNavigationStack","expandedChains","setExpandedChains","useState","fullyExpandedChains","setFullyExpandedChains","loadingChains","setLoadingChains","isLoadingMoreTopLevelReplies","setIsLoadingMoreTopLevelReplies","repliesRef","useRef","postRef","observerRef","loadMoreRef","navigate","useNavigateWithBasePath","threadParents","currentPost","processedReplies","isLoading","loadMoreChildren","loadMoreChildReplies","hasMoreChildren","hasMoreChildReplies","useReplyChainData","object","replyCount","hasScrolledToPost","setHasScrolledToPost","useEffect","container","entries","error","Layout","jsxs","Skeleton","EmptyViewIndicator","EmptyViewIcon","LucideIcon.Hash","handleDelete","toggleChain","chainId","prev","newSet","fullyExpanded","newFullyExpanded","loadMoreForChain","childIndex","ProfilePreviewHoverCard","APAvatar","e","handleProfileClick","getUsername","item","DeletedFeedItem","FeedItem","APReplyBox","replyGroup","groupIndex","isLastGroup","isExpanded","isFullyExpanded","isChainLoading","hasChain","React","isPendingActivity","chainItem","chainIndex","isLastChainItem","hasMoreReplies","shouldShowConnector","ShowRepliesButton","LoadingIndicator"],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { a6 as e } from "./index--Q6orQkb.mjs";
|
|
2
|
+
/**
|
|
3
|
+
* @license lucide-react v0.553.0 - ISC
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the ISC license.
|
|
6
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
8
|
+
const c = [
|
|
9
|
+
["path", { d: "M20 18v-2a4 4 0 0 0-4-4H4", key: "5vmcpk" }],
|
|
10
|
+
["path", { d: "m9 17-5-5 5-5", key: "nvlc11" }]
|
|
11
|
+
], a = e("reply", c);
|
|
12
|
+
export {
|
|
13
|
+
a as R
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=reply-BHpKVBxx.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reply-BHpKVBxx.mjs","sources":["../../../node_modules/lucide-react/dist/esm/icons/reply.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 [\"path\", { d: \"M20 18v-2a4 4 0 0 0-4-4H4\", key: \"5vmcpk\" }],\n [\"path\", { d: \"m9 17-5-5 5-5\", key: \"nvlc11\" }]\n];\nconst Reply = createLucideIcon(\"reply\", __iconNode);\n\nexport { __iconNode, Reply as default };\n//# sourceMappingURL=reply.js.map\n"],"names":["__iconNode","Reply","createLucideIcon"],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASA,MAAMA,IAAa;AAAA,EACjB,CAAC,QAAQ,EAAE,GAAG,6BAA6B,KAAK,SAAQ,CAAE;AAAA,EAC1D,CAAC,QAAQ,EAAE,GAAG,iBAAiB,KAAK,SAAQ,CAAE;AAChD,GACMC,IAAQC,EAAiB,SAASF,CAAU;","x_google_ignoreList":[0]}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { ai as u, ax as E, ay as c, az as d, j as f, aA as S, aB as b, aC as P, s as O } from "./index--Q6orQkb.mjs";
|
|
2
|
+
var R = Symbol.for("react.lazy"), y = E[" use ".trim().toString()];
|
|
3
|
+
function j(r) {
|
|
4
|
+
return typeof r == "object" && r !== null && "then" in r;
|
|
5
|
+
}
|
|
6
|
+
function N(r) {
|
|
7
|
+
return r != null && typeof r == "object" && "$$typeof" in r && r.$$typeof === R && "_payload" in r && j(r._payload);
|
|
8
|
+
}
|
|
9
|
+
// @__NO_SIDE_EFFECTS__
|
|
10
|
+
function _(r) {
|
|
11
|
+
const o = /* @__PURE__ */ A(r), e = u((n, t) => {
|
|
12
|
+
let { children: i, ...s } = n;
|
|
13
|
+
N(i) && typeof y == "function" && (i = y(i._payload));
|
|
14
|
+
const a = c.toArray(i), l = a.find(T);
|
|
15
|
+
if (l) {
|
|
16
|
+
const p = l.props.children, x = a.map((m) => m === l ? c.count(p) > 1 ? c.only(null) : d(p) ? p.props.children : null : m);
|
|
17
|
+
return /* @__PURE__ */ f.jsx(o, { ...s, ref: t, children: d(p) ? S(p, void 0, x) : null });
|
|
18
|
+
}
|
|
19
|
+
return /* @__PURE__ */ f.jsx(o, { ...s, ref: t, children: i });
|
|
20
|
+
});
|
|
21
|
+
return e.displayName = `${r}.Slot`, e;
|
|
22
|
+
}
|
|
23
|
+
// @__NO_SIDE_EFFECTS__
|
|
24
|
+
function A(r) {
|
|
25
|
+
const o = u((e, n) => {
|
|
26
|
+
let { children: t, ...i } = e;
|
|
27
|
+
if (N(t) && typeof y == "function" && (t = y(t._payload)), d(t)) {
|
|
28
|
+
const s = $(t), a = I(i, t.props);
|
|
29
|
+
return t.type !== b && (a.ref = n ? P(n, s) : s), S(t, a);
|
|
30
|
+
}
|
|
31
|
+
return c.count(t) > 1 ? c.only(null) : null;
|
|
32
|
+
});
|
|
33
|
+
return o.displayName = `${r}.SlotClone`, o;
|
|
34
|
+
}
|
|
35
|
+
var C = Symbol("radix.slottable");
|
|
36
|
+
function T(r) {
|
|
37
|
+
return d(r) && typeof r.type == "function" && "__radixId" in r.type && r.type.__radixId === C;
|
|
38
|
+
}
|
|
39
|
+
function I(r, o) {
|
|
40
|
+
const e = { ...o };
|
|
41
|
+
for (const n in o) {
|
|
42
|
+
const t = r[n], i = o[n];
|
|
43
|
+
/^on[A-Z]/.test(n) ? t && i ? e[n] = (...a) => {
|
|
44
|
+
const l = i(...a);
|
|
45
|
+
return t(...a), l;
|
|
46
|
+
} : t && (e[n] = t) : n === "style" ? e[n] = { ...t, ...i } : n === "className" && (e[n] = [t, i].filter(Boolean).join(" "));
|
|
47
|
+
}
|
|
48
|
+
return { ...r, ...e };
|
|
49
|
+
}
|
|
50
|
+
function $(r) {
|
|
51
|
+
var n, t;
|
|
52
|
+
let o = (n = Object.getOwnPropertyDescriptor(r.props, "ref")) == null ? void 0 : n.get, e = o && "isReactWarning" in o && o.isReactWarning;
|
|
53
|
+
return e ? r.ref : (o = (t = Object.getOwnPropertyDescriptor(r, "ref")) == null ? void 0 : t.get, e = o && "isReactWarning" in o && o.isReactWarning, e ? r.props.ref : r.props.ref || r.ref);
|
|
54
|
+
}
|
|
55
|
+
var w = [
|
|
56
|
+
"a",
|
|
57
|
+
"button",
|
|
58
|
+
"div",
|
|
59
|
+
"form",
|
|
60
|
+
"h2",
|
|
61
|
+
"h3",
|
|
62
|
+
"img",
|
|
63
|
+
"input",
|
|
64
|
+
"label",
|
|
65
|
+
"li",
|
|
66
|
+
"nav",
|
|
67
|
+
"ol",
|
|
68
|
+
"p",
|
|
69
|
+
"select",
|
|
70
|
+
"span",
|
|
71
|
+
"svg",
|
|
72
|
+
"ul"
|
|
73
|
+
], z = w.reduce((r, o) => {
|
|
74
|
+
const e = /* @__PURE__ */ _(`Primitive.${o}`), n = u((t, i) => {
|
|
75
|
+
const { asChild: s, ...a } = t, l = s ? e : o;
|
|
76
|
+
return typeof window < "u" && (window[Symbol.for("radix-ui")] = !0), /* @__PURE__ */ f.jsx(l, { ...a, ref: i });
|
|
77
|
+
});
|
|
78
|
+
return n.displayName = `Primitive.${o}`, { ...r, [o]: n };
|
|
79
|
+
}, {}), L = "Separator", v = "horizontal", D = ["horizontal", "vertical"], g = u((r, o) => {
|
|
80
|
+
const { decorative: e, orientation: n = v, ...t } = r, i = W(n) ? n : v, a = e ? { role: "none" } : { "aria-orientation": i === "vertical" ? i : void 0, role: "separator" };
|
|
81
|
+
return /* @__PURE__ */ f.jsx(
|
|
82
|
+
z.div,
|
|
83
|
+
{
|
|
84
|
+
"data-orientation": i,
|
|
85
|
+
...a,
|
|
86
|
+
...t,
|
|
87
|
+
ref: o
|
|
88
|
+
}
|
|
89
|
+
);
|
|
90
|
+
});
|
|
91
|
+
g.displayName = L;
|
|
92
|
+
function W(r) {
|
|
93
|
+
return D.includes(r);
|
|
94
|
+
}
|
|
95
|
+
var h = g;
|
|
96
|
+
const V = u(
|
|
97
|
+
({ className: r, orientation: o = "horizontal", decorative: e = !0, ...n }, t) => /* @__PURE__ */ f.jsx(
|
|
98
|
+
h,
|
|
99
|
+
{
|
|
100
|
+
ref: t,
|
|
101
|
+
className: O(
|
|
102
|
+
"shrink-0 bg-border",
|
|
103
|
+
o === "horizontal" ? "h-[1px] w-full" : "h-full w-[1px]",
|
|
104
|
+
r
|
|
105
|
+
),
|
|
106
|
+
decorative: e,
|
|
107
|
+
orientation: o,
|
|
108
|
+
...n
|
|
109
|
+
}
|
|
110
|
+
)
|
|
111
|
+
);
|
|
112
|
+
V.displayName = h.displayName;
|
|
113
|
+
export {
|
|
114
|
+
V as S
|
|
115
|
+
};
|
|
116
|
+
//# sourceMappingURL=separator-DP7q5sFH.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"separator-DP7q5sFH.mjs","sources":["../../../node_modules/@radix-ui/react-separator/node_modules/@radix-ui/react-slot/dist/index.mjs","../../../node_modules/@radix-ui/react-separator/node_modules/@radix-ui/react-primitive/dist/index.mjs","../../../node_modules/@radix-ui/react-separator/dist/index.mjs","../../shade/es/components/ui/separator.js"],"sourcesContent":["// src/slot.tsx\nimport * as React from \"react\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { Fragment as Fragment2, jsx } from \"react/jsx-runtime\";\nvar REACT_LAZY_TYPE = Symbol.for(\"react.lazy\");\nvar use = React[\" use \".trim().toString()];\nfunction isPromiseLike(value) {\n return typeof value === \"object\" && value !== null && \"then\" in value;\n}\nfunction isLazyComponent(element) {\n return element != null && typeof element === \"object\" && \"$$typeof\" in element && element.$$typeof === REACT_LAZY_TYPE && \"_payload\" in element && isPromiseLike(element._payload);\n}\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n const Slot2 = React.forwardRef((props, forwardedRef) => {\n let { children, ...slotProps } = props;\n if (isLazyComponent(children) && typeof use === \"function\") {\n children = use(children._payload);\n }\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n const SlotClone = React.forwardRef((props, forwardedRef) => {\n let { children, ...slotProps } = props;\n if (isLazyComponent(children) && typeof use === \"function\") {\n children = use(children._payload);\n }\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props2 = mergeProps(slotProps, children.props);\n if (children.type !== React.Fragment) {\n props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props2);\n }\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n });\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = ({ children }) => {\n return /* @__PURE__ */ jsx(Fragment2, { children });\n };\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nexport {\n Slot as Root,\n Slot,\n Slottable,\n createSlot,\n createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n","// src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"select\",\n \"span\",\n \"svg\",\n \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props, forwardedRef) => {\n const { asChild, ...primitiveProps } = props;\n const Comp = asChild ? Slot : node;\n if (typeof window !== \"undefined\") {\n window[Symbol.for(\"radix-ui\")] = true;\n }\n return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n });\n Node.displayName = `Primitive.${node}`;\n return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\nexport {\n Primitive,\n Root,\n dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n","// src/separator.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NAME = \"Separator\";\nvar DEFAULT_ORIENTATION = \"horizontal\";\nvar ORIENTATIONS = [\"horizontal\", \"vertical\"];\nvar Separator = React.forwardRef((props, forwardedRef) => {\n const { decorative, orientation: orientationProp = DEFAULT_ORIENTATION, ...domProps } = props;\n const orientation = isValidOrientation(orientationProp) ? orientationProp : DEFAULT_ORIENTATION;\n const ariaOrientation = orientation === \"vertical\" ? orientation : void 0;\n const semanticProps = decorative ? { role: \"none\" } : { \"aria-orientation\": ariaOrientation, role: \"separator\" };\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-orientation\": orientation,\n ...semanticProps,\n ...domProps,\n ref: forwardedRef\n }\n );\n});\nSeparator.displayName = NAME;\nfunction isValidOrientation(orientation) {\n return ORIENTATIONS.includes(orientation);\n}\nvar Root = Separator;\nexport {\n Root,\n Separator\n};\n//# sourceMappingURL=index.mjs.map\n","import { jsx } from \"react/jsx-runtime\";\nimport * as React from \"react\";\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\";\nimport { cn } from \"../../lib/utils.js\";\nconst Separator = React.forwardRef(\n ({ className, orientation = \"horizontal\", decorative = true, ...props }, ref) => /* @__PURE__ */ jsx(\n SeparatorPrimitive.Root,\n {\n ref,\n className: cn(\n \"shrink-0 bg-border\",\n orientation === \"horizontal\" ? \"h-[1px] w-full\" : \"h-full w-[1px]\",\n className\n ),\n decorative,\n orientation,\n ...props\n }\n )\n);\nSeparator.displayName = SeparatorPrimitive.Root.displayName;\nexport {\n Separator\n};\n//# sourceMappingURL=separator.js.map\n"],"names":["REACT_LAZY_TYPE","use","React","isPromiseLike","value","isLazyComponent","element","createSlot","ownerName","SlotClone","createSlotClone","Slot2","React.forwardRef","props","forwardedRef","children","slotProps","childrenArray","React.Children","slottable","isSlottable","newElement","newChildren","child","React.isValidElement","jsx","React.cloneElement","childrenRef","getElementRef","props2","mergeProps","React.Fragment","composeRefs","SLOTTABLE_IDENTIFIER","childProps","overrideProps","propName","slotPropValue","childPropValue","args","result","getter","_a","mayWarn","_b","NODES","Primitive","primitive","node","Slot","Node","asChild","primitiveProps","Comp","NAME","DEFAULT_ORIENTATION","ORIENTATIONS","Separator","decorative","orientationProp","domProps","orientation","isValidOrientation","semanticProps","Root","className","ref","SeparatorPrimitive.Root","cn"],"mappings":"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","x_google_ignoreList":[0,1,2]}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { b as f, d as p, j as e, H as b, D as m, m as u, B as v, n as y, o as N, p as k, C as j, q as S, s as C, t as E } from "./index--Q6orQkb.mjs";
|
|
2
|
+
import { E as D } from "./edit-profile-CYh00FZ7.mjs";
|
|
3
|
+
const z = ({ account: s, className: r = "" }) => {
|
|
4
|
+
const [h, t] = f(!1), a = p();
|
|
5
|
+
return /* @__PURE__ */ e.jsxs("div", { className: `flex flex-col ${r}`, children: [
|
|
6
|
+
/* @__PURE__ */ e.jsx(g, {}),
|
|
7
|
+
/* @__PURE__ */ e.jsxs(d, { children: [
|
|
8
|
+
/* @__PURE__ */ e.jsxs(c, { children: [
|
|
9
|
+
/* @__PURE__ */ e.jsx(o, { children: "Account" }),
|
|
10
|
+
/* @__PURE__ */ e.jsx(l, { children: "Edit your profile information and account details" })
|
|
11
|
+
] }),
|
|
12
|
+
/* @__PURE__ */ e.jsxs(m, { open: h, onOpenChange: t, children: [
|
|
13
|
+
/* @__PURE__ */ e.jsx(u, { children: /* @__PURE__ */ e.jsx(x, { children: /* @__PURE__ */ e.jsx(v, { variant: "secondary", children: "Edit profile" }) }) }),
|
|
14
|
+
/* @__PURE__ */ e.jsxs(y, { onOpenAutoFocus: (i) => i.preventDefault(), children: [
|
|
15
|
+
/* @__PURE__ */ e.jsx(N, { children: /* @__PURE__ */ e.jsx(k, { children: "Profile settings" }) }),
|
|
16
|
+
s && /* @__PURE__ */ e.jsx(D, { account: s, setIsEditingProfile: t })
|
|
17
|
+
] })
|
|
18
|
+
] })
|
|
19
|
+
] }),
|
|
20
|
+
/* @__PURE__ */ e.jsxs(d, { withHover: !0, onClick: () => a("/preferences/moderation"), children: [
|
|
21
|
+
/* @__PURE__ */ e.jsxs(c, { children: [
|
|
22
|
+
/* @__PURE__ */ e.jsx(o, { children: "Moderation" }),
|
|
23
|
+
/* @__PURE__ */ e.jsx(l, { children: "Manage blocked users and domains" })
|
|
24
|
+
] }),
|
|
25
|
+
/* @__PURE__ */ e.jsx(x, { className: "flex items-center gap-2", children: /* @__PURE__ */ e.jsx(j, { size: 20 }) })
|
|
26
|
+
] }),
|
|
27
|
+
/* @__PURE__ */ e.jsxs(d, { withHover: !0, onClick: () => a("/preferences/bluesky-sharing"), children: [
|
|
28
|
+
/* @__PURE__ */ e.jsxs(c, { children: [
|
|
29
|
+
/* @__PURE__ */ e.jsx(o, { children: "Bluesky sharing" }),
|
|
30
|
+
/* @__PURE__ */ e.jsx(l, { children: "Share content directly on Bluesky" })
|
|
31
|
+
] }),
|
|
32
|
+
/* @__PURE__ */ e.jsxs(x, { className: "flex items-center gap-2", children: [
|
|
33
|
+
s != null && s.blueskyEnabled ? /* @__PURE__ */ e.jsx("span", { className: "font-medium text-black", children: "On" }) : /* @__PURE__ */ e.jsx("span", { children: "Off" }),
|
|
34
|
+
/* @__PURE__ */ e.jsx(j, { size: 20 })
|
|
35
|
+
] })
|
|
36
|
+
] }),
|
|
37
|
+
/* @__PURE__ */ e.jsx(g, {}),
|
|
38
|
+
/* @__PURE__ */ e.jsxs(d, { href: "https://ghost.org/help/social-web/", withHover: !0, children: [
|
|
39
|
+
/* @__PURE__ */ e.jsxs(c, { children: [
|
|
40
|
+
/* @__PURE__ */ e.jsx(o, { children: "Help" }),
|
|
41
|
+
/* @__PURE__ */ e.jsx(l, { children: "Social web guides and support resources" })
|
|
42
|
+
] }),
|
|
43
|
+
/* @__PURE__ */ e.jsx(x, { children: /* @__PURE__ */ e.jsx(S, { size: 18 }) })
|
|
44
|
+
] })
|
|
45
|
+
] });
|
|
46
|
+
}, o = b, l = ({ children: s, className: r = "" }) => /* @__PURE__ */ e.jsx("span", { className: `text-sm text-gray-700 ${r}`, children: s }), c = ({ children: s, className: r = "" }) => /* @__PURE__ */ e.jsx("div", { className: `relative flex flex-col gap-0.5 ${r}`, children: s }), x = ({ children: s, className: r = "" }) => /* @__PURE__ */ e.jsx("div", { className: `relative text-gray-500 ${r}`, children: s }), d = ({ children: s, className: r = "", withHover: h = !1, to: t, href: a, onClick: i }) => {
|
|
47
|
+
const n = C("flex items-center justify-between py-3 gap-4", h ? "relative cursor-pointer before:absolute before:inset-x-[-16px] before:inset-y-[-1px] before:rounded-md before:bg-gray-50 before:opacity-0 before:transition-opacity before:will-change-[opacity] hover:z-10 hover:cursor-pointer hover:border-b-transparent hover:before:opacity-100 dark:before:bg-gray-950" : "", r);
|
|
48
|
+
return t ? /* @__PURE__ */ e.jsx(
|
|
49
|
+
E,
|
|
50
|
+
{
|
|
51
|
+
className: n,
|
|
52
|
+
to: t,
|
|
53
|
+
children: s
|
|
54
|
+
}
|
|
55
|
+
) : a ? /* @__PURE__ */ e.jsx(
|
|
56
|
+
"a",
|
|
57
|
+
{
|
|
58
|
+
className: n,
|
|
59
|
+
href: a,
|
|
60
|
+
rel: "noreferrer",
|
|
61
|
+
target: "_blank",
|
|
62
|
+
children: s
|
|
63
|
+
}
|
|
64
|
+
) : i ? /* @__PURE__ */ e.jsx(
|
|
65
|
+
"div",
|
|
66
|
+
{
|
|
67
|
+
className: n,
|
|
68
|
+
role: "button",
|
|
69
|
+
tabIndex: 0,
|
|
70
|
+
onClick: i,
|
|
71
|
+
children: s
|
|
72
|
+
}
|
|
73
|
+
) : /* @__PURE__ */ e.jsx("div", { className: n, children: s });
|
|
74
|
+
}, g = () => /* @__PURE__ */ e.jsx("hr", { className: "my-3 h-px border-0 bg-gray-200 dark:bg-gray-950" });
|
|
75
|
+
export {
|
|
76
|
+
x as S,
|
|
77
|
+
z as a
|
|
78
|
+
};
|
|
79
|
+
//# sourceMappingURL=settings-3n7zo_3K.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-3n7zo_3K.mjs","sources":["../src/views/preferences/components/settings.tsx"],"sourcesContent":["import EditProfile from './edit-profile';\nimport React, {useState} from 'react';\nimport {Account} from '@src/api/activitypub';\nimport {Button, Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger, H4, LucideIcon, cn} from '@tryghost/shade';\nimport {Link} from '@tryghost/admin-x-framework';\nimport {useNavigateWithBasePath} from '@src/hooks/use-navigate-with-base-path';\n\ninterface SettingsProps {\n account?: Account;\n className?: string;\n}\n\nconst Settings: React.FC<SettingsProps> = ({account, className = ''}) => {\n const [isEditingProfile, setIsEditingProfile] = useState(false);\n const navigate = useNavigateWithBasePath();\n\n return (\n <div className={`flex flex-col ${className}`}>\n <SettingSeparator />\n <SettingItem>\n <SettingHeader>\n <SettingTitle>Account</SettingTitle>\n <SettingDescription>\n Edit your profile information and account details\n </SettingDescription>\n </SettingHeader>\n <Dialog open={isEditingProfile} onOpenChange={setIsEditingProfile}>\n <DialogTrigger>\n <SettingAction><Button variant='secondary'>Edit profile</Button></SettingAction>\n </DialogTrigger>\n <DialogContent 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 </SettingItem>\n <SettingItem withHover onClick={() => navigate('/preferences/moderation')}>\n <SettingHeader>\n <SettingTitle>Moderation</SettingTitle>\n <SettingDescription>Manage blocked users and domains</SettingDescription>\n </SettingHeader>\n <SettingAction className='flex items-center gap-2'>\n <LucideIcon.ChevronRight size={20} />\n </SettingAction>\n </SettingItem>\n <SettingItem withHover onClick={() => navigate('/preferences/bluesky-sharing')}>\n <SettingHeader>\n <SettingTitle>Bluesky sharing</SettingTitle>\n <SettingDescription>Share content directly on Bluesky</SettingDescription>\n </SettingHeader>\n <SettingAction className='flex items-center gap-2'>\n {account?.blueskyEnabled ? <span className='font-medium text-black'>On</span> : <span>Off</span>}\n <LucideIcon.ChevronRight size={20} />\n </SettingAction>\n </SettingItem>\n <SettingSeparator />\n <SettingItem href='https://ghost.org/help/social-web/' withHover>\n <SettingHeader>\n <SettingTitle>Help</SettingTitle>\n <SettingDescription>Social web guides and support resources</SettingDescription>\n </SettingHeader>\n <SettingAction><LucideIcon.ExternalLink size={18} /></SettingAction>\n </SettingItem>\n </div>\n );\n};\n\nconst SettingTitle = H4;\n\ninterface SettingDescriptionProps {\n children: React.ReactNode;\n className?: string;\n}\n\nconst SettingDescription: React.FC<SettingDescriptionProps> = ({children, className = ''}) => {\n return (\n <span className={`text-sm text-gray-700 ${className}`}>\n {children}\n </span>\n );\n};\n\ninterface SettingHeaderProps {\n children: React.ReactNode;\n className?: string;\n}\n\nconst SettingHeader: React.FC<SettingHeaderProps> = ({children, className = ''}) => {\n return (\n <div className={`relative flex flex-col gap-0.5 ${className}`}>\n {children}\n </div>\n );\n};\n\ninterface SettingActionProps {\n children: React.ReactNode;\n className?: string;\n}\n\nexport const SettingAction: React.FC<SettingActionProps> = ({children, className = ''}) => {\n return (\n <div className={`relative text-gray-500 ${className}`}>\n {children}\n </div>\n );\n};\n\ninterface SettingItemProps {\n children: React.ReactNode;\n className?: string;\n withHover?: boolean;\n to?: string;\n href?: string;\n onClick?: () => void;\n}\n\nconst SettingItem: React.FC<SettingItemProps> = ({children, className = '', withHover = false, to, href, onClick}) => {\n const baseClasses = 'flex items-center justify-between py-3 gap-4';\n const hoverClasses = withHover ? 'relative cursor-pointer before:absolute before:inset-x-[-16px] before:inset-y-[-1px] before:rounded-md before:bg-gray-50 before:opacity-0 before:transition-opacity before:will-change-[opacity] hover:z-10 hover:cursor-pointer hover:border-b-transparent hover:before:opacity-100 dark:before:bg-gray-950' : '';\n const itemClasses = cn(baseClasses, hoverClasses, className);\n\n if (to) {\n return (\n <Link\n className={itemClasses}\n to={to}\n >\n {children}\n </Link>\n );\n }\n\n if (href) {\n return (\n <a\n className={itemClasses}\n href={href}\n rel='noreferrer'\n target='_blank'\n >\n {children}\n </a>\n );\n }\n\n if (onClick) {\n return (\n <div\n className={itemClasses}\n role=\"button\"\n tabIndex={0}\n onClick={onClick}\n >\n {children}\n </div>\n );\n }\n\n return (\n <div className={itemClasses}>\n {children}\n </div>\n );\n};\n\nconst SettingSeparator: React.FC = () => {\n return (\n <hr className='my-3 h-px border-0 bg-gray-200 dark:bg-gray-950' />\n );\n};\n\nexport default Settings;\n"],"names":["Settings","account","className","isEditingProfile","setIsEditingProfile","useState","navigate","useNavigateWithBasePath","jsxs","jsx","SettingSeparator","SettingItem","SettingHeader","SettingTitle","SettingDescription","Dialog","DialogTrigger","SettingAction","Button","DialogContent","e","DialogHeader","DialogTitle","EditProfile","LucideIcon.ChevronRight","LucideIcon.ExternalLink","H4","children","withHover","to","href","onClick","itemClasses","cn","Link"],"mappings":"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"}
|