const BREAKPOINTS={MOBILE:500,TABLET:1024},GALLERY_STATES={DIALOG:"dialog",THUMBNAILS:"thumbnails",OPTIONS:"options"},getImageSize=(e,t)=>e>BREAKPOINTS.TABLET?t.full?t.full:t.large:e>BREAKPOINTS.MOBILE?t.medium:t.small;class SiteManager extends UIHandler{constructor(){super(),this.previousWidth=window.innerWidth,this.handleResize=this.handleResize.bind(this),this.debouncedResize=this.debounce(this.handleResize,150),this.bindElements(),this.initializeHandlers(this.defineHandlers()),this.bindComponentEvents(),this.bindEvents(),this.initialize()}handleUrlHash(){const e=document.querySelector(window.location.hash);if("LI"===e?.tagName){const t=e.querySelector(".open-gallery");t&&this.openDialog(t)}}handleResize(){const e=window.innerWidth;Math.abs(e-this.previousWidth)>100&&(this.previousWidth=e,this.handleImageResize())}async handleImageResize(){const e=window.innerWidth,t=[];for(const s of this.elements.images)if(!s.closest("dialog")){const i=getImageSize(e,s.dataset);i&&s.src!==i&&t.push(new Promise((e=>{const t=new Image;t.onload=()=>{s.src=i,e()},t.onerror=()=>{console.error(`Failed to load image: ${i}`),e()},t.src=i})))}const s=document.querySelector("dialog[open]");if(s){const i=s.querySelector(".focused");if(i){const s=i.querySelector("img");if(s){const n=getImageSize(e,i.dataset);n&&s.src!==n&&t.push(new Promise((e=>{const t=new Image;t.onload=()=>{s.src=n,e()},t.onerror=()=>{console.error(`Failed to load image: ${n}`),e()},t.src=n})))}}}await Promise.all(t)}async initialize(){try{this.elements.images.length>0&&(this.initializeImageObserver(),window.addEventListener("resize",this.debouncedResize)),this.initializeGalleryFromData()}catch(e){console.error("Gallery initialization failed:",e),this.handleInitializationError()}}async initializeGalleryFromData(){const e=window.gallery?.images;if(console.log(e),e&&"false"!==e)try{const t=JSON.parse(e);t&&"false"!==t&&(this.elements.mainContainer?.insertAdjacentHTML("beforeend",t),await new Promise((e=>setTimeout(e,0))),this.initializeGallery())}catch(e){throw console.error("Failed to parse gallery data:",e),e}}initializeGallery(){this.bindGalleryElements(),this.initializeHandlers(this.defineGalleryHandlers()),this.bindComponentEvents(),this.elements.dialogs?.forEach((e=>{e.addEventListener("keydown",(t=>{"ArrowLeft"===t.key&&this.navigateImages(t,"previous"),"ArrowRight"===t.key&&this.navigateImages(t,"next"),"Escape"===t.key&&this.closeDialog(e)}))}))}bindElements(){this.elements={images:document.querySelectorAll("img:not(.avatar)"),mainContainer:document.querySelector(".wp-site-blocks"),galleryTriggers:document.querySelectorAll(".open-gallery")}}bindGalleryElements(){this.elements.dialogs?.forEach((e=>{e._removeKeydownListener?.(),e._removeTouchListeners?.()})),Object.assign(this.elements,{dialogs:document.querySelectorAll("dialog"),galleryControls:document.querySelectorAll("dialog, .open-gallery, button, .thumbnails a")})}defineHandlers(){return{galleryTriggers:{click:e=>{e.preventDefault(),e.stopPropagation();const t=e.target.closest(".open-gallery");t&&this.openDialog(t)}}}}defineGalleryHandlers(){return{galleryControls:{click:e=>{if(e.target.closest(".term-list a"))return!0;e.preventDefault(),e.stopPropagation();const t=e.target.closest("button, a");t&&(t.classList.contains("open-gallery")?this.openDialog(t):t.classList.contains("close")?this.closeDialog(t.closest("dialog")):t.classList.contains("visible")?this.handleVisibilityToggle(e):t.classList.contains("open-thumbnails")?this.handleThumbnailControl(e,"open"):t.classList.contains("expand")?this.handleThumbnailControl(e,"expand"):t.classList.contains("previous")?this.navigateImages(e,"previous"):t.classList.contains("next")?this.navigateImages(e,"next"):t.closest(".thumbnails a")&&this.handleThumbnailSelection(e))}}}}handleVisibilityToggle(e){const t=e.target.closest("button"),s=t.closest("dialog");if(!s)return;s.classList.toggle("hide-info");const i=!s.classList.contains("hide-info");t.setAttribute("aria-expanded",i.toString()),t.setAttribute("title",i?"Hide Options":"Show Options"),t.setAttribute("aria-label",i?"Hide Options":"Show Options")}initializeImageObserver(){const e=new IntersectionObserver((t=>{t.forEach((t=>{if(t.isIntersecting){const s=t.target;s.closest("dialog")||(this.loadAppropriateImage(s),e.unobserve(s))}}))}),{root:null,rootMargin:"50px",threshold:.1});return this.elements.images.forEach((t=>{t.closest("dialog")||e.observe(t)})),e}loadAppropriateImage(e){const t=getImageSize(window.innerWidth,e.dataset);if(!t)return;e.classList.add("loading");const s=new Image;s.onload=()=>{e.src=t,e.classList.remove("loading"),e.classList.add("loaded")},s.onerror=()=>{console.error(`Failed to load image: ${t}`),e.classList.remove("loading"),e.classList.add("error"),e.dataset.small&&t!==e.dataset.small&&this.loadAppropriateImage(e.dataset.small)},s.src=t}openDialog(e){const t=e.dataset.opens,s=document.getElementById(t);if(!s)return;this.lastFocusedElement=document.activeElement,s.showModal(),this.setupFocusTrap(s),s.setAttribute("role","dialog"),s.setAttribute("aria-modal","true"),s.setAttribute("aria-labelledby","gallery-title"),this.setupTouchHandling(s),this.setComponentState(GALLERY_STATES.DIALOG,!0,{element:s,toggle:e,focusElement:s.querySelector("button.close"),ariaHidden:!1,cleanup:()=>this.closeDialog(s)});const i=e.dataset.focus||s.querySelector(".images figure")?.id;i&&this.updateImage(s.querySelector(`#${i}`))}setupFocusTrap(e){const t=e.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'),s=t[0],i=t[t.length-1],n=e=>{"Tab"===e.key&&(e.shiftKey&&document.activeElement===s?(i.focus(),e.preventDefault()):e.shiftKey||document.activeElement!==i||(s.focus(),e.preventDefault()))};e.addEventListener("keydown",n),e._removeKeydownListener=()=>{e.removeEventListener("keydown",n)}}setupTouchHandling(e){let t=0,s=0;const i=e=>{t=e.touches[0].clientX,s=e.touches[0].clientY},n=i=>{const n=i.changedTouches[0].clientX-t,a=i.changedTouches[0].clientY-s;Math.abs(n)>Math.abs(a)&&Math.abs(n)>50&&this.navigateImages({target:e},n<0?"next":"previous")};e.addEventListener("touchstart",i),e.addEventListener("touchend",n),e._removeTouchListeners=()=>{e.removeEventListener("touchstart",i),e.removeEventListener("touchend",n)}}closeDialog(e){if(!e)return;e._removeKeydownListener?.(),e._removeTouchListeners?.(),e.close(),this.lastFocusedElement&&this.lastFocusedElement.focus();const t=e.querySelector("nav.thumbnails");t&&(t.classList.remove("open","expanded"),this.setComponentState(GALLERY_STATES.THUMBNAILS,!1,{element:t,activeClass:"open"}),this.setComponentState(GALLERY_STATES.THUMBNAILS+"-expand",!1,{element:t,activeClass:"expanded"}))}trapFocus(e){const t=e.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])');this.dialogFocusableElements={first:t[0],last:t[t.length-1]},e.addEventListener("keydown",this.handleDialogKeydown)}handleDialogKeydown(e){if("Tab"===e.key){const{first:t,last:s}=this.dialogFocusableElements;e.shiftKey&&document.activeElement===t?(s.focus(),e.preventDefault()):e.shiftKey||document.activeElement!==s||(t.focus(),e.preventDefault())}}handleTouchStart(e){this.touchStartX=e.touches[0].clientX,this.touchStartY=e.touches[0].clientY}handleTouchEnd(e){const t=e.changedTouches[0].clientX-this.touchStartX,s=e.changedTouches[0].clientY-this.touchStartY;Math.abs(t)>Math.abs(s)&&Math.abs(t)>50&&this.navigateImages(e,t<0?"next":"previous")}updateImage(e){if(!e)return;const t=e.closest("dialog");t.querySelector(".focused")?.classList.remove("focused"),e.classList.add("focused");const s=e.querySelector("img");if(s){console.log(s.dataset);const e=getImageSize(window.innerWidth,s.dataset);console.log(e),e&&this.loadAppropriateImage(s)}this.updateThumbnails(e),this.preloadAdjacentImages(e)}preloadAdjacentImages(e){const t=e.closest("dialog");if(!t)return;[e.nextElementSibling||t.querySelector(".images figure:first-child"),e.previousElementSibling||t.querySelector(".images figure:last-child")].forEach((e=>{if(e){const t=e.querySelector("img");t&&!t.src&&this.loadAppropriateImage(t)}}))}navigateImages(e,t){const s=e.target.closest("dialog");if(!s)return;const i=s.querySelector(".images .focused");if(!i)return;const n="next"===t?i.nextElementSibling||s.querySelector(".images figure:first-child"):i.previousElementSibling||s.querySelector(".images figure:last-child");n&&this.updateImage(n)}updateThumbnails(e){const t=e.closest("dialog")?.querySelector("nav.thumbnails .thumbnails");if(!t)return;t.querySelector(".focused")?.classList.remove("focused");const s=t.querySelector(`#for-${e.id}`);s&&(s.classList.add("focused"),s.scrollIntoView({behavior:"smooth",block:"center",inline:"center"}))}handleThumbnailSelection(e){e.preventDefault();const t=e.target.closest("a");if(!t)return;const s=t.querySelector("figure");if(!s)return;const i=s.id.replace("for-",""),n=t.closest("dialog").querySelector(`#${i}`);n&&this.updateImage(n)}handleThumbnailControl(e,t){const s=e.target.closest("button"),i=s.closest("nav.thumbnails");if(i)if("open"===t){if(i.classList.toggle("open"),!i.classList.contains("open")){i.classList.remove("expanded");const e=i.querySelector("button.expand");e&&(e.setAttribute("aria-expanded","false"),e.setAttribute("title","Expand Thumbnails"),e.setAttribute("aria-label","Expand Thumbnails"))}s.setAttribute("aria-expanded",i.classList.contains("open")),s.setAttribute("title",i.classList.contains("open")?"Hide Thumbnails":"Show Thumbnails"),s.setAttribute("aria-label",i.classList.contains("open")?"Hide Thumbnails":"Show Thumbnails")}else"expand"===t&&(i.classList.toggle("expanded"),s.setAttribute("aria-expanded",i.classList.contains("expanded")),s.setAttribute("title",i.classList.contains("expanded")?"Condense Thumbnails":"Expand Thumbnails"),s.setAttribute("aria-label",i.classList.contains("expanded")?"Condense Thumbnails":"Expand Thumbnails"))}debounce(e,t){let s;return function(...i){clearTimeout(s),s=setTimeout((()=>{clearTimeout(s),e(...i)}),t)}}handleInitializationError(){document.querySelectorAll(".open-gallery").forEach((e=>{const t=e.querySelector("img");t&&t.dataset.full&&(e.href=t.dataset.full)}))}handleOutsideClick(e){if(this.isComponentActive(GALLERY_STATES.DIALOG)){const t=document.querySelector("dialog[open]");t&&!t.contains(e.target)&&this.closeDialog(t)}}handleEscapeKey(e){if("Escape"===e.key&&this.isComponentActive(GALLERY_STATES.DIALOG)){const e=document.querySelector("dialog[open]");e&&this.closeDialog(e)}}cleanup(){super.cleanup(),window.removeEventListener("resize",this.debouncedResize),this.cleanupAllObservers(),this.elements.dialogs?.forEach((e=>{e._removeKeydownListener?.(),e._removeTouchListeners?.()}))}}document.addEventListener("DOMContentLoaded",(()=>{window.siteManager=new SiteManager}));