@prismicio/mock
Version:
Generate mock Prismic documents, fields, Slices, and models for development and testing environments
1 lines • 3.1 kB
Source Map (JSON)
{"version":3,"file":"table.cjs","names":["createFaker","prismic","richText"],"sources":["../../src/value/table.ts"],"sourcesContent":["import * as prismic from \"@prismicio/client\"\n\nimport { createFaker, type Faker } from \"../lib/createFaker\"\nimport type { MockValueStateConfig, MockValueConfig } from \"../types\"\nimport { richText } from \"./richText\"\n\nexport type MockTableValueConfig<\n\tModel extends prismic.CustomTypeModelTableField = prismic.CustomTypeModelTableField,\n\tState extends prismic.FieldState = prismic.FieldState,\n> = MockValueConfig<Model> & MockValueStateConfig<State>\n\nexport type MockTableValue<State extends prismic.FieldState = prismic.FieldState> =\n\tprismic.TableField<State>\n\nexport const table = <\n\tModel extends prismic.CustomTypeModelTableField = prismic.CustomTypeModelTableField,\n\tState extends prismic.FieldState = \"filled\",\n>(\n\tconfig: MockTableValueConfig<Model, State>,\n): MockTableValue<State> => {\n\tconst faker = config.faker || createFaker(config.seed)\n\n\tconst cells = faker.range(1, 10)\n\tconst bodyRows = faker.range(1, 10)\n\n\treturn (\n\t\tconfig.state === \"empty\"\n\t\t\t? null\n\t\t\t: {\n\t\t\t\t\thead: {\n\t\t\t\t\t\trows: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcells: Array.from({ length: cells }, () =>\n\t\t\t\t\t\t\t\t\tmockTableCell({\n\t\t\t\t\t\t\t\t\t\ttype: \"header\",\n\t\t\t\t\t\t\t\t\t\tfaker,\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\tbody: {\n\t\t\t\t\t\trows: Array.from({ length: bodyRows }, () => ({\n\t\t\t\t\t\t\tcells: Array.from({ length: cells }, () =>\n\t\t\t\t\t\t\t\tmockTableCell({\n\t\t\t\t\t\t\t\t\ttype: \"data\",\n\t\t\t\t\t\t\t\t\tfaker,\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t})),\n\t\t\t\t\t},\n\t\t\t\t}\n\t) as MockTableValue<State>\n}\n\n// Only exported for testing purposes, to ensure the model used is in sync with the internal one.\nexport const TableCell = {\n\ttype: \"StructuredText\",\n\tconfig: {\n\t\tmulti: [\n\t\t\tprismic.RichTextNodeType.paragraph,\n\t\t\tprismic.RichTextNodeType.strong,\n\t\t\tprismic.RichTextNodeType.em,\n\t\t\tprismic.RichTextNodeType.hyperlink,\n\t\t].join(\",\"),\n\t},\n} as const\n\nconst mockTableCell = ({ type, faker }: { type: \"header\" | \"data\"; faker: Faker }) => ({\n\ttype,\n\tcontent: richText({\n\t\tfaker,\n\t\tmodel: TableCell,\n\t}),\n})\n"],"mappings":";;;;;;AAcA,MAAa,SAIZ,WAC2B;CAC3B,MAAM,QAAQ,OAAO,SAASA,oBAAAA,YAAY,OAAO,KAAK;CAEtD,MAAM,QAAQ,MAAM,MAAM,GAAG,GAAG;CAChC,MAAM,WAAW,MAAM,MAAM,GAAG,GAAG;AAEnC,QACC,OAAO,UAAU,UACd,OACA;EACA,MAAM,EACL,MAAM,CACL,EACC,OAAO,MAAM,KAAK,EAAE,QAAQ,OAAO,QAClC,cAAc;GACb,MAAM;GACN;GACA,CAAC,CACF,EACD,CACD,EACD;EACD,MAAM,EACL,MAAM,MAAM,KAAK,EAAE,QAAQ,UAAU,SAAS,EAC7C,OAAO,MAAM,KAAK,EAAE,QAAQ,OAAO,QAClC,cAAc;GACb,MAAM;GACN;GACA,CAAC,CACF,EACD,EAAE,EACH;EACD;;AAKL,MAAa,YAAY;CACxB,MAAM;CACN,QAAQ,EACP,OAAO;EACNC,kBAAQ,iBAAiB;EACzBA,kBAAQ,iBAAiB;EACzBA,kBAAQ,iBAAiB;EACzBA,kBAAQ,iBAAiB;EACzB,CAAC,KAAK,IAAI,EACX;CACD;AAED,MAAM,iBAAiB,EAAE,MAAM,aAAwD;CACtF;CACA,SAASC,cAAAA,SAAS;EACjB;EACA,OAAO;EACP,CAAC;CACF"}