@prismicio/mock
Version:
Generate mock Prismic documents, fields, Slices, and models for development and testing environments
1 lines • 4.57 kB
Source Map (JSON)
{"version":3,"file":"sliceZone.cjs","sources":["../../../src/value/sliceZone.ts"],"sourcesContent":["import * as prismic from \"@prismicio/client\";\n\nimport { createFaker } from \"../lib/createFaker\";\nimport { ValueForModelMapConfigs } from \"../lib/valueForModelMap\";\n\nimport { MockValueConfig, MockValueStateConfig, ModelValue } from \"../types\";\n\nimport * as modelGen from \"../model\";\n\nimport { slice } from \"./slice\";\nimport { sharedSlice } from \"./sharedSlice\";\n\nexport type MockSliceZoneValueConfig<\n\tModel extends\n\t\tprismic.CustomTypeModelSliceZoneField = prismic.CustomTypeModelSliceZoneField,\n\tState extends prismic.FieldState = prismic.FieldState,\n> = {\n\tsharedSliceModels?: prismic.SharedSliceModel[];\n\titemsCount?: State extends \"empty\" ? 0 : number;\n\tprimaryFieldConfigs?: ValueForModelMapConfigs;\n\titemsFieldConfigs?: ValueForModelMapConfigs;\n} & MockValueConfig<Model> &\n\tMockValueStateConfig<State>;\n\nexport const sliceZone = <\n\tModel extends\n\t\tprismic.CustomTypeModelSliceZoneField = prismic.CustomTypeModelSliceZoneField,\n\tState extends prismic.FieldState = prismic.FieldState,\n>(\n\tconfig: MockSliceZoneValueConfig<Model, State>,\n): ModelValue<Model, State> => {\n\tif (config.state === \"empty\") {\n\t\treturn [] as ModelValue<Model, State>;\n\t} else {\n\t\tconst faker = config.faker || createFaker(config.seed);\n\n\t\tconst model = config.model || modelGen.sliceZone({ faker });\n\n\t\tif (model.config?.choices && Object.keys(model.config.choices).length > 0) {\n\t\t\tconst itemsCount = config.itemsCount ?? faker.range(1, 6);\n\n\t\t\treturn Array(itemsCount)\n\t\t\t\t.fill(undefined)\n\t\t\t\t.map(() => {\n\t\t\t\t\tconst choices =\n\t\t\t\t\t\t(model.config?.choices && Object.entries(model.config.choices)) ||\n\t\t\t\t\t\t[];\n\t\t\t\t\tconst [choiceType, choiceModel] = faker.randomElement(choices);\n\n\t\t\t\t\tconst choiceLabels = model.config?.labels?.[choiceType] || [];\n\t\t\t\t\tconst choiceLabel = faker.randomElement(choiceLabels);\n\n\t\t\t\t\tswitch (choiceModel.type) {\n\t\t\t\t\t\tcase prismic.CustomTypeModelSliceType.Slice: {\n\t\t\t\t\t\t\treturn slice({\n\t\t\t\t\t\t\t\tfaker,\n\t\t\t\t\t\t\t\tmodel: choiceModel,\n\t\t\t\t\t\t\t\ttype: choiceType,\n\t\t\t\t\t\t\t\tlabel: choiceLabel ? choiceLabel.name : null,\n\t\t\t\t\t\t\t\tprimaryFieldConfigs: config.primaryFieldConfigs,\n\t\t\t\t\t\t\t\titemsFieldConfigs: config.itemsFieldConfigs,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcase prismic.CustomTypeModelSliceType.SharedSlice: {\n\t\t\t\t\t\t\tconst sharedSliceModel = config.sharedSliceModels?.find(\n\t\t\t\t\t\t\t\t(sharedSliceModel) => sharedSliceModel.id === choiceType,\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tif (sharedSliceModel) {\n\t\t\t\t\t\t\t\treturn sharedSlice({\n\t\t\t\t\t\t\t\t\tfaker,\n\t\t\t\t\t\t\t\t\tmodel: sharedSliceModel,\n\t\t\t\t\t\t\t\t\tprimaryFieldConfigs: config.primaryFieldConfigs,\n\t\t\t\t\t\t\t\t\titemsFieldConfigs: config.itemsFieldConfigs,\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\t\t\t.filter(\n\t\t\t\t\t(slice): slice is NonNullable<typeof slice> => slice !== undefined,\n\t\t\t\t) as ModelValue<Model, State>;\n\t\t} else {\n\t\t\treturn [] as unknown as ModelValue<Model, State>;\n\t\t}\n\t}\n};\n"],"names":["createFaker","modelGen.sliceZone","_a","prismic","slice","sharedSliceModel","sharedSlice"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAwBa,MAAA,YAAY,CAKxB,WAC6B;;AACzB,MAAA,OAAO,UAAU,SAAS;AAC7B,WAAO;SACD;AACN,UAAM,QAAQ,OAAO,SAASA,YAAAA,YAAY,OAAO,IAAI;AAErD,UAAM,QAAQ,OAAO,SAASC,YAAAA,UAAmB,EAAE,OAAO;AAEtD,UAAA,WAAM,WAAN,mBAAc,YAAW,OAAO,KAAK,MAAM,OAAO,OAAO,EAAE,SAAS,GAAG;AAC1E,YAAM,aAAa,OAAO,cAAc,MAAM,MAAM,GAAG,CAAC;AAExD,aAAO,MAAM,UAAU,EACrB,KAAK,MAAS,EACd,IAAI,MAAK;;AACH,cAAA,YACJC,MAAA,MAAM,WAAN,gBAAAA,IAAc,YAAW,OAAO,QAAQ,MAAM,OAAO,OAAO,KAC7D,CAAA;AACD,cAAM,CAAC,YAAY,WAAW,IAAI,MAAM,cAAc,OAAO;AAE7D,cAAM,iBAAe,iBAAM,WAAN,mBAAc,WAAd,mBAAuB,gBAAe;AACrD,cAAA,cAAc,MAAM,cAAc,YAAY;AAEpD,gBAAQ,YAAY,MAAM;AAAA,UACzB,KAAKC,mBAAQ,yBAAyB,OAAO;AAC5C,mBAAOC,YAAM;AAAA,cACZ;AAAA,cACA,OAAO;AAAA,cACP,MAAM;AAAA,cACN,OAAO,cAAc,YAAY,OAAO;AAAA,cACxC,qBAAqB,OAAO;AAAA,cAC5B,mBAAmB,OAAO;AAAA,YAAA,CAC1B;AAAA,UACF;AAAA,UAEA,KAAKD,mBAAQ,yBAAyB,aAAa;AAC5C,kBAAA,oBAAmB,YAAO,sBAAP,mBAA0B,KAClD,CAACE,sBAAqBA,kBAAiB,OAAO;AAG/C,gBAAI,kBAAkB;AACrB,qBAAOC,wBAAY;AAAA,gBAClB;AAAA,gBACA,OAAO;AAAA,gBACP,qBAAqB,OAAO;AAAA,gBAC5B,mBAAmB,OAAO;AAAA,cAAA,CAC1B;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MAAA,CACA,EACA,OACA,CAACF,WAA8CA,WAAU,MAAS;AAAA,IAAA,OAE9D;AACN,aAAO;IACR;AAAA,EACD;AACD;;"}