UNPKG

@nichoth/image

Version:
96 lines (95 loc) 3.54 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var preact_exports = {}; __export(preact_exports, { CloudinaryImage: () => CloudinaryImage, default: () => preact_default }); module.exports = __toCommonJS(preact_exports); var import_url_gen = require("@cloudinary/url-gen"); var import_resize = require("@cloudinary/url-gen/actions/resize"); var import_preact = require("preact"); var import_hooks = require("preact/hooks"); var import_srcset = require("./srcset.js"); const CloudinaryImage = /* @__PURE__ */ __name(function(config) { const { cloudName } = config; const cld = new import_url_gen.Cloudinary({ cloud: { cloudName }, url: { secure: true } }); const { defaultSrcset, getSrcset } = (0, import_srcset.CloudinarySrcset)(cld); const Image = /* @__PURE__ */ __name(function(props) { const { decoding, filename, alt, loading, fetchpriority, className, srcset, sizes } = props; return (0, import_preact.h)("img", { class: props.class || className, alt, srcset: srcset ? getSrcset(filename, srcset).join(", ") : defaultSrcset(filename), sizes: sizes ? sizes.join(", ") : "100vw", src: cld.image(filename).format("auto").toURL(), loading: loading || "lazy", decoding: decoding || "auto", fetchpriority: fetchpriority || "low" }); }, "Image"); const BlurredImage = /* @__PURE__ */ __name(function(props) { const { maxWidth, blurPlaceholder, filename, className, sizes, srcset } = props; const placeholder = (0, import_hooks.useRef)(null); (0, import_hooks.useEffect)(() => { if (!placeholder.current) return; const imgLarge = new window.Image(); const sources = srcset ? getSrcset(filename, srcset).join(", ") : defaultSrcset(filename); imgLarge.onload = () => imgLarge.classList.add("loaded"); imgLarge.setAttribute("sizes", sizes ? sizes.join(", ") : "100vw"); imgLarge.setAttribute("srcset", sources); imgLarge.classList.add("sharp"); imgLarge.src = cld.image(filename).format("auto").quality("auto").resize((0, import_resize.scale)().width(maxWidth)).toURL(); placeholder.current.appendChild(imgLarge); }, [placeholder.current]); const _class = props.class || className; return (0, import_preact.h)("div", { class: "placeholder" + (_class ? ` ${_class}` : ""), ref: placeholder }, [ (0, import_preact.h)("img", { class: "blurry loaded", src: blurPlaceholder }) ]); }, "BlurredImage"); return { Image, BlurredImage }; }, "CloudinaryImage"); var preact_default = CloudinaryImage;