1
0
Fork 0
why-cant-we-deploy-today/plugin/zoom/zoom.js

159 lines
5.0 KiB
JavaScript

!(function (e, t) {
"object" == typeof exports && "undefined" != typeof module
? (module.exports = t())
: "function" == typeof define && define.amd
? define(t)
: ((e =
"undefined" != typeof globalThis ? globalThis : e || self).RevealZoom =
t());
})(this, function () {
"use strict";
/*!
* 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
*/ return () => e;
});