UNPKG

tethysfaceid

Version:

1 lines 37.4 kB
{"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"}