forked from docsifyjs/docsify
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathzoom-image.min.js
1 lines (1 loc) · 6.61 KB
/
zoom-image.min.js
1
!function(){"use strict";function e(e){var t;e.doneEach(function(e){t&&t.detach(),t=i("img:not(.emoji):not([data-no-zoom])")})}var t=Object.assign||function(e){for(var t,o=1;o<arguments.length;o++)for(var n in t=arguments[o])Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e},o=function(e){if(Array.isArray(e)){for(var t=0,o=Array(e.length);t<e.length;t++)o[t]=e[t];return o}return Array.from(e)},n=function(e,t){return t={exports:{}},e(t,t.exports),t.exports}(function(e){var n=["IMG"],i=[27,81],r=function(e){return n.includes(e.tagName)},d=function(e){return e.naturalWidth!==e.width},a=function(e){return NodeList.prototype.isPrototypeOf(e)||HTMLCollection.prototype.isPrototypeOf(e)},m=function(e){return e&&1===e.nodeType};e.exports=function(e){var c=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},l=c.margin,s=void 0===l?0:l,u=c.background,p=void 0===u?"#fff":u,f=c.scrollOffset,v=void 0===f?48:f,h=c.metaClick,g=function(e){var t=e.getBoundingClientRect(),o=t.top,n=t.left,i=t.width,r=t.height,d=e.cloneNode(),a=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,m=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0;return d.removeAttribute("id"),d.style.position="absolute",d.style.top=o+a+"px",d.style.left=n+m+"px",d.style.width=i+"px",d.style.height=r+"px",d.style.transform="",d},y=function(){if(O.template)if(O.template.dispatchEvent(new Event("show")),N=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,S=!0,O.zoomed=g(O.template),document.body.appendChild(A),document.body.appendChild(O.zoomed),requestAnimationFrame(function(){document.body.classList.add("medium-zoom--open")}),O.template.style.visibility="hidden",O.zoomed.classList.add("medium-zoom-image--open"),O.zoomed.addEventListener("click",z),O.zoomed.addEventListener("transitionend",L),O.template.getAttribute("data-zoom-target")){O.zoomedHd=O.zoomed.cloneNode(),O.zoomedHd.src=O.zoomed.getAttribute("data-zoom-target"),O.zoomedHd.onerror=function(){clearInterval(e),console.error("Unable to reach the zoom image target "+O.zoomedHd.src),O.zoomedHd=null,C()};var e=setInterval(function(){O.zoomedHd.naturalWidth&&(clearInterval(e),O.zoomedHd.classList.add("medium-zoom-image--open"),O.zoomedHd.addEventListener("click",z),document.body.appendChild(O.zoomedHd),C())},10)}else C()},z=function e(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,o=function(){S||!O.template||(O.template.dispatchEvent(new Event("hide")),S=!0,document.body.classList.remove("medium-zoom--open"),O.zoomed.style.transform="",O.zoomedHd&&(O.zoomedHd.style.transform="",O.zoomedHd.removeEventListener("click",e)),O.zoomed.removeEventListener("click",e),O.zoomed.addEventListener("transitionend",b))};0<t?setTimeout(o,t):o()},E=function(e){O.template?z():(O.template=e?e.target:T[0],y())},w=function(e){return(e.metaKey||e.ctrlKey)&&x.metaClick?window.open(e.target.getAttribute("data-original")||e.target.parentNode.href||e.target.src,"_blank"):(e.preventDefault(),void E(e))},L=function e(){S=!1,O.zoomed.removeEventListener("transitionend",e),O.template.dispatchEvent(new Event("shown"))},b=function e(){O.template&&(O.template.style.visibility="",document.body.removeChild(O.zoomed),O.zoomedHd&&document.body.removeChild(O.zoomedHd),document.body.removeChild(A),O.zoomed.classList.remove("medium-zoom-image--open"),S=!1,O.zoomed.removeEventListener("transitionend",e),O.template.dispatchEvent(new Event("hidden")),O.template=null,O.zoomed=null,O.zoomedHd=null)},H=function(){if(!S&&O.template){var e=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;Math.abs(N-e)>x.scrollOffset&&z(150)}},k=function(e){i.includes(e.keyCode||e.which)&&z()},C=function(){var e=Math.min;if(O.template){var t=window.innerWidth,o=window.innerHeight,n=t-2*x.margin,i=o-2*x.margin,r=O.zoomedHd||O.template,d=r.naturalWidth,a=void 0===d?n:d,m=r.naturalHeight,c=void 0===m?i:m,l=r.getBoundingClientRect(),s=l.top,u=l.left,p=l.width,f=l.height,v=e(a,n)/p,h=e(c,i)/f,g=e(v,h)||1,y=((n-p)/2-u+x.margin)/g,z=((i-f)/2-s+x.margin)/g,E="scale("+g+") translate3d("+y+"px, "+z+"px, 0)";O.zoomed.style.transform=E,O.zoomedHd&&(O.zoomedHd.style.transform=E)}},x={margin:s,background:p,scrollOffset:v,metaClick:void 0===h||h};e instanceof Object&&t(x,e);var T=function(e){try{return Array.isArray(e)?e.filter(r):a(e)?[].concat(o(e)).filter(r):m(e)?[e].filter(r):"string"==typeof e?[].concat(o(document.querySelectorAll(e))).filter(r):[].concat(o(document.querySelectorAll(n.map(function(e){return e.toLowerCase()}).join(",")))).filter(d)}catch(e){throw new TypeError("The provided selector is invalid.\nExpects a CSS selector, a Node element, a NodeList, an HTMLCollection or an array.\nSee: https://github.com/francoischalifour/medium-zoom")}}(e),A=function(e){var t=document.createElement("div");return t.classList.add("medium-zoom-overlay"),t.style.backgroundColor=e,t}(x.background),O={template:null,zoomed:null,zoomedHd:null},N=0,S=!1;return T.forEach(function(e){e.classList.add("medium-zoom-image"),e.addEventListener("click",w)}),A.addEventListener("click",z),document.addEventListener("scroll",H),document.addEventListener("keyup",k),window.addEventListener("resize",z),{show:E,hide:z,toggle:E,update:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return e.background&&(A.style.backgroundColor=e.background),t(x,e)},addEventListeners:function(e,t){T.forEach(function(o){o.addEventListener(e,t)})},detach:function(){var e=function e(){var t=new Event("detach");T.forEach(function(e){e.classList.remove("medium-zoom-image"),e.removeEventListener("click",w),e.dispatchEvent(t)}),T.splice(0,T.length),A.removeEventListener("click",z),document.removeEventListener("scroll",H),document.removeEventListener("keyup",k),window.removeEventListener("resize",z),O.zoomed&&O.zoomed.removeEventListener("transitionend",e)};O.zoomed?(z(),O.zoomed.addEventListener("transitionend",requestAnimationFrame(e))):e()},images:T,options:x}}});!function(e,t){if("undefined"==typeof document)return t;e=e||"";var o=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.type="text/css",o.appendChild(n),n.styleSheet?n.styleSheet.cssText=e:n.appendChild(document.createTextNode(e))}(".medium-zoom-overlay{position:fixed;top:0;right:0;bottom:0;left:0;opacity:0;transition:opacity .3s;will-change:opacity}.medium-zoom--open .medium-zoom-overlay{cursor:pointer;cursor:zoom-out;opacity:1}.medium-zoom-image{cursor:pointer;cursor:zoom-in;transition:transform .3s}.medium-zoom-image--open{position:relative;z-index:1;cursor:pointer;cursor:zoom-out;will-change:transform}",void 0);var i=n;$docsify.plugins=[].concat(e,$docsify.plugins)}();