UNPKG

@chakra-ui/image

Version:

React component for progressive image loading

92 lines (88 loc) 2 kB
'use client' import { NativeImage } from "./chunk-X3PS6RUF.mjs"; import { shouldShowFallbackImage, useImage } from "./chunk-SPIKMR6I.mjs"; // src/image.tsx import { chakra, forwardRef } from "@chakra-ui/system"; // ../../utilities/object-utils/src/omit.ts function omit(object, keysToOmit = []) { const clone = Object.assign({}, object); for (const key of keysToOmit) { if (key in clone) { delete clone[key]; } } return clone; } // src/image.tsx import { jsx } from "react/jsx-runtime"; var Image = forwardRef(function Image2(props, ref) { const { fallbackSrc, fallback, src, srcSet, align, fit, loading, ignoreFallback, crossOrigin, fallbackStrategy = "beforeLoadOrError", referrerPolicy, ...rest } = props; const providedFallback = fallbackSrc !== void 0 || fallback !== void 0; const shouldIgnoreFallbackImage = loading != null || // use can opt out of fallback image ignoreFallback || // if the user doesn't provide any kind of fallback we should ignore it !providedFallback; const status = useImage({ ...props, crossOrigin, ignoreFallback: shouldIgnoreFallbackImage }); const showFallbackImage = shouldShowFallbackImage(status, fallbackStrategy); const shared = { ref, objectFit: fit, objectPosition: align, ...shouldIgnoreFallbackImage ? rest : omit(rest, ["onError", "onLoad"]) }; if (showFallbackImage) { if (fallback) return fallback; return /* @__PURE__ */ jsx( chakra.img, { as: NativeImage, className: "chakra-image__placeholder", src: fallbackSrc, ...shared } ); } return /* @__PURE__ */ jsx( chakra.img, { as: NativeImage, src, srcSet, crossOrigin, loading, referrerPolicy, className: "chakra-image", ...shared } ); }); Image.displayName = "Image"; export { Image }; //# sourceMappingURL=chunk-QINAG4RG.mjs.map