forked from Novactive/NovaeZEnhancedImageAssetBundle
/
enhancedimage.js
1 lines (1 loc) · 16 KB
/
enhancedimage.js
1
!function(t){var e={};function i(n){if(e[n])return e[n].exports;var s=e[n]={i:n,l:!1,exports:{}};return t[n].call(s.exports,s,s.exports,i),s.l=!0,s.exports}i.m=t,i.c=e,i.d=function(t,e,n){i.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},i.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.t=function(t,e){if(1&e&&(t=i(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var s in t)i.d(n,s,function(e){return t[e]}.bind(null,s));return n},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,"a",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p="",i(i.s=1)}([function(t,e,i){!function(e,i){var n=function(t,e){"use strict";if(!e.getElementsByClassName)return;var i,n,s=e.documentElement,o=t.Date,a=t.HTMLPictureElement,r=t.addEventListener,u=t.setTimeout,c=t.requestAnimationFrame||u,l=t.requestIdleCallback,d=/^picture$/i,f=["load","error","lazyincluded","_lazyloaded"],h={},g=Array.prototype.forEach,m=function(t,e){return h[e]||(h[e]=new RegExp("(\\s|^)"+e+"(\\s|$)")),h[e].test(t.getAttribute("class")||"")&&h[e]},p=function(t,e){m(t,e)||t.setAttribute("class",(t.getAttribute("class")||"").trim()+" "+e)},v=function(t,e){var i;(i=m(t,e))&&t.setAttribute("class",(t.getAttribute("class")||"").replace(i," "))},y=function(t,e,i){var n=i?"addEventListener":"removeEventListener";i&&y(t,e),f.forEach(function(i){t[n](i,e)})},b=function(t,n,s,o,a){var r=e.createEvent("Event");return s||(s={}),s.instance=i,r.initEvent(n,!o,!a),r.detail=s,t.dispatchEvent(r),r},z=function(e,i){var s;!a&&(s=t.picturefill||n.pf)?(i&&i.src&&!e.getAttribute("srcset")&&e.setAttribute("srcset",i.src),s({reevaluate:!0,elements:[e]})):i&&i.src&&(e.src=i.src)},A=function(t,e){return(getComputedStyle(t,null)||{})[e]},C=function(t,e,i){for(i=i||t.offsetWidth;i<n.minSize&&e&&!t._lazysizesWidth;)i=e.offsetWidth,e=e.parentNode;return i},E=(I=[],_=[],F=I,M=function(){var t=F;for(F=I.length?_:I,x=!0,L=!1;t.length;)t.shift()();x=!1},P=function(t,i){x&&!i?t.apply(this,arguments):(F.push(t),L||(L=!0,(e.hidden?u:c)(M)))},P._lsFlush=M,P),S=function(t,e){return e?function(){E(t)}:function(){var e=this,i=arguments;E(function(){t.apply(e,i)})}},w=function(t){var e,i,n=function(){e=null,t()},s=function(){var t=o.now()-i;t<99?u(s,99-t):(l||n)(n)};return function(){i=o.now(),e||(e=u(s,99))}};var x,L,I,_,F,M,P;!function(){var e,i={lazyClass:"lazyload",loadedClass:"lazyloaded",loadingClass:"lazyloading",preloadClass:"lazypreload",errorClass:"lazyerror",autosizesClass:"lazyautosizes",srcAttr:"data-src",srcsetAttr:"data-srcset",sizesAttr:"data-sizes",minSize:40,customMedia:{},init:!0,expFactor:1.5,hFac:.8,loadMode:2,loadHidden:!0,ricTimeout:0,throttleDelay:125};for(e in n=t.lazySizesConfig||t.lazysizesConfig||{},i)e in n||(n[e]=i[e]);t.lazySizesConfig=n,u(function(){n.init&&W()})}();var D=function(){var a,c,f,h,C,x,L,I,_,F,M,P,D,W,R,T,O,j,B,H,k,Z=/^img$/i,Y=/^iframe$/i,X="onscroll"in t&&!/(gle|ing)bot/.test(navigator.userAgent),G=0,$=0,q=-1,J=function(t){$--,t&&t.target&&y(t.target,J),(!t||$<0||!t.target)&&($=0)},U=function(t,i){var n,o=t,a="hidden"==A(e.body,"visibility")||"hidden"!=A(t.parentNode,"visibility")&&"hidden"!=A(t,"visibility");for(I-=i,M+=i,_-=i,F+=i;a&&(o=o.offsetParent)&&o!=e.body&&o!=s;)(a=(A(o,"opacity")||1)>0)&&"visible"!=A(o,"overflow")&&(n=o.getBoundingClientRect(),a=F>n.left&&_<n.right&&M>n.top-1&&I<n.bottom+1);return a},V=function(){var t,o,r,u,l,d,f,g,m,p=i.elements;if((h=n.loadMode)&&$<8&&(t=p.length)){o=0,q++,null==D&&("expand"in n||(n.expand=s.clientHeight>500&&s.clientWidth>500?500:370),P=n.expand,D=P*n.expFactor),G<D&&$<1&&q>2&&h>2&&!e.hidden?(G=D,q=0):G=h>1&&q>1&&$<6?P:0;for(;o<t;o++)if(p[o]&&!p[o]._lazyRace)if(X)if((g=p[o].getAttribute("data-expand"))&&(d=1*g)||(d=G),m!==d&&(x=innerWidth+d*W,L=innerHeight+d,f=-1*d,m=d),r=p[o].getBoundingClientRect(),(M=r.bottom)>=f&&(I=r.top)<=L&&(F=r.right)>=f*W&&(_=r.left)<=x&&(M||F||_||I)&&(n.loadHidden||"hidden"!=A(p[o],"visibility"))&&(c&&$<3&&!g&&(h<3||q<4)||U(p[o],d))){if(st(p[o]),l=!0,$>9)break}else!l&&c&&!u&&$<4&&q<4&&h>2&&(a[0]||n.preloadAfterLoad)&&(a[0]||!g&&(M||F||_||I||"auto"!=p[o].getAttribute(n.sizesAttr)))&&(u=a[0]||p[o]);else st(p[o]);u&&!l&&st(u)}},K=(R=V,O=0,j=n.throttleDelay,B=n.ricTimeout,H=function(){T=!1,O=o.now(),R()},k=l&&B>49?function(){l(H,{timeout:B}),B!==n.ricTimeout&&(B=n.ricTimeout)}:S(function(){u(H)},!0),function(t){var e;(t=!0===t)&&(B=33),T||(T=!0,(e=j-(o.now()-O))<0&&(e=0),t||e<9?k():u(k,e))}),Q=function(t){p(t.target,n.loadedClass),v(t.target,n.loadingClass),y(t.target,et),b(t.target,"lazyloaded")},tt=S(Q),et=function(t){tt({target:t.target})},it=function(t){var e,i=t.getAttribute(n.srcsetAttr);(e=n.customMedia[t.getAttribute("data-media")||t.getAttribute("media")])&&t.setAttribute("media",e),i&&t.setAttribute("srcset",i)},nt=S(function(t,e,i,s,o){var a,r,c,l,h,m;(h=b(t,"lazybeforeunveil",e)).defaultPrevented||(s&&(i?p(t,n.autosizesClass):t.setAttribute("sizes",s)),r=t.getAttribute(n.srcsetAttr),a=t.getAttribute(n.srcAttr),o&&(c=t.parentNode,l=c&&d.test(c.nodeName||"")),m=e.firesLoad||"src"in t&&(r||a||l),h={target:t},m&&(y(t,J,!0),clearTimeout(f),f=u(J,2500),p(t,n.loadingClass),y(t,et,!0)),l&&g.call(c.getElementsByTagName("source"),it),r?t.setAttribute("srcset",r):a&&!l&&(Y.test(t.nodeName)?function(t,e){try{t.contentWindow.location.replace(e)}catch(i){t.src=e}}(t,a):t.src=a),o&&(r||l)&&z(t,{src:a})),t._lazyRace&&delete t._lazyRace,v(t,n.lazyClass),E(function(){(!m||t.complete&&t.naturalWidth>1)&&(m?J(h):$--,Q(h))},!0)}),st=function(t){var e,i=Z.test(t.nodeName),s=i&&(t.getAttribute(n.sizesAttr)||t.getAttribute("sizes")),o="auto"==s;(!o&&c||!i||!t.getAttribute("src")&&!t.srcset||t.complete||m(t,n.errorClass)||!m(t,n.lazyClass))&&(e=b(t,"lazyunveilread").detail,o&&N.updateElem(t,!0,t.offsetWidth),t._lazyRace=!0,$++,nt(t,e,o,s,i))},ot=function(){if(!c)if(o.now()-C<999)u(ot,999);else{var t=w(function(){n.loadMode=3,K()});c=!0,n.loadMode=3,K(),r("scroll",function(){3==n.loadMode&&(n.loadMode=2),t()},!0)}};return{_:function(){C=o.now(),i.elements=e.getElementsByClassName(n.lazyClass),a=e.getElementsByClassName(n.lazyClass+" "+n.preloadClass),W=n.hFac,r("scroll",K,!0),r("resize",K,!0),t.MutationObserver?new MutationObserver(K).observe(s,{childList:!0,subtree:!0,attributes:!0}):(s.addEventListener("DOMNodeInserted",K,!0),s.addEventListener("DOMAttrModified",K,!0),setInterval(K,999)),r("hashchange",K,!0),["focus","mouseover","click","load","transitionend","animationend","webkitAnimationEnd"].forEach(function(t){e.addEventListener(t,K,!0)}),/d$|^c/.test(e.readyState)?ot():(r("load",ot),e.addEventListener("DOMContentLoaded",K),u(ot,2e4)),i.elements.length?(V(),E._lsFlush()):K()},checkElems:K,unveil:st}}(),N=(T=S(function(t,e,i,n){var s,o,a;if(t._lazysizesWidth=n,n+="px",t.setAttribute("sizes",n),d.test(e.nodeName||""))for(s=e.getElementsByTagName("source"),o=0,a=s.length;o<a;o++)s[o].setAttribute("sizes",n);i.detail.dataAttr||z(t,i.detail)}),O=function(t,e,i){var n,s=t.parentNode;s&&(i=C(t,s,i),(n=b(t,"lazybeforesizes",{width:i,dataAttr:!!e})).defaultPrevented||(i=n.detail.width)&&i!==t._lazysizesWidth&&T(t,s,n,i))},j=w(function(){var t,e=R.length;if(e)for(t=0;t<e;t++)O(R[t])}),{_:function(){R=e.getElementsByClassName(n.autosizesClass),r("resize",j)},checkElems:j,updateElem:O}),W=function(){W.i||(W.i=!0,N._(),D._())};var R,T,O,j;return i={cfg:n,autoSizer:N,loader:D,init:W,uP:z,aC:p,rC:v,hC:m,fire:b,gW:C,rAF:E}}(e,e.document);e.lazySizes=n,t.exports&&(t.exports=n)}(window)},function(t,e,i){"use strict";function n(t){for(var e=[],i=1;i<arguments.length;i++)e[i-1]=arguments[i];return e.forEach(function(e){return Object.keys(e).forEach(function(i){return t[i]=e[i]})}),t}i.r(e);var s={position:"relative",overflow:"hidden"},o={position:"absolute",top:"0",right:"0",bottom:"0",left:"0"},a={display:"block",maxWidth:"100%",touchAction:"none"},r={position:"absolute",cursor:"move",transform:"translate(-50%, -50%)"},u={onChange:function(){},retina:"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIj4KICA8ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgPGNpcmNsZSBpZD0iYSIgY3g9IjEwIiBjeT0iMTAiIHI9IjEwIiBmaWxsPSIjMDAwIiBmaWxsLW9wYWNpdHk9Ii4zIiAvPgogICAgPGNpcmNsZSBjeD0iMTAiIGN5PSIxMCIgcj0iOSIgc3Ryb2tlPSIjRkZGIiBzdHJva2Utb3BhY2l0eT0iLjgiIHN0cm9rZS13aWR0aD0iMiIvPgogIDwvZz4KPC9zdmc+"},c=(function(){function t(t,e){void 0===e&&(e={});var i=this;this.startDragging=function(t){t.preventDefault(),i.isDragging=!0,t instanceof MouseEvent?i.updateCoordinates(t.clientX,t.clientY):i.updateCoordinates(t.touches[0].clientX,t.touches[0].clientY)},this.handleMove=function(t){if(t.preventDefault(),t instanceof MouseEvent)i.updateCoordinates(t.clientX,t.clientY);else{var e=t.touches[0],n=document.elementFromPoint(e.pageX,e.pageY);n!==i.retina&&n!==i.img?i.stopDragging():i.updateCoordinates(e.clientX,e.clientY)}},this.stopDragging=function(){i.isDragging=!1},this.updateRetinaPositionFromFocus=function(){i.updateRetinaPosition(i.calculateOffsetFromFocus())},this.updateRetinaPosition=function(t){i.retina.style.top=t.offsetY+"px",i.retina.style.left=t.offsetX+"px"},this.options=n(u,e),this.img=t,this.container=t.parentElement,this.retina=document.createElement("img"),this.retina.src=this.options.retina,this.retina.draggable=!1,this.container.appendChild(this.retina),this.container.addEventListener("mousedown",this.startDragging),this.container.addEventListener("mousemove",this.handleMove),this.container.addEventListener("mouseup",this.stopDragging),this.container.addEventListener("mouseleave",this.stopDragging),this.container.addEventListener("touchend",this.stopDragging),this.container.addEventListener("touchstart",this.startDragging,{passive:!0}),this.container.addEventListener("touchmove",this.handleMove,{passive:!0}),this.img.draggable=!1,this.img.addEventListener("load",this.updateRetinaPositionFromFocus),n(this.img.style,a),n(this.retina.style,r),n(this.container.style,s),this.focus=this.options.focus?this.options.focus:{x:parseFloat(this.img.getAttribute("data-focus-x"))||0,y:parseFloat(this.img.getAttribute("data-focus-y"))||0},this.setFocus(this.focus)}t.prototype.setFocus=function(t){this.focus=t,this.img.setAttribute("data-focus-x",t.x.toString()),this.img.setAttribute("data-focus-y",t.y.toString()),this.updateRetinaPositionFromFocus(),this.options.onChange(t)},t.prototype.calculateOffsetFromFocus=function(){var t=this.img.getBoundingClientRect(),e=t.width,i=t.height;return{offsetX:e*(this.focus.x/2+.5),offsetY:i*(this.focus.y/-2+.5)}},t.prototype.updateCoordinates=function(t,e){if(this.isDragging){var i=this.img.getBoundingClientRect(),n=i.width,s=i.height,o=2*((t-i.left)/n-.5),a=-2*((e-i.top)/s-.5);this.setFocus({x:o,y:a})}}}(),{minHeight:"100%",minWidth:"100%"}),l={height:"100%",width:"100%",border:"none",opacity:0,zIndex:-1,pointerEvents:"none"},d={debounceTime:17,updateOnWindowResize:!0,updateOnContainerResize:!1,containerPosition:"relative"},f=function(){function t(t,e){void 0===e&&(e={});var i=this;this.imageNode=t,this.listening=!1,this.setFocus=function(t){i.focus=t,i.img.setAttribute("data-focus-x",t.x.toString()),i.img.setAttribute("data-focus-y",t.y.toString()),i.applyShift()},this.applyShift=function(){var t=i.img,e=t.naturalWidth,n=t.naturalHeight,s=i.container.getBoundingClientRect(),o=s.width,a=s.height,r="0",u="0";if(!(o>0&&a>0&&e>0&&n>0))return!1;var c=e/o,l=n/a;i.img.style.maxHeight=null,i.img.style.maxWidth=null,e>o&&n>a&&(i.img.style[c>l?"maxHeight":"maxWidth"]="100%"),c>l?r=i.calcShift(l,o,e,i.focus.x)+"%":c<l&&(u=i.calcShift(c,a,n,i.focus.y,!0)+"%"),i.img.style.top=u,i.img.style.left=r},this.options=n(d,e),this.img=t,this.container=t.parentElement,this.img.__focused_image_instance__&&(this.img.__focused_image_instance__.stopListening(),this.img.removeEventListener("load",this.applyShift)),this.img.__focused_image_instance__=this,this.img.addEventListener("load",this.applyShift),n(this.container.style,s),this.container.style.position=this.options.containerPosition,n(this.img.style,c,o),this.debounceApplyShift=function(t,e){var i;return function(){for(var n=[],s=0;s<arguments.length;s++)n[s]=arguments[s];clearTimeout(i),i=setTimeout(function(){return t.apply(void 0,n)},e)}}(this.applyShift,this.options.debounceTime),this.focus=this.options.focus?this.options.focus:{x:parseFloat(this.img.getAttribute("data-focus-x"))||0,y:parseFloat(this.img.getAttribute("data-focus-y"))||0},this.startListening(),this.setFocus(this.focus)}return t.prototype.startListening=function(){var t=this;if(!this.listening&&(this.listening=!0,this.options.updateOnWindowResize&&window.addEventListener("resize",this.debounceApplyShift),this.options.updateOnContainerResize)){var e=document.createElement("object");n(e.style,l,o),e.addEventListener("load",function(i){return e.contentDocument.defaultView.addEventListener("resize",function(){return t.debounceApplyShift()})}),e.type="text/html",e.setAttribute("aria-hidden","true"),e.tabIndex=-1,this.container.appendChild(e),e.data="about:blank",this.resizeListenerObject=e}},t.prototype.stopListening=function(){this.listening&&(this.listening=!1,window.removeEventListener("resize",this.debounceApplyShift),this.resizeListenerObject&&(this.resizeListenerObject.contentDocument.defaultView.removeEventListener("resize",this.debounceApplyShift),this.container.removeChild(this.resizeListenerObject),this.resizeListenerObject=null))},t.prototype.calcShift=function(t,e,i,n,s){var o=Math.floor(e/2),a=(n+1)/2,r=Math.floor(i/t),u=Math.floor(a*r);s&&(u=r-u);var c=u-o,l=r-u,d=e-o;return l<d&&(c-=d-l),c<0&&(c=0),-100*c/e},t}();i(0);window.lazySizesConfig=window.lazySizesConfig||{},window.lazySizesConfig.lazyClass="enhancedimage--img--lazyload";var h=/^img$/i,g=/^picture$/i,m=function(){function t(t,e){this.sources=new Map,this.element=t,this.currentSrc=null}return t.prototype.addSource=function(t,e){var i={url:new URL(t,window.location.toString()),focus:e};this.sources.set(i.url.pathname,i)},t.prototype.setFocus=function(t){this.focusedImage||(this.focusedImage=new f(this.element,{focus:t})),this.focusedImage.setFocus(t)},t.prototype.updateFocusPoint=function(t){if(this.currentSrc===this.element.currentSrc&&!0!==t)return!1;var e=this.sources.get(new URL(this.element.currentSrc,window.location.toString()).pathname);if(!e)return!1;this.setFocus(e.focus),this.element.classList.add("focused"),this.currentSrc=this.element.currentSrc},t}();!function(t,e){var i,n,s,o,a,r,u,c=(o=[],a=s=[],(u=function(t,s){i&&!s?t.apply(this,arguments):(a.push(t),n||(n=!0,(e.hidden?setTimeout:requestAnimationFrame)(r)))})._lsFlush=r=function(){var t=a;for(a=s.length?o:s,i=!0,n=!1;t.length;)t.shift()();i=!1},u),l=e.getElementsByClassName("enhancedimage--img"),d=function(e){var i,n=0,s=t.lazySizesConfig.throttleDelay,o=t.lazySizesConfig.ricTimeout,a=function(){i=!1,n=Date.now(),e()},r=t.requestIdleCallback&&o>49?function(){t.requestIdleCallback(a,{timeout:o}),o!==t.lazySizesConfig.ricTimeout&&(o=t.lazySizesConfig.ricTimeout)}:function(t,e){return e?function(){c(t)}:function(){var e=this,i=arguments;c(function(){t.apply(e,i)})}}(function(){setTimeout(a)},!0);return function(t){var e;(t=!0===t)&&(o=33),i||(i=!0,(e=s-(Date.now()-n))<0&&(e=0),t||e<9?r():setTimeout(r,e))}}(function(t){for(var e=l.length,i=0;i<e;i++)if(l[i]){var n=l[i]._image;n&&n.updateFocusPoint()}});t.addEventListener("resize",d,!0),e.addEventListener("lazyloaded",function(t){var e=t.target;if(!h.test(e.nodeName)||!e.classList.contains("enhancedimage--img"))return!1;var i=t.target,n=i.parentElement,s=i._image;if(!s){if((s=new m(i)).addSource(i.getAttribute("srcset"),{x:parseFloat(i.getAttribute("data-focus-x")),y:parseFloat(i.getAttribute("data-focus-y"))}),n&&g.test(n.nodeName||""))for(var o=n.getElementsByTagName("source"),a=o.length,r=0;r<a;r++)if(o[r]){var u=o[r];s.addSource(u.getAttribute("srcset"),{x:parseFloat(u.getAttribute("data-focus-x")),y:parseFloat(u.getAttribute("data-focus-y"))})}i._image=s}s.updateFocusPoint()})}(window,document)}]);