@mantine/core
Version:
React components library focused on usability, accessibility and developer experience
60 lines (59 loc) • 1.91 kB
JavaScript
"use client";
import { getRadius } from "../../core/utils/get-size/get-size.mjs";
import { createVarsResolver } from "../../core/styles-api/create-vars-resolver/create-vars-resolver.mjs";
import { useProps } from "../../core/MantineProvider/use-props/use-props.mjs";
import { useStyles } from "../../core/styles-api/use-styles/use-styles.mjs";
import { polymorphicFactory } from "../../core/factory/polymorphic-factory.mjs";
import { Box } from "../../core/Box/Box.mjs";
import Image_module_default from "./Image.module.mjs";
import { useEffect, useState } from "react";
import { jsx } from "react/jsx-runtime";
//#region packages/@mantine/core/src/components/Image/Image.tsx
const varsResolver = createVarsResolver((_, { radius, fit }) => ({ root: {
"--image-radius": radius === void 0 ? void 0 : getRadius(radius),
"--image-object-fit": fit
} }));
const Image = polymorphicFactory((_props) => {
const props = useProps("Image", null, _props);
const { classNames, className, style, styles, unstyled, vars, onError, src, radius, fit, fallbackSrc, mod, attributes, ...others } = props;
const [error, setError] = useState(!src);
useEffect(() => setError(!src), [src]);
const getStyles = useStyles({
name: "Image",
classes: Image_module_default,
props,
className,
style,
classNames,
styles,
unstyled,
attributes,
vars,
varsResolver
});
if (error && fallbackSrc) return /* @__PURE__ */ jsx(Box, {
component: "img",
src: fallbackSrc,
...getStyles("root"),
onError,
mod: ["fallback", mod],
...others
});
return /* @__PURE__ */ jsx(Box, {
component: "img",
...getStyles("root"),
src,
onError: (event) => {
onError?.(event);
setError(true);
},
mod,
...others
});
});
Image.classes = Image_module_default;
Image.varsResolver = varsResolver;
Image.displayName = "@mantine/core/Image";
//#endregion
export { Image };
//# sourceMappingURL=Image.mjs.map