FileMaster
Search
Toggle Dark Mode
Home
/
.
/
wp-content
/
plugins
/
surecart
/
packages
/
blocks-next
/
build
/
scripts
/
lightbox
Edit File: index.js
import*as e from"@wordpress/interactivity";var t,n,r={d:function(e,t){for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o:function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}},a=(t={getContext:function(){return e.getContext},getElement:function(){return e.getElement},store:function(){return e.store}},n={},r.d(n,t),n);let o=!1,i=0,g=[];const{state:l,actions:s,callbacks:c}=(0,a.store)("surecart/lightbox",{state:{images:[],currentImageIndex:-1,get currentImageId(){return l.currentImageIndex>-1&&l.images.length>0?l.images[l.currentImageIndex]:null},get currentImage(){return l.metadata[l.currentImageId]},get hasNavigation(){return l.images.length>1},get hasNextImage(){return l.currentImageIndex+1<l.images.length},get hasPreviousImage(){return l.currentImageIndex-1>=0},get overlayOpened(){return null!==l.currentImageId},get roleAttribute(){return l.overlayOpened?"dialog":null},get ariaModal(){return l.overlayOpened?"true":null},get enlargedSrc(){return l.currentImage.uploadedSrc||"data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs="},get imgStyles(){return l.overlayOpened&&"object-fit:cover;"},get isContentHidden(){const e=(0,a.getContext)();return l.overlayEnabled&&l.currentImageId===e.imageId},get isContentVisible(){const e=(0,a.getContext)();return!l.overlayEnabled&&l.currentImageId===e.imageId},get imageButtonRight(){const{imageId:e}=(0,a.getContext)();return l.metadata[e].imageButtonRight},get imageButtonTop(){const{imageId:e}=(0,a.getContext)();return l.metadata[e].imageButtonTop}},actions:{showLightbox(){const{imageId:e,images:t}=(0,a.getContext)();l.metadata[e]?.imageRef?.complete&&(l.scrollTopReset=document.documentElement.scrollTop,l.scrollLeftReset=document.documentElement.scrollLeft,l.images=(t||[e]).filter((t=>{const n=t?.id||t,r=l?.metadata[n],a=r?.imageRef;if(!a)return!1;const o=a&&function(e){for(;e;){if("none"===window.getComputedStyle(e).display)return!1;e=e.parentElement}return!0}(a);return r?.galleryId===l.metadata[e]?.galleryId&&o})).map((e=>e?.id?e.id:e)),c.setCurrentImageIndex(e),l.overlayEnabled=!0,c.setOverlayStyles(),g=[],document.querySelectorAll("body > :not(.sc-lightbox-overlay):not(.wp-block-surecart-product-quick-view)").forEach((e=>{e.hasAttribute("inert")||e.querySelector(".sc-lightbox-overlay")||e.querySelector(".wp-block-surecart-product-quick-view")||(e.setAttribute("inert",""),g.push(e))})))},hideLightbox(){l.overlayEnabled&&(l.showClosingAnimation=!0,l.overlayEnabled=!1,setTimeout((function(){l.currentImage.buttonRef.focus({preventScroll:!0}),l.currentImageIndex=-1,l.images=[]}),450),g.forEach((e=>{e.removeAttribute("inert")})),g=[])},showPreviousImage(e){l.hasNavigation&&(e.stopPropagation(),l.hasPreviousImage&&(l.currentImageIndex=l.currentImageIndex-1,c.setOverlayStyles()))},showNextImage(e){l.hasNavigation&&(e.stopPropagation(),l.hasNextImage&&(l.currentImageIndex=l.currentImageIndex+1,c.setOverlayStyles()))},handleKeydown(e){l.overlayEnabled&&("Escape"===e.key&&s.hideLightbox(),"ArrowLeft"===e.key?s.showPreviousImage(e):"ArrowRight"===e.key&&s.showNextImage(e))},handleTouchMove(e){l.overlayEnabled&&e.preventDefault()},handleTouchStart(){o=!0},handleTouchEnd(){i=Date.now(),o=!1},handleScroll(){l.overlayOpened&&!o&&Date.now()-i>450&&window.scrollTo(l.scrollLeftReset,l.scrollTopReset)}},callbacks:{setCurrentImageIndex(e){const t=l.images.findIndex((t=>t.toString()===e.toString()));l.currentImageIndex=t},setOverlayStyles(){if(!l.overlayEnabled)return;let{naturalWidth:e,naturalHeight:t,offsetWidth:n,offsetHeight:r}=l.currentImage.imageRef,{x:o,y:i}=l.currentImage.imageRef.getBoundingClientRect();const g=e/t;let s=n/r;if("contain"===l.currentImage.scaleAttr)if(g>s){const e=n/g;i+=(r-e)/2,r=e}else{const e=r*g;o+=(n-e)/2,n=e}s=n/r;let c=parseFloat(l.currentImage.targetWidth&&"none"!==l.currentImage.targetWidth?l.currentImage.targetWidth:e),u=parseFloat(l.currentImage.targetHeight&&"none"!==l.currentImage.targetHeight?l.currentImage.targetHeight:t),d=c/u,m=c,h=u,I=c,f=u;if(g.toFixed(2)!==d.toFixed(2)){if(g>d){const e=c/g;u-e>c?(u=e,c=e*g):u=c/g}else{const e=u*g;c-e>u?(c=e,u=e/g):c=u*g}I=c,f=u,d=c/u,s>d?(m=c,h=m/s):(h=u,m=h*s)}(n>I||r>f)&&(I=n,f=r);let p=0;window.innerWidth>480?p=l.hasNavigation?140:80:window.innerWidth>1920&&(p=160);const x=Math.min(window.innerWidth-p,I),y=Math.min(window.innerHeight-80,f);s>x/y?(I=x,f=I/s):(f=y,I=f*s);const b=n/I,v=c*(I/m),w=u*(f/h),E=l.currentImage.imageRef.closest(".swiper");if(E){const{state:e}=(0,a.store)("surecart/image-slider");if(e&&e.active&&e.swiper){const{x:e,y:t}=E.getBoundingClientRect();o=e,i=t}}l.overlayStyles=`\n\t\t\t\t:root {\n\t\t\t\t\t--sc-lightbox--initial-top-position: ${i}px;\n\t\t\t\t\t--sc-lightbox--initial-left-position: ${o}px;\n\t\t\t\t\t--sc-lightbox--container-width: ${I+1}px;\n\t\t\t\t\t--sc-lightbox--container-height: ${f+1}px;\n\t\t\t\t\t--sc-lightbox--image-width: ${v}px;\n\t\t\t\t\t--sc-lightbox--image-height: ${w}px;\n\t\t\t\t\t--sc-lightbox--scale: ${b};\n\t\t\t\t\t--sc-lightbox--scrollbar-width: ${window.innerWidth-document.documentElement.clientWidth}px;\n\t\t\t\t}\n\t\t\t\t`},setScreenReaderText(){const{ref:e}=(0,a.getElement)();l.overlayEnabled?e.textContent=l.currentImage.screenReaderText:e.textContent=""},setImageRef(){const{imageId:e}=(0,a.getContext)(),{ref:t}=(0,a.getElement)();l.metadata[e].imageRef=t,l.metadata[e].currentSrc=t.currentSrc,c.setButtonStyles()},setButtonStyles(){const{imageId:e}=(0,a.getContext)(),{ref:t}=(0,a.getElement)(),{naturalWidth:n,naturalHeight:r,offsetWidth:o,offsetHeight:i}=t;if(0===n||0===r)return;const g=t.parentElement,s=t.parentElement.clientWidth;let c=t.parentElement.clientHeight;const u=g.querySelector("figcaption");if(u){const e=window.getComputedStyle(u);["absolute","fixed"].includes(e.position)||(c=c-u.offsetHeight-parseFloat(e.marginTop)-parseFloat(e.marginBottom))}const d=c-i,m=s-o;let h=d+16,I=m+16;if("contain"===l.metadata[e].scaleAttr){const e=n/r;e>=o/i?(h=(i-o/e)/2+d+16,I=m+16):(h=d+16,I=(o-i*e)/2+m+16)}l.metadata[e].imageButtonTop=h,l.metadata[e].imageButtonRight=I},setOverlayFocus(){if(l.overlayEnabled){const{ref:e}=(0,a.getElement)();e.focus()}},initTriggerButton(){const{imageId:e}=(0,a.getContext)(),{ref:t}=(0,a.getElement)();l.metadata[e].buttonRef=t}}});
Save
Back