{"version":3,"file":"Image.mjs","sources":["../../src/image/Image.tsx"],"sourcesContent":["import { clsx } from 'clsx';\nimport { useRef, useCallback } from 'react';\n\nimport { useHasIntersected } from '../common/hooks';\n\nexport interface ImageProps {\n  alt: string;\n  src: string;\n  id?: string;\n  onLoad?: () => void;\n  onError?: () => void;\n  className?: string;\n  /**\n   * Specifies the [loading behavior of the image](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/img#loading).\n   */\n  loading?: 'lazy' | 'eager';\n  stretch?: boolean;\n  role?: string;\n  shrink?: boolean;\n}\n\nconst Image = ({\n  id,\n  src,\n  alt,\n  onLoad,\n  onError,\n  className,\n  loading,\n  stretch = true,\n  role,\n  shrink = true,\n}: ImageProps) => {\n  const elementReference = useRef<HTMLImageElement>(null);\n  const [hasIntersected] = useHasIntersected({ elRef: elementReference, loading });\n\n  // Internal onLoad handler that calls user onLoad only if hasIntersected is true\n  const handleLoad = useCallback(() => {\n    if (hasIntersected && onLoad) {\n      onLoad();\n    }\n  }, [hasIntersected, onLoad]);\n\n  return (\n    <img\n      ref={elementReference}\n      id={id}\n      alt={alt}\n      src={src}\n      loading={loading}\n      className={clsx([\n        'tw-image',\n        {\n          'tw-image__stretch': stretch,\n          'tw-image__shrink': shrink,\n        },\n        className,\n      ])}\n      role={role}\n      onLoad={handleLoad}\n      onError={onError}\n    />\n  );\n};\n\nexport default Image;\n"],"names":["Image","id","src","alt","onLoad","onError","className","loading","stretch","role","shrink","elementReference","useRef","hasIntersected","useHasIntersected","elRef","handleLoad","useCallback","_jsx","ref","clsx"],"mappings":";;;;;;;;AAqBA,MAAMA,KAAK,GAAGA,CAAC;EACbC,EAAE;EACFC,GAAG;EACHC,GAAG;EACHC,MAAM;EACNC,OAAO;EACPC,SAAS;EACTC,OAAO;AACPC,EAAAA,OAAO,GAAG,IAAI;EACdC,IAAI;AACJC,EAAAA,MAAM,GAAG;AAAI,CACF,KAAI;AACf,EAAA,MAAMC,gBAAgB,GAAGC,MAAM,CAAmB,IAAI,CAAC;AACvD,EAAA,MAAM,CAACC,cAAc,CAAC,GAAGC,iBAAiB,CAAC;AAAEC,IAAAA,KAAK,EAAEJ,gBAAgB;AAAEJ,IAAAA;AAAO,GAAE,CAAC;AAEhF;AACA,EAAA,MAAMS,UAAU,GAAGC,WAAW,CAAC,MAAK;IAClC,IAAIJ,cAAc,IAAIT,MAAM,EAAE;AAC5BA,MAAAA,MAAM,EAAE;AACV,IAAA;AACF,EAAA,CAAC,EAAE,CAACS,cAAc,EAAET,MAAM,CAAC,CAAC;AAE5B,EAAA,oBACEc,GAAA,CAAA,KAAA,EAAA;AACEC,IAAAA,GAAG,EAAER,gBAAiB;AACtBV,IAAAA,EAAE,EAAEA,EAAG;AACPE,IAAAA,GAAG,EAAEA,GAAI;AACTD,IAAAA,GAAG,EAAEA,GAAI;AACTK,IAAAA,OAAO,EAAEA,OAAQ;AACjBD,IAAAA,SAAS,EAAEc,IAAI,CAAC,CACd,UAAU,EACV;AACE,MAAA,mBAAmB,EAAEZ,OAAO;AAC5B,MAAA,kBAAkB,EAAEE;KACrB,EACDJ,SAAS,CACV,CAAE;AACHG,IAAAA,IAAI,EAAEA,IAAK;AACXL,IAAAA,MAAM,EAAEY,UAAW;AACnBX,IAAAA,OAAO,EAAEA;AAAQ,GAAA,CACjB;AAEN;;;;"}