UNPKG

@prismicio/mock

Version:

Generate mock Prismic documents, fields, Slices, and models for development and testing environments

38 lines (31 loc) 1.09 kB
import * as prismic from "@prismicio/client" import type { MockModelConfig } from "../types" export type MockSliceZoneModelConfig< Slices extends Record<string, prismic.CustomTypeModelSlice | prismic.CustomTypeModelSharedSlice> = Record<string, prismic.CustomTypeModelSlice | prismic.CustomTypeModelSharedSlice>, > = { choices?: Slices } & MockModelConfig export const sliceZone = < Slices extends Record<string, prismic.CustomTypeModelSlice | prismic.CustomTypeModelSharedSlice>, >( config: MockSliceZoneModelConfig<Slices>, ): prismic.CustomTypeModelSliceZoneField<Slices> => { const labels = {} as NonNullable< NonNullable<prismic.CustomTypeModelSliceZoneField<Slices>["config"]>["labels"] > for (const choiceId in config.choices) { const choice = config.choices[choiceId] if (choice.type === prismic.CustomTypeModelSliceType.Slice) { labels[choiceId as unknown as keyof typeof labels] = [] } } return { type: prismic.CustomTypeModelFieldType.Slices, fieldset: "Slice zone", config: { labels, choices: config.choices || ({} as Slices), }, } }