{"version":3,"sources":["../../../../src/client/legacy/image.tsx"],"sourcesContent":["'use client'\n\nimport React, {\n  useRef,\n  useEffect,\n  useCallback,\n  useContext,\n  useMemo,\n  useState,\n  type JSX,\n} from 'react'\nimport * as ReactDOM from 'react-dom'\nimport Head from '../../shared/lib/head'\nimport {\n  imageConfigDefault,\n  VALID_LOADERS,\n} from '../../shared/lib/image-config'\nimport type {\n  ImageConfigComplete,\n  LoaderValue,\n} from '../../shared/lib/image-config'\nimport { useIntersection } from '../use-intersection'\nimport { ImageConfigContext } from '../../shared/lib/image-config-context.shared-runtime'\nimport { warnOnce } from '../../shared/lib/utils/warn-once'\nimport { normalizePathTrailingSlash } from '../normalize-trailing-slash'\nimport { findClosestQuality } from '../../shared/lib/find-closest-quality'\nimport { getDeploymentId } from '../../shared/lib/deployment-id'\n\nfunction normalizeSrc(src: string): string {\n  return src[0] === '/' ? src.slice(1) : src\n}\n\nconst supportsFloat = typeof ReactDOM.preload === 'function'\nconst configEnv = process.env.__NEXT_IMAGE_OPTS as any as ImageConfigComplete\nconst loadedImageURLs = new Set<string>()\nconst allImgs = new Map<\n  string,\n  { src: string; priority: boolean; placeholder: string }\n>()\nlet perfObserver: PerformanceObserver | undefined\nconst emptyDataURL =\n  'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n\nif (typeof window === 'undefined') {\n  ;(globalThis as any).__NEXT_IMAGE_IMPORTED = true\n}\n\nconst VALID_LOADING_VALUES = ['lazy', 'eager', undefined] as const\ntype LoadingValue = (typeof VALID_LOADING_VALUES)[number]\ntype ImageConfig = ImageConfigComplete & { allSizes: number[] }\nexport type ImageLoader = (resolverProps: ImageLoaderProps) => string\n\nexport type ImageLoaderProps = {\n  src: string\n  width: number\n  quality?: number\n}\n\n// Do not export - this is an internal type only\n// because `next.config.js` is only meant for the\n// built-in loaders, not for a custom loader() prop.\ntype ImageLoaderWithConfig = (\n  resolverProps: ImageLoaderPropsWithConfig\n) => string\ntype ImageLoaderPropsWithConfig = ImageLoaderProps & {\n  config: Readonly<ImageConfig>\n}\n\nfunction imgixLoader({\n  config,\n  src,\n  width,\n  quality,\n}: ImageLoaderPropsWithConfig): string {\n  // Demo: https://static.imgix.net/daisy.png?auto=format&fit=max&w=300\n  const url = new URL(`${config.path}${normalizeSrc(src)}`)\n  const params = url.searchParams\n\n  // auto params can be combined with comma separation, or reiteration\n  params.set('auto', params.getAll('auto').join(',') || 'format')\n  params.set('fit', params.get('fit') || 'max')\n  params.set('w', params.get('w') || width.toString())\n\n  if (quality) {\n    params.set('q', quality.toString())\n  }\n\n  return url.href\n}\n\nfunction akamaiLoader({\n  config,\n  src,\n  width,\n}: ImageLoaderPropsWithConfig): string {\n  return `${config.path}${normalizeSrc(src)}?imwidth=${width}`\n}\n\nfunction cloudinaryLoader({\n  config,\n  src,\n  width,\n  quality,\n}: ImageLoaderPropsWithConfig): string {\n  // Demo: https://res.cloudinary.com/demo/image/upload/w_300,c_limit,q_auto/turtles.jpg\n  const params = ['f_auto', 'c_limit', 'w_' + width, 'q_' + (quality || 'auto')]\n  const paramsString = params.join(',') + '/'\n  return `${config.path}${paramsString}${normalizeSrc(src)}`\n}\n\nfunction customLoader({ src }: ImageLoaderProps): string {\n  throw new Error(\n    `Image with src \"${src}\" is missing \"loader\" prop.` +\n      `\\nRead more: https://nextjs.org/docs/messages/next-image-missing-loader`\n  )\n}\n\nfunction defaultLoader({\n  config,\n  src,\n  width,\n  quality,\n}: ImageLoaderPropsWithConfig): string {\n  if (!config.dangerouslyAllowSVG && src.split('?', 1)[0].endsWith('.svg')) {\n    // Special case to make svg serve as-is to avoid proxying\n    // through the built-in Image Optimization API.\n    return src\n  }\n\n  // Extract dpl parameter early so validation uses the clean URL\n  let deploymentId = getDeploymentId()\n  if (src.startsWith('/') && !src.startsWith('//')) {\n    // We unfortunately can't easily use `new URL()` here, because it normalizes the URL which causes\n    // double-encoding with the `encodeURIComponent(src)` below\n    const qIndex = src.indexOf('?')\n    if (qIndex !== -1) {\n      const params = new URLSearchParams(src.slice(qIndex + 1))\n      const srcDpl = params.get('dpl')\n      if (srcDpl) {\n        deploymentId = srcDpl\n        params.delete('dpl')\n        const remaining = params.toString()\n        src = src.slice(0, qIndex) + (remaining ? '?' + remaining : '')\n      }\n    }\n  }\n\n  if (\n    src.startsWith('/') &&\n    src.includes('?') &&\n    config.localPatterns?.length === 1 &&\n    config.localPatterns[0].pathname === '**' &&\n    config.localPatterns[0].search === ''\n  ) {\n    throw new Error(\n      `Image with src \"${src}\" is using a query string which is not configured in images.localPatterns.` +\n        `\\nRead more: https://nextjs.org/docs/messages/next-image-unconfigured-localpatterns`\n    )\n  }\n\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('/') && config.localPatterns) {\n      if (\n        process.env.NODE_ENV !== 'test' &&\n        // micromatch isn't compatible with edge runtime\n        process.env.NEXT_RUNTIME !== 'edge'\n      ) {\n        // We use dynamic require because this should only error in development\n        const { hasLocalMatch } =\n          require('../../shared/lib/match-local-pattern') as typeof import('../../shared/lib/match-local-pattern')\n        if (!hasLocalMatch(config.localPatterns, src)) {\n          throw new Error(\n            `Invalid src prop (${src}) on \\`next/image\\` does not match \\`images.localPatterns\\` configured in your \\`next.config.js\\`\\n` +\n              `See more info: https://nextjs.org/docs/messages/next-image-unconfigured-localpatterns`\n          )\n        }\n      }\n    }\n\n    if (!src.startsWith('/') && (config.domains || config.remotePatterns)) {\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 (\n        process.env.NODE_ENV !== 'test' &&\n        // micromatch isn't compatible with edge runtime\n        process.env.NEXT_RUNTIME !== 'edge'\n      ) {\n        // We use dynamic require because this should only error in development\n        const { hasRemoteMatch } =\n          require('../../shared/lib/match-remote-pattern') as typeof import('../../shared/lib/match-remote-pattern')\n        if (!hasRemoteMatch(config.domains, config.remotePatterns, parsedSrc)) {\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://nextjs.org/docs/messages/next-image-unconfigured-host`\n          )\n        }\n      }\n    }\n  }\n\n  const q = findClosestQuality(quality, config)\n\n  return `${normalizePathTrailingSlash(config.path)}?url=${encodeURIComponent(\n    src\n  )}&w=${width}&q=${q}${\n    src.startsWith('/') && deploymentId ? `&dpl=${deploymentId}` : ''\n  }`\n}\n\nconst loaders = new Map<\n  LoaderValue,\n  (props: ImageLoaderPropsWithConfig) => string\n>([\n  ['default', defaultLoader],\n  ['imgix', imgixLoader],\n  ['cloudinary', cloudinaryLoader],\n  ['akamai', akamaiLoader],\n  ['custom', customLoader],\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 PlaceholderValue = 'blur' | 'empty'\n\ntype OnLoadingComplete = (result: {\n  naturalWidth: number\n  naturalHeight: number\n}) => void\n\ntype ImgElementStyle = NonNullable<JSX.IntrinsicElements['img']['style']>\n\ntype ImgElementWithDataProp = HTMLImageElement & {\n  'data-loaded-src': string | undefined\n}\n\nexport interface StaticImageData {\n  src: string\n  height: number\n  width: number\n  blurDataURL?: string\n}\n\ninterface StaticRequire {\n  default: StaticImageData\n}\n\ntype StaticImport = StaticRequire | StaticImageData\n\ntype SafeNumber = number | `${number}`\n\nfunction isStaticRequire(\n  src: StaticRequire | StaticImageData\n): src is StaticRequire {\n  return (src as StaticRequire).default !== undefined\n}\n\nfunction isStaticImageData(\n  src: StaticRequire | StaticImageData\n): src is StaticImageData {\n  return (src as StaticImageData).src !== undefined\n}\n\nfunction isStaticImport(src: string | StaticImport): src is StaticImport {\n  return (\n    typeof src === 'object' &&\n    (isStaticRequire(src as StaticImport) ||\n      isStaticImageData(src as StaticImport))\n  )\n}\n\nexport type ImageProps = Omit<\n  JSX.IntrinsicElements['img'],\n  'src' | 'srcSet' | 'ref' | 'width' | 'height' | 'loading'\n> & {\n  src: string | StaticImport\n  width?: SafeNumber\n  height?: SafeNumber\n  layout?: LayoutValue\n  loader?: ImageLoader\n  quality?: SafeNumber\n  priority?: boolean\n  loading?: LoadingValue\n  lazyRoot?: React.RefObject<HTMLElement | null> | null\n  lazyBoundary?: string\n  placeholder?: PlaceholderValue\n  blurDataURL?: string\n  unoptimized?: boolean\n  objectFit?: ImgElementStyle['objectFit']\n  objectPosition?: ImgElementStyle['objectPosition']\n  onLoadingComplete?: OnLoadingComplete\n}\n\ntype ImageElementProps = Omit<ImageProps, 'src' | 'loader'> & {\n  srcString: string\n  imgAttributes: GenImgAttrsResult\n  heightInt: number | undefined\n  widthInt: number | undefined\n  qualityInt: number | undefined\n  layout: LayoutValue\n  imgStyle: ImgElementStyle\n  blurStyle: ImgElementStyle\n  isLazy: boolean\n  loading: LoadingValue\n  config: ImageConfig\n  unoptimized: boolean\n  loader: ImageLoaderWithConfig\n  placeholder: PlaceholderValue\n  onLoadingCompleteRef: React.MutableRefObject<OnLoadingComplete | undefined>\n  setBlurComplete: (b: boolean) => void\n  setIntersection: (img: HTMLImageElement | null) => void\n  isVisible: boolean\n  noscriptSizes: string | undefined\n}\n\nfunction getWidths(\n  { deviceSizes, allSizes }: ImageConfig,\n  width: number | undefined,\n  layout: LayoutValue,\n  sizes: string | undefined\n): { widths: number[]; kind: 'w' | 'x' } {\n  if (sizes && (layout === 'fill' || layout === 'responsive')) {\n    // Find all the \"vw\" percent sizes used in the sizes prop\n    const viewportWidthRe = /(^|\\s)(1?\\d?\\d)vw/g\n    const percentSizes = []\n    for (let match; (match = viewportWidthRe.exec(sizes)); match) {\n      percentSizes.push(parseInt(match[2]))\n    }\n    if (percentSizes.length) {\n      const smallestRatio = Math.min(...percentSizes) * 0.01\n      return {\n        widths: allSizes.filter((s) => s >= deviceSizes[0] * smallestRatio),\n        kind: 'w',\n      }\n    }\n    return { widths: allSizes, kind: 'w' }\n  }\n  if (\n    typeof width !== 'number' ||\n    layout === 'fill' ||\n    layout === 'responsive'\n  ) {\n    return { widths: deviceSizes, kind: 'w' }\n  }\n\n  const widths = [\n    ...new Set(\n      // > This means that most OLED screens that say they are 3x resolution,\n      // > are actually 3x in the green color, but only 1.5x in the red and\n      // > blue colors. Showing a 3x resolution image in the app vs a 2x\n      // > resolution image will be visually the same, though the 3x image\n      // > takes significantly more data. Even true 3x resolution screens are\n      // > wasteful as the human eye cannot see that level of detail without\n      // > something like a magnifying glass.\n      // https://blog.twitter.com/engineering/en_us/topics/infrastructure/2019/capping-image-fidelity-on-ultra-high-resolution-devices.html\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 GenImgAttrsData = {\n  config: ImageConfig\n  src: string\n  unoptimized: boolean\n  layout: LayoutValue\n  loader: ImageLoaderWithConfig\n  width?: number\n  quality?: number\n  sizes?: string\n}\n\ntype GenImgAttrsResult = {\n  src: string\n  srcSet: string | undefined\n  sizes: string | undefined\n}\n\nfunction generateImgAttrs({\n  config,\n  src,\n  unoptimized,\n  layout,\n  width,\n  quality,\n  sizes,\n  loader,\n}: GenImgAttrsData): GenImgAttrsResult {\n  if (unoptimized) {\n    if (src.startsWith('/') && !src.startsWith('//')) {\n      let deploymentId = getDeploymentId()\n      if (deploymentId) {\n        // We unfortunately can't easily use `new URL()` here, because it normalizes the URL which causes\n        // double-encoding with the `encodeURIComponent(src)` below\n        const qIndex = src.indexOf('?')\n        if (qIndex !== -1) {\n          const params = new URLSearchParams(src.slice(qIndex + 1))\n          const srcDpl = params.get('dpl')\n          if (!srcDpl) {\n            // src is missing the dpl parameter, but we have a deploymentId, so add it to the src URL\n            params.append('dpl', deploymentId)\n            src = src.slice(0, qIndex) + '?' + params.toString()\n          }\n        } else {\n          // src is missing the dpl parameter, but we have a deploymentId, so add it to the src URL\n          src = src + `?dpl=${deploymentId}`\n        }\n      }\n    }\n    return { src, srcSet: undefined, sizes: undefined }\n  }\n\n  const { widths, kind } = getWidths(config, width, layout, sizes)\n  const last = widths.length - 1\n\n  return {\n    sizes: !sizes && kind === 'w' ? '100vw' : sizes,\n    srcSet: widths\n      .map(\n        (w, i) =>\n          `${loader({ config, src, quality, width: w })} ${\n            kind === 'w' ? w : i + 1\n          }${kind}`\n      )\n      .join(', '),\n\n    // It's intended to keep `src` the last attribute because React updates\n    // attributes in order. If we keep `src` the first one, Safari will\n    // immediately start to fetch `src`, before `sizes` and `srcSet` are even\n    // updated by React. That causes multiple unnecessary requests if `srcSet`\n    // and `sizes` are defined.\n    // This bug cannot be reproduced in Chrome or Firefox.\n    src: loader({ config, src, quality, width: widths[last] }),\n  }\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\nfunction defaultImageLoader(loaderProps: ImageLoaderPropsWithConfig) {\n  const loaderKey = loaderProps.config?.loader || 'default'\n  const load = loaders.get(loaderKey)\n  if (load) {\n    return load(loaderProps)\n  }\n  throw new Error(\n    `Unknown \"loader\" found in \"next.config.js\". Expected: ${VALID_LOADERS.join(\n      ', '\n    )}. Received: ${loaderKey}`\n  )\n}\n\n// See https://stackoverflow.com/q/39777833/266535 for why we use this ref\n// handler instead of the img's onLoad attribute.\nfunction handleLoading(\n  img: ImgElementWithDataProp,\n  src: string,\n  layout: LayoutValue,\n  placeholder: PlaceholderValue,\n  onLoadingCompleteRef: React.MutableRefObject<OnLoadingComplete | undefined>,\n  setBlurComplete: (b: boolean) => void\n) {\n  if (!img || img.src === emptyDataURL || img['data-loaded-src'] === src) {\n    return\n  }\n  img['data-loaded-src'] = src\n  const p = 'decode' in img ? img.decode() : Promise.resolve()\n  p.catch(() => {}).then(() => {\n    if (!img.parentNode) {\n      // Exit early in case of race condition:\n      // - onload() is called\n      // - decode() is called but incomplete\n      // - unmount is called\n      // - decode() completes\n      return\n    }\n    loadedImageURLs.add(src)\n    if (placeholder === 'blur') {\n      setBlurComplete(true)\n    }\n    if (onLoadingCompleteRef?.current) {\n      const { naturalWidth, naturalHeight } = img\n      // Pass back read-only primitive values but not the\n      // underlying DOM element because it could be misused.\n      onLoadingCompleteRef.current({ naturalWidth, naturalHeight })\n    }\n    if (process.env.NODE_ENV !== 'production') {\n      if (img.parentElement?.parentElement) {\n        const parent = getComputedStyle(img.parentElement.parentElement)\n        if (!parent.position) {\n          // The parent has not been rendered to the dom yet and therefore it has no position. Skip the warnings for such cases.\n        } else if (layout === 'responsive' && parent.display === 'flex') {\n          warnOnce(\n            `Image with src \"${src}\" may not render properly as a child of a flex container. Consider wrapping the image with a div to configure the width.`\n          )\n        } else if (\n          layout === 'fill' &&\n          parent.position !== 'relative' &&\n          parent.position !== 'fixed' &&\n          parent.position !== 'absolute'\n        ) {\n          warnOnce(\n            `Image with src \"${src}\" may not render properly with a parent using position:\"${parent.position}\". Consider changing the parent style to position:\"relative\" with a width and height.`\n          )\n        }\n      }\n    }\n  })\n}\n\nconst ImageElement = ({\n  imgAttributes,\n  heightInt,\n  widthInt,\n  qualityInt,\n  layout,\n  className,\n  imgStyle,\n  blurStyle,\n  isLazy,\n  placeholder,\n  loading,\n  srcString,\n  config,\n  unoptimized,\n  loader,\n  onLoadingCompleteRef,\n  setBlurComplete,\n  setIntersection,\n  onLoad,\n  onError,\n  isVisible,\n  noscriptSizes,\n  ...rest\n}: ImageElementProps) => {\n  loading = isLazy ? 'lazy' : loading\n  return (\n    <>\n      <img\n        {...rest}\n        {...imgAttributes}\n        decoding=\"async\"\n        data-nimg={layout}\n        className={className}\n        style={{ ...imgStyle, ...blurStyle }}\n        ref={useCallback(\n          (img: ImgElementWithDataProp) => {\n            if (process.env.NODE_ENV !== 'production') {\n              if (img && !srcString) {\n                console.error(`Image is missing required \"src\" property:`, img)\n              }\n            }\n            setIntersection(img)\n            if (img?.complete) {\n              handleLoading(\n                img,\n                srcString,\n                layout,\n                placeholder,\n                onLoadingCompleteRef,\n                setBlurComplete\n              )\n            }\n          },\n          [\n            setIntersection,\n            srcString,\n            layout,\n            placeholder,\n            onLoadingCompleteRef,\n            setBlurComplete,\n          ]\n        )}\n        onLoad={(event) => {\n          const img = event.currentTarget as ImgElementWithDataProp\n          handleLoading(\n            img,\n            srcString,\n            layout,\n            placeholder,\n            onLoadingCompleteRef,\n            setBlurComplete\n          )\n          if (onLoad) {\n            onLoad(event)\n          }\n        }}\n        onError={(event) => {\n          if (placeholder === 'blur') {\n            // If the real image fails to load, this will still remove the placeholder.\n            setBlurComplete(true)\n          }\n          if (onError) {\n            onError(event)\n          }\n        }}\n      />\n      {(isLazy || placeholder === 'blur') && (\n        <noscript>\n          <img\n            {...rest}\n            // @ts-ignore - TODO: upgrade to `@types/react@17`\n            loading={loading}\n            decoding=\"async\"\n            data-nimg={layout}\n            style={imgStyle}\n            className={className}\n            // It's intended to keep `loading` before `src` because React updates\n            // props in order which causes Safari/Firefox to not lazy load properly.\n            // See https://github.com/facebook/react/issues/25883\n            {...generateImgAttrs({\n              config,\n              src: srcString,\n              unoptimized,\n              layout,\n              width: widthInt,\n              quality: qualityInt,\n              sizes: noscriptSizes,\n              loader,\n            })}\n          />\n        </noscript>\n      )}\n    </>\n  )\n}\n\n/**\n * @deprecated The `next/legacy/image` component is deprecated and will be removed in a future version of Next.js. Please use `next/image` instead.\n */\nexport default function Image({\n  src,\n  sizes,\n  unoptimized = false,\n  priority = false,\n  loading,\n  lazyRoot = null,\n  lazyBoundary,\n  className,\n  quality,\n  width,\n  height,\n  style,\n  objectFit,\n  objectPosition,\n  onLoadingComplete,\n  placeholder = 'empty',\n  blurDataURL,\n  ...all\n}: ImageProps) {\n  const configContext = useContext(ImageConfigContext)\n  const config: ImageConfig = useMemo(() => {\n    const c = configEnv || configContext || imageConfigDefault\n    const allSizes = [...c.deviceSizes, ...c.imageSizes].sort((a, b) => a - b)\n    const deviceSizes = c.deviceSizes.sort((a, b) => a - b)\n    const qualities = c.qualities?.sort((a, b) => a - b)\n    return {\n      ...c,\n      allSizes,\n      deviceSizes,\n      qualities, // During the SSR, configEnv (__NEXT_IMAGE_OPTS) does not include\n      // security sensitive configs like `localPatterns`, which is needed\n      // during the server render to ensure it's validated. Therefore use\n      // configContext, which holds the config from the server for validation.\n      localPatterns:\n        typeof window === 'undefined'\n          ? configContext?.localPatterns\n          : c.localPatterns,\n    }\n  }, [configContext])\n\n  let rest: Partial<ImageProps> = all\n  let layout: NonNullable<LayoutValue> = sizes ? 'responsive' : 'intrinsic'\n  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 on <img>:\n    delete rest.layout\n  }\n\n  let loader: ImageLoaderWithConfig = defaultImageLoader\n  if ('loader' in rest) {\n    if (rest.loader) {\n      const customImageLoader = rest.loader\n      loader = (obj) => {\n        const { config: _, ...opts } = obj\n        // The config object is internal only so we must\n        // not pass it to the user-defined loader()\n        return customImageLoader(opts)\n      }\n    }\n    // Remove property so it's not spread on <img>\n    delete rest.loader\n  }\n\n  let staticSrc = ''\n  if (isStaticImport(src)) {\n    const staticImageData = isStaticRequire(src) ? src.default : src\n\n    if (!staticImageData.src) {\n      throw new Error(\n        `An object should only be passed to the image component src parameter if it comes from a static image import. It must include src. Received ${JSON.stringify(\n          staticImageData\n        )}`\n      )\n    }\n    blurDataURL = blurDataURL || staticImageData.blurDataURL\n    staticSrc = staticImageData.src\n    if (!layout || layout !== 'fill') {\n      height = height || staticImageData.height\n      width = width || staticImageData.width\n      if (!staticImageData.height || !staticImageData.width) {\n        throw new Error(\n          `An object should only be passed to the image component src parameter if it comes from a static image import. It must include height and width. Received ${JSON.stringify(\n            staticImageData\n          )}`\n        )\n      }\n    }\n  }\n  src = typeof src === 'string' ? src : staticSrc\n\n  warnOnce(\n    `Image with src \"${src}\" is using next/legacy/image which is deprecated and will be removed in a future version of Next.js.`\n  )\n\n  let isLazy =\n    !priority && (loading === 'lazy' || typeof loading === 'undefined')\n  if (src.startsWith('data:') || src.startsWith('blob:')) {\n    // https://developer.mozilla.org/docs/Web/HTTP/Basics_of_HTTP/Data_URIs\n    unoptimized = true\n    isLazy = false\n  }\n  if (typeof window !== 'undefined' && loadedImageURLs.has(src)) {\n    isLazy = false\n  }\n  if (config.unoptimized) {\n    unoptimized = true\n  }\n\n  const [blurComplete, setBlurComplete] = useState(false)\n  const [setIntersection, isIntersected, resetIntersected] =\n    useIntersection<HTMLImageElement>({\n      rootRef: lazyRoot,\n      rootMargin: lazyBoundary || '200px',\n      disabled: !isLazy,\n    })\n  const isVisible = !isLazy || isIntersected\n\n  const wrapperStyle: JSX.IntrinsicElements['span']['style'] = {\n    boxSizing: 'border-box',\n    display: 'block',\n    overflow: 'hidden',\n    width: 'initial',\n    height: 'initial',\n    background: 'none',\n    opacity: 1,\n    border: 0,\n    margin: 0,\n    padding: 0,\n  }\n  const sizerStyle: JSX.IntrinsicElements['span']['style'] = {\n    boxSizing: 'border-box',\n    display: 'block',\n    width: 'initial',\n    height: 'initial',\n    background: 'none',\n    opacity: 1,\n    border: 0,\n    margin: 0,\n    padding: 0,\n  }\n  let hasSizer = false\n  let sizerSvgUrl: string | undefined\n  const layoutStyle: ImgElementStyle = {\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\n  let widthInt = getInt(width)\n  let heightInt = getInt(height)\n  const qualityInt = getInt(quality)\n\n  if (process.env.NODE_ENV !== 'production') {\n    if (!src) {\n      // React doesn't show the stack trace and there's\n      // no `src` to help identify which image, so we\n      // instead console.error(ref) during mount.\n      widthInt = widthInt || 1\n      heightInt = heightInt || 1\n      unoptimized = true\n    } else {\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\n      if (\n        (typeof widthInt !== 'undefined' && isNaN(widthInt)) ||\n        (typeof heightInt !== 'undefined' && isNaN(heightInt))\n      ) {\n        throw new Error(\n          `Image with src \"${src}\" has invalid \"width\" or \"height\" property. These should be numeric values.`\n        )\n      }\n      if (layout === 'fill' && (width || height)) {\n        warnOnce(\n          `Image with src \"${src}\" and \"layout='fill'\" has unused properties assigned. Please remove \"width\" and \"height\".`\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 (sizes && layout !== 'fill' && layout !== 'responsive') {\n        warnOnce(\n          `Image with src \"${src}\" has \"sizes\" property but it will be ignored. Only use \"sizes\" with \"layout='fill'\" or \"layout='responsive'\"`\n        )\n      }\n      if (placeholder === 'blur') {\n        if (layout !== 'fill' && (widthInt || 0) * (heightInt || 0) < 1600) {\n          warnOnce(\n            `Image with src \"${src}\" is smaller than 40x40. Consider removing the \"placeholder='blur'\" property to improve performance.`\n          )\n        }\n        if (!blurDataURL) {\n          const VALID_BLUR_EXT = ['jpeg', 'png', 'webp', 'avif'] // should match next-image-loader\n\n          throw new Error(\n            `Image with src \"${src}\" has \"placeholder='blur'\" property but is missing the \"blurDataURL\" property.\n          Possible solutions:\n            - Add a \"blurDataURL\" property, the contents should be a small Data URL to represent the image\n            - Change the \"src\" property to a static import with one of the supported file types: ${VALID_BLUR_EXT.join(\n              ','\n            )} (animated images not supported)\n            - Remove the \"placeholder\" property, effectively no blur effect\n          Read more: https://nextjs.org/docs/messages/placeholder-blur-data-url`\n          )\n        }\n      }\n      if ('ref' in rest) {\n        warnOnce(\n          `Image with src \"${src}\" is using unsupported \"ref\" property. Consider using the \"onLoadingComplete\" property instead.`\n        )\n      }\n\n      if (\n        qualityInt &&\n        config.qualities &&\n        !config.qualities.includes(qualityInt)\n      ) {\n        warnOnce(\n          `Image with src \"${src}\" is using quality \"${qualityInt}\" which is not configured in images.qualities [${config.qualities.join(', ')}]. Please update your config to [${[...config.qualities, qualityInt].sort().join(', ')}].` +\n            `\\nRead more: https://nextjs.org/docs/messages/next-image-unconfigured-qualities`\n        )\n      }\n\n      if (!unoptimized && loader !== defaultImageLoader) {\n        const urlStr = loader({\n          config,\n          src,\n          width: widthInt || 400,\n          quality: qualityInt || 75,\n        })\n        let url: URL | undefined\n        try {\n          url = new URL(urlStr)\n        } catch (err) {}\n        if (urlStr === src || (url && url.pathname === src && !url.search)) {\n          warnOnce(\n            `Image with src \"${src}\" has a \"loader\" property that does not implement width. Please implement it or use the \"unoptimized\" property instead.` +\n              `\\nRead more: https://nextjs.org/docs/messages/next-image-missing-loader-width`\n          )\n        }\n      }\n\n      if (style) {\n        let overwrittenStyles = Object.keys(style).filter(\n          (key) => key in layoutStyle\n        )\n        if (overwrittenStyles.length) {\n          warnOnce(\n            `Image with src ${src} is assigned the following styles, which are overwritten by automatically-generated styles: ${overwrittenStyles.join(\n              ', '\n            )}`\n          )\n        }\n      }\n\n      if (\n        typeof window !== 'undefined' &&\n        !perfObserver &&\n        window.PerformanceObserver\n      ) {\n        perfObserver = new PerformanceObserver((entryList) => {\n          for (const entry of entryList.getEntries()) {\n            // @ts-ignore - missing \"LargestContentfulPaint\" class with \"element\" prop\n            const imgSrc = entry?.element?.src || ''\n            const lcpImage = allImgs.get(imgSrc)\n            if (\n              lcpImage &&\n              !lcpImage.priority &&\n              lcpImage.placeholder !== 'blur' &&\n              !lcpImage.src.startsWith('data:') &&\n              !lcpImage.src.startsWith('blob:')\n            ) {\n              // https://web.dev/lcp/#measure-lcp-in-javascript\n              warnOnce(\n                `Image with src \"${lcpImage.src}\" was detected as the Largest Contentful Paint (LCP). Please add the \"priority\" property if this image is above the fold.` +\n                  `\\nRead more: https://nextjs.org/docs/api-reference/next/legacy/image#priority`\n              )\n            }\n          }\n        })\n        try {\n          perfObserver.observe({\n            type: 'largest-contentful-paint',\n            buffered: true,\n          })\n        } catch (err) {\n          // Log error but don't crash the app\n          console.error(err)\n        }\n      }\n    }\n  }\n  const imgStyle = Object.assign({}, style, layoutStyle)\n  const blurStyle =\n    placeholder === 'blur' && !blurComplete\n      ? {\n          backgroundSize: objectFit || 'cover',\n          backgroundPosition: objectPosition || '0% 0%',\n          filter: 'blur(20px)',\n          backgroundImage: `url(\"${blurDataURL}\")`,\n        }\n      : {}\n  if (layout === 'fill') {\n    // <Image src=\"i.png\" layout=\"fill\" />\n    wrapperStyle.display = 'block'\n    wrapperStyle.position = 'absolute'\n    wrapperStyle.top = 0\n    wrapperStyle.left = 0\n    wrapperStyle.bottom = 0\n    wrapperStyle.right = 0\n  } else if (\n    typeof widthInt !== 'undefined' &&\n    typeof heightInt !== 'undefined'\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.display = 'block'\n      wrapperStyle.position = 'relative'\n      hasSizer = true\n      sizerStyle.paddingTop = paddingTop\n    } else if (layout === 'intrinsic') {\n      // <Image src=\"i.png\" width=\"100\" height=\"100\" layout=\"intrinsic\" />\n      wrapperStyle.display = 'inline-block'\n      wrapperStyle.position = 'relative'\n      wrapperStyle.maxWidth = '100%'\n      hasSizer = true\n      sizerStyle.maxWidth = '100%'\n      sizerSvgUrl = `data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%27${widthInt}%27%20height=%27${heightInt}%27/%3e`\n    } else if (layout === 'fixed') {\n      // <Image src=\"i.png\" width=\"100\" height=\"100\" layout=\"fixed\" />\n      wrapperStyle.display = 'inline-block'\n      wrapperStyle.position = 'relative'\n      wrapperStyle.width = widthInt\n      wrapperStyle.height = heightInt\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: emptyDataURL,\n    srcSet: undefined,\n    sizes: undefined,\n  }\n\n  if (isVisible) {\n    imgAttributes = generateImgAttrs({\n      config,\n      src,\n      unoptimized,\n      layout,\n      width: widthInt,\n      quality: qualityInt,\n      sizes,\n      loader,\n    })\n  }\n\n  let srcString: string = src\n\n  if (process.env.NODE_ENV !== 'production') {\n    if (typeof window !== 'undefined') {\n      let fullUrl: URL\n      try {\n        fullUrl = new URL(imgAttributes.src)\n      } catch (e) {\n        fullUrl = new URL(imgAttributes.src, window.location.href)\n      }\n      allImgs.set(fullUrl.href, { src, priority, placeholder })\n    }\n  }\n\n  const linkProps:\n    | React.DetailedHTMLProps<\n        React.LinkHTMLAttributes<HTMLLinkElement>,\n        HTMLLinkElement\n      >\n    | undefined = supportsFloat\n    ? undefined\n    : {\n        imageSrcSet: imgAttributes.srcSet,\n        imageSizes: imgAttributes.sizes,\n        crossOrigin: rest.crossOrigin,\n        referrerPolicy: rest.referrerPolicy,\n      }\n\n  const useLayoutEffect =\n    typeof window === 'undefined' ? React.useEffect : React.useLayoutEffect\n  const onLoadingCompleteRef = useRef(onLoadingComplete)\n\n  const previousImageSrc = useRef<string | StaticImport>(src)\n  useEffect(() => {\n    onLoadingCompleteRef.current = onLoadingComplete\n  }, [onLoadingComplete])\n\n  useLayoutEffect(() => {\n    if (previousImageSrc.current !== src) {\n      resetIntersected()\n      previousImageSrc.current = src\n    }\n  }, [resetIntersected, src])\n\n  const imgElementArgs = {\n    isLazy,\n    imgAttributes,\n    heightInt,\n    widthInt,\n    qualityInt,\n    layout,\n    className,\n    imgStyle,\n    blurStyle,\n    loading,\n    config,\n    unoptimized,\n    placeholder,\n    loader,\n    srcString,\n    onLoadingCompleteRef,\n    setBlurComplete,\n    setIntersection,\n    isVisible,\n    noscriptSizes: sizes,\n    ...rest,\n  }\n  return (\n    <>\n      <span style={wrapperStyle}>\n        {hasSizer ? (\n          <span style={sizerStyle}>\n            {sizerSvgUrl ? (\n              <img\n                style={{\n                  display: 'block',\n                  maxWidth: '100%',\n                  width: 'initial',\n                  height: 'initial',\n                  background: 'none',\n                  opacity: 1,\n                  border: 0,\n                  margin: 0,\n                  padding: 0,\n                }}\n                alt=\"\"\n                aria-hidden={true}\n                src={sizerSvgUrl}\n              />\n            ) : null}\n          </span>\n        ) : null}\n        <ImageElement {...imgElementArgs} />\n      </span>\n      {!supportsFloat && priority ? (\n        // Note how we omit the `href` attribute, as it would only be relevant\n        // for browsers that do not support `imagesrcset`, and in those cases\n        // it would likely cause the incorrect image to be preloaded.\n        //\n        // https://html.spec.whatwg.org/multipage/semantics.html#attr-link-imagesrcset\n        <Head>\n          <link\n            key={\n              '__nimg-' +\n              imgAttributes.src +\n              imgAttributes.srcSet +\n              imgAttributes.sizes\n            }\n            rel=\"preload\"\n            as=\"image\"\n            href={imgAttributes.srcSet ? undefined : imgAttributes.src}\n            {...linkProps}\n          />\n        </Head>\n      ) : null}\n    </>\n  )\n}\n"],"names":["React","useRef","useEffect","useCallback","useContext","useMemo","useState","ReactDOM","Head","imageConfigDefault","VALID_LOADERS","useIntersection","ImageConfigContext","warnOnce","normalizePathTrailingSlash","findClosestQuality","getDeploymentId","normalizeSrc","src","slice","supportsFloat","preload","configEnv","process","env","__NEXT_IMAGE_OPTS","loadedImageURLs","Set","allImgs","Map","perfObserver","emptyDataURL","window","globalThis","__NEXT_IMAGE_IMPORTED","VALID_LOADING_VALUES","undefined","imgixLoader","config","width","quality","url","URL","path","params","searchParams","set","getAll","join","get","toString","href","akamaiLoader","cloudinaryLoader","paramsString","customLoader","Error","defaultLoader","dangerouslyAllowSVG","split","endsWith","deploymentId","startsWith","qIndex","indexOf","URLSearchParams","srcDpl","delete","remaining","includes","localPatterns","length","pathname","search","NODE_ENV","missingValues","push","JSON","stringify","NEXT_RUNTIME","hasLocalMatch","require","domains","remotePatterns","parsedSrc","err","console","error","hasRemoteMatch","hostname","q","encodeURIComponent","loaders","VALID_LAYOUT_VALUES","isStaticRequire","default","isStaticImageData","isStaticImport","getWidths","deviceSizes","allSizes","layout","sizes","viewportWidthRe","percentSizes","match","exec","parseInt","smallestRatio","Math","min","widths","filter","s","kind","map","w","find","p","generateImgAttrs","unoptimized","loader","append","srcSet","last","i","getInt","x","defaultImageLoader","loaderProps","loaderKey","load","handleLoading","img","placeholder","onLoadingCompleteRef","setBlurComplete","decode","Promise","resolve","catch","then","parentNode","add","current","naturalWidth","naturalHeight","parentElement","parent","getComputedStyle","position","display","ImageElement","imgAttributes","heightInt","widthInt","qualityInt","className","imgStyle","blurStyle","isLazy","loading","srcString","setIntersection","onLoad","onError","isVisible","noscriptSizes","rest","decoding","data-nimg","style","ref","complete","event","currentTarget","noscript","Image","priority","lazyRoot","lazyBoundary","height","objectFit","objectPosition","onLoadingComplete","blurDataURL","all","configContext","c","imageSizes","sort","a","b","qualities","customImageLoader","obj","_","opts","staticSrc","staticImageData","has","blurComplete","isIntersected","resetIntersected","rootRef","rootMargin","disabled","wrapperStyle","boxSizing","overflow","background","opacity","border","margin","padding","sizerStyle","hasSizer","sizerSvgUrl","layoutStyle","top","left","bottom","right","minWidth","maxWidth","minHeight","maxHeight","String","isNaN","VALID_BLUR_EXT","urlStr","overwrittenStyles","Object","keys","key","PerformanceObserver","entryList","entry","getEntries","imgSrc","element","lcpImage","observe","type","buffered","assign","backgroundSize","backgroundPosition","backgroundImage","quotient","paddingTop","fullUrl","e","location","linkProps","imageSrcSet","crossOrigin","referrerPolicy","useLayoutEffect","previousImageSrc","imgElementArgs","span","alt","aria-hidden","link","rel","as"],"mappings":"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","ignoreList":[0]}