Files
klz-cables.com/.pnpm-store/v10/files/a1/6e7f33864f3528ec287798e10c77f9249ef9c484fa374b7a900d60955e4fc9decd2b63a734c17e48009b977525175c058822df2d05213fc74ab5ac97bf0d51
Marc Mintel 5397309103
Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
fix(products): fix breadcrumbs and product filtering (backport from main)
2026-02-24 16:04:21 +01:00

142 lines
4.1 KiB
Plaintext

'use client';
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
import React, { useEffect, useMemo, useState } from 'react';
import { FileMeta } from '../FileDetails/FileMeta/index.js';
import './index.scss';
const baseClass = 'preview-sizes';
const sortSizes = (sizes, imageSizes) => {
if (!imageSizes || imageSizes.length === 0) {
return sizes;
}
const orderedSizes = {};
imageSizes.forEach(({
name
}) => {
if (sizes[name]) {
orderedSizes[name] = sizes[name];
}
});
return orderedSizes;
};
const PreviewSizeCard = ({
name,
active,
alt,
meta,
onClick,
previewSrc
}) => {
return /*#__PURE__*/_jsxs("div", {
className: [`${baseClass}__sizeOption`, active && `${baseClass}--selected`].filter(Boolean).join(' '),
onClick: typeof onClick === 'function' ? onClick : undefined,
onKeyDown: e => {
if (typeof onClick !== 'function') {
return;
}
if (e.key === 'Enter') {
onClick();
}
},
role: "button",
tabIndex: 0,
children: [/*#__PURE__*/_jsx("div", {
className: `${baseClass}__image`,
children: /*#__PURE__*/_jsx("img", {
alt: alt,
src: previewSrc
})
}), /*#__PURE__*/_jsxs("div", {
className: `${baseClass}__sizeMeta`,
children: [/*#__PURE__*/_jsx("div", {
className: `${baseClass}__sizeName`,
children: name
}), /*#__PURE__*/_jsx(FileMeta, {
...meta
})]
})]
});
};
export const PreviewSizes = ({
doc,
imageCacheTag,
uploadConfig
}) => {
const {
imageSizes
} = uploadConfig;
const {
sizes
} = doc;
const alt = doc?.alt || doc.filename || '';
const [orderedSizes, setOrderedSizes] = useState(() => sortSizes(sizes, imageSizes));
const [selectedSize, setSelectedSize] = useState(null);
const generateImageUrl = doc_0 => {
if (!doc_0.filename) {
return null;
}
if (doc_0.url) {
return `${doc_0.url}${imageCacheTag ? `?${encodeURIComponent(imageCacheTag)}` : ''}`;
}
};
useEffect(() => {
setOrderedSizes(sortSizes(sizes, imageSizes));
}, [sizes, imageSizes, imageCacheTag]);
const mainPreviewSrc = selectedSize ? generateImageUrl(doc.sizes[selectedSize]) : generateImageUrl(doc);
const originalImage = useMemo(() => ({
filename: doc.filename,
filesize: doc.filesize,
height: doc.height,
mimeType: doc.mimeType,
url: doc.url,
width: doc.width
}), [doc]);
const originalFilename = 'Original';
return /*#__PURE__*/_jsxs("div", {
className: baseClass,
children: [/*#__PURE__*/_jsxs("div", {
className: `${baseClass}__imageWrap`,
children: [/*#__PURE__*/_jsxs("div", {
className: `${baseClass}__meta`,
children: [/*#__PURE__*/_jsx("div", {
className: `${baseClass}__sizeName`,
children: selectedSize || originalFilename
}), /*#__PURE__*/_jsx(FileMeta, {
...(selectedSize ? orderedSizes[selectedSize] : originalImage)
})]
}), /*#__PURE__*/_jsx("img", {
alt: alt,
className: `${baseClass}__preview`,
src: mainPreviewSrc
})]
}), /*#__PURE__*/_jsx("div", {
className: `${baseClass}__listWrap`,
children: /*#__PURE__*/_jsxs("div", {
className: `${baseClass}__list`,
children: [/*#__PURE__*/_jsx(PreviewSizeCard, {
active: !selectedSize,
alt: alt,
meta: originalImage,
name: originalFilename,
onClick: () => setSelectedSize(null),
previewSrc: generateImageUrl(doc)
}), Object.entries(orderedSizes).map(([key, val]) => {
const selected = selectedSize === key;
const previewSrc = generateImageUrl(val);
if (previewSrc) {
return /*#__PURE__*/_jsx(PreviewSizeCard, {
active: selected,
alt: alt,
meta: val,
name: key,
onClick: () => setSelectedSize(key),
previewSrc: previewSrc
}, key);
}
return null;
})]
})
})]
});
};
//# sourceMappingURL=index.js.map