@prismicio/mock
Version:
Generate mock Prismic documents, fields, Slices, and models for development and testing environments
1 lines • 3.6 kB
Source Map (JSON)
{"version":3,"file":"heading.cjs","names":["prismic","createFaker","capitalCase"],"sources":["../../../src/value/richText/heading.ts"],"sourcesContent":["import * as prismic from \"@prismicio/client\"\n\nimport { capitalCase } from \"../../lib/changeCase\"\nimport { createFaker } from \"../../lib/createFaker\"\nimport * as modelGen from \"../../model\"\nimport type { MockRichTextValueConfig } from \"../../types\"\n\ntype RichTextNodeTitleType =\n\t| typeof prismic.RichTextNodeType.heading1\n\t| typeof prismic.RichTextNodeType.heading2\n\t| typeof prismic.RichTextNodeType.heading3\n\t| typeof prismic.RichTextNodeType.heading4\n\t| typeof prismic.RichTextNodeType.heading5\n\t| typeof prismic.RichTextNodeType.heading6\n\ntype RTHeadingNode =\n\t| prismic.RTHeading1Node\n\t| prismic.RTHeading2Node\n\t| prismic.RTHeading3Node\n\t| prismic.RTHeading4Node\n\t| prismic.RTHeading5Node\n\t| prismic.RTHeading6Node\n\nconst patterns = {\n\tshort: {\n\t\tminWords: 1,\n\t\tmaxWords: 3,\n\t},\n\tmedium: {\n\t\tminWords: 3,\n\t\tmaxWords: 6,\n\t},\n\tlong: {\n\t\tminWords: 6,\n\t\tmaxWords: 12,\n\t},\n} as const\n\nexport type MockRichTextHeadingValueConfig = {\n\tpattern?: keyof typeof patterns\n} & MockRichTextValueConfig\n\nconst headingNoteTypes = [\n\tprismic.RichTextNodeType.heading1,\n\tprismic.RichTextNodeType.heading2,\n\tprismic.RichTextNodeType.heading3,\n\tprismic.RichTextNodeType.heading4,\n\tprismic.RichTextNodeType.heading5,\n\tprismic.RichTextNodeType.heading6,\n]\n\nexport const heading = (config: MockRichTextHeadingValueConfig): RTHeadingNode | undefined => {\n\tconst faker = config.faker || createFaker(config.seed)\n\n\tconst model = config.model || modelGen.title({ faker })\n\n\tlet types: RichTextNodeTitleType[] = []\n\tif (model.config) {\n\t\tif (\"single\" in model.config && model.config.single) {\n\t\t\ttypes = model.config.single\n\t\t\t\t.split(\",\")\n\t\t\t\t.filter((type): type is RichTextNodeTitleType =>\n\t\t\t\t\theadingNoteTypes.includes(type as RichTextNodeTitleType),\n\t\t\t\t)\n\t\t} else if (\"multi\" in model.config && model.config.multi) {\n\t\t\ttypes = model.config.multi\n\t\t\t\t.split(\",\")\n\t\t\t\t.filter((type): type is RichTextNodeTitleType =>\n\t\t\t\t\theadingNoteTypes.includes(type as RichTextNodeTitleType),\n\t\t\t\t)\n\t\t}\n\t}\n\n\tconst type = faker.randomElement(types)\n\n\tif (type) {\n\t\tconst patternKey =\n\t\t\tconfig.pattern || faker.randomElement(Object.keys(patterns) as (keyof typeof patterns)[])\n\t\tconst pattern = patterns[patternKey]\n\n\t\treturn {\n\t\t\ttype,\n\t\t\ttext: capitalCase(faker.words(faker.range(pattern.minWords, pattern.maxWords))),\n\t\t\tspans: [],\n\t\t}\n\t} else {\n\t\treturn undefined\n\t}\n}\n"],"mappings":";;;;;;;AAuBA,MAAM,WAAW;CAChB,OAAO;EACN,UAAU;EACV,UAAU;EACV;CACD,QAAQ;EACP,UAAU;EACV,UAAU;EACV;CACD,MAAM;EACL,UAAU;EACV,UAAU;EACV;CACD;AAMD,MAAM,mBAAmB;CACxBA,kBAAQ,iBAAiB;CACzBA,kBAAQ,iBAAiB;CACzBA,kBAAQ,iBAAiB;CACzBA,kBAAQ,iBAAiB;CACzBA,kBAAQ,iBAAiB;CACzBA,kBAAQ,iBAAiB;CACzB;AAED,MAAa,WAAW,WAAsE;CAC7F,MAAM,QAAQ,OAAO,SAASC,oBAAAA,YAAY,OAAO,KAAK;CAEtD,MAAM,QAAQ,OAAO,SAAA,cAAA,MAAwB,EAAE,OAAO,CAAC;CAEvD,IAAI,QAAiC,EAAE;AACvC,KAAI,MAAM;MACL,YAAY,MAAM,UAAU,MAAM,OAAO,OAC5C,SAAQ,MAAM,OAAO,OACnB,MAAM,IAAI,CACV,QAAQ,SACR,iBAAiB,SAAS,KAA8B,CACxD;WACQ,WAAW,MAAM,UAAU,MAAM,OAAO,MAClD,SAAQ,MAAM,OAAO,MACnB,MAAM,IAAI,CACV,QAAQ,SACR,iBAAiB,SAAS,KAA8B,CACxD;;CAIJ,MAAM,OAAO,MAAM,cAAc,MAAM;AAEvC,KAAI,MAAM;EAGT,MAAM,UAAU,SADf,OAAO,WAAW,MAAM,cAAc,OAAO,KAAK,SAAS,CAA8B;AAG1F,SAAO;GACN;GACA,MAAMC,mBAAAA,YAAY,MAAM,MAAM,MAAM,MAAM,QAAQ,UAAU,QAAQ,SAAS,CAAC,CAAC;GAC/E,OAAO,EAAE;GACT;OAED"}