Files
hugo-blog/public/js/zooming.3bda780b3d5a676b6068e5ad5fd77a313c4371117131529f7e7480e7d4b64d96.js
2025-08-21 09:42:37 +00:00

11 lines
12 KiB
JavaScript

(()=>{var K=Object.create;var M=Object.defineProperty;var Z=Object.getOwnPropertyDescriptor;var J=Object.getOwnPropertyNames;var Q=Object.getPrototypeOf,U=Object.prototype.hasOwnProperty;var V=(r,a)=>()=>(a||r((a={exports:{}}).exports,a),a.exports);var $=(r,a,d,g)=>{if(a&&typeof a=="object"||typeof a=="function")for(let f of J(a))!U.call(r,f)&&f!==d&&M(r,f,{get:()=>a[f],enumerable:!(g=Z(a,f))||g.enumerable});return r};var tt=(r,a,d)=>(d=r!=null?K(Q(r)):{},$(a||!r||!r.__esModule?M(d,"default",{value:r,enumerable:!0}):d,r));var j=V((S,z)=>{(function(r,a){typeof S=="object"&&typeof z<"u"?z.exports=a():typeof define=="function"&&define.amd?define(a):(r=r||self).Zooming=a()})(S,function(){"use strict";var r="auto",a="zoom-in",d="zoom-out",g="grab",f="move";function l(t,e,i){var n={passive:!1};!(arguments.length>3&&arguments[3]!==void 0)||arguments[3]?t.addEventListener(e,i,n):t.removeEventListener(e,i,n)}function C(t,e){if(t){var i=new Image;i.onload=function(){e&&e(i)},i.src=t}}function T(t){return t.dataset.original?t.dataset.original:t.parentNode.tagName==="A"?t.parentNode.getAttribute("href"):null}function m(t,e,i){(function(h){var v=p.transitionProp,b=p.transformProp;if(h.transition){var w=h.transition;delete h.transition,h[v]=w}if(h.transform){var x=h.transform;delete h.transform,h[b]=x}})(e);var n=t.style,s={};for(var o in e)i&&(s[o]=n[o]||""),n[o]=e[o];return s}var p={transitionProp:"transition",transEndEvent:"transitionend",transformProp:"transform",transformCssProp:"transform"},E=p.transformCssProp,u=p.transEndEvent,c=function(){},G={enableGrab:!0,preloadImage:!1,closeOnWindowResize:!0,transitionDuration:.4,transitionTimingFunction:"cubic-bezier(0.4, 0, 0, 1)",bgColor:"rgb(255, 255, 255)",bgOpacity:1,scaleBase:1,scaleExtra:.5,scrollThreshold:40,zIndex:998,customSize:null,onOpen:c,onClose:c,onGrab:c,onMove:c,onRelease:c,onBeforeOpen:c,onBeforeClose:c,onBeforeGrab:c,onBeforeRelease:c,onImageLoading:c,onImageLoaded:c},N={init:function(t){var e,i;e=this,i=t,Object.getOwnPropertyNames(Object.getPrototypeOf(e)).forEach(function(n){e[n]=e[n].bind(i)})},click:function(t){if(t.preventDefault(),k(t))return window.open(this.target.srcOriginal||t.currentTarget.src,"_blank");this.shown?this.released?this.close():this.release():this.open(t.currentTarget)},scroll:function(){var t=document.documentElement||document.body.parentNode||document.body,e=window.pageXOffset||t.scrollLeft,i=window.pageYOffset||t.scrollTop;this.lastScrollPosition===null&&(this.lastScrollPosition={x:e,y:i});var n=this.lastScrollPosition.x-e,s=this.lastScrollPosition.y-i,o=this.options.scrollThreshold;(Math.abs(s)>=o||Math.abs(n)>=o)&&(this.lastScrollPosition=null,this.close())},keydown:function(t){(function(e){return(e.key||e.code)==="Escape"||e.keyCode===27})(t)&&(this.released?this.close():this.release(this.close))},mousedown:function(t){if(I(t)&&!k(t)){t.preventDefault();var e=t.clientX,i=t.clientY;this.pressTimer=setTimeout(function(){this.grab(e,i)}.bind(this),200)}},mousemove:function(t){this.released||this.move(t.clientX,t.clientY)},mouseup:function(t){I(t)&&!k(t)&&(clearTimeout(this.pressTimer),this.released?this.close():this.release())},touchstart:function(t){t.preventDefault();var e=t.touches[0],i=e.clientX,n=e.clientY;this.pressTimer=setTimeout(function(){this.grab(i,n)}.bind(this),200)},touchmove:function(t){if(!this.released){var e=t.touches[0],i=e.clientX,n=e.clientY;this.move(i,n)}},touchend:function(t){(function(e){e.targetTouches.length})(t)||(clearTimeout(this.pressTimer),this.released?this.close():this.release())},clickOverlay:function(){this.close()},resizeWindow:function(){this.close()}};function I(t){return t.button===0}function k(t){return t.metaKey||t.ctrlKey}var _={init:function(t){this.el=document.createElement("div"),this.instance=t,this.parent=document.body,m(this.el,{position:"fixed",top:0,left:0,right:0,bottom:0,opacity:0}),this.updateStyle(t.options),l(this.el,"click",t.handler.clickOverlay.bind(t))},updateStyle:function(t){m(this.el,{zIndex:t.zIndex,backgroundColor:t.bgColor,transition:`opacity
`+t.transitionDuration+`s
`+t.transitionTimingFunction})},insert:function(){this.parent.appendChild(this.el)},remove:function(){this.parent.removeChild(this.el)},fadeIn:function(){this.el.offsetWidth,this.el.style.opacity=this.instance.options.bgOpacity},fadeOut:function(){this.el.style.opacity=0}},D=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},R=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},F=function(){function t(e,i){for(var n=0;n<i.length;n++){var s=i[n];s.enumerable=s.enumerable||!1,s.configurable=!0,"value"in s&&(s.writable=!0),Object.defineProperty(e,s.key,s)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}(),P=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var i=arguments[e];for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(t[n]=i[n])}return t},X={init:function(t,e){this.el=t,this.instance=e,this.srcThumbnail=this.el.getAttribute("src"),this.srcset=this.el.getAttribute("srcset"),this.srcOriginal=T(this.el),this.rect=this.el.getBoundingClientRect(),this.translate=null,this.scale=null,this.styleOpen=null,this.styleClose=null},zoomIn:function(){var t=this.instance.options,e=t.zIndex,i=t.enableGrab,n=t.transitionDuration,s=t.transitionTimingFunction;this.translate=this.calculateTranslate(),this.scale=this.calculateScale(),this.styleOpen={position:"relative",zIndex:e+1,cursor:i?g:d,transition:E+`
`+n+`s
`+s,transform:"translate3d("+this.translate.x+"px, "+this.translate.y+`px, 0px)
scale(`+this.scale.x+","+this.scale.y+")",height:this.rect.height+"px",width:this.rect.width+"px"},this.el.offsetWidth,this.styleClose=m(this.el,this.styleOpen,!0)},zoomOut:function(){this.el.offsetWidth,m(this.el,{transform:"none"})},grab:function(t,e,i){var n=y(),s=n.x-t,o=n.y-e;m(this.el,{cursor:f,transform:`translate3d(
`+(this.translate.x+s)+"px, "+(this.translate.y+o)+`px, 0px)
scale(`+(this.scale.x+i)+","+(this.scale.y+i)+")"})},move:function(t,e,i){var n=y(),s=n.x-t,o=n.y-e;m(this.el,{transition:E,transform:`translate3d(
`+(this.translate.x+s)+"px, "+(this.translate.y+o)+`px, 0px)
scale(`+(this.scale.x+i)+","+(this.scale.y+i)+")"})},restoreCloseStyle:function(){m(this.el,this.styleClose)},restoreOpenStyle:function(){m(this.el,this.styleOpen)},upgradeSource:function(){if(this.srcOriginal){var t=this.el.parentNode;this.srcset&&this.el.removeAttribute("srcset");var e=this.el.cloneNode(!1);e.setAttribute("src",this.srcOriginal),e.style.position="fixed",e.style.visibility="hidden",t.appendChild(e),setTimeout(function(){this.el.setAttribute("src",this.srcOriginal),t.removeChild(e)}.bind(this),50)}},downgradeSource:function(){this.srcOriginal&&(this.srcset&&this.el.setAttribute("srcset",this.srcset),this.el.setAttribute("src",this.srcThumbnail))},calculateTranslate:function(){var t=y(),e=this.rect.left+this.rect.width/2,i=this.rect.top+this.rect.height/2;return{x:t.x-e,y:t.y-i}},calculateScale:function(){var t=this.el.dataset,e=t.zoomingHeight,i=t.zoomingWidth,n=this.instance.options,s=n.customSize,o=n.scaleBase;if(!s&&e&&i)return{x:i/this.rect.width,y:e/this.rect.height};if(s&&(s===void 0?"undefined":D(s))==="object")return{x:s.width/this.rect.width,y:s.height/this.rect.height};var h=this.rect.width/2,v=this.rect.height/2,b=y(),w={x:b.x-h,y:b.y-v},x=w.x/h,Y=w.y/v,O=o+Math.min(x,Y);if(s&&typeof s=="string"){var H=i||this.el.naturalWidth,q=e||this.el.naturalHeight,W=parseFloat(s)*H/(100*this.rect.width),L=parseFloat(s)*q/(100*this.rect.height);if(O>W||O>L)return{x:W,y:L}}return{x:O,y:O}}};function y(){var t=document.documentElement;return{x:Math.min(t.clientWidth,window.innerWidth)/2,y:Math.min(t.clientHeight,window.innerHeight)/2}}function B(t,e,i){["mousedown","mousemove","mouseup","touchstart","touchmove","touchend"].forEach(function(n){l(t,n,e[n],i)})}return function(){function t(e){R(this,t),this.target=Object.create(X),this.overlay=Object.create(_),this.handler=Object.create(N),this.body=document.body,this.shown=!1,this.lock=!1,this.released=!0,this.lastScrollPosition=null,this.pressTimer=null,this.options=P({},G,e),this.overlay.init(this),this.handler.init(this)}return F(t,[{key:"listen",value:function(e){if(typeof e=="string")for(var i=document.querySelectorAll(e),n=i.length;n--;)this.listen(i[n]);else e.tagName==="IMG"&&(e.style.cursor=a,l(e,"click",this.handler.click),this.options.preloadImage&&C(T(e)));return this}},{key:"config",value:function(e){return e?(P(this.options,e),this.overlay.updateStyle(this.options),this):this.options}},{key:"open",value:function(e){var i=this,n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.options.onOpen;if(!this.shown&&!this.lock){var s=typeof e=="string"?document.querySelector(e):e;if(s.tagName==="IMG"){if(this.options.onBeforeOpen(s),this.target.init(s,this),!this.options.preloadImage){var o=this.target.srcOriginal;o!=null&&(this.options.onImageLoading(s),C(o,this.options.onImageLoaded))}return this.shown=!0,this.lock=!0,this.target.zoomIn(),this.overlay.insert(),this.overlay.fadeIn(),l(document,"scroll",this.handler.scroll),l(document,"keydown",this.handler.keydown),this.options.closeOnWindowResize&&l(window,"resize",this.handler.resizeWindow),l(s,u,function h(){l(s,u,h,!1),i.lock=!1,i.target.upgradeSource(),i.options.enableGrab&&B(document,i.handler,!0),n(s)}),this}}}},{key:"close",value:function(){var e=this,i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.options.onClose;if(this.shown&&!this.lock){var n=this.target.el;return this.options.onBeforeClose(n),this.lock=!0,this.body.style.cursor=r,this.overlay.fadeOut(),this.target.zoomOut(),l(document,"scroll",this.handler.scroll,!1),l(document,"keydown",this.handler.keydown,!1),this.options.closeOnWindowResize&&l(window,"resize",this.handler.resizeWindow,!1),l(n,u,function s(){l(n,u,s,!1),e.shown=!1,e.lock=!1,e.target.downgradeSource(),e.options.enableGrab&&B(document,e.handler,!1),e.target.restoreCloseStyle(),e.overlay.remove(),i(n)}),this}}},{key:"grab",value:function(e,i){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:this.options.scaleExtra,s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:this.options.onGrab;if(this.shown&&!this.lock){var o=this.target.el;return this.options.onBeforeGrab(o),this.released=!1,this.target.grab(e,i,n),l(o,u,function h(){l(o,u,h,!1),s(o)}),this}}},{key:"move",value:function(e,i){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:this.options.scaleExtra,s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:this.options.onMove;if(this.shown&&!this.lock){this.released=!1,this.body.style.cursor=f,this.target.move(e,i,n);var o=this.target.el;return l(o,u,function h(){l(o,u,h,!1),s(o)}),this}}},{key:"release",value:function(){var e=this,i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.options.onRelease;if(this.shown&&!this.lock){var n=this.target.el;return this.options.onBeforeRelease(n),this.lock=!0,this.body.style.cursor=r,this.target.restoreOpenStyle(),l(n,u,function s(){l(n,u,s,!1),e.lock=!1,e.released=!0,i(n)}),this}}}]),t}()})});var A=tt(j());document.addEventListener("DOMContentLoaded",function(){let r;localStorage.theme==="dark"||!("theme"in localStorage)&&window.matchMedia("(prefers-color-scheme: dark)").matches?r="#333":r="#fff",zooming=new A.default({transitionDuration:.2,bgColor:r}),zooming.listen("#content img");let a=document.getElementById("dark_mode_btn"),d=document.getElementById("light_mode_btn");a.addEventListener("click",function(){zooming.config({bgColor:"#333"})}),d.addEventListener("click",function(){zooming.config({bgColor:"#fff"})})});})();