mirror of https://github.com/zulip/zulip.git
lightbox_canvas: Convert LightboxCanvas to an ES6 class.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
parent
d5a0ee612f
commit
fc21417d67
|
@ -62,7 +62,7 @@ const funcs = {
|
||||||
// props don't exist, so we need to create them as a difference of
|
// props don't exist, so we need to create them as a difference of
|
||||||
// where the last `layerX` and `layerY` movements since the last
|
// where the last `layerX` and `layerY` movements since the last
|
||||||
// `mousemove` event in this `mousedown` event were registered.
|
// `mousemove` event in this `mousedown` event were registered.
|
||||||
const polyfillMouseMovement = function (e) {
|
const polyfillMouseMovement = (e) => {
|
||||||
e.movementX = e.layerX - lastPosition.x || 0;
|
e.movementX = e.layerX - lastPosition.x || 0;
|
||||||
e.movementY = e.layerY - lastPosition.y || 0;
|
e.movementY = e.layerY - lastPosition.y || 0;
|
||||||
|
|
||||||
|
@ -257,11 +257,8 @@ const funcs = {
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
// a class w/ prototype to create a new `LightboxCanvas` instance.
|
class LightboxCanvas {
|
||||||
const LightboxCanvas = function (el) {
|
meta = {
|
||||||
const self = this;
|
|
||||||
|
|
||||||
this.meta = {
|
|
||||||
direction: -1,
|
direction: -1,
|
||||||
zoom: 1,
|
zoom: 1,
|
||||||
image: null,
|
image: null,
|
||||||
|
@ -276,54 +273,54 @@ const LightboxCanvas = function (el) {
|
||||||
maxZoom: 10,
|
maxZoom: 10,
|
||||||
};
|
};
|
||||||
|
|
||||||
if (el instanceof Node) {
|
constructor(el) {
|
||||||
this.canvas = el;
|
if (el instanceof Node) {
|
||||||
} else if (typeof el === "string") {
|
this.canvas = el;
|
||||||
this.canvas = document.querySelector(el);
|
} else if (typeof el === "string") {
|
||||||
} else {
|
this.canvas = document.querySelector(el);
|
||||||
throw new TypeError("'LightboxCanvas' accepts either string selector or node.");
|
} else {
|
||||||
|
throw new TypeError("'LightboxCanvas' accepts either string selector or node.");
|
||||||
|
}
|
||||||
|
|
||||||
|
this.context = this.canvas.getContext("2d");
|
||||||
|
|
||||||
|
this.meta.image = new Image();
|
||||||
|
this.meta.image.src = this.canvas.getAttribute("data-src");
|
||||||
|
this.meta.image.onload = () => {
|
||||||
|
this.meta.ratio = funcs.imageRatio(this.meta.image);
|
||||||
|
|
||||||
|
funcs.sizeCanvas(this.canvas, this.meta);
|
||||||
|
funcs.displayImage(this.canvas, this.context, this.meta);
|
||||||
|
};
|
||||||
|
|
||||||
|
this.canvas.image = this.meta.image;
|
||||||
|
|
||||||
|
funcs.attachEvents(this.canvas, this.context, this.meta);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.context = this.canvas.getContext("2d");
|
|
||||||
|
|
||||||
this.meta.image = new Image();
|
|
||||||
this.meta.image.src = this.canvas.getAttribute("data-src");
|
|
||||||
this.meta.image.onload = function () {
|
|
||||||
self.meta.ratio = funcs.imageRatio(this);
|
|
||||||
|
|
||||||
funcs.sizeCanvas(self.canvas, self.meta);
|
|
||||||
funcs.displayImage(self.canvas, self.context, self.meta);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.canvas.image = this.meta.image;
|
|
||||||
|
|
||||||
funcs.attachEvents(this.canvas, this.context, self.meta);
|
|
||||||
};
|
|
||||||
|
|
||||||
LightboxCanvas.prototype = {
|
|
||||||
// set the speed at which scrolling zooms in on a photo.
|
// set the speed at which scrolling zooms in on a photo.
|
||||||
speed(speed) {
|
speed(speed) {
|
||||||
this.meta.speed = speed;
|
this.meta.speed = speed;
|
||||||
},
|
}
|
||||||
|
|
||||||
// set the max zoom of the `LightboxCanvas` canvas as a mult of the total width.
|
// set the max zoom of the `LightboxCanvas` canvas as a mult of the total width.
|
||||||
maxZoom(maxZoom) {
|
maxZoom(maxZoom) {
|
||||||
this.meta.maxZoom = maxZoom;
|
this.meta.maxZoom = maxZoom;
|
||||||
},
|
}
|
||||||
|
|
||||||
reverseScrollDirection() {
|
reverseScrollDirection() {
|
||||||
this.meta.direction = 1;
|
this.meta.direction = 1;
|
||||||
},
|
}
|
||||||
|
|
||||||
setZoom(zoom) {
|
setZoom(zoom) {
|
||||||
funcs.setZoom(this.meta, zoom);
|
funcs.setZoom(this.meta, zoom);
|
||||||
funcs.displayImage(this.canvas, this.context, this.meta);
|
funcs.displayImage(this.canvas, this.context, this.meta);
|
||||||
},
|
}
|
||||||
|
|
||||||
resize(callback) {
|
resize(callback) {
|
||||||
this.meta.onresize = callback;
|
this.meta.onresize = callback;
|
||||||
},
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
module.exports = LightboxCanvas;
|
module.exports = LightboxCanvas;
|
||||||
window.LightboxCanvas = LightboxCanvas;
|
window.LightboxCanvas = LightboxCanvas;
|
||||||
|
|
Loading…
Reference in New Issue