import type { AnyLinkContent, LinkContent } from "@prismicio/types-internal/lib/content" import type { AnyLinkDef, LinkRenderer, LinkRendererOptions } from "../../../models" const AnyLinkRenderer: LinkRenderer< AnyLinkDef, LinkContent & { value: AnyLinkContent }, undefined, LinkRendererOptions > = { renderV1(link: LinkContent & { value: AnyLinkContent }, _fetch: undefined, options?: LinkRendererOptions): unknown { return { type: "Link.any", value: { ...(!options?.omitKey && { key: link.key }), ...(link.value.text && { text: link.value.text }), ...(link.value.variant && { variant: link.value.variant }), }, } }, renderV2( def: AnyLinkDef, link: LinkContent & { value: AnyLinkContent }, _fetch: undefined, options?: LinkRendererOptions, ): unknown { const defVariants = def.variants || [] const linkVariant = link.value.variant && defVariants.includes(link.value.variant) ? link.value.variant : defVariants[0] return { link_type: "Any", ...(!options?.omitKey && { key: link.key }), ...(def.allowText && link.value.text && { text: link.value.text }), ...(linkVariant && { variant: linkVariant }), } }, renderMocks(def: AnyLinkDef, link: LinkContent & { value: AnyLinkContent }, options?: LinkRendererOptions): unknown { return this.renderV2(def, link, undefined, options) }, } export default AnyLinkRenderer