aboutsummaryrefslogtreecommitdiffhomepage
path: root/public/component---src-pages-index-tsx-65669e05723cb198d13a.js.map
blob: 7966fae2159b3852ba9ecd9b1e8072ce0baffb7b (plain) (blame)
1
{"version":3,"file":"component---src-pages-index-tsx-65669e05723cb198d13a.js","mappings":"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","sources":["webpack://submelon.dev/./node_modules/camelcase/index.js","webpack://submelon.dev/../src/image-utils.ts","webpack://submelon.dev/../src/components/hooks.ts","webpack://submelon.dev/../src/components/layout-wrapper.tsx","webpack://submelon.dev/../src/components/picture.tsx","webpack://submelon.dev/../src/components/placeholder.tsx","webpack://submelon.dev/../src/components/main-image.tsx","webpack://submelon.dev/../src/components/gatsby-image.server.tsx","webpack://submelon.dev/../src/components/gatsby-image.browser.tsx","webpack://submelon.dev/../src/components/static-image.server.tsx","webpack://submelon.dev/../src/components/static-image.tsx","webpack://submelon.dev/./src/components/SEO.tsx","webpack://submelon.dev/./src/components/BlockLink.tsx","webpack://submelon.dev/./src/util/timestamp.ts","webpack://submelon.dev/./src/components/Layout.tsx","webpack://submelon.dev/./src/hooks/SiteMetadata.ts","webpack://submelon.dev/./src/hooks/SiteVersion.ts","webpack://submelon.dev/./src/pages/index.tsx","webpack://submelon.dev/./src/styles/BlockAnchor.ts","webpack://submelon.dev/./src/styles/BlockBody.ts","webpack://submelon.dev/./src/styles/BlockHeader.ts","webpack://submelon.dev/./src/styles/Content.ts","webpack://submelon.dev/./src/styles/Footer.ts","webpack://submelon.dev/./node_modules/react-icons/lib/esm/iconsManifest.js","webpack://submelon.dev/./node_modules/react-icons/lib/esm/iconContext.js","webpack://submelon.dev/./node_modules/react-icons/lib/esm/iconBase.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<ImageFormat>\n  placeholder?: \"tracedSVG\" | \"dominantColor\" | \"blurred\" | \"none\"\n  tracedSVGOptions?: Record<string, unknown>\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<string, unknown>\n  pngOptions?: Record<string, unknown>\n  webpOptions?: Record<string, unknown>\n  avifOptions?: Record<string, unknown>\n  blurredOptions?: { width?: number; toFormat?: ImageFormat }\n  breakpoints?: Array<number>\n  outputPixelDensities?: Array<number>\n  backgroundColor?: string\n}\n\nexport interface IImageSizeArgs {\n  width?: number\n  height?: number\n  layout?: Layout\n  filename: string\n  outputPixelDensities?: Array<number>\n  breakpoints?: Array<number>\n  fit?: Fit\n  reporter?: IReporter\n  sourceMetadata: { width: number; height: number }\n}\n\nexport interface IImageSizes {\n  sizes: Array<number>\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<string, unknown>\n  ) => IImage\n  layout?: Layout\n  formats?: Array<ImageFormat>\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<string, unknown>\n  breakpoints?: Array<number>\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<IImage>): 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<ImageFormat>(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<IGatsbyImageData> = {\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<number>): Array<number> =>\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 = never> = T & {\n  gatsbyImageData: IGatsbyImageData\n}\nexport type IGatsbyImageParent<T = never> = T & {\n  gatsbyImage: IGatsbyImageData\n}\nexport type FileNode = Partial<Node> & {\n  childImageSharp?: IGatsbyImageDataParent<Partial<Node>>\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 = <T>(\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  node: IGatsbyImageDataParent<T> | any\n): node is IGatsbyImageDataParent<T> => Boolean(node?.gatsbyImageData)\n\nconst isGatsbyImageParent = <T>(\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  node: IGatsbyImageParent<T> | any\n): node is IGatsbyImageParent<T> => 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<HTMLAttributes<HTMLElement>, \"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<OptionsType> {\n  width: number\n  height: number\n  baseUrl: string\n  format: ImageFormat\n  options: OptionsType\n}\nexport interface IGetImageDataArgs<OptionsType = Record<string, unknown>> {\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<OptionsType>) => 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<ImageFormat>\n\n  breakpoints?: Array<number>\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<OptionsType>({\n  baseUrl,\n  urlBuilder,\n  sourceWidth,\n  sourceHeight,\n  pluginName = `getImageData`,\n  formats = [`auto`],\n  breakpoints,\n  options,\n  ...props\n}: IGetImageDataArgs<OptionsType>): 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<MainImageProps> {\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<HTMLImageElement> &\n  Pick<PlaceholderProps, \"sources\" | \"fallback\"> & {\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<IArtDirectedImage>\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  <script\n    type=\"module\"\n    dangerouslySetInnerHTML={{\n      __html: terserMacro`\nconst hasNativeLazyLoadSupport = typeof HTMLImageElement !== \"undefined\" && \"loading\" in HTMLImageElement.prototype;\nif (hasNativeLazyLoadSupport) {\n  const gatsbyImages = document.querySelectorAll('img[data-main-image]');\n  for (let mainImage of gatsbyImages) {\n    if (mainImage.dataset.src) {\n      mainImage.setAttribute('src', mainImage.dataset.src)\n      mainImage.removeAttribute('data-src')\n    }\n    if (mainImage.dataset.srcset) {\n      mainImage.setAttribute('srcset', mainImage.dataset.srcset)\n      mainImage.removeAttribute('data-srcset')\n    }\n\n    const sources = mainImage.parentNode.querySelectorAll('source[data-srcset]');\n    for (let source of sources) {\n      source.setAttribute('srcset', source.dataset.srcset)\n      source.removeAttribute('data-srcset')\n    }\n\n    if (mainImage.complete) {\n      mainImage.style.opacity = 1;\n\n      // also hide the placeholder\n      mainImage.parentNode.parentNode.querySelector('[data-placeholder-image]').style.opacity = 0;\n    }\n  }\n}\n`,\n    }}\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 = `<div aria-hidden=\"true\" style=\"padding-top: ${\n      (height / width) * 100\n    }%;\"></div>`\n  }\n\n  if (layout === `constrained`) {\n    sizer = `<div style=\"max-width: ${width}px; display: block;\"><img alt=\"\" role=\"presentation\" aria-hidden=\"true\" src=\"data:image/svg+xml;charset=utf-8,%3Csvg%20height='${height}'%20width='${width}'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E\" style=\"max-width: 100%; display: block; position: static;\"></div>`\n  }\n\n  return sizer\n}\n\nconst Sizer: FunctionComponent<ILayoutWrapperProps> = function Sizer({\n  layout,\n  width,\n  height,\n}) {\n  if (layout === `fullWidth`) {\n    return (\n      <div aria-hidden style={{ paddingTop: `${(height / width) * 100}%` }} />\n    )\n  }\n\n  if (layout === `constrained`) {\n    return (\n      <div style={{ maxWidth: width, display: `block` }}>\n        <img\n          alt=\"\"\n          role=\"presentation\"\n          aria-hidden=\"true\"\n          src={`data:image/svg+xml;charset=utf-8,%3Csvg%20height='${height}'%20width='${width}'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E`}\n          style={{\n            maxWidth: `100%`,\n            display: `block`,\n            position: `static`,\n          }}\n        />\n      </div>\n    )\n  }\n\n  return null\n}\n\nexport const LayoutWrapper: FunctionComponent<\n  PropsWithChildren<ILayoutWrapperProps>\n> = function LayoutWrapper({ children, ...props }) {\n  return (\n    <Fragment>\n      <Sizer {...props} />\n      {children}\n\n      {SERVER ? <NativeScriptLoading /> : null}\n    </Fragment>\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<IResponsiveImageProps>\n\ntype ImageProps = ImgHTMLAttributes<HTMLImageElement> & {\n  src: string\n  alt: string\n  shouldLoad: boolean\n}\n\nexport type PictureProps = ImgHTMLAttributes<HTMLImageElement> & {\n  fallback?: FallbackProps\n  sources?: Array<SourceProps>\n  alt: string\n  shouldLoad?: boolean\n}\n\nconst Image: FunctionComponent<ImageProps> = function Image({\n  src,\n  srcSet,\n  loading,\n  alt = ``,\n  shouldLoad,\n  ...props\n}) {\n  return (\n    <img\n      {...props}\n      decoding=\"async\"\n      loading={loading}\n      src={shouldLoad ? src : undefined}\n      data-src={!shouldLoad ? src : undefined}\n      srcSet={shouldLoad ? srcSet : undefined}\n      data-srcset={!shouldLoad ? srcSet : undefined}\n      alt={alt}\n    />\n  )\n}\n\nexport const Picture: React.FC<PictureProps> = function Picture({\n  fallback,\n  sources = [],\n  shouldLoad = true,\n  ...props\n}) {\n  const sizes = props.sizes || fallback?.sizes\n  const fallbackImage = (\n    <Image {...props} {...fallback} sizes={sizes} shouldLoad={shouldLoad} />\n  )\n\n  if (!sources.length) {\n    return fallbackImage\n  }\n\n  return (\n    <picture>\n      {sources.map(({ media, srcSet, type }) => (\n        <source\n          key={`${media}-${type}-${srcSet}`}\n          type={type}\n          media={media}\n          srcSet={shouldLoad ? srcSet : undefined}\n          data-srcset={!shouldLoad ? srcSet : undefined}\n          sizes={sizes}\n        />\n      ))}\n      {fallbackImage}\n    </picture>\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<HTMLImageElement> & {\n  fallback?: string\n  sources?: Array<SourceProps>\n}\n\nexport const Placeholder: FunctionComponent<PlaceholderProps> =\n  function Placeholder({ fallback, ...props }) {\n    if (fallback) {\n      return (\n        <Picture\n          {...props}\n          fallback={{\n            src: fallback,\n          }}\n          aria-hidden\n          alt=\"\"\n        />\n      )\n    } else {\n      return <div {...props}></div>\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<PictureProps> = function MainImage(props) {\n  return (\n    <>\n      <Picture {...props} />\n      <noscript>\n        <Picture {...props} shouldLoad={true} />\n      </noscript>\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<GatsbyImageProps> =\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      <LayoutWrapper layout={layout} width={width} height={height}>\n        <Placeholder\n          {...getPlaceholderProps(\n            placeholder,\n            false,\n            layout,\n            width,\n            height,\n            placeholderBackgroundColor,\n            objectFit,\n            objectPosition\n          )}\n        />\n\n        <MainImage\n          data-gatsby-image-ssr=\"\"\n          className={imgClassName}\n          {...(props as Omit<\n            MainImageProps,\n            \"images\" | \"fallback\" | \"onError\" | \"onLoad\"\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      </LayoutWrapper>\n    )\n  }\n\nexport const altValidator: PropTypes.Validator<string> = (\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<GatsbyImageProps>\n","i