UNPKG

@prismicio/mock

Version:

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

55 lines (54 loc) 1.54 kB
import * as prismic from "@prismicio/client"; import { capitalCase } from "../../lib/changeCase.js"; import { createFaker } from "../../lib/createFaker.js"; import { title } from "../../model/title.js"; const patterns = { short: { minWords: 1, maxWords: 3 }, medium: { minWords: 3, maxWords: 6 }, long: { minWords: 6, maxWords: 12 } }; const headingNoteTypes = [ prismic.RichTextNodeType.heading1, prismic.RichTextNodeType.heading2, prismic.RichTextNodeType.heading3, prismic.RichTextNodeType.heading4, prismic.RichTextNodeType.heading5, prismic.RichTextNodeType.heading6 ]; const heading = (config) => { const faker = config.faker || createFaker(config.seed); const model = config.model || title({ faker }); let types = []; if (model.config) { if ("single" in model.config && model.config.single) { types = model.config.single.split(",").filter((type2) => headingNoteTypes.includes(type2)); } else if ("multi" in model.config && model.config.multi) { types = model.config.multi.split(",").filter((type2) => headingNoteTypes.includes(type2)); } } const type = faker.randomElement(types); if (type) { const patternKey = config.pattern || faker.randomElement(Object.keys(patterns)); const pattern = patterns[patternKey]; return { type, text: capitalCase(faker.words(faker.range(pattern.minWords, pattern.maxWords))), spans: [] }; } else { return void 0; } }; export { heading }; //# sourceMappingURL=heading.js.map