forked from www/www-new
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
26 lines
852 B
26 lines
852 B
import React, { ImgHTMLAttributes } from "react";
|
|
|
|
import styles from "./Image.module.css";
|
|
|
|
export function Image(props: ImgHTMLAttributes<HTMLImageElement>) {
|
|
const classes = props.className
|
|
? [props.className, styles.image]
|
|
: [styles.image];
|
|
|
|
if (props.src?.startsWith("http://") || props.src?.startsWith("https://")) {
|
|
return <img {...props} className={classes.join(" ")} />;
|
|
}
|
|
|
|
const { src: relativeSrc = "" } = props;
|
|
|
|
let absoluteSrc = process.env.NEXT_PUBLIC_BASE_PATH ?? "/";
|
|
if (absoluteSrc.endsWith("/") && relativeSrc.startsWith("/")) {
|
|
absoluteSrc += relativeSrc.slice(1);
|
|
} else if (absoluteSrc.endsWith("/") || relativeSrc.startsWith("/")) {
|
|
absoluteSrc += relativeSrc;
|
|
} else {
|
|
absoluteSrc += "/" + relativeSrc;
|
|
}
|
|
|
|
return <img {...props} src={absoluteSrc} className={classes.join(" ")} />;
|
|
}
|
|
|