UNPKG

@prismicio/mock

Version:

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

72 lines (71 loc) 3.04 kB
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