mirror of
https://github.com/usememos/memos.git
synced 2025-06-05 22:09:59 +02:00
chore: add usage into heatmap (#1443)
This commit is contained in:
@ -14,14 +14,12 @@ interface Props extends DialogProps {
|
||||
}
|
||||
|
||||
interface State {
|
||||
angle: number;
|
||||
scale: number;
|
||||
originX: number;
|
||||
originY: number;
|
||||
}
|
||||
|
||||
const defaultState: State = {
|
||||
angle: 0,
|
||||
scale: 1,
|
||||
originX: -1,
|
||||
originY: -1,
|
||||
@ -104,36 +102,22 @@ const PreviewImageDialog: React.FC<Props> = ({ destroy, imgUrls, initialIndex }:
|
||||
}
|
||||
};
|
||||
|
||||
const handleImgRotate = (event: React.MouseEvent, angle: number) => {
|
||||
const curImgAngle = (state.angle + angle + 360) % 360;
|
||||
setState({
|
||||
...state,
|
||||
originX: -1,
|
||||
originY: -1,
|
||||
angle: curImgAngle,
|
||||
});
|
||||
};
|
||||
|
||||
const handleImgContainerScroll = (event: React.WheelEvent) => {
|
||||
const offsetX = event.nativeEvent.offsetX;
|
||||
const offsetY = event.nativeEvent.offsetY;
|
||||
const sign = event.deltaY < 0 ? 1 : -1;
|
||||
const curAngle = Math.max(MIN_SCALE, Math.min(MAX_SCALE, state.scale + sign * SCALE_UNIT));
|
||||
const scale = Math.max(MIN_SCALE, Math.min(MAX_SCALE, state.scale + sign * SCALE_UNIT));
|
||||
setState({
|
||||
...state,
|
||||
originX: offsetX,
|
||||
originY: offsetY,
|
||||
scale: curAngle,
|
||||
scale: scale,
|
||||
});
|
||||
};
|
||||
|
||||
const getImageComputedStyle = () => {
|
||||
return {
|
||||
transform: `scale(${state.scale}) rotate(${state.angle}deg)`,
|
||||
transformOrigin: `${state.originX === -1 ? "center" : `${state.originX}px`} ${
|
||||
state.originY === -1 ? "center" : `${state.originY}px`
|
||||
}`,
|
||||
};
|
||||
const imageComputedStyle = {
|
||||
transform: `scale(${state.scale})`,
|
||||
transformOrigin: `${state.originX === -1 ? "center" : `${state.originX}px`} ${state.originY === -1 ? "center" : `${state.originY}px`}`,
|
||||
};
|
||||
|
||||
return (
|
||||
@ -145,22 +129,16 @@ const PreviewImageDialog: React.FC<Props> = ({ destroy, imgUrls, initialIndex }:
|
||||
<button className="btn" onClick={handleDownloadBtnClick}>
|
||||
<Icon.Download className="icon-img" />
|
||||
</button>
|
||||
<button className="btn" onClick={(e) => handleImgRotate(e, -90)}>
|
||||
<Icon.RotateCcw className="icon-img" />
|
||||
</button>
|
||||
<button className="btn" onClick={(e) => handleImgRotate(e, 90)}>
|
||||
<Icon.RotateCw className="icon-img" />
|
||||
</button>
|
||||
</div>
|
||||
<div className="img-container" onClick={handleImgContainerClick}>
|
||||
<img
|
||||
style={imageComputedStyle}
|
||||
src={imgUrls[currentIndex]}
|
||||
onClick={(e) => e.stopPropagation()}
|
||||
onTouchStart={handleTouchStart}
|
||||
onTouchMove={handleTouchMove}
|
||||
onTouchEnd={handleTouchEnd}
|
||||
src={imgUrls[currentIndex]}
|
||||
onWheel={handleImgContainerScroll}
|
||||
style={getImageComputedStyle()}
|
||||
/>
|
||||
</div>
|
||||
</>
|
||||
|
Reference in New Issue
Block a user