@prismicio/mock
Version:
Generate mock Prismic documents, fields, Slices, and models for development and testing environments
47 lines (46 loc) • 2.09 kB
JavaScript
const require_runtime = require("../_virtual/_rolldown/runtime.cjs");
const require_createFaker = require("../lib/createFaker.cjs");
const require_sliceZone = require("../model/sliceZone.cjs");
const require_slice = require("./slice.cjs");
const require_sharedSlice = require("./sharedSlice.cjs");
let _prismicio_client = require("@prismicio/client");
_prismicio_client = require_runtime.__toESM(_prismicio_client);
//#region src/value/sliceZone.ts
const sliceZone = (config) => {
if (config.state === "empty") return [];
else {
const faker = config.faker || require_createFaker.createFaker(config.seed);
const model = config.model || require_sliceZone.sliceZone({ 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 _prismicio_client.CustomTypeModelSliceType.Slice: return require_slice.slice({
faker,
model: choiceModel,
type: choiceType,
label: choiceLabel ? choiceLabel.name : null,
primaryFieldConfigs: config.primaryFieldConfigs,
itemsFieldConfigs: config.itemsFieldConfigs
});
case _prismicio_client.CustomTypeModelSliceType.SharedSlice: {
const sharedSliceModel = config.sharedSliceModels?.find((sharedSliceModel) => sharedSliceModel.id === choiceType);
if (sharedSliceModel) return require_sharedSlice.sharedSlice({
faker,
model: sharedSliceModel,
primaryFieldConfigs: config.primaryFieldConfigs,
itemsFieldConfigs: config.itemsFieldConfigs
});
}
}
}).filter((slice) => slice !== void 0);
} else return [];
}
};
//#endregion
exports.sliceZone = sliceZone;
//# sourceMappingURL=sliceZone.cjs.map