{"version":3,"file":"contentRelationship.cjs","names":["createFaker","prismic","documentGen","generateCustomTypeId","generateTags","buildContentRelationshipField"],"sources":["../../src/value/contentRelationship.ts"],"sourcesContent":["import * as prismic from \"@prismicio/client\"\n\nimport { buildContentRelationshipField } from \"../lib/buildContentRelationshipField\"\nimport { createFaker } from \"../lib/createFaker\"\nimport { generateCustomTypeId } from \"../lib/generateCustomTypeId\"\nimport { generateTags } from \"../lib/generateTags\"\nimport * as modelGen from \"../model\"\nimport type { MockValueStateConfig, MockValueConfig, IterableElement } from \"../types\"\nimport { document as documentGen } from \"./document\"\n\nexport type MockContentRelationshipValueConfig<\n\tModel extends prismic.CustomTypeModelContentRelationshipField =\n\t\tprismic.CustomTypeModelContentRelationshipField,\n\tState extends prismic.FieldState = prismic.FieldState,\n> = {\n\t/** A list of potential documents to which the field can be linked. */\n\tlinkableDocuments?: prismic.PrismicDocument[]\n} & MockValueConfig<Model> &\n\tMockValueStateConfig<State>\n\nexport type MockContentRelationshipValue<\n\tModel extends prismic.CustomTypeModelContentRelationshipField =\n\t\tprismic.CustomTypeModelContentRelationshipField,\n\tState extends prismic.FieldState = prismic.FieldState,\n> = prismic.ContentRelationshipField<\n\tIterableElement<NonNullable<Model[\"config\"]>[\"customtypes\"]>,\n\tstring,\n\tnever,\n\tState\n>\n\nexport const contentRelationship = <\n\tModel extends prismic.CustomTypeModelContentRelationshipField =\n\t\tprismic.CustomTypeModelContentRelationshipField,\n\tState extends prismic.FieldState = \"filled\",\n>(\n\tconfig: MockContentRelationshipValueConfig<Model, State>,\n): MockContentRelationshipValue<Model, State> => {\n\tconst faker = config.faker || createFaker(config.seed)\n\n\tif (config.state === \"empty\") {\n\t\treturn {\n\t\t\tlink_type: prismic.LinkType.Document,\n\t\t} as MockContentRelationshipValue<Model, State>\n\t} else {\n\t\tconst model = config.model || modelGen.contentRelationship({ faker })\n\n\t\tconst linkableDocuments = config.linkableDocuments\n\t\t\t? config.linkableDocuments.filter((document) => {\n\t\t\t\t\tlet shouldKeep = true\n\n\t\t\t\t\tif (model.config?.customtypes) {\n\t\t\t\t\t\tshouldKeep = shouldKeep && model.config.customtypes.includes(document.type)\n\t\t\t\t\t}\n\n\t\t\t\t\tif (model.config?.tags) {\n\t\t\t\t\t\tshouldKeep = shouldKeep && model.config.tags.some((tag) => document.tags.includes(tag))\n\t\t\t\t\t}\n\n\t\t\t\t\treturn shouldKeep\n\t\t\t\t})\n\t\t\t: [\n\t\t\t\t\t{\n\t\t\t\t\t\t...documentGen({ faker }),\n\t\t\t\t\t\ttype: model.config?.customtypes\n\t\t\t\t\t\t\t? faker.randomElement(model.config.customtypes)\n\t\t\t\t\t\t\t: generateCustomTypeId({ faker }),\n\t\t\t\t\t\ttags: model.config?.tags\n\t\t\t\t\t\t\t? faker.randomElements(model.config.tags)\n\t\t\t\t\t\t\t: generateTags({ faker }),\n\t\t\t\t\t} as prismic.PrismicDocument,\n\t\t\t\t]\n\n\t\tconst document = faker.randomElement(linkableDocuments as prismic.PrismicDocument[])\n\n\t\tif (!document) {\n\t\t\tthrow new Error(\"A linkable document could not be found.\")\n\t\t}\n\n\t\treturn buildContentRelationshipField({\n\t\t\tdocument,\n\t\t}) as unknown as MockContentRelationshipValue<Model, State>\n\t}\n}\n"],"mappings":";;;;;;;;;;AA+BA,MAAa,uBAKZ,WACgD;CAChD,MAAM,QAAQ,OAAO,SAASA,oBAAAA,YAAY,OAAO,KAAK;AAEtD,KAAI,OAAO,UAAU,QACpB,QAAO,EACN,WAAWC,kBAAQ,SAAS,UAC5B;MACK;EACN,MAAM,QAAQ,OAAO,SAAA,4BAAA,oBAAsC,EAAE,OAAO,CAAC;EAErE,MAAM,oBAAoB,OAAO,oBAC9B,OAAO,kBAAkB,QAAQ,aAAa;GAC9C,IAAI,aAAa;AAEjB,OAAI,MAAM,QAAQ,YACjB,cAAa,cAAc,MAAM,OAAO,YAAY,SAAS,SAAS,KAAK;AAG5E,OAAI,MAAM,QAAQ,KACjB,cAAa,cAAc,MAAM,OAAO,KAAK,MAAM,QAAQ,SAAS,KAAK,SAAS,IAAI,CAAC;AAGxF,UAAO;IACN,GACD,CACA;GACC,GAAGC,mBAAAA,WAAY,EAAE,OAAO,CAAC;GACzB,MAAM,MAAM,QAAQ,cACjB,MAAM,cAAc,MAAM,OAAO,YAAY,GAC7CC,6BAAAA,qBAAqB,EAAE,OAAO,CAAC;GAClC,MAAM,MAAM,QAAQ,OACjB,MAAM,eAAe,MAAM,OAAO,KAAK,GACvCC,qBAAAA,aAAa,EAAE,OAAO,CAAC;GAC1B,CACD;EAEH,MAAM,WAAW,MAAM,cAAc,kBAA+C;AAEpF,MAAI,CAAC,SACJ,OAAM,IAAI,MAAM,0CAA0C;AAG3D,SAAOC,sCAAAA,8BAA8B,EACpC,UACA,CAAC"}