58 lines
1.4 KiB
TypeScript
58 lines
1.4 KiB
TypeScript
import Link from "@/components/TempDesignSystem/Link"
|
|
|
|
import styles from "./textcols.module.css"
|
|
|
|
import type { EmbedByUid } from "@/types/transitionTypes/jsontohtml"
|
|
import { RTEItemTypeEnum, RTETypeEnum } from "@/types/transitionTypes/rte/enums"
|
|
import type {
|
|
RTENext,
|
|
RTENode,
|
|
RTERegularNode,
|
|
} from "@/types/transitionTypes/rte/node"
|
|
import type { RenderOptions } from "@/types/transitionTypes/rte/option"
|
|
|
|
export const renderOptions: RenderOptions = {
|
|
[RTETypeEnum.a]: (
|
|
node: RTERegularNode,
|
|
embeds: EmbedByUid,
|
|
next: RTENext,
|
|
fullRenderOptions: RenderOptions
|
|
) => {
|
|
if (node.attrs.url) {
|
|
return (
|
|
<a
|
|
href={node.attrs.url}
|
|
target={node.attrs.target ?? "_blank"}
|
|
key={node.uid}
|
|
className={styles.a}
|
|
>
|
|
{next(node.children, embeds, fullRenderOptions)}
|
|
</a>
|
|
)
|
|
}
|
|
return null
|
|
},
|
|
[RTETypeEnum.reference]: (
|
|
node: RTENode,
|
|
embeds: EmbedByUid,
|
|
next: RTENext,
|
|
fullRenderOptions: RenderOptions
|
|
) => {
|
|
if ("attrs" in node) {
|
|
const type = node.attrs.type
|
|
if (type !== RTEItemTypeEnum.asset) {
|
|
const href = node.attrs?.locale
|
|
? `/${node.attrs.locale}${node.attrs.href}`
|
|
: node.attrs.href
|
|
return (
|
|
<Link href={href} key={node.uid} className={styles.a}>
|
|
{next(node.children, embeds, fullRenderOptions)}
|
|
</Link>
|
|
)
|
|
}
|
|
|
|
return null
|
|
}
|
|
},
|
|
}
|