@prismicio/mock
Version:
Generate mock Prismic documents, fields, Slices, and models for development and testing environments
92 lines (91 loc) • 3.44 kB
JavaScript
;
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