146 lines
4.4 KiB
JavaScript
146 lines
4.4 KiB
JavaScript
/*!
|
|
* reveal.js Zoom plugin
|
|
*/
|
|
const e = {
|
|
id: "zoom",
|
|
init: function (e) {
|
|
e.getRevealElement().addEventListener("mousedown", function (o) {
|
|
var n = /Linux/.test(window.navigator.platform) ? "ctrl" : "alt",
|
|
i = (e.getConfig().zoomKey ? e.getConfig().zoomKey : n) + "Key",
|
|
d = e.getConfig().zoomLevel ? e.getConfig().zoomLevel : 2;
|
|
o[i] &&
|
|
!e.isOverview() &&
|
|
(o.preventDefault(),
|
|
t.to({ x: o.clientX, y: o.clientY, scale: d, pan: !1 }));
|
|
});
|
|
},
|
|
destroy: () => {
|
|
t.reset();
|
|
},
|
|
};
|
|
var t = (function () {
|
|
var e = 1,
|
|
o = 0,
|
|
n = 0,
|
|
i = -1,
|
|
d = -1,
|
|
l = "transform" in document.body.style;
|
|
function s(t, o) {
|
|
var n = r();
|
|
if (
|
|
((t.width = t.width || 1),
|
|
(t.height = t.height || 1),
|
|
(t.x -= (window.innerWidth - t.width * o) / 2),
|
|
(t.y -= (window.innerHeight - t.height * o) / 2),
|
|
l)
|
|
)
|
|
if (1 === o) document.body.style.transform = "";
|
|
else {
|
|
var i = n.x + "px " + n.y + "px",
|
|
d = "translate(" + -t.x + "px," + -t.y + "px) scale(" + o + ")";
|
|
(document.body.style.transformOrigin = i),
|
|
(document.body.style.transform = d);
|
|
}
|
|
else
|
|
1 === o
|
|
? ((document.body.style.position = ""),
|
|
(document.body.style.left = ""),
|
|
(document.body.style.top = ""),
|
|
(document.body.style.width = ""),
|
|
(document.body.style.height = ""),
|
|
(document.body.style.zoom = ""))
|
|
: ((document.body.style.position = "relative"),
|
|
(document.body.style.left = -(n.x + t.x) / o + "px"),
|
|
(document.body.style.top = -(n.y + t.y) / o + "px"),
|
|
(document.body.style.width = 100 * o + "%"),
|
|
(document.body.style.height = 100 * o + "%"),
|
|
(document.body.style.zoom = o));
|
|
(e = o),
|
|
document.documentElement.classList &&
|
|
(1 !== e
|
|
? document.documentElement.classList.add("zoomed")
|
|
: document.documentElement.classList.remove("zoomed"));
|
|
}
|
|
function c() {
|
|
var t = 0.12 * window.innerWidth,
|
|
i = 0.12 * window.innerHeight,
|
|
d = r();
|
|
n < i
|
|
? window.scroll(d.x, d.y - (14 / e) * (1 - n / i))
|
|
: n > window.innerHeight - i &&
|
|
window.scroll(d.x, d.y + (1 - (window.innerHeight - n) / i) * (14 / e)),
|
|
o < t
|
|
? window.scroll(d.x - (14 / e) * (1 - o / t), d.y)
|
|
: o > window.innerWidth - t &&
|
|
window.scroll(
|
|
d.x + (1 - (window.innerWidth - o) / t) * (14 / e),
|
|
d.y
|
|
);
|
|
}
|
|
function r() {
|
|
return {
|
|
x: void 0 !== window.scrollX ? window.scrollX : window.pageXOffset,
|
|
y: void 0 !== window.scrollY ? window.scrollY : window.pageYOffset,
|
|
};
|
|
}
|
|
return (
|
|
l && (document.body.style.transition = "transform 0.8s ease"),
|
|
document.addEventListener("keyup", function (o) {
|
|
1 !== e && 27 === o.keyCode && t.out();
|
|
}),
|
|
document.addEventListener("mousemove", function (t) {
|
|
1 !== e && ((o = t.clientX), (n = t.clientY));
|
|
}),
|
|
{
|
|
to: function (o) {
|
|
if (1 !== e) t.out();
|
|
else {
|
|
if (((o.x = o.x || 0), (o.y = o.y || 0), o.element)) {
|
|
var n = o.element.getBoundingClientRect();
|
|
(o.x = n.left - 20),
|
|
(o.y = n.top - 20),
|
|
(o.width = n.width + 40),
|
|
(o.height = n.height + 40);
|
|
}
|
|
void 0 !== o.width &&
|
|
void 0 !== o.height &&
|
|
(o.scale = Math.max(
|
|
Math.min(
|
|
window.innerWidth / o.width,
|
|
window.innerHeight / o.height
|
|
),
|
|
1
|
|
)),
|
|
o.scale > 1 &&
|
|
((o.x *= o.scale),
|
|
(o.y *= o.scale),
|
|
s(o, o.scale),
|
|
!1 !== o.pan &&
|
|
(i = setTimeout(function () {
|
|
d = setInterval(c, 1e3 / 60);
|
|
}, 800)));
|
|
}
|
|
},
|
|
out: function () {
|
|
clearTimeout(i), clearInterval(d), s({ x: 0, y: 0 }, 1), (e = 1);
|
|
},
|
|
magnify: function (e) {
|
|
this.to(e);
|
|
},
|
|
reset: function () {
|
|
this.out();
|
|
},
|
|
zoomLevel: function () {
|
|
return e;
|
|
},
|
|
}
|
|
);
|
|
})();
|
|
/*!
|
|
* zoom.js 0.3 (modified for use with reveal.js)
|
|
* http://lab.hakim.se/zoom-js
|
|
* MIT licensed
|
|
*
|
|
* Copyright (C) 2011-2014 Hakim El Hattab, http://hakim.se
|
|
*/ export default () => e;
|