Freeze zooming on mouse click.
This commit is contained in:
parent
9936d763a7
commit
8826f6dee5
20
src/App.js
20
src/App.js
@ -10,6 +10,7 @@ class App extends React.Component {
|
|||||||
this.state = {
|
this.state = {
|
||||||
data: null,
|
data: null,
|
||||||
isFetching: false,
|
isFetching: false,
|
||||||
|
isFrozen: false,
|
||||||
isZoomed: false,
|
isZoomed: false,
|
||||||
zoomFactor: 16,
|
zoomFactor: 16,
|
||||||
x: 0,
|
x: 0,
|
||||||
@ -34,6 +35,7 @@ class App extends React.Component {
|
|||||||
let imgs = [];
|
let imgs = [];
|
||||||
let {
|
let {
|
||||||
data,
|
data,
|
||||||
|
isFrozen,
|
||||||
isZoomed,
|
isZoomed,
|
||||||
x,
|
x,
|
||||||
y,
|
y,
|
||||||
@ -41,18 +43,28 @@ class App extends React.Component {
|
|||||||
} = this.state;
|
} = this.state;
|
||||||
if (data !== null) {
|
if (data !== null) {
|
||||||
let {ratio, timestamp, images, size} = data;
|
let {ratio, timestamp, images, size} = data;
|
||||||
console.log('size', size);
|
|
||||||
let width = 512;
|
let width = 512;
|
||||||
let height = (ratio * width).toFixed();
|
let height = (ratio * width).toFixed();
|
||||||
|
const mouseClick = (e) => {
|
||||||
|
console.log('isFrozen', isFrozen, 'this.state.isFrozen', this.state.isFrozen);
|
||||||
|
this.setState({isFrozen: !this.state.isFrozen});
|
||||||
|
};
|
||||||
const mouseEnter = (e) => {
|
const mouseEnter = (e) => {
|
||||||
console.log('mouseEnter');
|
if (isFrozen) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
this.setState({isZoomed: true});
|
this.setState({isZoomed: true});
|
||||||
};
|
};
|
||||||
const mouseLeave = (e) => {
|
const mouseLeave = (e) => {
|
||||||
console.log('mouseLeave');
|
if (isFrozen) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
this.setState({isZoomed: false});
|
this.setState({isZoomed: false});
|
||||||
};
|
};
|
||||||
const mouseMove = (e) => {
|
const mouseMove = (e) => {
|
||||||
|
if (isFrozen) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
let rect = e.currentTarget.getBoundingClientRect();
|
let rect = e.currentTarget.getBoundingClientRect();
|
||||||
let x = e.clientX - rect.left;
|
let x = e.clientX - rect.left;
|
||||||
let y = e.clientY - rect.top;
|
let y = e.clientY - rect.top;
|
||||||
@ -65,11 +77,11 @@ class App extends React.Component {
|
|||||||
backgroundSize: isZoomed ? zoomFactor * size[0] + 'px ' + zoomFactor * size[1] + 'px' : 'contain',
|
backgroundSize: isZoomed ? zoomFactor * size[0] + 'px ' + zoomFactor * size[1] + 'px' : 'contain',
|
||||||
backgroundPosition: isZoomed ? 100*x + '% ' + 100*y + '%' : 'center center',
|
backgroundPosition: isZoomed ? 100*x + '% ' + 100*y + '%' : 'center center',
|
||||||
};
|
};
|
||||||
console.log('isZoomed', isZoomed);
|
|
||||||
imgs = images.map((name) => {
|
imgs = images.map((name) => {
|
||||||
let url = ROOT + name + '?t=' + timestamp;
|
let url = ROOT + name + '?t=' + timestamp;
|
||||||
return (
|
return (
|
||||||
<div key={name}
|
<div key={name}
|
||||||
|
onClick={mouseClick}
|
||||||
onMouseMove={mouseMove}
|
onMouseMove={mouseMove}
|
||||||
onMouseEnter={mouseEnter}
|
onMouseEnter={mouseEnter}
|
||||||
onMouseLeave={mouseLeave}
|
onMouseLeave={mouseLeave}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user