import Image from "next/image" import Link from "next/link" import { EmbedEnum } from "@/types/requests/utils/embeds" import { RTEItemTypeEnum, RTETypeEnum } from "@/types/rte/enums" import { RTEMarkType } from "@/types/rte/node" import styles from "./jsontohtml.module.css" import type { EmbedByUid } from "@/types/components/jsontohtml" import type { RTENext, RTEDefaultNode, RTENode, RTERegularNode } from "@/types/rte/node" import type { RenderOptions } from "@/types/rte/option" export const renderOptions: RenderOptions = { [RTETypeEnum.a]: (node: RTERegularNode, embeds: EmbedByUid, next: RTENext, fullRenderOptions: RenderOptions) => { if (node.attrs.url) { return ( {next(node.children, embeds, fullRenderOptions)} ) } return null }, [RTETypeEnum.h1]: (node: RTEDefaultNode, embeds: EmbedByUid, next: RTENext, fullRenderOptions: RenderOptions) => { return

{next(node.children, embeds, fullRenderOptions)}

}, [RTETypeEnum.h2]: (node: RTEDefaultNode, embeds: EmbedByUid, next: RTENext, fullRenderOptions: RenderOptions) => { return

{next(node.children, embeds, fullRenderOptions)}

}, [RTETypeEnum.h3]: (node: RTEDefaultNode, embeds: EmbedByUid, next: RTENext, fullRenderOptions: RenderOptions) => { return

{next(node.children, embeds, fullRenderOptions)}

}, [RTETypeEnum.h4]: (node: RTEDefaultNode, embeds: EmbedByUid, next: RTENext, fullRenderOptions: RenderOptions) => { return

{next(node.children, embeds, fullRenderOptions)}

}, [RTETypeEnum.h5]: (node: RTEDefaultNode, embeds: EmbedByUid, next: RTENext, fullRenderOptions: RenderOptions) => { return
{next(node.children, embeds, fullRenderOptions)}
}, [RTETypeEnum.h6]: (node: RTEDefaultNode, embeds: EmbedByUid, next: RTENext, fullRenderOptions: RenderOptions) => { return
{next(node.children, embeds, fullRenderOptions)}
}, [RTETypeEnum.p]: (node: RTEDefaultNode, embeds: EmbedByUid, next: RTENext, fullRenderOptions: RenderOptions) => { return

{next(node.children, embeds, fullRenderOptions)}

}, [RTETypeEnum.reference]: (node: RTENode, embeds: EmbedByUid, next: RTENext, fullRenderOptions: RenderOptions) => { if ("attrs" in node) { const type = node.attrs.type if (type === RTEItemTypeEnum.asset) { const image = embeds?.[node?.attrs?.["asset-uid"]] if (image.node.__typename === EmbedEnum.SysAsset) { const alt = image?.node?.title ?? node.attrs.alt return ( {alt} ) } } else { return ( {next(node.children, embeds, fullRenderOptions)} ) } } return null }, [RTEMarkType.bold]: (children: React.ReactNode) => { return {children} }, [RTEMarkType.italic]: (children: React.ReactNode) => { return {children} }, [RTEMarkType.underline]: (children: React.ReactNode) => { return {children} }, [RTEMarkType.strikethrough]: (children: React.ReactNode) => { return {children} }, [RTEMarkType.inlineCode]: (children: React.ReactNode) => { return {children} }, [RTEMarkType.subscript]: (children: React.ReactNode) => { return {children} }, [RTEMarkType.superscript]: (children: React.ReactNode) => { return {children} }, [RTEMarkType.break]: (children: React.ReactNode) => { return ( <>
{children} ) }, [RTEMarkType.classnameOrId]: (children: React.ReactNode, className?: string, id?: string) => { let props = { className, id, } if (!className) { delete props.className } if (!id) { delete props.id } return {children} } }