File: C:/Users/fred/AppData/Local/Microsoft/OneDrive/26.168.0830.0006/WebAssets/static/views/museum.js
(function(){"use strict";var _=ViewLib.Thumbnail,H=18,m=230,P=14,O=4,J=1.6,D=300,K="#1a1a1e",ft="rgba(255,255,255,0.012)",ut="#101013",M=255,B=245,G=230,ct="#f5f0e6",$="#1e1610",vt="#c4a84d",gt="#8a7535",st=.08,ht=.06,z=.4,mt="#141416",T=document.getElementById("gallery"),e=T.getContext("2d"),c,b;function p(){c=window.innerWidth,b=window.innerHeight,T.width=c*devicePixelRatio,T.height=b*devicePixelRatio,T.style.width=c+"px",T.style.height=b+"px",e.setTransform(devicePixelRatio,0,0,devicePixelRatio,0,0),g=b*.08,A=b*.72,W=A,C=g+(A-g)*.42}var g,A,W,C;p(),window.addEventListener("resize",p);var S=0,X=0,I=!1,y=0,d=[],Y=0,f={x:0,targetX:0,velocity:0,prevX:0},h=-1,R=0,w=0,U=-1,E=[],L=!1,F=0,j=0,q=0,x=0,tt=null;function Tt(){var t=document.createElement("canvas");t.width=6,t.height=6;var n=t.getContext("2d");n.fillStyle=K,n.fillRect(0,0,6,6),n.strokeStyle=ft,n.lineWidth=.5;for(var a=.5;a<6;a+=2)n.beginPath(),n.moveTo(a,0),n.lineTo(a,6),n.stroke();n.strokeStyle="rgba(255,255,255,0.006)";for(var r=1.5;r<6;r+=3)n.beginPath(),n.moveTo(0,r),n.lineTo(6,r),n.stroke();tt=t}Tt();function N(){if(d.length===0){Y=c;return}for(var t=D,n=0;n<d.length;n++){var a=d[n];if(a.img&&a.img.naturalWidth){var r=a.img.naturalWidth/a.img.naturalHeight;a.drawH=m,a.drawW=m*r}else a.drawW=m*1.33,a.drawH=m;a.totalW=a.drawW+(P+O)*2,a.totalH=a.drawH+(P+O)*2,a.x=t+a.totalW/2,a.y=C,t+=a.totalW+a.drawW*J}Y=t-d[d.length-1].drawW*J+D,f.targetX===0&&d.length>0&&(f.targetX=d[0].x-c/2,f.x=f.targetX)}var et=document.getElementById("pageInfo");function wt(){if(S!==0){var t=Math.floor(X/H)+1,n=Math.ceil(S/H);et.textContent="Page "+t+" of "+n}}function V(t){if(I)return Promise.resolve();I=!0;var n=++y;return _.fetchThumbnailPage(t,H).then(function(a){if(n===y)return S=a.total,X=t,wt(),d=a.items.map(function(r){return{img:null,name:r.name||"",takenDateTime:r.takenDateTime||"",thumbnailId:r.thumbnailId,x:0,y:0,drawW:m*1.33,drawH:m,totalW:0,totalH:0,loaded:!1}}),E=d.map(function(){return .5}),h=-1,R=0,w=0,N(),f.targetX=d.length>0?d[0].x-c/2:0,f.x=f.targetX,Promise.all(d.map(function(r,l){return r.thumbnailId?new Promise(function(o){var i=new Image;i.crossOrigin="anonymous",i.onload=function(){if(n!==y){o();return}r.img=i,r.loaded=!0;var u=i.naturalWidth/i.naturalHeight;r.drawH=m,r.drawW=m*u,r.totalW=r.drawW+(P+O)*2,r.totalH=r.drawH+(P+O)*2,o()},i.onerror=o,i.dataset.od4ApiName="thumbnail.single",i.src=_.buildThumbnailUrl(r.thumbnailId)}):Promise.resolve()}))}).then(function(){n===y&&(N(),f.targetX=d.length>0?d[0].x-c/2:0)}).catch(function(a){console.error("Failed to load photos:",a)}).finally(function(){n===y&&(I=!1)})}function at(){if(I)return Promise.resolve();I=!0;var t=++y,n=S===0?_.fetchThumbnailPage(0,1).then(function(a){t===y&&(S=a.total)}):Promise.resolve();return n.then(function(){if(t===y){for(var a=[],r=0;r<H;r++)a.push(Math.floor(Math.random()*S));return d=a.map(function(){return{img:null,name:"",takenDateTime:"",thumbnailId:null,x:0,y:0,drawW:m*1.33,drawH:m,totalW:0,totalH:0,loaded:!1}}),E=d.map(function(){return .5}),h=-1,R=0,w=0,N(),f.targetX=d.length>0?d[0].x-c/2:0,f.x=f.targetX,Promise.all(a.map(function(l,o){return _.fetchThumbnailPage(l,1).then(function(i){if(t===y){var u=i.items[0];if(u&&(d[o].name=u.name||"",d[o].takenDateTime=u.takenDateTime||"",d[o].thumbnailId=u.thumbnailId,!!u.thumbnailId))return new Promise(function(v){var s=new Image;s.crossOrigin="anonymous",s.onload=function(){if(t!==y){v();return}d[o].img=s,d[o].loaded=!0;var k=s.naturalWidth/s.naturalHeight;d[o].drawH=m,d[o].drawW=m*k,d[o].totalW=d[o].drawW+(P+O)*2,d[o].totalH=d[o].drawH+(P+O)*2,v()},s.onerror=v,s.dataset.od4ApiName="thumbnail.single",s.src=_.buildThumbnailUrl(u.thumbnailId)})}}).catch(function(){})}))}}).then(function(){t===y&&(N(),f.targetX=d.length>0?d[0].x-c/2:0,X=-1,et.textContent="Shuffled")}).catch(function(a){console.error("Failed to shuffle:",a)}).finally(function(){t===y&&(I=!1)})}function bt(){if(S!==0){var t=X===-1?0:X+H;t>=S&&(t=0),V(t)}}function yt(){if(S!==0){var t=X===-1?0:X-H;t<0&&(t=Math.max(0,S-H)),V(t)}}function Wt(t){return Od4Shared.DateFormat.formatAsRecorded(t,{year:"numeric",month:"long",day:"numeric"},Od4Strings.resolveLocale())}function Pt(t){for(var n=-1,a=1/0,r=0;r<d.length;r++){var l=Math.abs(d[r].x-t);l<a&&(a=l,n=r)}return n}function St(){var t=e.createLinearGradient(0,0,0,g+20);t.addColorStop(0,"#040406"),t.addColorStop(1,K),e.fillStyle=t,e.fillRect(0,0,c,g+20),e.strokeStyle="rgba(255,255,255,0.04)",e.lineWidth=2,e.beginPath(),e.moveTo(0,g),e.lineTo(c,g),e.stroke(),e.strokeStyle="rgba(255,255,255,0.02)",e.lineWidth=1,e.beginPath(),e.moveTo(0,g+4),e.lineTo(c,g+4),e.stroke()}function Rt(t){var n=e.createPattern(tt,"repeat");e.fillStyle=n,e.save(),e.translate(-t%6,0),e.fillRect(t%6,g,c,A-g),e.restore()}function Lt(){e.fillStyle=ut,e.fillRect(0,W,c,b-W),e.strokeStyle="rgba(255,255,255,0.03)",e.lineWidth=1,e.beginPath(),e.moveTo(0,W),e.lineTo(c,W),e.stroke()}function Ot(t){e.save(),e.globalAlpha=.06;for(var n=0;n<d.length;n++){var a=d[n];if(!(!a.loaded||!a.img)){var r=a.x-t,l=r-a.totalW/2;if(!(l>c+50||l+a.totalW<-50)){var o=W+4,i=a.totalH*.35;e.save(),e.translate(r,o+i/2),e.scale(1,-1),e.drawImage(a.img,-a.drawW/2,-i/2,a.drawW,i),e.restore()}}}var u=e.createLinearGradient(0,W,0,W+m*.4);u.addColorStop(0,"rgba(16,16,19,0)"),u.addColorStop(1,"rgba(16,16,19,1)"),e.globalAlpha=1,e.fillStyle=u,e.fillRect(0,W,c,m*.4),e.restore()}function Et(t,n,a,r){var l=n/2+70,o=.18*r,i=e.createRadialGradient(t,C-a*.1,10,t,C-a*.1,l+40);i.addColorStop(0,"rgba("+M+","+B+","+G+","+o+")"),i.addColorStop(.4,"rgba("+M+","+B+","+G+","+o*.5+")"),i.addColorStop(1,"rgba("+M+","+B+","+G+",0)"),e.fillStyle=i,e.fillRect(t-l-50,g,(l+50)*2,A-g),e.save(),e.globalAlpha=.03*r,e.beginPath(),e.moveTo(t-8,g-10),e.lineTo(t+8,g-10),e.lineTo(t+l,C+a/2+60),e.lineTo(t-l,C+a/2+60),e.closePath(),e.fillStyle="rgba("+M+","+B+","+G+",1)",e.fill(),e.restore();var u=e.createRadialGradient(t,g-5,0,t,g-5,12);u.addColorStop(0,"rgba(255,250,230,"+.25*r+")"),u.addColorStop(1,"rgba(255,250,230,0)"),e.fillStyle=u,e.fillRect(t-15,g-15,30,20)}function rt(t,n,a){var r=n-t.totalW/2,l=t.y-t.totalH/2;a>.65&&(e.save(),e.shadowColor="rgba(255,240,200,"+(a-.65)*.5+")",e.shadowBlur=20,e.fillStyle=$,e.fillRect(r,l,t.totalW,t.totalH),e.restore()),e.fillStyle=$,e.fillRect(r,l,t.totalW,t.totalH),e.strokeStyle="rgba(255,255,255,0.06)",e.lineWidth=.5,e.strokeRect(r+1,l+1,t.totalW-2,t.totalH-2);var o=r+O,i=l+O,u=t.drawW+P*2,v=t.drawH+P*2;e.fillStyle=ct,e.fillRect(o,i,u,v),e.strokeStyle="rgba(0,0,0,0.1)",e.lineWidth=1;var s=o+P,k=i+P;e.strokeRect(s-.5,k-.5,t.drawW+1,t.drawH+1),t.loaded&&t.img?e.drawImage(t.img,s,k,t.drawW,t.drawH):(e.fillStyle="#2a2a2e",e.fillRect(s,k,t.drawW,t.drawH))}function xt(t,n){var a=Wt(t.takenDateTime);if(a){var r=Math.min(120,t.drawW*.7),l=18,o=n-r/2,i=t.y+t.totalH/2+16,u=e.createLinearGradient(o,i,o,i+l);u.addColorStop(0,vt),u.addColorStop(.5,"#d4b85e"),u.addColorStop(1,gt),e.fillStyle=u;var v=2;e.beginPath(),e.moveTo(o+v,i),e.lineTo(o+r-v,i),e.arcTo(o+r,i,o+r,i+v,v),e.lineTo(o+r,i+l-v),e.arcTo(o+r,i+l,o+r-v,i+l,v),e.lineTo(o+v,i+l),e.arcTo(o,i+l,o,i+l-v,v),e.lineTo(o,i+v),e.arcTo(o,i,o+v,i,v),e.closePath(),e.fill(),e.strokeStyle="rgba(255,255,255,0.25)",e.lineWidth=.5,e.beginPath(),e.moveTo(o+v,i+.5),e.lineTo(o+r-v,i+.5),e.stroke(),e.strokeStyle="rgba(0,0,0,0.3)",e.beginPath(),e.moveTo(o+v,i+l-.5),e.lineTo(o+r-v,i+l-.5),e.stroke(),e.fillStyle="#2a1f0a",e.font='500 9px -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif',e.textAlign="center",e.textBaseline="middle",e.fillText(a,n,i+l/2+.5)}}function Ht(){var t=180,n=18,a=W+(b-W)*.35,r=c/2;e.fillStyle=mt;var l=3;e.beginPath(),e.moveTo(r-t/2+l,a),e.lineTo(r+t/2-l,a),e.arcTo(r+t/2,a,r+t/2,a+l,l),e.lineTo(r+t/2,a+8-l),e.arcTo(r+t/2,a+8,r+t/2-l,a+8,l),e.lineTo(r-t/2+l,a+8),e.arcTo(r-t/2,a+8,r-t/2,a+8-l,l),e.lineTo(r-t/2,a+l),e.arcTo(r-t/2,a,r-t/2+l,a,l),e.closePath(),e.fill();var o=6,i=18;e.fillRect(r-t/2+i,a+8,o,n),e.fillRect(r+t/2-i-o,a+8,o,n),e.fillRect(r-t/2+i,a+8+n-4,t-i*2,3),e.strokeStyle="rgba(255,255,255,0.03)",e.lineWidth=1,e.beginPath(),e.moveTo(r-t/2+l,a+.5),e.lineTo(r+t/2-l,a+.5),e.stroke()}function Xt(){e.clearRect(0,0,c,b);var t=f.x;e.fillStyle="#0a0a0c",e.fillRect(0,0,c,b),St(),Rt(t);for(var n=0;n<d.length;n++){var a=d[n],r=a.x-t;r<-a.totalW-150||r>c+a.totalW+150||Et(r,a.drawW,a.drawH,E[n]||.5)}Lt(),Ot(t);for(var l=0;l<d.length;l++){var o=d[l],i=o.x-t;i<-o.totalW-50||i>c+o.totalW+50||h===l&&R>.01||(rt(o,i,E[l]||.5),xt(o,i))}if(Ht(),h>=0&&R>.01){e.fillStyle="rgba(0,0,0,"+R*.75+")",e.fillRect(0,0,c,b);var u=d[h];if(u){var v=u.x-t,s=R,k=c*.75,It=b*.75,_t=Math.min(k/u.totalW,It/u.totalH),it=1+(_t-1)*s,Z=v+(c/2-v)*s,dt=u.y+(b/2-u.y)*s;e.save(),e.translate(Z,dt),e.scale(it,it),e.translate(-Z,-dt),rt(u,Z,1),e.restore()}}}function kt(){f.prevX=f.x,f.x+=(f.targetX-f.x)*st,f.velocity=f.x-f.prevX;var t=-D,n=Y-c+D;f.targetX<t&&(f.targetX=t),f.targetX>n&&(f.targetX=Math.max(t,n)),!L&&Math.abs(x)>.1?(f.targetX+=x,x*=.94):L||(x=0);var a=Math.abs(f.velocity),r=f.x+c/2,l=Pt(r);a<z&&l>=0&&h<0&&U!==l&&(U=l);for(var o=0;o<d.length;o++){E[o]===void 0&&(E[o]=.5);var i=o===U&&a<z*2?1:.4;E[o]+=(i-E[o])*.04}R+=(w-R)*ht,Math.abs(R-w)<.001&&(R=w)}function nt(){requestAnimationFrame(nt),kt(),Xt()}T.addEventListener("mousedown",function(t){if(t.button===0){if(h>=0&&w>0){w=0,h=-1;return}L=!0,F=t.clientX,q=t.clientX,j=f.targetX,x=0,T.classList.add("dragging")}}),window.addEventListener("mousemove",function(t){L&&(f.targetX=j-(t.clientX-F),x=-(t.clientX-q)*1.2,q=t.clientX)}),window.addEventListener("mouseup",function(){L&&(L=!1,T.classList.remove("dragging"))}),T.addEventListener("click",function(t){if(!(Math.abs(t.clientX-F)>5)&&!(h>=0&&w>0))for(var n=t.clientX+f.x,a=t.clientY,r=0;r<d.length;r++){var l=d[r];if(n>=l.x-l.totalW/2&&n<=l.x+l.totalW/2&&a>=l.y-l.totalH/2&&a<=l.y+l.totalH/2){h=r,w=1;return}}}),T.addEventListener("wheel",function(t){if(t.preventDefault(),!(h>=0&&w>0)){var n=Math.abs(t.deltaX)>Math.abs(t.deltaY)?t.deltaX:t.deltaY;f.targetX+=n*1.5}},{passive:!1});var lt=0,Q=0,ot=0;T.addEventListener("touchstart",function(t){if(t.touches.length===1){var n=t.touches[0];L=!0,lt=n.clientX,Q=n.clientX,F=n.clientX,ot=f.targetX,x=0}},{passive:!0}),T.addEventListener("touchmove",function(t){if(!(!L||t.touches.length!==1)){t.preventDefault();var n=t.touches[0];f.targetX=ot-(n.clientX-lt),x=-(n.clientX-Q)*1.2,Q=n.clientX}},{passive:!1}),T.addEventListener("touchend",function(){L=!1}),window.addEventListener("keydown",function(t){if(!(t.target.tagName==="INPUT"||t.target.tagName==="TEXTAREA")){if(t.key==="Escape"&&h>=0){t.preventDefault(),w=0,h=-1;return}if(t.key==="ArrowLeft"){if(t.preventDefault(),h>=0&&w>0)return;f.targetX-=300}else if(t.key==="ArrowRight"){if(t.preventDefault(),h>=0&&w>0)return;f.targetX+=300}else(t.key==="r"||t.key==="R")&&at()}}),document.getElementById("prevBtn").addEventListener("click",yt),document.getElementById("nextBtn").addEventListener("click",bt),document.getElementById("randBtn").addEventListener("click",at);var Ct=document.getElementById("loading");V(0).then(function(){Ct.classList.add("hidden")}),nt()})();