import { ImageContentSchema, ImageContentType } from "../image" import type { ImageContent } from "../image" import type { ImageLegacy } from "../legacy/image" import { ImageLegacySchema } from "../legacy/image" import type { LegacyContentCtx, LegacyCodec } from "./legacyContentCtx" // Also used by content/codec/richText export function imageLegacyToContent(value: ImageLegacy): ImageContent { return { ...value, __TYPE__: ImageContentType } } export const ImageLegacyCodec = ( ctx: LegacyContentCtx, ): LegacyCodec => ({ name: "ImageLegacy", is(input): input is ImageContent { return ImageContentSchema.safeParse(input).success }, toContent(input) { const parsed = ImageLegacySchema.safeParse(input) if (!parsed.success) { return parsed } return { success: true, data: imageLegacyToContent(parsed.data), } }, fromContent(input) { return { content: { edit: input.edit, height: input.height, origin: input.origin, width: input.width, ...(input.alt ? { alt: input.alt } : {}), ...(input.credits ? { credits: input.credits } : {}), ...(input.provider ? { provider: input.provider } : {}), ...(input.thumbnails ? { thumbnails: input.thumbnails } : {}), ...(input.url ? { url: input.url } : {}), }, types: { [ctx.keyOfType]: "Image" }, keys: {}, } }, })