@prismicio/mock
Version:
Generate mock Prismic documents, fields, Slices, and models for development and testing environments
1 lines • 1.92 kB
Source Map (JSON)
{"version":3,"file":"select.cjs","names":["createFaker"],"sources":["../../src/value/select.ts"],"sourcesContent":["import type * as prismic from \"@prismicio/client\"\n\nimport { createFaker } from \"../lib/createFaker\"\nimport * as modelGen from \"../model\"\nimport type { MockValueStateConfig, MockValueConfig } from \"../types\"\n\nexport type MockSelectValueConfig<\n\tModel extends prismic.CustomTypeModelSelectField = prismic.CustomTypeModelSelectField,\n\tState extends prismic.FieldState = prismic.FieldState,\n> = MockValueConfig<Model> & MockValueStateConfig<State>\n\nexport type MockSelectValue<\n\tModel extends prismic.CustomTypeModelSelectField = prismic.CustomTypeModelSelectField,\n\tState extends prismic.FieldState = prismic.FieldState,\n> = prismic.SelectField<NonNullable<NonNullable<Model[\"config\"]>[\"options\"]>[number], State>\n\nexport const select = <\n\tModel extends prismic.CustomTypeModelSelectField = prismic.CustomTypeModelSelectField,\n\tState extends prismic.FieldState = \"filled\",\n>(\n\tconfig: MockSelectValueConfig<Model, State>,\n): MockSelectValue<Model, State> => {\n\tconst faker = config.faker || createFaker(config.seed)\n\n\tconst model = config.model || modelGen.select({ faker })\n\tconst defaultValue = model.config?.default_value\n\tconst options = model.config?.options || []\n\n\tif (config.state === \"empty\") {\n\t\treturn null as MockSelectValue<Model, State>\n\t} else {\n\t\treturn (\n\t\t\ttypeof defaultValue === \"string\" && faker.boolean()\n\t\t\t\t? defaultValue\n\t\t\t\t: faker.randomElement(options)\n\t\t) as MockSelectValue<Model, State>\n\t}\n}\n"],"mappings":";;;AAgBA,MAAa,UAIZ,WACmC;CACnC,MAAM,QAAQ,OAAO,SAASA,oBAAAA,YAAY,OAAO,KAAK;CAEtD,MAAM,QAAQ,OAAO,SAAA,eAAA,OAAyB,EAAE,OAAO,CAAC;CACxD,MAAM,eAAe,MAAM,QAAQ;CACnC,MAAM,UAAU,MAAM,QAAQ,WAAW,EAAE;AAE3C,KAAI,OAAO,UAAU,QACpB,QAAO;KAEP,QACC,OAAO,iBAAiB,YAAY,MAAM,SAAS,GAChD,eACA,MAAM,cAAc,QAAQ"}