{"version":3,"file":"valueForModelMap.cjs","names":["prismic","createFaker","valueForModel"],"sources":["../../src/lib/valueForModelMap.ts"],"sourcesContent":["import * as prismic from \"@prismicio/client\"\n\nimport type { ModelValue, ModelValueMap, Seed } from \"../types\"\nimport type {\n\tMockBooleanValueConfig,\n\tMockColorValueConfig,\n\tMockContentRelationshipValueConfig,\n\tMockDateValueConfig,\n\tMockEmbedValueConfig,\n\tMockGeoPointValueConfig,\n\tMockGroupValueConfig,\n\tMockImageValueConfig,\n\tMockIntegrationFieldValueConfig,\n\tMockKeyTextValueConfig,\n\tMockLinkToMediaValueConfig,\n\tMockLinkValueConfig,\n\tMockNumberValueConfig,\n\tMockRichTextValueConfig,\n\tMockSelectValueConfig,\n\tMockSliceZoneValueConfig,\n\tMockTimestampValueConfig,\n\tMockTitleValueConfig,\n\tMockUIDValueConfig,\n} from \"../value\"\nimport { createFaker, type Faker } from \"./createFaker\"\nimport { valueForModel } from \"./valueForModel\"\n\nconst getValueConfigType = <Model extends prismic.CustomTypeModelField>(\n\tmodel: Model,\n): keyof ValueForModelMapConfigs => {\n\tswitch (model.type) {\n\t\tcase prismic.CustomTypeModelFieldType.Boolean:\n\t\t\treturn \"boolean\"\n\n\t\tcase prismic.CustomTypeModelFieldType.Color:\n\t\t\treturn \"color\"\n\n\t\tcase prismic.CustomTypeModelFieldType.Date:\n\t\t\treturn \"date\"\n\n\t\tcase prismic.CustomTypeModelFieldType.Embed:\n\t\t\treturn \"embed\"\n\n\t\tcase prismic.CustomTypeModelFieldType.GeoPoint:\n\t\t\treturn \"geoPoint\"\n\n\t\tcase prismic.CustomTypeModelFieldType.Group:\n\t\t\treturn \"group\"\n\n\t\tcase prismic.CustomTypeModelFieldType.Image:\n\t\t\treturn \"image\"\n\n\t\tcase prismic.CustomTypeModelFieldType.Link: {\n\t\t\tswitch (model.config?.select) {\n\t\t\t\tcase prismic.CustomTypeModelLinkSelectType.Document:\n\t\t\t\t\treturn \"contentRelationship\"\n\t\t\t\tcase prismic.CustomTypeModelLinkSelectType.Media:\n\t\t\t\t\treturn \"linkToMedia\"\n\t\t\t\tdefault:\n\t\t\t\t\treturn \"link\"\n\t\t\t}\n\t\t}\n\n\t\tcase prismic.CustomTypeModelFieldType.Number:\n\t\t\treturn \"number\"\n\n\t\tcase prismic.CustomTypeModelFieldType.Select:\n\t\t\treturn \"select\"\n\n\t\tcase prismic.CustomTypeModelFieldType.StructuredText: {\n\t\t\tif (\n\t\t\t\tmodel.config &&\n\t\t\t\t\"single\" in model.config &&\n\t\t\t\tmodel.config.single &&\n\t\t\t\tmodel.config.single.split(\",\").every((element) => /heading{1,6}/.test(element.trim()))\n\t\t\t) {\n\t\t\t\treturn \"title\"\n\t\t\t} else {\n\t\t\t\treturn \"richText\"\n\t\t\t}\n\t\t}\n\n\t\tcase prismic.CustomTypeModelFieldType.Text:\n\t\t\treturn \"keyText\"\n\n\t\tcase prismic.CustomTypeModelFieldType.Timestamp:\n\t\t\treturn \"timestamp\"\n\n\t\tcase prismic.CustomTypeModelFieldType.UID:\n\t\t\treturn \"uid\"\n\n\t\tcase prismic.CustomTypeModelFieldType.Integration:\n\t\t\treturn \"integration\"\n\n\t\tcase prismic.CustomTypeModelFieldType.Slices:\n\t\t\treturn \"sliceZone\"\n\n\t\tdefault: {\n\t\t\tthrow new Error(`The \"${model.type}\" field type is not supported in @prismicio/mock.`)\n\t\t}\n\t}\n}\n\nexport type ValueForModelMapConfigs = {\n\tboolean?: MockBooleanValueConfig\n\tcolor?: MockColorValueConfig\n\tcontentRelationship?: MockContentRelationshipValueConfig\n\tdate?: MockDateValueConfig\n\tembed?: MockEmbedValueConfig\n\tgeoPoint?: MockGeoPointValueConfig\n\tgroup?: MockGroupValueConfig\n\timage?: MockImageValueConfig\n\tintegration?: MockIntegrationFieldValueConfig\n\tkeyText?: MockKeyTextValueConfig\n\tlink?: MockLinkValueConfig\n\tlinkToMedia?: MockLinkToMediaValueConfig\n\tnumber?: MockNumberValueConfig\n\trichText?: MockRichTextValueConfig\n\tselect?: MockSelectValueConfig\n\tsliceZone?: MockSliceZoneValueConfig\n\ttimestamp?: MockTimestampValueConfig\n\ttitle?: MockTitleValueConfig\n\tuid?: MockUIDValueConfig\n}\n\ntype ValueForModelMapConfig<ModelMap extends Record<string, prismic.CustomTypeModelField>> = {\n\tmap: ModelMap\n\tconfigs?: ValueForModelMapConfigs\n} & (\n\t| {\n\t\t\tseed: Seed\n\t\t\tfaker?: never\n\t  }\n\t| {\n\t\t\tfaker: Faker\n\t\t\tseed?: never\n\t  }\n)\n\nexport const valueForModelMap = <ModelMap extends Record<string, prismic.CustomTypeModelField>>(\n\tconfig: ValueForModelMapConfig<ModelMap>,\n): ModelValueMap<ModelMap> => {\n\tconst faker = config.faker || createFaker(config.seed)\n\n\tconst result = {} as ModelValueMap<ModelMap>\n\n\tfor (const fieldId in config.map) {\n\t\tconst fieldModel = config.map[fieldId]\n\t\tconst fieldConfigType = getValueConfigType(fieldModel)\n\t\tconst fieldConfig = config.configs?.[fieldConfigType]\n\n\t\tresult[fieldId] = valueForModel({\n\t\t\tfaker,\n\t\t\tmodel: fieldModel as prismic.CustomTypeModelField,\n\t\t\tconfig: fieldConfig,\n\t\t}) as ModelValue<typeof fieldModel>\n\t}\n\n\treturn result\n}\n"],"mappings":";;;;;;AA2BA,MAAM,sBACL,UACmC;AACnC,SAAQ,MAAM,MAAd;EACC,KAAKA,kBAAQ,yBAAyB,QACrC,QAAO;EAER,KAAKA,kBAAQ,yBAAyB,MACrC,QAAO;EAER,KAAKA,kBAAQ,yBAAyB,KACrC,QAAO;EAER,KAAKA,kBAAQ,yBAAyB,MACrC,QAAO;EAER,KAAKA,kBAAQ,yBAAyB,SACrC,QAAO;EAER,KAAKA,kBAAQ,yBAAyB,MACrC,QAAO;EAER,KAAKA,kBAAQ,yBAAyB,MACrC,QAAO;EAER,KAAKA,kBAAQ,yBAAyB,KACrC,SAAQ,MAAM,QAAQ,QAAtB;GACC,KAAKA,kBAAQ,8BAA8B,SAC1C,QAAO;GACR,KAAKA,kBAAQ,8BAA8B,MAC1C,QAAO;GACR,QACC,QAAO;;EAIV,KAAKA,kBAAQ,yBAAyB,OACrC,QAAO;EAER,KAAKA,kBAAQ,yBAAyB,OACrC,QAAO;EAER,KAAKA,kBAAQ,yBAAyB,eACrC,KACC,MAAM,UACN,YAAY,MAAM,UAClB,MAAM,OAAO,UACb,MAAM,OAAO,OAAO,MAAM,IAAI,CAAC,OAAO,YAAY,eAAe,KAAK,QAAQ,MAAM,CAAC,CAAC,CAEtF,QAAO;MAEP,QAAO;EAIT,KAAKA,kBAAQ,yBAAyB,KACrC,QAAO;EAER,KAAKA,kBAAQ,yBAAyB,UACrC,QAAO;EAER,KAAKA,kBAAQ,yBAAyB,IACrC,QAAO;EAER,KAAKA,kBAAQ,yBAAyB,YACrC,QAAO;EAER,KAAKA,kBAAQ,yBAAyB,OACrC,QAAO;EAER,QACC,OAAM,IAAI,MAAM,QAAQ,MAAM,KAAK,mDAAmD;;;AAyCzF,MAAa,oBACZ,WAC6B;CAC7B,MAAM,QAAQ,OAAO,SAASC,oBAAAA,YAAY,OAAO,KAAK;CAEtD,MAAM,SAAS,EAAE;AAEjB,MAAK,MAAM,WAAW,OAAO,KAAK;EACjC,MAAM,aAAa,OAAO,IAAI;EAC9B,MAAM,kBAAkB,mBAAmB,WAAW;EACtD,MAAM,cAAc,OAAO,UAAU;AAErC,SAAO,WAAWC,sBAAAA,cAAc;GAC/B;GACA,OAAO;GACP,QAAQ;GACR,CAAC;;AAGH,QAAO"}