PageSourceSearch

https://www.screamingeyepress.com/wp-content/plugins/lightbox-phot…hotoswipe-dynamic-caption-plugin.esm.min.js

js screamingeyepress.com collected 2026-09-24 19:38:32 UTC 8,771 bytes, 37 lines download raw bytes

1const defaultOptions={captionContent:'.pswp-caption-content',type:'auto',horizontalEdgeThreshold:20,mobileCaptionOverlapRatio:0.3,mobileLayoutBreakpoint:600,verticallyCenterImage:!1};class PhotoSwipeDynamicCaption{constructor(lightbox,options){this.options={...defaultOptions,...options};this.lightbox=lightbox;this.lightbox.on('init',()=>{this.pswp=this.lightbox.pswp;this.initCaption()})}
2initCaption(){const{pswp}=this;pswp.on('change',()=>{this.showCaption(this.pswp.currSlide)});pswp.on('calcSlideSize',(e)=>this.onCalcSlideSize(e));pswp.on('slideDestroy',(e)=>{if(e.slide.dynamicCaption){if(e.slide.dynamicCaption.element){e.slide.dynamicCaption.element.remove()}
3delete e.slide.dynamicCaption}});pswp.on('zoomPanUpdate',({slide})=>{if(pswp.opener.isOpen&&slide.dynamicCaption){if(slide.currZoomLevel>slide.zoomLevels.initial){this.hideCaption(slide)}else{this.showCaption(slide)}
4if(slide.dynamicCaption.element){let captionYOffset=0;if(slide.currZoomLevel<=slide.zoomLevels.initial){const shiftedAmount=slide.pan.y-slide.bounds.center.y;if(Math.abs(shiftedAmount)>1){captionYOffset=shiftedAmount}}
5this.setCaptionYOffset(slide.dynamicCaption.element,captionYOffset)}
6this.adjustPanArea(slide,slide.currZoomLevel)}});pswp.on('beforeZoomTo',(e)=>{this.adjustPanArea(pswp.currSlide,e.destZoomLevel)});pswp.on('tapAction',(e)=>{if(e.originalEvent.target.closest('.pswp__dynamic-caption')){e.preventDefault()}})}
7adjustPanArea(slide,zoomLevel){if(slide.dynamicCaption&&slide.dynamicCaption.adjustedPanAreaSize){if(zoomLevel>slide.zoomLevels.initial){slide.panAreaSize.x=slide.dynamicCaption.originalPanAreaSize.x;slide.panAreaSize.y=slide.dynamicCaption.originalPanAreaSize.y}else{slide.panAreaSize.x=slide.dynamicCaption.adjustedPanAreaSize.x;slide.panAreaSize.y=slide.dynamicCaption.adjustedPanAreaSize.y}}}
8useMobileLayout(){const{mobileLayoutBreakpoint}=this.options;if(typeof mobileLayoutBreakpoint==='function'){return mobileLayoutBreakpoint.call(this)}else if(typeof mobileLayoutBreakpoint==='number'){if(window.innerWidth<mobileLayoutBreakpoint){return!0}}
9return!1}
10hideCaption(slide){if(slide.dynamicCaption&&!slide.dynamicCaption.hidden){const captionElement=slide.dynamicCaption.element;if(!captionElement){return}
11slide.dynamicCaption.hidden=!0;captionElement.classList.add('pswp__dynamic-caption--faded');if(slide.captionFadeTimeout){clearTimeout(slide.captionFadeTimeout)}
12slide.captionFadeTimeout=setTimeout(()=>{captionElement.style.visibility='hidden';delete slide.captionFadeTimeout},400)}}
13setCaptionYOffset(el,y){el.style.transform=`translateY(${y}px)`}
14showCaption(slide){if(slide.dynamicCaption&&slide.dynamicCaption.hidden){const captionElement=slide.dynamicCaption.element;if(!captionElement){return}
15slide.dynamicCaption.hidden=!1;captionElement.style.visibility='visible';clearTimeout(slide.captionFadeTimeout);slide.captionFadeTimeout=setTimeout(()=>{captionElement.classList.remove('pswp__dynamic-caption--faded');delete slide.captionFadeTimeout},50)}}
16setCaptionPosition(captionEl,x,y){const isOnHorizontalEdge=(x<=this.options.horizontalEdgeThreshold);captionEl.classList[isOnHorizontalEdge?'add':'remove']('pswp__dynamic-caption--on-hor-edge');captionEl.style.left=x+'px';captionEl.style.top=y+'px'}
17setCaptionWidth(captionEl,width){if(!width){captionEl.style.removeProperty('width')}else{captionEl.style.width=width+'px'}}
18setCaptionType(captionEl,type){const prevType=captionEl.dataset.pswpCaptionType;if(type!==prevType){captionEl.classList.add('pswp__dynamic-caption--'+type);captionEl.classList.remove('pswp__dynamic-caption--'+prevType);captionEl.dataset.pswpCaptionType=type}}
19updateCaptionPosition(slide){if(!slide.dynamicCaption||!slide.dynamicCaption.type||!slide.dynamicCaption.element){return}
20if(slide.dynamicCaption.type==='mobile'){this.setCaptionType(slide.dynamicCaption.element,slide.dynamicCaption.type);slide.dynamicCaption.element.style.removeProperty('left');slide.dynamicCaption.element.style.removeProperty('top');this.setCaptionWidth(slide.dynamicCaption.element,!1);return}
21const zoomLevel=slide.zoomLevels.initial;const imageWidth=Math.ceil(slide.width*zoomLevel);const imageHeight=Math.ceil(slide.height*zoomLevel);this.setCaptionType(slide.dynamicCaption.element,slide.dynamicCaption.type);if(slide.dynamicCaption.type==='aside'){this.setCaptionPosition(slide.dynamicCaption.element,slide.bounds.center.x+imageWidth,slide.bounds.center.y);this.setCaptionWidth(slide.dynamicCaption.element,!1)}else if(slide.dynamicCaption.type==='below'){this.setCaptionPosition(slide.dynamicCaption.element,slide.bounds.center.x,slide.bounds.center.y+imageHeight);this.setCaptionWidth(slide.dynamicCaption.element,imageWidth)}}
22onCalcSlideSize(e){const{slide}=e;let captionSize;let useMobileVersion;if(!slide.dynamicCaption){slide.dynamicCaption={element:undefined,type:!1,hidden:!1};const captionHTML=this.getCaptionHTML(slide);
22if(!captionHTML){return}
23slide.dynamicCaption.element=document.createElement('div');slide.dynamicCaption.element.className='pswp__dynamic-caption pswp__hide-on-close';slide.dynamicCaption.element.innerHTML=captionHTML;this.pswp.dispatch('dynamicCaptionUpdateHTML',{captionElement:slide.dynamicCaption.element,slide});slide.holderElement.appendChild(slide.dynamicCaption.element)}
24if(!slide.dynamicCaption.element){return}
25this.storeOriginalPanAreaSize(slide);slide.bounds.update(slide.zoomLevels.initial);if(this.useMobileLayout()){slide.dynamicCaption.type='mobile';useMobileVersion=!0}else{if(this.options.type==='auto'){if(slide.bounds.center.x>slide.bounds.center.y){slide.dynamicCaption.type='aside'}else{slide.dynamicCaption.type='below'}}else{slide.dynamicCaption.type=this.options.type}}
26const imageWidth=Math.ceil(slide.width*slide.zoomLevels.initial);const imageHeight=Math.ceil(slide.height*slide.zoomLevels.initial);this.setCaptionType(slide.dynamicCaption.element,slide.dynamicCaption.type);if(slide.dynamicCaption.type==='aside'){this.setCaptionWidth(slide.dynamicCaption.element,!1);captionSize=this.measureCaptionSize(slide.dynamicCaption.element,e.slide);const captionWidth=captionSize.x;const horizontalEnding=imageWidth+slide.bounds.center.x;const horizontalLeftover=(slide.panAreaSize.x-horizontalEnding);if(horizontalLeftover<=captionWidth){slide.panAreaSize.x-=captionWidth;this.recalculateZoomLevelAndBounds(slide)}else{}}else if(slide.dynamicCaption.type==='below'||useMobileVersion){this.setCaptionWidth(slide.dynamicCaption.element,useMobileVersion?this.pswp.viewportSize.x:imageWidth);captionSize=this.measureCaptionSize(slide.dynamicCaption.element,e.slide);const captionHeight=captionSize.y;if(this.options.verticallyCenterImage){slide.panAreaSize.y-=captionHeight;this.recalculateZoomLevelAndBounds(slide)}else{const verticalEnding=imageHeight+slide.bounds.center.y;const verticalLeftover=slide.panAreaSize.y-verticalEnding;const initialPanAreaHeight=slide.panAreaSize.y;if(verticalLeftover<=captionHeight){slide.panAreaSize.y-=Math.min((captionHeight-verticalLeftover)*2,captionHeight);this.recalculateZoomLevelAndBounds(slide);const maxPositionX=slide.panAreaSize.x*this.options.mobileCaptionOverlapRatio/2;if(useMobileVersion&&slide.bounds.center.x>maxPositionX){slide.panAreaSize.y=initialPanAreaHeight;this.recalculateZoomLevelAndBounds(slide)}}}}else{}
27this.storeAdjustedPanAreaSize(slide);this.updateCaptionPosition(slide)}
28measureCaptionSize(captionEl,slide){const rect=captionEl.getBoundingClientRect();const event=this.pswp.dispatch('dynamicCaptionMeasureSize',{captionEl,slide,captionSize:{x:rect.width,y:rect.height}});return event.captionSize}
29recalculateZoomLevelAndBounds(slide){slide.zoomLevels.update(slide.width,slide.height,slide.panAreaSize);slide.bounds.update(slide.zoomLevels.initial)}
30storeAdjustedPanAreaSize(slide){if(slide.dynamicCaption){if(!slide.dynamicCaption.adjustedPanAreaSize){slide.dynamicCaption.adjustedPanAreaSize={}}
31slide.dynamicCaption.adjustedPanAreaSize.x=slide.panAreaSize.x;slide.dynamicCaption.adjustedPanAreaSize.y=slide.panAreaSize.y}}
32storeOriginalPanAreaSize(slide){if(slide.dynamicCaption){if(!slide.dynamicCaption.originalPanAreaSize){slide.dynamicCaption.originalPanAreaSize={}}
33slide.dynamicCaption.originalPanAreaSize.x=slide.panAreaSize.x;slide.dynamicCaption.originalPanAreaSize.y=slide.panAreaSize.y}}
34getCaptionHTML(slide){if(typeof this.options.captionContent==='function'){return this.options.captionContent.call(this,slide)}
35const currSlideElement=slide.data.element;let captionHTML='';if(currSlideElement){const hiddenCaption=currSlideElement.querySelector(this.options.captionContent);if(hiddenCaption){captionHTML=hiddenCaption.innerHTML}else{const img=currSlideElement.querySelector('img');if(img){captionHTML=img.getAttribute('alt')}}}
36return captionHTML}}
37export default PhotoSwipeDynamicCaption

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.