@prismicio/mock
Version:
Generate mock Prismic documents, fields, Slices, and models for development and testing environments
54 lines (53 loc) • 2.22 kB
JavaScript
import * as prismic from "@prismicio/client";
import { createFaker } from "../lib/createFaker.js";
import { slice } from "./slice.js";
import { sharedSlice } from "./sharedSlice.js";
import { sliceZone as sliceZone$1 } from "../model/sliceZone.js";
const sliceZone = (config) => {
var _a;
if (config.state === "empty") {
return [];
} else {
const faker = config.faker || createFaker(config.seed);
const model = config.model || sliceZone$1({ faker });
if (((_a = model.config) == null ? void 0 : _a.choices) && Object.keys(model.config.choices).length > 0) {
const itemsCount = config.itemsCount ?? faker.range(1, 6);
return Array(itemsCount).fill(void 0).map(() => {
var _a2, _b, _c, _d;
const choices = ((_a2 = model.config) == null ? void 0 : _a2.choices) && Object.entries(model.config.choices) || [];
const [choiceType, choiceModel] = faker.randomElement(choices);
const choiceLabels = ((_c = (_b = model.config) == null ? void 0 : _b.labels) == null ? void 0 : _c[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 = (_d = config.sharedSliceModels) == null ? void 0 : _d.find((sharedSliceModel2) => sharedSliceModel2.id === choiceType);
if (sharedSliceModel) {
return sharedSlice({
faker,
model: sharedSliceModel,
primaryFieldConfigs: config.primaryFieldConfigs,
itemsFieldConfigs: config.itemsFieldConfigs
});
}
}
}
}).filter((slice2) => slice2 !== void 0);
} else {
return [];
}
}
};
export {
sliceZone
};
//# sourceMappingURL=sliceZone.js.map