{"version":3,"file":"3603ff9b890af057f584d4f21e97bf1d0b61ea74-0c43a44d229f50b5290e.js","mappings":"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","sources":["webpack://evolvan/../src/image-utils.ts","webpack://evolvan/../src/components/hooks.ts","webpack://evolvan/../src/components/layout-wrapper.tsx","webpack://evolvan/../src/components/picture.tsx","webpack://evolvan/../src/components/placeholder.tsx","webpack://evolvan/../src/components/main-image.tsx","webpack://evolvan/../src/components/gatsby-image.server.tsx","webpack://evolvan/../src/components/gatsby-image.browser.tsx","webpack://evolvan/../src/components/static-image.server.tsx","webpack://evolvan/../src/components/static-image.tsx","webpack://evolvan/./node_modules/gatsby-plugin-image/node_modules/camelcase/index.js"],"sourcesContent":["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","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<string>()\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<HTMLImageElement>,\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<HTMLImageElement>\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<MainImageProps, \"sources\" | \"fallback\">\n  placeholder?: Pick<PlaceholderProps, \"sources\" | \"fallback\">\n}\n\nconst GatsbyImageHydrator: FC<GatsbyImageProps> = 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<HTMLElement>()\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<GatsbyImageProps> = 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<GatsbyImageProps, \"image\">,\n    Omit<ISharpGatsbyImageArgs, \"backgroundColor\"> {\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<GatsbyImageProps>\n): React.FC<IStaticImageProps & IPrivateProps> {\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 <GatsbyImage image={imageData} {...props} />\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<IStaticImageProps & IPrivateProps> =\n  _getStaticImage(GatsbyImageServer)\n\nconst checkDimensionProps: PropTypes.Validator<number> = (\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<IStaticImageProps & IPrivateProps> =\n  _getStaticImage(GatsbyImageBrowser)\n\nStaticImage.displayName = `StaticImage`\nStaticImage.propTypes = propTypes\n\nexport { StaticImage }\n","'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"],"names":["g","p","m","f","w","y","b","e","console","warn","v","sortNumeric","t","E","getSizes","k","map","src","width","join","S","lastIndexOf","a","slice","length","M","layout","height","i","sourceMetadata","s","breakpoints","r","aspectRatio","n","formats","o","toLowerCase","l","h","Math","round","N","generateImageSource","filename","format","fit","options","$","pluginName","d","reporter","c","backgroundColor","u","placeholderURL","Error","Set","size","has","delete","add","Object","entries","filter","_ref","_ref2","outputPixelDensities","I","j","sizes","presentationWidth","presentationHeight","unscaledWidth","x","sources","forEach","Boolean","find","fallback","srcSet","push","type","L","images","placeholder","Array","from","concat","_toConsumableArray","sort","_ref3","min","includes","Number","MAX_SAFE_INTEGER","max","T","W","hasNativeLazyLoadSupport","HTMLImageElement","prototype","_","gatsbyImageData","gatsbyImage","childImageSharp","C","O","z","className","style","D","baseUrl","urlBuilder","sourceWidth","sourceHeight","P","loading","shouldLoad","opacity","A","position","top","left","bottom","right","objectFit","objectPosition","transition","q","_s$images$sources2","_r$sources","_ref4","_s$images$sources","media","image","apply","H","F","_ref5","paddingTop","maxWidth","display","alt","role","G","children","V","B","U","decoding","Y","_ref6","key","X","propTypes","isRequired","displayName","J","Z","K","Q","ee","te","replace","ae","_len","arguments","_key","ie","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","UPPERCASE","LOWERCASE","LEADING_CAPITAL","IDENTIFIER","SEPARATORS","LEADING_SEPARATORS","RegExp","source","SEPARATORS_AND_IDENTIFIER","NUMBERS_AND_IDENTIFIER","camelCase","input","isArray","TypeError","pascalCase","preserveConsecutiveUppercase","trim","locale","string","toLocaleLowerCase","toUpperCase","toLocaleUpperCase","preserveCamelCase","isLastCharLower","isLastCharUpper","isLastLastCharUpper","character","test","lastIndex","m1","charAt","postProcess","identifier","module","exports"],"sourceRoot":""}