{ "version": 3, "sources": ["src/app/models/django-factory.ts", "src/app/models/django-model.ts", "src/app/features/contentful/helpers/assetHelpers.ts"], "sourcesContent": ["import { DjangoModel } from './django-model';\n\ninterface ConstructorInterface {\n new (input?: Partial): T;\n}\n\nexport class DjangoFactory {\n static toCamel(s) {\n return s.replace(/([-_][a-z])/gi, $1 => {\n return $1.toUpperCase().replace('-', '').replace('_', '');\n });\n }\n\n static toSnake(s) {\n return s.replace(/[0-9A-Z]/g, letter => `_${letter.toLowerCase()}`);\n }\n\n static deserialize(input: any, fields: string[]): Partial {\n const output = {};\n for (let field of fields) {\n output[field] = input[DjangoFactory.toSnake(field)];\n }\n return output;\n }\n\n static build(\n type: ConstructorInterface,\n data\n ): T {\n const instance = new type();\n instance.deserialize(data);\n return instance;\n }\n static buildMany(\n type: ConstructorInterface,\n data: any | any[]\n ): T[] {\n if (data && Array.isArray(data)) {\n return data.map(x => DjangoFactory.build(type, x));\n }\n }\n static buildDict(\n type: ConstructorInterface,\n data: any\n ): { [key: string]: T } {\n const returnObject = {};\n if (data) {\n for (let key of Object.keys(data)) {\n returnObject[key] = DjangoFactory.build(type, data[key]);\n }\n }\n return returnObject;\n }\n}\n", "import { DjangoFactory } from './django-factory';\n\nexport class DjangoModel {\n automaticDeserializeFields: string[] = [];\n\n deserialize(input: any) {\n if (input) {\n const deserialized = DjangoFactory.deserialize(\n input,\n this.automaticDeserializeFields\n );\n Object.assign(this, deserialized);\n }\n }\n}\n", "import { environment } from '@environment/environment';\nimport { ContentfulMetadata, Sys } from '@generated/graphql';\nimport { LazyImage } from '@models/lazy-image';\n\nexport interface LazyImageSizeOptions {\n quality: string;\n lqip: string;\n image: string;\n image2x: string;\n fit: string;\n fm: string; // Not set by default\n focus: string;\n}\n\nexport function fixAssetUrl(url: string) {\n return (url || '')\n .replace(\n 'https://images.ctfassets.net',\n 'https://images.followalice.com'\n )\n .replace(`/${environment.contentful.space}`, '');\n}\n\nexport function fakeAsset(url: string, altText: string) {\n return {\n url: url,\n description: altText,\n sys: { id: 'FAKE' } as Sys,\n contentfulMetadata: {} as ContentfulMetadata,\n };\n}\n\nexport function lazyImageFromUrl(\n url: string,\n altText?: string,\n options?: Partial\n) {\n const opts = Object.assign(\n {\n quality: 'q=85',\n lqip: 'w=32',\n image: 'w=600',\n image2x: 'w=800',\n fit: 'fit=fill',\n focus: 'f=center',\n },\n options\n );\n\n const { lqip, image, image2x, ...generalOpts } = opts;\n const generalQuery = Object.values(generalOpts);\n\n if (url) {\n url = fixAssetUrl(url);\n const lqipQuery = [lqip, ...generalQuery].join('&');\n const imageQuery = [image, ...generalQuery].join('&');\n const image2xQuery = [image2x, ...generalQuery].join('&');\n\n return new LazyImage({\n original: url,\n lqip: `${url}?${lqipQuery}`,\n image: `${url}?${imageQuery}`,\n image2x: `${url}?${image2xQuery}`,\n altText: altText || '',\n });\n } else {\n return new LazyImage();\n }\n}\n"], "mappings": "wCAMM,IAAOA,EAAP,MAAOA,CAAa,CACtB,OAAOC,QAAQC,EAAC,CACZ,OAAOA,EAAEC,QAAQ,gBAAiBC,GACvBA,EAAGC,YAAW,EAAGF,QAAQ,IAAK,EAAE,EAAEA,QAAQ,IAAK,EAAE,CAC3D,CACL,CAEA,OAAOG,QAAQJ,EAAC,CACZ,OAAOA,EAAEC,QAAQ,YAAaI,GAAU,IAAIA,EAAOC,YAAW,CAAE,EAAE,CACtE,CAEA,OAAOC,YAAeC,EAAYC,EAAgB,CAC9C,IAAMC,EAAS,CAAA,EACf,QAASC,KAASF,EACdC,EAAOC,CAAK,EAAIH,EAAMV,EAAcM,QAAQO,CAAK,CAAC,EAEtD,OAAOD,CACX,CAEA,OAAOE,MACHC,EACAC,EAAI,CAEJ,IAAMC,EAAW,IAAIF,EACrBE,OAAAA,EAASR,YAAYO,CAAI,EAClBC,CACX,CACA,OAAOC,UACHH,EACAC,EAAiB,CAEjB,GAAIA,GAAQG,MAAMC,QAAQJ,CAAI,EAC1B,OAAOA,EAAKK,IAAIC,GAAKtB,EAAcc,MAAMC,EAAMO,CAAC,CAAC,CAEzD,CACA,OAAOC,UACHR,EACAC,EAAS,CAET,IAAMQ,EAAe,CAAA,EACrB,GAAIR,EACA,QAASS,KAAOC,OAAOC,KAAKX,CAAI,EAC5BQ,EAAaC,CAAG,EAAIzB,EAAcc,MAAMC,EAAMC,EAAKS,CAAG,CAAC,EAG/D,OAAOD,CACX,GClDE,IAAOI,EAAP,KAAkB,CAAxBC,aAAA,CACI,KAAAC,2BAAuC,CAAA,CAW3C,CATIC,YAAYC,EAAU,CAClB,GAAIA,EAAO,CACP,IAAMC,EAAeC,EAAcH,YAC/BC,EACA,KAAKF,0BAA0B,EAEnCK,OAAOC,OAAO,KAAMH,CAAY,CACpC,CACJ,GCCE,SAAUI,EAAYC,EAAW,CACnC,OAAQA,GAAO,IACVC,QACG,+BACA,gCAAgC,EAEnCA,QAAQ,IAAIC,EAAYC,WAAWC,KAAK,GAAI,EAAE,CACvD,CAEM,SAAUC,EAAUL,EAAaM,EAAe,CAClD,MAAO,CACHN,IAAKA,EACLO,YAAaD,EACbE,IAAK,CAAEC,GAAI,MAAM,EACjBC,mBAAoB,CAAA,EAE5B", "names": ["DjangoFactory", "toCamel", "s", "replace", "$1", "toUpperCase", "toSnake", "letter", "toLowerCase", "deserialize", "input", "fields", "output", "field", "build", "type", "data", "instance", "buildMany", "Array", "isArray", "map", "x", "buildDict", "returnObject", "key", "Object", "keys", "DjangoModel", "constructor", "automaticDeserializeFields", "deserialize", "input", "deserialized", "DjangoFactory", "Object", "assign", "fixAssetUrl", "url", "replace", "environment", "contentful", "space", "fakeAsset", "altText", "description", "sys", "id", "contentfulMetadata"] }