UNPKG

@prismicio/mock

Version:

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

92 lines (91 loc) 3.44 kB
"use strict"; Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); const prismic = require("@prismicio/client"); const createFaker = require("../../lib/createFaker.cjs"); const heading = require("./heading.cjs"); const paragraph = require("./paragraph.cjs"); const preformatted = require("./preformatted.cjs"); const list = require("./list.cjs"); const oList = require("./oList.cjs"); const image = require("./image.cjs"); const embed = require("./embed.cjs"); const richText$1 = require("../../model/richText.cjs"); function _interopNamespaceDefault(e) { const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } }); if (e) { for (const k in e) { if (k !== "default") { const d = Object.getOwnPropertyDescriptor(e, k); Object.defineProperty(n, k, d.get ? d : { enumerable: true, get: () => e[k] }); } } } n.default = e; return Object.freeze(n); } const prismic__namespace = /* @__PURE__ */ _interopNamespaceDefault(prismic); const patterns = { short: { blockCountMin: 1, blockCountMax: 2 }, medium: { blockCountMin: 2, blockCountMax: 4 }, long: { blockCountMin: 4, blockCountMax: 8 } }; const generators = { [prismic__namespace.RichTextNodeType.heading1]: heading.heading, [prismic__namespace.RichTextNodeType.heading2]: heading.heading, [prismic__namespace.RichTextNodeType.heading3]: heading.heading, [prismic__namespace.RichTextNodeType.heading4]: heading.heading, [prismic__namespace.RichTextNodeType.heading5]: heading.heading, [prismic__namespace.RichTextNodeType.heading6]: heading.heading, [prismic__namespace.RichTextNodeType.paragraph]: paragraph.paragraph, [prismic__namespace.RichTextNodeType.preformatted]: preformatted.preformatted, [prismic__namespace.RichTextNodeType.listItem]: list.list, [prismic__namespace.RichTextNodeType.oListItem]: oList.oList, [prismic__namespace.RichTextNodeType.image]: image.image, [prismic__namespace.RichTextNodeType.embed]: embed.embed }; const richText = (config) => { const faker = config.faker || createFaker.createFaker(config.seed); if (config.state === "empty") { return []; } else { const model = config.model || richText$1.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 patternKey = config.pattern || faker.randomElement(Object.keys(patterns)); const pattern = patterns[patternKey]; const blockCount = supportsMultipleBlocks ? faker.range(pattern.blockCountMin, pattern.blockCountMax) : 1; return Array(blockCount).fill(void 0).map(() => { const type = faker.randomElement(types); const generator = generators[type]; return generator({ faker, model }); }).flat().filter((block) => block !== void 0).slice(0, blockCount); } else { return []; } } }; exports.richText = richText; //# sourceMappingURL=index.cjs.map