61 lines
1.9 KiB
TypeScript
61 lines
1.9 KiB
TypeScript
import Username, { SimpleUsername } from '../Username'
|
|
import { TEmbeddedRenderer } from './types'
|
|
|
|
export function EmbeddedMention({ userId }: { userId: string }) {
|
|
return (
|
|
<Username
|
|
userId={userId}
|
|
showAt
|
|
className="text-highlight font-normal inline"
|
|
withoutSkeleton
|
|
/>
|
|
)
|
|
}
|
|
|
|
export function EmbeddedMentionText({ userId }: { userId: string }) {
|
|
return <SimpleUsername userId={userId} showAt className="inline truncate" withoutSkeleton />
|
|
}
|
|
|
|
export const embeddedNostrNpubRenderer: TEmbeddedRenderer = {
|
|
regex: /(nostr:npub1[a-z0-9]{58})/g,
|
|
render: (id: string, index: number) => {
|
|
const npub1 = id.split(':')[1]
|
|
return <EmbeddedMention key={`embedded-nostr-npub-${index}-${npub1}`} userId={npub1} />
|
|
}
|
|
}
|
|
|
|
export const embeddedNostrProfileRenderer: TEmbeddedRenderer = {
|
|
regex: /(nostr:nprofile1[a-z0-9]+)/g,
|
|
render: (id: string, index: number) => {
|
|
const nprofile = id.split(':')[1]
|
|
return <EmbeddedMention key={`embedded-nostr-profile-${index}-${nprofile}`} userId={nprofile} />
|
|
}
|
|
}
|
|
|
|
export const embeddedNpubRenderer: TEmbeddedRenderer = {
|
|
regex: /(npub1[a-z0-9]{58})/g,
|
|
render: (npub1: string, index: number) => {
|
|
return <EmbeddedMention key={`embedded-npub-${index}-${npub1}`} userId={npub1} />
|
|
}
|
|
}
|
|
|
|
export const embeddedNostrNpubTextRenderer: TEmbeddedRenderer = {
|
|
regex: /(nostr:npub1[a-z0-9]{58})/g,
|
|
render: (id: string, index: number) => {
|
|
const npub1 = id.split(':')[1]
|
|
return <EmbeddedMentionText key={`embedded-nostr-npub-text-${index}-${npub1}`} userId={npub1} />
|
|
}
|
|
}
|
|
|
|
export const embeddedNostrProfileTextRenderer: TEmbeddedRenderer = {
|
|
regex: /(nostr:nprofile1[a-z0-9]+)/g,
|
|
render: (id: string, index: number) => {
|
|
const nprofile = id.split(':')[1]
|
|
return (
|
|
<EmbeddedMentionText
|
|
key={`embedded-nostr-profile-text-${index}-${nprofile}`}
|
|
userId={nprofile}
|
|
/>
|
|
)
|
|
}
|
|
}
|