eduardo4547's picture
Upload 150 files
cb5d9d0 verified
import React from "react";
interface MaskLayerProps {
maskUrl: string;
color: string;
onMouseEnter: (maskUrl: string) => void;
onClick: (maskUrl: string) => void;
}
/**
* Componente para renderizar una única capa de máscara.
* Usa React.memo para evitar re-renderizados si las props no cambian.
*/
const MaskLayer = React.memo(function MaskLayer({
maskUrl,
color,
onMouseEnter,
onClick,
}: MaskLayerProps) {
// Creamos los manejadores de eventos aquí para pasar la URL de la máscara.
// Como el componente está memoizado, estas funciones solo se recrean si las props cambian.
const handleMouseEnter = () => onMouseEnter(maskUrl);
const handleClick = () => onClick(maskUrl);
return (
<div
className="absolute top-0 left-0 w-full h-full transition-opacity duration-200"
style={{
backgroundColor: color,
maskImage: `url(${maskUrl})`,
WebkitMaskImage: `url(${maskUrl})`,
maskSize: "contain",
WebkitMaskSize: "contain",
maskRepeat: "no-repeat",
WebkitMaskRepeat: "no-repeat",
maskPosition: "center",
WebkitMaskPosition: "center",
}}
onMouseEnter={handleMouseEnter}
onClick={handleClick}
/>
);
});
export default MaskLayer;