{"version":3,"file":"2a506b5e7e50f470ccaa93d946cc18bdb212d5c9-eaa1d8e1f46da2ddfc3b.js","mappings":"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","sources":["webpack://acu-gatsby/./node_modules/camelcase/index.js","webpack://acu-gatsby/../src/image-utils.ts","webpack://acu-gatsby/../src/components/hooks.ts","webpack://acu-gatsby/../src/components/layout-wrapper.tsx","webpack://acu-gatsby/../src/components/picture.tsx","webpack://acu-gatsby/../src/components/placeholder.tsx","webpack://acu-gatsby/../src/components/main-image.tsx","webpack://acu-gatsby/../src/components/gatsby-image.server.tsx","webpack://acu-gatsby/../src/components/gatsby-image.browser.tsx","webpack://acu-gatsby/../src/components/static-image.server.tsx","webpack://acu-gatsby/../src/components/static-image.tsx","webpack://acu-gatsby/./src/services/images.js"],"sourcesContent":["'use strict';\n\nconst UPPERCASE = /[\\p{Lu}]/u;\nconst LOWERCASE = /[\\p{Ll}]/u;\nconst LEADING_CAPITAL = /^[\\p{Lu}](?![\\p{Lu}])/gu;\nconst IDENTIFIER = /([\\p{Alpha}\\p{N}_]|$)/u;\nconst SEPARATORS = /[_.\\- ]+/;\n\nconst LEADING_SEPARATORS = new RegExp('^' + SEPARATORS.source);\nconst SEPARATORS_AND_IDENTIFIER = new RegExp(SEPARATORS.source + IDENTIFIER.source, 'gu');\nconst NUMBERS_AND_IDENTIFIER = new RegExp('\\\\d+' + IDENTIFIER.source, 'gu');\n\nconst preserveCamelCase = (string, toLowerCase, toUpperCase) => {\n\tlet isLastCharLower = false;\n\tlet isLastCharUpper = false;\n\tlet isLastLastCharUpper = false;\n\n\tfor (let i = 0; i < string.length; i++) {\n\t\tconst character = string[i];\n\n\t\tif (isLastCharLower && UPPERCASE.test(character)) {\n\t\t\tstring = string.slice(0, i) + '-' + string.slice(i);\n\t\t\tisLastCharLower = false;\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = true;\n\t\t\ti++;\n\t\t} else if (isLastCharUpper && isLastLastCharUpper && LOWERCASE.test(character)) {\n\t\t\tstring = string.slice(0, i - 1) + '-' + string.slice(i - 1);\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = false;\n\t\t\tisLastCharLower = true;\n\t\t} else {\n\t\t\tisLastCharLower = toLowerCase(character) === character && toUpperCase(character) !== character;\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = toUpperCase(character) === character && toLowerCase(character) !== character;\n\t\t}\n\t}\n\n\treturn string;\n};\n\nconst preserveConsecutiveUppercase = (input, toLowerCase) => {\n\tLEADING_CAPITAL.lastIndex = 0;\n\n\treturn input.replace(LEADING_CAPITAL, m1 => toLowerCase(m1));\n};\n\nconst postProcess = (input, toUpperCase) => {\n\tSEPARATORS_AND_IDENTIFIER.lastIndex = 0;\n\tNUMBERS_AND_IDENTIFIER.lastIndex = 0;\n\n\treturn input.replace(SEPARATORS_AND_IDENTIFIER, (_, identifier) => toUpperCase(identifier))\n\t\t.replace(NUMBERS_AND_IDENTIFIER, m => toUpperCase(m));\n};\n\nconst camelCase = (input, options) => {\n\tif (!(typeof input === 'string' || Array.isArray(input))) {\n\t\tthrow new TypeError('Expected the input to be `string | string[]`');\n\t}\n\n\toptions = {\n\t\tpascalCase: false,\n\t\tpreserveConsecutiveUppercase: false,\n\t\t...options\n\t};\n\n\tif (Array.isArray(input)) {\n\t\tinput = input.map(x => x.trim())\n\t\t\t.filter(x => x.length)\n\t\t\t.join('-');\n\t} else {\n\t\tinput = input.trim();\n\t}\n\n\tif (input.length === 0) {\n\t\treturn '';\n\t}\n\n\tconst toLowerCase = options.locale === false ?\n\t\tstring => string.toLowerCase() :\n\t\tstring => string.toLocaleLowerCase(options.locale);\n\tconst toUpperCase = options.locale === false ?\n\t\tstring => string.toUpperCase() :\n\t\tstring => string.toLocaleUpperCase(options.locale);\n\n\tif (input.length === 1) {\n\t\treturn options.pascalCase ? toUpperCase(input) : toLowerCase(input);\n\t}\n\n\tconst hasUpperCase = input !== toLowerCase(input);\n\n\tif (hasUpperCase) {\n\t\tinput = preserveCamelCase(input, toLowerCase, toUpperCase);\n\t}\n\n\tinput = input.replace(LEADING_SEPARATORS, '');\n\n\tif (options.preserveConsecutiveUppercase) {\n\t\tinput = preserveConsecutiveUppercase(input, toLowerCase);\n\t} else {\n\t\tinput = toLowerCase(input);\n\t}\n\n\tif (options.pascalCase) {\n\t\tinput = toUpperCase(input.charAt(0)) + input.slice(1);\n\t}\n\n\treturn postProcess(input, toUpperCase);\n};\n\nmodule.exports = camelCase;\n// TODO: Remove this for the next major release\nmodule.exports.default = camelCase;\n","import camelCase from \"camelcase\"\nimport type { IGatsbyImageData } from \"./index\"\n\nconst DEFAULT_PIXEL_DENSITIES = [0.25, 0.5, 1, 2]\nexport const DEFAULT_BREAKPOINTS = [750, 1080, 1366, 1920]\nexport const EVERY_BREAKPOINT = [\n 320, 654, 768, 1024, 1366, 1600, 1920, 2048, 2560, 3440, 3840, 4096,\n]\nconst DEFAULT_FLUID_WIDTH = 800\nconst DEFAULT_FIXED_WIDTH = 800\nconst DEFAULT_ASPECT_RATIO = 4 / 3\n\nexport type Fit = \"cover\" | \"fill\" | \"inside\" | \"outside\" | \"contain\"\n\nexport type Layout = \"fixed\" | \"fullWidth\" | \"constrained\"\nexport type ImageFormat = \"jpg\" | \"png\" | \"webp\" | \"avif\" | \"auto\" | \"\"\n\n/**\n * The minimal required reporter, as we don't want to import it from gatsby-cli\n */\nexport interface IReporter {\n warn(message: string): void\n}\n\nexport interface ISharpGatsbyImageArgs {\n layout?: Layout\n formats?: Array\n placeholder?: \"tracedSVG\" | \"dominantColor\" | \"blurred\" | \"none\"\n tracedSVGOptions?: Record\n width?: number\n height?: number\n aspectRatio?: number\n sizes?: string\n quality?: number\n transformOptions?: {\n fit?: Fit\n cropFocus?: number | string\n duotone?: {\n highlight: string\n shadow: string\n opacity?: number\n }\n grayscale?: boolean\n rotate?: number\n trim?: number\n }\n jpgOptions?: Record\n pngOptions?: Record\n webpOptions?: Record\n avifOptions?: Record\n blurredOptions?: { width?: number; toFormat?: ImageFormat }\n breakpoints?: Array\n outputPixelDensities?: Array\n backgroundColor?: string\n}\n\nexport interface IImageSizeArgs {\n width?: number\n height?: number\n layout?: Layout\n filename: string\n outputPixelDensities?: Array\n breakpoints?: Array\n fit?: Fit\n reporter?: IReporter\n sourceMetadata: { width: number; height: number }\n}\n\nexport interface IImageSizes {\n sizes: Array\n presentationWidth: number\n presentationHeight: number\n aspectRatio: number\n unscaledWidth: number\n}\n\nexport interface IImage {\n src: string\n width: number\n height: number\n format: ImageFormat\n}\n\nexport interface IGatsbyImageHelperArgs {\n pluginName: string\n generateImageSource: (\n filename: string,\n width: number,\n height: number,\n format: ImageFormat,\n fit?: Fit,\n options?: Record\n ) => IImage\n layout?: Layout\n formats?: Array\n filename: string\n placeholderURL?: string\n width?: number\n height?: number\n sizes?: string\n reporter?: IReporter\n sourceMetadata?: { width: number; height: number; format: ImageFormat }\n fit?: Fit\n options?: Record\n breakpoints?: Array\n backgroundColor?: string\n aspectRatio?: number\n}\n\nconst warn = (message: string): void => console.warn(message)\n\nconst sortNumeric = (a: number, b: number): number => a - b\n\nexport const getSizes = (width: number, layout: Layout): string | undefined => {\n switch (layout) {\n // If screen is wider than the max size, image width is the max size,\n // otherwise it's the width of the screen\n case `constrained`:\n return `(min-width: ${width}px) ${width}px, 100vw`\n\n // Image is always the same width, whatever the size of the screen\n case `fixed`:\n return `${width}px`\n\n // Image is always the width of the screen\n case `fullWidth`:\n return `100vw`\n\n default:\n return undefined\n }\n}\n\nexport const getSrcSet = (images: Array): string =>\n images.map(image => `${image.src} ${image.width}w`).join(`,\\n`)\n\nexport function formatFromFilename(filename: string): ImageFormat | undefined {\n const dot = filename.lastIndexOf(`.`)\n if (dot !== -1) {\n const ext = filename.slice(dot + 1)\n if (ext === `jpeg`) {\n return `jpg`\n }\n if (ext.length === 3 || ext.length === 4) {\n return ext as ImageFormat\n }\n }\n return undefined\n}\n\nexport function setDefaultDimensions(\n args: IGatsbyImageHelperArgs\n): IGatsbyImageHelperArgs {\n let {\n layout = `constrained`,\n width,\n height,\n sourceMetadata,\n breakpoints,\n aspectRatio,\n formats = [`auto`, `webp`],\n } = args\n formats = formats.map(format => format.toLowerCase() as ImageFormat)\n layout = camelCase(layout) as Layout\n\n if (width && height) {\n return { ...args, formats, layout, aspectRatio: width / height }\n }\n if (sourceMetadata.width && sourceMetadata.height && !aspectRatio) {\n aspectRatio = sourceMetadata.width / sourceMetadata.height\n }\n\n if (layout === `fullWidth`) {\n width = width || sourceMetadata.width || breakpoints[breakpoints.length - 1]\n height = height || Math.round(width / (aspectRatio || DEFAULT_ASPECT_RATIO))\n } else {\n if (!width) {\n if (height && aspectRatio) {\n width = height * aspectRatio\n } else if (sourceMetadata.width) {\n width = sourceMetadata.width\n } else if (height) {\n width = Math.round(height / DEFAULT_ASPECT_RATIO)\n } else {\n width = DEFAULT_FIXED_WIDTH\n }\n }\n\n if (aspectRatio && !height) {\n height = Math.round(width / aspectRatio)\n } else if (!aspectRatio) {\n aspectRatio = width / height\n }\n }\n return { ...args, width, height, aspectRatio, layout, formats }\n}\n\n/**\n * Use this for getting an image for the blurred placeholder. This ensures the\n * aspect ratio and crop match the main image\n */\nexport function getLowResolutionImageURL(\n args: IGatsbyImageHelperArgs,\n width = 20\n): string {\n args = setDefaultDimensions(args)\n const { generateImageSource, filename, aspectRatio } = args\n return generateImageSource(\n filename,\n width,\n Math.round(width / aspectRatio),\n args.sourceMetadata.format || `jpg`,\n args.fit,\n args.options\n )?.src\n}\n\nexport function generateImageData(\n args: IGatsbyImageHelperArgs\n): IGatsbyImageData {\n args = setDefaultDimensions(args)\n\n let {\n pluginName,\n sourceMetadata,\n generateImageSource,\n layout,\n fit,\n options,\n width,\n height,\n filename,\n reporter = { warn },\n backgroundColor,\n placeholderURL,\n } = args\n\n if (!pluginName) {\n reporter.warn(\n `[gatsby-plugin-image] \"generateImageData\" was not passed a plugin name`\n )\n }\n\n if (typeof generateImageSource !== `function`) {\n throw new Error(`generateImageSource must be a function`)\n }\n\n if (!sourceMetadata || (!sourceMetadata.width && !sourceMetadata.height)) {\n // No metadata means we let the CDN handle max size etc, aspect ratio etc\n sourceMetadata = {\n width,\n height,\n format: sourceMetadata?.format || formatFromFilename(filename) || `auto`,\n }\n } else if (!sourceMetadata.format) {\n sourceMetadata.format = formatFromFilename(filename)\n }\n\n const formats = new Set(args.formats)\n\n if (formats.size === 0 || formats.has(`auto`) || formats.has(``)) {\n formats.delete(`auto`)\n formats.delete(``)\n formats.add(sourceMetadata.format)\n }\n\n if (formats.has(`jpg`) && formats.has(`png`)) {\n reporter.warn(\n `[${pluginName}] Specifying both 'jpg' and 'png' formats is not supported. Using 'auto' instead`\n )\n if (sourceMetadata.format === `jpg`) {\n formats.delete(`png`)\n } else {\n formats.delete(`jpg`)\n }\n }\n\n const imageSizes = calculateImageSizes({ ...args, sourceMetadata })\n\n const result: IGatsbyImageData[\"images\"] = {\n sources: [],\n }\n\n let sizes = args.sizes\n if (!sizes) {\n sizes = getSizes(imageSizes.presentationWidth, layout)\n }\n\n formats.forEach(format => {\n const images = imageSizes.sizes\n .map(size => {\n const imageSrc = generateImageSource(\n filename,\n size,\n Math.round(size / imageSizes.aspectRatio),\n format,\n fit,\n options\n )\n if (\n !imageSrc?.width ||\n !imageSrc.height ||\n !imageSrc.src ||\n !imageSrc.format\n ) {\n reporter.warn(\n `[${pluginName}] The resolver for image ${filename} returned an invalid value.`\n )\n return undefined\n }\n return imageSrc\n })\n .filter(Boolean)\n\n if (format === `jpg` || format === `png` || format === `auto`) {\n const unscaled =\n images.find(img => img.width === imageSizes.unscaledWidth) || images[0]\n\n if (unscaled) {\n result.fallback = {\n src: unscaled.src,\n srcSet: getSrcSet(images),\n sizes,\n }\n }\n } else {\n result.sources?.push({\n srcSet: getSrcSet(images),\n sizes,\n type: `image/${format}`,\n })\n }\n })\n\n const imageProps: Partial = {\n images: result,\n layout,\n backgroundColor,\n }\n\n if (placeholderURL) {\n imageProps.placeholder = { fallback: placeholderURL }\n }\n\n switch (layout) {\n case `fixed`:\n imageProps.width = imageSizes.presentationWidth\n imageProps.height = imageSizes.presentationHeight\n break\n\n case `fullWidth`:\n imageProps.width = 1\n imageProps.height = 1 / imageSizes.aspectRatio\n break\n\n case `constrained`:\n imageProps.width = args.width || imageSizes.presentationWidth || 1\n imageProps.height = (imageProps.width || 1) / imageSizes.aspectRatio\n }\n\n return imageProps as IGatsbyImageData\n}\n\nconst dedupeAndSortDensities = (values: Array): Array =>\n Array.from(new Set([1, ...values])).sort(sortNumeric)\n\nexport function calculateImageSizes(args: IImageSizeArgs): IImageSizes {\n const {\n width,\n height,\n filename,\n layout = `constrained`,\n sourceMetadata: imgDimensions,\n reporter = { warn },\n breakpoints = DEFAULT_BREAKPOINTS,\n } = args\n\n // check that all dimensions provided are positive\n const userDimensions = { width, height }\n const erroneousUserDimensions = Object.entries(userDimensions).filter(\n ([_, size]) => typeof size === `number` && size < 1\n )\n if (erroneousUserDimensions.length) {\n throw new Error(\n `Specified dimensions for images must be positive numbers (> 0). Problem dimensions you have are ${erroneousUserDimensions\n .map(dim => dim.join(`: `))\n .join(`, `)}`\n )\n }\n\n if (layout === `fixed`) {\n return fixedImageSizes(args)\n } else if (layout === `constrained`) {\n return responsiveImageSizes(args)\n } else if (layout === `fullWidth`) {\n return responsiveImageSizes({ breakpoints, ...args })\n } else {\n reporter.warn(\n `No valid layout was provided for the image at ${filename}. Valid image layouts are fixed, fullWidth, and constrained. Found ${layout}`\n )\n return {\n sizes: [imgDimensions.width],\n presentationWidth: imgDimensions.width,\n presentationHeight: imgDimensions.height,\n aspectRatio: imgDimensions.width / imgDimensions.height,\n unscaledWidth: imgDimensions.width,\n }\n }\n}\nexport function fixedImageSizes({\n filename,\n sourceMetadata: imgDimensions,\n width,\n height,\n fit = `cover`,\n outputPixelDensities = DEFAULT_PIXEL_DENSITIES,\n reporter = { warn },\n}: IImageSizeArgs): IImageSizes {\n let aspectRatio = imgDimensions.width / imgDimensions.height\n // Sort, dedupe and ensure there's a 1\n const densities = dedupeAndSortDensities(outputPixelDensities)\n\n // If both are provided then we need to check the fit\n if (width && height) {\n const calculated = getDimensionsAndAspectRatio(imgDimensions, {\n width,\n height,\n fit,\n })\n width = calculated.width\n height = calculated.height\n aspectRatio = calculated.aspectRatio\n }\n\n if (!width) {\n if (!height) {\n width = DEFAULT_FIXED_WIDTH\n } else {\n width = Math.round(height * aspectRatio)\n }\n } else if (!height) {\n height = Math.round(width / aspectRatio)\n }\n\n const originalWidth = width // will use this for presentationWidth, don't want to lose it\n const isTopSizeOverriden =\n imgDimensions.width < width || imgDimensions.height < (height as number)\n\n // If the image is smaller than requested, warn the user that it's being processed as such\n // print out this message with the necessary information before we overwrite it for sizing\n if (isTopSizeOverriden) {\n const fixedDimension = imgDimensions.width < width ? `width` : `height`\n reporter.warn(`\nThe requested ${fixedDimension} \"${\n fixedDimension === `width` ? width : height\n }px\" for the image ${filename} was larger than the actual image ${fixedDimension} of ${\n imgDimensions[fixedDimension]\n }px. If possible, replace the current image with a larger one.`)\n\n if (fixedDimension === `width`) {\n width = imgDimensions.width\n height = Math.round(width / aspectRatio)\n } else {\n height = imgDimensions.height\n width = height * aspectRatio\n }\n }\n\n const sizes = densities\n .filter(size => size >= 1) // remove smaller densities because fixed images don't need them\n .map(density => Math.round(density * (width as number)))\n .filter(size => size <= imgDimensions.width)\n\n return {\n sizes,\n aspectRatio,\n presentationWidth: originalWidth,\n presentationHeight: Math.round(originalWidth / aspectRatio),\n unscaledWidth: width,\n }\n}\n\nexport function responsiveImageSizes({\n sourceMetadata: imgDimensions,\n width,\n height,\n fit = `cover`,\n outputPixelDensities = DEFAULT_PIXEL_DENSITIES,\n breakpoints,\n layout,\n}: IImageSizeArgs): IImageSizes {\n let sizes\n let aspectRatio = imgDimensions.width / imgDimensions.height\n // Sort, dedupe and ensure there's a 1\n const densities = dedupeAndSortDensities(outputPixelDensities)\n\n // If both are provided then we need to check the fit\n if (width && height) {\n const calculated = getDimensionsAndAspectRatio(imgDimensions, {\n width,\n height,\n fit,\n })\n width = calculated.width\n height = calculated.height\n aspectRatio = calculated.aspectRatio\n }\n\n // Case 1: width of height were passed in, make sure it isn't larger than the actual image\n width = width && Math.min(width, imgDimensions.width)\n height = height && Math.min(height, imgDimensions.height)\n\n // Case 2: neither width or height were passed in, use default size\n if (!width && !height) {\n width = Math.min(DEFAULT_FLUID_WIDTH, imgDimensions.width)\n height = width / aspectRatio\n }\n\n // if it still hasn't been found, calculate width from the derived height.\n // TS isn't smart enough to realise the type for height has been narrowed here\n if (!width) {\n width = (height as number) * aspectRatio\n }\n\n const originalWidth = width\n const isTopSizeOverriden =\n imgDimensions.width < width || imgDimensions.height < (height as number)\n if (isTopSizeOverriden) {\n width = imgDimensions.width\n height = imgDimensions.height\n }\n\n width = Math.round(width)\n\n if (breakpoints?.length > 0) {\n sizes = breakpoints.filter(size => size <= imgDimensions.width)\n\n // If a larger breakpoint has been filtered-out, add the actual image width instead\n if (\n sizes.length < breakpoints.length &&\n !sizes.includes(imgDimensions.width)\n ) {\n sizes.push(imgDimensions.width)\n }\n } else {\n sizes = densities.map(density => Math.round(density * (width as number)))\n sizes = sizes.filter(size => size <= imgDimensions.width)\n }\n\n // ensure that the size passed in is included in the final output\n if (layout === `constrained` && !sizes.includes(width)) {\n sizes.push(width)\n }\n sizes = sizes.sort(sortNumeric)\n return {\n sizes,\n aspectRatio,\n presentationWidth: originalWidth,\n presentationHeight: Math.round(originalWidth / aspectRatio),\n unscaledWidth: width,\n }\n}\n\nexport function getDimensionsAndAspectRatio(\n dimensions,\n options\n): { width: number; height: number; aspectRatio: number } {\n // Calculate the eventual width/height of the image.\n const imageAspectRatio = dimensions.width / dimensions.height\n\n let width = options.width\n let height = options.height\n\n switch (options.fit) {\n case `fill`: {\n width = options.width ? options.width : dimensions.width\n height = options.height ? options.height : dimensions.height\n break\n }\n case `inside`: {\n const widthOption = options.width\n ? options.width\n : Number.MAX_SAFE_INTEGER\n const heightOption = options.height\n ? options.height\n : Number.MAX_SAFE_INTEGER\n\n width = Math.min(widthOption, Math.round(heightOption * imageAspectRatio))\n height = Math.min(\n heightOption,\n Math.round(widthOption / imageAspectRatio)\n )\n break\n }\n case `outside`: {\n const widthOption = options.width ? options.width : 0\n const heightOption = options.height ? options.height : 0\n\n width = Math.max(widthOption, Math.round(heightOption * imageAspectRatio))\n height = Math.max(\n heightOption,\n Math.round(widthOption / imageAspectRatio)\n )\n break\n }\n\n default: {\n if (options.width && !options.height) {\n width = options.width\n height = Math.round(options.width / imageAspectRatio)\n }\n\n if (options.height && !options.width) {\n width = Math.round(options.height * imageAspectRatio)\n height = options.height\n }\n }\n }\n\n return {\n width,\n height,\n aspectRatio: width / height,\n }\n}\n","/* global GATSBY___IMAGE */\nimport { generateImageData, EVERY_BREAKPOINT } from \"../image-utils\"\nimport type { CSSProperties, HTMLAttributes, ImgHTMLAttributes } from \"react\"\nimport type { Node } from \"gatsby\"\nimport type { PlaceholderProps } from \"./placeholder\"\nimport type { MainImageProps } from \"./main-image\"\nimport type { IGatsbyImageData } from \"./gatsby-image.browser\"\nimport type {\n IGatsbyImageHelperArgs,\n Layout,\n IImage,\n ImageFormat,\n} from \"../image-utils\"\n\n// Native lazy-loading support: https://addyosmani.com/blog/lazy-loading/\nexport const hasNativeLazyLoadSupport = (): boolean =>\n typeof HTMLImageElement !== `undefined` &&\n `loading` in HTMLImageElement.prototype\n\nexport function gatsbyImageIsInstalled(): boolean {\n return typeof GATSBY___IMAGE !== `undefined` && GATSBY___IMAGE\n}\n\nexport type IGatsbyImageDataParent = T & {\n gatsbyImageData: IGatsbyImageData\n}\nexport type IGatsbyImageParent = T & {\n gatsbyImage: IGatsbyImageData\n}\nexport type FileNode = Partial & {\n childImageSharp?: IGatsbyImageDataParent>\n}\n\nconst isGatsbyImageData = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n node: IGatsbyImageData | any\n): node is IGatsbyImageData =>\n // 🦆 check for a deep prop to be sure this is a valid gatsbyImageData object\n Boolean(node?.images?.fallback?.src)\n\nconst isGatsbyImageDataParent = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n node: IGatsbyImageDataParent | any\n): node is IGatsbyImageDataParent => Boolean(node?.gatsbyImageData)\n\nconst isGatsbyImageParent = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n node: IGatsbyImageParent | any\n): node is IGatsbyImageParent => Boolean(node?.gatsbyImage)\n\nexport type ImageDataLike =\n | FileNode\n | IGatsbyImageDataParent\n | IGatsbyImageParent\n | IGatsbyImageData\n\nexport const getImage = (\n node: ImageDataLike | null\n): IGatsbyImageData | undefined => {\n // This checks both for gatsbyImageData and gatsbyImage\n if (isGatsbyImageData(node)) {\n return node\n }\n // gatsbyImageData GraphQL field\n if (isGatsbyImageDataParent(node)) {\n return node.gatsbyImageData\n }\n // gatsbyImage GraphQL field for Gatsby's Image CDN service\n if (isGatsbyImageParent(node)) {\n return node.gatsbyImage\n }\n return node?.childImageSharp?.gatsbyImageData\n}\n\nexport const getSrc = (node: ImageDataLike): string | undefined =>\n getImage(node)?.images?.fallback?.src\n\nexport const getSrcSet = (node: ImageDataLike): string | undefined =>\n getImage(node)?.images?.fallback?.srcSet\n\nexport function getWrapperProps(\n width: number,\n height: number,\n layout: Layout\n): Pick, \"className\" | \"style\"> & {\n \"data-gatsby-image-wrapper\": string\n} {\n const wrapperStyle: CSSProperties = {}\n\n let className = `gatsby-image-wrapper`\n\n // If the plugin isn't installed we need to apply the styles inline\n if (!gatsbyImageIsInstalled()) {\n wrapperStyle.position = `relative`\n wrapperStyle.overflow = `hidden`\n }\n\n if (layout === `fixed`) {\n wrapperStyle.width = width\n wrapperStyle.height = height\n } else if (layout === `constrained`) {\n if (!gatsbyImageIsInstalled()) {\n wrapperStyle.display = `inline-block`\n wrapperStyle.verticalAlign = `top`\n }\n className = `gatsby-image-wrapper gatsby-image-wrapper-constrained`\n }\n\n return {\n className,\n \"data-gatsby-image-wrapper\": ``,\n style: wrapperStyle,\n }\n}\n\nexport interface IUrlBuilderArgs {\n width: number\n height: number\n baseUrl: string\n format: ImageFormat\n options: OptionsType\n}\nexport interface IGetImageDataArgs> {\n baseUrl: string\n /**\n * For constrained and fixed images, the size of the image element\n */\n width?: number\n height?: number\n /**\n * If available, pass the source image width and height\n */\n sourceWidth?: number\n sourceHeight?: number\n /**\n * If only one dimension is passed, then this will be used to calculate the other.\n */\n aspectRatio?: number\n layout?: Layout\n /**\n * Returns a URL based on the passed arguments. Should be a pure function\n */\n urlBuilder: (args: IUrlBuilderArgs) => string\n\n /**\n * Should be a data URI\n */\n placeholderURL?: string\n backgroundColor?: string\n /**\n * Used in error messages etc\n */\n pluginName?: string\n\n /**\n * If you do not support auto-format, pass an array of image types here\n */\n formats?: Array\n\n breakpoints?: Array\n\n /**\n * Passed to the urlBuilder function\n */\n options?: OptionsType\n}\n\n/**\n * Use this hook to generate gatsby-plugin-image data in the browser.\n */\nexport function getImageData({\n baseUrl,\n urlBuilder,\n sourceWidth,\n sourceHeight,\n pluginName = `getImageData`,\n formats = [`auto`],\n breakpoints,\n options,\n ...props\n}: IGetImageDataArgs): IGatsbyImageData {\n if (\n !breakpoints?.length &&\n (props.layout === `fullWidth` || (props.layout as string) === `FULL_WIDTH`)\n ) {\n breakpoints = EVERY_BREAKPOINT\n }\n const generateImageSource = (\n baseUrl: string,\n width: number,\n height?: number,\n format?: ImageFormat\n ): IImage => {\n return {\n width,\n height,\n format,\n src: urlBuilder({ baseUrl, width, height, options, format }),\n }\n }\n\n const sourceMetadata: IGatsbyImageHelperArgs[\"sourceMetadata\"] = {\n width: sourceWidth,\n height: sourceHeight,\n format: `auto`,\n }\n\n const args: IGatsbyImageHelperArgs = {\n ...props,\n pluginName,\n generateImageSource,\n filename: baseUrl,\n formats,\n breakpoints,\n sourceMetadata,\n }\n return generateImageData(args)\n}\n\nexport function getMainProps(\n isLoading: boolean,\n isLoaded: boolean,\n images: IGatsbyImageData[\"images\"],\n loading?: \"eager\" | \"lazy\",\n style: CSSProperties = {}\n): Partial {\n // fallback when it's not configured in gatsby-config.\n if (!gatsbyImageIsInstalled()) {\n style = {\n height: `100%`,\n left: 0,\n position: `absolute`,\n top: 0,\n transform: `translateZ(0)`,\n transition: `opacity 250ms linear`,\n width: `100%`,\n willChange: `opacity`,\n ...style,\n }\n }\n\n const result = {\n ...images,\n loading,\n shouldLoad: isLoading,\n \"data-main-image\": ``,\n style: {\n ...style,\n opacity: isLoaded ? 1 : 0,\n },\n }\n\n return result\n}\n\nexport type PlaceholderImageAttrs = ImgHTMLAttributes &\n Pick & {\n \"data-placeholder-image\"?: string\n }\n\nexport function getPlaceholderProps(\n placeholder: PlaceholderImageAttrs | undefined,\n isLoaded: boolean,\n layout: Layout,\n width?: number,\n height?: number,\n backgroundColor?: string,\n objectFit?: CSSProperties[\"objectFit\"],\n objectPosition?: CSSProperties[\"objectPosition\"]\n): PlaceholderImageAttrs {\n const wrapperStyle: CSSProperties = {}\n\n if (backgroundColor) {\n wrapperStyle.backgroundColor = backgroundColor\n\n if (layout === `fixed`) {\n wrapperStyle.width = width\n wrapperStyle.height = height\n wrapperStyle.backgroundColor = backgroundColor\n wrapperStyle.position = `relative`\n } else if (layout === `constrained`) {\n wrapperStyle.position = `absolute`\n wrapperStyle.top = 0\n wrapperStyle.left = 0\n wrapperStyle.bottom = 0\n wrapperStyle.right = 0\n } else if (layout === `fullWidth`) {\n wrapperStyle.position = `absolute`\n wrapperStyle.top = 0\n wrapperStyle.left = 0\n wrapperStyle.bottom = 0\n wrapperStyle.right = 0\n }\n }\n\n if (objectFit) {\n wrapperStyle.objectFit = objectFit\n }\n\n if (objectPosition) {\n wrapperStyle.objectPosition = objectPosition\n }\n const result: PlaceholderImageAttrs = {\n ...placeholder,\n \"aria-hidden\": true,\n \"data-placeholder-image\": ``,\n style: {\n opacity: isLoaded ? 0 : 1,\n transition: `opacity 500ms linear`,\n ...wrapperStyle,\n },\n }\n\n // fallback when it's not configured in gatsby-config.\n if (!gatsbyImageIsInstalled()) {\n result.style = {\n height: `100%`,\n left: 0,\n position: `absolute`,\n top: 0,\n width: `100%`,\n }\n }\n\n return result\n}\n\nexport interface IArtDirectedImage {\n media: string\n image: IGatsbyImageData\n}\n\n/**\n * Generate a Gatsby image data object with multiple, art-directed images that display at different\n * resolutions.\n *\n * @param defaultImage The image displayed when no media query matches.\n * It is also used for all other settings applied to the image, such as width, height and layout.\n * You should pass a className to the component with media queries to adjust the size of the container,\n * as this cannot be adjusted automatically.\n * @param artDirected Array of objects which each contains a `media` string which is a media query\n * such as `(min-width: 320px)`, and the image object to use when that query matches.\n */\nexport function withArtDirection(\n defaultImage: IGatsbyImageData,\n artDirected: Array\n): IGatsbyImageData {\n const { images, placeholder, ...props } = defaultImage\n const output: IGatsbyImageData = {\n ...props,\n images: {\n ...images,\n sources: [],\n },\n placeholder: placeholder && {\n ...placeholder,\n sources: [],\n },\n }\n\n artDirected.forEach(({ media, image }) => {\n if (!media) {\n if (process.env.NODE_ENV === `development`) {\n console.warn(\n \"[gatsby-plugin-image] All art-directed images passed to must have a value set for `media`. Skipping.\"\n )\n }\n return\n }\n\n if (\n image.layout !== defaultImage.layout &&\n process.env.NODE_ENV === `development`\n ) {\n console.warn(\n `[gatsby-plugin-image] Mismatched image layout: expected \"${defaultImage.layout}\" but received \"${image.layout}\". All art-directed images use the same layout as the default image`\n )\n }\n\n output.images.sources.push(\n ...image.images.sources.map(source => {\n return { ...source, media }\n }),\n {\n media,\n srcSet: image.images.fallback.srcSet,\n }\n )\n\n if (!output.placeholder) {\n return\n }\n\n output.placeholder.sources.push({\n media,\n srcSet: image.placeholder.fallback,\n })\n })\n output.images.sources.push(...images.sources)\n if (placeholder?.sources) {\n output.placeholder?.sources.push(...placeholder.sources)\n }\n return output\n}\n","import React, { Fragment, FunctionComponent, PropsWithChildren } from \"react\"\nimport terserMacro from \"../../macros/terser.macro\"\nimport { Layout } from \"../image-utils\"\n\nexport interface ILayoutWrapperProps {\n layout: Layout\n width: number\n height: number\n}\n\nconst NativeScriptLoading: FunctionComponent = () => (\n \n)\n\nexport function getSizer(\n layout: Layout,\n width: number,\n height: number\n): string {\n let sizer = ``\n if (layout === `fullWidth`) {\n sizer = `
`\n }\n\n if (layout === `constrained`) {\n sizer = `
\"\"
`\n }\n\n return sizer\n}\n\nconst Sizer: FunctionComponent = function Sizer({\n layout,\n width,\n height,\n}) {\n if (layout === `fullWidth`) {\n return (\n
\n )\n }\n\n if (layout === `constrained`) {\n return (\n
\n \n
\n )\n }\n\n return null\n}\n\nexport const LayoutWrapper: FunctionComponent<\n PropsWithChildren\n> = function LayoutWrapper({ children, ...props }) {\n return (\n \n \n {children}\n\n {SERVER ? : null}\n \n )\n}\n","import React, { FunctionComponent, ImgHTMLAttributes } from \"react\"\nimport * as PropTypes from \"prop-types\"\n\nexport interface IResponsiveImageProps {\n sizes?: string\n srcSet: string\n}\n\nexport type SourceProps = IResponsiveImageProps &\n (\n | {\n media: string\n type?: string\n }\n | {\n media?: string\n type: string\n }\n )\n\ntype FallbackProps = { src: string } & Partial\n\ntype ImageProps = ImgHTMLAttributes & {\n src: string\n alt: string\n shouldLoad: boolean\n}\n\nexport type PictureProps = ImgHTMLAttributes & {\n fallback?: FallbackProps\n sources?: Array\n alt: string\n shouldLoad?: boolean\n}\n\nconst Image: FunctionComponent = function Image({\n src,\n srcSet,\n loading,\n alt = ``,\n shouldLoad,\n ...props\n}) {\n return (\n \n )\n}\n\nexport const Picture: React.FC = function Picture({\n fallback,\n sources = [],\n shouldLoad = true,\n ...props\n}) {\n const sizes = props.sizes || fallback?.sizes\n const fallbackImage = (\n \n )\n\n if (!sources.length) {\n return fallbackImage\n }\n\n return (\n \n {sources.map(({ media, srcSet, type }) => (\n \n ))}\n {fallbackImage}\n \n )\n}\n\nImage.propTypes = {\n src: PropTypes.string.isRequired,\n alt: PropTypes.string.isRequired,\n sizes: PropTypes.string,\n srcSet: PropTypes.string,\n shouldLoad: PropTypes.bool,\n}\n\nPicture.displayName = `Picture`\nPicture.propTypes = {\n alt: PropTypes.string.isRequired,\n shouldLoad: PropTypes.bool,\n fallback: PropTypes.exact({\n src: PropTypes.string.isRequired,\n srcSet: PropTypes.string,\n sizes: PropTypes.string,\n }),\n sources: PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.exact({\n media: PropTypes.string.isRequired,\n type: PropTypes.string,\n sizes: PropTypes.string,\n srcSet: PropTypes.string.isRequired,\n }),\n PropTypes.exact({\n media: PropTypes.string,\n type: PropTypes.string.isRequired,\n sizes: PropTypes.string,\n srcSet: PropTypes.string.isRequired,\n }),\n ])\n ),\n}\n","import React, { FunctionComponent, ImgHTMLAttributes } from \"react\"\nimport * as PropTypes from \"prop-types\"\nimport { Picture, SourceProps } from \"./picture\"\n\nexport type PlaceholderProps = ImgHTMLAttributes & {\n fallback?: string\n sources?: Array\n}\n\nexport const Placeholder: FunctionComponent =\n function Placeholder({ fallback, ...props }) {\n if (fallback) {\n return (\n \n )\n } else {\n return
\n }\n }\n\nPlaceholder.displayName = `Placeholder`\nPlaceholder.propTypes = {\n fallback: PropTypes.string,\n sources: Picture.propTypes?.sources,\n alt: function (props, propName, componentName): Error | null {\n if (!props[propName]) {\n return null\n }\n\n return new Error(\n `Invalid prop \\`${propName}\\` supplied to \\`${componentName}\\`. Validation failed.`\n )\n },\n}\n","import React from \"react\"\nimport { Picture, PictureProps } from \"./picture\"\n\nexport type MainImageProps = PictureProps\n\nexport const MainImage: React.FC = function MainImage(props) {\n return (\n <>\n \n \n \n )\n}\n\nMainImage.displayName = `MainImage`\nMainImage.propTypes = Picture.propTypes\n","import React from \"react\"\nimport { getWrapperProps, getMainProps, getPlaceholderProps } from \"./hooks\"\nimport { Placeholder } from \"./placeholder\"\nimport { MainImage, MainImageProps } from \"./main-image\"\nimport { LayoutWrapper } from \"./layout-wrapper\"\nimport PropTypes from \"prop-types\"\nimport type { FunctionComponent, WeakValidationMap } from \"react\"\nimport type { GatsbyImageProps, IGatsbyImageData } from \"./gatsby-image.browser\"\n\nconst removeNewLines = (str: string): string => str.replace(/\\n/g, ``)\n\nexport const GatsbyImage: FunctionComponent =\n function GatsbyImage({\n as = `div`,\n className,\n class: preactClass,\n style,\n image,\n loading = `lazy`,\n imgClassName,\n imgStyle,\n backgroundColor,\n objectFit,\n objectPosition,\n ...props\n }) {\n if (!image) {\n console.warn(`[gatsby-plugin-image] Missing image prop`)\n return null\n }\n\n if (preactClass) {\n className = preactClass\n }\n\n imgStyle = {\n objectFit,\n objectPosition,\n backgroundColor,\n ...imgStyle,\n }\n\n const {\n width,\n height,\n layout,\n images,\n placeholder,\n backgroundColor: placeholderBackgroundColor,\n } = image\n\n const {\n style: wStyle,\n className: wClass,\n ...wrapperProps\n } = getWrapperProps(width, height, layout)\n\n const cleanedImages: IGatsbyImageData[\"images\"] = {\n fallback: undefined,\n sources: [],\n }\n if (images.fallback) {\n cleanedImages.fallback = {\n ...images.fallback,\n srcSet: images.fallback.srcSet\n ? removeNewLines(images.fallback.srcSet)\n : undefined,\n }\n }\n\n if (images.sources) {\n cleanedImages.sources = images.sources.map(source => {\n return {\n ...source,\n srcSet: removeNewLines(source.srcSet),\n }\n })\n }\n\n return React.createElement(\n as,\n {\n ...wrapperProps,\n style: {\n ...wStyle,\n ...style,\n backgroundColor,\n },\n className: `${wClass}${className ? ` ${className}` : ``}`,\n },\n \n \n\n )}\n // When eager is set we want to start the isLoading state on true (we want to load the img without react)\n {...getMainProps(\n loading === `eager`,\n false,\n cleanedImages,\n loading,\n imgStyle\n )}\n />\n \n )\n }\n\nexport const altValidator: PropTypes.Validator = (\n props: GatsbyImageProps,\n propName,\n componentName,\n ...rest\n): Error | undefined => {\n if (!props.alt && props.alt !== ``) {\n return new Error(\n `The \"alt\" prop is required in ${componentName}. If the image is purely presentational then pass an empty string: e.g. alt=\"\". Learn more: https://a11y-style-guide.com/style-guide/section-media.html`\n )\n }\n\n return PropTypes.string(props, propName, componentName, ...rest)\n}\n\nexport const propTypes = {\n image: PropTypes.object.isRequired,\n alt: altValidator,\n} as WeakValidationMap\n","import {\n createElement,\n memo,\n useMemo,\n useEffect,\n useLayoutEffect,\n useRef,\n} from \"react\"\nimport {\n getWrapperProps,\n gatsbyImageIsInstalled,\n hasNativeLazyLoadSupport,\n} from \"./hooks\"\nimport { getSizer } from \"./layout-wrapper\"\nimport { propTypes } from \"./gatsby-image.server\"\nimport type {\n FC,\n ElementType,\n FunctionComponent,\n ImgHTMLAttributes,\n CSSProperties,\n ReactEventHandler,\n} from \"react\"\nimport type { renderImageToString } from \"./lazy-hydrate\"\nimport type { PlaceholderProps } from \"./placeholder\"\nimport type { MainImageProps } from \"./main-image\"\nimport type { Layout } from \"../image-utils\"\n\nconst imageCache = new Set()\nlet renderImageToStringPromise\nlet renderImage: typeof renderImageToString | undefined\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport interface GatsbyImageProps\n extends Omit<\n ImgHTMLAttributes,\n \"placeholder\" | \"onLoad\" | \"src\" | \"srcSet\" | \"width\" | \"height\"\n > {\n alt: string\n as?: ElementType\n className?: string\n class?: string\n imgClassName?: string\n image: IGatsbyImageData\n imgStyle?: CSSProperties\n backgroundColor?: string\n objectFit?: CSSProperties[\"objectFit\"]\n objectPosition?: CSSProperties[\"objectPosition\"]\n onLoad?: (props: { wasCached: boolean }) => void\n onError?: ReactEventHandler\n onStartLoad?: (props: { wasCached: boolean }) => void\n}\n\nexport interface IGatsbyImageData {\n layout: Layout\n width: number\n height: number\n backgroundColor?: string\n images: Pick\n placeholder?: Pick\n}\n\nconst GatsbyImageHydrator: FC = function GatsbyImageHydrator({\n as = `div`,\n image,\n style,\n backgroundColor,\n className,\n class: preactClass,\n onStartLoad,\n onLoad,\n onError,\n ...props\n}) {\n const { width, height, layout } = image\n const {\n style: wStyle,\n className: wClass,\n ...wrapperProps\n } = getWrapperProps(width, height, layout)\n const root = useRef()\n const cacheKey = useMemo(() => JSON.stringify(image.images), [image.images])\n\n // Preact uses class instead of className so we need to check for both\n if (preactClass) {\n className = preactClass\n }\n\n const sizer = getSizer(layout, width, height)\n\n useEffect(() => {\n if (!renderImageToStringPromise) {\n renderImageToStringPromise = import(`./lazy-hydrate`).then(\n ({ renderImageToString, swapPlaceholderImage }) => {\n renderImage = renderImageToString\n\n return {\n renderImageToString,\n swapPlaceholderImage,\n }\n }\n )\n }\n\n // The plugin image component is a bit special where if it's server-side rendered, we add extra script tags to support lazy-loading without\n // In this case we stop hydration but fire the correct events.\n const ssrImage = root.current.querySelector(\n `[data-gatsby-image-ssr]`\n ) as HTMLImageElement\n if (ssrImage && hasNativeLazyLoadSupport()) {\n if (ssrImage.complete) {\n // Trigger onStartload and onLoad events\n onStartLoad?.({\n wasCached: true,\n })\n onLoad?.({\n wasCached: true,\n })\n\n // remove ssr key for state updates but add delay to not fight with native code snippt of gatsby-ssr\n setTimeout(() => {\n ssrImage.removeAttribute(`data-gatsby-image-ssr`)\n }, 0)\n } else {\n onStartLoad?.({\n wasCached: true,\n })\n\n ssrImage.addEventListener(`load`, function onLoadListener() {\n ssrImage.removeEventListener(`load`, onLoadListener)\n\n onLoad?.({\n wasCached: true,\n })\n // remove ssr key for state updates but add delay to not fight with native code snippt of gatsby-ssr\n setTimeout(() => {\n ssrImage.removeAttribute(`data-gatsby-image-ssr`)\n }, 0)\n })\n }\n\n imageCache.add(cacheKey)\n\n return\n }\n\n if (renderImage && imageCache.has(cacheKey)) {\n return\n }\n\n let animationFrame\n let cleanupCallback\n renderImageToStringPromise.then(\n ({ renderImageToString, swapPlaceholderImage }) => {\n if (!root.current) {\n return\n }\n\n root.current.innerHTML = renderImageToString({\n isLoading: true,\n isLoaded: imageCache.has(cacheKey),\n image,\n ...props,\n })\n\n if (!imageCache.has(cacheKey)) {\n animationFrame = requestAnimationFrame(() => {\n if (root.current) {\n cleanupCallback = swapPlaceholderImage(\n root.current,\n cacheKey,\n imageCache,\n style,\n onStartLoad,\n onLoad,\n onError\n )\n }\n })\n }\n }\n )\n\n // eslint-disable-next-line consistent-return\n return (): void => {\n if (animationFrame) {\n cancelAnimationFrame(animationFrame)\n }\n if (cleanupCallback) {\n cleanupCallback()\n }\n }\n }, [image])\n\n // useLayoutEffect is ran before React commits to the DOM. This allows us to make sure our HTML is using our cached image version\n useLayoutEffect(() => {\n if (imageCache.has(cacheKey) && renderImage) {\n root.current.innerHTML = renderImage({\n isLoading: imageCache.has(cacheKey),\n isLoaded: imageCache.has(cacheKey),\n image,\n ...props,\n })\n\n // Trigger onStartload and onLoad events\n onStartLoad?.({\n wasCached: true,\n })\n onLoad?.({\n wasCached: true,\n })\n }\n }, [image])\n\n // By keeping all props equal React will keep the component in the DOM\n return createElement(as, {\n ...wrapperProps,\n style: {\n ...wStyle,\n ...style,\n backgroundColor,\n },\n className: `${wClass}${className ? ` ${className}` : ``}`,\n ref: root,\n dangerouslySetInnerHTML: {\n __html: sizer,\n },\n suppressHydrationWarning: true,\n })\n}\n\nexport const GatsbyImage: FunctionComponent = memo(\n function GatsbyImage(props) {\n if (!props.image) {\n if (process.env.NODE_ENV === `development`) {\n console.warn(`[gatsby-plugin-image] Missing image prop`)\n }\n\n return null\n }\n\n if (!gatsbyImageIsInstalled() && process.env.NODE_ENV === `development`) {\n console.warn(\n `[gatsby-plugin-image] You're missing out on some cool performance features. Please add \"gatsby-plugin-image\" to your gatsby-config.js`\n )\n }\n\n return createElement(GatsbyImageHydrator, props)\n }\n)\n\nGatsbyImage.propTypes = propTypes\nGatsbyImage.displayName = `GatsbyImage`\n","import React, { FunctionComponent, ReactElement } from \"react\"\nimport {\n altValidator,\n GatsbyImage as GatsbyImageServer,\n} from \"./gatsby-image.server\"\nimport { GatsbyImageProps, IGatsbyImageData } from \"./gatsby-image.browser\"\nimport PropTypes from \"prop-types\"\nimport { ISharpGatsbyImageArgs } from \"../image-utils\"\n\nexport interface IStaticImageProps\n extends Omit,\n Omit {\n src: string\n filename?: string\n}\n\n// These values are added by Babel. Do not add them manually\ninterface IPrivateProps {\n __imageData?: IGatsbyImageData\n __error?: string\n}\n\nexport function _getStaticImage(\n GatsbyImage: FunctionComponent\n): React.FC {\n return function StaticImage({\n src,\n __imageData: imageData,\n __error,\n // We extract these because they're not meant to be passed-down to GatsbyImage\n /* eslint-disable @typescript-eslint/no-unused-vars */\n width,\n height,\n aspectRatio,\n tracedSVGOptions,\n placeholder,\n formats,\n quality,\n transformOptions,\n jpgOptions,\n pngOptions,\n webpOptions,\n avifOptions,\n blurredOptions,\n breakpoints,\n outputPixelDensities,\n /* eslint-enable @typescript-eslint/no-unused-vars */\n ...props\n }): ReactElement {\n if (__error) {\n console.warn(__error)\n }\n\n if (imageData) {\n return \n }\n console.warn(`Image not loaded`, src)\n if (!__error && process.env.NODE_ENV === `development`) {\n console.warn(\n `Please ensure that \"gatsby-plugin-image\" is included in the plugins array in gatsby-config.js, and that your version of gatsby is at least 2.24.78`\n )\n }\n return null\n }\n}\n\nconst StaticImage: React.FC =\n _getStaticImage(GatsbyImageServer)\n\nconst checkDimensionProps: PropTypes.Validator = (\n props: IStaticImageProps & IPrivateProps,\n propName: keyof IStaticImageProps & IPrivateProps,\n ...rest\n) => {\n if (\n props.layout === `fullWidth` &&\n (propName === `width` || propName === `height`) &&\n props[propName]\n ) {\n return new Error(\n `\"${propName}\" ${props[propName]} may not be passed when layout is fullWidth.`\n )\n }\n return PropTypes.number(props, propName, ...rest)\n}\n\nconst validLayouts = new Set([`fixed`, `fullWidth`, `constrained`])\n\nexport const propTypes = {\n src: PropTypes.string.isRequired,\n alt: altValidator,\n width: checkDimensionProps,\n height: checkDimensionProps,\n sizes: PropTypes.string,\n layout: (props: IStaticImageProps & IPrivateProps): Error | undefined => {\n if (props.layout === undefined) {\n return undefined\n }\n if (validLayouts.has(props.layout)) {\n return undefined\n }\n\n return new Error(\n `Invalid value ${props.layout}\" provided for prop \"layout\". Defaulting to \"constrained\". Valid values are \"fixed\", \"fullWidth\" or \"constrained\".`\n )\n },\n}\n\nStaticImage.displayName = `StaticImage`\nStaticImage.propTypes = propTypes\n\nexport { StaticImage }\n","import {\n GatsbyImage as GatsbyImageBrowser,\n IGatsbyImageData,\n} from \"./gatsby-image.browser\"\nimport React from \"react\"\nimport {\n _getStaticImage,\n propTypes,\n IStaticImageProps,\n} from \"./static-image.server\"\n// These values are added by Babel. Do not add them manually\ninterface IPrivateProps {\n __imageData?: IGatsbyImageData\n __error?: string\n}\n\nconst StaticImage: React.FC =\n _getStaticImage(GatsbyImageBrowser)\n\nStaticImage.displayName = `StaticImage`\nStaticImage.propTypes = propTypes\n\nexport { StaticImage }\n","import React, { useRef } from 'react'\nimport Utils from '../services/utils'\nimport { GatsbyImage, getImageData } from \"gatsby-plugin-image\"\n\nfunction urlBuilder({ baseUrl, width, height, options }) {\n let transformString = \"\"\n if(options?.transformations){\n options.transformations.forEach(transform => {\n transformString = transformString + transform + ','\n });\n transformString = transformString.slice(0, -1)\n }\n baseUrl = baseUrl ? baseUrl.replace(' ', '%20') : baseUrl\n if(options?.maxWidth && (width > options?.maxWidth)){\n width = options?.maxWidth\n }\n return `https://res.cloudinary.com/${options.cloudName}/image/upload/w_${width},f_auto,q_auto,${transformString}/Rebrand/${baseUrl}`\n}\n\nexport function getExampleImageData({ imageObject, ...props }) {\n return getImageData({\n baseUrl: imageObject?.slug,\n width: imageObject?.width || null,\n height: imageObject?.height || null,\n options: imageObject?.options,\n urlBuilder,\n placeholder: \"blurred\",\n pluginName: \"image-component\",\n formats: [\"auto\"],\n ...props,\n })\n}\n\nconst Video = ({ url }) => {\n return (\n
\n \n \n
\n )\n}\n\nexport const FluidImage = ({ src, alt, options = {} }) => {\n let source = null\n if (Array.isArray(src)) {\n source = src[0]\n } else {\n source = src\n }\n // gatsby-plugin-image does not support svg. Get the file type so we can use a plain element for svg\n let fileType = source?.fileName.substr(source?.fileName.length - 3)\n // TODO: add check to skip imageData creation if image is svg\n const imageObject = {\n slug: source?.fileName,\n width: options?.size?.width || source?.metadata?.pixelWidth || null,\n height: options?.size?.height || source?.metadata?.pixelHeight || null,\n options: {\n cloudName: 'dnginndga',\n breakpoints: options.breakpoints || [640, 768, 1024, 1366, 1600, 1920],\n default: [],\n transformations: ['g_face', 'c_fill', 'dpr_2.0'],\n chained: [],\n maxWidth: 2000,\n public_id: '',\n base64Width: 15\n }\n }\n const imageData = getExampleImageData({ imageObject, layout: \"fullWidth\", width: imageObject?.width, placeholder:\"blurred\" })\n\n let url = Utils.getURL(source, 'fileName')\n let isVideo = false\n if (url.includes('.mp4')) {\n isVideo = true\n }\n let classList = []\n if (options.objectFit) {\n classList.push(options.objectFit)\n }\n\n let ref = useRef()\n\n if (isVideo) {\n return
\n )\n}\n\nexport const FixedImage = (src, alt, options = {}) => {\n let source = null\n if (Array.isArray(src)) {\n source = src[0]\n } else {\n source = src\n }\n // gatsby-plugin-image does not support svg. Get the file type so we can use a plain element for svg\n let fileType = source?.fileName.substr(source?.fileName.length - 3)\n\n // TODO: add check to skip imageData creation if image is svg\n const imageObject = {\n slug: src[0]?.fileName,\n width: src[0]?.metadata?.pixelWidth || 1200,\n height: src[0]?.metadata?.pixelHeight || null,\n options: {\n cloudName: 'dnginndga',\n breakpoints: options.breakpoints || [640, 768, 1024, 1366, 1600, 1920],\n default: [],\n transformations: ['g_face', 'c_fill'],\n chained: [],\n maxWidth: 2000,\n public_id: '',\n base64Width: 15\n }\n }\n\n const imageData = getExampleImageData({ imageObject, layout: \"fixed\", width: imageObject?.width, placeholder:\"blurred\" })\n const ref = useRef()\n let classList = []\n if (options.objectFit) {\n classList.push(options.objectFit)\n }\n\n return (\n \n {imageData ? (\n \n {fileType === \"svg\" ? (\n
\n {alt\n
\n ) : (\n \n )}\n
\n ) : (\n \n )}\n \n )\n}\n"],"names":["UPPERCASE","LOWERCASE","LEADING_CAPITAL","IDENTIFIER","SEPARATORS","LEADING_SEPARATORS","RegExp","source","SEPARATORS_AND_IDENTIFIER","NUMBERS_AND_IDENTIFIER","camelCase","input","options","Array","isArray","TypeError","pascalCase","preserveConsecutiveUppercase","map","x","trim","filter","length","join","toLowerCase","locale","string","toLocaleLowerCase","toUpperCase","toLocaleUpperCase","isLastCharLower","isLastCharUpper","isLastLastCharUpper","i","character","test","slice","preserveCamelCase","replace","lastIndex","m1","charAt","_","identifier","m","postProcess","module","exports","g","p","f","w","y","b","e","console","warn","v","sortNumeric","t","E","getSizes","k","src","width","S","lastIndexOf","a","M","layout","height","sourceMetadata","s","breakpoints","r","aspectRatio","n","formats","o","l","h","Math","round","I","from","Set","concat","_toConsumableArray","sort","_ref3","fit","outputPixelDensities","d","j","min","c","includes","push","sizes","presentationWidth","presentationHeight","unscaledWidth","Number","MAX_SAFE_INTEGER","max","L","W","hasNativeLazyLoadSupport","HTMLImageElement","prototype","z","className","style","D","baseUrl","urlBuilder","sourceWidth","sourceHeight","pluginName","u","generateImageSource","filename","reporter","backgroundColor","placeholderURL","Error","format","size","has","delete","add","Object","entries","_ref","_ref2","N","sources","$","forEach","Boolean","find","fallback","srcSet","type","images","placeholder","P","loading","shouldLoad","opacity","A","position","top","left","bottom","right","objectFit","objectPosition","transition","H","F","_ref5","paddingTop","maxWidth","display","alt","role","G","children","V","B","U","decoding","Y","_ref6","media","key","X","propTypes","isRequired","displayName","J","Z","K","Q","ee","te","ae","_len","arguments","_key","apply","ie","image","se","re","ne","oe","le","de","as","class","onStartLoad","onLoad","onError","JSON","stringify","then","_ref7","renderImageToString","swapPlaceholderImage","current","querySelector","complete","wasCached","setTimeout","removeAttribute","addEventListener","removeEventListener","_ref8","innerHTML","isLoading","isLoaded","requestAnimationFrame","cancelAnimationFrame","ref","dangerouslySetInnerHTML","__html","suppressHydrationWarning","ce","he","ue","__imageData","__error","ge","imgClassName","imgStyle","pe","_len2","_key2","me","fe","we","transformString","transformations","transform","cloudName","getExampleImageData","imageObject","props","getImageData","slug","Video","url","React","id","autoPlay","preload","muted","playsInline","loop","poster","crossOrigin","FluidImage","_ref4","_source","_source2","_source3","_options$size","_source4","_source4$metadata","_options$size2","_source5","_source5$metadata","_source6","_source7","_source8","fileType","fileName","substr","metadata","pixelWidth","pixelHeight","default","chained","public_id","base64Width","imageData","Utils","getURL","isVideo","classList","useRef","zIndex","GatsbyImage","FixedImage","_source9","_source10","_src$","_src$2","_src$2$metadata","_src$3","_src$3$metadata","_options","_source11","_source12","_source13","_options2","random"],"sourceRoot":""}