polymech-astro/packages/imagetools/api/utils/getPictureElement.js
2025-08-26 12:17:29 +02:00

44 lines
1.1 KiB
JavaScript

// @ts-check
import getAttributesString from "./getAttributesString.js";
export default function getPictureElement({
sources,
className,
layoutStyles,
pictureAttributes,
isBackgroundPicture = false,
}) {
const {
class: customClasses = "",
style: customInlineStyles = "",
...restPictureAttributes
} = pictureAttributes;
const attributesString = getAttributesString({
attributes: restPictureAttributes,
});
const classAttribute = ["imagetools-picture", className, customClasses]
.join(" ")
.trim();
const styleAttribute = [
isBackgroundPicture
? `position: absolute; z-index: 0; width: 100%; height: 100%; display: inline-block;`
: `position: relative; display: inline-block;`,
customInlineStyles + (customInlineStyles.endsWith(";") ? "" : ";"),
layoutStyles,
]
.join(" ")
.trim();
const pictureElement = `<picture
${attributesString}
class="${classAttribute}"
style="${styleAttribute}"
>${sources.join("\n")}
</picture>`;
return pictureElement;
}