{"ast":null,"code":"\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = Image;\n\nvar _objectWithoutPropertiesLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutPropertiesLoose\"));\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _toBase = require(\"../next-server/lib/to-base-64\");\n\nvar _imageConfig = require(\"../next-server/server/image-config\");\n\nvar _useIntersection = require(\"./use-intersection\");\n\nif (true) {\n  ;\n  global.__NEXT_IMAGE_IMPORTED = true;\n}\n\nconst VALID_LOADING_VALUES = ['lazy', 'eager', undefined];\nconst loaders = new Map([['imgix', imgixLoader], ['cloudinary', cloudinaryLoader], ['akamai', akamaiLoader], ['default', defaultLoader]]);\nconst VALID_LAYOUT_VALUES = ['fill', 'fixed', 'intrinsic', 'responsive', undefined];\nconst {\n  deviceSizes: configDeviceSizes,\n  imageSizes: configImageSizes,\n  loader: configLoader,\n  path: configPath,\n  domains: configDomains\n} = process.env.__NEXT_IMAGE_OPTS || _imageConfig.imageConfigDefault; // sort smallest to largest\n\nconst allSizes = [...configDeviceSizes, ...configImageSizes];\nconfigDeviceSizes.sort((a, b) => a - b);\nallSizes.sort((a, b) => a - b);\n\nfunction getWidths(width, layout) {\n  if (typeof width !== 'number' || layout === 'fill' || layout === 'responsive') {\n    return {\n      widths: configDeviceSizes,\n      kind: 'w'\n    };\n  }\n\n  const widths = [...new Set([width, width * 2, width * 3].map(w => allSizes.find(p => p >= w) || allSizes[allSizes.length - 1]))];\n  return {\n    widths,\n    kind: 'x'\n  };\n}\n\nfunction callLoader(loaderProps) {\n  const load = loaders.get(configLoader);\n\n  if (load) {\n    return load((0, _extends2.default)({\n      root: configPath\n    }, loaderProps));\n  }\n\n  throw new Error(`Unknown \"loader\" found in \"next.config.js\". Expected: ${_imageConfig.VALID_LOADERS.join(', ')}. Received: ${configLoader}`);\n}\n\nfunction generateImgAttrs({\n  src,\n  unoptimized,\n  layout,\n  width,\n  quality,\n  sizes\n}) {\n  if (unoptimized) {\n    return {\n      src\n    };\n  }\n\n  const {\n    widths,\n    kind\n  } = getWidths(width, layout);\n  const last = widths.length - 1;\n  const srcSet = widths.map((w, i) => `${callLoader({\n    src,\n    quality,\n    width: w\n  })} ${kind === 'w' ? w : i + 1}${kind}`).join(', ');\n\n  if (!sizes && kind === 'w') {\n    sizes = widths.map((w, i) => i === last ? `${w}px` : `(max-width: ${w}px) ${w}px`).join(', ');\n  }\n\n  src = callLoader({\n    src,\n    quality,\n    width: widths[last]\n  });\n  return {\n    src,\n    sizes,\n    srcSet\n  };\n}\n\nfunction getInt(x) {\n  if (typeof x === 'number') {\n    return x;\n  }\n\n  if (typeof x === 'string') {\n    return parseInt(x, 10);\n  }\n\n  return undefined;\n}\n\nfunction Image(_ref) {\n  let {\n    src,\n    sizes,\n    unoptimized = false,\n    priority = false,\n    loading,\n    className,\n    quality,\n    width,\n    height,\n    objectFit,\n    objectPosition\n  } = _ref,\n      all = (0, _objectWithoutPropertiesLoose2.default)(_ref, [\"src\", \"sizes\", \"unoptimized\", \"priority\", \"loading\", \"className\", \"quality\", \"width\", \"height\", \"objectFit\", \"objectPosition\"]);\n  let rest = all;\n  let layout = sizes ? 'responsive' : 'intrinsic';\n  let unsized = false;\n\n  if ('unsized' in rest) {\n    unsized = Boolean(rest.unsized); // Remove property so it's not spread into image:\n\n    delete rest['unsized'];\n  } else if ('layout' in rest) {\n    // Override default layout if the user specified one:\n    if (rest.layout) layout = rest.layout; // Remove property so it's not spread into image:\n\n    delete rest['layout'];\n  }\n\n  if (true) {\n    if (!src) {\n      throw new Error(`Image is missing required \"src\" property. Make sure you pass \"src\" in props to the \\`next/image\\` component. Received: ${JSON.stringify({\n        width,\n        height,\n        quality\n      })}`);\n    }\n\n    if (!VALID_LAYOUT_VALUES.includes(layout)) {\n      throw new Error(`Image with src \"${src}\" has invalid \"layout\" property. Provided \"${layout}\" should be one of ${VALID_LAYOUT_VALUES.map(String).join(',')}.`);\n    }\n\n    if (!VALID_LOADING_VALUES.includes(loading)) {\n      throw new Error(`Image with src \"${src}\" has invalid \"loading\" property. Provided \"${loading}\" should be one of ${VALID_LOADING_VALUES.map(String).join(',')}.`);\n    }\n\n    if (priority && loading === 'lazy') {\n      throw new Error(`Image with src \"${src}\" has both \"priority\" and \"loading='lazy'\" properties. Only one should be used.`);\n    }\n\n    if (unsized) {\n      throw new Error(`Image with src \"${src}\" has deprecated \"unsized\" property, which was removed in favor of the \"layout='fill'\" property`);\n    }\n  }\n\n  let isLazy = !priority && (loading === 'lazy' || typeof loading === 'undefined');\n\n  if (src && src.startsWith('data:')) {\n    // https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs\n    unoptimized = true;\n    isLazy = false;\n  }\n\n  const [setRef, isIntersected] = (0, _useIntersection.useIntersection)({\n    rootMargin: '200px',\n    disabled: !isLazy\n  });\n  const isVisible = !isLazy || isIntersected;\n  const widthInt = getInt(width);\n  const heightInt = getInt(height);\n  const qualityInt = getInt(quality);\n  let wrapperStyle;\n  let sizerStyle;\n  let sizerSvg;\n  let imgStyle = {\n    visibility: isVisible ? 'visible' : 'hidden',\n    position: 'absolute',\n    top: 0,\n    left: 0,\n    bottom: 0,\n    right: 0,\n    boxSizing: 'border-box',\n    padding: 0,\n    border: 'none',\n    margin: 'auto',\n    display: 'block',\n    width: 0,\n    height: 0,\n    minWidth: '100%',\n    maxWidth: '100%',\n    minHeight: '100%',\n    maxHeight: '100%',\n    objectFit,\n    objectPosition\n  };\n\n  if (typeof widthInt !== 'undefined' && typeof heightInt !== 'undefined' && layout !== 'fill') {\n    // <Image src=\"i.png\" width=\"100\" height=\"100\" />\n    const quotient = heightInt / widthInt;\n    const paddingTop = isNaN(quotient) ? '100%' : `${quotient * 100}%`;\n\n    if (layout === 'responsive') {\n      // <Image src=\"i.png\" width=\"100\" height=\"100\" layout=\"responsive\" />\n      wrapperStyle = {\n        display: 'block',\n        overflow: 'hidden',\n        position: 'relative',\n        boxSizing: 'border-box',\n        margin: 0\n      };\n      sizerStyle = {\n        display: 'block',\n        boxSizing: 'border-box',\n        paddingTop\n      };\n    } else if (layout === 'intrinsic') {\n      // <Image src=\"i.png\" width=\"100\" height=\"100\" layout=\"intrinsic\" />\n      wrapperStyle = {\n        display: 'inline-block',\n        maxWidth: '100%',\n        overflow: 'hidden',\n        position: 'relative',\n        boxSizing: 'border-box',\n        margin: 0\n      };\n      sizerStyle = {\n        boxSizing: 'border-box',\n        display: 'block',\n        maxWidth: '100%'\n      };\n      sizerSvg = `<svg width=\"${widthInt}\" height=\"${heightInt}\" xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\"/>`;\n    } else if (layout === 'fixed') {\n      // <Image src=\"i.png\" width=\"100\" height=\"100\" layout=\"fixed\" />\n      wrapperStyle = {\n        overflow: 'hidden',\n        boxSizing: 'border-box',\n        display: 'inline-block',\n        position: 'relative',\n        width: widthInt,\n        height: heightInt\n      };\n    }\n  } else if (typeof widthInt === 'undefined' && typeof heightInt === 'undefined' && layout === 'fill') {\n    // <Image src=\"i.png\" layout=\"fill\" />\n    wrapperStyle = {\n      display: 'block',\n      overflow: 'hidden',\n      position: 'absolute',\n      top: 0,\n      left: 0,\n      bottom: 0,\n      right: 0,\n      boxSizing: 'border-box',\n      margin: 0\n    };\n  } else {\n    // <Image src=\"i.png\" />\n    if (true) {\n      throw new Error(`Image with src \"${src}\" must use \"width\" and \"height\" properties or \"layout='fill'\" property.`);\n    }\n  }\n\n  let imgAttributes = {\n    src: 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n  };\n\n  if (isVisible) {\n    imgAttributes = generateImgAttrs({\n      src,\n      unoptimized,\n      layout,\n      width: widthInt,\n      quality: qualityInt,\n      sizes\n    });\n  }\n\n  if (unsized) {\n    wrapperStyle = undefined;\n    sizerStyle = undefined;\n    imgStyle = undefined;\n  }\n\n  return /*#__PURE__*/_react.default.createElement(\"div\", {\n    style: wrapperStyle\n  }, sizerStyle ? /*#__PURE__*/_react.default.createElement(\"div\", {\n    style: sizerStyle\n  }, sizerSvg ? /*#__PURE__*/_react.default.createElement(\"img\", {\n    style: {\n      maxWidth: '100%',\n      display: 'block'\n    },\n    alt: \"\",\n    \"aria-hidden\": true,\n    role: \"presentation\",\n    src: `data:image/svg+xml;base64,${(0, _toBase.toBase64)(sizerSvg)}`\n  }) : null) : null, /*#__PURE__*/_react.default.createElement(\"img\", Object.assign({}, rest, imgAttributes, {\n    decoding: \"async\",\n    className: className,\n    ref: setRef,\n    style: imgStyle\n  })));\n} //BUILT IN LOADERS\n\n\nfunction normalizeSrc(src) {\n  return src[0] === '/' ? src.slice(1) : src;\n}\n\nfunction imgixLoader({\n  root,\n  src,\n  width,\n  quality\n}) {\n  // Demo: https://static.imgix.net/daisy.png?format=auto&fit=max&w=300\n  const params = ['auto=format', 'fit=max', 'w=' + width];\n  let paramsString = '';\n\n  if (quality) {\n    params.push('q=' + quality);\n  }\n\n  if (params.length) {\n    paramsString = '?' + params.join('&');\n  }\n\n  return `${root}${normalizeSrc(src)}${paramsString}`;\n}\n\nfunction akamaiLoader({\n  root,\n  src,\n  width\n}) {\n  return `${root}${normalizeSrc(src)}?imwidth=${width}`;\n}\n\nfunction cloudinaryLoader({\n  root,\n  src,\n  width,\n  quality\n}) {\n  // Demo: https://res.cloudinary.com/demo/image/upload/w_300,c_limit/turtles.jpg\n  const params = ['f_auto', 'c_limit', 'w_' + width];\n  let paramsString = '';\n\n  if (quality) {\n    params.push('q_' + quality);\n  }\n\n  if (params.length) {\n    paramsString = params.join(',') + '/';\n  }\n\n  return `${root}${paramsString}${normalizeSrc(src)}`;\n}\n\nfunction defaultLoader({\n  root,\n  src,\n  width,\n  quality\n}) {\n  if (true) {\n    const missingValues = []; // these should always be provided but make sure they are\n\n    if (!src) missingValues.push('src');\n    if (!width) missingValues.push('width');\n\n    if (missingValues.length > 0) {\n      throw new Error(`Next Image Optimization requires ${missingValues.join(', ')} to be provided. Make sure you pass them as props to the \\`next/image\\` component. Received: ${JSON.stringify({\n        src,\n        width,\n        quality\n      })}`);\n    }\n\n    if (src.startsWith('//')) {\n      throw new Error(`Failed to parse src \"${src}\" on \\`next/image\\`, protocol-relative URL (//) must be changed to an absolute URL (http:// or https://)`);\n    }\n\n    if (!src.startsWith('/') && configDomains) {\n      let parsedSrc;\n\n      try {\n        parsedSrc = new URL(src);\n      } catch (err) {\n        console.error(err);\n        throw new Error(`Failed to parse src \"${src}\" on \\`next/image\\`, if using relative image it must start with a leading slash \"/\" or be an absolute URL (http:// or https://)`);\n      }\n\n      if (!configDomains.includes(parsedSrc.hostname)) {\n        throw new Error(`Invalid src prop (${src}) on \\`next/image\\`, hostname \"${parsedSrc.hostname}\" is not configured under images in your \\`next.config.js\\`\\n` + `See more info: https://err.sh/next.js/next-image-unconfigured-host`);\n      }\n    }\n  }\n\n  return `${root}?url=${encodeURIComponent(src)}&w=${width}&q=${quality || 75}`;\n}","map":{"version":3,"sources":["../../client/image.tsx"],"names":["global","VALID_LOADING_VALUES","loaders","VALID_LAYOUT_VALUES","deviceSizes","imageSizes","loader","path","domains","process","imageConfigDefault","allSizes","configDeviceSizes","a","layout","widths","kind","width","w","p","load","root","VALID_LOADERS","configLoader","getWidths","last","srcSet","callLoader","i","sizes","src","parseInt","unoptimized","priority","all","rest","unsized","Boolean","JSON","loading","isLazy","rootMargin","disabled","isVisible","widthInt","getInt","heightInt","qualityInt","imgStyle","visibility","position","top","left","bottom","right","boxSizing","padding","border","margin","display","height","minWidth","maxWidth","minHeight","maxHeight","quotient","paddingTop","isNaN","wrapperStyle","overflow","sizerStyle","sizerSvg","imgAttributes","generateImgAttrs","quality","params","paramsString","normalizeSrc","missingValues","parsedSrc","console","configDomains","hostname","encodeURIComponent"],"mappings":"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","sourcesContent":["import React from 'react'\nimport { toBase64 } from '../next-server/lib/to-base-64'\nimport {\n  ImageConfig,\n  imageConfigDefault,\n  LoaderValue,\n  VALID_LOADERS,\n} from '../next-server/server/image-config'\nimport { useIntersection } from './use-intersection'\n\nif (typeof window === 'undefined') {\n  ;(global as any).__NEXT_IMAGE_IMPORTED = true\n}\n\nconst VALID_LOADING_VALUES = ['lazy', 'eager', undefined] as const\ntype LoadingValue = typeof VALID_LOADING_VALUES[number]\n\nconst loaders = new Map<LoaderValue, (props: LoaderProps) => string>([\n  ['imgix', imgixLoader],\n  ['cloudinary', cloudinaryLoader],\n  ['akamai', akamaiLoader],\n  ['default', defaultLoader],\n])\n\nconst VALID_LAYOUT_VALUES = [\n  'fill',\n  'fixed',\n  'intrinsic',\n  'responsive',\n  undefined,\n] as const\ntype LayoutValue = typeof VALID_LAYOUT_VALUES[number]\n\ntype ImgElementStyle = NonNullable<JSX.IntrinsicElements['img']['style']>\n\nexport type ImageProps = Omit<\n  JSX.IntrinsicElements['img'],\n  'src' | 'srcSet' | 'ref' | 'width' | 'height' | 'loading' | 'style'\n> & {\n  src: string\n  quality?: number | string\n  priority?: boolean\n  loading?: LoadingValue\n  unoptimized?: boolean\n  objectFit?: ImgElementStyle['objectFit']\n  objectPosition?: ImgElementStyle['objectPosition']\n} & (\n    | {\n        width?: never\n        height?: never\n        /** @deprecated Use `layout=\"fill\"` instead */\n        unsized: true\n      }\n    | { width?: never; height?: never; layout: 'fill' }\n    | {\n        width: number | string\n        height: number | string\n        layout?: Exclude<LayoutValue, 'fill'>\n      }\n  )\n\nconst {\n  deviceSizes: configDeviceSizes,\n  imageSizes: configImageSizes,\n  loader: configLoader,\n  path: configPath,\n  domains: configDomains,\n} =\n  ((process.env.__NEXT_IMAGE_OPTS as any) as ImageConfig) || imageConfigDefault\n// sort smallest to largest\nconst allSizes = [...configDeviceSizes, ...configImageSizes]\nconfigDeviceSizes.sort((a, b) => a - b)\nallSizes.sort((a, b) => a - b)\n\nfunction getWidths(\n  width: number | undefined,\n  layout: LayoutValue\n): { widths: number[]; kind: 'w' | 'x' } {\n  if (\n    typeof width !== 'number' ||\n    layout === 'fill' ||\n    layout === 'responsive'\n  ) {\n    return { widths: configDeviceSizes, kind: 'w' }\n  }\n\n  const widths = [\n    ...new Set(\n      [width, width * 2, width * 3].map(\n        (w) => allSizes.find((p) => p >= w) || allSizes[allSizes.length - 1]\n      )\n    ),\n  ]\n  return { widths, kind: 'x' }\n}\n\ntype CallLoaderProps = {\n  src: string\n  width: number\n  quality?: number\n}\n\nfunction callLoader(loaderProps: CallLoaderProps) {\n  const load = loaders.get(configLoader)\n  if (load) {\n    return load({ root: configPath, ...loaderProps })\n  }\n  throw new Error(\n    `Unknown \"loader\" found in \"next.config.js\". Expected: ${VALID_LOADERS.join(\n      ', '\n    )}. Received: ${configLoader}`\n  )\n}\n\ntype GenImgAttrsData = {\n  src: string\n  unoptimized: boolean\n  layout: LayoutValue\n  width?: number\n  quality?: number\n  sizes?: string\n}\n\ntype GenImgAttrsResult = Pick<\n  JSX.IntrinsicElements['img'],\n  'src' | 'sizes' | 'srcSet'\n>\n\nfunction generateImgAttrs({\n  src,\n  unoptimized,\n  layout,\n  width,\n  quality,\n  sizes,\n}: GenImgAttrsData): GenImgAttrsResult {\n  if (unoptimized) {\n    return { src }\n  }\n\n  const { widths, kind } = getWidths(width, layout)\n  const last = widths.length - 1\n\n  const srcSet = widths\n    .map(\n      (w, i) =>\n        `${callLoader({ src, quality, width: w })} ${\n          kind === 'w' ? w : i + 1\n        }${kind}`\n    )\n    .join(', ')\n\n  if (!sizes && kind === 'w') {\n    sizes = widths\n      .map((w, i) => (i === last ? `${w}px` : `(max-width: ${w}px) ${w}px`))\n      .join(', ')\n  }\n\n  src = callLoader({ src, quality, width: widths[last] })\n\n  return { src, sizes, srcSet }\n}\n\nfunction getInt(x: unknown): number | undefined {\n  if (typeof x === 'number') {\n    return x\n  }\n  if (typeof x === 'string') {\n    return parseInt(x, 10)\n  }\n  return undefined\n}\n\nexport default function Image({\n  src,\n  sizes,\n  unoptimized = false,\n  priority = false,\n  loading,\n  className,\n  quality,\n  width,\n  height,\n  objectFit,\n  objectPosition,\n  ...all\n}: ImageProps) {\n  let rest: Partial<ImageProps> = all\n  let layout: NonNullable<LayoutValue> = sizes ? 'responsive' : 'intrinsic'\n  let unsized = false\n  if ('unsized' in rest) {\n    unsized = Boolean(rest.unsized)\n    // Remove property so it's not spread into image:\n    delete rest['unsized']\n  } else if ('layout' in rest) {\n    // Override default layout if the user specified one:\n    if (rest.layout) layout = rest.layout\n\n    // Remove property so it's not spread into image:\n    delete rest['layout']\n  }\n\n  if (process.env.NODE_ENV !== 'production') {\n    if (!src) {\n      throw new Error(\n        `Image is missing required \"src\" property. Make sure you pass \"src\" in props to the \\`next/image\\` component. Received: ${JSON.stringify(\n          { width, height, quality }\n        )}`\n      )\n    }\n    if (!VALID_LAYOUT_VALUES.includes(layout)) {\n      throw new Error(\n        `Image with src \"${src}\" has invalid \"layout\" property. Provided \"${layout}\" should be one of ${VALID_LAYOUT_VALUES.map(\n          String\n        ).join(',')}.`\n      )\n    }\n    if (!VALID_LOADING_VALUES.includes(loading)) {\n      throw new Error(\n        `Image with src \"${src}\" has invalid \"loading\" property. Provided \"${loading}\" should be one of ${VALID_LOADING_VALUES.map(\n          String\n        ).join(',')}.`\n      )\n    }\n    if (priority && loading === 'lazy') {\n      throw new Error(\n        `Image with src \"${src}\" has both \"priority\" and \"loading='lazy'\" properties. Only one should be used.`\n      )\n    }\n    if (unsized) {\n      throw new Error(\n        `Image with src \"${src}\" has deprecated \"unsized\" property, which was removed in favor of the \"layout='fill'\" property`\n      )\n    }\n  }\n\n  let isLazy =\n    !priority && (loading === 'lazy' || typeof loading === 'undefined')\n  if (src && src.startsWith('data:')) {\n    // https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs\n    unoptimized = true\n    isLazy = false\n  }\n\n  const [setRef, isIntersected] = useIntersection<HTMLImageElement>({\n    rootMargin: '200px',\n    disabled: !isLazy,\n  })\n  const isVisible = !isLazy || isIntersected\n\n  const widthInt = getInt(width)\n  const heightInt = getInt(height)\n  const qualityInt = getInt(quality)\n\n  let wrapperStyle: JSX.IntrinsicElements['div']['style'] | undefined\n  let sizerStyle: JSX.IntrinsicElements['div']['style'] | undefined\n  let sizerSvg: string | undefined\n  let imgStyle: ImgElementStyle | undefined = {\n    visibility: isVisible ? 'visible' : 'hidden',\n\n    position: 'absolute',\n    top: 0,\n    left: 0,\n    bottom: 0,\n    right: 0,\n\n    boxSizing: 'border-box',\n    padding: 0,\n    border: 'none',\n    margin: 'auto',\n\n    display: 'block',\n    width: 0,\n    height: 0,\n    minWidth: '100%',\n    maxWidth: '100%',\n    minHeight: '100%',\n    maxHeight: '100%',\n\n    objectFit,\n    objectPosition,\n  }\n  if (\n    typeof widthInt !== 'undefined' &&\n    typeof heightInt !== 'undefined' &&\n    layout !== 'fill'\n  ) {\n    // <Image src=\"i.png\" width=\"100\" height=\"100\" />\n    const quotient = heightInt / widthInt\n    const paddingTop = isNaN(quotient) ? '100%' : `${quotient * 100}%`\n    if (layout === 'responsive') {\n      // <Image src=\"i.png\" width=\"100\" height=\"100\" layout=\"responsive\" />\n      wrapperStyle = {\n        display: 'block',\n        overflow: 'hidden',\n        position: 'relative',\n\n        boxSizing: 'border-box',\n        margin: 0,\n      }\n      sizerStyle = { display: 'block', boxSizing: 'border-box', paddingTop }\n    } else if (layout === 'intrinsic') {\n      // <Image src=\"i.png\" width=\"100\" height=\"100\" layout=\"intrinsic\" />\n      wrapperStyle = {\n        display: 'inline-block',\n        maxWidth: '100%',\n        overflow: 'hidden',\n        position: 'relative',\n        boxSizing: 'border-box',\n        margin: 0,\n      }\n      sizerStyle = {\n        boxSizing: 'border-box',\n        display: 'block',\n        maxWidth: '100%',\n      }\n      sizerSvg = `<svg width=\"${widthInt}\" height=\"${heightInt}\" xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\"/>`\n    } else if (layout === 'fixed') {\n      // <Image src=\"i.png\" width=\"100\" height=\"100\" layout=\"fixed\" />\n      wrapperStyle = {\n        overflow: 'hidden',\n        boxSizing: 'border-box',\n        display: 'inline-block',\n        position: 'relative',\n        width: widthInt,\n        height: heightInt,\n      }\n    }\n  } else if (\n    typeof widthInt === 'undefined' &&\n    typeof heightInt === 'undefined' &&\n    layout === 'fill'\n  ) {\n    // <Image src=\"i.png\" layout=\"fill\" />\n    wrapperStyle = {\n      display: 'block',\n      overflow: 'hidden',\n\n      position: 'absolute',\n      top: 0,\n      left: 0,\n      bottom: 0,\n      right: 0,\n\n      boxSizing: 'border-box',\n      margin: 0,\n    }\n  } else {\n    // <Image src=\"i.png\" />\n    if (process.env.NODE_ENV !== 'production') {\n      throw new Error(\n        `Image with src \"${src}\" must use \"width\" and \"height\" properties or \"layout='fill'\" property.`\n      )\n    }\n  }\n\n  let imgAttributes: GenImgAttrsResult = {\n    src:\n      'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7',\n  }\n\n  if (isVisible) {\n    imgAttributes = generateImgAttrs({\n      src,\n      unoptimized,\n      layout,\n      width: widthInt,\n      quality: qualityInt,\n      sizes,\n    })\n  }\n\n  if (unsized) {\n    wrapperStyle = undefined\n    sizerStyle = undefined\n    imgStyle = undefined\n  }\n  return (\n    <div style={wrapperStyle}>\n      {sizerStyle ? (\n        <div style={sizerStyle}>\n          {sizerSvg ? (\n            <img\n              style={{ maxWidth: '100%', display: 'block' }}\n              alt=\"\"\n              aria-hidden={true}\n              role=\"presentation\"\n              src={`data:image/svg+xml;base64,${toBase64(sizerSvg)}`}\n            />\n          ) : null}\n        </div>\n      ) : null}\n      <img\n        {...rest}\n        {...imgAttributes}\n        decoding=\"async\"\n        className={className}\n        ref={setRef}\n        style={imgStyle}\n      />\n    </div>\n  )\n}\n\n//BUILT IN LOADERS\n\ntype LoaderProps = CallLoaderProps & { root: string }\n\nfunction normalizeSrc(src: string) {\n  return src[0] === '/' ? src.slice(1) : src\n}\n\nfunction imgixLoader({ root, src, width, quality }: LoaderProps): string {\n  // Demo: https://static.imgix.net/daisy.png?format=auto&fit=max&w=300\n  const params = ['auto=format', 'fit=max', 'w=' + width]\n  let paramsString = ''\n  if (quality) {\n    params.push('q=' + quality)\n  }\n\n  if (params.length) {\n    paramsString = '?' + params.join('&')\n  }\n  return `${root}${normalizeSrc(src)}${paramsString}`\n}\n\nfunction akamaiLoader({ root, src, width }: LoaderProps): string {\n  return `${root}${normalizeSrc(src)}?imwidth=${width}`\n}\n\nfunction cloudinaryLoader({ root, src, width, quality }: LoaderProps): string {\n  // Demo: https://res.cloudinary.com/demo/image/upload/w_300,c_limit/turtles.jpg\n  const params = ['f_auto', 'c_limit', 'w_' + width]\n  let paramsString = ''\n  if (quality) {\n    params.push('q_' + quality)\n  }\n  if (params.length) {\n    paramsString = params.join(',') + '/'\n  }\n  return `${root}${paramsString}${normalizeSrc(src)}`\n}\n\nfunction defaultLoader({ root, src, width, quality }: LoaderProps): string {\n  if (process.env.NODE_ENV !== 'production') {\n    const missingValues = []\n\n    // these should always be provided but make sure they are\n    if (!src) missingValues.push('src')\n    if (!width) missingValues.push('width')\n\n    if (missingValues.length > 0) {\n      throw new Error(\n        `Next Image Optimization requires ${missingValues.join(\n          ', '\n        )} to be provided. Make sure you pass them as props to the \\`next/image\\` component. Received: ${JSON.stringify(\n          { src, width, quality }\n        )}`\n      )\n    }\n\n    if (src.startsWith('//')) {\n      throw new Error(\n        `Failed to parse src \"${src}\" on \\`next/image\\`, protocol-relative URL (//) must be changed to an absolute URL (http:// or https://)`\n      )\n    }\n\n    if (!src.startsWith('/') && configDomains) {\n      let parsedSrc: URL\n      try {\n        parsedSrc = new URL(src)\n      } catch (err) {\n        console.error(err)\n        throw new Error(\n          `Failed to parse src \"${src}\" on \\`next/image\\`, if using relative image it must start with a leading slash \"/\" or be an absolute URL (http:// or https://)`\n        )\n      }\n\n      if (!configDomains.includes(parsedSrc.hostname)) {\n        throw new Error(\n          `Invalid src prop (${src}) on \\`next/image\\`, hostname \"${parsedSrc.hostname}\" is not configured under images in your \\`next.config.js\\`\\n` +\n            `See more info: https://err.sh/next.js/next-image-unconfigured-host`\n        )\n      }\n    }\n  }\n\n  return `${root}?url=${encodeURIComponent(src)}&w=${width}&q=${quality || 75}`\n}\n"]},"metadata":{},"sourceType":"script"}