{"version":3,"file":"image.cjs","sources":["../src/image/imageLoader.ts","../src/image/Image.tsx"],"sourcesContent":["import type {ImageLoader} from 'next/image'\n\n/**\n * @alpha\n */\nexport const imageLoader = (({src, width, quality}) => {\n  const url = new URL(src)\n  url.searchParams.set('auto', 'format')\n  if (!url.searchParams.has('fit')) {\n    url.searchParams.set('fit', url.searchParams.has('h') ? 'min' : 'max')\n  }\n  if (url.searchParams.has('h') && url.searchParams.has('w')) {\n    const originalHeight = parseInt(url.searchParams.get('h')!, 10)\n    const originalWidth = parseInt(url.searchParams.get('w')!, 10)\n    url.searchParams.set('h', Math.round((originalHeight / originalWidth) * width).toString())\n  }\n  url.searchParams.set('w', width.toString())\n  if (quality) {\n    url.searchParams.set('q', quality.toString())\n  }\n  return url.href\n}) satisfies ImageLoader\n","import NextImage, {type ImageProps as NextImageProps} from 'next/image'\n\nimport {imageLoader} from './imageLoader'\n\n/**\n * @alpha\n */\nexport interface ImageProps extends Omit<NextImageProps, 'loader' | 'src'> {\n  /**\n   * The `loader` prop is not supported on `Image` components. Use `next/image` directly to use a custom loader.\n   */\n  loader?: never\n  /**\n   * Must be a string that is a valid URL to an image on the Sanity Image CDN.\n   */\n  src: string\n}\n\n/**\n * @alpha\n */\nexport function Image(props: ImageProps): React.JSX.Element {\n  const {loader, src, ...rest} = props\n  if (loader) {\n    throw new TypeError(\n      'The `loader` prop is not supported on `Image` components. Use `next/image` directly to use a custom loader.',\n    )\n  }\n  let srcUrl: URL\n  try {\n    srcUrl = new URL(src)\n    if (props.height) {\n      srcUrl.searchParams.set('h', `${props.height}`)\n    }\n    if (props.width) {\n      srcUrl.searchParams.set('w', `${props.width}`)\n    }\n  } catch (err) {\n    throw new TypeError('The `src` prop must be a valid URL to an image on the Sanity Image CDN.', {\n      cause: err,\n    })\n  }\n  return <NextImage {...rest} src={srcUrl.toString()} loader={imageLoader} />\n}\n"],"names":["jsx","NextImage"],"mappings":";;;;;;;;AAKO,MAAM,cAAe,CAAC,EAAC,KAAK,OAAO,cAAa;AAC/C,QAAA,MAAM,IAAI,IAAI,GAAG;AAKvB,MAJA,IAAI,aAAa,IAAI,QAAQ,QAAQ,GAChC,IAAI,aAAa,IAAI,KAAK,KAC7B,IAAI,aAAa,IAAI,OAAO,IAAI,aAAa,IAAI,GAAG,IAAI,QAAQ,KAAK,GAEnE,IAAI,aAAa,IAAI,GAAG,KAAK,IAAI,aAAa,IAAI,GAAG,GAAG;AAC1D,UAAM,iBAAiB,SAAS,IAAI,aAAa,IAAI,GAAG,GAAI,EAAE,GACxD,gBAAgB,SAAS,IAAI,aAAa,IAAI,GAAG,GAAI,EAAE;AACzD,QAAA,aAAa,IAAI,KAAK,KAAK,MAAO,iBAAiB,gBAAiB,KAAK,EAAE,SAAA,CAAU;AAAA,EAAA;AAE3F,SAAA,IAAI,aAAa,IAAI,KAAK,MAAM,SAAA,CAAU,GACtC,WACF,IAAI,aAAa,IAAI,KAAK,QAAQ,SAAU,CAAA,GAEvC,IAAI;AACb;ACAO,SAAS,MAAM,OAAsC;AAC1D,QAAM,EAAC,QAAQ,KAAK,GAAG,KAAQ,IAAA;AAC3B,MAAA;AACF,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAEE,MAAA;AACA,MAAA;AACO,aAAA,IAAI,IAAI,GAAG,GAChB,MAAM,UACR,OAAO,aAAa,IAAI,KAAK,GAAG,MAAM,MAAM,EAAE,GAE5C,MAAM,SACR,OAAO,aAAa,IAAI,KAAK,GAAG,MAAM,KAAK,EAAE;AAAA,WAExC,KAAK;AACN,UAAA,IAAI,UAAU,2EAA2E;AAAA,MAC7F,OAAO;AAAA,IAAA,CACR;AAAA,EAAA;AAEI,SAAAA,+BAACC,mBAAAA,WAAW,GAAG,MAAM,KAAK,OAAO,SAAY,GAAA,QAAQ,aAAa;AAC3E;;;"}