import * as prismic from "@prismicio/client"

import { buildImageFieldImage } from "../../lib/buildImageFieldImage"
import { createFaker } from "../../lib/createFaker"
import { getMockImageData } from "../../lib/getMockImageData"
import type { MockRichTextValueConfig } from "../../types"

type MockRichTextImageValueConfig = MockRichTextValueConfig

export const image = (config: MockRichTextImageValueConfig): prismic.RTImageNode | undefined => {
	const faker = config.faker || createFaker(config.seed)

	const imageData = getMockImageData({ faker })
	const imageField = buildImageFieldImage({
		faker,
		imageData,
		state: "filled",
	})

	return {
		id: faker.hash(7),
		type: prismic.RichTextNodeType.image,
		alt: imageField.alt,
		url: imageField.url,
		copyright: imageField.copyright,
		dimensions: imageField.dimensions,
		edit: imageField.edit,
	}
}
