UNPKG

@prismicio/mock

Version:

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

1 lines 3.92 kB
{"version":3,"file":"heading.cjs","sources":["../../../../src/value/richText/heading.ts"],"sourcesContent":["import * as prismic from \"@prismicio/client\";\n\nimport { capitalCase } from \"../../lib/changeCase\";\nimport { createFaker } from \"../../lib/createFaker\";\n\nimport { MockRichTextValueConfig } from \"../../types\";\n\nimport * as modelGen from \"../../model\";\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 = (\n\tconfig: MockRichTextHeadingValueConfig,\n): 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 ||\n\t\t\tfaker.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(\n\t\t\t\tfaker.words(faker.range(pattern.minWords, pattern.maxWords)),\n\t\t\t),\n\t\t\tspans: [],\n\t\t};\n\t} else {\n\t\treturn undefined;\n\t}\n};\n"],"names":["prismic","createFaker","modelGen.title","type","capitalCase"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAyBA,MAAM,WAAW;AAAA,EAChB,OAAO;AAAA,IACN,UAAU;AAAA,IACV,UAAU;AAAA,EACV;AAAA,EACD,QAAQ;AAAA,IACP,UAAU;AAAA,IACV,UAAU;AAAA,EACV;AAAA,EACD,MAAM;AAAA,IACL,UAAU;AAAA,IACV,UAAU;AAAA,EACV;;AAOF,MAAM,mBAAmB;AAAA,EACxBA,mBAAQ,iBAAiB;AAAA,EACzBA,mBAAQ,iBAAiB;AAAA,EACzBA,mBAAQ,iBAAiB;AAAA,EACzBA,mBAAQ,iBAAiB;AAAA,EACzBA,mBAAQ,iBAAiB;AAAA,EACzBA,mBAAQ,iBAAiB;;AAGb,MAAA,UAAU,CACtB,WAC8B;AAC9B,QAAM,QAAQ,OAAO,SAASC,YAAAA,YAAY,OAAO,IAAI;AAErD,QAAM,QAAQ,OAAO,SAASC,MAAAA,MAAe,EAAE,OAAO;AAEtD,MAAI,QAAiC,CAAA;AACrC,MAAI,MAAM,QAAQ;AACjB,QAAI,YAAY,MAAM,UAAU,MAAM,OAAO,QAAQ;AACpD,cAAQ,MAAM,OAAO,OACnB,MAAM,GAAG,EACT,OAAO,CAACC,UACR,iBAAiB,SAASA,KAA6B,CAAC;AAAA,IAAA,WAEhD,WAAW,MAAM,UAAU,MAAM,OAAO,OAAO;AACzD,cAAQ,MAAM,OAAO,MACnB,MAAM,GAAG,EACT,OAAO,CAACA,UACR,iBAAiB,SAASA,KAA6B,CAAC;AAAA,IAE3D;AAAA,EACD;AAEM,QAAA,OAAO,MAAM,cAAc,KAAK;AAEtC,MAAI,MAAM;AACH,UAAA,aACL,OAAO,WACP,MAAM,cAAc,OAAO,KAAK,QAAQ,CAA8B;AACjE,UAAA,UAAU,SAAS,UAAU;AAE5B,WAAA;AAAA,MACN;AAAA,MACA,MAAMC,WACL,YAAA,MAAM,MAAM,MAAM,MAAM,QAAQ,UAAU,QAAQ,QAAQ,CAAC,CAAC;AAAA,MAE7D,OAAO,CAAE;AAAA,IAAA;AAAA,SAEJ;AACC,WAAA;AAAA,EACR;AACD;;"}