UNPKG

@prismicio/mock

Version:

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

45 lines (44 loc) 1.83 kB
import { createFaker } from "../lib/createFaker.js"; import { sliceZone as sliceZone$1 } from "../model/sliceZone.js"; import { slice } from "./slice.js"; import { sharedSlice } from "./sharedSlice.js"; import * as prismic from "@prismicio/client"; //#region src/value/sliceZone.ts const sliceZone = (config) => { if (config.state === "empty") return []; else { const faker = config.faker || createFaker(config.seed); const model = config.model || sliceZone$1({ faker }); if (model.config?.choices && Object.keys(model.config.choices).length > 0) { const itemsCount = config.itemsCount ?? faker.range(1, 6); return Array(itemsCount).fill(void 0).map(() => { const choices = model.config?.choices && Object.entries(model.config.choices) || []; const [choiceType, choiceModel] = faker.randomElement(choices); const choiceLabels = model.config?.labels?.[choiceType] || []; const choiceLabel = faker.randomElement(choiceLabels); switch (choiceModel.type) { case prismic.CustomTypeModelSliceType.Slice: return slice({ faker, model: choiceModel, type: choiceType, label: choiceLabel ? choiceLabel.name : null, primaryFieldConfigs: config.primaryFieldConfigs, itemsFieldConfigs: config.itemsFieldConfigs }); case prismic.CustomTypeModelSliceType.SharedSlice: { const sharedSliceModel = config.sharedSliceModels?.find((sharedSliceModel) => sharedSliceModel.id === choiceType); if (sharedSliceModel) return sharedSlice({ faker, model: sharedSliceModel, primaryFieldConfigs: config.primaryFieldConfigs, itemsFieldConfigs: config.itemsFieldConfigs }); } } }).filter((slice) => slice !== void 0); } else return []; } }; //#endregion export { sliceZone }; //# sourceMappingURL=sliceZone.js.map