{
!post.facets
? post.text
: segmentize(post.text.trim(), post.facets).map((x) => !x.features
? x.text
: x.features.reduce(
(acc, cur) =>
cur.$type === "app.bsky.richtext.facet#link" ? (
{acc}
) : cur.$type === "app.bsky.richtext.facet#mention" ? (
{acc}
) : (
{acc}
),
x.text,
))
}
{(() => {
const images = (img: embedImages) =>
img.images.map((image) => (

));
const video = (vid: embedVideo) => (
);
const external = (external: embedExternal) => (
{external.thumb && (
)}
{external.title}
{new URL(external.url).host}
);
const record = (record: embedRecord) => {
const uriFragments = record.uri.match(
new RegExp(
"at:\/\/(?
did:(?:plc|web):[^\/]*)\/(?[^\/]*)\/(?.*)",
),
);
let rkey: string = uriFragments?.groups?.rkey ?? "";
return record.record && record.author ? (
) : (
);
};
const recordWithMedia = (recordWMedia: embedRecordWithMedia) => {
const quoted =
recordWMedia.record && record(recordWMedia.record);
const media =
recordWMedia.media.$type === "app.bsky.embed.images"
? images(recordWMedia.media)
: recordWMedia.media.$type === "app.bsky.embed.video"
? video(recordWMedia.media)
: external(recordWMedia.media);
return (
<>
{media}
{quoted}
>
);
};
switch (embed.$type) {
case "app.bsky.embed.images":
return images(embed);
case "app.bsky.embed.video":
return video(embed);
case "app.bsky.embed.external":
return external(embed);
case "app.bsky.embed.record":
return record(embed);
case "app.bsky.embed.recordWithMedia":
return recordWithMedia(embed);
}
})()}