@atlas-viewer/atlas 2.2.7 → 2.2.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +10 -8
- package/dist/index.global.js +17 -15
- package/dist/index.js +10 -8
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var cn=Object.create;var Qt=Object.defineProperty;var un=Object.getOwnPropertyDescriptor;var mn=Object.getOwnPropertyNames;var gn=Object.getPrototypeOf,fn=Object.prototype.hasOwnProperty;var pn=(n,e,t)=>e in n?Qt(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var yn=(n,e)=>{for(var t in e)Qt(n,t,{get:e[t],enumerable:!0})},ui=(n,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of mn(e))!fn.call(n,r)&&r!==t&&Qt(n,r,{get:()=>e[r],enumerable:!(i=un(e,r))||i.enumerable});return n};var J=(n,e,t)=>(t=n!=null?cn(gn(n)):{},ui(e||!n||!n.__esModule?Qt(t,"default",{value:n,enumerable:!0}):t,n)),bn=n=>ui(Qt({},"__esModule",{value:!0}),n);var o=(n,e,t)=>(pn(n,typeof e!="symbol"?e+"":e,t),t);var Gn={};yn(Gn,{Atlas:()=>Qe,AtlasAuto:()=>Ln,AtlasContext:()=>mt,BoundsContext:()=>Rt,Box:()=>st,BrowserEventManager:()=>Ft,CanvasRenderer:()=>ie,CompositeRenderer:()=>Lt,CompositeResource:()=>Kt,DebugRenderer:()=>ne,DrawBox:()=>kn,Geometry:()=>It,GridBuilder:()=>$e,HTMLPortal:()=>Fe,ImageService:()=>Nn,ImageTexture:()=>Et,ModeContext:()=>ut,ModeProvider:()=>Cn,OverlayRenderer:()=>kt,ReactAtlas:()=>Vt,RegionHighlight:()=>Fn,ResizeWorldItem:()=>ii,Runtime:()=>ct,SingleImage:()=>z,StaticRenderer:()=>ce,Text:()=>vt,TileSet:()=>si,TiledImage:()=>et,WebGLRenderer:()=>he,World:()=>it,WorldObject:()=>dt,Zone:()=>Ue,activateEvents:()=>Xe,applyProps:()=>Ge,bounceOut:()=>te,canDrag:()=>$n,createDefaultEventMap:()=>je,defaultConfig:()=>Oi,defaultPreset:()=>de,easingFunctions:()=>ot,fromImage:()=>vn,getId:()=>oi,getTileFromCanvas:()=>rn,getTileFromImageService:()=>We,getTiles:()=>Wn,getTilesFromManifest:()=>sn,mergeStyles:()=>Vn,popmotionController:()=>re,presets:()=>Ye,staticPreset:()=>Ze,supportedEventAttributes:()=>Ht,supportedEventMap:()=>rt,unmountComponentAtNode:()=>$t,useAfterFrame:()=>Ke,useAfterPaint:()=>zn,useAtlas:()=>me,useAtlasImage:()=>Hn,useBeforeFrame:()=>jn,useCanvas:()=>qe,useControlledAnnotationList:()=>Un,useFrame:()=>Bt,useMode:()=>se,useResizeWorldItem:()=>ei,useRuntime:()=>U,useWorldEvent:()=>De});module.exports=bn(Gn);var Ht=["onMouseDown","onMouseEnter","onMouseLeave","onMouseMove","onMouseOut","onMouseOver","onMouseUp","onTouchCancel","onTouchEnd","onTouchMove","onTouchStart","onPointerDown","onPointerMove","onPointerUp","onPointerCancel","onPointerEnter","onPointerLeave","onPointerOver","onPointerOut","onScroll","onWheel","onClick","onDragStart","onDragEnd","onDragEnter","onDragExit","onDrag","onDragOver"];function je(){return Ht.reduce((n,e)=>(n[e]=[],n),{})}var rt=Ht.reduce((n,e)=>(n[e.slice(2).toLowerCase()]=e,n[e]=e,n),{});var X=require("@atlas-viewer/dna");var St=require("@atlas-viewer/dna");var mi="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";var ht=(n=21)=>{let e="",t=crypto.getRandomValues(new Uint8Array(n));for(;n--;)e+=mi[t[n]&63];return e};var B=class{constructor(){o(this,"__id");o(this,"__revision",0);o(this,"__host");o(this,"__onCreate");o(this,"__parent");o(this,"__owner",{value:void 0});o(this,"__state",{});o(this,"eventHandlers");o(this,"scale",1);o(this,"layers",[]);o(this,"time",[]);o(this,"_crop");o(this,"cropData");o(this,"id");o(this,"addEventListener",(e,t,i)=>{let r=rt[e];if(!this.eventHandlers[r])throw new Error(`Unknown event ${r}`);this.eventHandlers[r].indexOf(t)===-1&&this.eventHandlers[r].push(t)});o(this,"removeEventListener",(e,t)=>{let i=rt[e];if(!this.eventHandlers[i]){console.warn(`Unknown event ${i}`);return}this.eventHandlers[i].indexOf(t)!==-1&&(this.eventHandlers[i]=this.eventHandlers[i].filter(r=>r!==t))});this.id=this.__id=ht(),this.eventHandlers=je()}get crop(){return this._crop}set crop(e){this._crop=e}getObjectsAt(e){return[]}getAllPointsAt(e,t,i){return[]}getScheduledUpdates(e,t){return[]}dispatchEvent(e,t){let i=this.eventHandlers[e],r=i?i.length:0,s=!1;if(r)for(let a=0;a<r;a++)try{i[a](t),s=!0}catch(h){console.error(e,h)}return s}get x(){return this.points[1]}get y(){return this.points[2]}get width(){return this.points[3]-this.points[1]}get height(){return this.points[4]-this.points[2]}translate(e,t){(0,St.mutate)(this.points,(0,St.translate)(e,t))}atScale(e){(0,St.mutate)(this.points,(0,St.scaleAtOrigin)(e,this.x,this.y)),this.scale*=e}transform(e){(0,St.mutate)(this.points,e)}applyProps(e){this.__revision++}appendChild(e){}removeChild(e){}insertBefore(e,t){}hideInstance(){}};var z=class n extends B{constructor(t){super();o(this,"type","spacial-content");o(this,"id");o(this,"uri");o(this,"display");o(this,"points");o(this,"priority");o(this,"style",{opacity:1});if(!t)this.id="",this.uri="",this.display={x:0,y:0,scale:1,width:0,height:0,points:(0,X.dna)(5)},this.points=(0,X.dna)(5);else{let i=t.scale||1;this.id=t.id||t.uri,this.uri=t.uri,this.points=X.DnaFactory.singleBox(t.width,t.height,t.x,t.y),this.display={x:0,y:0,scale:i,width:t.width/i,height:t.height/i,points:X.DnaFactory.singleBox(t.width/i,t.height/i),rotation:t?.rotation}}}applyProps(t){let i=t.display?t.display.width:t.target.width,r=t.target.width/i;if(this.id=t.id||t.uri,this.uri=t.uri,this.points.set(X.DnaFactory.singleBox(t.target.width,t.target.height,t.target.x,t.target.y)),t.style&&typeof t.style.opacity<"u"&&(this.style.opacity=t.style.opacity),t.crop){this.cropData=t.crop;let s=X.DnaFactory.singleBox(t.crop.width,t.crop.height,t.crop.x,t.crop.y);(0,X.mutate)(s,(0,X.translate)(-t.crop.x,-t.crop.y)),this.crop?this.crop.set(s):this.crop=(0,X.dna)(s)}t.display?(this.display.scale=r,this.display.width=t.display.width,this.display.height=t.display.height,this.display.rotation=t.display.rotation,this.display.points=X.DnaFactory.singleBox(t.display.width,t.display.height)):(this.display.scale=r,this.display.width=t.target.width/r,this.display.height=t.target.height/r,this.display.points=X.DnaFactory.singleBox(t.target.width/r,t.target.height/r))}getAllPointsAt(t,i,r){return[[this,this.crop||this.points,i]]}static fromSvg(t,i,r,s){return n.fromImage("data:image/svg+xml;base64,"+btoa(t),i,r,s)}static fromImage(t,i,r,s){let a=new n;return a.applyProps({uri:t,id:s,display:r,target:i}),a}getImageUrl(){return this.uri}};var Pt=require("@atlas-viewer/dna");var Et=class extends B{constructor(t){super();o(this,"type","spacial-content");o(this,"id");o(this,"uri");o(this,"display");o(this,"points");o(this,"getTexture");if(this.getTexture=()=>({source:void 0,hash:-1}),!t)this.id="",this.uri="",this.display={x:0,y:0,scale:1,width:0,height:0,points:(0,Pt.dna)(5)},this.points=(0,Pt.dna)(5);else{let i=t.scale||1;this.id=t.id||t.uri,this.uri=t.uri,this.points=Pt.DnaFactory.singleBox(t.width,t.height),this.display={x:0,y:0,scale:i,width:t.width/i,height:t.height/i,points:i!==1?Pt.DnaFactory.singleBox(t.width/i,t.height/i):this.points}}}applyProps(t){let i=t.display?t.display.width:t.target.width,r=t.target.width/i;this.id=t.id,this.points.set(Pt.DnaFactory.singleBox(t.target.width,t.target.height)),this.display.scale=r,this.display.width=t.target.width/r,this.display.height=t.target.height/r,this.getTexture=t.getTexture,this.display.points=r!==1?Pt.DnaFactory.singleBox(t.target.width/r,t.target.height/r):this.points}getAllPointsAt(t,i,r){return[[this,this.points,i]]}};var V=require("@atlas-viewer/dna");function fi(n,e,t=1){let i=e.length;if(i===0)throw new Error("No resources passed in.");let r=0;for(let s=0;s<i&&!(!e[s]||!e[s].display);s++)r=Math.abs(e[s].display.scale-n)*t<Math.abs(e[r].display.scale-n)?s:r;return r}function gi(n,e){return Math.abs(n-e)}function Mt(n,e){let t=gi(n.x,e.x),i=gi(n.y,e.y);return Math.sqrt(Math.pow(t,2)+Math.pow(i,2))}function pi(n){let e=n.length;return n.indexOf("/info.json")===e-10?n.slice(0,-10):n}function pe(n,e,t){return Math.min(Math.max(n,e),t)}var et=class n extends B{constructor(t){super();o(this,"id");o(this,"type","spacial-content");o(this,"display");o(this,"tileWidth");o(this,"style",{opacity:1});o(this,"points");o(this,"service");o(this,"format","jpg");o(this,"crop2");o(this,"tileUrl");this.tileUrl=pi(t.url),this.id=t.id||`${this.tileUrl}--${t.scaleFactor}`,this.points=t.displayPoints?t.displayPoints:(0,V.transform)(t.points,(0,V.scale)(t.scaleFactor)),this.tileWidth=t.tileWidth,this.display={x:0,y:0,width:t.width/t.scaleFactor,height:t.height/t.scaleFactor,points:t.points,scale:t.scaleFactor},t.format&&(this.format=t.format)}applyProps(t){if(t.style&&typeof t.style.opacity<"u"&&(this.style.opacity=t.style.opacity),t.service!==this.service&&(this.service=t.service),t.format?this.format=t.format:this.format="jpg",t.crop){this.cropData=t.crop;let i=(0,V.dna)([...this.points]),r=i.length/5,s=t.crop.x||0,a=t.crop.y||0,h=t.crop.x+t.crop.width,d=t.crop.y+t.crop.height;for(let u=0;u<r;u++){let l=u*5;i[l+1]<h&&i[l+3]>s&&i[l+2]<d&&i[l+4]>a?(i[l+1]=pe(i[l+1],s,h),i[l+3]=pe(i[l+3],s,h),i[l+2]=pe(i[l+2],a,d),i[l+4]=pe(i[l+4],a,d)):i[l]=0}(0,V.mutate)(i,(0,V.translate)(-t.crop.x,-t.crop.y)),this.crop?this.crop.set(i):this.crop=i}}static fromTile(t,i,r,s,a,h){r.height=r.height?r.height:r.width;let d=Math.ceil(i.width/s),u=Math.ceil(i.height/s),l=Math.ceil(d/r.width),c=Math.ceil(u/r.height),m=V.DnaFactory.grid(l,c),y=V.DnaFactory.grid(l,c);for(let S=0;S<c;S++)for(let P=0;P<l;P++){let g=P*r.width,f=S*r.height;y.addPoints(g*s,f*s,P===l-1?i.width:(g+r.width)*s,S===c-1?i.height:(f+r.height)*s),m.addPoints(g,f,P===l-1?d:g+r.width,S===c-1?u:f+r.height)}let b=new n({url:t,scaleFactor:s,points:m.build(),displayPoints:y.build(),width:i.width,height:i.height,tileWidth:r.width,format:h});return b.applyProps({service:a}),b}getImageUrl(t){let i=this.points.slice(t*5,t*5+5),r=i[3]-i[1],s=i[4]-i[2],a=Math.ceil(r/this.display.scale);return`${this.tileUrl}/${i[1]},${i[2]},${r},${s}/${a>this.tileWidth?this.tileWidth:a},/0/default.${this.format||"jpg"}`}getAllPointsAt(t,i,r){let s=(0,V.hidePointsOutsideRegion)(this.crop||this.points,t);return[[this,s,i]]}transform(t){(0,V.mutate)(this.points,t)}getScheduledUpdates(t,i){return[]}};var lt=require("@atlas-viewer/dna");var ye=class extends B{constructor(){super(...arguments);o(this,"type","spacial-content")}getAllPointsAt(t,i,r){return[[this,this.points,i]]}};var Kt=class extends ye{constructor(t){super();o(this,"id");o(this,"display");o(this,"points");o(this,"images",[]);o(this,"allImages",[]);o(this,"scaleFactors",[]);o(this,"aggregateBuffer",(0,lt.dna)(9));o(this,"lazyLoader");o(this,"isFullyLoaded",!1);o(this,"maxScaleFactor",0);o(this,"renderOptions");o(this,"_scheduleSortByScales",!1);o(this,"_sortByScales",()=>{this._scheduleSortByScales=!1,this.allImages.sort((i,r)=>r.display.width-i.display.width),this.images=[];let t=.1;for(let i of this.allImages){if(i.display.width<this.renderOptions.minSize&&i.display.height<this.renderOptions.minSize&&!i.priority||i instanceof z&&(i.display.width>this.renderOptions.maxImageSize||i.display.height>this.renderOptions.maxImageSize)&&!i.priority)continue;if(Math.abs(i.display.scale-t)<.25||i.priority){let s=this.images.pop();s&&(s instanceof z||s.priority)?(i.priority&&this.images.push(i),this.images.push(s)):i&&this.images.push(i)}else i&&this.images.push(i);t=i.display.scale}this.images.length===0&&(this.images=[...this.allImages]),this.scaleFactors=this.images.map(i=>i.display.scale),this.maxScaleFactor=Math.max(...this.scaleFactors)});o(this,"loadFullResource",async()=>{if(!this.isFullyLoaded&&this.lazyLoader){this.isFullyLoaded=!0;let t=await this.lazyLoader();this.addImages(t)}});o(this,"fallback",[this.loadFullResource]);this.id=t.id,this.points=lt.DnaFactory.singleBox(t.width,t.height),this.lazyLoader=t.loadFullImages,t.loadFullImages||(this.isFullyLoaded=!0),this.display={x:0,y:0,points:lt.DnaFactory.singleBox(t.width,t.height),height:t.height,width:t.width,scale:1},this.renderOptions={renderSmallestFallback:!0,renderLayers:2,minSize:255,maxImageSize:1024,quality:1.75,...t.renderOptions||{}},this.addImages(t.images)}applyProps(t){typeof t.renderSmallestFallback<"u"&&t.renderSmallestFallback!==this.renderOptions.renderSmallestFallback&&(this.renderOptions.renderSmallestFallback=t.renderSmallestFallback),typeof t.renderLayers<"u"&&t.renderLayers!==this.renderOptions.renderLayers&&(this.renderOptions.renderLayers=t.renderLayers),typeof t.minSize<"u"&&t.minSize!==this.renderOptions.minSize&&(this.renderOptions.minSize=t.minSize),typeof t.maxImageSize<"u"&&t.maxImageSize!==this.renderOptions.maxImageSize&&(this.renderOptions.maxImageSize=t.maxImageSize),typeof t.quality<"u"&&t.quality!==this.renderOptions.quality&&(this.renderOptions.quality=t.quality)}appendChild(t){this.addImages([t])}removeChild(t){this.images.indexOf(t)!==-1&&(this.images=this.images.filter(i=>i!==t),this.sortByScales())}insertBefore(t,i){this.addImages([t])}hideInstance(){}addImages(t){for(let i of t)i.__parent=this,i.__owner=this.__owner;this.allImages.push(...t.filter(Boolean)),this.sortByScales()}sortByScales(){this._scheduleSortByScales=!0}getScheduledUpdates(t,i){return this._scheduleSortByScales?[this._sortByScales]:this.isFullyLoaded?[]:i>1/this.maxScaleFactor?this.fallback:[]}getAllPointsAt(t,i,r){if(this.images.length===0)return[];let s=fi(1/(r||1)/(window.devicePixelRatio||1),this.images,this.renderOptions.quality),a=this.images.length,h=i?(0,lt.compose)(i,(0,lt.translate)(this.x,this.y)):(0,lt.translate)(this.x,this.y);if(s!==this.images.length-1&&this.images[s+1]){let d=[];for(let c=a-1;c>=s;c--)d.push(c);let u=d[0];this.renderOptions.renderLayers&&(d=d.slice(-Math.min(d.length,this.renderOptions.renderLayers))),this.renderOptions.renderSmallestFallback&&d.indexOf(u)===-1&&d.unshift(u);let l=[];for(let c=0;c<d.length;c++)l.push(...this.images[d[c]].getAllPointsAt(t,h,r));return l}return this.images[s].getAllPointsAt(t,h,r)}};var O=require("@atlas-viewer/dna");var R=require("@atlas-viewer/dna");function be(n,e,t,i,r){let s=Math.PI/180*r,a=Math.cos(s),h=Math.sin(s),d=a*(t-n)+h*(i-e)+n,u=a*(i-e)-h*(t-n)+e;return[d,u]}var dt=class n extends B{constructor(t,i){super();o(this,"id");o(this,"type","world-object");o(this,"scale");o(this,"layers");o(this,"points");o(this,"worldPoints");o(this,"intersectionBuffer",(0,R.dna)(5));o(this,"aggregateBuffer",(0,R.dna)(9));o(this,"invertedBuffer",(0,R.dna)(9));o(this,"rotation",0);o(this,"filteredPointsBuffer");o(this,"_updatedList",[]);o(this,"geometry");let{x:r=0,y:s=0}=i||{};t?(this.id=t.id||"",this.scale=1,this.layers=t.layers,this.points=(0,R.dna)([1,r,s,r+t.width,s+t.height]),this.worldPoints=(0,R.dna)([1,r,s,r+t.width,s+t.height]),this.filteredPointsBuffer=(0,R.dna)(t.layers.length*5)):(this.id="",this.scale=1,this.layers=[],this.points=(0,R.dna)(5),this.worldPoints=(0,R.dna)(5),this.filteredPointsBuffer=(0,R.dna)(5))}static createWithProps(t){let i=new n;return i.applyProps(t),i}applyProps(t){let i=t.x||0,r=t.y||0;this.id=t.id;let s=typeof t.scale<"u"?t.scale:this.scale;this.points[0]=1,this.points[1]=i,this.points[2]=r,this.points[3]=i+t.width,this.points[4]=r+t.height,this.rotation=t.rotation||0,this.worldPoints[3]=this.worldPoints[1]+t.width,this.worldPoints[4]=this.worldPoints[2]+t.height,t.scale&&t.scale!==1&&this.atScale(s),this.scale=s}appendChild(t){t.points[0]===0&&t.points.set(this.points),t.__owner.value=this,this.addLayers([t])}removeChild(t){this.layers=this.layers.filter(i=>i!==t),this.filteredPointsBuffer=(0,R.dna)(this.layers.length*5)}insertBefore(t,i){let r=this.layers.indexOf(i);if(r===-1||this.layers.indexOf(t)!==-1)return;let s=this.layers.slice(0,r),a=this.layers.slice(r);this.layers=[...s,t,...a]}hideInstance(){console.warn("hideInstance: not yet implemented")}getObjectsAt(t,i){if(this.rotation&&(t=this.applyRotation(t)),(0,R.hidePointsOutsideRegion)(this.points,t,this.filteredPointsBuffer)[0]===0)return[];let s=this.layers.length,a=[];for(let h=0;h<s;h++){let d=this.layers[h];if(i&&d.isShape){let l=(0,R.transform)(d.points,(0,R.translate)(this.x,this.y));if(!d.intersects([t[1]-l[1],t[2]-l[2]]))continue}if((0,R.hidePointsOutsideRegion)((0,R.transform)(d.points,(0,R.translate)(this.x,this.y)),t,this.filteredPointsBuffer)[0]!==0&&a.push(d),i){let l=d;a.push(...l.getObjectsAt(t,i))}}return a}applyRotation(t){if(this.rotation){let i={x:t[1],y:t[2]},r={x:t[1],y:t[4]},s={x:t[3],y:t[2]},a={x:t[3],y:t[4]},h=this.points[1]+(this.points[3]-this.points[1])/2,d=this.points[2]+(this.points[4]-this.points[2])/2,[u,l]=be(h,d,i.x,i.y,this.rotation),[c,m]=be(h,d,r.x,r.y,this.rotation),[y,b]=be(h,d,s.x,s.y,this.rotation),[S,P]=be(h,d,a.x,a.y,this.rotation),g=Math.min(u,c,y,S),f=Math.max(u,c,y,S),_=Math.min(l,m,b,P),A=Math.max(l,m,b,P);return(0,R.dna)([t[0],g,_,f,A])}return t}getAllPointsAt(t,i,r){let s=(0,R.compose)((0,R.translate)(this.x,this.y),(0,R.scale)(this.scale),this.aggregateBuffer);this.rotation&&(t=this.applyRotation(t));let a=(0,R.getIntersection)(t,this.points,this.intersectionBuffer),h=this.layers.length,d=[],u=(0,R.transform)(a,(0,R.compose)((0,R.scale)(1/this.scale),(0,R.translate)(-this.x,-this.y),this.invertedBuffer)),l=i?(0,R.compose)(i,s,this.aggregateBuffer):s,c=r*this.scale;for(let m=0;m<h;m++)d.push(...this.layers[m].getAllPointsAt(u,l,c));return d}addLayers(t){let i=[];for(let r of t)this.layers.indexOf(r)===-1&&(i.push(r),r.points.length===5&&(r.points[1]<this.worldPoints[1]/this.scale||r.points[2]<this.worldPoints[2]/this.scale||r.points[3]>this.worldPoints[3]/this.scale||r.points[4]>this.worldPoints[4]/this.scale)&&(r.crop=r.crop||(0,R.dna)([1,Math.max(this.worldPoints[1]/this.scale,r.points[1]),Math.max(this.worldPoints[2]/this.scale,r.points[2]),Math.min(this.worldPoints[3]/this.scale,r.points[3]),Math.min(this.worldPoints[4]/this.scale,r.points[4])])));this.layers=this.layers.concat(i),this.filteredPointsBuffer=(0,R.dna)(this.layers.length*5)}getScheduledUpdates(t,i){let r=this.layers.length;this._updatedList=[];let s=i*this.scale;for(let a=0;a<r;a++){let h=this.layers[a].getScheduledUpdates(t,s);h&&this._updatedList.push(...h)}return this._updatedList}};var it=class n extends B{constructor(t=0,i=0,r=100,s="left-to-right"){super();o(this,"id","world");o(this,"_width");o(this,"_height");o(this,"aspectRatio");o(this,"viewingDirection");o(this,"aggregateBuffer",(0,O.dna)(9));o(this,"isDirty",!1);o(this,"zones",[]);o(this,"filteredPointsBuffer");o(this,"selectedZone");o(this,"triggerQueue",[]);o(this,"activatedEvents",[]);o(this,"_updatedList",[]);o(this,"translationBuffer",(0,O.dna)(9));o(this,"needsRecalculate",!0);o(this,"emptyPaintables",[]);o(this,"renderOrder",[]);o(this,"points");o(this,"objects",[]);o(this,"subscriptions",[]);o(this,"_propagateEventTargets",[]);o(this,"_alreadyFlushed",[]);this._width=t,this._height=i,this.aspectRatio=Number.isNaN(t/i)?1:t/i,this.viewingDirection=s,this.points=(0,O.dna)(r*5),this.filteredPointsBuffer=(0,O.dna)(r*5)}get x(){return 0}get y(){return 0}get width(){return this._width}get height(){return this._height}static withProps(t){let i=new n;return i.applyProps(t),i}applyProps(t){typeof t.width<"u"&&typeof t.height<"u"&&(t.width!==this._width||t.height!==this._height)&&this.resize(t.width,t.height),t.viewingDirection!==this.viewingDirection&&(this.viewingDirection=t.viewingDirection,this.triggerRepaint())}propagateTouchEvent(t,i,r){let s=[];for(let a of r)if(a.x&&a.y){let h=O.DnaFactory.singleBox(1,1,a.x,a.y);s.push(this.getObjectsAt(h,!0).reverse())}return s.map(a=>this.propagateEvent(t,i,a,{bubbles:!0,cancelable:!0}))}propagatePointerEvent(t,i,r,s,a={}){let h=O.DnaFactory.singleBox(1,1,r,s),d=this.getObjectsAt(h,!0).reverse();return this.propagateEvent(t,i,d,a)}propagateEvent(t,i,r,{bubbles:s=!1,cancelable:a=!1}={}){i.atlasTarget=this,this._propagateEventTargets.length=1,this._propagateEventTargets[0]=this;let h=!1;i.stopPropagation=()=>{h=!0};let d=r.length;for(let c=d-1;c>=0;c--){this._propagateEventTargets.unshift(r[c][0]);let m=r[c][1].length;if(m)for(let y=0;y<m;y++)this._propagateEventTargets.unshift(r[c][1][y])}let u=this._propagateEventTargets.length,l=!1;for(let c=0;c<u&&(i.atlasTarget=this._propagateEventTargets[c],i.atlasWorld=this,l=this._propagateEventTargets[c].dispatchEvent(t,i)||l,!h);c++);return l&&this.triggerRepaint(),this._propagateEventTargets}appendChild(t){let i=this.appendWorldObject(t);this.renderOrder.push(i/5)}removeChild(t){let i=this.objects.indexOf(t);if(i===-1){for(let r of this.objects)if(r&&r.id===t.id){this.removeChild(r);return}return}this.objects[i]=null,this.renderOrder=this.renderOrder.filter(r=>r!==i),this.points[i*5]=0,this.triggerRepaint(),this.needsRecalculate=!0}insertBefore(t,i){let r=this.objects.indexOf(i);if(r===-1)return;let s=this.appendWorldObject(t);this.renderOrder.splice(r-1,0,s/5)}hideInstance(){}asWorldObject(){return null}addZone(t){this.zones.push(t)}selectZone(t){if(typeof t=="string"){let i=this.zones.length;for(let r=0;r<i;r++)if(this.zones[r].id===t){this.selectedZone=r,this.trigger("zone-changed");return}}else this.zones[t]&&(this.selectedZone=t,this.trigger("zone-changed"))}deselectZone(){this.selectedZone=void 0}getActiveZone(){if(this.selectedZone)return this.zones[this.selectedZone]}hasActiveZone(){return typeof this.selectedZone<"u"}checkResizeInternalBuffer(){if((0,O.dnaLength)(this.points)===this.objects.length){let t=this.points,i=(0,O.dna)(this.points.length*2);i.set(t,0),this.points=i}}appendWorldObject(t){this.checkResizeInternalBuffer();let i=this.objects.length*5,r=t.points;return t.points=this.points.subarray(this.objects.length*5,this.objects.length*5+5),t.points[1]=r[1],t.points[2]=r[2],t.points[3]=r[3],t.points[4]=r[4],this.objects.push(t),this.filteredPointsBuffer=(0,O.dna)(this.objects.length*5),this.needsRecalculate=!0,this.triggerRepaint(),i}recalculateWorldSize(){let t=!1;if(this.needsRecalculate){let i=new Int32Array(this.objects.length),r=new Int32Array(this.objects.length),s=this.renderOrder.length;for(let d=0;d<s;d++){let u=this.renderOrder[d];this.objects[u]&&(i[d]=this.points[u*5+3],r[d]=this.points[u*5+4])}let a=Math.max(...i);a!==this._width&&(this._width=a,t=!0);let h=Math.max(...r);h!==this._height&&(this._height=h,t=!0),t&&this.trigger("recalculate-world-size",{width:a,height:h}),this.needsRecalculate=!1}return t}addObjectAt(t,i){i.width&&!i.height?i.height=i.width/t.width*t.height:i.height&&!i.width&&(i.width=i.height/t.height*t.width),(!i||!i.width||!i.height)&&(i.width=t.width,i.height=t.height);let{width:r,x:s,y:a}=i,h=r/t.width;this.checkResizeInternalBuffer(),this.points.set(O.DnaFactory.singleBox(t.width,t.height,0,0),this.objects.length*5);let d=new dt(t);return d.points=this.points.subarray(this.objects.length*5,this.objects.length*5+5),this.objects.push(d),this.scaleWorldObject(this.objects.length-1,h),this.translateWorldObject(this.objects.length-1,s,a),this.filteredPointsBuffer=(0,O.dna)(this.points.length*2),this.triggerRepaint(),this.needsRecalculate=!0,d}scaleWorldObject(t,i){(0,O.mutate)(this.points.subarray(t*5,t*5+5),(0,O.scaleAtOrigin)(i,this.points[t*5+1],this.points[t*5+2]));let r=this.objects[t];r&&(r.atScale(i),this.triggerRepaint())}translateWorldObject(t,i,r){(0,O.mutate)(this.points.subarray(t*5,t*5+5),(0,O.translate)(i,r));let s=this.objects[t];s&&(s.translate(i,r),this.triggerRepaint())}resize(t,i){return this._width=t,this._height=i,this.aspectRatio=t/i,this.triggerRepaint(),this}getObjects(){return this.objects}getPoints(){return this.points}getPointsFromViewer(t,i){let r=O.DnaFactory.singleBox(t.width,t.height,t.x,t.y);return this.getPointsAt(r,i,t.scale)}addLayoutSubscriber(t){return this.subscriptions.push(t),()=>{this.subscriptions.splice(this.subscriptions.indexOf(t),1)}}getScheduledUpdates(t,i){let r=(0,O.hidePointsOutsideRegion)(this.points,t,this.filteredPointsBuffer),s=this.objects.length;this._updatedList=[];for(let a=0;a<s;a++)if(r[a*5]!==0){if(!this.objects[a])continue;this._updatedList.push(...this.objects[a].getScheduledUpdates(t,i))}return this._updatedList}getObjectsAt(t,i=!1){let r=this.getActiveZone(),s=(0,O.hidePointsOutsideRegion)(this.points,t,this.filteredPointsBuffer),a=this.renderOrder.length,h=[];for(let d=0;d<a;d++){let u=this.renderOrder[d];if(s[u*5]!==0){let l=this.objects[u];if(!l||r&&r.objects.indexOf(l)===-1)continue;if(l.type!=="world-object"){h.push([l,[l]]);continue}i?h.push([l,l.getObjectsAt(t,i)]):h.push([l,this.emptyPaintables])}}return h}getPointsAt(t,i,r=1){let s=this.getObjectsAt(t),a=(0,O.compose)((0,O.scale)(r),(0,O.translate)(-t[1],-t[2]),this.translationBuffer),h=i?(0,O.compose)(i,a,this.aggregateBuffer):a,d=s.length,u=[];for(let l=0;l<d;l++)s[l]&&u.push(...s[l][0].getAllPointsAt(t,h,r));return u}flushSubscriptions(){if(this.triggerQueue.length){this._alreadyFlushed=[];let t=this.triggerQueue.length;for(let i=0;i<t;i++){if(this._alreadyFlushed.indexOf(this.triggerQueue[i][0])!==-1)continue;typeof this.triggerQueue[i][1]>"u"&&this._alreadyFlushed.push(this.triggerQueue[i][0]);let r=this.subscriptions.length;for(let s=0;s<r;s++)this.subscriptions[s].apply(null,this.triggerQueue[i])}this.triggerQueue=[]}}trigger(t,i){this.triggerQueue.push([t,i])}triggerEventActivation(){this.trigger("event-activation")}triggerRepaint(){this.trigger("repaint")}gotoRegion(t){this.trigger("goto-region",t)}goHome(t=!1){this.trigger("go-home",{immediate:t})}zoomTo(t,i,r){this.trigger("zoom-to",{point:i,factor:t,stream:r})}zoomIn(t){this.trigger("zoom-to",{point:t,factor:.5})}zoomOut(t){this.trigger("zoom-to",{point:t,factor:2})}constraintBounds(t){this.trigger("constrain-bounds",{immediate:t})}};function vn(n){let{src:e,target:t}=n,i=t?t.width:n.width,r=t?t.height:n.height;return new dt({id:e,height:r,width:i,layers:[z.fromImage(e,{height:r,width:i},{width:n.width,height:n.height})]})}var yi=require("@atlas-viewer/dna");var wn={margin:0},Ue=class{constructor(e,t={}){o(this,"id");o(this,"config");o(this,"points");o(this,"objects");this.id=e.map(i=>i.id).join("$$"),this.config={...wn,...t},this.points=(0,yi.dna)(5),this.objects=e,this.recalculateBounds()}recalculateBounds(){this.points.set([1,Math.min(...this.objects.map(e=>e.points[1]))-this.config.margin,Math.min(...this.objects.map(e=>e.points[2]))-this.config.margin,Math.max(...this.objects.map(e=>e.points[3]))+this.config.margin,Math.max(...this.objects.map(e=>e.points[4]))+this.config.margin])}getPointsAt(e,t,i){return[]}};var jt=require("@atlas-viewer/dna");var ve=/([0-9]+(px|em)\s+)+(solid)\s+(.*)/g,we={},xn=["backgroundColor","opacity","boxShadow","borderColor","borderWidth","borderStyle","outlineColor","outlineWidth","outlineOffset","outlineStyle"],st=class extends B{constructor(){super();o(this,"id");o(this,"type","spacial-content");o(this,"points");o(this,"hoverEvents",!1);o(this,"activeEvents",!1);o(this,"display",{x:0,y:0,scale:1,width:-1,height:-1,points:(0,jt.dna)(5)});o(this,"_parsed",{border:{id:null,match:[]},outline:{id:null,match:[]}});o(this,"hovering");o(this,"pressing");o(this,"props",{});o(this,"addHover",()=>{this.hovering=!0,this.__revision++});o(this,"removeHover",()=>{this.hovering=!1,this.pressing=!1,this.__revision++});o(this,"addPress",()=>{this.pressing=!0,this.__revision++});o(this,"removePress",()=>{this.pressing=!1,this.__revision++});this.id=ht(12),this.points=(0,jt.dna)(5)}getAllPointsAt(t,i){return[[this,this.points,i]]}applyProps(t={}){let i=!1;if(t.interactive!==this.props.interactive&&(i=!0,this.props.interactive=t.interactive),t.style){let r=t.border||t.style.border;if(r!==this._parsed.border.id)if(!r)this._parsed.border.id=null,this._parsed.border.match=[];else{let s=we[r]||ve.exec(r)||ve.exec(r);s&&(this._parsed.border.id=r,this._parsed.border.match=we[r]=s)}if(this._parsed.border.id&&(t.style.borderWidth=this._parsed.border.match[1],t.style.borderStyle="solid",t.style.borderColor=this._parsed.border.match[4]),t.style.outline!==this._parsed.outline.id)if(!t.style.outline)this._parsed.outline.id=null,this._parsed.outline.match=[];else{let s=we[t.style.outline]||ve.exec(t.style.outline)||ve.exec(t.style.outline);s&&(this._parsed.outline.id=t.style.outline,this._parsed.outline.match=we[t.style.outline]=s)}this._parsed.outline.id&&(t.style.outlineWidth=this._parsed.outline.match[1],t.style.outlineStyle="solid",t.style.outlineColor=this._parsed.outline.match[4]),this.props.style=t.style,t.backgroundColor&&!this.props.style.backgroundColor&&(this.props.style.backgroundColor=t.backgroundColor,i=!0),t.style.background&&!this.props.style.backgroundColor&&(this.props.style.backgroundColor=t.style.background,i=!0);for(let s of xn)if(this.props.style[s]!==t.style[s]){i=!0;break}t.style[":hover"]!==this.props.hoverStyles&&(this.props.hoverStyles=t.style[":hover"],this.hoverEvents||(this.hoverEvents=!0,this.addEventListener("pointerenter",this.addHover),this.addEventListener("pointerleave",this.removeHover)),i=!0),t.style[":active"]!==this.props.pressStyles&&(this.props.pressStyles=t.style[":active"],this.activeEvents||(this.activeEvents=!0,this.addEventListener("mousedown",this.addPress),this.addEventListener("mouseup",this.removePress)),i=!0)}t.href!==this.props.href&&(this.props.href=t.href,i=!0),t.hrefTarget!==this.props.hrefTarget&&(this.props.hrefTarget=t.hrefTarget,i=!0),t.title!==this.props.title&&(this.props.title=t.title,i=!0),t.className!==this.props.className&&(this.props.className=t.className,t.className&&!this.hoverEvents&&(this.hoverEvents=!0,this.addEventListener("pointerenter",this.addHover),this.addEventListener("pointerleave",this.removeHover)),t.className&&!this.activeEvents&&(this.activeEvents=!0,this.addEventListener("mousedown",this.addPress),this.addEventListener("mouseup",this.removePress)),i=!0),t.relativeSize!==this.props.relativeSize&&(this.props.relativeSize=t.relativeSize,i=!0),t.relativeStyle!==this.props.relativeStyle&&(this.props.relativeStyle=t.relativeStyle,i=!0),t.html!==this.props.html&&(this.props.html=t.html,i=!0),t.target&&(t.target.width!==this.display.width||t.target.height!==this.display.height||t.target.x!==this.points[1]||t.target.y!==this.points[2])&&(i=!0,this.points=jt.DnaFactory.singleBox(t.target.width,t.target.height,t.target.x,t.target.y),this.display.points=jt.DnaFactory.singleBox(t.target.width,t.target.height,t.target.x,t.target.y),this.display.width=t.target.width,this.display.height=t.target.height),i&&this.__revision++}};var qt=require("@atlas-viewer/dna");var vt=class extends B{constructor(){super();o(this,"type","spacial-content");o(this,"id");o(this,"points");o(this,"color","#000");o(this,"backgroundColor");o(this,"hovering");o(this,"pressing");o(this,"text","");o(this,"display",{x:0,y:0,scale:1,width:100,height:100,points:(0,qt.dna)(5)});o(this,"className");o(this,"html");o(this,"interactive",!1);o(this,"props",{font:"18px Arial, sans-serif",lineHeight:1,textAlign:"left",verticalAlign:"top",paddingX:0,paddingY:0,fitParent:!1,lineBreak:"auto",strokeText:!1,sizeToFill:!1,maxFontSizeToFill:void 0,allowNewLine:!0,justifyLines:!1,renderHDPI:!1,textDecoration:"none",interactive:!1,relativeSize:!1});this.id="",this.points=(0,qt.dna)(5)}getAllPointsAt(t,i){return[[this,this.points,i]]}applyProps({id:t,target:i,text:r,color:s,backgroundColor:a,fontSize:h=18,interactive:d,fontFamily:u="Arial, sans-serif",...l}){l.font=`${h}px ${u}`,this.interactive=d||!1,typeof r<"u"&&(this.text=r||""),s&&(this.color=s),a&&(this.backgroundColor=a),t&&(this.id=t),i&&(this.points=qt.DnaFactory.singleBox(i.width,i.height,i.x,i.y),this.display.points=this.points,this.display.width=i.width,this.display.height=i.height),this.props={...this.props,...l},this.__revision++}};var I=require("@atlas-viewer/dna");var Ct=require("@atlas-viewer/dna");var D=Math.pow,xe=Math.sqrt,Jt=Math.sin,bi=Math.cos,ee=Math.PI,Pe=1.70158,Se=Pe*1.525,vi=Pe+1,wi=2*ee/3,xi=2*ee/4.5,te=function(n){return n<1/2.75?7.5625*n*n:n<2/2.75?7.5625*(n-=1.5/2.75)*n+.75:n<2.5/2.75?7.5625*(n-=2.25/2.75)*n+.9375:7.5625*(n-=2.625/2.75)*n+.984375},ot={linear:n=>n,easeInQuad:function(n){return n*n},easeOutQuad:function(n){return 1-(1-n)*(1-n)},easeInOutQuad:function(n){return n<.5?2*n*n:1-D(-2*n+2,2)/2},easeInCubic:function(n){return n*n*n},easeOutCubic:function(n){return 1-D(1-n,3)},easeInOutCubic:function(n){return n<.5?4*n*n*n:1-D(-2*n+2,3)/2},easeInQuart:function(n){return n*n*n*n},easeOutQuart:function(n){return 1-D(1-n,4)},easeInOutQuart:function(n){return n<.5?8*n*n*n*n:1-D(-2*n+2,4)/2},easeInQuint:function(n){return n*n*n*n*n},easeOutQuint:function(n){return 1-D(1-n,5)},easeInOutQuint:function(n){return n<.5?16*n*n*n*n*n:1-D(-2*n+2,5)/2},easeInSine:function(n){return 1-bi(n*ee/2)},easeOutSine:function(n){return Jt(n*ee/2)},easeInOutSine:function(n){return-(bi(ee*n)-1)/2},easeInExpo:function(n){return n===0?0:D(2,10*n-10)},easeOutExpo:function(n){return n===1?1:1-D(2,-10*n)},easeInOutExpo:function(n){return n===0?0:n===1?1:n<.5?D(2,20*n-10)/2:(2-D(2,-20*n+10))/2},easeInCirc:function(n){return 1-xe(1-D(n,2))},easeOutCirc:function(n){return xe(1-D(n-1,2))},easeInOutCirc:function(n){return n<.5?(1-xe(1-D(2*n,2)))/2:(xe(1-D(-2*n+2,2))+1)/2},easeInBack:function(n){return vi*n*n*n-Pe*n*n},easeOutBack:function(n){return 1+vi*D(n-1,3)+Pe*D(n-1,2)},easeInOutBack:function(n){return n<.5?D(2*n,2)*((Se+1)*2*n-Se)/2:(D(2*n-2,2)*((Se+1)*(n*2-2)+Se)+2)/2},easeInElastic:function(n){return n===0?0:n===1?1:-D(2,10*n-10)*Jt((n*10-10.75)*wi)},easeOutElastic:function(n){return n===0?0:n===1?1:D(2,-10*n)*Jt((n*10-.75)*wi)+1},easeInOutElastic:function(n){return n===0?0:n===1?1:n<.5?-(D(2,20*n-10)*Jt((20*n-11.125)*xi))/2:D(2,-20*n+10)*Jt((20*n-11.125)*xi)/2+1},easeInBounce:function(n){return 1-te(1-n)},easeOutBounce:te,easeInOutBounce:function(n){return n<.5?(1-te(1-2*n))/2:(1+te(2*n-1))/2}};var Ee=class{constructor(e){o(this,"runtime");o(this,"pendingTransition");this.runtime=e,this.pendingTransition={from:(0,Ct.dna)(5),to:(0,Ct.dna)(5),elapsed_time:0,done:!0,total_time:0,timingFunction:ot.easeInOutQuad,constrain:!1}}hasPending(){return!this.pendingTransition.done}getPendingTransition(){return this.pendingTransition}getPendingFrom(){return this.pendingTransition.from}customTransition(e){e(this.pendingTransition)}stopTransition(){this.pendingTransition.from=(0,Ct.dna)(this.runtime.target),this.pendingTransition.to=(0,Ct.dna)(this.runtime.target),this.pendingTransition.done=!0,this.pendingTransition.elapsed_time=0,this.pendingTransition.total_time=0}runTransition(e,t){if(!this.pendingTransition.done){let i=this.pendingTransition,r=i.total_time===0?0:(i.elapsed_time+t)/i.total_time,s=i.total_time===0?1:r===0?0:i.timingFunction(r);e[1]=i.from[1]+(i.to[1]-i.from[1])*s,e[2]=i.from[2]+(i.to[2]-i.from[2])*s,e[3]=i.from[3]+(i.to[3]-i.from[3])*s,e[4]=i.from[4]+(i.to[4]-i.from[4])*s,this.pendingTransition.elapsed_time+=t,this.pendingTransition.elapsed_time>=this.pendingTransition.total_time&&(this.pendingTransition.done=!0,this.pendingTransition.constrain&&this.constrainBounds({transition:{duration:this.pendingTransition.total_time===0?0:500,easing:ot.easeOutExpo}}))}}zoomTo(e,{origin:t,stream:i=!1,transition:r}={}){let s=this.runtime.getZoomedPosition(e,{origin:t}),a=Math.abs(1-e);this.applyTransition(s,r,{duration:2e3*a,easing:ot.easeOutExpo,constrain:!0},{stream:!1})}constrainBounds({transition:e,panPadding:t=0}={}){let[i,r]=this.runtime.constrainBounds(this.runtime.target,{panPadding:t});i&&(this.applyTransition(r,e,{duration:500,easing:ot.easeOutQuart,constrain:!1}),this.runtime.updateNextFrame())}applyTransition(e,t,i,{stream:r}={}){this.pendingTransition.from=(0,Ct.dna)(this.runtime.target),this.pendingTransition.to=e,r||(this.pendingTransition.elapsed_time=0),this.pendingTransition.done=!1,this.pendingTransition.total_time=typeof t?.duration<"u"?t.duration:typeof i?.duration<"u"?i.duration:1e3,this.pendingTransition.constrain=typeof t?.constrain<"u"?t.constrain:typeof i?.constrain<"u"?i.constrain:!1,this.pendingTransition.timingFunction=t?.easing||i?.easing||ot.easeInOutSine}goToRegion(e,{transition:t}={}){let i=this.runtime.clampRegion(e);this.applyTransition(Ct.DnaFactory.singleBox(i.width,i.height,i.x,i.y),t,{duration:1e3,easing:ot.easeOutExpo,constrain:!0}),this.runtime.updateNextFrame()}};var gs=Number.MIN_VALUE+1,ct=class{constructor(e,t,i,r=[],s){o(this,"id",ht());o(this,"ready",!1);o(this,"renderer");o(this,"world");o(this,"target");o(this,"homePosition");o(this,"manualHomePosition");o(this,"manualFocalPosition");o(this,"focalPosition");o(this,"transitionManager");o(this,"aggregate");o(this,"transformBuffer",(0,I.dna)(500));o(this,"lastTarget",(0,I.dna)(5));o(this,"zoomBuffer",(0,I.dna)(5));o(this,"logNextRender",!1);o(this,"pendingUpdate",!0);o(this,"isCommitting",!1);o(this,"firstRender",!0);o(this,"lastTime");o(this,"stopId");o(this,"mode","explore");o(this,"controllers",[]);o(this,"controllersRunning",!1);o(this,"controllerStopFunctions",[]);o(this,"maxScaleFactor",1);o(this,"_viewerToWorld",{x:0,y:0});o(this,"_lastGoodScale",1);o(this,"hooks",{useFrame:[],useBeforeFrame:[],useAfterPaint:[],useAfterFrame:[]});o(this,"fpsLimit");o(this,"options");o(this,"hookOptions",{filters:{grayscale:0,contrast:0,brightness:0,saturate:0,sepia:0,invert:0,hueRotate:0,blur:0}});o(this,"_viewport",{x:0,y:0,width:0,height:0});o(this,"setViewport",e=>{let t=Math.round(typeof e.x>"u"?this.target[1]:e.x),i=Math.round(typeof e.y>"u"?this.target[2]:e.y);e.width?this.target[3]=t+e.width:this.target[3]=this.target[3]-this.target[1]+t,e.height?this.target[4]=i+e.height:this.target[4]=this.target[4]-this.target[2]+i,Math.abs(this.target[1]-t)>.01&&(this.target[1]=t),Math.abs(this.target[2]-i)>.01&&(this.target[2]=i),this.pendingUpdate=!0});o(this,"render",e=>{let t=e-this.lastTime;if(this.isCommitting||this.fpsLimit&&t<1e3/this.fpsLimit){this.stopId=window.requestAnimationFrame(this.render);return}this.lastTime=e,this.world.flushSubscriptions(),this.stopId=window.requestAnimationFrame(this.render),this.hook("useFrame",t);let i=this.pendingUpdate,r=this.renderer.pendingUpdate();if(this.transitionManager.hasPending()&&(this.transitionManager.runTransition(this.target,t),this.pendingUpdate=!0,this.updateControllerPosition()),!this.firstRender&&!i&&!r&&this.target[0]===this.lastTarget[0]&&this.target[1]===this.lastTarget[1]&&this.target[2]===this.lastTarget[2]&&this.target[3]===this.lastTarget[3]&&this.target[4]===this.lastTarget[4])return;this.hook("useBeforeFrame",t),this.renderer.beforeFrame(this.world,t,this.target,this.hookOptions);let s=this.getScaleFactor(),a=this.renderer.getPointsAt(this.world,this.target,this.aggregate,s),h=a.length;for(let l=0;l<h;l++){let c=a[l][0],m=a[l][1],y=a[l][2],b=y?(0,I.transform)(m,y,this.transformBuffer):m;this.renderer.prepareLayer(c,c.__parent&&y?(0,I.transform)(c.__parent.crop||c.__parent.points,y):b);let S=b.length/5;for(let P=0;P<S;P++){let g=P*5;b[g]!==0&&(this.renderer.paint(c,P,b[g+1],b[g+2],b[g+3]-b[g+1],b[g+4]-b[g+2]),this.hook("useAfterPaint",c))}this.renderer.finishLayer(c,m)}this.renderer.afterFrame(this.world,t,this.target,this.hookOptions),this.hook("useAfterFrame",t),this.lastTarget[0]=this.target[0],this.lastTarget[1]=this.target[1],this.lastTarget[2]=this.target[2],this.lastTarget[3]=this.target[3],this.lastTarget[4]=this.target[4],this.firstRender=!1,this.pendingUpdate=!1,this.logNextRender=!1,this.renderer.isReady()&&(this.ready=!0,this.world.trigger("ready")),this.world.flushSubscriptions();let d=this.world.getScheduledUpdates(this.target,s),u=d.length;if(u>0)for(let l=0;l<u;l++){let c=d[u-l-1]();c?c.then(()=>{this.pendingUpdate=!0}):this.pendingUpdate=!0}});this.renderer=e,this.world=t,this.options={maxOverZoom:1,maxUnderZoom:1,visibilityRatio:1.5,...s||{}},this.target=I.DnaFactory.projection(i),this.manualHomePosition=!1,this.pendingUpdate=!0,this.homePosition=I.DnaFactory.projection(this.world),this.manualFocalPosition=!1,this.focalPosition=this.target,this.updateFocalPosition(),this.transitionManager=new Ee(this),this.aggregate=(0,I.scale)(1),this.world.addLayoutSubscriber(a=>{a==="repaint"&&(this.pendingUpdate=!0),a==="recalculate-world-size"&&(this.manualHomePosition||(this.setHomePosition(),this.goHome()),this.updateFocalPosition())}),this.lastTime=performance.now(),this.controllers=r,this.render(this.lastTime),this.startControllers()}get x(){return this.target[1]}set x(e){this.target[1]=e}get y(){return this.target[2]}set y(e){this.target[2]=e}get x2(){return this.target[3]}set x2(e){this.target[3]=e}get y2(){return this.target[4]}set y2(e){this.target[4]=e}get width(){return this.target[3]-this.target[1]}set width(e){this.target[3]=this.target[1]+e}get height(){return this.target[4]-this.target[2]}set height(e){this.target[4]=this.target[2]=e}setHomePosition(e){this.homePosition.set(I.DnaFactory.projection(e||this.world)),this.pendingUpdate=!0}startControllers(){if(!this.controllersRunning){for(let e of this.controllers)this.controllerStopFunctions.push(e.start(this));this.controllersRunning=!0}}stopControllers(){if(this.controllersRunning){for(let e of this.controllerStopFunctions)e();this.controllersRunning=!1,this.controllerStopFunctions=[]}}updateControllerPosition(){for(let e of this.controllers)e.updatePosition(this.x,this.y,this.width,this.height)}triggerResize(){this.renderer.triggerResize&&this.renderer.triggerResize(),this.pendingUpdate=!0}addController(e){this.controllers.push(e),this.controllersRunning&&e.start(this),this.pendingUpdate=!0}cover(){return this.goHome({cover:!0})}getRendererScreenPosition(){return this.renderer.getRendererScreenPosition()}updateRendererScreenPosition(){this.pendingUpdate=!0,this.renderer.resize()}setOptions(e){this.options={...this.options,...e}}goHome(e={}){if(this.world.width<=0||this.world.height<=0)return;let t=this.getScaleFactor(),i=e.position?{x:e.position[1],y:e.position[2],width:e.position[3]-e.position[1],height:e.position[4]-e.position[2]}:{x:this.homePosition[1],y:this.homePosition[2],width:this.homePosition[3]-this.homePosition[1],height:this.homePosition[4]-this.homePosition[2]},r=this.width*t,s=this.height*t,a=i.width/r,h=i.height/s,d=r/s;if(e.cover?a>h:a<h){let u=d*i.height,l=(u-i.width)/2;this.target[1]=Math.round(-l+i.x),this.target[2]=Math.round(i.y),this.target[3]=Math.round(u-l+i.x),this.target[4]=Math.round(i.height+i.y)}else{let u=i.width/d,l=(u-i.height)/2;this.target[1]=Math.round(i.x),this.target[2]=Math.round(i.y-l),this.target[3]=Math.round(i.x+i.width),this.target[4]=Math.round(i.y+u-l)}this.constrainBounds(this.target),this.updateControllerPosition()}resize(e,t,i,r){this.updateFocalPosition(e-t,i-r);let s=t/e,a=r/i;this.target[3]=this.target[1]+(this.target[3]-this.target[1])*s,this.target[4]=this.target[2]+(this.target[4]-this.target[2])*a,this.goHome({position:this.focalPosition}),this.renderer.resize(t,r),this.pendingUpdate=!0}updateFocalPosition(e,t){if(!this.manualFocalPosition){let i=this.width,r=this.height,s=Math.min(i,r),a=0,h=0,d=this.x+a,u=this.y+h;if(i<r){let l=this.height-this.width;this.focalPosition=I.DnaFactory.projection({x:d,y:u+l/2,width:s-a*2,height:s-h*2}),this.pendingUpdate=!0}else{let l=this.width-this.height;this.focalPosition=I.DnaFactory.projection({x:d+l/2,y:u,width:s-a*2,height:s-h*2}),this.pendingUpdate=!0}}}getViewport(){return this._viewport.x=this.target[1],this._viewport.y=this.target[2],this._viewport.width=this.target[3]-this.target[1],this._viewport.height=this.target[4]-this.target[2],this._viewport}constrainBounds(e,{panPadding:t=0,ref:i=!1}={}){let{minX:r,maxX:s,minY:a,maxY:h}=this.getBounds({target:e,padding:t}),d=!1,u=i?e:(0,I.dna)(e),l=Math.round(e[3]-e[1]),c=Math.round(e[4]-e[2]);return r>e[1]&&(d=!0,u[1]=r,u[3]=r+l),a>e[2]&&(d=!0,u[2]=a,u[4]=a+c),s<e[1]&&(d=!0,u[1]=s,u[3]=s+l),h<e[2]&&(d=!0,u[2]=h,u[4]=h+c),[d,u]}getBounds(e){let t=e.target||this.target,i=e.padding,r=this.options.visibilityRatio,s=Math.abs(1-r);if(this.world.hasActiveZone()){let f=this.world.getActiveZone();if(f){let _=t[3]-t[1]<f.points[3]-f.points[1],A=t[4]-t[2]<f.points[4]-f.points[2];return{minX:_?f.points[1]-i:f.points[1]+(f.points[3]-f.points[1])/2-(t[3]-t[1])/2,maxX:A?f.points[2]-i:f.points[2]+(f.points[4]-f.points[2])/2-(t[4]-t[2])/2,minY:_?f.points[3]+i:f.points[1]+(f.points[3]-f.points[1])/2-(t[3]-t[1])/2,maxY:A?f.points[4]+i:f.points[2]+(f.points[4]-f.points[2])/2-(t[4]-t[2])/2}}}let a=t[3]-t[1],h=this.world.width,d=-a*s,u=h-a-d,l=t[4]-t[2],c=this.world.height,m=-l*s,y=c-l-m,b=Math.round(Math.max(d,u)),S=Math.round(Math.min(d,u)),P=Math.round(Math.max(m,y)),g=Math.round(Math.min(m,y));return{minX:S,maxX:b,minY:g,maxY:P}}getScaleFactor(e=!1){let t=this.renderer.getScale(this.target[3]-this.target[1],this.target[4]-this.target[2],e);return t===0?this._lastGoodScale:(this._lastGoodScale=t,t)}getZoomedPosition(e,{origin:t,fromPos:i}){let r=i?{width:i[3]-i[1],height:i[4]-i[2]}:void 0,s=r?this.renderer.getScale(r.width,r.height):this.getScaleFactor(),a=r?r.width:this.width,h=r?r.height:this.height,d=this.getRendererScreenPosition()?.width,u=this.world.width,l=d?d/u:1,c=this.options.maxUnderZoom,m=Math.max(l||1,this.options.maxOverZoom),y=1/e,b=s*y;if(y<1){let g=a*s,f=h*s,_=this.world.width/g,A=this.world.height/f;if(_>A){let x=this.world.width*b,M=~~(a*s)*c;x<M&&(e=this.world.width*s/(a*s*c))}else{let x=this.world.height*b,M=~~(h*s)*c;x<M&&(e=this.world.height*s/(h*s*c))}}else b>m&&(e=s/m);let P=(0,I.transform)(this.target,(0,I.scaleAtOrigin)(e,t?t.x:this.target[1]+(this.target[3]-this.target[1])/2,t?t.y:this.target[2]+(this.target[4]-this.target[2])/2),this.zoomBuffer);return this.constrainBounds(P,{ref:!0,panPadding:100}),P}clampRegion({x:e,y:t,width:i,height:r,padding:s=0}){let a=this.width,h=this.height,d=i/a<r/h,u=e-s,l=t-s,c=i+s*2,m=r+s*2;if(d){let b=m/h*a;return{x:u-(b-c)/2,y:l,width:b,height:m}}let y=c/a*h;return{x:u,y:l-(y-m)/2,width:c,height:y}}viewerToWorld(e,t){let i=this.getScaleFactor();return this._viewerToWorld.x=this.target[1]+e/i,this._viewerToWorld.y=this.target[2]+t/i,this._viewerToWorld}worldToViewer(e,t,i,r){let s=I.DnaFactory.singleBox(i,r,e,t);return(0,I.mutate)(s,(0,I.compose)((0,I.scale)(this.getScaleFactor()),(0,I.translate)(-this.target[1],-this.target[2]))),{x:s[1],y:s[2],width:s[3]-s[1],height:s[4]-s[2],strand:s}}setScale(e,t){(0,I.mutate)(this.target,(0,I.scaleAtOrigin)(e,t?t.x:this.target[1]+(this.target[3]-this.target[1])/2,t?t.y:this.target[2]+(this.target[4]-this.target[2])/2)),this.pendingUpdate=!0}syncTo(e){let t=this.target;return this.target=e.target,this.pendingUpdate=!0,()=>{this.target=t}}stop(){return typeof this.stopId<"u"&&(window.cancelAnimationFrame(this.stopId),this.stopId=void 0),()=>{this.render(performance.now())}}reset(){this.renderer.reset()}selectZone(e){this.world.selectZone(e),this.pendingUpdate=!0}deselectZone(){this.world.deselectZone(),this.pendingUpdate=!0}hook(e,t){let i=this.hooks[e].length;if(i!==0)for(let r=0;r<i;r++)this.hooks[e][r](t)}registerHook(e,t){return this.hooks[e].push(t),()=>{this.hooks[e]=this.hooks[e].filter(i=>i!==t)}}updateNextFrame(){this.pendingUpdate=!0}};var Ut=require("@atlas-viewer/dna");var Ce=/([0-9]+(px|em)\s+)+(solid)\s+(.*)/g,Re={},Sn=["backgroundColor","opacity","boxShadow","borderColor","borderWidth","borderStyle","outlineColor","outlineWidth","outlineOffset","outlineStyle"],It=class extends B{constructor(){super();o(this,"id");o(this,"type","spacial-content");o(this,"isShape",!0);o(this,"points");o(this,"hoverEvents",!1);o(this,"activeEvents",!1);o(this,"display",{x:0,y:0,scale:1,width:-1,height:-1,points:(0,Ut.dna)(5)});o(this,"boundingBox",null);o(this,"_parsed",{border:{id:null,match:[]},outline:{id:null,match:[]}});o(this,"hovering");o(this,"pressing");o(this,"props",{});o(this,"shape",{type:"none"});o(this,"addHover",()=>{this.hovering=!0,this.__revision++});o(this,"removeHover",()=>{this.hovering=!1,this.pressing=!1,this.__revision++});o(this,"addPress",()=>{this.pressing=!0,this.__revision++});o(this,"removePress",()=>{this.pressing=!1,this.__revision++});this.id=ht(12),this.points=(0,Ut.dna)(5),this.shape={type:"none"}}updateBoundingBox(){if(this.shape.type==="none")return;let t=this.shape.points;if(this.shape.points.length>2){let i=Math.min(...t.map(h=>h[0])),r=Math.min(...t.map(h=>h[1])),s=Math.max(0,...t.map(h=>h[0])),a=Math.max(0,...t.map(h=>h[1]));this.boundingBox={x:i,y:r,width:s-i,height:a-r};return}this.boundingBox=null}intersects(t){if(!t||this.shape.type==="none")return!1;let[i,r]=t,s=this.shape.points,a=this.boundingBox;if(a||(this.updateBoundingBox(),a=this.boundingBox),!a||i<a.x||i>a.x+a.width||r<a.y||r>a.height+a.y)return!1;let h=!1;for(let d=0,u=s.length-1;d<s.length;u=d++)s[d][1]>r!=s[u][1]>r&&i<(s[u][0]-s[d][0])*(r-s[d][1])/(s[u][1]-s[d][1])+s[d][0]&&(h=!h);return h}getAllPointsAt(t,i){return t[3]-t[1]===1&&t[4]-t[2]===1?this.intersects([t[1],t[2]])?[[this,this.points,i]]:[]:[[this,this.points,i]]}applyProps(t={}){let i=!1;if(t.points)if(this.shape.type!=="polygon"||this.shape.points.length!==t.points.length)this.shape={type:"polygon",points:t.points,open:t.open},this.updateBoundingBox();else{let r=!1,s=t.points.length;for(let a=0;a<s;a++)if(t.points[a][0]!==this.shape.points[a][0]||t.points[a][1]!==this.shape.points[a][1]){r=!0;break}r&&(this.shape={type:"polygon",points:t.points,open:t.open},this.updateBoundingBox())}if(t.interactive!==this.props.interactive&&(i=!0,this.props.interactive=t.interactive),(t.open||t.open===!1)&&(i=!0,this.shape.open=t.open),t.style){let r=t.border||t.style.border;if(r!==this._parsed.border.id)if(!r)this._parsed.border.id=null,this._parsed.border.match=[];else{let s=Re[r]||Ce.exec(r)||Ce.exec(r);s&&(this._parsed.border.id=r,this._parsed.border.match=Re[r]=s)}if(this._parsed.border.id&&(t.style.borderWidth=this._parsed.border.match[1],t.style.borderStyle="solid",t.style.borderColor=this._parsed.border.match[4]),t.style.outline!==this._parsed.outline.id)if(!t.style.outline)this._parsed.outline.id=null,this._parsed.outline.match=[];else{let s=Re[t.style.outline]||Ce.exec(t.style.outline)||Ce.exec(t.style.outline);s&&(this._parsed.outline.id=t.style.outline,this._parsed.outline.match=Re[t.style.outline]=s)}this._parsed.outline.id&&(t.style.outlineWidth=this._parsed.outline.match[1],t.style.outlineStyle="solid",t.style.outlineColor=this._parsed.outline.match[4]),this.props.style=t.style,t.backgroundColor&&!this.props.style.backgroundColor&&(this.props.style.backgroundColor=t.backgroundColor,i=!0),t.style.background&&!this.props.style.backgroundColor&&(this.props.style.backgroundColor=t.style.background,i=!0);for(let s of Sn)if(this.props.style[s]!==t.style[s]){i=!0;break}t.style[":hover"]!==this.props.hoverStyles&&(this.props.hoverStyles=t.style[":hover"],this.hoverEvents||(this.hoverEvents=!0,this.addEventListener("pointerenter",this.addHover),this.addEventListener("pointerleave",this.removeHover)),i=!0),t.style[":active"]!==this.props.pressStyles&&(this.props.pressStyles=t.style[":active"],this.activeEvents||(this.activeEvents=!0,this.addEventListener("mousedown",this.addPress),this.addEventListener("mouseup",this.removePress)),i=!0)}t.href!==this.props.href&&(this.props.href=t.href,i=!0),t.hrefTarget!==this.props.hrefTarget&&(this.props.hrefTarget=t.hrefTarget,i=!0),t.title!==this.props.title&&(this.props.title=t.title,i=!0),t.className!==this.props.className&&(this.props.className=t.className,t.className&&!this.hoverEvents&&(this.hoverEvents=!0,this.addEventListener("pointerenter",this.addHover),this.addEventListener("pointerleave",this.removeHover)),t.className&&!this.activeEvents&&(this.activeEvents=!0,this.addEventListener("mousedown",this.addPress),this.addEventListener("mouseup",this.removePress)),i=!0),t.relativeSize!==this.props.relativeSize&&(this.props.relativeSize=t.relativeSize,i=!0),t.relativeStyle!==this.props.relativeStyle&&(this.props.relativeStyle=t.relativeStyle,i=!0),t.html!==this.props.html&&(this.props.html=t.html,i=!0),t.target&&(t.target.width!==this.display.width||t.target.height!==this.display.height||t.target.x!==this.points[1]||t.target.y!==this.points[2])&&(i=!0,this.points=Ut.DnaFactory.singleBox(t.target.width,t.target.height,t.target.x,t.target.y),this.display.points=Ut.DnaFactory.singleBox(t.target.width,t.target.height,t.target.x,t.target.y),this.display.width=t.target.width,this.display.height=t.target.height),i&&this.__revision++}};var Ei=J(require("lru-cache"),1);var Si=/(-?[0-9]+(px|em)\s+|0\s+)(-?[0-9]+(px|em)\s+|0\s+)(-?[0-9]+(px|em)\s+|0\s+)?(-?[0-9]+(px|em)\s+|0\s+)?(.*)/g,Pi={},Pn=typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().includes("firefox"),Te={};var ie=class{constructor(e,t){o(this,"canvas");o(this,"ctx");o(this,"options");o(this,"imagesPending",0);o(this,"imagesLoaded",0);o(this,"imageIdsLoaded",[]);o(this,"frameIsRendering",!1);o(this,"pendingDrawCall",!1);o(this,"firstMeaningfulPaint",!1);o(this,"parallelTasks",8);o(this,"frameTasks",0);o(this,"loadingQueueOrdered",!0);o(this,"loadingQueue",[]);o(this,"currentTask",Promise.resolve());o(this,"tasksRunning",0);o(this,"stats");o(this,"averageJobTime",64);o(this,"lastKnownScale",1);o(this,"visible",[]);o(this,"previousVisible",[]);o(this,"rendererPosition");o(this,"dpi");o(this,"drawCalls",[]);o(this,"lastPaintedObject");o(this,"hostCache");o(this,"invalidated",[]);o(this,"_worker",()=>{if(this.loadingQueue.length){let e=this.loadingQueue.pop();e&&(this.tasksRunning++,this.frameTasks++,this.currentTask=e.task().then(()=>{this.tasksRunning--}).catch(()=>{this.tasksRunning--}))}});o(this,"_scheduled",0);o(this,"_doWork",()=>{this.loadingQueue.length===0&&this.tasksRunning===0&&this._scheduled&&(clearInterval(this._scheduled),this._scheduled=0);let e=this.parallelTasks||1;!this.firstMeaningfulPaint&&this.loadingQueue.length&&(e=this.loadingQueue.length);for(let t=0;t<=e;t++)this._worker()});this.canvas=e,this.rendererPosition=e.getBoundingClientRect(),this.ctx=e.getContext("2d",{alpha:!0}),this.ctx.imageSmoothingEnabled=!0,this.options=t||{},this.canvas.style.opacity="0",this.canvas.style.transition="opacity .3s",this.dpi=t?.dpi||1,this.hostCache=t?.lruCache?new Ei.default({maxSize:1024*512*512,dispose:(i,r,s)=>{this.invalidated.push(r),i.width=0,i.height=0},sizeCalculation:(i,r)=>i.width*i.height}):{store:{},get(i){return this.store[i]},set(i,r){this.store[i]=r}}}getCanvasDims(){return{width:this.canvas.width/this.dpi,height:this.canvas.height/this.dpi}}resize(){this.rendererPosition=this.canvas.getBoundingClientRect()}isReady(){return this.firstMeaningfulPaint}afterFrame(e){if(this.clearTransform(),this.lastPaintedObject=void 0,this.frameIsRendering=!1,this.imagesPending=Math.max(0,this.imagesPending-this.imagesLoaded),this.imagesLoaded=0,this.loadingQueueOrdered||(this.loadingQueue=this.loadingQueue.sort((t,i)=>t.network&&t.scale===i.scale?i.distance-t.distance:t.scale<i.scale?-1:1),this.loadingQueueOrdered=!0),this.previousVisible=this.visible,this.pendingDrawCall=!!this.drawCalls.length,this.pendingDrawCall)for(let t=0;t<this.drawCalls.length;t++){let i=this.drawCalls.shift();i&&i()}this.doOffscreenWork(),this.options.debug&&this.stats&&this.stats.end()}doOffscreenWork(){this.frameTasks=0,this.loadingQueue.length&&(this._worker(),this.loadingQueue.length&&(this._scheduled||(this._scheduled=setInterval(this._doWork,0))))}getScale(e,t,i){if(Number.isNaN(e)||Number.isNaN(t))return this.lastKnownScale;let r=this.getCanvasDims(),s=r.width/e,a=r.height/t,h=(s<a?a:s)*(i&&this.dpi||1);return Number.isNaN(h)||(this.lastKnownScale=h),this.lastKnownScale}beforeFrame(e,t,i,r){this.options.debug&&this.stats&&this.stats.begin(),this.frameIsRendering=!0,this.visible=[],this.options.beforeFrame&&this.options.beforeFrame(t);let s=this.getCanvasDims();if(this.ctx.globalAlpha=1,this.ctx.fillStyle=this.options.background||"rgb(0, 0, 0)",this.ctx.fillRect(0,0,s.width,s.height),r.enableFilters&&(r.filters.brightness||r.filters.contrast||r.filters.grayscale||r.filters.invert||r.filters.sepia||r.filters.saturate||r.filters.hueRotate||r.filters.blur)){let a="";r.filters.brightness&&(a+=`brightness(${~~(100+r.filters.brightness*100)}%) `),r.filters.contrast&&(a+=`contrast(${~~(100+r.filters.contrast*100)}%) `),r.filters.grayscale&&(a+=`grayscale(${~~(r.filters.grayscale*100)}%) `),r.filters.invert&&(a+=`invert(${~~(r.filters.invert*100)}%) `),r.filters.sepia&&(a+=`sepia(${~~(r.filters.sepia*100)}%) `),r.filters.saturate&&(a+=`saturate(${~~(100+r.filters.saturate*100)}%) `),r.filters.hueRotate&&(a+=`hue-rotate(${r.filters.hueRotate}deg) `),r.filters.blur&&(a+=`blur(${r.filters.blur}px) `),this.ctx.filter=a}else this.ctx.filter="none"}applyTransform(e,t,i,r,s){let a=e.__owner.value;if(a&&a.rotation){this.ctx.save();let h=t+r/2,d=i+s/2;this.ctx.translate(h,d),this.ctx.rotate(a.rotation*Math.PI/180),this.ctx.translate(-h,-d),this.lastPaintedObject=a}}clearTransform(){this.lastPaintedObject&&(this.lastPaintedObject.rotation&&this.ctx.restore(),this.lastPaintedObject=void 0)}paint(e,t,i,r,s,a){let h=this.ctx.globalAlpha;if(e instanceof z||e instanceof et){if(e.display.rotation){this.ctx.save();let l=i+s/2,c=r+a/2;e.crop&&(l-=e.crop[t*5+1],c-=e.crop[t*5+2]),this.ctx.translate(l,c),this.ctx.rotate(e.display.rotation*Math.PI/180),this.ctx.translate(-l,-c)}if(this.visible.push(e),typeof e.style&&e.style.opacity!=="undefined"){if(!e.style.opacity)return;this.ctx.globalAlpha=e.style.opacity}try{let l=e.__host.canvas,c=this.getCanvasDims();if((l.indices.indexOf(t)===-1||this.invalidated.indexOf(l.canvases[t])!==-1)&&this.schedulePaintToCanvas(l,e,t,Mt({x:i+s/2,y:r+s/2},{x:c.width/2,y:c.height/2})),!this.firstMeaningfulPaint)return;let m=this.hostCache.get(l.canvases[t]);if(m)if(e.crop&&e.cropData){if(e.crop[t*5]){let y=[e.crop[t*5+1]/e.display.scale-e.display.points[t*5+1],e.crop[t*5+2]/e.display.scale-e.display.points[t*5+2],1+(e.crop[t*5+3]-e.crop[t*5+1])/e.display.scale,1+(e.crop[t*5+4]-e.crop[t*5+2])/e.display.scale];y[0]+=e.cropData.x/e.display.scale,y[1]+=e.cropData.y/e.display.scale;let b=e.x*this.lastKnownScale,S=e.y*this.lastKnownScale,P=[i+b,r+S,s,a];P[0]+=b,P[1]+=S,this.ctx.drawImage(m,y[0],y[1],y[2],y[3],P[0],P[1],P[2]+1,P[3]+1)}}else Pn?this.ctx.drawImage(m,0,0,e.display.points[t*5+3]-e.display.points[t*5+1],e.display.points[t*5+4]-e.display.points[t*5+2],i,r,s+1,a+1):this.ctx.drawImage(m,0,0,e.display.points[t*5+3]-e.display.points[t*5+1],e.display.points[t*5+4]-e.display.points[t*5+2],i,r,s+Number.MIN_VALUE+.5,a+Number.MIN_VALUE+.5)}catch{}e.display.rotation&&this.ctx.restore()}let d=e instanceof st&&this.options.box,u=e instanceof It&&this.options.polygon;if((d||u)&&!e.props.className&&!e.props.html&&!e.props.href){if(this.visible.push(e),e.props.style){let l=Object.assign({},e.props.style||{},e.hovering?e.props.hoverStyles:{},e.pressing?e.props.pressStyles:{}),c=e.props.relativeStyle?1:s/e.width;typeof l.opacity<"u"&&(this.ctx.globalAlpha=l.opacity);let m=0;typeof l.borderWidth<"u"&&(m=parseInt(l.borderWidth,10)*c);let y=0;typeof l.outlineWidth<"u"&&(y=parseInt(l.outlineWidth,10)*c);let b=0;if(typeof l.outlineOffset<"u"&&(b=parseInt(l.outlineOffset,10)*c),l.borderColor&&(this.ctx.strokeStyle=l.borderColor),l.boxShadow){let S=l.boxShadow.split(/,(?![^(]*\))/);for(let P of S){let g=Pi[P]||Si.exec(P)||Si.exec(P);Pi[P]=g,g&&(this.ctx.save(),this.ctx.shadowOffsetX=parseInt(g[1])*this.dpi*c,this.ctx.shadowOffsetY=parseInt(g[3])*this.dpi*c,this.ctx.shadowBlur=parseInt(g[5])*this.dpi*c,this.ctx.shadowColor=g[9],this.ctx.fillStyle="rgba(0,0,0,1)",this.ctx.fillRect(i+m,r+m,s,a),this.ctx.restore())}}if(this.ctx.fillStyle=l.backgroundColor||"transparent",this.ctx.lineWidth=m,u){let S=e.shape,P=S.points||[],g=P.length;this.ctx.beginPath();for(let f=0;f<g;f++)this.ctx.lineTo(i+P[f][0]*this.lastKnownScale,r+P[f][1]*this.lastKnownScale);S.open||this.ctx.closePath(),m&&this.ctx.stroke(),S.open||this.ctx.fill()}else m&&this.ctx.strokeRect(i+m/2,r+m/2,s+m,a+m),this.ctx.fillRect(i+m,r+m,s,a);y&&(l.outlineColor&&(this.ctx.strokeStyle=l.outlineColor),this.ctx.lineWidth=y,this.ctx.strokeRect(i-y/2-b,r-y/2-b,s+m*2+y+b*2,a+m*2+y+b*2))}this.ctx.globalAlpha=h}}loadImage(e,t,i,r=!1){if(Te[e]&&Te[e].naturalWidth>0){t(Te[e]);return}try{let s=!1;r||setTimeout(()=>{s||this.loadImage(e,t,i,!0)},3e3);let a=document.createElement("img");a.decoding="auto",a.onload=function(){s=!0,t(a),Te[e]=a,a.onload=null},this.options.crossOrigin&&(a.crossOrigin="anonymous"),a.src=e,a.complete&&a.onload({}),a.width}catch(s){console.log("image error",s),i(s)}}schedulePaintToCanvas(e,t,i,r){this.imagesPending++,e.indices.push(i);let s=`${t.id}--${t.display.scale}-${i}`,a=this.invalidated.indexOf(s);a!==-1&&this.invalidated.splice(a,1),e.canvases[i]=s,t.__host.canvas.loading=!0,this.loadingQueueOrdered=!1,this.loadingQueue.push({id:s,scale:t.display.scale,network:!0,distance:r,task:()=>new Promise(h=>{if(this.visible.indexOf(t)===-1){this.imagesPending--,e.indices.splice(e.indices.indexOf(i),1),h();return}let d=t.getImageUrl(i);this.loadImage(d,u=>{this.loadingQueue.push({id:s,scale:t.display.scale,distance:r,task:()=>new Promise(l=>{this.imageIdsLoaded.includes(s)||(this.imagesLoaded++,this.imageIdsLoaded.push(s)),e.loaded.push(i),e.loaded.length===e.indices.length&&(e.loading=!1);let c=t.display.points.slice(i*5,i*5+5),m=document.createElement("canvas"),y=m.getContext("2d");m.width=c[3]-c[1],m.height=c[4]-c[2],this.hostCache.set(e.canvases[i],m),this.drawCalls.push(()=>{y.drawImage(u,0,0,c[3]-c[1],c[4]-c[2]),l()})})}),h()},u=>{this.imagesPending--,e.indices.splice(e.indices.indexOf(i),1),h()})})})}afterPaintLayer(e,t){}prepareLayer(e,t){if(e.__owner.value)if(e.cropData){let i=this.lastKnownScale*(1/e.display.scale);this.applyTransform(e,t[1],t[2],t[3]-t[1],t[4]-t[2])}else this.applyTransform(e,t[1],t[2],t[3]-t[1],t[4]-t[2]);(!e.__host||!e.__host.canvas)&&(e instanceof z||e instanceof et)&&this.createImageHost(e)}finishLayer(){this.lastPaintedObject&&this.clearTransform()}createImageHost(e){e.__host=e.__host?e.__host:{},e.__host.canvas={canvas:void 0,canvases:[],indices:[],loaded:[],loading:!1}}getPointsAt(e,t,i,r){return e.getPointsAt(t,i,r)}getViewportBounds(e,t,i){let r=e.getActiveZone();if(r){let s=t[3]-t[1]<r.points[3]-r.points[1],a=t[4]-t[2]<r.points[4]-r.points[2];return{x1:s?r.points[1]-i:r.points[1]+(r.points[3]-r.points[1])/2-(t[3]-t[1])/2,y1:a?r.points[2]-i:r.points[2]+(r.points[4]-r.points[2])/2-(t[4]-t[2])/2,x2:s?r.points[3]+i:r.points[1]+(r.points[3]-r.points[1])/2-(t[3]-t[1])/2,y2:a?r.points[4]+i:r.points[2]+(r.points[4]-r.points[2])/2-(t[4]-t[2])/2}}return null}pendingUpdate(){let e=!this.pendingDrawCall&&this.drawCalls.length===0&&this.imagesPending===0&&this.loadingQueue.length===0&&this.tasksRunning===0;return!e&&this.visible.length===0&&setTimeout(()=>{this.canvas.style.opacity="1",this.firstMeaningfulPaint=!0},500),!this.firstMeaningfulPaint&&e&&this.visible.length?(this.canvas.style.opacity="1",this.firstMeaningfulPaint=e,!0):this.options.debug?!0:!e}getRendererScreenPosition(){return this.rendererPosition}reset(){this.loadingQueue=[],this.drawCalls=[]}};var Lt=class{constructor(e){o(this,"renderers",[]);o(this,"length");for(let t of e)t&&this.renderers.push(t);this.length=this.renderers.length}afterFrame(e,t,i,r){for(let s=0;s<this.length;s++)this.renderers[s].afterFrame(e,t,i,r)}afterPaintLayer(e,t){for(let i=0;i<this.length;i++)this.renderers[i].afterPaintLayer(e,t)}beforeFrame(e,t,i,r){for(let s=0;s<this.length;s++)this.renderers[s].beforeFrame(e,t,i,r)}triggerResize(){for(let e=0;e<this.length;e++){let t=this.renderers[e];t.triggerResize&&t.triggerResize()}}getPointsAt(e,t,i,r){return this.renderers[0].getPointsAt(e,t,i,r)}getScale(e,t){return this.renderers[0].getScale(e,t)}getViewportBounds(e,t,i){return this.renderers[0].getViewportBounds(e,t,i)}getRendererScreenPosition(){return this.renderers[0].getRendererScreenPosition()}isReady(){for(let e=0;e<this.length;e++)if(!this.renderers[e].isReady())return!1;return!0}paint(e,t,i,r,s,a){for(let h=0;h<this.length;h++)this.renderers[h].paint(e,t,i,r,s,a)}pendingUpdate(){for(let e=0;e<this.length;e++)if(this.renderers[e].pendingUpdate())return!0;return!1}prepareLayer(e,t){for(let i=0;i<this.length;i++)this.renderers[i].prepareLayer(e,t)}finishLayer(e,t){for(let i=0;i<this.length;i++)this.renderers[i].finishLayer(e,t)}resize(e,t){for(let i=0;i<this.length;i++)this.renderers[i].resize(e,t)}reset(){for(let e=0;e<this.length;e++)this.renderers[e].reset()}};var _e=require("@atlas-viewer/dna");var ne=class{constructor(e){o(this,"canvas");o(this,"context");o(this,"heightRatio",1);o(this,"widthRatio",1);o(this,"target",new Float32Array(5));o(this,"initialWidth");o(this,"initialHeight");o(this,"bounds");o(this,"aggregate");o(this,"delta",0);o(this,"renderNextFrame",!0);this.canvas=e,this.initialWidth=e.width,this.initialHeight=e.height,this.context=e.getContext("2d"),this.context.globalAlpha=.5,this.aggregate=(0,_e.scale)(1)}isReady(){return!0}resize(){this.initialWidth=this.canvas.width,this.initialHeight=this.canvas.height,this.renderNextFrame=!0}afterFrame(e,t,i){if(this.renderNextFrame){this.context.clearRect(0,0,this.canvas.width,this.canvas.height);let r=this.initialWidth/e.width,s=this.initialHeight/e.height,a=this.widthRatio>this.heightRatio?r:s;if(this.target=i,this.bounds){let h=e.getPointsAt(this.bounds,this.aggregate,a);for(let[d,u]of h)if(d instanceof z&&d.__host.canvas){let l=u.length/5;for(let c=0;c<l;c++)if(d.__host.canvas.canvases[c]){let y={x1:u[c+1]*a,y1:u[c+2]*a,width:(u[c+3]-u[c+1])*a,height:(u[c+4]-u[c+2])*a}}}}e.getPoints().forEach((h,d,u)=>{if(d%5===0&&h){let l={x1:u[d+1]*a,y1:u[d+2]*a,x2:u[d+3]*a,y2:u[d+4]*a,width:(u[d+3]-u[d+1])*a,height:(u[d+4]-u[d+2])*a};this.context.strokeStyle="red",this.context.strokeRect(l.x1,l.y1,l.width,l.height)}}),i&&(this.context.strokeStyle="red",this.context.lineWidth=window.devicePixelRatio||1,this.context.strokeRect(i[1]*a,i[2]*a,(i[3]-i[1])*a,(i[4]-i[2])*a))}}getActiveZone(e){return null}getPointsAt(e,t,i,r){return e.getPointsAt(t,i,r)}getScale(e,t){return 1}beforeFrame(e,t){this.bounds=_e.DnaFactory.singleBox(e.width,e.height)}drawImage(){}afterPaintLayer(e,t){}paint(e,t,i,r,s,a){this.renderNextFrame=!0}prepareLayer(e){}pendingUpdate(){return!1}hasActiveZone(){return!1}getViewportBounds(e,t,i){return null}getRendererScreenPosition(){return this.canvas.getBoundingClientRect()}finishLayer(){}reset(){}};var $e=class{constructor(){o(this,"autoWidth",!1);o(this,"autoHeight",!0);o(this,"width");o(this,"height");o(this,"world");o(this,"content",[]);o(this,"viewingDirection","left-to-right");o(this,"rows");o(this,"columns",4);o(this,"spacing",20);o(this,"reversed",!1);o(this,"padding",20);this.world=it.withProps({width:0,height:0,viewingDirection:"left-to-right"}),this.width=0,this.height=0}setViewingDirection(e){this.viewingDirection=e}addContent(e){this.content.push(...e.map(t=>this.world.addObjectAt(t,{width:0,height:0,x:0,y:0})))}setWidth(e){this.width=e}setHeight(e){this.height=e}setSpacing(e){this.spacing=e}setPadding(e){this.padding=e}setRows(e){this.autoWidth=!0,this.rows=e}setColumns(e){this.autoHeight=!0,this.columns=e}recalculate(){if(this.height===0&&this.width===0||this.rows===0||this.columns===0)return;if(this.autoHeight&&!this.width)throw new Error("Cannot set auto height without setting a width");if(this.autoWidth&&!this.height)throw new Error("Cannot set auto width without setting a height");(this.viewingDirection==="left-to-right"||this.viewingDirection==="top-to-bottom")&&this.reversed&&(this.reversed=!1,this.content.reverse()),(this.viewingDirection==="right-to-left"||this.viewingDirection==="bottom-to-top")&&!this.reversed&&(this.reversed=!0,this.content.reverse());let e=this.content.length,t=()=>{if(this.autoWidth&&this.rows){let h=e>this.rows?this.rows:e;return{columns:Math.ceil(e/h),rows:h}}if(this.autoHeight&&this.columns){let h=e>this.columns?this.columns:e;return{columns:h,rows:Math.ceil(e/h)}}throw new Error("Something went wrong.")},{columns:i,rows:r}=t(),s=this.autoWidth?-1:this.width-this.padding*2,a=this.autoWidth?-1:(s-this.spacing*(i-1))/i;if(this.autoHeight&&!this.autoWidth){let h=0,d=this.padding;for(let u=0;u<r&&h!==e;u++){let l=0,c=[];for(let m=0;m<i;m++){let y=this.reversed?e-h:h;if(h===e)break;let b=this.content[y],S=b.width,P=b.width/b.height,g=a/P;c.push([h,a,g,a/S]),g>l&&(l=g),h++}for(let m=0;m<i&&c[m];m++){let y=this.world.getPoints(),b=c[m][0],S=c[m][1],P=c[m][2],g=c[m][3],f=this.padding+m*(this.spacing+S),_=d+(l-P)/2,A=this.reversed?e-b:b,x=y[A*5+1],v=y[A*5+2];this.world.scaleWorldObject(b,g),(x!==f||v!==_)&&this.world.translateWorldObject(A,f-x,_-v)}d+=l+this.spacing}this.height=d+this.padding,this.world.resize(this.width,this.height);return}this.autoWidth&&this.autoHeight,!this.autoWidth&&this.autoHeight}getWorld(){return this.world}};var _i=J(require("normalize-wheel"),1);var Q=require("@atlas-viewer/dna");function Ci(n){return{x:n[1],y:n[2],width:n[3]-n[1],height:n[4]-n[2]}}var Ri="pan",Ti="scroll",En="gesture",Oi={zoomOutFactor:.8,zoomInFactor:1.25,maxZoomFactor:1,minZoomFactor:.05,zoomDuration:300,zoomWheelConstant:20,zoomClamp:.6,panBounceStiffness:120,panBounceDamping:15,panTimeConstant:240,panPower:.1,nudgeDistance:100,panPadding:0,devicePixelRatio:1,enableWheel:!0,enableClickToZoom:!0,ignoreSingleFingerTouch:!1,enablePanOnWait:!1,requireMetaKeyForWheelZoom:!1,panOnWaitDelay:40,onPanInSketchMode:()=>{},parentElement:null},re=(n={})=>({start:function(e){let{zoomWheelConstant:t,enableWheel:i,enableClickToZoom:r,ignoreSingleFingerTouch:s,enablePanOnWait:a,panOnWaitDelay:h,parentElement:d,requireMetaKeyForWheelZoom:u}={...Oi,...n},l={pointerStart:{x:0,y:0},isPressing:!1,mousemoveBuffer:(0,Q.dna)(5),multiTouch:{distance:0}};e.world.activatedEvents.push("onMouseUp","onMouseDown","onMouseMove","onTouchStart","onTouchEnd","onTouchMove");function c(){S=0,g="",_(),_(void 0,"notice"),P=0}function m(){e.world.constraintBounds(),c()}function y(w){if(w.which>1){l.isPressing=!1;return}e.mode==="explore"&&(w.preventDefault(),l.pointerStart.x=w.atlas.x,l.pointerStart.y=w.atlas.y,e.transitionManager.stopTransition(),l.isPressing=!0)}function b(){c(),l.isPressing&&(e.mode==="explore"&&e.world.constraintBounds(),l.isPressing=!1)}let S=0,P=0,g="";function f(w){if(e.mode==="explore"){if(w.atlasTouches.length===1&&(P=performance.now(),s==!1&&w.preventDefault(),l.pointerStart.x=w.atlasTouches[0].x,l.pointerStart.y=w.atlasTouches[0].y),w.atlasTouches.length===2){g=En,w.preventDefault();let T=w.atlasTouches[0].x,L=w.atlasTouches[1].x;l.pointerStart.x=(T+L)/2;let _t=w.atlasTouches[0].y,$=w.atlasTouches[1].y;l.pointerStart.y=(_t+$)/2,S=Mt({x:w.touches[0].clientX,y:w.touches[0].clientY},{x:w.touches[1].clientX,y:w.touches[1].clientY})}e.transitionManager.stopTransition(),l.isPressing=!0}}function _(w,T="intent"){d&&(d.dataset[T]=w)}function A(w){let T=null,L=null,_t=!1,$=0;if(l.isPressing&&w.touches.length===2){let at=w.touches[0].clientX,Y=w.touches[1].clientX;T=(at+Y)/2;let zt=w.touches[0].clientY,Ot=w.touches[1].clientY;L=(zt+Ot)/2,$=Mt({x:w.touches[0].clientX,y:w.touches[0].clientY},{x:w.touches[1].clientX,y:w.touches[1].clientY}),_t=!0}if(_(g),l.isPressing&&w.touches.length===1){if(a&&(performance.now()-P<h&&g==""&&(g=Ti),g==""&&(g=Ri)),_(g),g==""&&s==!0||g==Ti){_("require-two-finger","notice");return}let at=w.touches[0];T=at.clientX,L=at.clientY}if(T!==null&&L!==null){let at=e.getRendererScreenPosition();if(at){let{x:Y,y:zt}=e.viewerToWorld(T-at.x,L-at.y),Ot=$&&S?$/S:1;e.transitionManager.customTransition(bt=>{bt.from=(0,Q.dna)(e.target),bt.to=(0,Q.transform)(bt.from,(0,Q.compose)((0,Q.translate)(l.pointerStart.x-Y,l.pointerStart.y-zt),(0,Q.scaleAtOrigin)(1/Ot,Y,zt)),l.mousemoveBuffer),bt.elapsed_time=0,bt.total_time=0,bt.timingFunction=ot.easeInOutExpo,bt.done=!1})}S=$}g==Ri&&w.preventDefault()}function x(w){if(l.isPressing){let T=e.getRendererScreenPosition();if(T){let{x:L,y:_t}=e.viewerToWorld(w.clientX-T.x,w.clientY-T.y);e.transitionManager.customTransition($=>{$.from=(0,Q.dna)(e.target),$.to=(0,Q.transform)($.from,(0,Q.translate)(l.pointerStart.x-L,l.pointerStart.y-_t),l.mousemoveBuffer),$.elapsed_time=0,$.total_time=0,$.timingFunction=ot.easeInOutExpo,$.done=!1})}}}function v(w){e.mode==="explore"&&e.world.zoomIn(w.atlas)}function M(w){let L=1+(0,_i.default)(w).spinY/t;e.world.zoomTo(L,w.atlas,!0)}function q(w){return u&&w.metaKey==!1?(_("meta-required","notice"),w.stopPropagation(),!1):!0}e.world.addEventListener("mouseup",m),e.world.addEventListener("touchend",m),e.world.addEventListener("touchstart",f),e.world.addEventListener("mousedown",y),window.addEventListener("touchend",b),window.addEventListener("mouseup",b),window.addEventListener("mousemove",x),d&&d.addEventListener("touchmove",A),r&&(e.world.activatedEvents.push("onClick"),e.world.addEventListener("click",v)),i&&(e.world.activatedEvents.push("onWheel"),u&&d?.addEventListener("wheel",q,{passive:!0,capture:!0}),e.world.addEventListener("wheel",M));let G=e.world.addLayoutSubscriber((w,T)=>{if(w==="zone-changed"&&e.transitionManager.constrainBounds({transition:{duration:0}}),w==="zoom-to"&&T&&e.transitionManager.zoomTo(T.factor,{origin:T.point,stream:T.stream}),w==="go-home"){let L=T.immediate?{duration:0}:void 0;e.transitionManager.goToRegion(Ci(e.homePosition),{transition:L})}if(w==="goto-region"&&T){let L=T.immediate?{duration:0}:{};e.transitionManager.goToRegion(T,{transition:L})}w==="constrain-bounds"&&e.transitionManager.constrainBounds({transition:T?.immediate?{duration:0}:void 0})});return()=>{e.world.removeEventListener("mouseup",m),e.world.removeEventListener("touchend",m),e.world.removeEventListener("touchstart",f),e.world.removeEventListener("mousedown",y),window.removeEventListener("touchend",b),window.removeEventListener("mouseup",b),e.world.removeEventListener("mousemove",x),d&&(d.removeEventListener("touchmove",x),d.removeEventListener("wheel",q,{passive:!0,capture:!0})),r&&e.world.removeEventListener("click",v),i&&e.world.removeEventListener("wheel",M),G()}},updatePosition(){}});var F=require("react");var Oe=J(require("react"),1),Ai=require("react/jsx-runtime"),ut=Oe.default.createContext("explore");ut.displayName="Mode";var se=()=>(0,Oe.useContext)(ut);function Cn(n){return(0,Ai.jsx)(ut.Provider,{value:n.mode,children:n.children})}var Ui=J(require("react-use-measure"),1);var Ve=J(require("react"),1),mt=Ve.default.createContext(null);mt.displayName="Atlas";var Rt=Ve.default.createContext(null);Rt.displayName="Bounds";var gt=J(require("react"),1);var Li=J(require("react-reconciler"),1);var oe,Rn=typeof performance=="object"&&typeof performance.now=="function";if(Rn){let n=performance;oe=()=>n.now()}else{let n=Date,e=n.now();oe=()=>n.now()-e}var ki=require("react");var Tn=16;function Mi(n,e){n&&n.appendChild&&e&&n.appendChild(e)}function Fi(n,e){n&&n.removeChild&&e&&n.removeChild(e)}function _n(n,e){return Fi(n.world,e)}function On(n,e,t){return Di(n.world,e,t)}function Di(n,e,t){n&&n instanceof ct&&(n=n.world),n&&n.insertBefore&&n.insertBefore(e,t)}function Ge(n,e,t){if(t&&(n.applyProps&&n.applyProps(t),n instanceof B))for(let i of Ht){let r=i.slice(2).toLowerCase();t[i]!==e[i]&&(e[i]&&n.removeEventListener(r,e[i]),n.addEventListener(r,t[i]))}}function Xe(n,e){let t=Object.keys(e),i=!1;for(let r of t)if(Ht.indexOf(r)!==-1){let s=rt[r];if(s){if(n.activatedEvents.indexOf(s)!==-1)continue;i=!0,n.activatedEvents.push(s)}}i&&n.triggerEventActivation()}var Ae=new Map,Ii={};function An(n,{args:e=[],...t},i,r,s){if(!(i instanceof ct)&&s){let d=u=>u.return?d(u.return):u.stateNode&&u.stateNode.containerInfo;i=d(s)}let a,h=i.world;switch(n){case"world":a=it.withProps({width:t.width,height:t.height,viewingDirection:"left-to-right"}),a.activatedEvents=h.activatedEvents,a.eventHandlers=h.eventHandlers,a.subscriptions=h.subscriptions,a.triggerEventActivation(),h=a;break;case"box":a=new st;break;case"shape":a=new It;break;case"worldObject":case"world-object":a=new dt;break;case"worldImage":case"world-image":a=new z;break;case"texture":a=new Et;break;case"compositeImage":case"composite-image":a=new Kt({id:t.id,width:t.width,height:t.height,images:[],renderOptions:t.renderOptions});break;case"tiledImage":case"tiled-image":a=et.fromTile(t.uri,t.display,t.tile,t.scaleFactor,void 0,t.format);break;case"paragraph":a=new vt,a.text=t.children;break;default:return}return Xe(h,t),Ge(a,{},t),a}function Mn(n,e){if(e instanceof it)n.world=e;else if(e instanceof dt)n.world.appendChild(e);else if(e)throw new Error("Invalid root")}var ae=(0,Li.default)({unstable_now:oe,now:oe,createInstance:An,removeChild:Fi,appendChild:Mi,appendInitialChild:Mi,insertBefore:Di,warnsIfNotActing:!0,supportsMutation:!0,isPrimaryRenderer:!1,scheduleTimeout:typeof setTimeout<"u"?setTimeout:void 0,cancelTimeout:typeof clearTimeout<"u"?clearTimeout:void 0,setTimeout:typeof setTimeout<"u"?setTimeout:void 0,clearTimeout:typeof clearTimeout<"u"?clearTimeout:void 0,noTimeout:-1,appendChildToContainer:Mn,removeChildFromContainer:_n,createTextInstance(){},insertInContainerBefore:On,prepareUpdate(n,e,t,i,r){return Xe(r.world,i),i},commitUpdate(n,e,t,i,r,s){n.applyProps&&e&&Ge(n,i,e)},finalizeInitialChildren(n){return n?.__handlers},getChildHostContext(){return Ii},getRootHostContext(){return Ii},prepareForCommit(n){return n.isCommitting=!0,null},preparePortalMount(){},hideInstance(n){n&&n.points&&(n.points[0]=0)},unhideInstance(n,e){n&&n.points&&(n.points[0]=1)},getPublicInstance(n){return n},hideTextInstance(){throw new Error("Text is not allowed in the react-three-fibre tree. You may have extraneous whitespace between components.")},resetAfterCommit(n){n.isCommitting=!1,n.pendingUpdate=!0,n.world&&n.world.needsRecalculate&&(n.world.recalculateWorldSize(),n.world.triggerRepaint())},shouldSetTextContent(){return!1},clearContainer(){return!1},supportsHydration:!1,supportsPersistence:!1,detachDeletedInstance(n){},afterActiveInstanceBlur(){},beforeActiveInstanceBlur(){},getCurrentEventPriority(){return console.log("getCurrentEventPriority"),Tn},getInstanceFromNode(n){throw console.log("getInstanceFromNode",n),new Error("Not implemented")},getInstanceFromScope(n){throw console.log("getInstanceFromScope",n),new Error("Not implemented")},prepareScopeUpdate(n,e){throw console.log("prepareScopeUpdate",n,e),new Error("Not implemented")},logRecoverableError(){},requestPostPaintCallback(){}});ae.injectIntoDevTools({bundleType:0,version:ki.version,rendererPackageName:"@atlas-viewer/atlas"});function $t(n,e){let t=Ae.get(n);t&&ae.updateContainer(null,t,null,()=>{Ae.delete(n),e&&e(n)})}var Vt={render(n,e){let t=Ae.get(e);if(t)ae.updateContainer(n,t,null);else{let i=ae.createContainer(e,0,null,!1,null,"",()=>{},null);ae.updateContainer(n,i,null),Ae.set(e,i)}},unmountComponentAtNode(n,e){$t(n,e)}};var Me=J(require("react"),1),K=typeof window<"u"&&(window.document?.createElement||window.navigator?.product==="ReactNative")?Me.useLayoutEffect:Me.useEffect;var Gt=require("react/jsx-runtime"),Bi=gt.default.memo(({children:n,setIsReady:e,onCreated:t,bounds:i,preset:r,mode:s="explore"})=>{let a=(0,gt.useCallback)(function(d){let u=(0,gt.useRef)(!1),l=()=>{e(!0)};return(0,gt.useEffect)(()=>{if(r&&!u.current){r.runtime.goHome();let c=t&&t(r);return void(c&&c.then?c.then(l):l())}return()=>{}},[]),(0,gt.useEffect)(()=>{u.current=!0},[]),d.children},[r]);return K(()=>{if(r){let h=r.runtime;s!==h.mode&&(h.mode=s),Vt.render((0,Gt.jsx)(gt.default.StrictMode,{children:(0,Gt.jsx)(a,{children:(0,Gt.jsx)(Rt.Provider,{value:i,children:(0,Gt.jsx)(ut.Provider,{value:s,children:(0,Gt.jsx)(mt.Provider,{value:r,children:n})})})})}),h)}},[r,s,n]),K(()=>{if(r){let h=r.runtime;return()=>{Vt.unmountComponentAtNode(h)}}return()=>{}},[r]),null});var he=class{constructor(e,t){o(this,"canvas");o(this,"gl");o(this,"program");o(this,"fragmentShader");o(this,"vertexShader");o(this,"rectBuffer");o(this,"fragmentShaderSource",`
|
|
1
|
+
"use strict";var un=Object.create;var Qt=Object.defineProperty;var mn=Object.getOwnPropertyDescriptor;var gn=Object.getOwnPropertyNames;var fn=Object.getPrototypeOf,pn=Object.prototype.hasOwnProperty;var yn=(n,e,t)=>e in n?Qt(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var bn=(n,e)=>{for(var t in e)Qt(n,t,{get:e[t],enumerable:!0})},mi=(n,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of gn(e))!pn.call(n,r)&&r!==t&&Qt(n,r,{get:()=>e[r],enumerable:!(i=mn(e,r))||i.enumerable});return n};var J=(n,e,t)=>(t=n!=null?un(fn(n)):{},mi(e||!n||!n.__esModule?Qt(t,"default",{value:n,enumerable:!0}):t,n)),vn=n=>mi(Qt({},"__esModule",{value:!0}),n);var o=(n,e,t)=>(yn(n,typeof e!="symbol"?e+"":e,t),t);var Xn={};bn(Xn,{Atlas:()=>Qe,AtlasAuto:()=>kn,AtlasContext:()=>mt,BoundsContext:()=>Rt,Box:()=>st,BrowserEventManager:()=>Ft,CanvasRenderer:()=>ie,CompositeRenderer:()=>Lt,CompositeResource:()=>Kt,DebugRenderer:()=>ne,DrawBox:()=>Fn,Geometry:()=>It,GridBuilder:()=>$e,HTMLPortal:()=>Fe,ImageService:()=>zn,ImageTexture:()=>Et,ModeContext:()=>ut,ModeProvider:()=>Rn,OverlayRenderer:()=>kt,ReactAtlas:()=>Vt,RegionHighlight:()=>Dn,ResizeWorldItem:()=>ii,Runtime:()=>ct,SingleImage:()=>H,StaticRenderer:()=>ce,Text:()=>vt,TileSet:()=>si,TiledImage:()=>et,WebGLRenderer:()=>he,World:()=>it,WorldObject:()=>dt,Zone:()=>Ue,activateEvents:()=>Xe,applyProps:()=>Ge,bounceOut:()=>te,canDrag:()=>Vn,createDefaultEventMap:()=>je,defaultConfig:()=>Ai,defaultPreset:()=>de,easingFunctions:()=>ot,fromImage:()=>wn,getId:()=>oi,getTileFromCanvas:()=>sn,getTileFromImageService:()=>We,getTiles:()=>Nn,getTilesFromManifest:()=>on,mergeStyles:()=>Gn,popmotionController:()=>re,presets:()=>Ye,staticPreset:()=>Ze,supportedEventAttributes:()=>Ht,supportedEventMap:()=>rt,unmountComponentAtNode:()=>$t,useAfterFrame:()=>Ke,useAfterPaint:()=>Hn,useAtlas:()=>me,useAtlasImage:()=>jn,useBeforeFrame:()=>Un,useCanvas:()=>qe,useControlledAnnotationList:()=>$n,useFrame:()=>Bt,useMode:()=>se,useResizeWorldItem:()=>ei,useRuntime:()=>$,useWorldEvent:()=>De});module.exports=vn(Xn);var Ht=["onMouseDown","onMouseEnter","onMouseLeave","onMouseMove","onMouseOut","onMouseOver","onMouseUp","onTouchCancel","onTouchEnd","onTouchMove","onTouchStart","onPointerDown","onPointerMove","onPointerUp","onPointerCancel","onPointerEnter","onPointerLeave","onPointerOver","onPointerOut","onScroll","onWheel","onClick","onDragStart","onDragEnd","onDragEnter","onDragExit","onDrag","onDragOver"];function je(){return Ht.reduce((n,e)=>(n[e]=[],n),{})}var rt=Ht.reduce((n,e)=>(n[e.slice(2).toLowerCase()]=e,n[e]=e,n),{});var X=require("@atlas-viewer/dna");var St=require("@atlas-viewer/dna");var gi="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";var ht=(n=21)=>{let e="",t=crypto.getRandomValues(new Uint8Array(n));for(;n--;)e+=gi[t[n]&63];return e};var B=class{constructor(){o(this,"__id");o(this,"__revision",0);o(this,"__host");o(this,"__onCreate");o(this,"__parent");o(this,"__owner",{value:void 0});o(this,"__state",{});o(this,"eventHandlers");o(this,"scale",1);o(this,"layers",[]);o(this,"time",[]);o(this,"_crop");o(this,"cropData");o(this,"id");o(this,"addEventListener",(e,t,i)=>{let r=rt[e];if(!this.eventHandlers[r])throw new Error(`Unknown event ${r}`);this.eventHandlers[r].indexOf(t)===-1&&this.eventHandlers[r].push(t)});o(this,"removeEventListener",(e,t)=>{let i=rt[e];if(!this.eventHandlers[i]){console.warn(`Unknown event ${i}`);return}this.eventHandlers[i].indexOf(t)!==-1&&(this.eventHandlers[i]=this.eventHandlers[i].filter(r=>r!==t))});this.id=this.__id=ht(),this.eventHandlers=je()}get crop(){return this._crop}set crop(e){this._crop=e}getObjectsAt(e){return[]}getAllPointsAt(e,t,i){return[]}getScheduledUpdates(e,t){return[]}dispatchEvent(e,t){let i=this.eventHandlers[e],r=i?i.length:0,s=!1;if(r)for(let a=0;a<r;a++)try{i[a](t),s=!0}catch(h){console.error(e,h)}return s}get x(){return this.points[1]}get y(){return this.points[2]}get width(){return this.points[3]-this.points[1]}get height(){return this.points[4]-this.points[2]}translate(e,t){(0,St.mutate)(this.points,(0,St.translate)(e,t))}atScale(e){(0,St.mutate)(this.points,(0,St.scaleAtOrigin)(e,this.x,this.y)),this.scale*=e}transform(e){(0,St.mutate)(this.points,e)}applyProps(e){this.__revision++}appendChild(e){}removeChild(e){}insertBefore(e,t){}hideInstance(){}};var H=class n extends B{constructor(t){super();o(this,"type","spacial-content");o(this,"id");o(this,"uri");o(this,"display");o(this,"points");o(this,"priority");o(this,"style",{opacity:1});if(!t)this.id="",this.uri="",this.display={x:0,y:0,scale:1,width:0,height:0,points:(0,X.dna)(5)},this.points=(0,X.dna)(5);else{let i=t.scale||1;this.id=t.id||t.uri,this.uri=t.uri,this.points=X.DnaFactory.singleBox(t.width,t.height,t.x,t.y),this.display={x:0,y:0,scale:i,width:t.width/i,height:t.height/i,points:X.DnaFactory.singleBox(t.width/i,t.height/i),rotation:t?.rotation}}}applyProps(t){let i=t.display?t.display.width:t.target.width,r=t.target.width/i;if(this.id=t.id||t.uri,this.uri=t.uri,this.points.set(X.DnaFactory.singleBox(t.target.width,t.target.height,t.target.x,t.target.y)),t.style&&typeof t.style.opacity<"u"&&(this.style.opacity=t.style.opacity),t.crop){this.cropData=t.crop;let s=X.DnaFactory.singleBox(t.crop.width,t.crop.height,t.crop.x,t.crop.y);(0,X.mutate)(s,(0,X.translate)(-t.crop.x,-t.crop.y)),this.crop?this.crop.set(s):this.crop=(0,X.dna)(s)}t.display?(this.display.scale=r,this.display.width=t.display.width,this.display.height=t.display.height,this.display.rotation=t.display.rotation,this.display.points=X.DnaFactory.singleBox(t.display.width,t.display.height)):(this.display.scale=r,this.display.width=t.target.width/r,this.display.height=t.target.height/r,this.display.points=X.DnaFactory.singleBox(t.target.width/r,t.target.height/r))}getAllPointsAt(t,i,r){return[[this,this.crop||this.points,i]]}static fromSvg(t,i,r,s){return n.fromImage("data:image/svg+xml;base64,"+btoa(t),i,r,s)}static fromImage(t,i,r,s){let a=new n;return a.applyProps({uri:t,id:s,display:r,target:i}),a}getImageUrl(){return this.uri}};var Pt=require("@atlas-viewer/dna");var Et=class extends B{constructor(t){super();o(this,"type","spacial-content");o(this,"id");o(this,"uri");o(this,"display");o(this,"points");o(this,"getTexture");if(this.getTexture=()=>({source:void 0,hash:-1}),!t)this.id="",this.uri="",this.display={x:0,y:0,scale:1,width:0,height:0,points:(0,Pt.dna)(5)},this.points=(0,Pt.dna)(5);else{let i=t.scale||1;this.id=t.id||t.uri,this.uri=t.uri,this.points=Pt.DnaFactory.singleBox(t.width,t.height),this.display={x:0,y:0,scale:i,width:t.width/i,height:t.height/i,points:i!==1?Pt.DnaFactory.singleBox(t.width/i,t.height/i):this.points}}}applyProps(t){let i=t.display?t.display.width:t.target.width,r=t.target.width/i;this.id=t.id,this.points.set(Pt.DnaFactory.singleBox(t.target.width,t.target.height)),this.display.scale=r,this.display.width=t.target.width/r,this.display.height=t.target.height/r,this.getTexture=t.getTexture,this.display.points=r!==1?Pt.DnaFactory.singleBox(t.target.width/r,t.target.height/r):this.points}getAllPointsAt(t,i,r){return[[this,this.points,i]]}};var V=require("@atlas-viewer/dna");function pi(n,e,t=1){let i=e.length;if(i===0)throw new Error("No resources passed in.");let r=0;for(let s=0;s<i&&!(!e[s]||!e[s].display);s++)r=Math.abs(e[s].display.scale-n)*t<Math.abs(e[r].display.scale-n)?s:r;return r}function fi(n,e){return Math.abs(n-e)}function Mt(n,e){let t=fi(n.x,e.x),i=fi(n.y,e.y);return Math.sqrt(Math.pow(t,2)+Math.pow(i,2))}function yi(n){let e=n.length;return n.indexOf("/info.json")===e-10?n.slice(0,-10):n}function pe(n,e,t){return Math.min(Math.max(n,e),t)}var et=class n extends B{constructor(t){super();o(this,"id");o(this,"type","spacial-content");o(this,"display");o(this,"tileWidth");o(this,"style",{opacity:1});o(this,"points");o(this,"service");o(this,"format","jpg");o(this,"crop2");o(this,"tileUrl");this.tileUrl=yi(t.url),this.id=t.id||`${this.tileUrl}--${t.scaleFactor}`,this.points=t.displayPoints?t.displayPoints:(0,V.transform)(t.points,(0,V.scale)(t.scaleFactor)),this.tileWidth=t.tileWidth,this.display={x:0,y:0,width:t.width/t.scaleFactor,height:t.height/t.scaleFactor,points:t.points,scale:t.scaleFactor},t.format&&(this.format=t.format)}applyProps(t){if(t.style&&typeof t.style.opacity<"u"&&(this.style.opacity=t.style.opacity),t.service!==this.service&&(this.service=t.service),t.format?this.format=t.format:this.format="jpg",t.crop){this.cropData=t.crop;let i=(0,V.dna)([...this.points]),r=i.length/5,s=t.crop.x||0,a=t.crop.y||0,h=t.crop.x+t.crop.width,d=t.crop.y+t.crop.height;for(let u=0;u<r;u++){let l=u*5;i[l+1]<h&&i[l+3]>s&&i[l+2]<d&&i[l+4]>a?(i[l+1]=pe(i[l+1],s,h),i[l+3]=pe(i[l+3],s,h),i[l+2]=pe(i[l+2],a,d),i[l+4]=pe(i[l+4],a,d)):i[l]=0}(0,V.mutate)(i,(0,V.translate)(-t.crop.x,-t.crop.y)),this.crop?this.crop.set(i):this.crop=i}}static fromTile(t,i,r,s,a,h){r.height=r.height?r.height:r.width;let d=Math.ceil(i.width/s),u=Math.ceil(i.height/s),l=Math.ceil(d/r.width),c=Math.ceil(u/r.height),m=V.DnaFactory.grid(l,c),y=V.DnaFactory.grid(l,c);for(let S=0;S<c;S++)for(let P=0;P<l;P++){let g=P*r.width,f=S*r.height;y.addPoints(g*s,f*s,P===l-1?i.width:(g+r.width)*s,S===c-1?i.height:(f+r.height)*s),m.addPoints(g,f,P===l-1?d:g+r.width,S===c-1?u:f+r.height)}let b=new n({url:t,scaleFactor:s,points:m.build(),displayPoints:y.build(),width:i.width,height:i.height,tileWidth:r.width,format:h});return b.applyProps({service:a}),b}getImageUrl(t){let i=this.points.slice(t*5,t*5+5),r=i[3]-i[1],s=i[4]-i[2],a=Math.ceil(r/this.display.scale);return`${this.tileUrl}/${i[1]},${i[2]},${r},${s}/${a>this.tileWidth?this.tileWidth:a},/0/default.${this.format||"jpg"}`}getAllPointsAt(t,i,r){let s=(0,V.hidePointsOutsideRegion)(this.crop||this.points,t);return[[this,s,i]]}transform(t){(0,V.mutate)(this.points,t)}getScheduledUpdates(t,i){return[]}};var lt=require("@atlas-viewer/dna");var ye=class extends B{constructor(){super(...arguments);o(this,"type","spacial-content")}getAllPointsAt(t,i,r){return[[this,this.points,i]]}};var Kt=class extends ye{constructor(t){super();o(this,"id");o(this,"display");o(this,"points");o(this,"images",[]);o(this,"allImages",[]);o(this,"scaleFactors",[]);o(this,"aggregateBuffer",(0,lt.dna)(9));o(this,"lazyLoader");o(this,"isFullyLoaded",!1);o(this,"maxScaleFactor",0);o(this,"renderOptions");o(this,"_scheduleSortByScales",!1);o(this,"_sortByScales",()=>{this._scheduleSortByScales=!1,this.allImages.sort((i,r)=>r.display.width-i.display.width),this.images=[];let t=.1;for(let i of this.allImages){if(i.display.width<this.renderOptions.minSize&&i.display.height<this.renderOptions.minSize&&!i.priority||i instanceof H&&(i.display.width>this.renderOptions.maxImageSize||i.display.height>this.renderOptions.maxImageSize)&&!i.priority)continue;if(Math.abs(i.display.scale-t)<.25||i.priority){let s=this.images.pop();s&&(s instanceof H||s.priority)?(i.priority&&this.images.push(i),this.images.push(s)):i&&this.images.push(i)}else i&&this.images.push(i);t=i.display.scale}this.images.length===0&&(this.images=[...this.allImages]),this.scaleFactors=this.images.map(i=>i.display.scale),this.maxScaleFactor=Math.max(...this.scaleFactors)});o(this,"loadFullResource",async()=>{if(!this.isFullyLoaded&&this.lazyLoader){this.isFullyLoaded=!0;let t=await this.lazyLoader();this.addImages(t)}});o(this,"fallback",[this.loadFullResource]);this.id=t.id,this.points=lt.DnaFactory.singleBox(t.width,t.height),this.lazyLoader=t.loadFullImages,t.loadFullImages||(this.isFullyLoaded=!0),this.display={x:0,y:0,points:lt.DnaFactory.singleBox(t.width,t.height),height:t.height,width:t.width,scale:1},this.renderOptions={renderSmallestFallback:!0,renderLayers:2,minSize:255,maxImageSize:1024,quality:1.75,...t.renderOptions||{}},this.addImages(t.images)}applyProps(t){typeof t.renderSmallestFallback<"u"&&t.renderSmallestFallback!==this.renderOptions.renderSmallestFallback&&(this.renderOptions.renderSmallestFallback=t.renderSmallestFallback),typeof t.renderLayers<"u"&&t.renderLayers!==this.renderOptions.renderLayers&&(this.renderOptions.renderLayers=t.renderLayers),typeof t.minSize<"u"&&t.minSize!==this.renderOptions.minSize&&(this.renderOptions.minSize=t.minSize),typeof t.maxImageSize<"u"&&t.maxImageSize!==this.renderOptions.maxImageSize&&(this.renderOptions.maxImageSize=t.maxImageSize),typeof t.quality<"u"&&t.quality!==this.renderOptions.quality&&(this.renderOptions.quality=t.quality)}appendChild(t){this.addImages([t])}removeChild(t){this.images.indexOf(t)!==-1&&(this.images=this.images.filter(i=>i!==t),this.sortByScales())}insertBefore(t,i){this.addImages([t])}hideInstance(){}addImages(t){for(let i of t)i.__parent=this,i.__owner=this.__owner;this.allImages.push(...t.filter(Boolean)),this.sortByScales()}sortByScales(){this._scheduleSortByScales=!0}getScheduledUpdates(t,i){return this._scheduleSortByScales?[this._sortByScales]:this.isFullyLoaded?[]:i>1/this.maxScaleFactor?this.fallback:[]}getAllPointsAt(t,i,r){if(this.images.length===0)return[];let s=pi(1/(r||1)/(window.devicePixelRatio||1),this.images,this.renderOptions.quality),a=this.images.length,h=i?(0,lt.compose)(i,(0,lt.translate)(this.x,this.y)):(0,lt.translate)(this.x,this.y);if(s!==this.images.length-1&&this.images[s+1]){let d=[];for(let c=a-1;c>=s;c--)d.push(c);let u=d[0];this.renderOptions.renderLayers&&(d=d.slice(-Math.min(d.length,this.renderOptions.renderLayers))),this.renderOptions.renderSmallestFallback&&d.indexOf(u)===-1&&d.unshift(u);let l=[];for(let c=0;c<d.length;c++)l.push(...this.images[d[c]].getAllPointsAt(t,h,r));return l}return this.images[s].getAllPointsAt(t,h,r)}};var O=require("@atlas-viewer/dna");var R=require("@atlas-viewer/dna");function be(n,e,t,i,r){let s=Math.PI/180*r,a=Math.cos(s),h=Math.sin(s),d=a*(t-n)+h*(i-e)+n,u=a*(i-e)-h*(t-n)+e;return[d,u]}var dt=class n extends B{constructor(t,i){super();o(this,"id");o(this,"type","world-object");o(this,"scale");o(this,"layers");o(this,"points");o(this,"worldPoints");o(this,"intersectionBuffer",(0,R.dna)(5));o(this,"aggregateBuffer",(0,R.dna)(9));o(this,"invertedBuffer",(0,R.dna)(9));o(this,"rotation",0);o(this,"filteredPointsBuffer");o(this,"_updatedList",[]);o(this,"geometry");let{x:r=0,y:s=0}=i||{};t?(this.id=t.id||"",this.scale=1,this.layers=t.layers,this.points=(0,R.dna)([1,r,s,r+t.width,s+t.height]),this.worldPoints=(0,R.dna)([1,r,s,r+t.width,s+t.height]),this.filteredPointsBuffer=(0,R.dna)(t.layers.length*5)):(this.id="",this.scale=1,this.layers=[],this.points=(0,R.dna)(5),this.worldPoints=(0,R.dna)(5),this.filteredPointsBuffer=(0,R.dna)(5))}static createWithProps(t){let i=new n;return i.applyProps(t),i}applyProps(t){let i=t.x||0,r=t.y||0;this.id=t.id;let s=typeof t.scale<"u"?t.scale:this.scale;this.points[0]=1,this.points[1]=i,this.points[2]=r,this.points[3]=i+t.width,this.points[4]=r+t.height,this.rotation=t.rotation||0,this.worldPoints[3]=this.worldPoints[1]+t.width,this.worldPoints[4]=this.worldPoints[2]+t.height,t.scale&&t.scale!==1&&this.atScale(s),this.scale=s}appendChild(t){t.points[0]===0&&t.points.set(this.points),t.__owner.value=this,this.addLayers([t])}removeChild(t){this.layers=this.layers.filter(i=>i!==t),this.filteredPointsBuffer=(0,R.dna)(this.layers.length*5)}insertBefore(t,i){let r=this.layers.indexOf(i);if(r===-1||this.layers.indexOf(t)!==-1)return;let s=this.layers.slice(0,r),a=this.layers.slice(r);this.layers=[...s,t,...a]}hideInstance(){console.warn("hideInstance: not yet implemented")}getObjectsAt(t,i){if(this.rotation&&(t=this.applyRotation(t)),(0,R.hidePointsOutsideRegion)(this.points,t,this.filteredPointsBuffer)[0]===0)return[];let s=this.layers.length,a=[];for(let h=0;h<s;h++){let d=this.layers[h];if(i&&d.isShape){let l=(0,R.transform)(d.points,(0,R.translate)(this.x,this.y));if(!d.intersects([t[1]-l[1],t[2]-l[2]]))continue}if((0,R.hidePointsOutsideRegion)((0,R.transform)(d.points,(0,R.translate)(this.x,this.y)),t,this.filteredPointsBuffer)[0]!==0&&a.push(d),i){let l=d;a.push(...l.getObjectsAt(t,i))}}return a}applyRotation(t){if(this.rotation){let i={x:t[1],y:t[2]},r={x:t[1],y:t[4]},s={x:t[3],y:t[2]},a={x:t[3],y:t[4]},h=this.points[1]+(this.points[3]-this.points[1])/2,d=this.points[2]+(this.points[4]-this.points[2])/2,[u,l]=be(h,d,i.x,i.y,this.rotation),[c,m]=be(h,d,r.x,r.y,this.rotation),[y,b]=be(h,d,s.x,s.y,this.rotation),[S,P]=be(h,d,a.x,a.y,this.rotation),g=Math.min(u,c,y,S),f=Math.max(u,c,y,S),_=Math.min(l,m,b,P),A=Math.max(l,m,b,P);return(0,R.dna)([t[0],g,_,f,A])}return t}getAllPointsAt(t,i,r){let s=(0,R.compose)((0,R.translate)(this.x,this.y),(0,R.scale)(this.scale),this.aggregateBuffer);this.rotation&&(t=this.applyRotation(t));let a=(0,R.getIntersection)(t,this.points,this.intersectionBuffer),h=this.layers.length,d=[],u=(0,R.transform)(a,(0,R.compose)((0,R.scale)(1/this.scale),(0,R.translate)(-this.x,-this.y),this.invertedBuffer)),l=i?(0,R.compose)(i,s,this.aggregateBuffer):s,c=r*this.scale;for(let m=0;m<h;m++)d.push(...this.layers[m].getAllPointsAt(u,l,c));return d}addLayers(t){let i=[];for(let r of t)this.layers.indexOf(r)===-1&&(i.push(r),r.points.length===5&&(r.points[1]<this.worldPoints[1]/this.scale||r.points[2]<this.worldPoints[2]/this.scale||r.points[3]>this.worldPoints[3]/this.scale||r.points[4]>this.worldPoints[4]/this.scale)&&(r.crop=r.crop||(0,R.dna)([1,Math.max(this.worldPoints[1]/this.scale,r.points[1]),Math.max(this.worldPoints[2]/this.scale,r.points[2]),Math.min(this.worldPoints[3]/this.scale,r.points[3]),Math.min(this.worldPoints[4]/this.scale,r.points[4])])));this.layers=this.layers.concat(i),this.filteredPointsBuffer=(0,R.dna)(this.layers.length*5)}getScheduledUpdates(t,i){let r=this.layers.length;this._updatedList=[];let s=i*this.scale;for(let a=0;a<r;a++){let h=this.layers[a].getScheduledUpdates(t,s);h&&this._updatedList.push(...h)}return this._updatedList}};var it=class n extends B{constructor(t=0,i=0,r=100,s="left-to-right"){super();o(this,"id","world");o(this,"_width");o(this,"_height");o(this,"aspectRatio");o(this,"viewingDirection");o(this,"aggregateBuffer",(0,O.dna)(9));o(this,"isDirty",!1);o(this,"zones",[]);o(this,"filteredPointsBuffer");o(this,"selectedZone");o(this,"triggerQueue",[]);o(this,"activatedEvents",[]);o(this,"_updatedList",[]);o(this,"translationBuffer",(0,O.dna)(9));o(this,"needsRecalculate",!0);o(this,"emptyPaintables",[]);o(this,"renderOrder",[]);o(this,"points");o(this,"objects",[]);o(this,"subscriptions",[]);o(this,"_propagateEventTargets",[]);o(this,"_alreadyFlushed",[]);this._width=t,this._height=i,this.aspectRatio=Number.isNaN(t/i)?1:t/i,this.viewingDirection=s,this.points=(0,O.dna)(r*5),this.filteredPointsBuffer=(0,O.dna)(r*5)}get x(){return 0}get y(){return 0}get width(){return this._width}get height(){return this._height}static withProps(t){let i=new n;return i.applyProps(t),i}applyProps(t){typeof t.width<"u"&&typeof t.height<"u"&&(t.width!==this._width||t.height!==this._height)&&this.resize(t.width,t.height),t.viewingDirection!==this.viewingDirection&&(this.viewingDirection=t.viewingDirection,this.triggerRepaint())}propagateTouchEvent(t,i,r){let s=[];for(let a of r)if(a.x&&a.y){let h=O.DnaFactory.singleBox(1,1,a.x,a.y);s.push(this.getObjectsAt(h,!0).reverse())}return s.map(a=>this.propagateEvent(t,i,a,{bubbles:!0,cancelable:!0}))}propagatePointerEvent(t,i,r,s,a={}){let h=O.DnaFactory.singleBox(1,1,r,s),d=this.getObjectsAt(h,!0).reverse();return this.propagateEvent(t,i,d,a)}propagateEvent(t,i,r,{bubbles:s=!1,cancelable:a=!1}={}){i.atlasTarget=this,this._propagateEventTargets.length=1,this._propagateEventTargets[0]=this;let h=!1;i.stopPropagation=()=>{h=!0};let d=r.length;for(let c=d-1;c>=0;c--){this._propagateEventTargets.unshift(r[c][0]);let m=r[c][1].length;if(m)for(let y=0;y<m;y++)this._propagateEventTargets.unshift(r[c][1][y])}let u=this._propagateEventTargets.length,l=!1;for(let c=0;c<u&&(i.atlasTarget=this._propagateEventTargets[c],i.atlasWorld=this,l=this._propagateEventTargets[c].dispatchEvent(t,i)||l,!h);c++);return l&&this.triggerRepaint(),this._propagateEventTargets}appendChild(t){let i=this.appendWorldObject(t);this.renderOrder.push(i/5)}removeChild(t){let i=this.objects.indexOf(t);if(i===-1){for(let r of this.objects)if(r&&r.id===t.id){this.removeChild(r);return}return}this.objects[i]=null,this.renderOrder=this.renderOrder.filter(r=>r!==i),this.points[i*5]=0,this.triggerRepaint(),this.needsRecalculate=!0}insertBefore(t,i){let r=this.objects.indexOf(i);if(r===-1)return;let s=this.appendWorldObject(t);this.renderOrder.splice(r-1,0,s/5)}hideInstance(){}asWorldObject(){return null}addZone(t){this.zones.push(t)}selectZone(t){if(typeof t=="string"){let i=this.zones.length;for(let r=0;r<i;r++)if(this.zones[r].id===t){this.selectedZone=r,this.trigger("zone-changed");return}}else this.zones[t]&&(this.selectedZone=t,this.trigger("zone-changed"))}deselectZone(){this.selectedZone=void 0}getActiveZone(){if(this.selectedZone)return this.zones[this.selectedZone]}hasActiveZone(){return typeof this.selectedZone<"u"}checkResizeInternalBuffer(){if((0,O.dnaLength)(this.points)===this.objects.length){let t=this.points,i=(0,O.dna)(this.points.length*2);i.set(t,0),this.points=i}}appendWorldObject(t){this.checkResizeInternalBuffer();let i=this.objects.length*5,r=t.points;return t.points=this.points.subarray(this.objects.length*5,this.objects.length*5+5),t.points[1]=r[1],t.points[2]=r[2],t.points[3]=r[3],t.points[4]=r[4],this.objects.push(t),this.filteredPointsBuffer=(0,O.dna)(this.objects.length*5),this.needsRecalculate=!0,this.triggerRepaint(),i}recalculateWorldSize(){let t=!1;if(this.needsRecalculate){let i=new Int32Array(this.objects.length),r=new Int32Array(this.objects.length),s=this.renderOrder.length;for(let d=0;d<s;d++){let u=this.renderOrder[d];this.objects[u]&&(i[d]=this.points[u*5+3],r[d]=this.points[u*5+4])}let a=Math.max(...i);a!==this._width&&(this._width=a,t=!0);let h=Math.max(...r);h!==this._height&&(this._height=h,t=!0),t&&this.trigger("recalculate-world-size",{width:a,height:h}),this.needsRecalculate=!1}return t}addObjectAt(t,i){i.width&&!i.height?i.height=i.width/t.width*t.height:i.height&&!i.width&&(i.width=i.height/t.height*t.width),(!i||!i.width||!i.height)&&(i.width=t.width,i.height=t.height);let{width:r,x:s,y:a}=i,h=r/t.width;this.checkResizeInternalBuffer(),this.points.set(O.DnaFactory.singleBox(t.width,t.height,0,0),this.objects.length*5);let d=new dt(t);return d.points=this.points.subarray(this.objects.length*5,this.objects.length*5+5),this.objects.push(d),this.scaleWorldObject(this.objects.length-1,h),this.translateWorldObject(this.objects.length-1,s,a),this.filteredPointsBuffer=(0,O.dna)(this.points.length*2),this.triggerRepaint(),this.needsRecalculate=!0,d}scaleWorldObject(t,i){(0,O.mutate)(this.points.subarray(t*5,t*5+5),(0,O.scaleAtOrigin)(i,this.points[t*5+1],this.points[t*5+2]));let r=this.objects[t];r&&(r.atScale(i),this.triggerRepaint())}translateWorldObject(t,i,r){(0,O.mutate)(this.points.subarray(t*5,t*5+5),(0,O.translate)(i,r));let s=this.objects[t];s&&(s.translate(i,r),this.triggerRepaint())}resize(t,i){return this._width=t,this._height=i,this.aspectRatio=t/i,this.triggerRepaint(),this}getObjects(){return this.objects}getPoints(){return this.points}getPointsFromViewer(t,i){let r=O.DnaFactory.singleBox(t.width,t.height,t.x,t.y);return this.getPointsAt(r,i,t.scale)}addLayoutSubscriber(t){return this.subscriptions.push(t),()=>{this.subscriptions.splice(this.subscriptions.indexOf(t),1)}}getScheduledUpdates(t,i){let r=(0,O.hidePointsOutsideRegion)(this.points,t,this.filteredPointsBuffer),s=this.objects.length;this._updatedList=[];for(let a=0;a<s;a++)if(r[a*5]!==0){if(!this.objects[a])continue;this._updatedList.push(...this.objects[a].getScheduledUpdates(t,i))}return this._updatedList}getObjectsAt(t,i=!1){let r=this.getActiveZone(),s=(0,O.hidePointsOutsideRegion)(this.points,t,this.filteredPointsBuffer),a=this.renderOrder.length,h=[];for(let d=0;d<a;d++){let u=this.renderOrder[d];if(s[u*5]!==0){let l=this.objects[u];if(!l||r&&r.objects.indexOf(l)===-1)continue;if(l.type!=="world-object"){h.push([l,[l]]);continue}i?h.push([l,l.getObjectsAt(t,i)]):h.push([l,this.emptyPaintables])}}return h}getPointsAt(t,i,r=1){let s=this.getObjectsAt(t),a=(0,O.compose)((0,O.scale)(r),(0,O.translate)(-t[1],-t[2]),this.translationBuffer),h=i?(0,O.compose)(i,a,this.aggregateBuffer):a,d=s.length,u=[];for(let l=0;l<d;l++)s[l]&&u.push(...s[l][0].getAllPointsAt(t,h,r));return u}flushSubscriptions(){if(this.triggerQueue.length){this._alreadyFlushed=[];let t=this.triggerQueue.length;for(let i=0;i<t;i++){if(this._alreadyFlushed.indexOf(this.triggerQueue[i][0])!==-1)continue;typeof this.triggerQueue[i][1]>"u"&&this._alreadyFlushed.push(this.triggerQueue[i][0]);let r=this.subscriptions.length;for(let s=0;s<r;s++)this.subscriptions[s].apply(null,this.triggerQueue[i])}this.triggerQueue=[]}}trigger(t,i){this.triggerQueue.push([t,i])}triggerEventActivation(){this.trigger("event-activation")}triggerRepaint(){this.trigger("repaint")}gotoRegion(t){this.trigger("goto-region",t)}goHome(t=!1){this.trigger("go-home",{immediate:t})}zoomTo(t,i,r){this.trigger("zoom-to",{point:i,factor:t,stream:r})}zoomIn(t){this.trigger("zoom-to",{point:t,factor:.5})}zoomOut(t){this.trigger("zoom-to",{point:t,factor:2})}constraintBounds(t){this.trigger("constrain-bounds",{immediate:t})}};function wn(n){let{src:e,target:t}=n,i=t?t.width:n.width,r=t?t.height:n.height;return new dt({id:e,height:r,width:i,layers:[H.fromImage(e,{height:r,width:i},{width:n.width,height:n.height})]})}var bi=require("@atlas-viewer/dna");var xn={margin:0},Ue=class{constructor(e,t={}){o(this,"id");o(this,"config");o(this,"points");o(this,"objects");this.id=e.map(i=>i.id).join("$$"),this.config={...xn,...t},this.points=(0,bi.dna)(5),this.objects=e,this.recalculateBounds()}recalculateBounds(){this.points.set([1,Math.min(...this.objects.map(e=>e.points[1]))-this.config.margin,Math.min(...this.objects.map(e=>e.points[2]))-this.config.margin,Math.max(...this.objects.map(e=>e.points[3]))+this.config.margin,Math.max(...this.objects.map(e=>e.points[4]))+this.config.margin])}getPointsAt(e,t,i){return[]}};var jt=require("@atlas-viewer/dna");var ve=/([0-9]+(px|em)\s+)+(solid)\s+(.*)/g,we={},Sn=["backgroundColor","opacity","boxShadow","borderColor","borderWidth","borderStyle","outlineColor","outlineWidth","outlineOffset","outlineStyle"],st=class extends B{constructor(){super();o(this,"id");o(this,"type","spacial-content");o(this,"points");o(this,"hoverEvents",!1);o(this,"activeEvents",!1);o(this,"display",{x:0,y:0,scale:1,width:-1,height:-1,points:(0,jt.dna)(5)});o(this,"_parsed",{border:{id:null,match:[]},outline:{id:null,match:[]}});o(this,"hovering");o(this,"pressing");o(this,"props",{});o(this,"addHover",()=>{this.hovering=!0,this.__revision++});o(this,"removeHover",()=>{this.hovering=!1,this.pressing=!1,this.__revision++});o(this,"addPress",()=>{this.pressing=!0,this.__revision++});o(this,"removePress",()=>{this.pressing=!1,this.__revision++});this.id=ht(12),this.points=(0,jt.dna)(5)}getAllPointsAt(t,i){return[[this,this.points,i]]}applyProps(t={}){let i=!1;if(t.interactive!==this.props.interactive&&(i=!0,this.props.interactive=t.interactive),t.style){let r=t.border||t.style.border;if(r!==this._parsed.border.id)if(!r)this._parsed.border.id=null,this._parsed.border.match=[];else{let s=we[r]||ve.exec(r)||ve.exec(r);s&&(this._parsed.border.id=r,this._parsed.border.match=we[r]=s)}if(this._parsed.border.id&&(t.style.borderWidth=this._parsed.border.match[1],t.style.borderStyle="solid",t.style.borderColor=this._parsed.border.match[4]),t.style.outline!==this._parsed.outline.id)if(!t.style.outline)this._parsed.outline.id=null,this._parsed.outline.match=[];else{let s=we[t.style.outline]||ve.exec(t.style.outline)||ve.exec(t.style.outline);s&&(this._parsed.outline.id=t.style.outline,this._parsed.outline.match=we[t.style.outline]=s)}this._parsed.outline.id&&(t.style.outlineWidth=this._parsed.outline.match[1],t.style.outlineStyle="solid",t.style.outlineColor=this._parsed.outline.match[4]),this.props.style=t.style,t.backgroundColor&&!this.props.style.backgroundColor&&(this.props.style.backgroundColor=t.backgroundColor,i=!0),t.style.background&&!this.props.style.backgroundColor&&(this.props.style.backgroundColor=t.style.background,i=!0);for(let s of Sn)if(this.props.style[s]!==t.style[s]){i=!0;break}t.style[":hover"]!==this.props.hoverStyles&&(this.props.hoverStyles=t.style[":hover"],this.hoverEvents||(this.hoverEvents=!0,this.addEventListener("pointerenter",this.addHover),this.addEventListener("pointerleave",this.removeHover)),i=!0),t.style[":active"]!==this.props.pressStyles&&(this.props.pressStyles=t.style[":active"],this.activeEvents||(this.activeEvents=!0,this.addEventListener("mousedown",this.addPress),this.addEventListener("mouseup",this.removePress)),i=!0)}t.href!==this.props.href&&(this.props.href=t.href,i=!0),t.hrefTarget!==this.props.hrefTarget&&(this.props.hrefTarget=t.hrefTarget,i=!0),t.title!==this.props.title&&(this.props.title=t.title,i=!0),t.className!==this.props.className&&(this.props.className=t.className,t.className&&!this.hoverEvents&&(this.hoverEvents=!0,this.addEventListener("pointerenter",this.addHover),this.addEventListener("pointerleave",this.removeHover)),t.className&&!this.activeEvents&&(this.activeEvents=!0,this.addEventListener("mousedown",this.addPress),this.addEventListener("mouseup",this.removePress)),i=!0),t.relativeSize!==this.props.relativeSize&&(this.props.relativeSize=t.relativeSize,i=!0),t.relativeStyle!==this.props.relativeStyle&&(this.props.relativeStyle=t.relativeStyle,i=!0),t.html!==this.props.html&&(this.props.html=t.html,i=!0),t.target&&(t.target.width!==this.display.width||t.target.height!==this.display.height||t.target.x!==this.points[1]||t.target.y!==this.points[2])&&(i=!0,this.points=jt.DnaFactory.singleBox(t.target.width,t.target.height,t.target.x,t.target.y),this.display.points=jt.DnaFactory.singleBox(t.target.width,t.target.height,t.target.x,t.target.y),this.display.width=t.target.width,this.display.height=t.target.height),i&&this.__revision++}};var qt=require("@atlas-viewer/dna");var vt=class extends B{constructor(){super();o(this,"type","spacial-content");o(this,"id");o(this,"points");o(this,"color","#000");o(this,"backgroundColor");o(this,"hovering");o(this,"pressing");o(this,"text","");o(this,"display",{x:0,y:0,scale:1,width:100,height:100,points:(0,qt.dna)(5)});o(this,"className");o(this,"html");o(this,"interactive",!1);o(this,"props",{font:"18px Arial, sans-serif",lineHeight:1,textAlign:"left",verticalAlign:"top",paddingX:0,paddingY:0,fitParent:!1,lineBreak:"auto",strokeText:!1,sizeToFill:!1,maxFontSizeToFill:void 0,allowNewLine:!0,justifyLines:!1,renderHDPI:!1,textDecoration:"none",interactive:!1,relativeSize:!1});this.id="",this.points=(0,qt.dna)(5)}getAllPointsAt(t,i){return[[this,this.points,i]]}applyProps({id:t,target:i,text:r,color:s,backgroundColor:a,fontSize:h=18,interactive:d,fontFamily:u="Arial, sans-serif",...l}){l.font=`${h}px ${u}`,this.interactive=d||!1,typeof r<"u"&&(this.text=r||""),s&&(this.color=s),a&&(this.backgroundColor=a),t&&(this.id=t),i&&(this.points=qt.DnaFactory.singleBox(i.width,i.height,i.x,i.y),this.display.points=this.points,this.display.width=i.width,this.display.height=i.height),this.props={...this.props,...l},this.__revision++}};var I=require("@atlas-viewer/dna");var Ct=require("@atlas-viewer/dna");var D=Math.pow,xe=Math.sqrt,Jt=Math.sin,vi=Math.cos,ee=Math.PI,Pe=1.70158,Se=Pe*1.525,wi=Pe+1,xi=2*ee/3,Si=2*ee/4.5,te=function(n){return n<1/2.75?7.5625*n*n:n<2/2.75?7.5625*(n-=1.5/2.75)*n+.75:n<2.5/2.75?7.5625*(n-=2.25/2.75)*n+.9375:7.5625*(n-=2.625/2.75)*n+.984375},ot={linear:n=>n,easeInQuad:function(n){return n*n},easeOutQuad:function(n){return 1-(1-n)*(1-n)},easeInOutQuad:function(n){return n<.5?2*n*n:1-D(-2*n+2,2)/2},easeInCubic:function(n){return n*n*n},easeOutCubic:function(n){return 1-D(1-n,3)},easeInOutCubic:function(n){return n<.5?4*n*n*n:1-D(-2*n+2,3)/2},easeInQuart:function(n){return n*n*n*n},easeOutQuart:function(n){return 1-D(1-n,4)},easeInOutQuart:function(n){return n<.5?8*n*n*n*n:1-D(-2*n+2,4)/2},easeInQuint:function(n){return n*n*n*n*n},easeOutQuint:function(n){return 1-D(1-n,5)},easeInOutQuint:function(n){return n<.5?16*n*n*n*n*n:1-D(-2*n+2,5)/2},easeInSine:function(n){return 1-vi(n*ee/2)},easeOutSine:function(n){return Jt(n*ee/2)},easeInOutSine:function(n){return-(vi(ee*n)-1)/2},easeInExpo:function(n){return n===0?0:D(2,10*n-10)},easeOutExpo:function(n){return n===1?1:1-D(2,-10*n)},easeInOutExpo:function(n){return n===0?0:n===1?1:n<.5?D(2,20*n-10)/2:(2-D(2,-20*n+10))/2},easeInCirc:function(n){return 1-xe(1-D(n,2))},easeOutCirc:function(n){return xe(1-D(n-1,2))},easeInOutCirc:function(n){return n<.5?(1-xe(1-D(2*n,2)))/2:(xe(1-D(-2*n+2,2))+1)/2},easeInBack:function(n){return wi*n*n*n-Pe*n*n},easeOutBack:function(n){return 1+wi*D(n-1,3)+Pe*D(n-1,2)},easeInOutBack:function(n){return n<.5?D(2*n,2)*((Se+1)*2*n-Se)/2:(D(2*n-2,2)*((Se+1)*(n*2-2)+Se)+2)/2},easeInElastic:function(n){return n===0?0:n===1?1:-D(2,10*n-10)*Jt((n*10-10.75)*xi)},easeOutElastic:function(n){return n===0?0:n===1?1:D(2,-10*n)*Jt((n*10-.75)*xi)+1},easeInOutElastic:function(n){return n===0?0:n===1?1:n<.5?-(D(2,20*n-10)*Jt((20*n-11.125)*Si))/2:D(2,-20*n+10)*Jt((20*n-11.125)*Si)/2+1},easeInBounce:function(n){return 1-te(1-n)},easeOutBounce:te,easeInOutBounce:function(n){return n<.5?(1-te(1-2*n))/2:(1+te(2*n-1))/2}};var Ee=class{constructor(e){o(this,"runtime");o(this,"pendingTransition");this.runtime=e,this.pendingTransition={from:(0,Ct.dna)(5),to:(0,Ct.dna)(5),elapsed_time:0,done:!0,total_time:0,timingFunction:ot.easeInOutQuad,constrain:!1}}hasPending(){return!this.pendingTransition.done}getPendingTransition(){return this.pendingTransition}getPendingFrom(){return this.pendingTransition.from}customTransition(e){e(this.pendingTransition)}stopTransition(){this.pendingTransition.from=(0,Ct.dna)(this.runtime.target),this.pendingTransition.to=(0,Ct.dna)(this.runtime.target),this.pendingTransition.done=!0,this.pendingTransition.elapsed_time=0,this.pendingTransition.total_time=0}runTransition(e,t){if(!this.pendingTransition.done){let i=this.pendingTransition,r=i.total_time===0?0:(i.elapsed_time+t)/i.total_time,s=i.total_time===0?1:r===0?0:i.timingFunction(r);e[1]=i.from[1]+(i.to[1]-i.from[1])*s,e[2]=i.from[2]+(i.to[2]-i.from[2])*s,e[3]=i.from[3]+(i.to[3]-i.from[3])*s,e[4]=i.from[4]+(i.to[4]-i.from[4])*s,this.pendingTransition.elapsed_time+=t,this.pendingTransition.elapsed_time>=this.pendingTransition.total_time&&(this.pendingTransition.done=!0,this.pendingTransition.constrain&&this.constrainBounds({transition:{duration:this.pendingTransition.total_time===0?0:500,easing:ot.easeOutExpo}}))}}zoomTo(e,{origin:t,stream:i=!1,transition:r}={}){let s=this.runtime.getZoomedPosition(e,{origin:t}),a=Math.abs(1-e);this.applyTransition(s,r,{duration:2e3*a,easing:ot.easeOutExpo,constrain:!0},{stream:!1})}constrainBounds({transition:e,panPadding:t=0}={}){let[i,r]=this.runtime.constrainBounds(this.runtime.target,{panPadding:t});i&&(this.applyTransition(r,e,{duration:500,easing:ot.easeOutQuart,constrain:!1}),this.runtime.updateNextFrame())}applyTransition(e,t,i,{stream:r}={}){this.pendingTransition.from=(0,Ct.dna)(this.runtime.target),this.pendingTransition.to=e,r||(this.pendingTransition.elapsed_time=0),this.pendingTransition.done=!1,this.pendingTransition.total_time=typeof t?.duration<"u"?t.duration:typeof i?.duration<"u"?i.duration:1e3,this.pendingTransition.constrain=typeof t?.constrain<"u"?t.constrain:typeof i?.constrain<"u"?i.constrain:!1,this.pendingTransition.timingFunction=t?.easing||i?.easing||ot.easeInOutSine}goToRegion(e,{transition:t}={}){let i=this.runtime.clampRegion(e);this.applyTransition(Ct.DnaFactory.singleBox(i.width,i.height,i.x,i.y),t,{duration:1e3,easing:ot.easeOutExpo,constrain:!0}),this.runtime.updateNextFrame()}};var fs=Number.MIN_VALUE+1,ct=class{constructor(e,t,i,r=[],s){o(this,"id",ht());o(this,"ready",!1);o(this,"renderer");o(this,"world");o(this,"target");o(this,"homePosition");o(this,"manualHomePosition");o(this,"manualFocalPosition");o(this,"focalPosition");o(this,"transitionManager");o(this,"aggregate");o(this,"transformBuffer",(0,I.dna)(500));o(this,"lastTarget",(0,I.dna)(5));o(this,"zoomBuffer",(0,I.dna)(5));o(this,"logNextRender",!1);o(this,"pendingUpdate",!0);o(this,"isCommitting",!1);o(this,"firstRender",!0);o(this,"lastTime");o(this,"stopId");o(this,"mode","explore");o(this,"controllers",[]);o(this,"controllersRunning",!1);o(this,"controllerStopFunctions",[]);o(this,"maxScaleFactor",1);o(this,"_viewerToWorld",{x:0,y:0});o(this,"_lastGoodScale",1);o(this,"hooks",{useFrame:[],useBeforeFrame:[],useAfterPaint:[],useAfterFrame:[]});o(this,"fpsLimit");o(this,"options");o(this,"hookOptions",{filters:{grayscale:0,contrast:0,brightness:0,saturate:0,sepia:0,invert:0,hueRotate:0,blur:0}});o(this,"_viewport",{x:0,y:0,width:0,height:0});o(this,"setViewport",e=>{let t=Math.round(typeof e.x>"u"?this.target[1]:e.x),i=Math.round(typeof e.y>"u"?this.target[2]:e.y);e.width?this.target[3]=t+e.width:this.target[3]=this.target[3]-this.target[1]+t,e.height?this.target[4]=i+e.height:this.target[4]=this.target[4]-this.target[2]+i,Math.abs(this.target[1]-t)>.01&&(this.target[1]=t),Math.abs(this.target[2]-i)>.01&&(this.target[2]=i),this.pendingUpdate=!0});o(this,"render",e=>{let t=e-this.lastTime;if(this.isCommitting||this.fpsLimit&&t<1e3/this.fpsLimit){this.stopId=window.requestAnimationFrame(this.render);return}this.lastTime=e,this.world.flushSubscriptions(),this.stopId=window.requestAnimationFrame(this.render),this.hook("useFrame",t);let i=this.pendingUpdate,r=this.renderer.pendingUpdate();if(this.transitionManager.hasPending()&&(this.transitionManager.runTransition(this.target,t),this.pendingUpdate=!0,this.updateControllerPosition()),!this.firstRender&&!i&&!r&&this.target[0]===this.lastTarget[0]&&this.target[1]===this.lastTarget[1]&&this.target[2]===this.lastTarget[2]&&this.target[3]===this.lastTarget[3]&&this.target[4]===this.lastTarget[4])return;this.hook("useBeforeFrame",t),this.renderer.beforeFrame(this.world,t,this.target,this.hookOptions);let s=this.getScaleFactor(),a=this.renderer.getPointsAt(this.world,this.target,this.aggregate,s),h=a.length;for(let l=0;l<h;l++){let c=a[l][0],m=a[l][1],y=a[l][2],b=y?(0,I.transform)(m,y,this.transformBuffer):m;this.renderer.prepareLayer(c,c.__parent&&y?(0,I.transform)(c.__parent.crop||c.__parent.points,y):b);let S=b.length/5;for(let P=0;P<S;P++){let g=P*5;b[g]!==0&&(this.renderer.paint(c,P,b[g+1],b[g+2],b[g+3]-b[g+1],b[g+4]-b[g+2]),this.hook("useAfterPaint",c))}this.renderer.finishLayer(c,m)}this.renderer.afterFrame(this.world,t,this.target,this.hookOptions),this.hook("useAfterFrame",t),this.lastTarget[0]=this.target[0],this.lastTarget[1]=this.target[1],this.lastTarget[2]=this.target[2],this.lastTarget[3]=this.target[3],this.lastTarget[4]=this.target[4],this.firstRender=!1,this.pendingUpdate=!1,this.logNextRender=!1,this.renderer.isReady()&&(this.ready=!0,this.world.trigger("ready")),this.world.flushSubscriptions();let d=this.world.getScheduledUpdates(this.target,s),u=d.length;if(u>0)for(let l=0;l<u;l++){let c=d[u-l-1]();c?c.then(()=>{this.pendingUpdate=!0}):this.pendingUpdate=!0}});this.renderer=e,this.world=t,this.options={maxOverZoom:1,maxUnderZoom:1,visibilityRatio:1.5,...s||{}},this.target=I.DnaFactory.projection(i),this.manualHomePosition=!1,this.pendingUpdate=!0,this.homePosition=I.DnaFactory.projection(this.world),this.manualFocalPosition=!1,this.focalPosition=this.target,this.updateFocalPosition(),this.transitionManager=new Ee(this),this.aggregate=(0,I.scale)(1),this.world.addLayoutSubscriber(a=>{a==="repaint"&&(this.pendingUpdate=!0),a==="recalculate-world-size"&&(this.manualHomePosition||(this.setHomePosition(),this.goHome()),this.updateFocalPosition())}),this.lastTime=performance.now(),this.controllers=r,this.render(this.lastTime),this.startControllers()}get x(){return this.target[1]}set x(e){this.target[1]=e}get y(){return this.target[2]}set y(e){this.target[2]=e}get x2(){return this.target[3]}set x2(e){this.target[3]=e}get y2(){return this.target[4]}set y2(e){this.target[4]=e}get width(){return this.target[3]-this.target[1]}set width(e){this.target[3]=this.target[1]+e}get height(){return this.target[4]-this.target[2]}set height(e){this.target[4]=this.target[2]=e}setHomePosition(e){this.homePosition.set(I.DnaFactory.projection(e||this.world)),this.pendingUpdate=!0}startControllers(){if(!this.controllersRunning){for(let e of this.controllers)this.controllerStopFunctions.push(e.start(this));this.controllersRunning=!0}}stopControllers(){if(this.controllersRunning){for(let e of this.controllerStopFunctions)e();this.controllersRunning=!1,this.controllerStopFunctions=[]}}updateControllerPosition(){for(let e of this.controllers)e.updatePosition(this.x,this.y,this.width,this.height)}triggerResize(){this.renderer.triggerResize&&this.renderer.triggerResize(),this.pendingUpdate=!0}addController(e){this.controllers.push(e),this.controllersRunning&&e.start(this),this.pendingUpdate=!0}cover(){return this.goHome({cover:!0})}getRendererScreenPosition(){return this.renderer.getRendererScreenPosition()}updateRendererScreenPosition(){this.pendingUpdate=!0,this.renderer.resize()}setOptions(e){this.options={...this.options,...e}}goHome(e={}){if(this.world.width<=0||this.world.height<=0)return;let t=this.getScaleFactor(),i=e.position?{x:e.position[1],y:e.position[2],width:e.position[3]-e.position[1],height:e.position[4]-e.position[2]}:{x:this.homePosition[1],y:this.homePosition[2],width:this.homePosition[3]-this.homePosition[1],height:this.homePosition[4]-this.homePosition[2]},r=this.width*t,s=this.height*t,a=i.width/r,h=i.height/s,d=r/s;if(e.cover?a>h:a<h){let u=d*i.height,l=(u-i.width)/2;this.target[1]=Math.round(-l+i.x),this.target[2]=Math.round(i.y),this.target[3]=Math.round(u-l+i.x),this.target[4]=Math.round(i.height+i.y)}else{let u=i.width/d,l=(u-i.height)/2;this.target[1]=Math.round(i.x),this.target[2]=Math.round(i.y-l),this.target[3]=Math.round(i.x+i.width),this.target[4]=Math.round(i.y+u-l)}this.constrainBounds(this.target),this.updateControllerPosition()}resize(e,t,i,r){this.updateFocalPosition(e-t,i-r);let s=t/e,a=r/i;this.target[3]=this.target[1]+(this.target[3]-this.target[1])*s,this.target[4]=this.target[2]+(this.target[4]-this.target[2])*a,this.goHome({position:this.focalPosition}),this.renderer.resize(t,r),this.pendingUpdate=!0}updateFocalPosition(e,t){if(!this.manualFocalPosition){let i=this.width,r=this.height,s=Math.min(i,r),a=0,h=0,d=this.x+a,u=this.y+h;if(i<r){let l=this.height-this.width;this.focalPosition=I.DnaFactory.projection({x:d,y:u+l/2,width:s-a*2,height:s-h*2}),this.pendingUpdate=!0}else{let l=this.width-this.height;this.focalPosition=I.DnaFactory.projection({x:d+l/2,y:u,width:s-a*2,height:s-h*2}),this.pendingUpdate=!0}}}getViewport(){return this._viewport.x=this.target[1],this._viewport.y=this.target[2],this._viewport.width=this.target[3]-this.target[1],this._viewport.height=this.target[4]-this.target[2],this._viewport}constrainBounds(e,{panPadding:t=0,ref:i=!1}={}){let{minX:r,maxX:s,minY:a,maxY:h}=this.getBounds({target:e,padding:t}),d=!1,u=i?e:(0,I.dna)(e),l=Math.round(e[3]-e[1]),c=Math.round(e[4]-e[2]);return r>e[1]&&(d=!0,u[1]=r,u[3]=r+l),a>e[2]&&(d=!0,u[2]=a,u[4]=a+c),s<e[1]&&(d=!0,u[1]=s,u[3]=s+l),h<e[2]&&(d=!0,u[2]=h,u[4]=h+c),[d,u]}getBounds(e){let t=e.target||this.target,i=e.padding,r=this.options.visibilityRatio,s=Math.abs(1-r);if(this.world.hasActiveZone()){let f=this.world.getActiveZone();if(f){let _=t[3]-t[1]<f.points[3]-f.points[1],A=t[4]-t[2]<f.points[4]-f.points[2];return{minX:_?f.points[1]-i:f.points[1]+(f.points[3]-f.points[1])/2-(t[3]-t[1])/2,maxX:A?f.points[2]-i:f.points[2]+(f.points[4]-f.points[2])/2-(t[4]-t[2])/2,minY:_?f.points[3]+i:f.points[1]+(f.points[3]-f.points[1])/2-(t[3]-t[1])/2,maxY:A?f.points[4]+i:f.points[2]+(f.points[4]-f.points[2])/2-(t[4]-t[2])/2}}}let a=t[3]-t[1],h=this.world.width,d=-a*s,u=h-a-d,l=t[4]-t[2],c=this.world.height,m=-l*s,y=c-l-m,b=Math.round(Math.max(d,u)),S=Math.round(Math.min(d,u)),P=Math.round(Math.max(m,y)),g=Math.round(Math.min(m,y));return{minX:S,maxX:b,minY:g,maxY:P}}getScaleFactor(e=!1){let t=this.renderer.getScale(this.target[3]-this.target[1],this.target[4]-this.target[2],e);return t===0?this._lastGoodScale:(this._lastGoodScale=t,t)}getZoomedPosition(e,{origin:t,fromPos:i}){let r=i?{width:i[3]-i[1],height:i[4]-i[2]}:void 0,s=r?this.renderer.getScale(r.width,r.height):this.getScaleFactor(),a=r?r.width:this.width,h=r?r.height:this.height,d=this.getRendererScreenPosition()?.width,u=this.world.width,l=d?d/u:1,c=this.options.maxUnderZoom,m=Math.max(l||1,this.options.maxOverZoom),y=1/e,b=s*y;if(y<1){let g=a*s,f=h*s,_=this.world.width/g,A=this.world.height/f;if(_>A){let x=this.world.width*b,M=~~(a*s)*c;x<M&&(e=this.world.width*s/(a*s*c))}else{let x=this.world.height*b,M=~~(h*s)*c;x<M&&(e=this.world.height*s/(h*s*c))}}else b>m&&(e=s/m);let P=(0,I.transform)(this.target,(0,I.scaleAtOrigin)(e,t?t.x:this.target[1]+(this.target[3]-this.target[1])/2,t?t.y:this.target[2]+(this.target[4]-this.target[2])/2),this.zoomBuffer);return this.constrainBounds(P,{ref:!0,panPadding:100}),P}clampRegion({x:e,y:t,width:i,height:r,padding:s=0}){let a=this.width,h=this.height,d=i/a<r/h,u=e-s,l=t-s,c=i+s*2,m=r+s*2;if(d){let b=m/h*a;return{x:u-(b-c)/2,y:l,width:b,height:m}}let y=c/a*h;return{x:u,y:l-(y-m)/2,width:c,height:y}}viewerToWorld(e,t){let i=this.getScaleFactor();return this._viewerToWorld.x=this.target[1]+e/i,this._viewerToWorld.y=this.target[2]+t/i,this._viewerToWorld}worldToViewer(e,t,i,r){let s=I.DnaFactory.singleBox(i,r,e,t);return(0,I.mutate)(s,(0,I.compose)((0,I.scale)(this.getScaleFactor()),(0,I.translate)(-this.target[1],-this.target[2]))),{x:s[1],y:s[2],width:s[3]-s[1],height:s[4]-s[2],strand:s}}setScale(e,t){(0,I.mutate)(this.target,(0,I.scaleAtOrigin)(e,t?t.x:this.target[1]+(this.target[3]-this.target[1])/2,t?t.y:this.target[2]+(this.target[4]-this.target[2])/2)),this.pendingUpdate=!0}syncTo(e){let t=this.target;return this.target=e.target,this.pendingUpdate=!0,()=>{this.target=t}}stop(){return typeof this.stopId<"u"&&(window.cancelAnimationFrame(this.stopId),this.stopId=void 0),()=>{this.render(performance.now())}}reset(){this.renderer.reset()}selectZone(e){this.world.selectZone(e),this.pendingUpdate=!0}deselectZone(){this.world.deselectZone(),this.pendingUpdate=!0}hook(e,t){let i=this.hooks[e].length;if(i!==0)for(let r=0;r<i;r++)this.hooks[e][r](t)}registerHook(e,t){return this.hooks[e].push(t),()=>{this.hooks[e]=this.hooks[e].filter(i=>i!==t)}}updateNextFrame(){this.pendingUpdate=!0}};var Ut=require("@atlas-viewer/dna");var Ce=/([0-9]+(px|em)\s+)+(solid)\s+(.*)/g,Re={},Pn=["backgroundColor","opacity","boxShadow","borderColor","borderWidth","borderStyle","outlineColor","outlineWidth","outlineOffset","outlineStyle"],It=class extends B{constructor(){super();o(this,"id");o(this,"type","spacial-content");o(this,"isShape",!0);o(this,"points");o(this,"hoverEvents",!1);o(this,"activeEvents",!1);o(this,"display",{x:0,y:0,scale:1,width:-1,height:-1,points:(0,Ut.dna)(5)});o(this,"boundingBox",null);o(this,"_parsed",{border:{id:null,match:[]},outline:{id:null,match:[]}});o(this,"hovering");o(this,"pressing");o(this,"props",{});o(this,"shape",{type:"none"});o(this,"addHover",()=>{this.hovering=!0,this.__revision++});o(this,"removeHover",()=>{this.hovering=!1,this.pressing=!1,this.__revision++});o(this,"addPress",()=>{this.pressing=!0,this.__revision++});o(this,"removePress",()=>{this.pressing=!1,this.__revision++});this.id=ht(12),this.points=(0,Ut.dna)(5),this.shape={type:"none"}}updateBoundingBox(){if(this.shape.type==="none")return;let t=this.shape.points;if(this.shape.points.length>2){let i=Math.min(...t.map(h=>h[0])),r=Math.min(...t.map(h=>h[1])),s=Math.max(0,...t.map(h=>h[0])),a=Math.max(0,...t.map(h=>h[1]));this.boundingBox={x:i,y:r,width:s-i,height:a-r};return}this.boundingBox=null}intersects(t){if(!t||this.shape.type==="none")return!1;let[i,r]=t,s=this.shape.points,a=this.boundingBox;if(a||(this.updateBoundingBox(),a=this.boundingBox),!a||i<a.x||i>a.x+a.width||r<a.y||r>a.height+a.y)return!1;let h=!1;for(let d=0,u=s.length-1;d<s.length;u=d++)s[d][1]>r!=s[u][1]>r&&i<(s[u][0]-s[d][0])*(r-s[d][1])/(s[u][1]-s[d][1])+s[d][0]&&(h=!h);return h}getAllPointsAt(t,i){return t[3]-t[1]===1&&t[4]-t[2]===1?this.intersects([t[1],t[2]])?[[this,this.points,i]]:[]:[[this,this.points,i]]}applyProps(t={}){let i=!1;if(t.points)if(this.shape.type!=="polygon"||this.shape.points.length!==t.points.length)this.shape={type:"polygon",points:t.points,open:t.open},this.updateBoundingBox();else{let r=!1,s=t.points.length;for(let a=0;a<s;a++)if(t.points[a][0]!==this.shape.points[a][0]||t.points[a][1]!==this.shape.points[a][1]){r=!0;break}r&&(this.shape={type:"polygon",points:t.points,open:t.open},this.updateBoundingBox())}if(t.interactive!==this.props.interactive&&(i=!0,this.props.interactive=t.interactive),(t.open||t.open===!1)&&(i=!0,this.shape.open=t.open),t.style){let r=t.border||t.style.border;if(r!==this._parsed.border.id)if(!r)this._parsed.border.id=null,this._parsed.border.match=[];else{let s=Re[r]||Ce.exec(r)||Ce.exec(r);s&&(this._parsed.border.id=r,this._parsed.border.match=Re[r]=s)}if(this._parsed.border.id&&(t.style.borderWidth=this._parsed.border.match[1],t.style.borderStyle="solid",t.style.borderColor=this._parsed.border.match[4]),t.style.outline!==this._parsed.outline.id)if(!t.style.outline)this._parsed.outline.id=null,this._parsed.outline.match=[];else{let s=Re[t.style.outline]||Ce.exec(t.style.outline)||Ce.exec(t.style.outline);s&&(this._parsed.outline.id=t.style.outline,this._parsed.outline.match=Re[t.style.outline]=s)}this._parsed.outline.id&&(t.style.outlineWidth=this._parsed.outline.match[1],t.style.outlineStyle="solid",t.style.outlineColor=this._parsed.outline.match[4]),this.props.style=t.style,t.backgroundColor&&!this.props.style.backgroundColor&&(this.props.style.backgroundColor=t.backgroundColor,i=!0),t.style.background&&!this.props.style.backgroundColor&&(this.props.style.backgroundColor=t.style.background,i=!0);for(let s of Pn)if(this.props.style[s]!==t.style[s]){i=!0;break}t.style[":hover"]!==this.props.hoverStyles&&(this.props.hoverStyles=t.style[":hover"],this.hoverEvents||(this.hoverEvents=!0,this.addEventListener("pointerenter",this.addHover),this.addEventListener("pointerleave",this.removeHover)),i=!0),t.style[":active"]!==this.props.pressStyles&&(this.props.pressStyles=t.style[":active"],this.activeEvents||(this.activeEvents=!0,this.addEventListener("mousedown",this.addPress),this.addEventListener("mouseup",this.removePress)),i=!0)}t.href!==this.props.href&&(this.props.href=t.href,i=!0),t.hrefTarget!==this.props.hrefTarget&&(this.props.hrefTarget=t.hrefTarget,i=!0),t.title!==this.props.title&&(this.props.title=t.title,i=!0),t.className!==this.props.className&&(this.props.className=t.className,t.className&&!this.hoverEvents&&(this.hoverEvents=!0,this.addEventListener("pointerenter",this.addHover),this.addEventListener("pointerleave",this.removeHover)),t.className&&!this.activeEvents&&(this.activeEvents=!0,this.addEventListener("mousedown",this.addPress),this.addEventListener("mouseup",this.removePress)),i=!0),t.relativeSize!==this.props.relativeSize&&(this.props.relativeSize=t.relativeSize,i=!0),t.relativeStyle!==this.props.relativeStyle&&(this.props.relativeStyle=t.relativeStyle,i=!0),t.html!==this.props.html&&(this.props.html=t.html,i=!0),t.target&&(t.target.width!==this.display.width||t.target.height!==this.display.height||t.target.x!==this.points[1]||t.target.y!==this.points[2])&&(i=!0,this.points=Ut.DnaFactory.singleBox(t.target.width,t.target.height,t.target.x,t.target.y),this.display.points=Ut.DnaFactory.singleBox(t.target.width,t.target.height,t.target.x,t.target.y),this.display.width=t.target.width,this.display.height=t.target.height),i&&this.__revision++}};var Ci=J(require("lru-cache"),1);var Pi=/(-?[0-9]+(px|em)\s+|0\s+)(-?[0-9]+(px|em)\s+|0\s+)(-?[0-9]+(px|em)\s+|0\s+)?(-?[0-9]+(px|em)\s+|0\s+)?(.*)/g,Ei={},En=typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().includes("firefox"),Te={};var ie=class{constructor(e,t){o(this,"canvas");o(this,"ctx");o(this,"options");o(this,"imagesPending",0);o(this,"imagesLoaded",0);o(this,"imageIdsLoaded",[]);o(this,"frameIsRendering",!1);o(this,"pendingDrawCall",!1);o(this,"firstMeaningfulPaint",!1);o(this,"parallelTasks",8);o(this,"frameTasks",0);o(this,"loadingQueueOrdered",!0);o(this,"loadingQueue",[]);o(this,"currentTask",Promise.resolve());o(this,"tasksRunning",0);o(this,"stats");o(this,"averageJobTime",64);o(this,"lastKnownScale",1);o(this,"visible",[]);o(this,"previousVisible",[]);o(this,"rendererPosition");o(this,"dpi");o(this,"drawCalls",[]);o(this,"lastPaintedObject");o(this,"hostCache");o(this,"invalidated",[]);o(this,"_worker",()=>{if(this.loadingQueue.length){let e=this.loadingQueue.pop();e&&(this.tasksRunning++,this.frameTasks++,this.currentTask=e.task().then(()=>{this.tasksRunning--}).catch(()=>{this.tasksRunning--}))}});o(this,"_scheduled",0);o(this,"_doWork",()=>{this.loadingQueue.length===0&&this.tasksRunning===0&&this._scheduled&&(clearInterval(this._scheduled),this._scheduled=0);let e=this.parallelTasks||1;!this.firstMeaningfulPaint&&this.loadingQueue.length&&(e=this.loadingQueue.length);for(let t=0;t<=e;t++)this._worker()});this.canvas=e,this.rendererPosition=e.getBoundingClientRect(),this.ctx=e.getContext("2d",{alpha:!0}),this.ctx.imageSmoothingEnabled=!0,this.options=t||{},this.canvas.style.opacity="0",this.canvas.style.transition="opacity .3s",this.dpi=t?.dpi||1,this.hostCache=t?.lruCache?new Ci.default({maxSize:1024*512*512,dispose:(i,r,s)=>{this.invalidated.push(r),i.width=0,i.height=0},sizeCalculation:(i,r)=>i.width*i.height}):{store:{},get(i){return this.store[i]},set(i,r){this.store[i]=r}}}getCanvasDims(){return{width:this.canvas.width/this.dpi,height:this.canvas.height/this.dpi}}resize(){this.rendererPosition=this.canvas.getBoundingClientRect()}isReady(){return this.firstMeaningfulPaint}afterFrame(e){if(this.clearTransform(),this.lastPaintedObject=void 0,this.frameIsRendering=!1,this.imagesPending=Math.max(0,this.imagesPending-this.imagesLoaded),this.imagesLoaded=0,this.loadingQueueOrdered||(this.loadingQueue=this.loadingQueue.sort((t,i)=>t.network&&t.scale===i.scale?i.distance-t.distance:t.scale<i.scale?-1:1),this.loadingQueueOrdered=!0),this.previousVisible=this.visible,this.pendingDrawCall=!!this.drawCalls.length,this.pendingDrawCall)for(let t=0;t<this.drawCalls.length;t++){let i=this.drawCalls.shift();i&&i()}this.doOffscreenWork(),this.options.debug&&this.stats&&this.stats.end()}doOffscreenWork(){this.frameTasks=0,this.loadingQueue.length&&(this._worker(),this.loadingQueue.length&&(this._scheduled||(this._scheduled=setInterval(this._doWork,0))))}getScale(e,t,i){if(Number.isNaN(e)||Number.isNaN(t))return this.lastKnownScale;let r=this.getCanvasDims(),s=r.width/e,a=r.height/t,h=(s<a?a:s)*(i&&this.dpi||1);return Number.isNaN(h)||(this.lastKnownScale=h),this.lastKnownScale}beforeFrame(e,t,i,r){this.options.debug&&this.stats&&this.stats.begin(),this.frameIsRendering=!0,this.visible=[],this.options.beforeFrame&&this.options.beforeFrame(t);let s=this.getCanvasDims();if(this.ctx.globalAlpha=1,this.ctx.fillStyle=this.options.background||"rgb(0, 0, 0)",this.ctx.fillRect(0,0,s.width,s.height),r.enableFilters&&(r.filters.brightness||r.filters.contrast||r.filters.grayscale||r.filters.invert||r.filters.sepia||r.filters.saturate||r.filters.hueRotate||r.filters.blur)){let a="";r.filters.brightness&&(a+=`brightness(${~~(100+r.filters.brightness*100)}%) `),r.filters.contrast&&(a+=`contrast(${~~(100+r.filters.contrast*100)}%) `),r.filters.grayscale&&(a+=`grayscale(${~~(r.filters.grayscale*100)}%) `),r.filters.invert&&(a+=`invert(${~~(r.filters.invert*100)}%) `),r.filters.sepia&&(a+=`sepia(${~~(r.filters.sepia*100)}%) `),r.filters.saturate&&(a+=`saturate(${~~(100+r.filters.saturate*100)}%) `),r.filters.hueRotate&&(a+=`hue-rotate(${r.filters.hueRotate}deg) `),r.filters.blur&&(a+=`blur(${r.filters.blur}px) `),this.ctx.filter=a}else this.ctx.filter="none"}applyTransform(e,t,i,r,s){let a=e.__owner.value;if(a&&a.rotation){this.ctx.save();let h=t+r/2,d=i+s/2;this.ctx.translate(h,d),this.ctx.rotate(a.rotation*Math.PI/180),this.ctx.translate(-h,-d),this.lastPaintedObject=a}}clearTransform(){this.lastPaintedObject&&(this.lastPaintedObject.rotation&&this.ctx.restore(),this.lastPaintedObject=void 0)}paint(e,t,i,r,s,a){let h=this.ctx.globalAlpha;if(e instanceof H||e instanceof et){if(e.display.rotation){this.ctx.save();let l=i+s/2,c=r+a/2;e.crop&&(l-=e.crop[t*5+1],c-=e.crop[t*5+2]),this.ctx.translate(l,c),this.ctx.rotate(e.display.rotation*Math.PI/180),this.ctx.translate(-l,-c)}if(this.visible.push(e),typeof e.style&&e.style.opacity!=="undefined"){if(!e.style.opacity)return;this.ctx.globalAlpha=e.style.opacity}try{let l=e.__host.canvas,c=this.getCanvasDims();if((l.indices.indexOf(t)===-1||this.invalidated.indexOf(l.canvases[t])!==-1)&&this.schedulePaintToCanvas(l,e,t,Mt({x:i+s/2,y:r+s/2},{x:c.width/2,y:c.height/2})),!this.firstMeaningfulPaint)return;let m=this.hostCache.get(l.canvases[t]);if(m)if(e.crop&&e.cropData){if(e.crop[t*5]){let y=[e.crop[t*5+1]/e.display.scale-e.display.points[t*5+1],e.crop[t*5+2]/e.display.scale-e.display.points[t*5+2],1+(e.crop[t*5+3]-e.crop[t*5+1])/e.display.scale,1+(e.crop[t*5+4]-e.crop[t*5+2])/e.display.scale];y[0]+=e.cropData.x/e.display.scale,y[1]+=e.cropData.y/e.display.scale;let b=e.x*this.lastKnownScale,S=e.y*this.lastKnownScale,P=[i+b,r+S,s,a];P[0]+=b,P[1]+=S,this.ctx.drawImage(m,y[0],y[1],y[2],y[3],P[0],P[1],P[2]+1,P[3]+1)}}else En?this.ctx.drawImage(m,0,0,e.display.points[t*5+3]-e.display.points[t*5+1],e.display.points[t*5+4]-e.display.points[t*5+2],i,r,s+1,a+1):this.ctx.drawImage(m,0,0,e.display.points[t*5+3]-e.display.points[t*5+1],e.display.points[t*5+4]-e.display.points[t*5+2],i,r,s+Number.MIN_VALUE+.5,a+Number.MIN_VALUE+.5)}catch{}e.display.rotation&&this.ctx.restore()}let d=e instanceof st&&this.options.box,u=e instanceof It&&this.options.polygon;if((d||u)&&!e.props.className&&!e.props.html&&!e.props.href){if(this.visible.push(e),e.props.style){let l=Object.assign({},e.props.style||{},e.hovering?e.props.hoverStyles:{},e.pressing?e.props.pressStyles:{}),c=e.props.relativeStyle?1:s/e.width;typeof l.opacity<"u"&&(this.ctx.globalAlpha=l.opacity);let m=0;typeof l.borderWidth<"u"&&(m=parseInt(l.borderWidth,10)*c);let y=0;typeof l.outlineWidth<"u"&&(y=parseInt(l.outlineWidth,10)*c);let b=0;if(typeof l.outlineOffset<"u"&&(b=parseInt(l.outlineOffset,10)*c),l.borderColor&&(this.ctx.strokeStyle=l.borderColor),l.boxShadow){let S=l.boxShadow.split(/,(?![^(]*\))/);for(let P of S){let g=Ei[P]||Pi.exec(P)||Pi.exec(P);Ei[P]=g,g&&(this.ctx.save(),this.ctx.shadowOffsetX=parseInt(g[1])*this.dpi*c,this.ctx.shadowOffsetY=parseInt(g[3])*this.dpi*c,this.ctx.shadowBlur=parseInt(g[5])*this.dpi*c,this.ctx.shadowColor=g[9],this.ctx.fillStyle="rgba(0,0,0,1)",this.ctx.fillRect(i+m,r+m,s,a),this.ctx.restore())}}if(this.ctx.fillStyle=l.backgroundColor||"transparent",this.ctx.lineWidth=m,u){let S=e.shape,P=S.points||[],g=P.length;this.ctx.beginPath();for(let f=0;f<g;f++)this.ctx.lineTo(i+P[f][0]*this.lastKnownScale,r+P[f][1]*this.lastKnownScale);S.open||this.ctx.closePath(),m&&this.ctx.stroke(),S.open||this.ctx.fill()}else m&&this.ctx.strokeRect(i+m/2,r+m/2,s+m,a+m),this.ctx.fillRect(i+m,r+m,s,a);y&&(l.outlineColor&&(this.ctx.strokeStyle=l.outlineColor),this.ctx.lineWidth=y,this.ctx.strokeRect(i-y/2-b,r-y/2-b,s+m*2+y+b*2,a+m*2+y+b*2))}this.ctx.globalAlpha=h}}loadImage(e,t,i,r=!1){if(Te[e]&&Te[e].naturalWidth>0){t(Te[e]);return}try{let s=!1;r||setTimeout(()=>{s||this.loadImage(e,t,i,!0)},3e3);let a=document.createElement("img");a.decoding="auto",a.onload=function(){s=!0,t(a),Te[e]=a,a.onload=null},this.options.crossOrigin&&(a.crossOrigin="anonymous"),a.src=e,a.complete&&a.onload({}),a.width}catch(s){console.log("image error",s),i(s)}}schedulePaintToCanvas(e,t,i,r){this.imagesPending++,e.indices.push(i);let s=`${t.id}--${t.display.scale}-${i}`,a=this.invalidated.indexOf(s);a!==-1&&this.invalidated.splice(a,1),e.canvases[i]=s,t.__host.canvas.loading=!0,this.loadingQueueOrdered=!1,this.loadingQueue.push({id:s,scale:t.display.scale,network:!0,distance:r,task:()=>new Promise(h=>{if(this.visible.indexOf(t)===-1){this.imagesPending--,e.indices.splice(e.indices.indexOf(i),1),h();return}let d=t.getImageUrl(i);this.loadImage(d,u=>{this.loadingQueue.push({id:s,scale:t.display.scale,distance:r,task:()=>new Promise(l=>{this.imageIdsLoaded.includes(s)||(this.imagesLoaded++,this.imageIdsLoaded.push(s)),e.loaded.push(i),e.loaded.length===e.indices.length&&(e.loading=!1);let c=t.display.points.slice(i*5,i*5+5),m=document.createElement("canvas"),y=m.getContext("2d");m.width=c[3]-c[1],m.height=c[4]-c[2],this.hostCache.set(e.canvases[i],m),this.drawCalls.push(()=>{y.drawImage(u,0,0,c[3]-c[1],c[4]-c[2]),l()})})}),h()},u=>{this.imagesPending--,e.indices.splice(e.indices.indexOf(i),1),h()})})})}afterPaintLayer(e,t){}prepareLayer(e,t){if(e.__owner.value)if(e.cropData){let i=this.lastKnownScale*(1/e.display.scale);this.applyTransform(e,t[1],t[2],t[3]-t[1],t[4]-t[2])}else this.applyTransform(e,t[1],t[2],t[3]-t[1],t[4]-t[2]);(!e.__host||!e.__host.canvas)&&(e instanceof H||e instanceof et)&&this.createImageHost(e)}finishLayer(){this.lastPaintedObject&&this.clearTransform()}createImageHost(e){e.__host=e.__host?e.__host:{},e.__host.canvas={canvas:void 0,canvases:[],indices:[],loaded:[],loading:!1}}getPointsAt(e,t,i,r){return e.getPointsAt(t,i,r)}getViewportBounds(e,t,i){let r=e.getActiveZone();if(r){let s=t[3]-t[1]<r.points[3]-r.points[1],a=t[4]-t[2]<r.points[4]-r.points[2];return{x1:s?r.points[1]-i:r.points[1]+(r.points[3]-r.points[1])/2-(t[3]-t[1])/2,y1:a?r.points[2]-i:r.points[2]+(r.points[4]-r.points[2])/2-(t[4]-t[2])/2,x2:s?r.points[3]+i:r.points[1]+(r.points[3]-r.points[1])/2-(t[3]-t[1])/2,y2:a?r.points[4]+i:r.points[2]+(r.points[4]-r.points[2])/2-(t[4]-t[2])/2}}return null}pendingUpdate(){let e=!this.pendingDrawCall&&this.drawCalls.length===0&&this.imagesPending===0&&this.loadingQueue.length===0&&this.tasksRunning===0;return!e&&this.visible.length===0&&setTimeout(()=>{this.canvas.style.opacity="1",this.firstMeaningfulPaint=!0},500),!this.firstMeaningfulPaint&&e&&this.visible.length?(this.canvas.style.opacity="1",this.firstMeaningfulPaint=e,!0):this.options.debug?!0:!e}getRendererScreenPosition(){return this.rendererPosition}reset(){this.loadingQueue=[],this.drawCalls=[]}};var Lt=class{constructor(e){o(this,"renderers",[]);o(this,"length");for(let t of e)t&&this.renderers.push(t);this.length=this.renderers.length}afterFrame(e,t,i,r){for(let s=0;s<this.length;s++)this.renderers[s].afterFrame(e,t,i,r)}afterPaintLayer(e,t){for(let i=0;i<this.length;i++)this.renderers[i].afterPaintLayer(e,t)}beforeFrame(e,t,i,r){for(let s=0;s<this.length;s++)this.renderers[s].beforeFrame(e,t,i,r)}triggerResize(){for(let e=0;e<this.length;e++){let t=this.renderers[e];t.triggerResize&&t.triggerResize()}}getPointsAt(e,t,i,r){return this.renderers[0].getPointsAt(e,t,i,r)}getScale(e,t){return this.renderers[0].getScale(e,t)}getViewportBounds(e,t,i){return this.renderers[0].getViewportBounds(e,t,i)}getRendererScreenPosition(){return this.renderers[0].getRendererScreenPosition()}isReady(){for(let e=0;e<this.length;e++)if(!this.renderers[e].isReady())return!1;return!0}paint(e,t,i,r,s,a){for(let h=0;h<this.length;h++)this.renderers[h].paint(e,t,i,r,s,a)}pendingUpdate(){for(let e=0;e<this.length;e++)if(this.renderers[e].pendingUpdate())return!0;return!1}prepareLayer(e,t){for(let i=0;i<this.length;i++)this.renderers[i].prepareLayer(e,t)}finishLayer(e,t){for(let i=0;i<this.length;i++)this.renderers[i].finishLayer(e,t)}resize(e,t){for(let i=0;i<this.length;i++)this.renderers[i].resize(e,t)}reset(){for(let e=0;e<this.length;e++)this.renderers[e].reset()}};var _e=require("@atlas-viewer/dna");var ne=class{constructor(e){o(this,"canvas");o(this,"context");o(this,"heightRatio",1);o(this,"widthRatio",1);o(this,"target",new Float32Array(5));o(this,"initialWidth");o(this,"initialHeight");o(this,"bounds");o(this,"aggregate");o(this,"delta",0);o(this,"renderNextFrame",!0);this.canvas=e,this.initialWidth=e.width,this.initialHeight=e.height,this.context=e.getContext("2d"),this.context.globalAlpha=.5,this.aggregate=(0,_e.scale)(1)}isReady(){return!0}resize(){this.initialWidth=this.canvas.width,this.initialHeight=this.canvas.height,this.renderNextFrame=!0}afterFrame(e,t,i){if(this.renderNextFrame){this.context.clearRect(0,0,this.canvas.width,this.canvas.height);let r=this.initialWidth/e.width,s=this.initialHeight/e.height,a=this.widthRatio>this.heightRatio?r:s;if(this.target=i,this.bounds){let h=e.getPointsAt(this.bounds,this.aggregate,a);for(let[d,u]of h)if(d instanceof H&&d.__host.canvas){let l=u.length/5;for(let c=0;c<l;c++)if(d.__host.canvas.canvases[c]){let y={x1:u[c+1]*a,y1:u[c+2]*a,width:(u[c+3]-u[c+1])*a,height:(u[c+4]-u[c+2])*a}}}}e.getPoints().forEach((h,d,u)=>{if(d%5===0&&h){let l={x1:u[d+1]*a,y1:u[d+2]*a,x2:u[d+3]*a,y2:u[d+4]*a,width:(u[d+3]-u[d+1])*a,height:(u[d+4]-u[d+2])*a};this.context.strokeStyle="red",this.context.strokeRect(l.x1,l.y1,l.width,l.height)}}),i&&(this.context.strokeStyle="red",this.context.lineWidth=window.devicePixelRatio||1,this.context.strokeRect(i[1]*a,i[2]*a,(i[3]-i[1])*a,(i[4]-i[2])*a))}}getActiveZone(e){return null}getPointsAt(e,t,i,r){return e.getPointsAt(t,i,r)}getScale(e,t){return 1}beforeFrame(e,t){this.bounds=_e.DnaFactory.singleBox(e.width,e.height)}drawImage(){}afterPaintLayer(e,t){}paint(e,t,i,r,s,a){this.renderNextFrame=!0}prepareLayer(e){}pendingUpdate(){return!1}hasActiveZone(){return!1}getViewportBounds(e,t,i){return null}getRendererScreenPosition(){return this.canvas.getBoundingClientRect()}finishLayer(){}reset(){}};var $e=class{constructor(){o(this,"autoWidth",!1);o(this,"autoHeight",!0);o(this,"width");o(this,"height");o(this,"world");o(this,"content",[]);o(this,"viewingDirection","left-to-right");o(this,"rows");o(this,"columns",4);o(this,"spacing",20);o(this,"reversed",!1);o(this,"padding",20);this.world=it.withProps({width:0,height:0,viewingDirection:"left-to-right"}),this.width=0,this.height=0}setViewingDirection(e){this.viewingDirection=e}addContent(e){this.content.push(...e.map(t=>this.world.addObjectAt(t,{width:0,height:0,x:0,y:0})))}setWidth(e){this.width=e}setHeight(e){this.height=e}setSpacing(e){this.spacing=e}setPadding(e){this.padding=e}setRows(e){this.autoWidth=!0,this.rows=e}setColumns(e){this.autoHeight=!0,this.columns=e}recalculate(){if(this.height===0&&this.width===0||this.rows===0||this.columns===0)return;if(this.autoHeight&&!this.width)throw new Error("Cannot set auto height without setting a width");if(this.autoWidth&&!this.height)throw new Error("Cannot set auto width without setting a height");(this.viewingDirection==="left-to-right"||this.viewingDirection==="top-to-bottom")&&this.reversed&&(this.reversed=!1,this.content.reverse()),(this.viewingDirection==="right-to-left"||this.viewingDirection==="bottom-to-top")&&!this.reversed&&(this.reversed=!0,this.content.reverse());let e=this.content.length,t=()=>{if(this.autoWidth&&this.rows){let h=e>this.rows?this.rows:e;return{columns:Math.ceil(e/h),rows:h}}if(this.autoHeight&&this.columns){let h=e>this.columns?this.columns:e;return{columns:h,rows:Math.ceil(e/h)}}throw new Error("Something went wrong.")},{columns:i,rows:r}=t(),s=this.autoWidth?-1:this.width-this.padding*2,a=this.autoWidth?-1:(s-this.spacing*(i-1))/i;if(this.autoHeight&&!this.autoWidth){let h=0,d=this.padding;for(let u=0;u<r&&h!==e;u++){let l=0,c=[];for(let m=0;m<i;m++){let y=this.reversed?e-h:h;if(h===e)break;let b=this.content[y],S=b.width,P=b.width/b.height,g=a/P;c.push([h,a,g,a/S]),g>l&&(l=g),h++}for(let m=0;m<i&&c[m];m++){let y=this.world.getPoints(),b=c[m][0],S=c[m][1],P=c[m][2],g=c[m][3],f=this.padding+m*(this.spacing+S),_=d+(l-P)/2,A=this.reversed?e-b:b,x=y[A*5+1],v=y[A*5+2];this.world.scaleWorldObject(b,g),(x!==f||v!==_)&&this.world.translateWorldObject(A,f-x,_-v)}d+=l+this.spacing}this.height=d+this.padding,this.world.resize(this.width,this.height);return}this.autoWidth&&this.autoHeight,!this.autoWidth&&this.autoHeight}getWorld(){return this.world}};var Oi=J(require("normalize-wheel"),1);var Q=require("@atlas-viewer/dna");function Ri(n){return{x:n[1],y:n[2],width:n[3]-n[1],height:n[4]-n[2]}}var Ti="pan",_i="scroll",Cn="gesture",Ai={zoomOutFactor:.8,zoomInFactor:1.25,maxZoomFactor:1,minZoomFactor:.05,zoomDuration:300,zoomWheelConstant:20,zoomClamp:.6,panBounceStiffness:120,panBounceDamping:15,panTimeConstant:240,panPower:.1,nudgeDistance:100,panPadding:0,devicePixelRatio:1,enableWheel:!0,enableClickToZoom:!0,ignoreSingleFingerTouch:!1,enablePanOnWait:!1,requireMetaKeyForWheelZoom:!1,panOnWaitDelay:40,onPanInSketchMode:()=>{},parentElement:null},re=(n={})=>({start:function(e){let{zoomWheelConstant:t,enableWheel:i,enableClickToZoom:r,ignoreSingleFingerTouch:s,enablePanOnWait:a,panOnWaitDelay:h,parentElement:d,requireMetaKeyForWheelZoom:u}={...Ai,...n},l={pointerStart:{x:0,y:0},isPressing:!1,mousemoveBuffer:(0,Q.dna)(5),multiTouch:{distance:0}};e.world.activatedEvents.push("onMouseUp","onMouseDown","onMouseMove","onTouchStart","onTouchEnd","onTouchMove");function c(){S=0,g="",_(),_(void 0,"notice"),P=0}function m(){e.world.constraintBounds(),c()}function y(w){if(w.which>1){l.isPressing=!1;return}e.mode==="explore"&&(w.preventDefault(),l.pointerStart.x=w.atlas.x,l.pointerStart.y=w.atlas.y,e.transitionManager.stopTransition(),l.isPressing=!0)}function b(){c(),l.isPressing&&(e.mode==="explore"&&e.world.constraintBounds(),l.isPressing=!1)}let S=0,P=0,g="";function f(w){if(e.mode==="explore"){if(w.atlasTouches.length===1&&(P=performance.now(),s==!1&&w.preventDefault(),l.pointerStart.x=w.atlasTouches[0].x,l.pointerStart.y=w.atlasTouches[0].y),w.atlasTouches.length===2){g=Cn,w.preventDefault();let T=w.atlasTouches[0].x,L=w.atlasTouches[1].x;l.pointerStart.x=(T+L)/2;let _t=w.atlasTouches[0].y,W=w.atlasTouches[1].y;l.pointerStart.y=(_t+W)/2,S=Mt({x:w.touches[0].clientX,y:w.touches[0].clientY},{x:w.touches[1].clientX,y:w.touches[1].clientY})}e.transitionManager.stopTransition(),l.isPressing=!0}}function _(w,T="intent"){d&&(d.dataset[T]=w)}function A(w){let T=null,L=null,_t=!1,W=0;if(l.isPressing&&w.touches.length===2){let at=w.touches[0].clientX,Y=w.touches[1].clientX;T=(at+Y)/2;let zt=w.touches[0].clientY,Ot=w.touches[1].clientY;L=(zt+Ot)/2,W=Mt({x:w.touches[0].clientX,y:w.touches[0].clientY},{x:w.touches[1].clientX,y:w.touches[1].clientY}),_t=!0}if(_(g),l.isPressing&&w.touches.length===1){if(a&&(performance.now()-P<h&&g==""&&(g=_i),g==""&&(g=Ti)),_(g),g==""&&s==!0||g==_i){_("require-two-finger","notice");return}let at=w.touches[0];T=at.clientX,L=at.clientY}if(T!==null&&L!==null){let at=e.getRendererScreenPosition();if(at){let{x:Y,y:zt}=e.viewerToWorld(T-at.x,L-at.y),Ot=W&&S?W/S:1;e.transitionManager.customTransition(bt=>{bt.from=(0,Q.dna)(e.target),bt.to=(0,Q.transform)(bt.from,(0,Q.compose)((0,Q.translate)(l.pointerStart.x-Y,l.pointerStart.y-zt),(0,Q.scaleAtOrigin)(1/Ot,Y,zt)),l.mousemoveBuffer),bt.elapsed_time=0,bt.total_time=0,bt.timingFunction=ot.easeInOutExpo,bt.done=!1})}S=W}g==Ti&&w.preventDefault()}function x(w){if(l.isPressing){let T=e.getRendererScreenPosition();if(T){let{x:L,y:_t}=e.viewerToWorld(w.clientX-T.x,w.clientY-T.y);e.transitionManager.customTransition(W=>{W.from=(0,Q.dna)(e.target),W.to=(0,Q.transform)(W.from,(0,Q.translate)(l.pointerStart.x-L,l.pointerStart.y-_t),l.mousemoveBuffer),W.elapsed_time=0,W.total_time=0,W.timingFunction=ot.easeInOutExpo,W.done=!1})}}}function v(w){e.mode==="explore"&&e.world.zoomIn(w.atlas)}function M(w){let L=1+(0,Oi.default)(w).spinY/t;e.world.zoomTo(L,w.atlas,!0)}function q(w){return u&&w.metaKey==!1?(_("meta-required","notice"),w.stopPropagation(),!1):!0}e.world.addEventListener("mouseup",m),e.world.addEventListener("touchend",m),e.world.addEventListener("touchstart",f),e.world.addEventListener("mousedown",y),window.addEventListener("touchend",b),window.addEventListener("mouseup",b),window.addEventListener("mousemove",x),d&&d.addEventListener("touchmove",A),r&&(e.world.activatedEvents.push("onClick"),e.world.addEventListener("click",v)),i&&(e.world.activatedEvents.push("onWheel"),u&&d?.addEventListener("wheel",q,{passive:!0,capture:!0}),e.world.addEventListener("wheel",M));let G=e.world.addLayoutSubscriber((w,T)=>{if(w==="zone-changed"&&e.transitionManager.constrainBounds({transition:{duration:0}}),w==="zoom-to"&&T&&e.transitionManager.zoomTo(T.factor,{origin:T.point,stream:T.stream}),w==="go-home"){let L=T.immediate?{duration:0}:void 0;e.transitionManager.goToRegion(Ri(e.homePosition),{transition:L})}if(w==="goto-region"&&T){let L=T.immediate?{duration:0}:{};e.transitionManager.goToRegion(T,{transition:L})}w==="constrain-bounds"&&e.transitionManager.constrainBounds({transition:T?.immediate?{duration:0}:void 0})});return()=>{e.world.removeEventListener("mouseup",m),e.world.removeEventListener("touchend",m),e.world.removeEventListener("touchstart",f),e.world.removeEventListener("mousedown",y),window.removeEventListener("touchend",b),window.removeEventListener("mouseup",b),e.world.removeEventListener("mousemove",x),d&&(d.removeEventListener("touchmove",x),d.removeEventListener("wheel",q,{passive:!0,capture:!0})),r&&e.world.removeEventListener("click",v),i&&e.world.removeEventListener("wheel",M),G()}},updatePosition(){}});var F=require("react");var Oe=J(require("react"),1),Mi=require("react/jsx-runtime"),ut=Oe.default.createContext("explore");ut.displayName="Mode";var se=()=>(0,Oe.useContext)(ut);function Rn(n){return(0,Mi.jsx)(ut.Provider,{value:n.mode,children:n.children})}var $i=J(require("react-use-measure"),1);var Ve=J(require("react"),1),mt=Ve.default.createContext(null);mt.displayName="Atlas";var Rt=Ve.default.createContext(null);Rt.displayName="Bounds";var gt=J(require("react"),1);var ki=J(require("react-reconciler"),1);var oe,Tn=typeof performance=="object"&&typeof performance.now=="function";if(Tn){let n=performance;oe=()=>n.now()}else{let n=Date,e=n.now();oe=()=>n.now()-e}var Fi=require("react");var _n=16;function Ii(n,e){n&&n.appendChild&&e&&n.appendChild(e)}function Di(n,e){n&&n.removeChild&&e&&n.removeChild(e)}function On(n,e){return Di(n.world,e)}function An(n,e,t){return Bi(n.world,e,t)}function Bi(n,e,t){n&&n instanceof ct&&(n=n.world),n&&n.insertBefore&&n.insertBefore(e,t)}function Ge(n,e,t){if(t&&(n.applyProps&&n.applyProps(t),n instanceof B))for(let i of Ht){let r=i.slice(2).toLowerCase();t[i]!==e[i]&&(e[i]&&n.removeEventListener(r,e[i]),n.addEventListener(r,t[i]))}}function Xe(n,e){let t=Object.keys(e),i=!1;for(let r of t)if(Ht.indexOf(r)!==-1){let s=rt[r];if(s){if(n.activatedEvents.indexOf(s)!==-1)continue;i=!0,n.activatedEvents.push(s)}}i&&n.triggerEventActivation()}var Ae=new Map,Li={};function Mn(n,{args:e=[],...t},i,r,s){if(!(i instanceof ct)&&s){let d=u=>u.return?d(u.return):u.stateNode&&u.stateNode.containerInfo;i=d(s)}let a,h=i.world;switch(n){case"world":a=it.withProps({width:t.width,height:t.height,viewingDirection:"left-to-right"}),a.activatedEvents=h.activatedEvents,a.eventHandlers=h.eventHandlers,a.subscriptions=h.subscriptions,a.triggerEventActivation(),h=a;break;case"box":a=new st;break;case"shape":a=new It;break;case"worldObject":case"world-object":a=new dt;break;case"worldImage":case"world-image":a=new H;break;case"texture":a=new Et;break;case"compositeImage":case"composite-image":a=new Kt({id:t.id,width:t.width,height:t.height,images:[],renderOptions:t.renderOptions});break;case"tiledImage":case"tiled-image":a=et.fromTile(t.uri,t.display,t.tile,t.scaleFactor,void 0,t.format);break;case"paragraph":a=new vt,a.text=t.children;break;default:return}return Xe(h,t),Ge(a,{},t),a}function In(n,e){if(e instanceof it)n.world=e;else if(e instanceof dt)n.world.appendChild(e);else if(e)throw new Error("Invalid root")}var ae=(0,ki.default)({unstable_now:oe,now:oe,createInstance:Mn,removeChild:Di,appendChild:Ii,appendInitialChild:Ii,insertBefore:Bi,warnsIfNotActing:!0,supportsMutation:!0,isPrimaryRenderer:!1,scheduleTimeout:typeof setTimeout<"u"?setTimeout:void 0,cancelTimeout:typeof clearTimeout<"u"?clearTimeout:void 0,setTimeout:typeof setTimeout<"u"?setTimeout:void 0,clearTimeout:typeof clearTimeout<"u"?clearTimeout:void 0,noTimeout:-1,appendChildToContainer:In,removeChildFromContainer:On,createTextInstance(){},insertInContainerBefore:An,prepareUpdate(n,e,t,i,r){return Xe(r.world,i),i},commitUpdate(n,e,t,i,r,s){n.applyProps&&e&&Ge(n,i,e)},finalizeInitialChildren(n){return n?.__handlers},getChildHostContext(){return Li},getRootHostContext(){return Li},prepareForCommit(n){return n.isCommitting=!0,null},preparePortalMount(){},hideInstance(n){n&&n.points&&(n.points[0]=0)},unhideInstance(n,e){n&&n.points&&(n.points[0]=1)},getPublicInstance(n){return n},hideTextInstance(){throw new Error("Text is not allowed in the react-three-fibre tree. You may have extraneous whitespace between components.")},resetAfterCommit(n){n.isCommitting=!1,n.pendingUpdate=!0,n.world&&n.world.needsRecalculate&&(n.world.recalculateWorldSize(),n.world.triggerRepaint())},shouldSetTextContent(){return!1},clearContainer(){return!1},supportsHydration:!1,supportsPersistence:!1,detachDeletedInstance(n){},afterActiveInstanceBlur(){},beforeActiveInstanceBlur(){},getCurrentEventPriority(){return console.log("getCurrentEventPriority"),_n},getInstanceFromNode(n){throw console.log("getInstanceFromNode",n),new Error("Not implemented")},getInstanceFromScope(n){throw console.log("getInstanceFromScope",n),new Error("Not implemented")},prepareScopeUpdate(n,e){throw console.log("prepareScopeUpdate",n,e),new Error("Not implemented")},logRecoverableError(){},requestPostPaintCallback(){}});ae.injectIntoDevTools({bundleType:0,version:Fi.version,rendererPackageName:"@atlas-viewer/atlas"});function $t(n,e){let t=Ae.get(n);t&&ae.updateContainer(null,t,null,()=>{Ae.delete(n),e&&e(n)})}var Vt={render(n,e){let t=Ae.get(e);if(t)ae.updateContainer(n,t,null);else{let i=ae.createContainer(e,0,null,!1,null,"",()=>{},null);ae.updateContainer(n,i,null),Ae.set(e,i)}},unmountComponentAtNode(n,e){$t(n,e)}};var Me=J(require("react"),1),K=typeof window<"u"&&(window.document?.createElement||window.navigator?.product==="ReactNative")?Me.useLayoutEffect:Me.useEffect;var Gt=require("react/jsx-runtime"),Wi=gt.default.memo(({children:n,setIsReady:e,onCreated:t,bounds:i,preset:r,mode:s="explore"})=>{let a=(0,gt.useCallback)(function(d){let u=(0,gt.useRef)(!1),l=()=>{e(!0)};return(0,gt.useEffect)(()=>{if(r&&!u.current){r.runtime.goHome();let c=t&&t(r);return void(c&&c.then?c.then(l):l())}return()=>{}},[]),(0,gt.useEffect)(()=>{u.current=!0},[]),d.children},[r]);return K(()=>{if(r){let h=r.runtime;s!==h.mode&&(h.mode=s),Vt.render((0,Gt.jsx)(gt.default.StrictMode,{children:(0,Gt.jsx)(a,{children:(0,Gt.jsx)(Rt.Provider,{value:i,children:(0,Gt.jsx)(ut.Provider,{value:s,children:(0,Gt.jsx)(mt.Provider,{value:r,children:n})})})})}),h)}},[r,s,n]),K(()=>{if(r){let h=r.runtime;return()=>{Vt.unmountComponentAtNode(h)}}return()=>{}},[r]),null});var he=class{constructor(e,t){o(this,"canvas");o(this,"gl");o(this,"program");o(this,"fragmentShader");o(this,"vertexShader");o(this,"rectBuffer");o(this,"fragmentShaderSource",`
|
|
2
2
|
precision mediump float;
|
|
3
3
|
|
|
4
4
|
uniform sampler2D u_image;
|
|
@@ -31,14 +31,14 @@
|
|
|
31
31
|
|
|
32
32
|
v_texCoord = a_texCoord;
|
|
33
33
|
}
|
|
34
|
-
`);o(this,"attributes");o(this,"uniforms");o(this,"buffers");o(this,"rendererPosition");o(this,"dpi");o(this,"lastResize",0);o(this,"lastKnownScale",1);this.canvas=e,this.rendererPosition=e.getBoundingClientRect(),this.gl=e.getContext("webgl2"),this.fragmentShader=this.createShader(this.gl.FRAGMENT_SHADER,this.fragmentShaderSource),this.vertexShader=this.createShader(this.gl.VERTEX_SHADER,this.vertexShaderSource),this.program=this.createProgram(this.vertexShader,this.fragmentShader),this.dpi=t?.dpi||1,this.attributes={position:this.gl.getAttribLocation(this.program,"a_position"),texCoord:this.gl.getAttribLocation(this.program,"a_texCoord")},this.uniforms={resolution:this.gl.getUniformLocation(this.program,"u_resolution"),texture:this.gl.getUniformLocation(this.program,"u_texture")},this.buffers={position:this.createArrayBuffer(),texCoord:this.createArrayBuffer(new Float32Array([0,0,1,0,0,1,0,1,1,0,1,1]))},this.rectBuffer=new Float32Array(12),this.resize(),this.gl.viewport(0,0,this.gl.canvas.width,this.gl.canvas.height),this.gl.clearColor(0,0,0,0),this.gl.clear(this.gl.COLOR_BUFFER_BIT),this.gl.useProgram(this.program),this.gl.enableVertexAttribArray(this.attributes.position)}resize(){this.resizeCanvasToDisplaySize(),this.gl.viewport(0,0,this.gl.canvas.width,this.gl.canvas.height),this.rendererPosition=this.canvas.getBoundingClientRect()}isReady(){return!0}beforeFrame(e,t,i){this.gl.clearColor(0,0,0,0),this.gl.clear(this.gl.COLOR_BUFFER_BIT),this.gl.vertexAttribPointer(this.attributes.position,2,this.gl.FLOAT,!1,0,0),this.gl.uniform2f(this.uniforms.resolution,this.gl.canvas.width,this.gl.canvas.height),this.lastResize>1e3&&(this.lastResize=0,this.resizeCanvasToDisplaySize()),this.lastResize+=t}prepareLayer(e){(!e.__host||!e.__host.webgl)&&((e instanceof
|
|
34
|
+
`);o(this,"attributes");o(this,"uniforms");o(this,"buffers");o(this,"rendererPosition");o(this,"dpi");o(this,"lastResize",0);o(this,"lastKnownScale",1);this.canvas=e,this.rendererPosition=e.getBoundingClientRect(),this.gl=e.getContext("webgl2"),this.fragmentShader=this.createShader(this.gl.FRAGMENT_SHADER,this.fragmentShaderSource),this.vertexShader=this.createShader(this.gl.VERTEX_SHADER,this.vertexShaderSource),this.program=this.createProgram(this.vertexShader,this.fragmentShader),this.dpi=t?.dpi||1,this.attributes={position:this.gl.getAttribLocation(this.program,"a_position"),texCoord:this.gl.getAttribLocation(this.program,"a_texCoord")},this.uniforms={resolution:this.gl.getUniformLocation(this.program,"u_resolution"),texture:this.gl.getUniformLocation(this.program,"u_texture")},this.buffers={position:this.createArrayBuffer(),texCoord:this.createArrayBuffer(new Float32Array([0,0,1,0,0,1,0,1,1,0,1,1]))},this.rectBuffer=new Float32Array(12),this.resize(),this.gl.viewport(0,0,this.gl.canvas.width,this.gl.canvas.height),this.gl.clearColor(0,0,0,0),this.gl.clear(this.gl.COLOR_BUFFER_BIT),this.gl.useProgram(this.program),this.gl.enableVertexAttribArray(this.attributes.position)}resize(){this.resizeCanvasToDisplaySize(),this.gl.viewport(0,0,this.gl.canvas.width,this.gl.canvas.height),this.rendererPosition=this.canvas.getBoundingClientRect()}isReady(){return!0}beforeFrame(e,t,i){this.gl.clearColor(0,0,0,0),this.gl.clear(this.gl.COLOR_BUFFER_BIT),this.gl.vertexAttribPointer(this.attributes.position,2,this.gl.FLOAT,!1,0,0),this.gl.uniform2f(this.uniforms.resolution,this.gl.canvas.width,this.gl.canvas.height),this.lastResize>1e3&&(this.lastResize=0,this.resizeCanvasToDisplaySize()),this.lastResize+=t}prepareLayer(e){(!e.__host||!e.__host.webgl)&&((e instanceof H||e instanceof et)&&this.createImageHost(e),e instanceof Et&&this.createTextureHost(e))}createTextureHost(e){e.__host=e.__host?e.__host:{};let t=this.gl,i=this.gl.createTexture();t.bindTexture(t.TEXTURE_2D,i),t.pixelStorei(t.UNPACK_FLIP_Y_WEBGL,!1);let r;if(e instanceof Et){let s=e.getTexture();s.source&&t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,s.source),r=s}t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),e.__host.webgl={height:e.height,width:e.width,texture:i,lastImage:r}}createImageHost(e){let t=[...new Array(e.points.length/5)];e.__host=e.__host?e.__host:{},e.__host.webgl={height:e.height,width:e.width,textures:t,loading:[],loaded:[],lastLevelRendered:-1,onLoad:(i,r)=>{let s=this.gl,a=this.gl.createTexture();s.bindTexture(s.TEXTURE_2D,a),s.pixelStorei(s.UNPACK_FLIP_Y_WEBGL,!1),s.texImage2D(s.TEXTURE_2D,0,s.RGBA,s.RGBA,s.UNSIGNED_BYTE,r),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MAG_FILTER,s.LINEAR),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MIN_FILTER,s.LINEAR),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_WRAP_T,s.CLAMP_TO_EDGE),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_WRAP_S,s.CLAMP_TO_EDGE),s.bindTexture(s.TEXTURE_2D,null),e.__host.webgl.textures[i]=a,e.__host.webgl.loaded.push(i)}}}paint(e,t,i,r,s,a){if(e.type==="spacial-content"&&e.__host&&e.__host.webgl){if(e.getTexture){let d=e?.getTexture();if(d&&e.__host.webgl.lastImage!==d.hash&&d.source&&!e.__host.webgl.error)try{let l=this.gl.RGBA,c=this.gl.RGBA,m=this.gl.UNSIGNED_BYTE;this.gl.bindTexture(this.gl.TEXTURE_2D,e.__host.webgl.texture),this.gl.texImage2D(this.gl.TEXTURE_2D,0,l,c,m,d.source),e.__host.webgl.lastImage=d.hash}catch(u){e.__host.webgl.error=u}}if(e.__host.webgl.loading&&e.__host.webgl.loading.indexOf(t)===-1&&e.getImageUrl){e.__host.webgl.loading.push(t);let d=document.createElement("img");d.decoding="async",d.crossOrigin="anonymous",d.src=e.getImageUrl(t),d.onload=()=>(d.onload=null,e.__host.webgl.onLoad(t,d))}let h=e.__host.webgl.texture?e.__host.webgl.texture:e.__host.webgl.textures[t];h&&(this.gl.enableVertexAttribArray(this.attributes.texCoord),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.buffers.texCoord),this.gl.enableVertexAttribArray(this.attributes.texCoord),this.gl.vertexAttribPointer(this.attributes.texCoord,2,this.gl.FLOAT,!1,0,0),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.buffers.position),this.gl.enableVertexAttribArray(this.attributes.position),this.gl.vertexAttribPointer(this.attributes.position,2,this.gl.FLOAT,!1,0,0),this.gl.bindTexture(this.gl.TEXTURE_2D,h),this.gl.uniform1i(this.uniforms.texture,0),this.setRectangle(i,r,s,a),this.gl.drawArrays(this.gl.TRIANGLES,0,6))}}afterPaintLayer(e,t){}pendingUpdate(){return!0}getPointsAt(e,t,i,r){return e.getPointsAt(t,i,r)}afterFrame(){}getScale(e,t,i){if(Number.isNaN(e)||Number.isNaN(t))return this.lastKnownScale;let r=this.getCanvasDims(),s=r.width/e,a=r.height/t,h=(s<a?a:s)*(i&&this.dpi||1);return Number.isNaN(h)||(this.lastKnownScale=h),this.lastKnownScale}getCanvasDims(){return{width:this.canvas.width/this.dpi,height:this.canvas.height/this.dpi}}getViewportBounds(e,t,i){return null}createShader(e,t){let i=this.gl.createShader(e);if(i){if(this.gl.shaderSource(i,t),this.gl.compileShader(i),this.gl.getShaderParameter(i,this.gl.COMPILE_STATUS))return i;let s=this.gl.getShaderInfoLog(i);if(this.gl.deleteShader(i),s)throw new Error(s)}throw new Error("Invalid shader")}createProgram(e,t){let i=this.gl.createProgram();if(i){if(this.gl.attachShader(i,e),this.gl.attachShader(i,t),this.gl.linkProgram(i),this.gl.getProgramParameter(i,this.gl.LINK_STATUS))return i;let s=this.gl.getProgramInfoLog(i);if(this.gl.deleteProgram(i),s)throw new Error(s)}throw new Error("Invalid program")}resizeCanvasToDisplaySize(){let e=this.gl.canvas,t=e.clientWidth,i=e.clientHeight,r=e.width!==t||e.height!==i;return r&&(e.width=t,e.height=i),r}createArrayBuffer(e){let t=this.gl.createBuffer();if(this.gl.bindBuffer(this.gl.ARRAY_BUFFER,t),e&&this.gl.bufferData(this.gl.ARRAY_BUFFER,e,this.gl.STATIC_DRAW),!t)throw new Error("Cannot create buffer");return t}setRectangle(e,t,i,r){this.gl.bufferData(this.gl.ARRAY_BUFFER,this.getRectangle(e,t,i,r),this.gl.STATIC_DRAW)}getRectangle(e,t,i,r){let s=e,a=e+i,h=t,d=t+r;return this.rectBuffer.set([s,h,a,h,s,d,s,d,a,h,a,d]),this.rectBuffer}getRendererScreenPosition(){return this.rendererPosition}finishLayer(){}reset(){}};function le(n,e){let t=e?n:JSON.stringify(n),i=5381,r=t.length;for(;r;)i=i*33^t.charCodeAt(--r);let a=(i>>>0).toString(16);return a.length%2?"0"+a:a}var Xt=class{constructor(e){o(this,"$element");o(this,"stylesheetClasses");o(this,"activeStylesheetClasses");o(this,"sheetsDidUpdate");o(this,"sheetPrefix");o(this,"stylesheetEntries");this.sheetPrefix=e?.sheetPrefix||"a-",this.$element=document.createElement("style"),this.stylesheetClasses=[],this.activeStylesheetClasses=[],this.sheetsDidUpdate=!1,this.stylesheetEntries={}}getElement(){return this.$element}addStylesheet(e){let t=e.replace(/\s\s+/g," ").replace(/: /g,":").replace(/; /g,";").trim(),i=this.sheetPrefix+le(t,!0);return this.stylesheetClasses.indexOf(i)!==-1||(this.stylesheetClasses.push(i),this.activeStylesheetClasses.push(i),this.stylesheetEntries[i]=t,this.sheetsDidUpdate=!0),i}removeStylesheet(e){let t=this.sheetPrefix+le(e,!0);this.stylesheetClasses.indexOf(t)&&(this.stylesheetClasses=this.stylesheetClasses.filter(i=>i!==t)),this.sheetsDidUpdate=!0}clearClasses(){this.activeStylesheetClasses=[]}didUpdateActive(){if(this.activeStylesheetClasses.length){for(let e of this.activeStylesheetClasses)if(this.stylesheetClasses.indexOf(e)===-1)return!0;for(let e of this.stylesheetClasses)if(this.activeStylesheetClasses.indexOf(e)===-1)return!0}return!1}updateSheet(){(this.sheetsDidUpdate||this.didUpdateActive())&&(this.$element.innerText=this.activeStylesheetClasses.map(e=>`.${e}{${this.stylesheetEntries[e]}}`).join(""),this.sheetsDidUpdate=!1,this.stylesheetClasses=[...this.activeStylesheetClasses])}};var kt=class{constructor(e,t){o(this,"htmlContainer");o(this,"visible",[]);o(this,"previousVisible",[]);o(this,"htmlIds",[]);o(this,"firstMeaningfulPaint",!1);o(this,"rendererPosition");o(this,"stylesheet");o(this,"options");o(this,"paintTx",1);o(this,"zIndex",0);o(this,"classes");this.htmlContainer=e,this.htmlContainer.innerHTML="",this.rendererPosition=this.htmlContainer.getBoundingClientRect(),this.options={triggerResize:()=>{},box:!1,text:!1,sheetPrefix:"",inlineStyles:!1,background:"",...t||{}},this.stylesheet=new Xt({sheetPrefix:this.options.sheetPrefix}),this.options.inlineStyles||this.htmlContainer.appendChild(this.stylesheet.getElement()),this.options.background&&this.htmlContainer.classList.add(this.stylesheet.addStylesheet(`
|
|
35
35
|
background: ${this.options.background};
|
|
36
36
|
`)),this.classes={hostClassName:this.stylesheet.addStylesheet(`
|
|
37
37
|
position: absolute;
|
|
38
38
|
transform-origin: 0px 0px;
|
|
39
39
|
`),interactive:this.stylesheet.addStylesheet("pointer-events: all"),nonInteractive:this.stylesheet.addStylesheet("pointer-events: none")},this.stylesheet.updateSheet()}createHtmlHost(e){if(this.htmlContainer&&(this.options.box||e.props.className||e.props.html||e.props.href)){let t=document.createElement(e.props.href?"a":"div");if(e.props.href){t.style.display="block",t.href=e.props.href;let i=e.props.hrefTarget||"_blank";t.target=i,i!=="_self"&&(t.rel="noopener noreferrer")}t.title=e.props.title||"",this.options.inlineStyles?(t.style.display="block",t.style.position="absolute",t.style.overflow="hidden",t.style.transformOrigin="0px 0px"):t.classList.add(this.classes.hostClassName),e.__host={element:t,revision:null,relative:!1},this.updateHtmlHost(e,e.width,e.height),e.__onCreate&&e.__onCreate()}}triggerResize(){this.options.triggerResize()}updateHtmlHost(e,t,i){if(e.__revision!==e.__host.revision){let r=e.__host.element,s=[this.classes.hostClassName];if(e.props.interactive?this.options.inlineStyles?r.style.pointerEvents="all":s.push(this.classes.interactive):this.options.inlineStyles?r.style.pointerEvents="none":s.push(this.classes.nonInteractive),e.props.href){r.style.display="block",r.href=e.props.href;let d=e.props.hrefTarget||"_blank";r.target=d,d!=="_self"?r.rel="noopener noreferrer":r.rel=""}else r.href&&r.removeAttribute("href");if(e.props.title&&(r.title=e.props.title||""),e.props.className&&(s.push(e.props.className),e.hovering&&s.push(`${e.props.className}--hover`),e.pressing&&s.push(`${e.props.className}--active`)),e.props.relativeStyle?(r.style.width=`${t||e.width}px`,r.style.height=`${i||e.height}px`):(r.style.width=`${e.width}px`,r.style.height=`${e.height}px`),e.props.style){Object.assign(r.style,e.props.style||{},e.hovering?e.props.hoverStyles||{}:{},e.pressing?e.props.pressStyles||{}:{});return}if(this.options.text&&e instanceof vt){e.text&&(r.innerText=e.text),e.backgroundColor&&(r.style.backgroundColor=e.backgroundColor),e.color&&(r.style.color=e.color),e.props.font&&(r.style.font=e.props.font),e.props.textAlign&&(r.style.textAlign=e.props.textAlign),e.__host.revision=e.__revision;let d=s.join(" ");r.className=d,r.part=d}e instanceof st&&(this.options.box||e.props.className||e.props.html)&&(e.props.backgroundColor&&(r.style.backgroundColor=e.props.backgroundColor),e.props.border!==r.style.border&&(r.style.border=e.props.border));let h=s.join(" ");r.className=h,r.part=h}}afterFrame(e,t,i){this.stylesheet.updateSheet();for(let r of this.previousVisible)this.visible.indexOf(r)===-1&&this.htmlContainer&&r.__id&&this.htmlIds.indexOf(r.__id)!==-1&&this.htmlContainer.removeChild(r.__host.element);this.previousVisible=this.visible}afterPaintLayer(e,t){}beforeFrame(e,t,i){this.stylesheet.clearClasses(),this.paintTx++,this.zIndex=0,this.visible=[]}getPointsAt(e,t,i,r){return e.getPointsAt(t,i,r)}getScale(e,t){let i=this.rendererPosition.width/e,r=this.rendererPosition.height/t;return i<r?r:i}getViewportBounds(e,t,i){return null}isReady(){return!1}paint(e,t,i,r,s,a){if(this.zIndex++,(this.options.text&&e instanceof vt||e instanceof st&&(this.options.box||e.props.className||e.props.html))&&e.__host.tx!==this.paintTx&&(this.visible.push(e),e.__host.tx=this.paintTx,this.htmlContainer)){this.updateHtmlHost(e,s,a);let h=s/e.width,d=e.__host.element;d.style.zIndex=`${this.zIndex}`,e.props.relativeStyle?d.style.transform=`translate(${Math.round(i)}px, ${Math.round(r)}px)`:d.style.transform=`translate(${Math.round(i)}px, ${Math.round(r)}px) scale(${h})`,this.previousVisible.indexOf(e)===-1&&this.htmlContainer.appendChild(d),this.htmlIds.indexOf(e.__id)===-1&&this.htmlIds.push(e.__id)}}pendingUpdate(){return!1}prepareLayer(e){e.__host||(e instanceof vt||e instanceof st)&&this.createHtmlHost(e)}resize(e,t){typeof e<"u"&&typeof t<"u"&&(this.htmlContainer.style.width=`${e}px`,this.htmlContainer.style.height=`${t}px`),this.rendererPosition=this.htmlContainer.getBoundingClientRect()}getRendererScreenPosition(){return this.rendererPosition}finishLayer(){}reset(){}};var Zt=class Zt{constructor(e,t,i){o(this,"element");o(this,"runtime");o(this,"unsubscribe");o(this,"activatedEvents",[]);o(this,"eventHandlers",[]);o(this,"bounds");o(this,"listening");o(this,"pointerMoveEvent");o(this,"pointerEventState",{isClicking:!1,isDragging:!1,isPressed:!1,mousedOver:[],itemsBeingDragged:[],mouseDownStart:{x:0,y:0},lastTouches:[]});o(this,"options");o(this,"_realPointerMove",e=>{this.pointerMoveEvent=e});o(this,"onWheelEvent",e=>{e.preventDefault(),this.onPointerEvent(e)});o(this,"onTouchEvent",e=>{let t=rt[e.type],i=[],r=e.touches.length;for(let s=0;s<r;s++){let a=e.touches.item(s);if(!a)continue;let{x:h,y:d}=this.runtime.viewerToWorld(a.clientX-this.bounds.left,a.clientY-this.bounds.top),u={id:a.identifier,x:h,y:d};i.push(u)}i.length&&this.assignToEvent(e,i[0].x,i[0].y),t!=="onTouchEnd"?(this.pointerEventState.lastTouches=i,e.atlasTouches=i,this.runtime.world.propagateTouchEvent(t,e,i)):(e.atlasTouches=[],this.runtime.world.propagateTouchEvent(t,e,this.pointerEventState.lastTouches),this.pointerEventState.lastTouches=[])});o(this,"onPointerEvent",e=>{let t=rt[e.type];if(t&&this.runtime.world.activatedEvents.indexOf(t)!==-1){let{x:i,y:r}=this.runtime.viewerToWorld(e.clientX-this.bounds.left,e.clientY-this.bounds.top);this.assignToEvent(e,i,r),this.runtime.world.propagatePointerEvent(t,e,i,r)}});o(this,"onPointerDown",e=>{this.pointerEventState.isPressed=!0,this.pointerEventState.isClicking=!0,this.pointerEventState.mouseDownStart.x=e.clientX,this.pointerEventState.mouseDownStart.y=e.clientY,setTimeout(()=>{this.runtime&&(this.pointerEventState.isClicking=!1)},250),setTimeout(()=>{if(this.runtime&&this.pointerEventState.isPressed&&!this.pointerEventState.isDragging){let t=this.runtime.viewerToWorld(this.pointerEventState.mouseDownStart.x-this.bounds.left,this.pointerEventState.mouseDownStart.y-this.bounds.top);this.pointerEventState.isDragging=!0,this.pointerEventState.itemsBeingDragged=this.runtime.world.propagatePointerEvent("onDragStart",e,t.x,t.y)}},800),this.onPointerEvent(e)});o(this,"onPointerUp",e=>{if(this.pointerEventState.isClicking){let{x:t,y:i}=this.runtime.viewerToWorld(e.clientX-this.bounds.left,e.clientY-this.bounds.top);this.assignToEvent(e,t,i),this.runtime.world.propagatePointerEvent("onClick",e,t,i)}if(this.pointerEventState.isDragging){for(let t of this.pointerEventState.itemsBeingDragged)t.dispatchEvent("onDragEnd",e);this.pointerEventState.isDragging=!1}this.pointerEventState.isClicking=!1,this.pointerEventState.isPressed=!1,this.pointerEventState.itemsBeingDragged=[],this.onPointerEvent(e)});o(this,"onPointerMove",e=>{this.pointerMoveEvent=void 0;let{x:t,y:i}=this.runtime.viewerToWorld(e.clientX-this.bounds.left,e.clientY-this.bounds.top);if(Number.isNaN(t)||Number.isNaN(i))return;this.assignToEvent(e,t,i),this.runtime.world.propagatePointerEvent("onPointerMove",e,t,i);let r=this.runtime.world.propagatePointerEvent("onMouseMove",e,t,i),s=[],a=[];for(let h of r)s.push(h.id),a.push(h),this.pointerEventState.mousedOver.indexOf(h)===-1&&(h.dispatchEvent("onMouseEnter",e),h.dispatchEvent("onPointerEnter",e),h.dispatchEvent("onMouseOver",e),h.dispatchEvent("onPointerOver",e));for(let h of this.pointerEventState.mousedOver)s.indexOf(h.id)===-1&&(h.dispatchEvent("onMouseLeave",e),h.dispatchEvent("onPointerLeave",e),h.dispatchEvent("onMouseOut",e),h.dispatchEvent("onPointerOut",e));if(this.pointerEventState.isDragging)for(let h of this.pointerEventState.itemsBeingDragged)h.dispatchEvent("onDrag",e);if(this.pointerEventState.isPressed&&!this.pointerEventState.isDragging&&Mt(this.pointerEventState.mouseDownStart,{x:e.clientX,y:e.clientY})>50){let h=this.runtime.viewerToWorld(this.pointerEventState.mouseDownStart.x-this.bounds.left,this.pointerEventState.mouseDownStart.y-this.bounds.top);this.pointerEventState.isDragging=!0,this.pointerEventState.itemsBeingDragged=this.runtime.world.propagatePointerEvent("onDragStart",{...e,atlas:{x:h.x,y:h.y}},h.x,h.y)}this.pointerEventState.mousedOver=a});this.element=e,this.runtime=t,this.unsubscribe=t.world.addLayoutSubscriber(this.layoutSubscriber.bind(this)),this.bounds=e.getBoundingClientRect(),this.listening=!1,this.options={simulationRate:0,...i||{}};let r=0;t.registerHook("useFrame",s=>{r+=s,r>this.options.simulationRate&&this.pointerMoveEvent&&(r=0,t.updateNextFrame())}),t.registerHook("useBeforeFrame",()=>{this.pointerMoveEvent&&this.onPointerMove(this.pointerMoveEvent)}),this.activateEvents()}updateBounds(){this.bounds=this.element.getBoundingClientRect(),this.runtime.updateRendererScreenPosition()}layoutSubscriber(e){e==="event-activation"&&this.listening==!1&&this.activateEvents()}assignToEvent(e,t,i){Zt.eventPool.atlas.x=t,Zt.eventPool.atlas.y=i,e.atlas=Zt.eventPool.atlas}activateEvents(){this.listening=!0,this.element.addEventListener("pointermove",this._realPointerMove),this.element.addEventListener("pointerup",this.onPointerUp),this.element.addEventListener("pointerdown",this.onPointerDown),this.element.addEventListener("mousedown",this.onPointerEvent),this.element.addEventListener("mouseup",this.onPointerEvent),this.element.addEventListener("pointercancel",this.onPointerEvent),this.element.addEventListener("wheel",this.onWheelEvent),this.element.addEventListener("touchstart",this.onTouchEvent),this.element.addEventListener("touchcancel",this.onTouchEvent),this.element.addEventListener("touchend",this.onTouchEvent),this.element.addEventListener("touchmove",this.onTouchEvent)}normalizeEventName(e){return e.startsWith("on")?e.slice(2).toLowerCase():e.toLowerCase()}stop(){this.listening=!1,this.element.removeEventListener("pointermove",this._realPointerMove),this.element.removeEventListener("pointerup",this.onPointerUp),this.element.removeEventListener("pointerdown",this.onPointerDown),this.element.removeEventListener("mousedown",this.onPointerEvent),this.element.removeEventListener("mouseup",this.onPointerEvent),this.element.removeEventListener("pointercancel",this.onPointerEvent),this.element.removeEventListener("wheel",this.onWheelEvent),this.element.removeEventListener("touchstart",this.onTouchEvent),this.element.removeEventListener("touchcancel",this.onTouchEvent),this.element.removeEventListener("touchend",this.onTouchEvent),this.element.removeEventListener("touchmove",this.onTouchEvent),this.unsubscribe();for(let[e,t]of this.eventHandlers)this.element.removeEventListener(this.normalizeEventName(e),t)}};o(Zt,"eventPool",{atlas:{x:0,y:0}});var Ft=Zt;function de({interactive:n=!0,viewport:e,forceRefresh:t,canvasElement:i,overlayElement:r,controllerConfig:s,unstable_webglRenderer:a,dpi:h,debug:d,canvasBox:u=!0,polygon:l=!0,navigatorElement:c,background:m,runtimeOptions:y}){if(!i)throw new Error("Invalid container");i.style.userSelect="none";let b=n?re({minZoomFactor:.5,maxZoomFactor:3,enableClickToZoom:!1,parentElement:i,...s||{}}):void 0,S=new Lt([a?new he(i,{dpi:h}):new ie(i,{dpi:h,debug:d,box:u,polygon:l,background:m}),r?new kt(r,{box:a||!u,text:!0,triggerResize:t}):void 0,c?new ne(c):void 0]),P=new ct(S,new it(1024,1024),e,b?[b]:[],y),g=new Ft(i,P);return{name:"default-preset",em:g,runtime:P,renderer:S,controller:b,canvas:i,navigator:c,unmount(){$t(P),P.stopControllers(),P.stop(),P.reset(),g&&g.stop()}}}var Tt=1+Number.MIN_VALUE,ce=class{constructor(e,t){o(this,"container");o(this,"width");o(this,"height");o(this,"pending",!0);o(this,"options");o(this,"stylesheet");o(this,"zIndex",0);o(this,"lastKnownScale",1);o(this,"rendererPosition");o(this,"currentlyVisible",[]);o(this,"previouslyVisible",[]);this.container=e,this.rendererPosition=e.getBoundingClientRect();let{width:i,height:r}=this.rendererPosition;this.width=i,this.height=r,this.options={addPart:!1,setDraggableFalse:!1,imageClass:"",widthStylesheet:!1,sheetPrefix:"position-",background:"#000",...t||{}},this.stylesheet=new Xt({sheetPrefix:this.options.sheetPrefix}),this.container.classList.add(this.stylesheet.addStylesheet(`
|
|
40
40
|
background: ${this.options.background};
|
|
41
|
-
`)),this.options.widthStylesheet&&this.container.appendChild(this.stylesheet.getElement())}isReady(){return!0}resize(){this.rendererPosition=this.container.getBoundingClientRect(),this.width=this.rendererPosition.width,this.height=this.rendererPosition.height}getRendererScreenPosition(){return this.rendererPosition}afterFrame(e,t,i){this.stylesheet.updateSheet();for(let r of this.previouslyVisible)this.currentlyVisible.indexOf(r)===-1&&this.container.removeChild(r);for(let r of this.currentlyVisible)this.previouslyVisible.indexOf(r)===-1&&this.container.appendChild(r);this.previouslyVisible=this.currentlyVisible,this.currentlyVisible=[]}afterPaintLayer(e,t){}beforeFrame(e,t,i){this.stylesheet.clearClasses(),this.zIndex=0}getPointsAt(e,t,i,r){return e.getPointsAt(t,i,r)}getScale(e,t){if(Number.isNaN(e)||Number.isNaN(t))return this.lastKnownScale;let i=this.width/e,r=this.height/t,s=i<r?r:i;return Number.isNaN(s)||(this.lastKnownScale=s),this.lastKnownScale}getViewportBounds(e,t,i){return null}createImage(){let e=document.createElement("img");return this.options.imageClass?(e.className=this.options.imageClass,this.options.addPart&&e.setAttribute("part",this.options.imageClass)):(e.style.position="absolute",e.style.pointerEvents="none",e.style.userSelect="none"),this.options.setDraggableFalse&&e.setAttribute("draggable","false"),e}paint(e,t,i,r,s,a){if(this.pending=!1,this.zIndex++,e instanceof z){if(!e.__host){let d=this.createImage();d.src=e.uri,e.__host=d,this.container.appendChild(e.__host)}let h=e.__host;this.currentlyVisible.push(h),h.style.zIndex=`${this.zIndex}`,h.style.opacity=`${e.style.opacity}`,this.options.widthStylesheet?h.className=this.options.imageClass+" "+this.stylesheet.addStylesheet(`width:${(s+Tt).toFixed(2)}px;height:${(a+Tt).toFixed(2)}px;`):(h.style.width=`${s+Tt}px`,h.style.height=`${a+Tt}px`),h.style.transform=`translate(${i}px, ${r}px)`}if(e instanceof et){if(e.__host||(e.__host={images:[]}),!e.__host.images[t]){let d=e.getImageUrl(t),u=this.createImage();u.src=d,e.__host.images[t]=u,this.container.appendChild(u)}let h=e.__host.images[t];h.style.zIndex=`${this.zIndex}`,h.style.opacity=`${e.style.opacity}`,this.currentlyVisible.push(h),this.options.widthStylesheet?h.className=this.options.imageClass+" "+this.stylesheet.addStylesheet(`width:${(s+Tt).toFixed(2)}px;height:${(a+Tt).toFixed(2)}px;`):(h.style.width=`${s+Tt}px`,h.style.height=`${a+Tt}px`),h.style.transform=`translate(${i}px, ${r}px)`}}pendingUpdate(){return this.pending}prepareLayer(e){}finishLayer(e){}reset(){}};function Ze({interactive:n,viewport:e,forceRefresh:t,containerElement:i,overlayElement:r,controllerConfig:s,background:a}){if(!i)throw new Error("Invalid container");i.style.userSelect="none";let h=n?re({minZoomFactor:.5,maxZoomFactor:3,enableClickToZoom:!1,parentElement:i,...s||{}}):void 0,d=new ce(i,{addPart:!1,setDraggableFalse:!1,imageClass:"atlas-static-image",background:a}),u=r?new Lt([d,new kt(r,{box:!0,text:!0,triggerResize:t})]):d,l=new ct(u,new it(1024,1024),e,h?[h]:[]),c=new Ft(i,l);return{name:"static-preset",em:c,runtime:l,renderer:u,controller:h,container:i,overlay:r,unmount(){$t(l),l.stopControllers(),l.stop(),c&&c.stop()}}}var Ye={"default-preset":de,"static-preset":Ze};var nt=require("react"),In={};function Ie(n,e){let t=(0,nt.useRef)(),i=(0,nt.useRef)(),r=(0,nt.useRef)(),s=(0,nt.useRef)(),a=(0,nt.useRef)({width:e.width,height:e.height,didUpdate:!0}),[h="default-preset",d=In]=Array.isArray(n)?n||[]:[n],[u,l]=(0,nt.useState)(null);(0,nt.useLayoutEffect)(()=>{let m=i.current,y=s.current,b=t.current,S=r.current,g=(Ye[h]||de)({containerElement:y,canvasElement:m,overlayElement:b,navigatorElement:S,viewport:a.current,dpi:window.devicePixelRatio||1,forceRefresh:e.forceRefresh,unstable_webglRenderer:e.unstable_webglRenderer,...d||{}});return l(g),()=>{g&&(g.unmount(),m&&(m.height=0,m.width=0),b&&(b.innerHTML=""),S&&(S.height=0,S.width=0))}},[h,d]);let c=(0,nt.useMemo)(()=>({canvas:i,overlay:t,container:s,navigator:r}),[]);return[h,u,a,c]}var Wi=require("react");function Ni(n){return(0,Wi.useMemo)(()=>le(n),n)}var zi=J(require("react"),1),Hi=require("react/jsx-runtime"),Dt=zi.default.forwardRef((n,e)=>(0,Hi.jsx)("div",{...n,ref:e,part:n.className}));var Z=require("react/jsx-runtime"),ji=["brightness","contrast","grayscale","hueRotate","invert","saturate","sepia","blur"],Qe=({htmlChildren:n,renderPreset:e,onCreated:t,mode:i="explore",resetWorldOnChange:r=!0,unstable_webglRenderer:s=!1,unstable_noReconciler:a=!1,hideInlineStyle:h=!1,controllerConfig:d,children:u,overlayStyle:l,containerStyle:c,enableNavigator:m,className:y,containerProps:b={},homePosition:S,homeOnResize:P,homeCover:g,background:f,runtimeOptions:_,debug:A,filters:x,...v})=>{let[M,q]=(0,F.useState)(f),[G,w]=(0,F.useState)(i),[T,L]=(0,F.useState)(!1),_t=(0,F.useRef)(!1),$=(0,F.useMemo)(()=>(typeof e=="string"&&(e=[e,{}]),M||A?e?[e[0],{debug:A,background:M,...e[1]||{}}]:["default-preset",{background:M,debug:A}]:e||"default-preset"),[e,M,A]),[at,Y,zt]=(0,Ui.default)({scroll:!0}),Ot=(0,F.useRef)(),bt=E=>{Ot.current=E,at(E)},[hi,p,W,fe]=Ie($,{width:v.width,height:v.height,forceRefresh:zt,unstable_webglRenderer:s}),[hn,li]=(0,F.useState)("");(0,F.useEffect)(()=>{w(i)},[i]),(0,F.useEffect)(()=>{p&&p.em&&p.em.updateBounds()},[p,Y]),(0,F.useEffect)(()=>{p?.runtime.setOptions(_||{})},[_]),(0,F.useEffect)(()=>{p&&p.runtime&&(p.runtime.mode=G),T&&p&&(p.ready=!0)},[p,T,G]),(0,F.useEffect)(()=>{p&&(g||(p.runtime.manualHomePosition=!!S,p.runtime.setHomePosition(S)))},[p,g,S]),(0,F.useEffect)(()=>{if(p){let E=p.runtime;E.resize(W.current.width,v.width,W.current.height,v.height),W.current.width=v.width,W.current.height=v.height,E.updateNextFrame(),W.current.didUpdate=!0}},[p,v.width,v.height]),(0,F.useEffect)(()=>{if(x&&p){let E=p.runtime,C=!1;E.hookOptions.enableFilters=!0;for(let k of ji)x[k]?x[k]!==p.runtime.hookOptions.filters[k]&&(E.hookOptions.filters[k]=x[k],C=!0):E.hookOptions.filters[k]&&(E.hookOptions.filters[k]=0,C=!0);C&&E.updateNextFrame()}else if(p){let E=p.runtime;for(let C of ji)E.hookOptions.filters[C]=0;E.hookOptions.enableFilters=!1,E.updateNextFrame()}},[p,x]),K(()=>{if(p&&(p.overlay&&(p.overlay.style.width=`${Y.width}px`,p.overlay.style.height=`${Y.height}px`),p.container&&(p.container.style.width=`${Y.width}px`,p.container.style.height=`${Y.height}px`),g)){let E=p.runtime.world.width,C=p.runtime.world.height,k=E/C,tt=W.current.width,Yt=W.current.height,xt=tt/Yt;if(k>xt){xt=Yt/tt,p.runtime.manualHomePosition=!0;let At=(E-C/xt)/2;g==="start"&&(At=0),g==="end"&&(At=E-C/xt),p.runtime.setHomePosition({x:At,y:0,width:C/xt,height:C})}else{let At=(C-E/xt)/2;g==="start"&&(At=0),g==="end"&&(At=C-E/xt),p.runtime.manualHomePosition=!0,p.runtime.setHomePosition({x:0,y:At,width:E,height:E/xt})}P&&p.runtime.goHome({})}},[p,Y.height,Y.width,g]),K(()=>{let E=()=>{if(p){let C=p.runtime;W.current.width!==v.width&&W.current.height!==v.height&&(C.resize(W.current.width,v.width,W.current.height,v.height),W.current.width=v.width,W.current.height=v.height,C.updateNextFrame(),W.current.didUpdate=!0)}};return window.addEventListener("resize",E),()=>window.removeEventListener("resize",E)},[p,v.height,v.width]);let di={width:120},ci=()=>{if(p&&p.navigator){let E=p.runtime.world.height,C=p.runtime.world.width,k=window.devicePixelRatio||1,tt=di.width,Yt=di.width/C*E;p.navigator.width=tt*k,p.navigator.height=Yt*k,p.navigator.style.width=tt+"px",p.navigator.style.height=Yt+"px"}};K(()=>{if(p){ci();let E=p.runtime;return E.world.addLayoutSubscriber(C=>{C==="recalculate-world-size"&&(ci(),E.resize(W.current.width,v.width,W.current.height,v.height))})}return()=>{}},[p,v.width,v.height]);let ln=(0,F.useCallback)(function(C){let k=()=>{L(!0)};return(0,F.useEffect)(()=>{if(p){p.runtime.goHome();let tt=t&&t(p);return void(tt&&tt.then?tt.then(k):k())}else throw new Error("Invalid configuration - no runtime found")},[]),C.children},[p]);(0,F.useEffect)(()=>{if(p){let E=p.runtime;if(r)return E.world.addLayoutSubscriber(C=>{C==="recalculate-world-size"&&E.goHome()})}return()=>{}},[p,r]),(0,F.useEffect)(()=>p?p.runtime.registerHook("useBeforeFrame",()=>{if(W.current.didUpdate&&p.canvas){let C=window.devicePixelRatio||1,k=W.current.width,tt=W.current.height;p.canvas.width=k*C,p.canvas.height=tt*C,p.canvas.style.width=k+"px",p.canvas.style.height=tt+"px",p.canvas.getContext("2d")?.scale(C,C),p&&p.em&&p.em.updateBounds(),W.current.didUpdate=!1}}):()=>{},[p,r]),(0,F.useEffect)(()=>{let E=()=>{p&&(w("sketch"),li("mode-sketch")),window.removeEventListener("keyup",E)},C=k=>{if(k.code==="Space"&&p&&p.runtime.mode==="sketch"){if(k.target&&k.target.tagName&&k.target.tagName.toLowerCase()==="input")return;k.preventDefault(),w("explore"),li("mode-explore"),window.addEventListener("keyup",E)}};return window.addEventListener("keydown",C),()=>{window.removeEventListener("keydown",C),window.removeEventListener("keyup",E)}},[p]),K(()=>{if(Ot.current&&!M){let C=getComputedStyle(Ot.current).getPropertyValue("--atlas-background");C&&q(C)}},[M]),_t.current=!0;let{height:Xn,width:Zn,...dn}=v,He=Ni([v.width,v.height]);return(0,Z.jsxs)(Dt,{ref:bt,className:["atlas",h?"":`atlas-width-${He}`,hn,y,`atlas-${hi}`].filter(Boolean).join(" ").trim(),style:{...c,...h?{}:{width:v.width,height:v.height}},children:[hi==="static-preset"?(0,Z.jsx)(Dt,{className:"atlas-static-container",style:p&&p.controller?void 0:{pointerEvents:"none"},ref:fe.container,tabIndex:0,...b}):(0,Z.jsx)("canvas",{className:"atlas-canvas",part:"atlas-canvas",tabIndex:0,...dn,...b,ref:fe.canvas}),(0,Z.jsx)(Dt,{className:"atlas-overlay",style:{...l||{}},ref:fe.overlay,children:a?(0,Z.jsx)(ln,{children:(0,Z.jsx)(Rt.Provider,{value:Y,children:(0,Z.jsx)(ut.Provider,{value:G,children:(0,Z.jsx)(mt.Provider,{value:p,children:u})})})}):(0,Z.jsx)(Bi,{bounds:Y,preset:p,mode:G,setIsReady:L,onCreated:t,children:u})}),m?(0,Z.jsx)(Dt,{className:"atlas-navigator",children:(0,Z.jsx)("canvas",{className:"atlas-navigator-canvas",part:"atlas-navigator-canvas",ref:fe.navigator})}):null,h?(0,Z.jsx)("style",{children:`.atlas-width-${He} { width: ${v.width}px; height: ${v.height}px; }`}):(0,Z.jsx)("style",{children:`
|
|
41
|
+
`)),this.options.widthStylesheet&&this.container.appendChild(this.stylesheet.getElement())}isReady(){return!0}resize(){this.rendererPosition=this.container.getBoundingClientRect(),this.width=this.rendererPosition.width,this.height=this.rendererPosition.height}getRendererScreenPosition(){return this.rendererPosition}afterFrame(e,t,i){this.stylesheet.updateSheet();for(let r of this.previouslyVisible)this.currentlyVisible.indexOf(r)===-1&&this.container.removeChild(r);for(let r of this.currentlyVisible)this.previouslyVisible.indexOf(r)===-1&&this.container.appendChild(r);this.previouslyVisible=this.currentlyVisible,this.currentlyVisible=[]}afterPaintLayer(e,t){}beforeFrame(e,t,i){this.stylesheet.clearClasses(),this.zIndex=0}getPointsAt(e,t,i,r){return e.getPointsAt(t,i,r)}getScale(e,t){if(Number.isNaN(e)||Number.isNaN(t))return this.lastKnownScale;let i=this.width/e,r=this.height/t,s=i<r?r:i;return Number.isNaN(s)||(this.lastKnownScale=s),this.lastKnownScale}getViewportBounds(e,t,i){return null}createImage(){let e=document.createElement("img");return this.options.imageClass?(e.className=this.options.imageClass,this.options.addPart&&e.setAttribute("part",this.options.imageClass)):(e.style.position="absolute",e.style.pointerEvents="none",e.style.userSelect="none"),this.options.setDraggableFalse&&e.setAttribute("draggable","false"),e}paint(e,t,i,r,s,a){if(this.pending=!1,this.zIndex++,e instanceof H){if(!e.__host){let d=this.createImage();d.src=e.uri,e.__host=d,this.container.appendChild(e.__host)}let h=e.__host;this.currentlyVisible.push(h),h.style.zIndex=`${this.zIndex}`,h.style.opacity=`${e.style.opacity}`,this.options.widthStylesheet?h.className=this.options.imageClass+" "+this.stylesheet.addStylesheet(`width:${(s+Tt).toFixed(2)}px;height:${(a+Tt).toFixed(2)}px;`):(h.style.width=`${s+Tt}px`,h.style.height=`${a+Tt}px`),h.style.transform=`translate(${i}px, ${r}px)`}if(e instanceof et){if(e.__host||(e.__host={images:[]}),!e.__host.images[t]){let d=e.getImageUrl(t),u=this.createImage();u.src=d,e.__host.images[t]=u,this.container.appendChild(u)}let h=e.__host.images[t];h.style.zIndex=`${this.zIndex}`,h.style.opacity=`${e.style.opacity}`,this.currentlyVisible.push(h),this.options.widthStylesheet?h.className=this.options.imageClass+" "+this.stylesheet.addStylesheet(`width:${(s+Tt).toFixed(2)}px;height:${(a+Tt).toFixed(2)}px;`):(h.style.width=`${s+Tt}px`,h.style.height=`${a+Tt}px`),h.style.transform=`translate(${i}px, ${r}px)`}}pendingUpdate(){return this.pending}prepareLayer(e){}finishLayer(e){}reset(){}};function Ze({interactive:n,viewport:e,forceRefresh:t,containerElement:i,overlayElement:r,controllerConfig:s,background:a}){if(!i)throw new Error("Invalid container");i.style.userSelect="none";let h=n?re({minZoomFactor:.5,maxZoomFactor:3,enableClickToZoom:!1,parentElement:i,...s||{}}):void 0,d=new ce(i,{addPart:!1,setDraggableFalse:!1,imageClass:"atlas-static-image",background:a}),u=r?new Lt([d,new kt(r,{box:!0,text:!0,triggerResize:t})]):d,l=new ct(u,new it(1024,1024),e,h?[h]:[]),c=new Ft(i,l);return{name:"static-preset",em:c,runtime:l,renderer:u,controller:h,container:i,overlay:r,unmount(){$t(l),l.stopControllers(),l.stop(),c&&c.stop()}}}var Ye={"default-preset":de,"static-preset":Ze};var nt=require("react"),Ln={};function Ie(n,e){let t=(0,nt.useRef)(),i=(0,nt.useRef)(),r=(0,nt.useRef)(),s=(0,nt.useRef)(),a=(0,nt.useRef)({width:e.width,height:e.height,didUpdate:!0}),[h="default-preset",d=Ln]=Array.isArray(n)?n||[]:[n],[u,l]=(0,nt.useState)(null);(0,nt.useLayoutEffect)(()=>{let m=i.current,y=s.current,b=t.current,S=r.current,g=(Ye[h]||de)({containerElement:y,canvasElement:m,overlayElement:b,navigatorElement:S,viewport:a.current,dpi:window.devicePixelRatio||1,forceRefresh:e.forceRefresh,unstable_webglRenderer:e.unstable_webglRenderer,...d||{}});return l(g),()=>{g&&(g.unmount(),m&&(m.height=0,m.width=0),b&&(b.innerHTML=""),S&&(S.height=0,S.width=0))}},[h,d]);let c=(0,nt.useMemo)(()=>({canvas:i,overlay:t,container:s,navigator:r}),[]);return[h,u,a,c]}var Ni=require("react");function zi(n){return(0,Ni.useMemo)(()=>le(n),n)}var Hi=J(require("react"),1),ji=require("react/jsx-runtime"),Dt=Hi.default.forwardRef((n,e)=>(0,ji.jsx)("div",{...n,ref:e,part:n.className}));var Z=require("react/jsx-runtime"),Ui=["brightness","contrast","grayscale","hueRotate","invert","saturate","sepia","blur"],Qe=({htmlChildren:n,renderPreset:e,onCreated:t,mode:i="explore",resetWorldOnChange:r=!0,unstable_webglRenderer:s=!1,unstable_noReconciler:a=!1,hideInlineStyle:h=!1,controllerConfig:d,children:u,overlayStyle:l,containerStyle:c,enableNavigator:m,className:y,containerProps:b={},homePosition:S,homeOnResize:P,homeCover:g,background:f,runtimeOptions:_,debug:A,filters:x,...v})=>{let[M,q]=(0,F.useState)(f),[G,w]=(0,F.useState)(i),[T,L]=(0,F.useState)(!1),_t=(0,F.useRef)(!1),W=(0,F.useMemo)(()=>(typeof e=="string"&&(e=[e,{}]),M||A?e?[e[0],{debug:A,background:M,...e[1]||{}}]:["default-preset",{background:M,debug:A}]:e||"default-preset"),[e,M,A]),[at,Y,zt]=(0,$i.default)({scroll:!0}),Ot=(0,F.useRef)(),bt=E=>{Ot.current=E,at(E)},[hi,p,N,fe]=Ie(W,{width:v.width,height:v.height,forceRefresh:zt,unstable_webglRenderer:s}),[ln,li]=(0,F.useState)("");(0,F.useEffect)(()=>{w(i)},[i]),(0,F.useEffect)(()=>{p&&p.em&&p.em.updateBounds()},[p,Y]),(0,F.useEffect)(()=>{p?.runtime.setOptions(_||{})},[_]),(0,F.useEffect)(()=>{p&&p.runtime&&(p.runtime.mode=G),T&&p&&(p.ready=!0)},[p,T,G]),(0,F.useEffect)(()=>{p&&(g||(p.runtime.manualHomePosition=!!S,p.runtime.setHomePosition(S)))},[p,g,S]),(0,F.useEffect)(()=>{if(p){let E=p.runtime;E.resize(N.current.width,v.width,N.current.height,v.height),N.current.width=v.width,N.current.height=v.height,E.updateNextFrame(),N.current.didUpdate=!0}},[p,v.width,v.height]),(0,F.useEffect)(()=>{if(x&&p){let E=p.runtime,C=!1;E.hookOptions.enableFilters=!0;for(let k of Ui)x[k]?x[k]!==p.runtime.hookOptions.filters[k]&&(E.hookOptions.filters[k]=x[k],C=!0):E.hookOptions.filters[k]&&(E.hookOptions.filters[k]=0,C=!0);C&&E.updateNextFrame()}else if(p){let E=p.runtime;for(let C of Ui)E.hookOptions.filters[C]=0;E.hookOptions.enableFilters=!1,E.updateNextFrame()}},[p,x]),K(()=>{if(p&&(p.overlay&&(p.overlay.style.width=`${Y.width}px`,p.overlay.style.height=`${Y.height}px`),p.container&&(p.container.style.width=`${Y.width}px`,p.container.style.height=`${Y.height}px`),g)){let E=p.runtime.world.width,C=p.runtime.world.height,k=E/C,tt=N.current.width,Yt=N.current.height,xt=tt/Yt;if(k>xt){xt=Yt/tt,p.runtime.manualHomePosition=!0;let At=(E-C/xt)/2;g==="start"&&(At=0),g==="end"&&(At=E-C/xt),p.runtime.setHomePosition({x:At,y:0,width:C/xt,height:C})}else{let At=(C-E/xt)/2;g==="start"&&(At=0),g==="end"&&(At=C-E/xt),p.runtime.manualHomePosition=!0,p.runtime.setHomePosition({x:0,y:At,width:E,height:E/xt})}P&&p.runtime.goHome({})}},[p,Y.height,Y.width,g]),K(()=>{let E=()=>{if(p){let C=p.runtime;N.current.width!==v.width&&N.current.height!==v.height&&(C.resize(N.current.width,v.width,N.current.height,v.height),N.current.width=v.width,N.current.height=v.height,C.updateNextFrame(),N.current.didUpdate=!0)}};return window.addEventListener("resize",E),()=>window.removeEventListener("resize",E)},[p,v.height,v.width]);let di={width:120},ci=()=>{if(p&&p.navigator){let E=p.runtime.world.height,C=p.runtime.world.width,k=window.devicePixelRatio||1,tt=di.width,Yt=di.width/C*E;p.navigator.width=tt*k,p.navigator.height=Yt*k,p.navigator.style.width=tt+"px",p.navigator.style.height=Yt+"px"}};K(()=>{if(p){ci();let E=p.runtime;return E.world.addLayoutSubscriber(C=>{C==="recalculate-world-size"&&(ci(),E.resize(N.current.width,v.width,N.current.height,v.height))})}return()=>{}},[p,v.width,v.height]);let dn=(0,F.useCallback)(function(C){let k=()=>{L(!0)};return(0,F.useEffect)(()=>{if(p){p.runtime.goHome();let tt=t&&t(p);return void(tt&&tt.then?tt.then(k):k())}else throw new Error("Invalid configuration - no runtime found")},[]),C.children},[p]);(0,F.useEffect)(()=>{if(p){let E=p.runtime;if(r)return E.world.addLayoutSubscriber(C=>{C==="recalculate-world-size"&&E.goHome()})}return()=>{}},[p,r]),(0,F.useEffect)(()=>p?p.runtime.registerHook("useBeforeFrame",()=>{if(N.current.didUpdate&&p.canvas){let C=window.devicePixelRatio||1,k=N.current.width,tt=N.current.height;p.canvas.width=k*C,p.canvas.height=tt*C,p.canvas.style.width=k+"px",p.canvas.style.height=tt+"px",p.canvas.getContext("2d")?.scale(C,C),p&&p.em&&p.em.updateBounds(),N.current.didUpdate=!1}}):()=>{},[p,r]),(0,F.useEffect)(()=>{let E=()=>{p&&(w("sketch"),li("mode-sketch")),window.removeEventListener("keyup",E)},C=k=>{if(k.code==="Space"&&p&&p.runtime.mode==="sketch"){if(k.target&&k.target.tagName&&k.target.tagName.toLowerCase()==="input")return;k.preventDefault(),w("explore"),li("mode-explore"),window.addEventListener("keyup",E)}};return window.addEventListener("keydown",C),()=>{window.removeEventListener("keydown",C),window.removeEventListener("keyup",E)}},[p]),K(()=>{if(Ot.current&&!M){let C=getComputedStyle(Ot.current).getPropertyValue("--atlas-background");C&&q(C)}},[M]),_t.current=!0;let{height:Zn,width:Yn,...cn}=v,He=zi([v.width,v.height]),ui=!0;return W&&Array.isArray(W)&&W.length>1&&W[1].interactive===!1&&(ui=!1),(0,Z.jsxs)(Dt,{ref:bt,className:["atlas",h?"":`atlas-width-${He}`,ln,y,`atlas-${hi}`].filter(Boolean).join(" ").trim(),style:{...c,...h?{}:{width:v.width,height:v.height}},children:[hi==="static-preset"?(0,Z.jsx)(Dt,{className:"atlas-static-container",ref:fe.container,tabIndex:0,...b}):(0,Z.jsx)("canvas",{className:"atlas-canvas",part:"atlas-canvas",tabIndex:0,...cn,...b,ref:fe.canvas}),(0,Z.jsx)(Dt,{className:["atlas-overlay",ui?"atlas-overlay--interactive":""].filter(Boolean).join(" ").trim(),style:{...l||{}},ref:fe.overlay,children:a?(0,Z.jsx)(dn,{children:(0,Z.jsx)(Rt.Provider,{value:Y,children:(0,Z.jsx)(ut.Provider,{value:G,children:(0,Z.jsx)(mt.Provider,{value:p,children:u})})})}):(0,Z.jsx)(Wi,{bounds:Y,preset:p,mode:G,setIsReady:L,onCreated:t,children:u})}),m?(0,Z.jsx)(Dt,{className:"atlas-navigator",children:(0,Z.jsx)("canvas",{className:"atlas-navigator-canvas",part:"atlas-navigator-canvas",ref:fe.navigator})}):null,h?(0,Z.jsx)("style",{children:`.atlas-width-${He} { width: ${v.width}px; height: ${v.height}px; }`}):(0,Z.jsx)("style",{children:`
|
|
42
42
|
.atlas { position: relative; display: flex; background: var(--atlas-background, #000); z-index: var(--atlas-z-index, 10); -webkit-touch-callout: none; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; }
|
|
43
43
|
.atlas-width-${He} { width: ${v.width}px; height: ${v.height}px; }
|
|
44
44
|
.atlas-canvas { flex: 1 1 0px; }
|
|
@@ -46,15 +46,17 @@
|
|
|
46
46
|
.atlas-canvas:focus-visible, .atlas-canvas-container:focus-visible { outline: var(--atlas-focus, 2px solid darkorange) }
|
|
47
47
|
.atlas-static-preset { touch-action: inherit; }
|
|
48
48
|
.atlas-static-container { position: relative; overflow: hidden; flex: 1 1 0px; }
|
|
49
|
-
.atlas-overlay { position: absolute; top: 0; left: 0;
|
|
50
|
-
|
|
49
|
+
.atlas-overlay { position: absolute; top: 0; left: 0; none; overflow: hidden; }
|
|
50
|
+
/** setting the pointer events to none means that Atlas will own the touch and mousewheel events **/
|
|
51
|
+
.atlas-overlay--interactive { pointer-events: none; }
|
|
52
|
+
.atlas-static-image { position: absolute; user-select: none; transform-origin: 0px 0px; }
|
|
51
53
|
.atlas-navigator { position: absolute; top: var(--atlas-navigator-top, 10px); right: var(--atlas-navigator-bottom, 10px); left: var(--atlas-navigator-left); bottom: var(--atlas-navigator-bottom); opacity: .8 }
|
|
52
54
|
.atlas-navigator-canvas { width: 100%; }
|
|
53
|
-
`}),n]})};var Le=require("react"),
|
|
55
|
+
`}),n]})};var Le=require("react"),Gi=J(require("react-use-measure"),1);function Vi(n){return Number(n)==n?`${n}px`:n}var ue=require("react/jsx-runtime"),kn=({resizeHash:n,aspectRatio:e,containerProps:t={},...i})=>{let[r,s,a]=(0,Gi.default)(),{height:h,width:d,...u}=i;(0,Le.useEffect)(()=>{a()},[d,h,n,a]);let l=(0,Le.useMemo)(()=>e?{width:s.width,height:s.width*(1/e)}:s,[s,e]);return(0,ue.jsxs)(Dt,{ref:r,className:"atlas-container",...t,children:[l.width?(0,ue.jsx)(Qe,{width:l.width||100,height:l.height||100,...u,children:i.children}):null,i.hideInlineStyle?null:(0,ue.jsx)("style",{children:`
|
|
54
56
|
.atlas-container {
|
|
55
57
|
display: var(--atlas-container-display, block);
|
|
56
58
|
flex: var(--atlas-container-flex, none);
|
|
57
59
|
width: var(--atlas-container-width, ${d?`${d}px`:"100%"});
|
|
58
|
-
height: var(--atlas-container-height, ${
|
|
60
|
+
height: var(--atlas-container-height, ${Vi(h||(e?l.height:512))})
|
|
59
61
|
}
|
|
60
|
-
`}),i.htmlChildren]})};var ft=require("react");var Gi=require("react");var me=()=>(0,Gi.useContext)(mt);var U=()=>{let n=me();return n?n.runtime:void 0};var Xi=require("react"),Ke=(n,e=[])=>{let t=U();(0,Xi.useEffect)(()=>t?t.registerHook("useAfterFrame",n):()=>{},e)};var Zi=require("react"),Bt=(n,e=[])=>{let t=U();(0,Zi.useEffect)(()=>t?t.registerHook("useFrame",n):()=>{},e)};var qe=()=>{let n=me();return n&&n.canvas?n.canvas:void 0};var Yi=require("react");function ke(){return(0,Yi.useContext)(Rt)}var kn=({onCreate:n})=>{let e=(0,ft.useRef)({x:0,y:0}),t=qe(),i=ke(),r=U(),[s,a]=(0,ft.useState)(),[h,d]=(0,ft.useState)(),u=se();return Bt(()=>{r&&s&&!h&&(r.pendingUpdate=!0)},[s,h]),Ke(()=>{if(s&&t&&r){let l=t.getContext("2d");if(l){let{x:c,y:m,width:y,height:b}=r.worldToViewer(s.x,s.y,(h?h.x:e.current.x)-s.x,(h?h.y:e.current.y)-s.y);l.lineWidth=h?3:1,l.strokeStyle="#fff",l.strokeRect(c,m,y,b),l.lineWidth=h?3:1,l.strokeStyle="#000",l.strokeRect(c+1,m+1,y-2,b-2)}}},[s,h]),(0,ft.useEffect)(()=>{let l=c=>{if(i&&r){let{x:m,y}=r.viewerToWorld(c.clientX-i.left,c.clientY-i.top);e.current.x=~~m,e.current.y=~~y}};return t?(t.addEventListener("mousemove",l),()=>t.removeEventListener("mousemove",l)):()=>{}},[i,t,r]),(0,ft.useEffect)(()=>{let l=c=>{u==="sketch"&&(a({x:Math.round(e.current.x),y:Math.round(e.current.y)}),d(void 0))};return t?(t.addEventListener("mousedown",l),()=>t.removeEventListener("mousedown",l)):()=>{}},[t,u]),(0,ft.useEffect)(()=>{let l=c=>{s&&!h&&d({x:Math.round(e.current.x),y:Math.round(e.current.y)})};return t?(t.addEventListener("mouseup",l),()=>t.removeEventListener("mouseup",l)):()=>{}},[t,s,h]),(0,ft.useEffect)(()=>{s&&h&&n({x:Math.min(s.x,h.x),y:Math.min(s.y,h.y),width:Math.abs(h.x-s.x),height:Math.abs(h.y-s.y)})},[s,n,h]),null};var pt=J(require("react"),1);var Qi=require("react");async function Ki(n,e,t){if(Qi.version.startsWith("18.")){let i=await import("react-dom/client"),r=i.default?i.default.createRoot:i.createRoot;t.current||(t.current=r(n)),t.current.render(e)}else if(typeof ReactDOM<"u"){let{render:i,unmountComponentAtNode:r}=ReactDOM;i(e,n),t.current={unmount(){r(n)}}}else{let i=await import("react-dom"),r=i.default?i.default.render:i.render,s=i.default?i.default.unmountComponentAtNode:i.unmountComponentAtNode;r(e,n),t.current={unmount(){s(n)}}}}var Je=require("react/jsx-runtime"),Fe=pt.default.forwardRef(({children:n,...e},t)=>{let i=(0,pt.useRef)(),r=U(),s=(0,pt.useRef)(0),a=(0,pt.useRef)(),h=(0,pt.useRef)();return Bt(()=>{if(e.relative){let d=i.current;if(d&&r){let u=r.getScaleFactor();s.current!==u&&(s.current=u,d.style.transformOrigin="0 0",d.style.transform=`scale(${1/s.current})`,d.style.width=`${s.current*100}%`,d.style.height=`${s.current*100}%`,i.current&&a.current?.__owner.value?.rotation&&(d.style.transform=`scale(${1/s.current}) translate(50%, 50%) rotate(${a.current?.__owner.value?.rotation||0}deg) translate(-50%, -50%)`))}}},[e.relative]),(0,pt.useLayoutEffect)(()=>{let d=a.current;t&&d&&(typeof t=="function"?t(d):t.current=d);async function u(){if(d&&d.__host){let l=e.relative?(0,Je.jsx)("div",{ref:i,children:n}):n;await Ki(d.__host.element,l,h)}}d&&d.__host?u():d&&(d.__onCreate=u)},[t,n,a,e.relative]),(0,pt.useLayoutEffect)(()=>()=>{h.current&&setTimeout(()=>{h.current.unmount()},0)},[]),(0,Je.jsx)("box",{html:!0,...e,ref:a})});Fe.displayName="HTMLPortal";var tn=require("react");var yt=require("react");var H=require("react");var qi=require("react");var De=(n,e,t=[])=>{let i=U(),r=i?i.world:void 0;(0,qi.useEffect)(()=>{if(i){let s=e,a=rt[n];i.world.activatedEvents.push(a);let h=a.slice(2).toLowerCase();return i.world.addEventListener(h,s),()=>{i.world.removeEventListener(h,s)}}return()=>{}},[r,n,...t])};function ti(n,e){if(n===0)return[0,1];if(e===0)return[1,0];let t=Math.abs(n)/Math.abs(e);return[t,1-t]}var Be=require("react");function Ji(){let n=(0,Be.useRef)({ctrl:!1,shift:!1,alt:!1});return(0,Be.useLayoutEffect)(()=>{function e(i){i.key==="Shift"&&(n.current.shift=!0),i.key==="Control"&&(n.current.ctrl=!0),i.key==="Alt"&&(n.current.alt=!0)}function t(i){i.key==="Shift"&&(n.current.shift=!1),i.key==="Control"&&(n.current.ctrl=!1),i.key==="Alt"&&(n.current.alt=!1)}return window.addEventListener("keydown",e),window.addEventListener("keyup",t),()=>{window.removeEventListener("keydown",e),window.removeEventListener("keyup",t)}},[]),n}var ei=(n,e)=>{let t=se(),i=U(),r=ke(),s=(0,H.useRef)(),a=(0,H.useRef)(null),h=(0,H.useRef)(),[d,u]=(0,H.useState)(!1),l=(0,H.useRef)(!1),c=(0,H.useRef)({north:0,south:0,east:0,west:0}),m=Ji(),y=(0,H.useCallback)(f=>_=>{if(l.current=!0,u(!0),r&&i){let{top:A,left:x}=r,v=i.viewerToWorld(_.pageX-x,_.pageY-A);h.current={x:v.x,y:v.y},s.current=f}},[r,i]),b=(0,H.useMemo)(()=>n.width/n.height,[n.width,n.height]),S=(0,H.useCallback)(f=>{if(!Math.abs(f.north-f.south+(f.east-f.west)))return;let A=-f.west+f.east,x=-f.north+f.south,v=n.width+A,M=n.height+x;if(v/M>=b){let G=M*b,w=v-G,[T,L]=ti(f.east,f.west);f.west=f.west+w*L,f.east=f.east-w*T}else{let G=v/b,w=M-G,[T,L]=ti(f.north,f.south);f.north=f.north+w*T,f.south=f.south-w*L}},[n.width,n.height,b]);Bt(()=>{h&&i&&i.updateNextFrame()}),(0,H.useEffect)(()=>{i&&i.updateNextFrame()},[i,d]);let P=(0,H.useCallback)(f=>{if(!i||!r||i.mode!=="sketch")return;let{top:_,left:A}=r,x=i.viewerToWorld(f.pageX-A,f.pageY-_),v=a.current,M=!n.maintainAspectRatio&&m.current.alt,q=!M&&m.current.shift&&s.current?.indexOf("-")!==-1;if((s.current==="translate"||s.current==="east"||s.current==="north-east"||s.current==="south-east")&&(c.current.east=x.x-(h.current?h.current.x:0),M&&(c.current.west=-c.current.east)),(s.current==="translate"||s.current==="west"||s.current==="north-west"||s.current==="south-west")&&(c.current.west=x.x-(h.current?h.current.x:0),M&&(c.current.east=-c.current.west)),(s.current==="translate"||s.current==="north"||s.current==="north-east"||s.current==="north-west")&&(c.current.north=x.y-(h.current?h.current.y:0),M&&(c.current.south=-c.current.north)),(s.current==="translate"||s.current==="south"||s.current==="south-west"||s.current==="south-east")&&(c.current.south=x.y-(h.current?h.current.y:0),M&&(c.current.north=-c.current.south)),(n.maintainAspectRatio||q)&&S(c.current),v){let G=c.current.west,w=c.current.north,T=n.width+c.current.east,L=n.height+c.current.south;v.points[1]=Math.min(G,T),v.points[2]=Math.min(w,L),v.points[3]=Math.max(G,T),v.points[4]=Math.max(w,L),i.updateNextFrame()}},[i,n.width,n.height,n.maintainAspectRatio,r]);De("mousemove",P,[n.width,n.height,r]),De("pointermove",P,[n.width,n.height,r]);let g=(0,H.useRef)();return(0,H.useEffect)(()=>{g.current=()=>{if(l.current){let f=c.current.west,_=c.current.north,A=n.width+c.current.east,x=n.height+c.current.south,v=Math.min(f,A),M=Math.min(_,x),q=Math.max(f,A),G=Math.max(_,x),w={x:(n.x||0)+v,y:(n.y||0)+M,width:q-v||1,height:G-M||1};n.maintainAspectRatio,e(w),s.current=void 0,h.current=void 0,c.current.east=0,c.current.west=0,c.current.north=0,c.current.south=0,l.current=!1,u(!1)}}},[e,n.height,n.width,n.x,n.y]),(0,H.useEffect)(()=>{let f=()=>{g.current&&g.current()};return window.addEventListener("pointerup",f),window.addEventListener("touchend",f),()=>{window.removeEventListener("pointerup",f),window.removeEventListener("touchend",f)}},[]),{portalRef:a,mode:t,mouseEvent:y,onPointerMoveCallback:P,isEditing:d}};var N=require("react/jsx-runtime");function ii({handleSize:n,resizable:e,onSave:t,children:i,maintainAspectRatio:r,disableCardinalControls:s,...a}){let h=typeof n>"u"?r?10:8:n,{portalRef:d,mode:u,mouseEvent:l,isEditing:c}=ei({x:a.x||0,y:a.y||0,width:a.width,height:a.height,maintainAspectRatio:r},t),m=(0,yt.useMemo)(()=>l("translate"),[l]),y=(0,yt.useMemo)(()=>l("east"),[l]),b=(0,yt.useMemo)(()=>l("west"),[l]),S=(0,yt.useMemo)(()=>l("south"),[l]),P=(0,yt.useMemo)(()=>l("north"),[l]),g=(0,yt.useMemo)(()=>l("south-east"),[l]),f=(0,yt.useMemo)(()=>l("south-west"),[l]),_=(0,yt.useMemo)(()=>l("north-east"),[l]),A=(0,yt.useMemo)(()=>l("north-west"),[l]),x=u==="sketch",v={zIndex:999,boxShadow:"0px 2px 3px 0 rgba(0,0,0,0.2)",border:"1px solid rgba(155,155,155,.7)",borderRadius:r||s?"50%":2,position:"absolute",background:"#fff",pointerEvents:c?"none":x?"initial":"none"};return(0,N.jsx)(N.Fragment,{children:(0,N.jsxs)("world-object",{...a,children:[i,x&&e?(0,N.jsx)(Fe,{ref:d,target:{x:0,y:0,height:a.height,width:a.width},relative:!0,interactive:!1,children:x&&e?(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)("div",{onMouseDown:m,onTouchStart:m,style:{display:"block",width:"100%",height:"100%",position:"relative",border:"1px solid rgba(155,155,155, .7)",boxSizing:"border-box",pointerEvents:c?"none":x?"initial":"none"}}),r?null:(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)("div",{title:"east",onTouchStart:y,onMouseDown:y,style:{...v,cursor:"e-resize",height:h*2,width:h,right:0,top:"50%",opacity:s?0:1,transform:`translate(${h/2}px, -${h}px)`}}),(0,N.jsx)("div",{title:"west",onMouseDown:b,style:{...v,cursor:"w-resize",position:"absolute",height:h*2,width:h,left:0,top:"50%",opacity:s?0:1,transform:`translate(-${h/2}px, -${h}px)`}}),(0,N.jsx)("div",{title:"north",onMouseDown:P,style:{...v,cursor:"n-resize",position:"absolute",height:h,width:h*2,left:"50%",top:0,opacity:s?0:1,transform:`translate(-${h}px, -${h/2}px)`}}),(0,N.jsx)("div",{title:"south",onMouseDown:S,style:{...v,cursor:"s-resize",position:"absolute",height:h,width:h*2,left:"50%",bottom:0,opacity:s?0:1,transform:`translate(-${h}px, ${h/2}px)`}})]}),(0,N.jsx)("div",{title:"north-east",onMouseDown:_,style:{...v,cursor:"ne-resize",position:"absolute",height:h,width:h,right:0,top:0,transform:`translate(${h/2}px, -${h/2}px)`}}),(0,N.jsx)("div",{title:"south-east",onMouseDown:g,style:{...v,cursor:"se-resize",position:"absolute",height:h,width:h,bottom:0,right:0,transform:`translate(${h/2}px, ${h/2}px)`}}),(0,N.jsx)("div",{title:"south-west",onMouseDown:f,style:{...v,cursor:"sw-resize",position:"absolute",height:h,width:h,bottom:0,left:0,transform:`translate(-${h/2}px, ${h/2}px)`}}),(0,N.jsx)("div",{title:"north-west",onMouseDown:A,style:{...v,cursor:"nw-resize",position:"absolute",height:h,width:h,top:0,left:0,transform:`translate(-${h/2}px, -${h/2}px)`}})]}):null}):null]})})}var ni=require("react/jsx-runtime");function Fn({interactive:n,region:e,onClick:t,onSave:i,maintainAspectRatio:r,disableCardinalControls:s,isEditing:a,rotation:h,style:d={backgroundColor:"rgba(0,0,0,.5)"}}){let u=(0,tn.useCallback)(l=>{i({id:e.id,x:e.x,y:e.y,height:e.height,width:e.width,...l})},[i,e.id,e.x,e.y,e.height,e.width]);return(0,ni.jsx)(ii,{x:e.x,y:e.y,rotation:h,width:e.width,height:e.height,resizable:a,onSave:u,maintainAspectRatio:r,disableCardinalControls:s,children:(0,ni.jsx)("box",{interactive:n,onClick:l=>{l.preventDefault(),l.stopPropagation(),t(e)},target:{x:0,y:0,width:e.width,height:e.height},style:d})})}var ri=require("react"),Wt=require("react/jsx-runtime"),si=n=>{let e=n.width/(n.crop?.width||n.tiles.width),t=n.tiles.imageService.sizes||[],i=n.enableThumbnail,r=n.enableSizes,s=(0,ri.useMemo)(()=>{let h=n.tiles.imageService.id||n.tiles.imageService["@id"];return h&&h.endsWith("/info.json")?h.slice(0,-1*10):h},[n.tiles.imageService.id]),a=(0,ri.useMemo)(()=>{let h=n.tiles.imageService.tiles||[];if(!h.length){let d=n.width,u=[1],l=1;for(;Math.pow(2,l)<d;)l=l*2,u.push(l);return[{width:256,height:256,scaleFactors:[1,2,4,8]}]}return h},[n.tiles.imageService]);return(0,Wt.jsx)("world-object",{rotation:n.rotation,scale:e,height:n.crop?.height||n.tiles.height,width:n.crop?.width||n.tiles.width,x:n.x,y:n.y,onClick:n.onClick,children:(0,Wt.jsxs)("composite-image",{id:n.tiles.imageService.id,width:n.crop?.width||n.tiles.width,height:n.crop?.height||n.tiles.height,crop:n.crop,renderOptions:n.renderOptions,children:[i&&n.tiles.thumbnail?(0,Wt.jsx)("world-image",{priority:!0,uri:n.tiles.thumbnail.id,target:{width:n.tiles.width,height:n.tiles.height},display:{width:n.tiles.thumbnail.width,height:n.tiles.thumbnail.height},crop:n.crop}):null,r&&t.map((h,d)=>(0,Wt.jsx)("world-image",{uri:`${s}/full/${h.width},${h.height}/0/default.jpg`,target:{width:n.tiles.width,height:n.tiles.height},display:{width:h.width,height:h.height},crop:n.crop},d)),a.map(h=>(h.scaleFactors||[]).map(d=>(0,Wt.jsx)("tiled-image",{uri:n.tiles.imageService.id,display:{width:n.tiles.width,height:n.tiles.height},tile:h,scaleFactor:d,crop:n.crop},`${n.tiles.imageService.id}-tile-${d}`)))]},n.tiles.imageService.id)},n.tiles.imageService.id)};var Ne=require("react");function oi(n){return n.id||n["@id"]}var en=require("@atlas-viewer/iiif-image-api"),nn=require("@iiif/helpers/thumbnail");function Dn(){return typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{}}function Bn(){let n=Dn();if(typeof n.IIIF_VAULT<"u")return n.IIIF_VAULT;if(typeof n.IIIFVault>"u")throw new Error("Vault not found");return n.IIIF_VAULT=new n.IIIFVault.Vault,n.IIIF_VAULT}var Nt={};function ge(){return Nt.helper||(Nt.vault=Bn(),Nt.loader=new en.ImageServiceLoader,Nt.helper=(0,nn.createThumbnailHelper)(Nt.vault,{imageServiceLoader:Nt.loader})),Nt}async function We(n,e,t){let{loader:i}=ge(),r=await i.loadService({id:n,width:e,height:t});return{id:oi(r),width:e,height:t,imageService:r,thumbnail:void 0}}async function rn(n,e=512){let{vault:t,loader:i,helper:r}=ge(),s=[];for(let a of n.items)for(let h of t.get(a).items){let u=t.get(t.get(h).body[0]).service[0],l=await We(u.id,n.width,n.height),{best:c}=await r.getBestThumbnailAtSize(t,i,n,{maxHeight:e,maxWidth:e},!0);c&&(l.thumbnail=c),s.push(l)}return s}async function sn(n){let{vault:e}=ge(),t=[];for(let i of n.items){let r=e.get(i);t.push(...await rn(r))}return t}async function Wn(n){try{let{vault:e}=ge(),t=await e.loadManifest(n);return t?sn(t):[]}catch(e){return console.log("ERR",e),[]}}var ai=require("react/jsx-runtime"),Nn=n=>{let[e,t]=(0,Ne.useState)();return(0,Ne.useEffect)(()=>{We(n.id,n.width,n.height).then(i=>{t(i)})},[n.height,n.id,n.width]),(0,ai.jsx)("world-object",{x:n.x||0,y:n.y||0,width:n.width,height:n.height,scale:n.scale,children:e?(0,ai.jsx)(si,{tiles:e,x:n.x,y:n.y,width:n.crop?.width||n.width,height:n.crop?.height||n.height,rotation:n.rotation,crop:n.crop,enableSizes:n.enableSizes,enableThumbnail:n.enableThumbnail,renderOptions:n.renderOptions,children:n.children}):null})};var on=require("react"),zn=(n,e=[])=>{let t=U();(0,on.useEffect)(()=>t?t.registerHook("useAfterPaint",n):()=>{},e)};var j=require("react");var ze=require("react/jsx-runtime"),Hn=(n,{onCreated:e,resetWorldOnChange:t=!0,mode:i="explore",cover:r,containerRef:s,...a})=>{let[h,d]=(0,j.useState)(!1),[u,l]=(0,j.useState)(void 0),[c,m]=(0,j.useState)(void 0),y=(0,j.useRef)(),b=(0,j.useRef)(),S=(0,j.useMemo)(()=>({width:a.width,height:a.height}),[a.width,a.height]),[P,g,f,_]=Ie(void 0,{width:a.width,height:a.height});K(()=>{let x=document.createElement("canvas");x.height=S.height,x.width=S.width,y.current=x},[]),K(()=>{let x=y.current;x&&(x.height=S.height,x.width=S.width)},[S.width,S.height]),(0,j.useEffect)(()=>g?g.runtime.registerHook("useAfterFrame",()=>{if(y.current)try{l(y.current.toDataURL())}catch(v){v instanceof Error&&m(v.message)}}):()=>{},[]),(0,j.useEffect)(()=>g?g.runtime.world.addLayoutSubscriber(v=>{v==="ready"&&d(!0)}):()=>{},[]),(0,j.useEffect)(()=>{g&&g.em&&g.em.updateBounds()},[S]),(0,j.useEffect)(()=>{g&&(g.runtime.mode=i)},[i]),(0,j.useEffect)(()=>{if(g){let x=g.runtime;x.resize(f.current.width,a.width,f.current.height,a.height),r?x.cover():x.goHome(),f.current.width=a.width,f.current.height=a.height,x.updateNextFrame()}},[a.width,a.height]),K(()=>{let x=b.current;x&&(x.style.width=`${S.width}px`,x.style.height=`${S.height}px`,x.style.pointerEvents="none",x.style.overflow="hidden")},[S.height,S.width]),K(()=>{let x=()=>{if(g&&g.runtime){let v=g.runtime;v.resize(f.current.width,a.width,f.current.height,a.height),f.current.width=a.width,f.current.height=a.height,v.updateNextFrame()}};return window.addEventListener("resize",x),()=>window.removeEventListener("resize",x)},[g,a.height,a.width]);let A=(0,j.useCallback)(function(v){let M=()=>{g&&(g.ready=!0)};return(0,j.useEffect)(()=>{if(g){let q=e&&e(g);return void(q&&q.then?q.then(M):M())}return()=>{}},[]),v.children},[g]);return(0,j.useEffect)(()=>{if(g&&g.runtime){let x=g.runtime;if(t)return x.world.addLayoutSubscriber(v=>{v==="recalculate-world-size"&&x.goHome({cover:r})})}return()=>{}},[g,r,t]),K(()=>{g&&Vt.render((0,ze.jsx)(A,{children:(0,ze.jsx)(ut.Provider,{value:i,children:(0,ze.jsx)(mt.Provider,{value:g,children:n})})}),g.runtime)},[g,i,n]),{loading:!u&&h,uri:u,imageError:c}};var an=require("react"),jn=(n,e=[])=>{let t=U();(0,an.useEffect)(()=>t?t.registerHook("useBeforeFrame",n):()=>{},e)};var wt=require("react");var Un=(n=[])=>{let[e,t]=(0,wt.useState)(n),[i,r]=(0,wt.useState)(!1),[s,a]=(0,wt.useState)(),h=(0,wt.useCallback)(()=>{r(!0),a(void 0)},[]),d=(0,wt.useCallback)(m=>{r(!0),a(m)},[]),u=m=>{t(y=>y.map(b=>b.id===m.id?m:b))},l=(0,wt.useCallback)(m=>{let y=ht();t(b=>[...b,{id:y,...m}]),r(!1),a(void 0)},[]),c=(0,wt.useCallback)(()=>{r(!1),a(void 0)},[]);return{isEditing:i,onDeselect:c,selectedAnnotation:s,onCreateNewAnnotation:l,annotations:e,onUpdateAnnotation:u,setIsEditing:r,setSelectedAnnotation:a,editAnnotation:d,addNewAnnotation:h}};function $n(n){return n.current==="sketch"}function Vn(n,e){return n?e?{...n,...e||{},":hover":n[":hover"]?Object.assign(n[":hover"]||{},e[":hover"]||{}):e[":hover"],":active":n[":active"]?Object.assign(n[":active"]||{},e[":active"]||{}):e[":hover"]}:n:e}
|
|
62
|
+
`}),i.htmlChildren]})};var ft=require("react");var Xi=require("react");var me=()=>(0,Xi.useContext)(mt);var $=()=>{let n=me();return n?n.runtime:void 0};var Zi=require("react"),Ke=(n,e=[])=>{let t=$();(0,Zi.useEffect)(()=>t?t.registerHook("useAfterFrame",n):()=>{},e)};var Yi=require("react"),Bt=(n,e=[])=>{let t=$();(0,Yi.useEffect)(()=>t?t.registerHook("useFrame",n):()=>{},e)};var qe=()=>{let n=me();return n&&n.canvas?n.canvas:void 0};var Qi=require("react");function ke(){return(0,Qi.useContext)(Rt)}var Fn=({onCreate:n})=>{let e=(0,ft.useRef)({x:0,y:0}),t=qe(),i=ke(),r=$(),[s,a]=(0,ft.useState)(),[h,d]=(0,ft.useState)(),u=se();return Bt(()=>{r&&s&&!h&&(r.pendingUpdate=!0)},[s,h]),Ke(()=>{if(s&&t&&r){let l=t.getContext("2d");if(l){let{x:c,y:m,width:y,height:b}=r.worldToViewer(s.x,s.y,(h?h.x:e.current.x)-s.x,(h?h.y:e.current.y)-s.y);l.lineWidth=h?3:1,l.strokeStyle="#fff",l.strokeRect(c,m,y,b),l.lineWidth=h?3:1,l.strokeStyle="#000",l.strokeRect(c+1,m+1,y-2,b-2)}}},[s,h]),(0,ft.useEffect)(()=>{let l=c=>{if(i&&r){let{x:m,y}=r.viewerToWorld(c.clientX-i.left,c.clientY-i.top);e.current.x=~~m,e.current.y=~~y}};return t?(t.addEventListener("mousemove",l),()=>t.removeEventListener("mousemove",l)):()=>{}},[i,t,r]),(0,ft.useEffect)(()=>{let l=c=>{u==="sketch"&&(a({x:Math.round(e.current.x),y:Math.round(e.current.y)}),d(void 0))};return t?(t.addEventListener("mousedown",l),()=>t.removeEventListener("mousedown",l)):()=>{}},[t,u]),(0,ft.useEffect)(()=>{let l=c=>{s&&!h&&d({x:Math.round(e.current.x),y:Math.round(e.current.y)})};return t?(t.addEventListener("mouseup",l),()=>t.removeEventListener("mouseup",l)):()=>{}},[t,s,h]),(0,ft.useEffect)(()=>{s&&h&&n({x:Math.min(s.x,h.x),y:Math.min(s.y,h.y),width:Math.abs(h.x-s.x),height:Math.abs(h.y-s.y)})},[s,n,h]),null};var pt=J(require("react"),1);var Ki=require("react");async function qi(n,e,t){if(Ki.version.startsWith("18.")){let i=await import("react-dom/client"),r=i.default?i.default.createRoot:i.createRoot;t.current||(t.current=r(n)),t.current.render(e)}else if(typeof ReactDOM<"u"){let{render:i,unmountComponentAtNode:r}=ReactDOM;i(e,n),t.current={unmount(){r(n)}}}else{let i=await import("react-dom"),r=i.default?i.default.render:i.render,s=i.default?i.default.unmountComponentAtNode:i.unmountComponentAtNode;r(e,n),t.current={unmount(){s(n)}}}}var Je=require("react/jsx-runtime"),Fe=pt.default.forwardRef(({children:n,...e},t)=>{let i=(0,pt.useRef)(),r=$(),s=(0,pt.useRef)(0),a=(0,pt.useRef)(),h=(0,pt.useRef)();return Bt(()=>{if(e.relative){let d=i.current;if(d&&r){let u=r.getScaleFactor();s.current!==u&&(s.current=u,d.style.transformOrigin="0 0",d.style.transform=`scale(${1/s.current})`,d.style.width=`${s.current*100}%`,d.style.height=`${s.current*100}%`,i.current&&a.current?.__owner.value?.rotation&&(d.style.transform=`scale(${1/s.current}) translate(50%, 50%) rotate(${a.current?.__owner.value?.rotation||0}deg) translate(-50%, -50%)`))}}},[e.relative]),(0,pt.useLayoutEffect)(()=>{let d=a.current;t&&d&&(typeof t=="function"?t(d):t.current=d);async function u(){if(d&&d.__host){let l=e.relative?(0,Je.jsx)("div",{ref:i,children:n}):n;await qi(d.__host.element,l,h)}}d&&d.__host?u():d&&(d.__onCreate=u)},[t,n,a,e.relative]),(0,pt.useLayoutEffect)(()=>()=>{h.current&&setTimeout(()=>{h.current.unmount()},0)},[]),(0,Je.jsx)("box",{html:!0,...e,ref:a})});Fe.displayName="HTMLPortal";var en=require("react");var yt=require("react");var j=require("react");var Ji=require("react");var De=(n,e,t=[])=>{let i=$(),r=i?i.world:void 0;(0,Ji.useEffect)(()=>{if(i){let s=e,a=rt[n];i.world.activatedEvents.push(a);let h=a.slice(2).toLowerCase();return i.world.addEventListener(h,s),()=>{i.world.removeEventListener(h,s)}}return()=>{}},[r,n,...t])};function ti(n,e){if(n===0)return[0,1];if(e===0)return[1,0];let t=Math.abs(n)/Math.abs(e);return[t,1-t]}var Be=require("react");function tn(){let n=(0,Be.useRef)({ctrl:!1,shift:!1,alt:!1});return(0,Be.useLayoutEffect)(()=>{function e(i){i.key==="Shift"&&(n.current.shift=!0),i.key==="Control"&&(n.current.ctrl=!0),i.key==="Alt"&&(n.current.alt=!0)}function t(i){i.key==="Shift"&&(n.current.shift=!1),i.key==="Control"&&(n.current.ctrl=!1),i.key==="Alt"&&(n.current.alt=!1)}return window.addEventListener("keydown",e),window.addEventListener("keyup",t),()=>{window.removeEventListener("keydown",e),window.removeEventListener("keyup",t)}},[]),n}var ei=(n,e)=>{let t=se(),i=$(),r=ke(),s=(0,j.useRef)(),a=(0,j.useRef)(null),h=(0,j.useRef)(),[d,u]=(0,j.useState)(!1),l=(0,j.useRef)(!1),c=(0,j.useRef)({north:0,south:0,east:0,west:0}),m=tn(),y=(0,j.useCallback)(f=>_=>{if(l.current=!0,u(!0),r&&i){let{top:A,left:x}=r,v=i.viewerToWorld(_.pageX-x,_.pageY-A);h.current={x:v.x,y:v.y},s.current=f}},[r,i]),b=(0,j.useMemo)(()=>n.width/n.height,[n.width,n.height]),S=(0,j.useCallback)(f=>{if(!Math.abs(f.north-f.south+(f.east-f.west)))return;let A=-f.west+f.east,x=-f.north+f.south,v=n.width+A,M=n.height+x;if(v/M>=b){let G=M*b,w=v-G,[T,L]=ti(f.east,f.west);f.west=f.west+w*L,f.east=f.east-w*T}else{let G=v/b,w=M-G,[T,L]=ti(f.north,f.south);f.north=f.north+w*T,f.south=f.south-w*L}},[n.width,n.height,b]);Bt(()=>{h&&i&&i.updateNextFrame()}),(0,j.useEffect)(()=>{i&&i.updateNextFrame()},[i,d]);let P=(0,j.useCallback)(f=>{if(!i||!r||i.mode!=="sketch")return;let{top:_,left:A}=r,x=i.viewerToWorld(f.pageX-A,f.pageY-_),v=a.current,M=!n.maintainAspectRatio&&m.current.alt,q=!M&&m.current.shift&&s.current?.indexOf("-")!==-1;if((s.current==="translate"||s.current==="east"||s.current==="north-east"||s.current==="south-east")&&(c.current.east=x.x-(h.current?h.current.x:0),M&&(c.current.west=-c.current.east)),(s.current==="translate"||s.current==="west"||s.current==="north-west"||s.current==="south-west")&&(c.current.west=x.x-(h.current?h.current.x:0),M&&(c.current.east=-c.current.west)),(s.current==="translate"||s.current==="north"||s.current==="north-east"||s.current==="north-west")&&(c.current.north=x.y-(h.current?h.current.y:0),M&&(c.current.south=-c.current.north)),(s.current==="translate"||s.current==="south"||s.current==="south-west"||s.current==="south-east")&&(c.current.south=x.y-(h.current?h.current.y:0),M&&(c.current.north=-c.current.south)),(n.maintainAspectRatio||q)&&S(c.current),v){let G=c.current.west,w=c.current.north,T=n.width+c.current.east,L=n.height+c.current.south;v.points[1]=Math.min(G,T),v.points[2]=Math.min(w,L),v.points[3]=Math.max(G,T),v.points[4]=Math.max(w,L),i.updateNextFrame()}},[i,n.width,n.height,n.maintainAspectRatio,r]);De("mousemove",P,[n.width,n.height,r]),De("pointermove",P,[n.width,n.height,r]);let g=(0,j.useRef)();return(0,j.useEffect)(()=>{g.current=()=>{if(l.current){let f=c.current.west,_=c.current.north,A=n.width+c.current.east,x=n.height+c.current.south,v=Math.min(f,A),M=Math.min(_,x),q=Math.max(f,A),G=Math.max(_,x),w={x:(n.x||0)+v,y:(n.y||0)+M,width:q-v||1,height:G-M||1};n.maintainAspectRatio,e(w),s.current=void 0,h.current=void 0,c.current.east=0,c.current.west=0,c.current.north=0,c.current.south=0,l.current=!1,u(!1)}}},[e,n.height,n.width,n.x,n.y]),(0,j.useEffect)(()=>{let f=()=>{g.current&&g.current()};return window.addEventListener("pointerup",f),window.addEventListener("touchend",f),()=>{window.removeEventListener("pointerup",f),window.removeEventListener("touchend",f)}},[]),{portalRef:a,mode:t,mouseEvent:y,onPointerMoveCallback:P,isEditing:d}};var z=require("react/jsx-runtime");function ii({handleSize:n,resizable:e,onSave:t,children:i,maintainAspectRatio:r,disableCardinalControls:s,...a}){let h=typeof n>"u"?r?10:8:n,{portalRef:d,mode:u,mouseEvent:l,isEditing:c}=ei({x:a.x||0,y:a.y||0,width:a.width,height:a.height,maintainAspectRatio:r},t),m=(0,yt.useMemo)(()=>l("translate"),[l]),y=(0,yt.useMemo)(()=>l("east"),[l]),b=(0,yt.useMemo)(()=>l("west"),[l]),S=(0,yt.useMemo)(()=>l("south"),[l]),P=(0,yt.useMemo)(()=>l("north"),[l]),g=(0,yt.useMemo)(()=>l("south-east"),[l]),f=(0,yt.useMemo)(()=>l("south-west"),[l]),_=(0,yt.useMemo)(()=>l("north-east"),[l]),A=(0,yt.useMemo)(()=>l("north-west"),[l]),x=u==="sketch",v={zIndex:999,boxShadow:"0px 2px 3px 0 rgba(0,0,0,0.2)",border:"1px solid rgba(155,155,155,.7)",borderRadius:r||s?"50%":2,position:"absolute",background:"#fff",pointerEvents:c?"none":x?"initial":"none"};return(0,z.jsx)(z.Fragment,{children:(0,z.jsxs)("world-object",{...a,children:[i,x&&e?(0,z.jsx)(Fe,{ref:d,target:{x:0,y:0,height:a.height,width:a.width},relative:!0,interactive:!1,children:x&&e?(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)("div",{onMouseDown:m,onTouchStart:m,style:{display:"block",width:"100%",height:"100%",position:"relative",border:"1px solid rgba(155,155,155, .7)",boxSizing:"border-box",pointerEvents:c?"none":x?"initial":"none"}}),r?null:(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)("div",{title:"east",onTouchStart:y,onMouseDown:y,style:{...v,cursor:"e-resize",height:h*2,width:h,right:0,top:"50%",opacity:s?0:1,transform:`translate(${h/2}px, -${h}px)`}}),(0,z.jsx)("div",{title:"west",onMouseDown:b,style:{...v,cursor:"w-resize",position:"absolute",height:h*2,width:h,left:0,top:"50%",opacity:s?0:1,transform:`translate(-${h/2}px, -${h}px)`}}),(0,z.jsx)("div",{title:"north",onMouseDown:P,style:{...v,cursor:"n-resize",position:"absolute",height:h,width:h*2,left:"50%",top:0,opacity:s?0:1,transform:`translate(-${h}px, -${h/2}px)`}}),(0,z.jsx)("div",{title:"south",onMouseDown:S,style:{...v,cursor:"s-resize",position:"absolute",height:h,width:h*2,left:"50%",bottom:0,opacity:s?0:1,transform:`translate(-${h}px, ${h/2}px)`}})]}),(0,z.jsx)("div",{title:"north-east",onMouseDown:_,style:{...v,cursor:"ne-resize",position:"absolute",height:h,width:h,right:0,top:0,transform:`translate(${h/2}px, -${h/2}px)`}}),(0,z.jsx)("div",{title:"south-east",onMouseDown:g,style:{...v,cursor:"se-resize",position:"absolute",height:h,width:h,bottom:0,right:0,transform:`translate(${h/2}px, ${h/2}px)`}}),(0,z.jsx)("div",{title:"south-west",onMouseDown:f,style:{...v,cursor:"sw-resize",position:"absolute",height:h,width:h,bottom:0,left:0,transform:`translate(-${h/2}px, ${h/2}px)`}}),(0,z.jsx)("div",{title:"north-west",onMouseDown:A,style:{...v,cursor:"nw-resize",position:"absolute",height:h,width:h,top:0,left:0,transform:`translate(-${h/2}px, -${h/2}px)`}})]}):null}):null]})})}var ni=require("react/jsx-runtime");function Dn({interactive:n,region:e,onClick:t,onSave:i,maintainAspectRatio:r,disableCardinalControls:s,isEditing:a,rotation:h,style:d={backgroundColor:"rgba(0,0,0,.5)"}}){let u=(0,en.useCallback)(l=>{i({id:e.id,x:e.x,y:e.y,height:e.height,width:e.width,...l})},[i,e.id,e.x,e.y,e.height,e.width]);return(0,ni.jsx)(ii,{x:e.x,y:e.y,rotation:h,width:e.width,height:e.height,resizable:a,onSave:u,maintainAspectRatio:r,disableCardinalControls:s,children:(0,ni.jsx)("box",{interactive:n,onClick:l=>{l.preventDefault(),l.stopPropagation(),t(e)},target:{x:0,y:0,width:e.width,height:e.height},style:d})})}var ri=require("react"),Wt=require("react/jsx-runtime"),si=n=>{let e=n.width/(n.crop?.width||n.tiles.width),t=n.tiles.imageService.sizes||[],i=n.enableThumbnail,r=n.enableSizes,s=(0,ri.useMemo)(()=>{let h=n.tiles.imageService.id||n.tiles.imageService["@id"];return h&&h.endsWith("/info.json")?h.slice(0,-1*10):h},[n.tiles.imageService.id]),a=(0,ri.useMemo)(()=>{let h=n.tiles.imageService.tiles||[];if(!h.length){let d=n.width,u=[1],l=1;for(;Math.pow(2,l)<d;)l=l*2,u.push(l);return[{width:256,height:256,scaleFactors:[1,2,4,8]}]}return h},[n.tiles.imageService]);return(0,Wt.jsx)("world-object",{rotation:n.rotation,scale:e,height:n.crop?.height||n.tiles.height,width:n.crop?.width||n.tiles.width,x:n.x,y:n.y,onClick:n.onClick,children:(0,Wt.jsxs)("composite-image",{id:n.tiles.imageService.id,width:n.crop?.width||n.tiles.width,height:n.crop?.height||n.tiles.height,crop:n.crop,renderOptions:n.renderOptions,children:[i&&n.tiles.thumbnail?(0,Wt.jsx)("world-image",{priority:!0,uri:n.tiles.thumbnail.id,target:{width:n.tiles.width,height:n.tiles.height},display:{width:n.tiles.thumbnail.width,height:n.tiles.thumbnail.height},crop:n.crop}):null,r&&t.map((h,d)=>(0,Wt.jsx)("world-image",{uri:`${s}/full/${h.width},${h.height}/0/default.jpg`,target:{width:n.tiles.width,height:n.tiles.height},display:{width:h.width,height:h.height},crop:n.crop},d)),a.map(h=>(h.scaleFactors||[]).map(d=>(0,Wt.jsx)("tiled-image",{uri:n.tiles.imageService.id,display:{width:n.tiles.width,height:n.tiles.height},tile:h,scaleFactor:d,crop:n.crop},`${n.tiles.imageService.id}-tile-${d}`)))]},n.tiles.imageService.id)},n.tiles.imageService.id)};var Ne=require("react");function oi(n){return n.id||n["@id"]}var nn=require("@atlas-viewer/iiif-image-api"),rn=require("@iiif/helpers/thumbnail");function Bn(){return typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{}}function Wn(){let n=Bn();if(typeof n.IIIF_VAULT<"u")return n.IIIF_VAULT;if(typeof n.IIIFVault>"u")throw new Error("Vault not found");return n.IIIF_VAULT=new n.IIIFVault.Vault,n.IIIF_VAULT}var Nt={};function ge(){return Nt.helper||(Nt.vault=Wn(),Nt.loader=new nn.ImageServiceLoader,Nt.helper=(0,rn.createThumbnailHelper)(Nt.vault,{imageServiceLoader:Nt.loader})),Nt}async function We(n,e,t){let{loader:i}=ge(),r=await i.loadService({id:n,width:e,height:t});return{id:oi(r),width:e,height:t,imageService:r,thumbnail:void 0}}async function sn(n,e=512){let{vault:t,loader:i,helper:r}=ge(),s=[];for(let a of n.items)for(let h of t.get(a).items){let u=t.get(t.get(h).body[0]).service[0],l=await We(u.id,n.width,n.height),{best:c}=await r.getBestThumbnailAtSize(t,i,n,{maxHeight:e,maxWidth:e},!0);c&&(l.thumbnail=c),s.push(l)}return s}async function on(n){let{vault:e}=ge(),t=[];for(let i of n.items){let r=e.get(i);t.push(...await sn(r))}return t}async function Nn(n){try{let{vault:e}=ge(),t=await e.loadManifest(n);return t?on(t):[]}catch(e){return console.log("ERR",e),[]}}var ai=require("react/jsx-runtime"),zn=n=>{let[e,t]=(0,Ne.useState)();return(0,Ne.useEffect)(()=>{We(n.id,n.width,n.height).then(i=>{t(i)})},[n.height,n.id,n.width]),(0,ai.jsx)("world-object",{x:n.x||0,y:n.y||0,width:n.width,height:n.height,scale:n.scale,children:e?(0,ai.jsx)(si,{tiles:e,x:n.x,y:n.y,width:n.crop?.width||n.width,height:n.crop?.height||n.height,rotation:n.rotation,crop:n.crop,enableSizes:n.enableSizes,enableThumbnail:n.enableThumbnail,renderOptions:n.renderOptions,children:n.children}):null})};var an=require("react"),Hn=(n,e=[])=>{let t=$();(0,an.useEffect)(()=>t?t.registerHook("useAfterPaint",n):()=>{},e)};var U=require("react");var ze=require("react/jsx-runtime"),jn=(n,{onCreated:e,resetWorldOnChange:t=!0,mode:i="explore",cover:r,containerRef:s,...a})=>{let[h,d]=(0,U.useState)(!1),[u,l]=(0,U.useState)(void 0),[c,m]=(0,U.useState)(void 0),y=(0,U.useRef)(),b=(0,U.useRef)(),S=(0,U.useMemo)(()=>({width:a.width,height:a.height}),[a.width,a.height]),[P,g,f,_]=Ie(void 0,{width:a.width,height:a.height});K(()=>{let x=document.createElement("canvas");x.height=S.height,x.width=S.width,y.current=x},[]),K(()=>{let x=y.current;x&&(x.height=S.height,x.width=S.width)},[S.width,S.height]),(0,U.useEffect)(()=>g?g.runtime.registerHook("useAfterFrame",()=>{if(y.current)try{l(y.current.toDataURL())}catch(v){v instanceof Error&&m(v.message)}}):()=>{},[]),(0,U.useEffect)(()=>g?g.runtime.world.addLayoutSubscriber(v=>{v==="ready"&&d(!0)}):()=>{},[]),(0,U.useEffect)(()=>{g&&g.em&&g.em.updateBounds()},[S]),(0,U.useEffect)(()=>{g&&(g.runtime.mode=i)},[i]),(0,U.useEffect)(()=>{if(g){let x=g.runtime;x.resize(f.current.width,a.width,f.current.height,a.height),r?x.cover():x.goHome(),f.current.width=a.width,f.current.height=a.height,x.updateNextFrame()}},[a.width,a.height]),K(()=>{let x=b.current;x&&(x.style.width=`${S.width}px`,x.style.height=`${S.height}px`,x.style.pointerEvents="none",x.style.overflow="hidden")},[S.height,S.width]),K(()=>{let x=()=>{if(g&&g.runtime){let v=g.runtime;v.resize(f.current.width,a.width,f.current.height,a.height),f.current.width=a.width,f.current.height=a.height,v.updateNextFrame()}};return window.addEventListener("resize",x),()=>window.removeEventListener("resize",x)},[g,a.height,a.width]);let A=(0,U.useCallback)(function(v){let M=()=>{g&&(g.ready=!0)};return(0,U.useEffect)(()=>{if(g){let q=e&&e(g);return void(q&&q.then?q.then(M):M())}return()=>{}},[]),v.children},[g]);return(0,U.useEffect)(()=>{if(g&&g.runtime){let x=g.runtime;if(t)return x.world.addLayoutSubscriber(v=>{v==="recalculate-world-size"&&x.goHome({cover:r})})}return()=>{}},[g,r,t]),K(()=>{g&&Vt.render((0,ze.jsx)(A,{children:(0,ze.jsx)(ut.Provider,{value:i,children:(0,ze.jsx)(mt.Provider,{value:g,children:n})})}),g.runtime)},[g,i,n]),{loading:!u&&h,uri:u,imageError:c}};var hn=require("react"),Un=(n,e=[])=>{let t=$();(0,hn.useEffect)(()=>t?t.registerHook("useBeforeFrame",n):()=>{},e)};var wt=require("react");var $n=(n=[])=>{let[e,t]=(0,wt.useState)(n),[i,r]=(0,wt.useState)(!1),[s,a]=(0,wt.useState)(),h=(0,wt.useCallback)(()=>{r(!0),a(void 0)},[]),d=(0,wt.useCallback)(m=>{r(!0),a(m)},[]),u=m=>{t(y=>y.map(b=>b.id===m.id?m:b))},l=(0,wt.useCallback)(m=>{let y=ht();t(b=>[...b,{id:y,...m}]),r(!1),a(void 0)},[]),c=(0,wt.useCallback)(()=>{r(!1),a(void 0)},[]);return{isEditing:i,onDeselect:c,selectedAnnotation:s,onCreateNewAnnotation:l,annotations:e,onUpdateAnnotation:u,setIsEditing:r,setSelectedAnnotation:a,editAnnotation:d,addNewAnnotation:h}};function Vn(n){return n.current==="sketch"}function Gn(n,e){return n?e?{...n,...e||{},":hover":n[":hover"]?Object.assign(n[":hover"]||{},e[":hover"]||{}):e[":hover"],":active":n[":active"]?Object.assign(n[":active"]||{},e[":active"]||{}):e[":hover"]}:n:e}
|