UNPKG

@prismicio/mock

Version:

Generate mock Prismic documents, fields, Slices, and models for development and testing environments

1 lines 2.94 kB
{"version":3,"file":"buildImageFieldImage.cjs","names":["createFaker","sentenceCase"],"sources":["../../src/lib/buildImageFieldImage.ts"],"sourcesContent":["import type * as prismic from \"@prismicio/client\"\n\nimport { sentenceCase } from \"../lib/changeCase\"\nimport { createFaker, type Faker } from \"../lib/createFaker\"\nimport type { MockValueStateConfig, MockImageData, Seed } from \"../types\"\n\ntype BuildImageFieldConfig<State extends prismic.FieldState = prismic.FieldState> = {\n\timageData: MockImageData\n\tconstraint?: NonNullable<prismic.CustomTypeModelImageField[\"config\"]>[\"constraint\"]\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\tPick<MockValueStateConfig<State>, \"state\">\n\nexport const buildImageFieldImage = <State extends prismic.FieldState = prismic.FieldState>(\n\tconfig: BuildImageFieldConfig<State>,\n): prismic.ImageFieldImage<State> => {\n\tif (config.state === \"empty\") {\n\t\treturn {\n\t\t\tid: null,\n\t\t\turl: null,\n\t\t\tdimensions: null,\n\t\t\talt: null,\n\t\t\tcopyright: null,\n\t\t} as prismic.ImageFieldImage<State>\n\t} else {\n\t\tconst faker = config.faker || createFaker(config.seed)\n\n\t\tconst url = new URL(config.imageData.url)\n\n\t\tconst dimensions = {\n\t\t\twidth: config.constraint?.width ?? config.imageData.width,\n\t\t\theight: config.constraint?.height ?? config.imageData.height,\n\t\t}\n\n\t\turl.searchParams.set(\"w\", dimensions.width.toString())\n\t\turl.searchParams.set(\"h\", dimensions.height.toString())\n\t\turl.searchParams.set(\"fit\", \"crop\")\n\n\t\treturn {\n\t\t\tid: faker.hash(11),\n\t\t\turl: url.toString(),\n\t\t\tdimensions,\n\t\t\talt: sentenceCase(faker.words(faker.range(5, 15))),\n\t\t\tcopyright: sentenceCase(faker.words(faker.range(5, 15))),\n\t\t\tedit: {\n\t\t\t\tx: faker.range(-dimensions.width / 2, dimensions.width / 2),\n\t\t\t\ty: faker.range(-dimensions.width / 2, dimensions.height / 2),\n\t\t\t\tzoom: faker.rangeFloat(1, 2),\n\t\t\t\tbackground: faker.hexColor(),\n\t\t\t},\n\t\t} as prismic.ImageFieldImage<State>\n\t}\n}\n"],"mappings":";;;AAqBA,MAAa,wBACZ,WACoC;AACpC,KAAI,OAAO,UAAU,QACpB,QAAO;EACN,IAAI;EACJ,KAAK;EACL,YAAY;EACZ,KAAK;EACL,WAAW;EACX;MACK;EACN,MAAM,QAAQ,OAAO,SAASA,oBAAAA,YAAY,OAAO,KAAK;EAEtD,MAAM,MAAM,IAAI,IAAI,OAAO,UAAU,IAAI;EAEzC,MAAM,aAAa;GAClB,OAAO,OAAO,YAAY,SAAS,OAAO,UAAU;GACpD,QAAQ,OAAO,YAAY,UAAU,OAAO,UAAU;GACtD;AAED,MAAI,aAAa,IAAI,KAAK,WAAW,MAAM,UAAU,CAAC;AACtD,MAAI,aAAa,IAAI,KAAK,WAAW,OAAO,UAAU,CAAC;AACvD,MAAI,aAAa,IAAI,OAAO,OAAO;AAEnC,SAAO;GACN,IAAI,MAAM,KAAK,GAAG;GAClB,KAAK,IAAI,UAAU;GACnB;GACA,KAAKC,mBAAAA,aAAa,MAAM,MAAM,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC;GAClD,WAAWA,mBAAAA,aAAa,MAAM,MAAM,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC;GACxD,MAAM;IACL,GAAG,MAAM,MAAM,CAAC,WAAW,QAAQ,GAAG,WAAW,QAAQ,EAAE;IAC3D,GAAG,MAAM,MAAM,CAAC,WAAW,QAAQ,GAAG,WAAW,SAAS,EAAE;IAC5D,MAAM,MAAM,WAAW,GAAG,EAAE;IAC5B,YAAY,MAAM,UAAU;IAC5B;GACD"}