{"version":3,"file":"sliceZone.cjs","names":["createFaker","prismic","slice","sharedSlice"],"sources":["../../src/value/sliceZone.ts"],"sourcesContent":["import * as prismic from \"@prismicio/client\"\n\nimport { createFaker } from \"../lib/createFaker\"\nimport type { ValueForModelMapConfigs } from \"../lib/valueForModelMap\"\nimport * as modelGen from \"../model\"\nimport type { MockValueConfig, MockValueStateConfig, ModelValue } from \"../types\"\nimport { sharedSlice } from \"./sharedSlice\"\nimport { slice } from \"./slice\"\n\nexport type MockSliceZoneValueConfig<\n\tModel extends prismic.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 prismic.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 = (model.config?.choices && Object.entries(model.config.choices)) || []\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((slice): slice is NonNullable<typeof slice> => slice !== undefined) as ModelValue<\n\t\t\t\tModel,\n\t\t\t\tState\n\t\t\t>\n\t\t} else {\n\t\t\treturn [] as unknown as ModelValue<Model, State>\n\t\t}\n\t}\n}\n"],"mappings":";;;;;;;;AAoBA,MAAa,aAIZ,WAC8B;AAC9B,KAAI,OAAO,UAAU,QACpB,QAAO,EAAE;MACH;EACN,MAAM,QAAQ,OAAO,SAASA,oBAAAA,YAAY,OAAO,KAAK;EAEtD,MAAM,QAAQ,OAAO,SAAA,kBAAA,UAA4B,EAAE,OAAO,CAAC;AAE3D,MAAI,MAAM,QAAQ,WAAW,OAAO,KAAK,MAAM,OAAO,QAAQ,CAAC,SAAS,GAAG;GAC1E,MAAM,aAAa,OAAO,cAAc,MAAM,MAAM,GAAG,EAAE;AAEzD,UAAO,MAAM,WAAW,CACtB,KAAK,KAAA,EAAU,CACf,UAAU;IACV,MAAM,UAAW,MAAM,QAAQ,WAAW,OAAO,QAAQ,MAAM,OAAO,QAAQ,IAAK,EAAE;IACrF,MAAM,CAAC,YAAY,eAAe,MAAM,cAAc,QAAQ;IAE9D,MAAM,eAAe,MAAM,QAAQ,SAAS,eAAe,EAAE;IAC7D,MAAM,cAAc,MAAM,cAAc,aAAa;AAErD,YAAQ,YAAY,MAApB;KACC,KAAKC,kBAAQ,yBAAyB,MACrC,QAAOC,cAAAA,MAAM;MACZ;MACA,OAAO;MACP,MAAM;MACN,OAAO,cAAc,YAAY,OAAO;MACxC,qBAAqB,OAAO;MAC5B,mBAAmB,OAAO;MAC1B,CAAC;KAGH,KAAKD,kBAAQ,yBAAyB,aAAa;MAClD,MAAM,mBAAmB,OAAO,mBAAmB,MACjD,qBAAqB,iBAAiB,OAAO,WAC9C;AAED,UAAI,iBACH,QAAOE,oBAAAA,YAAY;OAClB;OACA,OAAO;OACP,qBAAqB,OAAO;OAC5B,mBAAmB,OAAO;OAC1B,CAAC;;;KAIJ,CACD,QAAQ,UAA8C,UAAU,KAAA,EAAU;QAK5E,QAAO,EAAE"}