import type { RepeatableContent } from "@prismicio/types-internal/lib/content" import type { Link, NestableWidget } from "@prismicio/types-internal/lib/customtypes" import type { RenderContext, Renderer } from "../models" import type { Simple } from "../models/fetch" import StaticWidgetRenderer from "./StaticWidgetRenderer" const RepeatableRenderer: (ctx: RenderContext) => Renderer = (ctx) => { return { renderV1(content, fetch) { return content.value.map((item) => { return StaticWidgetRenderer(ctx).renderV1(item, fetch) }) }, renderV2(def: Link, content, fetch) { return content.value.map((item) => { return StaticWidgetRenderer(ctx).renderV2( // Override the repeat value to false to prevent propagating the repeat configuration. // Items inside a repeatable array should not be repeatable. { ...def, config: { ...def.config, repeat: false, }, }, item, fetch, ) }) }, renderDefault() { return [] }, renderMocks(def: Link, content) { return content.value.map((item) => { return StaticWidgetRenderer(ctx).renderMocks( // Override the repeat value to false to prevent propagating the repeat configuration. // Items inside a repeatable array should not be repeatable. { ...def, config: { ...def.config, repeat: false, }, }, item, ) }) }, } } export default RepeatableRenderer