@urami/react
Version:
Automatic image optimization component for React
75 lines (74 loc) • 2.6 kB
JavaScript
var __defProp = Object.defineProperty;
var __defProps = Object.defineProperties;
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __propIsEnum = Object.prototype.propertyIsEnumerable;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __spreadValues = (a, b) => {
for (var prop in b || (b = {}))
if (__hasOwnProp.call(b, prop))
__defNormalProp(a, prop, b[prop]);
if (__getOwnPropSymbols)
for (var prop of __getOwnPropSymbols(b)) {
if (__propIsEnum.call(b, prop))
__defNormalProp(a, prop, b[prop]);
}
return a;
};
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
var __objRest = (source, exclude) => {
var target = {};
for (var prop in source)
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
target[prop] = source[prop];
if (source != null && __getOwnPropSymbols)
for (var prop of __getOwnPropSymbols(source)) {
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
target[prop] = source[prop];
}
return target;
};
// src/index.tsx
import { defaultLoader, buildSource } from "@urami/utils";
import { forwardRef } from "react";
import { jsx, jsxs } from "react/jsx-runtime";
var Image = forwardRef(
(_a, ref) => {
var _b = _a, { src, width, quality = 75, loader = defaultLoader, formats = ["webp", "jpg"] } = _b, rest = __objRest(_b, ["src", "width", "quality", "loader", "formats"]);
const sources = formats.slice(0, -1).map((format) => {
const builtProps = buildSource(loader, src, width, quality, format);
return /* @__PURE__ */ jsx(
"source",
{
srcSet: builtProps.srcSet,
type: `image/${format}`
},
format
);
});
const fallbackFormat = formats[formats.length - 1];
const fallbackProps = buildSource(loader, src, width, quality, fallbackFormat);
return /* @__PURE__ */ jsxs("picture", { children: [
sources,
/* @__PURE__ */ jsx(
"img",
__spreadProps(__spreadValues({
ref,
src: fallbackProps.src,
srcSet: fallbackProps.srcSet,
decoding: "async",
loading: "lazy"
}, rest), {
width,
height: rest.height
})
)
] });
}
);
var index_default = Image;
export {
index_default as default
};
//# sourceMappingURL=index.js.map