@prismicio/mock
Version:
Generate mock Prismic documents, fields, Slices, and models for development and testing environments
72 lines (71 loc) • 3.04 kB
JavaScript
const require_runtime = require("../../_virtual/_rolldown/runtime.cjs");
const require_createFaker = require("../../lib/createFaker.cjs");
const require_richText = require("../../model/richText.cjs");
const require_embed = require("./embed.cjs");
const require_heading = require("./heading.cjs");
const require_image = require("./image.cjs");
const require_list = require("./list.cjs");
const require_oList = require("./oList.cjs");
const require_paragraph = require("./paragraph.cjs");
const require_preformatted = require("./preformatted.cjs");
let _prismicio_client = require("@prismicio/client");
_prismicio_client = require_runtime.__toESM(_prismicio_client);
//#region src/value/richText/index.ts
const patterns = {
short: {
blockCountMin: 1,
blockCountMax: 2
},
medium: {
blockCountMin: 2,
blockCountMax: 4
},
long: {
blockCountMin: 4,
blockCountMax: 8
}
};
const generators = {
[_prismicio_client.RichTextNodeType.heading1]: require_heading.heading,
[_prismicio_client.RichTextNodeType.heading2]: require_heading.heading,
[_prismicio_client.RichTextNodeType.heading3]: require_heading.heading,
[_prismicio_client.RichTextNodeType.heading4]: require_heading.heading,
[_prismicio_client.RichTextNodeType.heading5]: require_heading.heading,
[_prismicio_client.RichTextNodeType.heading6]: require_heading.heading,
[_prismicio_client.RichTextNodeType.paragraph]: require_paragraph.paragraph,
[_prismicio_client.RichTextNodeType.preformatted]: require_preformatted.preformatted,
[_prismicio_client.RichTextNodeType.listItem]: require_list.list,
[_prismicio_client.RichTextNodeType.oListItem]: require_oList.oList,
[_prismicio_client.RichTextNodeType.image]: require_image.image,
[_prismicio_client.RichTextNodeType.embed]: require_embed.embed
};
const richText = (config) => {
const faker = config.faker || require_createFaker.createFaker(config.seed);
if (config.state === "empty") return [];
else {
const model = config.model || require_richText.richText({
faker,
withMultipleBlocks: true
});
const supportsMultipleBlocks = model.config && "multi" in model.config;
let types = [];
if (model.config) {
if ("multi" in model.config && model.config.multi) types = model.config.multi.split(",").filter((type) => Object.keys(generators).includes(type));
else if ("single" in model.config && model.config.single) types = model.config.single.split(",").filter((type) => Object.keys(generators).includes(type));
}
if (types.length > 0) {
const pattern = patterns[config.pattern || faker.randomElement(Object.keys(patterns))];
const blockCount = supportsMultipleBlocks ? faker.range(pattern.blockCountMin, pattern.blockCountMax) : 1;
return Array(blockCount).fill(void 0).map(() => {
const generator = generators[faker.randomElement(types)];
return generator({
faker,
model
});
}).flat().filter((block) => block !== void 0).slice(0, blockCount);
} else return [];
}
};
//#endregion
exports.richText = richText;
//# sourceMappingURL=index.cjs.map