UNPKG

dbm

Version:

56 lines (42 loc) 1.98 kB
import Dbm from "../../index.js"; import React from "react"; export default class CoverScaledImage extends Dbm.react.BaseObject { _construct() { super._construct(); } _removedUsedProps(aProps) { delete aProps["image"]; delete aProps["targetWidth"]; delete aProps["targetHeight"]; delete aProps["skipWindowSize"]; } _renderMainElement() { let image = this.getPropValue("image"); let width = this.getPropValue("targetWidth"); let height = this.getPropValue("targetHeight"); let url; if(this.getPropValue("skipWindowSize")) { url = Dbm.utils.UrlFunctions.createCoverScaledImageUrlWithPixelDensity(image, width, height, Math.floor(window.devicePixelRatio), 10000); } else { url = Dbm.utils.UrlFunctions.createCoverScaledImageUrl(image, width, height); } let newProps = this._copyProps({src: url}); let altText = Dbm.objectPath(image, "altText"); if(altText) { newProps["alt"] = altText; } let elementType = this.getPropValue("elementType"); if(elementType) { newProps["elementType"] = elementType; if(elementType === "img" && Dbm.utils.UrlFunctions.imageShouldScale(image)) { let images = []; images.push(Dbm.utils.UrlFunctions.createCoverScaledImageUrlWithPixelDensity(image, width, height, 1, 10000) + " 1x"); images.push(Dbm.utils.UrlFunctions.createCoverScaledImageUrlWithPixelDensity(image, width, height, 2, 10000) + " 2x"); images.push(Dbm.utils.UrlFunctions.createCoverScaledImageUrlWithPixelDensity(image, width, height, 3, 10000) + " 3x"); newProps["srcset"] = images.join(", "); } } return React.createElement(Dbm.react.image.Image, newProps, this.getPropValue("children")); } }