Files
klz-cables.com/.pnpm-store/v10/files/8b/09076478d41d99e25d265d055b39253bdbaf16927e1aa785d2180c59715fd6e596ffd1c0511000f8ae42c217bf85b97d57cb806ca036d70939ca616aba80cf
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

87 lines
2.8 KiB
Plaintext

'use client';
import { jsx as _jsx } from "react/jsx-runtime";
import React from 'react';
import './index.scss';
const handleDragOver = e => {
e.preventDefault();
e.stopPropagation();
};
const baseClass = 'dropzone';
export function Dropzone({
children,
className,
disabled = false,
dropzoneStyle = 'default',
multipleFiles,
onChange
}) {
const dropRef = React.useRef(null);
const [dragging, setDragging] = React.useState(false);
const addFiles = React.useCallback(files => {
if (!multipleFiles && files.length > 1) {
const dataTransfer = new DataTransfer();
dataTransfer.items.add(files[0]);
onChange(dataTransfer.files);
} else {
onChange(files);
}
}, [multipleFiles, onChange]);
const handlePaste = React.useCallback(e => {
e.preventDefault();
e.stopPropagation();
if (e.clipboardData.files && e.clipboardData.files.length > 0) {
addFiles(e.clipboardData.files);
}
}, [addFiles]);
const handleDragEnter = React.useCallback(e_0 => {
e_0.preventDefault();
e_0.stopPropagation();
setDragging(true);
}, []);
const handleDragLeave = React.useCallback(e_1 => {
e_1.preventDefault();
e_1.stopPropagation();
setDragging(false);
}, []);
const handleDrop = React.useCallback(e_2 => {
e_2.preventDefault();
e_2.stopPropagation();
setDragging(false);
if (e_2.dataTransfer.files && e_2.dataTransfer.files.length > 0) {
addFiles(e_2.dataTransfer.files);
setDragging(false);
try {
e_2.dataTransfer.clearData();
} catch {
// Firefox throws NoModificationAllowedError when calling clearData() on a protected DataTransfer during drop events
// https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/clearData#exceptions
}
}
}, [addFiles]);
React.useEffect(() => {
const div = dropRef.current;
if (div && !disabled) {
div.addEventListener('dragenter', handleDragEnter);
div.addEventListener('dragleave', handleDragLeave);
div.addEventListener('dragover', handleDragOver);
div.addEventListener('drop', handleDrop);
div.addEventListener('paste', handlePaste);
return () => {
div.removeEventListener('dragenter', handleDragEnter);
div.removeEventListener('dragleave', handleDragLeave);
div.removeEventListener('dragover', handleDragOver);
div.removeEventListener('drop', handleDrop);
div.removeEventListener('paste', handlePaste);
};
}
return () => null;
}, [disabled, handleDragEnter, handleDragLeave, handleDrop, handlePaste]);
const classes = [baseClass, className, dragging ? 'dragging' : '', `dropzoneStyle--${dropzoneStyle}`].filter(Boolean).join(' ');
return /*#__PURE__*/_jsx("div", {
className: classes,
ref: dropRef,
children: children
});
}
//# sourceMappingURL=index.js.map