| import React from "react"; |
|
|
| interface MaskLayerProps { |
| maskUrl: string; |
| color: string; |
| onMouseEnter: (maskUrl: string) => void; |
| onClick: (maskUrl: string) => void; |
| } |
|
|
| |
| |
| |
| |
| const MaskLayer = React.memo(function MaskLayer({ |
| maskUrl, |
| color, |
| onMouseEnter, |
| onClick, |
| }: MaskLayerProps) { |
| |
| |
| 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; |
|
|