1import H from"./vendor/photoswipe/photoswipe-lightbox.esm.min.js";const h=.24,m=.3,b=[.19,1,.22,1],y=[.42,0,.58,1],D=h*1e3,B=m*1e3,S=`cubic-bezier(${b.join(", ")})`,G=`cubic-bezier(${y.join(", ")})`,U=.12,k=.18,X=[.19,1,.22,1],z=[.42,0,.58,1],d=matchMedia("(prefers-reduced-motion: reduce)"),s=new H({pswpModule:()=>import("./vendor/photoswipe/photoswipe.esm.min.js"),showHideAnimationType:"zoom",bgOpacity:1,closeOnVerticalDrag:!0,pinchToClose:!0,wheelToZoom:!1,zoom:!1,showAnimationDuration:D,hideAnimationDuration:B,easing:S});let p=null,w="0px";function R(e,n,t,o,r){return d.matches||!globalThis.Motion?.animate?(e.style.borderRadius=t,{finished:Promise.resolve()}):globalThis.Motion.animate(e,{borderRadius:[n,t]},{duration:o,ease:r})}function L(e){e.dataset.sourceRadius=w,R(e,w,"0px",h,b)}let c=null,g="",I=null,_=null,a=null,f=null,v="",T=null;function O(e){const n=s.pswp?.element?.querySelector(".pswp__button--close");if(!n)return;T?.stop?.();const t=globalThis.__siteMotionTuck;if(!t)return;const o=e==="visible"?t.VISIBLE:t.HIDDEN;if(n.style.pointerEvents=e==="visible"?"":"none",d.matches||!globalThis.Motion?.animate){Object.assign(n.style,o),T={finished:Promise.resolve()};return}T=globalThis.Motion.animate(n,o,t.TRANSITION)}let i=null,E=null;function x(e,n,t){if(i){if(E?.stop?.(),d.matches||!globalThis.Motion?.animate){i.style.opacity=String(e),E={finished:Promise.resolve()};return}E=globalThis.Motion.animate(i,{opacity:e},{duration:n,ease:t})}}function A(e,n){a?.stop?.();const t=n==="exit",o=t?0:1;if(d.matches||!globalThis.Motion?.animate)return e.style.opacity=String(o),a={finished:Promise.resolve()},a;const r=t?U:k,l=t?X:z;return a=globalThis.Motion.animate(e,{opacity:o},{duration:r,ease:l}),a}s.on("uiRegister",()=>{const e=s.pswp;e?.element&&(p=new MutationObserver(n=>{for(const t of n)for(const o of t.addedNodes)o.nodeType===1&&(o.matches?.(".pswp__img")?L(o):o.querySelectorAll?.(".pswp__img").forEach(L))}),p.observe(e.element,{childList:!0,subtree:!0}),e.element.addEventListener("wheel",n=>{const t=e.currSlide;if(t)if(n.preventDefault(),n.ctrlKey){const o=Math.max(-50,Math.min(50,n.deltaY)),r=Math.exp(-o*.01),l=Math.max(t.zoomLevels.min,Math.min(t.zoomLevels.max,t.currZoomLevel*r));t.zoomTo(l,{x:n.clientX,y:n.clientY},0)}else{if(t.currZoomLevel<=t.zoomLevels.initial)return;t.panTo(t.pan.x-n.deltaX,t.pan.y-n.deltaY)}},{passive:!1}))}),s.on("beforeOpen",()=>{s.pswp&&(s.pswp.options.easing=S),s.options.easing=S,window.dispatchEvent(new CustomEvent("site:pause-shaders")),i?i.isConnected||(document.body.appendChild(i),i.style.opacity="0"):(i=document.createElement("div"),i.className="pswp-blur-layer",document.body.appendChild(i));const e=s.options.dataSource?.[0]?.element;if(!e)return;w=getComputedStyle(e).borderRadius;const t=e.closest(".case-mockup-wrap")?.querySelector(".mockup--mobile");if(t&&!t.contains(e)){const o=t.getBoundingClientRect();c=t,g=t.style.cssText,I=t.parentElement,_=t.nextSibling,document.body.appendChild(t),t.style.cssText+=`;position:fixed;top:${o.top}px;left:${o.left}px;width:${o.width}px;right:auto;bottom:auto;z-index:1000000;pointer-events:none;`,A(t,"exit")}}),s.on("openingAnimationStart",()=>{x(1,h,b),O("visible");const e=s.options.dataSource?.[0]?.element;e&&(f=e,v=e.style.opacity,e.style.opacity="0")}),s.on("close",()=>{s.pswp&&(s.pswp.options.easing=G),document.querySelectorAll(".pswp__img").forEach(e=>{const n=e.dataset.sourceRadius;n&&R(e,"0px",n,m,y)}),p?.disconnect(),p=null,c&&A(c,"enter"),x(0,m,y),O("hidden")}),s.on("destroy",async()=>{if(window.dispatchEvent(new CustomEvent("site:resume-shaders")),f&&(f.style.opacity=v,f=null,v=""),i&&i.isConnected&&(parseFloat(getComputedStyle(i).opacity)||0)<.01&&i.remove(),!c)return;const e=c,n=g,t=I,o=_,r=a;c=null,g="",I=null,_=null,a=null;try{await r?.finished}catch{}c||(e.style.cssText=n,o?t.insertBefore(e,o):t.appendChild(e))}),s.addFilter("uiElement",(e,n)=>{if(n.name==="close"){e.classList.add("btn","btn--icon"),e.innerHTML='<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
1<path d="M6 18 18 6M6 6l12 12"/></svg>';const t=globalThis.__siteMotionTuck;t&&(Object.assign(e.style,t.HIDDEN),e.style.pointerEvents="none")}return e}),s.init();function N(e){let n=null,t=-1;for(const o of e.split(/,\s+/)){const[r,l]=o.trim().split(/\s+/),u=l&&l.endsWith("w")?parseInt(l,10):0;u>t&&(t=u,n=r)}return n?new URL(n,document.baseURI).href:null}function P(e,n){if(!e||!n)return!1;const t=new URL(n,document.baseURI).href;return e.split(/,\s+/).some(o=>{const[r]=o.trim().split(/\s+/);return new URL(r,document.baseURI).href===t})}function C(e){const n=e.currentSrc||e.src,t=e.parentElement?.tagName==="PICTURE"?e.parentElement:null;if(t){const l=[...t.querySelectorAll("source"),e].find(u=>P(u.getAttribute("srcset"),n))?.getAttribute("srcset");if(l)return N(l)||n}const o=e.getAttribute("srcset");return o&&N(o)||n}function W(e){const n=Number(e.getAttribute("width"))||e.naturalWidth,t=Number(e.getAttribute("height"))||e.naturalHeight;s.loadAndOpen(0,[{src:C(e),width:n,height:t,alt:e.alt||"",msrc:e.currentSrc||e.src,element:e,thumbCropped:!1}])}const M=new Set;function q(e){const n=C(e);if(!n||M.has(n))return;M.add(n);const t=new Image;t.loading="eager",t.decoding="async",t.src=n,t.decode?.().catch(()=>{})}const j=document.querySelectorAll(".thumb-wrap");for(const e of j){if(e.closest("next-project-card"))continue;const n=e.querySelector("img");if(!n)continue;const t=e.closest(".image-container, .mockup");t&&t.classList.add("lightbox-frame"),e.classList.add("lightbox-trigger"),e.addEventListener("pointerenter",()=>q(n),{passive:!0}),e.addEventListener("click",o=>{o.preventDefault(),W(n)})}
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.